@temperlang/std 0.5.0 → 0.6.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/index.js +1 -1
- package/json.js +1477 -1373
- package/json.js.map +1 -1
- package/net.js +27 -27
- package/net.js.map +1 -1
- package/package.json +4 -4
- package/regex.js +695 -695
- package/regex.js.map +1 -1
- package/temporal.js +63 -63
- package/temporal.js.map +1 -1
- package/testing.js +129 -129
- package/testing.js.map +1 -1
package/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "version": 3, "file": "js/std/json.js", "sources": [ "std/json/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?;\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 }\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 public get parseErrorReceiver(): JsonParseErrorReceiver? { null }\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 unrepresentable 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? {\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 JsonSyntaxTree\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(if (x) { \u0022true\u0022 } else { \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?;\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;\n for (var i = 0, n = ls.length \u0026 -2; i \u003c n;) {\n let keyTree = ls[i++];\n if (!(keyTree is JsonString)) { break }\n let key = (keyTree as JsonString orelse panic()).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 MapBuilder\u003cString, ListBuilder\u003cJsonSyntaxTree\u003e\u003e orelse panic();\n if (!mb.has(key)) {\n mb[key] = (m[key] orelse panic()).toListBuilder();\n }\n (mb[key] orelse panic()).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? { error }\n\n public get parseErrorReceiver(): JsonParseErrorReceiver { this }\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 out.parseErrorReceiver?.explainJsonError(explanation);\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 StringIndex) { // else parseJsonValue must have stored an error\n i = skipJsonSpaces(sourceText, afterValue);\n if (sourceText.hasIndex(i) \u0026\u0026 out.parseErrorReceiver != null) {\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 { do {\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 keyBuffer = new StringBuilder();\n let afterKey = parseJsonStringTo(sourceText, i, keyBuffer, out);\n if (!(afterKey is StringIndex)) { return StringIndex.none; }\n out.objectKey(keyBuffer.toString());\n i = skipJsonSpaces(sourceText, afterKey as StringIndex orelse panic());\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 StringIndex)) {\n return StringIndex.none;\n }\n i = afterPropertyValue as StringIndex;\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 } orelse panic() } // See https://github.com/temperlang/temper/issues/203\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 { do {\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 StringIndex)) {\n return StringIndex.none;\n }\n i = afterElementValue as StringIndex;\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 } orelse panic() } // See https://github.com/temperlang/temper/issues/203\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 let sb = new StringBuilder();\n let after = parseJsonStringTo(sourceText, i, sb, out);\n if (after is StringIndex) {\n out.stringValue(sb.toString());\n }\n return after;\n }\n\n let parseJsonStringTo(\n sourceText: String, var i: StringIndex, sb: StringBuilder,\n errOut: JsonProducer\n ): StringIndexOption {\n if (!sourceText.hasIndex(i) || sourceText[i] != char'\u0022') {\n expectedTokenError(sourceText, i, errOut, '\u0022');\n return StringIndex.none;\n }\n i = sourceText.next(i);\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, errOut, \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, errOut, \u0022four hex digits\u0022);\n return StringIndex.none;\n }\n hex\n }\n else -\u003e do {\n expectedTokenError(sourceText, iNext, errOut, \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) orelse panic();\n }\n if (0xD800 \u003c= decodedCp \u0026\u0026 decodedCp \u003c= 0xDBFF) {\n leadSurrogate = decodedCp;\n } else {\n leadSurrogate = -1;\n sb.appendCodePoint(decodedCp) orelse panic();\n }\n consumed = iNext;\n }\n\n i = iNext;\n }\n\n if (!sourceText.hasIndex(i) || sourceText[i] != char'\u0022') {\n expectedTokenError(sourceText, i, errOut, '\u0022');\n StringIndex.none\n } else {\n if (leadSurrogate \u003e= 0) {\n sb.appendCodePoint(leadSurrogate) orelse panic();\n } else {\n sb.appendBetween(sourceText, consumed, i);\n }\n i = sourceText.next(i); // Consume closing quote\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?;\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) {\n if (sourceText.hasAtLeast(i, end, n)) {\n let after = afterSubstring(sourceText, i, keyword);\n if (after is StringIndex) {\n out.booleanValue(n == 4);\n return after;\n }\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 StringIndex) {\n out.nullValue();\n return after;\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 { do {\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 = if (sourceText.hasIndex(i)) { sourceText[i] } else { -1 };\n if (digit0 \u003c char'0' || char'9' \u003c digit0) {\n // parseJsonValue comes here for any unrecognized code-points\n let error = if (!isNegative \u0026\u0026 digit0 != char'.') {\n \u0022JSON value\u0022\n } else {\n \u0022digit\u0022\n };\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() orelse panic();\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 = if (isNegative) { -tentativeValue } else { 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() orelse panic());\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 } orelse panic() } // See https://github.com/temperlang/temper/issues/203\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 JsonBoolean).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 JsonNumeric).asFloat64()\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 JsonNumeric).asInt()\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 JsonString).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 JsonArray).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?\u003e {\n public encodeToJson(x: T?, 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? | Bubble {\n if (t is JsonNull) {\n null\n } else {\n adapterForT.decodeFromJson(t, ic)\n }\n }\n }\n\n[ECMA-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", "headerName", "NullInterchangeContext", "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", "t", "ic", "BooleanJsonAdapter", "Float64JsonAdapter", "IntJsonAdapter", "StringJsonAdapter", "ListJsonAdapter", "adapterForT", "el", "this", "b", "OrNullJsonAdapter", "hexDigits", "encodeHex4", "cp", "b0", "b1", "b2", "b3", "emitted", "replacement", "nextI", "storeJsonError", "shortExplanation", "gotten", "decodeHexUnsigned", "start", "limit", "digit", "parseJsonStringTo", "sb", "errOut", "leadSurrogate", "consumed", "iNext", "end", "needToFlush", "esc0", "startHex", "hex", "decodedCp", "lead", "keyBuffer", "afterKey", "afterPropertyValue", "afterElementValue", "after", "afterSubstring", "string", "inString", "substring", "j", "ch0", "keyword", "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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" }
|
|
1
|
+
{ "version": 3, "file": "js/std/json.js", "sources": [ "std/json/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?;\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 }\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 int32Value(x: Int): Void;\n public int64Value(x: Int64): 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 representible\n * using numeric types that Temper connects to.\n */\n public numericTokenValue(x: String): Void;\n\n public stringValue(x: String): Void;\n // TODO: stringValueToken(...) that stores string content that\n // does not decode to a USVString for JSON that conveys\n // byte data as byte pairs with embedded, mismatched surrogates.\n\n public get parseErrorReceiver(): JsonParseErrorReceiver? { null }\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 unrepresentable values like special floating point\n*NaN* (not a number) and ±infinities.\n\nTODO: allow an implementation to 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// missing 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.stringTokenValue(\u0022\\uD800\u0022);\n\n//// No unique top-level value (see MAY above)\nmyJsonProducer10.nullValue();\nmyJsonProducer10.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? {\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 throws Bubble {\n propertyValueOrNull(propertyKey) as JsonSyntaxTree\n }\n\n public produce(p: JsonProducer): Void {\n p.startObject();\n properties.forEach { k: String, vs: List\u003cJsonSyntaxTree\u003e =\u003e\n vs.forEach { v: JsonSyntaxTree =\u003e\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 =\u003e\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 asInt32(): Int throws Bubble;\n public asInt64(): Int64 throws Bubble;\n public asFloat64(): Float64 throws Bubble;\n }\n\n export let JsonInt = JsonInt32;\n\n export class JsonInt32(\n public content: Int,\n ) extends JsonNumeric {\n public produce(p: JsonProducer): Void {\n p.int32Value(content);\n }\n\n public asJsonNumericToken(): String {\n content.toString()\n }\n\n public asInt32(): Int { content }\n\n public asInt64(): Int64 { content.toInt64() }\n\n public asFloat64(): Float64 { content.toFloat64() }\n }\n\n export class JsonInt64(\n public content: Int64,\n ) extends JsonNumeric {\n public produce(p: JsonProducer): Void {\n p.int64Value(content);\n }\n\n public asJsonNumericToken(): String {\n content.toString()\n }\n\n public asInt32(): Int throws Bubble { content.toInt32() }\n\n public asInt64(): Int64 { content }\n\n public asFloat64(): Float64 throws 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 asInt32(): Int throws Bubble { content.toInt32() }\n\n public asInt64(): Int64 throws Bubble { content.toInt64() }\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 asInt32(): Int throws Bubble {\n // TODO Prohibit nonzero fractional values.\n content.toInt32() orelse content.toFloat64().toInt32()\n }\n\n public asInt64(): Int64 throws Bubble {\n // TODO Prohibit nonzero fractional values.\n content.toInt64() orelse content.toFloat64().toInt64()\n }\n\n public asFloat64(): Float64 throws 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(if (x) { \u0022true\u0022 } else { \u0022false\u0022 });\n }\n\n public int32Value(x: Int): Void {\n beforeValue();\n buffer.append(x.toString());\n }\n\n public int64Value(x: Int64): 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 throws 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?;\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;\n for (var i = 0, n = ls.length \u0026 -2; i \u003c n;) {\n let keyTree = ls[i++];\n if (!(keyTree is JsonString)) { break }\n let key = (keyTree as JsonString orelse panic()).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 MapBuilder\u003cString, ListBuilder\u003cJsonSyntaxTree\u003e\u003e orelse panic();\n if (!mb.has(key)) {\n mb[key] = (m[key] orelse panic()).toListBuilder();\n }\n (mb[key] orelse panic()).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 =\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 int32Value(x: Int): Void {\n storeValue(new JsonInt(x));\n }\n\n public int64Value(x: Int64): Void {\n storeValue(new JsonInt64(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 throws 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? { error }\n\n public get parseErrorReceiver(): JsonParseErrorReceiver { this }\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 out.parseErrorReceiver?.explainJsonError(explanation);\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 StringIndex) { // else parseJsonValue must have stored an error\n i = skipJsonSpaces(sourceText, afterValue);\n if (sourceText.hasIndex(i) \u0026\u0026 out.parseErrorReceiver != null) {\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 { do {\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 keyBuffer = new StringBuilder();\n let afterKey = parseJsonStringTo(sourceText, i, keyBuffer, out);\n if (!(afterKey is StringIndex)) { return StringIndex.none; }\n out.objectKey(keyBuffer.toString());\n i = skipJsonSpaces(sourceText, afterKey as StringIndex orelse panic());\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 StringIndex)) {\n return StringIndex.none;\n }\n i = afterPropertyValue as StringIndex;\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 } orelse panic() } // See https://github.com/temperlang/temper/issues/203\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 { do {\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 StringIndex)) {\n return StringIndex.none;\n }\n i = afterElementValue as StringIndex;\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 } orelse panic() } // See https://github.com/temperlang/temper/issues/203\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 let sb = new StringBuilder();\n let after = parseJsonStringTo(sourceText, i, sb, out);\n if (after is StringIndex) {\n out.stringValue(sb.toString());\n }\n return after;\n }\n\n let parseJsonStringTo(\n sourceText: String, var i: StringIndex, sb: StringBuilder,\n errOut: JsonProducer\n ): StringIndexOption {\n if (!sourceText.hasIndex(i) || sourceText[i] != char'\u0022') {\n expectedTokenError(sourceText, i, errOut, '\u0022');\n return StringIndex.none;\n }\n i = sourceText.next(i);\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, errOut, \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, errOut, \u0022four hex digits\u0022);\n return StringIndex.none;\n }\n hex\n }\n else -\u003e do {\n expectedTokenError(sourceText, iNext, errOut, \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) orelse panic();\n }\n if (0xD800 \u003c= decodedCp \u0026\u0026 decodedCp \u003c= 0xDBFF) {\n leadSurrogate = decodedCp;\n } else {\n leadSurrogate = -1;\n sb.appendCodePoint(decodedCp) orelse panic();\n }\n consumed = iNext;\n }\n\n i = iNext;\n }\n\n if (!sourceText.hasIndex(i) || sourceText[i] != char'\u0022') {\n expectedTokenError(sourceText, i, errOut, '\u0022');\n StringIndex.none\n } else {\n if (leadSurrogate \u003e= 0) {\n sb.appendCodePoint(leadSurrogate) orelse panic();\n } else {\n sb.appendBetween(sourceText, consumed, i);\n }\n i = sourceText.next(i); // Consume closing quote\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?;\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) {\n if (sourceText.hasAtLeast(i, end, n)) {\n let after = afterSubstring(sourceText, i, keyword);\n if (after is StringIndex) {\n out.booleanValue(n == 4);\n return after;\n }\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 StringIndex) {\n out.nullValue();\n return after;\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 { do {\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 = if (sourceText.hasIndex(i)) { sourceText[i] } else { -1 };\n if (digit0 \u003c char'0' || char'9' \u003c digit0) {\n // parseJsonValue comes here for any unrecognized code-points\n let error = if (!isNegative \u0026\u0026 digit0 != char'.') {\n \u0022JSON value\u0022\n } else {\n \u0022digit\u0022\n };\n expectedTokenError(sourceText, i, out, error);\n return StringIndex.none;\n }\n i = sourceText.next(i);\n var nDigits = 1;\n var tentativeFloat64 = (digit0 - char'0').toFloat64();\n var tentativeInt64 = (digit0 - char'0').toInt64();\n var overflowInt64 = false;\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 let nextDigit = possibleDigit - char'0';\n tentativeFloat64 = tentativeFloat64 * 10.0 + nextDigit.toFloat64();\n let oldInt64 = tentativeInt64;\n tentativeInt64 = tentativeInt64 * 10i64 + nextDigit.toInt64();\n if (tentativeInt64 \u003c oldInt64) {\n // Overflow happened.\n if (\n minInt64 - oldInt64 == -nextDigit.toInt64() \u0026\u0026\n isNegative \u0026\u0026\n oldInt64 \u003e 0i64\n ) {\n // Ok because we landed exactly once on min int64.\n } else {\n overflowInt64 = true;\n }\n }\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 tentativeFloat64 = tentativeFloat64 * 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 // TODO Allow exponents within range and/or explicit zero fractions for ints.\n if (nExponentDigits == 0 \u0026\u0026 nDigitsAfterPoint == 0 \u0026\u0026 !overflowInt64) {\n // An integer literal.\n let value = if (isNegative) { -tentativeInt64 } else { tentativeInt64 };\n if (-0x8000_0000_i64 \u003c= value \u0026\u0026 value \u003c= 0x7fff_ffff_i64) {\n // Guaranteed representable int value.\n out.int32Value(value.toInt32Unsafe());\n } else {\n out.int64Value(value);\n }\n return i;\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 } orelse panic() } // See https://github.com/temperlang/temper/issues/203\n\n // TODO Define as `Int64.minValue`.\n let minInt64 = -0x8000_0000_0000_0000_i64;\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 throws 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 throws 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 throws Bubble {\n (t as JsonBoolean).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 throws Bubble {\n (t as JsonNumeric).asFloat64()\n }\n }\n\n @staticExtension(Float64, \u0022jsonAdapter\u0022)\n export let float64JsonAdapter(): JsonAdapter\u003cFloat64\u003e {\n new Float64JsonAdapter()\n }\n\n class Int32JsonAdapter extends JsonAdapter\u003cInt\u003e {\n public encodeToJson(x: Int, p: JsonProducer): Void {\n p.int32Value(x);\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): Int throws Bubble {\n (t as JsonNumeric).asInt32()\n }\n }\n\n @staticExtension(Int, \u0022jsonAdapter\u0022)\n export let int32JsonAdapter(): JsonAdapter\u003cInt\u003e {\n new Int32JsonAdapter()\n }\n\n class Int64JsonAdapter extends JsonAdapter\u003cInt64\u003e {\n public encodeToJson(x: Int64, p: JsonProducer): Void {\n p.int64Value(x);\n }\n public decodeFromJson(t: JsonSyntaxTree, ic: InterchangeContext): Int64 throws Bubble {\n (t as JsonNumeric).asInt64()\n }\n }\n\n @staticExtension(Int64, \u0022jsonAdapter\u0022)\n export let int64JsonAdapter(): JsonAdapter\u003cInt64\u003e {\n new Int64JsonAdapter()\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 throws Bubble {\n (t as JsonString).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 throws Bubble {\n let b = new ListBuilder\u003cT\u003e();\n let elements = (t as JsonArray).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?\u003e {\n public encodeToJson(x: T?, 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? throws Bubble {\n if (t is JsonNull) {\n null\n } else {\n adapterForT.decodeFromJson(t, ic)\n }\n }\n }\n\n[ECMA-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", "headerName", "NullInterchangeContext", "instance", "JsonProducer", "key", "x", "JsonSyntaxTree", "p", "JsonObject", "properties", "propertyKey", "return", "treeList", "lastIndex", "fn", "k", "vs", "v", "JsonArray", "elements", "JsonBoolean", "content", "JsonNull", "JsonString", "JsonNumeric", "JsonInt32", "JsonInt64", "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", "t", "ic", "BooleanJsonAdapter", "Float64JsonAdapter", "Int32JsonAdapter", "Int64JsonAdapter", "StringJsonAdapter", "ListJsonAdapter", "adapterForT", "el", "this", "b", "OrNullJsonAdapter", "hexDigits", "encodeHex4", "cp", "b0", "b1", "b2", "b3", "emitted", "replacement", "nextI", "storeJsonError", "shortExplanation", "gotten", "decodeHexUnsigned", "start", "limit", "digit", "parseJsonStringTo", "sb", "errOut", "leadSurrogate", "consumed", "iNext", "end", "needToFlush", "esc0", "startHex", "hex", "decodedCp", "lead", "keyBuffer", "afterKey", "afterPropertyValue", "afterElementValue", "after", "afterSubstring", "string", "inString", "substring", "j", "ch0", "keyword", "isNegative", "startOfNumber", "digit0", "nDigits", "tentativeFloat64", "tentativeInt64", "overflowInt64", "possibleDigit", "nextDigit", "oldInt64", "nDigitsAfterPoint", "afterPoint", "nExponentDigits", "afterE", "afterExponent", "numericTokenString", "doubleValue", "parseJsonToProducer", "afterValue", "parseJson", "booleanJsonAdapter", "float64JsonAdapter", "int32JsonAdapter", "int64JsonAdapter", "stringJsonAdapter", "listJsonAdapter" ], "mappings": "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" }
|
package/net.js
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type as
|
|
2
|
+
type as type__718, stdNetSend as stdNetSend_716, panic as panic_724
|
|
3
3
|
} from "@temperlang/core";
|
|
4
|
-
export class NetRequest extends
|
|
4
|
+
export class NetRequest extends type__718() {
|
|
5
5
|
/** @type {string} */
|
|
6
|
-
#
|
|
6
|
+
#url_707;
|
|
7
7
|
/** @type {string} */
|
|
8
|
-
#
|
|
8
|
+
#method_708;
|
|
9
9
|
/** @type {string | null} */
|
|
10
|
-
#
|
|
10
|
+
#bodyContent_709;
|
|
11
11
|
/** @type {string | null} */
|
|
12
|
-
#
|
|
12
|
+
#bodyMimeType_710;
|
|
13
13
|
/**
|
|
14
|
-
* @param {string}
|
|
15
|
-
* @param {string}
|
|
14
|
+
* @param {string} content_712
|
|
15
|
+
* @param {string} mimeType_713
|
|
16
16
|
*/
|
|
17
|
-
post(
|
|
18
|
-
this.#
|
|
19
|
-
this.#
|
|
20
|
-
let
|
|
21
|
-
this.#
|
|
17
|
+
post(content_712, mimeType_713) {
|
|
18
|
+
this.#method_708 = "POST";
|
|
19
|
+
this.#bodyContent_709 = content_712;
|
|
20
|
+
let t_714 = this.#bodyMimeType_710;
|
|
21
|
+
this.#bodyMimeType_710 = t_714;
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
24
|
/** @returns {globalThis.Promise<NetResponse>} */
|
|
25
25
|
send() {
|
|
26
|
-
return
|
|
26
|
+
return stdNetSend_716(this.#url_707, this.#method_708, this.#bodyContent_709, this.#bodyMimeType_710);
|
|
27
27
|
}
|
|
28
|
-
/** @param {string}
|
|
29
|
-
constructor(
|
|
28
|
+
/** @param {string} url_717 */
|
|
29
|
+
constructor(url_717) {
|
|
30
30
|
super ();
|
|
31
|
-
this.#
|
|
32
|
-
this.#
|
|
33
|
-
this.#
|
|
34
|
-
this.#
|
|
31
|
+
this.#url_707 = url_717;
|
|
32
|
+
this.#method_708 = "GET";
|
|
33
|
+
this.#bodyContent_709 = null;
|
|
34
|
+
this.#bodyMimeType_710 = null;
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
export class NetResponse extends
|
|
38
|
+
export class NetResponse extends type__718() {
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
|
-
* @param {string}
|
|
42
|
-
* @param {string}
|
|
43
|
-
* @param {string | null}
|
|
44
|
-
* @param {string | null}
|
|
41
|
+
* @param {string} url_720
|
|
42
|
+
* @param {string} method_721
|
|
43
|
+
* @param {string | null} bodyContent_722
|
|
44
|
+
* @param {string | null} bodyMimeType_723
|
|
45
45
|
* @returns {globalThis.Promise<NetResponse>}
|
|
46
46
|
*/
|
|
47
|
-
function
|
|
48
|
-
return
|
|
47
|
+
function sendRequest_719(url_720, method_721, bodyContent_722, bodyMimeType_723) {
|
|
48
|
+
return panic_724();
|
|
49
49
|
}
|
package/net.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "version": 3, "file": "js/std/net.js", "sources": [ "std/net/net.temper.md" ], "sourcesContent": [ "# Network Access\n\n*NetRequest* is a builder class for an HTTP send.\nNone of the methods except *send* actually initiate anything.\n\n export class NetRequest(\n\nThe URL to request.\n\n private url: String,\n ) {\n private var method: String = \u0022GET\u0022;\n private var bodyContent: String? = null;\n private var bodyMimeType: String? = null;\n\n*Post* switches the HTTP method to \u0022POST\u0022 and makes sure that\na body with the given textual content and mime-type will be sent\nalong.\n\n public post(content: String, mimeType: String): Void {\n this.method = \u0022POST\u0022;\n this.bodyContent = content;\n this.bodyMimeType = bodyMimeType;\n }\n\n*Send* makes a best effort to actual send an HTTP method.\nBackends may or may not support all request features in which\ncase, send should return a broken promise.\n\n public send(): Promise\u003cNetResponse\u003e {\n sendRequest(\n this.url,\n this.method,\n this.bodyContent,\n this.bodyMimeType,\n )\n }\n }\n\nResponse bundles together parts of an HTTP response.\n\n @connected(\u0022NetResponse\u0022)\n export interface NetResponse {\n\n*status* is an [HTTP Status Code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status).\n\n @connected(\u0022NetResponse::getStatus\u0022)\n get status(): Int;\n\n*contentType* describes the content type of the body if any.\n\n @connected(\u0022NetResponse::getContentType\u0022)\n get contentType(): String?;\n\n*bodyContent* is the textual content of the body if it is textual.\n\n @connected(\u0022NetResponse::getBodyContent\u0022)\n get bodyContent(): Promise\u003cString?\u003e;\n }\n\nThis connected method does the work but is not directly\naccessible to Temper code.\n\n @connected(\u0022stdNetSend\u0022)\n let sendRequest(\n url: String,\n method: String,\n bodyContent: String?,\n bodyMimeType: String?,\n ): Promise\u003cNetResponse\u003e {\n panic()\n }\n" ], "names": [ "NetRequest", "url", "method", "bodyContent", "bodyMimeType", "content", "mimeType", "NetResponse", "sendRequest" ], "mappings": "AAKI;AAAA;AAAA;AAAa,aAAAA,UAAA,kBA+BV,EAAA,AA3BO;AAAK,uBAAM;AAAX,EAAAC,QAAG;AAES,uBAAM;AAAd,EAAAC,WAAM;AACO,8BAAO;AAApB,EAAAC,gBAAW;AACG,8BAAO;AAArB,EAAAC,iBAAY;AAMjB;AAIN,MAAA,AAJM,CAAKC,WAAe,CAAE,CAAAC,YAAgB,CAI5C,AAJoD;AACnD,QAAI,CAAgBJ,WAAA,EAAA,AAAN,OAAM;AACpB,QAAI,CAAsBC,gBAAA,EAAA,AAAP,CAAAE,WAAO;AACM,eAAA,AAAZ,KAAY,CAAAD,iBAAA,CAAA;AAAhC,QAAI,CAA4BA,iBAAA,EAAA,AAAZ,MAAY;AAAA;AAAC;AAO5B;AAON,MAAA,AAPM,EAON,AAPmC;AAClC,yBAAW,CACT,IAAI,CAAIH,QAAA,CACR,KAAI,CAAOC,WAAA,CACX,KAAI,CAAYC,gBAAA,CAChB,KAAI,CAAaC,iBAAA,CAClB;AAAA,GACF;AA1BD;AAAA,cAAA,AADQH,OAAW,CACnB;AAAA,aAAA;AADQ,SAAWA,QAAA,EAAA,AAAX,CAAAA,OAAW;AAEP,SAAsBC,WAAA,EAAA,AAAL,MAAK;AACtB,SAA2BC,gBAAA,EAAA,AAAJ,KAAI;AAC3B,SAA4BC,iBAAA,EAAA,AAAJ,KAAI,CAAA;AAA7B;AAA6B,GAAA;AAHxC,CA0BC;AAMc,aAAAG,WAAA,kBAeoB,EAAA,AAVnC;AAAA,CAUmC;AAOrC,mMAOC;AAPD,QAAI,CAAAC,eAAW,AAAf,CACEP,OAAW,CACX,CAAAC,UAAc,CACd,CAAAC,eAAoB,CACpB,CAAAC,gBAAqB,CAGtB,AAFuB;AACtB,
|
|
1
|
+
{ "version": 3, "file": "js/std/net.js", "sources": [ "std/net/net.temper.md" ], "sourcesContent": [ "# Network Access\n\n*NetRequest* is a builder class for an HTTP send.\nNone of the methods except *send* actually initiate anything.\n\n export class NetRequest(\n\nThe URL to request.\n\n private url: String,\n ) {\n private var method: String = \u0022GET\u0022;\n private var bodyContent: String? = null;\n private var bodyMimeType: String? = null;\n\n*Post* switches the HTTP method to \u0022POST\u0022 and makes sure that\na body with the given textual content and mime-type will be sent\nalong.\n\n public post(content: String, mimeType: String): Void {\n this.method = \u0022POST\u0022;\n this.bodyContent = content;\n this.bodyMimeType = bodyMimeType;\n }\n\n*Send* makes a best effort to actual send an HTTP method.\nBackends may or may not support all request features in which\ncase, send should return a broken promise.\n\n public send(): Promise\u003cNetResponse\u003e {\n sendRequest(\n this.url,\n this.method,\n this.bodyContent,\n this.bodyMimeType,\n )\n }\n }\n\nResponse bundles together parts of an HTTP response.\n\n @connected(\u0022NetResponse\u0022)\n export interface NetResponse {\n\n*status* is an [HTTP Status Code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status).\n\n @connected(\u0022NetResponse::getStatus\u0022)\n get status(): Int;\n\n*contentType* describes the content type of the body if any.\n\n @connected(\u0022NetResponse::getContentType\u0022)\n get contentType(): String?;\n\n*bodyContent* is the textual content of the body if it is textual.\n\n @connected(\u0022NetResponse::getBodyContent\u0022)\n get bodyContent(): Promise\u003cString?\u003e;\n }\n\nThis connected method does the work but is not directly\naccessible to Temper code.\n\n @connected(\u0022stdNetSend\u0022)\n let sendRequest(\n url: String,\n method: String,\n bodyContent: String?,\n bodyMimeType: String?,\n ): Promise\u003cNetResponse\u003e {\n panic()\n }\n" ], "names": [ "NetRequest", "url", "method", "bodyContent", "bodyMimeType", "content", "mimeType", "NetResponse", "sendRequest" ], "mappings": "AAKI;AAAA;AAAA;AAAa,aAAAA,UAAA,kBA+BV,EAAA,AA3BO;AAAK,uBAAM;AAAX,EAAAC,QAAG;AAES,uBAAM;AAAd,EAAAC,WAAM;AACO,8BAAO;AAApB,EAAAC,gBAAW;AACG,8BAAO;AAArB,EAAAC,iBAAY;AAMjB;AAIN,MAAA,AAJM,CAAKC,WAAe,CAAE,CAAAC,YAAgB,CAI5C,AAJoD;AACnD,QAAI,CAAgBJ,WAAA,EAAA,AAAN,OAAM;AACpB,QAAI,CAAsBC,gBAAA,EAAA,AAAP,CAAAE,WAAO;AACM,eAAA,AAAZ,KAAY,CAAAD,iBAAA,CAAA;AAAhC,QAAI,CAA4BA,iBAAA,EAAA,AAAZ,MAAY;AAAA;AAAC;AAO5B;AAON,MAAA,AAPM,EAON,AAPmC;AAClC,yBAAW,CACT,IAAI,CAAIH,QAAA,CACR,KAAI,CAAOC,WAAA,CACX,KAAI,CAAYC,gBAAA,CAChB,KAAI,CAAaC,iBAAA,CAClB;AAAA,GACF;AA1BD;AAAA,cAAA,AADQH,OAAW,CACnB;AAAA,aAAA;AADQ,SAAWA,QAAA,EAAA,AAAX,CAAAA,OAAW;AAEP,SAAsBC,WAAA,EAAA,AAAL,MAAK;AACtB,SAA2BC,gBAAA,EAAA,AAAJ,KAAI;AAC3B,SAA4BC,iBAAA,EAAA,AAAJ,KAAI,CAAA;AAA7B;AAA6B,GAAA;AAHxC,CA0BC;AAMc,aAAAG,WAAA,kBAeoB,EAAA,AAVnC;AAAA,CAUmC;AAOrC,mMAOC;AAPD,QAAI,CAAAC,eAAW,AAAf,CACEP,OAAW,CACX,CAAAC,UAAc,CACd,CAAAC,eAAoB,CACpB,CAAAC,gBAAqB,CAGtB,AAFuB;AACtB,kBAAK,EAAE;AAAA" }
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@temperlang/std",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"author": "Temper Contributors",
|
|
5
5
|
"description": "Optional support library provided with Temper",
|
|
6
6
|
"homepage": "https://temperlang.dev/",
|
|
7
|
-
"license": "Apache-2.0",
|
|
7
|
+
"license": "Apache-2.0 OR MIT",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"exports": {
|
|
10
|
-
"./regex": "./regex.js",
|
|
11
10
|
"./testing": "./testing.js",
|
|
12
11
|
"./json": "./json.js",
|
|
13
12
|
"./net": "./net.js",
|
|
13
|
+
"./regex": "./regex.js",
|
|
14
14
|
"./temporal": "./temporal.js",
|
|
15
15
|
".": "./index.js"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@temperlang/core": "0.
|
|
18
|
+
"@temperlang/core": "0.6.0"
|
|
19
19
|
}
|
|
20
20
|
}
|