@nestia/e2e 14.0.1 → 14.0.3

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.
@@ -12,12 +12,45 @@
12
12
  *
13
13
  * When you want to see some utilization cases, see the below example links.
14
14
  *
15
+ * Native boundary: Discovery lists directories with `readdir` and `stat` and
16
+ * joins children with `path.resolve`; symbolic links are followed, and each
17
+ * directory is entered once by its filesystem real path so aliases and ancestor
18
+ * cycles do not repeat discovery. The extension is matched as a file-name
19
+ * suffix and the prefix with `startsWith`, both case-sensitively as spelled, so
20
+ * name case is judged by the caller's spelling and not by the volume. A file is
21
+ * imported through a specifier: the path relative to this module in `/` form
22
+ * when `path.relative` can express one, and where it cannot, as on Windows
23
+ * between drive roots, the absolute path for a CommonJS build, whose `require`
24
+ * rejects a URL, or a `file:` URL from `pathToFileURL` for native ESM, which
25
+ * rejects a Windows path.
26
+ *
27
+ * Processing cost: Discovery visits each real directory once and performs one
28
+ * metadata lookup per listed entry. A monotone queue index dispatches each
29
+ * admitted module once without shifting the remaining queue; execution walks
30
+ * module exports once. Storage grows with discovered directories, modules and
31
+ * execution records; concurrency allocates the requested number of workers.
32
+ *
33
+ * Reuse: Discovery and module loading are shared by the tests of one run. New
34
+ * runs rediscover files; Node owns module caching, so editing an already
35
+ * imported module does not promise reload in the same process.
36
+ *
37
+ * Resource ownership: One run owns the discovered module queue, visited
38
+ * directory set and report. At most the requested number of module tasks are
39
+ * active, all are awaited before success or strict rejection, and returned
40
+ * records transfer to the caller. Listener failure also settles workers;
41
+ * cancellation and unloading Node cached modules are not provided.
42
+ *
15
43
  * @author Jeongho Nam - https://github.com/samchon
16
44
  * @example
17
45
  * https://github.com/samchon/nestia-start/blob/master/test/index.ts
18
46
  *
19
47
  * @example
20
48
  * https://github.com/samchon/backend/blob/master/test/index.ts
49
+ *
50
+ * @evidence contracts/common.md#principled-implementation The executor walks the location recursively, admits a file only when its basename ends with the extension and starts with the prefix and the filter accepts it, imports the admitted files, and runs every exported function whose name starts with the prefix, with at most `simultaneous` runs in flight; the file gate runs before the import so an excluded file is never loaded.
51
+ * @evidence contracts/common.md#clear-and-simple-design Two public entry points share one private pipeline: discovery (`iterate`), the import specifier (`specifier`), and execution (`execute`) are separate helpers, and the two modes differ by one flag.
52
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Selection is by prefix, extension, and the caller's filter, with no known file names; the import specifier logic distinguishes the module system in use rather than special-casing a platform.
53
+ * @evidence contracts/common.md#meaningful-documentation The namespace prose says what it runs and why, with links to example repositories, and the members document their options.
21
54
  */
22
55
  export declare namespace DynamicExecutor {
23
56
  /**
@@ -25,11 +58,26 @@ export declare namespace DynamicExecutor {
25
58
  *
26
59
  * @template Arguments Type of parameters
27
60
  * @template Ret Type of return value
61
+ * @evidence contracts/common.md#principled-implementation A dynamic function is an asynchronous function of the parameters the executor supplies.
62
+ * @evidence contracts/common.md#clear-and-simple-design A single call signature.
63
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
64
+ * @evidence contracts/common.md#meaningful-documentation The comment names the parameter and return type arguments.
28
65
  */
29
66
  interface Closure<Arguments extends any[], Ret = any> {
30
67
  (...args: Arguments): Promise<Ret>;
31
68
  }
32
- /** Options for dynamic executor. */
69
+ /**
70
+ * Options for dynamic executor.
71
+ *
72
+ * Native boundary: The location is a native directory path resolved with
73
+ * `path.resolve`, the extension is a suffix without a dot, and `simultaneous`
74
+ * bounds in-process runs only, so no process or thread is created.
75
+ *
76
+ * @evidence contracts/common.md#principled-implementation The fields are what selection and execution need: the prefix, the location, the parameter factory, and optional hooks, concurrency, and extension; `simultaneous` and the extension have documented defaults.
77
+ * @evidence contracts/common.md#clear-and-simple-design A flat option record whose optional members are the extension points (listener, filter, wrapper).
78
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Every value is caller-supplied; the defaults are the documented ones (`js`, one at a time).
79
+ * @evidence contracts/common.md#meaningful-documentation Each option documents its meaning, including that the filter receives a file basename and never a function name.
80
+ */
33
81
  interface IProps<Parameters extends any[], Ret = any> {
34
82
  /**
35
83
  * Prefix of function name.
@@ -49,6 +97,10 @@ export declare namespace DynamicExecutor {
49
97
  *
50
98
  * @param name Function name
51
99
  * @returns Parameters
100
+ * @evidence contracts/common.md#principled-implementation The function is called with the function name at each execution and returns the argument list, so each test gets fresh parameters keyed by its name.
101
+ * @evidence contracts/common.md#clear-and-simple-design One required callback with one input.
102
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Arguments come only from the caller's function.
103
+ * @evidence contracts/common.md#meaningful-documentation The comment documents the parameter and the return value.
52
104
  */
53
105
  parameters: (name: string) => Parameters;
54
106
  /**
@@ -56,7 +108,14 @@ export declare namespace DynamicExecutor {
56
108
  *
57
109
  * Listener of completion of a test function.
58
110
  *
111
+ * A thrown listener error rejects the run in either mode after active
112
+ * module tasks settle; listeners should handle their reporting errors.
113
+ *
59
114
  * @param exec Execution result of a test function
115
+ * @evidence contracts/common.md#principled-implementation The listener is called from the `finally` of each execution with the execution record, so it observes both success and failure, after the completion time is set.
116
+ * @evidence contracts/common.md#clear-and-simple-design One optional callback with one record argument.
117
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The completion hook receives the actual execution record in finally; its own exception is not swallowed and can reject either execution mode.
118
+ * @evidence contracts/common.md#meaningful-documentation The comment states that it listens to the completion of a test function.
60
119
  */
61
120
  onComplete?: (exec: IExecution) => void;
62
121
  /**
@@ -67,8 +126,16 @@ export declare namespace DynamicExecutor {
67
126
  * `false`, the file would never be imported, so that every function defined
68
127
  * in the file would never be executed either.
69
128
  *
129
+ * Native boundary: The predicate receives the entry name exactly as
130
+ * `readdir` lists it, without case or separator normalization, so a
131
+ * comparison on a case-insensitive volume is the caller's to make.
132
+ *
70
133
  * @param file File name (basename) of the dynamic functions
71
134
  * @returns Whether to run or not
135
+ * @evidence contracts/common.md#principled-implementation The predicate is evaluated on the file basename before the file is imported, so a `false` result prevents both the import and the execution of every function in it.
136
+ * @evidence contracts/common.md#clear-and-simple-design One optional predicate over one string.
137
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Selection follows the caller's predicate, not fixed names.
138
+ * @evidence contracts/common.md#meaningful-documentation The comment states the argument and the effect of a `false` answer.
72
139
  */
73
140
  filter?: (file: string) => boolean;
74
141
  /**
@@ -82,6 +149,10 @@ export declare namespace DynamicExecutor {
82
149
  * @param closure Function to be executed
83
150
  * @param parameters Parameters, result of options.parameters function.
84
151
  * @returns Wrapper function
152
+ * @evidence contracts/common.md#principled-implementation When present, the wrapper is called instead of the function directly with the name, the function, and the parameters, so a caller can add setup, retries, or measurement around each test.
153
+ * @evidence contracts/common.md#clear-and-simple-design One optional callback that replaces the direct call.
154
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The executor calls the wrapper for every function it runs, without a test-specific bypass.
155
+ * @evidence contracts/common.md#meaningful-documentation The comment documents each parameter and the return value.
85
156
  */
86
157
  wrapper?: (name: string, closure: Closure<Parameters, Ret>, parameters: Parameters) => Promise<any>;
87
158
  /**
@@ -102,7 +173,18 @@ export declare namespace DynamicExecutor {
102
173
  */
103
174
  extension?: string;
104
175
  }
105
- /** Report, result of dynamic execution. */
176
+ /**
177
+ * Report, result of dynamic execution.
178
+ *
179
+ * Native boundary: The report preserves the caller's native directory
180
+ * spelling, including relative paths; discovered execution locations are
181
+ * resolved separately with Node path operations.
182
+ *
183
+ * @evidence contracts/common.md#principled-implementation The report keeps the location, every execution record in start order, and the elapsed time computed as the difference of two clock reads.
184
+ * @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
185
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Every field is measured by the executor.
186
+ * @evidence contracts/common.md#meaningful-documentation Each field documents its meaning.
187
+ */
106
188
  interface IReport {
107
189
  /** Location path of dynamic functions. */
108
190
  location: string;
@@ -111,7 +193,17 @@ export declare namespace DynamicExecutor {
111
193
  /** Total elapsed time. */
112
194
  time: number;
113
195
  }
114
- /** Execution of a test function. */
196
+ /**
197
+ * Execution of a test function.
198
+ *
199
+ * Native boundary: The location field holds the native absolute path of the
200
+ * file as resolved, so it carries backslashes on Windows.
201
+ *
202
+ * @evidence contracts/common.md#principled-implementation An execution records the function name, its file, the returned value, the error or `null`, and the start and completion instants, which is what a listener needs to report a test.
203
+ * @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
204
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Every field is measured by the executor.
205
+ * @evidence contracts/common.md#meaningful-documentation Each field documents its meaning, and the two time fields state that they hold ISO 8601 strings.
206
+ */
115
207
  interface IExecution {
116
208
  /** Name of function. */
117
209
  name: string;
@@ -121,31 +213,67 @@ export declare namespace DynamicExecutor {
121
213
  value: unknown;
122
214
  /** Error when occurred. */
123
215
  error: Error | null;
124
- /** Elapsed time. */
216
+ /** Start time, as an ISO 8601 string. */
125
217
  started_at: string;
126
- /** Completion time. */
218
+ /** Completion time, as an ISO 8601 string. */
127
219
  completed_at: string;
128
220
  }
129
221
  /**
130
222
  * Prepare dynamic executor in strict mode.
131
223
  *
132
- * In strict mode, if any error occurs, the program will be terminated
133
- * directly. Otherwise, {@link validate} mode does not terminate when error
134
- * occurs, but just archive the error log.
224
+ * Strict mode stops dispatching further modules after a failure and rejects
225
+ * after active module tasks settle. {@link validate} records test failures and
226
+ * continues instead.
227
+ *
228
+ * Processing cost: The shared executor discovers modules once, dispatches
229
+ * each queue index once and walks each admitted export; this entry only
230
+ * selects the failure policy.
231
+ *
232
+ * Reuse: Discovery and module loading are shared by the tests of one run. New
233
+ * runs rediscover files; Node owns module caching, so editing an already
234
+ * imported module does not promise reload in the same process.
235
+ *
236
+ * Resource ownership: One run owns the discovered module queue, visited
237
+ * directory set and report. At most the requested number of module tasks are
238
+ * active, all are awaited before success or strict rejection, and returned
239
+ * records transfer to the caller. Listener failure also settles workers;
240
+ * cancellation and unloading Node cached modules are not provided.
135
241
  *
136
242
  * @param props Properties of dynamic execution
137
243
  * @returns Report of dynamic test functions execution
244
+ * @evidence contracts/common.md#principled-implementation Strict mode rethrows the first error of a function after the execution record and the listener have seen it; no further file is dispatched once a task has failed, and the returned promise rejects with that first failure only after the in-flight tasks have settled, so no test runs after the caller observes the failure.
245
+ * @evidence contracts/common.md#clear-and-simple-design A one-line binding of the shared pipeline with the strict flag.
246
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The mode changes only whether a failure is rethrown; nothing is silenced.
247
+ * @evidence contracts/common.md#meaningful-documentation The comment states the strict behavior, contrasts it with `validate`, and documents the parameter and the report.
138
248
  */
139
249
  const assert: <Arguments extends any[]>(props: IProps<Arguments>) => Promise<IReport>;
140
250
  /**
141
251
  * Prepare dynamic executor in loose mode.
142
252
  *
143
- * In loose mode, the program would not be terminated even when error occurs.
144
- * Instead, the error would be archived and returns as a list. Otherwise,
145
- * {@link assert} mode terminates the program directly when error occurs.
253
+ * Loose mode records test failures and continues with subsequent tests.
254
+ * Discovery, import and completion-listener errors still reject the run.
255
+ * {@link assert} rejects on a test failure after active tasks settle.
256
+ *
257
+ * Processing cost: The shared executor discovers modules once, dispatches
258
+ * each queue index once and walks each admitted export; this entry only
259
+ * selects the failure policy.
260
+ *
261
+ * Reuse: Discovery and module loading are shared by the tests of one run. New
262
+ * runs rediscover files; Node owns module caching, so editing an already
263
+ * imported module does not promise reload in the same process.
264
+ *
265
+ * Resource ownership: One run owns the discovered module queue, visited
266
+ * directory set and report. At most the requested number of module tasks are
267
+ * active, all are awaited before success or strict rejection, and returned
268
+ * records transfer to the caller. Listener failure also settles workers;
269
+ * cancellation and unloading Node cached modules are not provided.
146
270
  *
147
271
  * @param props Properties of dynamic executor
148
272
  * @returns Report of dynamic test functions execution
273
+ * @evidence contracts/common.md#principled-implementation Loose mode records test errors and continues, returning them in execution records. Discovery, module import and completion-listener failures are outside that test-error policy and reject the run.
274
+ * @evidence contracts/common.md#clear-and-simple-design A one-line binding of the shared pipeline with the loose flag.
275
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The mode changes only whether a failure is rethrown; the error stays in the report.
276
+ * @evidence contracts/common.md#meaningful-documentation The comment states the loose behavior, contrasts it with `assert`, and documents the parameter and the report.
149
277
  */
150
278
  const validate: <Arguments extends any[]>(props: IProps<Arguments>) => Promise<IReport>;
151
279
  }
@@ -63,35 +63,104 @@ const url_1 = require("url");
63
63
  *
64
64
  * When you want to see some utilization cases, see the below example links.
65
65
  *
66
+ * Native boundary: Discovery lists directories with `readdir` and `stat` and
67
+ * joins children with `path.resolve`; symbolic links are followed, and each
68
+ * directory is entered once by its filesystem real path so aliases and ancestor
69
+ * cycles do not repeat discovery. The extension is matched as a file-name
70
+ * suffix and the prefix with `startsWith`, both case-sensitively as spelled, so
71
+ * name case is judged by the caller's spelling and not by the volume. A file is
72
+ * imported through a specifier: the path relative to this module in `/` form
73
+ * when `path.relative` can express one, and where it cannot, as on Windows
74
+ * between drive roots, the absolute path for a CommonJS build, whose `require`
75
+ * rejects a URL, or a `file:` URL from `pathToFileURL` for native ESM, which
76
+ * rejects a Windows path.
77
+ *
78
+ * Processing cost: Discovery visits each real directory once and performs one
79
+ * metadata lookup per listed entry. A monotone queue index dispatches each
80
+ * admitted module once without shifting the remaining queue; execution walks
81
+ * module exports once. Storage grows with discovered directories, modules and
82
+ * execution records; concurrency allocates the requested number of workers.
83
+ *
84
+ * Reuse: Discovery and module loading are shared by the tests of one run. New
85
+ * runs rediscover files; Node owns module caching, so editing an already
86
+ * imported module does not promise reload in the same process.
87
+ *
88
+ * Resource ownership: One run owns the discovered module queue, visited
89
+ * directory set and report. At most the requested number of module tasks are
90
+ * active, all are awaited before success or strict rejection, and returned
91
+ * records transfer to the caller. Listener failure also settles workers;
92
+ * cancellation and unloading Node cached modules are not provided.
93
+ *
66
94
  * @author Jeongho Nam - https://github.com/samchon
67
95
  * @example
68
96
  * https://github.com/samchon/nestia-start/blob/master/test/index.ts
69
97
  *
70
98
  * @example
71
99
  * https://github.com/samchon/backend/blob/master/test/index.ts
100
+ *
101
+ * @evidence contracts/common.md#principled-implementation The executor walks the location recursively, admits a file only when its basename ends with the extension and starts with the prefix and the filter accepts it, imports the admitted files, and runs every exported function whose name starts with the prefix, with at most `simultaneous` runs in flight; the file gate runs before the import so an excluded file is never loaded.
102
+ * @evidence contracts/common.md#clear-and-simple-design Two public entry points share one private pipeline: discovery (`iterate`), the import specifier (`specifier`), and execution (`execute`) are separate helpers, and the two modes differ by one flag.
103
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Selection is by prefix, extension, and the caller's filter, with no known file names; the import specifier logic distinguishes the module system in use rather than special-casing a platform.
104
+ * @evidence contracts/common.md#meaningful-documentation The namespace prose says what it runs and why, with links to example repositories, and the members document their options.
72
105
  */
73
106
  var DynamicExecutor;
74
107
  (function (DynamicExecutor) {
75
108
  /**
76
109
  * Prepare dynamic executor in strict mode.
77
110
  *
78
- * In strict mode, if any error occurs, the program will be terminated
79
- * directly. Otherwise, {@link validate} mode does not terminate when error
80
- * occurs, but just archive the error log.
111
+ * Strict mode stops dispatching further modules after a failure and rejects
112
+ * after active module tasks settle. {@link validate} records test failures and
113
+ * continues instead.
114
+ *
115
+ * Processing cost: The shared executor discovers modules once, dispatches
116
+ * each queue index once and walks each admitted export; this entry only
117
+ * selects the failure policy.
118
+ *
119
+ * Reuse: Discovery and module loading are shared by the tests of one run. New
120
+ * runs rediscover files; Node owns module caching, so editing an already
121
+ * imported module does not promise reload in the same process.
122
+ *
123
+ * Resource ownership: One run owns the discovered module queue, visited
124
+ * directory set and report. At most the requested number of module tasks are
125
+ * active, all are awaited before success or strict rejection, and returned
126
+ * records transfer to the caller. Listener failure also settles workers;
127
+ * cancellation and unloading Node cached modules are not provided.
81
128
  *
82
129
  * @param props Properties of dynamic execution
83
130
  * @returns Report of dynamic test functions execution
131
+ * @evidence contracts/common.md#principled-implementation Strict mode rethrows the first error of a function after the execution record and the listener have seen it; no further file is dispatched once a task has failed, and the returned promise rejects with that first failure only after the in-flight tasks have settled, so no test runs after the caller observes the failure.
132
+ * @evidence contracts/common.md#clear-and-simple-design A one-line binding of the shared pipeline with the strict flag.
133
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The mode changes only whether a failure is rethrown; nothing is silenced.
134
+ * @evidence contracts/common.md#meaningful-documentation The comment states the strict behavior, contrasts it with `validate`, and documents the parameter and the report.
84
135
  */
85
136
  DynamicExecutor.assert = (props) => main(true)(props);
86
137
  /**
87
138
  * Prepare dynamic executor in loose mode.
88
139
  *
89
- * In loose mode, the program would not be terminated even when error occurs.
90
- * Instead, the error would be archived and returns as a list. Otherwise,
91
- * {@link assert} mode terminates the program directly when error occurs.
140
+ * Loose mode records test failures and continues with subsequent tests.
141
+ * Discovery, import and completion-listener errors still reject the run.
142
+ * {@link assert} rejects on a test failure after active tasks settle.
143
+ *
144
+ * Processing cost: The shared executor discovers modules once, dispatches
145
+ * each queue index once and walks each admitted export; this entry only
146
+ * selects the failure policy.
147
+ *
148
+ * Reuse: Discovery and module loading are shared by the tests of one run. New
149
+ * runs rediscover files; Node owns module caching, so editing an already
150
+ * imported module does not promise reload in the same process.
151
+ *
152
+ * Resource ownership: One run owns the discovered module queue, visited
153
+ * directory set and report. At most the requested number of module tasks are
154
+ * active, all are awaited before success or strict rejection, and returned
155
+ * records transfer to the caller. Listener failure also settles workers;
156
+ * cancellation and unloading Node cached modules are not provided.
92
157
  *
93
158
  * @param props Properties of dynamic executor
94
159
  * @returns Report of dynamic test functions execution
160
+ * @evidence contracts/common.md#principled-implementation Loose mode records test errors and continues, returning them in execution records. Discovery, module import and completion-listener failures are outside that test-error policy and reject the run.
161
+ * @evidence contracts/common.md#clear-and-simple-design A one-line binding of the shared pipeline with the loose flag.
162
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts The mode changes only whether a failure is rethrown; the error stays in the report.
163
+ * @evidence contracts/common.md#meaningful-documentation The comment states the loose behavior, contrasts it with `assert`, and documents the parameter and the report.
95
164
  */
96
165
  DynamicExecutor.validate = (props) => main(false)(props);
97
166
  const main = (assert) => (props) => __awaiter(this, void 0, void 0, function* () {
@@ -112,12 +181,24 @@ var DynamicExecutor;
112
181
  filter: props.filter,
113
182
  executor,
114
183
  });
184
+ // A rejected task stops the dispatch of the remaining files, and the run
185
+ // settles only after the in-flight tasks end, so that no test keeps
186
+ // running after the caller has seen the failure.
187
+ let failure = null;
188
+ let next = 0;
115
189
  yield Promise.all(new Array(simultaneous).fill(0).map(() => __awaiter(this, void 0, void 0, function* () {
116
- while (processes.length !== 0) {
117
- const task = processes.shift();
118
- yield task === null || task === void 0 ? void 0 : task();
190
+ while (next < processes.length && failure === null) {
191
+ const task = processes[next++];
192
+ try {
193
+ yield task === null || task === void 0 ? void 0 : task();
194
+ }
195
+ catch (error) {
196
+ failure !== null && failure !== void 0 ? failure : (failure = { error });
197
+ }
119
198
  }
120
199
  })));
200
+ if (failure !== null)
201
+ throw failure.error;
121
202
  report.time = Date.now() - report.time;
122
203
  return report;
123
204
  });
@@ -143,15 +224,22 @@ var DynamicExecutor;
143
224
  typeof require === "function";
144
225
  const iterate = (props) => __awaiter(this, void 0, void 0, function* () {
145
226
  const container = [];
227
+ const visited = new Set();
146
228
  const visitor = (path) => __awaiter(this, void 0, void 0, function* () {
229
+ const identity = yield fs_1.default.promises.realpath(path);
230
+ if (visited.has(identity))
231
+ return;
232
+ visited.add(identity);
147
233
  const directory = yield fs_1.default.promises.readdir(path);
148
234
  for (const file of directory) {
149
235
  const location = path_1.default.resolve(`${path}/${file}`);
150
- const stats = yield fs_1.default.promises.lstat(location);
236
+ const stats = yield fs_1.default.promises.stat(location);
151
237
  if (stats.isDirectory() === true) {
152
238
  yield visitor(location);
153
239
  continue;
154
240
  }
241
+ if (stats.isFile() === false)
242
+ continue;
155
243
  // Compare the whole suffix. A fixed-width slice silently assumed a
156
244
  // two-character extension, so every longer one ("mjs", "cjs", "tsx")
157
245
  // matched nothing and the run reported success with no test executed.
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}