@cartanova/qgrid-cli 1.0.4 → 1.1.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.
Files changed (133) hide show
  1. package/bundle/dist/application/qgrid/pool.js +15 -6
  2. package/bundle/dist/application/qgrid/qgrid.frame.js +17 -22
  3. package/bundle/dist/application/qgrid/qgrid.types.js +5 -2
  4. package/bundle/dist/application/request-log/request-log.model.js +2 -2
  5. package/bundle/dist/sonamu.config.js +5 -2
  6. package/bundle/src/application/qgrid/pool.ts +17 -7
  7. package/bundle/src/application/qgrid/qgrid.frame.ts +18 -25
  8. package/bundle/src/application/qgrid/qgrid.types.ts +1 -1
  9. package/bundle/src/application/request-log/request-log.model.ts +2 -2
  10. package/bundle/src/sonamu.config.ts +1 -1
  11. package/bundle/web-dist/{web-dist/client/assets/index-DlPchHBY.js → client/assets/index-C0m8rRjO.js} +2 -2
  12. package/bundle/web-dist/client/assets/{routes-CagDz23B.js → routes-B1eOXnpo.js} +1 -1
  13. package/bundle/web-dist/client/assets/{show-aXUGa0gm.js → show-BztN6MXO.js} +1 -1
  14. package/bundle/web-dist/client/assets/tokens-rR2_-Pte.js +1 -0
  15. package/bundle/web-dist/client/index.html +1 -1
  16. package/bundle/web-dist/server/assets/{tokens-JH6FsnWZ.js → tokens-ARL5AOAh.js} +4 -1
  17. package/bundle/web-dist/server/entry-server.generated.js +1 -1
  18. package/dist/cli.js +34 -25
  19. package/package.json +10 -10
  20. package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +0 -9
  21. package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +0 -6
  22. package/bundle/dist/dist/_virtual/_rolldown/runtime.js +0 -15
  23. package/bundle/dist/dist/application/qgrid/oauth.js +0 -140
  24. package/bundle/dist/dist/application/qgrid/pool.js +0 -100
  25. package/bundle/dist/dist/application/qgrid/qgrid.frame.js +0 -280
  26. package/bundle/dist/dist/application/qgrid/qgrid.types.js +0 -79
  27. package/bundle/dist/dist/application/qgrid/worker.js +0 -183
  28. package/bundle/dist/dist/application/queries.generated.js +0 -31
  29. package/bundle/dist/dist/application/request-log/request-log.model.js +0 -113
  30. package/bundle/dist/dist/application/request-log/request-log.types.js +0 -13
  31. package/bundle/dist/dist/application/sonamu.generated.js +0 -99
  32. package/bundle/dist/dist/application/sonamu.generated.sso.js +0 -34
  33. package/bundle/dist/dist/application/token/token.model.js +0 -157
  34. package/bundle/dist/dist/application/token/token.types.js +0 -22
  35. package/bundle/dist/dist/i18n/en.js +0 -63
  36. package/bundle/dist/dist/i18n/ko.js +0 -62
  37. package/bundle/dist/dist/i18n/sd.generated.js +0 -272
  38. package/bundle/dist/dist/index.js +0 -11
  39. package/bundle/dist/dist/migrations/20260410171405_create__request_logs.js +0 -26
  40. package/bundle/dist/dist/migrations/20260410171406_create__tokens.js +0 -24
  41. package/bundle/dist/dist/migrations/20260411120624_alter_tokens_alter2.js +0 -16
  42. package/bundle/dist/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -155
  43. package/bundle/dist/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
  44. package/bundle/dist/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
  45. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
  46. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
  47. package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
  48. package/bundle/dist/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
  49. package/bundle/dist/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
  50. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
  51. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
  52. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
  53. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
  54. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
  55. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
  56. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
  57. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
  58. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
  59. package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
  60. package/bundle/dist/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2886
  61. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
  62. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
  63. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
  64. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
  65. package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
  66. package/bundle/dist/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1127
  67. package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
  68. package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
  69. package/bundle/dist/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -506
  70. package/bundle/dist/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -86
  71. package/bundle/dist/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 +0 -426
  72. package/bundle/dist/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 +0 -6
  73. package/bundle/dist/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 +0 -41
  74. package/bundle/dist/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 +0 -19
  75. package/bundle/dist/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 +0 -202
  76. package/bundle/dist/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 +0 -16
  77. package/bundle/dist/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 +0 -59
  78. package/bundle/dist/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 +0 -2910
  79. package/bundle/dist/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 +0 -44
  80. package/bundle/dist/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 +0 -28
  81. package/bundle/dist/dist/sonamu.config.js +0 -196
  82. package/bundle/dist/dist/testing/fixture.js +0 -8
  83. package/bundle/dist/dist/testing/global.js +0 -9
  84. package/bundle/dist/dist/testing/setup-mocks.js +0 -17
  85. package/bundle/dist/dist/utils/subset-loaders.js +0 -12
  86. package/bundle/src/src/application/qgrid/oauth.ts +0 -181
  87. package/bundle/src/src/application/qgrid/pool.ts +0 -132
  88. package/bundle/src/src/application/qgrid/qgrid.frame.ts +0 -275
  89. package/bundle/src/src/application/qgrid/qgrid.types.ts +0 -117
  90. package/bundle/src/src/application/qgrid/worker.ts +0 -234
  91. package/bundle/src/src/application/queries.generated.ts +0 -59
  92. package/bundle/src/src/application/request-log/request-log.entity.json +0 -75
  93. package/bundle/src/src/application/request-log/request-log.model.ts +0 -155
  94. package/bundle/src/src/application/request-log/request-log.types.ts +0 -15
  95. package/bundle/src/src/application/sonamu.generated.http +0 -187
  96. package/bundle/src/src/application/sonamu.generated.sso.ts +0 -66
  97. package/bundle/src/src/application/sonamu.generated.ts +0 -135
  98. package/bundle/src/src/application/token/token.entity.json +0 -37
  99. package/bundle/src/src/application/token/token.model.ts +0 -160
  100. package/bundle/src/src/application/token/token.types.ts +0 -26
  101. package/bundle/src/src/i18n/en.ts +0 -59
  102. package/bundle/src/src/i18n/ko.ts +0 -59
  103. package/bundle/src/src/i18n/sd.generated.ts +0 -384
  104. package/bundle/src/src/index.ts +0 -6
  105. package/bundle/src/src/migrations/20260410171405_create__request_logs.ts +0 -23
  106. package/bundle/src/src/migrations/20260410171406_create__tokens.ts +0 -21
  107. package/bundle/src/src/migrations/20260411120624_alter_tokens_alter2.ts +0 -15
  108. package/bundle/src/src/sonamu.config.ts +0 -248
  109. package/bundle/src/src/testing/fixture.ts +0 -6
  110. package/bundle/src/src/testing/global.ts +0 -6
  111. package/bundle/src/src/testing/setup-mocks.ts +0 -44
  112. package/bundle/src/src/typings/fastify.d.ts +0 -8
  113. package/bundle/src/src/typings/sonamu.d.ts +0 -17
  114. package/bundle/src/src/utils/subset-loaders.ts +0 -11
  115. package/bundle/web-dist/client/assets/index-DlPchHBY.js +0 -116
  116. package/bundle/web-dist/client/assets/tokens-DRkXtZ3Q.js +0 -1
  117. package/bundle/web-dist/web-dist/client/assets/index-vZsvyuFn.css +0 -1
  118. package/bundle/web-dist/web-dist/client/assets/rolldown-runtime-Dw2cE7zH.js +0 -1
  119. package/bundle/web-dist/web-dist/client/assets/routes-CagDz23B.js +0 -1
  120. package/bundle/web-dist/web-dist/client/assets/sd.generated-BrQoQXvv.js +0 -47
  121. package/bundle/web-dist/web-dist/client/assets/services.generated-BspO2L0j.js +0 -1
  122. package/bundle/web-dist/web-dist/client/assets/show-aXUGa0gm.js +0 -29
  123. package/bundle/web-dist/web-dist/client/assets/tokens-DRkXtZ3Q.js +0 -1
  124. package/bundle/web-dist/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
  125. package/bundle/web-dist/web-dist/client/assets/vendor-tanstack-CUxlo6YN.js +0 -1
  126. package/bundle/web-dist/web-dist/client/index.html +0 -18
  127. package/bundle/web-dist/web-dist/server/assets/react-dom-CGIzOSuj.js +0 -335
  128. package/bundle/web-dist/web-dist/server/assets/routes-ClzReRep.js +0 -490
  129. package/bundle/web-dist/web-dist/server/assets/sd.generated-BnonqqKr.js +0 -21694
  130. package/bundle/web-dist/web-dist/server/assets/services.generated-D5ABD5fr.js +0 -836
  131. package/bundle/web-dist/web-dist/server/assets/show-C9pcdSxc.js +0 -23364
  132. package/bundle/web-dist/web-dist/server/assets/tokens-JH6FsnWZ.js +0 -860
  133. package/bundle/web-dist/web-dist/server/entry-server.generated.js +0 -44646
@@ -1,33 +0,0 @@
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==
@@ -1,226 +0,0 @@
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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
@@ -1,27 +0,0 @@
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
@@ -1,77 +0,0 @@
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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