@zuplo/cli 7.7.14 → 7.7.16
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/dist/test/esbuild-config.d.ts.map +1 -1
- package/dist/test/esbuild-config.js +3 -0
- package/dist/test/esbuild-config.js.map +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/surveys/index.d.ts +1 -0
- package/node_modules/@posthog/core/dist/surveys/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/surveys/index.js +7 -0
- package/node_modules/@posthog/core/dist/surveys/index.mjs +1 -0
- package/node_modules/@posthog/core/dist/surveys/shuffling.d.ts +7 -0
- package/node_modules/@posthog/core/dist/surveys/shuffling.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/surveys/shuffling.js +70 -0
- package/node_modules/@posthog/core/dist/surveys/shuffling.mjs +29 -0
- package/node_modules/@posthog/core/package.json +4 -2
- package/node_modules/@posthog/core/src/error-tracking/coercers/dom-exception-coercer.ts +1 -1
- package/node_modules/@posthog/core/src/surveys/index.ts +1 -0
- package/node_modules/@posthog/core/src/surveys/shuffling.spec.ts +51 -0
- package/node_modules/@posthog/core/src/surveys/shuffling.ts +42 -0
- package/node_modules/@zuplo/core/customer.cli.minified.js +1 -1
- package/node_modules/@zuplo/core/index.minified.js +1 -1
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-2JN5KYSY.js → chunk-B5DKYXCI.js} +2 -2
- package/node_modules/@zuplo/runtime/out/esm/{chunk-JTYJUJYO.js → chunk-GCOWKKQW.js} +2 -2
- package/node_modules/@zuplo/runtime/out/esm/{chunk-A7PEKB6K.js → chunk-HWNKBEMX.js} +4 -4
- package/node_modules/@zuplo/runtime/out/esm/{chunk-A7PEKB6K.js.map → chunk-HWNKBEMX.js.map} +1 -1
- package/node_modules/@zuplo/runtime/out/esm/chunk-SIIXGJ76.js +410 -0
- package/node_modules/@zuplo/runtime/out/esm/chunk-SIIXGJ76.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/types/index.d.ts +27 -2
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/node_modules/get-east-asian-width/index.js +8 -3
- package/node_modules/get-east-asian-width/lookup-data.js +1 -1
- package/node_modules/get-east-asian-width/lookup.js +4 -4
- package/node_modules/get-east-asian-width/package.json +1 -1
- package/package.json +11 -11
- package/node_modules/@zuplo/runtime/out/esm/chunk-VUNRXOEM.js +0 -410
- package/node_modules/@zuplo/runtime/out/esm/chunk-VUNRXOEM.js.map +0 -1
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-2JN5KYSY.js.map → chunk-B5DKYXCI.js.map} +0 -0
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-JTYJUJYO.js.map → chunk-GCOWKKQW.js.map} +0 -0
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-A7PEKB6K.js.LEGAL.txt → chunk-HWNKBEMX.js.LEGAL.txt} +0 -0
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-VUNRXOEM.js.LEGAL.txt → chunk-SIIXGJ76.js.LEGAL.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-config.d.ts","sourceRoot":"","sources":["../../src/test/esbuild-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"esbuild-config.d.ts","sourceRoot":"","sources":["../../src/test/esbuild-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAqDzE"}
|
|
@@ -5,6 +5,9 @@ export function generateBuildOptionsForTest(argv) {
|
|
|
5
5
|
outdir: `${argv.dir}/${TEST_OUT_FOLDER}`,
|
|
6
6
|
external: ["chai", "dotenv/config", "node:test"],
|
|
7
7
|
platform: "node",
|
|
8
|
+
banner: {
|
|
9
|
+
js: 'import { createRequire as __zuploCreateRequire } from "node:module"; const require = __zuploCreateRequire(import.meta.url);',
|
|
10
|
+
},
|
|
8
11
|
sourcemap: true,
|
|
9
12
|
bundle: true,
|
|
10
13
|
treeShaking: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-config.js","sourceRoot":"","sources":["../../src/test/esbuild-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,MAAM,UAAU,2BAA2B,CAAC,IAAe;IACzD,OAAO;QAEL,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE;QACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC;QAChD,QAAQ,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"esbuild-config.js","sourceRoot":"","sources":["../../src/test/esbuild-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,MAAM,UAAU,2BAA2B,CAAC,IAAe;IACzD,OAAO;QAEL,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE;QACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC;QAChD,QAAQ,EAAE,MAAM;QA6BhB,MAAM,EAAE;YACN,EAAE,EAAE,6HAA6H;SAClI;QACD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QAEjB,MAAM,EAAE,KAAK;QAEb,YAAY,EAAE;YACZ,KAAK,EAAE,MAAM;SACd;QAED,OAAO,EAAE;YACP,kBAAkB,CAAC,IAAI,EAAE;gBACvB,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { BuildOptions } from \"esbuild\";\nimport { TEST_OUT_FOLDER } from \"../common/constants.js\";\nimport { nodeTestPrepPlugin } from \"./esbuild-plugins/node-test-prep-plugin.js\";\nimport { Arguments } from \"./handler.js\";\n\nexport function generateBuildOptionsForTest(argv: Arguments): BuildOptions {\n return {\n // Put it under the .zuplo folder\n outdir: `${argv.dir}/${TEST_OUT_FOLDER}`,\n external: [\"chai\", \"dotenv/config\", \"node:test\"],\n platform: \"node\",\n // Keep esbuild's default `platform: \"node\"` field order (`main` before\n // `module`). That order is deliberate: esbuild's docs note some packages\n // \"incorrectly treat `module` as meaning 'browser code' instead of\n // 'ECMAScript module code' so this default behavior is required for\n // compatibility.\" Flipping it to `[\"module\", \"main\"]` would change\n // resolution for EVERY dependency of EVERY customer's test suite.\n //\n // The banner below is why we can keep that default. A CJS package with no\n // `exports` map gets its `main` (CJS) build bundled into this `format:\n // \"esm\"` output, where esbuild rewrites its `require(...)` calls to an\n // interop shim (`typeof require !== \"undefined\" ? require : throw`). In a\n // plain ESM module there is no `require`, so the shim THROWS at runtime —\n // the build succeeds and the failure lands at import time as\n // `Error: Dynamic require of \"node:stream\" is not supported`.\n // `@aws-sdk/client-bedrock-runtime` is the motivating case (it ships\n // `main: dist-cjs` / `module: dist-es`, no `exports`), and this is what\n // lets a fixture test drive the gateway with a real AWS SDK client.\n //\n // This banner is esbuild's own recommended fix for that error: it defines a\n // real `createRequire`-backed `require` in the ESM output, which esbuild's\n // shim then uses instead of throwing. Unlike reordering `mainFields`, it\n // changes resolution for NO other dependency — it only makes the leftover\n // builtin `require(...)` calls work. Safe because the output is always\n // `format: \"esm\"` below, where `import.meta.url` exists.\n //\n // The import is aliased so a test file that imports `createRequire`\n // itself does not collide with the banner's binding. `require` is the only\n // name the banner claims on purpose.\n banner: {\n js: 'import { createRequire as __zuploCreateRequire } from \"node:module\"; const require = __zuploCreateRequire(import.meta.url);',\n },\n sourcemap: true,\n bundle: true,\n treeShaking: true,\n // The format needs to be esm for Deno to work with it\n format: \"esm\",\n // Let's keep the extension as .ts since that is what Deno runs\n outExtension: {\n \".js\": \".mjs\",\n },\n // Here is our own plug-in to shim the responses\n plugins: [\n nodeTestPrepPlugin(argv, {\n \"@zuplo/test\": \"\",\n }),\n ],\n };\n}\n"]}
|
package/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-exception-coercer.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/coercers/dom-exception-coercer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dom-exception-coercer.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/coercers/dom-exception-coercer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG/E,qBAAa,mBAAoB,YAAW,oBAAoB,CAAC,YAAY,CAAC;IAC5E,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY;IAIxC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,aAAa;IAY9D,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -4,4 +4,5 @@ export { applySurveyTranslation, detectSurveyLanguage, findBestTranslationMatch,
|
|
|
4
4
|
export { canSurveyActivateRepeatedly, doesSurveyActivateByEvent, isSurveyIterationBased } from './activation';
|
|
5
5
|
export { getSurveyIterationKey, isSurveyKeyForSurvey, type SurveyWithIteration } from './keys';
|
|
6
6
|
export { isMatchingRegex, isValidRegex, matchPropertyFilters, propertyComparisons } from './property-matching';
|
|
7
|
+
export { getDisplayOrderChoices, shuffle } from './shuffling';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/surveys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,qCAAqC,EACrC,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC7G,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/surveys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,qCAAqC,EACrC,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC7G,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9G,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -36,6 +36,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
36
36
|
doesSurveyActivateByEvent: ()=>external_activation_js_namespaceObject.doesSurveyActivateByEvent,
|
|
37
37
|
findBestTranslationMatch: ()=>external_translations_js_namespaceObject.findBestTranslationMatch,
|
|
38
38
|
getBaseLanguage: ()=>external_translations_js_namespaceObject.getBaseLanguage,
|
|
39
|
+
getDisplayOrderChoices: ()=>external_shuffling_js_namespaceObject.getDisplayOrderChoices,
|
|
39
40
|
getLanguageFromStoredPersonProperties: ()=>external_translations_js_namespaceObject.getLanguageFromStoredPersonProperties,
|
|
40
41
|
getLengthFromRules: ()=>external_validation_js_namespaceObject.getLengthFromRules,
|
|
41
42
|
getRequirementsHint: ()=>external_validation_js_namespaceObject.getRequirementsHint,
|
|
@@ -52,6 +53,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
52
53
|
matchPropertyFilters: ()=>external_property_matching_js_namespaceObject.matchPropertyFilters,
|
|
53
54
|
normalizeLanguageCode: ()=>external_translations_js_namespaceObject.normalizeLanguageCode,
|
|
54
55
|
propertyComparisons: ()=>external_property_matching_js_namespaceObject.propertyComparisons,
|
|
56
|
+
shuffle: ()=>external_shuffling_js_namespaceObject.shuffle,
|
|
55
57
|
surveyHasResponses: ()=>external_events_js_namespaceObject.surveyHasResponses
|
|
56
58
|
});
|
|
57
59
|
const external_validation_js_namespaceObject = require("./validation.js");
|
|
@@ -60,6 +62,7 @@ const external_translations_js_namespaceObject = require("./translations.js");
|
|
|
60
62
|
const external_activation_js_namespaceObject = require("./activation.js");
|
|
61
63
|
const external_keys_js_namespaceObject = require("./keys.js");
|
|
62
64
|
const external_property_matching_js_namespaceObject = require("./property-matching.js");
|
|
65
|
+
const external_shuffling_js_namespaceObject = require("./shuffling.js");
|
|
63
66
|
exports.SURVEY_LANGUAGE_PROPERTY = __webpack_exports__.SURVEY_LANGUAGE_PROPERTY;
|
|
64
67
|
exports.applySurveyTranslation = __webpack_exports__.applySurveyTranslation;
|
|
65
68
|
exports.buildSurveyResponseProperties = __webpack_exports__.buildSurveyResponseProperties;
|
|
@@ -68,6 +71,7 @@ exports.detectSurveyLanguage = __webpack_exports__.detectSurveyLanguage;
|
|
|
68
71
|
exports.doesSurveyActivateByEvent = __webpack_exports__.doesSurveyActivateByEvent;
|
|
69
72
|
exports.findBestTranslationMatch = __webpack_exports__.findBestTranslationMatch;
|
|
70
73
|
exports.getBaseLanguage = __webpack_exports__.getBaseLanguage;
|
|
74
|
+
exports.getDisplayOrderChoices = __webpack_exports__.getDisplayOrderChoices;
|
|
71
75
|
exports.getLanguageFromStoredPersonProperties = __webpack_exports__.getLanguageFromStoredPersonProperties;
|
|
72
76
|
exports.getLengthFromRules = __webpack_exports__.getLengthFromRules;
|
|
73
77
|
exports.getRequirementsHint = __webpack_exports__.getRequirementsHint;
|
|
@@ -84,6 +88,7 @@ exports.isValidRegex = __webpack_exports__.isValidRegex;
|
|
|
84
88
|
exports.matchPropertyFilters = __webpack_exports__.matchPropertyFilters;
|
|
85
89
|
exports.normalizeLanguageCode = __webpack_exports__.normalizeLanguageCode;
|
|
86
90
|
exports.propertyComparisons = __webpack_exports__.propertyComparisons;
|
|
91
|
+
exports.shuffle = __webpack_exports__.shuffle;
|
|
87
92
|
exports.surveyHasResponses = __webpack_exports__.surveyHasResponses;
|
|
88
93
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
89
94
|
"SURVEY_LANGUAGE_PROPERTY",
|
|
@@ -94,6 +99,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
94
99
|
"doesSurveyActivateByEvent",
|
|
95
100
|
"findBestTranslationMatch",
|
|
96
101
|
"getBaseLanguage",
|
|
102
|
+
"getDisplayOrderChoices",
|
|
97
103
|
"getLanguageFromStoredPersonProperties",
|
|
98
104
|
"getLengthFromRules",
|
|
99
105
|
"getRequirementsHint",
|
|
@@ -110,6 +116,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
110
116
|
"matchPropertyFilters",
|
|
111
117
|
"normalizeLanguageCode",
|
|
112
118
|
"propertyComparisons",
|
|
119
|
+
"shuffle",
|
|
113
120
|
"surveyHasResponses"
|
|
114
121
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
115
122
|
Object.defineProperty(exports, '__esModule', {
|
|
@@ -4,3 +4,4 @@ export { applySurveyTranslation, detectSurveyLanguage, findBestTranslationMatch,
|
|
|
4
4
|
export { canSurveyActivateRepeatedly, doesSurveyActivateByEvent, isSurveyIterationBased } from "./activation.mjs";
|
|
5
5
|
export { getSurveyIterationKey, isSurveyKeyForSurvey } from "./keys.mjs";
|
|
6
6
|
export { isMatchingRegex, isValidRegex, matchPropertyFilters, propertyComparisons } from "./property-matching.mjs";
|
|
7
|
+
export { getDisplayOrderChoices, shuffle } from "./shuffling.mjs";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MultipleSurveyQuestion } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Fisher-Yates shuffle without mutating the input array.
|
|
4
|
+
*/
|
|
5
|
+
export declare const shuffle: <T>(array: readonly T[]) => T[];
|
|
6
|
+
export declare const getDisplayOrderChoices: (question: Pick<MultipleSurveyQuestion, "choices" | "hasOpenChoice" | "shuffleOptions">) => string[];
|
|
7
|
+
//# sourceMappingURL=shuffling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shuffling.d.ts","sourceRoot":"","sources":["../../src/surveys/shuffling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGtD;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,SAAS,CAAC,EAAE,KAAG,CAAC,EASjD,CAAA;AAUD,eAAO,MAAM,sBAAsB,GACjC,UAAU,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,CAAC,KACrF,MAAM,EAcR,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
getDisplayOrderChoices: ()=>getDisplayOrderChoices,
|
|
32
|
+
shuffle: ()=>shuffle
|
|
33
|
+
});
|
|
34
|
+
const type_utils_js_namespaceObject = require("../utils/type-utils.js");
|
|
35
|
+
const shuffle = (array)=>{
|
|
36
|
+
const shuffled = [
|
|
37
|
+
...array
|
|
38
|
+
];
|
|
39
|
+
for(let index = shuffled.length - 1; index > 0; index--){
|
|
40
|
+
const swapIndex = Math.floor(Math.random() * (index + 1));
|
|
41
|
+
[shuffled[index], shuffled[swapIndex]] = [
|
|
42
|
+
shuffled[swapIndex],
|
|
43
|
+
shuffled[index]
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
return shuffled;
|
|
47
|
+
};
|
|
48
|
+
const reverseIfUnshuffled = (unshuffled, shuffled)=>{
|
|
49
|
+
if (shuffled.length > 1 && unshuffled.every((value, index)=>value === shuffled[index])) return shuffled.reverse();
|
|
50
|
+
return shuffled;
|
|
51
|
+
};
|
|
52
|
+
const getDisplayOrderChoices = (question)=>{
|
|
53
|
+
if (!question.shuffleOptions) return question.choices;
|
|
54
|
+
const choices = [
|
|
55
|
+
...question.choices
|
|
56
|
+
];
|
|
57
|
+
const openEndedChoice = question.hasOpenChoice ? choices.pop() ?? null : null;
|
|
58
|
+
const shuffledChoices = reverseIfUnshuffled(choices, shuffle(choices));
|
|
59
|
+
if (!(0, type_utils_js_namespaceObject.isNull)(openEndedChoice)) shuffledChoices.push(openEndedChoice);
|
|
60
|
+
return shuffledChoices;
|
|
61
|
+
};
|
|
62
|
+
exports.getDisplayOrderChoices = __webpack_exports__.getDisplayOrderChoices;
|
|
63
|
+
exports.shuffle = __webpack_exports__.shuffle;
|
|
64
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
65
|
+
"getDisplayOrderChoices",
|
|
66
|
+
"shuffle"
|
|
67
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
68
|
+
Object.defineProperty(exports, '__esModule', {
|
|
69
|
+
value: true
|
|
70
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { isNull } from "../utils/type-utils.mjs";
|
|
2
|
+
const shuffle = (array)=>{
|
|
3
|
+
const shuffled = [
|
|
4
|
+
...array
|
|
5
|
+
];
|
|
6
|
+
for(let index = shuffled.length - 1; index > 0; index--){
|
|
7
|
+
const swapIndex = Math.floor(Math.random() * (index + 1));
|
|
8
|
+
[shuffled[index], shuffled[swapIndex]] = [
|
|
9
|
+
shuffled[swapIndex],
|
|
10
|
+
shuffled[index]
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
return shuffled;
|
|
14
|
+
};
|
|
15
|
+
const reverseIfUnshuffled = (unshuffled, shuffled)=>{
|
|
16
|
+
if (shuffled.length > 1 && unshuffled.every((value, index)=>value === shuffled[index])) return shuffled.reverse();
|
|
17
|
+
return shuffled;
|
|
18
|
+
};
|
|
19
|
+
const getDisplayOrderChoices = (question)=>{
|
|
20
|
+
if (!question.shuffleOptions) return question.choices;
|
|
21
|
+
const choices = [
|
|
22
|
+
...question.choices
|
|
23
|
+
];
|
|
24
|
+
const openEndedChoice = question.hasOpenChoice ? choices.pop() ?? null : null;
|
|
25
|
+
const shuffledChoices = reverseIfUnshuffled(choices, shuffle(choices));
|
|
26
|
+
if (!isNull(openEndedChoice)) shuffledChoices.push(openEndedChoice);
|
|
27
|
+
return shuffledChoices;
|
|
28
|
+
};
|
|
29
|
+
export { getDisplayOrderChoices, shuffle };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posthog/core",
|
|
3
|
-
"version": "1.54.
|
|
3
|
+
"version": "1.54.4",
|
|
4
4
|
"bugs": {
|
|
5
5
|
"url": "https://github.com/PostHog/posthog-js/issues"
|
|
6
6
|
},
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@posthog/types": "^1.412.
|
|
73
|
+
"@posthog/types": "^1.412.1"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@rslib/core": "0.23.2",
|
|
@@ -79,12 +79,14 @@
|
|
|
79
79
|
"@posthog-tooling/tsconfig-base": "1.1.1"
|
|
80
80
|
},
|
|
81
81
|
"scripts": {
|
|
82
|
+
"check-types": "tsc --noEmit --project tsconfig.build.json",
|
|
82
83
|
"clean": "rimraf dist",
|
|
83
84
|
"lint": "oxlint --report-unused-disable-directives-severity error src",
|
|
84
85
|
"lint:fix": "oxlint --report-unused-disable-directives-severity error src --fix",
|
|
85
86
|
"build": "rslib build",
|
|
86
87
|
"dev": "rslib build -w",
|
|
87
88
|
"test:unit": "NODE_OPTIONS=--expose-gc vitest run",
|
|
89
|
+
"test:built": "node --test scripts/check-declaration-sourcemap.mjs",
|
|
88
90
|
"package": "pnpm pack --out $PACKAGE_DEST/%s.tgz"
|
|
89
91
|
}
|
|
90
92
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoercingContext, ErrorTrackingCoercer, ExceptionLike } from '
|
|
1
|
+
import { CoercingContext, ErrorTrackingCoercer, ExceptionLike } from '../types'
|
|
2
2
|
import { isBuiltin, isString } from '@/utils'
|
|
3
3
|
|
|
4
4
|
export class DOMExceptionCoercer implements ErrorTrackingCoercer<DOMException> {
|
|
@@ -19,3 +19,4 @@ export {
|
|
|
19
19
|
export { canSurveyActivateRepeatedly, doesSurveyActivateByEvent, isSurveyIterationBased } from './activation'
|
|
20
20
|
export { getSurveyIterationKey, isSurveyKeyForSurvey, type SurveyWithIteration } from './keys'
|
|
21
21
|
export { isMatchingRegex, isValidRegex, matchPropertyFilters, propertyComparisons } from './property-matching'
|
|
22
|
+
export { getDisplayOrderChoices, shuffle } from './shuffling'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
+
import { SurveyQuestionType } from '../types'
|
|
3
|
+
import { getDisplayOrderChoices, shuffle } from './shuffling'
|
|
4
|
+
|
|
5
|
+
afterEach(() => vi.restoreAllMocks())
|
|
6
|
+
|
|
7
|
+
describe('survey choice shuffling', () => {
|
|
8
|
+
const question = (choices: string[], shuffleOptions = true, hasOpenChoice = false) => ({
|
|
9
|
+
type: SurveyQuestionType.SingleChoice as const,
|
|
10
|
+
question: 'Pick one',
|
|
11
|
+
choices,
|
|
12
|
+
shuffleOptions,
|
|
13
|
+
hasOpenChoice,
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('uses Fisher-Yates without mutating the input', () => {
|
|
17
|
+
vi.spyOn(Math, 'random').mockReturnValue(0)
|
|
18
|
+
const source = Object.freeze(['a', 'b', 'c'])
|
|
19
|
+
expect(shuffle(source)).toEqual(['b', 'c', 'a'])
|
|
20
|
+
expect(source).toEqual(['a', 'b', 'c'])
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it.each([false, true])('keeps Other last without mutating choices (open=%s)', (hasOpenChoice) => {
|
|
24
|
+
vi.spyOn(Math, 'random').mockReturnValue(0)
|
|
25
|
+
const source = question(['a', 'b', 'c', ...(hasOpenChoice ? ['Other'] : [])], true, hasOpenChoice)
|
|
26
|
+
Object.freeze(source.choices)
|
|
27
|
+
Object.freeze(source)
|
|
28
|
+
expect(getDisplayOrderChoices(source)).toEqual(['b', 'c', 'a', ...(hasOpenChoice ? ['Other'] : [])])
|
|
29
|
+
expect(getDisplayOrderChoices(source)).toEqual(['b', 'c', 'a', ...(hasOpenChoice ? ['Other'] : [])])
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
it('reverses the regular choices if randomness leaves their order unchanged', () => {
|
|
33
|
+
vi.spyOn(Math, 'random').mockReturnValue(0.999999)
|
|
34
|
+
expect(getDisplayOrderChoices(question(['a', 'b', 'c', 'Other'], true, true))).toEqual(['c', 'b', 'a', 'Other'])
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it.each([false, undefined])('preserves configured order when shuffleOptions=%s', (shuffleOptions) => {
|
|
38
|
+
const source = { ...question(['a', 'b', 'Other'], false, true), shuffleOptions }
|
|
39
|
+
expect(getDisplayOrderChoices(source)).toBe(source.choices)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it.each([[], ['Other'], ['a', 'Other'], ['a', 'a', 'Other'], ['a', 'b', '']])(
|
|
43
|
+
'retains every choice in %j',
|
|
44
|
+
(...choices) => {
|
|
45
|
+
const source = question(choices, true, true)
|
|
46
|
+
const result = getDisplayOrderChoices(source)
|
|
47
|
+
expect([...result].sort()).toEqual([...choices].sort())
|
|
48
|
+
if (choices.length) expect(result[result.length - 1]).toBe(choices[choices.length - 1])
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
})
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { MultipleSurveyQuestion } from '../types'
|
|
2
|
+
import { isNull } from '../utils/type-utils'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Fisher-Yates shuffle without mutating the input array.
|
|
6
|
+
*/
|
|
7
|
+
export const shuffle = <T>(array: readonly T[]): T[] => {
|
|
8
|
+
const shuffled = [...array]
|
|
9
|
+
|
|
10
|
+
for (let index = shuffled.length - 1; index > 0; index--) {
|
|
11
|
+
const swapIndex = Math.floor(Math.random() * (index + 1))
|
|
12
|
+
;[shuffled[index], shuffled[swapIndex]] = [shuffled[swapIndex], shuffled[index]]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return shuffled
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const reverseIfUnshuffled = <T>(unshuffled: readonly T[], shuffled: T[]): T[] => {
|
|
19
|
+
if (shuffled.length > 1 && unshuffled.every((value, index) => value === shuffled[index])) {
|
|
20
|
+
return shuffled.reverse()
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return shuffled
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const getDisplayOrderChoices = (
|
|
27
|
+
question: Pick<MultipleSurveyQuestion, 'choices' | 'hasOpenChoice' | 'shuffleOptions'>
|
|
28
|
+
): string[] => {
|
|
29
|
+
if (!question.shuffleOptions) {
|
|
30
|
+
return question.choices
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const choices = [...question.choices]
|
|
34
|
+
const openEndedChoice = question.hasOpenChoice ? (choices.pop() ?? null) : null
|
|
35
|
+
const shuffledChoices = reverseIfUnshuffled(choices, shuffle(choices))
|
|
36
|
+
|
|
37
|
+
if (!isNull(openEndedChoice)) {
|
|
38
|
+
shuffledChoices.push(openEndedChoice)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return shuffledChoices
|
|
42
|
+
}
|
|
@@ -568,7 +568,7 @@ globstar while`,s,pe,o,ae,rt),this.matchOne(s.slice(pe),o.slice(ae),f))return th
|
|
|
568
568
|
`],[102,"\f"],[114,"\r"],[116," "]]),xoe=new Map([...SV,[118,"\v"],[48,"\0"]]),UKt=new Map([['"','"'],["\\","\\"],["/","/"],["\b","b"],[`
|
|
569
569
|
`,"n"],["\f","f"],["\r","r"],[" ","t"]]),$Er=new Map([...UKt,["\v","v"],["\0","0"],["\u2028","u2028"],["\u2029","u2029"]]),Toe=new Map([["[","LBracket"],["]","RBracket"],["{","LBrace"],["}","RBrace"],[":","Colon"],[",","Comma"],[RKt,"Boolean"],[MKt,"Boolean"],[jKt,"Null"]]),Soe=new Map([...Toe,["NaN","Number"],[BKt,"Number"]]),FPe=new Set([10,13,8232,8233]),LP=class extends Error{static{t(this,"ErrorWithLocation")}constructor(o,{line:f,column:d,offset:y}){super(`${o} (${f}:${d})`),this.line=f,this.column=d,this.offset=y}},LPe=class extends LP{static{t(this,"UnexpectedChar")}constructor(o,f){super(`Unexpected character '${String.fromCharCode(o)}' found.`,f)}},RPe=class extends LP{static{t(this,"UnexpectedIdentifier")}constructor(o,f){super(`Unexpected identifier '${o}' found.`,f)}},sO=class extends LP{static{t(this,"UnexpectedToken")}constructor(o){super(`Unexpected token ${o.type} found.`,o.loc.start)}},Eoe=class extends LP{static{t(this,"UnexpectedEOF")}constructor(o){super("Unexpected end of input found.",o)}},zKt=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,JKt=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,$Kt=13,Ant=10,MPe=class{static{t(this,"CharCodeReader")}#e="";#r=1;#t=0;#n=-1;#s=!1;#d=-1;#l=!1;constructor(o){this.#e=o}#u(){this.#l||(this.#t++,this.#n++,this.#d=-1,this.#l=!0)}locate(){return{line:this.#r,column:this.#t,offset:this.#n}}next(){if(this.#n>=this.#e.length-1)return this.#u(),-1;this.#n++;let o=this.#e.charCodeAt(this.#n);return this.#s?(this.#r++,this.#t=1,this.#s=!1):this.#t++,o===$Kt?(this.#s=!0,this.peek()===Ant&&this.#n++):o===Ant&&(this.#s=!0),this.#d=o,o}peek(){return this.#n===this.#e.length-1?-1:this.#e.charCodeAt(this.#n+1)}match(o){return o(this.peek())?(this.next(),!0):!1}current(){return this.#d}},WKt="Infinity",qKt="NaN",VKt=new Set([116,102,110]),jPe=new Set([32,9,10,13]),Nnt=new Set([...jPe,11,12,160,8232,8233,65279,160,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288]),HKt={mode:"json",ranges:!1},GKt=new Set(["true","false","null"]),g_={EOF:0,Number:1,String:2,Boolean:3,Null:4,NaN:5,Infinity:6,Identifier:7,Colon:20,LBrace:21,RBrace:22,LBracket:23,RBracket:24,Comma:25,LineComment:40,BlockComment:41};function FP(s){return s>=48&&s<=57}t(FP,"isDigit");function OPe(s){return FP(s)||s>=65&&s<=70||s>=97&&s<=102}t(OPe,"isHexDigit");function YKt(s){return s>=49&&s<=57}t(YKt,"isPositiveDigit");function KKt(s){return VKt.has(s)}t(KKt,"isKeywordStart");function Ont(s){return FP(s)||s===46||s===45}t(Ont,"isNumberStart");function XKt(s){return Ont(s)||s===43}t(XKt,"isJSON5NumberStart");function Int(s,o){return s===34||o&&s===39}t(Int,"isStringStart");function Fnt(s){if(s===36||s===95||s===92||s>=97&&s<=122||s>=65&&s<=90||s===8204||s===8205)return!0;let o=String.fromCharCode(s);return zKt.test(o)}t(Fnt,"isJSON5IdentifierStart");function ZKt(s){if(Fnt(s)||FP(s))return!0;let o=String.fromCharCode(s);return JKt.test(o)}t(ZKt,"isJSON5IdentifierPart");var BPe=class{static{t(this,"Tokenizer")}#e;#r;#t;#n;#s;#d;#l;#u;#f;#_;#c;constructor(o,f){this.#r=o,this.#e={...HKt,...f},this.#t=new MPe(o),this.#n=this.#e.mode==="json5",this.#s=this.#e.mode!=="json",this.#d=this.#e.ranges,this.#u=this.#n?xoe.has.bind(xoe):SV.has.bind(SV),this.#f=this.#n?FPe.has.bind(FPe):()=>!1,this.#_=this.#n?d=>d===120:()=>!1,this.#c=this.#n?Nnt.has.bind(Nnt):jPe.has.bind(jPe)}#i(o,f=this.#t.locate()){throw new LPe(o,f)}#a(o,f=this.#t.locate()){throw new RPe(o,f)}#h(){throw new Eoe(this.#t.locate())}#p(o,f,d,y){let E=d.offset+f,A=this.#e.ranges?{range:[d.offset,E]}:void 0;return{type:o,loc:{start:d,end:y||{line:d.line,column:d.column+f,offset:E}},...A}}#m(o){let f="",d;for(let y=0;y<o;y++){if(d=this.#t.peek(),OPe(d)){this.#t.next(),f+=String.fromCharCode(d);continue}this.#i(d)}return f}#g(o){let f="";do{if(f+=String.fromCharCode(o),o===92&&(o=this.#t.next(),o!==117&&this.#i(o),f+=String.fromCharCode(o),f+=this.#m(4)),o=this.#t.peek(),!ZKt(o))break;this.#t.next()}while(!0);return f}#v(o){let f=o,d=1;for(o=this.#t.peek();o!==-1&&o!==f;){if(this.#t.next(),d++,o===92)if(o=this.#t.peek(),this.#u(o)||this.#f(o))this.#t.next(),d++;else if(o===117){this.#t.next(),d++;let y=this.#m(4);d+=y.length}else if(this.#_(o)){this.#t.next(),d++;let y=this.#m(2);d+=y.length}else this.#n?(this.#t.next(),d++):this.#i(o);o=this.#t.peek()}return o===-1&&(this.#t.next(),this.#h()),this.#t.next(),d++,d}#b(o){let f=1;if(o===45||this.#n&&o===43){if(o=this.#t.peek(),this.#n&&(o===73||o===78)){this.#t.next();let d=this.#g(o);return d!==WKt&&d!==qKt&&this.#i(o),f+d.length}FP(o)||this.#i(o),this.#t.next(),f++}if(o===48)if(o=this.#t.peek(),this.#n&&(o===120||o===88)){this.#t.next(),f++,o=this.#t.peek(),OPe(o)||(this.#t.next(),this.#i(o));do this.#t.next(),f++,o=this.#t.peek();while(OPe(o))}else FP(o)&&this.#i(o);else if(!this.#n||o!==46)for(YKt(o)||this.#i(o),o=this.#t.peek();FP(o);)this.#t.next(),f++,o=this.#t.peek();if(o===46){let d=-1;for(this.#t.next(),f++,d++,o=this.#t.peek();FP(o);)this.#t.next(),f++,d++,o=this.#t.peek();!this.#n&&d===0&&(this.#t.next(),o?this.#i(o):this.#h())}if(o===101||o===69)for(this.#t.next(),f++,o=this.#t.peek(),(o===43||o===45)&&(this.#t.next(),f++,o=this.#t.peek()),o===-1&&(this.#t.next(),this.#h()),FP(o)||(this.#t.next(),this.#i(o));FP(o);)this.#t.next(),f++,o=this.#t.peek();return f}#E(o){let f=1;if(o=this.#t.peek(),o===47){do this.#t.next(),f+=1,o=this.#t.peek();while(o>-1&&o!==13&&o!==10);return{length:f,multiline:!1}}if(o===42){for(this.#t.next(),f+=1;o>-1;)if(o=this.#t.peek(),o===42){if(this.#t.next(),f+=1,o=this.#t.peek(),o===47)return this.#t.next(),f+=1,{length:f,multiline:!0}}else this.#t.next(),f+=1;this.#t.next(),this.#h()}this.#t.next(),this.#i(o)}next(){let o=this.#t.next();for(;this.#c(o);)o=this.#t.next();if(o===-1)return g_.EOF;let f=this.#t.locate(),d=String.fromCharCode(o);if(this.#n)if(Soe.has(d))this.#l=this.#p(Soe.get(d),1,f);else if(Fnt(o)){let y=this.#g(o);Soe.has(y)?this.#l=this.#p(Soe.get(y),y.length,f):this.#l=this.#p("Identifier",y.length,f)}else if(XKt(o)){let y=this.#b(o);this.#l=this.#p("Number",y,f)}else if(Int(o,this.#n)){let y=this.#v(o),E=this.#t.locate();this.#l=this.#p("String",y,f,{line:E.line,column:E.column+1,offset:E.offset+1})}else if(o===47&&this.#s){let y=this.#E(o),E=this.#t.locate();this.#l=this.#p(y.multiline?"BlockComment":"LineComment",y.length,f,{line:E.line,column:E.column+1,offset:E.offset+1})}else this.#i(o);else if(Toe.has(d))this.#l=this.#p(Toe.get(d),1,f);else if(KKt(o)){let y=this.#g(o);GKt.has(y)||this.#a(y,f),this.#l=this.#p(Toe.get(y),y.length,f)}else if(Ont(o)){let y=this.#b(o);this.#l=this.#p("Number",y,f)}else if(Int(o,this.#n)){let y=this.#v(o);this.#l=this.#p("String",y,f)}else if(o===47&&this.#s){let y=this.#E(o),E=this.#t.locate();this.#l=this.#p(y.multiline?"BlockComment":"LineComment",y.length,f,{line:E.line,column:E.column+1,offset:E.offset+1})}else this.#i(o);return g_[this.#l.type]}get token(){return this.#l}};var fT={document(s,o={}){return{type:"Document",body:s,loc:o.loc,...o}},string(s,o={}){return{type:"String",value:s,loc:o.loc,...o}},number(s,o={}){return{type:"Number",value:s,loc:o.loc,...o}},boolean(s,o={}){return{type:"Boolean",value:s,loc:o.loc,...o}},null(s={}){return{type:"Null",loc:s.loc,...s}},array(s,o={}){return{type:"Array",elements:s,loc:o.loc,...o}},element(s,o={}){return{type:"Element",value:s,loc:o.loc,...o}},object(s,o={}){return{type:"Object",members:s,loc:o.loc,...o}},member(s,o,f={}){return{type:"Member",name:s,value:o,loc:f.loc,...f}},identifier(s,o={}){return{type:"Identifier",name:s,loc:o.loc,...o}},nan(s="",o={}){return{type:"NaN",sign:s,loc:o.loc,...o}},infinity(s="",o={}){return{type:"Infinity",sign:s,loc:o.loc,...o}}},QKt={mode:"json",ranges:!1,tokens:!1,allowTrailingCommas:!1};function eXt(s,o,f=!1){let d="",y=s.indexOf("\\"),E=0;for(;y>=0;){d+=s.slice(E,y);let A=s.charAt(y+1),R=A.charCodeAt(0);if(f&&xoe.has(R))d+=xoe.get(R),E=y+2;else if(SV.has(R))d+=SV.get(R),E=y+2;else if(A==="u"){let q=s.slice(y+2,y+6);if(q.length<4||/[^0-9a-f]/i.test(q))throw new LP(`Invalid unicode escape \\u${q}.`,{line:o.loc.start.line,column:o.loc.start.column+y,offset:o.loc.start.offset+y});d+=String.fromCharCode(parseInt(q,16)),E=y+6}else if(f&&A==="x"){let q=s.slice(y+2,y+4);if(q.length<2||/[^0-9a-f]/i.test(q))throw new LP(`Invalid hex escape \\x${q}.`,{line:o.loc.start.line,column:o.loc.start.column+y,offset:o.loc.start.offset+y});d+=String.fromCharCode(parseInt(q,16)),E=y+4}else if(f&&FPe.has(R))E=y+2,A==="\r"&&s.charAt(E)===`
|
|
570
570
|
`&&E++;else if(f)d+=A,E=y+2;else throw new LP(`Invalid escape \\${A}.`,{line:o.loc.start.line,column:o.loc.start.column+y,offset:o.loc.start.offset+y});y=s.indexOf("\\",E)}return d+=s.slice(E),d}t(eXt,"getStringValue");function tXt(s,o,f=!1){switch(o.type){case"Boolean":return s==="true";case"Number":return Number(s);case"String":return eXt(s.slice(1,-1),o,f);default:throw new TypeError(`Unknown token type "${o.type}.`)}}t(tXt,"getLiteralValue");function Lnt(s,o){o=Object.freeze({...QKt,...o});let f=[],d=new BPe(s,{mode:o.mode,ranges:o.ranges}),y=o.mode==="json5",E=o.allowTrailingCommas||y;function A(){let Nr=d.next();return Nr&&o.tokens&&f.push(d.token),Nr}t(A,"nextNoComments");function R(){let Nr=d.next();return Nr&&o.tokens&&f.push(d.token),Nr>=g_.LineComment?R():Nr}t(R,"nextSkipComments");let q=o.mode==="json"?A:R;function K(Nr,br){if(Nr!==br)throw new sO(d.token)}t(K,"assertTokenType");function ve(Nr,br){if(!br.includes(Nr))throw new sO(d.token)}t(ve,"assertTokenTypes");function pe(Nr,br){return o.ranges?{range:[Nr.offset,br.offset]}:void 0}t(pe,"createRange");function ae(Nr){let br=d.token,js=pe(br.loc.start,br.loc.end),Ni=tXt(s.slice(br.loc.start.offset,br.loc.end.offset),br,y),ji={loc:{start:{...br.loc.start},end:{...br.loc.end}},...js};switch(Nr){case g_.String:return fT.string(Ni,ji);case g_.Number:return fT.number(Ni,ji);case g_.Boolean:return fT.boolean(Ni,ji);default:throw new TypeError(`Unknown token type ${br.type}.`)}}t(ae,"createLiteralNode");function rt(Nr){let br=pe(Nr.loc.start,Nr.loc.end),js=s.slice(Nr.loc.start.offset,Nr.loc.end.offset),jo={loc:{start:{...Nr.loc.start},end:{...Nr.loc.end}},...br};if(Nr.type!=="Identifier"){let ji="";return(js[0]==="+"||js[0]==="-")&&(ji=js[0]),fT[js.includes("NaN")?"nan":"infinity"](ji,jo)}return fT.identifier(js,jo)}t(rt,"createJSON5IdentifierNode");function ze(Nr){let br=pe(Nr.loc.start,Nr.loc.end);return fT.null({loc:{start:{...Nr.loc.start},end:{...Nr.loc.end}},...br})}t(ze,"createNullNode");function je(Nr){y?ve(Nr,[g_.String,g_.Identifier,g_.Number]):K(Nr,g_.String);let br=d.token,js=Nr===g_.String?ae(Nr):rt(br);if(y&&(js.type==="NaN"||js.type==="Infinity")){if(js.sign!=="")throw new sO(d.token);js=fT.identifier(js.type,{loc:js.loc,...pe(js.loc.start,js.loc.end)})}Nr=q(),K(Nr,g_.Colon);let Ni=Or(),jo=pe(js.loc.start,Ni.loc.end);return fT.member(js,Ni,{loc:{start:{...js.loc.start},end:{...Ni.loc.end}},...jo})}t(je,"parseProperty");function Bt(Nr){K(Nr,g_.LBrace);let br=d.token,js=[],Ni=q();if(Ni!==g_.RBrace)do{if(js.push(je(Ni)),Ni=q(),!Ni)throw new Eoe(js[js.length-1].loc.end);if(Ni===g_.Comma){if(Ni=q(),E&&Ni===g_.RBrace)break}else break}while(Ni);K(Ni,g_.RBrace);let jo=d.token,ji=pe(br.loc.start,jo.loc.end);return fT.object(js,{loc:{start:{...br.loc.start},end:{...jo.loc.end}},...ji})}t(Bt,"parseObject");function Ut(Nr){K(Nr,g_.LBracket);let br=d.token,js=[],Ni=q();if(Ni!==g_.RBracket)do{let Op=Or(Ni);if(js.push(fT.element(Op,{loc:Op.loc})),Ni=q(),Ni===g_.Comma){if(Ni=q(),E&&Ni===g_.RBracket)break}else break}while(Ni);K(Ni,g_.RBracket);let jo=d.token,ji=pe(br.loc.start,jo.loc.end);return fT.array(js,{loc:{start:{...br.loc.start},end:{...jo.loc.end}},...ji})}t(Ut,"parseArray");function Or(Nr){Nr=Nr??q();let br=d.token;switch(Nr){case g_.String:case g_.Boolean:return ae(Nr);case g_.Number:if(y){let js=s.slice(br.loc.start.offset,br.loc.end.offset);if((js[0]==="+"||js[0]==="-")&&(js=js.slice(1)),js==="NaN"||js==="Infinity")return rt(br)}return ae(Nr);case g_.Null:return ze(br);case g_.LBrace:return Bt(Nr);case g_.LBracket:return Ut(Nr);default:throw new sO(br)}}t(Or,"parseValue");let Jn=Or();if(q())throw new sO(d.token);let Wn={loc:{start:{line:1,column:1,offset:0},end:{...Jn.loc.end}}};return o.tokens&&(Wn.tokens=f),o.ranges&&(Wn.range=[Wn.loc.start.offset,Wn.loc.end.offset]),fT.document(Jn,Wn)}t(Lnt,"parse");var rXt=new Map([["Document",["body"]],["Object",["members"]],["Member",["name","value"]],["Element",["value"]],["Array",["elements"]],["String",[]],["Number",[]],["Boolean",[]],["Null",[]],["NaN",[]],["Infinity",[]],["Identifier",[]]]);function Rnt(s){return s&&typeof s=="object"}t(Rnt,"isObject");function nXt(s){return Rnt(s)&&typeof s.type=="string"}t(nXt,"isNode");function iXt(s,o){function f(d,y){typeof o.enter=="function"&&o.enter(d,y);for(let E of rXt.get(d.type)){let A=d[E];Rnt(A)&&(Array.isArray(A)?A.forEach(R=>f(R,d)):nXt(A)&&f(A,d))}typeof o.exit=="function"&&o.exit(d,y)}t(f,"visitNode"),f(s)}t(iXt,"traverse");function Mnt(s,o=()=>!0){let f=[];return iXt(s,{enter(d,y){f.push({node:d,parent:y,phase:"enter"})},exit(d,y){f.push({node:d,parent:y,phase:"exit"})}}),f.filter(o).values()}t(Mnt,"iterator");import sXt from"node:fs/promises";var TV=t((s,o)=>s.split(/\r?\n/)[o-1],"getFileLineContent"),Coe=t(async s=>{try{return await sXt.readFile(s,"utf-8")}catch{return}},"getSchemaContent"),xV=t(async s=>{try{return Lnt(s)}catch(o){if(o.column&&o.line&&o.message){let f=TV(s,o.line);return{column:o.column,line:o.line,length:void 0,lineText:f}}return}},"getSchemaAST");var jnt=t(async(s,o,f)=>{try{if(s.length===0)return;for(let d of s){let y=await Coe(d),E=await aXt(y,d,o,f);if(E)return E}}catch{}},"getRouteLocationByValue"),aXt=t(async(s,o,f,d)=>{try{if(!s)return;let y=null,E=await xV(s);if(E){for(let{node:A}of Mnt(E))if(A.value&&A.value===f){y=A.loc;break}if(y!==null){let A=TV(s,y.start.line);return{file:o,line:y.start.line,column:y.start.column,length:y.end.column-y.start.column,lineText:A,suggestion:d}}}}catch{}},"getRouteLocationByValueFromSchema");import Bnt from"node:fs/promises";import vE from"node:path";var UPe="schemas",zPe=".oas.json";var aO=t(async s=>(await Bnt.readdir(s)).map(f=>vE.join(s,f)).filter(f=>f.endsWith(zPe)).sort(),"getOpenApiFilesByAlphabetical"),B9=t(async s=>{let o=vE.resolve(s,"config");return(await Bnt.readdir(o)).filter(d=>d.endsWith(zPe)).length>=1},"oasFileInProject");function EV(s,o,f,d,y,E,A){if(E.has(f))return;let R;try{R=d.get(f)}catch(ze){throw new w1({text:`Failed to resolve reference: ${f}`,detail:ze.message,severity:"error",message:"Failed to resolve reference",location:{file:s,column:0,line:0,length:0,lineText:f,namespace:o,suggestion:"Check the reference and try again."}})}let q=woe(f),K=vE.basename(q,vE.extname(q)),ve=f.indexOf("#"),pe=ve>=0?f.substring(0,ve):f,ae=ve>=0?f.substring(ve+1):"",rt=d.get(pe);if(ae){let ze=ae.split("/").filter(Boolean);for(let je of ze)if(rt=rt[je],rt===void 0)throw new Error(`Cannot resolve JSON pointer: ${ae}`)}if(rt&&typeof rt=="object"&&"$ref"in rt&&typeof rt.$ref=="string"&&!rt.$ref.startsWith("#")){let ze=vE.resolve(vE.dirname(pe),rt.$ref);if(q=ze,K=vE.basename(q,vE.extname(q)),pe=ze,E.has(pe)){let Bt=E.get(pe);if(Bt===void 0)throw new Error(`Expected to find ${pe} in refsVisited map`);E.set(f,Bt);return}let je=y.length;E.set(f,je),E.set(pe,je),y.push(pe),koe(q,K,R,d,y,E,A)}else E.set(f,y.length),y.push(f),koe(woe(f),o,R,d,y,E,A)}t(EV,"chaseRefs");function koe(s,o,f,d,y,E,A){if(Array.isArray(f))for(let R of f)koe(s,o,R,d,y,E,A);else if(typeof f=="object")for(let R in f){if(R==="$ref"){let q=f[R];A&&(f[R]=A(o,q,s)),EV(s,o,$N(s,q),d,y,E,A)}koe(s,o,f[R],d,y,E,A)}}t(koe,"lookForRefs");function $N(s,o){let f=o.indexOf("#");return f>=0?`${vE.resolve(s,o.substring(0,f))}${o.substring(f)}`:vE.resolve(vE.dirname(s),o)}t($N,"getFullyQualifiedRefName");function woe(s){let o=s.indexOf("#");return o>=0?s.substring(0,o):s}t(woe,"getFilePathNameFromRefName");import sle from"node:path";var Doe=class s{static{t(this,"ContextData")}static#e;#r;constructor(o){this.#r=o}get(o){return s.get(o,this.#r)}static get(o,f){return s.#e||(s.#e=new WeakMap),s.#e.get(o)?.get(f)}set(o,f){s.set(o,this.#r,f)}static set(o,f,d){s.#e||(s.#e=new WeakMap);let y=s.#e.get(o);y||(y=new Map),y.set(f,d),s.#e.set(o,y)}};var dCr=new Doe(Symbol("ai-gateway-app-configuration"));function oXt(s){if(s.length>=255)throw new TypeError("Alphabet too long");let o=new Uint8Array(256);for(let K=0;K<o.length;K++)o[K]=255;for(let K=0;K<s.length;K++){let ve=s.charAt(K),pe=ve.charCodeAt(0);if(o[pe]!==255)throw new TypeError(ve+" is ambiguous");o[pe]=K}let f=s.length,d=s.charAt(0),y=Math.log(f)/Math.log(256),E=Math.log(256)/Math.log(f);function A(K){if(K instanceof Uint8Array||(ArrayBuffer.isView(K)?K=new Uint8Array(K.buffer,K.byteOffset,K.byteLength):Array.isArray(K)&&(K=Uint8Array.from(K))),!(K instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(K.length===0)return"";let ve=0,pe=0,ae=0,rt=K.length;for(;ae!==rt&&K[ae]===0;)ae++,ve++;let ze=(rt-ae)*E+1>>>0,je=new Uint8Array(ze);for(;ae!==rt;){let Or=K[ae],Jn=0;for(let _n=ze-1;(Or!==0||Jn<pe)&&_n!==-1;_n--,Jn++)Or+=256*je[_n]>>>0,je[_n]=Or%f>>>0,Or=Or/f>>>0;if(Or!==0)throw new Error("Non-zero carry");pe=Jn,ae++}let Bt=ze-pe;for(;Bt!==ze&&je[Bt]===0;)Bt++;let Ut=d.repeat(ve);for(;Bt<ze;++Bt)Ut+=s.charAt(je[Bt]);return Ut}t(A,"encode");function R(K){if(typeof K!="string")throw new TypeError("Expected String");if(K.length===0)return new Uint8Array;let ve=0,pe=0,ae=0;for(;K[ve]===d;)pe++,ve++;let rt=(K.length-ve)*y+1>>>0,ze=new Uint8Array(rt);for(;ve<K.length;){let Or=K.charCodeAt(ve);if(Or>255)return;let Jn=o[Or];if(Jn===255)return;let _n=0;for(let Wn=rt-1;(Jn!==0||_n<ae)&&Wn!==-1;Wn--,_n++)Jn+=f*ze[Wn]>>>0,ze[Wn]=Jn%256>>>0,Jn=Jn/256>>>0;if(Jn!==0)throw new Error("Non-zero carry");ae=_n,ve++}let je=rt-ae;for(;je!==rt&&ze[je]===0;)je++;let Bt=new Uint8Array(pe+(rt-je)),Ut=pe;for(;je!==rt;)Bt[Ut++]=ze[je++];return Bt}t(R,"decodeUnsafe");function q(K){let ve=R(K);if(ve)return ve;throw new Error("Non-base"+f+" character")}return t(q,"decode"),{encode:A,decodeUnsafe:R,decode:q}}t(oXt,"base");var Unt=oXt;var cXt="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",Poe=Unt(cXt);var znt="x-real-ip",JPe="true-client-ip";var Jnt="zp-local-service";var Aoe=class extends Error{static{t(this,"SystemError")}constructor(o,f){super(o,f),this.name="InternalError"}},RP=class extends Error{static{t(this,"RuntimeError")}extensionMembers;constructor(o,f){typeof o=="string"?super(o,f):(super(o.message,f),this.extensionMembers=o.extensionMembers),this.name="RuntimeError"}};var lXt=!1;function U9(s,o){return{open:`\x1B[${s.join(";")}m`,close:`\x1B[${o}m`,regexp:new RegExp(`\\x1b\\[${o}m`,"g")}}t(U9,"code");function z9(s,o){return lXt?`${o.open}${s.replace(o.regexp,o.open)}${o.close}`:s}t(z9,"run");function uXt(s){return z9(s,U9([31],39))}t(uXt,"red");function fXt(s){return z9(s,U9([32],39))}t(fXt,"green");function _Xt(s){return z9(s,U9([33],39))}t(_Xt,"yellow");function pXt(s){return z9(s,U9([34],39))}t(pXt,"blue");function dXt(s){return z9(s,U9([35],39))}t(dXt,"magenta");function mXt(s){return z9(s,U9([36],39))}t(mXt,"cyan");var xCr=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|"),"g");var $nt=[uXt,fXt,_Xt,pXt,dXt,mXt];function hXt(s){let o=0,f=s.length,d=0;if(f>0)for(;d<f;)o=(o<<5)-o+s.charCodeAt(d++)|0;return o}t(hXt,"hashCode");function Wnt(s){let o=Math.abs(hXt(s));return $nt[o%$nt.length]}t(Wnt,"generateColor");import{inspect as gXt}from"node:util";function qnt(s,o,...f){let d=0,y=f.length,E=String(o).replace(/%[sdjoO%]/g,A=>{if(A==="%%")return"%";if(d>=y)return A;switch(A){case"%s":return String(f[d++]);case"%d":return Number(f[d++]).toString();case"%o":return s(f[d++]).split(`
|
|
571
|
-
`).map(R=>R.trim()).join(" ");case"%O":return s(f[d++]);case"%j":try{return JSON.stringify(f[d++])}catch{return"[Circular]"}default:return A}});for(let A of f.splice(d))A===null||!(typeof A=="object"&&A!==null)?E+=" "+A:E+=" "+s(A);return E}t(qnt,"format");var Vnt=t((s,...o)=>qnt(gXt,s,o),"format");var $Pe=class{static{t(this,"Debugger")}manager;ns;color;last;enabled;constructor(o,f){this.manager=o,this.ns=f,this.color=Wnt(f),this.last=0,this.enabled=o.enabled.some(d=>d.test(f))}log(...o){if(!this.enabled)return;let f,d=o[0];typeof d=="function"?f=d():f=String(d);let y=Date.now()-(this.last||Date.now());f=Vnt(f,...o);let E=`${this.color(this.ns)} ${f} ${this.color(`+${y}ms`)}`;console.log(E),this.last=Date.now()}},WPe=class{static{t(this,"DebugManager")}debuggers;enabled;constructor(o){this.debuggers=new Map,this.enabled=o??[]}};function yXt(s){return!s||s.length===0?[]:(s=s.replace(/\s/g,"").replace(/\*/g,".+"),s.split(",").map(o=>new RegExp(`^${o}$`)))}t(yXt,"extract");var Noe;function Ioe(s){Noe||(Noe=new WPe(yXt(process.env.DEBUG)));let o=new $Pe(Noe,s);return Noe.debuggers.set(s,o),Object.assign(o.log.bind(o),{self:o})}t(Ioe,"debug");var WN=Ioe("zuplo:runtime:external-service");function vXt(){let s,{__ZUPLO_EXTERNAL_SERVICE_TOKEN:o}=Cm.instance.runtime;if(o&&o!=="undefined")try{let f=atob(o);s=JSON.parse(f)}catch{}return s}t(vXt,"getServiceAuth");async function Hnt(s,o){let f=".proxy",d=".tunnel";if(typeof s=="string"){let y=new URL(s),E=y.hostname;if(E.endsWith(f)){let Bt=E.slice(0,-f.length),Ut=new URL(`http://${Bt}${y.pathname}${y.search}`);WN(`Routing to proxy: ${Ut.toString()}`);let Or=o??{};return CV(Ut.toString(),Or)}let A=E.endsWith(d),R=E.indexOf(".")===-1;if(!(A||R))throw new RP(`Invalid service hostname suffix: ${E}. Use .proxy for proxy routing, .tunnel for explicit tunnel routing, or no suffix for default tunnel routing.`);let K=A?E.slice(0,-d.length):E,ve=vXt();if(!ve)throw WN("There is no external service auth configured for this zup."),new RP("There are no external services configured for this zup.");WN(`Using external service auth. ClientId: ${ve.clientId})`);let pe=o??{},ae=new Headers(pe.headers||{});ae.set("CF-Access-Client-Id",ve.clientId),ae.set("CF-Access-Client-Secret",ve.clientSecret),pe.headers=ae;let rt;if(ve.customServiceMapping?.[K])rt=`https://${ve.customServiceMapping[K]}`;else if(Cm.instance.useLegacyServiceRouting)rt=`https://${K}.zuptunnel.com`;else{WN("Using sha256 service routing");let Bt=Cm.instance.build;if(Bt.ACCOUNT_NAME&&Bt.PROJECT_NAME&&Bt.ENVIRONMENT_TYPE){let Ut=await bXt(K,Bt.ACCOUNT_NAME,Bt.PROJECT_NAME,Bt.ENVIRONMENT_TYPE),Or=Ynt(Bt.ENVIRONMENT_TYPE),Jn=await qPe(`${Bt.ACCOUNT_NAME}-${Bt.PROJECT_NAME}-${Or}`);Jn==="40d7ad502f5d743997999594c177184a00161a77865423511f3a1ea21eb5a5e"||Jn==="d05bffe8fa91a300187d2cf43e8aa4a56bd809c442ae10d1ee49af7d29a5a11"?rt=`https://${Ut}.zuptunnel.com`:rt=`https://${Ut}.t.zuplo.app`}else throw WN("Cannot use sha256 service routing, missing build variables"),new RP("Failed to generate fully qualified tunnel url.")}let ze=new URL(`${rt}${y.pathname}${y.search}`);WN(`Calling external service: ${ze.toString()}`);let je=await CV(ze.toString(),pe);if(je.status===403&&je.headers.get("cf-access-domain")!==null)throw kV.console.error("403 Forbidden when calling external service.",{clientId:ve.clientId,tunnelHost:rt}),new RP("Could not connect to secure tunnel.");return je}else throw WN("Cannot call external service with Request object"),new RP("Currently, we only support fetch(<some_string>, ...).")}t(Hnt,"externalServiceHandler");async function Gnt(s,o){if(typeof s=="string"){let f=new URL(s),d=f.hostname,y=o??{},E=`http://${d}.zuplo.svc.cluster.local:9000`,A=new URL(`${E}${f.pathname}${f.search}`),R=new Headers(y.headers||{});return R.set(Jnt,d),y.headers=R,await CV(A.toString(),y)}else throw new RP("Currently, we only support fetch(<some_string>, ...).")}t(Gnt,"clusterServiceHandler");async function bXt(s,o,f,d){let y=s.toLowerCase(),E=o.toLowerCase(),A=f.toLowerCase(),R=Ynt(d);WN(`Hashing service name: ${E}-${y}.${E}-${A}-${R}`);let q=await qPe(`${E}-${y}`),K=await qPe(`${E}-${A}-${R}`);return`${q}.${K}`}t(bXt,"hashServiceName");async function qPe(s){let o=new TextEncoder().encode(s),f=await crypto.subtle.digest("SHA-256",o);return Array.from(new Uint8Array(f)).map(E=>E.toString(16).padStart(2,"0")).join("").slice(0,-1)}t(qPe,"hashSegment");function Ynt(s){let o=s.toLowerCase();switch(o){case"production":case"preview":return o;default:return"working-copy"}}t(Ynt,"sanitizeEnvironmentType");var VPe=new Map;VPe.set("service:",Hnt);VPe.set("local:",Gnt);var CV=globalThis.fetch;function HPe(s,o){let{transformedInit:f,mtlsCertificate:d}=SXt(o);if(typeof s=="string"){let y=new URL(s),E=VPe.get(y.protocol);return E?E(s,f):Knt(s,f,d)}else return Knt(s,f,d)}t(HPe,"internalFetch");globalThis.fetch=HPe;function Knt(s,o,f){if(!f)return CV(s,o);if(Cm.instance.isCloudflare){let y=Cm.instance.runtime[f];if(!y)throw new Error(`mTLS certificate binding '${f}' not found. Ensure the certificate is uploaded and properly configured.`);if(typeof y!="object"||typeof y.fetch!="function")throw new Error(`mTLS certificate binding '${f}' is not a valid mTLS certificate binding. Make sure it's configured as an mTLS certificate, not an environment variable.`);return y.fetch(s,o)}else if(Cm.instance.isDeno){let d=globalThis.managedDedicatedMtlsBindings?.[f];if(!d)throw new Error(`mTLS certificate binding '${f}' not found. Ensure the certificate is uploaded and properly configured.`);if(typeof d.fetch!="function")throw new Error(`mTLS certificate binding '${f}' is not a valid mTLS certificate binding.`);return d.fetch(s,o)}else throw new Error("mTLS client certificates are not supported in this runtime environment")}t(Knt,"performFetch");var SXt=t(s=>{if(!s||s instanceof Request)return{transformedInit:s,mtlsCertificate:void 0};let o=s;if(!o.zuplo)return{transformedInit:s,mtlsCertificate:void 0};let f=o.zuplo.mtlsCertificate,d=s;return d.cf={cacheEverything:o.zuplo?.cacheEverything,cacheTtl:o.zuplo?.cacheTtlSeconds},delete s.zuplo,{transformedInit:s,mtlsCertificate:f}},"transformInit");var TXt={console:{log:console.log.bind(console),info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),debug:console.debug.bind(console),assert:console.assert.bind(console),clear:console.clear.bind(console),count:console.count.bind(console),countReset:console.countReset.bind(console),dir:console.dir.bind(console),dirxml:console.dirxml.bind(console),group:console.group.bind(console),groupCollapsed:console.groupCollapsed.bind(console),groupEnd:console.groupEnd.bind(console),table:console.table.bind(console),time:console.time.bind(console),timeEnd:console.timeEnd.bind(console),timeLog:console.timeLog.bind(console),timeStamp:console.timeStamp.bind(console),trace:console.trace.bind(console),profile:console.profile.bind(console),profileEnd:console.profileEnd.bind(console)},fetch:HPe},kV=TXt;var GPe="2025-02-06",Xnt=Object.freeze({none:{runOutboundPoliciesOnHandlerOnAllStatuses:!1,doNotRunHooksOnSystemRoutes:!1,removeAllVendorHeadersExceptListed:!1,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2023-03-14":{runOutboundPoliciesOnHandlerOnAllStatuses:!1,doNotRunHooksOnSystemRoutes:!1,removeAllVendorHeadersExceptListed:!1,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2024-01-15":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2024-03-14":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2024-09-02":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!0,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2025-02-06":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!0,removeLegacyLogInitialization:!0,useForwardRedirectsPropOnUrlForwardHandler:!0,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2026-03-01":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!0,removeLegacyLogInitialization:!0,useForwardRedirectsPropOnUrlForwardHandler:!0,chainResponseSendingHooks:!0,return501ForUnsupportedHttpMethods:!0}});function Znt(s={}){let{runtime:o="cloudflare"}=s;return new Cm({build:{ACCOUNT_NAME:"mock-account-name",PROJECT_NAME:"mock-project-name",API_VERSION:"0.0.0",BUILD_ID:crypto.randomUUID(),TIMESTAMP:new Date().toISOString(),BUILD_ENV:"test",ZUPLO_VERSION:"0.0.0",COMPATIBILITY_DATE:GPe,ENVIRONMENT_TYPE:"mock-environment-type",GIT_SHA:void 0,IS_LOCAL_DEVELOPMENT:!1,COMPATIBILITY_FLAGS:Xnt[GPe]},runtime:{RUNTIME_ENV:"test",RUNTIME_STAGE:"test",__ZUPLO_DEPLOYMENT_NAME:"mock-deployment-name",__ZUPLO_LOG_LEVEL:"debug",__ZUPLO_LOG_FORMAT:"pretty",__ZUPLO_MANAGEMENT_API_URL:"",__ZUPLO_RUNTIME_TYPE:o,__ZUPLO_AUTH_API_JWT:"",ZUPLO_SERVICE_BUCKET_ID:"bckt_mock"}})}t(Znt,"getMockEnvironment");var xXt=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function EXt(s,o){let f=s.__ZUPLO_TRUSTED_IP_HEADER?.trim();if(!f)return o?JPe:znt;if(!xXt.test(f))throw new Aoe(`__ZUPLO_TRUSTED_IP_HEADER is set to '${f}', which is not a valid HTTP header name. Header names may only contain the RFC 9110 token characters (letters, digits, and !#$%&'*+-.^_\`|~) - spaces, colons and tabs are not allowed. Set it to a valid header name such as '${JPe}' or 'cf-connecting-ip'.`);return f.toLowerCase()}t(EXt,"resolveTrustedIpHeader");var Cm=class s{static{t(this,"Environment")}config;#e;static#r;static#t=!1;static initialize(o){s.#r||(s.#r=new s(o),s.#t=!0)}static get instance(){return s.#t||(kV.console.debug("Environment has not been initialized. This is okay when running tests, a mock environment will be used."),s.#r??=Znt(),s.#t=!0),s.#r}constructor({build:o,runtime:f}){let d;try{if(f.ZUPLO_SYSTEM_CONFIGURATIONS){let y=new TextDecoder().decode(Poe.decode(f.ZUPLO_SYSTEM_CONFIGURATIONS)),E=JSON.parse(y);for(let A of Object.keys(E))f[A]||(f[A]=E[A])}if(f.__ZUPLO_CONFIG){let y=atob(f.__ZUPLO_CONFIG);d=JSON.parse(y)}}catch(y){kV.console.error("Failed to parse runtime configuration",y)}this.config=d??{},this.build=o,this.runtime=f,this.instanceId=crypto.randomUUID(),this.#e=EXt(f,this.isCloudflare)}build;runtime;instanceId;get deploymentName(){return this.runtime.__ZUPLO_DEPLOYMENT_NAME??this.config.deployment_name??void 0}get accountName(){return this.build.ACCOUNT_NAME??this.runtime.ZUPLO_ACCOUNT_NAME??void 0}get projectName(){return this.build.PROJECT_NAME??this.runtime.ZUPLO_PROJECT_NAME??void 0}get useLegacyServiceRouting(){return this.config.use_legacy_service_routing??void 0}get useProxyForFetchFromZups(){return this.config.use_proxy_for_fetch_from_zups??void 0}get devPortalBaseUrl(){return this.runtime.__ZUPLO_DEV_PORTAL_URL??this.config.dev_portal_url??"https://dev-portal-v4-1.zuplo.com"}get buildAssetsUrl(){return this.runtime.__ZUPLO_BUILD_ASSETS_URL??this.config.build_assets_url??"https://build-assets.zuplo.com"}get zuploEdgeApiUrl(){return this.runtime.__ZUPLO_EDGE_API_URL??this.config.zuplo_edge_api_url??"https://api.zuploedge.com"}get remoteLogToken(){return this.runtime.__ZUPLO_REMOTE_LOG_TOKEN??this.config.remote_log_token??void 0}get zuploClientAuthBucketId(){return this.config.zuplo_auth_client_bucket_id??"auth_o8PUdhKxSTOiB794GWPwLQCD"}get managementApiURL(){return this.runtime.__ZUPLO_MANAGEMENT_API_URL??this.config.management_api_url??"https://api.zuplo.com"}get developerApiUrl(){return this.config.developer_api_url??"https://dev.zuplo.com"}get cdnURL(){return this.runtime.__ZUPLO_CDN_URL??this.config.cdn_url??"https://cdn.zuplo.com"}get remoteLogURL(){return this.runtime.__ZUPLO_REMOTE_LOG_URL??this.config.log_event_api??"https://ellie.zuploedge.com"}get loggingId(){return this.runtime.__ZUPLO_LOGGING_ID??this.config.logging_id??void 0}get redisURL(){return this.runtime.__ZUPLO_REDIS_URL??this.config.redis_proxy_url??"https://redis-proxy.zuploedge.com"}get apiKeyServiceUrl(){return this.runtime.__ZUPLO_API_KEY_SERVICE_URL??this.config.api_key_service_url??"https://apikey.zuploedge.com"}get meteringServiceUrl(){return this.config.metering_service_url??"https://meters.zuploedge.com"}get authApiJWT(){return this.runtime.__ZUPLO_AUTH_API_JWT??void 0}get authClientId(){return this.config.auth_client_id??this.runtime.__ZUPLO_AUTH_CLIENT_ID}get authClientSecret(){return this.config.auth_client_secret??this.runtime.__ZUPLO_AUTH_CLIENT_SECRET}get authPublicKey(){return this.config.auth_public_key??this.runtime.__ZUPLO_AUTH_PUBLIC_KEY}get authPrivateKey(){return this.config.auth_private_key??this.runtime.__ZUPLO_AUTH_PRIVATE_KEY}get userLogLevel(){return this.runtime.ZUPLO_LOG_LEVEL??this.runtime.__ZUPLO_LOG_LEVEL??this.config.user_log_level??"debug"}get systemLogLevel(){return this.runtime.__ZUPLO_LOG_LEVEL??this.config.system_log_level??"debug"}get logFormat(){return this.runtime.__ZUPLO_LOG_FORMAT??this.config.log_format??"cloudflare"}get isCloudflare(){return this.runtime.__ZUPLO_RUNTIME_TYPE?this.runtime.__ZUPLO_RUNTIME_TYPE==="cloudflare":this.config.runtime_type?this.config.runtime_type==="cloudflare":typeof WebSocketPair=="function"}get isManagedDedicated(){return this.runtime.__ZUPLO_IS_MANAGED_DEDICATED==="true"}get trustedIpHeader(){return this.#e}get isDeno(){if(this.runtime.__ZUPLO_RUNTIME_TYPE)return this.runtime.__ZUPLO_RUNTIME_TYPE==="deno";if(this.config.runtime_type)return this.config.runtime_type==="deno";{let o=globalThis.Deno?.version?.deno;return typeof WebSocketPair!="function"&&o}}get isLocalDevelopment(){return this.build.IS_LOCAL_DEVELOPMENT}get isTestMode(){return!!this.runtime.__ZUPLO_TEST_MODE}get budgetRulesCaptureDisabled(){return this.runtime.__ZUPLO_BUDGET_RULES_CAPTURE==="off"}get systemUserAgent(){return`Zuplo/${this.build.ZUPLO_VERSION}`}get loggingEnvironmentType(){return this.isCloudflare?"edge":this.isLocalDevelopment?"local":this.isDeno?"working-copy":"unknown"}get loggingEnvironmentStage(){return this.build.ENVIRONMENT_TYPE==="PRODUCTION"?"production":this.build.ENVIRONMENT_TYPE==="PREVIEW"?"preview":this.isLocalDevelopment?"local":this.isWorkingCopy?"working-copy":"unknown"}get isWorkingCopy(){return this.build.ENVIRONMENT_TYPE==="WORKING_COPY"}get rateLimitServiceTimeoutMs(){let o=this.runtime.__ZUPLO_RATE_LIMIT_TIMEOUT_MS,f=this.config.rate_limit_service_timeout_ms,d=o??f;if(!d)return 500;let y=Number(d);return Number.isFinite(y)&&y>0?y:500}};var CXt=["ZUPLO_USER_LOGGER_DATA_DOG_API_KEY","ZUPLO_USER_LOGGER_DATA_DOG_URL","ZUPLO_LOG_LEVEL","ZUPLO_HANDLER_WRITE_LOG_LEVEL"];function Qnt(s){return s.startsWith("__ZUPLO")||s.startsWith("ZUPLO_")?!CXt.includes(s)&&!s.startsWith("ZUPLO_PUBLIC_"):s.startsWith("ZUDOKU_")?!s.startsWith("ZUDOKU_PUBLIC_"):!1}t(Qnt,"isRestrictedEnvVariableName");function eit(s){return!!s.startsWith("ZUPLO_")}t(eit,"isZuploReadableEnvVariableName");var ukr=new Proxy({},{get(s,o){let f=String(o);switch(f){case"ZUPLO_ENVIRONMENT_TYPE":return Cm.instance.loggingEnvironmentType;case"ZUPLO_ENVIRONMENT_STAGE":return Cm.instance.loggingEnvironmentStage;case"ZUPLO_ENVIRONMENT_NAME":return Cm.instance.runtime.__ZUPLO_DEPLOYMENT_NAME;case"ZUPLO_ACCOUNT_NAME":return Cm.instance.accountName;case"ZUPLO_PROJECT_NAME":return Cm.instance.projectName;case"ZUPLO_BUILD_ID":return Cm.instance.build.BUILD_ID;case"ZUPLO_COMPATIBILITY_DATE":return Cm.instance.build.COMPATIBILITY_DATE}if(!(Qnt(f)&&!eit(f)))return Cm.instance.runtime[f]}});function wV(s,o,f){return`_${MP(`${s}_${o}_${f}`)}`}t(wV,"getRawOperationDataIdentifierName");function YPe(s,o,f,d){return`_${MP(s.toLowerCase())}_${o.toLowerCase()}_${f.toLowerCase()}_${d.toLowerCase()}`}t(YPe,"getIdForParameterSchema");function KPe(s,o,f){return`_${MP(s.toLowerCase())}_${o.toLowerCase()}_rb_${MP(f.toLowerCase())}`}t(KPe,"getIdForRequestBodySchema");function DV(s,o){return`_${MP(s)}_${MP(o)}`}t(DV,"getIdForRefSchema");function MP(s){let o=s.replace(/\[/g,"_LBRACKET_").replace(/\]/g,"_RBRACKET_").replace(/\{/g,"_LCURLY_").replace(/\}/g,"_RCURLY_").replace(/\//g,"_SLASH_").replace(/-/g,"_DASH_").replace(/\./g,"_DOT_").replace(/\+/g,"_PLUS_").replace(/:/g,"_COLON_").replace(/@/g,"_AT_").replace(/\$/g,"_DOLLAR_").replace(/[^a-zA-Z0-9_]/g,"_");return/^[a-zA-Z_]/.test(o)||(o=`_${o}`),o}t(MP,"sanitizedIdentifierName");var ZPe={};Att(ZPe,{UnsafePathError:()=>Ooe,deleteFolder:()=>BXt,dirExists:()=>XPe,fileExists:()=>PXt,getParentDirFilename:()=>RXt,isNotFileOrDirectory:()=>NXt,listFolderContents:()=>nit,listFolders:()=>OXt,mkDirTemp:()=>AXt,mkdirForFilePathIfNotExits:()=>FXt,mkdirIfNotExists:()=>iit,safePath:()=>LXt,tarFolder:()=>MXt,untarFile:()=>jXt});import{spawn as tit}from"node:child_process";import{randomUUID as kXt}from"node:crypto";import qN from"node:fs/promises";import{platform as wXt,tmpdir as DXt}from"node:os";import I1 from"node:path";var rit=[".git","node_modules",".yarn",".DS_Store"];async function PXt(s){try{return(await qN.stat(s)).isFile()}catch{return!1}}t(PXt,"fileExists");async function AXt(){let s=process.env.BUILD_FILE_PATH??DXt(),o=kXt().replaceAll("-",""),f=I1.join(s,o);return await qN.mkdir(f,{recursive:!0}),f}t(AXt,"mkDirTemp");async function XPe(s){try{return(await qN.stat(s)).isDirectory()}catch{return!1}}t(XPe,"dirExists");async function NXt(s){try{return await qN.stat(s),!1}catch{return!0}}t(NXt,"isNotFileOrDirectory");function IXt(s,o){let f=I1.sep==="\\"?"\\\\":I1.sep,d=new RegExp(`(.*)(${f}${o})$|(.*)(${o}${f})`),y=s.match(d);if(!y)return"";let E=s.split(y[0]);return E[1]===""?"":I1.join(I1.sep,E[1])}t(IXt,"getParentDirectory");async function OXt(s){if(!await XPe(s))return[];let o=await qN.readdir(s,{withFileTypes:!0}),f=[];for await(let d of o)rit.includes(d.name)||d.isDirectory()&&f.push(d.name);return f}t(OXt,"listFolders");async function nit(s,o,f=!0){let d=IXt(s,o),y=await qN.readdir(s,{withFileTypes:!0}),E=[];for await(let A of y)if(!rit.includes(A.name)||!f)if(A.isDirectory()){let R=await nit(I1.join(s,A.name),o,f);E.push(...R)}else E.push(I1.join(d,A.name));return E}t(nit,"listFolderContents");var iit=t(async s=>{await qN.mkdir(s,{recursive:!0})},"mkdirIfNotExists"),FXt=t(async s=>{let o=I1.dirname(s);return iit(o)},"mkdirForFilePathIfNotExits"),Ooe=class extends Error{static{t(this,"UnsafePathError")}};function LXt(s){let o=I1.normalize(s),f=t(d=>{let y=I1.normalize(d),E=process.platform==="win32",A=!1;if(E?A=y.toLowerCase().startsWith(o.toLowerCase()):A=y.startsWith(o),!A)throw new Ooe("Resolved path is not part of the project.");return y},"ensureSafePath");return{resolve:t((...d)=>f(I1.resolve(...d)),"resolve")}}t(LXt,"safePath");function RXt(s){return I1.join(I1.basename(I1.dirname(s)),I1.basename(s))}t(RXt,"getParentDirFilename");async function MXt({folderPath:s,outputTarPath:o,exclude:f=["node_modules",".git","dist"],logger:d}){let y=[],E=[],A;try{await new Promise((R,q)=>{let K=tit("tar",[...f.flatMap(ve=>["--exclude",ve]),...wXt()!=="darwin"?["--warning=no-file-changed"]:[],"-cvf",o,"-C",s,"."]);K.stdout.on("data",ve=>{let pe=ve.toString().trim();pe.length>0&&y.push(pe.trim())}),K.stderr.on("data",ve=>{let pe=ve.toString().trim();pe.length>0&&E.push(pe.trim())}),K.on("close",ve=>{A=ve,ve===0?R():q(new Error(`tar process exited with code ${ve}`))}),K.on("error",ve=>{q(ve)})})}catch(R){throw new Error("Failed to tar folder",{cause:R})}finally{d.info({stdout:y.join(`
|
|
571
|
+
`).map(R=>R.trim()).join(" ");case"%O":return s(f[d++]);case"%j":try{return JSON.stringify(f[d++])}catch{return"[Circular]"}default:return A}});for(let A of f.splice(d))A===null||!(typeof A=="object"&&A!==null)?E+=" "+A:E+=" "+s(A);return E}t(qnt,"format");var Vnt=t((s,...o)=>qnt(gXt,s,o),"format");var $Pe=class{static{t(this,"Debugger")}manager;ns;color;last;enabled;constructor(o,f){this.manager=o,this.ns=f,this.color=Wnt(f),this.last=0,this.enabled=o.enabled.some(d=>d.test(f))}log(...o){if(!this.enabled)return;let f,d=o[0];typeof d=="function"?f=d():f=String(d);let y=Date.now()-(this.last||Date.now());f=Vnt(f,...o);let E=`${this.color(this.ns)} ${f} ${this.color(`+${y}ms`)}`;console.log(E),this.last=Date.now()}},WPe=class{static{t(this,"DebugManager")}debuggers;enabled;constructor(o){this.debuggers=new Map,this.enabled=o??[]}};function yXt(s){return!s||s.length===0?[]:(s=s.replace(/\s/g,"").replace(/\*/g,".+"),s.split(",").map(o=>new RegExp(`^${o}$`)))}t(yXt,"extract");var Noe;function Ioe(s){Noe||(Noe=new WPe(yXt(process.env.DEBUG)));let o=new $Pe(Noe,s);return Noe.debuggers.set(s,o),Object.assign(o.log.bind(o),{self:o})}t(Ioe,"debug");var WN=Ioe("zuplo:runtime:external-service");function vXt(){let s,{__ZUPLO_EXTERNAL_SERVICE_TOKEN:o}=Cm.instance.runtime;if(o&&o!=="undefined")try{let f=atob(o);s=JSON.parse(f)}catch{}return s}t(vXt,"getServiceAuth");async function Hnt(s,o){let f=".proxy",d=".tunnel";if(typeof s=="string"){let y=new URL(s),E=y.hostname;if(E.endsWith(f)){let Bt=E.slice(0,-f.length),Ut=new URL(`http://${Bt}${y.pathname}${y.search}`);WN(`Routing to proxy: ${Ut.toString()}`);let Or=o??{};return CV(Ut.toString(),Or)}let A=E.endsWith(d),R=E.indexOf(".")===-1;if(!(A||R))throw new RP(`Invalid service hostname suffix: ${E}. Use .proxy for proxy routing, .tunnel for explicit tunnel routing, or no suffix for default tunnel routing.`);let K=A?E.slice(0,-d.length):E,ve=vXt();if(!ve)throw WN("There is no external service auth configured for this zup."),new RP("There are no external services configured for this zup.");WN(`Using external service auth. ClientId: ${ve.clientId})`);let pe=o??{},ae=new Headers(pe.headers||{});ae.set("CF-Access-Client-Id",ve.clientId),ae.set("CF-Access-Client-Secret",ve.clientSecret),pe.headers=ae;let rt;if(ve.customServiceMapping?.[K])rt=`https://${ve.customServiceMapping[K]}`;else if(Cm.instance.useLegacyServiceRouting)rt=`https://${K}.zuptunnel.com`;else{WN("Using sha256 service routing");let Bt=Cm.instance.build;if(Bt.ACCOUNT_NAME&&Bt.PROJECT_NAME&&Bt.ENVIRONMENT_TYPE){let Ut=await bXt(K,Bt.ACCOUNT_NAME,Bt.PROJECT_NAME,Bt.ENVIRONMENT_TYPE),Or=Ynt(Bt.ENVIRONMENT_TYPE),Jn=await qPe(`${Bt.ACCOUNT_NAME}-${Bt.PROJECT_NAME}-${Or}`);Jn==="40d7ad502f5d743997999594c177184a00161a77865423511f3a1ea21eb5a5e"||Jn==="d05bffe8fa91a300187d2cf43e8aa4a56bd809c442ae10d1ee49af7d29a5a11"?rt=`https://${Ut}.zuptunnel.com`:rt=`https://${Ut}.t.zuplo.app`}else throw WN("Cannot use sha256 service routing, missing build variables"),new RP("Failed to generate fully qualified tunnel url.")}let ze=new URL(`${rt}${y.pathname}${y.search}`);WN(`Calling external service: ${ze.toString()}`);let je=await CV(ze.toString(),pe);if(je.status===403&&je.headers.get("cf-access-domain")!==null)throw kV.console.error("403 Forbidden when calling external service.",{clientId:ve.clientId,tunnelHost:rt}),new RP("Could not connect to secure tunnel.");return je}else throw WN("Cannot call external service with Request object"),new RP("Currently, we only support fetch(<some_string>, ...).")}t(Hnt,"externalServiceHandler");async function Gnt(s,o){if(typeof s=="string"){let f=new URL(s),d=f.hostname,y=o??{},E=`http://${d}.zuplo.svc.cluster.local:9000`,A=new URL(`${E}${f.pathname}${f.search}`),R=new Headers(y.headers||{});return R.set(Jnt,d),y.headers=R,await CV(A.toString(),y)}else throw new RP("Currently, we only support fetch(<some_string>, ...).")}t(Gnt,"clusterServiceHandler");async function bXt(s,o,f,d){let y=s.toLowerCase(),E=o.toLowerCase(),A=f.toLowerCase(),R=Ynt(d);WN(`Hashing service name: ${E}-${y}.${E}-${A}-${R}`);let q=await qPe(`${E}-${y}`),K=await qPe(`${E}-${A}-${R}`);return`${q}.${K}`}t(bXt,"hashServiceName");async function qPe(s){let o=new TextEncoder().encode(s),f=await crypto.subtle.digest("SHA-256",o);return Array.from(new Uint8Array(f)).map(E=>E.toString(16).padStart(2,"0")).join("").slice(0,-1)}t(qPe,"hashSegment");function Ynt(s){let o=s.toLowerCase();switch(o){case"production":case"preview":return o;default:return"working-copy"}}t(Ynt,"sanitizeEnvironmentType");var VPe=new Map;VPe.set("service:",Hnt);VPe.set("local:",Gnt);var CV=globalThis.fetch;function HPe(s,o){let{transformedInit:f,mtlsCertificate:d}=SXt(o);if(typeof s=="string"){let y=new URL(s),E=VPe.get(y.protocol);return E?E(s,f):Knt(s,f,d)}else return Knt(s,f,d)}t(HPe,"internalFetch");globalThis.fetch=HPe;function Knt(s,o,f){if(!f)return CV(s,o);if(Cm.instance.isCloudflare){let y=Cm.instance.runtime[f];if(!y)throw new Error(`mTLS certificate binding '${f}' not found. Ensure the certificate is uploaded and properly configured.`);if(typeof y!="object"||typeof y.fetch!="function")throw new Error(`mTLS certificate binding '${f}' is not a valid mTLS certificate binding. Make sure it's configured as an mTLS certificate, not an environment variable.`);return y.fetch(s,o)}else if(Cm.instance.isDeno){let d=globalThis.managedDedicatedMtlsBindings?.[f];if(!d)throw new Error(`mTLS certificate binding '${f}' not found. Ensure the certificate is uploaded and properly configured.`);if(typeof d.fetch!="function")throw new Error(`mTLS certificate binding '${f}' is not a valid mTLS certificate binding.`);return d.fetch(s,o)}else throw new Error("mTLS client certificates are not supported in this runtime environment")}t(Knt,"performFetch");var SXt=t(s=>{if(!s||s instanceof Request)return{transformedInit:s,mtlsCertificate:void 0};let o=s;if(!o.zuplo)return{transformedInit:s,mtlsCertificate:void 0};let f=o.zuplo.mtlsCertificate,d=s;return d.cf={cacheEverything:o.zuplo?.cacheEverything,cacheTtl:o.zuplo?.cacheTtlSeconds},delete s.zuplo,{transformedInit:s,mtlsCertificate:f}},"transformInit");var TXt={console:{log:console.log.bind(console),info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),debug:console.debug.bind(console),assert:console.assert.bind(console),clear:console.clear.bind(console),count:console.count.bind(console),countReset:console.countReset.bind(console),dir:console.dir.bind(console),dirxml:console.dirxml.bind(console),group:console.group.bind(console),groupCollapsed:console.groupCollapsed.bind(console),groupEnd:console.groupEnd.bind(console),table:console.table.bind(console),time:console.time.bind(console),timeEnd:console.timeEnd.bind(console),timeLog:console.timeLog.bind(console),timeStamp:console.timeStamp.bind(console),trace:console.trace.bind(console),profile:console.profile.bind(console),profileEnd:console.profileEnd.bind(console)},fetch:HPe},kV=TXt;var GPe="2025-02-06",Xnt=Object.freeze({none:{runOutboundPoliciesOnHandlerOnAllStatuses:!1,doNotRunHooksOnSystemRoutes:!1,removeAllVendorHeadersExceptListed:!1,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2023-03-14":{runOutboundPoliciesOnHandlerOnAllStatuses:!1,doNotRunHooksOnSystemRoutes:!1,removeAllVendorHeadersExceptListed:!1,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2024-01-15":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2024-03-14":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!1,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2024-09-02":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!0,removeLegacyLogInitialization:!1,useForwardRedirectsPropOnUrlForwardHandler:!1,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2025-02-06":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!0,removeLegacyLogInitialization:!0,useForwardRedirectsPropOnUrlForwardHandler:!0,chainResponseSendingHooks:!1,return501ForUnsupportedHttpMethods:!1},"2026-03-01":{runOutboundPoliciesOnHandlerOnAllStatuses:!0,doNotRunHooksOnSystemRoutes:!0,removeAllVendorHeadersExceptListed:!0,allowCustomPorts:!0,removeLegacyLogInitialization:!0,useForwardRedirectsPropOnUrlForwardHandler:!0,chainResponseSendingHooks:!0,return501ForUnsupportedHttpMethods:!0}});function Znt(s={}){let{runtime:o="cloudflare"}=s;return new Cm({build:{ACCOUNT_NAME:"mock-account-name",PROJECT_NAME:"mock-project-name",API_VERSION:"0.0.0",BUILD_ID:crypto.randomUUID(),TIMESTAMP:new Date().toISOString(),BUILD_ENV:"test",ZUPLO_VERSION:"0.0.0",COMPATIBILITY_DATE:GPe,ENVIRONMENT_TYPE:"mock-environment-type",GIT_SHA:void 0,IS_LOCAL_DEVELOPMENT:!1,COMPATIBILITY_FLAGS:Xnt[GPe]},runtime:{RUNTIME_ENV:"test",RUNTIME_STAGE:"test",__ZUPLO_DEPLOYMENT_NAME:"mock-deployment-name",__ZUPLO_LOG_LEVEL:"debug",__ZUPLO_LOG_FORMAT:"pretty",__ZUPLO_MANAGEMENT_API_URL:"",__ZUPLO_RUNTIME_TYPE:o,__ZUPLO_AUTH_API_JWT:"",ZUPLO_SERVICE_BUCKET_ID:"bckt_mock"}})}t(Znt,"getMockEnvironment");var xXt=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function EXt(s,o){let f=s.__ZUPLO_TRUSTED_IP_HEADER?.trim();if(!f)return o?JPe:znt;if(!xXt.test(f))throw new Aoe(`__ZUPLO_TRUSTED_IP_HEADER is set to '${f}', which is not a valid HTTP header name. Header names may only contain the RFC 9110 token characters (letters, digits, and !#$%&'*+-.^_\`|~) - spaces, colons and tabs are not allowed. Set it to a valid header name such as '${JPe}' or 'cf-connecting-ip'.`);return f.toLowerCase()}t(EXt,"resolveTrustedIpHeader");var Cm=class s{static{t(this,"Environment")}config;#e;static#r;static#t=!1;static initialize(o){s.#r||(s.#r=new s(o),s.#t=!0)}static get instance(){return s.#t||(kV.console.debug("Environment has not been initialized. This is okay when running tests, a mock environment will be used."),s.#r??=Znt(),s.#t=!0),s.#r}constructor({build:o,runtime:f}){let d;try{if(f.ZUPLO_SYSTEM_CONFIGURATIONS){let y=new TextDecoder().decode(Poe.decode(f.ZUPLO_SYSTEM_CONFIGURATIONS)),E=JSON.parse(y);for(let A of Object.keys(E))f[A]||(f[A]=E[A])}if(f.__ZUPLO_CONFIG){let y=atob(f.__ZUPLO_CONFIG);d=JSON.parse(y)}}catch(y){kV.console.error("Failed to parse runtime configuration",y)}this.config=d??{},this.build=o,this.runtime=f,this.instanceId=crypto.randomUUID(),this.#e=EXt(f,this.isCloudflare)}build;runtime;instanceId;get deploymentName(){return this.runtime.__ZUPLO_DEPLOYMENT_NAME??this.config.deployment_name??void 0}get accountName(){return this.build.ACCOUNT_NAME??this.runtime.ZUPLO_ACCOUNT_NAME??void 0}get projectName(){return this.build.PROJECT_NAME??this.runtime.ZUPLO_PROJECT_NAME??void 0}get useLegacyServiceRouting(){return this.config.use_legacy_service_routing??void 0}get useProxyForFetchFromZups(){return this.config.use_proxy_for_fetch_from_zups??void 0}get devPortalBaseUrl(){return this.runtime.__ZUPLO_DEV_PORTAL_URL??this.config.dev_portal_url??"https://dev-portal-v4-1.zuplo.com"}get buildAssetsUrl(){return this.runtime.__ZUPLO_BUILD_ASSETS_URL??this.config.build_assets_url??"https://build-assets.zuplo.com"}get zuploEdgeApiUrl(){return this.runtime.__ZUPLO_EDGE_API_URL??this.config.zuplo_edge_api_url??"https://api.zuploedge.com"}get remoteLogToken(){return this.runtime.__ZUPLO_REMOTE_LOG_TOKEN??this.config.remote_log_token??void 0}get zuploClientAuthBucketId(){return this.config.zuplo_auth_client_bucket_id??"auth_o8PUdhKxSTOiB794GWPwLQCD"}get managementApiURL(){return this.runtime.__ZUPLO_MANAGEMENT_API_URL??this.config.management_api_url??"https://api.zuplo.com"}get developerApiUrl(){return this.config.developer_api_url??"https://dev.zuplo.com"}get cdnURL(){return this.runtime.__ZUPLO_CDN_URL??this.config.cdn_url??"https://cdn.zuplo.com"}get remoteLogURL(){return this.runtime.__ZUPLO_REMOTE_LOG_URL??this.config.log_event_api??"https://ellie.zuploedge.com"}get loggingId(){return this.runtime.__ZUPLO_LOGGING_ID??this.config.logging_id??void 0}get redisURL(){return this.runtime.__ZUPLO_REDIS_URL??this.config.redis_proxy_url??"https://redis-proxy.zuploedge.com"}get apiKeyServiceUrl(){return this.runtime.__ZUPLO_API_KEY_SERVICE_URL??this.config.api_key_service_url??"https://apikey.zuploedge.com"}get meteringServiceUrl(){return this.config.metering_service_url??"https://meters.zuploedge.com"}get authApiJWT(){return this.runtime.__ZUPLO_AUTH_API_JWT??void 0}get authClientId(){return this.config.auth_client_id??this.runtime.__ZUPLO_AUTH_CLIENT_ID}get authClientSecret(){return this.config.auth_client_secret??this.runtime.__ZUPLO_AUTH_CLIENT_SECRET}get authPublicKey(){return this.config.auth_public_key??this.runtime.__ZUPLO_AUTH_PUBLIC_KEY}get authPrivateKey(){return this.config.auth_private_key??this.runtime.__ZUPLO_AUTH_PRIVATE_KEY}get userLogLevel(){return this.runtime.ZUPLO_LOG_LEVEL??this.runtime.__ZUPLO_LOG_LEVEL??this.config.user_log_level??"debug"}get systemLogLevel(){return this.runtime.__ZUPLO_LOG_LEVEL??this.config.system_log_level??"debug"}get logFormat(){return this.runtime.__ZUPLO_LOG_FORMAT??this.config.log_format??"cloudflare"}get isCloudflare(){return this.runtime.__ZUPLO_RUNTIME_TYPE?this.runtime.__ZUPLO_RUNTIME_TYPE==="cloudflare":this.config.runtime_type?this.config.runtime_type==="cloudflare":typeof WebSocketPair=="function"}get isManagedDedicated(){return this.runtime.__ZUPLO_IS_MANAGED_DEDICATED==="true"}get trustedIpHeader(){return this.#e}get isDeno(){if(this.runtime.__ZUPLO_RUNTIME_TYPE)return this.runtime.__ZUPLO_RUNTIME_TYPE==="deno";if(this.config.runtime_type)return this.config.runtime_type==="deno";{let o=globalThis.Deno?.version?.deno;return typeof WebSocketPair!="function"&&o}}get isLocalDevelopment(){return this.build.IS_LOCAL_DEVELOPMENT}get isTestMode(){return!!this.runtime.__ZUPLO_TEST_MODE}get budgetRulesCaptureDisabled(){return this.runtime.__ZUPLO_BUDGET_RULES_CAPTURE==="off"}get budgetDimensionLogValuesEnabled(){return this.runtime.__ZUPLO_BUDGET_DIMENSION_LOG_VALUES==="on"}get systemUserAgent(){return`Zuplo/${this.build.ZUPLO_VERSION}`}get loggingEnvironmentType(){return this.isCloudflare?"edge":this.isLocalDevelopment?"local":this.isDeno?"working-copy":"unknown"}get loggingEnvironmentStage(){return this.build.ENVIRONMENT_TYPE==="PRODUCTION"?"production":this.build.ENVIRONMENT_TYPE==="PREVIEW"?"preview":this.isLocalDevelopment?"local":this.isWorkingCopy?"working-copy":"unknown"}get isWorkingCopy(){return this.build.ENVIRONMENT_TYPE==="WORKING_COPY"}get rateLimitServiceTimeoutMs(){let o=this.runtime.__ZUPLO_RATE_LIMIT_TIMEOUT_MS,f=this.config.rate_limit_service_timeout_ms,d=o??f;if(!d)return 500;let y=Number(d);return Number.isFinite(y)&&y>0?y:500}};var CXt=["ZUPLO_USER_LOGGER_DATA_DOG_API_KEY","ZUPLO_USER_LOGGER_DATA_DOG_URL","ZUPLO_LOG_LEVEL","ZUPLO_HANDLER_WRITE_LOG_LEVEL"];function Qnt(s){return s.startsWith("__ZUPLO")||s.startsWith("ZUPLO_")?!CXt.includes(s)&&!s.startsWith("ZUPLO_PUBLIC_"):s.startsWith("ZUDOKU_")?!s.startsWith("ZUDOKU_PUBLIC_"):!1}t(Qnt,"isRestrictedEnvVariableName");function eit(s){return!!s.startsWith("ZUPLO_")}t(eit,"isZuploReadableEnvVariableName");var ukr=new Proxy({},{get(s,o){let f=String(o);switch(f){case"ZUPLO_ENVIRONMENT_TYPE":return Cm.instance.loggingEnvironmentType;case"ZUPLO_ENVIRONMENT_STAGE":return Cm.instance.loggingEnvironmentStage;case"ZUPLO_ENVIRONMENT_NAME":return Cm.instance.runtime.__ZUPLO_DEPLOYMENT_NAME;case"ZUPLO_ACCOUNT_NAME":return Cm.instance.accountName;case"ZUPLO_PROJECT_NAME":return Cm.instance.projectName;case"ZUPLO_BUILD_ID":return Cm.instance.build.BUILD_ID;case"ZUPLO_COMPATIBILITY_DATE":return Cm.instance.build.COMPATIBILITY_DATE}if(!(Qnt(f)&&!eit(f)))return Cm.instance.runtime[f]}});function wV(s,o,f){return`_${MP(`${s}_${o}_${f}`)}`}t(wV,"getRawOperationDataIdentifierName");function YPe(s,o,f,d){return`_${MP(s.toLowerCase())}_${o.toLowerCase()}_${f.toLowerCase()}_${d.toLowerCase()}`}t(YPe,"getIdForParameterSchema");function KPe(s,o,f){return`_${MP(s.toLowerCase())}_${o.toLowerCase()}_rb_${MP(f.toLowerCase())}`}t(KPe,"getIdForRequestBodySchema");function DV(s,o){return`_${MP(s)}_${MP(o)}`}t(DV,"getIdForRefSchema");function MP(s){let o=s.replace(/\[/g,"_LBRACKET_").replace(/\]/g,"_RBRACKET_").replace(/\{/g,"_LCURLY_").replace(/\}/g,"_RCURLY_").replace(/\//g,"_SLASH_").replace(/-/g,"_DASH_").replace(/\./g,"_DOT_").replace(/\+/g,"_PLUS_").replace(/:/g,"_COLON_").replace(/@/g,"_AT_").replace(/\$/g,"_DOLLAR_").replace(/[^a-zA-Z0-9_]/g,"_");return/^[a-zA-Z_]/.test(o)||(o=`_${o}`),o}t(MP,"sanitizedIdentifierName");var ZPe={};Att(ZPe,{UnsafePathError:()=>Ooe,deleteFolder:()=>BXt,dirExists:()=>XPe,fileExists:()=>PXt,getParentDirFilename:()=>RXt,isNotFileOrDirectory:()=>NXt,listFolderContents:()=>nit,listFolders:()=>OXt,mkDirTemp:()=>AXt,mkdirForFilePathIfNotExits:()=>FXt,mkdirIfNotExists:()=>iit,safePath:()=>LXt,tarFolder:()=>MXt,untarFile:()=>jXt});import{spawn as tit}from"node:child_process";import{randomUUID as kXt}from"node:crypto";import qN from"node:fs/promises";import{platform as wXt,tmpdir as DXt}from"node:os";import I1 from"node:path";var rit=[".git","node_modules",".yarn",".DS_Store"];async function PXt(s){try{return(await qN.stat(s)).isFile()}catch{return!1}}t(PXt,"fileExists");async function AXt(){let s=process.env.BUILD_FILE_PATH??DXt(),o=kXt().replaceAll("-",""),f=I1.join(s,o);return await qN.mkdir(f,{recursive:!0}),f}t(AXt,"mkDirTemp");async function XPe(s){try{return(await qN.stat(s)).isDirectory()}catch{return!1}}t(XPe,"dirExists");async function NXt(s){try{return await qN.stat(s),!1}catch{return!0}}t(NXt,"isNotFileOrDirectory");function IXt(s,o){let f=I1.sep==="\\"?"\\\\":I1.sep,d=new RegExp(`(.*)(${f}${o})$|(.*)(${o}${f})`),y=s.match(d);if(!y)return"";let E=s.split(y[0]);return E[1]===""?"":I1.join(I1.sep,E[1])}t(IXt,"getParentDirectory");async function OXt(s){if(!await XPe(s))return[];let o=await qN.readdir(s,{withFileTypes:!0}),f=[];for await(let d of o)rit.includes(d.name)||d.isDirectory()&&f.push(d.name);return f}t(OXt,"listFolders");async function nit(s,o,f=!0){let d=IXt(s,o),y=await qN.readdir(s,{withFileTypes:!0}),E=[];for await(let A of y)if(!rit.includes(A.name)||!f)if(A.isDirectory()){let R=await nit(I1.join(s,A.name),o,f);E.push(...R)}else E.push(I1.join(d,A.name));return E}t(nit,"listFolderContents");var iit=t(async s=>{await qN.mkdir(s,{recursive:!0})},"mkdirIfNotExists"),FXt=t(async s=>{let o=I1.dirname(s);return iit(o)},"mkdirForFilePathIfNotExits"),Ooe=class extends Error{static{t(this,"UnsafePathError")}};function LXt(s){let o=I1.normalize(s),f=t(d=>{let y=I1.normalize(d),E=process.platform==="win32",A=!1;if(E?A=y.toLowerCase().startsWith(o.toLowerCase()):A=y.startsWith(o),!A)throw new Ooe("Resolved path is not part of the project.");return y},"ensureSafePath");return{resolve:t((...d)=>f(I1.resolve(...d)),"resolve")}}t(LXt,"safePath");function RXt(s){return I1.join(I1.basename(I1.dirname(s)),I1.basename(s))}t(RXt,"getParentDirFilename");async function MXt({folderPath:s,outputTarPath:o,exclude:f=["node_modules",".git","dist"],logger:d}){let y=[],E=[],A;try{await new Promise((R,q)=>{let K=tit("tar",[...f.flatMap(ve=>["--exclude",ve]),...wXt()!=="darwin"?["--warning=no-file-changed"]:[],"-cvf",o,"-C",s,"."]);K.stdout.on("data",ve=>{let pe=ve.toString().trim();pe.length>0&&y.push(pe.trim())}),K.stderr.on("data",ve=>{let pe=ve.toString().trim();pe.length>0&&E.push(pe.trim())}),K.on("close",ve=>{A=ve,ve===0?R():q(new Error(`tar process exited with code ${ve}`))}),K.on("error",ve=>{q(ve)})})}catch(R){throw new Error("Failed to tar folder",{cause:R})}finally{d.info({stdout:y.join(`
|
|
572
572
|
`),stderr:E.join(`
|
|
573
573
|
`),exitCode:A},"Tar process logs")}}t(MXt,"tarFolder");async function jXt({tarFilePath:s,outputDir:o,logger:f}){let d=[],y=[],E;try{await new Promise((A,R)=>{let q=tit("sh",["-c",`tar -xvf ${s} -C ${o};`]);q.stdout.on("data",K=>{let ve=K.toString().trim();ve.length>0&&d.push(ve.trim())}),q.stderr.on("data",K=>{let ve=K.toString().trim();ve.length>0&&y.push(ve.trim())}),q.on("close",K=>{E=K,K===0?A():R(new Error(`tar process exited with code ${K}`))}),q.on("error",K=>{R(K)})})}catch(A){throw new Error("Failed to untar file",{cause:A})}finally{f.info({stdout:d.join(`
|
|
574
574
|
`),stderr:y.join(`
|