@dpuse/dpuse-tool-streamparser-json-parser 1.0.2 → 1.0.4
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/README.md +16 -16
- package/dist/dpuse-tool-streamparser-json-parser.es.js +596 -293
- package/dist/dpuse-tool-streamparser-json-parser.es.js.map +1 -1
- package/dist/shipped-packages.json +1 -1
- package/dist/types/src/index.d.ts +12 -8
- package/dist/types/src/itemRecords.d.ts +1 -1
- package/dist/types/src/structureWalker.d.ts +10 -2
- package/dist/types/src/textPosition.d.ts +11 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dpuse-tool-streamparser-json-parser.es.js","names":["TokenType","TokenType","resolveDecoderId","i","a","e","o","s","n","r","c","u","d","t","p","m","_","y","b","x","C","w","T","ee","re","D","ie","ae","oe","se","O","ce","j","M","De","Oe","Re","NonBufferedString","char","buf","start","end","code","BufferedString","bufferSize","size","TokenType","\"LEFT_BRACE\"","\"RIGHT_BRACE\"","\"LEFT_BRACKET\"","\"RIGHT_BRACKET\"","\"COLON\"","\"COMMA\"","\"TRUE\"","\"FALSE\"","\"NULL\"","\"STRING\"","\"NUMBER\"","\"SEPARATOR\"","tokenType_default","charset","\"BACKSPACE\"","\"FORM_FEED\"","\"NEWLINE\"","\"CARRIAGE_RETURN\"","\"TAB\"","\"SPACE\"","\"EXCLAMATION_MARK\"","\"QUOTATION_MARK\"","\"NUMBER_SIGN\"","\"DOLLAR_SIGN\"","\"PERCENT_SIGN\"","\"AMPERSAND\"","\"APOSTROPHE\"","\"LEFT_PARENTHESIS\"","\"RIGHT_PARENTHESIS\"","\"ASTERISK\"","\"PLUS_SIGN\"","\"HYPHEN_MINUS\"","\"FULL_STOP\"","\"SOLIDUS\"","\"DIGIT_ZERO\"","\"DIGIT_ONE\"","\"DIGIT_TWO\"","\"DIGIT_THREE\"","\"DIGIT_FOUR\"","\"DIGIT_FIVE\"","\"DIGIT_SIX\"","\"DIGIT_SEVEN\"","\"DIGIT_EIGHT\"","\"DIGIT_NINE\"","\"SEMICOLON\"","\"LESS_THAN_SIGN\"","\"EQUALS_SIGN\"","\"GREATER_THAN_SIGN\"","\"QUESTION_MARK\"","\"COMMERCIAL_AT\"","\"LATIN_CAPITAL_LETTER_A\"","\"LATIN_CAPITAL_LETTER_B\"","\"LATIN_CAPITAL_LETTER_C\"","\"LATIN_CAPITAL_LETTER_D\"","\"LATIN_CAPITAL_LETTER_E\"","\"LATIN_CAPITAL_LETTER_F\"","\"LATIN_CAPITAL_LETTER_G\"","\"LATIN_CAPITAL_LETTER_H\"","\"LATIN_CAPITAL_LETTER_I\"","\"LATIN_CAPITAL_LETTER_J\"","\"LATIN_CAPITAL_LETTER_K\"","\"LATIN_CAPITAL_LETTER_L\"","\"LATIN_CAPITAL_LETTER_M\"","\"LATIN_CAPITAL_LETTER_N\"","\"LATIN_CAPITAL_LETTER_O\"","\"LATIN_CAPITAL_LETTER_P\"","\"LATIN_CAPITAL_LETTER_Q\"","\"LATIN_CAPITAL_LETTER_R\"","\"LATIN_CAPITAL_LETTER_S\"","\"LATIN_CAPITAL_LETTER_T\"","\"LATIN_CAPITAL_LETTER_U\"","\"LATIN_CAPITAL_LETTER_V\"","\"LATIN_CAPITAL_LETTER_W\"","\"LATIN_CAPITAL_LETTER_X\"","\"LATIN_CAPITAL_LETTER_Y\"","\"LATIN_CAPITAL_LETTER_Z\"","\"LEFT_SQUARE_BRACKET\"","\"REVERSE_SOLIDUS\"","\"RIGHT_SQUARE_BRACKET\"","\"CIRCUMFLEX_ACCENT\"","\"LOW_LINE\"","\"GRAVE_ACCENT\"","\"LATIN_SMALL_LETTER_A\"","\"LATIN_SMALL_LETTER_B\"","\"LATIN_SMALL_LETTER_C\"","\"LATIN_SMALL_LETTER_D\"","\"LATIN_SMALL_LETTER_E\"","\"LATIN_SMALL_LETTER_F\"","\"LATIN_SMALL_LETTER_G\"","\"LATIN_SMALL_LETTER_H\"","\"LATIN_SMALL_LETTER_I\"","\"LATIN_SMALL_LETTER_J\"","\"LATIN_SMALL_LETTER_K\"","\"LATIN_SMALL_LETTER_L\"","\"LATIN_SMALL_LETTER_M\"","\"LATIN_SMALL_LETTER_N\"","\"LATIN_SMALL_LETTER_O\"","\"LATIN_SMALL_LETTER_P\"","\"LATIN_SMALL_LETTER_Q\"","\"LATIN_SMALL_LETTER_R\"","\"LATIN_SMALL_LETTER_S\"","\"LATIN_SMALL_LETTER_T\"","\"LATIN_SMALL_LETTER_U\"","\"LATIN_SMALL_LETTER_V\"","\"LATIN_SMALL_LETTER_W\"","\"LATIN_SMALL_LETTER_X\"","\"LATIN_SMALL_LETTER_Y\"","\"LATIN_SMALL_LETTER_Z\"","\"LEFT_CURLY_BRACKET\"","\"VERTICAL_LINE\"","\"RIGHT_CURLY_BRACKET\"","\"TILDE\"","escapedSequences","TokenizerStates","\"START\"","\"ENDED\"","\"ERROR\"","\"TRUE1\"","\"TRUE2\"","\"TRUE3\"","\"FALSE1\"","\"FALSE2\"","\"FALSE3\"","\"FALSE4\"","\"NULL1\"","\"NULL2\"","\"NULL3\"","\"STRING_DEFAULT\"","\"STRING_AFTER_BACKSLASH\"","\"STRING_UNICODE_DIGIT_1\"","\"STRING_UNICODE_DIGIT_2\"","\"STRING_UNICODE_DIGIT_3\"","\"STRING_UNICODE_DIGIT_4\"","\"STRING_INCOMPLETE_CHAR\"","\"NUMBER_AFTER_INITIAL_MINUS\"","\"NUMBER_AFTER_INITIAL_ZERO\"","\"NUMBER_AFTER_INITIAL_NON_ZERO\"","\"NUMBER_AFTER_FULL_STOP\"","\"NUMBER_AFTER_DECIMAL\"","\"NUMBER_AFTER_E\"","\"NUMBER_AFTER_E_AND_SIGN\"","\"NUMBER_AFTER_E_AND_DIGIT\"","\"BOM_OR_START\"","\"BOM\"","TokenizerStateToString","tokenizerState","defaultOpts","TokenizerError","message","validateBufferSize","name","utf8SequenceLength","leadByte","multiByteRunEnd","buffer","seqLength","Tokenizer","opts","intVal","unicodeString","unicodeBuffer","input","lastCharCode","string","runEnd","k","available","controlChar","err","numberStr","TokenParserState","\"VALUE\"","\"KEY\"","TokenParserMode","\"OBJECT\"","\"ARRAY\"","BYTE_ORDER_MARK","TOKEN_TAKERS","walk","offset","value","createStructureWalker","tokenizer","options","state","container","constructContainer","handlers","tokenOffset","token","failAt","bytes","index","byte","isNumberText","stringifyJsonValue","item","key","startValue","openContainer","parent","path","closeContainer","bracket","kindId","takeColon","takeComma","takeString","takeScalar","SCALAR_COLUMN_NAME","createItemReader","frames","targetContainer","isTargetFound","isTargetClosed","addValue","frame","parentFrame","onItem","isTarget","arePathsEqual","targetPath","constructRecordObject","scalar","isListItem","flattenItem","fields","isPlainObject","addFields","fieldValue","prefix","constructTableShape","columnIndexes","itemFields","constructHeaderRecord","shape","constructRecord","record","hasUnknownField","columnIndex","constructParsedValue","otherPath","segment","DEFAULT_MAX_DEPTH","DEFAULT_MAX_VALUE_LENGTH","DEFAULT_RECORD_BUFFER_SIZE","CHECKPOINT_ITEM_COUNT","INDEXED_ITEM_COUNT","MAX_KEY_COUNT","LINE_FEED_BYTE","MAX_SLICE_BYTE_COUNT","STOP_READING","Tool","maxDepth","drafts","nodes","draftOf","takeItem","parentDraft","startOffset","isObject","isIndexed","walker","constructWalkerOptions","draft","endOffset","node","addKey","byteCount","readStream","stream","maxValueLength","entries","isMore","openScalarEntry","isLines","walkerOptions","startEntry","entry","text","describeScalar","isValueCut","recordsPerChunk","rowState","itemReader","transcode","constructTranscoder","reader","cancelRead","lineCount","result","countLineFeeds","sliceStart","takeRows","describePath","items","issues","constructIssue","error","findErrorOffset","parsedRecords","dataFormatId","abortSignal","slice","onProgress","decoderId","encodingId","decoder","encoder","isFinal","count","records","match"],"sources":["../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared.es.js","../node_modules/@streamparser/json/dist/mjs/utils/bufferedString.js","../node_modules/@streamparser/json/dist/mjs/utils/types/tokenType.js","../node_modules/@streamparser/json/dist/mjs/utils/utf-8.js","../node_modules/@streamparser/json/dist/mjs/tokenizer.js","../node_modules/@streamparser/json/dist/mjs/tokenparser.js","../node_modules/@streamparser/json/dist/mjs/utils/types/stackElement.js","../src/structureWalker.ts","../src/itemRecords.ts","../src/index.ts"],"sourcesContent":["// src/locale/label.ts\nvar e = \"en\", t = [{\n\tid: \"en\",\n\tflag: \"gb\",\n\tlabel: \"English\"\n}, {\n\tid: \"es\",\n\tflag: \"es\",\n\tlabel: \"Español\"\n}];\nfunction n(e) {\n\treturn new Map(Object.entries(e));\n}\nfunction r(e, t, n = \"en\") {\n\tlet r = e.get(t);\n\treturn r === void 0 ? n === t ? void 0 : e.get(n) : r;\n}\n// node_modules/valibot/dist/index.mjs\nvar i = {\n\tlang: void 0,\n\tmessage: void 0,\n\tabortEarly: void 0,\n\tabortPipeEarly: void 0\n};\n/* @__NO_SIDE_EFFECTS__ */\nfunction a(e) {\n\treturn e ? {\n\t\tlang: e?.lang ?? void 0,\n\t\tmessage: e?.message,\n\t\tabortEarly: e?.abortEarly ?? void 0,\n\t\tabortPipeEarly: e?.abortPipeEarly ?? void 0\n\t} : i;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction o(e) {\n\tlet t = typeof e;\n\treturn t === \"string\" ? `\"${e}\"` : t === \"number\" || t === \"bigint\" || t === \"boolean\" ? `${e}` : t === \"object\" || t === \"function\" ? (e && Object.getPrototypeOf(e)?.constructor?.name) ?? \"null\" : t;\n}\nfunction s(e, t, n, r, i) {\n\tlet a = i && \"input\" in i ? i.input : n.value, s = i?.expected ?? e.expects ?? null, c = i?.received ?? /* @__PURE__ */ o(a), l = {\n\t\tkind: e.kind,\n\t\ttype: e.type,\n\t\tinput: a,\n\t\texpected: s,\n\t\treceived: c,\n\t\tmessage: `Invalid ${t}: ${s ? `Expected ${s} but r` : \"R\"}eceived ${c}`,\n\t\trequirement: e.requirement,\n\t\tpath: i?.path,\n\t\tissues: i?.issues,\n\t\tlang: r.lang,\n\t\tabortEarly: r.abortEarly,\n\t\tabortPipeEarly: r.abortPipeEarly\n\t}, u = e.kind === \"schema\", d = i?.message ?? e.message ?? (e.reference, l.lang, void 0) ?? (u ? (l.lang, void 0) : null) ?? r.message ?? (l.lang, void 0);\n\td !== void 0 && (l.message = typeof d == \"function\" ? d(l) : d), u && (n.typed = !1), n.issues ? n.issues.push(l) : n.issues = [l];\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction c(e, t) {\n\treturn e === t || Number.isNaN(e) && Number.isNaN(t);\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction l(e, t) {\n\treturn Object.prototype.hasOwnProperty.call(e, t) && t !== \"__proto__\" && t !== \"prototype\" && t !== \"constructor\";\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction u(e, t) {\n\tlet n = [...new Set(e)];\n\treturn n.length > 1 ? `(${n.join(` ${t} `)})` : n[0] ?? \"never\";\n}\nfunction d(e) {\n\treturn e[\"~standard\"] = {\n\t\tversion: 1,\n\t\tvendor: \"valibot\",\n\t\tvalidate: (t) => e[\"~run\"]({ value: t }, /* @__PURE__ */ a())\n\t}, e;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction f(e, t) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_length\",\n\t\treference: f,\n\t\tasync: !1,\n\t\texpects: `>=${e}`,\n\t\trequirement: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn e.typed && e.value.length < this.requirement && s(this, \"length\", e, t, { received: `${e.value.length}` }), e;\n\t\t}\n\t};\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction p(e, t, n) {\n\treturn typeof e.fallback == \"function\" ? e.fallback(t, n) : e.fallback;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction m(e, t, n) {\n\treturn typeof e.default == \"function\" ? e.default(t, n) : e.default;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction h(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: h,\n\t\texpects: \"Array\",\n\t\tasync: !1,\n\t\titem: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (Array.isArray(n)) {\n\t\t\t\te.typed = !0, e.value = [];\n\t\t\t\tfor (let r = 0; r < n.length; r++) {\n\t\t\t\t\tlet i = n[r], a = this.item[\"~run\"]({ value: i }, t);\n\t\t\t\t\tif (a.issues) {\n\t\t\t\t\t\tlet o = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: i\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (let t of a.issues) t.path ? t.path.unshift(o) : t.path = [o], e.issues?.push(t);\n\t\t\t\t\t\tif (e.issues ||= a.issues, t.abortEarly) {\n\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ta.typed || (e.typed = !1), e.value.push(a.value);\n\t\t\t\t}\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction g(e) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"boolean\",\n\t\treference: g,\n\t\texpects: \"boolean\",\n\t\tasync: !1,\n\t\tmessage: e,\n\t\t\"~run\"(e, t) {\n\t\t\treturn typeof e.value == \"boolean\" ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"literal\",\n\t\treference: _,\n\t\texpects: /* @__PURE__ */ o(e),\n\t\tasync: !1,\n\t\tliteral: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn /* @__PURE__ */ c(e.value, this.literal) ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction v(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: v,\n\t\texpects: \"Object\",\n\t\tasync: !1,\n\t\tentries: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (n && typeof n == \"object\") {\n\t\t\t\te.typed = !0, e.value = {};\n\t\t\t\tfor (let r in this.entries) {\n\t\t\t\t\tlet i = this.entries[r];\n\t\t\t\t\tif (r in n || (i.type === \"exact_optional\" || i.type === \"optional\" || i.type === \"nullish\") && i.default !== void 0) {\n\t\t\t\t\t\tlet a = r in n ? n[r] : /* @__PURE__ */ m(i), o = i[\"~run\"]({ value: a }, t);\n\t\t\t\t\t\tif (o.issues) {\n\t\t\t\t\t\t\tlet i = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\t\tvalue: a\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (let t of o.issues) t.path ? t.path.unshift(i) : t.path = [i], e.issues?.push(t);\n\t\t\t\t\t\t\tif (e.issues ||= o.issues, t.abortEarly) {\n\t\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\to.typed || (e.typed = !1), e.value[r] = o.value;\n\t\t\t\t\t} else if (i.fallback !== void 0) e.value[r] = /* @__PURE__ */ p(i);\n\t\t\t\t\telse if (i.type !== \"exact_optional\" && i.type !== \"optional\" && i.type !== \"nullish\" && (s(this, \"key\", e, t, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${r}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: n[r]\n\t\t\t\t\t\t}]\n\t\t\t\t\t}), t.abortEarly)) break;\n\t\t\t\t}\n\t\t\t\tif (!e.issues || !t.abortEarly) for (let t in n) /* @__PURE__ */ l(n, t) && !Object.prototype.hasOwnProperty.call(this.entries, t) && (e.value[t] = n[t]);\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction y(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: y,\n\t\texpects: `(${e.expects} | null)`,\n\t\tasync: !1,\n\t\twrapped: e,\n\t\tdefault: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn e.value === null && (this.default !== void 0 && (e.value = /* @__PURE__ */ m(this, e, t)), e.value === null) ? (e.typed = !0, e) : this.wrapped[\"~run\"](e, t);\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction b(e) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"number\",\n\t\treference: b,\n\t\texpects: \"number\",\n\t\tasync: !1,\n\t\tmessage: e,\n\t\t\"~run\"(e, t) {\n\t\t\treturn typeof e.value == \"number\" && !isNaN(e.value) ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction x(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: x,\n\t\texpects: `(${e.expects} | undefined)`,\n\t\tasync: !1,\n\t\twrapped: e,\n\t\tdefault: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn e.value === void 0 && (this.default !== void 0 && (e.value = /* @__PURE__ */ m(this, e, t)), e.value === void 0) ? (e.typed = !0, e) : this.wrapped[\"~run\"](e, t);\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction S(e, t, n) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: S,\n\t\texpects: \"Object\",\n\t\tasync: !1,\n\t\tkey: e,\n\t\tvalue: t,\n\t\tmessage: n,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (n && typeof n == \"object\") {\n\t\t\t\te.typed = !0, e.value = {};\n\t\t\t\tfor (let r in n) if (/* @__PURE__ */ l(n, r)) {\n\t\t\t\t\tlet i = n[r], a = this.key[\"~run\"]({ value: r }, t);\n\t\t\t\t\tif (a.issues) {\n\t\t\t\t\t\tlet o = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: i\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (let t of a.issues) t.path = [o], e.issues?.push(t);\n\t\t\t\t\t\tif (e.issues ||= a.issues, t.abortEarly) {\n\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet o = this.value[\"~run\"]({ value: i }, t);\n\t\t\t\t\tif (o.issues) {\n\t\t\t\t\t\tlet a = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: i\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (let t of o.issues) t.path ? t.path.unshift(a) : t.path = [a], e.issues?.push(t);\n\t\t\t\t\t\tif (e.issues ||= o.issues, t.abortEarly) {\n\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ta.typed && o.typed || (e.typed = !1), a.typed && (e.value[a.value] = o.value);\n\t\t\t\t}\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction C(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: C,\n\t\texpects: \"Object\",\n\t\tasync: !1,\n\t\tentries: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (n && typeof n == \"object\") {\n\t\t\t\te.typed = !0, e.value = {};\n\t\t\t\tfor (let r in this.entries) {\n\t\t\t\t\tlet i = this.entries[r];\n\t\t\t\t\tif (r in n || (i.type === \"exact_optional\" || i.type === \"optional\" || i.type === \"nullish\") && i.default !== void 0) {\n\t\t\t\t\t\tlet a = r in n ? n[r] : /* @__PURE__ */ m(i), o = i[\"~run\"]({ value: a }, t);\n\t\t\t\t\t\tif (o.issues) {\n\t\t\t\t\t\t\tlet i = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\t\tvalue: a\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (let t of o.issues) t.path ? t.path.unshift(i) : t.path = [i], e.issues?.push(t);\n\t\t\t\t\t\t\tif (e.issues ||= o.issues, t.abortEarly) {\n\t\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\to.typed || (e.typed = !1), e.value[r] = o.value;\n\t\t\t\t\t} else if (i.fallback !== void 0) e.value[r] = /* @__PURE__ */ p(i);\n\t\t\t\t\telse if (i.type !== \"exact_optional\" && i.type !== \"optional\" && i.type !== \"nullish\" && (s(this, \"key\", e, t, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${r}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: n[r]\n\t\t\t\t\t\t}]\n\t\t\t\t\t}), t.abortEarly)) break;\n\t\t\t\t}\n\t\t\t\tif (!e.issues || !t.abortEarly) {\n\t\t\t\t\tfor (let r in n) if (!Object.prototype.hasOwnProperty.call(this.entries, r)) {\n\t\t\t\t\t\ts(this, \"key\", e, t, {\n\t\t\t\t\t\t\tinput: r,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\t\tvalue: n[r]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction w(e) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"string\",\n\t\treference: w,\n\t\texpects: \"string\",\n\t\tasync: !1,\n\t\tmessage: e,\n\t\t\"~run\"(e, t) {\n\t\t\treturn typeof e.value == \"string\" ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction T(e) {\n\tlet t;\n\tif (e) for (let n of e) if (t) for (let e of n.issues) t.push(e);\n\telse t = n.issues;\n\treturn t;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction ee(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: ee,\n\t\texpects: /* @__PURE__ */ u(e.map((e) => e.expects), \"|\"),\n\t\tasync: !1,\n\t\toptions: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n, r, i;\n\t\t\tfor (let a of this.options) {\n\t\t\t\tlet o = a[\"~run\"]({ value: e.value }, t);\n\t\t\t\tif (o.typed) {\n\t\t\t\t\tif (o.issues) r ? r.push(o) : r = [o];\n\t\t\t\t\telse {\n\t\t\t\t\t\tn = o;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else i ? i.push(o) : i = [o];\n\t\t\t}\n\t\t\tif (n) return n;\n\t\t\tif (r) {\n\t\t\t\tif (r.length === 1) return r[0];\n\t\t\t\ts(this, \"type\", e, t, { issues: /* @__PURE__ */ T(r) }), e.typed = !0;\n\t\t\t} else if (i?.length === 1) return i[0];\n\t\t\telse s(this, \"type\", e, t, { issues: /* @__PURE__ */ T(i) });\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction te(...e) {\n\treturn d({\n\t\t...e[0],\n\t\tpipe: e,\n\t\t\"~run\"(t, n) {\n\t\t\tfor (let r of e) if (r.kind !== \"metadata\") {\n\t\t\t\tif (t.issues && (r.kind === \"schema\" || r.kind === \"transformation\")) {\n\t\t\t\t\tt.typed = !1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tt.issues && (n.abortEarly || n.abortPipeEarly) || (t = r[\"~run\"](t, n));\n\t\t\t}\n\t\t\treturn t;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction ne(e, t, n) {\n\tlet r = e[\"~run\"]({ value: t }, /* @__PURE__ */ a(n));\n\treturn {\n\t\ttyped: r.typed,\n\t\tsuccess: !r.issues,\n\t\toutput: r.value,\n\t\tissues: r.issues\n\t};\n}\n// src/locale/locale.schema.ts\nvar E = /* @__PURE__ */ C({\n\ten: /* @__PURE__ */ w(),\n\tes: /* @__PURE__ */ w()\n}), re = {\n\tid: /* @__PURE__ */ w(),\n\tlabel: /* @__PURE__ */ C({\n\t\ten: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\t\tes: /* @__PURE__ */ x(/* @__PURE__ */ w())\n\t}),\n\tdescription: /* @__PURE__ */ C({\n\t\ten: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\t\tes: /* @__PURE__ */ x(/* @__PURE__ */ w())\n\t}),\n\ticon: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\ticonDark: /* @__PURE__ */ y(/* @__PURE__ */ w())\n}, D = (e) => /* @__PURE__ */ ee(e.map((e) => /* @__PURE__ */ _(e))), ie = D([\n\t\"app\",\n\t\"connector\",\n\t\"connectorConnection\",\n\t\"context\",\n\t\"contextArea\",\n\t\"contextModel\",\n\t\"contextModelDimension\",\n\t\"contextModelDimensionHierarchy\",\n\t\"contextModelEntity\",\n\t\"contextModelEntityDataItem\",\n\t\"contextModelEntityEvent\",\n\t\"contextModelEntityPrimaryMeasure\",\n\t\"contextModelSecondaryMeasure\",\n\t\"cookbook\",\n\t\"cookbookRecipe\",\n\t\"dataView\",\n\t\"engine\",\n\t\"eventQuery\",\n\t\"presenter\",\n\t\"presenterPresentation\",\n\t\"tool\"\n]), ae = D([\n\t\"danger\",\n\t\"success\",\n\t\"warning\"\n]), oe = D([\n\t\"alpha\",\n\t\"beta\",\n\t\"releaseCandidate\",\n\t\"generalAvailability\"\n]), se = /* @__PURE__ */ C({\n\tcolor: ae,\n\tlabel: /* @__PURE__ */ w()\n}), O = {\n\t...re,\n\ttypeId: ie\n}, k = /* @__PURE__ */ C({\n\t...O,\n\torder: /* @__PURE__ */ b(),\n\tpath: /* @__PURE__ */ w()\n}), ce = {\n\t...O,\n\tfirstCreatedAt: /* @__PURE__ */ y(/* @__PURE__ */ b()),\n\tlastUpdatedAt: /* @__PURE__ */ y(/* @__PURE__ */ b()),\n\tstatus: /* @__PURE__ */ y(se),\n\tstatusId: /* @__PURE__ */ y(oe)\n}, le = /* @__PURE__ */ C({ ...ce }), ue = [\n\t{\n\t\tid: \"alpha\",\n\t\tcolor: \"danger\",\n\t\tlabels: {\n\t\t\ten: \"alpha\",\n\t\t\tes: \"alfa\"\n\t\t}\n\t},\n\t{\n\t\tid: \"beta\",\n\t\tcolor: \"warning\",\n\t\tlabels: {\n\t\t\ten: \"beta\",\n\t\t\tes: \"beta\"\n\t\t}\n\t},\n\t{\n\t\tid: \"releaseCandidate\",\n\t\tcolor: \"success\",\n\t\tlabels: {\n\t\t\ten: \"release-candidate\",\n\t\t\tes: \"candidato-de-lanzamiento\"\n\t\t}\n\t},\n\t{\n\t\tid: \"generalAvailability\",\n\t\tcolor: \"success\",\n\t\tlabels: {\n\t\t\ten: \"\",\n\t\t\tes: \"\"\n\t\t}\n\t}\n];\nfunction de(e, t = \"en\") {\n\tlet n = ue.find((t) => t.id === e);\n\tif (n) {\n\t\tlet e = n.labels[t] ?? n.labels.en ?? n.id;\n\t\treturn {\n\t\t\tcolor: n.color,\n\t\t\tlabel: e\n\t\t};\n\t}\n\treturn {\n\t\tcolor: \"danger\",\n\t\tlabel: e\n\t};\n}\n// src/component/dataView/index.ts\nvar fe = [\n\t{\n\t\tid: \"arrow\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"avro\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"dtv\",\n\t\tisTable: !0,\n\t\tisText: !0,\n\t\tsupportId: \"supported\"\n\t},\n\t{\n\t\tid: \"json\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"jsonl\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"markdown\",\n\t\tisTable: !1,\n\t\tisText: !0,\n\t\tsupportId: \"unsupported\"\n\t},\n\t{\n\t\tid: \"ods\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"parquet\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"sav\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"sqlite\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"xlsx\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"xml\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"unknown\",\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"unsupported\"\n\t}\n], A = [\n\t{\n\t\tid: \",\",\n\t\tcharacter: \",\"\n\t},\n\t{\n\t\tid: \";\",\n\t\tcharacter: \";\"\n\t},\n\t{\n\t\tid: \"\t\",\n\t\tcharacter: \"\t\"\n\t},\n\t{\n\t\tid: \"|\",\n\t\tcharacter: \"|\"\n\t},\n\t{\n\t\tid: \" \",\n\t\tcharacter: \" \"\n\t},\n\t{\n\t\tid: \":\",\n\t\tcharacter: \":\"\n\t},\n\t{\n\t\tid: \"_\",\n\t\tcharacter: \"_\"\n\t},\n\t{\n\t\tid: \"!\",\n\t\tcharacter: \"!\"\n\t},\n\t{\n\t\tid: \"0x1F\",\n\t\tcharacter: \"\u001f\"\n\t},\n\t{\n\t\tid: \"0x1E\",\n\t\tcharacter: \"\u001e\"\n\t}\n], pe = [\n\t{\n\t\tid: \"string\",\n\t\tdefaultSubtypeId: \"plain\",\n\t\tisChoosable: !0,\n\t\tsubtypeIds: [\n\t\t\t\"plain\",\n\t\t\t\"email\",\n\t\t\t\"url\",\n\t\t\t\"uuid\",\n\t\t\t\"ulid\",\n\t\t\t\"ipv4\",\n\t\t\t\"ipv6\",\n\t\t\t\"ipRange\",\n\t\t\t\"macAddress\",\n\t\t\t\"iban\",\n\t\t\t\"isbn\",\n\t\t\t\"paymentCard\",\n\t\t\t\"hexColor\",\n\t\t\t\"json\",\n\t\t\t\"countryCode\",\n\t\t\t\"currencyCode\",\n\t\t\t\"languageCode\"\n\t\t]\n\t},\n\t{\n\t\tid: \"numeric\",\n\t\tdefaultSubtypeId: \"integer\",\n\t\tisChoosable: !0,\n\t\tsubtypeIds: [\n\t\t\t\"integer\",\n\t\t\t\"decimal\",\n\t\t\t\"bigint\"\n\t\t]\n\t},\n\t{\n\t\tid: \"temporal\",\n\t\tdefaultSubtypeId: \"dateTime\",\n\t\tisChoosable: !0,\n\t\tsubtypeIds: [\n\t\t\t\"date\",\n\t\t\t\"dateTime\",\n\t\t\t\"time\"\n\t\t]\n\t},\n\t{\n\t\tid: \"boolean\",\n\t\tdefaultSubtypeId: void 0,\n\t\tisChoosable: !0,\n\t\tsubtypeIds: []\n\t},\n\t{\n\t\tid: \"unknown\",\n\t\tdefaultSubtypeId: void 0,\n\t\tisChoosable: !1,\n\t\tsubtypeIds: []\n\t}\n], me = [\",\", \".\"];\nfunction he(e) {\n\treturn A.find(({ id: t }) => t === e)?.character ?? e;\n}\nD([\n\t\"app\",\n\t\"engine\",\n\t\"connector\",\n\t\"cookbook\",\n\t\"presenter\",\n\t\"tool\"\n]);\n// src/component/module/moduleConfig.schema.ts\nvar j = {\n\t...ce,\n\tvendorAccountURL: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\tvendorDocumentationURL: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\tvendorHomeURL: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\tversion: /* @__PURE__ */ w()\n};\n({ ...j });\n// src/component/module/connector/connectorConfig.schema.ts\nvar ge = D([\n\t\"auditObjectContent\",\n\t\"closeStore\",\n\t\"createObject\",\n\t\"describeConnection\",\n\t\"dropObject\",\n\t\"findObject\",\n\t\"getInfo\",\n\t\"getReadableStream\",\n\t\"getRecord\",\n\t\"listNodes\",\n\t\"loadObjectRecords\",\n\t\"openStore\",\n\t\"previewObject\",\n\t\"queryRecords\",\n\t\"removeRecords\",\n\t\"retrieveRecords\",\n\t\"upsertRecords\"\n]), _e = D([\n\t\"application\",\n\t\"curatedDataset\",\n\t\"database\",\n\t\"fileStore\"\n]), ve = /* @__PURE__ */ C({ label: E }), ye = D([\n\t\"apiEndpoint\",\n\t\"file\",\n\t\"table\"\n]), be = D([\n\t\"bidirectional\",\n\t\"destination\",\n\t\"source\",\n\t\"unknown\"\n]), xe = /* @__PURE__ */ C({ label: E }), Se = /* @__PURE__ */ C({\n\tauthMethodId: D([\n\t\t\"apiKey\",\n\t\t\"disabled\",\n\t\t\"oAuth2\",\n\t\t\"none\"\n\t]),\n\tactiveConnectionCount: /* @__PURE__ */ x(/* @__PURE__ */ b()),\n\tcanDescribe: /* @__PURE__ */ x(/* @__PURE__ */ g()),\n\tid: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\tlabel: /* @__PURE__ */ x(E),\n\tmaxConnectionCount: /* @__PURE__ */ y(/* @__PURE__ */ b()),\n\tparams: /* @__PURE__ */ x(/* @__PURE__ */ h(/* @__PURE__ */ S(/* @__PURE__ */ w(), /* @__PURE__ */ w())))\n}), Ce = /* @__PURE__ */ C({\n\t...j,\n\ttypeId: /* @__PURE__ */ _(\"connector\"),\n\tactionNames: /* @__PURE__ */ h(ge),\n\tcategory: /* @__PURE__ */ y(ve),\n\tcategoryId: _e,\n\timplementations: /* @__PURE__ */ S(/* @__PURE__ */ w(), Se),\n\titemTypeId: ye,\n\tusage: /* @__PURE__ */ y(xe),\n\tusageId: /* @__PURE__ */ y(be)\n}), we = {\n\tarabic: {\n\t\tid: \"arabic\",\n\t\tlabel: {\n\t\t\ten: \"Arabic\",\n\t\t\tes: \"Árabe\"\n\t\t}\n\t},\n\tarmenian: {\n\t\tid: \"armenian\",\n\t\tlabel: {\n\t\t\ten: \"Armenian\",\n\t\t\tes: \"Armenio\"\n\t\t}\n\t},\n\tbaltic: {\n\t\tid: \"baltic\",\n\t\tlabel: {\n\t\t\ten: \"Baltic\",\n\t\t\tes: \"Báltico\"\n\t\t}\n\t},\n\tceltic: {\n\t\tid: \"celtic\",\n\t\tlabel: {\n\t\t\ten: \"Celtic\",\n\t\t\tes: \"Celta\"\n\t\t}\n\t},\n\tcentralEuropean: {\n\t\tid: \"centralEuropean\",\n\t\tlabel: {\n\t\t\ten: \"Central European\",\n\t\t\tes: \"Centroeuropeo\"\n\t\t}\n\t},\n\tchineseSimplified: {\n\t\tid: \"chineseSimplified\",\n\t\tlabel: {\n\t\t\ten: \"Chinese Simplified\",\n\t\t\tes: \"Chino simplificado\"\n\t\t}\n\t},\n\tchineseTraditional: {\n\t\tid: \"chineseTraditional\",\n\t\tlabel: {\n\t\t\ten: \"Chinese Traditional\",\n\t\t\tes: \"Chino tradicional\"\n\t\t}\n\t},\n\tcyrillic: {\n\t\tid: \"cyrillic\",\n\t\tlabel: {\n\t\t\ten: \"Cyrillic\",\n\t\t\tes: \"Cirílico\"\n\t\t}\n\t},\n\tgeorgian: {\n\t\tid: \"georgian\",\n\t\tlabel: {\n\t\t\ten: \"Georgian\",\n\t\t\tes: \"Georgiano\"\n\t\t}\n\t},\n\tgreek: {\n\t\tid: \"greek\",\n\t\tlabel: {\n\t\t\ten: \"Greek\",\n\t\t\tes: \"Griego\"\n\t\t}\n\t},\n\thebrew: {\n\t\tid: \"hebrew\",\n\t\tlabel: {\n\t\t\ten: \"Hebrew\",\n\t\t\tes: \"Hebreo\"\n\t\t}\n\t},\n\tjapanese: {\n\t\tid: \"japanese\",\n\t\tlabel: {\n\t\t\ten: \"Japanese\",\n\t\t\tes: \"Japonés\"\n\t\t}\n\t},\n\tkorean: {\n\t\tid: \"korean\",\n\t\tlabel: {\n\t\t\ten: \"Korean\",\n\t\t\tes: \"Coreano\"\n\t\t}\n\t},\n\tlao: {\n\t\tid: \"lao\",\n\t\tlabel: {\n\t\t\ten: \"Lao\",\n\t\t\tes: \"Lao\"\n\t\t}\n\t},\n\tnordic: {\n\t\tid: \"nordic\",\n\t\tlabel: {\n\t\t\ten: \"Nordic\",\n\t\t\tes: \"Nórdico\"\n\t\t}\n\t},\n\tsouthEasternEuropean: {\n\t\tid: \"southEasternEuropean\",\n\t\tlabel: {\n\t\t\ten: \"South-Eastern European\",\n\t\t\tes: \"Europeo sudoriental\"\n\t\t}\n\t},\n\tsouthernEuropean: {\n\t\tid: \"southernEuropean\",\n\t\tlabel: {\n\t\t\ten: \"Southern European\",\n\t\t\tes: \"Europeo meridional\"\n\t\t}\n\t},\n\tthai: {\n\t\tid: \"thai\",\n\t\tlabel: {\n\t\t\ten: \"Thai\",\n\t\t\tes: \"Tailandés\"\n\t\t}\n\t},\n\tturkish: {\n\t\tid: \"turkish\",\n\t\tlabel: {\n\t\t\ten: \"Turkish\",\n\t\t\tes: \"Turco\"\n\t\t}\n\t},\n\tunicode: {\n\t\tid: \"unicode\",\n\t\tlabel: {\n\t\t\ten: \"Unicode\",\n\t\t\tes: \"Unicode\"\n\t\t}\n\t},\n\tvietnamese: {\n\t\tid: \"vietnamese\",\n\t\tlabel: {\n\t\t\ten: \"Vietnamese\",\n\t\t\tes: \"Vietnamita\"\n\t\t}\n\t},\n\twestern: {\n\t\tid: \"western\",\n\t\tlabel: {\n\t\t\ten: \"Western\",\n\t\t\tes: \"Occidental\"\n\t\t}\n\t}\n}, Te = {\n\t\"armscii-8\": {\n\t\tid: \"armscii-8\",\n\t\tgroupId: \"armenian\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"armscii8\"\n\t},\n\tascii: {\n\t\tid: \"ascii\",\n\t\tgroupId: null,\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1252\",\n\t\ticonvLiteDecoderId: \"ascii\"\n\t},\n\tbig5: {\n\t\tid: \"big5\",\n\t\tgroupId: \"chineseTraditional\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"big5\",\n\t\ticonvLiteDecoderId: \"big5hkscs\"\n\t},\n\t\"cesu-8\": {\n\t\tid: \"cesu-8\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cesu8\"\n\t},\n\tcp273: {\n\t\tid: \"cp273\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp424: {\n\t\tid: \"cp424\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp437: {\n\t\tid: \"cp437\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp437\"\n\t},\n\tcp500: {\n\t\tid: \"cp500\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp720: {\n\t\tid: \"cp720\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp720\"\n\t},\n\tcp737: {\n\t\tid: \"cp737\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp737\"\n\t},\n\tcp775: {\n\t\tid: \"cp775\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp775\"\n\t},\n\tcp808: {\n\t\tid: \"cp808\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp808\"\n\t},\n\tcp850: {\n\t\tid: \"cp850\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp850\"\n\t},\n\tcp852: {\n\t\tid: \"cp852\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp852\"\n\t},\n\tcp856: {\n\t\tid: \"cp856\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp856\"\n\t},\n\tcp857: {\n\t\tid: \"cp857\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp857\"\n\t},\n\tcp858: {\n\t\tid: \"cp858\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp858\"\n\t},\n\tcp860: {\n\t\tid: \"cp860\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp860\"\n\t},\n\tcp861: {\n\t\tid: \"cp861\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp861\"\n\t},\n\tcp862: {\n\t\tid: \"cp862\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp862\"\n\t},\n\tcp863: {\n\t\tid: \"cp863\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp863\"\n\t},\n\tcp864: {\n\t\tid: \"cp864\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp864\"\n\t},\n\tcp865: {\n\t\tid: \"cp865\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp865\"\n\t},\n\tcp869: {\n\t\tid: \"cp869\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp869\"\n\t},\n\tcp874: {\n\t\tid: \"cp874\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-874\",\n\t\ticonvLiteDecoderId: \"windows874\"\n\t},\n\tcp875: {\n\t\tid: \"cp875\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp922: {\n\t\tid: \"cp922\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp922\"\n\t},\n\tcp932: {\n\t\tid: \"cp932\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"shift_jis\",\n\t\ticonvLiteDecoderId: \"shiftjis\"\n\t},\n\tcp936: {\n\t\tid: \"cp936\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp936\"\n\t},\n\tcp949: {\n\t\tid: \"cp949\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"euc-kr\",\n\t\ticonvLiteDecoderId: \"cp949\"\n\t},\n\tcp950: {\n\t\tid: \"cp950\",\n\t\tgroupId: \"chineseTraditional\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp950\"\n\t},\n\tcp1006: {\n\t\tid: \"cp1006\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp1026: {\n\t\tid: \"cp1026\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp1046: {\n\t\tid: \"cp1046\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1046\"\n\t},\n\tcp1124: {\n\t\tid: \"cp1124\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1124\"\n\t},\n\tcp1125: {\n\t\tid: \"cp1125\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1125\"\n\t},\n\tcp1129: {\n\t\tid: \"cp1129\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1129\"\n\t},\n\tcp1133: {\n\t\tid: \"cp1133\",\n\t\tgroupId: \"lao\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1133\"\n\t},\n\tcp1140: {\n\t\tid: \"cp1140\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp1161: {\n\t\tid: \"cp1161\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1161\"\n\t},\n\tcp1162: {\n\t\tid: \"cp1162\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1162\"\n\t},\n\tcp1163: {\n\t\tid: \"cp1163\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1163\"\n\t},\n\tcp1258: {\n\t\tid: \"cp1258\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1258\",\n\t\ticonvLiteDecoderId: \"windows1258\"\n\t},\n\t\"euc-jp\": {\n\t\tid: \"euc-jp\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"euc-jp\",\n\t\ticonvLiteDecoderId: \"eucjp\"\n\t},\n\t\"euc-kr\": {\n\t\tid: \"euc-kr\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"euc-kr\",\n\t\ticonvLiteDecoderId: \"cp949\"\n\t},\n\tgb18030: {\n\t\tid: \"gb18030\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"gb18030\",\n\t\ticonvLiteDecoderId: \"gb18030\"\n\t},\n\tgbk: {\n\t\tid: \"gbk\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: \"gbk\",\n\t\ticonvLiteDecoderId: \"gbk\"\n\t},\n\t\"georgian-academy\": {\n\t\tid: \"georgian-academy\",\n\t\tgroupId: \"georgian\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"georgianacademy\"\n\t},\n\t\"georgian-ps\": {\n\t\tid: \"georgian-ps\",\n\t\tgroupId: \"georgian\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"georgianps\"\n\t},\n\t\"hp-roman8\": {\n\t\tid: \"hp-roman8\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"hproman8\"\n\t},\n\t\"hz-gb-2312\": {\n\t\tid: \"hz-gb-2312\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tibm855: {\n\t\tid: \"ibm855\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp855\"\n\t},\n\tibm866: {\n\t\tid: \"ibm866\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"ibm866\",\n\t\ticonvLiteDecoderId: \"cp866\"\n\t},\n\t\"iso-2022-jp\": {\n\t\tid: \"iso-2022-jp\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-2022-jp\",\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"iso-2022-kr\": {\n\t\tid: \"iso-2022-kr\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"iso-8859-1\": {\n\t\tid: \"iso-8859-1\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1252\",\n\t\ticonvLiteDecoderId: \"iso88591\"\n\t},\n\t\"iso-8859-2\": {\n\t\tid: \"iso-8859-2\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-2\",\n\t\ticonvLiteDecoderId: \"iso88592\"\n\t},\n\t\"iso-8859-5\": {\n\t\tid: \"iso-8859-5\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-5\",\n\t\ticonvLiteDecoderId: \"iso88595\"\n\t},\n\t\"iso-8859-6\": {\n\t\tid: \"iso-8859-6\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-6\",\n\t\ticonvLiteDecoderId: \"iso88596\"\n\t},\n\t\"iso-8859-7\": {\n\t\tid: \"iso-8859-7\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-7\",\n\t\ticonvLiteDecoderId: \"iso88597\"\n\t},\n\t\"iso-8859-8\": {\n\t\tid: \"iso-8859-8\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-8-i\",\n\t\ticonvLiteDecoderId: \"iso88598\"\n\t},\n\t\"iso-8859-9\": {\n\t\tid: \"iso-8859-9\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1254\",\n\t\ticonvLiteDecoderId: \"iso88599\"\n\t},\n\t\"iso-8859-11\": {\n\t\tid: \"iso-8859-11\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: \"windows-874\",\n\t\ticonvLiteDecoderId: \"iso885911\"\n\t},\n\t\"iso-8859-13\": {\n\t\tid: \"iso-8859-13\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-13\",\n\t\ticonvLiteDecoderId: \"iso885913\"\n\t},\n\t\"iso646-cn\": {\n\t\tid: \"iso646-cn\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"iso646cn\"\n\t},\n\t\"iso646-jp\": {\n\t\tid: \"iso646-jp\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"iso646jp\"\n\t},\n\tiso2022_jp_2004: {\n\t\tid: \"iso2022_jp_2004\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tiso2022_jp_ext: {\n\t\tid: \"iso2022_jp_ext\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"iso8859-3\": {\n\t\tid: \"iso8859-3\",\n\t\tgroupId: \"southernEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-3\",\n\t\ticonvLiteDecoderId: \"iso88593\"\n\t},\n\t\"iso8859-4\": {\n\t\tid: \"iso8859-4\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-4\",\n\t\ticonvLiteDecoderId: \"iso88594\"\n\t},\n\t\"iso8859-10\": {\n\t\tid: \"iso8859-10\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-10\",\n\t\ticonvLiteDecoderId: \"iso885910\"\n\t},\n\t\"iso8859-14\": {\n\t\tid: \"iso8859-14\",\n\t\tgroupId: \"celtic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-14\",\n\t\ticonvLiteDecoderId: \"iso885914\"\n\t},\n\t\"iso8859-15\": {\n\t\tid: \"iso8859-15\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-15\",\n\t\ticonvLiteDecoderId: \"iso885915\"\n\t},\n\t\"iso8859-16\": {\n\t\tid: \"iso8859-16\",\n\t\tgroupId: \"southEasternEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-16\",\n\t\ticonvLiteDecoderId: \"iso885916\"\n\t},\n\tjohab: {\n\t\tid: \"johab\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"koi8-r\": {\n\t\tid: \"koi8-r\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"koi8-r\",\n\t\ticonvLiteDecoderId: \"koi8r\"\n\t},\n\t\"koi8-ru\": {\n\t\tid: \"koi8-ru\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: \"koi8-u\",\n\t\ticonvLiteDecoderId: \"koi8ru\"\n\t},\n\t\"koi8-t\": {\n\t\tid: \"koi8-t\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"koi8t\"\n\t},\n\t\"koi8-u\": {\n\t\tid: \"koi8-u\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"koi8-u\",\n\t\ticonvLiteDecoderId: \"koi8u\"\n\t},\n\tkz1048: {\n\t\tid: \"kz1048\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"rk1048\"\n\t},\n\tmaccroatian: {\n\t\tid: \"maccroatian\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"maccroatian\"\n\t},\n\tmaccyrillic: {\n\t\tid: \"maccyrillic\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"x-mac-cyrillic\",\n\t\ticonvLiteDecoderId: \"maccyrillic\"\n\t},\n\tmacgreek: {\n\t\tid: \"macgreek\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macgreek\"\n\t},\n\tmaciceland: {\n\t\tid: \"maciceland\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"maciceland\"\n\t},\n\tmaclatin2: {\n\t\tid: \"maclatin2\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"maccenteuro\"\n\t},\n\tmacroman: {\n\t\tid: \"macroman\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"macintosh\",\n\t\ticonvLiteDecoderId: \"macroman\"\n\t},\n\tmacromania: {\n\t\tid: \"macromania\",\n\t\tgroupId: \"southEasternEuropean\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macromania\"\n\t},\n\tmacthai: {\n\t\tid: \"macthai\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macthai\"\n\t},\n\tmacturkish: {\n\t\tid: \"macturkish\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macturkish\"\n\t},\n\tmacukraine: {\n\t\tid: \"macukraine\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macukraine\"\n\t},\n\tmik: {\n\t\tid: \"mik\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"mik\"\n\t},\n\tptcp154: {\n\t\tid: \"ptcp154\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"pt154\"\n\t},\n\tshift_jis: {\n\t\tid: \"shift_jis\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"shift_jis\",\n\t\ticonvLiteDecoderId: \"shiftjis\"\n\t},\n\ttcvn: {\n\t\tid: \"tcvn\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"tcvn\"\n\t},\n\t\"tis-620\": {\n\t\tid: \"tis-620\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-874\",\n\t\ticonvLiteDecoderId: \"tis620\"\n\t},\n\t\"utf-7\": {\n\t\tid: \"utf-7\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf7\"\n\t},\n\t\"utf-8\": {\n\t\tid: \"utf-8\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-8\",\n\t\ticonvLiteDecoderId: \"utf-8\"\n\t},\n\t\"utf-8-sig\": {\n\t\tid: \"utf-8-sig\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-8\",\n\t\ticonvLiteDecoderId: \"utf-8\"\n\t},\n\t\"utf-16\": {\n\t\tid: \"utf-16\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf16\"\n\t},\n\t\"utf-16-be\": {\n\t\tid: \"utf-16-be\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-16be\",\n\t\ticonvLiteDecoderId: \"utf16be\"\n\t},\n\t\"utf-16-le\": {\n\t\tid: \"utf-16-le\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-16le\",\n\t\ticonvLiteDecoderId: \"utf16le\"\n\t},\n\t\"utf-32\": {\n\t\tid: \"utf-32\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf32\"\n\t},\n\t\"utf-32-be\": {\n\t\tid: \"utf-32-be\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf32be\"\n\t},\n\t\"utf-32-le\": {\n\t\tid: \"utf-32-le\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf32le\"\n\t},\n\tviscii: {\n\t\tid: \"viscii\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"viscii\"\n\t},\n\t\"windows-1250\": {\n\t\tid: \"windows-1250\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1250\",\n\t\ticonvLiteDecoderId: \"windows1250\"\n\t},\n\t\"windows-1251\": {\n\t\tid: \"windows-1251\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1251\",\n\t\ticonvLiteDecoderId: \"windows1251\"\n\t},\n\t\"windows-1252\": {\n\t\tid: \"windows-1252\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1252\",\n\t\ticonvLiteDecoderId: \"windows1252\"\n\t},\n\t\"windows-1253\": {\n\t\tid: \"windows-1253\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1253\",\n\t\ticonvLiteDecoderId: \"windows1253\"\n\t},\n\t\"windows-1254\": {\n\t\tid: \"windows-1254\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1254\",\n\t\ticonvLiteDecoderId: \"windows1254\"\n\t},\n\t\"windows-1255\": {\n\t\tid: \"windows-1255\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1255\",\n\t\ticonvLiteDecoderId: \"windows1255\"\n\t},\n\t\"windows-1256\": {\n\t\tid: \"windows-1256\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1256\",\n\t\ticonvLiteDecoderId: \"windows1256\"\n\t},\n\t\"windows-1257\": {\n\t\tid: \"windows-1257\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1257\",\n\t\ticonvLiteDecoderId: \"windows1257\"\n\t}\n}, Ee = we, M = Te;\nfunction De(e) {\n\treturn Object.hasOwn(M, e);\n}\nfunction Oe(e) {\n\treturn De(e) ? M[e].textDecoderId ?? e : e;\n}\nfunction ke(e = \"en\") {\n\treturn Array.from(Object.values(M), ({ groupId: t, iconvLiteDecoderId: n, id: r, isDetectable: i, textDecoderId: a }) => {\n\t\tlet o = t == null ? \"\" : Ae(t, e);\n\t\treturn {\n\t\t\tid: r,\n\t\t\tgroupLabel: o,\n\t\t\tlabel: o ? `${o} (${r})` : r,\n\t\t\tisDetectable: i,\n\t\t\tisDecodable: a != null,\n\t\t\ttextDecoderId: a,\n\t\t\ticonvLiteDecoderId: n\n\t\t};\n\t}).toSorted((t, n) => t.groupLabel.localeCompare(n.groupLabel, e) || t.id.localeCompare(n.id, e, { numeric: !0 }));\n}\nfunction Ae(e, t) {\n\tlet n = Ee[e].label;\n\treturn n[t] ?? n.en ?? e;\n}\n// src/errors/index.ts\nvar je = 2048, N = \"[REDACTED]\", Me = 10, Ne = /api[-_]?key|authori[sz]ation|cookie|credential|passw(?:or)?d|private[-_]?key|secret|token/i, Pe = [\n\t[/\\b(Bearer|Basic) +[\\w.~+/=-]+/gi, (e, t) => `${t} ${N}`],\n\t[/(?<![\\w-])([\\w-]+)([\"']?[ \\t]*[:=][ \\t]*[\"']?)([^\\s\"'&,;}?#]+)/g, (e, t, n, r) => Ne.test(t) && !/^(?:Basic|Bearer)$/i.test(r) ? `${t}${n}${N}` : e],\n\t[/\\beyJ[\\w-]+\\.[\\w-]+\\.[\\w-]*/g, () => N],\n\t[/\\b(?:sk-|xaat-|xapt-|sl\\.)[\\w-]{16,}/g, () => N],\n\t[/(?<![\\w.+-])[\\w.+-]+@[\\w-]+\\.[\\w.-]+/g, () => N]\n], P = class extends Error {\n\tdata;\n\tlocator;\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, r), this.name = \"DPUseError\", this.data = n, this.locator = t;\n\t}\n}, F = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"AppError\";\n\t}\n}, I = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"APIError\";\n\t}\n}, L = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"EngineError\";\n\t}\n}, Fe = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"ConnectorError\";\n\t}\n}, R = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"FetchError\";\n\t}\n};\nasync function Ie(e, t, n) {\n\tlet r = ` - ${e.statusText}`, i = `${t} Response status '${String(e.status)}${e.statusText ? r : \"\"}' received.`, a;\n\ttry {\n\t\ta = await e.text();\n\t} catch (e) {\n\t\ta = `<body unavailable: ${z(e).message}>`;\n\t}\n\treturn new R(i, n, { body: We(a) });\n}\nfunction Le(e) {\n\treturn e.map((e) => e.message).join(\" \");\n}\nfunction Re(e) {\n\ttry {\n\t\te();\n\t} catch {}\n}\nfunction z(e) {\n\tif (e instanceof Error) return e;\n\tif (typeof e == \"string\") return Error(e);\n\tif (typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"bigint\") return Error(String(e));\n\tif (typeof e == \"symbol\") return Error(e.description ?? \"Unknown error\");\n\tif (typeof e == \"object\") try {\n\t\treturn Error(JSON.stringify(e));\n\t} catch {\n\t\treturn /* @__PURE__ */ Error(\"Unknown error\");\n\t}\n\treturn /* @__PURE__ */ Error(\"Unknown error\");\n}\nfunction ze(e) {\n\tlet t = /* @__PURE__ */ new Set(), n = [], r = z(e);\n\tfor (; r != null && !t.has(r);) {\n\t\tt.add(r);\n\t\tlet [e, i] = Ge(r), a = Ue(e);\n\t\t/(?:\\.{3}|[.!?])$/.test(a.message) || (a.message += \".\"), n.push(a), r = i;\n\t}\n\treturn n;\n}\nfunction Be(e) {\n\tlet t;\n\tfor (let n of e.toReversed()) {\n\t\tlet e = He(n, t);\n\t\tn.stack !== void 0 && (e.stack = n.stack), t = e;\n\t}\n\treturn t ?? /* @__PURE__ */ Error(\"No error to unserialise.\");\n}\nfunction Ve(e) {\n\tlet t;\n\ttry {\n\t\tt = JSON.stringify(e);\n\t} catch {\n\t\tt = typeof e == \"symbol\" ? e.description ?? \"Unknown error\" : typeof e == \"bigint\" ? e.toString() : \"Unknown error\";\n\t}\n\treturn t === \"\" && (t = \"Unknown error\"), t;\n}\nfunction He(e, t) {\n\tswitch (e.name) {\n\t\tcase \"APIError\": return new I(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"AppError\": return new F(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"ConnectorError\": return new Fe(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"EngineError\": return new L(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"FetchError\": return new R(e.message, e.locator, e.data, { cause: t });\n\t\tdefault: {\n\t\t\tlet n = e.name;\n\t\t\treturn new class extends Error {\n\t\t\t\tname = n;\n\t\t\t}(e.message, { cause: t });\n\t\t}\n\t}\n}\nfunction Ue(e) {\n\tlet { data: t, message: n, stack: r } = e;\n\treturn {\n\t\t...e,\n\t\tdata: t === void 0 ? void 0 : V(t, /* @__PURE__ */ new WeakSet(), 0),\n\t\tmessage: B(n),\n\t\tstack: r === void 0 ? void 0 : B(r)\n\t};\n}\nfunction B(e) {\n\tlet t = e;\n\tfor (let [e, n] of Pe) t = t.replaceAll(e, (e, ...t) => n(e, ...t));\n\treturn t;\n}\nfunction V(e, t, n) {\n\treturn typeof e == \"string\" ? B(e) : typeof e != \"object\" || !e ? e : n >= Me ? N : t.has(e) ? \"[Circular]\" : (t.add(e), Array.isArray(e) ? e.map((e) => V(e, t, n + 1)) : Object.fromEntries(Object.entries(e).map(([e, r]) => [e, r != null && Ne.test(e) ? N : V(r, t, n + 1)])));\n}\nfunction We(e) {\n\tif (e != null && e !== \"\") return e.length > je ? `${e.slice(0, je)}... [truncated]` : e;\n}\nfunction Ge(e) {\n\tlet t = e.cause == null ? null : z(e.cause);\n\tif (e instanceof P) return [{\n\t\tdata: e.data,\n\t\tlocator: e.locator,\n\t\tmessage: e.message,\n\t\tname: e.name,\n\t\tstack: e.stack\n\t}, t];\n\tlet n = Object.fromEntries(Object.entries(e).filter(([e]) => e !== \"cause\"));\n\treturn e.name ? [{\n\t\tdata: n,\n\t\tlocator: \"\",\n\t\tmessage: e.message,\n\t\tname: e.name,\n\t\tstack: e.stack\n\t}, t] : [{\n\t\tdata: n,\n\t\tlocator: \"\",\n\t\tmessage: Ve(e),\n\t\tname: \"Error\",\n\t\tstack: void 0\n\t}, null];\n}\nvar Ke = /* @__PURE__ */ C({ dataFormatIds: /* @__PURE__ */ te(/* @__PURE__ */ h(D([\n\t\"arrow\",\n\t\"avro\",\n\t\"dtv\",\n\t\"json\",\n\t\"jsonl\",\n\t\"markdown\",\n\t\"ods\",\n\t\"parquet\",\n\t\"sav\",\n\t\"sqlite\",\n\t\"xlsx\",\n\t\"xml\"\n])), /* @__PURE__ */ f(1)) }), qe = /* @__PURE__ */ h(/* @__PURE__ */ w()), Je = /* @__PURE__ */ C({\n\t...j,\n\ttypeId: /* @__PURE__ */ _(\"tool\"),\n\tactionNames: /* @__PURE__ */ x(qe),\n\tparser: /* @__PURE__ */ x(Ke)\n});\n// src/component/module/tool/delimitedText.ts\nasync function Ye(e, t, n) {\n\tlet r = Xe(e), { issues: i, parsedRecords: a, valueDelimiterId: o } = await Ze(e, t.valueDelimiterIds, t.isComplete, n);\n\treturn {\n\t\tissues: i,\n\t\tparsedRecords: a,\n\t\trecordDelimiterId: r,\n\t\tvalueDelimiterId: o\n\t};\n}\nfunction Xe(e) {\n\tlet t = (e.match(/\\r\\n/g) ?? []).length, n = (e.match(/(?<!\\r)\\n/g) ?? []).length, r = (e.match(/\\r(?!\\n)/g) ?? []).length;\n\treturn t >= n && t >= r ? \"\\r\\n\" : n >= t && n >= r ? \"\\n\" : r >= t && r >= n ? \"\\r\" : \"\\n\";\n}\nasync function Ze(e, t, n, r) {\n\tlet i, a, o, s = [], c, l = !1;\n\tfor (let u of t) {\n\t\tlet { issues: t, records: d } = await r(e, u, n);\n\t\tif (t.length > 0) {\n\t\t\tc = Qe(c, {\n\t\t\t\tdelimiter: u,\n\t\t\t\tissues: t,\n\t\t\t\trecords: d\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (l = !0, d.length === 0) continue;\n\t\tlet { averageValueCount: f, sumOfValueCountDiffs: p } = $e(d);\n\t\t(a === void 0 || a <= 1 || p <= (o ?? 0)) && (a === void 0 || f > a) && (i = u, a = f, o = p, s = d);\n\t}\n\tif (!l && c != null) {\n\t\tlet { delimiter: e, issues: t, records: n } = c;\n\t\treturn {\n\t\t\tissues: t,\n\t\t\tparsedRecords: n,\n\t\t\tvalueDelimiterId: H(n) ? e : void 0\n\t\t};\n\t}\n\treturn {\n\t\tissues: [],\n\t\tparsedRecords: s,\n\t\tvalueDelimiterId: i != null && H(s) ? i : void 0\n\t};\n}\nfunction Qe(e, t) {\n\treturn e == null || t.issues.length < e.issues.length ? t : e;\n}\nfunction $e(e) {\n\tlet t = 0, n = 0, r;\n\tfor (let i of e) r != null && (n += Math.abs(i.length - r)), r = i.length, t += i.length;\n\treturn {\n\t\taverageValueCount: t / e.length,\n\t\tsumOfValueCountDiffs: n\n\t};\n}\nfunction H(e) {\n\tlet t = /* @__PURE__ */ new Map();\n\tfor (let n of e) t.set(n.length, (t.get(n.length) ?? 0) + 1);\n\tlet [n = 0, r = 0] = [...t].toSorted((e, t) => t[1] - e[1])[0] ?? [];\n\treturn n > 1 && r * 2 > e.length;\n}\n// src/component/module/tool/index.ts\nvar et = \"https://engine-eu.dpuse.app/tools\", tt = { dtv: \"dpuse-tool-rust-csv-core-parser\" }, U = \"dpuse-tool-\";\nfunction W(e, t) {\n\treturn e.filter((e) => e.parser?.dataFormatIds.some((e) => e === t) === !0).toSorted((e, t) => e.id.localeCompare(t.id, \"en\"));\n}\nfunction G(e, t, n) {\n\tlet r = W(e, t), [i] = r;\n\tif (i === void 0) {\n\t\tlet n = {\n\t\t\tavailableToolIds: e.map((e) => e.id),\n\t\t\tdataFormatId: t\n\t\t};\n\t\tthrow new F(`No tool reads the '${t}' data format.`, \"dpuse-shared.component.module.tool.resolveParserToolConfig\", n);\n\t}\n\tlet a = tt[t];\n\treturn r.find((e) => e.id === n) ?? r.find((e) => e.id === a) ?? i;\n}\nasync function K(e, t) {\n\tlet n = `${U}${t}`, r = e.find((e) => e.id === n);\n\tif (!r) {\n\t\tlet r = {\n\t\t\tavailableToolIds: e.map((e) => e.id),\n\t\t\ttoolName: n\n\t\t};\n\t\tthrow new F(`Tool '${t}' not found.`, \"dpuse-shared.component.module.tool.loadTool\", r);\n\t}\n\tlet i = `${et}/${t}_v${r.version}/${n}.es.js`;\n\ttry {\n\t\treturn new (await (import(\n\t\t\t/* @vite-ignore */\n\t\t\ti\n))).Tool();\n\t} catch (e) {\n\t\tlet t = {\n\t\t\ttoolName: n,\n\t\t\turl: i,\n\t\t\tversion: r.version\n\t\t};\n\t\tthrow new F(`Failed to load tool '${n}' v${r.version}.`, \"dpuse-shared.component.module.tool.loadTool\", t, { cause: e });\n\t}\n}\n// src/component/module/connector/objectParsing.ts\nvar nt = \"\\n\", q = \",\", rt = 13, J = 10, it = 34, Y = 1048576;\nasync function at(e) {\n\tlet { asAt: t, declaredColumnConfigs: n, declaredReadingConfig: r, filePreview: i, inferDataTypes: a, readingChoiceConfig: o, startedAt: s, toolConfigs: c } = e, { isComplete: l, text: u } = i, d = r != null, f = i.bytes.length, p = {\n\t\tdecodedEncodingId: i.decodedEncodingId,\n\t\treplacementCharacterCount: i.replacementCharacterCount\n\t}, m = i.encodingCandidates, h = {\n\t\tencodingConfidenceLevel: i.encodingConfidenceLevel,\n\t\tencodingId: r?.encodingId ?? i.encodingId,\n\t\tencodingSourceId: r?.encodingId == null ? i.encodingSourceId : void 0\n\t};\n\tif (f === 0) return {\n\t\tcontentAuditConfig: lt({\n\t\t\tasAt: t,\n\t\t\tcolumns: [],\n\t\t\tisComplete: !0,\n\t\t\trecordCount: 0,\n\t\t\tsize: f,\n\t\t\tstartedAt: s\n\t\t}),\n\t\tsampleConfig: {\n\t\t\t...p,\n\t\t\tissues: [{\n\t\t\t\tendLineNumber: void 0,\n\t\t\t\tfieldNumber: void 0,\n\t\t\t\tid: \"empty\",\n\t\t\t\tlineNumber: void 0,\n\t\t\t\tmessage: \"The file is empty.\",\n\t\t\t\trecordNumber: void 0,\n\t\t\t\tseverityId: \"info\",\n\t\t\t\tvalue: void 0\n\t\t\t}],\n\t\t\tdataFormatId: \"dtv\",\n\t\t\thasHeaders: !1,\n\t\t\tparsedRecords: [],\n\t\t\tparserId: void 0,\n\t\t\trecordDelimiterId: nt,\n\t\t\tsize: 0,\n\t\t\ttext: void 0,\n\t\t\tvalueDelimiterId: q\n\t\t},\n\t\treadingConfig: {\n\t\t\tdataFormatId: \"dtv\",\n\t\t\tdataFormatSourceId: void 0,\n\t\t\t...h,\n\t\t\tfileType: void 0,\n\t\t\thasHeaders: !1,\n\t\t\tisDeclared: d,\n\t\t\tparserId: void 0,\n\t\t\trecordDelimiterId: nt,\n\t\t\tvalueDelimiterId: q\n\t\t},\n\t\tencodingCandidates: m\n\t};\n\tlet g = r?.dataFormatId ?? i.dataFormatId, _ = r?.valueDelimiterId, v = await pt({\n\t\tdataFormatId: g,\n\t\tisComplete: l,\n\t\tparserId: void 0,\n\t\ttext: u,\n\t\ttoolConfigs: c,\n\t\tvalueDelimiterId: _\n\t}), y = o?.dataFormatId ?? g, b = o?.dataFormatId != null || o?.parserId != null || o?.valueDelimiterId != null, x = b ? await pt({\n\t\tdataFormatId: y,\n\t\tisComplete: l,\n\t\tparserId: o.parserId,\n\t\ttext: u,\n\t\ttoolConfigs: c,\n\t\tvalueDelimiterId: _ ?? o.valueDelimiterId\n\t}) : v, S = x?.parseTextResult.parsedRecords ?? [], C = x == null ? void 0 : a(S, r?.hasHeaders, n), w = b && v != null ? a(v.parseTextResult.parsedRecords, r?.hasHeaders, n) : C;\n\treturn {\n\t\tcontentAuditConfig: lt({\n\t\t\tasAt: t,\n\t\t\tcolumns: C?.columnConfigs ?? [],\n\t\t\tisComplete: l,\n\t\t\trecordCount: Math.max(0, S.length - +(C?.hasHeaders === !0)),\n\t\t\tsize: f,\n\t\t\tstartedAt: s\n\t\t}),\n\t\tsampleConfig: {\n\t\t\t...p,\n\t\t\tdataFormatId: y ?? \"unknown\",\n\t\t\thasHeaders: C?.hasHeaders,\n\t\t\tissues: x?.parseTextResult.issues ?? [],\n\t\t\tparsedRecords: S,\n\t\t\tparserId: x?.parserId,\n\t\t\trecordDelimiterId: x?.parseTextResult.recordDelimiterId,\n\t\t\tsize: f,\n\t\t\ttext: u,\n\t\t\tvalueDelimiterId: x?.valueDelimiterId\n\t\t},\n\t\treadingConfig: {\n\t\t\tdataFormatId: g ?? \"unknown\",\n\t\t\tdataFormatSourceId: r == null ? i.dataFormatSourceId : void 0,\n\t\t\t...h,\n\t\t\tfileType: i.fileTypeConfig,\n\t\t\thasHeaders: w?.hasHeaders,\n\t\t\tisDeclared: d,\n\t\t\tparserId: v?.parserId,\n\t\t\trecordDelimiterId: v?.parseTextResult.recordDelimiterId,\n\t\t\tvalueDelimiterId: v?.valueDelimiterId\n\t\t},\n\t\tencodingCandidates: m\n\t};\n}\nasync function* ot(e) {\n\tlet { options: t, signal: n, stream: r, toolConfigs: i } = e, { encodingId: a, valueDelimiterId: o } = ct(t), { parser: s } = await X(i, t.dataFormatId, t.parserId), { recordCount: c } = yield* s.parseStream(r, {\n\t\tabortSignal: n,\n\t\tchunkSize: t.chunkSize,\n\t\tdataFormatId: t.dataFormatId,\n\t\tencodingId: a,\n\t\tvalueDelimiterId: o\n\t});\n\treturn { recordCount: c };\n}\nasync function st(e) {\n\tlet { constructColumnAuditor: t, declaredColumnConfigs: n, onProgress: r, options: i, signal: a, stream: o, toolConfigs: s } = e, { encodingId: c, valueDelimiterId: l } = ct(i), u = Date.now(), d = performance.now(), f = t(i.hasHeaders, n), { parser: p } = await X(s, i.dataFormatId, i.parserId), m = ft(o), h = ut(m.stream, {\n\t\tbyteLimit: i.byteLimit,\n\t\tencodingId: c,\n\t\tstopSignal: i.stopSignal\n\t}), g = p.parseStream(h.stream, {\n\t\tabortSignal: a,\n\t\tchunkSize: i.chunkSize,\n\t\tdataFormatId: i.dataFormatId,\n\t\tencodingId: c,\n\t\tvalueDelimiterId: l\n\t}), _ = await g.next();\n\tfor (; _.done !== !0;) {\n\t\ttry {\n\t\t\tf.auditRecords(_.value.records), r(_.value.records.length, h.byteCount());\n\t\t} catch (e) {\n\t\t\tthrow await g.throw(e), e;\n\t\t}\n\t\t_ = await g.next();\n\t}\n\tlet v = _.value, { columnConfigs: y, hasHeaders: b } = f.completeAudit();\n\treturn {\n\t\tcontentAuditConfig: {\n\t\t\tasAt: u,\n\t\t\tbyteCount: h.byteCount(),\n\t\t\tcolumns: y,\n\t\t\tcommentLineCount: v.commentLineCount,\n\t\t\tduration: performance.now() - d,\n\t\t\temptyLineCount: v.emptyLineCount,\n\t\t\tinvalidFieldLengthCount: v.nonUniformRecordCount,\n\t\t\tisComplete: h.isComplete(),\n\t\t\tlineCount: v.lineCount,\n\t\t\trecordCount: Math.max(0, v.recordCount - +!!b),\n\t\t\tsourceWaitDuration: m.waitDuration()\n\t\t},\n\t\thasHeaders: b\n\t};\n}\nfunction ct(e) {\n\tif (e.encodingId == null || e.valueDelimiterId == null) throw Error(`'${e.path}' has no encoding or value delimiter, which a parser needs to read it.`);\n\treturn {\n\t\tencodingId: e.encodingId,\n\t\tvalueDelimiterId: e.valueDelimiterId\n\t};\n}\nfunction lt(e) {\n\tlet { asAt: t, columns: n, isComplete: r, recordCount: i, size: a, startedAt: o } = e;\n\treturn {\n\t\tasAt: t,\n\t\tbyteCount: a,\n\t\tcolumns: n,\n\t\tcommentLineCount: void 0,\n\t\tduration: performance.now() - o,\n\t\temptyLineCount: void 0,\n\t\tinvalidFieldLengthCount: void 0,\n\t\tisComplete: r,\n\t\tlineCount: void 0,\n\t\trecordCount: i,\n\t\tsourceWaitDuration: void 0\n\t};\n}\nfunction ut(e, t) {\n\tlet n = e.getReader(), r = dt(t.encodingId), i = 0, a = !1, o;\n\treturn {\n\t\tbyteCount: () => i,\n\t\tisComplete: () => a,\n\t\tstream: new ReadableStream({\n\t\t\tasync pull(e) {\n\t\t\t\tlet s = o;\n\t\t\t\tif (s == null) {\n\t\t\t\t\tlet t = await n.read();\n\t\t\t\t\tif (t.done) {\n\t\t\t\t\t\ta = !0, e.close();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ts = t.value;\n\t\t\t\t}\n\t\t\t\tlet c = s.subarray(0, Y);\n\t\t\t\to = s.length > Y ? s.subarray(Y) : void 0;\n\t\t\t\tlet l = t.stopSignal?.aborted === !0 ? i : t.byteLimit ?? Infinity, u = r(c, i, l - i);\n\t\t\t\tu == null ? (i += c.length, e.enqueue(c)) : (i += u, o = void 0, e.enqueue(c.subarray(0, u)), e.close(), await n.cancel());\n\t\t\t},\n\t\t\tcancel(e) {\n\t\t\t\treturn n.cancel(e);\n\t\t\t}\n\t\t}, { highWaterMark: 0 })\n\t};\n}\nfunction dt(e) {\n\tlet t = Oe(e), n = t.startsWith(\"utf-16\"), r = n ? 2 : 1, i = +(t === \"utf-16be\"), a = !1;\n\treturn (e, t, o) => {\n\t\tfor (let s = 0; s < e.length; s++) {\n\t\t\tlet c = e[s];\n\t\t\tif ((c === it || c === J || c === rt) && (!n || (t + s) % 2 === i && e[s + 1 - 2 * i] === 0)) {\n\t\t\t\tif (c === it) a = !a;\n\t\t\t\telse if (!a && s >= o && (c === J || e[s + r] !== J)) return s + r - i;\n\t\t\t}\n\t\t}\n\t};\n}\nfunction ft(e) {\n\tlet t = e.getReader(), n = 0;\n\treturn {\n\t\tstream: new ReadableStream({\n\t\t\tasync pull(e) {\n\t\t\t\tlet r = performance.now(), i = await t.read();\n\t\t\t\tn += performance.now() - r, i.done ? e.close() : e.enqueue(i.value);\n\t\t\t},\n\t\t\tcancel(e) {\n\t\t\t\treturn t.cancel(e);\n\t\t\t}\n\t\t}, { highWaterMark: 0 }),\n\t\twaitDuration: () => n\n\t};\n}\nasync function pt(e) {\n\tlet { dataFormatId: t, isComplete: n, parserId: r, text: i, toolConfigs: a, valueDelimiterId: o } = e;\n\tif (t == null || i == null || W(a, t).length === 0) return;\n\tlet { parser: s, parserId: c } = await X(a, t, r), l = o == null ? A.map(({ id: e }) => e) : [o], u = await s.parseText(i, {\n\t\tdataFormatId: t,\n\t\tisComplete: n,\n\t\tvalueDelimiterIds: l\n\t}), d = t === \"dtv\", f = d && o == null && u.valueDelimiterId == null ? await s.parseText(i, {\n\t\tdataFormatId: t,\n\t\tisComplete: n,\n\t\tvalueDelimiterIds: [q]\n\t}) : u;\n\treturn {\n\t\tparserId: c,\n\t\tparseTextResult: f,\n\t\tvalueDelimiterId: d ? o ?? f.valueDelimiterId ?? q : f.valueDelimiterId\n\t};\n}\nasync function X(e, t, n) {\n\tlet r = G(e, t, n);\n\treturn {\n\t\tparser: await K(e, r.id.slice(U.length)),\n\t\tparserId: r.id\n\t};\n}\n// src/component/module/connector/storePath.ts\nvar mt = /^[\\w-]+$/u;\nfunction ht(e) {\n\tif (!e.startsWith(\"/\")) return {\n\t\tdatabaseName: void 0,\n\t\ttableName: e\n\t};\n\tlet [, t, n, ...r] = e.split(\"/\");\n\tif (t == null || n == null || n === \"\" || r.length > 0 || !mt.test(t)) throw Error(`Encountered invalid store path '${e}'.`);\n\treturn {\n\t\tdatabaseName: t,\n\t\ttableName: n\n\t};\n}\n// src/component/module/connector/storeValues.ts\nfunction gt(e) {\n\treturn e.map((e) => ({\n\t\tvalue: _t(e),\n\t\tvalueWasQuoted: !1\n\t}));\n}\nfunction _t(e) {\n\treturn e == null ? null : e instanceof Date ? e.toISOString() : String(e);\n}\n// src/component/module/connector/webLock.ts\nasync function vt(e) {\n\tlet t = Promise.withResolvers(), n = navigator.locks.request(e, { ifAvailable: !0 }, (e) => {\n\t\tif (e == null) t.resolve(void 0);\n\t\telse return new Promise((e) => {\n\t\t\tt.resolve(e);\n\t\t});\n\t}), r = (async () => {\n\t\tawait n;\n\t})();\n\treturn await Promise.race([t.promise, r]);\n}\nvar yt = /* @__PURE__ */ v({ fields: /* @__PURE__ */ h(/* @__PURE__ */ v({\n\tformat: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\tname: /* @__PURE__ */ w(),\n\ttitle: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\ttype: /* @__PURE__ */ x(/* @__PURE__ */ w())\n})) }), bt = /* @__PURE__ */ v({\n\tdelimiter: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\theader: /* @__PURE__ */ x(/* @__PURE__ */ g()),\n\theaderRows: /* @__PURE__ */ x(/* @__PURE__ */ h(/* @__PURE__ */ b()))\n}), xt = {\n\tboolean: {\n\t\tdataSubtypeId: void 0,\n\t\tdataTypeId: \"boolean\"\n\t},\n\tdate: {\n\t\tdataSubtypeId: \"date\",\n\t\tdataTypeId: \"temporal\"\n\t},\n\tdatetime: {\n\t\tdataSubtypeId: \"dateTime\",\n\t\tdataTypeId: \"temporal\"\n\t},\n\tinteger: {\n\t\tdataSubtypeId: \"integer\",\n\t\tdataTypeId: \"numeric\"\n\t},\n\tnumber: {\n\t\tdataSubtypeId: \"decimal\",\n\t\tdataTypeId: \"numeric\"\n\t},\n\tstring: {\n\t\tdataSubtypeId: \"plain\",\n\t\tdataTypeId: \"string\"\n\t},\n\ttime: {\n\t\tdataSubtypeId: \"time\",\n\t\tdataTypeId: \"temporal\"\n\t},\n\tyear: {\n\t\tdataSubtypeId: \"integer\",\n\t\tdataTypeId: \"numeric\"\n\t}\n}, St = {\n\temail: \"email\",\n\turi: \"url\",\n\tuuid: \"uuid\"\n};\nfunction Ct(e) {\n\tlet t = /* @__PURE__ */ ne(yt, e.schema);\n\tif (!t.success) throw new F(\"The table schema is not valid.\", \"dpuse-shared.component.module.connector.tableSchema.readTableSchema\");\n\tlet n = /* @__PURE__ */ ne(bt, e.dialect ?? {});\n\tif (!n.success) throw new F(\"The table dialect is not valid.\", \"dpuse-shared.component.module.connector.tableSchema.readTableSchema\");\n\tlet r = t.output.fields.map((e) => {\n\t\tlet t = wt(e.type, e.format);\n\t\treturn {\n\t\t\tname: e.name,\n\t\t\tlabel: e.title,\n\t\t\tdataTypeId: t.dataTypeId,\n\t\t\tdataSubtypeId: t.dataSubtypeId\n\t\t};\n\t}), { delimiter: i = \",\", header: a = !0, headerRows: o = [1] } = n.output;\n\treturn {\n\t\tdeclaredColumnConfigs: r,\n\t\tdeclaredReadingConfig: {\n\t\t\tdataFormatId: \"dtv\",\n\t\t\tencodingId: e.encoding?.toLowerCase(),\n\t\t\thasHeaders: a && o.length > 0,\n\t\t\tvalueDelimiterId: A.find(({ character: e }) => e === i)?.id\n\t\t}\n\t};\n}\nfunction wt(e, t) {\n\tlet n = e == null ? void 0 : xt[e];\n\treturn n == null ? {\n\t\tdataSubtypeId: void 0,\n\t\tdataTypeId: void 0\n\t} : t == null || n.dataTypeId !== \"string\" ? n : {\n\t\tdataSubtypeId: St[t] ?? \"plain\",\n\t\tdataTypeId: \"string\"\n\t};\n}\n// src/component/module/connector/index.ts\nvar Tt = [\n\t{\n\t\tid: \"application\",\n\t\tlabel: {\n\t\t\ten: \"Application\",\n\t\t\tes: \"Aplicación\"\n\t\t}\n\t},\n\t{\n\t\tid: \"curatedDataset\",\n\t\tlabel: {\n\t\t\ten: \"Curated Dataset\",\n\t\t\tes: \"Conjunto de Datos Curado\"\n\t\t}\n\t},\n\t{\n\t\tid: \"database\",\n\t\tlabel: {\n\t\t\ten: \"Database\",\n\t\t\tes: \"Base de Datos\"\n\t\t}\n\t},\n\t{\n\t\tid: \"fileStore\",\n\t\tlabel: {\n\t\t\ten: \"File Store\",\n\t\t\tes: \"Almacén de Archivos\"\n\t\t}\n\t}\n], Et = [\n\t{\n\t\tid: \"apiEndpoint\",\n\t\tlabel: {\n\t\t\ten: \"API Endpoint\",\n\t\t\tes: \"Endpoint de API\"\n\t\t}\n\t},\n\t{\n\t\tid: \"file\",\n\t\tlabel: {\n\t\t\ten: \"File\",\n\t\t\tes: \"Archivo\"\n\t\t}\n\t},\n\t{\n\t\tid: \"table\",\n\t\tlabel: {\n\t\t\ten: \"Table\",\n\t\t\tes: \"Tabla\"\n\t\t}\n\t}\n], Dt = {\n\tauditObjectContent: \"Audit Object Content\",\n\tcloseStore: \"Close Store\",\n\tcreateObject: \"Create Object\",\n\tdescribeConnection: \"Describe Connection\",\n\tdropObject: \"Drop Object\",\n\tfindObject: \"Find Object\",\n\tgetInfo: \"Get Info\",\n\tgetReadableStream: \"Get Readable Stream\",\n\tgetRecord: \"Get Record\",\n\tlistNodes: \"List Nodes\",\n\tloadObjectRecords: \"Load Object Records\",\n\topenStore: \"Open Store\",\n\tpreviewObject: \"Preview Object\",\n\tqueryRecords: \"Query Records\",\n\tremoveRecords: \"Remove Records\",\n\tretrieveRecords: \"Retrieve Records\",\n\tupsertRecords: \"Upsert Records\"\n}, Ot = [\n\t{\n\t\tid: \"bidirectional\",\n\t\tlabel: {\n\t\t\ten: \"Bidirectional\",\n\t\t\tes: \"Bidireccional\"\n\t\t}\n\t},\n\t{\n\t\tid: \"destination\",\n\t\tlabel: {\n\t\t\ten: \"Destination\",\n\t\t\tes: \"Destino\"\n\t\t}\n\t},\n\t{\n\t\tid: \"source\",\n\t\tlabel: {\n\t\t\ten: \"Source\",\n\t\t\tes: \"Origen\"\n\t\t}\n\t},\n\t{\n\t\tid: \"unknown\",\n\t\tlabel: {\n\t\t\ten: \"Unknown\",\n\t\t\tes: \"Desconocido\"\n\t\t}\n\t}\n], kt = /* @__PURE__ */ new Set([\n\t\"createObject\",\n\t\"dropObject\",\n\t\"loadObjectRecords\",\n\t\"removeRecords\",\n\t\"upsertRecords\"\n]), At = /* @__PURE__ */ new Set([\n\t\"auditObjectContent\",\n\t\"findObject\",\n\t\"getInfo\",\n\t\"getReadableStream\",\n\t\"getRecord\",\n\t\"listNodes\",\n\t\"previewObject\",\n\t\"queryRecords\",\n\t\"retrieveRecords\"\n]);\nfunction jt(e) {\n\tlet t = !1, n = !1;\n\tfor (let r of e) At.has(r) && (t = !0), kt.has(r) && (n = !0);\n\treturn t && n ? \"bidirectional\" : t ? \"source\" : n ? \"destination\" : \"unknown\";\n}\nvar Mt = (e, t = \"en\") => {\n\tlet i = Tt.find((t) => t.id === e);\n\treturn i ? {\n\t\tlabel: r(n(i.label), t) ?? i.id,\n\t\tdescription: \"\"\n\t} : {\n\t\tlabel: e,\n\t\tdescription: \"\"\n\t};\n}, Nt = (e, t = \"en\") => {\n\tlet i = Et.find((t) => t.id === e);\n\treturn i ? {\n\t\tlabel: r(n(i.label), t) ?? i.id,\n\t\tdescription: \"\"\n\t} : {\n\t\tlabel: e,\n\t\tdescription: \"\"\n\t};\n}, Pt = (e, t = \"en\") => {\n\tlet i = Ot.find((t) => t.id === e);\n\treturn i ? {\n\t\tlabel: r(n(i.label), t) ?? i.id,\n\t\tdescription: \"\"\n\t} : {\n\t\tlabel: e,\n\t\tdescription: \"\"\n\t};\n};\nfunction Ft(e) {\n\tlet t = new Set(e), n = \"|Action|Supported|\\n\";\n\tn += \"|:----|:-------:|\\n\";\n\tfor (let e of Object.keys(Dt)) n += `| ${Dt[e]} | ${t.has(e) ? \"✓\" : \"\"} |\\n`;\n\treturn n;\n}\n// src/component/module/cookbook/cookbookConfig.schema.ts\nvar It = D([\"list\"]), Lt = /* @__PURE__ */ C({\n\t...j,\n\ttypeId: /* @__PURE__ */ _(\"cookbook\"),\n\tactionNames: /* @__PURE__ */ h(It),\n\trecipes: /* @__PURE__ */ h(k)\n});\n// src/component/module/engine/index.ts\nfunction Rt(e) {\n\treturn e.signal ?? new AbortController().signal;\n}\n// src/component/module/presenter/presenterConfig.schema.ts\nvar zt = D([\n\t\"list\",\n\t\"render\",\n\t\"setColorMode\"\n]), Bt = /* @__PURE__ */ C({\n\t...j,\n\ttypeId: /* @__PURE__ */ _(\"presenter\"),\n\tactionNames: /* @__PURE__ */ h(zt),\n\tpresentations: /* @__PURE__ */ h(k)\n}), Vt = \"https://engine-eu.dpuse.app/presenters\";\nasync function Ht(e, t, n, r) {\n\tlet i = e.id, a = `${Vt}/${i.split(\"-\").slice(2).join(\"-\")}_v${e.version}/${i}.es.js`;\n\ttry {\n\t\treturn new (await (import(\n\t\t\t/* @vite-ignore */\n\t\t\ta\n))).Presenter(t, n, r);\n\t} catch (t) {\n\t\tlet n = {\n\t\t\tpresenterName: i,\n\t\t\turl: a,\n\t\t\tversion: e.version\n\t\t};\n\t\tthrow new F(`Failed to load presenter '${i}' v${e.version}.`, \"dpuse-shared.component.module.presenter.loadPresenter\", n, { cause: t });\n\t}\n}\n// src/locale/index.ts\nfunction Ut(e, t) {\n\treturn {\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.description.en ?? \"\",\n\t\tverb: e.verb?.[t] ?? void 0\n\t};\n}\nfunction Wt(e, t, n = !1) {\n\tlet r = e.map((e) => ({\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.description.en ?? \"\",\n\t\tverb: e.verb?.[t] ?? void 0\n\t}));\n\treturn n ? r.toSorted((e, t) => e.label.localeCompare(t.label) || e.id.localeCompare(t.id)) : r;\n}\nfunction Gt(e, t) {\n\treturn {\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.description.en ?? \"\"\n\t};\n}\n// src/utilities/index.ts\nvar Kt = /* @__PURE__ */ new Map([\n\t[\"arrow\", \"application/vnd.apache.arrow.file\"],\n\t[\"avro\", \"application/vnd.apache.avro\"],\n\t[\"bin\", \"application/octet-stream\"],\n\t[\"cfb\", \"application/x-cfb\"],\n\t[\"csv\", \"text/csv\"],\n\t[\"dat\", \"application/octet-stream\"],\n\t[\"json\", \"application/json\"],\n\t[\"jsonl\", \"application/jsonl\"],\n\t[\"md\", \"text/markdown\"],\n\t[\"ods\", \"application/vnd.oasis.opendocument.spreadsheet\"],\n\t[\"parquet\", \"application/vnd.apache.parquet\"],\n\t[\"sav\", \"application/x-spss-sav\"],\n\t[\"sqlite\", \"application/vnd.sqlite3\"],\n\t[\"tab\", \"text/tab-separated-values\"],\n\t[\"tsv\", \"text/tab-separated-values\"],\n\t[\"txt\", \"text/plain\"],\n\t[\"xls\", \"application/vnd.ms-excel\"],\n\t[\"xlsm\", \"application/vnd.ms-excel.sheet.macroEnabled.12\"],\n\t[\"xlsx\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n\t[\"xml\", \"application/xml\"]\n]), Z = \"en\", Q = [\n\t[\"day\", 864e5],\n\t[\"hour\", 36e5],\n\t[\"minute\", 6e4],\n\t[\"second\", 1e3],\n\t[\"millisecond\", 1]\n], qt = [\n\t[\"byte\", 1],\n\t[\"kilobyte\", 1024],\n\t[\"megabyte\", 1048576],\n\t[\"gigabyte\", 1073741824],\n\t[\"terabyte\", 1099511627776]\n], Jt = /* @__PURE__ */ new Map(), Yt = /* @__PURE__ */ new Map();\nfunction Xt(e, t = 2, n = t, r = Z) {\n\treturn e == null ? \"\" : $(r, {\n\t\tlocaleMatcher: \"best fit\",\n\t\tmaximumFractionDigits: t,\n\t\tminimumFractionDigits: Math.min(n, t),\n\t\tminimumIntegerDigits: 1,\n\t\tstyle: \"decimal\",\n\t\tuseGrouping: !0\n\t}).format(e);\n}\nfunction Zt(e, t = Z) {\n\treturn Xt(e, 0, 0, t);\n}\nfunction Qt(e, t = 1, n = Z) {\n\treturn e == null || !Number.isFinite(e) ? \"\" : $(n, {\n\t\tmaximumFractionDigits: t,\n\t\tnotation: \"compact\"\n\t}).format(e);\n}\nfunction $t(e, t = 1, n = Z) {\n\tif (e == null || !Number.isFinite(e)) return \"\";\n\tlet [r, i] = qt.find(([, n]) => ln(Math.abs(e) / n, n === 1 ? 0 : t) < 1024) ?? [\"terabyte\", 1099511627776];\n\treturn $(n, {\n\t\tmaximumFractionDigits: i === 1 ? 0 : t,\n\t\tstyle: \"unit\",\n\t\tunit: r,\n\t\tunitDisplay: i === 1 ? \"long\" : \"short\"\n\t}).format(e / i);\n}\nfunction en(e, t = \"millisecond\", n = Z) {\n\tif (e == null || !Number.isFinite(e)) return \"\";\n\tlet r = Math.round(Math.abs(e)), i = Q.findIndex(([, e]) => r >= e), a = i === -1 ? Q.length - 1 : i, o = Q.findIndex(([e]) => e === t), s = Q.slice(a, Math.max(o, a) + 1), c = [];\n\tfor (let [t, i] of s) {\n\t\tlet a = Math.floor(r / i);\n\t\tif (a === 0 && c.length > 0) continue;\n\t\tr -= a * i;\n\t\tlet o = c.length === 0 && e < 0 && a > 0 ? -a : a;\n\t\tc.push($(n, {\n\t\t\tstyle: \"unit\",\n\t\t\tunit: t,\n\t\t\tunitDisplay: \"short\"\n\t\t}).format(o));\n\t}\n\treturn cn(n).format(c);\n}\nfunction tn(e) {\n\tif (!e) return;\n\tlet t = sn(e);\n\treturn t === void 0 ? e : e.slice(0, t);\n}\nfunction nn(e) {\n\tif (!e) return;\n\tlet t = sn(e);\n\treturn t === void 0 ? void 0 : e.slice(t + 1);\n}\nfunction rn(e) {\n\treturn e != null && Kt.has(e.toLowerCase());\n}\nfunction an(e) {\n\treturn (e == null ? void 0 : Kt.get(e.toLowerCase())) ?? \"application/octet-stream\";\n}\nfunction on(e) {\n\tswitch (e) {\n\t\tcase \"Edm.Boolean\": return \"boolean\";\n\t\tcase \"Edm.Byte\":\n\t\tcase \"Edm.Int16\":\n\t\tcase \"Edm.Int32\":\n\t\tcase \"Edm.Int64\":\n\t\tcase \"Edm.SByte\": return \"wholeNumber\";\n\t\tcase \"Edm.Decimal\":\n\t\tcase \"Edm.Double\":\n\t\tcase \"Edm.Single\": return \"decimalNumber\";\n\t\tcase \"Edm.Date\":\n\t\tcase \"Edm.DateTime\":\n\t\tcase \"Edm.DateTimeOffset\": return \"moment\";\n\t\tcase \"Edm.Time\":\n\t\tcase \"Edm.TimeOfDay\": return \"momentTime\";\n\t\tcase \"Edm.Guid\":\n\t\tcase \"Edm.String\": return \"string\";\n\t\tdefault: return \"unknown\";\n\t}\n}\nfunction sn(e) {\n\tlet t = e.lastIndexOf(\"/\") + 1, n = e.lastIndexOf(\".\");\n\treturn n > t && n < e.length - 1 ? n : void 0;\n}\nfunction cn(e) {\n\tlet t = Jt.get(e);\n\treturn t || (t = new Intl.ListFormat(e, {\n\t\tstyle: \"narrow\",\n\t\ttype: \"unit\"\n\t}), Jt.set(e, t)), t;\n}\nfunction $(e, t) {\n\tlet n = `${e}|${JSON.stringify(t)}`, r = Yt.get(n);\n\treturn r || (r = new Intl.NumberFormat(e, t), Yt.set(n, r)), r;\n}\nfunction ln(e, t) {\n\tlet n = 10 ** t;\n\treturn Math.round(e * n) / n;\n}\nexport { I as APIError, F as AppError, Fe as ConnectorError, fe as DATA_FORMAT_CONFIGS, pe as DATA_TYPE_CONFIGS, me as DECIMAL_SEPARATOR_IDS, e as DEFAULT_LOCALE_ID, Ee as ENCODING_GROUP_CONFIG_MAP, M as ENCODING_TYPE_CONFIG_MAP, L as EngineError, R as FetchError, t as SUPPORTED_LANGUAGES, U as TOOL_NAME_PREFIX, A as VALUE_DELIMITER_CONFIGS, vt as acquireWebLock, st as auditObjectContentWithParser, Ie as buildFetchError, at as buildPreviewObjectResult, le as componentInstanceConfigSchema, Le as concatenateSerialisedErrorMessages, Ce as connectorConfigSchema, Mt as constructConnectorCategoryConfig, Nt as constructConnectorItemTypeConfig, Pt as constructConnectorUsageConfig, on as convertODataTypeIdToUsageTypeId, gt as convertStoreRecordToParsedRecord, _t as convertStoreValueToText, Lt as cookbookConfigSchema, n as createLabelMap, jt as determineConnectorUsageId, nn as extractExtensionFromPath, tn as extractPathWithoutExtension, Xt as formatNumberAsDecimalNumber, en as formatNumberAsDuration, Qt as formatNumberAsSize, $t as formatNumberAsStorageSize, Zt as formatNumberAsWholeNumber, de as getComponentStatus, Ft as getConnectorActionsTable, ke as getEncodingTypeConfigs, he as getValueDelimiterCharacter, rn as hasMimeTypeForExtension, Re as ignoreErrors, De as isEncodingTypeId, W as listParserToolConfigs, Ht as loadPresenter, K as loadTool, Ut as localiseConfig, Wt as localiseConfigs, Gt as localiseReference, an as lookupMimeTypeForExtension, z as normalizeToError, Ye as parseDelimitedText, Bt as presenterConfigSchema, Ct as readTableSchema, Oe as resolveDecoderId, r as resolveLabel, G as resolveParserToolConfig, Rt as resolveRequestSignal, ht as resolveStorePath, ot as retrieveRecordsWithParser, ze as serialiseError, Je as toolConfigSchema, Be as unserialiseError };\n","/**\n * The accumulators that the tokenizer gathers strings and numbers into while\n * their bytes arrive.\n *\n * @module\n */\n/**\n * A {@linkcode StringBuilder} that accumulates the token as a JavaScript\n * string. This is the default: it's the fastest option for the small strings\n * and numbers that dominate real JSON.\n */\nexport class NonBufferedString {\n constructor() {\n // fatal: true makes invalid byte sequences (e.g. a lead byte followed by a\n // non-continuation byte) throw instead of silently decoding to U+FFFD.\n this.decoder = new TextDecoder(\"utf-8\", { fatal: true });\n // Pieces appended since the last toString(), not yet folded into `string`.\n this.pending = [];\n this.string = \"\";\n this.byteLength = 0;\n }\n appendChar(char) {\n this.pending.push(String.fromCharCode(char));\n this.byteLength += 1;\n }\n appendBuf(buf, start = 0, end = buf.length) {\n this.pending.push(this.decoder.decode(buf.subarray(start, end)));\n this.byteLength += end - start;\n }\n appendCharCode(code) {\n this.pending.push(String.fromCharCode(code));\n }\n reset() {\n this.pending = [];\n this.string = \"\";\n this.byteLength = 0;\n }\n // Folds only the pieces appended since the last call into `string`, so\n // repeated calls (one per chunk when emitting partial tokens) stay linear\n // overall instead of re-joining the whole accumulated string every time.\n toString() {\n if (this.pending.length > 0) {\n this.string += this.pending.join(\"\");\n this.pending = [];\n }\n return this.string;\n }\n}\n/**\n * A {@linkcode StringBuilder} that accumulates the token's bytes into a\n * fixed-size `Uint8Array` and only decodes them once the buffer is full.\n *\n * Enabled through the tokenizer's `stringBufferSize`/`numberBufferSize`\n * options. It avoids V8's over-allocation on repeated string concatenation,\n * which is what makes very large strings and numbers exhaust memory, at the\n * cost of an encoding/decoding round trip that isn't worth it for small values.\n */\nexport class BufferedString {\n /**\n * @param bufferSize The size, in bytes, of the buffer to accumulate into.\n */\n constructor(bufferSize) {\n // fatal: true makes invalid byte sequences (e.g. a lead byte followed by a\n // non-continuation byte) throw instead of silently decoding to U+FFFD.\n this.decoder = new TextDecoder(\"utf-8\", { fatal: true });\n this.bufferOffset = 0;\n this.string = \"\";\n this.byteLength = 0;\n this.buffer = new Uint8Array(bufferSize);\n }\n appendChar(char) {\n if (this.bufferOffset >= this.buffer.length)\n this.flushStringBuffer();\n this.buffer[this.bufferOffset++] = char;\n this.byteLength += 1;\n }\n appendBuf(buf, start = 0, end = buf.length) {\n const size = end - start;\n if (this.bufferOffset + size > this.buffer.length)\n this.flushStringBuffer();\n if (size > this.buffer.length) {\n // Span larger than the working buffer: decode it straight into the\n // string instead of copying it in (buffer.set would overflow). Safe\n // because callers only append complete-character spans -- the tokenizer\n // never splits a multi-byte char across appendBuf calls -- so decoding\n // this span on its own can't cut through the middle of a character.\n this.string += this.decoder.decode(buf.subarray(start, end));\n this.byteLength += size;\n return;\n }\n this.buffer.set(buf.subarray(start, end), this.bufferOffset);\n this.bufferOffset += size;\n this.byteLength += size;\n }\n appendCharCode(code) {\n this.flushStringBuffer();\n this.string += String.fromCharCode(code);\n }\n flushStringBuffer() {\n this.string += this.decoder.decode(this.buffer.subarray(0, this.bufferOffset));\n this.bufferOffset = 0;\n }\n reset() {\n this.string = \"\";\n this.bufferOffset = 0;\n this.byteLength = 0;\n }\n toString() {\n this.flushStringBuffer();\n return this.string;\n }\n}\n//# sourceMappingURL=bufferedString.js.map","/**\n * The JSON token types emitted by the tokenizer.\n *\n * @module\n */\n/** The type of a JSON token, as reported by the tokenizer's `onToken` callback. */\nvar TokenType;\n(function (TokenType) {\n /** `{` */\n TokenType[TokenType[\"LEFT_BRACE\"] = 0] = \"LEFT_BRACE\";\n /** `}` */\n TokenType[TokenType[\"RIGHT_BRACE\"] = 1] = \"RIGHT_BRACE\";\n /** `[` */\n TokenType[TokenType[\"LEFT_BRACKET\"] = 2] = \"LEFT_BRACKET\";\n /** `]` */\n TokenType[TokenType[\"RIGHT_BRACKET\"] = 3] = \"RIGHT_BRACKET\";\n /** `:` */\n TokenType[TokenType[\"COLON\"] = 4] = \"COLON\";\n /** `,` */\n TokenType[TokenType[\"COMMA\"] = 5] = \"COMMA\";\n /** `true` */\n TokenType[TokenType[\"TRUE\"] = 6] = \"TRUE\";\n /** `false` */\n TokenType[TokenType[\"FALSE\"] = 7] = \"FALSE\";\n /** `null` */\n TokenType[TokenType[\"NULL\"] = 8] = \"NULL\";\n /** A string, with all its escape sequences already resolved. */\n TokenType[TokenType[\"STRING\"] = 9] = \"STRING\";\n /** A number, already parsed into a JavaScript number. */\n TokenType[TokenType[\"NUMBER\"] = 10] = \"NUMBER\";\n /** The configured separator between consecutive JSON documents. */\n TokenType[TokenType[\"SEPARATOR\"] = 11] = \"SEPARATOR\";\n})(TokenType || (TokenType = {}));\nexport default TokenType;\n//# sourceMappingURL=tokenType.js.map","/**\n * The utf-8 byte values that the tokenizer matches the incoming stream against.\n *\n * @module\n */\n/** The utf-8 byte value of each character that is meaningful to the tokenizer. */\nexport var charset;\n(function (charset) {\n charset[charset[\"BACKSPACE\"] = 8] = \"BACKSPACE\";\n charset[charset[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n charset[charset[\"NEWLINE\"] = 10] = \"NEWLINE\";\n charset[charset[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n charset[charset[\"TAB\"] = 9] = \"TAB\";\n charset[charset[\"SPACE\"] = 32] = \"SPACE\";\n charset[charset[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n charset[charset[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n charset[charset[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n charset[charset[\"DOLLAR_SIGN\"] = 36] = \"DOLLAR_SIGN\";\n charset[charset[\"PERCENT_SIGN\"] = 37] = \"PERCENT_SIGN\";\n charset[charset[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n charset[charset[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n charset[charset[\"LEFT_PARENTHESIS\"] = 40] = \"LEFT_PARENTHESIS\";\n charset[charset[\"RIGHT_PARENTHESIS\"] = 41] = \"RIGHT_PARENTHESIS\";\n charset[charset[\"ASTERISK\"] = 42] = \"ASTERISK\";\n charset[charset[\"PLUS_SIGN\"] = 43] = \"PLUS_SIGN\";\n charset[charset[\"COMMA\"] = 44] = \"COMMA\";\n charset[charset[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n charset[charset[\"FULL_STOP\"] = 46] = \"FULL_STOP\";\n charset[charset[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n charset[charset[\"DIGIT_ZERO\"] = 48] = \"DIGIT_ZERO\";\n charset[charset[\"DIGIT_ONE\"] = 49] = \"DIGIT_ONE\";\n charset[charset[\"DIGIT_TWO\"] = 50] = \"DIGIT_TWO\";\n charset[charset[\"DIGIT_THREE\"] = 51] = \"DIGIT_THREE\";\n charset[charset[\"DIGIT_FOUR\"] = 52] = \"DIGIT_FOUR\";\n charset[charset[\"DIGIT_FIVE\"] = 53] = \"DIGIT_FIVE\";\n charset[charset[\"DIGIT_SIX\"] = 54] = \"DIGIT_SIX\";\n charset[charset[\"DIGIT_SEVEN\"] = 55] = \"DIGIT_SEVEN\";\n charset[charset[\"DIGIT_EIGHT\"] = 56] = \"DIGIT_EIGHT\";\n charset[charset[\"DIGIT_NINE\"] = 57] = \"DIGIT_NINE\";\n charset[charset[\"COLON\"] = 58] = \"COLON\";\n charset[charset[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n charset[charset[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n charset[charset[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n charset[charset[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n charset[charset[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n charset[charset[\"COMMERCIAL_AT\"] = 64] = \"COMMERCIAL_AT\";\n charset[charset[\"LATIN_CAPITAL_LETTER_A\"] = 65] = \"LATIN_CAPITAL_LETTER_A\";\n charset[charset[\"LATIN_CAPITAL_LETTER_B\"] = 66] = \"LATIN_CAPITAL_LETTER_B\";\n charset[charset[\"LATIN_CAPITAL_LETTER_C\"] = 67] = \"LATIN_CAPITAL_LETTER_C\";\n charset[charset[\"LATIN_CAPITAL_LETTER_D\"] = 68] = \"LATIN_CAPITAL_LETTER_D\";\n charset[charset[\"LATIN_CAPITAL_LETTER_E\"] = 69] = \"LATIN_CAPITAL_LETTER_E\";\n charset[charset[\"LATIN_CAPITAL_LETTER_F\"] = 70] = \"LATIN_CAPITAL_LETTER_F\";\n charset[charset[\"LATIN_CAPITAL_LETTER_G\"] = 71] = \"LATIN_CAPITAL_LETTER_G\";\n charset[charset[\"LATIN_CAPITAL_LETTER_H\"] = 72] = \"LATIN_CAPITAL_LETTER_H\";\n charset[charset[\"LATIN_CAPITAL_LETTER_I\"] = 73] = \"LATIN_CAPITAL_LETTER_I\";\n charset[charset[\"LATIN_CAPITAL_LETTER_J\"] = 74] = \"LATIN_CAPITAL_LETTER_J\";\n charset[charset[\"LATIN_CAPITAL_LETTER_K\"] = 75] = \"LATIN_CAPITAL_LETTER_K\";\n charset[charset[\"LATIN_CAPITAL_LETTER_L\"] = 76] = \"LATIN_CAPITAL_LETTER_L\";\n charset[charset[\"LATIN_CAPITAL_LETTER_M\"] = 77] = \"LATIN_CAPITAL_LETTER_M\";\n charset[charset[\"LATIN_CAPITAL_LETTER_N\"] = 78] = \"LATIN_CAPITAL_LETTER_N\";\n charset[charset[\"LATIN_CAPITAL_LETTER_O\"] = 79] = \"LATIN_CAPITAL_LETTER_O\";\n charset[charset[\"LATIN_CAPITAL_LETTER_P\"] = 80] = \"LATIN_CAPITAL_LETTER_P\";\n charset[charset[\"LATIN_CAPITAL_LETTER_Q\"] = 81] = \"LATIN_CAPITAL_LETTER_Q\";\n charset[charset[\"LATIN_CAPITAL_LETTER_R\"] = 82] = \"LATIN_CAPITAL_LETTER_R\";\n charset[charset[\"LATIN_CAPITAL_LETTER_S\"] = 83] = \"LATIN_CAPITAL_LETTER_S\";\n charset[charset[\"LATIN_CAPITAL_LETTER_T\"] = 84] = \"LATIN_CAPITAL_LETTER_T\";\n charset[charset[\"LATIN_CAPITAL_LETTER_U\"] = 85] = \"LATIN_CAPITAL_LETTER_U\";\n charset[charset[\"LATIN_CAPITAL_LETTER_V\"] = 86] = \"LATIN_CAPITAL_LETTER_V\";\n charset[charset[\"LATIN_CAPITAL_LETTER_W\"] = 87] = \"LATIN_CAPITAL_LETTER_W\";\n charset[charset[\"LATIN_CAPITAL_LETTER_X\"] = 88] = \"LATIN_CAPITAL_LETTER_X\";\n charset[charset[\"LATIN_CAPITAL_LETTER_Y\"] = 89] = \"LATIN_CAPITAL_LETTER_Y\";\n charset[charset[\"LATIN_CAPITAL_LETTER_Z\"] = 90] = \"LATIN_CAPITAL_LETTER_Z\";\n charset[charset[\"LEFT_SQUARE_BRACKET\"] = 91] = \"LEFT_SQUARE_BRACKET\";\n charset[charset[\"REVERSE_SOLIDUS\"] = 92] = \"REVERSE_SOLIDUS\";\n charset[charset[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n charset[charset[\"CIRCUMFLEX_ACCENT\"] = 94] = \"CIRCUMFLEX_ACCENT\";\n charset[charset[\"LOW_LINE\"] = 95] = \"LOW_LINE\";\n charset[charset[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n charset[charset[\"LATIN_SMALL_LETTER_A\"] = 97] = \"LATIN_SMALL_LETTER_A\";\n charset[charset[\"LATIN_SMALL_LETTER_B\"] = 98] = \"LATIN_SMALL_LETTER_B\";\n charset[charset[\"LATIN_SMALL_LETTER_C\"] = 99] = \"LATIN_SMALL_LETTER_C\";\n charset[charset[\"LATIN_SMALL_LETTER_D\"] = 100] = \"LATIN_SMALL_LETTER_D\";\n charset[charset[\"LATIN_SMALL_LETTER_E\"] = 101] = \"LATIN_SMALL_LETTER_E\";\n charset[charset[\"LATIN_SMALL_LETTER_F\"] = 102] = \"LATIN_SMALL_LETTER_F\";\n charset[charset[\"LATIN_SMALL_LETTER_G\"] = 103] = \"LATIN_SMALL_LETTER_G\";\n charset[charset[\"LATIN_SMALL_LETTER_H\"] = 104] = \"LATIN_SMALL_LETTER_H\";\n charset[charset[\"LATIN_SMALL_LETTER_I\"] = 105] = \"LATIN_SMALL_LETTER_I\";\n charset[charset[\"LATIN_SMALL_LETTER_J\"] = 106] = \"LATIN_SMALL_LETTER_J\";\n charset[charset[\"LATIN_SMALL_LETTER_K\"] = 107] = \"LATIN_SMALL_LETTER_K\";\n charset[charset[\"LATIN_SMALL_LETTER_L\"] = 108] = \"LATIN_SMALL_LETTER_L\";\n charset[charset[\"LATIN_SMALL_LETTER_M\"] = 109] = \"LATIN_SMALL_LETTER_M\";\n charset[charset[\"LATIN_SMALL_LETTER_N\"] = 110] = \"LATIN_SMALL_LETTER_N\";\n charset[charset[\"LATIN_SMALL_LETTER_O\"] = 111] = \"LATIN_SMALL_LETTER_O\";\n charset[charset[\"LATIN_SMALL_LETTER_P\"] = 112] = \"LATIN_SMALL_LETTER_P\";\n charset[charset[\"LATIN_SMALL_LETTER_Q\"] = 113] = \"LATIN_SMALL_LETTER_Q\";\n charset[charset[\"LATIN_SMALL_LETTER_R\"] = 114] = \"LATIN_SMALL_LETTER_R\";\n charset[charset[\"LATIN_SMALL_LETTER_S\"] = 115] = \"LATIN_SMALL_LETTER_S\";\n charset[charset[\"LATIN_SMALL_LETTER_T\"] = 116] = \"LATIN_SMALL_LETTER_T\";\n charset[charset[\"LATIN_SMALL_LETTER_U\"] = 117] = \"LATIN_SMALL_LETTER_U\";\n charset[charset[\"LATIN_SMALL_LETTER_V\"] = 118] = \"LATIN_SMALL_LETTER_V\";\n charset[charset[\"LATIN_SMALL_LETTER_W\"] = 119] = \"LATIN_SMALL_LETTER_W\";\n charset[charset[\"LATIN_SMALL_LETTER_X\"] = 120] = \"LATIN_SMALL_LETTER_X\";\n charset[charset[\"LATIN_SMALL_LETTER_Y\"] = 121] = \"LATIN_SMALL_LETTER_Y\";\n charset[charset[\"LATIN_SMALL_LETTER_Z\"] = 122] = \"LATIN_SMALL_LETTER_Z\";\n charset[charset[\"LEFT_CURLY_BRACKET\"] = 123] = \"LEFT_CURLY_BRACKET\";\n charset[charset[\"VERTICAL_LINE\"] = 124] = \"VERTICAL_LINE\";\n charset[charset[\"RIGHT_CURLY_BRACKET\"] = 125] = \"RIGHT_CURLY_BRACKET\";\n charset[charset[\"TILDE\"] = 126] = \"TILDE\";\n})(charset || (charset = {}));\n/**\n * The character that each JSON escape sequence stands for, keyed by the byte\n * that follows the backslash. Unicode escapes (`\\uXXXX`) are not in here; the\n * tokenizer resolves those itself.\n */\nexport const escapedSequences = {\n [34 /* charset.QUOTATION_MARK */]: 34 /* charset.QUOTATION_MARK */,\n [92 /* charset.REVERSE_SOLIDUS */]: 92 /* charset.REVERSE_SOLIDUS */,\n [47 /* charset.SOLIDUS */]: 47 /* charset.SOLIDUS */,\n [98 /* charset.LATIN_SMALL_LETTER_B */]: 8 /* charset.BACKSPACE */,\n [102 /* charset.LATIN_SMALL_LETTER_F */]: 12 /* charset.FORM_FEED */,\n [110 /* charset.LATIN_SMALL_LETTER_N */]: 10 /* charset.NEWLINE */,\n [114 /* charset.LATIN_SMALL_LETTER_R */]: 13 /* charset.CARRIAGE_RETURN */,\n [116 /* charset.LATIN_SMALL_LETTER_T */]: 9 /* charset.TAB */,\n};\n//# sourceMappingURL=utf-8.js.map","/**\n * A JSON-compliant tokenizer that turns a utf-8 stream into JSON tokens.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n *\n * const tokenizer = new Tokenizer();\n * tokenizer.onToken = ({ token, value, offset }) => {\n * // process the token\n * };\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * ```\n *\n * @module\n */\nimport { BufferedString, NonBufferedString, } from \"./utils/bufferedString.js\";\nimport TokenType from \"./utils/types/tokenType.js\";\nimport { escapedSequences } from \"./utils/utf-8.js\";\n// Tokenizer States\nvar TokenizerStates;\n(function (TokenizerStates) {\n TokenizerStates[TokenizerStates[\"START\"] = 0] = \"START\";\n TokenizerStates[TokenizerStates[\"ENDED\"] = 1] = \"ENDED\";\n TokenizerStates[TokenizerStates[\"ERROR\"] = 2] = \"ERROR\";\n TokenizerStates[TokenizerStates[\"TRUE1\"] = 3] = \"TRUE1\";\n TokenizerStates[TokenizerStates[\"TRUE2\"] = 4] = \"TRUE2\";\n TokenizerStates[TokenizerStates[\"TRUE3\"] = 5] = \"TRUE3\";\n TokenizerStates[TokenizerStates[\"FALSE1\"] = 6] = \"FALSE1\";\n TokenizerStates[TokenizerStates[\"FALSE2\"] = 7] = \"FALSE2\";\n TokenizerStates[TokenizerStates[\"FALSE3\"] = 8] = \"FALSE3\";\n TokenizerStates[TokenizerStates[\"FALSE4\"] = 9] = \"FALSE4\";\n TokenizerStates[TokenizerStates[\"NULL1\"] = 10] = \"NULL1\";\n TokenizerStates[TokenizerStates[\"NULL2\"] = 11] = \"NULL2\";\n TokenizerStates[TokenizerStates[\"NULL3\"] = 12] = \"NULL3\";\n TokenizerStates[TokenizerStates[\"STRING_DEFAULT\"] = 13] = \"STRING_DEFAULT\";\n TokenizerStates[TokenizerStates[\"STRING_AFTER_BACKSLASH\"] = 14] = \"STRING_AFTER_BACKSLASH\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_1\"] = 15] = \"STRING_UNICODE_DIGIT_1\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_2\"] = 16] = \"STRING_UNICODE_DIGIT_2\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_3\"] = 17] = \"STRING_UNICODE_DIGIT_3\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_4\"] = 18] = \"STRING_UNICODE_DIGIT_4\";\n TokenizerStates[TokenizerStates[\"STRING_INCOMPLETE_CHAR\"] = 19] = \"STRING_INCOMPLETE_CHAR\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_INITIAL_MINUS\"] = 20] = \"NUMBER_AFTER_INITIAL_MINUS\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_INITIAL_ZERO\"] = 21] = \"NUMBER_AFTER_INITIAL_ZERO\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_INITIAL_NON_ZERO\"] = 22] = \"NUMBER_AFTER_INITIAL_NON_ZERO\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_FULL_STOP\"] = 23] = \"NUMBER_AFTER_FULL_STOP\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_DECIMAL\"] = 24] = \"NUMBER_AFTER_DECIMAL\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_E\"] = 25] = \"NUMBER_AFTER_E\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_E_AND_SIGN\"] = 26] = \"NUMBER_AFTER_E_AND_SIGN\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_E_AND_DIGIT\"] = 27] = \"NUMBER_AFTER_E_AND_DIGIT\";\n TokenizerStates[TokenizerStates[\"SEPARATOR\"] = 28] = \"SEPARATOR\";\n TokenizerStates[TokenizerStates[\"BOM_OR_START\"] = 29] = \"BOM_OR_START\";\n TokenizerStates[TokenizerStates[\"BOM\"] = 30] = \"BOM\";\n})(TokenizerStates || (TokenizerStates = {}));\nfunction TokenizerStateToString(tokenizerState) {\n return [\n \"START\",\n \"ENDED\",\n \"ERROR\",\n \"TRUE1\",\n \"TRUE2\",\n \"TRUE3\",\n \"FALSE1\",\n \"FALSE2\",\n \"FALSE3\",\n \"FALSE4\",\n \"NULL1\",\n \"NULL2\",\n \"NULL3\",\n \"STRING_DEFAULT\",\n \"STRING_AFTER_BACKSLASH\",\n \"STRING_UNICODE_DIGIT_1\",\n \"STRING_UNICODE_DIGIT_2\",\n \"STRING_UNICODE_DIGIT_3\",\n \"STRING_UNICODE_DIGIT_4\",\n \"STRING_INCOMPLETE_CHAR\",\n \"NUMBER_AFTER_INITIAL_MINUS\",\n \"NUMBER_AFTER_INITIAL_ZERO\",\n \"NUMBER_AFTER_INITIAL_NON_ZERO\",\n \"NUMBER_AFTER_FULL_STOP\",\n \"NUMBER_AFTER_DECIMAL\",\n \"NUMBER_AFTER_E\",\n \"NUMBER_AFTER_E_AND_SIGN\",\n \"NUMBER_AFTER_E_AND_DIGIT\",\n \"SEPARATOR\",\n \"BOM_OR_START\",\n \"BOM\",\n ][tokenizerState];\n}\nconst defaultOpts = {\n stringBufferSize: 0,\n numberBufferSize: 0,\n separator: undefined,\n emitPartialTokens: false,\n};\n/** The error thrown when the tokenizer is misconfigured or hits invalid JSON. */\nexport class TokenizerError extends Error {\n /**\n * @param message What went wrong.\n */\n constructor(message) {\n super(message);\n // Typescript is broken. This is a workaround\n Object.setPrototypeOf(this, TokenizerError.prototype);\n }\n}\n// A non-integer buffer size (e.g. 0.5) silently truncates when passed to\n// `new Uint8Array(size)` (0.5 becomes a *zero-length* buffer) instead of\n// throwing, so every appended byte gets silently dropped rather than\n// buffered -- corrupting the parsed value instead of failing loudly.\nfunction validateBufferSize(name, size) {\n if (size === undefined)\n return;\n if (!Number.isInteger(size) || size < 0) {\n throw new TokenizerError(`Invalid \"${name}\": ${size}. Expected a non-negative integer.`);\n }\n}\n// Byte length of the UTF-8 character starting with `leadByte`. Invalid or\n// continuation lead bytes fall through to 3/4 here and are rejected later by\n// the fatal TextDecoder when the bytes are actually decoded.\nfunction utf8SequenceLength(leadByte) {\n if (leadByte >= 194 && leadByte <= 223)\n return 2;\n if (leadByte <= 239)\n return 3;\n return 4;\n}\n// Index just past the last COMPLETE multi-byte character of the run starting at\n// `start`. Stops at the first ASCII byte, or at a character whose bytes would\n// run past the end of the buffer (a boundary split the caller carries over).\nfunction multiByteRunEnd(buffer, start) {\n let j = start;\n while (j < buffer.length && buffer[j] >= 128) {\n const seqLength = utf8SequenceLength(buffer[j]);\n if (j + seqLength > buffer.length)\n break; // split across the chunk boundary\n j += seqLength;\n }\n return j;\n}\n/**\n * A JSON-compliant tokenizer that turns a utf-8 stream into JSON tokens.\n *\n * Data is pushed in with {@linkcode Tokenizer.write} and the resulting tokens\n * come back through the {@linkcode Tokenizer.onToken} callback, which the user\n * is expected to override. Feed the tokens to a `TokenParser` to get JSON\n * values back, or use a `JSONParser`, which chains both.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n *\n * const tokenizer = new Tokenizer({ separator: \"\\n\" });\n * tokenizer.onToken = ({ token, value, offset }) => {\n * // process the token\n * };\n * tokenizer.onError = (err) => console.error(err);\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * tokenizer.end();\n * ```\n */\nexport default class Tokenizer {\n /**\n * @param opts How to tokenize. See {@linkcode TokenizerOptions}.\n */\n constructor(opts) {\n this.state = 29 /* TokenizerStates.BOM_OR_START */;\n this.bomIndex = 0;\n this.separatorIndex = 0;\n this.escapedCharsByteLength = 0;\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.char_split_buffer = new Uint8Array(4); // for rebuilding chars split before boundary is reached\n this.encoder = new TextEncoder();\n this.offset = -1;\n this.streamByteLength = 0; // Total bytes consumed across all write() calls before the current one\n opts = Object.assign(Object.assign({}, defaultOpts), opts);\n validateBufferSize(\"stringBufferSize\", opts.stringBufferSize);\n validateBufferSize(\"numberBufferSize\", opts.numberBufferSize);\n this.emitPartialTokens = opts.emitPartialTokens === true;\n this.bufferedString =\n opts.stringBufferSize && opts.stringBufferSize > 4\n ? new BufferedString(opts.stringBufferSize)\n : new NonBufferedString();\n this.bufferedNumber =\n opts.numberBufferSize && opts.numberBufferSize > 0\n ? new BufferedString(opts.numberBufferSize)\n : new NonBufferedString();\n this.separator = opts.separator;\n this.separatorBytes = opts.separator\n ? this.encoder.encode(opts.separator)\n : undefined;\n }\n /** Whether the tokenizer is ended, and thus no longer accepting data. */\n get isEnded() {\n return this.state === 1 /* TokenizerStates.ENDED */;\n }\n // Appends the code unit decoded from one \\uXXXX escape, matching\n // JSON.parse's handling of surrogates: a valid high/low surrogate pair\n // combines into one character; an unpaired high or low surrogate is kept\n // as a raw UTF-16 code unit rather than replaced or dropped (JS strings\n // are free to contain lone surrogates; only encoding them as UTF-8 bytes\n // is lossy, which is why appendCharCode -- not the encoder -- is used for\n // them).\n appendUnicodeCodeUnit(intVal) {\n if (this.highSurrogate !== undefined) {\n if (intVal >= 0xdc00 && intVal <= 0xdfff) {\n // <56320,57343> - valid low surrogate: combine with the pending\n // high surrogate into a single character.\n const unicodeString = String.fromCharCode(this.highSurrogate, intVal);\n const unicodeBuffer = this.encoder.encode(unicodeString);\n this.bufferedString.appendBuf(unicodeBuffer);\n // len(\\u0000)=6 minus the fact you're appending len(buf)\n this.escapedCharsByteLength += 6 - unicodeBuffer.byteLength;\n this.highSurrogate = undefined;\n return;\n }\n // Not a matching low surrogate: the pending high surrogate stands on\n // its own, and intVal is processed independently below.\n this.flushPendingHighSurrogate();\n }\n if (intVal >= 0xd800 && intVal <= 0xdbff) {\n // <55296,56319> - high surrogate: defer until we know whether a\n // matching low surrogate follows.\n this.highSurrogate = intVal;\n this.escapedCharsByteLength += 6;\n return;\n }\n if (intVal >= 0xdc00 && intVal <= 0xdfff) {\n // <56320,57343> - lone low surrogate with no preceding high\n // surrogate: keep as a raw code unit.\n this.bufferedString.appendCharCode(intVal);\n this.escapedCharsByteLength += 6;\n return;\n }\n const unicodeString = String.fromCharCode(intVal);\n const unicodeBuffer = this.encoder.encode(unicodeString);\n this.bufferedString.appendBuf(unicodeBuffer);\n // len(\\u0000)=6 minus the fact you're appending len(buf)\n this.escapedCharsByteLength += 6 - unicodeBuffer.byteLength;\n }\n flushPendingHighSurrogate() {\n if (this.highSurrogate !== undefined) {\n this.bufferedString.appendCharCode(this.highSurrogate);\n this.highSurrogate = undefined;\n }\n }\n // Stash the leading bytes of a multi-byte character split across the chunk\n // boundary; STRING_INCOMPLETE_CHAR completes it from the next chunk.\n startIncompleteChar(buffer, start) {\n this.bytes_in_sequence = utf8SequenceLength(buffer[start]);\n this.bytes_remaining = start + this.bytes_in_sequence - buffer.length;\n this.char_split_buffer.set(buffer.subarray(start));\n this.state = 19 /* TokenizerStates.STRING_INCOMPLETE_CHAR */;\n }\n /**\n * Pushes the next chunk of the JSON stream into the tokenizer.\n *\n * Tokenizing happens synchronously, so every token in `input` is emitted\n * through {@linkcode Tokenizer.onToken} before this returns. A chunk may end\n * anywhere, including in the middle of a multi-byte character; the rest of it\n * is picked up from the next chunk.\n *\n * @param input The chunk to tokenize: a string, a `TypedArray`, or any\n * iterable of utf-8 byte values.\n * @throws {TokenizerError} If the data is not valid JSON and no\n * {@linkcode Tokenizer.onError} callback has been set.\n */\n write(input) {\n try {\n let buffer;\n if (input instanceof Uint8Array) {\n buffer = input;\n }\n else if (typeof input === \"string\") {\n if (this.pendingStringSurrogate !== undefined) {\n input = this.pendingStringSurrogate + input;\n this.pendingStringSurrogate = undefined;\n }\n const lastCharCode = input.charCodeAt(input.length - 1);\n if (lastCharCode >= 0xd800 && lastCharCode <= 0xdbff) {\n // Lone high surrogate at the very end of this chunk: hold it back\n // instead of encoding it (and corrupting it into U+FFFD) alone,\n // in case the next chunk supplies its matching low surrogate.\n this.pendingStringSurrogate = input[input.length - 1];\n input = input.slice(0, -1);\n }\n buffer = this.encoder.encode(input);\n }\n else if (ArrayBuffer.isView(input)) {\n buffer = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n else if (input !== null &&\n typeof input === \"object\" &&\n typeof input[Symbol.iterator] === \"function\") {\n // Any Iterable<number>, not just literal Arrays (e.g. Set, Map\n // values(), a generator) -- matching the public write() signature,\n // which already types `input` as Iterable<number> | string.\n buffer = Uint8Array.from(input);\n }\n else {\n throw new TypeError(\"Unexpected type. The `write` function only accepts Iterables (e.g. Arrays, Sets, Generators), TypedArrays and Strings.\");\n }\n for (let i = 0; i < buffer.length; i += 1) {\n const n = buffer[i]; // get current byte from buffer\n switch (this.state) {\n // @ts-expect-error fall through case\n case 29 /* TokenizerStates.BOM_OR_START */:\n if (n === 0xef) {\n this.bom = [0xef, 0xbb, 0xbf];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n if (input instanceof Uint16Array) {\n if (n === 0xfe) {\n this.bom = [0xfe, 0xff];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n if (n === 0xff) {\n this.bom = [0xff, 0xfe];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n }\n if (input instanceof Uint32Array) {\n if (n === 0x00) {\n this.bom = [0x00, 0x00, 0xfe, 0xff];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n if (n === 0xff) {\n this.bom = [0xff, 0xfe, 0x00, 0x00];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n }\n case 0 /* TokenizerStates.START */:\n this.offset += 1;\n if (this.separatorBytes && n === this.separatorBytes[0]) {\n if (this.separatorBytes.length === 1) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.SEPARATOR,\n value: this.separator,\n offset: this.offset + this.separatorBytes.length - 1,\n });\n continue;\n }\n this.state = 28 /* TokenizerStates.SEPARATOR */;\n continue;\n }\n if (n === 32 /* charset.SPACE */ ||\n n === 10 /* charset.NEWLINE */ ||\n n === 13 /* charset.CARRIAGE_RETURN */ ||\n n === 9 /* charset.TAB */) {\n // whitespace\n continue;\n }\n if (n === 123 /* charset.LEFT_CURLY_BRACKET */) {\n this.onToken({\n token: TokenType.LEFT_BRACE,\n value: \"{\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 125 /* charset.RIGHT_CURLY_BRACKET */) {\n this.onToken({\n token: TokenType.RIGHT_BRACE,\n value: \"}\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 91 /* charset.LEFT_SQUARE_BRACKET */) {\n this.onToken({\n token: TokenType.LEFT_BRACKET,\n value: \"[\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 93 /* charset.RIGHT_SQUARE_BRACKET */) {\n this.onToken({\n token: TokenType.RIGHT_BRACKET,\n value: \"]\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 58 /* charset.COLON */) {\n this.onToken({\n token: TokenType.COLON,\n value: \":\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 44 /* charset.COMMA */) {\n this.onToken({\n token: TokenType.COMMA,\n value: \",\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 116 /* charset.LATIN_SMALL_LETTER_T */) {\n this.state = 3 /* TokenizerStates.TRUE1 */;\n continue;\n }\n if (n === 102 /* charset.LATIN_SMALL_LETTER_F */) {\n this.state = 6 /* TokenizerStates.FALSE1 */;\n continue;\n }\n if (n === 110 /* charset.LATIN_SMALL_LETTER_N */) {\n this.state = 10 /* TokenizerStates.NULL1 */;\n continue;\n }\n if (n === 34 /* charset.QUOTATION_MARK */) {\n this.bufferedString.reset();\n this.escapedCharsByteLength = 0;\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n if (n >= 49 /* charset.DIGIT_ONE */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */;\n continue;\n }\n if (n === 48 /* charset.DIGIT_ZERO */) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */;\n continue;\n }\n if (n === 45 /* charset.HYPHEN_MINUS */) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = 20 /* TokenizerStates.NUMBER_AFTER_INITIAL_MINUS */;\n continue;\n }\n break;\n // STRING\n case 13 /* TokenizerStates.STRING_DEFAULT */:\n if (n === 34 /* charset.QUOTATION_MARK */) {\n this.flushPendingHighSurrogate();\n const string = this.bufferedString.toString();\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.STRING,\n value: string,\n offset: this.offset,\n });\n this.offset +=\n this.escapedCharsByteLength +\n this.bufferedString.byteLength +\n 1;\n continue;\n }\n if (n === 92 /* charset.REVERSE_SOLIDUS */) {\n this.state = 14 /* TokenizerStates.STRING_AFTER_BACKSLASH */;\n continue;\n }\n if (n >= 128) {\n this.flushPendingHighSurrogate();\n // Decode the whole run of complete multi-byte characters in one\n // TextDecoder call, rather than one character at a time -- much\n // faster for multi-byte text (CJK/emoji). ASCII stays on the\n // per-character appendChar path below.\n const runEnd = multiByteRunEnd(buffer, i);\n if (runEnd > i) {\n this.bufferedString.appendBuf(buffer, i, runEnd);\n i = runEnd - 1; // the for-loop's i += 1 lands on runEnd\n }\n // A character straddling the chunk boundary is carried over to\n // the next chunk via STRING_INCOMPLETE_CHAR.\n if (runEnd < buffer.length && buffer[runEnd] >= 128) {\n this.startIncompleteChar(buffer, runEnd);\n i = buffer.length - 1;\n }\n continue;\n }\n if (n >= 32 /* charset.SPACE */) {\n this.flushPendingHighSurrogate();\n let j = i;\n while (j < buffer.length) {\n const b = buffer[j];\n if (b < 32 /* charset.SPACE */ ||\n b >= 128 ||\n b === 34 /* charset.QUOTATION_MARK */ ||\n b === 92 /* charset.REVERSE_SOLIDUS */)\n break;\n j += 1;\n }\n // appendBuf is one TextDecoder call: worth it only once the run is\n // long enough to amortize that fixed cost. Short strings (keys,\n // ids) dominate real JSON, so append those char-by-char instead --\n // always-appendBuf regresses key/record-heavy JSON ~12%.\n if (j - i >= 16) {\n this.bufferedString.appendBuf(buffer, i, j);\n }\n else {\n for (let k = i; k < j; k += 1)\n this.bufferedString.appendChar(buffer[k]);\n }\n i = j - 1;\n continue;\n }\n break;\n case 19 /* TokenizerStates.STRING_INCOMPLETE_CHAR */: {\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n // The rest of the sequence might still not be complete if this chunk is smaller\n // than the number of bytes still missing (e.g. one byte at a time), so only\n // consume what's actually available and keep waiting otherwise.\n const available = Math.min(this.bytes_remaining, buffer.length - i);\n this.char_split_buffer.set(buffer.subarray(i, i + available), this.bytes_in_sequence - this.bytes_remaining);\n this.bytes_remaining -= available;\n if (this.bytes_remaining > 0) {\n i = buffer.length - 1;\n continue;\n }\n this.bufferedString.appendBuf(this.char_split_buffer, 0, this.bytes_in_sequence);\n i += available - 1;\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n case 14 /* TokenizerStates.STRING_AFTER_BACKSLASH */: {\n const controlChar = escapedSequences[n];\n if (controlChar) {\n this.flushPendingHighSurrogate();\n this.bufferedString.appendChar(controlChar);\n this.escapedCharsByteLength += 1; // len(\\\")=2 minus the fact you're appending len(controlChar)=1\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n if (n === 117 /* charset.LATIN_SMALL_LETTER_U */) {\n this.unicode = \"\";\n this.state = 15 /* TokenizerStates.STRING_UNICODE_DIGIT_1 */;\n continue;\n }\n break;\n }\n case 15 /* TokenizerStates.STRING_UNICODE_DIGIT_1 */:\n case 16 /* TokenizerStates.STRING_UNICODE_DIGIT_2 */:\n case 17 /* TokenizerStates.STRING_UNICODE_DIGIT_3 */:\n if ((n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) ||\n (n >= 65 /* charset.LATIN_CAPITAL_LETTER_A */ &&\n n <= 70 /* charset.LATIN_CAPITAL_LETTER_F */) ||\n (n >= 97 /* charset.LATIN_SMALL_LETTER_A */ &&\n n <= 102 /* charset.LATIN_SMALL_LETTER_F */)) {\n this.unicode += String.fromCharCode(n);\n this.state += 1;\n continue;\n }\n break;\n case 18 /* TokenizerStates.STRING_UNICODE_DIGIT_4 */:\n if ((n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) ||\n (n >= 65 /* charset.LATIN_CAPITAL_LETTER_A */ &&\n n <= 70 /* charset.LATIN_CAPITAL_LETTER_F */) ||\n (n >= 97 /* charset.LATIN_SMALL_LETTER_A */ &&\n n <= 102 /* charset.LATIN_SMALL_LETTER_F */)) {\n const intVal = parseInt(this.unicode + String.fromCharCode(n), 16);\n this.appendUnicodeCodeUnit(intVal);\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n break;\n // Number\n case 20 /* TokenizerStates.NUMBER_AFTER_INITIAL_MINUS */:\n if (n === 48 /* charset.DIGIT_ZERO */) {\n this.bufferedNumber.appendChar(n);\n this.state = 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */;\n continue;\n }\n if (n >= 49 /* charset.DIGIT_ONE */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n this.state = 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */;\n continue;\n }\n break;\n case 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */:\n if (n === 46 /* charset.FULL_STOP */) {\n this.bufferedNumber.appendChar(n);\n this.state = 23 /* TokenizerStates.NUMBER_AFTER_FULL_STOP */;\n continue;\n }\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */ ||\n n === 69 /* charset.LATIN_CAPITAL_LETTER_E */) {\n this.bufferedNumber.appendChar(n);\n this.state = 25 /* TokenizerStates.NUMBER_AFTER_E */;\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n case 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n if (n === 46 /* charset.FULL_STOP */) {\n this.bufferedNumber.appendChar(n);\n this.state = 23 /* TokenizerStates.NUMBER_AFTER_FULL_STOP */;\n continue;\n }\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */ ||\n n === 69 /* charset.LATIN_CAPITAL_LETTER_E */) {\n this.bufferedNumber.appendChar(n);\n this.state = 25 /* TokenizerStates.NUMBER_AFTER_E */;\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n case 23 /* TokenizerStates.NUMBER_AFTER_FULL_STOP */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n this.state = 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */;\n continue;\n }\n break;\n case 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */ ||\n n === 69 /* charset.LATIN_CAPITAL_LETTER_E */) {\n this.bufferedNumber.appendChar(n);\n this.state = 25 /* TokenizerStates.NUMBER_AFTER_E */;\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n // @ts-expect-error fall through case\n case 25 /* TokenizerStates.NUMBER_AFTER_E */:\n if (n === 43 /* charset.PLUS_SIGN */ || n === 45 /* charset.HYPHEN_MINUS */) {\n this.bufferedNumber.appendChar(n);\n this.state = 26 /* TokenizerStates.NUMBER_AFTER_E_AND_SIGN */;\n continue;\n }\n case 26 /* TokenizerStates.NUMBER_AFTER_E_AND_SIGN */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n this.state = 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */;\n continue;\n }\n break;\n case 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n // TRUE\n case 3 /* TokenizerStates.TRUE1 */:\n if (n === 114 /* charset.LATIN_SMALL_LETTER_R */) {\n this.state = 4 /* TokenizerStates.TRUE2 */;\n continue;\n }\n break;\n case 4 /* TokenizerStates.TRUE2 */:\n if (n === 117 /* charset.LATIN_SMALL_LETTER_U */) {\n this.state = 5 /* TokenizerStates.TRUE3 */;\n continue;\n }\n break;\n case 5 /* TokenizerStates.TRUE3 */:\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.TRUE,\n value: true,\n offset: this.offset,\n });\n this.offset += 3;\n continue;\n }\n break;\n // FALSE\n case 6 /* TokenizerStates.FALSE1 */:\n if (n === 97 /* charset.LATIN_SMALL_LETTER_A */) {\n this.state = 7 /* TokenizerStates.FALSE2 */;\n continue;\n }\n break;\n case 7 /* TokenizerStates.FALSE2 */:\n if (n === 108 /* charset.LATIN_SMALL_LETTER_L */) {\n this.state = 8 /* TokenizerStates.FALSE3 */;\n continue;\n }\n break;\n case 8 /* TokenizerStates.FALSE3 */:\n if (n === 115 /* charset.LATIN_SMALL_LETTER_S */) {\n this.state = 9 /* TokenizerStates.FALSE4 */;\n continue;\n }\n break;\n case 9 /* TokenizerStates.FALSE4 */:\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.FALSE,\n value: false,\n offset: this.offset,\n });\n this.offset += 4;\n continue;\n }\n break;\n // NULL\n case 10 /* TokenizerStates.NULL1 */:\n if (n === 117 /* charset.LATIN_SMALL_LETTER_U */) {\n this.state = 11 /* TokenizerStates.NULL2 */;\n continue;\n }\n break;\n case 11 /* TokenizerStates.NULL2 */:\n if (n === 108 /* charset.LATIN_SMALL_LETTER_L */) {\n this.state = 12 /* TokenizerStates.NULL3 */;\n continue;\n }\n break;\n case 12 /* TokenizerStates.NULL3 */:\n if (n === 108 /* charset.LATIN_SMALL_LETTER_L */) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.NULL,\n value: null,\n offset: this.offset,\n });\n this.offset += 3;\n continue;\n }\n break;\n case 28 /* TokenizerStates.SEPARATOR */:\n this.separatorIndex += 1;\n if (!this.separatorBytes ||\n n !== this.separatorBytes[this.separatorIndex]) {\n break;\n }\n if (this.separatorIndex === this.separatorBytes.length - 1) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.SEPARATOR,\n value: this.separator,\n offset: this.offset + this.separatorIndex,\n });\n this.separatorIndex = 0;\n }\n continue;\n // BOM support\n case 30 /* TokenizerStates.BOM */:\n if (n === this.bom[this.bomIndex]) {\n if (this.bomIndex === this.bom.length - 1) {\n this.state = 0 /* TokenizerStates.START */;\n this.bom = undefined;\n this.bomIndex = 0;\n continue;\n }\n this.bomIndex += 1;\n continue;\n }\n break;\n case 1 /* TokenizerStates.ENDED */:\n if (n === 32 /* charset.SPACE */ ||\n n === 10 /* charset.NEWLINE */ ||\n n === 13 /* charset.CARRIAGE_RETURN */ ||\n n === 9 /* charset.TAB */) {\n // whitespace\n continue;\n }\n }\n throw new TokenizerError(`Unexpected \"${String.fromCharCode(n)}\" at chunk position \"${i}\" (absolute position \"${this.streamByteLength + i}\") in state ${TokenizerStateToString(this.state)}`);\n }\n this.streamByteLength += buffer.length;\n if (this.emitPartialTokens) {\n switch (this.state) {\n case 3 /* TokenizerStates.TRUE1 */:\n case 4 /* TokenizerStates.TRUE2 */:\n case 5 /* TokenizerStates.TRUE3 */:\n this.onToken({\n token: TokenType.TRUE,\n value: true,\n offset: this.offset,\n partial: true,\n });\n break;\n case 6 /* TokenizerStates.FALSE1 */:\n case 7 /* TokenizerStates.FALSE2 */:\n case 8 /* TokenizerStates.FALSE3 */:\n case 9 /* TokenizerStates.FALSE4 */:\n this.onToken({\n token: TokenType.FALSE,\n value: false,\n offset: this.offset,\n partial: true,\n });\n break;\n case 10 /* TokenizerStates.NULL1 */:\n case 11 /* TokenizerStates.NULL2 */:\n case 12 /* TokenizerStates.NULL3 */:\n this.onToken({\n token: TokenType.NULL,\n value: null,\n offset: this.offset,\n partial: true,\n });\n break;\n case 13 /* TokenizerStates.STRING_DEFAULT */: {\n const string = this.bufferedString.toString();\n this.onToken({\n token: TokenType.STRING,\n value: string,\n offset: this.offset,\n partial: true,\n });\n break;\n }\n case 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */:\n case 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */:\n case 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */:\n case 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */:\n try {\n this.onToken({\n token: TokenType.NUMBER,\n value: this.parseNumber(this.bufferedNumber.toString()),\n offset: this.offset,\n partial: true,\n });\n }\n catch (_a) {\n // Number couldn't be parsed. Do nothing.\n }\n }\n }\n }\n catch (err) {\n this.error(err);\n }\n }\n emitNumber() {\n this.onToken({\n token: TokenType.NUMBER,\n value: this.parseNumber(this.bufferedNumber.toString()),\n offset: this.offset,\n });\n this.offset += this.bufferedNumber.byteLength - 1;\n }\n /**\n * Turns the characters of a JSON number into a JavaScript value.\n *\n * Equivalent to `Number(numberStr)`. Override it to handle numbers that a\n * JavaScript number can't represent, for example by keeping them as strings.\n *\n * @param numberStr The number, as it appeared in the JSON stream.\n * @returns The parsed number.\n */\n parseNumber(numberStr) {\n return Number(numberStr);\n }\n /**\n * Puts the tokenizer in an error state and reports `err` through\n * {@linkcode Tokenizer.onError}. The tokenizer can't be used afterwards.\n *\n * @param err What went wrong.\n */\n error(err) {\n if (this.state !== 1 /* TokenizerStates.ENDED */) {\n this.state = 2 /* TokenizerStates.ERROR */;\n }\n this.onError(err);\n }\n /**\n * Signals that the stream is over, flushing any number that was still being\n * tokenized and then ending the tokenizer, which can't be used afterwards.\n *\n * @throws {TokenizerError} If the stream ended in the middle of a token and no\n * {@linkcode Tokenizer.onError} callback has been set.\n */\n end() {\n switch (this.state) {\n case 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */:\n case 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */:\n case 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */:\n case 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */:\n this.state = 1 /* TokenizerStates.ENDED */;\n this.emitNumber();\n this.onEnd();\n break;\n case 29 /* TokenizerStates.BOM_OR_START */:\n case 0 /* TokenizerStates.START */:\n case 2 /* TokenizerStates.ERROR */:\n this.state = 1 /* TokenizerStates.ENDED */;\n this.onEnd();\n break;\n default:\n this.error(new TokenizerError(`Tokenizer ended in the middle of a token (state: ${TokenizerStateToString(this.state)}). Either not all the data was received or the data was invalid.`));\n }\n }\n /**\n * Called with every token found in the stream. Override it to consume them;\n * by default it throws.\n *\n * @param parsedToken The token and where it was found.\n */\n // biome-ignore lint/correctness/noUnusedFunctionParameters: override point; the parameter is part of the public signature\n onToken(parsedToken) {\n // Override me\n throw new TokenizerError('Can\\'t emit tokens before the \"onToken\" callback has been set up.');\n }\n /**\n * Called when the data can't be tokenized. Override it to handle errors\n * asynchronously; by default it throws, so the error surfaces out of the\n * {@linkcode Tokenizer.write} or {@linkcode Tokenizer.end} call that caused it.\n *\n * @param err What went wrong.\n */\n onError(err) {\n // Override me\n throw err;\n }\n /** Called once the tokenizer has ended. Override it to react to that; by default it does nothing. */\n onEnd() {\n // Override me\n }\n}\n//# sourceMappingURL=tokenizer.js.map","/**\n * A parser that assembles the tokens emitted by the tokenizer into JSON values.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n * import TokenParser from \"@streamparser/json/tokenparser.js\";\n *\n * const tokenizer = new Tokenizer();\n * const tokenParser = new TokenParser({ paths: [\"$.*\"] });\n * tokenizer.onToken = tokenParser.write.bind(tokenParser);\n * tokenParser.onValue = ({ value }) => {\n * // process the value\n * };\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * ```\n *\n * @module\n */\nimport TokenType from \"./utils/types/tokenType.js\";\n// Parser States\nvar TokenParserState;\n(function (TokenParserState) {\n TokenParserState[TokenParserState[\"VALUE\"] = 0] = \"VALUE\";\n TokenParserState[TokenParserState[\"KEY\"] = 1] = \"KEY\";\n TokenParserState[TokenParserState[\"COLON\"] = 2] = \"COLON\";\n TokenParserState[TokenParserState[\"COMMA\"] = 3] = \"COMMA\";\n TokenParserState[TokenParserState[\"ENDED\"] = 4] = \"ENDED\";\n TokenParserState[TokenParserState[\"ERROR\"] = 5] = \"ERROR\";\n TokenParserState[TokenParserState[\"SEPARATOR\"] = 6] = \"SEPARATOR\";\n})(TokenParserState || (TokenParserState = {}));\nfunction TokenParserStateToString(state) {\n return [\"VALUE\", \"KEY\", \"COLON\", \"COMMA\", \"ENDED\", \"ERROR\", \"SEPARATOR\"][state];\n}\n// Plain bracket assignment invokes the inherited `Object.prototype.__proto__`\n// setter for that one key name, letting a \"__proto__\" key in the input alter\n// obj's actual prototype instead of becoming a property of obj. Only that key\n// needs the safe (but slower) Object.defineProperty path -- every other key,\n// i.e. the overwhelming majority, keeps the fast, JIT-friendly assignment.\nfunction setProperty(obj, key, value) {\n if (key === \"__proto__\") {\n Object.defineProperty(obj, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n return;\n }\n obj[key] = value;\n}\nconst defaultOpts = {\n paths: undefined,\n keepStack: true,\n separator: undefined,\n emitPartialValues: false,\n};\n/** The error thrown when the token parser is misconfigured or gets an unexpected token. */\nexport class TokenParserError extends Error {\n /**\n * @param message What went wrong.\n */\n constructor(message) {\n super(message);\n // Typescript is broken. This is a workaround\n Object.setPrototypeOf(this, TokenParserError.prototype);\n }\n}\n/**\n * A parser that assembles the tokens emitted by a tokenizer into JSON values.\n *\n * Tokens are pushed in with {@linkcode TokenParser.write} and the resulting\n * values come back through the {@linkcode TokenParser.onValue} callback, which\n * the user is expected to override. Values are emitted innermost first, as soon\n * as each one is complete, and can be narrowed down to the ones of interest with\n * the `paths` option.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n * import TokenParser from \"@streamparser/json/tokenparser.js\";\n *\n * const tokenizer = new Tokenizer();\n * const tokenParser = new TokenParser();\n * tokenizer.onToken = tokenParser.write.bind(tokenParser);\n * tokenParser.onValue = ({ value, key, parent, stack }) => {\n * // process the value\n * };\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * // onValue is called 3 times: \"a\", [\"a\"] and { test: [\"a\"] }\n * ```\n */\nexport default class TokenParser {\n /**\n * @param opts What to emit and how. See {@linkcode TokenParserOptions}.\n * @throws {TokenParserError} If any of the configured `paths` is not a valid selector.\n */\n constructor(opts) {\n this.state = 0 /* TokenParserState.VALUE */;\n this.mode = undefined;\n this.key = undefined;\n this.value = undefined;\n this.stack = [];\n // Tracked explicitly rather than inferred from `value` because keepStack:false\n // deletes emitted properties from `value`, so Object.keys(value).length can no\n // longer be trusted to tell an empty object from one whose members were purged.\n this.memberCount = 0;\n opts = Object.assign(Object.assign({}, defaultOpts), opts);\n if (opts.paths) {\n const root = { children: new Map(), terminal: false };\n // A match-everything selector makes the whole set match everything, which\n // we represent by leaving the trie undefined (as with no paths at all).\n let matchEverything = false;\n for (const path of opts.paths) {\n if (path === undefined || path === \"$*\") {\n matchEverything = true;\n continue;\n }\n if (!path.startsWith(\"$\"))\n throw new TokenParserError(`Invalid selector \"${path}\". Should start with \"$\".`);\n const segments = path.split(\".\").slice(1);\n if (segments.includes(\"\"))\n throw new TokenParserError(`Invalid selector \"${path}\". \"..\" syntax not supported.`);\n let node = root;\n for (const segment of segments) {\n let child = node.children.get(segment);\n if (!child) {\n child = { children: new Map(), terminal: false };\n node.children.set(segment, child);\n }\n node = child;\n }\n node.terminal = true;\n }\n if (!matchEverything)\n this.selectorTrie = root;\n }\n this.keepStack = opts.keepStack || false;\n this.separator = opts.separator;\n if (!opts.emitPartialValues) {\n this.emitPartial = () => { };\n }\n }\n shouldEmit() {\n if (!this.selectorTrie)\n return true;\n return this.matchesSelector(this.selectorTrie, 0);\n }\n // Depth-first walk of the selector trie down the current value's key path:\n // [stack[1].key, ..., stack[n-1].key, this.key] (n = stack.length)\n // A value matches iff some branch reaches a terminal node at the exact depth.\n // Recursion (rather than an explicit frontier) keeps the common single-path\n // walk allocation-free and short-circuits on the first match, like the old\n // rescan did, while collapsing its O(number of selectors) cost to O(depth).\n matchesSelector(node, level) {\n const keyCount = this.stack.length;\n if (level === keyCount)\n return node.terminal;\n const key = level < keyCount - 1 ? this.stack[level + 1].key : this.key;\n // \"*\" matches any key; try it first since it needs no key lookup.\n const wildcard = node.children.get(\"*\");\n if (wildcard && this.matchesSelector(wildcard, level + 1))\n return true;\n // Then a literal match. Resolving the key to a string allocates for numeric\n // array indices, so skip it unless there's a literal child to match.\n const hasLiteralChild = node.children.size > (wildcard ? 1 : 0);\n if (hasLiteralChild) {\n const segment = key === null || key === void 0 ? void 0 : key.toString();\n if (segment !== undefined) {\n const child = node.children.get(segment);\n if (child && this.matchesSelector(child, level + 1))\n return true;\n }\n }\n return false;\n }\n push() {\n this.stack.push({\n key: this.key,\n value: this.value,\n mode: this.mode,\n emit: this.shouldEmit(),\n memberCount: this.memberCount,\n });\n }\n pop() {\n const value = this.value;\n // biome-ignore lint/suspicious/noImplicitAnyLet: assigned via the destructuring assignment below\n let emit;\n ({\n key: this.key,\n value: this.value,\n mode: this.mode,\n emit,\n memberCount: this.memberCount,\n } = this.stack.pop());\n this.state =\n this.mode !== undefined ? 3 /* TokenParserState.COMMA */ : 0 /* TokenParserState.VALUE */;\n this.emit(value, emit);\n }\n emit(value, emit) {\n if (!this.keepStack &&\n this.value &&\n this.stack.every((item) => !item.emit)) {\n if (Array.isArray(this.value)) {\n // Shrinking `.length` drops the slot, unlike `delete`, which only leaves a hole\n this.value.length -= 1;\n }\n else {\n delete this.value[this.key];\n }\n }\n if (emit) {\n this.onValue({\n value: value,\n key: this.key,\n parent: this.value,\n stack: this.stack,\n });\n }\n if (this.stack.length === 0) {\n if (this.separator) {\n this.state = 6 /* TokenParserState.SEPARATOR */;\n }\n else if (this.separator === undefined) {\n this.end();\n }\n // else if separator === '', expect next JSON object.\n }\n }\n emitPartial(value) {\n if (!this.shouldEmit())\n return;\n if (this.state === 1 /* TokenParserState.KEY */) {\n this.onValue({\n value: undefined,\n key: value,\n parent: this.value,\n stack: this.stack,\n partial: true,\n });\n return;\n }\n this.onValue({\n value: value,\n key: this.key,\n parent: this.value,\n stack: this.stack,\n partial: true,\n });\n }\n /** Whether the token parser is ended, and thus no longer accepting tokens. */\n get isEnded() {\n return this.state === 4 /* TokenParserState.ENDED */;\n }\n /**\n * Pushes the next token into the parser.\n *\n * Parsing happens synchronously, so every value that the token completes is\n * emitted through {@linkcode TokenParser.onValue} before this returns.\n *\n * @param parsedTokenInfo The token to process, as emitted by a tokenizer.\n * @throws {TokenParserError} If the token can't appear at this point of the\n * JSON document and no {@linkcode TokenParser.onError} callback has been set.\n */\n write({ token, value, partial, }) {\n try {\n if (partial) {\n if (this.state !== 0 /* TokenParserState.VALUE */ &&\n this.state !== 1 /* TokenParserState.KEY */) {\n throw new TokenParserError(`Unexpected partial ${TokenType[token]} (${JSON.stringify(value)}) in state ${TokenParserStateToString(this.state)}`);\n }\n this.emitPartial(value);\n return;\n }\n if (this.state === 0 /* TokenParserState.VALUE */) {\n if (token === TokenType.STRING ||\n token === TokenType.NUMBER ||\n token === TokenType.TRUE ||\n token === TokenType.FALSE ||\n token === TokenType.NULL) {\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n setProperty(this.value, this.key, value);\n this.state = 3 /* TokenParserState.COMMA */;\n this.memberCount++;\n }\n else if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n this.value.push(value);\n this.state = 3 /* TokenParserState.COMMA */;\n this.memberCount++;\n }\n this.emit(value, this.shouldEmit());\n return;\n }\n if (token === TokenType.LEFT_BRACE) {\n this.memberCount++;\n this.push();\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n const val = {};\n setProperty(this.value, this.key, val);\n this.value = val;\n }\n else if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n const val = {};\n this.value.push(val);\n this.value = val;\n }\n else {\n this.value = {};\n }\n this.mode = 0 /* TokenParserMode.OBJECT */;\n this.state = 1 /* TokenParserState.KEY */;\n this.key = undefined;\n this.memberCount = 0;\n this.emitPartial();\n return;\n }\n if (token === TokenType.LEFT_BRACKET) {\n this.memberCount++;\n this.push();\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n const val = [];\n setProperty(this.value, this.key, val);\n this.value = val;\n }\n else if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n const val = [];\n this.value.push(val);\n this.value = val;\n }\n else {\n this.value = [];\n }\n this.mode = 1 /* TokenParserMode.ARRAY */;\n this.state = 0 /* TokenParserState.VALUE */;\n this.key = 0;\n this.memberCount = 0;\n this.emitPartial();\n return;\n }\n if (this.mode === 1 /* TokenParserMode.ARRAY */ &&\n token === TokenType.RIGHT_BRACKET &&\n this.memberCount === 0) {\n this.pop();\n return;\n }\n }\n if (this.state === 1 /* TokenParserState.KEY */) {\n if (token === TokenType.STRING) {\n this.key = value;\n this.state = 2 /* TokenParserState.COLON */;\n this.emitPartial();\n return;\n }\n if (token === TokenType.RIGHT_BRACE && this.memberCount === 0) {\n this.pop();\n return;\n }\n }\n if (this.state === 2 /* TokenParserState.COLON */) {\n if (token === TokenType.COLON) {\n this.state = 0 /* TokenParserState.VALUE */;\n return;\n }\n }\n if (this.state === 3 /* TokenParserState.COMMA */) {\n if (token === TokenType.COMMA) {\n if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n this.state = 0 /* TokenParserState.VALUE */;\n this.key += 1;\n return;\n }\n /* istanbul ignore else */\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n this.state = 1 /* TokenParserState.KEY */;\n return;\n }\n }\n if ((token === TokenType.RIGHT_BRACE &&\n this.mode === 0 /* TokenParserMode.OBJECT */) ||\n (token === TokenType.RIGHT_BRACKET &&\n this.mode === 1 /* TokenParserMode.ARRAY */)) {\n this.pop();\n return;\n }\n }\n if (this.state === 6 /* TokenParserState.SEPARATOR */) {\n if (token === TokenType.SEPARATOR && value === this.separator) {\n this.state = 0 /* TokenParserState.VALUE */;\n return;\n }\n }\n // Edge case in which the separator is just whitespace and it's found in the middle of the JSON\n if (token === TokenType.SEPARATOR &&\n this.state !== 6 /* TokenParserState.SEPARATOR */ &&\n Array.from(value)\n .map((n) => n.charCodeAt(0))\n .every((n) => n === 32 /* charset.SPACE */ ||\n n === 10 /* charset.NEWLINE */ ||\n n === 13 /* charset.CARRIAGE_RETURN */ ||\n n === 9 /* charset.TAB */)) {\n // whitespace\n return;\n }\n throw new TokenParserError(`Unexpected ${TokenType[token]} (${JSON.stringify(value)}) in state ${TokenParserStateToString(this.state)}`);\n }\n catch (err) {\n this.error(err);\n }\n }\n /**\n * Puts the token parser in an error state and reports `err` through\n * {@linkcode TokenParser.onError}. The parser can't be used afterwards.\n *\n * @param err What went wrong.\n */\n error(err) {\n if (this.state !== 4 /* TokenParserState.ENDED */) {\n this.state = 5 /* TokenParserState.ERROR */;\n }\n this.onError(err);\n }\n /**\n * Signals that there are no more tokens, ending the token parser, which can't\n * be used afterwards.\n *\n * @throws {Error} If the JSON document was left half-parsed and no\n * {@linkcode TokenParser.onError} callback has been set.\n */\n end() {\n if ((this.state !== 0 /* TokenParserState.VALUE */ &&\n this.state !== 6 /* TokenParserState.SEPARATOR */) ||\n this.stack.length > 0) {\n this.error(new Error(`Parser ended in mid-parsing (state: ${TokenParserStateToString(this.state)}). Either not all the data was received or the data was invalid.`));\n }\n else {\n this.state = 4 /* TokenParserState.ENDED */;\n this.onEnd();\n }\n }\n /**\n * Called with every value that matches the configured `paths`. Override it to\n * consume them; by default it throws.\n *\n * @param parsedElementInfo The value and where it was found. Its `parent` and\n * `stack` are live references into the parser's in-progress structures, so use\n * `cloneParsedElementInfo` to snapshot them if they need to outlive the call.\n */\n // biome-ignore lint/correctness/noUnusedFunctionParameters: override point; the parameter is part of the public signature\n onValue(parsedElementInfo) {\n // Override me\n throw new TokenParserError('Can\\'t emit data before the \"onValue\" callback has been set up.');\n }\n /**\n * Called when the tokens don't add up to valid JSON. Override it to handle\n * errors asynchronously; by default it throws, so the error surfaces out of the\n * {@linkcode TokenParser.write} or {@linkcode TokenParser.end} call that caused it.\n *\n * @param err What went wrong.\n */\n onError(err) {\n // Override me\n throw err;\n }\n /** Called once the token parser has ended. Override it to react to that; by default it does nothing. */\n onEnd() {\n // Override me\n }\n}\n//# sourceMappingURL=tokenparser.js.map","/**\n * The shape of the token parser's stack, i.e. the chain of containers that a\n * parsed value is nested in.\n *\n * @module\n */\n/** Whether the container being parsed is a JSON object or a JSON array. */\nexport var TokenParserMode;\n(function (TokenParserMode) {\n /** The container is a JSON object, so its members are keyed by property name. */\n TokenParserMode[TokenParserMode[\"OBJECT\"] = 0] = \"OBJECT\";\n /** The container is a JSON array, so its members are keyed by index. */\n TokenParserMode[TokenParserMode[\"ARRAY\"] = 1] = \"ARRAY\";\n})(TokenParserMode || (TokenParserMode = {}));\n//# sourceMappingURL=stackElement.js.map","// ── External Dependencies & Registrations\nimport { Tokenizer, TokenType } from '@streamparser/json';\n\n// ── DPUse Framework\nimport type { StructureContainerKindId, StructureKindId, StructurePath } from '@dpuse/dpuse-shared';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Walks the tokens of a JSON or JSON Lines stream and reports its structure as it goes: each list and object as it opens\n// and closes, each key and each other value. Index building, browsing and reading rows all share it, so they agree on\n// what the structure is.\nexport interface StructureWalker {\n end: () => void; // Ends the stream. Fails if the JSON is cut off.\n write: (input: Uint8Array) => void; // Fails if the JSON is not valid.\n}\n\nexport interface StructureWalkerOptions {\n baseOffset: number; // Where the stream starts in the item, so offsets count from the start of the item.\n firstItemIndex: number; // The index of the first item, when the stream starts inside a list.\n isJsonLines: boolean;\n isStartInsideList: boolean; // Whether the stream starts at an item inside a list, at a checkpoint, rather than at a value.\n rootPath: StructurePath; // The path of the value the stream starts at, or of the list it starts inside.\n}\n\nexport interface StructureWalkerHandlers {\n onContainerEnd?: (container: OpenContainer, endOffset: number) => void;\n onContainerStart?: (container: OpenContainer) => void;\n onKey?: (container: OpenContainer, key: string) => void;\n onScalar?: (scalar: ScalarEntry) => void;\n onTokenStart?: (offset: number) => void; // Called before each token, so a value's end can be taken from where the next token starts.\n}\n\nexport interface OpenContainer {\n childCount: number;\n depth: number; // 0 for the value the stream starts at.\n isVirtual: boolean; // Whether the container is the list a stream starts inside, or the lines of JSON Lines, which have no brackets of their own.\n key: EntryKey; // Its key in its parent.\n kindId: StructureContainerKindId;\n parent: OpenContainer | undefined;\n path: StructurePath;\n pendingKey: string | undefined; // The key the next value in an object takes.\n positionId: PositionId;\n startOffset: number;\n}\n\nexport type EntryKey = number | string | undefined; // An object entry's key or a list item's index. Undefined for the value the stream starts at.\n\n// Where an open container is in its own grammar, so a token out of place fails rather than skewing the structure.\ntype PositionId = 'afterColon' | 'afterComma' | 'afterKey' | 'afterValue' | 'start';\n\nexport interface ScalarEntry {\n key: EntryKey;\n kindId: Exclude<StructureKindId, StructureContainerKindId>;\n parent: OpenContainer | undefined;\n startOffset: number;\n value: JsonScalar;\n}\n\n// A number as written in the item. JavaScript numbers lose digits past about 16 and turn very large exponents into\n// 'Infinity', so a number is never converted.\nexport interface NumberText {\n readonly numberText: string;\n}\n\nexport type JsonScalar = boolean | NumberText | string | null;\nexport type JsonValue = JsonScalar | JsonValue[] | { [key: string]: JsonValue };\n\n// What a walker knows while it reads.\ninterface WalkerState {\n byteOffset: number; // Bytes skipped before the tokenizer, such as a byte order mark, so token offsets still count from the stream's start.\n byteCount: number; // Bytes written, so a stream cut short can say where it ends.\n current: OpenContainer | undefined;\n isFirstWrite: boolean;\n isRootClosed: boolean;\n isStarted: boolean;\n}\n\n// Everything a token taker needs.\ninterface Walk {\n handlers: StructureWalkerHandlers;\n options: StructureWalkerOptions;\n state: WalkerState;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst BYTE_ORDER_MARK = [0xef, 0xbb, 0xbf];\n\n// What each kind of token does to the structure.\nconst TOKEN_TAKERS: Record<TokenType, (walk: Walk, value: unknown, offset: number) => void> = {\n [TokenType.LEFT_BRACE]: (walk, _value, offset) => {\n openContainer(walk, 'object', offset);\n },\n [TokenType.RIGHT_BRACE]: (walk, _value, offset) => {\n closeContainer(walk, 'object', offset);\n },\n [TokenType.LEFT_BRACKET]: (walk, _value, offset) => {\n openContainer(walk, 'list', offset);\n },\n [TokenType.RIGHT_BRACKET]: (walk, _value, offset) => {\n closeContainer(walk, 'list', offset);\n },\n [TokenType.COLON]: (walk, _value, offset) => {\n takeColon(walk.state, offset);\n },\n [TokenType.COMMA]: (walk, _value, offset) => {\n takeComma(walk.state, offset);\n },\n [TokenType.TRUE]: (walk, _value, offset) => {\n takeScalar(walk, 'boolean', true, offset);\n },\n [TokenType.FALSE]: (walk, _value, offset) => {\n takeScalar(walk, 'boolean', false, offset);\n },\n [TokenType.NULL]: (walk, _value, offset) => {\n takeScalar(walk, 'null', null, offset);\n },\n [TokenType.STRING]: (walk, value, offset) => {\n takeString(walk, value as string, offset);\n },\n [TokenType.NUMBER]: (walk, value, offset) => {\n takeScalar(walk, 'number', value as NumberText, offset);\n },\n [TokenType.SEPARATOR]: () => {\n // A JSON Lines separator carries no structure.\n }\n};\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function createStructureWalker(options: StructureWalkerOptions, handlers: StructureWalkerHandlers): StructureWalker {\n const tokenizer = new Tokenizer(options.isJsonLines ? { separator: '\\n' } : undefined);\n // The tokenizer turns numbers into JavaScript numbers through this method, so replacing it keeps them as written.\n Object.assign(tokenizer, { parseNumber: (numberText: string): NumberText => ({ numberText }) });\n const state: WalkerState = { byteCount: 0, byteOffset: 0, current: undefined, isFirstWrite: true, isRootClosed: false, isStarted: false };\n\n // The lines of JSON Lines, or the list the stream starts inside, have no opening bracket in the stream.\n if (options.isJsonLines || options.isStartInsideList) {\n const container = constructContainer({\n depth: 0,\n isVirtual: true,\n key: undefined,\n kindId: 'list',\n parent: undefined,\n path: options.rootPath,\n startOffset: options.baseOffset\n });\n container.childCount = options.firstItemIndex;\n container.positionId = !options.isJsonLines && options.firstItemIndex > 0 ? 'afterComma' : 'start';\n state.current = container;\n handlers.onContainerStart?.(container);\n }\n\n const walk: Walk = { handlers, options, state };\n tokenizer.onToken = ({ offset: tokenOffset, token, value }): void => {\n const offset = options.baseOffset + state.byteOffset + tokenOffset;\n state.isStarted = true;\n handlers.onTokenStart?.(offset);\n TOKEN_TAKERS[token](walk, value, offset);\n };\n\n return {\n end: (): void => {\n tokenizer.end();\n if (!options.isJsonLines && !state.isStarted) failAt('The JSON is empty', options.baseOffset);\n const isOpen = state.current != null && !(options.isJsonLines && state.current.isVirtual);\n if (isOpen) failAt('The JSON ends before it is complete', options.baseOffset + state.byteCount);\n if (state.current != null) handlers.onContainerEnd?.(state.current, NaN); // Only the lines of JSON Lines are still open. The caller knows where they end.\n },\n write: (input: Uint8Array): void => {\n let bytes = input;\n state.byteCount += input.length;\n if (state.isFirstWrite) {\n state.isFirstWrite = false;\n if (options.baseOffset === 0 && BYTE_ORDER_MARK.every((byte, index) => bytes[index] === byte)) {\n bytes = bytes.subarray(BYTE_ORDER_MARK.length);\n state.byteOffset = BYTE_ORDER_MARK.length;\n }\n }\n tokenizer.write(bytes);\n }\n };\n}\n\nexport function isNumberText(value: unknown): value is NumberText {\n return typeof value === 'object' && value != null && 'numberText' in value;\n}\n\n// JSON text for a value, writing numbers as they were written in the item.\nexport function stringifyJsonValue(value: JsonValue): string {\n if (value == null || typeof value !== 'object') return JSON.stringify(value);\n if (isNumberText(value)) return value.numberText;\n if (Array.isArray(value)) return `[${value.map((item) => stringifyJsonValue(item)).join(',')}]`;\n return `{${Object.entries(value)\n .map(([key, item]) => `${JSON.stringify(key)}:${stringifyJsonValue(item)}`)\n .join(',')}}`;\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nfunction constructContainer(input: Omit<OpenContainer, 'childCount' | 'pendingKey' | 'positionId'>): OpenContainer {\n return { ...input, childCount: 0, pendingKey: undefined, positionId: 'start' };\n}\n\nfunction failAt(message: string, offset: number): never {\n throw new Error(`${message} at byte ${String(offset)}.`);\n}\n\n// Takes the place of a new value in the current container, and returns its key there.\nfunction startValue(state: WalkerState, options: StructureWalkerOptions, offset: number): { key: EntryKey } {\n const container = state.current;\n if (container == null) {\n if (state.isRootClosed) failAt('Unexpected content after the end of the JSON', offset);\n return { key: undefined };\n }\n if (container.kindId === 'object') {\n if (container.positionId === 'afterKey') failAt(\"Expected ':'\", offset);\n else if (container.positionId === 'afterValue') failAt(\"Expected ',' or '}'\", offset);\n else if (container.positionId !== 'afterColon') failAt('Expected a key', offset);\n container.positionId = 'afterValue';\n container.childCount++;\n return { key: container.pendingKey };\n }\n // Lines of JSON Lines follow each other with no comma between them.\n const isCommaNeeded = !(container.isVirtual && options.isJsonLines);\n if (isCommaNeeded && container.positionId === 'afterValue') failAt(\"Expected ','\", offset);\n container.positionId = 'afterValue';\n return { key: container.childCount++ };\n}\n\nfunction openContainer({ handlers, options, state }: Walk, kindId: StructureContainerKindId, offset: number): void {\n const { key } = startValue(state, options, offset);\n const parent = state.current;\n const path = parent == null ? options.rootPath : [...parent.path, key ?? ''];\n state.current = constructContainer({ depth: parent == null ? 0 : parent.depth + 1, isVirtual: false, key, kindId, parent, path, startOffset: offset });\n handlers.onContainerStart?.(state.current);\n}\n\nfunction closeContainer({ handlers, state }: Walk, kindId: StructureContainerKindId, offset: number): void {\n const container = state.current;\n const bracket = kindId === 'object' ? '}' : ']';\n if (container?.kindId !== kindId) return failAt(`Unexpected '${bracket}'`, offset);\n if (container.positionId !== 'start' && container.positionId !== 'afterValue') return failAt(`Unexpected '${bracket}'`, offset);\n // A list the stream starts inside closes with a bracket from the item the stream was cut from.\n handlers.onContainerEnd?.(container, container.isVirtual ? offset : offset + 1);\n state.current = container.isVirtual ? undefined : container.parent;\n if (state.current == null) state.isRootClosed = true;\n}\n\nfunction takeColon(state: WalkerState, offset: number): void {\n if (state.current?.positionId === 'afterKey') state.current.positionId = 'afterColon';\n else failAt(\"Unexpected ':'\", offset);\n}\n\nfunction takeComma(state: WalkerState, offset: number): void {\n if (state.current?.positionId === 'afterValue') state.current.positionId = 'afterComma';\n else failAt(\"Unexpected ','\", offset);\n}\n\n// A string where an object expects a key is the key.\nfunction takeString(walk: Walk, value: string, offset: number): void {\n const container = walk.state.current;\n if (container?.kindId === 'object' && (container.positionId === 'start' || container.positionId === 'afterComma')) {\n container.pendingKey = value;\n container.positionId = 'afterKey';\n walk.handlers.onKey?.(container, value);\n return;\n }\n takeScalar(walk, 'string', value, offset);\n}\n\nfunction takeScalar({ handlers, options, state }: Walk, kindId: ScalarEntry['kindId'], value: JsonScalar, offset: number): void {\n const parent = state.current;\n const { key } = startValue(state, options, offset);\n handlers.onScalar?.({ key, kindId, parent, startOffset: offset, value });\n if (state.current == null) state.isRootClosed = true;\n}\n","// ── DPUse Framework\nimport type { ParsedRecord, StructurePath } from '@dpuse/dpuse-shared';\n\n// ── Local Framework\nimport { isNumberText, stringifyJsonValue } from '@/structureWalker';\nimport type { JsonValue, OpenContainer, StructureWalkerHandlers } from '@/structureWalker';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Reads the items of the value at a path as they stream past. A list gives one item per entry. Any other value is one\n// item on its own.\nexport interface ItemReader {\n handlers: StructureWalkerHandlers;\n isTargetClosed: () => boolean; // Whether the value has been read through, so the rest of the stream is not needed.\n isTargetFound: () => boolean;\n}\n\n// The columns of a table, fixed by the first items read, so every row has the same values in the same places.\nexport interface TableShape {\n columnIndexes: Map<string, number>;\n columnNames: string[];\n}\n\n// A list or object being built, and the container it is built from.\ninterface ValueFrame {\n container: OpenContainer;\n value: JsonValue[] | Record<string, JsonValue>;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst SCALAR_COLUMN_NAME = 'value'; // The one column of a list whose items are not objects.\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function createItemReader(targetPath: StructurePath, onItem: (item: JsonValue) => void): ItemReader {\n const frames: ValueFrame[] = [];\n let targetContainer: OpenContainer | undefined;\n let isTargetFound = false;\n let isTargetClosed = false;\n\n const addValue = (container: OpenContainer, key: number | string | undefined, value: JsonValue): void => {\n const frame = frames.at(-1);\n if (frame?.container !== container) return;\n if (Array.isArray(frame.value)) frame.value.push(value);\n else frame.value[String(key)] = value;\n };\n\n const handlers: StructureWalkerHandlers = {\n onContainerEnd: (container) => {\n if (container === targetContainer) {\n isTargetClosed = true;\n targetContainer = undefined;\n }\n const frame = frames.at(-1);\n if (frame?.container !== container) return;\n frames.pop();\n const parentFrame = frames.at(-1);\n if (parentFrame == null) onItem(frame.value);\n else addValue(parentFrame.container, container.key, frame.value);\n },\n onContainerStart: (container) => {\n const isTarget = !isTargetFound && arePathsEqual(container.path, targetPath);\n if (isTarget) {\n isTargetFound = true;\n targetContainer = container;\n }\n // An object at the path is one item. A list's entries are its items.\n const isItem = (isTarget && container.kindId === 'object') || (targetContainer != null && container.parent === targetContainer && targetContainer.kindId === 'list');\n if (isItem || frames.length > 0) frames.push({ container, value: container.kindId === 'list' ? [] : constructRecordObject() });\n },\n onScalar: (scalar) => {\n const parent = scalar.parent;\n if (parent != null && frames.length > 0) {\n addValue(parent, scalar.key, scalar.value);\n return;\n }\n const isListItem = parent?.kindId === 'list' && parent === targetContainer;\n const isTarget = !isTargetFound && arePathsEqual(parent == null ? [] : [...parent.path, scalar.key ?? ''], targetPath);\n if (isTarget) {\n isTargetFound = true;\n isTargetClosed = true;\n }\n if (isListItem || isTarget) onItem(scalar.value);\n }\n };\n return { handlers, isTargetClosed: () => isTargetClosed, isTargetFound: () => isTargetFound };\n}\n\n// An item's fields, by column name. Nested objects are flattened into names joined by dots, and a list stays one value,\n// because rows cannot hold a variable number of columns.\nexport function flattenItem(item: JsonValue): Map<string, JsonValue> {\n const fields = new Map<string, JsonValue>();\n if (!isPlainObject(item)) {\n fields.set(SCALAR_COLUMN_NAME, item);\n return fields;\n }\n const addFields = (value: Record<string, JsonValue>, prefix: string): void => {\n for (const [key, fieldValue] of Object.entries(value)) {\n const name = prefix === '' ? key : `${prefix}.${key}`;\n if (isPlainObject(fieldValue) && Object.keys(fieldValue).length > 0) addFields(fieldValue, name);\n else fields.set(name, fieldValue);\n }\n };\n addFields(item, '');\n return fields;\n}\n\n// The columns found in the items, in the order first found.\nexport function constructTableShape(itemFields: Map<string, JsonValue>[]): TableShape {\n const columnIndexes = new Map<string, number>();\n for (const fields of itemFields) {\n for (const name of fields.keys()) if (!columnIndexes.has(name)) columnIndexes.set(name, columnIndexes.size);\n }\n return { columnIndexes, columnNames: columnIndexes.keys().toArray() };\n}\n\nexport function constructHeaderRecord(shape: TableShape): ParsedRecord {\n return shape.columnNames.map((name) => ({ value: name, valueWasQuoted: true }));\n}\n\n// A row in the table's column order. A field the item lacks is null. A field the table has no column for is dropped, and\n// reported so the caller can count the item as not uniform.\nexport function constructRecord(fields: Map<string, JsonValue>, shape: TableShape): { hasUnknownField: boolean; record: ParsedRecord } {\n const record: ParsedRecord = shape.columnNames.map(() => ({ value: null, valueWasQuoted: false }));\n let hasUnknownField = false;\n for (const [name, value] of fields) {\n const columnIndex = shape.columnIndexes.get(name);\n if (columnIndex == null) hasUnknownField = true;\n else record[columnIndex] = constructParsedValue(value);\n }\n return { hasUnknownField, record };\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nfunction arePathsEqual(path: StructurePath, otherPath: StructurePath): boolean {\n return path.length === otherPath.length && path.every((segment, index) => segment === otherPath[index]);\n}\n\n// An object with no prototype, so a key such as '__proto__' is kept as data rather than changing the object.\nfunction constructRecordObject(): Record<string, JsonValue> {\n return Object.create(null) as Record<string, JsonValue>;\n}\n\nfunction isPlainObject(value: JsonValue): value is Record<string, JsonValue> {\n return typeof value === 'object' && value != null && !Array.isArray(value) && !isNumberText(value);\n}\n\n// Text is marked as quoted, as in delimited text, so type inference keeps a string of digits as text.\nfunction constructParsedValue(value: JsonValue): ParsedRecord[number] {\n if (value == null) return { value: null, valueWasQuoted: false };\n if (typeof value === 'string') return { value, valueWasQuoted: true };\n if (typeof value === 'boolean') return { value: String(value), valueWasQuoted: false };\n if (isNumberText(value)) return { value: value.numberText, valueWasQuoted: false };\n return { value: stringifyJsonValue(value), valueWasQuoted: true };\n}\n","// ── DPUse Framework\nimport type { BuildStructureIndexOptions, DataFormatId, ListStructureEntriesOptions, ListStructureEntriesResult, ParsedRecord } from '@dpuse/dpuse-shared';\nimport { ignoreErrors, resolveDecoderId } from '@dpuse/dpuse-shared';\nimport type { ParsedRecordsChunk, ParseStreamOptions, ParseStreamSummary, ParseTextOptions, ParseTextResult, SampleIssue } from '@dpuse/dpuse-shared';\nimport type { StructuredParserInterface, StructureEntry, StructureIndex, StructureNode } from '@dpuse/dpuse-shared';\n\n// ── Local Framework\nimport { constructHeaderRecord, constructRecord, constructTableShape, createItemReader, flattenItem, type TableShape } from '@/itemRecords';\nimport { createStructureWalker, isNumberText, type JsonValue, type OpenContainer, type StructureWalker, type StructureWalkerOptions } from '@/structureWalker';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// A node while its list or object is still being read. The set and flag work out its keys and whether it reads as rows.\ninterface NodeDraft {\n hasNonObjectItem: boolean;\n keySet: Set<string>;\n node: StructureNode;\n}\n\n// What a row parse has read and not yet handed over.\ninterface RowState {\n isHeaderSent: boolean;\n itemFields: Map<string, JsonValue>[];\n nonUniformRecordCount: number;\n recordCount: number;\n shape: TableShape | undefined;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_MAX_DEPTH = 4;\nconst DEFAULT_MAX_VALUE_LENGTH = 200;\nconst DEFAULT_RECORD_BUFFER_SIZE = 10_000;\nconst CHECKPOINT_ITEM_COUNT = 1000; // A list's items between checkpoints. A page read from a checkpoint skips at most this many items.\nconst INDEXED_ITEM_COUNT = 1; // A list's items indexed as nodes of their own.\nconst MAX_KEY_COUNT = 200; // The most keys a node lists, so an object used as a map with millions of keys stays small in the index.\nconst LINE_FEED_BYTE = 0x0a;\n\n// WebKit hands over a file stream in pieces of about 18 MB, against about 2 MB in Chromium. Each piece is read in slices\n// of this size, so rows are handed over and the abort checked often. A slice is a view, not a copy.\nconst MAX_SLICE_BYTE_COUNT = 1_048_576;\n\n// Thrown to stop reading once enough is known. The tokenizer passes it back out of 'write'.\nconst STOP_READING = new Error('Reading stopped once enough was known.');\n\n// ── Tools ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport class Tool implements StructuredParserInterface {\n /**\n * Build structure index. Reads the whole item once and maps its lists and objects down to 'maxDepth', with where\n * each starts and ends, so any of them can be read again on its own. Memory stays small however large the item.\n */\n async buildStructureIndex(stream: ReadableStream<Uint8Array>, options: BuildStructureIndexOptions): Promise<StructureIndex> {\n const maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;\n const drafts = new Map<OpenContainer, NodeDraft>();\n const nodes: StructureNode[] = [];\n const draftOf = (container: OpenContainer | undefined): NodeDraft | undefined => (container == null ? undefined : drafts.get(container));\n // A list's item: a checkpoint every so many items, and a note when an item is not an object.\n const takeItem = (parent: OpenContainer | undefined, key: number | string | undefined, startOffset: number, isObject: boolean): void => {\n const parentDraft = draftOf(parent);\n if (typeof key !== 'number' || parentDraft?.node.kindId !== 'list') return;\n if (key % CHECKPOINT_ITEM_COUNT === 0) parentDraft.node.checkpoints.push({ itemIndex: key, offset: startOffset });\n if (!isObject) parentDraft.hasNonObjectItem = true;\n };\n // A list's first items show the shape of the rest, which checkpoints locate, so a long list adds little to the\n // index. A list or object inside one not indexed is not indexed either.\n const isIndexed = (container: OpenContainer): boolean => {\n if (container.depth > maxDepth) return false;\n if (container.parent == null) return true;\n const isSampleItem = container.parent.kindId !== 'list' || (typeof container.key === 'number' && container.key < INDEXED_ITEM_COUNT);\n return isSampleItem && drafts.has(container.parent);\n };\n const walker = createStructureWalker(constructWalkerOptions(options.dataFormatId), {\n onContainerEnd: (container, endOffset) => {\n const draft = drafts.get(container);\n if (draft == null) return;\n draft.node.endOffset = endOffset;\n draft.node.childCount = container.childCount;\n draft.node.isTableCandidate = draft.node.kindId === 'list' && container.childCount > 0 && !draft.hasNonObjectItem;\n draft.node.keys = draft.keySet.values().toArray();\n drafts.delete(container);\n },\n onContainerStart: (container) => {\n takeItem(container.parent, container.key, container.startOffset, container.kindId === 'object');\n if (!isIndexed(container)) return;\n const node: StructureNode = {\n checkpoints: [],\n childCount: 0,\n endOffset: NaN,\n isTableCandidate: false,\n keys: [],\n kindId: container.kindId,\n path: container.path,\n startOffset: container.startOffset\n };\n nodes.push(node);\n drafts.set(container, { hasNonObjectItem: false, keySet: new Set(), node });\n },\n onKey: (container, key) => {\n addKey(draftOf(container), key);\n const parentDraft = draftOf(container.parent);\n if (parentDraft?.node.kindId === 'list') addKey(parentDraft, key); // A list's keys are those of its object items.\n },\n onScalar: (scalar) => {\n takeItem(scalar.parent, scalar.key, scalar.startOffset, false);\n }\n });\n const byteCount = await readStream(stream, options.abortSignal, walker, options.onProgress);\n // The lines of JSON Lines have no closing bracket, so they end where the item does.\n for (const node of nodes) if (Number.isNaN(node.endOffset)) node.endOffset = byteCount;\n return { byteCount, nodes };\n }\n\n /**\n * List structure entries. Lists one level of a list or object for a viewer that opens one level at a time. Reading\n * stops as soon as the entries asked for are known, so a page near the start of a large node is quick.\n */\n async listStructureEntries(stream: ReadableStream<Uint8Array>, options: ListStructureEntriesOptions): Promise<ListStructureEntriesResult> {\n const maxValueLength = options.maxValueLength ?? DEFAULT_MAX_VALUE_LENGTH;\n const entries: StructureEntry[] = [];\n let isMore = false;\n let openScalarEntry: StructureEntry | undefined; // A text, number or other single value only ends where the next token starts.\n const isLines = options.dataFormatId === 'jsonl' && options.path.length === 0;\n const walkerOptions: StructureWalkerOptions = {\n baseOffset: options.startOffset,\n firstItemIndex: options.firstItemIndex ?? 0,\n isJsonLines: isLines,\n isStartInsideList: options.firstItemIndex != null,\n rootPath: options.path\n };\n // Called as an entry starts. Once enough entries are known, one more means there are more, and reading stops.\n const startEntry = (entry: StructureEntry): void => {\n if (entries.length >= options.entryCount) {\n isMore = true;\n throw STOP_READING;\n }\n entries.push(entry);\n };\n const walker = createStructureWalker(walkerOptions, {\n onContainerEnd: (container, endOffset) => {\n if (container.depth === 0) throw STOP_READING;\n if (container.depth !== 1) return;\n const entry = entries.at(-1);\n if (entry == null) return;\n entry.endOffset = endOffset;\n entry.childCount = container.childCount;\n },\n onContainerStart: (container) => {\n if (container.depth !== 1) return;\n startEntry({\n childCount: 0,\n endOffset: NaN,\n isValueCut: false,\n key: container.key ?? '',\n kindId: container.kindId,\n startOffset: container.startOffset,\n value: undefined\n });\n },\n onScalar: (scalar) => {\n if (scalar.parent?.depth !== 0) return;\n const text = describeScalar(scalar.value);\n const isValueCut = text != null && text.length > maxValueLength;\n openScalarEntry = {\n childCount: undefined,\n endOffset: NaN,\n isValueCut,\n key: scalar.key ?? '',\n kindId: scalar.kindId,\n startOffset: scalar.startOffset,\n value: isValueCut ? text.slice(0, maxValueLength) : text\n };\n startEntry(openScalarEntry);\n },\n onTokenStart: (offset) => {\n if (openScalarEntry == null) return;\n openScalarEntry.endOffset = offset;\n openScalarEntry = undefined;\n }\n });\n const byteCount = await readStream(stream, options.abortSignal, walker, undefined);\n if (openScalarEntry != null) openScalarEntry.endOffset = options.startOffset + byteCount;\n return { entries, isMore };\n }\n\n /**\n * Parse stream. Reads the list at 'structurePath', or the whole item when it is not given, as rows: a header of\n * column names, then one row per item. The columns are those found in the first chunk of items. A later item with a\n * field outside them keeps its other fields and counts as not uniform. The caller owns the stream and its fetch.\n */\n async *parseStream(stream: ReadableStream<Uint8Array>, options: ParseStreamOptions): AsyncGenerator<ParsedRecordsChunk, ParseStreamSummary, undefined> {\n options.abortSignal.throwIfAborted();\n const recordsPerChunk = Math.max(1, Math.floor(options.chunkSize ?? DEFAULT_RECORD_BUFFER_SIZE));\n const rowState: RowState = { isHeaderSent: false, itemFields: [], nonUniformRecordCount: 0, recordCount: 0, shape: undefined };\n const itemReader = createItemReader(options.structurePath ?? [], (item) => {\n rowState.itemFields.push(flattenItem(item));\n });\n const walker = createStructureWalker(constructWalkerOptions(options.dataFormatId), itemReader.handlers);\n const transcode = constructTranscoder(options.encodingId);\n const reader = stream.getReader();\n const cancelRead = (): void => {\n ignoreErrors(() => void reader.cancel(options.abortSignal.reason));\n };\n options.abortSignal.addEventListener('abort', cancelRead, { once: true });\n\n let byteCount = 0;\n let lineCount = 0;\n try {\n let result = await reader.read();\n while (!result.done && !itemReader.isTargetClosed()) {\n byteCount += result.value.length;\n lineCount += countLineFeeds(result.value);\n for (let sliceStart = 0; sliceStart < result.value.length && !itemReader.isTargetClosed(); sliceStart += MAX_SLICE_BYTE_COUNT) {\n options.abortSignal.throwIfAborted();\n walker.write(transcode(result.value.subarray(sliceStart, sliceStart + MAX_SLICE_BYTE_COUNT), false));\n yield* takeRows(rowState, recordsPerChunk, false);\n }\n if (!itemReader.isTargetClosed()) result = await reader.read();\n }\n options.abortSignal.throwIfAborted();\n if (!itemReader.isTargetClosed()) {\n walker.write(transcode(new Uint8Array(), true));\n walker.end();\n }\n if (!itemReader.isTargetFound()) throw new Error(`Nothing found at ${describePath(options.structurePath ?? [])}.`);\n yield* takeRows(rowState, recordsPerChunk, true);\n return { byteCount, commentLineCount: 0, emptyLineCount: 0, lineCount, nonUniformRecordCount: rowState.nonUniformRecordCount, recordCount: rowState.recordCount };\n } finally {\n options.abortSignal.removeEventListener('abort', cancelRead);\n ignoreErrors(() => void reader.cancel()); // Releases the item when reading stops before the end. A stream already read through ignores it.\n }\n }\n\n /**\n * Parse text. Reads a preview the same way as 'parseStream'. A preview cut short ends in the middle of the JSON, so\n * only an error in a complete item is an issue. The items read before the cut are kept.\n */\n parseText(text: string, options: ParseTextOptions): Promise<ParseTextResult> {\n const items: Map<string, JsonValue>[] = [];\n const itemReader = createItemReader(options.structurePath ?? [], (item) => {\n items.push(flattenItem(item));\n });\n const walker = createStructureWalker(constructWalkerOptions(options.dataFormatId), itemReader.handlers);\n const issues: SampleIssue[] = [];\n const bytes = new TextEncoder().encode(text);\n try {\n walker.write(bytes);\n if (options.isComplete) walker.end();\n if (options.isComplete && !itemReader.isTargetFound()) issues.push(constructIssue(`Nothing found at ${describePath(options.structurePath ?? [])}.`, bytes, undefined));\n } catch (error) {\n const isCutOff = !options.isComplete;\n if (!isCutOff) issues.push(constructIssue(error instanceof Error ? error.message : String(error), bytes, findErrorOffset(error)));\n }\n const shape = constructTableShape(items);\n const parsedRecords: ParsedRecord[] = items.length === 0 ? [] : [constructHeaderRecord(shape), ...items.map((fields) => constructRecord(fields, shape).record)];\n return Promise.resolve({ issues, parsedRecords, recordDelimiterId: '\\n', valueDelimiterId: undefined }); // Synchronous, but the interface allows a parser that is not.\n }\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n//#region: Reading helpers.\n\n// Options for a walk of the whole item from its start.\nfunction constructWalkerOptions(dataFormatId: DataFormatId): StructureWalkerOptions {\n return { baseOffset: 0, firstItemIndex: 0, isJsonLines: dataFormatId === 'jsonl', isStartInsideList: false, rootPath: [] };\n}\n\n// Feeds the stream to the walker a slice at a time, ends the walk, and returns the bytes read. Stops early, without\n// error, when a handler has all it needs.\nasync function readStream(\n stream: ReadableStream<Uint8Array>,\n abortSignal: AbortSignal,\n walker: StructureWalker,\n onProgress: ((byteCount: number) => void) | undefined\n): Promise<number> {\n abortSignal.throwIfAborted();\n const reader = stream.getReader();\n const cancelRead = (): void => {\n ignoreErrors(() => void reader.cancel(abortSignal.reason));\n };\n abortSignal.addEventListener('abort', cancelRead, { once: true });\n let byteCount = 0;\n try {\n let result = await reader.read();\n while (!result.done) {\n for (let sliceStart = 0; sliceStart < result.value.length; sliceStart += MAX_SLICE_BYTE_COUNT) {\n abortSignal.throwIfAborted();\n const slice = result.value.subarray(sliceStart, sliceStart + MAX_SLICE_BYTE_COUNT);\n byteCount += slice.length;\n walker.write(slice);\n }\n onProgress?.(byteCount);\n result = await reader.read();\n }\n abortSignal.throwIfAborted();\n walker.end();\n return byteCount;\n } catch (error) {\n if (error === STOP_READING) return byteCount;\n throw error;\n } finally {\n abortSignal.removeEventListener('abort', cancelRead);\n ignoreErrors(() => void reader.cancel());\n }\n}\n\n// JSON is UTF-8 by its standard, and the tokenizer reads only UTF-8. An item in another encoding is decoded and written\n// again as UTF-8. Its offsets then no longer match the item, which only matters to the index, and an index is only built\n// from UTF-8.\nfunction constructTranscoder(encodingId: string): (bytes: Uint8Array, isFinal: boolean) => Uint8Array {\n const decoderId = resolveDecoderId(encodingId);\n if (decoderId === 'utf-8') return (bytes) => bytes;\n const decoder = new TextDecoder(decoderId);\n const encoder = new TextEncoder();\n return (bytes, isFinal) => encoder.encode(decoder.decode(bytes, { stream: !isFinal }));\n}\n\nfunction countLineFeeds(bytes: Uint8Array): number {\n let count = 0;\n for (let index = bytes.indexOf(LINE_FEED_BYTE); index !== -1; index = bytes.indexOf(LINE_FEED_BYTE, index + 1)) count++;\n return count;\n}\n\n//#region: Row helpers.\n\n// Hands over the rows read so far, a chunk at a time. The first chunk fixes the columns and starts with the header.\n// Only full chunks go until the item has been read, then the rest goes too.\nfunction* takeRows(rowState: RowState, recordsPerChunk: number, isFinal: boolean): Generator<ParsedRecordsChunk> {\n while (rowState.itemFields.length >= recordsPerChunk || (isFinal && rowState.itemFields.length > 0)) {\n const itemFields = rowState.itemFields.splice(0, recordsPerChunk);\n rowState.shape ??= constructTableShape(itemFields);\n const records: ParsedRecord[] = [];\n if (!rowState.isHeaderSent) {\n records.push(constructHeaderRecord(rowState.shape));\n rowState.isHeaderSent = true;\n }\n for (const fields of itemFields) {\n const { hasUnknownField, record } = constructRecord(fields, rowState.shape);\n if (hasUnknownField) rowState.nonUniformRecordCount++;\n records.push(record);\n }\n rowState.recordCount += records.length;\n yield { records, typeId: 'parsingRecordArray' };\n }\n}\n\n//#region: Description helpers.\n\nfunction addKey(draft: NodeDraft | undefined, key: string): void {\n if (draft != null && draft.keySet.size < MAX_KEY_COUNT) draft.keySet.add(key);\n}\n\n// A single value as text: a number as written, a string as decoded. Null has no text.\nfunction describeScalar(value: JsonValue): string | undefined {\n if (value == null) return undefined;\n if (typeof value === 'string') return value;\n if (typeof value === 'boolean') return String(value);\n return isNumberText(value) ? value.numberText : undefined;\n}\n\nfunction describePath(path: (number | string)[]): string {\n return path.length === 0 ? 'the top of the item' : `'${path.join(' › ')}'`;\n}\n\n//#region: Issue helpers.\n\n// The walker names the byte where it found a problem in its message.\nfunction findErrorOffset(error: unknown): number | undefined {\n const match = error instanceof Error ? / at byte (\\d+)\\.$/u.exec(error.message) : null;\n return match?.[1] == null ? undefined : Number(match[1]);\n}\n\nfunction constructIssue(message: string, bytes: Uint8Array, offset: number | undefined): SampleIssue {\n return {\n endLineNumber: undefined,\n fieldNumber: undefined,\n id: 'JSON_INVALID',\n lineNumber: offset == null ? undefined : countLineFeeds(bytes.subarray(0, offset)) + 1,\n message,\n recordNumber: undefined,\n severityId: 'error',\n value: undefined\n };\n}\n"],"ignoreList":[0,1,2,3,4,5,6],"mappings":";AAkBA,IAAIG,IAAI;CACP,MAAM,KAAK;CACX,SAAS,KAAK;CACd,YAAY,KAAK;CACjB,gBAAgB,KAAK;AACtB;;AAEA,SAASC,EAAE,GAAG;CACb,OAAOC,IAAI;EACV,MAAMA,GAAG,QAAQ,KAAK;EACtB,SAASA,GAAG;EACZ,YAAYA,GAAG,cAAc,KAAK;EAClC,gBAAgBA,GAAG,kBAAkB,KAAK;CAC3C,IAAIF;AACL;;AAEA,SAASG,EAAE,GAAG;CACb,IAAI,IAAI,OAAO;CACf,OAAO,MAAM,WAAW,IAAI,EAAE,KAAK,MAAM,YAAY,MAAM,YAAY,MAAM,YAAY,GAAG,MAAM,MAAM,YAAY,MAAM,cAAc,KAAK,OAAO,eAAe,CAAC,CAAC,EAAE,aAAa,SAAS,SAAS;AACvM;AACA,SAASC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG;CACzB,IAAIH,IAAID,KAAK,WAAWA,IAAIA,EAAE,QAAQK,EAAE,OAAO,IAAIL,GAAG,YAAY,EAAE,WAAW,MAAM,IAAIA,GAAG,YAA4B,kBAAEC,CAAC,GAAG,IAAI;EACjI,MAAM,EAAE;EACR,MAAM,EAAE;EACR,OAAOA;EACP,UAAU;EACV,UAAU;EACV,SAAS,WAAW,EAAE,IAAI,IAAI,YAAY,EAAE,UAAU,IAAI,UAAU;EACpE,aAAa,EAAE;EACf,MAAMD,GAAG;EACT,QAAQA,GAAG;EACX,MAAMM,EAAE;EACR,YAAYA,EAAE;EACd,gBAAgBA,EAAE;CACnB,GAAG,IAAI,EAAE,SAAS,UAAU,IAAIN,GAAG,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,KAAK,EAAE,MAAM,KAAK,KAAK,SAASM,EAAE,YAAY,EAAE,MAAM,KAAK;CACxJ,MAAM,KAAK,MAAM,EAAE,UAAU,OAAO,KAAK,aAAa,EAAE,CAAC,IAAI,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAID,EAAE,SAASA,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAClI;;AAEA,SAASE,EAAE,GAAG,GAAG;CAChB,OAAO,MAAM,KAAK,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC;AACpD;;AAMA,SAASC,EAAE,GAAG,GAAG;CAChB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;CACtB,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM;AACzD;AACA,SAASC,EAAE,GAAG;CACb,OAAO,EAAE,eAAe;EACvB,SAAS;EACT,QAAQ;EACR,WAAW,MAAM,EAAE,OAAO,CAAC,EAAE,OAAOC,EAAE,GAAmB,kBAAE,CAAC;CAC7D,GAAG;AACJ;;AAiBA,SAASC,EAAE,GAAG,GAAG,GAAG;CACnB,OAAO,OAAO,EAAE,YAAY,aAAa,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE;AAC/D;;AAEA,SAASC,EAAE,GAAG,GAAG,GAAG;CACnB,OAAO,OAAO,EAAE,WAAW,aAAa,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE;AAC7D;;AAqDA,SAASC,EAAE,GAAG,GAAG;CAChB,OAAOJ,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWI;EACX,SAAyB,kBAAE,CAAC;EAC5B,OAAO,CAAC;EACR,SAAS;EACT,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,OAAuB,kBAAE,EAAE,OAAO,KAAK,OAAO,IAAI,EAAE,QAAQ,CAAC,IAAIT,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG;EACzF;CACD,CAAC;AACF;;AAsDA,SAASU,EAAE,GAAG,GAAG;CAChB,OAAOL,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWK;EACX,SAAS,IAAI,EAAE,QAAQ;EACvB,OAAO,CAAC;EACR,SAAS;EACT,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,OAAO,EAAE,UAAU,SAAS,KAAK,YAAY,KAAK,MAAM,EAAE,QAAwB,kBAAE,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,SAAS,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,OAAO,CAAC,GAAG,CAAC;EACpK;CACD,CAAC;AACF;;AAEA,SAASC,EAAE,GAAG;CACb,OAAON,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWM;EACX,SAAS;EACT,OAAO,CAAC;EACR,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,OAAO,OAAO,EAAE,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAIX,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG;EAC9F;CACD,CAAC;AACF;;AAEA,SAASY,EAAE,GAAG,GAAG;CAChB,OAAOP,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWO;EACX,SAAS,IAAI,EAAE,QAAQ;EACvB,OAAO,CAAC;EACR,SAAS;EACT,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,OAAO,EAAE,UAAU,KAAK,MAAM,KAAK,YAAY,KAAK,MAAM,EAAE,QAAwB,kBAAE,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,OAAO,CAAC,GAAG,CAAC;EACxK;CACD,CAAC;AACF;;AAuDA,SAASC,EAAE,GAAG,GAAG;CAChB,OAAOR,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWQ;EACX,SAAS;EACT,OAAO,CAAC;EACR,SAAS;EACT,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,IAAI,IAAI,EAAE;GACV,IAAI,KAAK,OAAO,KAAK,UAAU;IAC9B,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACzB,KAAK,IAAIX,KAAK,KAAK,SAAS;KAC3B,IAAIN,IAAI,KAAK,QAAQM;KACrB,IAAIA,KAAK,MAAMN,EAAE,SAAS,oBAAoBA,EAAE,SAAS,cAAcA,EAAE,SAAS,cAAcA,EAAE,YAAY,KAAK,GAAG;MACrH,IAAIC,IAAIK,KAAK,IAAI,EAAEA,KAAqB,kBAAEN,CAAC,GAAG,IAAIA,EAAE,OAAO,CAAC,EAAE,OAAOC,EAAE,GAAG,CAAC;MAC3E,IAAI,EAAE,QAAQ;OACb,IAAID,IAAI;QACP,MAAM;QACN,QAAQ;QACR,OAAO;QACP,KAAKM;QACL,OAAOL;OACR;OACA,KAAK,IAAI,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,QAAQD,CAAC,IAAI,EAAE,OAAO,CAACA,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC;OACnF,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY;QACxC,EAAE,QAAQ,CAAC;QACX;OACD;MACD;MACA,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAMM,KAAK,EAAE;KAC3C,OAAO,IAAIN,EAAE,aAAa,KAAK,GAAG,EAAE,MAAMM,KAAqB,kBAAEN,CAAC;UAC7D,IAAIA,EAAE,SAAS,oBAAoBA,EAAE,SAAS,cAAcA,EAAE,SAAS,cAAcI,EAAE,MAAM,OAAO,GAAG,GAAG;MAC9G,OAAO,KAAK;MACZ,UAAU,IAAIE,EAAE;MAChB,MAAM,CAAC;OACN,MAAM;OACN,QAAQ;OACR,OAAO;OACP,KAAKA;OACL,OAAO,EAAEA;MACV,CAAC;KACF,CAAC,GAAG,EAAE,aAAa;IACpB;IACA,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,YACd;UAAA,IAAIA,KAAK,GAAG,IAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,SAASA,CAAC,GAAG;MAC5E,EAAE,MAAM,OAAO,GAAG,GAAG;OACpB,OAAOA;OACP,UAAU;OACV,MAAM,CAAC;QACN,MAAM;QACN,QAAQ;QACR,OAAO;QACP,KAAKA;QACL,OAAO,EAAEA;OACV,CAAC;MACF,CAAC;MACD;KACD;;GAEF,OAAO,EAAE,MAAM,QAAQ,GAAG,CAAC;GAC3B,OAAO;EACR;CACD,CAAC;AACF;;AAEA,SAASY,EAAE,GAAG;CACb,OAAOT,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWS;EACX,SAAS;EACT,OAAO,CAAC;EACR,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,OAAO,OAAO,EAAE,SAAS,WAAW,EAAE,QAAQ,CAAC,IAAId,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG;EAC3E;CACD,CAAC;AACF;;AAEA,SAASe,EAAE,GAAG;CACb,IAAI;CACJ,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;MAC1D,IAAI,EAAE;CACX,OAAO;AACR;;AAEA,SAASC,EAAG,GAAG,GAAG;CACjB,OAAOX,EAAE;EACR,MAAM;EACN,MAAM;EACN,WAAWW;EACX,SAAyB,kBAAE,EAAE,KAAK,MAAM,EAAE,OAAO,GAAG,GAAG;EACvD,OAAO,CAAC;EACR,SAAS;EACT,SAAS;EACT,OAAO,GAAG,GAAG;GACZ,IAAI,GAAGd,GAAGN;GACV,KAAK,IAAIC,KAAK,KAAK,SAAS;IAC3B,IAAI,IAAIA,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;IACvC,IAAI,EAAE,OAAO;KACZ,IAAI,EAAE,QAAQ,IAAIK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;UAC/B;MACJ,IAAI;MACJ;KACD;IACD,OAAO,IAAIN,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;GAC9B;GACA,IAAI,GAAG,OAAO;GACd,IAAIM,GAAG;IACN,IAAIA,EAAE,WAAW,GAAG,OAAOA,EAAE;IAC7B,EAAE,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAwB,kBAAEA,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;GACrE,OAAO,IAAIN,GAAG,WAAW,GAAG,OAAOA,EAAE;QAChC,EAAE,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAwB,kBAAEA,CAAC,EAAE,CAAC;GAC3D,OAAO;EACR;CACD,CAAC;AACF;AA6BA,IAGIqB,KAAK;CACR,IAAoB,kBAAE;CACtB,OAAuB,kBAAE;EACxB,IAAoB,kBAAkB,kBAAE,CAAC;EACzC,IAAoB,kBAAkB,kBAAE,CAAC;CAC1C,CAAC;CACD,aAA6B,kBAAE;EAC9B,IAAoB,kBAAkB,kBAAE,CAAC;EACzC,IAAoB,kBAAkB,kBAAE,CAAC;CAC1C,CAAC;CACD,MAAsB,kBAAkB,kBAAE,CAAC;CAC3C,UAA0B,kBAAkB,kBAAE,CAAC;AAChD,GAAGC,KAAK,MAAsB,kBAAG,EAAE,KAAK,MAAsB,kBAAE,CAAC,CAAC,CAAC,GAAGC,KAAKD,EAAE;CAC5E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,GAAGE,KAAKF,EAAE;CACV;CACA;CACA;AACD,CAAC,GAAGG,KAAKH,EAAE;CACV;CACA;CACA;CACA;AACD,CAAC,GAAGI,KAAqB,kBAAE;CAC1B,OAAOF;CACP,OAAuB,kBAAE;AAC1B,CAAC,GAAGG,IAAI;CACP,GAAGN;CACH,QAAQE;AACT;CAEC,EADA,GAAGI,EACsB;AAtD1B,IAwDIC,IAAK;CACR,GAAGD;CACH,gBAAgC,kBAAkB,kBAAE,CAAC;CACrD,eAA+B,kBAAkB,kBAAE,CAAC;CACpD,QAAwB,kBAAED,EAAE;CAC5B,UAA0B,kBAAED,EAAE;AAC/B;CAA0B,EAAE,GAAGG,EAAG,IAsOlCN,EAAE;CACD;CACA;CACA;CACA;CACA;CACA;AACD,CAAC;AAED,IAAIO,IAAI;CACP,GAAGD;CACH,kBAAkC,kBAAkB,kBAAE,CAAC;CACvD,wBAAwC,kBAAkB,kBAAE,CAAC;CAC7D,eAA+B,kBAAkB,kBAAE,CAAC;CACpD,SAAyB,kBAAE;AAC5B;CACC,EAAE,GAAGC,EAAE,IAECP,EAAE;CACV;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,GAAQA,EAAE;CACV;CACA;CACA;CACA;AACD,CAAC,GAA8CA,EAAE;CAChD;CACA;CACA;AACD,CAAC,GAAQA,EAAE;CACV;CACA;CACA;CACA;AACD,CAAC,GACcA,EAAE;CACf;CACA;CACA;CACA;AACD,CAAC,GASD,EADA,GAAGO,EACkC;AA27B1B,IAAAC,IAAI;CAvxBf,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,MAAM;EACL,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,SAAS;EACR,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,KAAK;EACJ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,oBAAoB;EACnB,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,eAAe;EACd,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,eAAe;EACd,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,eAAe;EACd,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,eAAe;EACd,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,eAAe;EACd,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,iBAAiB;EAChB,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,cAAc;EACb,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,OAAO;EACN,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,WAAW;EACV,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,YAAY;EACX,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,WAAW;EACV,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,YAAY;EACX,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,SAAS;EACR,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,YAAY;EACX,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,YAAY;EACX,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,KAAK;EACJ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,SAAS;EACR,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,WAAW;EACV,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,MAAM;EACL,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,WAAW;EACV,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,SAAS;EACR,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,SAAS;EACR,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,UAAU;EACT,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,aAAa;EACZ,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,QAAQ;EACP,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;CACA,gBAAgB;EACf,IAAI;EACJ,SAAS;EACT,cAAc,CAAC;EACf,eAAe;EACf,oBAAoB;CACrB;AACe;AAChB,SAASC,GAAG,GAAG;CACd,OAAO,OAAO,OAAOD,GAAG,CAAC;AAC1B;AACA,SAASE,GAAG,GAAG;CACd,OAAOD,GAAG,CAAC,IAAID,EAAE,EAAE,CAAC,iBAAiB,IAAI;AAC1C;AAiEA,SAASG,EAAG,GAAG;CACd,IAAI;EACH,EAAE;CACH,QAAQ,CAAC;AACV;AAkGiFX,EAAE;CAClF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,GAEA,EADA,GAAGO,EAC6B,GAynBxBP,EAAE,CAAC,MAAM,CAAC,GAElB,EADA,GAAGO,EACiC,GAS5BP,EAAE;CACV;CACA;CACA;AACD,CAAC,GAEA,EADA,GAAGO,EACkC;;ACxiFtC,IAAaK,IAAb,MAA+B;CAC3B,cAAc;EAOV,AAJA,KAAK,UAAU,IAAI,YAAY,SAAS,EAAE,OAAO,GAAK,CAAC,GAEvD,KAAK,UAAU,CAAC,GAChB,KAAK,SAAS,IACd,KAAK,aAAa;CACtB;CACA,WAAW,GAAM;EAEb,AADA,KAAK,QAAQ,KAAK,OAAO,aAAaC,CAAI,CAAC,GAC3C,KAAK,cAAc;CACvB;CACA,UAAU,GAAK,IAAQ,GAAG,IAAMC,EAAI,QAAQ;EAExC,AADA,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAOA,EAAI,SAASC,GAAOC,CAAG,CAAC,CAAC,GAC/D,KAAK,cAAcA,IAAMD;CAC7B;CACA,eAAe,GAAM;EACjB,KAAK,QAAQ,KAAK,OAAO,aAAaE,CAAI,CAAC;CAC/C;CACA,QAAQ;EAGJ,AAFA,KAAK,UAAU,CAAC,GAChB,KAAK,SAAS,IACd,KAAK,aAAa;CACtB;CAIA,WAAW;EAKP,OAJI,KAAK,QAAQ,SAAS,MACtB,KAAK,UAAU,KAAK,QAAQ,KAAK,EAAE,GACnC,KAAK,UAAU,CAAC,IAEb,KAAK;CAChB;AACJ,GAUaC,IAAb,MAA4B;CAIxB,YAAY,GAAY;EAOpB,AAJA,KAAK,UAAU,IAAI,YAAY,SAAS,EAAE,OAAO,GAAK,CAAC,GACvD,KAAK,eAAe,GACpB,KAAK,SAAS,IACd,KAAK,aAAa,GAClB,KAAK,SAAS,IAAI,WAAWC,CAAU;CAC3C;CACA,WAAW,GAAM;EAIb,AAHI,KAAK,gBAAgB,KAAK,OAAO,UACjC,KAAK,kBAAkB,GAC3B,KAAK,OAAO,KAAK,kBAAkBN,GACnC,KAAK,cAAc;CACvB;CACA,UAAU,GAAK,IAAQ,GAAG,IAAMC,EAAI,QAAQ;EACxC,IAAMM,IAAOJ,IAAMD;EAGnB,AAFI,KAAK,eAAeK,IAAO,KAAK,OAAO,UACvC,KAAK,kBAAkB,GACvBA,IAAO,KAAK,OAAO,UAMnB,KAAK,UAAU,KAAK,QAAQ,OAAON,EAAI,SAASC,GAAOC,CAAG,CAAC,GAC3D,KAAK,cAAcI,MAGvB,KAAK,OAAO,IAAIN,EAAI,SAASC,GAAOC,CAAG,GAAG,KAAK,YAAY,GAC3D,KAAK,gBAAgBI,GACrB,KAAK,cAAcA;CACvB;CACA,eAAe,GAAM;EAEjB,AADA,KAAK,kBAAkB,GACvB,KAAK,UAAU,OAAO,aAAaH,CAAI;CAC3C;CACA,oBAAoB;EAEhB,AADA,KAAK,UAAU,KAAK,QAAQ,OAAO,KAAK,OAAO,SAAS,GAAG,KAAK,YAAY,CAAC,GAC7E,KAAK,eAAe;CACxB;CACA,QAAQ;EAGJ,AAFA,KAAK,SAAS,IACd,KAAK,eAAe,GACpB,KAAK,aAAa;CACtB;CACA,WAAW;EAEP,OADA,KAAK,kBAAkB,GAChB,KAAK;CAChB;AACJ,GCzGII;CACH,SAAU,GAAW;CAwBlB,AAtBA,EAAU,EAAUC,aAAgB,KAAK,cAEzC,EAAU,EAAUC,cAAiB,KAAK,eAE1C,EAAU,EAAUC,eAAkB,KAAK,gBAE3C,EAAU,EAAUC,gBAAmB,KAAK,iBAE5C,EAAU,EAAUC,QAAW,KAAK,SAEpC,EAAU,EAAUC,QAAW,KAAK,SAEpC,EAAU,EAAUC,OAAU,KAAK,QAEnC,EAAU,EAAUC,QAAW,KAAK,SAEpC,EAAU,EAAUC,OAAU,KAAK,QAEnC,EAAU,EAAUC,SAAY,KAAK,UAErC,EAAU,EAAUC,SAAY,MAAM,UAEtC,EAAU,EAAUC,YAAe,MAAM;AAC7C,EAAA,CAAG,AAAcZ,MAAY,CAAC,CAAE;AAChC,IAAAa,IAAeb,GC3BJc;CACV,SAAU,GAAS;CAoGhB,AAnGA,EAAQ,EAAQC,YAAe,KAAK,aACpC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQC,UAAa,MAAM,WACnC,EAAQ,EAAQC,kBAAqB,MAAM,mBAC3C,EAAQ,EAAQC,MAAS,KAAK,OAC9B,EAAQ,EAAQC,QAAW,MAAM,SACjC,EAAQ,EAAQC,mBAAsB,MAAM,oBAC5C,EAAQ,EAAQC,iBAAoB,MAAM,kBAC1C,EAAQ,EAAQC,cAAiB,MAAM,eACvC,EAAQ,EAAQC,cAAiB,MAAM,eACvC,EAAQ,EAAQC,eAAkB,MAAM,gBACxC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQC,aAAgB,MAAM,cACtC,EAAQ,EAAQC,mBAAsB,MAAM,oBAC5C,EAAQ,EAAQC,oBAAuB,MAAM,qBAC7C,EAAQ,EAAQC,WAAc,MAAM,YACpC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQzB,QAAW,MAAM,SACjC,EAAQ,EAAQ0B,eAAkB,MAAM,gBACxC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQC,UAAa,MAAM,WACnC,EAAQ,EAAQC,aAAgB,MAAM,cACtC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQC,cAAiB,MAAM,eACvC,EAAQ,EAAQC,aAAgB,MAAM,cACtC,EAAQ,EAAQC,aAAgB,MAAM,cACtC,EAAQ,EAAQC,YAAe,MAAM,aACrC,EAAQ,EAAQC,cAAiB,MAAM,eACvC,EAAQ,EAAQC,cAAiB,MAAM,eACvC,EAAQ,EAAQC,aAAgB,MAAM,cACtC,EAAQ,EAAQvC,QAAW,MAAM,SACjC,EAAQ,EAAQwC,YAAe,MAAM,aACrC,EAAQ,EAAQC,iBAAoB,MAAM,kBAC1C,EAAQ,EAAQC,cAAiB,MAAM,eACvC,EAAQ,EAAQC,oBAAuB,MAAM,qBAC7C,EAAQ,EAAQC,gBAAmB,MAAM,iBACzC,EAAQ,EAAQC,gBAAmB,MAAM,iBACzC,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,yBAA4B,MAAM,0BAClD,EAAQ,EAAQC,sBAAyB,MAAM,uBAC/C,EAAQ,EAAQC,kBAAqB,MAAM,mBAC3C,EAAQ,EAAQC,uBAA0B,MAAM,wBAChD,EAAQ,EAAQC,oBAAuB,MAAM,qBAC7C,EAAQ,EAAQC,WAAc,MAAM,YACpC,EAAQ,EAAQC,eAAkB,MAAM,gBACxC,EAAQ,EAAQC,uBAA0B,MAAM,wBAChD,EAAQ,EAAQC,uBAA0B,MAAM,wBAChD,EAAQ,EAAQC,uBAA0B,MAAM,wBAChD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,uBAA0B,OAAO,wBACjD,EAAQ,EAAQC,qBAAwB,OAAO,sBAC/C,EAAQ,EAAQC,gBAAmB,OAAO,iBAC1C,EAAQ,EAAQC,sBAAyB,OAAO,uBAChD,EAAQ,EAAQC,QAAW,OAAO;AACtC,EAAA,CAAG,AAAYlG,OAAU,CAAC,CAAE;AAM5B,IAAamG,KAAmB;CAC3B,IAAkC;CAClC,IAAmC;CACnC,IAA2B;CAC3B,IAAwC;CACxC,KAAyC;CACzC,KAAyC;CACzC,KAAyC;CACzC,KAAyC;AAC9C,GCtGIC;CACH,SAAU,GAAiB;CA+BxB,AA9BA,EAAgB,EAAgBC,QAAW,KAAK,SAChD,EAAgB,EAAgBC,QAAW,KAAK,SAChD,EAAgB,EAAgBC,QAAW,KAAK,SAChD,EAAgB,EAAgBC,QAAW,KAAK,SAChD,EAAgB,EAAgBC,QAAW,KAAK,SAChD,EAAgB,EAAgBC,QAAW,KAAK,SAChD,EAAgB,EAAgBC,SAAY,KAAK,UACjD,EAAgB,EAAgBC,SAAY,KAAK,UACjD,EAAgB,EAAgBC,SAAY,KAAK,UACjD,EAAgB,EAAgBC,SAAY,KAAK,UACjD,EAAgB,EAAgBC,QAAW,MAAM,SACjD,EAAgB,EAAgBC,QAAW,MAAM,SACjD,EAAgB,EAAgBC,QAAW,MAAM,SACjD,EAAgB,EAAgBC,iBAAoB,MAAM,kBAC1D,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,6BAAgC,MAAM,8BACtE,EAAgB,EAAgBC,4BAA+B,MAAM,6BACrE,EAAgB,EAAgBC,gCAAmC,MAAM,iCACzE,EAAgB,EAAgBC,yBAA4B,MAAM,0BAClE,EAAgB,EAAgBC,uBAA0B,MAAM,wBAChE,EAAgB,EAAgBC,iBAAoB,MAAM,kBAC1D,EAAgB,EAAgBC,0BAA6B,MAAM,2BACnE,EAAgB,EAAgBC,2BAA8B,MAAM,4BACpE,EAAgB,EAAgBlI,YAAe,MAAM,aACrD,EAAgB,EAAgBmI,eAAkB,MAAM,gBACxD,EAAgB,EAAgBC,MAAS,MAAM;AACnD,EAAA,CAAG,AAAoB9B,OAAkB,CAAC,CAAE;AAC5C,SAAS+B,EAAuB,GAAgB;CAC5C,QAAO,geAgCP,EAAC,CAACC;AACN;AACA,IAAMC,KAAc;CAChB,kBAAkB;CAClB,kBAAkB;CAClB,WAAW,KAAA;CACX,mBAAmB;AACvB,GAEaC,IAAb,MAAaA,UAAuB,MAAM;CAItC,YAAY,GAAS;EAGjB,AAFA,MAAMC,CAAO,GAEb,OAAO,eAAe,MAAMD,EAAe,SAAS;CACxD;AACJ;AAKA,SAASE,EAAmB,GAAM,GAAM;CACpC,IAAIvJ,MAAS,KAAA,MAET,CAAC,OAAO,UAAUA,CAAI,KAAKA,IAAO,IAClC,MAAM,IAAIqJ,EAAe,YAAYG,EAAK,KAAKxJ,EAAK,mCAAmC;AAE/F;AAIA,SAASyJ,EAAmB,GAAU;CAKlC,OAJIC,KAAY,OAAOA,KAAY,MACxB,IACPA,KAAY,MACL,IACJ;AACX;AAIA,SAASC,GAAgB,GAAQ,GAAO;CACpC,IAAIxK,IAAIQ;CACR,OAAOR,IAAIyK,EAAO,UAAUA,EAAOzK,MAAM,MAAK;EAC1C,IAAM0K,IAAYJ,EAAmBG,EAAOzK,EAAE;EAC9C,IAAIA,IAAI0K,IAAYD,EAAO,QACvB;EACJ,KAAKC;CACT;CACA,OAAO1K;AACX;AAuBA,IAAqB2K,KAArB,MAA+B;CAI3B,YAAY,GAAM;EAwBd,AAvBA,KAAK,QAAQ,IACb,KAAK,WAAW,GAChB,KAAK,iBAAiB,GACtB,KAAK,yBAAyB,GAC9B,KAAK,kBAAkB,GACvB,KAAK,oBAAoB,GACzB,KAAK,oCAAoB,IAAI,WAAW,CAAC,GACzC,KAAK,UAAU,IAAI,YAAY,GAC/B,KAAK,SAAS,IACd,KAAK,mBAAmB,GACxB,IAAO,OAAO,OAAO,OAAO,OAAO,CAAC,GAAGV,EAAW,GAAGW,CAAI,GACzDR,EAAmB,oBAAoBQ,EAAK,gBAAgB,GAC5DR,EAAmB,oBAAoBQ,EAAK,gBAAgB,GAC5D,KAAK,oBAAoBA,EAAK,sBAAsB,IACpD,KAAK,iBACDA,EAAK,oBAAoBA,EAAK,mBAAmB,IAC3C,IAAIjK,EAAeiK,EAAK,gBAAgB,IACxC,IAAIvK,EAAkB,GAChC,KAAK,iBACDuK,EAAK,oBAAoBA,EAAK,mBAAmB,IAC3C,IAAIjK,EAAeiK,EAAK,gBAAgB,IACxC,IAAIvK,EAAkB,GAChC,KAAK,YAAYuK,EAAK,WACtB,KAAK,iBAAiBA,EAAK,YACrB,KAAK,QAAQ,OAAOA,EAAK,SAAS,IAClC,KAAA;CACV;CAEA,IAAI,UAAU;EACV,OAAO,KAAK,UAAU;CAC1B;CAQA,sBAAsB,GAAQ;EAC1B,IAAI,KAAK,kBAAkB,KAAA,GAAW;GAClC,IAAIC,KAAU,SAAUA,KAAU,OAAQ;IAGtC,IAAMC,IAAgB,OAAO,aAAa,KAAK,eAAeD,CAAM,GAC9DE,IAAgB,KAAK,QAAQ,OAAOD,CAAa;IAIvD,AAHA,KAAK,eAAe,UAAUC,CAAa,GAE3C,KAAK,0BAA0B,IAAIA,EAAc,YACjD,KAAK,gBAAgB,KAAA;IACrB;GACJ;GAGA,KAAK,0BAA0B;EACnC;EACA,IAAIF,KAAU,SAAUA,KAAU,OAAQ;GAItC,AADA,KAAK,gBAAgBA,GACrB,KAAK,0BAA0B;GAC/B;EACJ;EACA,IAAIA,KAAU,SAAUA,KAAU,OAAQ;GAItC,AADA,KAAK,eAAe,eAAeA,CAAM,GACzC,KAAK,0BAA0B;GAC/B;EACJ;EACA,IAAMC,IAAgB,OAAO,aAAaD,CAAM,GAC1CE,IAAgB,KAAK,QAAQ,OAAOD,CAAa;EAGvD,AAFA,KAAK,eAAe,UAAUC,CAAa,GAE3C,KAAK,0BAA0B,IAAIA,EAAc;CACrD;CACA,4BAA4B;EACxB,AAAI,KAAK,kBAAkB,KAAA,MACvB,KAAK,eAAe,eAAe,KAAK,aAAa,GACrD,KAAK,gBAAgB,KAAA;CAE7B;CAGA,oBAAoB,GAAQ,GAAO;EAI/B,AAHA,KAAK,oBAAoBT,EAAmBG,EAAOjK,EAAM,GACzD,KAAK,kBAAkBA,IAAQ,KAAK,oBAAoBiK,EAAO,QAC/D,KAAK,kBAAkB,IAAIA,EAAO,SAASjK,CAAK,CAAC,GACjD,KAAK,QAAQ;CACjB;CAcA,MAAM,GAAO;EACT,IAAI;GACA,IAAIiK;GACJ,IAAIO,aAAiB,YACjB,IAASA;QAER,IAAI,OAAOA,KAAU,UAAU;IAChC,AAAI,KAAK,2BAA2B,KAAA,MAChC,IAAQ,KAAK,yBAAyBA,GACtC,KAAK,yBAAyB,KAAA;IAElC,IAAMC,IAAeD,EAAM,WAAWA,EAAM,SAAS,CAAC;IAQtD,AAPIC,KAAgB,SAAUA,KAAgB,UAI1C,KAAK,yBAAyBD,EAAMA,EAAM,SAAS,IACnD,IAAQA,EAAM,MAAM,GAAG,EAAE,IAE7B,IAAS,KAAK,QAAQ,OAAOA,CAAK;GACtC,OACK,IAAI,YAAY,OAAOA,CAAK,GAC7B,IAAS,IAAI,WAAWA,EAAM,QAAQA,EAAM,YAAYA,EAAM,UAAU;QAEvE,IACD,OAAOA,KAAU,YADZA,KAEL,OAAOA,EAAM,OAAO,aAAc,YAIlC,IAAS,WAAW,KAAKA,CAAK;QAG9B,MAAU,UAAU,wHAAwH;GAEhJ,KAAK,IAAI7M,IAAI,GAAGA,IAAIsM,EAAO,QAAQ,KAAK,GAAG;IACvC,IAAMjM,IAAIiM,EAAOtM;IACjB,QAAQ,KAAK,OAAb;KAEI,KAAK;MACD,IAAIK,MAAM,KAAM;OAGZ,AAFA,KAAK,MAAM;QAAC;QAAM;QAAM;OAAI,GAC5B,KAAK,YAAY,GACjB,KAAK,QAAQ;OACb;MACJ;MACA,IAAIwM,aAAiB,aAAa;OAC9B,IAAIxM,MAAM,KAAM;QAGZ,AAFA,KAAK,MAAM,CAAC,KAAM,GAAI,GACtB,KAAK,YAAY,GACjB,KAAK,QAAQ;QACb;OACJ;OACA,IAAIA,MAAM,KAAM;QAGZ,AAFA,KAAK,MAAM,CAAC,KAAM,GAAI,GACtB,KAAK,YAAY,GACjB,KAAK,QAAQ;QACb;OACJ;MACJ;MACA,IAAIwM,aAAiB,aAAa;OAC9B,IAAIxM,MAAM,GAAM;QAGZ,AAFA,KAAK,MAAM;SAAC;SAAM;SAAM;SAAM;QAAI,GAClC,KAAK,YAAY,GACjB,KAAK,QAAQ;QACb;OACJ;OACA,IAAIA,MAAM,KAAM;QAGZ,AAFA,KAAK,MAAM;SAAC;SAAM;SAAM;SAAM;QAAI,GAClC,KAAK,YAAY,GACjB,KAAK,QAAQ;QACb;OACJ;MACJ;KACJ,KAAK;MAED,IADA,KAAK,UAAU,GACX,KAAK,kBAAkBA,MAAM,KAAK,eAAe,IAAI;OACrD,IAAI,KAAK,eAAe,WAAW,GAAG;QAElC,AADA,KAAK,QAAQ,GACb,KAAK,QAAQ;SACT,OAAOR,EAAU;SACjB,OAAO,KAAK;SACZ,QAAQ,KAAK,SAAS,KAAK,eAAe,SAAS;QACvD,CAAC;QACD;OACJ;OACA,KAAK,QAAQ;OACb;MACJ;MACA,IAAIQ,MAAM,MACNA,MAAM,MACNA,MAAM,MACNA,MAAM,GAEN;MAEJ,IAAIA,MAAM,KAAsC;OAC5C,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC;OACD;MACJ;MACA,IAAIQ,MAAM,KAAuC;OAC7C,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC;OACD;MACJ;MACA,IAAIQ,MAAM,IAAsC;OAC5C,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC;OACD;MACJ;MACA,IAAIQ,MAAM,IAAuC;OAC7C,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC;OACD;MACJ;MACA,IAAIQ,MAAM,IAAwB;OAC9B,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC;OACD;MACJ;MACA,IAAIQ,MAAM,IAAwB;OAC9B,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC;OACD;MACJ;MACA,IAAIQ,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,IAAiC;OAGvC,AAFA,KAAK,eAAe,MAAM,GAC1B,KAAK,yBAAyB,GAC9B,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,KAAK,MAA8BA,KAAK,IAA6B;OAGrE,AAFA,KAAK,eAAe,MAAM,GAC1B,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,IAA6B;OAGnC,AAFA,KAAK,eAAe,MAAM,GAC1B,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,IAA+B;OAGrC,AAFA,KAAK,eAAe,MAAM,GAC1B,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA;KAEJ,KAAK;MACD,IAAIA,MAAM,IAAiC;OACvC,KAAK,0BAA0B;OAC/B,IAAM0M,IAAS,KAAK,eAAe,SAAS;OAO5C,AANA,KAAK,QAAQ,GACb,KAAK,QAAQ;QACT,OAAOlN,EAAU;QACjB,OAAOkN;QACP,QAAQ,KAAK;OACjB,CAAC,GACD,KAAK,UACD,KAAK,yBACD,KAAK,eAAe,aACpB;OACR;MACJ;MACA,IAAI1M,MAAM,IAAkC;OACxC,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,KAAK,KAAK;OACV,KAAK,0BAA0B;OAK/B,IAAM2M,IAASX,GAAgBC,GAAQtM,CAAC;OAOxC,AANIgN,IAAShN,MACT,KAAK,eAAe,UAAUsM,GAAQtM,GAAGgN,CAAM,GAC/C,IAAIA,IAAS,IAIbA,IAASV,EAAO,UAAUA,EAAOU,MAAW,QAC5C,KAAK,oBAAoBV,GAAQU,CAAM,GACvC,IAAIV,EAAO,SAAS;OAExB;MACJ;MACA,IAAIjM,KAAK,IAAwB;OAC7B,KAAK,0BAA0B;OAC/B,IAAIwB,IAAI7B;OACR,OAAO6B,IAAIyK,EAAO,SAAQ;QACtB,IAAMvL,IAAIuL,EAAOzK;QACjB,IAAId,IAAI,MACJA,KAAK,OACLA,MAAM,MACNA,MAAM,IACN;QACJ,KAAK;OACT;OAKA,IAAIc,IAAI7B,KAAK,IACT,KAAK,eAAe,UAAUsM,GAAQtM,GAAG6B,CAAC;YAG1C,KAAK,IAAIoL,IAAIjN,GAAGiN,IAAIpL,GAAG,KAAK,GACxB,KAAK,eAAe,WAAWyK,EAAOW,EAAE;OAEhD,IAAIpL,IAAI;OACR;MACJ;MACA;KACJ,KAAK,IAAiD;MAMlD,IAAMqL,IAAY,KAAK,IAAI,KAAK,iBAAiBZ,EAAO,SAAStM,CAAC;MAGlE,IAFA,KAAK,kBAAkB,IAAIsM,EAAO,SAAStM,GAAGA,IAAIkN,CAAS,GAAG,KAAK,oBAAoB,KAAK,eAAe,GAC3G,KAAK,mBAAmBA,GACpB,KAAK,kBAAkB,GAAG;OAC1B,IAAIZ,EAAO,SAAS;OACpB;MACJ;MAGA,AAFA,KAAK,eAAe,UAAU,KAAK,mBAAmB,GAAG,KAAK,iBAAiB,GAC/E,KAAKY,IAAY,GACjB,KAAK,QAAQ;MACb;KACJ;KACA,KAAK,IAAiD;MAClD,IAAMC,IAAcvD,GAAiBvJ;MACrC,IAAI8M,GAAa;OAIb,AAHA,KAAK,0BAA0B,GAC/B,KAAK,eAAe,WAAWA,CAAW,GAC1C,KAAK,0BAA0B,GAC/B,KAAK,QAAQ;OACb;MACJ;MACA,IAAI9M,MAAM,KAAwC;OAE9C,AADA,KAAK,UAAU,IACf,KAAK,QAAQ;OACb;MACJ;MACA;KACJ;KACA,KAAK;KACL,KAAK;KACL,KAAK;MACD,IAAKA,KAAK,MAA+BA,KAAK,MACzCA,KAAK,MACFA,KAAK,MACRA,KAAK,MACFA,KAAK,KAAyC;OAElD,AADA,KAAK,WAAW,OAAO,aAAaA,CAAC,GACrC,KAAK,SAAS;OACd;MACJ;MACA;KACJ,KAAK;MACD,IAAKA,KAAK,MAA+BA,KAAK,MACzCA,KAAK,MACFA,KAAK,MACRA,KAAK,MACFA,KAAK,KAAyC;OAClD,IAAMqM,IAAS,SAAS,KAAK,UAAU,OAAO,aAAarM,CAAC,GAAG,EAAE;OAEjE,AADA,KAAK,sBAAsBqM,CAAM,GACjC,KAAK,QAAQ;OACb;MACJ;MACA;KAEJ,KAAK;MACD,IAAIrM,MAAM,IAA6B;OAEnC,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,KAAK,MAA8BA,KAAK,IAA6B;OAErE,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,IAA4B;OAElC,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,OACNA,MAAM,IAAyC;OAE/C,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MAGA,AAFA,KACA,KAAK,QAAQ,GACb,KAAK,WAAW;MAChB;KACJ,KAAK;MACD,IAAIA,KAAK,MAA+BA,KAAK,IAA6B;OACtE,KAAK,eAAe,WAAWA,CAAC;OAChC;MACJ;MACA,IAAIA,MAAM,IAA4B;OAElC,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA,IAAIA,MAAM,OACNA,MAAM,IAAyC;OAE/C,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MAGA,AAFA,KACA,KAAK,QAAQ,GACb,KAAK,WAAW;MAChB;KACJ,KAAK;MACD,IAAIA,KAAK,MAA+BA,KAAK,IAA6B;OAEtE,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,KAAK,MAA+BA,KAAK,IAA6B;OACtE,KAAK,eAAe,WAAWA,CAAC;OAChC;MACJ;MACA,IAAIA,MAAM,OACNA,MAAM,IAAyC;OAE/C,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MAGA,AAFA,KACA,KAAK,QAAQ,GACb,KAAK,WAAW;MAChB;KAEJ,KAAK,IACD,IAAIA,MAAM,MAA8BA,MAAM,IAA+B;MAEzE,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;MACb;KACJ;KACJ,KAAK;MACD,IAAIA,KAAK,MAA+BA,KAAK,IAA6B;OAEtE,AADA,KAAK,eAAe,WAAWA,CAAC,GAChC,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,KAAK,MAA+BA,KAAK,IAA6B;OACtE,KAAK,eAAe,WAAWA,CAAC;OAChC;MACJ;MAGA,AAFA,KACA,KAAK,QAAQ,GACb,KAAK,WAAW;MAChB;KAEJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAO9C,AANA,KAAK,QAAQ,GACb,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC,GACD,KAAK,UAAU;OACf;MACJ;MACA;KAEJ,KAAK;MACD,IAAIQ,MAAM,IAAuC;OAC7C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAO9C,AANA,KAAK,QAAQ,GACb,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC,GACD,KAAK,UAAU;OACf;MACJ;MACA;KAEJ,KAAK;MACD,IAAIQ,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAC9C,KAAK,QAAQ;OACb;MACJ;MACA;KACJ,KAAK;MACD,IAAIA,MAAM,KAAwC;OAO9C,AANA,KAAK,QAAQ,GACb,KAAK,QAAQ;QACT,OAAOR,EAAU;QACjB,OAAO;QACP,QAAQ,KAAK;OACjB,CAAC,GACD,KAAK,UAAU;OACf;MACJ;MACA;KACJ,KAAK;MAED,IADA,KAAK,kBAAkB,GACnB,CAAC,KAAK,kBACNQ,MAAM,KAAK,eAAe,KAAK,iBAC/B;MAEJ,AAAI,KAAK,mBAAmB,KAAK,eAAe,SAAS,MACrD,KAAK,QAAQ,GACb,KAAK,QAAQ;OACT,OAAOR,EAAU;OACjB,OAAO,KAAK;OACZ,QAAQ,KAAK,SAAS,KAAK;MAC/B,CAAC,GACD,KAAK,iBAAiB;MAE1B;KAEJ,KAAK;MACD,IAAIQ,MAAM,KAAK,IAAI,KAAK,WAAW;OAC/B,IAAI,KAAK,aAAa,KAAK,IAAI,SAAS,GAAG;QAGvC,AAFA,KAAK,QAAQ,GACb,KAAK,MAAM,KAAA,GACX,KAAK,WAAW;QAChB;OACJ;OACA,KAAK,YAAY;OACjB;MACJ;MACA;KACJ,KAAK,GACD,IAAIA,MAAM,MACNA,MAAM,MACNA,MAAM,MACNA,MAAM,GAEN;IAEZ;IACA,MAAM,IAAI0L,EAAe,eAAe,OAAO,aAAa1L,CAAC,EAAE,uBAAuBL,EAAE,wBAAwB,KAAK,mBAAmBA,EAAE,cAAc4L,EAAuB,KAAK,KAAK,GAAG;GAChM;GAEA,IADA,KAAK,oBAAoBU,EAAO,QAC5B,KAAK,mBACL,QAAQ,KAAK,OAAb;IACI,KAAK;IACL,KAAK;IACL,KAAK;KACD,KAAK,QAAQ;MACT,OAAOzM,EAAU;MACjB,OAAO;MACP,QAAQ,KAAK;MACb,SAAS;KACb,CAAC;KACD;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;KACD,KAAK,QAAQ;MACT,OAAOA,EAAU;MACjB,OAAO;MACP,QAAQ,KAAK;MACb,SAAS;KACb,CAAC;KACD;IACJ,KAAK;IACL,KAAK;IACL,KAAK;KACD,KAAK,QAAQ;MACT,OAAOA,EAAU;MACjB,OAAO;MACP,QAAQ,KAAK;MACb,SAAS;KACb,CAAC;KACD;IACJ,KAAK,IAAyC;KAC1C,IAAMkN,IAAS,KAAK,eAAe,SAAS;KAC5C,KAAK,QAAQ;MACT,OAAOlN,EAAU;MACjB,OAAOkN;MACP,QAAQ,KAAK;MACb,SAAS;KACb,CAAC;KACD;IACJ;IACA,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK,IACD,IAAI;KACA,KAAK,QAAQ;MACT,OAAOlN,EAAU;MACjB,OAAO,KAAK,YAAY,KAAK,eAAe,SAAS,CAAC;MACtD,QAAQ,KAAK;MACb,SAAS;KACb,CAAC;IACL,QACW,CAEX;GACR;EAER,SACOuN,GAAK;GACR,KAAK,MAAMA,CAAG;EAClB;CACJ;CACA,aAAa;EAMT,AALA,KAAK,QAAQ;GACT,OAAOvN,EAAU;GACjB,OAAO,KAAK,YAAY,KAAK,eAAe,SAAS,CAAC;GACtD,QAAQ,KAAK;EACjB,CAAC,GACD,KAAK,UAAU,KAAK,eAAe,aAAa;CACpD;CAUA,YAAY,GAAW;EACnB,OAAO,OAAOwN,CAAS;CAC3B;CAOA,MAAM,GAAK;EAIP,AAHI,KAAK,UAAU,MACf,KAAK,QAAQ,IAEjB,KAAK,QAAQD,CAAG;CACpB;CAQA,MAAM;EACF,QAAQ,KAAK,OAAb;GACI,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;IAGD,AAFA,KAAK,QAAQ,GACb,KAAK,WAAW,GAChB,KAAK,MAAM;IACX;GACJ,KAAK;GACL,KAAK;GACL,KAAK;IAED,AADA,KAAK,QAAQ,GACb,KAAK,MAAM;IACX;GACJ,SACI,KAAK,MAAM,IAAIrB,EAAe,oDAAoDH,EAAuB,KAAK,KAAK,EAAE,iEAAiE,CAAC;EAC/L;CACJ;CAQA,QAAQ,GAAa;EAEjB,MAAM,IAAIG,EAAe,oEAAmE;CAChG;CAQA,QAAQ,GAAK;EAET,MAAMqB;CACV;CAEA,QAAQ,CAER;AACJ,GCz5BIE;CACH,SAAU,GAAkB;CAOzB,AANA,EAAiB,EAAiBC,QAAW,KAAK,SAClD,EAAiB,EAAiBC,MAAS,KAAK,OAChD,EAAiB,EAAiBxK,QAAW,KAAK,SAClD,EAAiB,EAAiBC,QAAW,KAAK,SAClD,EAAiB,EAAiB8G,QAAW,KAAK,SAClD,EAAiB,EAAiBC,QAAW,KAAK,SAClD,EAAiB,EAAiBzG,YAAe,KAAK;AAC1D,EAAA,CAAG,AAAqB+J,OAAmB,CAAC,CAAE;;ACxB9C,IAAWG;CACV,SAAU,GAAiB;CAIxB,AAFA,EAAgB,EAAgBC,SAAY,KAAK,UAEjD,EAAgB,EAAgBC,QAAW,KAAK;AACpD,EAAA,CAAG,AAAoBF,OAAkB,CAAC,CAAE;;ACyE5C,IAAMG,IAAkB;CAAC;CAAM;CAAM;AAAI,GAGnCC,KAAwF;EACzF/N,EAAU,cAAc,GAAM,GAAQ,MAAW;EAC9C,EAAcgO,GAAM,UAAUC,CAAM;CACxC;EACCjO,EAAU,eAAe,GAAM,GAAQ,MAAW;EAC/C,EAAegO,GAAM,UAAUC,CAAM;CACzC;EACCjO,EAAU,gBAAgB,GAAM,GAAQ,MAAW;EAChD,EAAcgO,GAAM,QAAQC,CAAM;CACtC;EACCjO,EAAU,iBAAiB,GAAM,GAAQ,MAAW;EACjD,EAAegO,GAAM,QAAQC,CAAM;CACvC;EACCjO,EAAU,SAAS,GAAM,GAAQ,MAAW;EACzC,GAAUgO,EAAK,OAAOC,CAAM;CAChC;EACCjO,EAAU,SAAS,GAAM,GAAQ,MAAW;EACzC,GAAUgO,EAAK,OAAOC,CAAM;CAChC;EACCjO,EAAU,QAAQ,GAAM,GAAQ,MAAW;EACxC,EAAWgO,GAAM,WAAW,IAAMC,CAAM;CAC5C;EACCjO,EAAU,SAAS,GAAM,GAAQ,MAAW;EACzC,EAAWgO,GAAM,WAAW,IAAOC,CAAM;CAC7C;EACCjO,EAAU,QAAQ,GAAM,GAAQ,MAAW;EACxC,EAAWgO,GAAM,QAAQ,MAAMC,CAAM;CACzC;EACCjO,EAAU,UAAU,GAAM,GAAO,MAAW;EACzC,GAAWgO,GAAME,GAAiBD,CAAM;CAC5C;EACCjO,EAAU,UAAU,GAAM,GAAO,MAAW;EACzC,EAAWgO,GAAM,UAAUE,GAAqBD,CAAM;CAC1D;EACCjO,EAAU,kBAAkB,CAE7B;AACJ;AAIA,SAAgBmO,EAAsB,GAAiC,GAAoD;CACvH,IAAMC,IAAY,IAAI1B,GAAU2B,EAAQ,cAAc,EAAE,WAAW,KAAK,IAAI,KAAA,CAAS;CAErF,OAAO,OAAOD,GAAW,EAAE,cAAc,OAAoC,EAAE,cAAW,GAAG,CAAC;CAC9F,IAAME,IAAqB;EAAE,WAAW;EAAG,YAAY;EAAG,SAAS,KAAA;EAAW,cAAc;EAAM,cAAc;EAAO,WAAW;CAAM;CAGxI,IAAID,EAAQ,eAAeA,EAAQ,mBAAmB;EAClD,IAAME,IAAYC,EAAmB;GACjC,OAAO;GACP,WAAW;GACX,KAAK,KAAA;GACL,QAAQ;GACR,QAAQ,KAAA;GACR,MAAMH,EAAQ;GACd,aAAaA,EAAQ;EACzB,CAAC;EAID,AAHA,EAAU,aAAaA,EAAQ,gBAC/B,EAAU,aAAa,CAACA,EAAQ,eAAeA,EAAQ,iBAAiB,IAAI,eAAe,SAC3F,EAAM,UAAUE,GAChBE,EAAS,mBAAmBF,CAAS;CACzC;CAEA,IAAMP,IAAa;EAAE;EAAU;EAAS;CAAM;CAQ9C,OAPA,EAAU,WAAW,EAAE,QAAQU,GAAa,UAAO,eAAkB;EACjE,IAAMT,IAASI,EAAQ,aAAaC,EAAM,aAAaI;EAGvD,AAFA,EAAM,YAAY,IAClBD,EAAS,eAAeR,CAAM,GAC9BF,GAAaY,EAAM,CAACX,GAAME,GAAOD,CAAM;CAC3C,GAEO;EACH,WAAiB;GAKb,AAJAG,EAAU,IAAI,GACV,CAACC,EAAQ,eAAe,CAACC,EAAM,aAAWM,EAAO,qBAAqBP,EAAQ,UAAU,GAC7EC,EAAM,WAAW,QAAQ,EAAED,EAAQ,eAAeC,EAAM,QAAQ,cACnEM,EAAO,uCAAuCP,EAAQ,aAAaC,EAAM,SAAS,GAC1FA,EAAM,WAAW,QAAMG,EAAS,iBAAiBH,EAAM,SAAS,GAAG;EAC3E;EACA,QAAQ,MAA4B;GAChC,IAAIO,IAAQ9B;GASZ,AARA,EAAM,aAAaA,EAAM,QACrBuB,EAAM,iBACN,EAAM,eAAe,IACjBD,EAAQ,eAAe,KAAKP,EAAgB,OAAO,GAAM,MAAUe,EAAMC,OAAWC,CAAI,MACxF,IAAQF,EAAM,SAASf,EAAgB,MAAM,GAC7C,EAAM,aAAaA,EAAgB,UAG3CM,EAAU,MAAMS,CAAK;EACzB;CACJ;AACJ;AAEA,SAAgBG,EAAa,GAAqC;CAC9D,OAAO,OAAOd,KAAU,cAAYA,KAAiB,gBAAgBA;AACzE;AAGA,SAAgBe,EAAmB,GAA0B;CAIzD,OAHqB,OAAOf,KAAU,aAAlCA,IAAmD,KAAK,UAAUA,CAAK,IACvEc,EAAad,CAAK,IAAUA,EAAM,aAClC,MAAM,QAAQA,CAAK,IAAU,IAAIA,EAAM,KAAK,MAASe,EAAmBC,CAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,KACtF,IAAI,OAAO,QAAQhB,CAAK,CAAC,CAC3B,KAAK,CAACiB,GAAKD,OAAU,GAAG,KAAK,UAAUC,CAAG,EAAE,GAAGF,EAAmBC,CAAI,GAAG,CAAC,CAC1E,KAAK,GAAG,EAAE;AACnB;AAIA,SAASV,EAAmB,GAAuF;CAC/G,OAAO;EAAE,GAAGzB;EAAO,YAAY;EAAG,YAAY,KAAA;EAAW,YAAY;CAAQ;AACjF;AAEA,SAAS6B,EAAO,GAAiB,GAAuB;CACpD,MAAU,MAAM,GAAG1C,EAAQ,WAAW,OAAO+B,CAAM,EAAE,EAAE;AAC3D;AAGA,SAASmB,EAAW,GAAoB,GAAiC,GAAmC;CACxG,IAAMb,IAAYD,EAAM;CAiBxB,OAhBIC,KAAa,QACTD,EAAM,gBAAcM,EAAO,gDAAgDX,CAAM,GAC9E,EAAE,KAAK,KAAA,EAAU,KAExBM,EAAU,WAAW,YACjBA,EAAU,eAAe,aAAYK,EAAO,gBAAgBX,CAAM,IAC7DM,EAAU,eAAe,eAAcK,EAAO,uBAAuBX,CAAM,IAC3EM,EAAU,eAAe,gBAAcK,EAAO,kBAAkBX,CAAM,GAC/E,EAAU,aAAa,cACvB,EAAU,cACH,EAAE,KAAKM,EAAU,WAAW,MAInC,EADoBA,EAAU,aAAaF,EAAQ,gBAClCE,EAAU,eAAe,gBAAcK,EAAO,gBAAgBX,CAAM,GACzF,EAAU,aAAa,cAChB,EAAE,KAAK,EAAU,aAAa;AACzC;AAEA,SAASoB,EAAc,EAAE,aAAU,YAAS,YAAe,GAAkC,GAAsB;CAC/G,IAAM,EAAE,WAAQD,EAAWd,GAAOD,GAASJ,CAAM,GAC3CqB,IAAShB,EAAM,SACfiB,IAAOD,KAAU,OAAOjB,EAAQ,WAAW,CAAC,GAAGiB,EAAO,MAAMH,KAAO,EAAE;CAE3E,AADA,EAAM,UAAUX,EAAmB;EAAE,OAAOc,KAAU,OAAO,IAAIA,EAAO,QAAQ;EAAG,WAAW;EAAO;EAAK;EAAQ;EAAQ;EAAM,aAAarB;CAAO,CAAC,GACrJQ,EAAS,mBAAmBH,EAAM,OAAO;AAC7C;AAEA,SAASkB,EAAe,EAAE,aAAU,YAAe,GAAkC,GAAsB;CACvG,IAAMjB,IAAYD,EAAM,SAClBmB,IAAUC,MAAW,WAAW,MAAM;CAE5C,IADInB,GAAW,WAAWmB,KACtBnB,EAAU,eAAe,WAAWA,EAAU,eAAe,cAAc,OAAOK,EAAO,eAAea,EAAQ,IAAIxB,CAAM;CAI9H,AAFAQ,EAAS,iBAAiBF,GAAWA,EAAU,YAAYN,IAASA,IAAS,CAAC,GAC9E,EAAM,UAAUM,EAAU,YAAY,KAAA,IAAYA,EAAU,QACxDD,EAAM,YAAiB,EAAM,eAAe;AACpD;AAEA,SAASqB,GAAU,GAAoB,GAAsB;CACzD,AAAIrB,EAAM,SAAS,eAAe,aAAY,EAAM,QAAQ,aAAa,eACpEM,EAAO,kBAAkBX,CAAM;AACxC;AAEA,SAAS2B,GAAU,GAAoB,GAAsB;CACzD,AAAItB,EAAM,SAAS,eAAe,eAAc,EAAM,QAAQ,aAAa,eACtEM,EAAO,kBAAkBX,CAAM;AACxC;AAGA,SAAS4B,GAAW,GAAY,GAAe,GAAsB;CACjE,IAAMtB,IAAYP,EAAK,MAAM;CAC7B,AAAIO,GAAW,WAAW,aAAaA,EAAU,eAAe,WAAWA,EAAU,eAAe,iBAChG,EAAU,aAAaL,GACvB,EAAU,aAAa,YACvBF,EAAK,SAAS,QAAQO,GAAWL,CAAK,KAG1C4B,EAAW9B,GAAM,UAAUE,GAAOD,CAAM;AAC5C;AAEA,SAAS6B,EAAW,EAAE,aAAU,YAAS,YAAe,GAA+B,GAAmB,GAAsB;CAC5H,IAAMR,IAAShB,EAAM,SACf,EAAE,WAAQc,EAAWd,GAAOD,GAASJ,CAAM;CAEjD,AADAQ,EAAS,WAAW;EAAE;EAAK;EAAQ;EAAQ,aAAaR;EAAQ;CAAM,CAAC,GACnEK,EAAM,YAAiB,EAAM,eAAe;AACpD;;ACrPA,IAAMyB,KAAqB;AAI3B,SAAgBC,EAAiB,GAA2B,GAA+C;CACvG,IAAMC,IAAuB,CAAC,GAC1BC,GACAC,IAAgB,IAChBC,IAAiB,IAEfC,KAAY,GAA0B,GAAkC,MAA2B;EACrG,IAAMC,IAAQL,EAAO,GAAG,EAAE;EAC1B,AAAIK,GAAO,cAAc/B,MACrB,MAAM,QAAQ+B,EAAM,KAAK,IAAGA,EAAM,MAAM,KAAKpC,CAAK,IACjD,EAAM,MAAM,OAAOiB,CAAG,KAAKjB;CACpC;CAwCA,OAAO;EAAE,UAAA;GArCL,iBAAiB,MAAc;IAC3B,AAAIK,MAAc2B,MACd,IAAiB,IACjB,IAAkB,KAAA;IAEtB,IAAMI,IAAQL,EAAO,GAAG,EAAE;IAC1B,IAAIK,GAAO,cAAc/B,GAAW;IACpC,EAAO,IAAI;IACX,IAAMgC,IAAcN,EAAO,GAAG,EAAE;IAChC,AAAIM,KAAe,OAAMC,EAAOF,EAAM,KAAK,IACtCD,EAASE,EAAY,WAAWhC,EAAU,KAAK+B,EAAM,KAAK;GACnE;GACA,mBAAmB,MAAc;IAC7B,IAAMG,IAAW,CAACN,KAAiBO,EAAcnC,EAAU,MAAMoC,CAAU;IAO3E,AANIF,MACA,IAAgB,IAChB,IAAkBlC,KAGNkC,KAAYlC,EAAU,WAAW,YAAc2B,KAAmB,QAAQ3B,EAAU,WAAW2B,KAAmBA,EAAgB,WAAW,UAC/ID,EAAO,SAAS,MAAGA,EAAO,KAAK;KAAE;KAAW,OAAO1B,EAAU,WAAW,SAAS,CAAC,IAAIqC,GAAsB;IAAE,CAAC;GACjI;GACA,WAAW,MAAW;IAClB,IAAMtB,IAASuB,EAAO;IACtB,IAAIvB,KAAU,QAAQW,EAAO,SAAS,GAAG;KACrC,EAASX,GAAQuB,EAAO,KAAKA,EAAO,KAAK;KACzC;IACJ;IACA,IAAMC,IAAaxB,GAAQ,WAAW,UAAUA,MAAWY,GACrDO,IAAW,CAACN,KAAiBO,EAAcpB,KAAU,OAAO,CAAC,IAAI,CAAC,GAAGA,EAAO,MAAMuB,EAAO,OAAO,EAAE,GAAGF,CAAU;IAKrH,AAJIF,MACA,IAAgB,IAChB,IAAiB,MAEjBK,KAAcL,MAAUD,EAAOK,EAAO,KAAK;GACnD;EAEK;EAAU,sBAAsBT;EAAgB,qBAAqBD;CAAc;AAChG;AAIA,SAAgBY,EAAY,GAAyC;CACjE,IAAMC,oBAAS,IAAI,IAAuB;CAC1C,IAAI,CAACC,EAAc/B,CAAI,GAEnB,OADA8B,EAAO,IAAIjB,IAAoBb,CAAI,GAC5B8B;CAEX,IAAME,KAAa,GAAkC,MAAyB;EAC1E,KAAK,IAAM,CAAC/B,GAAKgC,MAAe,OAAO,QAAQjD,CAAK,GAAG;GACnD,IAAM9B,IAAOgF,MAAW,KAAKjC,IAAM,GAAGiC,EAAO,GAAGjC;GAChD,AAAI8B,EAAcE,CAAU,KAAK,OAAO,KAAKA,CAAU,CAAC,CAAC,SAAS,IAAGD,EAAUC,GAAY/E,CAAI,IAC1F4E,EAAO,IAAI5E,GAAM+E,CAAU;EACpC;CACJ;CAEA,OADAD,EAAUhC,GAAM,EAAE,GACX8B;AACX;AAGA,SAAgBK,EAAoB,GAAkD;CAClF,IAAMC,oBAAgB,IAAI,IAAoB;CAC9C,KAAK,IAAMN,KAAUO,GACjB,KAAK,IAAMnF,KAAQ4E,EAAO,KAAK,GAAG,AAAKM,EAAc,IAAIlF,CAAI,KAAGkF,EAAc,IAAIlF,GAAMkF,EAAc,IAAI;CAE9G,OAAO;EAAE;EAAe,aAAaA,EAAc,KAAK,CAAC,CAAC,QAAQ;CAAE;AACxE;AAEA,SAAgBE,EAAsB,GAAiC;CACnE,OAAOC,EAAM,YAAY,KAAK,OAAU;EAAE,OAAOrF;EAAM,gBAAgB;CAAK,EAAE;AAClF;AAIA,SAAgBsF,EAAgB,GAAgC,GAAuE;CACnI,IAAMC,IAAuBF,EAAM,YAAY,WAAW;EAAE,OAAO;EAAM,gBAAgB;CAAM,EAAE,GAC7FG,IAAkB;CACtB,KAAK,IAAM,CAACxF,GAAM8B,MAAU8C,GAAQ;EAChC,IAAMa,IAAcJ,EAAM,cAAc,IAAIrF,CAAI;EAChD,AAAIyF,KAAe,OAAM,IAAkB,KACtC,EAAOA,KAAeC,GAAqB5D,CAAK;CACzD;CACA,OAAO;EAAE;EAAiB;CAAO;AACrC;AAIA,SAASwC,EAAc,GAAqB,GAAmC;CAC3E,OAAOnB,EAAK,WAAWwC,EAAU,UAAUxC,EAAK,OAAO,GAAS,MAAUyC,MAAYD,EAAUjD,EAAM;AAC1G;AAGA,SAAS8B,KAAmD;CACxD,OAAO,OAAO,OAAO,IAAI;AAC7B;AAEA,SAASK,EAAc,GAAsD;CACzE,OAAO,OAAO/C,KAAU,cAAYA,KAAiB,CAAC,MAAM,QAAQA,CAAK,KAAK,CAACc,EAAad,CAAK;AACrG;AAGA,SAAS4D,GAAqB,GAAwC;CAKlE,OAJI5D,KAAS,OAAa;EAAE,OAAO;EAAM,gBAAgB;CAAM,IAC3D,OAAOA,KAAU,WAAiB;EAAE;EAAO,gBAAgB;CAAK,IAChE,OAAOA,KAAU,YAAkB;EAAE,OAAO,OAAOA,CAAK;EAAG,gBAAgB;CAAM,IACjFc,EAAad,CAAK,IAAU;EAAE,OAAOA,EAAM;EAAY,gBAAgB;CAAM,IAC1E;EAAE,OAAOe,EAAmBf,CAAK;EAAG,gBAAgB;CAAK;AACpE;;AC9HA,IAAM+D,KAAoB,GACpBC,KAA2B,KAC3BC,KAA6B,KAC7BC,KAAwB,KACxBC,KAAqB,GACrBC,KAAgB,KAChBC,IAAiB,IAIjBC,IAAuB,SAGvBC,IAAe,gBAAI,MAAM,wCAAwC,GAI1DC,KAAb,MAAuD;CAKnD,MAAM,oBAAoB,GAAoC,GAA8D;EACxH,IAAMC,IAAWtE,EAAQ,YAAY4D,IAC/BW,oBAAS,IAAI,IAA8B,GAC3CC,IAAyB,CAAC,GAC1BC,KAAW,MAAiEvE,KAAa,OAAO,KAAA,IAAYqE,EAAO,IAAIrE,CAAS,GAEhIwE,KAAY,GAAmC,GAAkC,GAAqB,MAA4B;GACpI,IAAMC,IAAcF,EAAQxD,CAAM;GAClC,AAAI,OAAOH,KAAQ,YAAY6D,GAAa,KAAK,WAAW,WACxD7D,IAAMiD,OAA0B,KAAGY,EAAY,KAAK,YAAY,KAAK;IAAE,WAAW7D;IAAK,QAAQ8D;GAAY,CAAC,GAC3GC,MAAU,EAAY,mBAAmB;EAClD,GAGMC,KAAa,MACX5E,EAAU,QAAQoE,IAAiB,KACnCpE,EAAU,UAAU,SACHA,EAAU,OAAO,WAAW,UAAW,OAAOA,EAAU,OAAQ,YAAYA,EAAU,MAAM8D,OAC1FO,EAAO,IAAIrE,EAAU,MAAM,GAEhD6E,IAASjF,EAAsBkF,EAAuBhF,EAAQ,YAAY,GAAG;GAC/E,iBAAiB,GAAW,MAAc;IACtC,IAAMiF,IAAQV,EAAO,IAAIrE,CAAS;IAClC,AAAI+E,KAAS,SACb,EAAM,KAAK,YAAYC,GACvB,EAAM,KAAK,aAAahF,EAAU,YAClC,EAAM,KAAK,mBAAmB+E,EAAM,KAAK,WAAW,UAAU/E,EAAU,aAAa,KAAK,CAAC+E,EAAM,kBACjG,EAAM,KAAK,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,QAAQ,GAChDV,EAAO,OAAOrE,CAAS;GAC3B;GACA,mBAAmB,MAAc;IAE7B,IADAwE,EAASxE,EAAU,QAAQA,EAAU,KAAKA,EAAU,aAAaA,EAAU,WAAW,QAAQ,GAC1F,CAAC4E,EAAU5E,CAAS,GAAG;IAC3B,IAAMiF,IAAsB;KACxB,aAAa,CAAC;KACd,YAAY;KACZ,WAAW;KACX,kBAAkB;KAClB,MAAM,CAAC;KACP,QAAQjF,EAAU;KAClB,MAAMA,EAAU;KAChB,aAAaA,EAAU;IAC3B;IAEA,AADAsE,EAAM,KAAKW,CAAI,GACfZ,EAAO,IAAIrE,GAAW;KAAE,kBAAkB;KAAO,wBAAQ,IAAI,IAAI;KAAG;IAAK,CAAC;GAC9E;GACA,QAAQ,GAAW,MAAQ;IACvB,GAAOuE,EAAQvE,CAAS,GAAGY,CAAG;IAC9B,IAAM6D,IAAcF,EAAQvE,EAAU,MAAM;IAC5C,AAAIyE,GAAa,KAAK,WAAW,UAAQS,GAAOT,GAAa7D,CAAG;GACpE;GACA,WAAW,MAAW;IAClB,EAAS0B,EAAO,QAAQA,EAAO,KAAKA,EAAO,aAAa,EAAK;GACjE;EACJ,CAAC,GACK6C,IAAY,MAAMC,EAAWC,GAAQvF,EAAQ,aAAa+E,GAAQ/E,EAAQ,UAAU;EAE1F,KAAK,IAAMmF,KAAQX,GAAO,AAAI,OAAO,MAAMW,EAAK,SAAS,MAAG,EAAK,YAAYE;EAC7E,OAAO;GAAE;GAAW;EAAM;CAC9B;CAMA,MAAM,qBAAqB,GAAoC,GAA2E;EACtI,IAAMG,IAAiBxF,EAAQ,kBAAkB6D,IAC3C4B,IAA4B,CAAC,GAC/BC,IAAS,IACTC,GACEC,IAAU5F,EAAQ,iBAAiB,WAAWA,EAAQ,KAAK,WAAW,GACtE6F,IAAwC;GAC1C,YAAY7F,EAAQ;GACpB,gBAAgBA,EAAQ,kBAAkB;GAC1C,aAAa4F;GACb,mBAAmB5F,EAAQ,kBAAkB;GAC7C,UAAUA,EAAQ;EACtB,GAEM8F,KAAc,MAAgC;GAChD,IAAIL,EAAQ,UAAUzF,EAAQ,YAE1B,MADA,IAAS,IACHoE;GAEV,EAAQ,KAAK2B,CAAK;EACtB,GACMhB,IAASjF,EAAsB+F,GAAe;GAChD,iBAAiB,GAAW,MAAc;IACtC,IAAI3F,EAAU,UAAU,GAAG,MAAMkE;IACjC,IAAIlE,EAAU,UAAU,GAAG;IAC3B,IAAM6F,IAAQN,EAAQ,GAAG,EAAE;IAC3B,AAAIM,KAAS,SACb,EAAM,YAAYb,GAClB,EAAM,aAAahF,EAAU;GACjC;GACA,mBAAmB,MAAc;IAC7B,AAAIA,EAAU,UAAU,KACxB4F,EAAW;KACP,YAAY;KACZ,WAAW;KACX,YAAY;KACZ,KAAK5F,EAAU,OAAO;KACtB,QAAQA,EAAU;KAClB,aAAaA,EAAU;KACvB,OAAO,KAAA;IACX,CAAC;GACL;GACA,WAAW,MAAW;IAClB,IAAIsC,EAAO,QAAQ,UAAU,GAAG;IAChC,IAAMwD,IAAOC,GAAezD,EAAO,KAAK,GAClC0D,IAAaF,KAAQ,QAAQA,EAAK,SAASR;IAUjD,AATA,IAAkB;KACd,YAAY,KAAA;KACZ,WAAW;KACX;KACA,KAAKhD,EAAO,OAAO;KACnB,QAAQA,EAAO;KACf,aAAaA,EAAO;KACpB,OAAO0D,IAAaF,EAAK,MAAM,GAAGR,CAAc,IAAIQ;IACxD,GACAF,EAAWH,CAAe;GAC9B;GACA,eAAe,MAAW;IACtB,AAAIA,KAAmB,SACvB,EAAgB,YAAY/F,GAC5B,IAAkB,KAAA;GACtB;EACJ,CAAC,GACKyF,IAAY,MAAMC,EAAWC,GAAQvF,EAAQ,aAAa+E,GAAQ,KAAA,CAAS;EAEjF,OADIY,KAAmB,SAAM,EAAgB,YAAY3F,EAAQ,cAAcqF,IACxE;GAAE;GAAS;EAAO;CAC7B;CAOA,OAAO,YAAY,GAAoC,GAAgG;EACnJ,EAAQ,YAAY,eAAe;EACnC,IAAMc,IAAkB,KAAK,IAAI,GAAG,KAAK,MAAMnG,EAAQ,aAAa8D,EAA0B,CAAC,GACzFsC,IAAqB;GAAE,cAAc;GAAO,YAAY,CAAC;GAAG,uBAAuB;GAAG,aAAa;GAAG,OAAO,KAAA;EAAU,GACvHC,IAAa1E,EAAiB3B,EAAQ,iBAAiB,CAAC,IAAI,MAAS;GACvE,EAAS,WAAW,KAAK0C,EAAY7B,CAAI,CAAC;EAC9C,CAAC,GACKkE,IAASjF,EAAsBkF,EAAuBhF,EAAQ,YAAY,GAAGqG,EAAW,QAAQ,GAChGC,IAAYC,GAAoBvG,EAAQ,UAAU,GAClDwG,IAASjB,EAAO,UAAU,GAC1BkB,UAAyB;GAC3B,QAAmB,KAAKD,EAAO,OAAOxG,EAAQ,YAAY,MAAM,CAAC;EACrE;EACA,EAAQ,YAAY,iBAAiB,SAASyG,GAAY,EAAE,MAAM,GAAK,CAAC;EAExE,IAAIpB,IAAY,GACZqB,IAAY;EAChB,IAAI;GACA,IAAIC,IAAS,MAAMH,EAAO,KAAK;GAC/B,OAAO,CAACG,EAAO,QAAQ,CAACN,EAAW,eAAe,IAAG;IAEjD,AADA,KAAaM,EAAO,MAAM,QAC1B,KAAaC,GAAeD,EAAO,KAAK;IACxC,KAAK,IAAIE,IAAa,GAAGA,IAAaF,EAAO,MAAM,UAAU,CAACN,EAAW,eAAe,GAAG,KAAclC,GAGrG,AAFAnE,EAAQ,YAAY,eAAe,GACnC+E,EAAO,MAAMuB,EAAUK,EAAO,MAAM,SAASE,GAAYA,IAAa1C,CAAoB,GAAG,EAAK,CAAC,GACnG,OAAO2C,EAASV,GAAUD,GAAiB,EAAK;IAEpD,AAAKE,EAAW,eAAe,MAAG,IAAS,MAAMG,EAAO,KAAK;GACjE;GAMA,IALAxG,EAAQ,YAAY,eAAe,GAC9BqG,EAAW,eAAe,MAC3BtB,EAAO,MAAMuB,kBAAU,IAAI,WAAW,GAAG,EAAI,CAAC,GAC9CvB,EAAO,IAAI,IAEX,CAACsB,EAAW,cAAc,GAAG,MAAU,MAAM,oBAAoBU,GAAa/G,EAAQ,iBAAiB,CAAC,CAAC,EAAE,EAAE;GAEjH,OADA,OAAO8G,EAASV,GAAUD,GAAiB,EAAI,GACxC;IAAE;IAAW,kBAAkB;IAAG,gBAAgB;IAAG;IAAW,uBAAuBC,EAAS;IAAuB,aAAaA,EAAS;GAAY;EACpK,UAAU;GAEN,AADApG,EAAQ,YAAY,oBAAoB,SAASyG,CAAU,GAC3D3S,QAAmB,KAAK0S,EAAO,OAAO,CAAC;EAC3C;CACJ;CAMA,UAAU,GAAc,GAAqD;EACzE,IAAMQ,IAAkC,CAAC,GACnCX,IAAa1E,EAAiB3B,EAAQ,iBAAiB,CAAC,IAAI,MAAS;GACvE,EAAM,KAAK0C,EAAY7B,CAAI,CAAC;EAChC,CAAC,GACKkE,IAASjF,EAAsBkF,EAAuBhF,EAAQ,YAAY,GAAGqG,EAAW,QAAQ,GAChGY,IAAwB,CAAC,GACzBzG,IAAQ,IAAI,YAAY,CAAC,CAAC,OAAOwF,CAAI;EAC3C,IAAI;GAGA,AAFAjB,EAAO,MAAMvE,CAAK,GACdR,EAAQ,cAAY+E,EAAO,IAAI,GAC/B/E,EAAQ,cAAc,CAACqG,EAAW,cAAc,KAAGY,EAAO,KAAKC,GAAe,oBAAoBH,GAAa/G,EAAQ,iBAAiB,CAAC,CAAC,EAAE,IAAIQ,GAAO,KAAA,CAAS,CAAC;EACzK,SAAS2G,GAAO;GAEZ,AADkBnH,EAAQ,cACXiH,EAAO,KAAKC,GAAeC,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK,GAAG3G,GAAO4G,GAAgBD,CAAK,CAAC,CAAC;EACpI;EACA,IAAM/D,IAAQJ,EAAoBgE,CAAK,GACjCK,IAAgCL,EAAM,WAAW,IAAI,CAAC,IAAI,CAAC7D,EAAsBC,CAAK,GAAG,GAAG4D,EAAM,KAAK,MAAW3D,EAAgBV,GAAQS,CAAK,CAAC,CAAC,MAAM,CAAC;EAC9J,OAAO,QAAQ,QAAQ;GAAE;GAAQ;GAAe,mBAAmB;GAAM,kBAAkB,KAAA;EAAU,CAAC;CAC1G;AACJ;AAOA,SAAS4B,EAAuB,GAAoD;CAChF,OAAO;EAAE,YAAY;EAAG,gBAAgB;EAAG,aAAasC,MAAiB;EAAS,mBAAmB;EAAO,UAAU,CAAC;CAAE;AAC7H;AAIA,eAAehC,EACX,GACA,GACA,GACA,GACe;CACf,EAAY,eAAe;CAC3B,IAAMkB,IAASjB,EAAO,UAAU,GAC1BkB,UAAyB;EAC3B,QAAmB,KAAKD,EAAO,OAAOe,EAAY,MAAM,CAAC;CAC7D;CACA,EAAY,iBAAiB,SAASd,GAAY,EAAE,MAAM,GAAK,CAAC;CAChE,IAAIpB,IAAY;CAChB,IAAI;EACA,IAAIsB,IAAS,MAAMH,EAAO,KAAK;EAC/B,OAAO,CAACG,EAAO,OAAM;GACjB,KAAK,IAAIE,IAAa,GAAGA,IAAaF,EAAO,MAAM,QAAQ,KAAcxC,GAAsB;IAC3F,EAAY,eAAe;IAC3B,IAAMqD,IAAQb,EAAO,MAAM,SAASE,GAAYA,IAAa1C,CAAoB;IAEjF,AADA,KAAaqD,EAAM,QACnBzC,EAAO,MAAMyC,CAAK;GACtB;GAEA,AADAC,IAAapC,CAAS,GACtB,IAAS,MAAMmB,EAAO,KAAK;EAC/B;EAGA,OAFAe,EAAY,eAAe,GAC3BxC,EAAO,IAAI,GACJM;CACX,SAAS8B,GAAO;EACZ,IAAIA,MAAU/C,GAAc,OAAOiB;EACnC,MAAM8B;CACV,UAAU;EAEN,AADAI,EAAY,oBAAoB,SAASd,CAAU,GACnD3S,QAAmB,KAAK0S,EAAO,OAAO,CAAC;CAC3C;AACJ;AAKA,SAASD,GAAoB,GAAyE;CAClG,IAAMmB,IAAY9V,GAAiB+V,CAAU;CAC7C,IAAID,MAAc,SAAS,QAAQ,MAAUlH;CAC7C,IAAMoH,IAAU,IAAI,YAAYF,CAAS,GACnCG,IAAU,IAAI,YAAY;CAChC,QAAQ,GAAO,MAAYA,EAAQ,OAAOD,EAAQ,OAAOpH,GAAO,EAAE,QAAQ,CAACsH,EAAQ,CAAC,CAAC;AACzF;AAEA,SAASlB,GAAe,GAA2B;CAC/C,IAAImB,IAAQ;CACZ,KAAK,IAAItH,IAAQD,EAAM,QAAQ0D,CAAc,GAAGzD,MAAU,IAAI,IAAQD,EAAM,QAAQ0D,GAAgBzD,IAAQ,CAAC,GAAG;CAChH,OAAOsH;AACX;AAMA,UAAUjB,EAAS,GAAoB,GAAyB,GAAiD;CAC7G,OAAOV,EAAS,WAAW,UAAUD,KAAoB2B,KAAW1B,EAAS,WAAW,SAAS,IAAI;EACjG,IAAMlD,IAAakD,EAAS,WAAW,OAAO,GAAGD,CAAe;EAChE,EAAS,UAAUnD,EAAoBE,CAAU;EACjD,IAAM8E,IAA0B,CAAC;EACjC,AAEI5B,EAAS,kBADT4B,EAAQ,KAAK7E,EAAsBiD,EAAS,KAAK,CAAC,GAC1B;EAE5B,KAAK,IAAMzD,KAAUO,GAAY;GAC7B,IAAM,EAAE,oBAAiB,cAAWG,EAAgBV,GAAQyD,EAAS,KAAK;GAE1E,AADI7C,KAAiB,EAAS,yBAC9ByE,EAAQ,KAAK1E,CAAM;EACvB;EAEA,AADA,EAAS,eAAe0E,EAAQ,QAChC,MAAM;GAAE;GAAS,QAAQ;EAAqB;CAClD;AACJ;AAIA,SAAS5C,GAAO,GAA8B,GAAmB;CAC7D,AAAIH,KAAS,QAAQA,EAAM,OAAO,OAAOhB,MAAegB,EAAM,OAAO,IAAInE,CAAG;AAChF;AAGA,SAASmF,GAAe,GAAsC;CAC1D,IAAIpG,KAAS,MAGb,OAFI,OAAOA,KAAU,WAAiBA,IAClC,OAAOA,KAAU,YAAkB,OAAOA,CAAK,IAC5Cc,EAAad,CAAK,IAAIA,EAAM,aAAa,KAAA;AACpD;AAEA,SAASkH,GAAa,GAAmC;CACrD,OAAO7F,EAAK,WAAW,IAAI,wBAAwB,IAAIA,EAAK,KAAK,KAAK,EAAE;AAC5E;AAKA,SAASkG,GAAgB,GAAoC;CACzD,IAAMa,IAAQd,aAAiB,QAAQ,qBAAqB,KAAKA,EAAM,OAAO,IAAI;CAClF,OAAOc,IAAQ,MAAM,OAAO,KAAA,IAAY,OAAOA,EAAM,EAAE;AAC3D;AAEA,SAASf,GAAe,GAAiB,GAAmB,GAAyC;CACjG,OAAO;EACH,eAAe,KAAA;EACf,aAAa,KAAA;EACb,IAAI;EACJ,YAAYtH,KAAU,OAAO,KAAA,IAAYgH,GAAepG,EAAM,SAAS,GAAGZ,CAAM,CAAC,IAAI;EACrF;EACA,cAAc,KAAA;EACd,YAAY;EACZ,OAAO,KAAA;CACX;AACJ"}
|
|
1
|
+
{"version":3,"file":"dpuse-tool-streamparser-json-parser.es.js","names":["TokenType","TokenType","resolveDecoderId","i","a","e","o","s","n","r","c","u","d","t","p","m","_","y","b","x","C","w","T","E","ee","A","te","ne","re","ie","ae","se","de","M","Me","B","Ue","We","NonBufferedString","char","buf","start","end","code","BufferedString","bufferSize","size","TokenType","\"LEFT_BRACE\"","\"RIGHT_BRACE\"","\"LEFT_BRACKET\"","\"RIGHT_BRACKET\"","\"COLON\"","\"COMMA\"","\"TRUE\"","\"FALSE\"","\"NULL\"","\"STRING\"","\"NUMBER\"","\"SEPARATOR\"","tokenType_default","charset","\"BACKSPACE\"","\"FORM_FEED\"","\"NEWLINE\"","\"CARRIAGE_RETURN\"","\"TAB\"","\"SPACE\"","\"EXCLAMATION_MARK\"","\"QUOTATION_MARK\"","\"NUMBER_SIGN\"","\"DOLLAR_SIGN\"","\"PERCENT_SIGN\"","\"AMPERSAND\"","\"APOSTROPHE\"","\"LEFT_PARENTHESIS\"","\"RIGHT_PARENTHESIS\"","\"ASTERISK\"","\"PLUS_SIGN\"","\"HYPHEN_MINUS\"","\"FULL_STOP\"","\"SOLIDUS\"","\"DIGIT_ZERO\"","\"DIGIT_ONE\"","\"DIGIT_TWO\"","\"DIGIT_THREE\"","\"DIGIT_FOUR\"","\"DIGIT_FIVE\"","\"DIGIT_SIX\"","\"DIGIT_SEVEN\"","\"DIGIT_EIGHT\"","\"DIGIT_NINE\"","\"SEMICOLON\"","\"LESS_THAN_SIGN\"","\"EQUALS_SIGN\"","\"GREATER_THAN_SIGN\"","\"QUESTION_MARK\"","\"COMMERCIAL_AT\"","\"LATIN_CAPITAL_LETTER_A\"","\"LATIN_CAPITAL_LETTER_B\"","\"LATIN_CAPITAL_LETTER_C\"","\"LATIN_CAPITAL_LETTER_D\"","\"LATIN_CAPITAL_LETTER_E\"","\"LATIN_CAPITAL_LETTER_F\"","\"LATIN_CAPITAL_LETTER_G\"","\"LATIN_CAPITAL_LETTER_H\"","\"LATIN_CAPITAL_LETTER_I\"","\"LATIN_CAPITAL_LETTER_J\"","\"LATIN_CAPITAL_LETTER_K\"","\"LATIN_CAPITAL_LETTER_L\"","\"LATIN_CAPITAL_LETTER_M\"","\"LATIN_CAPITAL_LETTER_N\"","\"LATIN_CAPITAL_LETTER_O\"","\"LATIN_CAPITAL_LETTER_P\"","\"LATIN_CAPITAL_LETTER_Q\"","\"LATIN_CAPITAL_LETTER_R\"","\"LATIN_CAPITAL_LETTER_S\"","\"LATIN_CAPITAL_LETTER_T\"","\"LATIN_CAPITAL_LETTER_U\"","\"LATIN_CAPITAL_LETTER_V\"","\"LATIN_CAPITAL_LETTER_W\"","\"LATIN_CAPITAL_LETTER_X\"","\"LATIN_CAPITAL_LETTER_Y\"","\"LATIN_CAPITAL_LETTER_Z\"","\"LEFT_SQUARE_BRACKET\"","\"REVERSE_SOLIDUS\"","\"RIGHT_SQUARE_BRACKET\"","\"CIRCUMFLEX_ACCENT\"","\"LOW_LINE\"","\"GRAVE_ACCENT\"","\"LATIN_SMALL_LETTER_A\"","\"LATIN_SMALL_LETTER_B\"","\"LATIN_SMALL_LETTER_C\"","\"LATIN_SMALL_LETTER_D\"","\"LATIN_SMALL_LETTER_E\"","\"LATIN_SMALL_LETTER_F\"","\"LATIN_SMALL_LETTER_G\"","\"LATIN_SMALL_LETTER_H\"","\"LATIN_SMALL_LETTER_I\"","\"LATIN_SMALL_LETTER_J\"","\"LATIN_SMALL_LETTER_K\"","\"LATIN_SMALL_LETTER_L\"","\"LATIN_SMALL_LETTER_M\"","\"LATIN_SMALL_LETTER_N\"","\"LATIN_SMALL_LETTER_O\"","\"LATIN_SMALL_LETTER_P\"","\"LATIN_SMALL_LETTER_Q\"","\"LATIN_SMALL_LETTER_R\"","\"LATIN_SMALL_LETTER_S\"","\"LATIN_SMALL_LETTER_T\"","\"LATIN_SMALL_LETTER_U\"","\"LATIN_SMALL_LETTER_V\"","\"LATIN_SMALL_LETTER_W\"","\"LATIN_SMALL_LETTER_X\"","\"LATIN_SMALL_LETTER_Y\"","\"LATIN_SMALL_LETTER_Z\"","\"LEFT_CURLY_BRACKET\"","\"VERTICAL_LINE\"","\"RIGHT_CURLY_BRACKET\"","\"TILDE\"","escapedSequences","TokenizerStates","\"START\"","\"ENDED\"","\"ERROR\"","\"TRUE1\"","\"TRUE2\"","\"TRUE3\"","\"FALSE1\"","\"FALSE2\"","\"FALSE3\"","\"FALSE4\"","\"NULL1\"","\"NULL2\"","\"NULL3\"","\"STRING_DEFAULT\"","\"STRING_AFTER_BACKSLASH\"","\"STRING_UNICODE_DIGIT_1\"","\"STRING_UNICODE_DIGIT_2\"","\"STRING_UNICODE_DIGIT_3\"","\"STRING_UNICODE_DIGIT_4\"","\"STRING_INCOMPLETE_CHAR\"","\"NUMBER_AFTER_INITIAL_MINUS\"","\"NUMBER_AFTER_INITIAL_ZERO\"","\"NUMBER_AFTER_INITIAL_NON_ZERO\"","\"NUMBER_AFTER_FULL_STOP\"","\"NUMBER_AFTER_DECIMAL\"","\"NUMBER_AFTER_E\"","\"NUMBER_AFTER_E_AND_SIGN\"","\"NUMBER_AFTER_E_AND_DIGIT\"","\"BOM_OR_START\"","\"BOM\"","TokenizerStateToString","tokenizerState","defaultOpts","TokenizerError","message","validateBufferSize","name","utf8SequenceLength","leadByte","multiByteRunEnd","j","buffer","seqLength","Tokenizer","opts","intVal","unicodeString","unicodeBuffer","input","lastCharCode","string","runEnd","k","available","controlChar","err","numberStr","TokenParserState","\"VALUE\"","\"KEY\"","TokenParserMode","\"OBJECT\"","\"ARRAY\"","BYTE_ORDER_MARK","TOKEN_TAKERS","walk","offset","value","createStructureWalker","tokenizer","options","state","startInside","container","constructContainer","handlers","tokenOffset","token","endOffset","runTokenizer","constructStructureError","bytes","isFirstWrite","index","byte","isNumberText","isStructureError","error","stringifyJsonValue","item","key","match","tokenizerBaseOffset","startValue","openContainer","parent","path","closeContainer","bracket","kindId","takeColon","takeComma","takeString","takeScalar","SCALAR_COLUMN_NAME","createItemReader","frames","targetContainer","isTargetFound","isTargetClosed","addValue","frame","parentFrame","onItem","isTarget","arePathsEqual","targetPath","constructRecordObject","scalar","isListItem","flattenItem","fields","isPlainObject","addFields","fieldValue","prefix","constructTableShape","columnIndexes","itemFields","constructHeaderRecord","shape","constructRecord","record","hasUnknownField","columnIndex","constructParsedValue","otherPath","segment","LINE_FEED_BYTE","MAX_LINE_START_BYTE_COUNT","EXCERPT_AFTER_BYTE_COUNT","createPositionTracker","decoder","chunk","chunkStartOffset","lineFeedCount","lineStart","before","lastLineFeedIndex","lineBefore","joinLineStart","after","afterLineEnd","textBefore","textAfter","isFromTop","countLineFeeds","concatenate","startOffset","count","first","second","DEFAULT_MAX_DEPTH","DEFAULT_MAX_VALUE_LENGTH","DEFAULT_RECORD_BUFFER_SIZE","CHECKPOINT_ITEM_COUNT","INDEXED_ITEM_COUNT","MAX_KEY_COUNT","ENCODING_MESSAGE","MAX_SLICE_BYTE_COUNT","STOP_READING","Tool","isUtf8","stream","constructIssue","maxDepth","drafts","nodes","isIndexed","takeItem","parentDraft","constructInsideLocator","isObject","draft","completeNode","node","addKey","tracker","walker","constructWalkerOptions","outcome","readStream","checkpoint","issues","constructSyntaxIssue","suggestStructurePath","maxValueLength","entries","nextLocator","openScalarEntry","keyOffset","startEntry","isObjectEntry","firstIndex","entry","locator","readStartInside","entryLocator","text","describeScalar","isValueCut","recordsPerChunk","rowState","progress","itemReader","isReading","reader","cancelRead","lineCount","result","sliceStart","writeSlice","takeRows","runWalker","describePath","items","parseLines","parseDocument","parsedRecords","hasHeaders","dataFormatId","encodingId","abortSignal","slice","onProgress","isEnded","describeSyntaxError","lines","lineIndex","line","lineItems","isComplete","constructLineIssue","isFinal","records","candidates","lineNumber","columnNumber","excerpt","describeLineError"],"sources":["../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared.es.js","../node_modules/@streamparser/json/dist/mjs/utils/bufferedString.js","../node_modules/@streamparser/json/dist/mjs/utils/types/tokenType.js","../node_modules/@streamparser/json/dist/mjs/utils/utf-8.js","../node_modules/@streamparser/json/dist/mjs/tokenizer.js","../node_modules/@streamparser/json/dist/mjs/tokenparser.js","../node_modules/@streamparser/json/dist/mjs/utils/types/stackElement.js","../src/structureWalker.ts","../src/itemRecords.ts","../src/textPosition.ts","../src/index.ts"],"sourcesContent":["// src/locale/label.ts\nvar e = \"en\", t = [{\n\tid: \"en\",\n\tflag: \"gb\",\n\tlabel: \"English\"\n}, {\n\tid: \"es\",\n\tflag: \"es\",\n\tlabel: \"Español\"\n}];\nfunction n(e) {\n\treturn new Map(Object.entries(e));\n}\nfunction r(e, t, n = \"en\") {\n\tlet r = e.get(t);\n\treturn r === void 0 ? n === t ? void 0 : e.get(n) : r;\n}\n// node_modules/valibot/dist/index.mjs\nvar i = {\n\tlang: void 0,\n\tmessage: void 0,\n\tabortEarly: void 0,\n\tabortPipeEarly: void 0\n};\n/* @__NO_SIDE_EFFECTS__ */\nfunction a(e) {\n\treturn e ? {\n\t\tlang: e?.lang ?? void 0,\n\t\tmessage: e?.message,\n\t\tabortEarly: e?.abortEarly ?? void 0,\n\t\tabortPipeEarly: e?.abortPipeEarly ?? void 0\n\t} : i;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction o(e) {\n\tlet t = typeof e;\n\treturn t === \"string\" ? `\"${e}\"` : t === \"number\" || t === \"bigint\" || t === \"boolean\" ? `${e}` : t === \"object\" || t === \"function\" ? (e && Object.getPrototypeOf(e)?.constructor?.name) ?? \"null\" : t;\n}\nfunction s(e, t, n, r, i) {\n\tlet a = i && \"input\" in i ? i.input : n.value, s = i?.expected ?? e.expects ?? null, c = i?.received ?? /* @__PURE__ */ o(a), l = {\n\t\tkind: e.kind,\n\t\ttype: e.type,\n\t\tinput: a,\n\t\texpected: s,\n\t\treceived: c,\n\t\tmessage: `Invalid ${t}: ${s ? `Expected ${s} but r` : \"R\"}eceived ${c}`,\n\t\trequirement: e.requirement,\n\t\tpath: i?.path,\n\t\tissues: i?.issues,\n\t\tlang: r.lang,\n\t\tabortEarly: r.abortEarly,\n\t\tabortPipeEarly: r.abortPipeEarly\n\t}, u = e.kind === \"schema\", d = i?.message ?? e.message ?? (e.reference, l.lang, void 0) ?? (u ? (l.lang, void 0) : null) ?? r.message ?? (l.lang, void 0);\n\td !== void 0 && (l.message = typeof d == \"function\" ? d(l) : d), u && (n.typed = !1), n.issues ? n.issues.push(l) : n.issues = [l];\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction c(e, t) {\n\treturn e === t || Number.isNaN(e) && Number.isNaN(t);\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction l(e, t) {\n\treturn Object.prototype.hasOwnProperty.call(e, t) && t !== \"__proto__\" && t !== \"prototype\" && t !== \"constructor\";\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction u(e, t) {\n\tlet n = [...new Set(e)];\n\treturn n.length > 1 ? `(${n.join(` ${t} `)})` : n[0] ?? \"never\";\n}\nfunction d(e) {\n\treturn e[\"~standard\"] = {\n\t\tversion: 1,\n\t\tvendor: \"valibot\",\n\t\tvalidate: (t) => e[\"~run\"]({ value: t }, /* @__PURE__ */ a())\n\t}, e;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction f(e, t) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_length\",\n\t\treference: f,\n\t\tasync: !1,\n\t\texpects: `>=${e}`,\n\t\trequirement: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn e.typed && e.value.length < this.requirement && s(this, \"length\", e, t, { received: `${e.value.length}` }), e;\n\t\t}\n\t};\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction p(e, t, n) {\n\treturn typeof e.fallback == \"function\" ? e.fallback(t, n) : e.fallback;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction m(e, t, n) {\n\treturn typeof e.default == \"function\" ? e.default(t, n) : e.default;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction h(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: h,\n\t\texpects: \"Array\",\n\t\tasync: !1,\n\t\titem: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (Array.isArray(n)) {\n\t\t\t\te.typed = !0, e.value = [];\n\t\t\t\tfor (let r = 0; r < n.length; r++) {\n\t\t\t\t\tlet i = n[r], a = this.item[\"~run\"]({ value: i }, t);\n\t\t\t\t\tif (a.issues) {\n\t\t\t\t\t\tlet o = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: i\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (let t of a.issues) t.path ? t.path.unshift(o) : t.path = [o], e.issues?.push(t);\n\t\t\t\t\t\tif (e.issues ||= a.issues, t.abortEarly) {\n\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ta.typed || (e.typed = !1), e.value.push(a.value);\n\t\t\t\t}\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction g(e) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"boolean\",\n\t\treference: g,\n\t\texpects: \"boolean\",\n\t\tasync: !1,\n\t\tmessage: e,\n\t\t\"~run\"(e, t) {\n\t\t\treturn typeof e.value == \"boolean\" ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction _(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"literal\",\n\t\treference: _,\n\t\texpects: /* @__PURE__ */ o(e),\n\t\tasync: !1,\n\t\tliteral: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn /* @__PURE__ */ c(e.value, this.literal) ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction v(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: v,\n\t\texpects: \"Object\",\n\t\tasync: !1,\n\t\tentries: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (n && typeof n == \"object\") {\n\t\t\t\te.typed = !0, e.value = {};\n\t\t\t\tfor (let r in this.entries) {\n\t\t\t\t\tlet i = this.entries[r];\n\t\t\t\t\tif (r in n || (i.type === \"exact_optional\" || i.type === \"optional\" || i.type === \"nullish\") && i.default !== void 0) {\n\t\t\t\t\t\tlet a = r in n ? n[r] : /* @__PURE__ */ m(i), o = i[\"~run\"]({ value: a }, t);\n\t\t\t\t\t\tif (o.issues) {\n\t\t\t\t\t\t\tlet i = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\t\tvalue: a\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (let t of o.issues) t.path ? t.path.unshift(i) : t.path = [i], e.issues?.push(t);\n\t\t\t\t\t\t\tif (e.issues ||= o.issues, t.abortEarly) {\n\t\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\to.typed || (e.typed = !1), e.value[r] = o.value;\n\t\t\t\t\t} else if (i.fallback !== void 0) e.value[r] = /* @__PURE__ */ p(i);\n\t\t\t\t\telse if (i.type !== \"exact_optional\" && i.type !== \"optional\" && i.type !== \"nullish\" && (s(this, \"key\", e, t, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${r}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: n[r]\n\t\t\t\t\t\t}]\n\t\t\t\t\t}), t.abortEarly)) break;\n\t\t\t\t}\n\t\t\t\tif (!e.issues || !t.abortEarly) for (let t in n) /* @__PURE__ */ l(n, t) && !Object.prototype.hasOwnProperty.call(this.entries, t) && (e.value[t] = n[t]);\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction y(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: y,\n\t\texpects: `(${e.expects} | null)`,\n\t\tasync: !1,\n\t\twrapped: e,\n\t\tdefault: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn e.value === null && (this.default !== void 0 && (e.value = /* @__PURE__ */ m(this, e, t)), e.value === null) ? (e.typed = !0, e) : this.wrapped[\"~run\"](e, t);\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction b(e) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"number\",\n\t\treference: b,\n\t\texpects: \"number\",\n\t\tasync: !1,\n\t\tmessage: e,\n\t\t\"~run\"(e, t) {\n\t\t\treturn typeof e.value == \"number\" && !isNaN(e.value) ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction x(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: x,\n\t\texpects: `(${e.expects} | undefined)`,\n\t\tasync: !1,\n\t\twrapped: e,\n\t\tdefault: t,\n\t\t\"~run\"(e, t) {\n\t\t\treturn e.value === void 0 && (this.default !== void 0 && (e.value = /* @__PURE__ */ m(this, e, t)), e.value === void 0) ? (e.typed = !0, e) : this.wrapped[\"~run\"](e, t);\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction S(e, t, n) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: S,\n\t\texpects: \"Object\",\n\t\tasync: !1,\n\t\tkey: e,\n\t\tvalue: t,\n\t\tmessage: n,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (n && typeof n == \"object\") {\n\t\t\t\te.typed = !0, e.value = {};\n\t\t\t\tfor (let r in n) if (/* @__PURE__ */ l(n, r)) {\n\t\t\t\t\tlet i = n[r], a = this.key[\"~run\"]({ value: r }, t);\n\t\t\t\t\tif (a.issues) {\n\t\t\t\t\t\tlet o = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: i\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (let t of a.issues) t.path = [o], e.issues?.push(t);\n\t\t\t\t\t\tif (e.issues ||= a.issues, t.abortEarly) {\n\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet o = this.value[\"~run\"]({ value: i }, t);\n\t\t\t\t\tif (o.issues) {\n\t\t\t\t\t\tlet a = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: i\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (let t of o.issues) t.path ? t.path.unshift(a) : t.path = [a], e.issues?.push(t);\n\t\t\t\t\t\tif (e.issues ||= o.issues, t.abortEarly) {\n\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ta.typed && o.typed || (e.typed = !1), a.typed && (e.value[a.value] = o.value);\n\t\t\t\t}\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction C(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: C,\n\t\texpects: \"Object\",\n\t\tasync: !1,\n\t\tentries: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n = e.value;\n\t\t\tif (n && typeof n == \"object\") {\n\t\t\t\te.typed = !0, e.value = {};\n\t\t\t\tfor (let r in this.entries) {\n\t\t\t\t\tlet i = this.entries[r];\n\t\t\t\t\tif (r in n || (i.type === \"exact_optional\" || i.type === \"optional\" || i.type === \"nullish\") && i.default !== void 0) {\n\t\t\t\t\t\tlet a = r in n ? n[r] : /* @__PURE__ */ m(i), o = i[\"~run\"]({ value: a }, t);\n\t\t\t\t\t\tif (o.issues) {\n\t\t\t\t\t\t\tlet i = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\t\tvalue: a\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (let t of o.issues) t.path ? t.path.unshift(i) : t.path = [i], e.issues?.push(t);\n\t\t\t\t\t\t\tif (e.issues ||= o.issues, t.abortEarly) {\n\t\t\t\t\t\t\t\te.typed = !1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\to.typed || (e.typed = !1), e.value[r] = o.value;\n\t\t\t\t\t} else if (i.fallback !== void 0) e.value[r] = /* @__PURE__ */ p(i);\n\t\t\t\t\telse if (i.type !== \"exact_optional\" && i.type !== \"optional\" && i.type !== \"nullish\" && (s(this, \"key\", e, t, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${r}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\tvalue: n[r]\n\t\t\t\t\t\t}]\n\t\t\t\t\t}), t.abortEarly)) break;\n\t\t\t\t}\n\t\t\t\tif (!e.issues || !t.abortEarly) {\n\t\t\t\t\tfor (let r in n) if (!Object.prototype.hasOwnProperty.call(this.entries, r)) {\n\t\t\t\t\t\ts(this, \"key\", e, t, {\n\t\t\t\t\t\t\tinput: r,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput: n,\n\t\t\t\t\t\t\t\tkey: r,\n\t\t\t\t\t\t\t\tvalue: n[r]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else s(this, \"type\", e, t);\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction w(e) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"string\",\n\t\treference: w,\n\t\texpects: \"string\",\n\t\tasync: !1,\n\t\tmessage: e,\n\t\t\"~run\"(e, t) {\n\t\t\treturn typeof e.value == \"string\" ? e.typed = !0 : s(this, \"type\", e, t), e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction T(e) {\n\tlet t;\n\tif (e) for (let n of e) if (t) for (let e of n.issues) t.push(e);\n\telse t = n.issues;\n\treturn t;\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction E(e, t) {\n\treturn d({\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: E,\n\t\texpects: /* @__PURE__ */ u(e.map((e) => e.expects), \"|\"),\n\t\tasync: !1,\n\t\toptions: e,\n\t\tmessage: t,\n\t\t\"~run\"(e, t) {\n\t\t\tlet n, r, i;\n\t\t\tfor (let a of this.options) {\n\t\t\t\tlet o = a[\"~run\"]({ value: e.value }, t);\n\t\t\t\tif (o.typed) {\n\t\t\t\t\tif (o.issues) r ? r.push(o) : r = [o];\n\t\t\t\t\telse {\n\t\t\t\t\t\tn = o;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else i ? i.push(o) : i = [o];\n\t\t\t}\n\t\t\tif (n) return n;\n\t\t\tif (r) {\n\t\t\t\tif (r.length === 1) return r[0];\n\t\t\t\ts(this, \"type\", e, t, { issues: /* @__PURE__ */ T(r) }), e.typed = !0;\n\t\t\t} else if (i?.length === 1) return i[0];\n\t\t\telse s(this, \"type\", e, t, { issues: /* @__PURE__ */ T(i) });\n\t\t\treturn e;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction D(...e) {\n\treturn d({\n\t\t...e[0],\n\t\tpipe: e,\n\t\t\"~run\"(t, n) {\n\t\t\tfor (let r of e) if (r.kind !== \"metadata\") {\n\t\t\t\tif (t.issues && (r.kind === \"schema\" || r.kind === \"transformation\")) {\n\t\t\t\t\tt.typed = !1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tt.issues && (n.abortEarly || n.abortPipeEarly) || (t = r[\"~run\"](t, n));\n\t\t\t}\n\t\t\treturn t;\n\t\t}\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction O(e, t, n) {\n\tlet r = e[\"~run\"]({ value: t }, /* @__PURE__ */ a(n));\n\treturn {\n\t\ttyped: r.typed,\n\t\tsuccess: !r.issues,\n\t\toutput: r.value,\n\t\tissues: r.issues\n\t};\n}\n// src/locale/locale.schema.ts\nvar k = /* @__PURE__ */ C({\n\ten: /* @__PURE__ */ w(),\n\tes: /* @__PURE__ */ w()\n}), ee = {\n\tid: /* @__PURE__ */ w(),\n\tlabel: /* @__PURE__ */ C({\n\t\ten: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\t\tes: /* @__PURE__ */ x(/* @__PURE__ */ w())\n\t}),\n\tdescription: /* @__PURE__ */ C({\n\t\ten: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\t\tes: /* @__PURE__ */ x(/* @__PURE__ */ w())\n\t}),\n\ticon: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\ticonDark: /* @__PURE__ */ y(/* @__PURE__ */ w())\n}, A = (e) => /* @__PURE__ */ E(e.map((e) => /* @__PURE__ */ _(e))), te = A([\n\t\"app\",\n\t\"connector\",\n\t\"connectorConnection\",\n\t\"context\",\n\t\"contextArea\",\n\t\"contextModel\",\n\t\"contextModelDimension\",\n\t\"contextModelDimensionHierarchy\",\n\t\"contextModelEntity\",\n\t\"contextModelEntityDataItem\",\n\t\"contextModelEntityEvent\",\n\t\"contextModelEntityPrimaryMeasure\",\n\t\"contextModelSecondaryMeasure\",\n\t\"cookbook\",\n\t\"cookbookRecipe\",\n\t\"dataView\",\n\t\"engine\",\n\t\"eventQuery\",\n\t\"presenter\",\n\t\"presenterPresentation\",\n\t\"tool\"\n]), ne = A([\n\t\"danger\",\n\t\"success\",\n\t\"warning\"\n]), re = A([\n\t\"alpha\",\n\t\"beta\",\n\t\"releaseCandidate\",\n\t\"generalAvailability\"\n]), ie = /* @__PURE__ */ C({\n\tcolor: ne,\n\tlabel: /* @__PURE__ */ w()\n}), ae = {\n\t...ee,\n\ttypeId: te\n}, oe = /* @__PURE__ */ C({\n\t...ae,\n\torder: /* @__PURE__ */ b(),\n\tpath: /* @__PURE__ */ w()\n}), se = {\n\t...ae,\n\tfirstCreatedAt: /* @__PURE__ */ y(/* @__PURE__ */ b()),\n\tlastUpdatedAt: /* @__PURE__ */ y(/* @__PURE__ */ b()),\n\tstatus: /* @__PURE__ */ y(ie),\n\tstatusId: /* @__PURE__ */ y(re)\n}, ce = /* @__PURE__ */ C({ ...se }), le = [\n\t{\n\t\tid: \"alpha\",\n\t\tcolor: \"danger\",\n\t\tlabels: {\n\t\t\ten: \"alpha\",\n\t\t\tes: \"alfa\"\n\t\t}\n\t},\n\t{\n\t\tid: \"beta\",\n\t\tcolor: \"warning\",\n\t\tlabels: {\n\t\t\ten: \"beta\",\n\t\t\tes: \"beta\"\n\t\t}\n\t},\n\t{\n\t\tid: \"releaseCandidate\",\n\t\tcolor: \"success\",\n\t\tlabels: {\n\t\t\ten: \"release-candidate\",\n\t\t\tes: \"candidato-de-lanzamiento\"\n\t\t}\n\t},\n\t{\n\t\tid: \"generalAvailability\",\n\t\tcolor: \"success\",\n\t\tlabels: {\n\t\t\ten: \"\",\n\t\t\tes: \"\"\n\t\t}\n\t}\n];\nfunction ue(e, t = \"en\") {\n\tlet n = le.find((t) => t.id === e);\n\tif (n) {\n\t\tlet e = n.labels[t] ?? n.labels.en ?? n.id;\n\t\treturn {\n\t\t\tcolor: n.color,\n\t\t\tlabel: e\n\t\t};\n\t}\n\treturn {\n\t\tcolor: \"danger\",\n\t\tlabel: e\n\t};\n}\n// src/component/dataView/index.ts\nvar de = [\n\t{\n\t\tid: \"arrow\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"avro\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"dtv\",\n\t\tisStructured: !1,\n\t\tisTable: !0,\n\t\tisText: !0,\n\t\tsupportId: \"supported\"\n\t},\n\t{\n\t\tid: \"json\",\n\t\tisStructured: !0,\n\t\tisTable: !0,\n\t\tisText: !0,\n\t\tsupportId: \"supported\"\n\t},\n\t{\n\t\tid: \"jsonl\",\n\t\tisStructured: !0,\n\t\tisTable: !0,\n\t\tisText: !0,\n\t\tsupportId: \"supported\"\n\t},\n\t{\n\t\tid: \"markdown\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !0,\n\t\tsupportId: \"unsupported\"\n\t},\n\t{\n\t\tid: \"ods\",\n\t\tisStructured: !0,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"parquet\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"sav\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"sqlite\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"xlsx\",\n\t\tisStructured: !0,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"xml\",\n\t\tisStructured: !0,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"planned\"\n\t},\n\t{\n\t\tid: \"unknown\",\n\t\tisStructured: !1,\n\t\tisTable: !1,\n\t\tisText: !1,\n\t\tsupportId: \"unsupported\"\n\t}\n], j = [\n\t{\n\t\tid: \",\",\n\t\tcharacter: \",\"\n\t},\n\t{\n\t\tid: \";\",\n\t\tcharacter: \";\"\n\t},\n\t{\n\t\tid: \"\t\",\n\t\tcharacter: \"\t\"\n\t},\n\t{\n\t\tid: \"|\",\n\t\tcharacter: \"|\"\n\t},\n\t{\n\t\tid: \" \",\n\t\tcharacter: \" \"\n\t},\n\t{\n\t\tid: \":\",\n\t\tcharacter: \":\"\n\t},\n\t{\n\t\tid: \"_\",\n\t\tcharacter: \"_\"\n\t},\n\t{\n\t\tid: \"!\",\n\t\tcharacter: \"!\"\n\t},\n\t{\n\t\tid: \"0x1F\",\n\t\tcharacter: \"\u001f\"\n\t},\n\t{\n\t\tid: \"0x1E\",\n\t\tcharacter: \"\u001e\"\n\t}\n], fe = [\n\t{\n\t\tid: \"string\",\n\t\tdefaultSubtypeId: \"plain\",\n\t\tisChoosable: !0,\n\t\tsubtypeIds: [\n\t\t\t\"plain\",\n\t\t\t\"email\",\n\t\t\t\"url\",\n\t\t\t\"uuid\",\n\t\t\t\"ulid\",\n\t\t\t\"ipv4\",\n\t\t\t\"ipv6\",\n\t\t\t\"ipRange\",\n\t\t\t\"macAddress\",\n\t\t\t\"iban\",\n\t\t\t\"isbn\",\n\t\t\t\"paymentCard\",\n\t\t\t\"hexColor\",\n\t\t\t\"json\",\n\t\t\t\"countryCode\",\n\t\t\t\"currencyCode\",\n\t\t\t\"languageCode\"\n\t\t]\n\t},\n\t{\n\t\tid: \"numeric\",\n\t\tdefaultSubtypeId: \"integer\",\n\t\tisChoosable: !0,\n\t\tsubtypeIds: [\n\t\t\t\"integer\",\n\t\t\t\"decimal\",\n\t\t\t\"bigint\"\n\t\t]\n\t},\n\t{\n\t\tid: \"temporal\",\n\t\tdefaultSubtypeId: \"dateTime\",\n\t\tisChoosable: !0,\n\t\tsubtypeIds: [\n\t\t\t\"date\",\n\t\t\t\"dateTime\",\n\t\t\t\"time\"\n\t\t]\n\t},\n\t{\n\t\tid: \"boolean\",\n\t\tdefaultSubtypeId: void 0,\n\t\tisChoosable: !0,\n\t\tsubtypeIds: []\n\t},\n\t{\n\t\tid: \"unknown\",\n\t\tdefaultSubtypeId: void 0,\n\t\tisChoosable: !1,\n\t\tsubtypeIds: []\n\t}\n], pe = [\",\", \".\"];\nfunction me(e) {\n\treturn j.find(({ id: t }) => t === e)?.character ?? e;\n}\nA([\n\t\"app\",\n\t\"engine\",\n\t\"connector\",\n\t\"cookbook\",\n\t\"presenter\",\n\t\"tool\"\n]);\n// src/component/module/moduleConfig.schema.ts\nvar M = {\n\t...se,\n\tvendorAccountURL: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\tvendorDocumentationURL: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\tvendorHomeURL: /* @__PURE__ */ y(/* @__PURE__ */ w()),\n\tversion: /* @__PURE__ */ w()\n};\n({ ...M });\n// src/component/module/connector/connectorConfig.schema.ts\nvar he = A([\n\t\"auditObjectContent\",\n\t\"closeStore\",\n\t\"createObject\",\n\t\"describeConnection\",\n\t\"dropObject\",\n\t\"findObject\",\n\t\"getInfo\",\n\t\"getReadableStream\",\n\t\"getRecord\",\n\t\"indexObjectStructure\",\n\t\"listNodes\",\n\t\"listObjectStructureEntries\",\n\t\"loadObjectRecords\",\n\t\"openStore\",\n\t\"previewObject\",\n\t\"queryRecords\",\n\t\"removeRecords\",\n\t\"retrieveRecords\",\n\t\"upsertRecords\"\n]), ge = A([\n\t\"application\",\n\t\"curatedDataset\",\n\t\"database\",\n\t\"fileStore\"\n]), _e = /* @__PURE__ */ C({ label: k }), ve = A([\n\t\"apiEndpoint\",\n\t\"file\",\n\t\"table\"\n]), ye = A([\n\t\"bidirectional\",\n\t\"destination\",\n\t\"source\",\n\t\"unknown\"\n]), be = /* @__PURE__ */ C({ label: k }), xe = /* @__PURE__ */ C({\n\tauthMethodId: A([\n\t\t\"apiKey\",\n\t\t\"disabled\",\n\t\t\"oAuth2\",\n\t\t\"none\"\n\t]),\n\tactiveConnectionCount: /* @__PURE__ */ x(/* @__PURE__ */ b()),\n\tcanDescribe: /* @__PURE__ */ x(/* @__PURE__ */ g()),\n\tid: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\tlabel: /* @__PURE__ */ x(k),\n\tmaxConnectionCount: /* @__PURE__ */ y(/* @__PURE__ */ b()),\n\tparams: /* @__PURE__ */ x(/* @__PURE__ */ h(/* @__PURE__ */ S(/* @__PURE__ */ w(), /* @__PURE__ */ w())))\n}), Se = /* @__PURE__ */ C({\n\t...M,\n\ttypeId: /* @__PURE__ */ _(\"connector\"),\n\tactionNames: /* @__PURE__ */ h(he),\n\tcategory: /* @__PURE__ */ y(_e),\n\tcategoryId: ge,\n\timplementations: /* @__PURE__ */ S(/* @__PURE__ */ w(), xe),\n\titemTypeId: ve,\n\tusage: /* @__PURE__ */ y(be),\n\tusageId: /* @__PURE__ */ y(ye)\n}), Ce = 2048, N = \"[REDACTED]\", we = 10, Te = /api[-_]?key|authori[sz]ation|cookie|credential|passw(?:or)?d|private[-_]?key|secret|token/i, Ee = [\n\t[/\\b(Bearer|Basic) +[\\w.~+/=-]+/gi, (e, t) => `${t} ${N}`],\n\t[/(?<![\\w-])([\\w-]+)([\"']?[ \\t]*[:=][ \\t]*[\"']?)([^\\s\"'&,;}?#]+)/g, (e, t, n, r) => Te.test(t) && !/^(?:Basic|Bearer)$/i.test(r) ? `${t}${n}${N}` : e],\n\t[/\\beyJ[\\w-]+\\.[\\w-]+\\.[\\w-]*/g, () => N],\n\t[/\\b(?:sk-|xaat-|xapt-|sl\\.)[\\w-]{16,}/g, () => N],\n\t[/(?<![\\w.+-])[\\w.+-]+@[\\w-]+\\.[\\w.-]+/g, () => N]\n], P = class extends Error {\n\tdata;\n\tlocator;\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, r), this.name = \"DPUseError\", this.data = n, this.locator = t;\n\t}\n}, F = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"AppError\";\n\t}\n}, De = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"APIError\";\n\t}\n}, Oe = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"EngineError\";\n\t}\n}, ke = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"ConnectorError\";\n\t}\n}, I = class extends P {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"FetchError\";\n\t}\n};\nasync function Ae(e, t, n) {\n\tlet r = ` - ${e.statusText}`, i = `${t} Response status '${String(e.status)}${e.statusText ? r : \"\"}' received.`, a;\n\ttry {\n\t\ta = await e.text();\n\t} catch (e) {\n\t\ta = `<body unavailable: ${L(e).message}>`;\n\t}\n\treturn new I(i, n, { body: Re(a) });\n}\nfunction je(e) {\n\treturn e.map((e) => e.message).join(\" \");\n}\nfunction Me(e) {\n\ttry {\n\t\te();\n\t} catch {}\n}\nfunction L(e) {\n\tif (e instanceof Error) return e;\n\tif (typeof e == \"string\") return Error(e);\n\tif (typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"bigint\") return Error(String(e));\n\tif (typeof e == \"symbol\") return Error(e.description ?? \"Unknown error\");\n\tif (typeof e == \"object\") try {\n\t\treturn Error(JSON.stringify(e));\n\t} catch {\n\t\treturn /* @__PURE__ */ Error(\"Unknown error\");\n\t}\n\treturn /* @__PURE__ */ Error(\"Unknown error\");\n}\nfunction Ne(e) {\n\tlet t = /* @__PURE__ */ new Set(), n = [], r = L(e);\n\tfor (; r != null && !t.has(r);) {\n\t\tt.add(r);\n\t\tlet [e, i] = ze(r), a = Le(e);\n\t\t/(?:\\.{3}|[.!?])$/.test(a.message) || (a.message += \".\"), n.push(a), r = i;\n\t}\n\treturn n;\n}\nfunction Pe(e) {\n\tlet t;\n\tfor (let n of e.toReversed()) {\n\t\tlet e = Ie(n, t);\n\t\tn.stack !== void 0 && (e.stack = n.stack), t = e;\n\t}\n\treturn t ?? /* @__PURE__ */ Error(\"No error to unserialise.\");\n}\nfunction Fe(e) {\n\tlet t;\n\ttry {\n\t\tt = JSON.stringify(e);\n\t} catch {\n\t\tt = typeof e == \"symbol\" ? e.description ?? \"Unknown error\" : typeof e == \"bigint\" ? e.toString() : \"Unknown error\";\n\t}\n\treturn t === \"\" && (t = \"Unknown error\"), t;\n}\nfunction Ie(e, t) {\n\tswitch (e.name) {\n\t\tcase \"APIError\": return new De(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"AppError\": return new F(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"ConnectorError\": return new ke(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"EngineError\": return new Oe(e.message, e.locator, e.data, { cause: t });\n\t\tcase \"FetchError\": return new I(e.message, e.locator, e.data, { cause: t });\n\t\tdefault: {\n\t\t\tlet n = e.name;\n\t\t\treturn new class extends Error {\n\t\t\t\tname = n;\n\t\t\t}(e.message, { cause: t });\n\t\t}\n\t}\n}\nfunction Le(e) {\n\tlet { data: t, message: n, stack: r } = e;\n\treturn {\n\t\t...e,\n\t\tdata: t === void 0 ? void 0 : z(t, /* @__PURE__ */ new WeakSet(), 0),\n\t\tmessage: R(n),\n\t\tstack: r === void 0 ? void 0 : R(r)\n\t};\n}\nfunction R(e) {\n\tlet t = e;\n\tfor (let [e, n] of Ee) t = t.replaceAll(e, (e, ...t) => n(e, ...t));\n\treturn t;\n}\nfunction z(e, t, n) {\n\treturn typeof e == \"string\" ? R(e) : typeof e != \"object\" || !e ? e : n >= we ? N : t.has(e) ? \"[Circular]\" : (t.add(e), Array.isArray(e) ? e.map((e) => z(e, t, n + 1)) : Object.fromEntries(Object.entries(e).map(([e, r]) => [e, r != null && Te.test(e) ? N : z(r, t, n + 1)])));\n}\nfunction Re(e) {\n\tif (e != null && e !== \"\") return e.length > Ce ? `${e.slice(0, Ce)}... [truncated]` : e;\n}\nfunction ze(e) {\n\tlet t = e.cause == null ? null : L(e.cause);\n\tif (e instanceof P) return [{\n\t\tdata: e.data,\n\t\tlocator: e.locator,\n\t\tmessage: e.message,\n\t\tname: e.name,\n\t\tstack: e.stack\n\t}, t];\n\tlet n = Object.fromEntries(Object.entries(e).filter(([e]) => e !== \"cause\"));\n\treturn e.name ? [{\n\t\tdata: n,\n\t\tlocator: \"\",\n\t\tmessage: e.message,\n\t\tname: e.name,\n\t\tstack: e.stack\n\t}, t] : [{\n\t\tdata: n,\n\t\tlocator: \"\",\n\t\tmessage: Fe(e),\n\t\tname: \"Error\",\n\t\tstack: void 0\n\t}, null];\n}\n// src/encoding/index.ts\nvar Be = {\n\tarabic: {\n\t\tid: \"arabic\",\n\t\tlabel: {\n\t\t\ten: \"Arabic\",\n\t\t\tes: \"Árabe\"\n\t\t}\n\t},\n\tarmenian: {\n\t\tid: \"armenian\",\n\t\tlabel: {\n\t\t\ten: \"Armenian\",\n\t\t\tes: \"Armenio\"\n\t\t}\n\t},\n\tbaltic: {\n\t\tid: \"baltic\",\n\t\tlabel: {\n\t\t\ten: \"Baltic\",\n\t\t\tes: \"Báltico\"\n\t\t}\n\t},\n\tceltic: {\n\t\tid: \"celtic\",\n\t\tlabel: {\n\t\t\ten: \"Celtic\",\n\t\t\tes: \"Celta\"\n\t\t}\n\t},\n\tcentralEuropean: {\n\t\tid: \"centralEuropean\",\n\t\tlabel: {\n\t\t\ten: \"Central European\",\n\t\t\tes: \"Centroeuropeo\"\n\t\t}\n\t},\n\tchineseSimplified: {\n\t\tid: \"chineseSimplified\",\n\t\tlabel: {\n\t\t\ten: \"Chinese Simplified\",\n\t\t\tes: \"Chino simplificado\"\n\t\t}\n\t},\n\tchineseTraditional: {\n\t\tid: \"chineseTraditional\",\n\t\tlabel: {\n\t\t\ten: \"Chinese Traditional\",\n\t\t\tes: \"Chino tradicional\"\n\t\t}\n\t},\n\tcyrillic: {\n\t\tid: \"cyrillic\",\n\t\tlabel: {\n\t\t\ten: \"Cyrillic\",\n\t\t\tes: \"Cirílico\"\n\t\t}\n\t},\n\tgeorgian: {\n\t\tid: \"georgian\",\n\t\tlabel: {\n\t\t\ten: \"Georgian\",\n\t\t\tes: \"Georgiano\"\n\t\t}\n\t},\n\tgreek: {\n\t\tid: \"greek\",\n\t\tlabel: {\n\t\t\ten: \"Greek\",\n\t\t\tes: \"Griego\"\n\t\t}\n\t},\n\thebrew: {\n\t\tid: \"hebrew\",\n\t\tlabel: {\n\t\t\ten: \"Hebrew\",\n\t\t\tes: \"Hebreo\"\n\t\t}\n\t},\n\tjapanese: {\n\t\tid: \"japanese\",\n\t\tlabel: {\n\t\t\ten: \"Japanese\",\n\t\t\tes: \"Japonés\"\n\t\t}\n\t},\n\tkorean: {\n\t\tid: \"korean\",\n\t\tlabel: {\n\t\t\ten: \"Korean\",\n\t\t\tes: \"Coreano\"\n\t\t}\n\t},\n\tlao: {\n\t\tid: \"lao\",\n\t\tlabel: {\n\t\t\ten: \"Lao\",\n\t\t\tes: \"Lao\"\n\t\t}\n\t},\n\tnordic: {\n\t\tid: \"nordic\",\n\t\tlabel: {\n\t\t\ten: \"Nordic\",\n\t\t\tes: \"Nórdico\"\n\t\t}\n\t},\n\tsouthEasternEuropean: {\n\t\tid: \"southEasternEuropean\",\n\t\tlabel: {\n\t\t\ten: \"South-Eastern European\",\n\t\t\tes: \"Europeo sudoriental\"\n\t\t}\n\t},\n\tsouthernEuropean: {\n\t\tid: \"southernEuropean\",\n\t\tlabel: {\n\t\t\ten: \"Southern European\",\n\t\t\tes: \"Europeo meridional\"\n\t\t}\n\t},\n\tthai: {\n\t\tid: \"thai\",\n\t\tlabel: {\n\t\t\ten: \"Thai\",\n\t\t\tes: \"Tailandés\"\n\t\t}\n\t},\n\tturkish: {\n\t\tid: \"turkish\",\n\t\tlabel: {\n\t\t\ten: \"Turkish\",\n\t\t\tes: \"Turco\"\n\t\t}\n\t},\n\tunicode: {\n\t\tid: \"unicode\",\n\t\tlabel: {\n\t\t\ten: \"Unicode\",\n\t\t\tes: \"Unicode\"\n\t\t}\n\t},\n\tvietnamese: {\n\t\tid: \"vietnamese\",\n\t\tlabel: {\n\t\t\ten: \"Vietnamese\",\n\t\t\tes: \"Vietnamita\"\n\t\t}\n\t},\n\twestern: {\n\t\tid: \"western\",\n\t\tlabel: {\n\t\t\ten: \"Western\",\n\t\t\tes: \"Occidental\"\n\t\t}\n\t}\n}, Ve = {\n\t\"armscii-8\": {\n\t\tid: \"armscii-8\",\n\t\tgroupId: \"armenian\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"armscii8\"\n\t},\n\tascii: {\n\t\tid: \"ascii\",\n\t\tgroupId: null,\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1252\",\n\t\ticonvLiteDecoderId: \"ascii\"\n\t},\n\tbig5: {\n\t\tid: \"big5\",\n\t\tgroupId: \"chineseTraditional\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"big5\",\n\t\ticonvLiteDecoderId: \"big5hkscs\"\n\t},\n\t\"cesu-8\": {\n\t\tid: \"cesu-8\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cesu8\"\n\t},\n\tcp273: {\n\t\tid: \"cp273\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp424: {\n\t\tid: \"cp424\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp437: {\n\t\tid: \"cp437\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp437\"\n\t},\n\tcp500: {\n\t\tid: \"cp500\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp720: {\n\t\tid: \"cp720\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp720\"\n\t},\n\tcp737: {\n\t\tid: \"cp737\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp737\"\n\t},\n\tcp775: {\n\t\tid: \"cp775\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp775\"\n\t},\n\tcp808: {\n\t\tid: \"cp808\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp808\"\n\t},\n\tcp850: {\n\t\tid: \"cp850\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp850\"\n\t},\n\tcp852: {\n\t\tid: \"cp852\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp852\"\n\t},\n\tcp856: {\n\t\tid: \"cp856\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp856\"\n\t},\n\tcp857: {\n\t\tid: \"cp857\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp857\"\n\t},\n\tcp858: {\n\t\tid: \"cp858\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp858\"\n\t},\n\tcp860: {\n\t\tid: \"cp860\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp860\"\n\t},\n\tcp861: {\n\t\tid: \"cp861\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp861\"\n\t},\n\tcp862: {\n\t\tid: \"cp862\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp862\"\n\t},\n\tcp863: {\n\t\tid: \"cp863\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp863\"\n\t},\n\tcp864: {\n\t\tid: \"cp864\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp864\"\n\t},\n\tcp865: {\n\t\tid: \"cp865\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp865\"\n\t},\n\tcp869: {\n\t\tid: \"cp869\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp869\"\n\t},\n\tcp874: {\n\t\tid: \"cp874\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-874\",\n\t\ticonvLiteDecoderId: \"windows874\"\n\t},\n\tcp875: {\n\t\tid: \"cp875\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp922: {\n\t\tid: \"cp922\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp922\"\n\t},\n\tcp932: {\n\t\tid: \"cp932\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"shift_jis\",\n\t\ticonvLiteDecoderId: \"shiftjis\"\n\t},\n\tcp936: {\n\t\tid: \"cp936\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp936\"\n\t},\n\tcp949: {\n\t\tid: \"cp949\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"euc-kr\",\n\t\ticonvLiteDecoderId: \"cp949\"\n\t},\n\tcp950: {\n\t\tid: \"cp950\",\n\t\tgroupId: \"chineseTraditional\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp950\"\n\t},\n\tcp1006: {\n\t\tid: \"cp1006\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp1026: {\n\t\tid: \"cp1026\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp1046: {\n\t\tid: \"cp1046\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1046\"\n\t},\n\tcp1124: {\n\t\tid: \"cp1124\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1124\"\n\t},\n\tcp1125: {\n\t\tid: \"cp1125\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1125\"\n\t},\n\tcp1129: {\n\t\tid: \"cp1129\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1129\"\n\t},\n\tcp1133: {\n\t\tid: \"cp1133\",\n\t\tgroupId: \"lao\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1133\"\n\t},\n\tcp1140: {\n\t\tid: \"cp1140\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tcp1161: {\n\t\tid: \"cp1161\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1161\"\n\t},\n\tcp1162: {\n\t\tid: \"cp1162\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1162\"\n\t},\n\tcp1163: {\n\t\tid: \"cp1163\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp1163\"\n\t},\n\tcp1258: {\n\t\tid: \"cp1258\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1258\",\n\t\ticonvLiteDecoderId: \"windows1258\"\n\t},\n\t\"euc-jp\": {\n\t\tid: \"euc-jp\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"euc-jp\",\n\t\ticonvLiteDecoderId: \"eucjp\"\n\t},\n\t\"euc-kr\": {\n\t\tid: \"euc-kr\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"euc-kr\",\n\t\ticonvLiteDecoderId: \"cp949\"\n\t},\n\tgb18030: {\n\t\tid: \"gb18030\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"gb18030\",\n\t\ticonvLiteDecoderId: \"gb18030\"\n\t},\n\tgbk: {\n\t\tid: \"gbk\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: \"gbk\",\n\t\ticonvLiteDecoderId: \"gbk\"\n\t},\n\t\"georgian-academy\": {\n\t\tid: \"georgian-academy\",\n\t\tgroupId: \"georgian\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"georgianacademy\"\n\t},\n\t\"georgian-ps\": {\n\t\tid: \"georgian-ps\",\n\t\tgroupId: \"georgian\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"georgianps\"\n\t},\n\t\"hp-roman8\": {\n\t\tid: \"hp-roman8\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"hproman8\"\n\t},\n\t\"hz-gb-2312\": {\n\t\tid: \"hz-gb-2312\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tibm855: {\n\t\tid: \"ibm855\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"cp855\"\n\t},\n\tibm866: {\n\t\tid: \"ibm866\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"ibm866\",\n\t\ticonvLiteDecoderId: \"cp866\"\n\t},\n\t\"iso-2022-jp\": {\n\t\tid: \"iso-2022-jp\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-2022-jp\",\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"iso-2022-kr\": {\n\t\tid: \"iso-2022-kr\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"iso-8859-1\": {\n\t\tid: \"iso-8859-1\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1252\",\n\t\ticonvLiteDecoderId: \"iso88591\"\n\t},\n\t\"iso-8859-2\": {\n\t\tid: \"iso-8859-2\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-2\",\n\t\ticonvLiteDecoderId: \"iso88592\"\n\t},\n\t\"iso-8859-5\": {\n\t\tid: \"iso-8859-5\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-5\",\n\t\ticonvLiteDecoderId: \"iso88595\"\n\t},\n\t\"iso-8859-6\": {\n\t\tid: \"iso-8859-6\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-6\",\n\t\ticonvLiteDecoderId: \"iso88596\"\n\t},\n\t\"iso-8859-7\": {\n\t\tid: \"iso-8859-7\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-7\",\n\t\ticonvLiteDecoderId: \"iso88597\"\n\t},\n\t\"iso-8859-8\": {\n\t\tid: \"iso-8859-8\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-8-i\",\n\t\ticonvLiteDecoderId: \"iso88598\"\n\t},\n\t\"iso-8859-9\": {\n\t\tid: \"iso-8859-9\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1254\",\n\t\ticonvLiteDecoderId: \"iso88599\"\n\t},\n\t\"iso-8859-11\": {\n\t\tid: \"iso-8859-11\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: \"windows-874\",\n\t\ticonvLiteDecoderId: \"iso885911\"\n\t},\n\t\"iso-8859-13\": {\n\t\tid: \"iso-8859-13\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-13\",\n\t\ticonvLiteDecoderId: \"iso885913\"\n\t},\n\t\"iso646-cn\": {\n\t\tid: \"iso646-cn\",\n\t\tgroupId: \"chineseSimplified\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"iso646cn\"\n\t},\n\t\"iso646-jp\": {\n\t\tid: \"iso646-jp\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"iso646jp\"\n\t},\n\tiso2022_jp_2004: {\n\t\tid: \"iso2022_jp_2004\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\tiso2022_jp_ext: {\n\t\tid: \"iso2022_jp_ext\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"iso8859-3\": {\n\t\tid: \"iso8859-3\",\n\t\tgroupId: \"southernEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-3\",\n\t\ticonvLiteDecoderId: \"iso88593\"\n\t},\n\t\"iso8859-4\": {\n\t\tid: \"iso8859-4\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-4\",\n\t\ticonvLiteDecoderId: \"iso88594\"\n\t},\n\t\"iso8859-10\": {\n\t\tid: \"iso8859-10\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-10\",\n\t\ticonvLiteDecoderId: \"iso885910\"\n\t},\n\t\"iso8859-14\": {\n\t\tid: \"iso8859-14\",\n\t\tgroupId: \"celtic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-14\",\n\t\ticonvLiteDecoderId: \"iso885914\"\n\t},\n\t\"iso8859-15\": {\n\t\tid: \"iso8859-15\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-15\",\n\t\ticonvLiteDecoderId: \"iso885915\"\n\t},\n\t\"iso8859-16\": {\n\t\tid: \"iso8859-16\",\n\t\tgroupId: \"southEasternEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"iso-8859-16\",\n\t\ticonvLiteDecoderId: \"iso885916\"\n\t},\n\tjohab: {\n\t\tid: \"johab\",\n\t\tgroupId: \"korean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: null\n\t},\n\t\"koi8-r\": {\n\t\tid: \"koi8-r\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"koi8-r\",\n\t\ticonvLiteDecoderId: \"koi8r\"\n\t},\n\t\"koi8-ru\": {\n\t\tid: \"koi8-ru\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: \"koi8-u\",\n\t\ticonvLiteDecoderId: \"koi8ru\"\n\t},\n\t\"koi8-t\": {\n\t\tid: \"koi8-t\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"koi8t\"\n\t},\n\t\"koi8-u\": {\n\t\tid: \"koi8-u\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"koi8-u\",\n\t\ticonvLiteDecoderId: \"koi8u\"\n\t},\n\tkz1048: {\n\t\tid: \"kz1048\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"rk1048\"\n\t},\n\tmaccroatian: {\n\t\tid: \"maccroatian\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"maccroatian\"\n\t},\n\tmaccyrillic: {\n\t\tid: \"maccyrillic\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"x-mac-cyrillic\",\n\t\ticonvLiteDecoderId: \"maccyrillic\"\n\t},\n\tmacgreek: {\n\t\tid: \"macgreek\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macgreek\"\n\t},\n\tmaciceland: {\n\t\tid: \"maciceland\",\n\t\tgroupId: \"nordic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"maciceland\"\n\t},\n\tmaclatin2: {\n\t\tid: \"maclatin2\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"maccenteuro\"\n\t},\n\tmacroman: {\n\t\tid: \"macroman\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"macintosh\",\n\t\ticonvLiteDecoderId: \"macroman\"\n\t},\n\tmacromania: {\n\t\tid: \"macromania\",\n\t\tgroupId: \"southEasternEuropean\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macromania\"\n\t},\n\tmacthai: {\n\t\tid: \"macthai\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macthai\"\n\t},\n\tmacturkish: {\n\t\tid: \"macturkish\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macturkish\"\n\t},\n\tmacukraine: {\n\t\tid: \"macukraine\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"macukraine\"\n\t},\n\tmik: {\n\t\tid: \"mik\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"mik\"\n\t},\n\tptcp154: {\n\t\tid: \"ptcp154\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"pt154\"\n\t},\n\tshift_jis: {\n\t\tid: \"shift_jis\",\n\t\tgroupId: \"japanese\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"shift_jis\",\n\t\ticonvLiteDecoderId: \"shiftjis\"\n\t},\n\ttcvn: {\n\t\tid: \"tcvn\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"tcvn\"\n\t},\n\t\"tis-620\": {\n\t\tid: \"tis-620\",\n\t\tgroupId: \"thai\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-874\",\n\t\ticonvLiteDecoderId: \"tis620\"\n\t},\n\t\"utf-7\": {\n\t\tid: \"utf-7\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf7\"\n\t},\n\t\"utf-8\": {\n\t\tid: \"utf-8\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-8\",\n\t\ticonvLiteDecoderId: \"utf-8\"\n\t},\n\t\"utf-8-sig\": {\n\t\tid: \"utf-8-sig\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-8\",\n\t\ticonvLiteDecoderId: \"utf-8\"\n\t},\n\t\"utf-16\": {\n\t\tid: \"utf-16\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf16\"\n\t},\n\t\"utf-16-be\": {\n\t\tid: \"utf-16-be\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-16be\",\n\t\ticonvLiteDecoderId: \"utf16be\"\n\t},\n\t\"utf-16-le\": {\n\t\tid: \"utf-16-le\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"utf-16le\",\n\t\ticonvLiteDecoderId: \"utf16le\"\n\t},\n\t\"utf-32\": {\n\t\tid: \"utf-32\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf32\"\n\t},\n\t\"utf-32-be\": {\n\t\tid: \"utf-32-be\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf32be\"\n\t},\n\t\"utf-32-le\": {\n\t\tid: \"utf-32-le\",\n\t\tgroupId: \"unicode\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"utf32le\"\n\t},\n\tviscii: {\n\t\tid: \"viscii\",\n\t\tgroupId: \"vietnamese\",\n\t\tisDetectable: !1,\n\t\ttextDecoderId: null,\n\t\ticonvLiteDecoderId: \"viscii\"\n\t},\n\t\"windows-1250\": {\n\t\tid: \"windows-1250\",\n\t\tgroupId: \"centralEuropean\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1250\",\n\t\ticonvLiteDecoderId: \"windows1250\"\n\t},\n\t\"windows-1251\": {\n\t\tid: \"windows-1251\",\n\t\tgroupId: \"cyrillic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1251\",\n\t\ticonvLiteDecoderId: \"windows1251\"\n\t},\n\t\"windows-1252\": {\n\t\tid: \"windows-1252\",\n\t\tgroupId: \"western\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1252\",\n\t\ticonvLiteDecoderId: \"windows1252\"\n\t},\n\t\"windows-1253\": {\n\t\tid: \"windows-1253\",\n\t\tgroupId: \"greek\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1253\",\n\t\ticonvLiteDecoderId: \"windows1253\"\n\t},\n\t\"windows-1254\": {\n\t\tid: \"windows-1254\",\n\t\tgroupId: \"turkish\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1254\",\n\t\ticonvLiteDecoderId: \"windows1254\"\n\t},\n\t\"windows-1255\": {\n\t\tid: \"windows-1255\",\n\t\tgroupId: \"hebrew\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1255\",\n\t\ticonvLiteDecoderId: \"windows1255\"\n\t},\n\t\"windows-1256\": {\n\t\tid: \"windows-1256\",\n\t\tgroupId: \"arabic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1256\",\n\t\ticonvLiteDecoderId: \"windows1256\"\n\t},\n\t\"windows-1257\": {\n\t\tid: \"windows-1257\",\n\t\tgroupId: \"baltic\",\n\t\tisDetectable: !0,\n\t\ttextDecoderId: \"windows-1257\",\n\t\ticonvLiteDecoderId: \"windows1257\"\n\t}\n}, He = Be, B = Ve;\nfunction Ue(e) {\n\treturn Object.hasOwn(B, e);\n}\nfunction We(e) {\n\treturn Ue(e) ? B[e].textDecoderId ?? e : e;\n}\nfunction Ge(e = \"en\") {\n\treturn Array.from(Object.values(B), ({ groupId: t, iconvLiteDecoderId: n, id: r, isDetectable: i, textDecoderId: a }) => {\n\t\tlet o = t == null ? \"\" : Ke(t, e);\n\t\treturn {\n\t\t\tid: r,\n\t\t\tgroupLabel: o,\n\t\t\tlabel: o ? `${o} (${r})` : r,\n\t\t\tisDetectable: i,\n\t\t\tisDecodable: a != null,\n\t\t\ttextDecoderId: a,\n\t\t\ticonvLiteDecoderId: n\n\t\t};\n\t}).toSorted((t, n) => t.groupLabel.localeCompare(n.groupLabel, e) || t.id.localeCompare(n.id, e, { numeric: !0 }));\n}\nfunction Ke(e, t) {\n\tlet n = He[e].label;\n\treturn n[t] ?? n.en ?? e;\n}\nvar qe = /* @__PURE__ */ C({ dataFormatIds: /* @__PURE__ */ D(/* @__PURE__ */ h(A([\n\t\"arrow\",\n\t\"avro\",\n\t\"dtv\",\n\t\"json\",\n\t\"jsonl\",\n\t\"markdown\",\n\t\"ods\",\n\t\"parquet\",\n\t\"sav\",\n\t\"sqlite\",\n\t\"xlsx\",\n\t\"xml\"\n])), /* @__PURE__ */ f(1)) }), Je = /* @__PURE__ */ h(/* @__PURE__ */ w()), Ye = /* @__PURE__ */ C({\n\t...M,\n\ttypeId: /* @__PURE__ */ _(\"tool\"),\n\tactionNames: /* @__PURE__ */ x(Je),\n\tparser: /* @__PURE__ */ x(qe)\n});\n// src/component/module/tool/delimitedText.ts\nasync function Xe(e, t, n) {\n\tlet r = Ze(e), { issues: i, parsedRecords: a, valueDelimiterId: o } = await Qe(e, t.valueDelimiterIds, t.isComplete, n);\n\treturn {\n\t\tissues: i,\n\t\tparsedRecords: a,\n\t\trecordDelimiterId: r,\n\t\tvalueDelimiterId: o\n\t};\n}\nfunction Ze(e) {\n\tlet t = (e.match(/\\r\\n/g) ?? []).length, n = (e.match(/(?<!\\r)\\n/g) ?? []).length, r = (e.match(/\\r(?!\\n)/g) ?? []).length;\n\treturn t >= n && t >= r ? \"\\r\\n\" : n >= t && n >= r ? \"\\n\" : r >= t && r >= n ? \"\\r\" : \"\\n\";\n}\nasync function Qe(e, t, n, r) {\n\tlet i, a, o, s = [], c, l = !1;\n\tfor (let u of t) {\n\t\tlet { issues: t, records: d } = await r(e, u, n);\n\t\tif (t.length > 0) {\n\t\t\tc = $e(c, {\n\t\t\t\tdelimiter: u,\n\t\t\t\tissues: t,\n\t\t\t\trecords: d\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (l = !0, d.length === 0) continue;\n\t\tlet { averageValueCount: f, sumOfValueCountDiffs: p } = et(d);\n\t\t(a === void 0 || a <= 1 || p <= (o ?? 0)) && (a === void 0 || f > a) && (i = u, a = f, o = p, s = d);\n\t}\n\tif (!l && c != null) {\n\t\tlet { delimiter: e, issues: t, records: n } = c;\n\t\treturn {\n\t\t\tissues: t,\n\t\t\tparsedRecords: n,\n\t\t\tvalueDelimiterId: V(n) ? e : void 0\n\t\t};\n\t}\n\treturn {\n\t\tissues: [],\n\t\tparsedRecords: s,\n\t\tvalueDelimiterId: i != null && V(s) ? i : void 0\n\t};\n}\nfunction $e(e, t) {\n\treturn e == null || t.issues.length < e.issues.length ? t : e;\n}\nfunction et(e) {\n\tlet t = 0, n = 0, r;\n\tfor (let i of e) r != null && (n += Math.abs(i.length - r)), r = i.length, t += i.length;\n\treturn {\n\t\taverageValueCount: t / e.length,\n\t\tsumOfValueCountDiffs: n\n\t};\n}\nfunction V(e) {\n\tlet t = /* @__PURE__ */ new Map();\n\tfor (let n of e) t.set(n.length, (t.get(n.length) ?? 0) + 1);\n\tlet [n = 0, r = 0] = [...t].toSorted((e, t) => t[1] - e[1])[0] ?? [];\n\treturn n > 1 && r * 2 > e.length;\n}\n// src/component/module/tool/index.ts\nvar tt = \"https://engine-eu.dpuse.app/tools\", nt = { dtv: \"dpuse-tool-rust-csv-core-parser\" }, H = \"dpuse-tool-\";\nfunction U(e, t) {\n\treturn e.filter((e) => e.parser?.dataFormatIds.some((e) => e === t) === !0).toSorted((e, t) => e.id.localeCompare(t.id, \"en\"));\n}\nfunction W(e, t, n) {\n\tlet r = U(e, t), [i] = r;\n\tif (i === void 0) {\n\t\tlet n = {\n\t\t\tavailableToolIds: e.map((e) => e.id),\n\t\t\tdataFormatId: t\n\t\t};\n\t\tthrow new F(`No tool reads the '${t}' data format.`, \"dpuse-shared.component.module.tool.resolveParserToolConfig\", n);\n\t}\n\tlet a = nt[t];\n\treturn r.find((e) => e.id === n) ?? r.find((e) => e.id === a) ?? i;\n}\nasync function rt(e, t) {\n\tlet n = `${H}${t}`, r = e.find((e) => e.id === n);\n\tif (!r) {\n\t\tlet r = {\n\t\t\tavailableToolIds: e.map((e) => e.id),\n\t\t\ttoolName: n\n\t\t};\n\t\tthrow new F(`Tool '${t}' not found.`, \"dpuse-shared.component.module.tool.loadTool\", r);\n\t}\n\tlet i = `${tt}/${t}_v${r.version}/${n}.es.js`;\n\ttry {\n\t\treturn new (await (import(\n\t\t\t/* @vite-ignore */\n\t\t\ti\n))).Tool();\n\t} catch (e) {\n\t\tlet t = {\n\t\t\ttoolName: n,\n\t\t\turl: i,\n\t\t\tversion: r.version\n\t\t};\n\t\tthrow new F(`Failed to load tool '${n}' v${r.version}.`, \"dpuse-shared.component.module.tool.loadTool\", t, { cause: e });\n\t}\n}\n// src/component/module/connector/objectParsing.ts\nvar it = \"\\n\", G = \",\", K = new Set(de.filter(({ isStructured: e }) => e).map(({ id: e }) => e)), at = 13, q = 10, ot = 34, J = 1048576;\nasync function st(e) {\n\tlet { asAt: t, declaredColumnConfigs: n, declaredReadingConfig: r, filePreview: i, inferDataTypes: a, readingChoiceConfig: o, startedAt: s, toolConfigs: c } = e, { isComplete: l, text: u } = i, d = r != null, f = i.bytes.length, p = {\n\t\tdecodedEncodingId: i.decodedEncodingId,\n\t\treplacementCharacterCount: i.replacementCharacterCount\n\t}, m = i.encodingCandidates, h = {\n\t\tencodingConfidenceLevel: i.encodingConfidenceLevel,\n\t\tencodingId: r?.encodingId ?? i.encodingId,\n\t\tencodingSourceId: r?.encodingId == null ? i.encodingSourceId : void 0\n\t};\n\tif (f === 0) return {\n\t\tcontentAuditConfig: pt({\n\t\t\tasAt: t,\n\t\t\tcolumns: [],\n\t\t\tisComplete: !0,\n\t\t\trecordCount: 0,\n\t\t\tsize: f,\n\t\t\tstartedAt: s\n\t\t}),\n\t\tsampleConfig: {\n\t\t\t...p,\n\t\t\tissues: [{\n\t\t\t\tendLineNumber: void 0,\n\t\t\t\tfieldNumber: void 0,\n\t\t\t\tid: \"empty\",\n\t\t\t\tlineNumber: void 0,\n\t\t\t\tmessage: \"The file is empty.\",\n\t\t\t\trecordNumber: void 0,\n\t\t\t\tseverityId: \"info\",\n\t\t\t\tvalue: void 0\n\t\t\t}],\n\t\t\tdataFormatId: \"dtv\",\n\t\t\thasHeaders: !1,\n\t\t\tparsedRecords: [],\n\t\t\tparserId: void 0,\n\t\t\trecordDelimiterId: it,\n\t\t\tsize: 0,\n\t\t\ttext: void 0,\n\t\t\tvalueDelimiterId: G\n\t\t},\n\t\treadingConfig: {\n\t\t\tdataFormatId: \"dtv\",\n\t\t\tdataFormatSourceId: void 0,\n\t\t\t...h,\n\t\t\tfileType: void 0,\n\t\t\thasHeaders: !1,\n\t\t\tisDeclared: d,\n\t\t\tparserId: void 0,\n\t\t\trecordDelimiterId: it,\n\t\t\tvalueDelimiterId: G\n\t\t},\n\t\tencodingCandidates: m\n\t};\n\tlet g = r?.dataFormatId ?? i.dataFormatId, _ = r?.valueDelimiterId, v = await yt({\n\t\tdataFormatId: g,\n\t\tfilePreview: i,\n\t\tparserId: void 0,\n\t\ttoolConfigs: c\n\t}), y = await vt({\n\t\tdataFormatId: g,\n\t\tisComplete: l,\n\t\tparserId: void 0,\n\t\tstructureIndex: v,\n\t\tstructurePath: v?.suggestedStructurePath,\n\t\ttext: u,\n\t\ttoolConfigs: c,\n\t\tvalueDelimiterId: _\n\t}), b = o?.dataFormatId ?? g, x = o?.dataFormatId != null || o?.parserId != null, S = x || o?.valueDelimiterId != null || o?.structurePath != null, C = x ? await yt({\n\t\tdataFormatId: b,\n\t\tfilePreview: i,\n\t\tparserId: o.parserId,\n\t\ttoolConfigs: c\n\t}) : v, w = S ? await vt({\n\t\tdataFormatId: b,\n\t\tisComplete: l,\n\t\tparserId: o.parserId,\n\t\tstructureIndex: C,\n\t\tstructurePath: o.structurePath ?? C?.suggestedStructurePath,\n\t\ttext: u,\n\t\ttoolConfigs: c,\n\t\tvalueDelimiterId: _ ?? o.valueDelimiterId\n\t}) : y, T = w?.parseTextResult.parsedRecords ?? [], E = w?.parseTextResult.hasHeaders ?? r?.hasHeaders, D = w == null ? void 0 : a(T, E, n), O = S && y != null ? a(y.parseTextResult.parsedRecords, y.parseTextResult.hasHeaders ?? r?.hasHeaders, n) : D;\n\treturn {\n\t\tcontentAuditConfig: pt({\n\t\t\tasAt: t,\n\t\t\tcolumns: D?.columnConfigs ?? [],\n\t\t\tisComplete: l,\n\t\t\trecordCount: Math.max(0, T.length - +(D?.hasHeaders === !0)),\n\t\t\tsize: f,\n\t\t\tstartedAt: s\n\t\t}),\n\t\tsampleConfig: {\n\t\t\t...p,\n\t\t\tdataFormatId: b ?? \"unknown\",\n\t\t\thasHeaders: D?.hasHeaders,\n\t\t\tissues: w?.parseTextResult.issues ?? [],\n\t\t\tparsedRecords: T,\n\t\t\tparserId: w?.parserId,\n\t\t\trecordDelimiterId: w?.parseTextResult.recordDelimiterId,\n\t\t\tsize: f,\n\t\t\tstructurePath: w?.structurePath,\n\t\t\ttext: u,\n\t\t\tvalueDelimiterId: w?.valueDelimiterId\n\t\t},\n\t\treadingConfig: {\n\t\t\tdataFormatId: g ?? \"unknown\",\n\t\t\tdataFormatSourceId: r == null ? i.dataFormatSourceId : void 0,\n\t\t\t...h,\n\t\t\tfileType: i.fileTypeConfig,\n\t\t\thasHeaders: O?.hasHeaders,\n\t\t\tisDeclared: d,\n\t\t\tparserId: y?.parserId,\n\t\t\trecordDelimiterId: y?.parseTextResult.recordDelimiterId,\n\t\t\tstructurePath: v?.suggestedStructurePath,\n\t\t\tvalueDelimiterId: y?.valueDelimiterId\n\t\t},\n\t\tencodingCandidates: m,\n\t\tstructureIndex: C\n\t};\n}\nasync function* ct(e) {\n\tlet { options: t, signal: n, stream: r, toolConfigs: i } = e, { encodingId: a, valueDelimiterId: o } = ft(t), { parser: s } = await Y(i, t.dataFormatId, t.parserId), { recordCount: c } = yield* s.parseStream(r, {\n\t\tabortSignal: n,\n\t\tchunkSize: t.chunkSize,\n\t\tdataFormatId: t.dataFormatId,\n\t\tencodingId: a,\n\t\tstructurePath: t.structurePath,\n\t\tvalueDelimiterId: o\n\t});\n\treturn { recordCount: c };\n}\nasync function lt(e) {\n\tlet { constructColumnAuditor: t, declaredColumnConfigs: n, onProgress: r, options: i, signal: a, stream: o, toolConfigs: s } = e, { encodingId: c, valueDelimiterId: l } = ft(i), u = Date.now(), d = performance.now(), f = t(i.hasHeaders, n), { parser: p } = await Y(s, i.dataFormatId, i.parserId), m = _t(o), h = K.has(i.dataFormatId), g = h ? gt(m.stream) : mt(m.stream, {\n\t\tbyteLimit: i.byteLimit,\n\t\tencodingId: c,\n\t\tstopSignal: i.stopSignal\n\t}), _ = p.parseStream(g.stream, {\n\t\tabortSignal: a,\n\t\tbyteLimit: h ? i.byteLimit : void 0,\n\t\tchunkSize: i.chunkSize,\n\t\tdataFormatId: i.dataFormatId,\n\t\tencodingId: c,\n\t\tstopSignal: h ? i.stopSignal : void 0,\n\t\tstructurePath: i.structurePath,\n\t\tvalueDelimiterId: l\n\t}), v = await _.next();\n\tfor (; v.done !== !0;) {\n\t\ttry {\n\t\t\tf.auditRecords(v.value.records), r(v.value.records.length, g.byteCount());\n\t\t} catch (e) {\n\t\t\tthrow await _.throw(e), e;\n\t\t}\n\t\tv = await _.next();\n\t}\n\tlet y = v.value, { columnConfigs: b, hasHeaders: x } = f.completeAudit();\n\treturn {\n\t\tcontentAuditConfig: {\n\t\t\tasAt: u,\n\t\t\tbyteCount: g.byteCount(),\n\t\t\tcolumns: b,\n\t\t\tcommentLineCount: y.commentLineCount,\n\t\t\tduration: performance.now() - d,\n\t\t\temptyLineCount: y.emptyLineCount,\n\t\t\tinvalidFieldLengthCount: y.nonUniformRecordCount,\n\t\t\tisComplete: y.isComplete ?? g.isComplete(),\n\t\t\tlineCount: y.lineCount,\n\t\t\trecordCount: Math.max(0, y.recordCount - +!!x),\n\t\t\tsourceWaitDuration: m.waitDuration()\n\t\t},\n\t\thasHeaders: x\n\t};\n}\nasync function ut(e) {\n\tlet { onProgress: t, options: n, signal: r, stream: i, toolConfigs: a } = e, o = await X(a, n.dataFormatId, n.parserId), s = n.encodingId ?? \"utf-8\";\n\treturn await o.buildStructureIndex(i, {\n\t\tabortSignal: r,\n\t\tdataFormatId: n.dataFormatId,\n\t\tencodingId: s,\n\t\tisComplete: !0,\n\t\tmaxDepth: void 0,\n\t\tonProgress: t\n\t});\n}\nasync function dt(e) {\n\tlet { options: t, signal: n, stream: r, toolConfigs: i } = e;\n\treturn await (await X(i, t.dataFormatId, t.parserId)).listStructureEntries(r, {\n\t\tabortSignal: n,\n\t\tdataFormatId: t.dataFormatId,\n\t\tentryCount: t.entryCount,\n\t\tlocator: t.locator,\n\t\tmaxValueLength: t.maxValueLength,\n\t\tpath: t.structurePath\n\t});\n}\nfunction ft(e) {\n\tlet t = e.valueDelimiterId ?? (K.has(e.dataFormatId) ? \"\" : void 0);\n\tif (t == null || e.encodingId == null) throw Error(`'${e.path}' has no encoding or value delimiter, which a parser needs to read it.`);\n\treturn {\n\t\tencodingId: e.encodingId,\n\t\tvalueDelimiterId: t\n\t};\n}\nfunction pt(e) {\n\tlet { asAt: t, columns: n, isComplete: r, recordCount: i, size: a, startedAt: o } = e;\n\treturn {\n\t\tasAt: t,\n\t\tbyteCount: a,\n\t\tcolumns: n,\n\t\tcommentLineCount: void 0,\n\t\tduration: performance.now() - o,\n\t\temptyLineCount: void 0,\n\t\tinvalidFieldLengthCount: void 0,\n\t\tisComplete: r,\n\t\tlineCount: void 0,\n\t\trecordCount: i,\n\t\tsourceWaitDuration: void 0\n\t};\n}\nfunction mt(e, t) {\n\tlet n = e.getReader(), r = ht(t.encodingId), i = 0, a = !1, o;\n\treturn {\n\t\tbyteCount: () => i,\n\t\tisComplete: () => a,\n\t\tstream: new ReadableStream({\n\t\t\tasync pull(e) {\n\t\t\t\tlet s = o;\n\t\t\t\tif (s == null) {\n\t\t\t\t\tlet t = await n.read();\n\t\t\t\t\tif (t.done) {\n\t\t\t\t\t\ta = !0, e.close();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ts = t.value;\n\t\t\t\t}\n\t\t\t\tlet c = s.subarray(0, J);\n\t\t\t\to = s.length > J ? s.subarray(J) : void 0;\n\t\t\t\tlet l = t.stopSignal?.aborted === !0 ? i : t.byteLimit ?? Infinity, u = r(c, i, l - i);\n\t\t\t\tu == null ? (i += c.length, e.enqueue(c)) : (i += u, o = void 0, e.enqueue(c.subarray(0, u)), e.close(), await n.cancel());\n\t\t\t},\n\t\t\tcancel(e) {\n\t\t\t\treturn n.cancel(e);\n\t\t\t}\n\t\t}, { highWaterMark: 0 })\n\t};\n}\nfunction ht(e) {\n\tlet t = We(e), n = t.startsWith(\"utf-16\"), r = n ? 2 : 1, i = +(t === \"utf-16be\"), a = !1;\n\treturn (e, t, o) => {\n\t\tfor (let s = 0; s < e.length; s++) {\n\t\t\tlet c = e[s];\n\t\t\tif ((c === ot || c === q || c === at) && (!n || (t + s) % 2 === i && e[s + 1 - 2 * i] === 0)) {\n\t\t\t\tif (c === ot) a = !a;\n\t\t\t\telse if (!a && s >= o && (c === q || e[s + r] !== q)) return s + r - i;\n\t\t\t}\n\t\t}\n\t};\n}\nfunction gt(e) {\n\tlet t = e.getReader(), n = 0, r = !1;\n\treturn {\n\t\tbyteCount: () => n,\n\t\tisComplete: () => r,\n\t\tstream: new ReadableStream({\n\t\t\tasync pull(e) {\n\t\t\t\tlet i = await t.read();\n\t\t\t\ti.done ? (r = !0, e.close()) : (n += i.value.length, e.enqueue(i.value));\n\t\t\t},\n\t\t\tcancel(e) {\n\t\t\t\treturn t.cancel(e);\n\t\t\t}\n\t\t}, { highWaterMark: 0 })\n\t};\n}\nfunction _t(e) {\n\tlet t = e.getReader(), n = 0;\n\treturn {\n\t\tstream: new ReadableStream({\n\t\t\tasync pull(e) {\n\t\t\t\tlet r = performance.now(), i = await t.read();\n\t\t\t\tn += performance.now() - r, i.done ? e.close() : e.enqueue(i.value);\n\t\t\t},\n\t\t\tcancel(e) {\n\t\t\t\treturn t.cancel(e);\n\t\t\t}\n\t\t}, { highWaterMark: 0 }),\n\t\twaitDuration: () => n\n\t};\n}\nasync function vt(e) {\n\tlet { dataFormatId: t, isComplete: n, parserId: r, structureIndex: i, structurePath: a, text: o, toolConfigs: s, valueDelimiterId: c } = e;\n\tif (t == null || o == null || U(s, t).length === 0) return;\n\tlet { parser: l, parserId: u } = await Y(s, t, r);\n\tif (i != null) {\n\t\tlet e = i.nodes.length === 0 && i.issues.length > 0;\n\t\treturn e || a == null ? {\n\t\t\tparserId: u,\n\t\t\tparseTextResult: {\n\t\t\t\tissues: e ? i.issues : [],\n\t\t\t\tparsedRecords: [],\n\t\t\t\trecordDelimiterId: \"\\n\",\n\t\t\t\tvalueDelimiterId: void 0\n\t\t\t},\n\t\t\tstructurePath: void 0,\n\t\t\tvalueDelimiterId: void 0\n\t\t} : {\n\t\t\tparserId: u,\n\t\t\tparseTextResult: await l.parseText(o, {\n\t\t\t\tdataFormatId: t,\n\t\t\t\tisComplete: n,\n\t\t\t\tstructurePath: a,\n\t\t\t\tvalueDelimiterIds: []\n\t\t\t}),\n\t\t\tstructurePath: a,\n\t\t\tvalueDelimiterId: void 0\n\t\t};\n\t}\n\tlet d = c == null ? j.map(({ id: e }) => e) : [c], f = await l.parseText(o, {\n\t\tdataFormatId: t,\n\t\tisComplete: n,\n\t\tvalueDelimiterIds: d\n\t}), p = t === \"dtv\", m = p && c == null && f.valueDelimiterId == null ? await l.parseText(o, {\n\t\tdataFormatId: t,\n\t\tisComplete: n,\n\t\tvalueDelimiterIds: [G]\n\t}) : f;\n\treturn {\n\t\tparserId: u,\n\t\tparseTextResult: m,\n\t\tstructurePath: void 0,\n\t\tvalueDelimiterId: p ? c ?? m.valueDelimiterId ?? G : m.valueDelimiterId\n\t};\n}\nasync function yt(e) {\n\tlet { dataFormatId: t, filePreview: n, parserId: r, toolConfigs: i } = e;\n\tif (!(t != null && K.has(t) && U(i, t).length > 0 && W(i, t, r).actionNames?.includes(\"buildStructureIndex\") === !0)) return;\n\tlet a = await X(i, t, r), o = new Blob([n.bytes]).stream(), s = n.decodedEncodingId ?? \"utf-8\";\n\treturn await a.buildStructureIndex(o, {\n\t\tabortSignal: new AbortController().signal,\n\t\tdataFormatId: t,\n\t\tencodingId: s,\n\t\tisComplete: n.isComplete,\n\t\tmaxDepth: void 0,\n\t\tonProgress: void 0\n\t});\n}\nasync function Y(e, t, n) {\n\tlet r = W(e, t, n);\n\treturn {\n\t\tparser: await rt(e, r.id.slice(H.length)),\n\t\tparserId: r.id\n\t};\n}\nasync function X(e, t, n) {\n\tlet { parser: r, parserId: i } = await Y(e, t, n);\n\tif (!(\"buildStructureIndex\" in r)) throw new F(`Tool '${i}' does not map the structure of '${t}' items.`, \"dpuse-shared.component.module.connector.objectParsing.loadStructuredParser\");\n\treturn r;\n}\n// src/component/module/connector/storePath.ts\nvar bt = /^[\\w-]+$/u;\nfunction xt(e) {\n\tif (!e.startsWith(\"/\")) return {\n\t\tdatabaseName: void 0,\n\t\ttableName: e\n\t};\n\tlet [, t, n, ...r] = e.split(\"/\");\n\tif (t == null || n == null || n === \"\" || r.length > 0 || !bt.test(t)) throw Error(`Encountered invalid store path '${e}'.`);\n\treturn {\n\t\tdatabaseName: t,\n\t\ttableName: n\n\t};\n}\n// src/component/module/connector/storeValues.ts\nfunction St(e) {\n\treturn e.map((e) => ({\n\t\tvalue: Ct(e),\n\t\tvalueWasQuoted: !1\n\t}));\n}\nfunction Ct(e) {\n\treturn e == null ? null : e instanceof Date ? e.toISOString() : String(e);\n}\n// src/component/module/connector/webLock.ts\nasync function wt(e) {\n\tlet t = Promise.withResolvers(), n = navigator.locks.request(e, { ifAvailable: !0 }, (e) => {\n\t\tif (e == null) t.resolve(void 0);\n\t\telse return new Promise((e) => {\n\t\t\tt.resolve(e);\n\t\t});\n\t}), r = (async () => {\n\t\tawait n;\n\t})();\n\treturn await Promise.race([t.promise, r]);\n}\nvar Tt = /* @__PURE__ */ v({ fields: /* @__PURE__ */ h(/* @__PURE__ */ v({\n\tformat: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\tname: /* @__PURE__ */ w(),\n\ttitle: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\ttype: /* @__PURE__ */ x(/* @__PURE__ */ w())\n})) }), Et = /* @__PURE__ */ v({\n\tdelimiter: /* @__PURE__ */ x(/* @__PURE__ */ w()),\n\theader: /* @__PURE__ */ x(/* @__PURE__ */ g()),\n\theaderRows: /* @__PURE__ */ x(/* @__PURE__ */ h(/* @__PURE__ */ b()))\n}), Dt = {\n\tboolean: {\n\t\tdataSubtypeId: void 0,\n\t\tdataTypeId: \"boolean\"\n\t},\n\tdate: {\n\t\tdataSubtypeId: \"date\",\n\t\tdataTypeId: \"temporal\"\n\t},\n\tdatetime: {\n\t\tdataSubtypeId: \"dateTime\",\n\t\tdataTypeId: \"temporal\"\n\t},\n\tinteger: {\n\t\tdataSubtypeId: \"integer\",\n\t\tdataTypeId: \"numeric\"\n\t},\n\tnumber: {\n\t\tdataSubtypeId: \"decimal\",\n\t\tdataTypeId: \"numeric\"\n\t},\n\tstring: {\n\t\tdataSubtypeId: \"plain\",\n\t\tdataTypeId: \"string\"\n\t},\n\ttime: {\n\t\tdataSubtypeId: \"time\",\n\t\tdataTypeId: \"temporal\"\n\t},\n\tyear: {\n\t\tdataSubtypeId: \"integer\",\n\t\tdataTypeId: \"numeric\"\n\t}\n}, Ot = {\n\temail: \"email\",\n\turi: \"url\",\n\tuuid: \"uuid\"\n};\nfunction kt(e) {\n\tlet t = /* @__PURE__ */ O(Tt, e.schema);\n\tif (!t.success) throw new F(\"The table schema is not valid.\", \"dpuse-shared.component.module.connector.tableSchema.readTableSchema\");\n\tlet n = /* @__PURE__ */ O(Et, e.dialect ?? {});\n\tif (!n.success) throw new F(\"The table dialect is not valid.\", \"dpuse-shared.component.module.connector.tableSchema.readTableSchema\");\n\tlet r = t.output.fields.map((e) => {\n\t\tlet t = At(e.type, e.format);\n\t\treturn {\n\t\t\tname: e.name,\n\t\t\tlabel: e.title,\n\t\t\tdataTypeId: t.dataTypeId,\n\t\t\tdataSubtypeId: t.dataSubtypeId\n\t\t};\n\t}), { delimiter: i = \",\", header: a = !0, headerRows: o = [1] } = n.output;\n\treturn {\n\t\tdeclaredColumnConfigs: r,\n\t\tdeclaredReadingConfig: {\n\t\t\tdataFormatId: \"dtv\",\n\t\t\tencodingId: e.encoding?.toLowerCase(),\n\t\t\thasHeaders: a && o.length > 0,\n\t\t\tvalueDelimiterId: j.find(({ character: e }) => e === i)?.id\n\t\t}\n\t};\n}\nfunction At(e, t) {\n\tlet n = e == null ? void 0 : Dt[e];\n\treturn n == null ? {\n\t\tdataSubtypeId: void 0,\n\t\tdataTypeId: void 0\n\t} : t == null || n.dataTypeId !== \"string\" ? n : {\n\t\tdataSubtypeId: Ot[t] ?? \"plain\",\n\t\tdataTypeId: \"string\"\n\t};\n}\n// src/component/module/connector/index.ts\nvar jt = [\n\t{\n\t\tid: \"application\",\n\t\tlabel: {\n\t\t\ten: \"Application\",\n\t\t\tes: \"Aplicación\"\n\t\t}\n\t},\n\t{\n\t\tid: \"curatedDataset\",\n\t\tlabel: {\n\t\t\ten: \"Curated Dataset\",\n\t\t\tes: \"Conjunto de Datos Curado\"\n\t\t}\n\t},\n\t{\n\t\tid: \"database\",\n\t\tlabel: {\n\t\t\ten: \"Database\",\n\t\t\tes: \"Base de Datos\"\n\t\t}\n\t},\n\t{\n\t\tid: \"fileStore\",\n\t\tlabel: {\n\t\t\ten: \"File Store\",\n\t\t\tes: \"Almacén de Archivos\"\n\t\t}\n\t}\n], Mt = [\n\t{\n\t\tid: \"apiEndpoint\",\n\t\tlabel: {\n\t\t\ten: \"API Endpoint\",\n\t\t\tes: \"Endpoint de API\"\n\t\t}\n\t},\n\t{\n\t\tid: \"file\",\n\t\tlabel: {\n\t\t\ten: \"File\",\n\t\t\tes: \"Archivo\"\n\t\t}\n\t},\n\t{\n\t\tid: \"table\",\n\t\tlabel: {\n\t\t\ten: \"Table\",\n\t\t\tes: \"Tabla\"\n\t\t}\n\t}\n], Nt = {\n\tauditObjectContent: \"Audit Object Content\",\n\tcloseStore: \"Close Store\",\n\tcreateObject: \"Create Object\",\n\tdescribeConnection: \"Describe Connection\",\n\tdropObject: \"Drop Object\",\n\tfindObject: \"Find Object\",\n\tgetInfo: \"Get Info\",\n\tgetReadableStream: \"Get Readable Stream\",\n\tgetRecord: \"Get Record\",\n\tindexObjectStructure: \"Index Object Structure\",\n\tlistNodes: \"List Nodes\",\n\tlistObjectStructureEntries: \"List Object Structure Entries\",\n\tloadObjectRecords: \"Load Object Records\",\n\topenStore: \"Open Store\",\n\tpreviewObject: \"Preview Object\",\n\tqueryRecords: \"Query Records\",\n\tremoveRecords: \"Remove Records\",\n\tretrieveRecords: \"Retrieve Records\",\n\tupsertRecords: \"Upsert Records\"\n}, Pt = [\n\t{\n\t\tid: \"bidirectional\",\n\t\tlabel: {\n\t\t\ten: \"Bidirectional\",\n\t\t\tes: \"Bidireccional\"\n\t\t}\n\t},\n\t{\n\t\tid: \"destination\",\n\t\tlabel: {\n\t\t\ten: \"Destination\",\n\t\t\tes: \"Destino\"\n\t\t}\n\t},\n\t{\n\t\tid: \"source\",\n\t\tlabel: {\n\t\t\ten: \"Source\",\n\t\t\tes: \"Origen\"\n\t\t}\n\t},\n\t{\n\t\tid: \"unknown\",\n\t\tlabel: {\n\t\t\ten: \"Unknown\",\n\t\t\tes: \"Desconocido\"\n\t\t}\n\t}\n], Ft = /* @__PURE__ */ new Set([\n\t\"createObject\",\n\t\"dropObject\",\n\t\"loadObjectRecords\",\n\t\"removeRecords\",\n\t\"upsertRecords\"\n]), It = /* @__PURE__ */ new Set([\n\t\"auditObjectContent\",\n\t\"findObject\",\n\t\"getInfo\",\n\t\"getReadableStream\",\n\t\"getRecord\",\n\t\"indexObjectStructure\",\n\t\"listNodes\",\n\t\"listObjectStructureEntries\",\n\t\"previewObject\",\n\t\"queryRecords\",\n\t\"retrieveRecords\"\n]);\nfunction Lt(e) {\n\tlet t = !1, n = !1;\n\tfor (let r of e) It.has(r) && (t = !0), Ft.has(r) && (n = !0);\n\treturn t && n ? \"bidirectional\" : t ? \"source\" : n ? \"destination\" : \"unknown\";\n}\nvar Rt = (e, t = \"en\") => {\n\tlet i = jt.find((t) => t.id === e);\n\treturn i ? {\n\t\tlabel: r(n(i.label), t) ?? i.id,\n\t\tdescription: \"\"\n\t} : {\n\t\tlabel: e,\n\t\tdescription: \"\"\n\t};\n}, zt = (e, t = \"en\") => {\n\tlet i = Mt.find((t) => t.id === e);\n\treturn i ? {\n\t\tlabel: r(n(i.label), t) ?? i.id,\n\t\tdescription: \"\"\n\t} : {\n\t\tlabel: e,\n\t\tdescription: \"\"\n\t};\n}, Bt = (e, t = \"en\") => {\n\tlet i = Pt.find((t) => t.id === e);\n\treturn i ? {\n\t\tlabel: r(n(i.label), t) ?? i.id,\n\t\tdescription: \"\"\n\t} : {\n\t\tlabel: e,\n\t\tdescription: \"\"\n\t};\n};\nfunction Vt(e) {\n\tlet t = new Set(e), n = \"|Action|Supported|\\n\";\n\tn += \"|:----|:-------:|\\n\";\n\tfor (let e of Object.keys(Nt)) n += `| ${Nt[e]} | ${t.has(e) ? \"✓\" : \"\"} |\\n`;\n\treturn n;\n}\n// src/component/module/cookbook/cookbookConfig.schema.ts\nvar Ht = A([\"list\"]), Ut = /* @__PURE__ */ C({\n\t...M,\n\ttypeId: /* @__PURE__ */ _(\"cookbook\"),\n\tactionNames: /* @__PURE__ */ h(Ht),\n\trecipes: /* @__PURE__ */ h(oe)\n});\n// src/component/module/engine/index.ts\nfunction Wt(e) {\n\treturn e.signal ?? new AbortController().signal;\n}\n// src/component/module/presenter/presenterConfig.schema.ts\nvar Gt = A([\n\t\"list\",\n\t\"render\",\n\t\"setColorMode\"\n]), Kt = /* @__PURE__ */ C({\n\t...M,\n\ttypeId: /* @__PURE__ */ _(\"presenter\"),\n\tactionNames: /* @__PURE__ */ h(Gt),\n\tpresentations: /* @__PURE__ */ h(oe)\n}), qt = \"https://engine-eu.dpuse.app/presenters\";\nasync function Jt(e, t, n, r) {\n\tlet i = e.id, a = `${qt}/${i.split(\"-\").slice(2).join(\"-\")}_v${e.version}/${i}.es.js`;\n\ttry {\n\t\treturn new (await (import(\n\t\t\t/* @vite-ignore */\n\t\t\ta\n))).Presenter(t, n, r);\n\t} catch (t) {\n\t\tlet n = {\n\t\t\tpresenterName: i,\n\t\t\turl: a,\n\t\t\tversion: e.version\n\t\t};\n\t\tthrow new F(`Failed to load presenter '${i}' v${e.version}.`, \"dpuse-shared.component.module.presenter.loadPresenter\", n, { cause: t });\n\t}\n}\n// src/locale/index.ts\nfunction Yt(e, t) {\n\treturn {\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.description.en ?? \"\",\n\t\tverb: e.verb?.[t] ?? void 0\n\t};\n}\nfunction Xt(e, t, n = !1) {\n\tlet r = e.map((e) => ({\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.description.en ?? \"\",\n\t\tverb: e.verb?.[t] ?? void 0\n\t}));\n\treturn n ? r.toSorted((e, t) => e.label.localeCompare(t.label) || e.id.localeCompare(t.id)) : r;\n}\nfunction Zt(e, t) {\n\treturn {\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.description.en ?? \"\"\n\t};\n}\n// src/utilities/index.ts\nvar Qt = /* @__PURE__ */ new Map([\n\t[\"arrow\", \"application/vnd.apache.arrow.file\"],\n\t[\"avro\", \"application/vnd.apache.avro\"],\n\t[\"bin\", \"application/octet-stream\"],\n\t[\"cfb\", \"application/x-cfb\"],\n\t[\"csv\", \"text/csv\"],\n\t[\"dat\", \"application/octet-stream\"],\n\t[\"json\", \"application/json\"],\n\t[\"jsonl\", \"application/jsonl\"],\n\t[\"md\", \"text/markdown\"],\n\t[\"ods\", \"application/vnd.oasis.opendocument.spreadsheet\"],\n\t[\"parquet\", \"application/vnd.apache.parquet\"],\n\t[\"sav\", \"application/x-spss-sav\"],\n\t[\"sqlite\", \"application/vnd.sqlite3\"],\n\t[\"tab\", \"text/tab-separated-values\"],\n\t[\"tsv\", \"text/tab-separated-values\"],\n\t[\"txt\", \"text/plain\"],\n\t[\"xls\", \"application/vnd.ms-excel\"],\n\t[\"xlsm\", \"application/vnd.ms-excel.sheet.macroEnabled.12\"],\n\t[\"xlsx\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],\n\t[\"xml\", \"application/xml\"]\n]), Z = \"en\", Q = [\n\t[\"day\", 864e5],\n\t[\"hour\", 36e5],\n\t[\"minute\", 6e4],\n\t[\"second\", 1e3],\n\t[\"millisecond\", 1]\n], $t = [\n\t[\"byte\", 1],\n\t[\"kilobyte\", 1024],\n\t[\"megabyte\", 1048576],\n\t[\"gigabyte\", 1073741824],\n\t[\"terabyte\", 1099511627776]\n], en = /* @__PURE__ */ new Map(), tn = /* @__PURE__ */ new Map();\nfunction nn(e, t = 2, n = t, r = Z) {\n\treturn e == null ? \"\" : $(r, {\n\t\tlocaleMatcher: \"best fit\",\n\t\tmaximumFractionDigits: t,\n\t\tminimumFractionDigits: Math.min(n, t),\n\t\tminimumIntegerDigits: 1,\n\t\tstyle: \"decimal\",\n\t\tuseGrouping: !0\n\t}).format(e);\n}\nfunction rn(e, t = Z) {\n\treturn nn(e, 0, 0, t);\n}\nfunction an(e, t = 1, n = Z) {\n\treturn e == null || !Number.isFinite(e) ? \"\" : $(n, {\n\t\tmaximumFractionDigits: t,\n\t\tnotation: \"compact\"\n\t}).format(e);\n}\nfunction on(e, t = 1, n = Z) {\n\tif (e == null || !Number.isFinite(e)) return \"\";\n\tlet [r, i] = $t.find(([, n]) => hn(Math.abs(e) / n, n === 1 ? 0 : t) < 1024) ?? [\"terabyte\", 1099511627776];\n\treturn $(n, {\n\t\tmaximumFractionDigits: i === 1 ? 0 : t,\n\t\tstyle: \"unit\",\n\t\tunit: r,\n\t\tunitDisplay: i === 1 ? \"long\" : \"short\"\n\t}).format(e / i);\n}\nfunction sn(e, t = \"millisecond\", n = Z) {\n\tif (e == null || !Number.isFinite(e)) return \"\";\n\tlet r = Math.round(Math.abs(e)), i = Q.findIndex(([, e]) => r >= e), a = i === -1 ? Q.length - 1 : i, o = Q.findIndex(([e]) => e === t), s = Q.slice(a, Math.max(o, a) + 1), c = [];\n\tfor (let [t, i] of s) {\n\t\tlet a = Math.floor(r / i);\n\t\tif (a === 0 && c.length > 0) continue;\n\t\tr -= a * i;\n\t\tlet o = c.length === 0 && e < 0 && a > 0 ? -a : a;\n\t\tc.push($(n, {\n\t\t\tstyle: \"unit\",\n\t\t\tunit: t,\n\t\t\tunitDisplay: \"short\"\n\t\t}).format(o));\n\t}\n\treturn mn(n).format(c);\n}\nfunction cn(e) {\n\tif (!e) return;\n\tlet t = pn(e);\n\treturn t === void 0 ? e : e.slice(0, t);\n}\nfunction ln(e) {\n\tif (!e) return;\n\tlet t = pn(e);\n\treturn t === void 0 ? void 0 : e.slice(t + 1);\n}\nfunction un(e) {\n\treturn e != null && Qt.has(e.toLowerCase());\n}\nfunction dn(e) {\n\treturn (e == null ? void 0 : Qt.get(e.toLowerCase())) ?? \"application/octet-stream\";\n}\nfunction fn(e) {\n\tswitch (e) {\n\t\tcase \"Edm.Boolean\": return \"boolean\";\n\t\tcase \"Edm.Byte\":\n\t\tcase \"Edm.Int16\":\n\t\tcase \"Edm.Int32\":\n\t\tcase \"Edm.Int64\":\n\t\tcase \"Edm.SByte\": return \"wholeNumber\";\n\t\tcase \"Edm.Decimal\":\n\t\tcase \"Edm.Double\":\n\t\tcase \"Edm.Single\": return \"decimalNumber\";\n\t\tcase \"Edm.Date\":\n\t\tcase \"Edm.DateTime\":\n\t\tcase \"Edm.DateTimeOffset\": return \"moment\";\n\t\tcase \"Edm.Time\":\n\t\tcase \"Edm.TimeOfDay\": return \"momentTime\";\n\t\tcase \"Edm.Guid\":\n\t\tcase \"Edm.String\": return \"string\";\n\t\tdefault: return \"unknown\";\n\t}\n}\nfunction pn(e) {\n\tlet t = e.lastIndexOf(\"/\") + 1, n = e.lastIndexOf(\".\");\n\treturn n > t && n < e.length - 1 ? n : void 0;\n}\nfunction mn(e) {\n\tlet t = en.get(e);\n\treturn t || (t = new Intl.ListFormat(e, {\n\t\tstyle: \"narrow\",\n\t\ttype: \"unit\"\n\t}), en.set(e, t)), t;\n}\nfunction $(e, t) {\n\tlet n = `${e}|${JSON.stringify(t)}`, r = tn.get(n);\n\treturn r || (r = new Intl.NumberFormat(e, t), tn.set(n, r)), r;\n}\nfunction hn(e, t) {\n\tlet n = 10 ** t;\n\treturn Math.round(e * n) / n;\n}\nexport { De as APIError, F as AppError, ke as ConnectorError, de as DATA_FORMAT_CONFIGS, fe as DATA_TYPE_CONFIGS, pe as DECIMAL_SEPARATOR_IDS, e as DEFAULT_LOCALE_ID, He as ENCODING_GROUP_CONFIG_MAP, B as ENCODING_TYPE_CONFIG_MAP, Oe as EngineError, I as FetchError, t as SUPPORTED_LANGUAGES, H as TOOL_NAME_PREFIX, j as VALUE_DELIMITER_CONFIGS, wt as acquireWebLock, lt as auditObjectContentWithParser, Ae as buildFetchError, st as buildPreviewObjectResult, ce as componentInstanceConfigSchema, je as concatenateSerialisedErrorMessages, Se as connectorConfigSchema, Rt as constructConnectorCategoryConfig, zt as constructConnectorItemTypeConfig, Bt as constructConnectorUsageConfig, fn as convertODataTypeIdToUsageTypeId, St as convertStoreRecordToParsedRecord, Ct as convertStoreValueToText, Ut as cookbookConfigSchema, n as createLabelMap, Lt as determineConnectorUsageId, ln as extractExtensionFromPath, cn as extractPathWithoutExtension, nn as formatNumberAsDecimalNumber, sn as formatNumberAsDuration, an as formatNumberAsSize, on as formatNumberAsStorageSize, rn as formatNumberAsWholeNumber, ue as getComponentStatus, Vt as getConnectorActionsTable, Ge as getEncodingTypeConfigs, me as getValueDelimiterCharacter, un as hasMimeTypeForExtension, Me as ignoreErrors, ut as indexObjectStructureWithParser, Ue as isEncodingTypeId, dt as listObjectStructureEntriesWithParser, U as listParserToolConfigs, Jt as loadPresenter, rt as loadTool, Yt as localiseConfig, Xt as localiseConfigs, Zt as localiseReference, dn as lookupMimeTypeForExtension, L as normalizeToError, Xe as parseDelimitedText, Kt as presenterConfigSchema, kt as readTableSchema, We as resolveDecoderId, r as resolveLabel, W as resolveParserToolConfig, Wt as resolveRequestSignal, xt as resolveStorePath, ct as retrieveRecordsWithParser, Ne as serialiseError, Ye as toolConfigSchema, Pe as unserialiseError };\n","/**\n * The accumulators that the tokenizer gathers strings and numbers into while\n * their bytes arrive.\n *\n * @module\n */\n/**\n * A {@linkcode StringBuilder} that accumulates the token as a JavaScript\n * string. This is the default: it's the fastest option for the small strings\n * and numbers that dominate real JSON.\n */\nexport class NonBufferedString {\n constructor() {\n // fatal: true makes invalid byte sequences (e.g. a lead byte followed by a\n // non-continuation byte) throw instead of silently decoding to U+FFFD.\n this.decoder = new TextDecoder(\"utf-8\", { fatal: true });\n // Pieces appended since the last toString(), not yet folded into `string`.\n this.pending = [];\n this.string = \"\";\n this.byteLength = 0;\n }\n appendChar(char) {\n this.pending.push(String.fromCharCode(char));\n this.byteLength += 1;\n }\n appendBuf(buf, start = 0, end = buf.length) {\n this.pending.push(this.decoder.decode(buf.subarray(start, end)));\n this.byteLength += end - start;\n }\n appendCharCode(code) {\n this.pending.push(String.fromCharCode(code));\n }\n reset() {\n this.pending = [];\n this.string = \"\";\n this.byteLength = 0;\n }\n // Folds only the pieces appended since the last call into `string`, so\n // repeated calls (one per chunk when emitting partial tokens) stay linear\n // overall instead of re-joining the whole accumulated string every time.\n toString() {\n if (this.pending.length > 0) {\n this.string += this.pending.join(\"\");\n this.pending = [];\n }\n return this.string;\n }\n}\n/**\n * A {@linkcode StringBuilder} that accumulates the token's bytes into a\n * fixed-size `Uint8Array` and only decodes them once the buffer is full.\n *\n * Enabled through the tokenizer's `stringBufferSize`/`numberBufferSize`\n * options. It avoids V8's over-allocation on repeated string concatenation,\n * which is what makes very large strings and numbers exhaust memory, at the\n * cost of an encoding/decoding round trip that isn't worth it for small values.\n */\nexport class BufferedString {\n /**\n * @param bufferSize The size, in bytes, of the buffer to accumulate into.\n */\n constructor(bufferSize) {\n // fatal: true makes invalid byte sequences (e.g. a lead byte followed by a\n // non-continuation byte) throw instead of silently decoding to U+FFFD.\n this.decoder = new TextDecoder(\"utf-8\", { fatal: true });\n this.bufferOffset = 0;\n this.string = \"\";\n this.byteLength = 0;\n this.buffer = new Uint8Array(bufferSize);\n }\n appendChar(char) {\n if (this.bufferOffset >= this.buffer.length)\n this.flushStringBuffer();\n this.buffer[this.bufferOffset++] = char;\n this.byteLength += 1;\n }\n appendBuf(buf, start = 0, end = buf.length) {\n const size = end - start;\n if (this.bufferOffset + size > this.buffer.length)\n this.flushStringBuffer();\n if (size > this.buffer.length) {\n // Span larger than the working buffer: decode it straight into the\n // string instead of copying it in (buffer.set would overflow). Safe\n // because callers only append complete-character spans -- the tokenizer\n // never splits a multi-byte char across appendBuf calls -- so decoding\n // this span on its own can't cut through the middle of a character.\n this.string += this.decoder.decode(buf.subarray(start, end));\n this.byteLength += size;\n return;\n }\n this.buffer.set(buf.subarray(start, end), this.bufferOffset);\n this.bufferOffset += size;\n this.byteLength += size;\n }\n appendCharCode(code) {\n this.flushStringBuffer();\n this.string += String.fromCharCode(code);\n }\n flushStringBuffer() {\n this.string += this.decoder.decode(this.buffer.subarray(0, this.bufferOffset));\n this.bufferOffset = 0;\n }\n reset() {\n this.string = \"\";\n this.bufferOffset = 0;\n this.byteLength = 0;\n }\n toString() {\n this.flushStringBuffer();\n return this.string;\n }\n}\n//# sourceMappingURL=bufferedString.js.map","/**\n * The JSON token types emitted by the tokenizer.\n *\n * @module\n */\n/** The type of a JSON token, as reported by the tokenizer's `onToken` callback. */\nvar TokenType;\n(function (TokenType) {\n /** `{` */\n TokenType[TokenType[\"LEFT_BRACE\"] = 0] = \"LEFT_BRACE\";\n /** `}` */\n TokenType[TokenType[\"RIGHT_BRACE\"] = 1] = \"RIGHT_BRACE\";\n /** `[` */\n TokenType[TokenType[\"LEFT_BRACKET\"] = 2] = \"LEFT_BRACKET\";\n /** `]` */\n TokenType[TokenType[\"RIGHT_BRACKET\"] = 3] = \"RIGHT_BRACKET\";\n /** `:` */\n TokenType[TokenType[\"COLON\"] = 4] = \"COLON\";\n /** `,` */\n TokenType[TokenType[\"COMMA\"] = 5] = \"COMMA\";\n /** `true` */\n TokenType[TokenType[\"TRUE\"] = 6] = \"TRUE\";\n /** `false` */\n TokenType[TokenType[\"FALSE\"] = 7] = \"FALSE\";\n /** `null` */\n TokenType[TokenType[\"NULL\"] = 8] = \"NULL\";\n /** A string, with all its escape sequences already resolved. */\n TokenType[TokenType[\"STRING\"] = 9] = \"STRING\";\n /** A number, already parsed into a JavaScript number. */\n TokenType[TokenType[\"NUMBER\"] = 10] = \"NUMBER\";\n /** The configured separator between consecutive JSON documents. */\n TokenType[TokenType[\"SEPARATOR\"] = 11] = \"SEPARATOR\";\n})(TokenType || (TokenType = {}));\nexport default TokenType;\n//# sourceMappingURL=tokenType.js.map","/**\n * The utf-8 byte values that the tokenizer matches the incoming stream against.\n *\n * @module\n */\n/** The utf-8 byte value of each character that is meaningful to the tokenizer. */\nexport var charset;\n(function (charset) {\n charset[charset[\"BACKSPACE\"] = 8] = \"BACKSPACE\";\n charset[charset[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n charset[charset[\"NEWLINE\"] = 10] = \"NEWLINE\";\n charset[charset[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n charset[charset[\"TAB\"] = 9] = \"TAB\";\n charset[charset[\"SPACE\"] = 32] = \"SPACE\";\n charset[charset[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n charset[charset[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n charset[charset[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n charset[charset[\"DOLLAR_SIGN\"] = 36] = \"DOLLAR_SIGN\";\n charset[charset[\"PERCENT_SIGN\"] = 37] = \"PERCENT_SIGN\";\n charset[charset[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n charset[charset[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n charset[charset[\"LEFT_PARENTHESIS\"] = 40] = \"LEFT_PARENTHESIS\";\n charset[charset[\"RIGHT_PARENTHESIS\"] = 41] = \"RIGHT_PARENTHESIS\";\n charset[charset[\"ASTERISK\"] = 42] = \"ASTERISK\";\n charset[charset[\"PLUS_SIGN\"] = 43] = \"PLUS_SIGN\";\n charset[charset[\"COMMA\"] = 44] = \"COMMA\";\n charset[charset[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n charset[charset[\"FULL_STOP\"] = 46] = \"FULL_STOP\";\n charset[charset[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n charset[charset[\"DIGIT_ZERO\"] = 48] = \"DIGIT_ZERO\";\n charset[charset[\"DIGIT_ONE\"] = 49] = \"DIGIT_ONE\";\n charset[charset[\"DIGIT_TWO\"] = 50] = \"DIGIT_TWO\";\n charset[charset[\"DIGIT_THREE\"] = 51] = \"DIGIT_THREE\";\n charset[charset[\"DIGIT_FOUR\"] = 52] = \"DIGIT_FOUR\";\n charset[charset[\"DIGIT_FIVE\"] = 53] = \"DIGIT_FIVE\";\n charset[charset[\"DIGIT_SIX\"] = 54] = \"DIGIT_SIX\";\n charset[charset[\"DIGIT_SEVEN\"] = 55] = \"DIGIT_SEVEN\";\n charset[charset[\"DIGIT_EIGHT\"] = 56] = \"DIGIT_EIGHT\";\n charset[charset[\"DIGIT_NINE\"] = 57] = \"DIGIT_NINE\";\n charset[charset[\"COLON\"] = 58] = \"COLON\";\n charset[charset[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n charset[charset[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n charset[charset[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n charset[charset[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n charset[charset[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n charset[charset[\"COMMERCIAL_AT\"] = 64] = \"COMMERCIAL_AT\";\n charset[charset[\"LATIN_CAPITAL_LETTER_A\"] = 65] = \"LATIN_CAPITAL_LETTER_A\";\n charset[charset[\"LATIN_CAPITAL_LETTER_B\"] = 66] = \"LATIN_CAPITAL_LETTER_B\";\n charset[charset[\"LATIN_CAPITAL_LETTER_C\"] = 67] = \"LATIN_CAPITAL_LETTER_C\";\n charset[charset[\"LATIN_CAPITAL_LETTER_D\"] = 68] = \"LATIN_CAPITAL_LETTER_D\";\n charset[charset[\"LATIN_CAPITAL_LETTER_E\"] = 69] = \"LATIN_CAPITAL_LETTER_E\";\n charset[charset[\"LATIN_CAPITAL_LETTER_F\"] = 70] = \"LATIN_CAPITAL_LETTER_F\";\n charset[charset[\"LATIN_CAPITAL_LETTER_G\"] = 71] = \"LATIN_CAPITAL_LETTER_G\";\n charset[charset[\"LATIN_CAPITAL_LETTER_H\"] = 72] = \"LATIN_CAPITAL_LETTER_H\";\n charset[charset[\"LATIN_CAPITAL_LETTER_I\"] = 73] = \"LATIN_CAPITAL_LETTER_I\";\n charset[charset[\"LATIN_CAPITAL_LETTER_J\"] = 74] = \"LATIN_CAPITAL_LETTER_J\";\n charset[charset[\"LATIN_CAPITAL_LETTER_K\"] = 75] = \"LATIN_CAPITAL_LETTER_K\";\n charset[charset[\"LATIN_CAPITAL_LETTER_L\"] = 76] = \"LATIN_CAPITAL_LETTER_L\";\n charset[charset[\"LATIN_CAPITAL_LETTER_M\"] = 77] = \"LATIN_CAPITAL_LETTER_M\";\n charset[charset[\"LATIN_CAPITAL_LETTER_N\"] = 78] = \"LATIN_CAPITAL_LETTER_N\";\n charset[charset[\"LATIN_CAPITAL_LETTER_O\"] = 79] = \"LATIN_CAPITAL_LETTER_O\";\n charset[charset[\"LATIN_CAPITAL_LETTER_P\"] = 80] = \"LATIN_CAPITAL_LETTER_P\";\n charset[charset[\"LATIN_CAPITAL_LETTER_Q\"] = 81] = \"LATIN_CAPITAL_LETTER_Q\";\n charset[charset[\"LATIN_CAPITAL_LETTER_R\"] = 82] = \"LATIN_CAPITAL_LETTER_R\";\n charset[charset[\"LATIN_CAPITAL_LETTER_S\"] = 83] = \"LATIN_CAPITAL_LETTER_S\";\n charset[charset[\"LATIN_CAPITAL_LETTER_T\"] = 84] = \"LATIN_CAPITAL_LETTER_T\";\n charset[charset[\"LATIN_CAPITAL_LETTER_U\"] = 85] = \"LATIN_CAPITAL_LETTER_U\";\n charset[charset[\"LATIN_CAPITAL_LETTER_V\"] = 86] = \"LATIN_CAPITAL_LETTER_V\";\n charset[charset[\"LATIN_CAPITAL_LETTER_W\"] = 87] = \"LATIN_CAPITAL_LETTER_W\";\n charset[charset[\"LATIN_CAPITAL_LETTER_X\"] = 88] = \"LATIN_CAPITAL_LETTER_X\";\n charset[charset[\"LATIN_CAPITAL_LETTER_Y\"] = 89] = \"LATIN_CAPITAL_LETTER_Y\";\n charset[charset[\"LATIN_CAPITAL_LETTER_Z\"] = 90] = \"LATIN_CAPITAL_LETTER_Z\";\n charset[charset[\"LEFT_SQUARE_BRACKET\"] = 91] = \"LEFT_SQUARE_BRACKET\";\n charset[charset[\"REVERSE_SOLIDUS\"] = 92] = \"REVERSE_SOLIDUS\";\n charset[charset[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n charset[charset[\"CIRCUMFLEX_ACCENT\"] = 94] = \"CIRCUMFLEX_ACCENT\";\n charset[charset[\"LOW_LINE\"] = 95] = \"LOW_LINE\";\n charset[charset[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n charset[charset[\"LATIN_SMALL_LETTER_A\"] = 97] = \"LATIN_SMALL_LETTER_A\";\n charset[charset[\"LATIN_SMALL_LETTER_B\"] = 98] = \"LATIN_SMALL_LETTER_B\";\n charset[charset[\"LATIN_SMALL_LETTER_C\"] = 99] = \"LATIN_SMALL_LETTER_C\";\n charset[charset[\"LATIN_SMALL_LETTER_D\"] = 100] = \"LATIN_SMALL_LETTER_D\";\n charset[charset[\"LATIN_SMALL_LETTER_E\"] = 101] = \"LATIN_SMALL_LETTER_E\";\n charset[charset[\"LATIN_SMALL_LETTER_F\"] = 102] = \"LATIN_SMALL_LETTER_F\";\n charset[charset[\"LATIN_SMALL_LETTER_G\"] = 103] = \"LATIN_SMALL_LETTER_G\";\n charset[charset[\"LATIN_SMALL_LETTER_H\"] = 104] = \"LATIN_SMALL_LETTER_H\";\n charset[charset[\"LATIN_SMALL_LETTER_I\"] = 105] = \"LATIN_SMALL_LETTER_I\";\n charset[charset[\"LATIN_SMALL_LETTER_J\"] = 106] = \"LATIN_SMALL_LETTER_J\";\n charset[charset[\"LATIN_SMALL_LETTER_K\"] = 107] = \"LATIN_SMALL_LETTER_K\";\n charset[charset[\"LATIN_SMALL_LETTER_L\"] = 108] = \"LATIN_SMALL_LETTER_L\";\n charset[charset[\"LATIN_SMALL_LETTER_M\"] = 109] = \"LATIN_SMALL_LETTER_M\";\n charset[charset[\"LATIN_SMALL_LETTER_N\"] = 110] = \"LATIN_SMALL_LETTER_N\";\n charset[charset[\"LATIN_SMALL_LETTER_O\"] = 111] = \"LATIN_SMALL_LETTER_O\";\n charset[charset[\"LATIN_SMALL_LETTER_P\"] = 112] = \"LATIN_SMALL_LETTER_P\";\n charset[charset[\"LATIN_SMALL_LETTER_Q\"] = 113] = \"LATIN_SMALL_LETTER_Q\";\n charset[charset[\"LATIN_SMALL_LETTER_R\"] = 114] = \"LATIN_SMALL_LETTER_R\";\n charset[charset[\"LATIN_SMALL_LETTER_S\"] = 115] = \"LATIN_SMALL_LETTER_S\";\n charset[charset[\"LATIN_SMALL_LETTER_T\"] = 116] = \"LATIN_SMALL_LETTER_T\";\n charset[charset[\"LATIN_SMALL_LETTER_U\"] = 117] = \"LATIN_SMALL_LETTER_U\";\n charset[charset[\"LATIN_SMALL_LETTER_V\"] = 118] = \"LATIN_SMALL_LETTER_V\";\n charset[charset[\"LATIN_SMALL_LETTER_W\"] = 119] = \"LATIN_SMALL_LETTER_W\";\n charset[charset[\"LATIN_SMALL_LETTER_X\"] = 120] = \"LATIN_SMALL_LETTER_X\";\n charset[charset[\"LATIN_SMALL_LETTER_Y\"] = 121] = \"LATIN_SMALL_LETTER_Y\";\n charset[charset[\"LATIN_SMALL_LETTER_Z\"] = 122] = \"LATIN_SMALL_LETTER_Z\";\n charset[charset[\"LEFT_CURLY_BRACKET\"] = 123] = \"LEFT_CURLY_BRACKET\";\n charset[charset[\"VERTICAL_LINE\"] = 124] = \"VERTICAL_LINE\";\n charset[charset[\"RIGHT_CURLY_BRACKET\"] = 125] = \"RIGHT_CURLY_BRACKET\";\n charset[charset[\"TILDE\"] = 126] = \"TILDE\";\n})(charset || (charset = {}));\n/**\n * The character that each JSON escape sequence stands for, keyed by the byte\n * that follows the backslash. Unicode escapes (`\\uXXXX`) are not in here; the\n * tokenizer resolves those itself.\n */\nexport const escapedSequences = {\n [34 /* charset.QUOTATION_MARK */]: 34 /* charset.QUOTATION_MARK */,\n [92 /* charset.REVERSE_SOLIDUS */]: 92 /* charset.REVERSE_SOLIDUS */,\n [47 /* charset.SOLIDUS */]: 47 /* charset.SOLIDUS */,\n [98 /* charset.LATIN_SMALL_LETTER_B */]: 8 /* charset.BACKSPACE */,\n [102 /* charset.LATIN_SMALL_LETTER_F */]: 12 /* charset.FORM_FEED */,\n [110 /* charset.LATIN_SMALL_LETTER_N */]: 10 /* charset.NEWLINE */,\n [114 /* charset.LATIN_SMALL_LETTER_R */]: 13 /* charset.CARRIAGE_RETURN */,\n [116 /* charset.LATIN_SMALL_LETTER_T */]: 9 /* charset.TAB */,\n};\n//# sourceMappingURL=utf-8.js.map","/**\n * A JSON-compliant tokenizer that turns a utf-8 stream into JSON tokens.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n *\n * const tokenizer = new Tokenizer();\n * tokenizer.onToken = ({ token, value, offset }) => {\n * // process the token\n * };\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * ```\n *\n * @module\n */\nimport { BufferedString, NonBufferedString, } from \"./utils/bufferedString.js\";\nimport TokenType from \"./utils/types/tokenType.js\";\nimport { escapedSequences } from \"./utils/utf-8.js\";\n// Tokenizer States\nvar TokenizerStates;\n(function (TokenizerStates) {\n TokenizerStates[TokenizerStates[\"START\"] = 0] = \"START\";\n TokenizerStates[TokenizerStates[\"ENDED\"] = 1] = \"ENDED\";\n TokenizerStates[TokenizerStates[\"ERROR\"] = 2] = \"ERROR\";\n TokenizerStates[TokenizerStates[\"TRUE1\"] = 3] = \"TRUE1\";\n TokenizerStates[TokenizerStates[\"TRUE2\"] = 4] = \"TRUE2\";\n TokenizerStates[TokenizerStates[\"TRUE3\"] = 5] = \"TRUE3\";\n TokenizerStates[TokenizerStates[\"FALSE1\"] = 6] = \"FALSE1\";\n TokenizerStates[TokenizerStates[\"FALSE2\"] = 7] = \"FALSE2\";\n TokenizerStates[TokenizerStates[\"FALSE3\"] = 8] = \"FALSE3\";\n TokenizerStates[TokenizerStates[\"FALSE4\"] = 9] = \"FALSE4\";\n TokenizerStates[TokenizerStates[\"NULL1\"] = 10] = \"NULL1\";\n TokenizerStates[TokenizerStates[\"NULL2\"] = 11] = \"NULL2\";\n TokenizerStates[TokenizerStates[\"NULL3\"] = 12] = \"NULL3\";\n TokenizerStates[TokenizerStates[\"STRING_DEFAULT\"] = 13] = \"STRING_DEFAULT\";\n TokenizerStates[TokenizerStates[\"STRING_AFTER_BACKSLASH\"] = 14] = \"STRING_AFTER_BACKSLASH\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_1\"] = 15] = \"STRING_UNICODE_DIGIT_1\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_2\"] = 16] = \"STRING_UNICODE_DIGIT_2\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_3\"] = 17] = \"STRING_UNICODE_DIGIT_3\";\n TokenizerStates[TokenizerStates[\"STRING_UNICODE_DIGIT_4\"] = 18] = \"STRING_UNICODE_DIGIT_4\";\n TokenizerStates[TokenizerStates[\"STRING_INCOMPLETE_CHAR\"] = 19] = \"STRING_INCOMPLETE_CHAR\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_INITIAL_MINUS\"] = 20] = \"NUMBER_AFTER_INITIAL_MINUS\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_INITIAL_ZERO\"] = 21] = \"NUMBER_AFTER_INITIAL_ZERO\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_INITIAL_NON_ZERO\"] = 22] = \"NUMBER_AFTER_INITIAL_NON_ZERO\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_FULL_STOP\"] = 23] = \"NUMBER_AFTER_FULL_STOP\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_DECIMAL\"] = 24] = \"NUMBER_AFTER_DECIMAL\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_E\"] = 25] = \"NUMBER_AFTER_E\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_E_AND_SIGN\"] = 26] = \"NUMBER_AFTER_E_AND_SIGN\";\n TokenizerStates[TokenizerStates[\"NUMBER_AFTER_E_AND_DIGIT\"] = 27] = \"NUMBER_AFTER_E_AND_DIGIT\";\n TokenizerStates[TokenizerStates[\"SEPARATOR\"] = 28] = \"SEPARATOR\";\n TokenizerStates[TokenizerStates[\"BOM_OR_START\"] = 29] = \"BOM_OR_START\";\n TokenizerStates[TokenizerStates[\"BOM\"] = 30] = \"BOM\";\n})(TokenizerStates || (TokenizerStates = {}));\nfunction TokenizerStateToString(tokenizerState) {\n return [\n \"START\",\n \"ENDED\",\n \"ERROR\",\n \"TRUE1\",\n \"TRUE2\",\n \"TRUE3\",\n \"FALSE1\",\n \"FALSE2\",\n \"FALSE3\",\n \"FALSE4\",\n \"NULL1\",\n \"NULL2\",\n \"NULL3\",\n \"STRING_DEFAULT\",\n \"STRING_AFTER_BACKSLASH\",\n \"STRING_UNICODE_DIGIT_1\",\n \"STRING_UNICODE_DIGIT_2\",\n \"STRING_UNICODE_DIGIT_3\",\n \"STRING_UNICODE_DIGIT_4\",\n \"STRING_INCOMPLETE_CHAR\",\n \"NUMBER_AFTER_INITIAL_MINUS\",\n \"NUMBER_AFTER_INITIAL_ZERO\",\n \"NUMBER_AFTER_INITIAL_NON_ZERO\",\n \"NUMBER_AFTER_FULL_STOP\",\n \"NUMBER_AFTER_DECIMAL\",\n \"NUMBER_AFTER_E\",\n \"NUMBER_AFTER_E_AND_SIGN\",\n \"NUMBER_AFTER_E_AND_DIGIT\",\n \"SEPARATOR\",\n \"BOM_OR_START\",\n \"BOM\",\n ][tokenizerState];\n}\nconst defaultOpts = {\n stringBufferSize: 0,\n numberBufferSize: 0,\n separator: undefined,\n emitPartialTokens: false,\n};\n/** The error thrown when the tokenizer is misconfigured or hits invalid JSON. */\nexport class TokenizerError extends Error {\n /**\n * @param message What went wrong.\n */\n constructor(message) {\n super(message);\n // Typescript is broken. This is a workaround\n Object.setPrototypeOf(this, TokenizerError.prototype);\n }\n}\n// A non-integer buffer size (e.g. 0.5) silently truncates when passed to\n// `new Uint8Array(size)` (0.5 becomes a *zero-length* buffer) instead of\n// throwing, so every appended byte gets silently dropped rather than\n// buffered -- corrupting the parsed value instead of failing loudly.\nfunction validateBufferSize(name, size) {\n if (size === undefined)\n return;\n if (!Number.isInteger(size) || size < 0) {\n throw new TokenizerError(`Invalid \"${name}\": ${size}. Expected a non-negative integer.`);\n }\n}\n// Byte length of the UTF-8 character starting with `leadByte`. Invalid or\n// continuation lead bytes fall through to 3/4 here and are rejected later by\n// the fatal TextDecoder when the bytes are actually decoded.\nfunction utf8SequenceLength(leadByte) {\n if (leadByte >= 194 && leadByte <= 223)\n return 2;\n if (leadByte <= 239)\n return 3;\n return 4;\n}\n// Index just past the last COMPLETE multi-byte character of the run starting at\n// `start`. Stops at the first ASCII byte, or at a character whose bytes would\n// run past the end of the buffer (a boundary split the caller carries over).\nfunction multiByteRunEnd(buffer, start) {\n let j = start;\n while (j < buffer.length && buffer[j] >= 128) {\n const seqLength = utf8SequenceLength(buffer[j]);\n if (j + seqLength > buffer.length)\n break; // split across the chunk boundary\n j += seqLength;\n }\n return j;\n}\n/**\n * A JSON-compliant tokenizer that turns a utf-8 stream into JSON tokens.\n *\n * Data is pushed in with {@linkcode Tokenizer.write} and the resulting tokens\n * come back through the {@linkcode Tokenizer.onToken} callback, which the user\n * is expected to override. Feed the tokens to a `TokenParser` to get JSON\n * values back, or use a `JSONParser`, which chains both.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n *\n * const tokenizer = new Tokenizer({ separator: \"\\n\" });\n * tokenizer.onToken = ({ token, value, offset }) => {\n * // process the token\n * };\n * tokenizer.onError = (err) => console.error(err);\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * tokenizer.end();\n * ```\n */\nexport default class Tokenizer {\n /**\n * @param opts How to tokenize. See {@linkcode TokenizerOptions}.\n */\n constructor(opts) {\n this.state = 29 /* TokenizerStates.BOM_OR_START */;\n this.bomIndex = 0;\n this.separatorIndex = 0;\n this.escapedCharsByteLength = 0;\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.char_split_buffer = new Uint8Array(4); // for rebuilding chars split before boundary is reached\n this.encoder = new TextEncoder();\n this.offset = -1;\n this.streamByteLength = 0; // Total bytes consumed across all write() calls before the current one\n opts = Object.assign(Object.assign({}, defaultOpts), opts);\n validateBufferSize(\"stringBufferSize\", opts.stringBufferSize);\n validateBufferSize(\"numberBufferSize\", opts.numberBufferSize);\n this.emitPartialTokens = opts.emitPartialTokens === true;\n this.bufferedString =\n opts.stringBufferSize && opts.stringBufferSize > 4\n ? new BufferedString(opts.stringBufferSize)\n : new NonBufferedString();\n this.bufferedNumber =\n opts.numberBufferSize && opts.numberBufferSize > 0\n ? new BufferedString(opts.numberBufferSize)\n : new NonBufferedString();\n this.separator = opts.separator;\n this.separatorBytes = opts.separator\n ? this.encoder.encode(opts.separator)\n : undefined;\n }\n /** Whether the tokenizer is ended, and thus no longer accepting data. */\n get isEnded() {\n return this.state === 1 /* TokenizerStates.ENDED */;\n }\n // Appends the code unit decoded from one \\uXXXX escape, matching\n // JSON.parse's handling of surrogates: a valid high/low surrogate pair\n // combines into one character; an unpaired high or low surrogate is kept\n // as a raw UTF-16 code unit rather than replaced or dropped (JS strings\n // are free to contain lone surrogates; only encoding them as UTF-8 bytes\n // is lossy, which is why appendCharCode -- not the encoder -- is used for\n // them).\n appendUnicodeCodeUnit(intVal) {\n if (this.highSurrogate !== undefined) {\n if (intVal >= 0xdc00 && intVal <= 0xdfff) {\n // <56320,57343> - valid low surrogate: combine with the pending\n // high surrogate into a single character.\n const unicodeString = String.fromCharCode(this.highSurrogate, intVal);\n const unicodeBuffer = this.encoder.encode(unicodeString);\n this.bufferedString.appendBuf(unicodeBuffer);\n // len(\\u0000)=6 minus the fact you're appending len(buf)\n this.escapedCharsByteLength += 6 - unicodeBuffer.byteLength;\n this.highSurrogate = undefined;\n return;\n }\n // Not a matching low surrogate: the pending high surrogate stands on\n // its own, and intVal is processed independently below.\n this.flushPendingHighSurrogate();\n }\n if (intVal >= 0xd800 && intVal <= 0xdbff) {\n // <55296,56319> - high surrogate: defer until we know whether a\n // matching low surrogate follows.\n this.highSurrogate = intVal;\n this.escapedCharsByteLength += 6;\n return;\n }\n if (intVal >= 0xdc00 && intVal <= 0xdfff) {\n // <56320,57343> - lone low surrogate with no preceding high\n // surrogate: keep as a raw code unit.\n this.bufferedString.appendCharCode(intVal);\n this.escapedCharsByteLength += 6;\n return;\n }\n const unicodeString = String.fromCharCode(intVal);\n const unicodeBuffer = this.encoder.encode(unicodeString);\n this.bufferedString.appendBuf(unicodeBuffer);\n // len(\\u0000)=6 minus the fact you're appending len(buf)\n this.escapedCharsByteLength += 6 - unicodeBuffer.byteLength;\n }\n flushPendingHighSurrogate() {\n if (this.highSurrogate !== undefined) {\n this.bufferedString.appendCharCode(this.highSurrogate);\n this.highSurrogate = undefined;\n }\n }\n // Stash the leading bytes of a multi-byte character split across the chunk\n // boundary; STRING_INCOMPLETE_CHAR completes it from the next chunk.\n startIncompleteChar(buffer, start) {\n this.bytes_in_sequence = utf8SequenceLength(buffer[start]);\n this.bytes_remaining = start + this.bytes_in_sequence - buffer.length;\n this.char_split_buffer.set(buffer.subarray(start));\n this.state = 19 /* TokenizerStates.STRING_INCOMPLETE_CHAR */;\n }\n /**\n * Pushes the next chunk of the JSON stream into the tokenizer.\n *\n * Tokenizing happens synchronously, so every token in `input` is emitted\n * through {@linkcode Tokenizer.onToken} before this returns. A chunk may end\n * anywhere, including in the middle of a multi-byte character; the rest of it\n * is picked up from the next chunk.\n *\n * @param input The chunk to tokenize: a string, a `TypedArray`, or any\n * iterable of utf-8 byte values.\n * @throws {TokenizerError} If the data is not valid JSON and no\n * {@linkcode Tokenizer.onError} callback has been set.\n */\n write(input) {\n try {\n let buffer;\n if (input instanceof Uint8Array) {\n buffer = input;\n }\n else if (typeof input === \"string\") {\n if (this.pendingStringSurrogate !== undefined) {\n input = this.pendingStringSurrogate + input;\n this.pendingStringSurrogate = undefined;\n }\n const lastCharCode = input.charCodeAt(input.length - 1);\n if (lastCharCode >= 0xd800 && lastCharCode <= 0xdbff) {\n // Lone high surrogate at the very end of this chunk: hold it back\n // instead of encoding it (and corrupting it into U+FFFD) alone,\n // in case the next chunk supplies its matching low surrogate.\n this.pendingStringSurrogate = input[input.length - 1];\n input = input.slice(0, -1);\n }\n buffer = this.encoder.encode(input);\n }\n else if (ArrayBuffer.isView(input)) {\n buffer = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n else if (input !== null &&\n typeof input === \"object\" &&\n typeof input[Symbol.iterator] === \"function\") {\n // Any Iterable<number>, not just literal Arrays (e.g. Set, Map\n // values(), a generator) -- matching the public write() signature,\n // which already types `input` as Iterable<number> | string.\n buffer = Uint8Array.from(input);\n }\n else {\n throw new TypeError(\"Unexpected type. The `write` function only accepts Iterables (e.g. Arrays, Sets, Generators), TypedArrays and Strings.\");\n }\n for (let i = 0; i < buffer.length; i += 1) {\n const n = buffer[i]; // get current byte from buffer\n switch (this.state) {\n // @ts-expect-error fall through case\n case 29 /* TokenizerStates.BOM_OR_START */:\n if (n === 0xef) {\n this.bom = [0xef, 0xbb, 0xbf];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n if (input instanceof Uint16Array) {\n if (n === 0xfe) {\n this.bom = [0xfe, 0xff];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n if (n === 0xff) {\n this.bom = [0xff, 0xfe];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n }\n if (input instanceof Uint32Array) {\n if (n === 0x00) {\n this.bom = [0x00, 0x00, 0xfe, 0xff];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n if (n === 0xff) {\n this.bom = [0xff, 0xfe, 0x00, 0x00];\n this.bomIndex += 1;\n this.state = 30 /* TokenizerStates.BOM */;\n continue;\n }\n }\n case 0 /* TokenizerStates.START */:\n this.offset += 1;\n if (this.separatorBytes && n === this.separatorBytes[0]) {\n if (this.separatorBytes.length === 1) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.SEPARATOR,\n value: this.separator,\n offset: this.offset + this.separatorBytes.length - 1,\n });\n continue;\n }\n this.state = 28 /* TokenizerStates.SEPARATOR */;\n continue;\n }\n if (n === 32 /* charset.SPACE */ ||\n n === 10 /* charset.NEWLINE */ ||\n n === 13 /* charset.CARRIAGE_RETURN */ ||\n n === 9 /* charset.TAB */) {\n // whitespace\n continue;\n }\n if (n === 123 /* charset.LEFT_CURLY_BRACKET */) {\n this.onToken({\n token: TokenType.LEFT_BRACE,\n value: \"{\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 125 /* charset.RIGHT_CURLY_BRACKET */) {\n this.onToken({\n token: TokenType.RIGHT_BRACE,\n value: \"}\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 91 /* charset.LEFT_SQUARE_BRACKET */) {\n this.onToken({\n token: TokenType.LEFT_BRACKET,\n value: \"[\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 93 /* charset.RIGHT_SQUARE_BRACKET */) {\n this.onToken({\n token: TokenType.RIGHT_BRACKET,\n value: \"]\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 58 /* charset.COLON */) {\n this.onToken({\n token: TokenType.COLON,\n value: \":\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 44 /* charset.COMMA */) {\n this.onToken({\n token: TokenType.COMMA,\n value: \",\",\n offset: this.offset,\n });\n continue;\n }\n if (n === 116 /* charset.LATIN_SMALL_LETTER_T */) {\n this.state = 3 /* TokenizerStates.TRUE1 */;\n continue;\n }\n if (n === 102 /* charset.LATIN_SMALL_LETTER_F */) {\n this.state = 6 /* TokenizerStates.FALSE1 */;\n continue;\n }\n if (n === 110 /* charset.LATIN_SMALL_LETTER_N */) {\n this.state = 10 /* TokenizerStates.NULL1 */;\n continue;\n }\n if (n === 34 /* charset.QUOTATION_MARK */) {\n this.bufferedString.reset();\n this.escapedCharsByteLength = 0;\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n if (n >= 49 /* charset.DIGIT_ONE */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */;\n continue;\n }\n if (n === 48 /* charset.DIGIT_ZERO */) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */;\n continue;\n }\n if (n === 45 /* charset.HYPHEN_MINUS */) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = 20 /* TokenizerStates.NUMBER_AFTER_INITIAL_MINUS */;\n continue;\n }\n break;\n // STRING\n case 13 /* TokenizerStates.STRING_DEFAULT */:\n if (n === 34 /* charset.QUOTATION_MARK */) {\n this.flushPendingHighSurrogate();\n const string = this.bufferedString.toString();\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.STRING,\n value: string,\n offset: this.offset,\n });\n this.offset +=\n this.escapedCharsByteLength +\n this.bufferedString.byteLength +\n 1;\n continue;\n }\n if (n === 92 /* charset.REVERSE_SOLIDUS */) {\n this.state = 14 /* TokenizerStates.STRING_AFTER_BACKSLASH */;\n continue;\n }\n if (n >= 128) {\n this.flushPendingHighSurrogate();\n // Decode the whole run of complete multi-byte characters in one\n // TextDecoder call, rather than one character at a time -- much\n // faster for multi-byte text (CJK/emoji). ASCII stays on the\n // per-character appendChar path below.\n const runEnd = multiByteRunEnd(buffer, i);\n if (runEnd > i) {\n this.bufferedString.appendBuf(buffer, i, runEnd);\n i = runEnd - 1; // the for-loop's i += 1 lands on runEnd\n }\n // A character straddling the chunk boundary is carried over to\n // the next chunk via STRING_INCOMPLETE_CHAR.\n if (runEnd < buffer.length && buffer[runEnd] >= 128) {\n this.startIncompleteChar(buffer, runEnd);\n i = buffer.length - 1;\n }\n continue;\n }\n if (n >= 32 /* charset.SPACE */) {\n this.flushPendingHighSurrogate();\n let j = i;\n while (j < buffer.length) {\n const b = buffer[j];\n if (b < 32 /* charset.SPACE */ ||\n b >= 128 ||\n b === 34 /* charset.QUOTATION_MARK */ ||\n b === 92 /* charset.REVERSE_SOLIDUS */)\n break;\n j += 1;\n }\n // appendBuf is one TextDecoder call: worth it only once the run is\n // long enough to amortize that fixed cost. Short strings (keys,\n // ids) dominate real JSON, so append those char-by-char instead --\n // always-appendBuf regresses key/record-heavy JSON ~12%.\n if (j - i >= 16) {\n this.bufferedString.appendBuf(buffer, i, j);\n }\n else {\n for (let k = i; k < j; k += 1)\n this.bufferedString.appendChar(buffer[k]);\n }\n i = j - 1;\n continue;\n }\n break;\n case 19 /* TokenizerStates.STRING_INCOMPLETE_CHAR */: {\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n // The rest of the sequence might still not be complete if this chunk is smaller\n // than the number of bytes still missing (e.g. one byte at a time), so only\n // consume what's actually available and keep waiting otherwise.\n const available = Math.min(this.bytes_remaining, buffer.length - i);\n this.char_split_buffer.set(buffer.subarray(i, i + available), this.bytes_in_sequence - this.bytes_remaining);\n this.bytes_remaining -= available;\n if (this.bytes_remaining > 0) {\n i = buffer.length - 1;\n continue;\n }\n this.bufferedString.appendBuf(this.char_split_buffer, 0, this.bytes_in_sequence);\n i += available - 1;\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n case 14 /* TokenizerStates.STRING_AFTER_BACKSLASH */: {\n const controlChar = escapedSequences[n];\n if (controlChar) {\n this.flushPendingHighSurrogate();\n this.bufferedString.appendChar(controlChar);\n this.escapedCharsByteLength += 1; // len(\\\")=2 minus the fact you're appending len(controlChar)=1\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n if (n === 117 /* charset.LATIN_SMALL_LETTER_U */) {\n this.unicode = \"\";\n this.state = 15 /* TokenizerStates.STRING_UNICODE_DIGIT_1 */;\n continue;\n }\n break;\n }\n case 15 /* TokenizerStates.STRING_UNICODE_DIGIT_1 */:\n case 16 /* TokenizerStates.STRING_UNICODE_DIGIT_2 */:\n case 17 /* TokenizerStates.STRING_UNICODE_DIGIT_3 */:\n if ((n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) ||\n (n >= 65 /* charset.LATIN_CAPITAL_LETTER_A */ &&\n n <= 70 /* charset.LATIN_CAPITAL_LETTER_F */) ||\n (n >= 97 /* charset.LATIN_SMALL_LETTER_A */ &&\n n <= 102 /* charset.LATIN_SMALL_LETTER_F */)) {\n this.unicode += String.fromCharCode(n);\n this.state += 1;\n continue;\n }\n break;\n case 18 /* TokenizerStates.STRING_UNICODE_DIGIT_4 */:\n if ((n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) ||\n (n >= 65 /* charset.LATIN_CAPITAL_LETTER_A */ &&\n n <= 70 /* charset.LATIN_CAPITAL_LETTER_F */) ||\n (n >= 97 /* charset.LATIN_SMALL_LETTER_A */ &&\n n <= 102 /* charset.LATIN_SMALL_LETTER_F */)) {\n const intVal = parseInt(this.unicode + String.fromCharCode(n), 16);\n this.appendUnicodeCodeUnit(intVal);\n this.state = 13 /* TokenizerStates.STRING_DEFAULT */;\n continue;\n }\n break;\n // Number\n case 20 /* TokenizerStates.NUMBER_AFTER_INITIAL_MINUS */:\n if (n === 48 /* charset.DIGIT_ZERO */) {\n this.bufferedNumber.appendChar(n);\n this.state = 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */;\n continue;\n }\n if (n >= 49 /* charset.DIGIT_ONE */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n this.state = 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */;\n continue;\n }\n break;\n case 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */:\n if (n === 46 /* charset.FULL_STOP */) {\n this.bufferedNumber.appendChar(n);\n this.state = 23 /* TokenizerStates.NUMBER_AFTER_FULL_STOP */;\n continue;\n }\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */ ||\n n === 69 /* charset.LATIN_CAPITAL_LETTER_E */) {\n this.bufferedNumber.appendChar(n);\n this.state = 25 /* TokenizerStates.NUMBER_AFTER_E */;\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n case 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n if (n === 46 /* charset.FULL_STOP */) {\n this.bufferedNumber.appendChar(n);\n this.state = 23 /* TokenizerStates.NUMBER_AFTER_FULL_STOP */;\n continue;\n }\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */ ||\n n === 69 /* charset.LATIN_CAPITAL_LETTER_E */) {\n this.bufferedNumber.appendChar(n);\n this.state = 25 /* TokenizerStates.NUMBER_AFTER_E */;\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n case 23 /* TokenizerStates.NUMBER_AFTER_FULL_STOP */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n this.state = 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */;\n continue;\n }\n break;\n case 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */ ||\n n === 69 /* charset.LATIN_CAPITAL_LETTER_E */) {\n this.bufferedNumber.appendChar(n);\n this.state = 25 /* TokenizerStates.NUMBER_AFTER_E */;\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n // @ts-expect-error fall through case\n case 25 /* TokenizerStates.NUMBER_AFTER_E */:\n if (n === 43 /* charset.PLUS_SIGN */ || n === 45 /* charset.HYPHEN_MINUS */) {\n this.bufferedNumber.appendChar(n);\n this.state = 26 /* TokenizerStates.NUMBER_AFTER_E_AND_SIGN */;\n continue;\n }\n case 26 /* TokenizerStates.NUMBER_AFTER_E_AND_SIGN */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n this.state = 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */;\n continue;\n }\n break;\n case 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */:\n if (n >= 48 /* charset.DIGIT_ZERO */ && n <= 57 /* charset.DIGIT_NINE */) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n i -= 1;\n this.state = 0 /* TokenizerStates.START */;\n this.emitNumber();\n continue;\n // TRUE\n case 3 /* TokenizerStates.TRUE1 */:\n if (n === 114 /* charset.LATIN_SMALL_LETTER_R */) {\n this.state = 4 /* TokenizerStates.TRUE2 */;\n continue;\n }\n break;\n case 4 /* TokenizerStates.TRUE2 */:\n if (n === 117 /* charset.LATIN_SMALL_LETTER_U */) {\n this.state = 5 /* TokenizerStates.TRUE3 */;\n continue;\n }\n break;\n case 5 /* TokenizerStates.TRUE3 */:\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.TRUE,\n value: true,\n offset: this.offset,\n });\n this.offset += 3;\n continue;\n }\n break;\n // FALSE\n case 6 /* TokenizerStates.FALSE1 */:\n if (n === 97 /* charset.LATIN_SMALL_LETTER_A */) {\n this.state = 7 /* TokenizerStates.FALSE2 */;\n continue;\n }\n break;\n case 7 /* TokenizerStates.FALSE2 */:\n if (n === 108 /* charset.LATIN_SMALL_LETTER_L */) {\n this.state = 8 /* TokenizerStates.FALSE3 */;\n continue;\n }\n break;\n case 8 /* TokenizerStates.FALSE3 */:\n if (n === 115 /* charset.LATIN_SMALL_LETTER_S */) {\n this.state = 9 /* TokenizerStates.FALSE4 */;\n continue;\n }\n break;\n case 9 /* TokenizerStates.FALSE4 */:\n if (n === 101 /* charset.LATIN_SMALL_LETTER_E */) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.FALSE,\n value: false,\n offset: this.offset,\n });\n this.offset += 4;\n continue;\n }\n break;\n // NULL\n case 10 /* TokenizerStates.NULL1 */:\n if (n === 117 /* charset.LATIN_SMALL_LETTER_U */) {\n this.state = 11 /* TokenizerStates.NULL2 */;\n continue;\n }\n break;\n case 11 /* TokenizerStates.NULL2 */:\n if (n === 108 /* charset.LATIN_SMALL_LETTER_L */) {\n this.state = 12 /* TokenizerStates.NULL3 */;\n continue;\n }\n break;\n case 12 /* TokenizerStates.NULL3 */:\n if (n === 108 /* charset.LATIN_SMALL_LETTER_L */) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.NULL,\n value: null,\n offset: this.offset,\n });\n this.offset += 3;\n continue;\n }\n break;\n case 28 /* TokenizerStates.SEPARATOR */:\n this.separatorIndex += 1;\n if (!this.separatorBytes ||\n n !== this.separatorBytes[this.separatorIndex]) {\n break;\n }\n if (this.separatorIndex === this.separatorBytes.length - 1) {\n this.state = 0 /* TokenizerStates.START */;\n this.onToken({\n token: TokenType.SEPARATOR,\n value: this.separator,\n offset: this.offset + this.separatorIndex,\n });\n this.separatorIndex = 0;\n }\n continue;\n // BOM support\n case 30 /* TokenizerStates.BOM */:\n if (n === this.bom[this.bomIndex]) {\n if (this.bomIndex === this.bom.length - 1) {\n this.state = 0 /* TokenizerStates.START */;\n this.bom = undefined;\n this.bomIndex = 0;\n continue;\n }\n this.bomIndex += 1;\n continue;\n }\n break;\n case 1 /* TokenizerStates.ENDED */:\n if (n === 32 /* charset.SPACE */ ||\n n === 10 /* charset.NEWLINE */ ||\n n === 13 /* charset.CARRIAGE_RETURN */ ||\n n === 9 /* charset.TAB */) {\n // whitespace\n continue;\n }\n }\n throw new TokenizerError(`Unexpected \"${String.fromCharCode(n)}\" at chunk position \"${i}\" (absolute position \"${this.streamByteLength + i}\") in state ${TokenizerStateToString(this.state)}`);\n }\n this.streamByteLength += buffer.length;\n if (this.emitPartialTokens) {\n switch (this.state) {\n case 3 /* TokenizerStates.TRUE1 */:\n case 4 /* TokenizerStates.TRUE2 */:\n case 5 /* TokenizerStates.TRUE3 */:\n this.onToken({\n token: TokenType.TRUE,\n value: true,\n offset: this.offset,\n partial: true,\n });\n break;\n case 6 /* TokenizerStates.FALSE1 */:\n case 7 /* TokenizerStates.FALSE2 */:\n case 8 /* TokenizerStates.FALSE3 */:\n case 9 /* TokenizerStates.FALSE4 */:\n this.onToken({\n token: TokenType.FALSE,\n value: false,\n offset: this.offset,\n partial: true,\n });\n break;\n case 10 /* TokenizerStates.NULL1 */:\n case 11 /* TokenizerStates.NULL2 */:\n case 12 /* TokenizerStates.NULL3 */:\n this.onToken({\n token: TokenType.NULL,\n value: null,\n offset: this.offset,\n partial: true,\n });\n break;\n case 13 /* TokenizerStates.STRING_DEFAULT */: {\n const string = this.bufferedString.toString();\n this.onToken({\n token: TokenType.STRING,\n value: string,\n offset: this.offset,\n partial: true,\n });\n break;\n }\n case 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */:\n case 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */:\n case 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */:\n case 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */:\n try {\n this.onToken({\n token: TokenType.NUMBER,\n value: this.parseNumber(this.bufferedNumber.toString()),\n offset: this.offset,\n partial: true,\n });\n }\n catch (_a) {\n // Number couldn't be parsed. Do nothing.\n }\n }\n }\n }\n catch (err) {\n this.error(err);\n }\n }\n emitNumber() {\n this.onToken({\n token: TokenType.NUMBER,\n value: this.parseNumber(this.bufferedNumber.toString()),\n offset: this.offset,\n });\n this.offset += this.bufferedNumber.byteLength - 1;\n }\n /**\n * Turns the characters of a JSON number into a JavaScript value.\n *\n * Equivalent to `Number(numberStr)`. Override it to handle numbers that a\n * JavaScript number can't represent, for example by keeping them as strings.\n *\n * @param numberStr The number, as it appeared in the JSON stream.\n * @returns The parsed number.\n */\n parseNumber(numberStr) {\n return Number(numberStr);\n }\n /**\n * Puts the tokenizer in an error state and reports `err` through\n * {@linkcode Tokenizer.onError}. The tokenizer can't be used afterwards.\n *\n * @param err What went wrong.\n */\n error(err) {\n if (this.state !== 1 /* TokenizerStates.ENDED */) {\n this.state = 2 /* TokenizerStates.ERROR */;\n }\n this.onError(err);\n }\n /**\n * Signals that the stream is over, flushing any number that was still being\n * tokenized and then ending the tokenizer, which can't be used afterwards.\n *\n * @throws {TokenizerError} If the stream ended in the middle of a token and no\n * {@linkcode Tokenizer.onError} callback has been set.\n */\n end() {\n switch (this.state) {\n case 21 /* TokenizerStates.NUMBER_AFTER_INITIAL_ZERO */:\n case 22 /* TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO */:\n case 24 /* TokenizerStates.NUMBER_AFTER_DECIMAL */:\n case 27 /* TokenizerStates.NUMBER_AFTER_E_AND_DIGIT */:\n this.state = 1 /* TokenizerStates.ENDED */;\n this.emitNumber();\n this.onEnd();\n break;\n case 29 /* TokenizerStates.BOM_OR_START */:\n case 0 /* TokenizerStates.START */:\n case 2 /* TokenizerStates.ERROR */:\n this.state = 1 /* TokenizerStates.ENDED */;\n this.onEnd();\n break;\n default:\n this.error(new TokenizerError(`Tokenizer ended in the middle of a token (state: ${TokenizerStateToString(this.state)}). Either not all the data was received or the data was invalid.`));\n }\n }\n /**\n * Called with every token found in the stream. Override it to consume them;\n * by default it throws.\n *\n * @param parsedToken The token and where it was found.\n */\n // biome-ignore lint/correctness/noUnusedFunctionParameters: override point; the parameter is part of the public signature\n onToken(parsedToken) {\n // Override me\n throw new TokenizerError('Can\\'t emit tokens before the \"onToken\" callback has been set up.');\n }\n /**\n * Called when the data can't be tokenized. Override it to handle errors\n * asynchronously; by default it throws, so the error surfaces out of the\n * {@linkcode Tokenizer.write} or {@linkcode Tokenizer.end} call that caused it.\n *\n * @param err What went wrong.\n */\n onError(err) {\n // Override me\n throw err;\n }\n /** Called once the tokenizer has ended. Override it to react to that; by default it does nothing. */\n onEnd() {\n // Override me\n }\n}\n//# sourceMappingURL=tokenizer.js.map","/**\n * A parser that assembles the tokens emitted by the tokenizer into JSON values.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n * import TokenParser from \"@streamparser/json/tokenparser.js\";\n *\n * const tokenizer = new Tokenizer();\n * const tokenParser = new TokenParser({ paths: [\"$.*\"] });\n * tokenizer.onToken = tokenParser.write.bind(tokenParser);\n * tokenParser.onValue = ({ value }) => {\n * // process the value\n * };\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * ```\n *\n * @module\n */\nimport TokenType from \"./utils/types/tokenType.js\";\n// Parser States\nvar TokenParserState;\n(function (TokenParserState) {\n TokenParserState[TokenParserState[\"VALUE\"] = 0] = \"VALUE\";\n TokenParserState[TokenParserState[\"KEY\"] = 1] = \"KEY\";\n TokenParserState[TokenParserState[\"COLON\"] = 2] = \"COLON\";\n TokenParserState[TokenParserState[\"COMMA\"] = 3] = \"COMMA\";\n TokenParserState[TokenParserState[\"ENDED\"] = 4] = \"ENDED\";\n TokenParserState[TokenParserState[\"ERROR\"] = 5] = \"ERROR\";\n TokenParserState[TokenParserState[\"SEPARATOR\"] = 6] = \"SEPARATOR\";\n})(TokenParserState || (TokenParserState = {}));\nfunction TokenParserStateToString(state) {\n return [\"VALUE\", \"KEY\", \"COLON\", \"COMMA\", \"ENDED\", \"ERROR\", \"SEPARATOR\"][state];\n}\n// Plain bracket assignment invokes the inherited `Object.prototype.__proto__`\n// setter for that one key name, letting a \"__proto__\" key in the input alter\n// obj's actual prototype instead of becoming a property of obj. Only that key\n// needs the safe (but slower) Object.defineProperty path -- every other key,\n// i.e. the overwhelming majority, keeps the fast, JIT-friendly assignment.\nfunction setProperty(obj, key, value) {\n if (key === \"__proto__\") {\n Object.defineProperty(obj, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n return;\n }\n obj[key] = value;\n}\nconst defaultOpts = {\n paths: undefined,\n keepStack: true,\n separator: undefined,\n emitPartialValues: false,\n};\n/** The error thrown when the token parser is misconfigured or gets an unexpected token. */\nexport class TokenParserError extends Error {\n /**\n * @param message What went wrong.\n */\n constructor(message) {\n super(message);\n // Typescript is broken. This is a workaround\n Object.setPrototypeOf(this, TokenParserError.prototype);\n }\n}\n/**\n * A parser that assembles the tokens emitted by a tokenizer into JSON values.\n *\n * Tokens are pushed in with {@linkcode TokenParser.write} and the resulting\n * values come back through the {@linkcode TokenParser.onValue} callback, which\n * the user is expected to override. Values are emitted innermost first, as soon\n * as each one is complete, and can be narrowed down to the ones of interest with\n * the `paths` option.\n *\n * @example\n * ```ts\n * import Tokenizer from \"@streamparser/json/tokenizer.js\";\n * import TokenParser from \"@streamparser/json/tokenparser.js\";\n *\n * const tokenizer = new Tokenizer();\n * const tokenParser = new TokenParser();\n * tokenizer.onToken = tokenParser.write.bind(tokenParser);\n * tokenParser.onValue = ({ value, key, parent, stack }) => {\n * // process the value\n * };\n *\n * tokenizer.write('{ \"test\": [\"a\"] }');\n * // onValue is called 3 times: \"a\", [\"a\"] and { test: [\"a\"] }\n * ```\n */\nexport default class TokenParser {\n /**\n * @param opts What to emit and how. See {@linkcode TokenParserOptions}.\n * @throws {TokenParserError} If any of the configured `paths` is not a valid selector.\n */\n constructor(opts) {\n this.state = 0 /* TokenParserState.VALUE */;\n this.mode = undefined;\n this.key = undefined;\n this.value = undefined;\n this.stack = [];\n // Tracked explicitly rather than inferred from `value` because keepStack:false\n // deletes emitted properties from `value`, so Object.keys(value).length can no\n // longer be trusted to tell an empty object from one whose members were purged.\n this.memberCount = 0;\n opts = Object.assign(Object.assign({}, defaultOpts), opts);\n if (opts.paths) {\n const root = { children: new Map(), terminal: false };\n // A match-everything selector makes the whole set match everything, which\n // we represent by leaving the trie undefined (as with no paths at all).\n let matchEverything = false;\n for (const path of opts.paths) {\n if (path === undefined || path === \"$*\") {\n matchEverything = true;\n continue;\n }\n if (!path.startsWith(\"$\"))\n throw new TokenParserError(`Invalid selector \"${path}\". Should start with \"$\".`);\n const segments = path.split(\".\").slice(1);\n if (segments.includes(\"\"))\n throw new TokenParserError(`Invalid selector \"${path}\". \"..\" syntax not supported.`);\n let node = root;\n for (const segment of segments) {\n let child = node.children.get(segment);\n if (!child) {\n child = { children: new Map(), terminal: false };\n node.children.set(segment, child);\n }\n node = child;\n }\n node.terminal = true;\n }\n if (!matchEverything)\n this.selectorTrie = root;\n }\n this.keepStack = opts.keepStack || false;\n this.separator = opts.separator;\n if (!opts.emitPartialValues) {\n this.emitPartial = () => { };\n }\n }\n shouldEmit() {\n if (!this.selectorTrie)\n return true;\n return this.matchesSelector(this.selectorTrie, 0);\n }\n // Depth-first walk of the selector trie down the current value's key path:\n // [stack[1].key, ..., stack[n-1].key, this.key] (n = stack.length)\n // A value matches iff some branch reaches a terminal node at the exact depth.\n // Recursion (rather than an explicit frontier) keeps the common single-path\n // walk allocation-free and short-circuits on the first match, like the old\n // rescan did, while collapsing its O(number of selectors) cost to O(depth).\n matchesSelector(node, level) {\n const keyCount = this.stack.length;\n if (level === keyCount)\n return node.terminal;\n const key = level < keyCount - 1 ? this.stack[level + 1].key : this.key;\n // \"*\" matches any key; try it first since it needs no key lookup.\n const wildcard = node.children.get(\"*\");\n if (wildcard && this.matchesSelector(wildcard, level + 1))\n return true;\n // Then a literal match. Resolving the key to a string allocates for numeric\n // array indices, so skip it unless there's a literal child to match.\n const hasLiteralChild = node.children.size > (wildcard ? 1 : 0);\n if (hasLiteralChild) {\n const segment = key === null || key === void 0 ? void 0 : key.toString();\n if (segment !== undefined) {\n const child = node.children.get(segment);\n if (child && this.matchesSelector(child, level + 1))\n return true;\n }\n }\n return false;\n }\n push() {\n this.stack.push({\n key: this.key,\n value: this.value,\n mode: this.mode,\n emit: this.shouldEmit(),\n memberCount: this.memberCount,\n });\n }\n pop() {\n const value = this.value;\n // biome-ignore lint/suspicious/noImplicitAnyLet: assigned via the destructuring assignment below\n let emit;\n ({\n key: this.key,\n value: this.value,\n mode: this.mode,\n emit,\n memberCount: this.memberCount,\n } = this.stack.pop());\n this.state =\n this.mode !== undefined ? 3 /* TokenParserState.COMMA */ : 0 /* TokenParserState.VALUE */;\n this.emit(value, emit);\n }\n emit(value, emit) {\n if (!this.keepStack &&\n this.value &&\n this.stack.every((item) => !item.emit)) {\n if (Array.isArray(this.value)) {\n // Shrinking `.length` drops the slot, unlike `delete`, which only leaves a hole\n this.value.length -= 1;\n }\n else {\n delete this.value[this.key];\n }\n }\n if (emit) {\n this.onValue({\n value: value,\n key: this.key,\n parent: this.value,\n stack: this.stack,\n });\n }\n if (this.stack.length === 0) {\n if (this.separator) {\n this.state = 6 /* TokenParserState.SEPARATOR */;\n }\n else if (this.separator === undefined) {\n this.end();\n }\n // else if separator === '', expect next JSON object.\n }\n }\n emitPartial(value) {\n if (!this.shouldEmit())\n return;\n if (this.state === 1 /* TokenParserState.KEY */) {\n this.onValue({\n value: undefined,\n key: value,\n parent: this.value,\n stack: this.stack,\n partial: true,\n });\n return;\n }\n this.onValue({\n value: value,\n key: this.key,\n parent: this.value,\n stack: this.stack,\n partial: true,\n });\n }\n /** Whether the token parser is ended, and thus no longer accepting tokens. */\n get isEnded() {\n return this.state === 4 /* TokenParserState.ENDED */;\n }\n /**\n * Pushes the next token into the parser.\n *\n * Parsing happens synchronously, so every value that the token completes is\n * emitted through {@linkcode TokenParser.onValue} before this returns.\n *\n * @param parsedTokenInfo The token to process, as emitted by a tokenizer.\n * @throws {TokenParserError} If the token can't appear at this point of the\n * JSON document and no {@linkcode TokenParser.onError} callback has been set.\n */\n write({ token, value, partial, }) {\n try {\n if (partial) {\n if (this.state !== 0 /* TokenParserState.VALUE */ &&\n this.state !== 1 /* TokenParserState.KEY */) {\n throw new TokenParserError(`Unexpected partial ${TokenType[token]} (${JSON.stringify(value)}) in state ${TokenParserStateToString(this.state)}`);\n }\n this.emitPartial(value);\n return;\n }\n if (this.state === 0 /* TokenParserState.VALUE */) {\n if (token === TokenType.STRING ||\n token === TokenType.NUMBER ||\n token === TokenType.TRUE ||\n token === TokenType.FALSE ||\n token === TokenType.NULL) {\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n setProperty(this.value, this.key, value);\n this.state = 3 /* TokenParserState.COMMA */;\n this.memberCount++;\n }\n else if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n this.value.push(value);\n this.state = 3 /* TokenParserState.COMMA */;\n this.memberCount++;\n }\n this.emit(value, this.shouldEmit());\n return;\n }\n if (token === TokenType.LEFT_BRACE) {\n this.memberCount++;\n this.push();\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n const val = {};\n setProperty(this.value, this.key, val);\n this.value = val;\n }\n else if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n const val = {};\n this.value.push(val);\n this.value = val;\n }\n else {\n this.value = {};\n }\n this.mode = 0 /* TokenParserMode.OBJECT */;\n this.state = 1 /* TokenParserState.KEY */;\n this.key = undefined;\n this.memberCount = 0;\n this.emitPartial();\n return;\n }\n if (token === TokenType.LEFT_BRACKET) {\n this.memberCount++;\n this.push();\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n const val = [];\n setProperty(this.value, this.key, val);\n this.value = val;\n }\n else if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n const val = [];\n this.value.push(val);\n this.value = val;\n }\n else {\n this.value = [];\n }\n this.mode = 1 /* TokenParserMode.ARRAY */;\n this.state = 0 /* TokenParserState.VALUE */;\n this.key = 0;\n this.memberCount = 0;\n this.emitPartial();\n return;\n }\n if (this.mode === 1 /* TokenParserMode.ARRAY */ &&\n token === TokenType.RIGHT_BRACKET &&\n this.memberCount === 0) {\n this.pop();\n return;\n }\n }\n if (this.state === 1 /* TokenParserState.KEY */) {\n if (token === TokenType.STRING) {\n this.key = value;\n this.state = 2 /* TokenParserState.COLON */;\n this.emitPartial();\n return;\n }\n if (token === TokenType.RIGHT_BRACE && this.memberCount === 0) {\n this.pop();\n return;\n }\n }\n if (this.state === 2 /* TokenParserState.COLON */) {\n if (token === TokenType.COLON) {\n this.state = 0 /* TokenParserState.VALUE */;\n return;\n }\n }\n if (this.state === 3 /* TokenParserState.COMMA */) {\n if (token === TokenType.COMMA) {\n if (this.mode === 1 /* TokenParserMode.ARRAY */) {\n this.state = 0 /* TokenParserState.VALUE */;\n this.key += 1;\n return;\n }\n /* istanbul ignore else */\n if (this.mode === 0 /* TokenParserMode.OBJECT */) {\n this.state = 1 /* TokenParserState.KEY */;\n return;\n }\n }\n if ((token === TokenType.RIGHT_BRACE &&\n this.mode === 0 /* TokenParserMode.OBJECT */) ||\n (token === TokenType.RIGHT_BRACKET &&\n this.mode === 1 /* TokenParserMode.ARRAY */)) {\n this.pop();\n return;\n }\n }\n if (this.state === 6 /* TokenParserState.SEPARATOR */) {\n if (token === TokenType.SEPARATOR && value === this.separator) {\n this.state = 0 /* TokenParserState.VALUE */;\n return;\n }\n }\n // Edge case in which the separator is just whitespace and it's found in the middle of the JSON\n if (token === TokenType.SEPARATOR &&\n this.state !== 6 /* TokenParserState.SEPARATOR */ &&\n Array.from(value)\n .map((n) => n.charCodeAt(0))\n .every((n) => n === 32 /* charset.SPACE */ ||\n n === 10 /* charset.NEWLINE */ ||\n n === 13 /* charset.CARRIAGE_RETURN */ ||\n n === 9 /* charset.TAB */)) {\n // whitespace\n return;\n }\n throw new TokenParserError(`Unexpected ${TokenType[token]} (${JSON.stringify(value)}) in state ${TokenParserStateToString(this.state)}`);\n }\n catch (err) {\n this.error(err);\n }\n }\n /**\n * Puts the token parser in an error state and reports `err` through\n * {@linkcode TokenParser.onError}. The parser can't be used afterwards.\n *\n * @param err What went wrong.\n */\n error(err) {\n if (this.state !== 4 /* TokenParserState.ENDED */) {\n this.state = 5 /* TokenParserState.ERROR */;\n }\n this.onError(err);\n }\n /**\n * Signals that there are no more tokens, ending the token parser, which can't\n * be used afterwards.\n *\n * @throws {Error} If the JSON document was left half-parsed and no\n * {@linkcode TokenParser.onError} callback has been set.\n */\n end() {\n if ((this.state !== 0 /* TokenParserState.VALUE */ &&\n this.state !== 6 /* TokenParserState.SEPARATOR */) ||\n this.stack.length > 0) {\n this.error(new Error(`Parser ended in mid-parsing (state: ${TokenParserStateToString(this.state)}). Either not all the data was received or the data was invalid.`));\n }\n else {\n this.state = 4 /* TokenParserState.ENDED */;\n this.onEnd();\n }\n }\n /**\n * Called with every value that matches the configured `paths`. Override it to\n * consume them; by default it throws.\n *\n * @param parsedElementInfo The value and where it was found. Its `parent` and\n * `stack` are live references into the parser's in-progress structures, so use\n * `cloneParsedElementInfo` to snapshot them if they need to outlive the call.\n */\n // biome-ignore lint/correctness/noUnusedFunctionParameters: override point; the parameter is part of the public signature\n onValue(parsedElementInfo) {\n // Override me\n throw new TokenParserError('Can\\'t emit data before the \"onValue\" callback has been set up.');\n }\n /**\n * Called when the tokens don't add up to valid JSON. Override it to handle\n * errors asynchronously; by default it throws, so the error surfaces out of the\n * {@linkcode TokenParser.write} or {@linkcode TokenParser.end} call that caused it.\n *\n * @param err What went wrong.\n */\n onError(err) {\n // Override me\n throw err;\n }\n /** Called once the token parser has ended. Override it to react to that; by default it does nothing. */\n onEnd() {\n // Override me\n }\n}\n//# sourceMappingURL=tokenparser.js.map","/**\n * The shape of the token parser's stack, i.e. the chain of containers that a\n * parsed value is nested in.\n *\n * @module\n */\n/** Whether the container being parsed is a JSON object or a JSON array. */\nexport var TokenParserMode;\n(function (TokenParserMode) {\n /** The container is a JSON object, so its members are keyed by property name. */\n TokenParserMode[TokenParserMode[\"OBJECT\"] = 0] = \"OBJECT\";\n /** The container is a JSON array, so its members are keyed by index. */\n TokenParserMode[TokenParserMode[\"ARRAY\"] = 1] = \"ARRAY\";\n})(TokenParserMode || (TokenParserMode = {}));\n//# sourceMappingURL=stackElement.js.map","// ── External Dependencies & Registrations\nimport { Tokenizer, TokenizerError, TokenType } from '@streamparser/json';\n\n// ── DPUse Framework\nimport type { StructureContainerKindId, StructureKindId, StructurePath } from '@dpuse/dpuse-shared';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Walks the tokens of a JSON or JSON Lines stream and reports its structure as it goes: each list and object as it opens\n// and closes, each key and each other value. Index building, browsing and reading rows all share it, so they agree on\n// what the structure is.\nexport interface StructureWalker {\n byteCount: () => number; // Bytes written so far.\n end: () => void; // Ends the stream. Fails with a 'StructureError' if the JSON is cut off.\n write: (input: Uint8Array) => void; // Fails with a 'StructureError' if the JSON is not valid.\n}\n\nexport interface StructureWalkerOptions {\n baseOffset: number; // Where the stream starts in the item, so offsets count from the start of the item.\n isJsonLines: boolean;\n rootPath: StructurePath; // The path of the value the stream starts at, or of the list or object it starts inside.\n startInside: StartInside | undefined; // Set when the stream starts part way through a list or object, rather than at a value.\n}\n\n// Where in a list or object a stream starts, for reading a later page or from a checkpoint. The stream starts at the\n// entry, after the comma before it.\nexport interface StartInside {\n firstIndex: number; // The entries before it, so list items keep their indexes.\n kindId: StructureContainerKindId;\n}\n\nexport interface StructureWalkerHandlers {\n onContainerEnd?: (container: OpenContainer, endOffset: number) => void;\n onContainerStart?: (container: OpenContainer) => void;\n onKey?: (container: OpenContainer, key: string) => void;\n onScalar?: (scalar: ScalarEntry) => void;\n onTokenStart?: (offset: number) => void; // Called before each token, so a value's end can be taken from where the next token starts.\n}\n\nexport interface OpenContainer {\n childCount: number;\n depth: number; // 0 for the value the stream starts at.\n isVirtual: boolean; // Whether the container is one the stream starts inside, or the lines of JSON Lines, which have no opening bracket in the stream.\n key: EntryKey; // Its key in its parent.\n kindId: StructureContainerKindId;\n parent: OpenContainer | undefined;\n path: StructurePath;\n pendingKey: string | undefined; // The key the next value in an object takes.\n positionId: PositionId;\n startOffset: number;\n}\n\nexport type EntryKey = number | string | undefined; // An object entry's key or a list item's index. Undefined for the value the stream starts at.\n\n// Where an open container is in its own grammar, so a token out of place fails rather than skewing the structure.\ntype PositionId = 'afterColon' | 'afterComma' | 'afterKey' | 'afterValue' | 'start';\n\nexport interface ScalarEntry {\n key: EntryKey;\n kindId: Exclude<StructureKindId, StructureContainerKindId>;\n parent: OpenContainer | undefined;\n startOffset: number;\n value: JsonScalar;\n}\n\n// A number as written in the item. JavaScript numbers lose digits past about 16 and turn very large exponents into\n// 'Infinity', so a number is never converted.\nexport interface NumberText {\n readonly numberText: string;\n}\n\nexport type JsonScalar = boolean | NumberText | string | null;\nexport type JsonValue = JsonScalar | JsonValue[] | { [key: string]: JsonValue };\n\n// A syntax error, with the byte in the item where it was found, so the caller can say which line and column it is on.\nexport interface StructureError extends Error {\n offset: number;\n}\n\n// What a walker knows while it reads.\ninterface WalkerState {\n byteCount: number;\n byteOffset: number; // Bytes skipped before the tokenizer, such as a byte order mark, so token offsets still count from the stream's start.\n current: OpenContainer | undefined;\n isRootClosed: boolean;\n isStarted: boolean;\n}\n\n// Everything a token taker needs.\ninterface Walk {\n handlers: StructureWalkerHandlers;\n options: StructureWalkerOptions;\n state: WalkerState;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst BYTE_ORDER_MARK = [0xef, 0xbb, 0xbf];\n\n// What each kind of token does to the structure.\nconst TOKEN_TAKERS: Record<TokenType, (walk: Walk, value: unknown, offset: number) => void> = {\n [TokenType.LEFT_BRACE]: (walk, _value, offset) => {\n openContainer(walk, 'object', offset);\n },\n [TokenType.RIGHT_BRACE]: (walk, _value, offset) => {\n closeContainer(walk, 'object', offset);\n },\n [TokenType.LEFT_BRACKET]: (walk, _value, offset) => {\n openContainer(walk, 'list', offset);\n },\n [TokenType.RIGHT_BRACKET]: (walk, _value, offset) => {\n closeContainer(walk, 'list', offset);\n },\n [TokenType.COLON]: (walk, _value, offset) => {\n takeColon(walk.state, offset);\n },\n [TokenType.COMMA]: (walk, _value, offset) => {\n takeComma(walk.state, offset);\n },\n [TokenType.TRUE]: (walk, _value, offset) => {\n takeScalar(walk, 'boolean', true, offset);\n },\n [TokenType.FALSE]: (walk, _value, offset) => {\n takeScalar(walk, 'boolean', false, offset);\n },\n [TokenType.NULL]: (walk, _value, offset) => {\n takeScalar(walk, 'null', null, offset);\n },\n [TokenType.STRING]: (walk, value, offset) => {\n takeString(walk, value as string, offset);\n },\n [TokenType.NUMBER]: (walk, value, offset) => {\n takeScalar(walk, 'number', value as NumberText, offset);\n },\n [TokenType.SEPARATOR]: () => {\n // A JSON Lines separator carries no structure.\n }\n};\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function createStructureWalker(options: StructureWalkerOptions, handlers: StructureWalkerHandlers): StructureWalker {\n const tokenizer = new Tokenizer(options.isJsonLines ? { separator: '\\n' } : undefined);\n // The tokenizer turns numbers into JavaScript numbers through this method, so replacing it keeps them as written.\n Object.assign(tokenizer, { parseNumber: (numberText: string): NumberText => ({ numberText }) });\n const state: WalkerState = { byteCount: 0, byteOffset: 0, current: undefined, isRootClosed: false, isStarted: false };\n\n // The lines of JSON Lines, or a list or object the stream starts inside, have no opening bracket in the stream.\n const startInside = options.startInside ?? (options.isJsonLines ? { firstIndex: 0, kindId: 'list' as const } : undefined);\n if (startInside != null) {\n const container = constructContainer({ depth: 0, isVirtual: true, key: undefined, kindId: startInside.kindId, parent: undefined, path: options.rootPath, startOffset: options.baseOffset });\n container.childCount = startInside.firstIndex;\n container.positionId = !options.isJsonLines && startInside.firstIndex > 0 ? 'afterComma' : 'start';\n state.current = container;\n handlers.onContainerStart?.(container);\n }\n\n const walk: Walk = { handlers, options, state };\n tokenizer.onToken = ({ offset: tokenOffset, token, value }): void => {\n const offset = options.baseOffset + state.byteOffset + tokenOffset;\n state.isStarted = true;\n handlers.onTokenStart?.(offset);\n TOKEN_TAKERS[token](walk, value, offset);\n };\n\n return {\n byteCount: () => state.byteCount,\n end: (): void => {\n const endOffset = options.baseOffset + state.byteCount;\n runTokenizer(() => {\n tokenizer.end();\n }, options.baseOffset + state.byteOffset);\n if (!options.isJsonLines && !state.isStarted) throw constructStructureError('The JSON is empty', options.baseOffset);\n const isOpen = state.current != null && !(options.isJsonLines && state.current.isVirtual);\n if (isOpen) throw constructStructureError('The JSON ends before it is complete', endOffset);\n if (state.current != null) handlers.onContainerEnd?.(state.current, endOffset); // Only the lines of JSON Lines are still open, and they end with the stream.\n },\n write: (input: Uint8Array): void => {\n let bytes = input;\n const isFirstWrite = state.byteCount === 0;\n state.byteCount += input.length;\n if (isFirstWrite && options.baseOffset === 0 && BYTE_ORDER_MARK.every((byte, index) => bytes[index] === byte)) {\n bytes = bytes.subarray(BYTE_ORDER_MARK.length);\n state.byteOffset = BYTE_ORDER_MARK.length;\n }\n runTokenizer(() => {\n tokenizer.write(bytes);\n }, options.baseOffset + state.byteOffset);\n }\n };\n}\n\nexport function isNumberText(value: unknown): value is NumberText {\n return typeof value === 'object' && value != null && 'numberText' in value;\n}\n\nexport function isStructureError(error: unknown): error is StructureError {\n return error instanceof Error && 'offset' in error && typeof error.offset === 'number';\n}\n\n// JSON text for a value, writing numbers as they were written in the item.\nexport function stringifyJsonValue(value: JsonValue): string {\n if (value == null || typeof value !== 'object') return JSON.stringify(value);\n if (isNumberText(value)) return value.numberText;\n if (Array.isArray(value)) return `[${value.map((item) => stringifyJsonValue(item)).join(',')}]`;\n return `{${Object.entries(value)\n .map(([key, item]) => `${JSON.stringify(key)}:${stringifyJsonValue(item)}`)\n .join(',')}}`;\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nfunction constructContainer(input: Omit<OpenContainer, 'childCount' | 'pendingKey' | 'positionId'>): OpenContainer {\n return { ...input, childCount: 0, pendingKey: undefined, positionId: 'start' };\n}\n\nfunction constructStructureError(message: string, offset: number): StructureError {\n return Object.assign(new Error(`${message}.`), { offset });\n}\n\n// The tokenizer reports a character it cannot read with its position in the bytes it was given, in its own wording. It\n// is turned into the walker's own error, so every syntax error says where it is the same way. Any other error, such as a\n// handler stopping the read on purpose, passes through unchanged.\nfunction runTokenizer(run: () => void, tokenizerBaseOffset: number): void {\n try {\n run();\n } catch (error) {\n if (!(error instanceof TokenizerError)) throw error;\n const match = /^Unexpected \"(.*)\" at chunk position \"\\d+\" \\(absolute position \"(\\d+)\"\\)/su.exec(error.message);\n if (match?.[2] == null) throw constructStructureError('The JSON ends before it is complete', tokenizerBaseOffset);\n throw constructStructureError(`Unexpected '${match[1] ?? ''}'`, tokenizerBaseOffset + Number(match[2]));\n }\n}\n\n// Takes the place of a new value in the current container, and returns its key there.\nfunction startValue(state: WalkerState, options: StructureWalkerOptions, offset: number): { key: EntryKey } {\n const container = state.current;\n if (container == null) {\n if (state.isRootClosed) throw constructStructureError('Unexpected content after the end of the JSON', offset);\n return { key: undefined };\n }\n if (container.kindId === 'object') {\n if (container.positionId === 'afterKey') throw constructStructureError(\"Expected ':'\", offset);\n if (container.positionId === 'afterValue') throw constructStructureError(\"Expected ',' or '}'\", offset);\n if (container.positionId !== 'afterColon') throw constructStructureError('Expected a key', offset);\n container.positionId = 'afterValue';\n container.childCount++;\n return { key: container.pendingKey };\n }\n // Lines of JSON Lines follow each other with no comma between them.\n const isCommaNeeded = !(container.isVirtual && options.isJsonLines);\n if (isCommaNeeded && container.positionId === 'afterValue') throw constructStructureError(\"Expected ','\", offset);\n container.positionId = 'afterValue';\n return { key: container.childCount++ };\n}\n\nfunction openContainer({ handlers, options, state }: Walk, kindId: StructureContainerKindId, offset: number): void {\n const { key } = startValue(state, options, offset);\n const parent = state.current;\n const path = parent == null ? options.rootPath : [...parent.path, key ?? ''];\n state.current = constructContainer({ depth: parent == null ? 0 : parent.depth + 1, isVirtual: false, key, kindId, parent, path, startOffset: offset });\n handlers.onContainerStart?.(state.current);\n}\n\n// A container the stream starts inside closes with a bracket from the item it was cut from, which is not part of it.\nfunction closeContainer({ handlers, state }: Walk, kindId: StructureContainerKindId, offset: number): void {\n const container = state.current;\n const bracket = kindId === 'object' ? '}' : ']';\n if (container?.kindId !== kindId) throw constructStructureError(`Unexpected '${bracket}'`, offset);\n if (container.positionId !== 'start' && container.positionId !== 'afterValue') throw constructStructureError(`Unexpected '${bracket}'`, offset);\n handlers.onContainerEnd?.(container, offset + 1);\n state.current = container.isVirtual ? undefined : container.parent;\n if (state.current == null) state.isRootClosed = true;\n}\n\nfunction takeColon(state: WalkerState, offset: number): void {\n if (state.current?.positionId === 'afterKey') state.current.positionId = 'afterColon';\n else throw constructStructureError(\"Unexpected ':'\", offset);\n}\n\nfunction takeComma(state: WalkerState, offset: number): void {\n if (state.current?.positionId === 'afterValue') state.current.positionId = 'afterComma';\n else throw constructStructureError(\"Unexpected ','\", offset);\n}\n\n// A string where an object expects a key is the key.\nfunction takeString(walk: Walk, value: string, offset: number): void {\n const container = walk.state.current;\n if (container?.kindId === 'object' && (container.positionId === 'start' || container.positionId === 'afterComma')) {\n container.pendingKey = value;\n container.positionId = 'afterKey';\n walk.handlers.onKey?.(container, value);\n return;\n }\n takeScalar(walk, 'string', value, offset);\n}\n\nfunction takeScalar({ handlers, options, state }: Walk, kindId: ScalarEntry['kindId'], value: JsonScalar, offset: number): void {\n const parent = state.current;\n const { key } = startValue(state, options, offset);\n handlers.onScalar?.({ key, kindId, parent, startOffset: offset, value });\n if (state.current == null) state.isRootClosed = true;\n}\n","// ── DPUse Framework\nimport type { ParsedRecord, StructurePath } from '@dpuse/dpuse-shared';\n\n// ── Local Framework\nimport { isNumberText, stringifyJsonValue } from '@/structureWalker';\nimport type { JsonValue, OpenContainer, StructureWalkerHandlers } from '@/structureWalker';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Reads the items of the value at a path as they stream past. A list gives one item per entry. Any other value is one\n// item on its own.\nexport interface ItemReader {\n handlers: StructureWalkerHandlers;\n isTargetClosed: () => boolean; // Whether the value has been read through, so the rest of the stream is not needed.\n isTargetFound: () => boolean;\n}\n\n// The columns of a table, fixed by the first items read, so every row has the same values in the same places.\nexport interface TableShape {\n columnIndexes: Map<string, number>;\n columnNames: string[];\n}\n\n// A list or object being built, and the container it is built from.\ninterface ValueFrame {\n container: OpenContainer;\n value: JsonValue[] | Record<string, JsonValue>;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst SCALAR_COLUMN_NAME = 'value'; // The one column of a list whose items are not objects.\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// 'onItem' receives each item with the byte after it, so a reader can stop between items.\nexport function createItemReader(targetPath: StructurePath, onItem: (item: JsonValue, endOffset: number) => void): ItemReader {\n const frames: ValueFrame[] = [];\n let targetContainer: OpenContainer | undefined;\n let isTargetFound = false;\n let isTargetClosed = false;\n\n const addValue = (container: OpenContainer, key: number | string | undefined, value: JsonValue): void => {\n const frame = frames.at(-1);\n if (frame?.container !== container) return;\n if (Array.isArray(frame.value)) frame.value.push(value);\n else frame.value[String(key)] = value;\n };\n\n const handlers: StructureWalkerHandlers = {\n onContainerEnd: (container, endOffset) => {\n if (container === targetContainer) {\n isTargetClosed = true;\n targetContainer = undefined;\n }\n const frame = frames.at(-1);\n if (frame?.container !== container) return;\n frames.pop();\n const parentFrame = frames.at(-1);\n if (parentFrame == null) onItem(frame.value, endOffset);\n else addValue(parentFrame.container, container.key, frame.value);\n },\n onContainerStart: (container) => {\n const isTarget = !isTargetFound && arePathsEqual(container.path, targetPath);\n if (isTarget) {\n isTargetFound = true;\n targetContainer = container;\n }\n // An object at the path is one item. A list's entries are its items.\n const isItem = (isTarget && container.kindId === 'object') || (targetContainer != null && container.parent === targetContainer && targetContainer.kindId === 'list');\n if (isItem || frames.length > 0) frames.push({ container, value: container.kindId === 'list' ? [] : constructRecordObject() });\n },\n onScalar: (scalar) => {\n const parent = scalar.parent;\n if (parent != null && frames.length > 0) {\n addValue(parent, scalar.key, scalar.value);\n return;\n }\n const isListItem = parent?.kindId === 'list' && parent === targetContainer;\n const isTarget = !isTargetFound && arePathsEqual(parent == null ? [] : [...parent.path, scalar.key ?? ''], targetPath);\n if (isTarget) {\n isTargetFound = true;\n isTargetClosed = true;\n }\n if (isListItem || isTarget) onItem(scalar.value, scalar.startOffset);\n }\n };\n return { handlers, isTargetClosed: () => isTargetClosed, isTargetFound: () => isTargetFound };\n}\n\n// An item's fields, by column name. Nested objects are flattened into names joined by dots, and a list stays one value,\n// because rows cannot hold a variable number of columns.\nexport function flattenItem(item: JsonValue): Map<string, JsonValue> {\n const fields = new Map<string, JsonValue>();\n if (!isPlainObject(item)) {\n fields.set(SCALAR_COLUMN_NAME, item);\n return fields;\n }\n const addFields = (value: Record<string, JsonValue>, prefix: string): void => {\n for (const [key, fieldValue] of Object.entries(value)) {\n const name = prefix === '' ? key : `${prefix}.${key}`;\n if (isPlainObject(fieldValue) && Object.keys(fieldValue).length > 0) addFields(fieldValue, name);\n else fields.set(name, fieldValue);\n }\n };\n addFields(item, '');\n return fields;\n}\n\n// The columns found in the items, in the order first found.\nexport function constructTableShape(itemFields: Map<string, JsonValue>[]): TableShape {\n const columnIndexes = new Map<string, number>();\n for (const fields of itemFields) {\n for (const name of fields.keys()) if (!columnIndexes.has(name)) columnIndexes.set(name, columnIndexes.size);\n }\n return { columnIndexes, columnNames: columnIndexes.keys().toArray() };\n}\n\nexport function constructHeaderRecord(shape: TableShape): ParsedRecord {\n return shape.columnNames.map((name) => ({ value: name, valueWasQuoted: true }));\n}\n\n// A row in the table's column order. A field the item lacks is null. A field the table has no column for is dropped, and\n// reported so the caller can count the item as not uniform.\nexport function constructRecord(fields: Map<string, JsonValue>, shape: TableShape): { hasUnknownField: boolean; record: ParsedRecord } {\n const record: ParsedRecord = shape.columnNames.map(() => ({ value: null, valueWasQuoted: false }));\n let hasUnknownField = false;\n for (const [name, value] of fields) {\n const columnIndex = shape.columnIndexes.get(name);\n if (columnIndex == null) hasUnknownField = true;\n else record[columnIndex] = constructParsedValue(value);\n }\n return { hasUnknownField, record };\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nfunction arePathsEqual(path: StructurePath, otherPath: StructurePath): boolean {\n return path.length === otherPath.length && path.every((segment, index) => segment === otherPath[index]);\n}\n\n// An object with no prototype, so a key such as '__proto__' is kept as data rather than changing the object.\nfunction constructRecordObject(): Record<string, JsonValue> {\n return Object.create(null) as Record<string, JsonValue>;\n}\n\nfunction isPlainObject(value: JsonValue): value is Record<string, JsonValue> {\n return typeof value === 'object' && value != null && !Array.isArray(value) && !isNumberText(value);\n}\n\n// Text is marked as quoted, as in delimited text, so type inference keeps a string of digits as text.\nfunction constructParsedValue(value: JsonValue): ParsedRecord[number] {\n if (value == null) return { value: null, valueWasQuoted: false };\n if (typeof value === 'string') return { value, valueWasQuoted: true };\n if (typeof value === 'boolean') return { value: String(value), valueWasQuoted: false };\n if (isNumberText(value)) return { value: value.numberText, valueWasQuoted: false };\n return { value: stringifyJsonValue(value), valueWasQuoted: true };\n}\n","// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Follows the bytes of a stream as they are read, so a syntax error found at a byte can say which line and column it is\n// on and show the text around it. Only the current chunk and the start of the line it is in are kept.\nexport interface PositionTracker {\n locate: (offset: number) => TextPosition;\n take: (bytes: Uint8Array, startOffset: number) => void; // The next chunk, and where it starts in the item.\n}\n\nexport interface TextPosition {\n columnNumber: number | undefined; // Counting characters from 1. Undefined when the line is too long to have been kept.\n excerpt: string; // The text just before and after the byte.\n lineNumber: number | undefined; // Counting from 1. Undefined when reading did not start at the top of the item.\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst LINE_FEED_BYTE = 0x0a;\nconst MAX_LINE_START_BYTE_COUNT = 4096; // The most of a line kept from earlier chunks. A longer line has no column.\nconst EXCERPT_BEFORE_LENGTH = 40;\nconst EXCERPT_AFTER_BYTE_COUNT = 20;\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// 'isFromTop' says whether reading starts at the top of the item, so lines can be counted.\nexport function createPositionTracker(isFromTop: boolean): PositionTracker {\n const decoder = new TextDecoder();\n let chunk: Uint8Array = new Uint8Array();\n let chunkStartOffset = 0;\n let lineFeedCount = 0; // Before the current chunk.\n let lineStart: Uint8Array | undefined = new Uint8Array(); // The current chunk's line, as far as it ran in earlier chunks. Undefined when too long to keep.\n\n return {\n locate: (offset): TextPosition => {\n const index = Math.min(Math.max(offset - chunkStartOffset, 0), chunk.length);\n const before = chunk.subarray(0, index);\n const lastLineFeedIndex = before.lastIndexOf(LINE_FEED_BYTE);\n const lineBefore = lastLineFeedIndex === -1 ? joinLineStart(lineStart, before) : before.subarray(lastLineFeedIndex + 1);\n const after = chunk.subarray(index, index + EXCERPT_AFTER_BYTE_COUNT);\n const afterLineEnd = after.indexOf(LINE_FEED_BYTE);\n const textBefore = decoder.decode(lineBefore ?? before.subarray(lastLineFeedIndex + 1));\n const textAfter = decoder.decode(afterLineEnd === -1 ? after : after.subarray(0, afterLineEnd));\n return {\n columnNumber: lineBefore == null ? undefined : textBefore.length + 1,\n excerpt: `${textBefore.slice(-EXCERPT_BEFORE_LENGTH)}${textAfter}`,\n lineNumber: isFromTop ? lineFeedCount + countLineFeeds(before) + 1 : undefined\n };\n },\n take: (bytes, startOffset): void => {\n const lastLineFeedIndex = chunk.lastIndexOf(LINE_FEED_BYTE);\n lineFeedCount += countLineFeeds(chunk);\n if (lastLineFeedIndex !== -1) lineStart = new Uint8Array(chunk.subarray(lastLineFeedIndex + 1)); // A copy, because the chunk is let go.\n else if (lineStart != null) lineStart = concatenate(lineStart, chunk);\n if (lineStart != null && lineStart.length > MAX_LINE_START_BYTE_COUNT) lineStart = undefined;\n chunk = bytes;\n chunkStartOffset = startOffset;\n }\n };\n}\n\nexport function countLineFeeds(bytes: Uint8Array): number {\n let count = 0;\n for (let index = bytes.indexOf(LINE_FEED_BYTE); index !== -1; index = bytes.indexOf(LINE_FEED_BYTE, index + 1)) count++;\n return count;\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// The line so far: its start from earlier chunks, then this chunk's part. Undefined when the start was too long to keep.\nfunction joinLineStart(lineStart: Uint8Array | undefined, before: Uint8Array): Uint8Array | undefined {\n return lineStart == null ? undefined : concatenate(lineStart, before);\n}\n\nfunction concatenate(first: Uint8Array, second: Uint8Array): Uint8Array {\n const bytes = new Uint8Array(first.length + second.length);\n bytes.set(first);\n bytes.set(second, first.length);\n return bytes;\n}\n","// ── DPUse Framework\nimport type { BuildStructureIndexOptions, DataFormatId, ListStructureEntriesOptions, ListStructureEntriesResult, ParsedRecord } from '@dpuse/dpuse-shared';\nimport { ignoreErrors, resolveDecoderId } from '@dpuse/dpuse-shared';\nimport type { ParsedRecordsChunk, ParseStreamOptions, ParseStreamSummary, ParseTextOptions, ParseTextResult, SampleIssue } from '@dpuse/dpuse-shared';\nimport type { StructuredParserInterface, StructureEntry, StructureIndex, StructureLocator, StructureNode, StructurePath } from '@dpuse/dpuse-shared';\n\n// ── Local Framework\nimport { constructHeaderRecord, constructRecord, constructTableShape, createItemReader, flattenItem, type TableShape } from '@/itemRecords';\nimport { countLineFeeds, createPositionTracker, type PositionTracker } from '@/textPosition';\nimport { createStructureWalker, isNumberText, isStructureError, type JsonValue, type OpenContainer, type StartInside } from '@/structureWalker';\nimport type { StructureError, StructureWalker, StructureWalkerHandlers, StructureWalkerOptions } from '@/structureWalker';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// A node while its list or object is still being read. The set and flag work out its keys and whether it reads as rows.\ninterface NodeDraft {\n container: OpenContainer;\n hasNonObjectItem: boolean;\n keySet: Set<string>;\n node: StructureNode;\n}\n\n// How far a read got, and why it ended early.\ninterface ReadOutcome {\n byteCount: number;\n error: StructureError | undefined;\n}\n\n// What a row parse has read and not yet handed over.\ninterface RowState {\n isHeaderSent: boolean;\n itemFields: Map<string, JsonValue>[];\n nonUniformRecordCount: number;\n recordCount: number;\n shape: TableShape | undefined;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_MAX_DEPTH = 4;\nconst DEFAULT_MAX_VALUE_LENGTH = 200;\nconst DEFAULT_RECORD_BUFFER_SIZE = 10_000;\nconst CHECKPOINT_ITEM_COUNT = 1000; // A list's items between checkpoints. A page read from a checkpoint skips at most this many items.\nconst INDEXED_ITEM_COUNT = 1; // A list's items indexed as nodes of their own.\nconst MAX_KEY_COUNT = 200; // The most keys a node lists, so an object used as a map with millions of keys stays small in the index.\n\nconst ENCODING_MESSAGE = 'JSON must be encoded as UTF-8.';\n\n// WebKit hands over a file stream in pieces of about 18 MB, against about 2 MB in Chromium. Each piece is read in slices\n// of this size, so rows are handed over and the abort checked often. A slice is a view, not a copy.\nconst MAX_SLICE_BYTE_COUNT = 1_048_576;\n\n// Thrown by a handler to stop reading once enough is known. The walker passes it back out of 'write'.\nconst STOP_READING = new Error('Reading stopped once enough was known.');\n\n// ── Tools ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport class Tool implements StructuredParserInterface {\n /**\n * Build structure index. Maps the lists and objects of the item, or of its start for a preview, with a locator for\n * each, so any of them can be read again on its own. Suggests the list to read as the table when there is only one.\n * A syntax error ends the map early and is reported in it. Memory stays small however large the item.\n */\n async buildStructureIndex(stream: ReadableStream<Uint8Array>, options: BuildStructureIndexOptions): Promise<StructureIndex> {\n if (!isUtf8(options.encodingId)) {\n await stream.cancel();\n return { byteCount: 0, isComplete: false, issues: [constructIssue('JSON_ENCODING', ENCODING_MESSAGE, undefined)], nodes: [], suggestedStructurePath: undefined, tableCandidateCount: 0 };\n }\n const maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;\n const drafts = new Map<OpenContainer, NodeDraft>();\n const nodes: StructureNode[] = [];\n // A list's first items show the shape of the rest, which checkpoints locate, so a long list adds little to the\n // index. A list or object inside one not indexed is not indexed either.\n const isIndexed = (container: OpenContainer): boolean => {\n if (container.depth > maxDepth) return false;\n if (container.parent == null) return true;\n const isSampleItem = container.parent.kindId !== 'list' || (typeof container.key === 'number' && container.key < INDEXED_ITEM_COUNT);\n return isSampleItem && drafts.has(container.parent);\n };\n // A list's item: a checkpoint every so many items, and a note when an item is not an object.\n const takeItem = (parent: OpenContainer | undefined, key: number | string | undefined, startOffset: number, isObject: boolean): void => {\n const parentDraft = parent == null ? undefined : drafts.get(parent);\n if (typeof key !== 'number' || parentDraft?.node.kindId !== 'list') return;\n if (key % CHECKPOINT_ITEM_COUNT === 0) parentDraft.node.checkpoints.push({ itemIndex: key, locator: constructInsideLocator(startOffset, 'list', key) });\n if (!isObject) parentDraft.hasNonObjectItem = true;\n };\n const handlers: StructureWalkerHandlers = {\n onContainerEnd: (container, endOffset) => {\n const draft = drafts.get(container);\n if (draft == null) return;\n draft.node.locator.endOffset = endOffset;\n draft.node.isComplete = true;\n completeNode(draft);\n drafts.delete(container);\n },\n onContainerStart: (container) => {\n takeItem(container.parent, container.key, container.startOffset, container.kindId === 'object');\n if (!isIndexed(container)) return;\n const node: StructureNode = {\n checkpoints: [],\n childCount: 0,\n isComplete: false,\n isTableCandidate: false,\n keys: [],\n kindId: container.kindId,\n locator: { endOffset: undefined, startOffset: container.startOffset, state: undefined },\n path: container.path\n };\n nodes.push(node);\n drafts.set(container, { container, hasNonObjectItem: false, keySet: new Set(), node });\n },\n onKey: (container, key) => {\n addKey(drafts.get(container), key);\n const parentDraft = container.parent == null ? undefined : drafts.get(container.parent);\n if (parentDraft?.node.kindId === 'list') addKey(parentDraft, key); // A list's keys are those of its object items.\n },\n onScalar: (scalar) => {\n takeItem(scalar.parent, scalar.key, scalar.startOffset, false);\n }\n };\n const tracker = createPositionTracker(true);\n const walker = createStructureWalker(constructWalkerOptions(options.dataFormatId), handlers);\n const outcome = await readStream(stream, { abortSignal: options.abortSignal, isEnded: options.isComplete, onProgress: options.onProgress, tracker, walker });\n // Lists and objects still open where reading stopped are kept with what was read of them. A checkpoint carries\n // on to the end of its list, so it takes the list's end once known.\n for (const draft of drafts.values()) completeNode(draft);\n for (const node of nodes) for (const checkpoint of node.checkpoints) checkpoint.locator.endOffset = node.locator.endOffset;\n const issues = outcome.error == null ? [] : [constructSyntaxIssue(outcome.error, tracker)];\n return { byteCount: outcome.byteCount, isComplete: options.isComplete && outcome.error == null, issues, nodes, ...suggestStructurePath(nodes, options.dataFormatId) };\n }\n\n /**\n * List structure entries. Lists one page of a list or object for a viewer that opens one level at a time, and says\n * where the next page starts. Reading stops as soon as the page is known, so a page near the start of a large node is\n * quick.\n */\n async listStructureEntries(stream: ReadableStream<Uint8Array>, options: ListStructureEntriesOptions): Promise<ListStructureEntriesResult> {\n const maxValueLength = options.maxValueLength ?? DEFAULT_MAX_VALUE_LENGTH;\n const { locator } = options;\n const entries: StructureEntry[] = [];\n let nextLocator: StructureLocator | undefined;\n let openScalarEntry: StructureEntry | undefined; // A text, number or other single value only ends where the next token starts.\n let tokenOffset = 0; // Where the latest token started.\n let keyOffset = 0; // Where the latest key started, because the next page of an object starts at a key, before its value.\n // Called as an entry starts. Once the page is full, the next entry is where the next page starts.\n const startEntry = (entry: StructureEntry, parent: OpenContainer | undefined): void => {\n if (entries.length >= options.entryCount) {\n const isObjectEntry = parent?.kindId === 'object';\n const firstIndex = typeof entry.key === 'number' ? entry.key : (parent?.childCount ?? 1) - 1;\n const startOffset = isObjectEntry ? keyOffset : entry.locator.startOffset;\n nextLocator = { ...constructInsideLocator(startOffset, isObjectEntry ? 'object' : 'list', firstIndex), endOffset: locator.endOffset };\n throw STOP_READING;\n }\n entries.push(entry);\n };\n const walkerOptions: StructureWalkerOptions = {\n baseOffset: locator.startOffset,\n isJsonLines: options.dataFormatId === 'jsonl' && options.path.length === 0,\n rootPath: options.path,\n startInside: readStartInside(locator.state)\n };\n const walker = createStructureWalker(walkerOptions, {\n onContainerEnd: (container, endOffset) => {\n if (container.depth === 0) throw STOP_READING;\n if (container.depth !== 1) return;\n const entry = entries.at(-1);\n if (entry == null) return;\n entry.locator.endOffset = endOffset;\n entry.childCount = container.childCount;\n },\n onContainerStart: (container) => {\n if (container.depth !== 1) return;\n const entryLocator = { endOffset: undefined, startOffset: container.startOffset, state: undefined };\n startEntry({ childCount: 0, isValueCut: false, key: container.key ?? '', kindId: container.kindId, locator: entryLocator, value: undefined }, container.parent);\n },\n onKey: (container) => {\n if (container.depth === 0) keyOffset = tokenOffset;\n },\n onScalar: (scalar) => {\n if (scalar.parent?.depth !== 0) return;\n const text = describeScalar(scalar.value);\n const isValueCut = text != null && text.length > maxValueLength;\n const entry: StructureEntry = {\n childCount: undefined,\n isValueCut,\n key: scalar.key ?? '',\n kindId: scalar.kindId,\n locator: { endOffset: undefined, startOffset: scalar.startOffset, state: undefined },\n value: isValueCut ? text.slice(0, maxValueLength) : text\n };\n startEntry(entry, scalar.parent);\n openScalarEntry = entry;\n },\n onTokenStart: (offset) => {\n tokenOffset = offset;\n if (openScalarEntry == null) return;\n openScalarEntry.locator.endOffset = offset;\n openScalarEntry = undefined;\n }\n });\n const tracker = createPositionTracker(locator.startOffset === 0);\n const outcome = await readStream(stream, { abortSignal: options.abortSignal, isEnded: true, onProgress: undefined, tracker, walker });\n if (openScalarEntry != null) openScalarEntry.locator.endOffset = locator.startOffset + outcome.byteCount;\n const issues = outcome.error == null ? [] : [constructSyntaxIssue(outcome.error, tracker)];\n return { entries, issues, nextLocator };\n }\n\n /**\n * Parse stream. Reads the list at 'structurePath', or at the top of the item when it is not given, as rows: a header\n * of column names, then one row per item. The columns are those found in the first chunk of items. A later item with\n * a field outside them keeps its other fields and counts as not uniform. Stops between items at 'byteLimit' or when\n * 'stopSignal' fires. Fails on a syntax error, naming its line and column. The caller owns the stream and its fetch.\n */\n async *parseStream(stream: ReadableStream<Uint8Array>, options: ParseStreamOptions): AsyncGenerator<ParsedRecordsChunk, ParseStreamSummary, undefined> {\n options.abortSignal.throwIfAborted();\n if (!isUtf8(options.encodingId)) throw new Error(ENCODING_MESSAGE);\n const recordsPerChunk = Math.max(1, Math.floor(options.chunkSize ?? DEFAULT_RECORD_BUFFER_SIZE));\n const rowState: RowState = { isHeaderSent: false, itemFields: [], nonUniformRecordCount: 0, recordCount: 0, shape: undefined };\n const progress = { isStopped: false };\n const itemReader = createItemReader(options.structurePath ?? [], (item, endOffset) => {\n rowState.itemFields.push(flattenItem(item));\n const isLimitReached = options.byteLimit != null && endOffset >= options.byteLimit;\n if (!isLimitReached && options.stopSignal?.aborted !== true) return;\n progress.isStopped = true;\n throw STOP_READING;\n });\n const isReading = (): boolean => !progress.isStopped && !itemReader.isTargetClosed();\n const walker = createStructureWalker(constructWalkerOptions(options.dataFormatId), itemReader.handlers);\n const tracker = createPositionTracker(true);\n const reader = stream.getReader();\n const cancelRead = (): void => {\n ignoreErrors(() => void reader.cancel(options.abortSignal.reason));\n };\n options.abortSignal.addEventListener('abort', cancelRead, { once: true });\n\n let lineCount = 0;\n try {\n let result = await reader.read();\n while (!result.done && isReading()) {\n lineCount += countLineFeeds(result.value);\n for (let sliceStart = 0; sliceStart < result.value.length && isReading(); sliceStart += MAX_SLICE_BYTE_COUNT) {\n options.abortSignal.throwIfAborted();\n writeSlice(walker, tracker, result.value.subarray(sliceStart, sliceStart + MAX_SLICE_BYTE_COUNT));\n yield* takeRows(rowState, recordsPerChunk, false);\n }\n if (isReading()) result = await reader.read();\n }\n options.abortSignal.throwIfAborted();\n if (isReading()) {\n runWalker(() => {\n walker.end();\n }, tracker);\n }\n if (!itemReader.isTargetFound()) throw new Error(`Nothing found at ${describePath(options.structurePath ?? [])}.`);\n yield* takeRows(rowState, recordsPerChunk, true);\n return {\n byteCount: walker.byteCount(),\n commentLineCount: 0,\n emptyLineCount: 0,\n isComplete: !progress.isStopped,\n lineCount,\n nonUniformRecordCount: rowState.nonUniformRecordCount,\n recordCount: rowState.recordCount\n };\n } finally {\n options.abortSignal.removeEventListener('abort', cancelRead);\n ignoreErrors(() => void reader.cancel()); // Releases the item when reading stops before the end. A stream already read through ignores it.\n }\n }\n\n /**\n * Parse text. Reads a preview the same way as 'parseStream'. A preview cut short ends in the middle of the JSON, so\n * only an error in what was read is an issue, and the items read before the cut are kept. In JSON Lines each line is\n * read on its own, so a line that cannot be read is an issue and the lines after it are still read.\n */\n parseText(text: string, options: ParseTextOptions): Promise<ParseTextResult> {\n const items: Map<string, JsonValue>[] = [];\n const issues = options.dataFormatId === 'jsonl' ? parseLines(text, options.isComplete, items) : parseDocument(text, options, items);\n const shape = constructTableShape(items);\n const parsedRecords: ParsedRecord[] = items.length === 0 ? [] : [constructHeaderRecord(shape), ...items.map((fields) => constructRecord(fields, shape).record)];\n const hasHeaders = items.length === 0 ? undefined : true; // Column names are taken from keys, so the first record is always a header.\n return Promise.resolve({ hasHeaders, issues, parsedRecords, recordDelimiterId: '\\n', valueDelimiterId: undefined }); // Synchronous, but the interface allows a parser that is not.\n }\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n//#region: Reading helpers.\n\n// Options for a walk of the whole item from its start.\nfunction constructWalkerOptions(dataFormatId: DataFormatId): StructureWalkerOptions {\n return { baseOffset: 0, isJsonLines: dataFormatId === 'jsonl', rootPath: [], startInside: undefined };\n}\n\n// JSON is UTF-8 by its standard, and an index counts bytes of the item itself, so other encodings are not read.\nfunction isUtf8(encodingId: string): boolean {\n return resolveDecoderId(encodingId) === 'utf-8';\n}\n\n// Feeds the stream to the walker a slice at a time, and ends the walk when 'isEnded'. A preview is not ended, because it\n// stops part way. Stops early, without error, when a handler has all it needs. A syntax error stops it too, and is\n// returned rather than thrown, so the caller keeps what was read before it.\nasync function readStream(\n stream: ReadableStream<Uint8Array>,\n input: { abortSignal: AbortSignal; isEnded: boolean; onProgress: ((byteCount: number) => void) | undefined; tracker: PositionTracker; walker: StructureWalker }\n): Promise<ReadOutcome> {\n const { abortSignal, isEnded, onProgress, tracker, walker } = input;\n abortSignal.throwIfAborted();\n const reader = stream.getReader();\n const cancelRead = (): void => {\n ignoreErrors(() => void reader.cancel(abortSignal.reason));\n };\n abortSignal.addEventListener('abort', cancelRead, { once: true });\n try {\n let result = await reader.read();\n while (!result.done) {\n for (let sliceStart = 0; sliceStart < result.value.length; sliceStart += MAX_SLICE_BYTE_COUNT) {\n abortSignal.throwIfAborted();\n const slice = result.value.subarray(sliceStart, sliceStart + MAX_SLICE_BYTE_COUNT);\n tracker.take(slice, walker.byteCount());\n walker.write(slice);\n }\n onProgress?.(walker.byteCount());\n result = await reader.read();\n }\n abortSignal.throwIfAborted();\n if (isEnded) walker.end();\n return { byteCount: walker.byteCount(), error: undefined };\n } catch (error) {\n if (error === STOP_READING) return { byteCount: walker.byteCount(), error: undefined };\n if (isStructureError(error)) return { byteCount: walker.byteCount(), error };\n throw error;\n } finally {\n abortSignal.removeEventListener('abort', cancelRead);\n ignoreErrors(() => void reader.cancel());\n }\n}\n\nfunction writeSlice(walker: StructureWalker, tracker: PositionTracker, slice: Uint8Array): void {\n tracker.take(slice, walker.byteCount());\n runWalker(() => {\n walker.write(slice);\n }, tracker);\n}\n\n// Runs a step of a row parse. A syntax error fails the parse with its line and column. A stop ends the step quietly,\n// because the handler that stopped it has already recorded why.\nfunction runWalker(run: () => void, tracker: PositionTracker): void {\n try {\n run();\n } catch (error) {\n if (error === STOP_READING) return;\n if (!isStructureError(error)) throw error;\n throw new Error(describeSyntaxError(error, tracker), { cause: error });\n }\n}\n\n//#region: Text helpers.\n\n// Reads a whole JSON document, or the start of one, into items, and returns the issues found.\nfunction parseDocument(text: string, options: ParseTextOptions, items: Map<string, JsonValue>[]): SampleIssue[] {\n const itemReader = createItemReader(options.structurePath ?? [], (item) => {\n items.push(flattenItem(item));\n });\n const walker = createStructureWalker(constructWalkerOptions('json'), itemReader.handlers);\n const tracker = createPositionTracker(true);\n const bytes = new TextEncoder().encode(text);\n tracker.take(bytes, 0);\n try {\n walker.write(bytes);\n if (options.isComplete) walker.end();\n } catch (error) {\n if (!isStructureError(error)) throw error;\n return [constructSyntaxIssue(error, tracker)];\n }\n const isMissing = options.isComplete && !itemReader.isTargetFound();\n return isMissing ? [constructIssue('JSON_NOT_FOUND', `Nothing found at ${describePath(options.structurePath ?? [])}.`, undefined)] : [];\n}\n\n// Reads each line of JSON Lines on its own, so one that cannot be read is an issue and the rest are still read. The last\n// line of a preview cut short is where the cut fell, so it is not an issue.\nfunction parseLines(text: string, isComplete: boolean, items: Map<string, JsonValue>[]): SampleIssue[] {\n const issues: SampleIssue[] = [];\n const lines = text.split('\\n');\n for (const [lineIndex, line] of lines.entries()) {\n if (line.trim() === '') continue;\n const lineItems: JsonValue[] = [];\n const itemReader = createItemReader([], (item) => {\n lineItems.push(item);\n });\n const walker = createStructureWalker(constructWalkerOptions('json'), itemReader.handlers);\n const bytes = new TextEncoder().encode(line);\n try {\n walker.write(bytes);\n walker.end();\n for (const item of lineItems) items.push(flattenItem(item));\n } catch (error) {\n if (!isStructureError(error)) throw error;\n const isCutOff = !isComplete && lineIndex === lines.length - 1;\n if (!isCutOff) issues.push(constructLineIssue(error, bytes, lineIndex + 1));\n }\n }\n return issues;\n}\n\n//#region: Row helpers.\n\n// Hands over the rows read so far, a chunk at a time. The first chunk fixes the columns and starts with the header.\n// Only full chunks go until the item has been read, then the rest goes too.\nfunction* takeRows(rowState: RowState, recordsPerChunk: number, isFinal: boolean): Generator<ParsedRecordsChunk> {\n while (rowState.itemFields.length >= recordsPerChunk || (isFinal && rowState.itemFields.length > 0)) {\n const itemFields = rowState.itemFields.splice(0, recordsPerChunk);\n rowState.shape ??= constructTableShape(itemFields);\n const records: ParsedRecord[] = [];\n if (!rowState.isHeaderSent) {\n records.push(constructHeaderRecord(rowState.shape));\n rowState.isHeaderSent = true;\n }\n for (const fields of itemFields) {\n const { hasUnknownField, record } = constructRecord(fields, rowState.shape);\n if (hasUnknownField) rowState.nonUniformRecordCount++;\n records.push(record);\n }\n rowState.recordCount += records.length;\n yield { records, typeId: 'parsingRecordArray' };\n }\n}\n\n//#region: Structure helpers.\n\nfunction addKey(draft: NodeDraft | undefined, key: string): void {\n if (draft != null && draft.keySet.size < MAX_KEY_COUNT) draft.keySet.add(key);\n}\n\n// Fills in what a node's list or object showed, as far as it was read.\nfunction completeNode(draft: NodeDraft): void {\n draft.node.childCount = draft.container.childCount;\n draft.node.isTableCandidate = draft.node.kindId === 'list' && draft.container.childCount > 0 && !draft.hasNonObjectItem;\n draft.node.keys = draft.keySet.values().toArray();\n}\n\n// A list is suggested as the table when it is the only one that reads as rows. A list inside a list's item, such as the\n// lines of one order, is one item's detail, so it is not counted. JSON Lines is always read line by line.\nfunction suggestStructurePath(nodes: StructureNode[], dataFormatId: DataFormatId): Pick<StructureIndex, 'suggestedStructurePath' | 'tableCandidateCount'> {\n const candidates = nodes.filter((node) => node.isTableCandidate && node.path.every((segment) => typeof segment === 'string'));\n if (dataFormatId === 'jsonl') return { suggestedStructurePath: nodes.length > 0 ? [] : undefined, tableCandidateCount: candidates.length };\n return { suggestedStructurePath: candidates.length === 1 ? candidates[0]?.path : undefined, tableCandidateCount: candidates.length };\n}\n\n// A locator for reading from an entry part way through a list or object. Its state says where, so the walker starts\n// inside the container rather than expecting it to open. It reads on to the end of the item until the end is known.\nfunction constructInsideLocator(startOffset: number, kindId: StartInside['kindId'], firstIndex: number): StructureLocator {\n const startInside: StartInside = { firstIndex, kindId };\n return { endOffset: undefined, startOffset, state: JSON.stringify(startInside) };\n}\n\nfunction readStartInside(state: string | undefined): StartInside | undefined {\n if (state == null) return undefined;\n const startInside = JSON.parse(state) as StartInside;\n return { firstIndex: startInside.firstIndex, kindId: startInside.kindId };\n}\n\n// A single value as text: a number as written, a string as decoded. Null has no text.\nfunction describeScalar(value: JsonValue): string | undefined {\n if (value == null) return undefined;\n if (typeof value === 'string') return value;\n if (typeof value === 'boolean') return String(value);\n return isNumberText(value) ? value.numberText : undefined;\n}\n\nfunction describePath(path: StructurePath): string {\n return path.length === 0 ? 'the top of the item' : `'${path.join(' › ')}'`;\n}\n\n//#region: Issue helpers.\n\nfunction describeSyntaxError(error: StructureError, tracker: PositionTracker): string {\n const { columnNumber, lineNumber } = tracker.locate(error.offset);\n const message = error.message.replace(/\\.$/u, '');\n if (lineNumber == null) return `${message} at byte ${String(error.offset)}.`;\n return columnNumber == null ? `${message} on line ${String(lineNumber)}.` : `${message} on line ${String(lineNumber)}, column ${String(columnNumber)}.`;\n}\n\nfunction constructSyntaxIssue(error: StructureError, tracker: PositionTracker): SampleIssue {\n const { columnNumber, excerpt, lineNumber } = tracker.locate(error.offset);\n return { ...constructIssue('JSON_INVALID', describeSyntaxError(error, tracker), excerpt), columnNumber, lineNumber };\n}\n\n// A line of JSON Lines that cannot be read. The line is its record, so both numbers are the line's.\nfunction constructLineIssue(error: StructureError, bytes: Uint8Array, lineNumber: number): SampleIssue {\n const tracker = createPositionTracker(true);\n tracker.take(bytes, 0);\n const { columnNumber, excerpt } = tracker.locate(error.offset);\n const message = columnNumber == null ? `${error.message.replace(/\\.$/u, '')} on line ${String(lineNumber)}.` : describeLineError(error, lineNumber, columnNumber);\n return { ...constructIssue('JSON_INVALID', message, excerpt), columnNumber, lineNumber, recordNumber: lineNumber };\n}\n\nfunction describeLineError(error: StructureError, lineNumber: number, columnNumber: number): string {\n return `${error.message.replace(/\\.$/u, '')} on line ${String(lineNumber)}, column ${String(columnNumber)}.`;\n}\n\nfunction constructIssue(id: string, message: string, value: string | undefined): SampleIssue {\n return { columnNumber: undefined, endLineNumber: undefined, fieldNumber: undefined, id, lineNumber: undefined, message, recordNumber: undefined, severityId: 'error', value };\n}\n"],"ignoreList":[0,1,2,3,4,5,6],"mappings":"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"}
|