@cartanova/qgrid-cli 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +9 -0
- package/bundle/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +6 -0
- package/bundle/dist/_virtual/_rolldown/runtime.js +15 -0
- package/bundle/dist/application/qgrid/oauth.js +140 -0
- package/bundle/dist/application/qgrid/pool.js +100 -0
- package/bundle/dist/application/qgrid/qgrid.frame.js +280 -0
- package/bundle/dist/application/qgrid/qgrid.types.js +79 -0
- package/bundle/dist/application/qgrid/worker.js +183 -0
- package/bundle/dist/application/queries.generated.js +31 -0
- package/bundle/dist/application/request-log/request-log.model.js +113 -0
- package/bundle/dist/application/request-log/request-log.types.js +13 -0
- package/bundle/dist/application/sonamu.generated.js +99 -0
- package/bundle/dist/application/sonamu.generated.sso.js +34 -0
- package/bundle/dist/application/token/token.model.js +157 -0
- package/bundle/dist/application/token/token.types.js +22 -0
- package/bundle/dist/i18n/en.js +63 -0
- package/bundle/dist/i18n/ko.js +62 -0
- package/bundle/dist/i18n/sd.generated.js +272 -0
- package/bundle/dist/index.js +11 -0
- package/bundle/dist/migrations/20260410171405_create__request_logs.js +26 -0
- package/bundle/dist/migrations/20260410171406_create__tokens.js +24 -0
- package/bundle/dist/migrations/20260411120624_alter_tokens_alter2.js +16 -0
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +155 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +1484 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +887 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +2746 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +662 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +386 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +82 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +48 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +1307 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +558 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +33 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +226 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +27 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +77 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +374 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +37 -0
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +2886 -0
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +10 -0
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +109 -0
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +10 -0
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +10 -0
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +10 -0
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +1127 -0
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +21 -0
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +432 -0
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +506 -0
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +86 -0
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +426 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +41 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +19 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +202 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +16 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +59 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +2910 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +44 -0
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/index.js +28 -0
- package/bundle/dist/sonamu.config.js +196 -0
- package/bundle/dist/testing/fixture.js +8 -0
- package/bundle/dist/testing/global.js +9 -0
- package/bundle/dist/testing/setup-mocks.js +17 -0
- package/bundle/dist/utils/subset-loaders.js +12 -0
- package/bundle/src/application/request-log/request-log.entity.json +75 -0
- package/bundle/src/application/token/token.entity.json +37 -0
- package/bundle/src/migrations/20260410171405_create__request_logs.ts +23 -0
- package/bundle/src/migrations/20260410171406_create__tokens.ts +21 -0
- package/bundle/src/migrations/20260411120624_alter_tokens_alter2.ts +15 -0
- package/bundle/web-dist/client/assets/index-DlPchHBY.js +116 -0
- package/bundle/web-dist/client/assets/index-vZsvyuFn.css +1 -0
- package/bundle/web-dist/client/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
- package/bundle/web-dist/client/assets/routes-CagDz23B.js +1 -0
- package/bundle/web-dist/client/assets/sd.generated-BrQoQXvv.js +47 -0
- package/bundle/web-dist/client/assets/services.generated-BspO2L0j.js +1 -0
- package/bundle/web-dist/client/assets/show-aXUGa0gm.js +29 -0
- package/bundle/web-dist/client/assets/tokens-DRkXtZ3Q.js +1 -0
- package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +9 -0
- package/bundle/web-dist/client/assets/vendor-tanstack-CUxlo6YN.js +1 -0
- package/bundle/web-dist/client/index.html +18 -0
- package/bundle/web-dist/server/assets/react-dom-CGIzOSuj.js +335 -0
- package/bundle/web-dist/server/assets/routes-ClzReRep.js +490 -0
- package/bundle/web-dist/server/assets/sd.generated-BnonqqKr.js +21694 -0
- package/bundle/web-dist/server/assets/services.generated-D5ABD5fr.js +836 -0
- package/bundle/web-dist/server/assets/show-C9pcdSxc.js +23364 -0
- package/bundle/web-dist/server/assets/tokens-JH6FsnWZ.js +860 -0
- package/bundle/web-dist/server/entry-server.generated.js +44646 -0
- package/dist/cli.js +38 -89
- package/package.json +39 -12
package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import "../../../../../tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js";
|
|
2
|
+
import "../../../../../@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js";
|
|
3
|
+
import { stringify } from "./display.js";
|
|
4
|
+
import "./constants.js";
|
|
5
|
+
import "./helpers.js";
|
|
6
|
+
import { printDiffOrStringify } from "./diff.js";
|
|
7
|
+
import { serializeValue } from "./serialize.js";
|
|
8
|
+
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.2/node_modules/@vitest/utils/dist/error.js
|
|
9
|
+
function processError(_err, diffOptions, seen = /* @__PURE__ */ new WeakSet()) {
|
|
10
|
+
if (!_err || typeof _err !== "object") return { message: String(_err) };
|
|
11
|
+
const err = _err;
|
|
12
|
+
if (err.showDiff || err.showDiff === void 0 && err.expected !== void 0 && err.actual !== void 0) err.diff = printDiffOrStringify(err.actual, err.expected, {
|
|
13
|
+
...diffOptions,
|
|
14
|
+
...err.diffOptions
|
|
15
|
+
});
|
|
16
|
+
if ("expected" in err && typeof err.expected !== "string") err.expected = stringify(err.expected, 10);
|
|
17
|
+
if ("actual" in err && typeof err.actual !== "string") err.actual = stringify(err.actual, 10);
|
|
18
|
+
try {
|
|
19
|
+
if (!seen.has(err) && typeof err.cause === "object") {
|
|
20
|
+
seen.add(err);
|
|
21
|
+
err.cause = processError(err.cause, diffOptions, seen);
|
|
22
|
+
}
|
|
23
|
+
} catch {}
|
|
24
|
+
try {
|
|
25
|
+
return serializeValue(err);
|
|
26
|
+
} catch (e) {
|
|
27
|
+
return serializeValue(/* @__PURE__ */ new Error(`Failed to fully serialize error: ${e?.message}\nInner error message: ${err?.message}`));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { processError };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3QrdXRpbHNANC4xLjIvbm9kZV9tb2R1bGVzL0B2aXRlc3QvdXRpbHMvZGlzdC9lcnJvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmludERpZmZPclN0cmluZ2lmeSB9IGZyb20gJy4vZGlmZi5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuL2Rpc3BsYXkuanMnO1xuaW1wb3J0IHsgc2VyaWFsaXplVmFsdWUgfSBmcm9tICcuL3NlcmlhbGl6ZS5qcyc7XG5pbXBvcnQgJ0B2aXRlc3QvcHJldHR5LWZvcm1hdCc7XG5pbXBvcnQgJ3RpbnlyYWluYm93JztcbmltcG9ydCAnLi9oZWxwZXJzLmpzJztcbmltcG9ydCAnLi9jb25zdGFudHMuanMnO1xuXG5mdW5jdGlvbiBwcm9jZXNzRXJyb3IoX2VyciwgZGlmZk9wdGlvbnMsIHNlZW4gPSBuZXcgV2Vha1NldCgpKSB7XG5cdGlmICghX2VyciB8fCB0eXBlb2YgX2VyciAhPT0gXCJvYmplY3RcIikge1xuXHRcdHJldHVybiB7IG1lc3NhZ2U6IFN0cmluZyhfZXJyKSB9O1xuXHR9XG5cdGNvbnN0IGVyciA9IF9lcnI7XG5cdGlmIChlcnIuc2hvd0RpZmYgfHwgZXJyLnNob3dEaWZmID09PSB1bmRlZmluZWQgJiYgZXJyLmV4cGVjdGVkICE9PSB1bmRlZmluZWQgJiYgZXJyLmFjdHVhbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0ZXJyLmRpZmYgPSBwcmludERpZmZPclN0cmluZ2lmeShlcnIuYWN0dWFsLCBlcnIuZXhwZWN0ZWQsIHtcblx0XHRcdC4uLmRpZmZPcHRpb25zLFxuXHRcdFx0Li4uZXJyLmRpZmZPcHRpb25zXG5cdFx0fSk7XG5cdH1cblx0aWYgKFwiZXhwZWN0ZWRcIiBpbiBlcnIgJiYgdHlwZW9mIGVyci5leHBlY3RlZCAhPT0gXCJzdHJpbmdcIikge1xuXHRcdGVyci5leHBlY3RlZCA9IHN0cmluZ2lmeShlcnIuZXhwZWN0ZWQsIDEwKTtcblx0fVxuXHRpZiAoXCJhY3R1YWxcIiBpbiBlcnIgJiYgdHlwZW9mIGVyci5hY3R1YWwgIT09IFwic3RyaW5nXCIpIHtcblx0XHRlcnIuYWN0dWFsID0gc3RyaW5naWZ5KGVyci5hY3R1YWwsIDEwKTtcblx0fVxuXHQvLyBzb21lIEVycm9yIGltcGxlbWVudGF0aW9ucyBtYXkgbm90IGFsbG93IHJld3JpdGluZyBjYXVzZVxuXHQvLyBpbiBtb3N0IGNhc2VzLCB0aGUgYXNzaWdubWVudCB3aWxsIGxlYWQgdG8gXCJlcnIuY2F1c2UgPSBlcnIuY2F1c2VcIlxuXHR0cnkge1xuXHRcdGlmICghc2Vlbi5oYXMoZXJyKSAmJiB0eXBlb2YgZXJyLmNhdXNlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRzZWVuLmFkZChlcnIpO1xuXHRcdFx0ZXJyLmNhdXNlID0gcHJvY2Vzc0Vycm9yKGVyci5jYXVzZSwgZGlmZk9wdGlvbnMsIHNlZW4pO1xuXHRcdH1cblx0fSBjYXRjaCB7fVxuXHR0cnkge1xuXHRcdHJldHVybiBzZXJpYWxpemVWYWx1ZShlcnIpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIHNlcmlhbGl6ZVZhbHVlKG5ldyBFcnJvcihgRmFpbGVkIHRvIGZ1bGx5IHNlcmlhbGl6ZSBlcnJvcjogJHtlPy5tZXNzYWdlfVxcbklubmVyIGVycm9yIG1lc3NhZ2U6ICR7ZXJyPy5tZXNzYWdlfWApKTtcblx0fVxufVxuXG5leHBvcnQgeyBwcm9jZXNzRXJyb3IsIHNlcmlhbGl6ZVZhbHVlIGFzIHNlcmlhbGl6ZUVycm9yIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFRQSxTQUFTLGFBQWEsTUFBTSxhQUFhLHVCQUFPLElBQUksU0FBUyxFQUFFO0FBQzlELEtBQUksQ0FBQyxRQUFRLE9BQU8sU0FBUyxTQUM1QixRQUFPLEVBQUUsU0FBUyxPQUFPLEtBQUssRUFBRTtDQUVqQyxNQUFNLE1BQU07QUFDWixLQUFJLElBQUksWUFBWSxJQUFJLGFBQWEsVUFBYSxJQUFJLGFBQWEsVUFBYSxJQUFJLFdBQVcsT0FDOUYsS0FBSSxPQUFPLHFCQUFxQixJQUFJLFFBQVEsSUFBSSxVQUFVO0VBQ3pELEdBQUc7RUFDSCxHQUFHLElBQUk7RUFDUCxDQUFDO0FBRUgsS0FBSSxjQUFjLE9BQU8sT0FBTyxJQUFJLGFBQWEsU0FDaEQsS0FBSSxXQUFXLFVBQVUsSUFBSSxVQUFVLEdBQUc7QUFFM0MsS0FBSSxZQUFZLE9BQU8sT0FBTyxJQUFJLFdBQVcsU0FDNUMsS0FBSSxTQUFTLFVBQVUsSUFBSSxRQUFRLEdBQUc7QUFJdkMsS0FBSTtBQUNILE1BQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxVQUFVLFVBQVU7QUFDcEQsUUFBSyxJQUFJLElBQUk7QUFDYixPQUFJLFFBQVEsYUFBYSxJQUFJLE9BQU8sYUFBYSxLQUFLOztTQUVoRDtBQUNSLEtBQUk7QUFDSCxTQUFPLGVBQWUsSUFBSTtVQUNsQixHQUFHO0FBQ1gsU0FBTywrQkFBZSxJQUFJLE1BQU0sb0NBQW9DLEdBQUcsUUFBUSx5QkFBeUIsS0FBSyxVQUFVLENBQUMifQ==
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import "./constants.js";
|
|
2
|
+
const RealDate = Date;
|
|
3
|
+
function random(seed) {
|
|
4
|
+
const x = Math.sin(seed++) * 1e4;
|
|
5
|
+
return x - Math.floor(x);
|
|
6
|
+
}
|
|
7
|
+
function shuffle(array, seed = RealDate.now()) {
|
|
8
|
+
let length = array.length;
|
|
9
|
+
while (length) {
|
|
10
|
+
const index = Math.floor(random(seed) * length--);
|
|
11
|
+
const previous = array[length];
|
|
12
|
+
array[length] = array[index];
|
|
13
|
+
array[index] = previous;
|
|
14
|
+
++seed;
|
|
15
|
+
}
|
|
16
|
+
return array;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get original stacktrace without source map support the most performant way.
|
|
20
|
+
* - Create only 1 stack frame.
|
|
21
|
+
* - Rewrite prepareStackTrace to bypass "support-stack-trace" (usually takes ~250ms).
|
|
22
|
+
*/
|
|
23
|
+
function createSimpleStackTrace(options) {
|
|
24
|
+
const { message = "$$stack trace error", stackTraceLimit = 1 } = options || {};
|
|
25
|
+
const limit = Error.stackTraceLimit;
|
|
26
|
+
const prepareStackTrace = Error.prepareStackTrace;
|
|
27
|
+
Error.stackTraceLimit = stackTraceLimit;
|
|
28
|
+
Error.prepareStackTrace = (e) => e.stack;
|
|
29
|
+
const stackTrace = new Error(message).stack || "";
|
|
30
|
+
Error.prepareStackTrace = prepareStackTrace;
|
|
31
|
+
Error.stackTraceLimit = limit;
|
|
32
|
+
return stackTrace;
|
|
33
|
+
}
|
|
34
|
+
function notNullish(v) {
|
|
35
|
+
return v != null;
|
|
36
|
+
}
|
|
37
|
+
function assertTypes(value, name, types) {
|
|
38
|
+
const receivedType = typeof value;
|
|
39
|
+
if (!types.includes(receivedType)) throw new TypeError(`${name} value must be ${types.join(" or ")}, received "${receivedType}"`);
|
|
40
|
+
}
|
|
41
|
+
function isPrimitive(value) {
|
|
42
|
+
return value === null || typeof value !== "function" && typeof value !== "object";
|
|
43
|
+
}
|
|
44
|
+
function filterOutComments(s) {
|
|
45
|
+
const result = [];
|
|
46
|
+
let commentState = "none";
|
|
47
|
+
for (let i = 0; i < s.length; ++i) if (commentState === "singleline") {
|
|
48
|
+
if (s[i] === "\n") commentState = "none";
|
|
49
|
+
} else if (commentState === "multiline") {
|
|
50
|
+
if (s[i - 1] === "*" && s[i] === "/") commentState = "none";
|
|
51
|
+
} else if (commentState === "none") if (s[i] === "/" && s[i + 1] === "/") commentState = "singleline";
|
|
52
|
+
else if (s[i] === "/" && s[i + 1] === "*") {
|
|
53
|
+
commentState = "multiline";
|
|
54
|
+
i += 2;
|
|
55
|
+
} else result.push(s[i]);
|
|
56
|
+
return result.join("");
|
|
57
|
+
}
|
|
58
|
+
function toArray(array) {
|
|
59
|
+
if (array === null || array === void 0) array = [];
|
|
60
|
+
if (Array.isArray(array)) return array;
|
|
61
|
+
return [array];
|
|
62
|
+
}
|
|
63
|
+
function isObject(item) {
|
|
64
|
+
return item != null && typeof item === "object" && !Array.isArray(item);
|
|
65
|
+
}
|
|
66
|
+
function isFinalObj(obj) {
|
|
67
|
+
return obj === Object.prototype || obj === Function.prototype || obj === RegExp.prototype;
|
|
68
|
+
}
|
|
69
|
+
function getType(value) {
|
|
70
|
+
return Object.prototype.toString.apply(value).slice(8, -1);
|
|
71
|
+
}
|
|
72
|
+
function collectOwnProperties(obj, collector) {
|
|
73
|
+
const collect = typeof collector === "function" ? collector : (key) => collector.add(key);
|
|
74
|
+
Object.getOwnPropertyNames(obj).forEach(collect);
|
|
75
|
+
Object.getOwnPropertySymbols(obj).forEach(collect);
|
|
76
|
+
}
|
|
77
|
+
function getOwnProperties(obj) {
|
|
78
|
+
const ownProps = /* @__PURE__ */ new Set();
|
|
79
|
+
if (isFinalObj(obj)) return [];
|
|
80
|
+
collectOwnProperties(obj, ownProps);
|
|
81
|
+
return Array.from(ownProps);
|
|
82
|
+
}
|
|
83
|
+
const defaultCloneOptions = { forceWritable: false };
|
|
84
|
+
function deepClone(val, options = defaultCloneOptions) {
|
|
85
|
+
return clone(val, /* @__PURE__ */ new WeakMap(), options);
|
|
86
|
+
}
|
|
87
|
+
function clone(val, seen, options = defaultCloneOptions) {
|
|
88
|
+
let k, out;
|
|
89
|
+
if (seen.has(val)) return seen.get(val);
|
|
90
|
+
if (Array.isArray(val)) {
|
|
91
|
+
out = Array.from({ length: k = val.length });
|
|
92
|
+
seen.set(val, out);
|
|
93
|
+
while (k--) out[k] = clone(val[k], seen, options);
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
if (Object.prototype.toString.call(val) === "[object Object]") {
|
|
97
|
+
out = Object.create(Object.getPrototypeOf(val));
|
|
98
|
+
seen.set(val, out);
|
|
99
|
+
const props = getOwnProperties(val);
|
|
100
|
+
for (const k of props) {
|
|
101
|
+
const descriptor = Object.getOwnPropertyDescriptor(val, k);
|
|
102
|
+
if (!descriptor) continue;
|
|
103
|
+
const cloned = clone(val[k], seen, options);
|
|
104
|
+
if (options.forceWritable) Object.defineProperty(out, k, {
|
|
105
|
+
enumerable: descriptor.enumerable,
|
|
106
|
+
configurable: true,
|
|
107
|
+
writable: true,
|
|
108
|
+
value: cloned
|
|
109
|
+
});
|
|
110
|
+
else if ("get" in descriptor) Object.defineProperty(out, k, {
|
|
111
|
+
...descriptor,
|
|
112
|
+
get() {
|
|
113
|
+
return cloned;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
else Object.defineProperty(out, k, {
|
|
117
|
+
...descriptor,
|
|
118
|
+
value: cloned
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
return val;
|
|
124
|
+
}
|
|
125
|
+
function noop() {}
|
|
126
|
+
function objectAttr(source, path, defaultValue = void 0) {
|
|
127
|
+
const paths = path.replace(/\[(\d+)\]/g, ".$1").split(".");
|
|
128
|
+
let result = source;
|
|
129
|
+
for (const p of paths) {
|
|
130
|
+
result = new Object(result)[p];
|
|
131
|
+
if (result === void 0) return defaultValue;
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
function createDefer() {
|
|
136
|
+
let resolve = null;
|
|
137
|
+
let reject = null;
|
|
138
|
+
const p = new Promise((_resolve, _reject) => {
|
|
139
|
+
resolve = _resolve;
|
|
140
|
+
reject = _reject;
|
|
141
|
+
});
|
|
142
|
+
p.resolve = resolve;
|
|
143
|
+
p.reject = reject;
|
|
144
|
+
return p;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* If code starts with a function call, will return its last index, respecting arguments.
|
|
148
|
+
* This will return 25 - last ending character of toMatch ")"
|
|
149
|
+
* Also works with callbacks
|
|
150
|
+
* ```
|
|
151
|
+
* toMatch({ test: '123' });
|
|
152
|
+
* toBeAliased('123')
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
function getCallLastIndex(code) {
|
|
156
|
+
let charIndex = -1;
|
|
157
|
+
let inString = null;
|
|
158
|
+
let startedBracers = 0;
|
|
159
|
+
let endedBracers = 0;
|
|
160
|
+
let beforeChar = null;
|
|
161
|
+
while (charIndex <= code.length) {
|
|
162
|
+
beforeChar = code[charIndex];
|
|
163
|
+
charIndex++;
|
|
164
|
+
const char = code[charIndex];
|
|
165
|
+
if ((char === "\"" || char === "'" || char === "`") && beforeChar !== "\\") {
|
|
166
|
+
if (inString === char) inString = null;
|
|
167
|
+
else if (!inString) inString = char;
|
|
168
|
+
}
|
|
169
|
+
if (!inString) {
|
|
170
|
+
if (char === "(") startedBracers++;
|
|
171
|
+
if (char === ")") endedBracers++;
|
|
172
|
+
}
|
|
173
|
+
if (startedBracers && endedBracers && startedBracers === endedBracers) return charIndex;
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
function isNegativeNaN(val) {
|
|
178
|
+
if (!Number.isNaN(val)) return false;
|
|
179
|
+
const f64 = new Float64Array(1);
|
|
180
|
+
f64[0] = val;
|
|
181
|
+
return new Uint32Array(f64.buffer)[1] >>> 31 === 1;
|
|
182
|
+
}
|
|
183
|
+
function toString(v) {
|
|
184
|
+
return Object.prototype.toString.call(v);
|
|
185
|
+
}
|
|
186
|
+
function isPlainObject(val) {
|
|
187
|
+
return toString(val) === "[object Object]" && (!val.constructor || val.constructor.name === "Object");
|
|
188
|
+
}
|
|
189
|
+
function isMergeableObject(item) {
|
|
190
|
+
return isPlainObject(item) && !Array.isArray(item);
|
|
191
|
+
}
|
|
192
|
+
function ordinal(i) {
|
|
193
|
+
const j = i % 10;
|
|
194
|
+
const k = i % 100;
|
|
195
|
+
if (j === 1 && k !== 11) return `${i}st`;
|
|
196
|
+
if (j === 2 && k !== 12) return `${i}nd`;
|
|
197
|
+
if (j === 3 && k !== 13) return `${i}rd`;
|
|
198
|
+
return `${i}th`;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Deep merge :P
|
|
202
|
+
*
|
|
203
|
+
* Will merge objects only if they are plain
|
|
204
|
+
*
|
|
205
|
+
* Do not merge types - it is very expensive and usually it's better to case a type here
|
|
206
|
+
*/
|
|
207
|
+
function deepMerge(target, ...sources) {
|
|
208
|
+
if (!sources.length) return target;
|
|
209
|
+
const source = sources.shift();
|
|
210
|
+
if (source === void 0) return target;
|
|
211
|
+
if (isMergeableObject(target) && isMergeableObject(source)) Object.keys(source).forEach((key) => {
|
|
212
|
+
const _source = source;
|
|
213
|
+
if (isMergeableObject(_source[key])) {
|
|
214
|
+
if (!target[key]) target[key] = {};
|
|
215
|
+
deepMerge(target[key], _source[key]);
|
|
216
|
+
} else target[key] = _source[key];
|
|
217
|
+
});
|
|
218
|
+
return deepMerge(target, ...sources);
|
|
219
|
+
}
|
|
220
|
+
function unique(array) {
|
|
221
|
+
return Array.from(new Set(array));
|
|
222
|
+
}
|
|
223
|
+
//#endregion
|
|
224
|
+
export { assertTypes, createDefer, createSimpleStackTrace, deepClone, filterOutComments, getCallLastIndex, getOwnProperties, getType, isNegativeNaN, isObject, isPrimitive, noop, notNullish, objectAttr, ordinal, shuffle, toArray, unique };
|
|
225
|
+
|
|
226
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHZpdGVzdCt1dGlsc0A0LjEuMi9ub2RlX21vZHVsZXMvQHZpdGVzdC91dGlscy9kaXN0L2hlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkFMSURfSURfUFJFRklYLCBOVUxMX0JZVEVfUExBQ0VIT0xERVIgfSBmcm9tICcuL2NvbnN0YW50cy5qcyc7XG5cbi8vIHBvcnQgZnJvbSBuYW5vaWRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9haS9uYW5vaWRcbmNvbnN0IHVybEFscGhhYmV0ID0gXCJ1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0XCI7XG5mdW5jdGlvbiBuYW5vaWQoc2l6ZSA9IDIxKSB7XG5cdGxldCBpZCA9IFwiXCI7XG5cdGxldCBpID0gc2l6ZTtcblx0d2hpbGUgKGktLSkge1xuXHRcdGlkICs9IHVybEFscGhhYmV0W01hdGgucmFuZG9tKCkgKiA2NCB8IDBdO1xuXHR9XG5cdHJldHVybiBpZDtcbn1cblxuY29uc3QgUmVhbERhdGUgPSBEYXRlO1xuZnVuY3Rpb24gcmFuZG9tKHNlZWQpIHtcblx0Y29uc3QgeCA9IE1hdGguc2luKHNlZWQrKykgKiAxZTQ7XG5cdHJldHVybiB4IC0gTWF0aC5mbG9vcih4KTtcbn1cbmZ1bmN0aW9uIHNodWZmbGUoYXJyYXksIHNlZWQgPSBSZWFsRGF0ZS5ub3coKSkge1xuXHRsZXQgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHR3aGlsZSAobGVuZ3RoKSB7XG5cdFx0Y29uc3QgaW5kZXggPSBNYXRoLmZsb29yKHJhbmRvbShzZWVkKSAqIGxlbmd0aC0tKTtcblx0XHRjb25zdCBwcmV2aW91cyA9IGFycmF5W2xlbmd0aF07XG5cdFx0YXJyYXlbbGVuZ3RoXSA9IGFycmF5W2luZGV4XTtcblx0XHRhcnJheVtpbmRleF0gPSBwcmV2aW91cztcblx0XHQrK3NlZWQ7XG5cdH1cblx0cmV0dXJuIGFycmF5O1xufVxuXG4vKipcbiogR2V0IG9yaWdpbmFsIHN0YWNrdHJhY2Ugd2l0aG91dCBzb3VyY2UgbWFwIHN1cHBvcnQgdGhlIG1vc3QgcGVyZm9ybWFudCB3YXkuXG4qIC0gQ3JlYXRlIG9ubHkgMSBzdGFjayBmcmFtZS5cbiogLSBSZXdyaXRlIHByZXBhcmVTdGFja1RyYWNlIHRvIGJ5cGFzcyBcInN1cHBvcnQtc3RhY2stdHJhY2VcIiAodXN1YWxseSB0YWtlcyB+MjUwbXMpLlxuKi9cbmZ1bmN0aW9uIGNyZWF0ZVNpbXBsZVN0YWNrVHJhY2Uob3B0aW9ucykge1xuXHRjb25zdCB7IG1lc3NhZ2UgPSBcIiQkc3RhY2sgdHJhY2UgZXJyb3JcIiwgc3RhY2tUcmFjZUxpbWl0ID0gMSB9ID0gb3B0aW9ucyB8fCB7fTtcblx0Y29uc3QgbGltaXQgPSBFcnJvci5zdGFja1RyYWNlTGltaXQ7XG5cdGNvbnN0IHByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7XG5cdEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IHN0YWNrVHJhY2VMaW1pdDtcblx0RXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSAoZSkgPT4gZS5zdGFjaztcblx0Y29uc3QgZXJyID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHRjb25zdCBzdGFja1RyYWNlID0gZXJyLnN0YWNrIHx8IFwiXCI7XG5cdEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJlcGFyZVN0YWNrVHJhY2U7XG5cdEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IGxpbWl0O1xuXHRyZXR1cm4gc3RhY2tUcmFjZTtcbn1cbmZ1bmN0aW9uIG5vdE51bGxpc2godikge1xuXHRyZXR1cm4gdiAhPSBudWxsO1xufVxuZnVuY3Rpb24gYXNzZXJ0VHlwZXModmFsdWUsIG5hbWUsIHR5cGVzKSB7XG5cdGNvbnN0IHJlY2VpdmVkVHlwZSA9IHR5cGVvZiB2YWx1ZTtcblx0Y29uc3QgcGFzcyA9IHR5cGVzLmluY2x1ZGVzKHJlY2VpdmVkVHlwZSk7XG5cdGlmICghcGFzcykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYCR7bmFtZX0gdmFsdWUgbXVzdCBiZSAke3R5cGVzLmpvaW4oXCIgb3IgXCIpfSwgcmVjZWl2ZWQgXCIke3JlY2VpdmVkVHlwZX1cImApO1xuXHR9XG59XG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiO1xufVxuZnVuY3Rpb24gc2xhc2gocGF0aCkge1xuXHRyZXR1cm4gcGF0aC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbn1cbmNvbnN0IHBvc3RmaXhSRSA9IC9bPyNdLiokLztcbmZ1bmN0aW9uIGNsZWFuVXJsKHVybCkge1xuXHRyZXR1cm4gdXJsLnJlcGxhY2UocG9zdGZpeFJFLCBcIlwiKTtcbn1cbmNvbnN0IGV4dGVybmFsUkUgPSAvXig/OlthLXpdKzopP1xcL1xcLy87XG5jb25zdCBpc0V4dGVybmFsVXJsID0gKHVybCkgPT4gZXh0ZXJuYWxSRS50ZXN0KHVybCk7XG4vKipcbiogUHJlcGVuZCBgL0BpZC9gIGFuZCByZXBsYWNlIG51bGwgYnl0ZSBzbyB0aGUgaWQgaXMgVVJMLXNhZmUuXG4qIFRoaXMgaXMgcHJlcGVuZGVkIHRvIHJlc29sdmVkIGlkcyB0aGF0IGFyZSBub3QgdmFsaWQgYnJvd3NlclxuKiBpbXBvcnQgc3BlY2lmaWVycyBieSB0aGUgaW1wb3J0QW5hbHlzaXMgcGx1Z2luLlxuKi9cbmZ1bmN0aW9uIHdyYXBJZChpZCkge1xuXHRyZXR1cm4gaWQuc3RhcnRzV2l0aChWQUxJRF9JRF9QUkVGSVgpID8gaWQgOiBWQUxJRF9JRF9QUkVGSVggKyBpZC5yZXBsYWNlKFwiXFwwXCIsIE5VTExfQllURV9QTEFDRUhPTERFUik7XG59XG4vKipcbiogVW5kbyB7QGxpbmsgd3JhcElkfSdzIGAvQGlkL2AgYW5kIG51bGwgYnl0ZSByZXBsYWNlbWVudHMuXG4qL1xuZnVuY3Rpb24gdW53cmFwSWQoaWQpIHtcblx0cmV0dXJuIGlkLnN0YXJ0c1dpdGgoVkFMSURfSURfUFJFRklYKSA/IGlkLnNsaWNlKFZBTElEX0lEX1BSRUZJWC5sZW5ndGgpLnJlcGxhY2UoTlVMTF9CWVRFX1BMQUNFSE9MREVSLCBcIlxcMFwiKSA6IGlkO1xufVxuZnVuY3Rpb24gd2l0aFRyYWlsaW5nU2xhc2gocGF0aCkge1xuXHRpZiAocGF0aC5hdCgtMSkgIT09IFwiL1wiKSB7XG5cdFx0cmV0dXJuIGAke3BhdGh9L2A7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBmaWx0ZXJPdXRDb21tZW50cyhzKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgY29tbWVudFN0YXRlID0gXCJub25lXCI7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmIChjb21tZW50U3RhdGUgPT09IFwic2luZ2xlbGluZVwiKSB7XG5cdFx0XHRpZiAoc1tpXSA9PT0gXCJcXG5cIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbW1lbnRTdGF0ZSA9PT0gXCJtdWx0aWxpbmVcIikge1xuXHRcdFx0aWYgKHNbaSAtIDFdID09PSBcIipcIiAmJiBzW2ldID09PSBcIi9cIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbW1lbnRTdGF0ZSA9PT0gXCJub25lXCIpIHtcblx0XHRcdGlmIChzW2ldID09PSBcIi9cIiAmJiBzW2kgKyAxXSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0Y29tbWVudFN0YXRlID0gXCJzaW5nbGVsaW5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKHNbaV0gPT09IFwiL1wiICYmIHNbaSArIDFdID09PSBcIipcIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm11bHRpbGluZVwiO1xuXHRcdFx0XHRpICs9IDI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXN1bHQucHVzaChzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xufVxuY29uc3QgYmFyZUltcG9ydFJFID0gL14oPyFbYS16XTopW1xcd0BdKD8hLio6XFwvXFwvKS9pO1xuZnVuY3Rpb24gaXNCYXJlSW1wb3J0KGlkKSB7XG5cdHJldHVybiBiYXJlSW1wb3J0UkUudGVzdChpZCk7XG59XG5mdW5jdGlvbiB0b0FycmF5KGFycmF5KSB7XG5cdGlmIChhcnJheSA9PT0gbnVsbCB8fCBhcnJheSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0YXJyYXkgPSBbXTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblx0cmV0dXJuIFthcnJheV07XG59XG5mdW5jdGlvbiBpc09iamVjdChpdGVtKSB7XG5cdHJldHVybiBpdGVtICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBpc0ZpbmFsT2JqKG9iaikge1xuXHRyZXR1cm4gb2JqID09PSBPYmplY3QucHJvdG90eXBlIHx8IG9iaiA9PT0gRnVuY3Rpb24ucHJvdG90eXBlIHx8IG9iaiA9PT0gUmVnRXhwLnByb3RvdHlwZTtcbn1cbmZ1bmN0aW9uIGdldFR5cGUodmFsdWUpIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpLnNsaWNlKDgsIC0xKTtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RPd25Qcm9wZXJ0aWVzKG9iaiwgY29sbGVjdG9yKSB7XG5cdGNvbnN0IGNvbGxlY3QgPSB0eXBlb2YgY29sbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgPyBjb2xsZWN0b3IgOiAoa2V5KSA9PiBjb2xsZWN0b3IuYWRkKGtleSk7XG5cdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChjb2xsZWN0KTtcblx0T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopLmZvckVhY2goY29sbGVjdCk7XG59XG5mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0aWVzKG9iaikge1xuXHRjb25zdCBvd25Qcm9wcyA9IG5ldyBTZXQoKTtcblx0aWYgKGlzRmluYWxPYmoob2JqKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRjb2xsZWN0T3duUHJvcGVydGllcyhvYmosIG93blByb3BzKTtcblx0cmV0dXJuIEFycmF5LmZyb20ob3duUHJvcHMpO1xufVxuY29uc3QgZGVmYXVsdENsb25lT3B0aW9ucyA9IHsgZm9yY2VXcml0YWJsZTogZmFsc2UgfTtcbmZ1bmN0aW9uIGRlZXBDbG9uZSh2YWwsIG9wdGlvbnMgPSBkZWZhdWx0Q2xvbmVPcHRpb25zKSB7XG5cdGNvbnN0IHNlZW4gPSBuZXcgV2Vha01hcCgpO1xuXHRyZXR1cm4gY2xvbmUodmFsLCBzZWVuLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGNsb25lKHZhbCwgc2Vlbiwgb3B0aW9ucyA9IGRlZmF1bHRDbG9uZU9wdGlvbnMpIHtcblx0bGV0IGssIG91dDtcblx0aWYgKHNlZW4uaGFzKHZhbCkpIHtcblx0XHRyZXR1cm4gc2Vlbi5nZXQodmFsKTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0b3V0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogayA9IHZhbC5sZW5ndGggfSk7XG5cdFx0c2Vlbi5zZXQodmFsLCBvdXQpO1xuXHRcdHdoaWxlIChrLS0pIHtcblx0XHRcdG91dFtrXSA9IGNsb25lKHZhbFtrXSwgc2Vlbiwgb3B0aW9ucyk7XG5cdFx0fVxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiKSB7XG5cdFx0b3V0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKSk7XG5cdFx0c2Vlbi5zZXQodmFsLCBvdXQpO1xuXHRcdC8vIHdlIGRvbid0IG5lZWQgcHJvcGVydGllcyBmcm9tIHByb3RvdHlwZVxuXHRcdGNvbnN0IHByb3BzID0gZ2V0T3duUHJvcGVydGllcyh2YWwpO1xuXHRcdGZvciAoY29uc3QgayBvZiBwcm9wcykge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsLCBrKTtcblx0XHRcdGlmICghZGVzY3JpcHRvcikge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNsb25lZCA9IGNsb25lKHZhbFtrXSwgc2Vlbiwgb3B0aW9ucyk7XG5cdFx0XHRpZiAob3B0aW9ucy5mb3JjZVdyaXRhYmxlKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvdXQsIGssIHtcblx0XHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiBjbG9uZWRcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKFwiZ2V0XCIgaW4gZGVzY3JpcHRvcikge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrLCB7XG5cdFx0XHRcdFx0Li4uZGVzY3JpcHRvcixcblx0XHRcdFx0XHRnZXQoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY2xvbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrLCB7XG5cdFx0XHRcdFx0Li4uZGVzY3JpcHRvcixcblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVkXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cdHJldHVybiB2YWw7XG59XG5mdW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIG9iamVjdEF0dHIoc291cmNlLCBwYXRoLCBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQpIHtcblx0Ly8gYVszXS5iIC0+IGEuMy5iXG5cdGNvbnN0IHBhdGhzID0gcGF0aC5yZXBsYWNlKC9cXFsoXFxkKylcXF0vZywgXCIuJDFcIikuc3BsaXQoXCIuXCIpO1xuXHRsZXQgcmVzdWx0ID0gc291cmNlO1xuXHRmb3IgKGNvbnN0IHAgb2YgcGF0aHMpIHtcblx0XHRyZXN1bHQgPSBuZXcgT2JqZWN0KHJlc3VsdClbcF07XG5cdFx0aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY3JlYXRlRGVmZXIoKSB7XG5cdGxldCByZXNvbHZlID0gbnVsbDtcblx0bGV0IHJlamVjdCA9IG51bGw7XG5cdGNvbnN0IHAgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcblx0XHRyZXNvbHZlID0gX3Jlc29sdmU7XG5cdFx0cmVqZWN0ID0gX3JlamVjdDtcblx0fSk7XG5cdHAucmVzb2x2ZSA9IHJlc29sdmU7XG5cdHAucmVqZWN0ID0gcmVqZWN0O1xuXHRyZXR1cm4gcDtcbn1cbi8qKlxuKiBJZiBjb2RlIHN0YXJ0cyB3aXRoIGEgZnVuY3Rpb24gY2FsbCwgd2lsbCByZXR1cm4gaXRzIGxhc3QgaW5kZXgsIHJlc3BlY3RpbmcgYXJndW1lbnRzLlxuKiBUaGlzIHdpbGwgcmV0dXJuIDI1IC0gbGFzdCBlbmRpbmcgY2hhcmFjdGVyIG9mIHRvTWF0Y2ggXCIpXCJcbiogQWxzbyB3b3JrcyB3aXRoIGNhbGxiYWNrc1xuKiBgYGBcbiogdG9NYXRjaCh7IHRlc3Q6ICcxMjMnIH0pO1xuKiB0b0JlQWxpYXNlZCgnMTIzJylcbiogYGBgXG4qL1xuZnVuY3Rpb24gZ2V0Q2FsbExhc3RJbmRleChjb2RlKSB7XG5cdGxldCBjaGFySW5kZXggPSAtMTtcblx0bGV0IGluU3RyaW5nID0gbnVsbDtcblx0bGV0IHN0YXJ0ZWRCcmFjZXJzID0gMDtcblx0bGV0IGVuZGVkQnJhY2VycyA9IDA7XG5cdGxldCBiZWZvcmVDaGFyID0gbnVsbDtcblx0d2hpbGUgKGNoYXJJbmRleCA8PSBjb2RlLmxlbmd0aCkge1xuXHRcdGJlZm9yZUNoYXIgPSBjb2RlW2NoYXJJbmRleF07XG5cdFx0Y2hhckluZGV4Kys7XG5cdFx0Y29uc3QgY2hhciA9IGNvZGVbY2hhckluZGV4XTtcblx0XHRjb25zdCBpc0NoYXJTdHJpbmcgPSBjaGFyID09PSBcIlxcXCJcIiB8fCBjaGFyID09PSBcIidcIiB8fCBjaGFyID09PSBcImBcIjtcblx0XHRpZiAoaXNDaGFyU3RyaW5nICYmIGJlZm9yZUNoYXIgIT09IFwiXFxcXFwiKSB7XG5cdFx0XHRpZiAoaW5TdHJpbmcgPT09IGNoYXIpIHtcblx0XHRcdFx0aW5TdHJpbmcgPSBudWxsO1xuXHRcdFx0fSBlbHNlIGlmICghaW5TdHJpbmcpIHtcblx0XHRcdFx0aW5TdHJpbmcgPSBjaGFyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIWluU3RyaW5nKSB7XG5cdFx0XHRpZiAoY2hhciA9PT0gXCIoXCIpIHtcblx0XHRcdFx0c3RhcnRlZEJyYWNlcnMrKztcblx0XHRcdH1cblx0XHRcdGlmIChjaGFyID09PSBcIilcIikge1xuXHRcdFx0XHRlbmRlZEJyYWNlcnMrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHN0YXJ0ZWRCcmFjZXJzICYmIGVuZGVkQnJhY2VycyAmJiBzdGFydGVkQnJhY2VycyA9PT0gZW5kZWRCcmFjZXJzKSB7XG5cdFx0XHRyZXR1cm4gY2hhckluZGV4O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzTmVnYXRpdmVOYU4odmFsKSB7XG5cdGlmICghTnVtYmVyLmlzTmFOKHZhbCkpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgZjY0ID0gbmV3IEZsb2F0NjRBcnJheSgxKTtcblx0ZjY0WzBdID0gdmFsO1xuXHRjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkoZjY0LmJ1ZmZlcik7XG5cdGNvbnN0IGlzTmVnYXRpdmUgPSB1MzJbMV0gPj4+IDMxID09PSAxO1xuXHRyZXR1cm4gaXNOZWdhdGl2ZTtcbn1cbmZ1bmN0aW9uIHRvU3RyaW5nKHYpIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2KTtcbn1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG5cdHJldHVybiB0b1N0cmluZyh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiICYmICghdmFsLmNvbnN0cnVjdG9yIHx8IHZhbC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk9iamVjdFwiKTtcbn1cbmZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KGl0ZW0pIHtcblx0cmV0dXJuIGlzUGxhaW5PYmplY3QoaXRlbSkgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBvcmRpbmFsKGkpIHtcblx0Y29uc3QgaiA9IGkgJSAxMDtcblx0Y29uc3QgayA9IGkgJSAxMDA7XG5cdGlmIChqID09PSAxICYmIGsgIT09IDExKSB7XG5cdFx0cmV0dXJuIGAke2l9c3RgO1xuXHR9XG5cdGlmIChqID09PSAyICYmIGsgIT09IDEyKSB7XG5cdFx0cmV0dXJuIGAke2l9bmRgO1xuXHR9XG5cdGlmIChqID09PSAzICYmIGsgIT09IDEzKSB7XG5cdFx0cmV0dXJuIGAke2l9cmRgO1xuXHR9XG5cdHJldHVybiBgJHtpfXRoYDtcbn1cbi8qKlxuKiBEZWVwIG1lcmdlIDpQXG4qXG4qIFdpbGwgbWVyZ2Ugb2JqZWN0cyBvbmx5IGlmIHRoZXkgYXJlIHBsYWluXG4qXG4qIERvIG5vdCBtZXJnZSB0eXBlcyAtIGl0IGlzIHZlcnkgZXhwZW5zaXZlIGFuZCB1c3VhbGx5IGl0J3MgYmV0dGVyIHRvIGNhc2UgYSB0eXBlIGhlcmVcbiovXG5mdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCAuLi5zb3VyY2VzKSB7XG5cdGlmICghc291cmNlcy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gdGFyZ2V0O1xuXHR9XG5cdGNvbnN0IHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcblx0aWYgKHNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRpZiAoaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSAmJiBpc01lcmdlYWJsZU9iamVjdChzb3VyY2UpKSB7XG5cdFx0T2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGNvbnN0IF9zb3VyY2UgPSBzb3VyY2U7XG5cdFx0XHRpZiAoaXNNZXJnZWFibGVPYmplY3QoX3NvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0dGFyZ2V0W2tleV0gPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIF9zb3VyY2Vba2V5XSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IF9zb3VyY2Vba2V5XTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZGVlcE1lcmdlKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG5mdW5jdGlvbiB1bmlxdWUoYXJyYXkpIHtcblx0cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhcnJheSkpO1xufVxuXG5leHBvcnQgeyBhc3NlcnRUeXBlcywgY2xlYW5VcmwsIGNsb25lLCBjcmVhdGVEZWZlciwgY3JlYXRlU2ltcGxlU3RhY2tUcmFjZSwgZGVlcENsb25lLCBkZWVwTWVyZ2UsIGZpbHRlck91dENvbW1lbnRzLCBnZXRDYWxsTGFzdEluZGV4LCBnZXRPd25Qcm9wZXJ0aWVzLCBnZXRUeXBlLCBpc0JhcmVJbXBvcnQsIGlzRXh0ZXJuYWxVcmwsIGlzTmVnYXRpdmVOYU4sIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSwgbmFub2lkLCBub29wLCBub3ROdWxsaXNoLCBvYmplY3RBdHRyLCBvcmRpbmFsLCBzaHVmZmxlLCBzbGFzaCwgdG9BcnJheSwgdW5pcXVlLCB1bndyYXBJZCwgd2l0aFRyYWlsaW5nU2xhc2gsIHdyYXBJZCB9O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7QUFjQSxNQUFNLFdBQVc7QUFDakIsU0FBUyxPQUFPLE1BQU07Q0FDckIsTUFBTSxJQUFJLEtBQUssSUFBSSxPQUFPLEdBQUc7QUFDN0IsUUFBTyxJQUFJLEtBQUssTUFBTSxFQUFFOztBQUV6QixTQUFTLFFBQVEsT0FBTyxPQUFPLFNBQVMsS0FBSyxFQUFFO0NBQzlDLElBQUksU0FBUyxNQUFNO0FBQ25CLFFBQU8sUUFBUTtFQUNkLE1BQU0sUUFBUSxLQUFLLE1BQU0sT0FBTyxLQUFLLEdBQUcsU0FBUztFQUNqRCxNQUFNLFdBQVcsTUFBTTtBQUN2QixRQUFNLFVBQVUsTUFBTTtBQUN0QixRQUFNLFNBQVM7QUFDZixJQUFFOztBQUVILFFBQU87Ozs7Ozs7QUFRUixTQUFTLHVCQUF1QixTQUFTO0NBQ3hDLE1BQU0sRUFBRSxVQUFVLHVCQUF1QixrQkFBa0IsTUFBTSxXQUFXLEVBQUU7Q0FDOUUsTUFBTSxRQUFRLE1BQU07Q0FDcEIsTUFBTSxvQkFBb0IsTUFBTTtBQUNoQyxPQUFNLGtCQUFrQjtBQUN4QixPQUFNLHFCQUFxQixNQUFNLEVBQUU7Q0FFbkMsTUFBTSxhQURNLElBQUksTUFBTSxRQUFRLENBQ1AsU0FBUztBQUNoQyxPQUFNLG9CQUFvQjtBQUMxQixPQUFNLGtCQUFrQjtBQUN4QixRQUFPOztBQUVSLFNBQVMsV0FBVyxHQUFHO0FBQ3RCLFFBQU8sS0FBSzs7QUFFYixTQUFTLFlBQVksT0FBTyxNQUFNLE9BQU87Q0FDeEMsTUFBTSxlQUFlLE9BQU87QUFFNUIsS0FBSSxDQURTLE1BQU0sU0FBUyxhQUFh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
|
package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.2/node_modules/@vitest/utils/dist/offset.js
|
|
2
|
+
const lineSplitRE = /\r?\n/;
|
|
3
|
+
function positionToOffset(source, lineNumber, columnNumber) {
|
|
4
|
+
const lines = source.split(lineSplitRE);
|
|
5
|
+
const nl = /\r\n/.test(source) ? 2 : 1;
|
|
6
|
+
let start = 0;
|
|
7
|
+
if (lineNumber > lines.length) return source.length;
|
|
8
|
+
for (let i = 0; i < lineNumber - 1; i++) start += lines[i].length + nl;
|
|
9
|
+
return start + columnNumber;
|
|
10
|
+
}
|
|
11
|
+
function offsetToLineNumber(source, offset) {
|
|
12
|
+
if (offset > source.length) throw new Error(`offset is longer than source length! offset ${offset} > length ${source.length}`);
|
|
13
|
+
const lines = source.split(lineSplitRE);
|
|
14
|
+
const nl = /\r\n/.test(source) ? 2 : 1;
|
|
15
|
+
let counted = 0;
|
|
16
|
+
let line = 0;
|
|
17
|
+
for (; line < lines.length; line++) {
|
|
18
|
+
const lineLength = lines[line].length + nl;
|
|
19
|
+
if (counted + lineLength >= offset) break;
|
|
20
|
+
counted += lineLength;
|
|
21
|
+
}
|
|
22
|
+
return line + 1;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { lineSplitRE, offsetToLineNumber, positionToOffset };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2V0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4yL25vZGVfbW9kdWxlcy9Adml0ZXN0L3V0aWxzL2Rpc3Qvb2Zmc2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGxpbmVTcGxpdFJFID0gL1xccj9cXG4vO1xuZnVuY3Rpb24gcG9zaXRpb25Ub09mZnNldChzb3VyY2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikge1xuXHRjb25zdCBsaW5lcyA9IHNvdXJjZS5zcGxpdChsaW5lU3BsaXRSRSk7XG5cdGNvbnN0IG5sID0gL1xcclxcbi8udGVzdChzb3VyY2UpID8gMiA6IDE7XG5cdGxldCBzdGFydCA9IDA7XG5cdGlmIChsaW5lTnVtYmVyID4gbGluZXMubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIHNvdXJjZS5sZW5ndGg7XG5cdH1cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lTnVtYmVyIC0gMTsgaSsrKSB7XG5cdFx0c3RhcnQgKz0gbGluZXNbaV0ubGVuZ3RoICsgbmw7XG5cdH1cblx0cmV0dXJuIHN0YXJ0ICsgY29sdW1uTnVtYmVyO1xufVxuZnVuY3Rpb24gb2Zmc2V0VG9MaW5lTnVtYmVyKHNvdXJjZSwgb2Zmc2V0KSB7XG5cdGlmIChvZmZzZXQgPiBzb3VyY2UubGVuZ3RoKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBvZmZzZXQgaXMgbG9uZ2VyIHRoYW4gc291cmNlIGxlbmd0aCEgb2Zmc2V0ICR7b2Zmc2V0fSA+IGxlbmd0aCAke3NvdXJjZS5sZW5ndGh9YCk7XG5cdH1cblx0Y29uc3QgbGluZXMgPSBzb3VyY2Uuc3BsaXQobGluZVNwbGl0UkUpO1xuXHRjb25zdCBubCA9IC9cXHJcXG4vLnRlc3Qoc291cmNlKSA/IDIgOiAxO1xuXHRsZXQgY291bnRlZCA9IDA7XG5cdGxldCBsaW5lID0gMDtcblx0Zm9yICg7IGxpbmUgPCBsaW5lcy5sZW5ndGg7IGxpbmUrKykge1xuXHRcdGNvbnN0IGxpbmVMZW5ndGggPSBsaW5lc1tsaW5lXS5sZW5ndGggKyBubDtcblx0XHRpZiAoY291bnRlZCArIGxpbmVMZW5ndGggPj0gb2Zmc2V0KSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Y291bnRlZCArPSBsaW5lTGVuZ3RoO1xuXHR9XG5cdHJldHVybiBsaW5lICsgMTtcbn1cblxuZXhwb3J0IHsgbGluZVNwbGl0UkUsIG9mZnNldFRvTGluZU51bWJlciwgcG9zaXRpb25Ub09mZnNldCB9O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLGNBQWM7QUFDcEIsU0FBUyxpQkFBaUIsUUFBUSxZQUFZLGNBQWM7Q0FDM0QsTUFBTSxRQUFRLE9BQU8sTUFBTSxZQUFZO0NBQ3ZDLE1BQU0sS0FBSyxPQUFPLEtBQUssT0FBTyxHQUFHLElBQUk7Q0FDckMsSUFBSSxRQUFRO0FBQ1osS0FBSSxhQUFhLE1BQU0sT0FDdEIsUUFBTyxPQUFPO0FBRWYsTUFBSyxJQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsR0FBRyxJQUNuQyxVQUFTLE1BQU0sR0FBRyxTQUFTO0FBRTVCLFFBQU8sUUFBUTs7QUFFaEIsU0FBUyxtQkFBbUIsUUFBUSxRQUFRO0FBQzNDLEtBQUksU0FBUyxPQUFPLE9BQ25CLE9BQU0sSUFBSSxNQUFNLCtDQUErQyxPQUFPLFlBQVksT0FBTyxTQUFTO0NBRW5HLE1BQU0sUUFBUSxPQUFPLE1BQU0sWUFBWTtDQUN2QyxNQUFNLEtBQUssT0FBTyxLQUFLLE9BQU8sR0FBRyxJQUFJO0NBQ3JDLElBQUksVUFBVTtDQUNkLElBQUksT0FBTztBQUNYLFFBQU8sT0FBTyxNQUFNLFFBQVEsUUFBUTtFQUNuQyxNQUFNLGFBQWEsTUFBTSxNQUFNLFNBQVM7QUFDeEMsTUFBSSxVQUFVLGNBQWMsT0FDM0I7QUFFRCxhQUFXOztBQUVaLFFBQU8sT0FBTyJ9
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js
|
|
2
|
+
const IS_RECORD_SYMBOL = "@@__IMMUTABLE_RECORD__@@";
|
|
3
|
+
const IS_COLLECTION_SYMBOL = "@@__IMMUTABLE_ITERABLE__@@";
|
|
4
|
+
function isImmutable(v) {
|
|
5
|
+
return v && (v[IS_COLLECTION_SYMBOL] || v[IS_RECORD_SYMBOL]);
|
|
6
|
+
}
|
|
7
|
+
const OBJECT_PROTO = Object.getPrototypeOf({});
|
|
8
|
+
function getUnserializableMessage(err) {
|
|
9
|
+
if (err instanceof Error) return `<unserializable>: ${err.message}`;
|
|
10
|
+
if (typeof err === "string") return `<unserializable>: ${err}`;
|
|
11
|
+
return "<unserializable>";
|
|
12
|
+
}
|
|
13
|
+
function serializeValue(val, seen = /* @__PURE__ */ new WeakMap()) {
|
|
14
|
+
if (!val || typeof val === "string") return val;
|
|
15
|
+
if (val instanceof Error && "toJSON" in val && typeof val.toJSON === "function") {
|
|
16
|
+
const jsonValue = val.toJSON();
|
|
17
|
+
if (jsonValue && jsonValue !== val && typeof jsonValue === "object") {
|
|
18
|
+
if (typeof val.message === "string") safe(() => jsonValue.message ??= normalizeErrorMessage(val.message));
|
|
19
|
+
if (typeof val.stack === "string") safe(() => jsonValue.stack ??= val.stack);
|
|
20
|
+
if (typeof val.name === "string") safe(() => jsonValue.name ??= val.name);
|
|
21
|
+
if (val.cause != null) safe(() => jsonValue.cause ??= serializeValue(val.cause, seen));
|
|
22
|
+
}
|
|
23
|
+
return serializeValue(jsonValue, seen);
|
|
24
|
+
}
|
|
25
|
+
if (typeof val === "function") return `Function<${val.name || "anonymous"}>`;
|
|
26
|
+
if (typeof val === "symbol") return val.toString();
|
|
27
|
+
if (typeof val !== "object") return val;
|
|
28
|
+
if (typeof Buffer !== "undefined" && val instanceof Buffer) return `<Buffer(${val.length}) ...>`;
|
|
29
|
+
if (typeof Uint8Array !== "undefined" && val instanceof Uint8Array) return `<Uint8Array(${val.length}) ...>`;
|
|
30
|
+
if (isImmutable(val)) return serializeValue(val.toJSON(), seen);
|
|
31
|
+
if (val instanceof Promise || val.constructor && val.constructor.prototype === "AsyncFunction") return "Promise";
|
|
32
|
+
if (typeof Element !== "undefined" && val instanceof Element) return val.tagName;
|
|
33
|
+
if (typeof val.toJSON === "function") return serializeValue(val.toJSON(), seen);
|
|
34
|
+
if (seen.has(val)) return seen.get(val);
|
|
35
|
+
if (Array.isArray(val)) {
|
|
36
|
+
const clone = new Array(val.length);
|
|
37
|
+
seen.set(val, clone);
|
|
38
|
+
val.forEach((e, i) => {
|
|
39
|
+
try {
|
|
40
|
+
clone[i] = serializeValue(e, seen);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
clone[i] = getUnserializableMessage(err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return clone;
|
|
46
|
+
} else {
|
|
47
|
+
const clone = Object.create(null);
|
|
48
|
+
seen.set(val, clone);
|
|
49
|
+
let obj = val;
|
|
50
|
+
while (obj && obj !== OBJECT_PROTO) {
|
|
51
|
+
Object.getOwnPropertyNames(obj).forEach((key) => {
|
|
52
|
+
if (key in clone) return;
|
|
53
|
+
try {
|
|
54
|
+
clone[key] = serializeValue(val[key], seen);
|
|
55
|
+
} catch (err) {
|
|
56
|
+
delete clone[key];
|
|
57
|
+
clone[key] = getUnserializableMessage(err);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
obj = Object.getPrototypeOf(obj);
|
|
61
|
+
}
|
|
62
|
+
if (val instanceof Error) safe(() => clone.message = normalizeErrorMessage(val.message));
|
|
63
|
+
return clone;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function safe(fn) {
|
|
67
|
+
try {
|
|
68
|
+
return fn();
|
|
69
|
+
} catch {}
|
|
70
|
+
}
|
|
71
|
+
function normalizeErrorMessage(message) {
|
|
72
|
+
return message.replace(/\(0\s?,\s?__vite_ssr_import_\d+__.(\w+)\)/g, "$1").replace(/__(vite_ssr_import|vi_import)_\d+__\./g, "").replace(/getByTestId('__vitest_\d+__')/g, "page");
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { serializeValue };
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4yL25vZGVfbW9kdWxlcy9Adml0ZXN0L3V0aWxzL2Rpc3Qvc2VyaWFsaXplLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IElTX1JFQ09SRF9TWU1CT0wgPSBcIkBAX19JTU1VVEFCTEVfUkVDT1JEX19AQFwiO1xuY29uc3QgSVNfQ09MTEVDVElPTl9TWU1CT0wgPSBcIkBAX19JTU1VVEFCTEVfSVRFUkFCTEVfX0BAXCI7XG5mdW5jdGlvbiBpc0ltbXV0YWJsZSh2KSB7XG5cdHJldHVybiB2ICYmICh2W0lTX0NPTExFQ1RJT05fU1lNQk9MXSB8fCB2W0lTX1JFQ09SRF9TWU1CT0xdKTtcbn1cbmNvbnN0IE9CSkVDVF9QUk9UTyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7XG5mdW5jdGlvbiBnZXRVbnNlcmlhbGl6YWJsZU1lc3NhZ2UoZXJyKSB7XG5cdGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdHJldHVybiBgPHVuc2VyaWFsaXphYmxlPjogJHtlcnIubWVzc2FnZX1gO1xuXHR9XG5cdGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIGA8dW5zZXJpYWxpemFibGU+OiAke2Vycn1gO1xuXHR9XG5cdHJldHVybiBcIjx1bnNlcmlhbGl6YWJsZT5cIjtcbn1cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XZWJfV29ya2Vyc19BUEkvU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG1cbmZ1bmN0aW9uIHNlcmlhbGl6ZVZhbHVlKHZhbCwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpIHtcblx0aWYgKCF2YWwgfHwgdHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiB2YWw7XG5cdH1cblx0aWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yICYmIFwidG9KU09OXCIgaW4gdmFsICYmIHR5cGVvZiB2YWwudG9KU09OID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRjb25zdCBqc29uVmFsdWUgPSB2YWwudG9KU09OKCk7XG5cdFx0aWYgKGpzb25WYWx1ZSAmJiBqc29uVmFsdWUgIT09IHZhbCAmJiB0eXBlb2YganNvblZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRpZiAodHlwZW9mIHZhbC5tZXNzYWdlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdHNhZmUoKCkgPT4ganNvblZhbHVlLm1lc3NhZ2UgPz89IG5vcm1hbGl6ZUVycm9yTWVzc2FnZSh2YWwubWVzc2FnZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiB2YWwuc3RhY2sgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0c2FmZSgoKSA9PiBqc29uVmFsdWUuc3RhY2sgPz89IHZhbC5zdGFjayk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIHZhbC5uYW1lID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdHNhZmUoKCkgPT4ganNvblZhbHVlLm5hbWUgPz89IHZhbC5uYW1lKTtcblx0XHRcdH1cblx0XHRcdGlmICh2YWwuY2F1c2UgIT0gbnVsbCkge1xuXHRcdFx0XHRzYWZlKCgpID0+IGpzb25WYWx1ZS5jYXVzZSA/Pz0gc2VyaWFsaXplVmFsdWUodmFsLmNhdXNlLCBzZWVuKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzZXJpYWxpemVWYWx1ZShqc29uVmFsdWUsIHNlZW4pO1xuXHR9XG5cdGlmICh0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYEZ1bmN0aW9uPCR7dmFsLm5hbWUgfHwgXCJhbm9ueW1vdXNcIn0+YDtcblx0fVxuXHRpZiAodHlwZW9mIHZhbCA9PT0gXCJzeW1ib2xcIikge1xuXHRcdHJldHVybiB2YWwudG9TdHJpbmcoKTtcblx0fVxuXHRpZiAodHlwZW9mIHZhbCAhPT0gXCJvYmplY3RcIikge1xuXHRcdHJldHVybiB2YWw7XG5cdH1cblx0aWYgKHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgdmFsIGluc3RhbmNlb2YgQnVmZmVyKSB7XG5cdFx0cmV0dXJuIGA8QnVmZmVyKCR7dmFsLmxlbmd0aH0pIC4uLj5gO1xuXHR9XG5cdGlmICh0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB2YWwgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG5cdFx0cmV0dXJuIGA8VWludDhBcnJheSgke3ZhbC5sZW5ndGh9KSAuLi4+YDtcblx0fVxuXHQvLyBjYW5ub3Qgc2VyaWFsaXplIGltbXV0YWJsZXMgYXMgaW1tdXRhYmxlc1xuXHRpZiAoaXNJbW11dGFibGUodmFsKSkge1xuXHRcdHJldHVybiBzZXJpYWxpemVWYWx1ZSh2YWwudG9KU09OKCksIHNlZW4pO1xuXHR9XG5cdGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlIHx8IHZhbC5jb25zdHJ1Y3RvciAmJiB2YWwuY29uc3RydWN0b3IucHJvdG90eXBlID09PSBcIkFzeW5jRnVuY3Rpb25cIikge1xuXHRcdHJldHVybiBcIlByb21pc2VcIjtcblx0fVxuXHRpZiAodHlwZW9mIEVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgdmFsIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdHJldHVybiB2YWwudGFnTmFtZTtcblx0fVxuXHRpZiAodHlwZW9mIHZhbC50b0pTT04gPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdHJldHVybiBzZXJpYWxpemVWYWx1ZSh2YWwudG9KU09OKCksIHNlZW4pO1xuXHR9XG5cdGlmIChzZWVuLmhhcyh2YWwpKSB7XG5cdFx0cmV0dXJuIHNlZW4uZ2V0KHZhbCk7XG5cdH1cblx0aWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLW5ldy1hcnJheSAtLSB3ZSBuZWVkIHRvIGtlZXAgc3BhcnNlIGFycmF5cyAoWzEsLDNdKVxuXHRcdGNvbnN0IGNsb25lID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpO1xuXHRcdHNlZW4uc2V0KHZhbCwgY2xvbmUpO1xuXHRcdHZhbC5mb3JFYWNoKChlLCBpKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjbG9uZVtpXSA9IHNlcmlhbGl6ZVZhbHVlKGUsIHNlZW4pO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGNsb25lW2ldID0gZ2V0VW5zZXJpYWxpemFibGVNZXNzYWdlKGVycik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9IGVsc2Uge1xuXHRcdC8vIE9iamVjdHMgd2l0aCBgRXJyb3JgIGNvbnN0cnVjdG9ycyBhcHBlYXIgdG8gY2F1c2UgcHJvYmxlbXMgZHVyaW5nIHdvcmtlciBjb21tdW5pY2F0aW9uXG5cdFx0Ly8gdXNpbmcgYE1lc3NhZ2VQb3J0YCwgc28gdGhlIHNlcmlhbGl6ZWQgZXJyb3Igb2JqZWN0IGlzIGJlaW5nIHJlY3JlYXRlZCBhcyBwbGFpbiBvYmplY3QuXG5cdFx0Y29uc3QgY2xvbmUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRcdHNlZW4uc2V0KHZhbCwgY2xvbmUpO1xuXHRcdGxldCBvYmogPSB2YWw7XG5cdFx0d2hpbGUgKG9iaiAmJiBvYmogIT09IE9CSkVDVF9QUk9UTykge1xuXHRcdFx0T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdFx0aWYgKGtleSBpbiBjbG9uZSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNsb25lW2tleV0gPSBzZXJpYWxpemVWYWx1ZSh2YWxba2V5XSwgc2Vlbik7XG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdC8vIGRlbGV0ZSBpbiBjYXNlIGl0IGhhcyBhIHNldHRlciBmcm9tIHByb3RvdHlwZSB0aGF0IG1pZ2h0IHRocm93XG5cdFx0XHRcdFx0ZGVsZXRlIGNsb25lW2tleV07XG5cdFx0XHRcdFx0Y2xvbmVba2V5XSA9IGdldFVuc2VyaWFsaXphYmxlTWVzc2FnZShlcnIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopO1xuXHRcdH1cblx0XHRpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRcdHNhZmUoKCkgPT4gY2xvbmUubWVzc2FnZSA9IG5vcm1hbGl6ZUVycm9yTWVzc2FnZSh2YWwubWVzc2FnZSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2xvbmU7XG5cdH1cbn1cbmZ1bmN0aW9uIHNhZmUoZm4pIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZm4oKTtcblx0fSBjYXRjaCB7fVxufVxuZnVuY3Rpb24gbm9ybWFsaXplRXJyb3JNZXNzYWdlKG1lc3NhZ2UpIHtcblx0cmV0dXJuIG1lc3NhZ2UucmVwbGFjZSgvXFwoMFxccz8sXFxzP19fdml0ZV9zc3JfaW1wb3J0X1xcZCtfXy4oXFx3KylcXCkvZywgXCIkMVwiKS5yZXBsYWNlKC9fXyh2aXRlX3Nzcl9pbXBvcnR8dmlfaW1wb3J0KV9cXGQrX19cXC4vZywgXCJcIikucmVwbGFjZSgvZ2V0QnlUZXN0SWQoJ19fdml0ZXN0X1xcZCtfXycpL2csIFwicGFnZVwiKTtcbn1cblxuZXhwb3J0IHsgc2VyaWFsaXplVmFsdWUgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSx1QkFBdUI7QUFDN0IsU0FBUyxZQUFZLEdBQUc7QUFDdkIsUUFBTyxNQUFNLEVBQUUseUJBQXlCLEVBQUU7O0FBRTNDLE1BQU0sZUFBZSxPQUFPLGVBQWUsRUFBRSxDQUFDO0FBQzlDLFNBQVMseUJBQXlCLEtBQUs7QUFDdEMsS0FBSSxlQUFlLE1BQ2xCLFFBQU8scUJBQXFCLElBQUk7QUFFakMs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
|