@temperlang/std 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/json.js.map ADDED
@@ -0,0 +1 @@
1
+ { "version": 3, "file": "js/std/json.js", "sources": [ "std/json.temper.md" ], "sourcesContent": [ "# JSON support\n\nThe `@json` decorator for Temper classes supports converting values to\nand from the JSON data interchange format.\n\nThis module provides JSON value representations to support\nunmarshalling, converting a JSON text to domain value(s), and it\nprovides a JSON builder to support marshalling domain values to JSON.\n\n## Standard\n\nFor the purposes of this document, \u0022JSON\u0022 is defined by [ECMA-404],\n\u0022*The JSON data interchange syntax*.\u0022\n\n## Context\n\nProducers and consumers may need to engage in [content negotiation].\n\nFor example, a marshaller might benefit from having access to a version\nheader from a Web API request to distinguish clients that can accept the\nlatest version from those that need a deprecated version.\n\n export interface InterchangeContext {\n public getHeader(headerName: String): String | Null;\n }\n\nAnd for convenience, here's a blank interchange context.\n\n export class NullInterchangeContext extends InterchangeContext {\n public getHeader(headerName: String): String | Null { null }\n\n public static instance = new NullInterchangeContext();\n }\n\n## Marshalling support\n\n export interface JsonProducer {\n public interchangeContext: InterchangeContext;\n\n // A JSON object value is specified by a start-object\n // event, zero or more property key/value pairs\n // (see below) and an end-object event.\n\n public startObject(): Void;\n public endObject(): Void;\n\n // Within the start and end of an object\n // you may have zero or more pairs of\n // a property key followed by a nested value.\n\n public objectKey(key: String): Void;\n\n // To emit an array, start it, emit\n // zero or more nested values, then end it.\n\n public startArray(): Void;\n public endArray(): Void;\n\n // Emitters for simple values\n\n public nullValue(): Void;\n public booleanValue(x: Boolean): Void;\n\n // Numeric values come in several flavours\n\n public intValue(x: Int): Void;\n public float64Value(x: Float64): Void;\n /**\n * A number that fits the JSON number grammar to allow\n * interchange of numbers that are not easily represntible\n * using numeric types that Temper connects to.\n */\n public numericTokenValue(x: String): Void;\n\n public stringValue(x: String): Void;\n }\n\nThis API does allow for specifying malformed JSON outputs as below.\nImplementations must allow for such specifications until allowing\nfor observation of the produced output.\nA streaming JSON implementation may treat flushing a portion of\noutput to an output channel as an observation and expose an error\nthen.\n\nAn implementation may choose to treat a number of top-level values\nother than one (`[] []`) as well-formed or malformed, for example to\nsupport related interchange formats like [JSON Lines].\n\nAn implementation may use a variety of strategies to represent\ntraditionally unrepresentible values like special floating point\n*NaN* (not a number) and ±infinities.\n\nAn implementation may use a variety of strategies to deal with\na valid JSON string value (whether used as a property key or a value)\nthat is not a [scalar value string], for example, because it contains a\nUTF-16 surrogate that is not part of a well-formed surrogate pair.\n\n```temper inert\n//// Malformed object\nmyJsonProducer1.startObject();\n// no end for object or array\n\n// misisng start for object or array\nmyJsonProducer2.endObject();\n\n// mismatch start and end\nmyJsonProducer3.startArray();\nmyJsonProducer3.endObject();\n\n// malformed properties\nmyJsonProducer4.startObject();\n// missing key\nmyJsonProducer4.nullValue();\nmyJsonProducer4.endObject();\n\nmyJsonProducer5.startObject();\nmyJsonProducer5.objectKey(\u0022k\u0022);\n// missing value\nmyJsonProducer5.endObject();\n\n//// Malformed values\n// questionable numbers\nmyJsonProducer6.float64Value(NaN);\nmyJsonProducer7.float64Value(Infinity);\nmyJsonProducer8.numericTokenValue(\u00221.\u0022);\n// questionable strings\nmyJsonProducer9.stringValue(\u0022\\uD800\u0022);\n\n//// No unique top-level value (see MAY above)\nmyJsonProducer10.nullValue();\nmyJsonProducer11.nullValue();\n```\n\n## Unmarshalling support\n\nUnmarshalling involves turning JSON source texts (which specify state)\ninto domain values (with state and behaviour).\n\nIt is convenient to have a syntax tree for JSON. Often, unmarshalling\ninvolves looking at select object properties to figure out how to interpret\nthe whole, by trying rules like the below:\n\n- if it has keys `x` and `y`, delegate to the *Point2d* unmarshaller,\n- or if it has keys `radius` and `centroid`, delegate to the *Circle* unmarshaller,\n- ...\n\nThere may not be an order of keys that makes it easy to consume a stream of\nevents to implement those rules, and expecting all producers to use the same\nkey order would lead to brittle unmarshalling.\n\n export sealed interface JsonSyntaxTree {\n public produce(p: JsonProducer): Void;\n }\n\n export class JsonObject(\n public properties: Map\u003cString, List\u003cJsonSyntaxTree\u003e\u003e,\n ) extends JsonSyntaxTree {\n\n /**\n * The JSON value tree associated with the given property key or null\n * if there is no such value.\n *\n * The properties map contains a list of sub-trees because JSON\n * allows duplicate properties. ECMA-404 §6 notes (emphasis added):\n *\n * \u003e The JSON syntax does not impose any restrictions on the strings\n * \u003e used as names, **does not require that name strings be unique**,\n * \u003e and does not assign any significance to the ordering of\n * \u003e name/value pairs.\n *\n * When widely used JSON parsers need to relate a property key\n * to a single value, they tend to prefer the last key/value pair\n * from a JSON object. For example:\n *\n * JS:\n *\n * JSON.parse('{\u0022x\u0022:\u0022first\u0022,\u0022x\u0022:\u0022last\u0022}').x === 'last'\n *\n * Python:\n *\n * import json\n * json.loads('{\u0022x\u0022:\u0022first\u0022,\u0022x\u0022:\u0022last\u0022}')['x'] == 'last'\n *\n * C#:\n *\n * using System.Text.Json;\n * \t\tJsonDocument d = JsonDocument.Parse(\n * \t\t\t\u0022\u0022\u0022\n * \t\t\t{\u0022x\u0022:\u0022first\u0022,\u0022x\u0022:\u0022last\u0022}\n * \t\t\t\u0022\u0022\u0022\n * \t\t);\n * \t\td.RootElement.GetProperty(\u0022x\u0022).GetString() == \u0022last\u0022\n */\n public propertyValueOrNull(propertyKey: String): JsonSyntaxTree | Null {\n let treeList = this.properties.getOr(propertyKey, []);\n\n let lastIndex = treeList.length - 1;\n if (lastIndex \u003e= 0) {\n treeList[lastIndex]\n } else {\n null\n }\n }\n\n public propertyValueOrBubble(propertyKey: String): JsonSyntaxTree | Bubble {\n propertyValueOrNull(propertyKey).as\u003cJsonSyntaxTree\u003e()\n }\n\n public produce(p: JsonProducer): Void {\n p.startObject();\n properties.forEach { (k: String, vs: List\u003cJsonSyntaxTree\u003e);;\n vs.forEach { (v: JsonSyntaxTree);;\n p.objectKey(k);\n v.produce(p);\n }\n }\n p.endObject();\n }\n }\n\n export class JsonArray(\n public elements: List\u003cJsonSyntaxTree\u003e,\n ) extends JsonSyntaxTree {\n\n public produce(p: JsonProducer): Void {\n p.startArray();\n elements.forEach { (v: JsonSyntaxTree);;\n v.produce(p);\n }\n p.endArray();\n }\n }\n\n export class JsonBoolean(\n public content: Boolean,\n ) extends JsonSyntaxTree {\n public produce(p: JsonProducer): Void {\n p.booleanValue(content);\n }\n }\n\n export class JsonNull extends JsonSyntaxTree {\n public produce(p: JsonProducer): Void {\n p.nullValue();\n }\n }\n\n export class JsonString(\n public content: String,\n ) extends JsonSyntaxTree {\n public produce(p: JsonProducer): Void {\n p.stringValue(content);\n }\n }\n\n export sealed interface JsonNumeric extends JsonSyntaxTree {\n public asJsonNumericToken(): String;\n\n public asInt(): Int | Bubble;\n public asFloat64(): Float64 | Bubble;\n }\n\n export class JsonInt(\n public content: Int,\n ) extends JsonNumeric {\n public produce(p: JsonProducer): Void {\n p.intValue(content);\n }\n\n public asJsonNumericToken(): String {\n content.toString()\n }\n\n public asInt(): Int { content }\n\n public asFloat64(): Float64 | Bubble { content.toFloat64() }\n }\n\n export class JsonFloat64(\n public content: Float64,\n ) extends JsonNumeric {\n public produce(p: JsonProducer): Void {\n p.float64Value(content);\n }\n\n public asJsonNumericToken(): String {\n content.toString()\n }\n\n public asInt(): Int | Bubble { content.toInt() }\n\n public asFloat64(): Float64 { content }\n }\n\n export class JsonNumericToken(\n public content: String,\n ) extends JsonNumeric {\n public produce(p: JsonProducer): Void {\n p.numericTokenValue(content);\n }\n\n public asJsonNumericToken(): String {\n content\n }\n\n public asInt(): Int | Bubble {\n content.toInt() orelse content.toFloat64().toInt()\n }\n\n public asFloat64(): Float64 | Bubble { content.toFloat64() }\n }\n\nThe *produce* method allows a JSON syntax tree to describe itself to a\nJSON producer so JSON syntax trees, while useful during unmarshalling\ncan also help with marshalling.\n\n## Producing JSON text\n\nA JSON producer that appends to an internal buffer lets us produce\nJSON source text.\n\n // A state machine lets us figure out when to insert commas.\n let JSON_STATE_OPEN_OBJECT = 0; // Last was \u0022{\u0022\n let JSON_STATE_AFTER_KEY = 1; // Last was property key\n let JSON_STATE_AFTER_PROPERTY = 2; // Last was property value\n let JSON_STATE_OPEN_ARRAY = 3; // Last was \u0022[\u0022\n let JSON_STATE_AFTER_ELEMENT = 4; // Last was array element\n let JSON_STATE_NO_VALUE = 5;\n let JSON_STATE_ONE_VALUE = 6;\n\n export class JsonTextProducer extends JsonProducer {\n public interchangeContext: InterchangeContext;\n private buffer: StringBuilder;\n private stack: ListBuilder\u003cInt\u003e;\n private var wellFormed: Boolean;\n\n public constructor(\n interchangeContext: InterchangeContext = NullInterchangeContext.instance\n ): Void {\n this.interchangeContext = interchangeContext;\n this.buffer = new StringBuilder();\n this.stack = new ListBuilder\u003cInt\u003e();\n this.stack.add(JSON_STATE_NO_VALUE);\n this.wellFormed = true;\n }\n\n private state(): Int {\n stack.getOr(stack.length - 1, -1)\n }\n\n private beforeValue(): Void {\n let currentState = state();\n when (currentState) {\n JSON_STATE_OPEN_ARRAY -\u003e\n stack[stack.length - 1] = JSON_STATE_AFTER_ELEMENT;\n JSON_STATE_AFTER_ELEMENT -\u003e buffer.append(\u0022,\u0022);\n JSON_STATE_AFTER_KEY -\u003e\n stack[stack.length - 1] = JSON_STATE_AFTER_PROPERTY;\n JSON_STATE_NO_VALUE -\u003e\n stack[stack.length - 1] = JSON_STATE_ONE_VALUE;\n JSON_STATE_ONE_VALUE, JSON_STATE_AFTER_PROPERTY -\u003e\n wellFormed = false;\n }\n }\n\n public startObject(): Void {\n beforeValue();\n buffer.append(\u0022{\u0022);\n stack.add(JSON_STATE_OPEN_OBJECT);\n }\n\n public endObject(): Void {\n buffer.append(\u0022}\u0022);\n let currentState = state();\n if (JSON_STATE_OPEN_OBJECT == currentState ||\n JSON_STATE_AFTER_PROPERTY == currentState) {\n stack.removeLast();\n } else {\n wellFormed = false;\n }\n }\n\n public objectKey(key: String): Void {\n let currentState = state();\n when (currentState) {\n JSON_STATE_OPEN_OBJECT -\u003e void;\n JSON_STATE_AFTER_PROPERTY -\u003e buffer.append(\u0022,\u0022);\n else -\u003e wellFormed = false;\n }\n encodeJsonString(key, buffer);\n buffer.append(\u0022:\u0022);\n if (currentState \u003e= 0) {\n stack[stack.length - 1] = JSON_STATE_AFTER_KEY;\n }\n }\n\n public startArray(): Void {\n beforeValue();\n buffer.append(\u0022[\u0022);\n stack.add(JSON_STATE_OPEN_ARRAY);\n }\n\n public endArray(): Void {\n buffer.append(\u0022]\u0022);\n let currentState = state();\n if (JSON_STATE_OPEN_ARRAY == currentState ||\n JSON_STATE_AFTER_ELEMENT == currentState) {\n stack.removeLast();\n } else {\n wellFormed = false;\n }\n }\n\n public nullValue(): Void {\n beforeValue();\n buffer.append(\u0022null\u0022);\n }\n\n public booleanValue(x: Boolean): Void {\n beforeValue();\n buffer.append(x ? \u0022true\u0022 : \u0022false\u0022);\n }\n\n public intValue(x: Int): Void {\n beforeValue();\n buffer.append(x.toString());\n }\n\n public float64Value(x: Float64): Void {\n beforeValue();\n buffer.append(x.toString());\n }\n\n public numericTokenValue(x: String): Void {\n // TODO check syntax of x and maybe set malformed\n beforeValue();\n buffer.append(x);\n }\n\n public stringValue(x: String): Void {\n beforeValue();\n encodeJsonString(x, buffer);\n }\n\n public toJsonString(): String | Bubble {\n if (wellFormed \u0026\u0026 stack.length == 1 \u0026\u0026 state() == JSON_STATE_ONE_VALUE) {\n return buffer.toString();\n } else {\n bubble();\n }\n }\n }\n\n let encodeJsonString(x: String, buffer: StringBuilder): Void {\n buffer.append(\u0022\\\u0022\u0022);\n var i = String.begin;\n var emitted = i;\n while (x.hasIndex(i)) {\n // The choice of which code-points to escape and which\n // escape sequences to use is the same as those made in\n // ES262 § 25.5.2.3: QuoteJSONString\n // as long as the string has no orphaned surrogates.\n // This means that the output will work in many parsers\n // while still allowing use of JSON.stringify in JavaScript\n // where keeping code-size low by not shipping a JSON encoder\n // is important.\n\n let cp = x[i];\n let replacement = when (cp) {\n char'\\b' -\u003e \u0022\\\\b\u0022;\n char'\\t' -\u003e \u0022\\\\t\u0022;\n char'\\n' -\u003e \u0022\\\\n\u0022;\n char'\\f' -\u003e \u0022\\\\f\u0022;\n char'\\r' -\u003e \u0022\\\\r\u0022;\n char'\u0022' -\u003e \u0022\\\\\\\u0022\u0022;\n char'\\\\' -\u003e \u0022\\\\\\\\\u0022;\n else -\u003e\n // Control characters and non-USV code-points.\n if (cp \u003c 0x20 || 0xD800 \u003c= cp \u0026\u0026 cp \u003c= 0xDFFF) {\n \u0022\\\\u\u0022\n } else {\n \u0022\u0022\n };\n };\n\n let nextI = x.next(i);\n\n if (replacement != \u0022\u0022) {\n buffer.appendBetween(x, emitted, i);\n buffer.append(replacement);\n if (replacement == \u0022\\\\u\u0022) {\n encodeHex4(cp, buffer);\n }\n emitted = nextI;\n }\n\n i = nextI;\n }\n buffer.appendBetween(x, emitted, i);\n buffer.append(\u0022\\\u0022\u0022);\n }\n\n let hexDigits = [\n '0', '1', '2', '3', '4', '5', '6', '7',\n '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',\n ];\n\n let encodeHex4(cp: Int, buffer: StringBuilder): Void {\n let b0 = (cp / 0x1000) \u0026 0xf;\n let b1 = (cp / 0x100) \u0026 0xf;\n let b2 = (cp / 0x10) \u0026 0xf;\n let b3 = cp \u0026 0xf;\n buffer.append(hexDigits[b0]);\n buffer.append(hexDigits[b1]);\n buffer.append(hexDigits[b2]);\n buffer.append(hexDigits[b3]);\n }\n\n## Parsing JSON\n\nJSON tokens, like `{` and `\u0022foo\u0022` correspond fairly closely to events\nlike *JsonProducer.startObject* and *JsonProducer.stringValue* respectively.\n\n*JsonSyntaxTree* knows how to describe itself to a *JsonProducer*, but we can\nalso craft a *JsonProducer* that constructs a syntax tree.\n\nFirst, we need a way to explain syntax errors, ideally in a way that lets\na *JsonProducer* represent both the valid JSON or the error.\n\n export interface JsonParseErrorReceiver {\n public explainJsonError(explanation: String): Void;\n }\n\nNow, we are ready to build a *JsonProducer* that produces a syntax tree given\nvalid JSON, but if given a string that is not valid JSON, it has a syntax error.\n\n export class JsonSyntaxTreeProducer extends JsonProducer \u0026 JsonParseErrorReceiver {\n private stack: ListBuilder\u003cListBuilder\u003cJsonSyntaxTree\u003e\u003e;\n private var error: String | Null;\n public get interchangeContext(): InterchangeContext {\n NullInterchangeContext.instance\n }\n\n public constructor() {\n stack = new ListBuilder\u003cListBuilder\u003cJsonSyntaxTree\u003e\u003e();\n stack.add(new ListBuilder\u003cJsonSyntaxTree\u003e());\n error = null;\n }\n\n private storeValue(v: JsonSyntaxTree): Void {\n if (!stack.isEmpty) {\n stack[stack.length - 1].add(v);\n }\n }\n\n public startObject(): Void {\n stack.add(new ListBuilder\u003cJsonSyntaxTree\u003e());\n }\n\n public endObject(): Void {\n if (stack.isEmpty) {\n return;\n }\n let ls = stack.removeLast();\n // In the common case, there are no duplicate keys.\n let m = new MapBuilder\u003cString, List\u003cJsonSyntaxTree\u003e\u003e();\n // But we need a way to accumulate them when there are duplicate keys.\n var multis: MapBuilder\u003cString, ListBuilder\u003cJsonSyntaxTree\u003e\u003e | Null = null;\n for (var i = 0, n = ls.length \u0026 -2; i \u003c n;) {\n let keyTree = ls[i++];\n if (!keyTree.is\u003cJsonString\u003e()) { break }\n let key = keyTree.as\u003cJsonString\u003e().content;\n let value = ls[i++];\n\n if (m.has(key)) {\n if (multis == null) {\n multis = new MapBuilder\u003cString, ListBuilder\u003cJsonSyntaxTree\u003e\u003e();\n }\n let mb = multis.as\u003cMapBuilder\u003cString, ListBuilder\u003cJsonSyntaxTree\u003e\u003e\u003e();\n if (!mb.has(key)) {\n mb[key] = m[key].toListBuilder();\n }\n mb[key].add(value);\n } else {\n m[key] = [value];\n }\n }\n\n let multis = multis; // lock it in down here for inference\n if (multis != null) {\n multis.forEach { (k: String, vs: ListBuilder\u003cJsonSyntaxTree\u003e);;\n m[k] = vs.toList();\n }\n }\n\n storeValue(new JsonObject(m.toMap()));\n }\n\n public objectKey(key: String): Void {\n storeValue(new JsonString(key));\n }\n\n public startArray(): Void {\n stack.add(new ListBuilder\u003cJsonSyntaxTree\u003e());\n }\n\n public endArray(): Void {\n if (stack.isEmpty) {\n return;\n }\n let ls = stack.removeLast();\n storeValue(new JsonArray(ls.toList()));\n }\n\n public nullValue(): Void {\n storeValue(new JsonNull());\n }\n\n public booleanValue(x: Boolean): Void {\n storeValue(new JsonBoolean(x));\n }\n\n public intValue(x: Int): Void {\n storeValue(new JsonInt(x));\n }\n\n public float64Value(x: Float64): Void {\n storeValue(new JsonFloat64(x));\n }\n\n public numericTokenValue(x: String): Void {\n storeValue(new JsonNumericToken(x));\n }\n\n public stringValue(x: String): Void {\n storeValue(new JsonString(x));\n }\n\n public toJsonSyntaxTree(): JsonSyntaxTree | Bubble {\n if (stack.length != 1 || error != null) { bubble() }\n let ls = stack[0];\n if (ls.length != 1) { bubble() }\n ls[0]\n }\n\n public get jsonError(): String | Null { error }\n\n public explainJsonError(error: String): Void {\n this.error = error;\n }\n }\n\nSome helpers let us route errors:\n\n let expectedTokenError(\n sourceText: String,\n i: StringIndex,\n out: JsonProducer,\n shortExplanation: String,\n ): Void {\n let gotten = if (sourceText.hasIndex(i)) {\n \u0022`\u0024{ sourceText.slice(i, sourceText.end) }`\u0022\n } else {\n \u0022end-of-file\u0022\n };\n storeJsonError(out, \u0022Expected \u0024{shortExplanation}, but got \u0024{gotten}\u0022);\n }\n\n let storeJsonError(out: JsonProducer, explanation: String): Void {\n if (out.is\u003cJsonParseErrorReceiver\u003e()) {\n let errorReceiver = out.as\u003cJsonParseErrorReceiver\u003e();\n errorReceiver.explainJsonError(explanation);\n }\n }\n\nNext, a JSON string parser that drives a *JsonProducer*.\n\n export let parseJsonToProducer(sourceText: String, out: JsonProducer): Void {\n var i = String.begin;\n let afterValue = parseJsonValue(sourceText, i, out);\n if (afterValue.is\u003cStringIndex\u003e()) { // else parseJsonValue must have stored an error\n i = skipJsonSpaces(sourceText, afterValue.as\u003cStringIndex\u003e());\n if (sourceText.hasIndex(i) \u0026\u0026 out.is\u003cJsonParseErrorReceiver\u003e()) {\n storeJsonError(out, \u0022Extraneous JSON `\u0024{sourceText.slice(i, sourceText.end)}`\u0022);\n }\n }\n }\n\nA recursive descent parser without backtracking works just fine for JSON because the\nnext non-space character perfectly predicts the next production.\nAll `// \u003e ` comments are followed by quotes from ECMA-404 2nd edition.\nEach parsing helper takes the *StringIndex* before parsing and returns\nthe *StringIndex* at the end of the content it parsed, or maybe *null* if parsing\nfailed.\n\n // \u003e Insignificant whitespace is allowed before or after any token.\n // \u003e Whitespace is any sequence of one or more of the following code\n // \u003e points:\n // \u003e character tabulation (U+0009),\n // \u003e line feed (U+000A),\n // \u003e carriage return (U+000D), and\n // \u003e space (U+0020).\n let skipJsonSpaces(sourceText: String, var i: StringIndex): StringIndex {\n while (sourceText.hasIndex(i)) {\n when (sourceText[i]) {\n 0x9, 0xA, 0xD, 0x20 -\u003e void;\n else -\u003e break;\n }\n i = sourceText.next(i);\n }\n return i;\n }\n\n let parseJsonValue(\n sourceText: String, var i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n i = skipJsonSpaces(sourceText, i);\n if (!sourceText.hasIndex(i)) {\n expectedTokenError(sourceText, i, out, \u0022JSON value\u0022);\n return StringIndex.none\n }\n when (sourceText[i]) {\n char'{' -\u003e parseJsonObject(sourceText, i, out);\n char'[' -\u003e parseJsonArray(sourceText, i, out);\n char'\u0022' -\u003e parseJsonString(sourceText, i, out);\n char't', char'f' -\u003e parseJsonBoolean(sourceText, i, out);\n char'n' -\u003e parseJsonNull(sourceText, i, out);\n else -\u003e parseJsonNumber(sourceText, i, out);\n }\n }\n\nFor a JSON object, parsing looks for a '{', then optionally a property.\nAfter a property, if there is a ',' parsing looks for another property.\nAfter the last property or lone '{', there must be a '}'.\n\n let parseJsonObject(\n sourceText: String, var i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n if (!sourceText.hasIndex(i) || sourceText[i] != char'{') {\n expectedTokenError(sourceText, i, out, \u0022'{'\u0022);\n return StringIndex.none;\n }\n out.startObject();\n i = skipJsonSpaces(sourceText, sourceText.next(i));\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] != char'}') {\n while (true) {\n let afterKey = parseJsonString(sourceText, i, out);\n if (!afterKey.is\u003cStringIndex\u003e()) { return StringIndex.none; }\n i = skipJsonSpaces(sourceText, afterKey.as\u003cStringIndex\u003e());\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] == char':') {\n i = sourceText.next(i);\n let afterPropertyValue = parseJsonValue(sourceText, i, out);\n if (!afterPropertyValue.is\u003cStringIndex\u003e()) {\n return StringIndex.none;\n }\n i = afterPropertyValue.as\u003cStringIndex\u003e();\n } else {\n expectedTokenError(sourceText, i, out, \u0022':'\u0022);\n return StringIndex.none;\n }\n\n i = skipJsonSpaces(sourceText, i);\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] == char',') {\n i = skipJsonSpaces(sourceText, sourceText.next(i));\n continue;\n } else {\n break;\n }\n }\n }\n\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] == char'}') {\n out.endObject();\n return sourceText.next(i);\n } else {\n expectedTokenError(sourceText, i, out, \u0022'}'\u0022);\n return StringIndex.none;\n }\n }\n\nFor a JSON array, parsing looks for a '[', and an optional element value.\nAfter each element value, if there is a ',', parsing looks for another element\nvalue. After the last element value or lone '[', there must be a ']'.\n\n let parseJsonArray(\n sourceText: String, var i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n if (!sourceText.hasIndex(i) || sourceText[i] != char'[') {\n expectedTokenError(sourceText, i, out, \u0022'['\u0022);\n return StringIndex.none;\n }\n out.startArray();\n i = skipJsonSpaces(sourceText, sourceText.next(i));\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] != char']') {\n while (true) {\n let afterElementValue = parseJsonValue(sourceText, i, out);\n if (!afterElementValue.is\u003cStringIndex\u003e()) {\n return StringIndex.none;\n }\n i = afterElementValue.as\u003cStringIndex\u003e();\n\n i = skipJsonSpaces(sourceText, i);\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] == char',') {\n i = skipJsonSpaces(sourceText, sourceText.next(i));\n continue;\n } else {\n break;\n }\n }\n }\n\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] == char']') {\n out.endArray();\n return sourceText.next(i);\n } else {\n expectedTokenError(sourceText, i, out, \u0022']'\u0022);\n return StringIndex.none;\n }\n }\n\nA string consists of double-quotes with a select group of C-style escape sequences.\nThe characters that are allowed unescaped inside the quotes are any except ASCII\ncontrol characters.\n\n\u003e To escape a code point that is not in the Basic Multilingual Plane,\n\u003e the character may be represented as a twelve-character sequence,\n\u003e encoding the UTF-16 surrogate pair corresponding to the code point.\n\nThis suggests that when only one of a surrogate pair is escaped, that it is\ntreated as multiple code points. This implementation collapses them into\na single code-point for consistency with backends with native UTF-16 strings\nwhere such a distinction is not possible to represent.\n\n let parseJsonString(\n sourceText: String, var i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n if (!sourceText.hasIndex(i) || sourceText[i] != char'\u0022') {\n expectedTokenError(sourceText, i, out, '\u0022');\n return StringIndex.none;\n }\n i = sourceText.next(i);\n let sb = new StringBuilder();\n\n // Hold onto lead surrogates until we find out whether there's a trailing\n // surrogate or not.\n var leadSurrogate: Int = -1;\n\n var consumed = i;\n while (sourceText.hasIndex(i)) {\n let cp = sourceText[i];\n if (cp == char'\u0022') { break }\n var iNext = sourceText.next(i);\n let end = sourceText.end;\n\n // Emit anything between consumed and i if there\n // is a pending surrogate or escaped characters.\n var needToFlush = false;\n\n // Decode one code-point or UTF-16 surrogate\n var decodedCp = if (cp != char'\\\\') {\n cp\n } else {\n needToFlush = true;\n if (!sourceText.hasIndex(iNext)) {\n expectedTokenError(sourceText, iNext, out, \u0022escape sequence\u0022);\n return StringIndex.none;\n }\n let esc0 = sourceText[iNext];\n iNext = sourceText.next(iNext);\n when (esc0) {\n char'\u0022', char'\\\\', char'/' -\u003e esc0;\n char'b' -\u003e char'\\b';\n char'f' -\u003e char'\\f';\n char'n' -\u003e char'\\n';\n char'r' -\u003e char'\\r';\n char't' -\u003e char'\\t';\n char'u' -\u003e do {\n let hex: Int = if (sourceText.hasAtLeast(iNext, end, 4)) {\n let startHex = iNext;\n iNext = sourceText.next(iNext);\n iNext = sourceText.next(iNext);\n iNext = sourceText.next(iNext);\n iNext = sourceText.next(iNext);\n decodeHexUnsigned(sourceText, startHex, iNext)\n } else {\n -1\n };\n if (hex \u003c 0) {\n expectedTokenError(sourceText, iNext, out, \u0022four hex digits\u0022);\n return StringIndex.none;\n }\n hex\n }\n else -\u003e do {\n expectedTokenError(sourceText, iNext, out, \u0022escape sequence\u0022);\n return StringIndex.none;\n }\n }\n };\n\n // If we have two surrogates, combine them into one code-point.\n // If we have a lead surrogate, make sure we can wait.\n if (leadSurrogate \u003e= 0) {\n needToFlush = true;\n let lead = leadSurrogate;\n if (0xDC00 \u003c= decodedCp \u0026\u0026 decodedCp \u003c= 0xDFFF) {\n leadSurrogate = -1;\n decodedCp = (\n 0x10000 +\n (((lead - 0xD800) * 0x400) | (decodedCp - 0xDC00))\n );\n }\n } else if (0xD800 \u003c= decodedCp \u0026\u0026 decodedCp \u003c= 0xDBFF) {\n needToFlush = true;\n }\n\n // Consume characters from sourceText onto sb if it's timely\n // to do so.\n if (needToFlush) {\n sb.appendBetween(sourceText, consumed, i);\n if (leadSurrogate \u003e= 0) {\n // Not combined with a trailing surrogate.\n sb.appendCodePoint(leadSurrogate);\n }\n if (0xD800 \u003c= decodedCp \u0026\u0026 decodedCp \u003c= 0xDBFF) {\n leadSurrogate = decodedCp;\n } else {\n leadSurrogate = -1;\n sb.appendCodePoint(decodedCp);\n }\n consumed = iNext;\n }\n\n i = iNext;\n }\n\n if (!sourceText.hasIndex(i) || sourceText[i] != char'\u0022') {\n expectedTokenError(sourceText, i, out, '\u0022');\n StringIndex.none\n } else {\n if (leadSurrogate \u003e= 0) {\n sb.appendCodePoint(leadSurrogate);\n } else {\n sb.appendBetween(sourceText, consumed, i);\n }\n i = sourceText.next(i); // Consume closing quote\n\n out.stringValue(sb.toString());\n i\n }\n }\n\n let decodeHexUnsigned(\n sourceText: String, start: StringIndex, limit: StringIndex\n ): Int {\n var n = 0;\n var i = start;\n while (i.compareTo(limit) \u003c 0) {\n let cp = sourceText[i];\n let digit = if (char'0' \u003c= cp \u0026\u0026 cp \u003c= char'0') {\n cp - char'0'\n } else if (char'A' \u003c= cp \u0026\u0026 cp \u003c= char'F') {\n cp - char'A' + 10\n } else if (char'a' \u003c= cp \u0026\u0026 cp \u003c= char'f') {\n cp - char'a' + 10\n } else {\n return -1;\n }\n n = (n * 16) + digit;\n i = sourceText.next(i);\n }\n n\n }\n\n let parseJsonBoolean(\n sourceText: String, var i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n let ch0 = if (sourceText.hasIndex(i)) {\n sourceText[i]\n } else {\n 0\n };\n let end = sourceText.end;\n\n let keyword: String | Null;\n let n: Int;\n when (ch0) {\n char'f' -\u003e do { keyword = \u0022false\u0022; n = 5 };\n char't' -\u003e do { keyword = \u0022true\u0022; n = 4 };\n else -\u003e do { keyword = null; n = 0 };\n }\n\n if (keyword != null \u0026\u0026 sourceText.hasAtLeast(i, end, n)) {\n let after = afterSubstring(sourceText, i, keyword.as\u003cString\u003e());\n if (after.is\u003cStringIndex\u003e()) {\n out.booleanValue(n == 4);\n return after;\n }\n }\n\n expectedTokenError(sourceText, i, out, \u0022`false` or `true`\u0022);\n return StringIndex.none;\n }\n\n let parseJsonNull(\n sourceText: String, i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n let after = afterSubstring(sourceText, i, \u0022null\u0022);\n\n if (after.is\u003cStringIndex\u003e()) {\n out.nullValue();\n return after.as\u003cStringIndex\u003e()\n }\n\n expectedTokenError(sourceText, i, out, \u0022`null`\u0022);\n return StringIndex.none;\n }\n\n let afterSubstring(\n string: String,\n inString: StringIndex,\n substring: String\n ): StringIndexOption {\n var i = inString;\n var j = String.begin;\n while (substring.hasIndex(j)) {\n if (!string.hasIndex(i)) {\n return StringIndex.none;\n }\n if (string[i] != substring[j]) {\n return StringIndex.none;\n }\n i = string.next(i);\n j = substring.next(j);\n }\n i\n }\n\nAs usual, the number grammar is the single largest sub-grammar.\nWe accumulate an integer portion separately from a decimal portion.\nIf either of those is past the common representability limits for *Int*\nor *Float64*, then we use the lossless numeric syntax tree variant.\n\n let parseJsonNumber(\n sourceText: String, var i: StringIndex, out: JsonProducer\n ): StringIndexOption {\n var isNegative = false;\n let startOfNumber = i;\n if (sourceText.hasIndex(i) \u0026\u0026 sourceText[i] == char'-') {\n isNegative = true;\n i = sourceText.next(i);\n }\n\n // Find the whole portion, the portion before any fraction\n // or exponent.\n // 0 | [1-9][0-9]*\n let digit0 = sourceText.hasIndex(i) ? sourceText[i] : -1;\n if (digit0 \u003c char'0' || char'9' \u003c digit0) {\n // parseJsonValue comes here for any unrecognized code-points\n let error = !isNegative \u0026\u0026 digit0 != char'.'\n ? \u0022JSON value\u0022\n : \u0022digit\u0022;\n expectedTokenError(sourceText, i, out, error);\n return StringIndex.none;\n }\n i = sourceText.next(i);\n var nDigits = 1;\n var tentativeValue = (digit0 - char'0').toFloat64();\n if (char'0' != digit0) {\n while (sourceText.hasIndex(i)) {\n let possibleDigit = sourceText[i];\n if (char'0' \u003c= possibleDigit \u0026\u0026 possibleDigit \u003c= char'9') {\n i = sourceText.next(i);\n nDigits += 1;\n tentativeValue = tentativeValue * 10.0 +\n (possibleDigit - char'0').toFloat64();\n } else {\n break;\n }\n }\n }\n\n // optional fraction component\n // '.' [0-9]+\n var nDigitsAfterPoint = 0;\n if (sourceText.hasIndex(i) \u0026\u0026 char'.' == sourceText[i]) {\n i = sourceText.next(i);\n let afterPoint = i;\n while (sourceText.hasIndex(i)) {\n let possibleDigit = sourceText[i];\n if (char'0' \u003c= possibleDigit \u0026\u0026 possibleDigit \u003c= char'9') {\n i = sourceText.next(i);\n nDigits += 1;\n nDigitsAfterPoint += 1;\n tentativeValue = tentativeValue * 10.0 +\n (possibleDigit - char'0').toFloat64();\n } else {\n break;\n }\n }\n if (i == afterPoint) {\n // ECMA-404 does not allow \u00220.\u0022 with no digit after the point.\n expectedTokenError(sourceText, i, out, \u0022digit\u0022);\n return StringIndex.none;\n }\n }\n\n // optional exponent\n // [eE] [+\\-]? [0-9]+\n var nExponentDigits = 0;\n if (sourceText.hasIndex(i) \u0026\u0026 char'e' == (sourceText[i] | 32)) {\n i = sourceText.next(i);\n if (!sourceText.hasIndex(i)) {\n expectedTokenError(sourceText, i, out, \u0022sign or digit\u0022);\n return StringIndex.none;\n }\n let afterE = sourceText[i];\n if (afterE == char'+' || afterE == char'-') {\n i = sourceText.next(i);\n }\n while (sourceText.hasIndex(i)) {\n let possibleDigit = sourceText[i];\n if (char'0' \u003c= possibleDigit \u0026\u0026 possibleDigit \u003c= char'9') {\n i = sourceText.next(i);\n nExponentDigits += 1;\n } else {\n break;\n }\n }\n if (nExponentDigits == 0) {\n expectedTokenError(sourceText, i, out, \u0022exponent digit\u0022);\n return StringIndex.none;\n }\n }\n let afterExponent = i;\n\n if (nExponentDigits == 0 \u0026\u0026 nDigitsAfterPoint == 0) {\n // An integer literal.\n let value = isNegative ? -tentativeValue : tentativeValue;\n if (nDigits \u003c= 10 \u0026\u0026 -2147483648.0 \u003c= value \u0026\u0026 value \u003c= 2147483647.0) {\n // Guaranteed representible int value.\n out.intValue(value.toInt());\n return i;\n }\n }\n\n let numericTokenString = sourceText.slice(startOfNumber, i);\n var doubleValue = NaN;\n if (nExponentDigits != 0 || nDigitsAfterPoint != 0) {\n do {\n doubleValue = numericTokenString.toFloat64();\n } orelse do {\n // Fall back to numeric token below\n ;\n }\n }\n\n if (doubleValue != -Infinity \u0026\u0026 doubleValue != Infinity \u0026\u0026\n doubleValue != NaN) {\n out.float64Value(doubleValue);\n } else {\n out.numericTokenValue(numericTokenString);\n }\n return i;\n }\n\nAs a convenience, the *parseJson* helper just creates a tree producer,\ncalls the parser and gets the tree.\n\n export let parseJson(sourceText: String): JsonSyntaxTree | Bubble {\n let p = new JsonSyntaxTreeProducer();\n parseJsonToProducer(sourceText, p);\n // TODO: if there is a syntax error, produce it.\n p.toJsonSyntaxTree()\n }\n\n## Type adapters\n\nType adapters allow converting values of a type to and from JSON.\nSee the `@json` type decorator for details which makes sure that\nthe decorated type has a static method that gets an adapter for the\ntype.\n\n export interface JsonAdapter\u003cT\u003e {\n public encodeToJson(x: T, p: JsonProducer): Void;\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): T | Bubble;\n }\n\nOur intrinsic types, like *Boolean* need json adapters. Static extensions\nlet us make *Boolean.jsonAdapter()* work as if it were built in.\n\n class BooleanJsonAdapter extends JsonAdapter\u003cBoolean\u003e {\n public encodeToJson(x: Boolean, p: JsonProducer): Void {\n p.booleanValue(x);\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): Boolean | Bubble {\n t.as\u003cJsonBoolean\u003e().content\n }\n }\n\n @staticExtension(Boolean, \u0022jsonAdapter\u0022)\n export let booleanJsonAdapter(): JsonAdapter\u003cBoolean\u003e {\n new BooleanJsonAdapter()\n }\n\n class Float64JsonAdapter extends JsonAdapter\u003cFloat64\u003e {\n public encodeToJson(x: Float64, p: JsonProducer): Void {\n p.float64Value(x);\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): Float64 | Bubble {\n t.as\u003cJsonFloat64\u003e().content\n }\n }\n\n @staticExtension(Float64, \u0022jsonAdapter\u0022)\n export let float64JsonAdapter(): JsonAdapter\u003cFloat64\u003e {\n new Float64JsonAdapter()\n }\n\n class IntJsonAdapter extends JsonAdapter\u003cInt\u003e {\n public encodeToJson(x: Int, p: JsonProducer): Void {\n p.intValue(x);\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): Int | Bubble {\n t.as\u003cJsonInt\u003e().content\n }\n }\n\n @staticExtension(Int, \u0022jsonAdapter\u0022)\n export let intJsonAdapter(): JsonAdapter\u003cInt\u003e {\n new IntJsonAdapter()\n }\n\n class StringJsonAdapter extends JsonAdapter\u003cString\u003e {\n public encodeToJson(x: String, p: JsonProducer): Void {\n p.stringValue(x);\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): String | Bubble {\n t.as\u003cJsonString\u003e().content\n }\n }\n\n @staticExtension(String, \u0022jsonAdapter\u0022)\n export let stringJsonAdapter(): JsonAdapter\u003cString\u003e {\n new StringJsonAdapter()\n }\n\n class ListJsonAdapter\u003cT\u003e(\n private adapterForT: JsonAdapter\u003cT\u003e,\n ) extends JsonAdapter\u003cList\u003cT\u003e\u003e {\n public encodeToJson(x: List\u003cT\u003e, p: JsonProducer): Void {\n p.startArray();\n for (let el of x) {\n adapterForT.encodeToJson(el, p);\n }\n p.endArray();\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): List\u003cT\u003e | Bubble {\n let b = new ListBuilder\u003cT\u003e();\n let elements = t.as\u003cJsonArray\u003e().elements;\n let n = elements.length;\n var i = 0;\n while (i \u003c n) {\n let el = elements[i];\n i += 1;\n b.add(adapterForT.decodeFromJson(el, ic));\n }\n b.toList()\n }\n }\n\n @staticExtension(List, \u0022jsonAdapter\u0022)\n export let listJsonAdapter\u003cT\u003e(adapterForT: JsonAdapter\u003cT\u003e): JsonAdapter\u003cList\u003cT\u003e\u003e {\n new ListJsonAdapter\u003cT\u003e(adapterForT)\n }\n\n export class OrNullJsonAdapter\u003cT\u003e(\n private adapterForT: JsonAdapter\u003cT\u003e,\n ) extends JsonAdapter\u003cT | Null\u003e {\n public encodeToJson(x: T | Null, p: JsonProducer): Void {\n if (x == null) {\n p.nullValue();\n } else {\n adapterForT.encodeToJson(x, p);\n }\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): T | Null | Bubble {\n if (t.is\u003cJsonNull\u003e()) {\n null\n } else {\n adapterForT.decodeFromJson(t, ic)\n }\n }\n }\n\n\n## Dependencies\n\nThis module needs *StringBuilder* to support constructing strings of JSON.\n\n let { StringBuilder } = import(\u0022./strings.temper.md\u0022);\n\n[EMCA-404]: https://ecma-international.org/publications-and-standards/standards/ecma-404/\n[content negotiation]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation\n[JSON Lines]: https://jsonlines.org/\n[scalar value string]: https://infra.spec.whatwg.org/#scalar-value-string\n" ], "names": [ "InterchangeContext", "NullInterchangeContext", "headerName", "instance", "JsonProducer", "key", "x", "JsonSyntaxTree", "p", "JsonObject", "properties", "propertyKey", "return", "treeList", "lastIndex", "fn", "k", "vs", "v", "JsonArray", "elements", "JsonBoolean", "content", "JsonNull", "JsonString", "JsonNumeric", "JsonInt", "JsonFloat64", "JsonNumericToken", "JsonTextProducer", "interchangeContext", "buffer", "stack", "wellFormed", "state", "beforeValue", "currentState", "encodeJsonString", "JsonParseErrorReceiver", "explanation", "JsonSyntaxTreeProducer", "error", "storeValue", "ls", "m", "multis", "i", "n", "keyTree", "value", "mb", "parseJsonValue", "sourceText", "out", "skipJsonSpaces", "expectedTokenError", "parseJsonObject", "parseJsonArray", "parseJsonString", "parseJsonBoolean", "parseJsonNull", "parseJsonNumber", "JsonAdapter", "BooleanJsonAdapter", "t", "ic", "Float64JsonAdapter", "IntJsonAdapter", "StringJsonAdapter", "ListJsonAdapter", "adapterForT", "el", "this", "b", "OrNullJsonAdapter", "hexDigits", "encodeHex4", "cp", "b0", "b1", "b2", "b3", "emitted", "replacement", "nextI", "storeJsonError", "errorReceiver", "shortExplanation", "gotten", "decodeHexUnsigned", "start", "limit", "digit", "sb", "leadSurrogate", "consumed", "iNext", "end", "needToFlush", "esc0", "startHex", "hex", "decodedCp", "lead", "afterKey", "afterPropertyValue", "afterElementValue", "afterSubstring", "string", "inString", "substring", "j", "ch0", "keyword", "after", "isNegative", "startOfNumber", "digit0", "nDigits", "tentativeValue", "possibleDigit", "nDigitsAfterPoint", "afterPoint", "nExponentDigits", "afterE", "afterExponent", "numericTokenString", "doubleValue", "parseJsonToProducer", "afterValue", "parseJson", "booleanJsonAdapter", "float64JsonAdapter", "intJsonAdapter", "stringJsonAdapter", "listJsonAdapter" ], "mappings": "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" }
package/package.json CHANGED
@@ -1,18 +1,20 @@
1
1
  {
2
2
  "name": "@temperlang/std",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "author": "Temper Contributors",
5
5
  "description": "Optional support library provided with Temper",
6
6
  "homepage": "https://temperlang.dev/",
7
7
  "license": "Apache-2.0",
8
8
  "type": "module",
9
9
  "exports": {
10
+ "./strings": "./strings.js",
10
11
  "./regex": "./regex.js",
11
12
  "./testing": "./testing.js",
13
+ "./json": "./json.js",
12
14
  "./temporal": "./temporal.js",
13
15
  ".": "./index.js"
14
16
  },
15
17
  "dependencies": {
16
- "@temperlang/core": "0.3.0"
18
+ "@temperlang/core": "0.4.0"
17
19
  }
18
20
  }