@cartanova/qgrid-cli 0.1.1 → 1.0.1

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 (91) hide show
  1. package/bundle/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +9 -0
  2. package/bundle/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +6 -0
  3. package/bundle/dist/_virtual/_rolldown/runtime.js +15 -0
  4. package/bundle/dist/application/qgrid/oauth.js +140 -0
  5. package/bundle/dist/application/qgrid/pool.js +100 -0
  6. package/bundle/dist/application/qgrid/qgrid.frame.js +280 -0
  7. package/bundle/dist/application/qgrid/qgrid.types.js +79 -0
  8. package/bundle/dist/application/qgrid/worker.js +183 -0
  9. package/bundle/dist/application/queries.generated.js +31 -0
  10. package/bundle/dist/application/request-log/request-log.model.js +113 -0
  11. package/bundle/dist/application/request-log/request-log.types.js +13 -0
  12. package/bundle/dist/application/sonamu.generated.js +99 -0
  13. package/bundle/dist/application/sonamu.generated.sso.js +34 -0
  14. package/bundle/dist/application/token/token.model.js +157 -0
  15. package/bundle/dist/application/token/token.types.js +22 -0
  16. package/bundle/dist/i18n/en.js +63 -0
  17. package/bundle/dist/i18n/ko.js +62 -0
  18. package/bundle/dist/i18n/sd.generated.js +272 -0
  19. package/bundle/dist/index.js +11 -0
  20. package/bundle/dist/migrations/20260410171405_create__request_logs.js +26 -0
  21. package/bundle/dist/migrations/20260410171406_create__tokens.js +24 -0
  22. package/bundle/dist/migrations/20260411120624_alter_tokens_alter2.js +16 -0
  23. package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +155 -0
  24. package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +1484 -0
  25. package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +887 -0
  26. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +2746 -0
  27. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +8 -0
  28. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +8 -0
  29. package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +662 -0
  30. package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +386 -0
  31. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +82 -0
  32. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +48 -0
  33. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +1307 -0
  34. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +558 -0
  35. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +33 -0
  36. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +226 -0
  37. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +27 -0
  38. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +77 -0
  39. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +374 -0
  40. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +37 -0
  41. package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +2886 -0
  42. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +10 -0
  43. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +109 -0
  44. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +10 -0
  45. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +10 -0
  46. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +10 -0
  47. package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +1127 -0
  48. package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +21 -0
  49. package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +432 -0
  50. package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +506 -0
  51. package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +86 -0
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. package/bundle/dist/sonamu.config.js +196 -0
  63. package/bundle/dist/testing/fixture.js +8 -0
  64. package/bundle/dist/testing/global.js +9 -0
  65. package/bundle/dist/testing/setup-mocks.js +17 -0
  66. package/bundle/dist/utils/subset-loaders.js +12 -0
  67. package/bundle/src/application/request-log/request-log.entity.json +75 -0
  68. package/bundle/src/application/token/token.entity.json +37 -0
  69. package/bundle/src/migrations/20260410171405_create__request_logs.ts +23 -0
  70. package/bundle/src/migrations/20260410171406_create__tokens.ts +21 -0
  71. package/bundle/src/migrations/20260411120624_alter_tokens_alter2.ts +15 -0
  72. package/bundle/web-dist/client/assets/index-DlPchHBY.js +116 -0
  73. package/bundle/web-dist/client/assets/index-vZsvyuFn.css +1 -0
  74. package/bundle/web-dist/client/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  75. package/bundle/web-dist/client/assets/routes-CagDz23B.js +1 -0
  76. package/bundle/web-dist/client/assets/sd.generated-BrQoQXvv.js +47 -0
  77. package/bundle/web-dist/client/assets/services.generated-BspO2L0j.js +1 -0
  78. package/bundle/web-dist/client/assets/show-aXUGa0gm.js +29 -0
  79. package/bundle/web-dist/client/assets/tokens-DRkXtZ3Q.js +1 -0
  80. package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +9 -0
  81. package/bundle/web-dist/client/assets/vendor-tanstack-CUxlo6YN.js +1 -0
  82. package/bundle/web-dist/client/index.html +18 -0
  83. package/bundle/web-dist/server/assets/react-dom-CGIzOSuj.js +335 -0
  84. package/bundle/web-dist/server/assets/routes-ClzReRep.js +490 -0
  85. package/bundle/web-dist/server/assets/sd.generated-BnonqqKr.js +21694 -0
  86. package/bundle/web-dist/server/assets/services.generated-D5ABD5fr.js +836 -0
  87. package/bundle/web-dist/server/assets/show-C9pcdSxc.js +23364 -0
  88. package/bundle/web-dist/server/assets/tokens-JH6FsnWZ.js +860 -0
  89. package/bundle/web-dist/server/entry-server.generated.js +44646 -0
  90. package/dist/cli.js +38 -89
  91. package/package.json +40 -12
@@ -0,0 +1,386 @@
1
+ //#region ../../node_modules/.pnpm/@vitest+spy@4.1.2/node_modules/@vitest/spy/dist/index.js
2
+ function isMockFunction(fn) {
3
+ return typeof fn === "function" && "_isMockFunction" in fn && fn._isMockFunction === true;
4
+ }
5
+ const MOCK_RESTORE = /* @__PURE__ */ new Set();
6
+ const REGISTERED_MOCKS = /* @__PURE__ */ new Set();
7
+ const MOCK_CONFIGS = /* @__PURE__ */ new WeakMap();
8
+ function createMockInstance(options = {}) {
9
+ const { originalImplementation, restore, mockImplementation, resetToMockImplementation, resetToMockName } = options;
10
+ if (restore) MOCK_RESTORE.add(restore);
11
+ const config = getDefaultConfig(originalImplementation);
12
+ const state = getDefaultState();
13
+ const mock = createMock({
14
+ config,
15
+ state,
16
+ ...options
17
+ });
18
+ const mockLength = (mockImplementation || originalImplementation)?.length ?? 0;
19
+ Object.defineProperty(mock, "length", {
20
+ writable: true,
21
+ enumerable: false,
22
+ value: mockLength,
23
+ configurable: true
24
+ });
25
+ if (resetToMockName) config.mockName = mock.name || "vi.fn()";
26
+ MOCK_CONFIGS.set(mock, config);
27
+ REGISTERED_MOCKS.add(mock);
28
+ mock._isMockFunction = true;
29
+ mock.getMockImplementation = () => {
30
+ return config.onceMockImplementations[0] || config.mockImplementation;
31
+ };
32
+ Object.defineProperty(mock, "mock", {
33
+ configurable: false,
34
+ enumerable: true,
35
+ writable: false,
36
+ value: state
37
+ });
38
+ mock.mockImplementation = function mockImplementation(implementation) {
39
+ config.mockImplementation = implementation;
40
+ return mock;
41
+ };
42
+ mock.mockImplementationOnce = function mockImplementationOnce(implementation) {
43
+ config.onceMockImplementations.push(implementation);
44
+ return mock;
45
+ };
46
+ mock.withImplementation = function withImplementation(implementation, callback) {
47
+ const previousImplementation = config.mockImplementation;
48
+ const previousOnceImplementations = config.onceMockImplementations;
49
+ const reset = () => {
50
+ config.mockImplementation = previousImplementation;
51
+ config.onceMockImplementations = previousOnceImplementations;
52
+ };
53
+ config.mockImplementation = implementation;
54
+ config.onceMockImplementations = [];
55
+ const returnValue = callback();
56
+ if (typeof returnValue === "object" && typeof returnValue?.then === "function") return returnValue.then(() => {
57
+ reset();
58
+ return mock;
59
+ });
60
+ else reset();
61
+ return mock;
62
+ };
63
+ mock.mockReturnThis = function mockReturnThis() {
64
+ return mock.mockImplementation(function() {
65
+ return this;
66
+ });
67
+ };
68
+ mock.mockReturnValue = function mockReturnValue(value) {
69
+ return mock.mockImplementation(function() {
70
+ if (new.target) throwConstructorError("mockReturnValue");
71
+ return value;
72
+ });
73
+ };
74
+ mock.mockReturnValueOnce = function mockReturnValueOnce(value) {
75
+ return mock.mockImplementationOnce(function() {
76
+ if (new.target) throwConstructorError("mockReturnValueOnce");
77
+ return value;
78
+ });
79
+ };
80
+ mock.mockThrow = function mockThrow(value) {
81
+ return mock.mockImplementation(function() {
82
+ throw value;
83
+ });
84
+ };
85
+ mock.mockThrowOnce = function mockThrowOnce(value) {
86
+ return mock.mockImplementationOnce(function() {
87
+ throw value;
88
+ });
89
+ };
90
+ mock.mockResolvedValue = function mockResolvedValue(value) {
91
+ return mock.mockImplementation(function() {
92
+ if (new.target) throwConstructorError("mockResolvedValue");
93
+ return Promise.resolve(value);
94
+ });
95
+ };
96
+ mock.mockResolvedValueOnce = function mockResolvedValueOnce(value) {
97
+ return mock.mockImplementationOnce(function() {
98
+ if (new.target) throwConstructorError("mockResolvedValueOnce");
99
+ return Promise.resolve(value);
100
+ });
101
+ };
102
+ mock.mockRejectedValue = function mockRejectedValue(value) {
103
+ return mock.mockImplementation(function() {
104
+ if (new.target) throwConstructorError("mockRejectedValue");
105
+ return Promise.reject(value);
106
+ });
107
+ };
108
+ mock.mockRejectedValueOnce = function mockRejectedValueOnce(value) {
109
+ return mock.mockImplementationOnce(function() {
110
+ if (new.target) throwConstructorError("mockRejectedValueOnce");
111
+ return Promise.reject(value);
112
+ });
113
+ };
114
+ mock.mockClear = function mockClear() {
115
+ state.calls = [];
116
+ state.contexts = [];
117
+ state.instances = [];
118
+ state.invocationCallOrder = [];
119
+ state.results = [];
120
+ state.settledResults = [];
121
+ return mock;
122
+ };
123
+ mock.mockReset = function mockReset() {
124
+ mock.mockClear();
125
+ config.mockImplementation = resetToMockImplementation ? mockImplementation : void 0;
126
+ config.mockName = resetToMockName ? mock.name || "vi.fn()" : "vi.fn()";
127
+ config.onceMockImplementations = [];
128
+ return mock;
129
+ };
130
+ mock.mockRestore = function mockRestore() {
131
+ mock.mockReset();
132
+ return restore?.();
133
+ };
134
+ mock.mockName = function mockName(name) {
135
+ if (typeof name === "string") config.mockName = name;
136
+ return mock;
137
+ };
138
+ mock.getMockName = function getMockName() {
139
+ return config.mockName || "vi.fn()";
140
+ };
141
+ if (Symbol.dispose) mock[Symbol.dispose] = () => mock.mockRestore();
142
+ if (mockImplementation) mock.mockImplementation(mockImplementation);
143
+ return mock;
144
+ }
145
+ function fn(originalImplementation) {
146
+ if (originalImplementation != null && isMockFunction(originalImplementation)) return originalImplementation;
147
+ return createMockInstance({
148
+ mockImplementation: originalImplementation,
149
+ resetToMockImplementation: true
150
+ });
151
+ }
152
+ function spyOn(object, key, accessor) {
153
+ assert(object != null, "The vi.spyOn() function could not find an object to spy upon. The first argument must be defined.");
154
+ assert(typeof object === "object" || typeof object === "function", "Vitest cannot spy on a primitive value.");
155
+ const [originalDescriptorObject, originalDescriptor] = getDescriptor(object, key) || [];
156
+ assert(originalDescriptor || key in object, `The property "${String(key)}" is not defined on the ${typeof object}.`);
157
+ let accessType = accessor || "value";
158
+ let ssr = false;
159
+ if (accessType === "value" && originalDescriptor && originalDescriptor.value == null && originalDescriptor.get) {
160
+ accessType = "get";
161
+ ssr = true;
162
+ }
163
+ let original;
164
+ if (originalDescriptor) {
165
+ original = originalDescriptor[accessType];
166
+ if (original == null && accessType === "value") original = object[key];
167
+ } else if (accessType !== "value") original = () => object[key];
168
+ else original = object[key];
169
+ const originalImplementation = ssr && original ? original() : original;
170
+ const originalType = typeof originalImplementation;
171
+ assert(originalType === "function" || accessType !== "value" && original == null, `vi.spyOn() can only spy on a function. Received ${originalType}.`);
172
+ if (isMockFunction(originalImplementation)) return originalImplementation;
173
+ const reassign = (cb) => {
174
+ const { value, ...desc } = originalDescriptor || {
175
+ configurable: true,
176
+ writable: true
177
+ };
178
+ if (accessType !== "value") delete desc.writable;
179
+ desc[accessType] = cb;
180
+ Object.defineProperty(object, key, desc);
181
+ };
182
+ const restore = () => {
183
+ if (originalDescriptorObject !== object) Reflect.deleteProperty(object, key);
184
+ else if (originalDescriptor && !original) Object.defineProperty(object, key, originalDescriptor);
185
+ else reassign(original);
186
+ };
187
+ const mock = createMockInstance({
188
+ restore,
189
+ originalImplementation,
190
+ resetToMockName: true
191
+ });
192
+ try {
193
+ reassign(ssr ? () => mock : mock);
194
+ } catch (error) {
195
+ if (error instanceof TypeError && Symbol.toStringTag && object[Symbol.toStringTag] === "Module" && (error.message.includes("Cannot redefine property") || error.message.includes("Cannot replace module namespace") || error.message.includes("can't redefine non-configurable property"))) throw new TypeError(`Cannot spy on export "${String(key)}". Module namespace is not configurable in ESM. See: https://vitest.dev/guide/browser/#limitations`, { cause: error });
196
+ throw error;
197
+ }
198
+ return mock;
199
+ }
200
+ function getDescriptor(obj, method) {
201
+ const objDescriptor = Object.getOwnPropertyDescriptor(obj, method);
202
+ if (objDescriptor) return [obj, objDescriptor];
203
+ let currentProto = Object.getPrototypeOf(obj);
204
+ while (currentProto !== null) {
205
+ const descriptor = Object.getOwnPropertyDescriptor(currentProto, method);
206
+ if (descriptor) return [currentProto, descriptor];
207
+ currentProto = Object.getPrototypeOf(currentProto);
208
+ }
209
+ }
210
+ function assert(condition, message) {
211
+ if (!condition) throw new Error(message);
212
+ }
213
+ let invocationCallCounter = 1;
214
+ function createMock({ state, config, name: mockName, prototypeState, prototypeConfig, keepMembersImplementation, mockImplementation, prototypeMembers = [] }) {
215
+ const original = config.mockOriginal;
216
+ const pseudoOriginal = mockImplementation;
217
+ const name = mockName || original?.name || "Mock";
218
+ const namedObject = { [name]: (function(...args) {
219
+ registerCalls(args, state, prototypeState);
220
+ registerInvocationOrder(invocationCallCounter++, state, prototypeState);
221
+ const result = {
222
+ type: "incomplete",
223
+ value: void 0
224
+ };
225
+ const settledResult = {
226
+ type: "incomplete",
227
+ value: void 0
228
+ };
229
+ registerResult(result, state, prototypeState);
230
+ registerSettledResult(settledResult, state, prototypeState);
231
+ const context = new.target ? void 0 : this;
232
+ const [instanceIndex, instancePrototypeIndex] = registerInstance(context, state, prototypeState);
233
+ const [contextIndex, contextPrototypeIndex] = registerContext(context, state, prototypeState);
234
+ const implementation = config.onceMockImplementations.shift() || config.mockImplementation || prototypeConfig?.onceMockImplementations.shift() || prototypeConfig?.mockImplementation || original || function() {};
235
+ let returnValue;
236
+ let thrownValue;
237
+ let didThrow = false;
238
+ try {
239
+ if (new.target) {
240
+ returnValue = Reflect.construct(implementation, args, new.target);
241
+ for (const prop of prototypeMembers) {
242
+ const prototypeMock = returnValue[prop];
243
+ if (prototypeMock !== mock.prototype[prop]) continue;
244
+ const isMock = isMockFunction(prototypeMock);
245
+ const prototypeState = isMock ? prototypeMock.mock : void 0;
246
+ const prototypeConfig = isMock ? MOCK_CONFIGS.get(prototypeMock) : void 0;
247
+ returnValue[prop] = createMockInstance({
248
+ originalImplementation: keepMembersImplementation ? prototypeConfig?.mockOriginal : void 0,
249
+ prototypeState,
250
+ prototypeConfig,
251
+ keepMembersImplementation
252
+ });
253
+ }
254
+ } else returnValue = implementation.apply(this, args);
255
+ } catch (error) {
256
+ thrownValue = error;
257
+ didThrow = true;
258
+ if (error instanceof TypeError && error.message.includes("is not a constructor")) console.warn(`[vitest] The ${namedObject[name].getMockName()} mock did not use 'function' or 'class' in its implementation, see https://vitest.dev/api/vi#vi-spyon for examples.`);
259
+ throw error;
260
+ } finally {
261
+ if (didThrow) {
262
+ result.type = "throw";
263
+ result.value = thrownValue;
264
+ settledResult.type = "rejected";
265
+ settledResult.value = thrownValue;
266
+ } else {
267
+ result.type = "return";
268
+ result.value = returnValue;
269
+ if (new.target) {
270
+ state.contexts[contextIndex - 1] = returnValue;
271
+ state.instances[instanceIndex - 1] = returnValue;
272
+ if (contextPrototypeIndex != null && prototypeState) prototypeState.contexts[contextPrototypeIndex - 1] = returnValue;
273
+ if (instancePrototypeIndex != null && prototypeState) prototypeState.instances[instancePrototypeIndex - 1] = returnValue;
274
+ }
275
+ if (returnValue instanceof Promise) returnValue.then((settledValue) => {
276
+ settledResult.type = "fulfilled";
277
+ settledResult.value = settledValue;
278
+ }, (rejectedValue) => {
279
+ settledResult.type = "rejected";
280
+ settledResult.value = rejectedValue;
281
+ });
282
+ else {
283
+ settledResult.type = "fulfilled";
284
+ settledResult.value = returnValue;
285
+ }
286
+ }
287
+ }
288
+ return returnValue;
289
+ }) };
290
+ const mock = namedObject[name];
291
+ const copyPropertiesFrom = original || pseudoOriginal;
292
+ if (copyPropertiesFrom) copyOriginalStaticProperties(mock, copyPropertiesFrom);
293
+ return mock;
294
+ }
295
+ function registerCalls(args, state, prototypeState) {
296
+ state.calls.push(args);
297
+ prototypeState?.calls.push(args);
298
+ }
299
+ function registerInvocationOrder(order, state, prototypeState) {
300
+ state.invocationCallOrder.push(order);
301
+ prototypeState?.invocationCallOrder.push(order);
302
+ }
303
+ function registerResult(result, state, prototypeState) {
304
+ state.results.push(result);
305
+ prototypeState?.results.push(result);
306
+ }
307
+ function registerSettledResult(result, state, prototypeState) {
308
+ state.settledResults.push(result);
309
+ prototypeState?.settledResults.push(result);
310
+ }
311
+ function registerInstance(instance, state, prototypeState) {
312
+ return [state.instances.push(instance), prototypeState?.instances.push(instance)];
313
+ }
314
+ function registerContext(context, state, prototypeState) {
315
+ return [state.contexts.push(context), prototypeState?.contexts.push(context)];
316
+ }
317
+ function copyOriginalStaticProperties(mock, original) {
318
+ const { properties, descriptors } = getAllProperties(original);
319
+ for (const key of properties) {
320
+ const descriptor = descriptors[key];
321
+ if (getDescriptor(mock, key)) continue;
322
+ Object.defineProperty(mock, key, descriptor);
323
+ }
324
+ }
325
+ const ignoreProperties = new Set([
326
+ "length",
327
+ "name",
328
+ "prototype",
329
+ Symbol.for("nodejs.util.promisify.custom")
330
+ ]);
331
+ function getAllProperties(original) {
332
+ const properties = /* @__PURE__ */ new Set();
333
+ const descriptors = {};
334
+ while (original && original !== Object.prototype && original !== Function.prototype) {
335
+ const ownProperties = [...Object.getOwnPropertyNames(original), ...Object.getOwnPropertySymbols(original)];
336
+ for (const prop of ownProperties) {
337
+ if (descriptors[prop] || ignoreProperties.has(prop)) continue;
338
+ properties.add(prop);
339
+ descriptors[prop] = Object.getOwnPropertyDescriptor(original, prop);
340
+ }
341
+ original = Object.getPrototypeOf(original);
342
+ }
343
+ return {
344
+ properties,
345
+ descriptors
346
+ };
347
+ }
348
+ function getDefaultConfig(original) {
349
+ return {
350
+ mockImplementation: void 0,
351
+ mockOriginal: original,
352
+ mockName: "vi.fn()",
353
+ onceMockImplementations: []
354
+ };
355
+ }
356
+ function getDefaultState() {
357
+ const state = {
358
+ calls: [],
359
+ contexts: [],
360
+ instances: [],
361
+ invocationCallOrder: [],
362
+ settledResults: [],
363
+ results: [],
364
+ get lastCall() {
365
+ return state.calls.at(-1);
366
+ }
367
+ };
368
+ return state;
369
+ }
370
+ function restoreAllMocks() {
371
+ for (const restore of MOCK_RESTORE) restore();
372
+ MOCK_RESTORE.clear();
373
+ }
374
+ function clearAllMocks() {
375
+ REGISTERED_MOCKS.forEach((mock) => mock.mockClear());
376
+ }
377
+ function resetAllMocks() {
378
+ REGISTERED_MOCKS.forEach((mock) => mock.mockReset());
379
+ }
380
+ function throwConstructorError(shorthand) {
381
+ throw new TypeError(`Cannot use \`${shorthand}\` when called with \`new\`. Use \`mockImplementation\` with a \`class\` keyword instead. See https://vitest.dev/api/mock#class-support for more information.`);
382
+ }
383
+ //#endregion
384
+ export { clearAllMocks, fn, isMockFunction, resetAllMocks, restoreAllMocks, spyOn };
385
+
386
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3Qrc3B5QDQuMS4yL25vZGVfbW9kdWxlcy9Adml0ZXN0L3NweS9kaXN0L2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGlzTW9ja0Z1bmN0aW9uKGZuKSB7XG5cdHJldHVybiB0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIiAmJiBcIl9pc01vY2tGdW5jdGlvblwiIGluIGZuICYmIGZuLl9pc01vY2tGdW5jdGlvbiA9PT0gdHJ1ZTtcbn1cbmNvbnN0IE1PQ0tfUkVTVE9SRSA9IG5ldyBTZXQoKTtcbi8vIEplc3Qga2VlcHMgdGhlIHN0YXRlIGluIGEgc2VwYXJhdGUgV2Vha01hcCB3aGljaCBpcyBnb29kIGZvciBtZW1vcnksXG4vLyBidXQgaXQgbWFrZXMgdGhlIHN0YXRlIHNsb3dlciB0byBhY2Nlc3MgYW5kIHJldHVybiBkaWZmZXJlbnQgdmFsdWVzXG4vLyBpZiB5b3Ugc3RvcmVkIGl0IGJlZm9yZSBjYWxsaW5nIGBtb2NrQ2xlYXJgIHdoZXJlIGl0IHdpbGwgYmUgcmVjcmVhdGVkXG5jb25zdCBSRUdJU1RFUkVEX01PQ0tTID0gbmV3IFNldCgpO1xuY29uc3QgTU9DS19DT05GSUdTID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tJbnN0YW5jZShvcHRpb25zID0ge30pIHtcblx0Y29uc3QgeyBvcmlnaW5hbEltcGxlbWVudGF0aW9uLCByZXN0b3JlLCBtb2NrSW1wbGVtZW50YXRpb24sIHJlc2V0VG9Nb2NrSW1wbGVtZW50YXRpb24sIHJlc2V0VG9Nb2NrTmFtZSB9ID0gb3B0aW9ucztcblx0aWYgKHJlc3RvcmUpIHtcblx0XHRNT0NLX1JFU1RPUkUuYWRkKHJlc3RvcmUpO1xuXHR9XG5cdGNvbnN0IGNvbmZpZyA9IGdldERlZmF1bHRDb25maWcob3JpZ2luYWxJbXBsZW1lbnRhdGlvbik7XG5cdGNvbnN0IHN0YXRlID0gZ2V0RGVmYXVsdFN0YXRlKCk7XG5cdGNvbnN0IG1vY2sgPSBjcmVhdGVNb2NrKHtcblx0XHRjb25maWcsXG5cdFx0c3RhdGUsXG5cdFx0Li4ub3B0aW9uc1xuXHR9KTtcblx0Y29uc3QgbW9ja0xlbmd0aCA9IChtb2NrSW1wbGVtZW50YXRpb24gfHwgb3JpZ2luYWxJbXBsZW1lbnRhdGlvbik/Lmxlbmd0aCA/PyAwO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9jaywgXCJsZW5ndGhcIiwge1xuXHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHRcdHZhbHVlOiBtb2NrTGVuZ3RoLFxuXHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHR9KTtcblx0Ly8gaW5oZXJpdCB0aGUgZGVmYXVsdCBuYW1lIHNvIGl0IGFwcGVhcnMgaW4gc25hcHNob3RzIGFuZCBsb2dzXG5cdC8vIHRoaXMgaXMgdXNlZCBieSBgdmkuc3B5T24oKWAgZm9yIGJldHRlciBkZWJ1Z2dpbmcuXG5cdC8vIHdoZW4gYHZpLmZuKClgIGlzIGNhbGxlZCwgd2UganVzdCB1c2UgdGhlIGRlZmF1bHQgc3RyaW5nXG5cdGlmIChyZXNldFRvTW9ja05hbWUpIHtcblx0XHRjb25maWcubW9ja05hbWUgPSBtb2NrLm5hbWUgfHwgXCJ2aS5mbigpXCI7XG5cdH1cblx0TU9DS19DT05GSUdTLnNldChtb2NrLCBjb25maWcpO1xuXHRSRUdJU1RFUkVEX01PQ0tTLmFkZChtb2NrKTtcblx0bW9jay5faXNNb2NrRnVuY3Rpb24gPSB0cnVlO1xuXHRtb2NrLmdldE1vY2tJbXBsZW1lbnRhdGlvbiA9ICgpID0+IHtcblx0XHQvLyBKZXN0IG9ubHkgcmV0dXJucyBgY29uZmlnLm1vY2tJbXBsZW1lbnRhdGlvbmAgaGVyZSxcblx0XHQvLyBidXQgd2UgdGhpbmsgaXQgbWFrZXMgc2Vuc2UgdG8gcmV0dXJuIHdoYXQgdGhlIG5leHQgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWRcblx0XHRyZXR1cm4gY29uZmlnLm9uY2VNb2NrSW1wbGVtZW50YXRpb25zWzBdIHx8IGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb247XG5cdH07XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2NrLCBcIm1vY2tcIiwge1xuXHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHR3cml0YWJsZTogZmFsc2UsXG5cdFx0dmFsdWU6IHN0YXRlXG5cdH0pO1xuXHRtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uIG1vY2tJbXBsZW1lbnRhdGlvbihpbXBsZW1lbnRhdGlvbikge1xuXHRcdGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbjtcblx0XHRyZXR1cm4gbW9jaztcblx0fTtcblx0bW9jay5tb2NrSW1wbGVtZW50YXRpb25PbmNlID0gZnVuY3Rpb24gbW9ja0ltcGxlbWVudGF0aW9uT25jZShpbXBsZW1lbnRhdGlvbikge1xuXHRcdGNvbmZpZy5vbmNlTW9ja0ltcGxlbWVudGF0aW9ucy5wdXNoKGltcGxlbWVudGF0aW9uKTtcblx0XHRyZXR1cm4gbW9jaztcblx0fTtcblx0bW9jay53aXRoSW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbiB3aXRoSW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24sIGNhbGxiYWNrKSB7XG5cdFx0Y29uc3QgcHJldmlvdXNJbXBsZW1lbnRhdGlvbiA9IGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb247XG5cdFx0Y29uc3QgcHJldmlvdXNPbmNlSW1wbGVtZW50YXRpb25zID0gY29uZmlnLm9uY2VNb2NrSW1wbGVtZW50YXRpb25zO1xuXHRcdGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuXHRcdFx0Y29uZmlnLm1vY2tJbXBsZW1lbnRhdGlvbiA9IHByZXZpb3VzSW1wbGVtZW50YXRpb247XG5cdFx0XHRjb25maWcub25jZU1vY2tJbXBsZW1lbnRhdGlvbnMgPSBwcmV2aW91c09uY2VJbXBsZW1lbnRhdGlvbnM7XG5cdFx0fTtcblx0XHRjb25maWcubW9ja0ltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb247XG5cdFx0Y29uZmlnLm9uY2VNb2NrSW1wbGVtZW50YXRpb25zID0gW107XG5cdFx0Y29uc3QgcmV0dXJuVmFsdWUgPSBjYWxsYmFjaygpO1xuXHRcdGlmICh0eXBlb2YgcmV0dXJuVmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJldHVyblZhbHVlPy50aGVuID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHJldHVybiByZXR1cm5WYWx1ZS50aGVuKCgpID0+IHtcblx0XHRcdFx0cmVzZXQoKTtcblx0XHRcdFx0cmV0dXJuIG1vY2s7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzZXQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIG1vY2s7XG5cdH07XG5cdG1vY2subW9ja1JldHVyblRoaXMgPSBmdW5jdGlvbiBtb2NrUmV0dXJuVGhpcygpIHtcblx0XHRyZXR1cm4gbW9jay5tb2NrSW1wbGVtZW50YXRpb24oZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrUmV0dXJuVmFsdWUgPSBmdW5jdGlvbiBtb2NrUmV0dXJuVmFsdWUodmFsdWUpIHtcblx0XHRyZXR1cm4gbW9jay5tb2NrSW1wbGVtZW50YXRpb24oZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAobmV3LnRhcmdldCkge1xuXHRcdFx0XHR0aHJvd0NvbnN0cnVjdG9yRXJyb3IoXCJtb2NrUmV0dXJuVmFsdWVcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSk7XG5cdH07XG5cdG1vY2subW9ja1JldHVyblZhbHVlT25jZSA9IGZ1bmN0aW9uIG1vY2tSZXR1cm5WYWx1ZU9uY2UodmFsdWUpIHtcblx0XHRyZXR1cm4gbW9jay5tb2NrSW1wbGVtZW50YXRpb25PbmNlKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0dGhyb3dDb25zdHJ1Y3RvckVycm9yKFwibW9ja1JldHVyblZhbHVlT25jZVwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrVGhyb3cgPSBmdW5jdGlvbiBtb2NrVGhyb3codmFsdWUpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93LWNhbGxiYWNrXG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhyb3cgdmFsdWU7XG5cdFx0fSk7XG5cdH07XG5cdG1vY2subW9ja1Rocm93T25jZSA9IGZ1bmN0aW9uIG1vY2tUaHJvd09uY2UodmFsdWUpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93LWNhbGxiYWNrXG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uT25jZShmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IHZhbHVlO1xuXHRcdH0pO1xuXHR9O1xuXHRtb2NrLm1vY2tSZXNvbHZlZFZhbHVlID0gZnVuY3Rpb24gbW9ja1Jlc29sdmVkVmFsdWUodmFsdWUpIHtcblx0XHRyZXR1cm4gbW9jay5tb2NrSW1wbGVtZW50YXRpb24oZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAobmV3LnRhcmdldCkge1xuXHRcdFx0XHR0aHJvd0NvbnN0cnVjdG9yRXJyb3IoXCJtb2NrUmVzb2x2ZWRWYWx1ZVwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpO1xuXHRcdH0pO1xuXHR9O1xuXHRtb2NrLm1vY2tSZXNvbHZlZFZhbHVlT25jZSA9IGZ1bmN0aW9uIG1vY2tSZXNvbHZlZFZhbHVlT25jZSh2YWx1ZSkge1xuXHRcdHJldHVybiBtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAobmV3LnRhcmdldCkge1xuXHRcdFx0XHR0aHJvd0NvbnN0cnVjdG9yRXJyb3IoXCJtb2NrUmVzb2x2ZWRWYWx1ZU9uY2VcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrUmVqZWN0ZWRWYWx1ZSA9IGZ1bmN0aW9uIG1vY2tSZWplY3RlZFZhbHVlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0dGhyb3dDb25zdHJ1Y3RvckVycm9yKFwibW9ja1JlamVjdGVkVmFsdWVcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QodmFsdWUpO1xuXHRcdH0pO1xuXHR9O1xuXHRtb2NrLm1vY2tSZWplY3RlZFZhbHVlT25jZSA9IGZ1bmN0aW9uIG1vY2tSZWplY3RlZFZhbHVlT25jZSh2YWx1ZSkge1xuXHRcdHJldHVybiBtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAobmV3LnRhcmdldCkge1xuXHRcdFx0XHR0aHJvd0NvbnN0cnVjdG9yRXJyb3IoXCJtb2NrUmVqZWN0ZWRWYWx1ZU9uY2VcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QodmFsdWUpO1xuXHRcdH0pO1xuXHR9O1xuXHRtb2NrLm1vY2tDbGVhciA9IGZ1bmN0aW9uIG1vY2tDbGVhcigpIHtcblx0XHRzdGF0ZS5jYWxscyA9IFtdO1xuXHRcdHN0YXRlLmNvbnRleHRzID0gW107XG5cdFx0c3RhdGUuaW5zdGFuY2VzID0gW107XG5cdFx0c3RhdGUuaW52b2NhdGlvbkNhbGxPcmRlciA9IFtdO1xuXHRcdHN0YXRlLnJlc3VsdHMgPSBbXTtcblx0XHRzdGF0ZS5zZXR0bGVkUmVzdWx0cyA9IFtdO1xuXHRcdHJldHVybiBtb2NrO1xuXHR9O1xuXHRtb2NrLm1vY2tSZXNldCA9IGZ1bmN0aW9uIG1vY2tSZXNldCgpIHtcblx0XHRtb2NrLm1vY2tDbGVhcigpO1xuXHRcdGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb24gPSByZXNldFRvTW9ja0ltcGxlbWVudGF0aW9uID8gbW9ja0ltcGxlbWVudGF0aW9uIDogdW5kZWZpbmVkO1xuXHRcdGNvbmZpZy5tb2NrTmFtZSA9IHJlc2V0VG9Nb2NrTmFtZSA/IG1vY2submFtZSB8fCBcInZpLmZuKClcIiA6IFwidmkuZm4oKVwiO1xuXHRcdGNvbmZpZy5vbmNlTW9ja0ltcGxlbWVudGF0aW9ucyA9IFtdO1xuXHRcdHJldHVybiBtb2NrO1xuXHR9O1xuXHRtb2NrLm1vY2tSZXN0b3JlID0gZnVuY3Rpb24gbW9ja1Jlc3RvcmUoKSB7XG5cdFx0bW9jay5tb2NrUmVzZXQoKTtcblx0XHRyZXR1cm4gcmVzdG9yZT8uKCk7XG5cdH07XG5cdG1vY2subW9ja05hbWUgPSBmdW5jdGlvbiBtb2NrTmFtZShuYW1lKSB7XG5cdFx0aWYgKHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRjb25maWcubW9ja05hbWUgPSBuYW1lO1xuXHRcdH1cblx0XHRyZXR1cm4gbW9jaztcblx0fTtcblx0bW9jay5nZXRNb2NrTmFtZSA9IGZ1bmN0aW9uIGdldE1vY2tOYW1lKCkge1xuXHRcdHJldHVybiBjb25maWcubW9ja05hbWUgfHwgXCJ2aS5mbigpXCI7XG5cdH07XG5cdGlmIChTeW1ib2wuZGlzcG9zZSkge1xuXHRcdG1vY2tbU3ltYm9sLmRpc3Bvc2VdID0gKCkgPT4gbW9jay5tb2NrUmVzdG9yZSgpO1xuXHR9XG5cdGlmIChtb2NrSW1wbGVtZW50YXRpb24pIHtcblx0XHRtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbihtb2NrSW1wbGVtZW50YXRpb24pO1xuXHR9XG5cdHJldHVybiBtb2NrO1xufVxuZnVuY3Rpb24gZm4ob3JpZ2luYWxJbXBsZW1lbnRhdGlvbikge1xuXHQvLyBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBhIG1vY2ssIGp1c3QgcmV0dXJuIHRoZSBzYW1lIGZ1bmN0aW9uLFxuXHQvLyBzaW1pbGFybHkgdG8gaG93IHZpLnNweU9uKCkgd29ya3Ncblx0aWYgKG9yaWdpbmFsSW1wbGVtZW50YXRpb24gIT0gbnVsbCAmJiBpc01vY2tGdW5jdGlvbihvcmlnaW5hbEltcGxlbWVudGF0aW9uKSkge1xuXHRcdHJldHVybiBvcmlnaW5hbEltcGxlbWVudGF0aW9uO1xuXHR9XG5cdHJldHVybiBjcmVhdGVNb2NrSW5zdGFuY2Uoe1xuXHRcdG1vY2tJbXBsZW1lbnRhdGlvbjogb3JpZ2luYWxJbXBsZW1lbnRhdGlvbixcblx0XHRyZXNldFRvTW9ja0ltcGxlbWVudGF0aW9uOiB0cnVlXG5cdH0pO1xufVxuZnVuY3Rpb24gc3B5T24ob2JqZWN0LCBrZXksIGFjY2Vzc29yKSB7XG5cdGFzc2VydChvYmplY3QgIT0gbnVsbCwgXCJUaGUgdmkuc3B5T24oKSBmdW5jdGlvbiBjb3VsZCBub3QgZmluZCBhbiBvYmplY3QgdG8gc3B5IHVwb24uIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGRlZmluZWQuXCIpO1xuXHRhc3NlcnQodHlwZW9mIG9iamVjdCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqZWN0ID09PSBcImZ1bmN0aW9uXCIsIFwiVml0ZXN0IGNhbm5vdCBzcHkgb24gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuXHRjb25zdCBbb3JpZ2luYWxEZXNjcmlwdG9yT2JqZWN0LCBvcmlnaW5hbERlc2NyaXB0b3JdID0gZ2V0RGVzY3JpcHRvcihvYmplY3QsIGtleSkgfHwgW107XG5cdGFzc2VydChvcmlnaW5hbERlc2NyaXB0b3IgfHwga2V5IGluIG9iamVjdCwgYFRoZSBwcm9wZXJ0eSBcIiR7U3RyaW5nKGtleSl9XCIgaXMgbm90IGRlZmluZWQgb24gdGhlICR7dHlwZW9mIG9iamVjdH0uYCk7XG5cdGxldCBhY2Nlc3NUeXBlID0gYWNjZXNzb3IgfHwgXCJ2YWx1ZVwiO1xuXHRsZXQgc3NyID0gZmFsc2U7XG5cdC8vIHZpdGUgc3NyIHN1cHBvcnQgLSBhY3R1YWwgZnVuY3Rpb24gaXMgc3RvcmVkIGluc2lkZSBhIGdldHRlclxuXHRpZiAoYWNjZXNzVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIG9yaWdpbmFsRGVzY3JpcHRvciAmJiBvcmlnaW5hbERlc2NyaXB0b3IudmFsdWUgPT0gbnVsbCAmJiBvcmlnaW5hbERlc2NyaXB0b3IuZ2V0KSB7XG5cdFx0YWNjZXNzVHlwZSA9IFwiZ2V0XCI7XG5cdFx0c3NyID0gdHJ1ZTtcblx0fVxuXHRsZXQgb3JpZ2luYWw7XG5cdGlmIChvcmlnaW5hbERlc2NyaXB0b3IpIHtcblx0XHRvcmlnaW5hbCA9IG9yaWdpbmFsRGVzY3JpcHRvclthY2Nlc3NUeXBlXTtcblx0XHQvLyB3ZWlyZCBQcm94eSBlZGdlIGNhc2Ugd2hlcmUgZGVzY3JpcHRvcidzIHZhbHVlIGlzIHVuZGVmaW5lZCxcblx0XHQvLyBidXQgdGhlcmUncyBzdGlsbCBhIHZhbHVlIG9uIHRoZSBvYmplY3Qgd2hlbiBjYWxsZWRcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vdml0ZXN0LWRldi92aXRlc3QvaXNzdWVzLzk0Mzlcblx0XHRpZiAob3JpZ2luYWwgPT0gbnVsbCAmJiBhY2Nlc3NUeXBlID09PSBcInZhbHVlXCIpIHtcblx0XHRcdG9yaWdpbmFsID0gb2JqZWN0W2tleV07XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGFjY2Vzc1R5cGUgIT09IFwidmFsdWVcIikge1xuXHRcdG9yaWdpbmFsID0gKCkgPT4gb2JqZWN0W2tleV07XG5cdH0gZWxzZSB7XG5cdFx0b3JpZ2luYWwgPSBvYmplY3Rba2V5XTtcblx0fVxuXHRjb25zdCBvcmlnaW5hbEltcGxlbWVudGF0aW9uID0gc3NyICYmIG9yaWdpbmFsID8gb3JpZ2luYWwoKSA6IG9yaWdpbmFsO1xuXHRjb25zdCBvcmlnaW5hbFR5cGUgPSB0eXBlb2Ygb3JpZ2luYWxJbXBsZW1lbnRhdGlvbjtcblx0YXNzZXJ0KFxuXHRcdC8vIGFsbG93IG9ubHkgZnVuY3Rpb25zXG5cdFx0b3JpZ2luYWxUeXBlID09PSBcImZ1bmN0aW9uXCIgfHwgYWNjZXNzVHlwZSAhPT0gXCJ2YWx1ZVwiICYmIG9yaWdpbmFsID09IG51bGwsXG5cdFx0YHZpLnNweU9uKCkgY2FuIG9ubHkgc3B5IG9uIGEgZnVuY3Rpb24uIFJlY2VpdmVkICR7b3JpZ2luYWxUeXBlfS5gXG5cdCk7XG5cdGlmIChpc01vY2tGdW5jdGlvbihvcmlnaW5hbEltcGxlbWVudGF0aW9uKSkge1xuXHRcdHJldHVybiBvcmlnaW5hbEltcGxlbWVudGF0aW9uO1xuXHR9XG5cdGNvbnN0IHJlYXNzaWduID0gKGNiKSA9PiB7XG5cdFx0Y29uc3QgeyB2YWx1ZSwgLi4uZGVzYyB9ID0gb3JpZ2luYWxEZXNjcmlwdG9yIHx8IHtcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fTtcblx0XHRpZiAoYWNjZXNzVHlwZSAhPT0gXCJ2YWx1ZVwiKSB7XG5cdFx0XHRkZWxldGUgZGVzYy53cml0YWJsZTtcblx0XHR9XG5cdFx0ZGVzY1thY2Nlc3NUeXBlXSA9IGNiO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwgZGVzYyk7XG5cdH07XG5cdGNvbnN0IHJlc3RvcmUgPSAoKSA9PiB7XG5cdFx0Ly8gaWYgbWV0aG9kIGlzIGRlZmluZWQgb24gdGhlIHByb3RvdHlwZSwgd2UgY2FuIGp1c3QgcmVtb3ZlIGl0IGZyb21cblx0XHQvLyB0aGUgY3VycmVudCBvYmplY3QgaW5zdGVhZCBvZiByZWRlZmluaW5nIGEgY29weSBvZiBpdFxuXHRcdGlmIChvcmlnaW5hbERlc2NyaXB0b3JPYmplY3QgIT09IG9iamVjdCkge1xuXHRcdFx0UmVmbGVjdC5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGtleSk7XG5cdFx0fSBlbHNlIGlmIChvcmlnaW5hbERlc2NyaXB0b3IgJiYgIW9yaWdpbmFsKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIG9yaWdpbmFsRGVzY3JpcHRvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlYXNzaWduKG9yaWdpbmFsKTtcblx0XHR9XG5cdH07XG5cdGNvbnN0IG1vY2sgPSBjcmVhdGVNb2NrSW5zdGFuY2Uoe1xuXHRcdHJlc3RvcmUsXG5cdFx0b3JpZ2luYWxJbXBsZW1lbnRhdGlvbixcblx0XHRyZXNldFRvTW9ja05hbWU6IHRydWVcblx0fSk7XG5cdHRyeSB7XG5cdFx0cmVhc3NpZ24oc3NyID8gKCkgPT4gbW9jayA6IG1vY2spO1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBTeW1ib2wudG9TdHJpbmdUYWcgJiYgb2JqZWN0W1N5bWJvbC50b1N0cmluZ1RhZ10gPT09IFwiTW9kdWxlXCIgJiYgKGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJDYW5ub3QgcmVkZWZpbmUgcHJvcGVydHlcIikgfHwgZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcIkNhbm5vdCByZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2VcIikgfHwgZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcImNhbid0IHJlZGVmaW5lIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHlcIikpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3Qgc3B5IG9uIGV4cG9ydCBcIiR7U3RyaW5nKGtleSl9XCIuIE1vZHVsZSBuYW1lc3BhY2UgaXMgbm90IGNvbmZpZ3VyYWJsZSBpbiBFU00uIFNlZTogaHR0cHM6Ly92aXRlc3QuZGV2L2d1aWRlL2Jyb3dzZXIvI2xpbWl0YXRpb25zYCwgeyBjYXVzZTogZXJyb3IgfSk7XG5cdFx0fVxuXHRcdHRocm93IGVycm9yO1xuXHR9XG5cdHJldHVybiBtb2NrO1xufVxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvcihvYmosIG1ldGhvZCkge1xuXHRjb25zdCBvYmpEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIG1ldGhvZCk7XG5cdGlmIChvYmpEZXNjcmlwdG9yKSB7XG5cdFx0cmV0dXJuIFtvYmosIG9iakRlc2NyaXB0b3JdO1xuXHR9XG5cdGxldCBjdXJyZW50UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcblx0d2hpbGUgKGN1cnJlbnRQcm90byAhPT0gbnVsbCkge1xuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGN1cnJlbnRQcm90bywgbWV0aG9kKTtcblx0XHRpZiAoZGVzY3JpcHRvcikge1xuXHRcdFx0cmV0dXJuIFtjdXJyZW50UHJvdG8sIGRlc2NyaXB0b3JdO1xuXHRcdH1cblx0XHRjdXJyZW50UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudFByb3RvKTtcblx0fVxufVxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuXHRpZiAoIWNvbmRpdGlvbikge1xuXHRcdHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0fVxufVxubGV0IGludm9jYXRpb25DYWxsQ291bnRlciA9IDE7XG5mdW5jdGlvbiBjcmVhdGVNb2NrKHsgc3RhdGUsIGNvbmZpZywgbmFtZTogbW9ja05hbWUsIHByb3RvdHlwZVN0YXRlLCBwcm90b3R5cGVDb25maWcsIGtlZXBNZW1iZXJzSW1wbGVtZW50YXRpb24sIG1vY2tJbXBsZW1lbnRhdGlvbiwgcHJvdG90eXBlTWVtYmVycyA9IFtdIH0pIHtcblx0Y29uc3Qgb3JpZ2luYWwgPSBjb25maWcubW9ja09yaWdpbmFsO1xuXHRjb25zdCBwc2V1ZG9PcmlnaW5hbCA9IG1vY2tJbXBsZW1lbnRhdGlvbjtcblx0Y29uc3QgbmFtZSA9IG1vY2tOYW1lIHx8IG9yaWdpbmFsPy5uYW1lIHx8IFwiTW9ja1wiO1xuXHRjb25zdCBuYW1lZE9iamVjdCA9IHsgW25hbWVdOiAoZnVuY3Rpb24oLi4uYXJncykge1xuXHRcdHJlZ2lzdGVyQ2FsbHMoYXJncywgc3RhdGUsIHByb3RvdHlwZVN0YXRlKTtcblx0XHRyZWdpc3Rlckludm9jYXRpb25PcmRlcihpbnZvY2F0aW9uQ2FsbENvdW50ZXIrKywgc3RhdGUsIHByb3RvdHlwZVN0YXRlKTtcblx0XHRjb25zdCByZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcImluY29tcGxldGVcIixcblx0XHRcdHZhbHVlOiB1bmRlZmluZWRcblx0XHR9O1xuXHRcdGNvbnN0IHNldHRsZWRSZXN1bHQgPSB7XG5cdFx0XHR0eXBlOiBcImluY29tcGxldGVcIixcblx0XHRcdHZhbHVlOiB1bmRlZmluZWRcblx0XHR9O1xuXHRcdHJlZ2lzdGVyUmVzdWx0KHJlc3VsdCwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKTtcblx0XHRyZWdpc3RlclNldHRsZWRSZXN1bHQoc2V0dGxlZFJlc3VsdCwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKTtcblx0XHRjb25zdCBjb250ZXh0ID0gbmV3LnRhcmdldCA/IHVuZGVmaW5lZCA6IHRoaXM7XG5cdFx0Y29uc3QgW2luc3RhbmNlSW5kZXgsIGluc3RhbmNlUHJvdG90eXBlSW5kZXhdID0gcmVnaXN0ZXJJbnN0YW5jZShjb250ZXh0LCBzdGF0ZSwgcHJvdG90eXBlU3RhdGUpO1xuXHRcdGNvbnN0IFtjb250ZXh0SW5kZXgsIGNvbnRleHRQcm90b3R5cGVJbmRleF0gPSByZWdpc3RlckNvbnRleHQoY29udGV4dCwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKTtcblx0XHRjb25zdCBpbXBsZW1lbnRhdGlvbiA9IGNvbmZpZy5vbmNlTW9ja0ltcGxlbWVudGF0aW9ucy5zaGlmdCgpIHx8IGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb24gfHwgcHJvdG90eXBlQ29uZmlnPy5vbmNlTW9ja0ltcGxlbWVudGF0aW9ucy5zaGlmdCgpIHx8IHByb3RvdHlwZUNvbmZpZz8ubW9ja0ltcGxlbWVudGF0aW9uIHx8IG9yaWdpbmFsIHx8IGZ1bmN0aW9uKCkge307XG5cdFx0bGV0IHJldHVyblZhbHVlO1xuXHRcdGxldCB0aHJvd25WYWx1ZTtcblx0XHRsZXQgZGlkVGhyb3cgPSBmYWxzZTtcblx0XHR0cnkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0cmV0dXJuVmFsdWUgPSBSZWZsZWN0LmNvbnN0cnVjdChpbXBsZW1lbnRhdGlvbiwgYXJncywgbmV3LnRhcmdldCk7XG5cdFx0XHRcdC8vIGplc3QgY2FsbHMgdGhpcyBiZWZvcmUgdGhlIGltcGxlbWVudGF0aW9uLCBidXQgd2UgaGF2ZSB0byByZXNvbHZlIHRoaXMgX2FmdGVyX1xuXHRcdFx0XHQvLyBiZWNhdXNlIHdlIGNhbm5vdCBkbyBpdCBiZWZvcmUgdGhlIGBSZWZsZWN0LmNvbnN0cnVjdGAgY2FsbGVkIHRoZSBjdXN0b20gaW1wbGVtZW50YXRpb24uXG5cdFx0XHRcdC8vIGZvcnR1bmF0ZWx5LCB0aGUgY29uc3RydWN0b3IgaXMgYWx3YXlzIGFuIGVtcHR5IGZ1bmN0aW9uIGJlY2F1c2UgYHByb3RvdHlwZU1ldGhvZHNgXG5cdFx0XHRcdC8vIGFyZSBvbmx5IHVzZWQgYnkgdGhlIGF1dG9tb2NrZXIsIHNvIHRoaXMgZG9lc24ndCBtYXR0ZXJcblx0XHRcdFx0Zm9yIChjb25zdCBwcm9wIG9mIHByb3RvdHlwZU1lbWJlcnMpIHtcblx0XHRcdFx0XHRjb25zdCBwcm90b3R5cGVNb2NrID0gcmV0dXJuVmFsdWVbcHJvcF07XG5cdFx0XHRcdFx0Ly8gdGhlIG1ldGhvZCB3YXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mIGluaGVyaXRhbmNlLCBpZ25vcmUgaXRcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHMvbm8tdXNlLWJlZm9yZS1kZWZpbmVcblx0XHRcdFx0XHRpZiAocHJvdG90eXBlTW9jayAhPT0gbW9jay5wcm90b3R5cGVbcHJvcF0pIHtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBpc01vY2sgPSBpc01vY2tGdW5jdGlvbihwcm90b3R5cGVNb2NrKTtcblx0XHRcdFx0XHRjb25zdCBwcm90b3R5cGVTdGF0ZSA9IGlzTW9jayA/IHByb3RvdHlwZU1vY2subW9jayA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRjb25zdCBwcm90b3R5cGVDb25maWcgPSBpc01vY2sgPyBNT0NLX0NPTkZJR1MuZ2V0KHByb3RvdHlwZU1vY2spIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdHJldHVyblZhbHVlW3Byb3BdID0gY3JlYXRlTW9ja0luc3RhbmNlKHtcblx0XHRcdFx0XHRcdG9yaWdpbmFsSW1wbGVtZW50YXRpb246IGtlZXBNZW1iZXJzSW1wbGVtZW50YXRpb24gPyBwcm90b3R5cGVDb25maWc/Lm1vY2tPcmlnaW5hbCA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdHByb3RvdHlwZVN0YXRlLFxuXHRcdFx0XHRcdFx0cHJvdG90eXBlQ29uZmlnLFxuXHRcdFx0XHRcdFx0a2VlcE1lbWJlcnNJbXBsZW1lbnRhdGlvblxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSA9IGltcGxlbWVudGF0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHR0aHJvd25WYWx1ZSA9IGVycm9yO1xuXHRcdFx0ZGlkVGhyb3cgPSB0cnVlO1xuXHRcdFx0aWYgKGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJpcyBub3QgYSBjb25zdHJ1Y3RvclwiKSkge1xuXHRcdFx0XHRjb25zb2xlLndhcm4oYFt2aXRlc3RdIFRoZSAke25hbWVkT2JqZWN0W25hbWVdLmdldE1vY2tOYW1lKCl9IG1vY2sgZGlkIG5vdCB1c2UgJ2Z1bmN0aW9uJyBvciAnY2xhc3MnIGluIGl0cyBpbXBsZW1lbnRhdGlvbiwgc2VlIGh0dHBzOi8vdml0ZXN0LmRldi9hcGkvdmkjdmktc3B5b24gZm9yIGV4YW1wbGVzLmApO1xuXHRcdFx0fVxuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdGlmIChkaWRUaHJvdykge1xuXHRcdFx0XHRyZXN1bHQudHlwZSA9IFwidGhyb3dcIjtcblx0XHRcdFx0cmVzdWx0LnZhbHVlID0gdGhyb3duVmFsdWU7XG5cdFx0XHRcdHNldHRsZWRSZXN1bHQudHlwZSA9IFwicmVqZWN0ZWRcIjtcblx0XHRcdFx0c2V0dGxlZFJlc3VsdC52YWx1ZSA9IHRocm93blZhbHVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVzdWx0LnR5cGUgPSBcInJldHVyblwiO1xuXHRcdFx0XHRyZXN1bHQudmFsdWUgPSByZXR1cm5WYWx1ZTtcblx0XHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0XHRzdGF0ZS5jb250ZXh0c1tjb250ZXh0SW5kZXggLSAxXSA9IHJldHVyblZhbHVlO1xuXHRcdFx0XHRcdHN0YXRlLmluc3RhbmNlc1tpbnN0YW5jZUluZGV4IC0gMV0gPSByZXR1cm5WYWx1ZTtcblx0XHRcdFx0XHRpZiAoY29udGV4dFByb3RvdHlwZUluZGV4ICE9IG51bGwgJiYgcHJvdG90eXBlU3RhdGUpIHtcblx0XHRcdFx0XHRcdHByb3RvdHlwZVN0YXRlLmNvbnRleHRzW2NvbnRleHRQcm90b3R5cGVJbmRleCAtIDFdID0gcmV0dXJuVmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChpbnN0YW5jZVByb3RvdHlwZUluZGV4ICE9IG51bGwgJiYgcHJvdG90eXBlU3RhdGUpIHtcblx0XHRcdFx0XHRcdHByb3RvdHlwZVN0YXRlLmluc3RhbmNlc1tpbnN0YW5jZVByb3RvdHlwZUluZGV4IC0gMV0gPSByZXR1cm5WYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHJldHVyblZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuXHRcdFx0XHRcdHJldHVyblZhbHVlLnRoZW4oKHNldHRsZWRWYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0c2V0dGxlZFJlc3VsdC50eXBlID0gXCJmdWxmaWxsZWRcIjtcblx0XHRcdFx0XHRcdHNldHRsZWRSZXN1bHQudmFsdWUgPSBzZXR0bGVkVmFsdWU7XG5cdFx0XHRcdFx0fSwgKHJlamVjdGVkVmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHNldHRsZWRSZXN1bHQudHlwZSA9IFwicmVqZWN0ZWRcIjtcblx0XHRcdFx0XHRcdHNldHRsZWRSZXN1bHQudmFsdWUgPSByZWplY3RlZFZhbHVlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRsZWRSZXN1bHQudHlwZSA9IFwiZnVsZmlsbGVkXCI7XG5cdFx0XHRcdFx0c2V0dGxlZFJlc3VsdC52YWx1ZSA9IHJldHVyblZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXR1cm5WYWx1ZTtcblx0fSkgfTtcblx0Y29uc3QgbW9jayA9IG5hbWVkT2JqZWN0W25hbWVdO1xuXHRjb25zdCBjb3B5UHJvcGVydGllc0Zyb20gPSBvcmlnaW5hbCB8fCBwc2V1ZG9PcmlnaW5hbDtcblx0aWYgKGNvcHlQcm9wZXJ0aWVzRnJvbSkge1xuXHRcdGNvcHlPcmlnaW5hbFN0YXRpY1Byb3BlcnRpZXMobW9jaywgY29weVByb3BlcnRpZXNGcm9tKTtcblx0fVxuXHRyZXR1cm4gbW9jaztcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyQ2FsbHMoYXJncywgc3RhdGUsIHByb3RvdHlwZVN0YXRlKSB7XG5cdHN0YXRlLmNhbGxzLnB1c2goYXJncyk7XG5cdHByb3RvdHlwZVN0YXRlPy5jYWxscy5wdXNoKGFyZ3MpO1xufVxuZnVuY3Rpb24gcmVnaXN0ZXJJbnZvY2F0aW9uT3JkZXIob3JkZXIsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSkge1xuXHRzdGF0ZS5pbnZvY2F0aW9uQ2FsbE9yZGVyLnB1c2gob3JkZXIpO1xuXHRwcm90b3R5cGVTdGF0ZT8uaW52b2NhdGlvbkNhbGxPcmRlci5wdXNoKG9yZGVyKTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyUmVzdWx0KHJlc3VsdCwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKSB7XG5cdHN0YXRlLnJlc3VsdHMucHVzaChyZXN1bHQpO1xuXHRwcm90b3R5cGVTdGF0ZT8ucmVzdWx0cy5wdXNoKHJlc3VsdCk7XG59XG5mdW5jdGlvbiByZWdpc3RlclNldHRsZWRSZXN1bHQocmVzdWx0LCBzdGF0ZSwgcHJvdG90eXBlU3RhdGUpIHtcblx0c3RhdGUuc2V0dGxlZFJlc3VsdHMucHVzaChyZXN1bHQpO1xuXHRwcm90b3R5cGVTdGF0ZT8uc2V0dGxlZFJlc3VsdHMucHVzaChyZXN1bHQpO1xufVxuZnVuY3Rpb24gcmVnaXN0ZXJJbnN0YW5jZShpbnN0YW5jZSwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKSB7XG5cdGNvbnN0IGluc3RhbmNlSW5kZXggPSBzdGF0ZS5pbnN0YW5jZXMucHVzaChpbnN0YW5jZSk7XG5cdGNvbnN0IGluc3RhbmNlUHJvdG90eXBlSW5kZXggPSBwcm90b3R5cGVTdGF0ZT8uaW5zdGFuY2VzLnB1c2goaW5zdGFuY2UpO1xuXHRyZXR1cm4gW2luc3RhbmNlSW5kZXgsIGluc3RhbmNlUHJvdG90eXBlSW5kZXhdO1xufVxuZnVuY3Rpb24gcmVnaXN0ZXJDb250ZXh0KGNvbnRleHQsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSkge1xuXHRjb25zdCBjb250ZXh0SW5kZXggPSBzdGF0ZS5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuXHRjb25zdCBjb250ZXh0UHJvdG90eXBlSW5kZXggPSBwcm90b3R5cGVTdGF0ZT8uY29udGV4dHMucHVzaChjb250ZXh0KTtcblx0cmV0dXJuIFtjb250ZXh0SW5kZXgsIGNvbnRleHRQcm90b3R5cGVJbmRleF07XG59XG5mdW5jdGlvbiBjb3B5T3JpZ2luYWxTdGF0aWNQcm9wZXJ0aWVzKG1vY2ssIG9yaWdpbmFsKSB7XG5cdGNvbnN0IHsgcHJvcGVydGllcywgZGVzY3JpcHRvcnMgfSA9IGdldEFsbFByb3BlcnRpZXMob3JpZ2luYWwpO1xuXHRmb3IgKGNvbnN0IGtleSBvZiBwcm9wZXJ0aWVzKSB7XG5cdFx0Y29uc3QgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2tleV07XG5cdFx0Y29uc3QgbW9ja0Rlc2NyaXB0b3IgPSBnZXREZXNjcmlwdG9yKG1vY2ssIGtleSk7XG5cdFx0aWYgKG1vY2tEZXNjcmlwdG9yKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vY2ssIGtleSwgZGVzY3JpcHRvcik7XG5cdH1cbn1cbmNvbnN0IGlnbm9yZVByb3BlcnRpZXMgPSBuZXcgU2V0KFtcblx0XCJsZW5ndGhcIixcblx0XCJuYW1lXCIsXG5cdFwicHJvdG90eXBlXCIsXG5cdFN5bWJvbC5mb3IoXCJub2RlanMudXRpbC5wcm9taXNpZnkuY3VzdG9tXCIpXG5dKTtcbmZ1bmN0aW9uIGdldEFsbFByb3BlcnRpZXMob3JpZ2luYWwpIHtcblx0Y29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoKTtcblx0Y29uc3QgZGVzY3JpcHRvcnMgPSB7fTtcblx0d2hpbGUgKG9yaWdpbmFsICYmIG9yaWdpbmFsICE9PSBPYmplY3QucHJvdG90eXBlICYmIG9yaWdpbmFsICE9PSBGdW5jdGlvbi5wcm90b3R5cGUpIHtcblx0XHRjb25zdCBvd25Qcm9wZXJ0aWVzID0gWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9yaWdpbmFsKSwgLi4uT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvcmlnaW5hbCldO1xuXHRcdGZvciAoY29uc3QgcHJvcCBvZiBvd25Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAoZGVzY3JpcHRvcnNbcHJvcF0gfHwgaWdub3JlUHJvcGVydGllcy5oYXMocHJvcCkpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRwcm9wZXJ0aWVzLmFkZChwcm9wKTtcblx0XHRcdGRlc2NyaXB0b3JzW3Byb3BdID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvcmlnaW5hbCwgcHJvcCk7XG5cdFx0fVxuXHRcdG9yaWdpbmFsID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9yaWdpbmFsKTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdHByb3BlcnRpZXMsXG5cdFx0ZGVzY3JpcHRvcnNcblx0fTtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRDb25maWcob3JpZ2luYWwpIHtcblx0cmV0dXJuIHtcblx0XHRtb2NrSW1wbGVtZW50YXRpb246IHVuZGVmaW5lZCxcblx0XHRtb2NrT3JpZ2luYWw6IG9yaWdpbmFsLFxuXHRcdG1vY2tOYW1lOiBcInZpLmZuKClcIixcblx0XHRvbmNlTW9ja0ltcGxlbWVudGF0aW9uczogW11cblx0fTtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRTdGF0ZSgpIHtcblx0Y29uc3Qgc3RhdGUgPSB7XG5cdFx0Y2FsbHM6IFtdLFxuXHRcdGNvbnRleHRzOiBbXSxcblx0XHRpbnN0YW5jZXM6IFtdLFxuXHRcdGludm9jYXRpb25DYWxsT3JkZXI6IFtdLFxuXHRcdHNldHRsZWRSZXN1bHRzOiBbXSxcblx0XHRyZXN1bHRzOiBbXSxcblx0XHRnZXQgbGFzdENhbGwoKSB7XG5cdFx0XHRyZXR1cm4gc3RhdGUuY2FsbHMuYXQoLTEpO1xuXHRcdH1cblx0fTtcblx0cmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gcmVzdG9yZUFsbE1vY2tzKCkge1xuXHRmb3IgKGNvbnN0IHJlc3RvcmUgb2YgTU9DS19SRVNUT1JFKSB7XG5cdFx0cmVzdG9yZSgpO1xuXHR9XG5cdE1PQ0tfUkVTVE9SRS5jbGVhcigpO1xufVxuZnVuY3Rpb24gY2xlYXJBbGxNb2NrcygpIHtcblx0UkVHSVNURVJFRF9NT0NLUy5mb3JFYWNoKChtb2NrKSA9PiBtb2NrLm1vY2tDbGVhcigpKTtcbn1cbmZ1bmN0aW9uIHJlc2V0QWxsTW9ja3MoKSB7XG5cdFJFR0lTVEVSRURfTU9DS1MuZm9yRWFjaCgobW9jaykgPT4gbW9jay5tb2NrUmVzZXQoKSk7XG59XG5mdW5jdGlvbiB0aHJvd0NvbnN0cnVjdG9yRXJyb3Ioc2hvcnRoYW5kKSB7XG5cdHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCB1c2UgXFxgJHtzaG9ydGhhbmR9XFxgIHdoZW4gY2FsbGVkIHdpdGggXFxgbmV3XFxgLiBVc2UgXFxgbW9ja0ltcGxlbWVudGF0aW9uXFxgIHdpdGggYSBcXGBjbGFzc1xcYCBrZXl3b3JkIGluc3RlYWQuIFNlZSBodHRwczovL3ZpdGVzdC5kZXYvYXBpL21vY2sjY2xhc3Mtc3VwcG9ydCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5gKTtcbn1cblxuZXhwb3J0IHsgY2xlYXJBbGxNb2NrcywgY3JlYXRlTW9ja0luc3RhbmNlLCBmbiwgaXNNb2NrRnVuY3Rpb24sIHJlc2V0QWxsTW9ja3MsIHJlc3RvcmVBbGxNb2Nrcywgc3B5T24gfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxlQUFlLElBQUk7QUFDM0IsUUFBTyxPQUFPLE9BQU8sY0FBYyxxQkFBcUIsTUFBTSxHQUFHLG9CQUFvQjs7QUFFdEYsTUFBTSwrQkFBZSxJQUFJLEtBQUs7QUFJOUIsTUFBTSxtQ0FBbUIsSUFBSSxLQUFLO0FBQ2xDLE1BQU0sK0JBQWUsSUFBSSxTQUFTO0FBQ2xDLFNBQVMsbUJBQW1CLFVBQVUsRUFBRSxFQUFFO0NBQ3pDLE1BQU0sRUFBRSx3QkFBd0IsU0FBUyxvQkFBb0IsMkJBQTJCLG9CQUFvQjtBQUM1RyxLQUFJLFFBQ0gsY0FBYSxJQUFJLFFBQVE7Q0FFMUIsTUFBTSxTQUFTLGlCQUFpQix1QkFBdUI7Q0FDdkQsTUFBTSxRQUFRLGlCQUFpQjtDQUMvQixNQUFNLE9BQU8sV0FBVztFQUN2QjtFQUNBO0VBQ0EsR0FBRztFQUNILENBQUM7Q0FDRixNQUFNLGNBQWMsc0JBQXNCLHlCQUF5QixVQUFVO0FBQzdFLFFBQU8sZUFBZSxNQUFNLFVBQVU7RUFDckMsVUFBVTtFQUNWLFlBQVk7RUFDWixPQUFPO0VBQ1AsY0FBYztFQUNkLENBQUM7QUFJRixLQUFJLGdCQUNILFFBQU8sV0FBVyxLQUFLLFFBQVE7QUFFaEMsY0FBYSxJQUFJLE1BQU0sT0FBTztBQUM5QixrQkFB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
@@ -0,0 +1,82 @@
1
+ //#region ../../node_modules/.pnpm/@vitest+utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js
2
+ const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
3
+ function normalizeWindowsPath(input = "") {
4
+ if (!input) return input;
5
+ return input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
6
+ }
7
+ const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;
8
+ function cwd() {
9
+ if (typeof process !== "undefined" && typeof process.cwd === "function") return process.cwd().replace(/\\/g, "/");
10
+ return "/";
11
+ }
12
+ const resolve = function(...arguments_) {
13
+ arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
14
+ let resolvedPath = "";
15
+ let resolvedAbsolute = false;
16
+ for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
17
+ const path = index >= 0 ? arguments_[index] : cwd();
18
+ if (!path || path.length === 0) continue;
19
+ resolvedPath = `${path}/${resolvedPath}`;
20
+ resolvedAbsolute = isAbsolute(path);
21
+ }
22
+ resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
23
+ if (resolvedAbsolute && !isAbsolute(resolvedPath)) return `/${resolvedPath}`;
24
+ return resolvedPath.length > 0 ? resolvedPath : ".";
25
+ };
26
+ function normalizeString(path, allowAboveRoot) {
27
+ let res = "";
28
+ let lastSegmentLength = 0;
29
+ let lastSlash = -1;
30
+ let dots = 0;
31
+ let char = null;
32
+ for (let index = 0; index <= path.length; ++index) {
33
+ if (index < path.length) char = path[index];
34
+ else if (char === "/") break;
35
+ else char = "/";
36
+ if (char === "/") {
37
+ if (lastSlash === index - 1 || dots === 1);
38
+ else if (dots === 2) {
39
+ if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
40
+ if (res.length > 2) {
41
+ const lastSlashIndex = res.lastIndexOf("/");
42
+ if (lastSlashIndex === -1) {
43
+ res = "";
44
+ lastSegmentLength = 0;
45
+ } else {
46
+ res = res.slice(0, lastSlashIndex);
47
+ lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
48
+ }
49
+ lastSlash = index;
50
+ dots = 0;
51
+ continue;
52
+ } else if (res.length > 0) {
53
+ res = "";
54
+ lastSegmentLength = 0;
55
+ lastSlash = index;
56
+ dots = 0;
57
+ continue;
58
+ }
59
+ }
60
+ if (allowAboveRoot) {
61
+ res += res.length > 0 ? "/.." : "..";
62
+ lastSegmentLength = 2;
63
+ }
64
+ } else {
65
+ if (res.length > 0) res += `/${path.slice(lastSlash + 1, index)}`;
66
+ else res = path.slice(lastSlash + 1, index);
67
+ lastSegmentLength = index - lastSlash - 1;
68
+ }
69
+ lastSlash = index;
70
+ dots = 0;
71
+ } else if (char === "." && dots !== -1) ++dots;
72
+ else dots = -1;
73
+ }
74
+ return res;
75
+ }
76
+ const isAbsolute = function(p) {
77
+ return _IS_ABSOLUTE_RE.test(p);
78
+ };
79
+ //#endregion
80
+ export { resolve };
81
+
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmstcGF0aGUuTS1lVGh0TlouanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3QrdXRpbHNANC4xLjIvbm9kZV9tb2R1bGVzL0B2aXRlc3QvdXRpbHMvZGlzdC9jaHVuay1wYXRoZS5NLWVUaHROWi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBfRFJJVkVfTEVUVEVSX1NUQVJUX1JFID0gL15bQS1aYS16XTpcXC8vO1xuZnVuY3Rpb24gbm9ybWFsaXplV2luZG93c1BhdGgoaW5wdXQgPSBcIlwiKSB7XG4gIGlmICghaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpLnJlcGxhY2UoX0RSSVZFX0xFVFRFUl9TVEFSVF9SRSwgKHIpID0+IHIudG9VcHBlckNhc2UoKSk7XG59XG5cbmNvbnN0IF9VTkNfUkVHRVggPSAvXlsvXFxcXF17Mn0vO1xuY29uc3QgX0lTX0FCU09MVVRFX1JFID0gL15bL1xcXFxdKD8hWy9cXFxcXSl8XlsvXFxcXF17Mn0oPyFcXC4pfF5bQS1aYS16XTpbL1xcXFxdLztcbmNvbnN0IF9EUklWRV9MRVRURVJfUkUgPSAvXltBLVphLXpdOiQvO1xuY29uc3Qgbm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gXCIuXCI7XG4gIH1cbiAgcGF0aCA9IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHBhdGgpO1xuICBjb25zdCBpc1VOQ1BhdGggPSBwYXRoLm1hdGNoKF9VTkNfUkVHRVgpO1xuICBjb25zdCBpc1BhdGhBYnNvbHV0ZSA9IGlzQWJzb2x1dGUocGF0aCk7XG4gIGNvbnN0IHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSBcIi9cIjtcbiAgcGF0aCA9IG5vcm1hbGl6ZVN0cmluZyhwYXRoLCAhaXNQYXRoQWJzb2x1dGUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICBpZiAoaXNQYXRoQWJzb2x1dGUpIHtcbiAgICAgIHJldHVybiBcIi9cIjtcbiAgICB9XG4gICAgcmV0dXJuIHRyYWlsaW5nU2VwYXJhdG9yID8gXCIuL1wiIDogXCIuXCI7XG4gIH1cbiAgaWYgKHRyYWlsaW5nU2VwYXJhdG9yKSB7XG4gICAgcGF0aCArPSBcIi9cIjtcbiAgfVxuICBpZiAoX0RSSVZFX0xFVFRFUl9SRS50ZXN0KHBhdGgpKSB7XG4gICAgcGF0aCArPSBcIi9cIjtcbiAgfVxuICBpZiAoaXNVTkNQYXRoKSB7XG4gICAgaWYgKCFpc1BhdGhBYnNvbHV0ZSkge1xuICAgICAgcmV0dXJuIGAvLy4vJHtwYXRofWA7XG4gICAgfVxuICAgIHJldHVybiBgLy8ke3BhdGh9YDtcbiAgfVxuICByZXR1cm4gaXNQYXRoQWJzb2x1dGUgJiYgIWlzQWJzb2x1dGUocGF0aCkgPyBgLyR7cGF0aH1gIDogcGF0aDtcbn07XG5jb25zdCBqb2luID0gZnVuY3Rpb24oLi4uc2VnbWVudHMpIHtcbiAgbGV0IHBhdGggPSBcIlwiO1xuICBmb3IgKGNvbnN0IHNlZyBvZiBzZWdtZW50cykge1xuICAgIGlmICghc2VnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcGF0aFRyYWlsaW5nID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSBcIi9cIjtcbiAgICAgIGNvbnN0IHNlZ0xlYWRpbmcgPSBzZWdbMF0gPT09IFwiL1wiO1xuICAgICAgY29uc3QgYm90aCA9IHBhdGhUcmFpbGluZyAmJiBzZWdMZWFkaW5nO1xuICAgICAgaWYgKGJvdGgpIHtcbiAgICAgICAgcGF0aCArPSBzZWcuc2xpY2UoMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoICs9IHBhdGhUcmFpbGluZyB8fCBzZWdMZWFkaW5nID8gc2VnIDogYC8ke3NlZ31gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoICs9IHNlZztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZShwYXRoKTtcbn07XG5mdW5jdGlvbiBjd2QoKSB7XG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgcHJvY2Vzcy5jd2QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuICB9XG4gIHJldHVybiBcIi9cIjtcbn1cbmNvbnN0IHJlc29sdmUgPSBmdW5jdGlvbiguLi5hcmd1bWVudHNfKSB7XG4gIGFyZ3VtZW50c18gPSBhcmd1bWVudHNfLm1hcCgoYXJndW1lbnQpID0+IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGFyZ3VtZW50KSk7XG4gIGxldCByZXNvbHZlZFBhdGggPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuICBmb3IgKGxldCBpbmRleCA9IGFyZ3VtZW50c18ubGVuZ3RoIC0gMTsgaW5kZXggPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGluZGV4LS0pIHtcbiAgICBjb25zdCBwYXRoID0gaW5kZXggPj0gMCA/IGFyZ3VtZW50c19baW5kZXhdIDogY3dkKCk7XG4gICAgaWYgKCFwYXRoIHx8IHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmVzb2x2ZWRQYXRoID0gYCR7cGF0aH0vJHtyZXNvbHZlZFBhdGh9YDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoKTtcbiAgfVxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmcocmVzb2x2ZWRQYXRoLCAhcmVzb2x2ZWRBYnNvbHV0ZSk7XG4gIGlmIChyZXNvbHZlZEFic29sdXRlICYmICFpc0Fic29sdXRlKHJlc29sdmVkUGF0aCkpIHtcbiAgICByZXR1cm4gYC8ke3Jlc29sdmVkUGF0aH1gO1xuICB9XG4gIHJldHVybiByZXNvbHZlZFBhdGgubGVuZ3RoID4gMCA/IHJlc29sdmVkUGF0aCA6IFwiLlwiO1xufTtcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyhwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICBsZXQgcmVzID0gXCJcIjtcbiAgbGV0IGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgbGV0IGxhc3RTbGFzaCA9IC0xO1xuICBsZXQgZG90cyA9IDA7XG4gIGxldCBjaGFyID0gbnVsbDtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8PSBwYXRoLmxlbmd0aDsgKytpbmRleCkge1xuICAgIGlmIChpbmRleCA8IHBhdGgubGVuZ3RoKSB7XG4gICAgICBjaGFyID0gcGF0aFtpbmRleF07XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoYXIgPSBcIi9cIjtcbiAgICB9XG4gICAgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpbmRleCAtIDEgfHwgZG90cyA9PT0gMSkgOyBlbHNlIGlmIChkb3RzID09PSAyKSB7XG4gICAgICAgIGlmIChyZXMubGVuZ3RoIDwgMiB8fCBsYXN0U2VnbWVudExlbmd0aCAhPT0gMiB8fCByZXNbcmVzLmxlbmd0aCAtIDFdICE9PSBcIi5cIiB8fCByZXNbcmVzLmxlbmd0aCAtIDJdICE9PSBcIi5cIikge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSByZXMubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IHJlcy5sZW5ndGggLSAxIC0gcmVzLmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGluZGV4O1xuICAgICAgICAgICAgZG90cyA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaW5kZXg7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICAgICAgICByZXMgKz0gcmVzLmxlbmd0aCA+IDAgPyBcIi8uLlwiIDogXCIuLlwiO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzICs9IGAvJHtwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGluZGV4KX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcyA9IHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaW5kZXggLSBsYXN0U2xhc2ggLSAxO1xuICAgICAgfVxuICAgICAgbGFzdFNsYXNoID0gaW5kZXg7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiLlwiICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmNvbnN0IGlzQWJzb2x1dGUgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBfSVNfQUJTT0xVVEVfUkUudGVzdChwKTtcbn07XG5jb25zdCBkaXJuYW1lID0gZnVuY3Rpb24ocCkge1xuICBjb25zdCBzZWdtZW50cyA9IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApLnJlcGxhY2UoL1xcLyQvLCBcIlwiKS5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxICYmIF9EUklWRV9MRVRURVJfUkUudGVzdChzZWdtZW50c1swXSkpIHtcbiAgICBzZWdtZW50c1swXSArPSBcIi9cIjtcbiAgfVxuICByZXR1cm4gc2VnbWVudHMuam9pbihcIi9cIikgfHwgKGlzQWJzb2x1dGUocCkgPyBcIi9cIiA6IFwiLlwiKTtcbn07XG5cbmV4cG9ydCB7IGRpcm5hbWUgYXMgZCwgam9pbiBhcyBqLCByZXNvbHZlIGFzIHIgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSx5QkFBeUI7QUFDL0IsU0FBUyxxQkFBcUIsUUFBUSxJQUFJO0FBQ3hDLEtBQUksQ0FBQyxNQUNILFFBQU87QUFFVCxRQUFPLE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLHlCQUF5QixNQUFNLEVBQUUsYUFBYSxDQUFDOztBQUkxRixNQUFNLGtCQUFrQjtBQW9EeEIsU0FBUyxNQUFNO0FBQ2IsS0FBSSxPQUFPLFlBQVksZUFBZSxPQUFPLFFBQVEsUUFBUSxXQUMzRCxRQUFPLFFBQVEsS0FBSyxDQUFDLFFBQVEsT0FBTyxJQUFJO0FBRTFDLFFBQU87O0FBRVQsTUFBTSxVQUFVLFNBQVMsR0FBRyxZQUFZO0FBQ3RDLGNBQWEsV0FBVyxLQUFLLGFBQWEscUJBQXFCLFNBQVMsQ0FBQztDQUN6RSxJQUFJLGVBQWU7Q0FDbkIsSUFBSSxtQkFBbUI7QUFDdkIsTUFBSyxJQUFJLFFBQVEsV0FBVyxTQUFTLEdBQUcsU0FBUyxNQUFNLENBQUMsa0JBQWtCLFNBQVM7RUFDakYsTUFBTSxPQUFPLFNBQVMsSUFBSSxXQUFXLFNBQVMsS0FBSztBQUNuRCxNQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFDM0I7QUFFRixpQkFBZSxHQUFHLEtBQUssR0FBRztBQUMxQixxQkFBbUIsV0FBVyxLQUFLOztBQUVyQyxnQkFBZSxnQkFBZ0IsY0FBYyxDQUFDLGlCQUFpQjtBQUMvRCxLQUFJLG9CQUFvQixDQUFDLFdBQVcsYUFBYSxDQUMvQyxRQUFPLElBQUk7QUFFYixRQUFPLGFBQWEsU0FBUyxJQUFJLGVBQWU7O0FBRWxELFNBQVMsZ0JBQWdCLE1BQU0sZ0JBQWdCO0NBQzdDLElBQUksTUFBTTtDQUNWLElBQUksb0JBQW9CO0NBQ3hCLElBQUksWUFBWTtDQUNoQixJQUFJLE9BQU87Q0FDWCxJQUFJLE9BQU87QUFDWCxNQUFLLElBQUksUUFBUSxHQUFHLFNBQVMsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUNqRCxNQUFJLFFBQVEsS0FBSyxPQUNmLFFBQU8sS0FBSztXQUNILFNBQVMsSUFDbEI7TUFFQSxRQUFPO0FBRVQsTUFBSSxTQUFTLEtBQUs7QUFDaEIsT0FBSSxjQUFjLFFBQVEsS0FBSyxTQUFTO1lBQWMsU0FBUyxHQUFHO0FBQ2hFLFFBQUksSUFBSSxTQUFTLEtBQUssc0JBQXNCLEtBQUssSUFBSSxJQUFJLFNBQVMsT0FBTyxPQUFPLElBQUksSUFBSSxTQUFTLE9BQU8sS0FDdEc7U0FBSSxJQUFJLFNBQVMsR0FBRztNQUNsQixNQUFNLGlCQUFpQixJQUFJLFlBQVksSUFBSTtBQUMzQyxVQUFJLG1CQUFtQixJQUFJO0FBQ3pCLGFBQU07QUFDTiwyQkFBb0I7YUFDZjtBQUNMLGFBQU0sSUFBSSxNQUFNLEdBQUcsZUFBZTtBQUNsQywyQkFBb0IsSUFBSSxTQUFTLElBQUksSUFBSSxZQUFZLElBQUk7O0FBRTNELGtCQUFZO0FBQ1osYUFBTztBQUNQO2dCQUNTLElBQUksU0FBUyxHQUFHO0FBQ3pCLFlBQU07QUFDTiwwQkFBb0I7QUFDcEIsa0JBQVk7QUFDWixhQUFPO0FBQ1A7OztBQUdKLFFBQUksZ0JBQWdCO0FBQ2xCLFlBQU8sSUFBSSxTQUFTLElBQUksUUFBUTtBQUNoQyx5QkFBb0I7O1VBRWpCO0FBQ0wsUUFBSSxJQUFJLFNBQVMsRUFDZixRQUFPLElBQUksS0FBSyxNQUFNLFlBQVksR0FBRyxNQUFNO1FBRTNDLE9BQU0sS0FBSyxNQUFNLFlBQVksR0FBRyxNQUFNO0FBRXhDLHdCQUFvQixRQUFRLFlBQVk7O0FBRTFDLGVBQVk7QUFDWixVQUFPO2FBQ0UsU0FBUyxPQUFPLFNBQVMsR0FDbEMsR0FBRTtNQUVGLFFBQU87O0FBR1gsUUFBTzs7QUFFVCxNQUFNLGFBQWEsU0FBUyxHQUFHO0FBQzdCLFFBQU8sZ0JBQWdCLEtBQUssRUFBRSJ9
@@ -0,0 +1,48 @@
1
+ new RegExp(`\\.(${[
2
+ "apng",
3
+ "bmp",
4
+ "png",
5
+ "jpe?g",
6
+ "jfif",
7
+ "pjpeg",
8
+ "pjp",
9
+ "gif",
10
+ "svg",
11
+ "ico",
12
+ "webp",
13
+ "avif",
14
+ "mp4",
15
+ "webm",
16
+ "ogg",
17
+ "mp3",
18
+ "wav",
19
+ "flac",
20
+ "aac",
21
+ "woff2?",
22
+ "eot",
23
+ "ttf",
24
+ "otf",
25
+ "webmanifest",
26
+ "pdf",
27
+ "txt"
28
+ ].join("|")})$`);
29
+ /**
30
+ * Prefix for resolved Ids that are not valid browser import specifiers
31
+ */
32
+ const VALID_ID_PREFIX = `/@id/`;
33
+ /**
34
+ * Plugins that use 'virtual modules' (e.g. for helper functions), prefix the
35
+ * module ID with `\0`, a convention from the rollup ecosystem.
36
+ * This prevents other plugins from trying to process the id (like node resolution),
37
+ * and core features like sourcemaps can use this info to differentiate between
38
+ * virtual modules and regular files.
39
+ * `\0` is not a permitted char in import URLs so we have to replace them during
40
+ * import analysis. The id will be decoded back before entering the plugins pipeline.
41
+ * These encoded virtual ids are also prefixed by the VALID_ID_PREFIX, so virtual
42
+ * modules in the browser end up encoded as `/@id/__x00__{id}`
43
+ */
44
+ const NULL_BYTE_PLACEHOLDER = `__x00__`;
45
+ //#endregion
46
+ export { NULL_BYTE_PLACEHOLDER, VALID_ID_PREFIX };
47
+
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4yL25vZGVfbW9kdWxlcy9Adml0ZXN0L3V0aWxzL2Rpc3QvY29uc3RhbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IHRoaXMgaXMgYWxsIGNvcHkgcGFzdGVkIGZyb20gVml0ZSAtIGNhbiB0aGV5IGV4cG9zZSBhIG1vZHVsZSB0aGF0IGV4cG9ydHMgb25seSBjb25zdGFudHM/XG5jb25zdCBLTk9XTl9BU1NFVF9UWVBFUyA9IFtcblx0XCJhcG5nXCIsXG5cdFwiYm1wXCIsXG5cdFwicG5nXCIsXG5cdFwianBlP2dcIixcblx0XCJqZmlmXCIsXG5cdFwicGpwZWdcIixcblx0XCJwanBcIixcblx0XCJnaWZcIixcblx0XCJzdmdcIixcblx0XCJpY29cIixcblx0XCJ3ZWJwXCIsXG5cdFwiYXZpZlwiLFxuXHRcIm1wNFwiLFxuXHRcIndlYm1cIixcblx0XCJvZ2dcIixcblx0XCJtcDNcIixcblx0XCJ3YXZcIixcblx0XCJmbGFjXCIsXG5cdFwiYWFjXCIsXG5cdFwid29mZjI/XCIsXG5cdFwiZW90XCIsXG5cdFwidHRmXCIsXG5cdFwib3RmXCIsXG5cdFwid2VibWFuaWZlc3RcIixcblx0XCJwZGZcIixcblx0XCJ0eHRcIlxuXTtcbmNvbnN0IEtOT1dOX0FTU0VUX1JFID0gbmV3IFJlZ0V4cChgXFxcXC4oJHtLTk9XTl9BU1NFVF9UWVBFUy5qb2luKFwifFwiKX0pJGApO1xuY29uc3QgQ1NTX0xBTkdTX1JFID0gL1xcLihjc3N8bGVzc3xzYXNzfHNjc3N8c3R5bHxzdHlsdXN8cGNzc3xwb3N0Y3NzfHNzcykoPzokfFxcPykvO1xuLyoqXG4qIFByZWZpeCBmb3IgcmVzb2x2ZWQgSWRzIHRoYXQgYXJlIG5vdCB2YWxpZCBicm93c2VyIGltcG9ydCBzcGVjaWZpZXJzXG4qL1xuY29uc3QgVkFMSURfSURfUFJFRklYID0gYC9AaWQvYDtcbi8qKlxuKiBQbHVnaW5zIHRoYXQgdXNlICd2aXJ0dWFsIG1vZHVsZXMnIChlLmcuIGZvciBoZWxwZXIgZnVuY3Rpb25zKSwgcHJlZml4IHRoZVxuKiBtb2R1bGUgSUQgd2l0aCBgXFwwYCwgYSBjb252ZW50aW9uIGZyb20gdGhlIHJvbGx1cCBlY29zeXN0ZW0uXG4qIFRoaXMgcHJldmVudHMgb3RoZXIgcGx1Z2lucyBmcm9tIHRyeWluZyB0byBwcm9jZXNzIHRoZSBpZCAobGlrZSBub2RlIHJlc29sdXRpb24pLFxuKiBhbmQgY29yZSBmZWF0dXJlcyBsaWtlIHNvdXJjZW1hcHMgY2FuIHVzZSB0aGlzIGluZm8gdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuXG4qIHZpcnR1YWwgbW9kdWxlcyBhbmQgcmVndWxhciBmaWxlcy5cbiogYFxcMGAgaXMgbm90IGEgcGVybWl0dGVkIGNoYXIgaW4gaW1wb3J0IFVSTHMgc28gd2UgaGF2ZSB0byByZXBsYWNlIHRoZW0gZHVyaW5nXG4qIGltcG9ydCBhbmFseXNpcy4gVGhlIGlkIHdpbGwgYmUgZGVjb2RlZCBiYWNrIGJlZm9yZSBlbnRlcmluZyB0aGUgcGx1Z2lucyBwaXBlbGluZS5cbiogVGhlc2UgZW5jb2RlZCB2aXJ0dWFsIGlkcyBhcmUgYWxzbyBwcmVmaXhlZCBieSB0aGUgVkFMSURfSURfUFJFRklYLCBzbyB2aXJ0dWFsXG4qIG1vZHVsZXMgaW4gdGhlIGJyb3dzZXIgZW5kIHVwIGVuY29kZWQgYXMgYC9AaWQvX194MDBfX3tpZH1gXG4qL1xuY29uc3QgTlVMTF9CWVRFX1BMQUNFSE9MREVSID0gYF9feDAwX19gO1xuXG5leHBvcnQgeyBDU1NfTEFOR1NfUkUsIEtOT1dOX0FTU0VUX1JFLCBLTk9XTl9BU1NFVF9UWVBFUywgTlVMTF9CWVRFX1BMQUNFSE9MREVSLCBWQUxJRF9JRF9QUkVGSVggfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiQUE2QnVCLElBQUksT0FBTyxPQTVCUjtDQUN6QjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsQ0FDMEQsS0FBSyxJQUFJLENBQUMsSUFBSTs7OztBQUt6RSxNQUFNLGtCQUFrQjs7Ozs7Ozs7Ozs7O0FBWXhCLE1BQU0sd0JBQXdCIn0=