@acmekit/utils 2.13.35 → 2.13.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -20,6 +20,7 @@ export * from "./notification";
20
20
  export * from "./orchestration";
21
21
  export * from "./pg";
22
22
  export * from "./policies";
23
+ export * from "./routes";
23
24
  export * from "./search";
24
25
  export * from "./math";
25
26
  export * from "./translations";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,MAAM,CAAA;AACpB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AAEtB,eAAO,MAAM,iBAAiB,eAA8B,CAAA;AAC5D,eAAO,MAAM,yBAAyB,eAAsC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,MAAM,CAAA;AACpB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AAEtB,eAAO,MAAM,iBAAiB,eAA8B,CAAA;AAC5D,eAAO,MAAM,yBAAyB,eAAsC,CAAA"}
package/dist/index.js CHANGED
@@ -37,6 +37,7 @@ __exportStar(require("./notification"), exports);
37
37
  __exportStar(require("./orchestration"), exports);
38
38
  __exportStar(require("./pg"), exports);
39
39
  __exportStar(require("./policies"), exports);
40
+ __exportStar(require("./routes"), exports);
40
41
  __exportStar(require("./search"), exports);
41
42
  __exportStar(require("./math"), exports);
42
43
  __exportStar(require("./translations"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,4CAAyB;AACzB,yCAAsB;AACtB,4CAAyB;AACzB,4CAAyB;AACzB,2CAAwB;AACxB,+CAA4B;AAC5B,wCAAqB;AACrB,6CAA0B;AAC1B,+CAA4B;AAC5B,wCAAqB;AACrB,8CAA2B;AAC3B,+CAA4B;AAC5B,kDAA+B;AAC/B,yCAAsB;AACtB,4CAAyB;AACzB,yCAAsB;AACtB,gDAA6B;AAC7B,iDAA8B;AAC9B,kDAA+B;AAC/B,uCAAoB;AACpB,6CAA0B;AAC1B,2CAAwB;AACxB,yCAAsB;AACtB,iDAA8B;AAC9B,yCAAsB;AAET,QAAA,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC/C,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,4CAAyB;AACzB,yCAAsB;AACtB,4CAAyB;AACzB,4CAAyB;AACzB,2CAAwB;AACxB,+CAA4B;AAC5B,wCAAqB;AACrB,6CAA0B;AAC1B,+CAA4B;AAC5B,wCAAqB;AACrB,8CAA2B;AAC3B,+CAA4B;AAC5B,kDAA+B;AAC/B,yCAAsB;AACtB,4CAAyB;AACzB,yCAAsB;AACtB,gDAA6B;AAC7B,iDAA8B;AAC9B,kDAA+B;AAC/B,uCAAoB;AACpB,6CAA0B;AAC1B,2CAAwB;AACxB,2CAAwB;AACxB,yCAAsB;AACtB,iDAA8B;AAC9B,yCAAsB;AAET,QAAA,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC/C,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./routes-to-types";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./routes-to-types"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAiC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Scan route files in the given source directories, extract handler type
3
+ * annotations, and generate a `route-types.d.ts` declaration file that
4
+ * augments `@acmekit/js-sdk`'s `RouteRegistry`, `AdminPaths`, and
5
+ * `StorePaths` interfaces.
6
+ *
7
+ * Type extraction strategy:
8
+ * - Routes using `defineRouteConfig` → TypeScript compiler API extracts
9
+ * concrete output types from Zod schemas and emits them inline.
10
+ * - Routes using explicit `AcmeKitResponse<HttpTypes.X>` annotations →
11
+ * regex extracts the `HttpTypes.*` identifier.
12
+ *
13
+ * @param sourcePaths - Directories containing API route files
14
+ * @param options - Output configuration
15
+ */
16
+ export declare function generateRouteTypes(sourcePaths: string[], { outputDir }: {
17
+ outputDir: string;
18
+ }): Promise<void>;
19
+ //# sourceMappingURL=routes-to-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes-to-types.d.ts","sourceRoot":"","sources":["../../src/routes/routes-to-types.ts"],"names":[],"mappings":"AA2WA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EAAE,EACrB,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,IAAI,CAAC,CAqLf"}
@@ -0,0 +1,442 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRouteTypes = generateRouteTypes;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const file_system_1 = require("../common/file-system");
7
+ const read_dir_recursive_1 = require("../common/read-dir-recursive");
8
+ const HTTP_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE"];
9
+ // ---------------------------------------------------------------------------
10
+ // TypeScript Compiler API — lazy, optional
11
+ // ---------------------------------------------------------------------------
12
+ /**
13
+ * Lazily-resolved TypeScript compiler module.
14
+ * Using require() instead of a top-level import so that the module loads even
15
+ * when TypeScript is not installed (unlikely in a TS project, but safe).
16
+ */
17
+ function loadTs() {
18
+ try {
19
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
20
+ return require("typescript");
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ /**
27
+ * Create a TypeScript `Program` rooted at the nearest tsconfig.json found
28
+ * by walking up from `startDir`. Returns null if TypeScript is unavailable
29
+ * or no tsconfig is found.
30
+ */
31
+ function createTsProgram(startDir) {
32
+ const tsModule = loadTs();
33
+ if (!tsModule)
34
+ return null;
35
+ try {
36
+ const tsconfigPath = tsModule.findConfigFile(startDir, tsModule.sys.fileExists, "tsconfig.json");
37
+ if (!tsconfigPath)
38
+ return null;
39
+ const configFile = tsModule.readConfigFile(tsconfigPath, tsModule.sys.readFile);
40
+ if (configFile.error)
41
+ return null;
42
+ const parsed = tsModule.parseJsonConfigFileContent(configFile.config, tsModule.sys, (0, path_1.dirname)(tsconfigPath));
43
+ const program = tsModule.createProgram(parsed.fileNames, {
44
+ ...parsed.options,
45
+ noEmit: true,
46
+ });
47
+ const checker = program.getTypeChecker();
48
+ return { program, checker, ts: tsModule };
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ /**
55
+ * Traverse a chain of property accesses on a TypeScript `Type` object.
56
+ * Returns `null` if any property in the chain is missing.
57
+ */
58
+ function getNestedType(checker, type, keys) {
59
+ let current = type;
60
+ for (const key of keys) {
61
+ const prop = current.getProperty(key);
62
+ if (!prop)
63
+ return null;
64
+ current = checker.getTypeOfSymbol(prop);
65
+ }
66
+ return current;
67
+ }
68
+ /**
69
+ * Use the TypeScript compiler API to extract concrete output types for the
70
+ * `body`, `query`, and `response` fields of `config[method]` in a route file.
71
+ *
72
+ * Returns a map of field → TypeScript type string (e.g. `{ ok: true }`), or
73
+ * `null` when extraction is not possible.
74
+ */
75
+ function extractConfigTypes(ctx, filePath, method) {
76
+ const { program, checker, ts: tsModule } = ctx;
77
+ const sourceFile = program.getSourceFile(filePath);
78
+ if (!sourceFile)
79
+ return null;
80
+ for (const node of sourceFile.statements) {
81
+ if (!tsModule.isVariableStatement(node))
82
+ continue;
83
+ const isExported = node.modifiers?.some((m) => m.kind === tsModule.SyntaxKind.ExportKeyword);
84
+ if (!isExported)
85
+ continue;
86
+ for (const decl of node.declarationList.declarations) {
87
+ if (!tsModule.isIdentifier(decl.name) ||
88
+ decl.name.text !== "config")
89
+ continue;
90
+ const configType = checker.getTypeAtLocation(decl);
91
+ const result = {};
92
+ for (const field of ["body", "query", "response"]) {
93
+ const outputType = getNestedType(checker, configType, [
94
+ method,
95
+ field,
96
+ "_output",
97
+ ]);
98
+ if (outputType) {
99
+ result[field] = checker.typeToString(outputType, undefined,
100
+ // Prevent TypeScript from truncating long types to "..."
101
+ tsModule.TypeFormatFlags.NoTruncation);
102
+ }
103
+ }
104
+ // Only return if we extracted at least one field
105
+ if (Object.keys(result).length > 0)
106
+ return result;
107
+ }
108
+ }
109
+ return null;
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // File path utilities
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * Convert a filesystem route path to an Express-style route path.
116
+ *
117
+ * - `admin/users/route.ts` → `/admin/users`
118
+ * - `admin/users/[id]/route.ts` → `/admin/users/:id`
119
+ * - `admin/api-keys/[id]/revoke/route.ts` → `/admin/api-keys/:id/revoke`
120
+ */
121
+ function filePathToRoutePath(filePath) {
122
+ let routePath = filePath
123
+ .replace(/[/\\]route\.(d\.)?ts$/, "")
124
+ .replace(/\\/g, "/");
125
+ routePath = routePath.replace(/\[([^\]]+)\]/g, ":$1");
126
+ if (!routePath.startsWith("/")) {
127
+ routePath = "/" + routePath;
128
+ }
129
+ routePath = routePath.replace(/\/$/, "");
130
+ return routePath || "/";
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // Handler extraction (regex-based)
134
+ // ---------------------------------------------------------------------------
135
+ /**
136
+ * Extract handler type annotations from a route file's source text.
137
+ *
138
+ * Two extraction strategies:
139
+ * 1. **Config-driven** — handler uses `AcmeKitTypedResponse<typeof config, …>`.
140
+ * `usesConfigTypes = true`; concrete types come from the TS compiler API later.
141
+ * 2. **Annotation-driven** — handler uses explicit `AcmeKitResponse<HttpTypes.X>`.
142
+ * Types are extracted via regex now.
143
+ */
144
+ function extractHandlers(source, absoluteFilePath) {
145
+ const handlers = [];
146
+ // Collapse multi-line generic brackets into a single line for easier matching
147
+ const normalized = source.replace(/<([^>]*)>/g, (_, inner) => "<" + inner.replace(/\s+/g, " ").trim() + ">");
148
+ const handlerPattern = /export\s+(?:declare\s+)?(?:async\s+)?(?:const|function)\s+(GET|POST|PUT|PATCH|DELETE)\b/g;
149
+ let match;
150
+ while ((match = handlerPattern.exec(normalized)) !== null) {
151
+ const method = match[1];
152
+ const window = normalized.slice(match.index, match.index + 1000);
153
+ // Detect config-driven pattern
154
+ const usesConfigTypes = /AcmeKitTypedR(?:esponse|equest)<\s*typeof\s+config/.test(window) ||
155
+ /AuthenticatedAcmeKitTypedR(?:esponse|equest)<\s*typeof\s+config/.test(window);
156
+ if (usesConfigTypes) {
157
+ handlers.push({
158
+ method,
159
+ responseType: null,
160
+ inputType1: null,
161
+ inputType2: null,
162
+ usesConfigTypes: true,
163
+ absoluteFilePath,
164
+ });
165
+ }
166
+ else {
167
+ const responseType = extractResponseType(window);
168
+ const { type1, type2 } = extractRequestTypes(window);
169
+ handlers.push({
170
+ method,
171
+ responseType,
172
+ inputType1: type1,
173
+ inputType2: type2,
174
+ usesConfigTypes: false,
175
+ absoluteFilePath,
176
+ });
177
+ }
178
+ }
179
+ return handlers;
180
+ }
181
+ function extractResponseType(text) {
182
+ const pattern = /AcmeKitResponse<(HttpTypes\.\w+)>/;
183
+ const match = text.match(pattern);
184
+ return match ? match[1] : null;
185
+ }
186
+ function extractRequestTypes(text) {
187
+ const pattern = /(?:Authenticated)?AcmeKit(?:Request|ClientKeyRequest)<([\w.]+)(?:, ([\w.]+))?>/;
188
+ const match = text.match(pattern);
189
+ if (!match)
190
+ return { type1: null, type2: null };
191
+ const raw1 = match[1];
192
+ const raw2 = match[2] ?? null;
193
+ return {
194
+ type1: raw1?.startsWith("HttpTypes.") ? raw1 : null,
195
+ type2: raw2?.startsWith("HttpTypes.") ? raw2 : null,
196
+ };
197
+ }
198
+ // ---------------------------------------------------------------------------
199
+ // Method entry builder
200
+ // ---------------------------------------------------------------------------
201
+ /**
202
+ * Build the method entry string for a single handler.
203
+ *
204
+ * When `handler.usesConfigTypes` is true, `resolvedTypes` must be provided
205
+ * with the concrete TypeScript type strings extracted by the compiler API.
206
+ * These are emitted inline — no import references — so they resolve correctly
207
+ * in any TypeScript compilation context (frontend, backend, etc.).
208
+ *
209
+ * Falls back to `unknown` / `Record<string, any>` when resolution fails.
210
+ */
211
+ function buildMethodEntry(handler, resolvedTypes) {
212
+ const { method } = handler;
213
+ const fields = [];
214
+ if (handler.usesConfigTypes && resolvedTypes) {
215
+ if (method === "GET" || method === "DELETE") {
216
+ if (resolvedTypes.query) {
217
+ fields.push(`query: ${resolvedTypes.query}`);
218
+ }
219
+ }
220
+ else {
221
+ fields.push(`body: ${resolvedTypes.body ?? "Record<string, any>"}`);
222
+ if (resolvedTypes.query) {
223
+ fields.push(`query: ${resolvedTypes.query}`);
224
+ }
225
+ }
226
+ fields.push(`response: ${resolvedTypes.response ?? "unknown"}`);
227
+ }
228
+ else {
229
+ // Annotation-driven (or config-driven fallback when compiler API unavailable)
230
+ const { responseType, inputType1, inputType2 } = handler;
231
+ if (method === "GET" || method === "DELETE") {
232
+ if (inputType1)
233
+ fields.push(`query: ${inputType1}`);
234
+ }
235
+ else {
236
+ fields.push(`body: ${inputType1 ?? "Record<string, any>"}`);
237
+ if (inputType2)
238
+ fields.push(`query: ${inputType2}`);
239
+ }
240
+ fields.push(`response: ${responseType ?? "unknown"}`);
241
+ }
242
+ return `${method}: { ${fields.join("; ")} }`;
243
+ }
244
+ // ---------------------------------------------------------------------------
245
+ // Route file discovery
246
+ // ---------------------------------------------------------------------------
247
+ async function findRouteFiles(sourceDir) {
248
+ let entries;
249
+ try {
250
+ entries = await (0, read_dir_recursive_1.readDirRecursive)(sourceDir, { ignoreMissing: true });
251
+ }
252
+ catch {
253
+ return [];
254
+ }
255
+ const routeFiles = new Map();
256
+ for (const entry of entries) {
257
+ if (!entry.isFile())
258
+ continue;
259
+ const name = entry.name;
260
+ if (name !== "route.ts" && name !== "route.d.ts")
261
+ continue;
262
+ const dir = entry.path;
263
+ const fullPath = (0, path_1.join)(dir, name);
264
+ const relDir = (0, path_1.relative)(sourceDir, dir);
265
+ if (name === "route.ts") {
266
+ routeFiles.set(relDir, fullPath);
267
+ }
268
+ else if (!routeFiles.has(relDir)) {
269
+ routeFiles.set(relDir, fullPath);
270
+ }
271
+ }
272
+ return Array.from(routeFiles.values());
273
+ }
274
+ // ---------------------------------------------------------------------------
275
+ // Public API
276
+ // ---------------------------------------------------------------------------
277
+ /**
278
+ * Scan route files in the given source directories, extract handler type
279
+ * annotations, and generate a `route-types.d.ts` declaration file that
280
+ * augments `@acmekit/js-sdk`'s `RouteRegistry`, `AdminPaths`, and
281
+ * `StorePaths` interfaces.
282
+ *
283
+ * Type extraction strategy:
284
+ * - Routes using `defineRouteConfig` → TypeScript compiler API extracts
285
+ * concrete output types from Zod schemas and emits them inline.
286
+ * - Routes using explicit `AcmeKitResponse<HttpTypes.X>` annotations →
287
+ * regex extracts the `HttpTypes.*` identifier.
288
+ *
289
+ * @param sourcePaths - Directories containing API route files
290
+ * @param options - Output configuration
291
+ */
292
+ async function generateRouteTypes(sourcePaths, { outputDir }) {
293
+ const allRoutes = [];
294
+ for (const sourceDir of sourcePaths) {
295
+ const routeFiles = await findRouteFiles(sourceDir);
296
+ for (const filePath of routeFiles) {
297
+ const relPath = (0, path_1.relative)(sourceDir, filePath);
298
+ const routePath = filePathToRoutePath(relPath);
299
+ let source;
300
+ try {
301
+ source = await fs_1.promises.readFile(filePath, "utf-8");
302
+ }
303
+ catch {
304
+ continue;
305
+ }
306
+ const handlers = extractHandlers(source, filePath);
307
+ if (handlers.length === 0)
308
+ continue;
309
+ allRoutes.push({ path: routePath, handlers });
310
+ }
311
+ }
312
+ allRoutes.sort((a, b) => a.path.localeCompare(b.path));
313
+ // Deduplicate: later source dirs override earlier ones per-method.
314
+ // Each handler carries its own absoluteFilePath for per-method accuracy.
315
+ const routeMap = new Map();
316
+ for (const route of allRoutes) {
317
+ const existing = routeMap.get(route.path);
318
+ if (existing) {
319
+ const methodMap = new Map(existing.handlers.map((h) => [h.method, h]));
320
+ for (const handler of route.handlers) {
321
+ methodMap.set(handler.method, handler);
322
+ }
323
+ routeMap.set(route.path, {
324
+ path: route.path,
325
+ handlers: Array.from(methodMap.values()),
326
+ });
327
+ }
328
+ else {
329
+ routeMap.set(route.path, route);
330
+ }
331
+ }
332
+ const routes = Array.from(routeMap.values()).sort((a, b) => a.path.localeCompare(b.path));
333
+ if (routes.length === 0)
334
+ return;
335
+ // Create one TypeScript program for the whole project.
336
+ // Detect which source directories contain config-driven routes and search
337
+ // for the nearest tsconfig.json from there.
338
+ const hasConfigDrivenRoutes = routes.some((r) => r.handlers.some((h) => h.usesConfigTypes));
339
+ let tsCtx = null;
340
+ if (hasConfigDrivenRoutes && sourcePaths.length > 0) {
341
+ // Walk up from the first source dir to find the project tsconfig
342
+ tsCtx = createTsProgram(sourcePaths[0]);
343
+ }
344
+ // Pre-resolve config-driven types using the TypeScript compiler API.
345
+ // Key: `${absoluteFilePath}::${method}` → resolved field types
346
+ const resolvedConfigTypes = new Map();
347
+ if (tsCtx) {
348
+ for (const route of routes) {
349
+ for (const handler of route.handlers) {
350
+ if (!handler.usesConfigTypes)
351
+ continue;
352
+ const cacheKey = `${handler.absoluteFilePath}::${handler.method}`;
353
+ if (resolvedConfigTypes.has(cacheKey))
354
+ continue;
355
+ const extracted = extractConfigTypes(tsCtx, handler.absoluteFilePath, handler.method);
356
+ resolvedConfigTypes.set(cacheKey, extracted);
357
+ }
358
+ }
359
+ }
360
+ // Helper to retrieve pre-resolved types for a handler
361
+ const getResolved = (h) => resolvedConfigTypes.get(`${h.absoluteFilePath}::${h.method}`) ?? null;
362
+ // Build RouteRegistry entries
363
+ const routeEntries = routes.map((route) => {
364
+ const methods = route.handlers
365
+ .map((h) => ` ${buildMethodEntry(h, getResolved(h))}`)
366
+ .join("\n");
367
+ return ` "${route.path}": {\n${methods}\n }`;
368
+ });
369
+ // Build RoutePaths entries (path unions per prefix + method)
370
+ const prefixMap = new Map();
371
+ for (const route of routes) {
372
+ const parts = route.path.split("/").filter(Boolean);
373
+ if (parts.length === 0)
374
+ continue;
375
+ const prefix = "/" + parts[0];
376
+ const suffix = route.path.slice(prefix.length) || "/";
377
+ if (!prefixMap.has(prefix))
378
+ prefixMap.set(prefix, new Map());
379
+ const methodPaths = prefixMap.get(prefix);
380
+ for (const handler of route.handlers) {
381
+ const method = handler.method;
382
+ if (!methodPaths.has(method))
383
+ methodPaths.set(method, []);
384
+ methodPaths.get(method).push(suffix);
385
+ }
386
+ }
387
+ const routePathEntries = [];
388
+ for (const [prefix, methodPaths] of Array.from(prefixMap.entries()).sort((a, b) => a[0].localeCompare(b[0]))) {
389
+ const methods = [];
390
+ for (const [method, paths] of Array.from(methodPaths.entries()).sort((a, b) => a[0].localeCompare(b[0]))) {
391
+ const union = paths
392
+ .sort()
393
+ .map((p) => `"${p}"`)
394
+ .join(" | ");
395
+ methods.push(` ${method}: ${union}`);
396
+ }
397
+ routePathEntries.push(` "${prefix}": {\n${methods.join("\n")}\n }`);
398
+ }
399
+ // Build AdminPaths entries (without "/admin" prefix)
400
+ const adminPathEntries = [];
401
+ for (const route of routes) {
402
+ if (!route.path.startsWith("/admin/") && route.path !== "/admin")
403
+ continue;
404
+ const suffix = route.path.slice("/admin".length) || "/";
405
+ const methods = route.handlers
406
+ .map((h) => ` ${buildMethodEntry(h, getResolved(h))}`)
407
+ .join("\n");
408
+ adminPathEntries.push(` "${suffix}": {\n${methods}\n }`);
409
+ }
410
+ const adminPathsBlock = adminPathEntries.length > 0
411
+ ? `\n\n interface AdminPaths {\n${adminPathEntries.join("\n")}\n }`
412
+ : "";
413
+ // Build StorePaths entries (without "/client" prefix)
414
+ const storePathEntries = [];
415
+ for (const route of routes) {
416
+ if (!route.path.startsWith("/client/") && route.path !== "/client")
417
+ continue;
418
+ const suffix = route.path.slice("/client".length) || "/";
419
+ const methods = route.handlers
420
+ .map((h) => ` ${buildMethodEntry(h, getResolved(h))}`)
421
+ .join("\n");
422
+ storePathEntries.push(` "${suffix}": {\n${methods}\n }`);
423
+ }
424
+ const storePathsBlock = storePathEntries.length > 0
425
+ ? `\n\n interface StorePaths {\n${storePathEntries.join("\n")}\n }`
426
+ : "";
427
+ const fileContents = `import type { HttpTypes } from "@acmekit/framework/types"
428
+ import type {} from "@acmekit/js-sdk"
429
+
430
+ declare module "@acmekit/js-sdk" {
431
+ interface RouteRegistry {
432
+ ${routeEntries.join("\n")}
433
+ }
434
+
435
+ interface RoutePaths {
436
+ ${routePathEntries.join("\n")}
437
+ }${adminPathsBlock}${storePathsBlock}
438
+ }`;
439
+ const fileSystem = new file_system_1.FileSystem(outputDir);
440
+ await fileSystem.create("route-types.d.ts", fileContents);
441
+ }
442
+ //# sourceMappingURL=routes-to-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes-to-types.js","sourceRoot":"","sources":["../../src/routes/routes-to-types.ts"],"names":[],"mappings":";;AA0XA,gDAwLC;AAljBD,2BAAmC;AACnC,+BAA8C;AAE9C,uDAAkD;AAClD,qEAA+D;AAE/D,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAA;AAuBvE,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,MAAM;IACb,IAAI,CAAC;QACH,iEAAiE;QACjE,OAAO,OAAO,CAAC,YAAY,CAAc,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CACtB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAA;IACzB,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAC1C,QAAQ,EACR,QAAQ,CAAC,GAAG,CAAC,UAAU,EACvB,eAAe,CAChB,CAAA;QACD,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAA;QAE9B,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/E,IAAI,UAAU,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,0BAA0B,CAChD,UAAU,CAAC,MAAM,EACjB,QAAQ,CAAC,GAAG,EACZ,IAAA,cAAO,EAAC,YAAY,CAAC,CACtB,CAAA;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE;YACvD,GAAG,MAAM,CAAC,OAAO;YACjB,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAA;QACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,OAAuB,EACvB,IAAa,EACb,IAAc;IAEd,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAID;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,GAAuB,EACvB,QAAgB,EAChB,MAAc;IAEd,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;IAE9C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAClD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAE5B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,SAAQ;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,aAAa,CACpD,CAAA;QACD,IAAI,CAAC,UAAU;YAAE,SAAQ;QAEzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACrD,IACE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAE3B,SAAQ;YAEV,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;YAClD,MAAM,MAAM,GAAyD,EAAE,CAAA;YAEvE,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAU,EAAE,CAAC;gBAC3D,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE;oBACpD,MAAM;oBACN,KAAK;oBACL,SAAS;iBACV,CAAC,CAAA;gBACF,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,YAAY,CAClC,UAAU,EACV,SAAS;oBACT,yDAAyD;oBACzD,QAAQ,CAAC,eAAe,CAAC,YAAY,CACtC,CAAA;gBACH,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAA;QACnD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,SAAS,GAAG,QAAQ;SACrB,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAEtB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;IAErD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,SAAS,GAAG,GAAG,GAAG,SAAS,CAAA;IAC7B,CAAC;IACD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAExC,OAAO,SAAS,IAAI,GAAG,CAAA;AACzB,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAS,eAAe,CACtB,MAAc,EACd,gBAAwB;IAExB,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAElC,8EAA8E;IAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAC/B,YAAY,EACZ,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAC5D,CAAA;IAED,MAAM,cAAc,GAClB,0FAA0F,CAAA;IAE5F,IAAI,KAA6B,CAAA;IACjC,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAe,CAAA;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAEhE,+BAA+B;QAC/B,MAAM,eAAe,GACnB,oDAAoD,CAAC,IAAI,CAAC,MAAM,CAAC;YACjE,iEAAiE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEhF,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM;gBACN,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,IAAI;gBACrB,gBAAgB;aACjB,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;YAChD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;YACpD,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM;gBACN,YAAY;gBACZ,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;gBACjB,eAAe,EAAE,KAAK;gBACtB,gBAAgB;aACjB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,mCAAmC,CAAA;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IAIvC,MAAM,OAAO,GACX,gFAAgF,CAAA;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAC7B,OAAO;QACL,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACnD,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;KACpD,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CACvB,OAAoB,EACpB,aAA0E;IAE1E,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,IAAI,OAAO,CAAC,eAAe,IAAI,aAAa,EAAE,CAAC;QAC7C,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC,CAAA;YACnE,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,aAAa,aAAa,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAA;IACjE,CAAC;SAAM,CAAC;QACN,8EAA8E;QAC9E,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAExD,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,IAAI,UAAU;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAA;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,IAAI,qBAAqB,EAAE,CAAC,CAAA;YAC3D,IAAI,UAAU;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,aAAa,YAAY,IAAI,SAAS,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,GAAG,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,IAAA,qCAAgB,EAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAQ;QAE7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QACvB,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,YAAY;YAAE,SAAQ;QAE1D,MAAM,GAAG,GAAI,KAAa,CAAC,IAAc,CAAA;QACzC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,IAAA,eAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAEvC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClC,CAAC;aAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;AACxC,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,kBAAkB,CACtC,WAAqB,EACrB,EAAE,SAAS,EAAyB;IAEpC,MAAM,SAAS,GAAiB,EAAE,CAAA;IAElC,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAA;QAElD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAA,eAAQ,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC7C,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,MAAc,CAAA;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAEnC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtD,mEAAmE;IACnE,yEAAyE;IACzE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAA;IAC9C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACtE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACxC,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;gBACvB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aACzC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAC7B,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE/B,uDAAuD;IACvD,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAC1C,CAAA;IAED,IAAI,KAAK,GAAU,IAAI,CAAA;IACvB,IAAI,qBAAqB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,iEAAiE;QACjE,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,qEAAqE;IACrE,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAGhC,CAAA;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,eAAe;oBAAE,SAAQ;gBACtC,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,gBAAgB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAA;gBACjE,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAQ;gBAC/C,MAAM,SAAS,GAAG,kBAAkB,CAClC,KAAK,EACL,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,MAAM,WAAW,GAAG,CAAC,CAAc,EAAE,EAAE,CACrC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,gBAAgB,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAA;IAEvE,8BAA8B;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,QAAQ,KAAK,CAAC,IAAI,SAAS,OAAO,SAAS,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,6DAA6D;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAA;IAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAChC,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;QAErD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAE1C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACzD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAa,EAAE,CAAA;IACrC,KAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACtE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,EAAE,CAAC;QACF,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAClE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,EAAE,CAAC;YACF,MAAM,KAAK,GAAG,KAAK;iBAChB,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;iBACpB,IAAI,CAAC,KAAK,CAAC,CAAA;YACd,OAAO,CAAC,IAAI,CAAC,SAAS,MAAM,KAAK,KAAK,EAAE,CAAC,CAAA;QAC3C,CAAC;QACD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC3E,CAAC;IAED,qDAAqD;IACrD,MAAM,gBAAgB,GAAa,EAAE,CAAA;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,gBAAgB,CAAC,IAAI,CAAC,QAAQ,MAAM,SAAS,OAAO,SAAS,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,eAAe,GACnB,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,iCAAiC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;QACrE,CAAC,CAAC,EAAE,CAAA;IAER,sDAAsD;IACtD,MAAM,gBAAgB,GAAa,EAAE,CAAA;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAQ;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1D,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,gBAAgB,CAAC,IAAI,CAAC,QAAQ,MAAM,SAAS,OAAO,SAAS,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,eAAe,GACnB,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,iCAAiC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;QACrE,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,YAAY,GAAG;;;;;EAKrB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIvB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;KACxB,eAAe,GAAG,eAAe;EACpC,CAAA;IAEA,MAAM,UAAU,GAAG,IAAI,wBAAU,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"root":["../src/bundles.ts","../src/index.ts","../src/analytics/abstract-analytics-provider.ts","../src/analytics/index.ts","../src/api-key/api-key-type.ts","../src/api-key/index.ts","../src/auth/abstract-auth-provider.ts","../src/auth/index.ts","../src/auth/token.ts","../src/caching/index.ts","../src/common/acmekit-container.ts","../src/common/alter-columns-helper.ts","../src/common/array-difference.ts","../src/common/array-intersection.ts","../src/common/build-query.ts","../src/common/build-regexp-if-valid.ts","../src/common/camel-to-snake-case.ts","../src/common/compress-name.ts","../src/common/container.ts","../src/common/convert-item-response-to-update-request.ts","../src/common/create-container-like.ts","../src/common/create-psql-index-helper.ts","../src/common/deduplicate.ts","../src/common/deep-copy.ts","../src/common/deep-equal-obj.ts","../src/common/deep-flat-map.ts","../src/common/deep-merge.ts","../src/common/define-config.ts","../src/common/define-file-config.ts","../src/common/dynamic-import.ts","../src/common/env-editor.ts","../src/common/errors.ts","../src/common/execute-with-concurrency.ts","../src/common/file-system.ts","../src/common/filter-object-by-keys.ts","../src/common/filter-operator-map.ts","../src/common/flatten-object-to-key-value-pairs.ts","../src/common/generate-entity-id.ts","../src/common/get-caller-file-path.ts","../src/common/get-config-file.ts","../src/common/get-duplicates.ts","../src/common/get-iso-string-from-date.ts","../src/common/get-node-version.ts","../src/common/get-resolved-plugins.ts","../src/common/get-selects-and-relations-from-object-array.ts","../src/common/get-set-difference.ts","../src/common/graceful-shutdown-server.ts","../src/common/group-by.ts","../src/common/handle-postgres-database-error.ts","../src/common/index.ts","../src/common/is-big-number.ts","../src/common/is-boolean.ts","../src/common/is-date.ts","../src/common/is-defined.ts","../src/common/is-email.ts","../src/common/is-error-like.ts","../src/common/is-object.ts","../src/common/is-present.ts","../src/common/is-string.ts","../src/common/is-truthy.ts","../src/common/load-env.ts","../src/common/lower-case-first.ts","../src/common/map-object-to.ts","../src/common/merge-metadata.ts","../src/common/merge-plugin-modules.ts","../src/common/normalize-csv-value.ts","../src/common/normalize-import-path-with-source.ts","../src/common/normalize-locale.ts","../src/common/object-from-string-path.ts","../src/common/object-to-string-path.ts","../src/common/omit-deep.ts","../src/common/optional-numeric-serializer.ts","../src/common/parse-cors-origins.ts","../src/common/parse-stringify-if-necessary.ts","../src/common/partition-array.ts","../src/common/pick-deep.ts","../src/common/pick-value-from-object.ts","../src/common/plurailze.ts","../src/common/prefix-array-items.ts","../src/common/promise-all.ts","../src/common/read-dir-recursive.ts","../src/common/remote-query-object-from-string.ts","../src/common/remote-query-object-to-string.ts","../src/common/remove-nullisih.ts","../src/common/remove-undefined-properties.ts","../src/common/remove-undefined.ts","../src/common/resolve-exports.ts","../src/common/retry-execution.ts","../src/common/rules.ts","../src/common/selector-constraints-to-string.ts","../src/common/serialize-error.ts","../src/common/simple-hash.ts","../src/common/string-to-select-relation-object.ts","../src/common/stringify-circular.ts","../src/common/to-camel-case.ts","../src/common/to-handle.ts","../src/common/to-kebab-case.ts","../src/common/to-pascal-case.ts","../src/common/to-snake-case.ts","../src/common/to-unix-slash.ts","../src/common/trim-zeros.ts","../src/common/try-convert-to-boolean.ts","../src/common/try-convert-to-number.ts","../src/common/unflatten-object-keys.ts","../src/common/upper-case-first.ts","../src/common/validate-handle.ts","../src/common/validate-module-name.ts","../src/common/wrap-handler.ts","../src/common/__fixtures__/define-config/github/index.ts","../src/common/__tests__/array-intersection.spec.ts","../src/common/__tests__/build-query.spec.ts","../src/common/__tests__/build-regexp-if-valid.spec.ts","../src/common/__tests__/compress-name.spec.ts","../src/common/__tests__/convert-item-response-to-update-request.ts","../src/common/__tests__/create-psql-index-helper.spec.ts","../src/common/__tests__/deep-copy.spec.ts","../src/common/__tests__/deep-equal-obj.spec.ts","../src/common/__tests__/deep-flat-map.ts","../src/common/__tests__/deep-merge.ts","../src/common/__tests__/define-config.spec.ts","../src/common/__tests__/env-editor.spec.ts","../src/common/__tests__/filter-object-by-keys.spec.ts","../src/common/__tests__/flatten-object-to-key-value-pairs.spec.ts","../src/common/__tests__/get-duplicates.spec.ts","../src/common/__tests__/get-resolved-plugins.spec.ts","../src/common/__tests__/get-selects-and-relations-from-object-array.spec.ts","../src/common/__tests__/graceful-shutdown-server.ts","../src/common/__tests__/group-by.spec.ts","../src/common/__tests__/handle-postgres-database-error.spec.ts","../src/common/__tests__/is-email.spec.ts","../src/common/__tests__/is-present.spec.ts","../src/common/__tests__/is-valid-handle.spec.ts","../src/common/__tests__/load-env.spec.ts","../src/common/__tests__/map-object-to.ts","../src/common/__tests__/merge-metadata.spec.ts","../src/common/__tests__/normalize-locale.spec.ts","../src/common/__tests__/object-to-string-path.spec.ts","../src/common/__tests__/omit-deep.spec.ts","../src/common/__tests__/parse-cors-origins.spec.ts","../src/common/__tests__/partition-array.spec.ts","../src/common/__tests__/pick-value-from-object.spec.ts","../src/common/__tests__/pluralize.spec.ts","../src/common/__tests__/promise-all.spec.ts","../src/common/__tests__/read-dir-recursive.spec.ts","../src/common/__tests__/remote-query-object-from-string.spec.ts","../src/common/__tests__/remote-query-object-to-string.spec.ts","../src/common/__tests__/remove-undefined-properties.spec.ts","../src/common/__tests__/remove-undefined.spec.ts","../src/common/__tests__/retry-execution.spec.ts","../src/common/__tests__/string-to-select-relation-object.ts","../src/common/__tests__/to-camel-case.spec.ts","../src/common/__tests__/to-handle.spec.ts","../src/common/__tests__/transform-modules.spec.ts","../src/common/__tests__/unflatten-object-keys.spec.ts","../src/common/__tests__/upper-case-first.spec.ts","../src/common/__tests__/validate-module-name.spec.ts","../src/core-flows/events.ts","../src/core-flows/index.ts","../src/dal/index.ts","../src/dal/utils.ts","../src/dal/mikro-orm/base-entity.ts","../src/dal/mikro-orm/big-number-field.ts","../src/dal/mikro-orm/custom-db-migrator.ts","../src/dal/mikro-orm/db-error-mapper.ts","../src/dal/mikro-orm/mikro-orm-create-connection.ts","../src/dal/mikro-orm/mikro-orm-free-text-search-filter.ts","../src/dal/mikro-orm/mikro-orm-repository.ts","../src/dal/mikro-orm/mikro-orm-serializer-old.ts","../src/dal/mikro-orm/mikro-orm-serializer.ts","../src/dal/mikro-orm/mikro-orm-soft-deletable-filter.ts","../src/dal/mikro-orm/utils.ts","../src/dal/mikro-orm/__fixtures__/utils.ts","../src/dal/mikro-orm/__tests__/base-entity.spec.ts","../src/dal/mikro-orm/__tests__/big-number-field.spec.ts","../src/dal/mikro-orm/__tests__/mikro-orm-free-text-search-filter.spec.ts","../src/dal/mikro-orm/__tests__/mikro-orm-serializer.spec.ts","../src/dal/mikro-orm/__tests__/ts-migration-generator.spec.ts","../src/dal/mikro-orm/decorators/foreign-key.ts","../src/dal/mikro-orm/decorators/searchable.ts","../src/dal/mikro-orm/integration-tests/__fixtures__/database.ts","../src/dal/mikro-orm/integration-tests/__fixtures__/utils.ts","../src/dal/mikro-orm/integration-tests/__tests__/mikro-orm-repository.spec.ts","../src/dal/mikro-orm/integration-tests/__tests__/utils.spec.ts","../src/defaults/countries.ts","../src/defaults/currencies.ts","../src/defaults/index.ts","../src/dev-server/index.ts","../src/dev-server/registry-helpers.ts","../src/dev-server/types.ts","../src/dev-server/handlers/job-handler.ts","../src/dev-server/handlers/step-handler.ts","../src/dev-server/handlers/subscriber-handler.ts","../src/dev-server/handlers/workflow-handler.ts","../src/dml/entity-builder.ts","../src/dml/entity.ts","../src/dml/errors.ts","../src/dml/index.ts","../src/dml/__tests__/array-property.spec.ts","../src/dml/__tests__/autoincrement-property.spec.ts","../src/dml/__tests__/base-property.spec.ts","../src/dml/__tests__/base-relationship.spec.ts","../src/dml/__tests__/big-number-property.spec.ts","../src/dml/__tests__/boolean-property.spec.ts","../src/dml/__tests__/create-graphql.spec.ts","../src/dml/__tests__/date-time-property.spec.ts","../src/dml/__tests__/entity-builder.spec.ts","../src/dml/__tests__/enum-schema.spec.ts","../src/dml/__tests__/float-property.spec.ts","../src/dml/__tests__/has-many-relationship.spec.ts","../src/dml/__tests__/has-one-relationship.spec.ts","../src/dml/__tests__/id-property.spec.ts","../src/dml/__tests__/json-property.spec.ts","../src/dml/__tests__/many-to-many.spec.ts","../src/dml/__tests__/number-property.spec.ts","../src/dml/__tests__/text-property.spec.ts","../src/dml/helpers/create-graphql.ts","../src/dml/helpers/create-mikro-orm-entity.ts","../src/dml/helpers/entity-builder/apply-searchable.ts","../src/dml/helpers/entity-builder/build-indexes.ts","../src/dml/helpers/entity-builder/create-big-number-properties.ts","../src/dml/helpers/entity-builder/create-default-properties.ts","../src/dml/helpers/entity-builder/define-property.ts","../src/dml/helpers/entity-builder/define-relationship.ts","../src/dml/helpers/entity-builder/index.ts","../src/dml/helpers/entity-builder/parse-entity-name.ts","../src/dml/helpers/entity-builder/query-builder.ts","../src/dml/helpers/entity-builder/relationship-helpers.ts","../src/dml/helpers/graphql-builder/get-attribute.ts","../src/dml/helpers/graphql-builder/set-relationship.ts","../src/dml/helpers/mikro-orm/apply-checks.ts","../src/dml/helpers/mikro-orm/apply-indexes.ts","../src/dml/helpers/mikro-orm/build-indexes.ts","../src/dml/integration-tests/utils.ts","../src/dml/integration-tests/__tests__/entity.spec.ts","../src/dml/integration-tests/__tests__/enum.spec.ts","../src/dml/integration-tests/__tests__/has-one-belongs-to.spec.ts","../src/dml/integration-tests/__tests__/many-to-many.spec.ts","../src/dml/integration-tests/__tests__/many-to-one.spec.ts","../src/dml/integration-tests/__tests__/translatable.spec.ts","../src/dml/properties/array.ts","../src/dml/properties/autoincrement.ts","../src/dml/properties/base.ts","../src/dml/properties/big-number.ts","../src/dml/properties/boolean.ts","../src/dml/properties/computed.ts","../src/dml/properties/date-time.ts","../src/dml/properties/enum.ts","../src/dml/properties/float.ts","../src/dml/properties/id.ts","../src/dml/properties/index.ts","../src/dml/properties/json.ts","../src/dml/properties/nullable.ts","../src/dml/properties/number.ts","../src/dml/properties/primary-key.ts","../src/dml/properties/text.ts","../src/dml/relations/base.ts","../src/dml/relations/belongs-to.ts","../src/dml/relations/has-many.ts","../src/dml/relations/has-one-fk.ts","../src/dml/relations/has-one.ts","../src/dml/relations/index.ts","../src/dml/relations/many-to-many.ts","../src/dml/relations/nullable.ts","../src/event-bus/build-event-messages.ts","../src/event-bus/common-events.ts","../src/event-bus/index.ts","../src/event-bus/message-aggregator.ts","../src/event-bus/utils.ts","../src/event-bus/__tests__/abstract-event-bus-module.spec.ts","../src/event-bus/__tests__/build-event-names-from-entity-name.spec.ts","../src/event-bus/__tests__/message-aggregator.spec.ts","../src/exceptions/index.ts","../src/exceptions/is-duplicate-error.ts","../src/exceptions/postgres-error.ts","../src/feature-flags/discover-and-register-feature-flags.ts","../src/feature-flags/discover-feature-flags.ts","../src/feature-flags/flag-router.ts","../src/feature-flags/index.ts","../src/feature-flags/register-flag.ts","../src/file/abstract-file-provider.ts","../src/file/index.ts","../src/graphql/clean-graphql.ts","../src/graphql/extract-relations-from-graphql.ts","../src/graphql/get-fields-and-relations.ts","../src/graphql/graphql-parser.ts","../src/graphql/graphql-to-fields.ts","../src/graphql/graphql-to-ts-types.ts","../src/graphql/index.ts","../src/graphql/__tests__/clean-graphql-schema.spec.ts","../src/graphql/__tests__/gql-schema-to-types.spec.ts","../src/graphql/__tests__/graphql-ast.ts","../src/graphql/__tests__/utils/gql-get-fields-and-relations.spec.ts","../src/graphql/__tests__/utils/graphql-schema-to-fields.ts","../src/link/compose-link-name.ts","../src/link/index.ts","../src/link/links.ts","../src/math/big-number.ts","../src/math/index.ts","../src/migrations/index.ts","../src/migrations/integration-tests/__tests__/migrations-generate.spec.ts","../src/migrations/integration-tests/__tests__/migrations-revert.spec.ts","../src/migrations/integration-tests/__tests__/migrations-run.spec.ts","../src/modules-sdk/acmekit-internal-service.ts","../src/modules-sdk/acmekit-service.ts","../src/modules-sdk/build-query.ts","../src/modules-sdk/create-acmekit-mikro-orm-event-subscriber.ts","../src/modules-sdk/create-pg-connection.ts","../src/modules-sdk/define-link.ts","../src/modules-sdk/define-policies.ts","../src/modules-sdk/definition.ts","../src/modules-sdk/event-builder-factory.ts","../src/modules-sdk/index.ts","../src/modules-sdk/joiner-config-builder.ts","../src/modules-sdk/load-module-database-config.ts","../src/modules-sdk/mikro-orm-cli-config-builder.ts","../src/modules-sdk/module-provider-registration-key.ts","../src/modules-sdk/module-provider.ts","../src/modules-sdk/module.ts","../src/modules-sdk/modules-to-container-types.ts","../src/modules-sdk/policy-to-types.ts","../src/modules-sdk/query-context.ts","../src/modules-sdk/__fixtures__/joiner-config/entities.ts","../src/modules-sdk/__tests__/acmekit-internal-service.ts","../src/modules-sdk/__tests__/acmekit-service-typings.spec.ts","../src/modules-sdk/__tests__/acmekit-service.spec.ts","../src/modules-sdk/__tests__/build-query.spec.ts","../src/modules-sdk/__tests__/joiner-config-builder.spec.ts","../src/modules-sdk/__tests__/load-database-config.spec.ts","../src/modules-sdk/__tests__/mikro-orm-cli-config-builder.spec.ts","../src/modules-sdk/__tests__/modules-to-container-types.spec.ts","../src/modules-sdk/decorators/context-parameter.ts","../src/modules-sdk/decorators/emit-events.ts","../src/modules-sdk/decorators/index.ts","../src/modules-sdk/decorators/inject-into-context.ts","../src/modules-sdk/decorators/inject-manager.ts","../src/modules-sdk/decorators/inject-shared-context.ts","../src/modules-sdk/decorators/inject-transaction-manager.ts","../src/modules-sdk/decorators/module.ts","../src/modules-sdk/decorators/__tests__/emit-events.ts","../src/modules-sdk/loaders/container-loader-factory.ts","../src/modules-sdk/loaders/load-models.ts","../src/modules-sdk/loaders/mikro-orm-connection-loader-factory.ts","../src/modules-sdk/loaders/mikro-orm-connection-loader.ts","../src/modules-sdk/migration-scripts/index.ts","../src/modules-sdk/migration-scripts/migration-down.ts","../src/modules-sdk/migration-scripts/migration-generate.ts","../src/modules-sdk/migration-scripts/migration-up.ts","../src/modules-sdk/migration-scripts/seed.ts","../src/modules-sdk/types/acmekit-service.ts","../src/modules-sdk/types/links-config.ts","../src/notification/abstract-notification-provider.ts","../src/notification/common.ts","../src/notification/events.ts","../src/notification/index.ts","../src/orchestration/index.ts","../src/orchestration/symbol.ts","../src/orchestration/types.ts","../src/pg/index.ts","../src/pg/integration-tests/__tests__/pg_utils.spec.ts","../src/policies/discover-policies.ts","../src/policies/index.ts","../src/search/abstract-service.ts","../src/search/index-types.ts","../src/search/index.ts","../src/search/search-relations.ts","../src/search/variant-keys.ts","../src/translations/apply-translations.ts","../src/translations/index.ts","../src/translations/__tests__/apply-translations.spec.ts","../src/user/events.ts","../src/user/index.ts"],"version":"5.9.3"}
1
+ {"root":["../src/bundles.ts","../src/index.ts","../src/analytics/abstract-analytics-provider.ts","../src/analytics/index.ts","../src/api-key/api-key-type.ts","../src/api-key/index.ts","../src/auth/abstract-auth-provider.ts","../src/auth/index.ts","../src/auth/token.ts","../src/caching/index.ts","../src/common/acmekit-container.ts","../src/common/alter-columns-helper.ts","../src/common/array-difference.ts","../src/common/array-intersection.ts","../src/common/build-query.ts","../src/common/build-regexp-if-valid.ts","../src/common/camel-to-snake-case.ts","../src/common/compress-name.ts","../src/common/container.ts","../src/common/convert-item-response-to-update-request.ts","../src/common/create-container-like.ts","../src/common/create-psql-index-helper.ts","../src/common/deduplicate.ts","../src/common/deep-copy.ts","../src/common/deep-equal-obj.ts","../src/common/deep-flat-map.ts","../src/common/deep-merge.ts","../src/common/define-config.ts","../src/common/define-file-config.ts","../src/common/dynamic-import.ts","../src/common/env-editor.ts","../src/common/errors.ts","../src/common/execute-with-concurrency.ts","../src/common/file-system.ts","../src/common/filter-object-by-keys.ts","../src/common/filter-operator-map.ts","../src/common/flatten-object-to-key-value-pairs.ts","../src/common/generate-entity-id.ts","../src/common/get-caller-file-path.ts","../src/common/get-config-file.ts","../src/common/get-duplicates.ts","../src/common/get-iso-string-from-date.ts","../src/common/get-node-version.ts","../src/common/get-resolved-plugins.ts","../src/common/get-selects-and-relations-from-object-array.ts","../src/common/get-set-difference.ts","../src/common/graceful-shutdown-server.ts","../src/common/group-by.ts","../src/common/handle-postgres-database-error.ts","../src/common/index.ts","../src/common/is-big-number.ts","../src/common/is-boolean.ts","../src/common/is-date.ts","../src/common/is-defined.ts","../src/common/is-email.ts","../src/common/is-error-like.ts","../src/common/is-object.ts","../src/common/is-present.ts","../src/common/is-string.ts","../src/common/is-truthy.ts","../src/common/load-env.ts","../src/common/lower-case-first.ts","../src/common/map-object-to.ts","../src/common/merge-metadata.ts","../src/common/merge-plugin-modules.ts","../src/common/normalize-csv-value.ts","../src/common/normalize-import-path-with-source.ts","../src/common/normalize-locale.ts","../src/common/object-from-string-path.ts","../src/common/object-to-string-path.ts","../src/common/omit-deep.ts","../src/common/optional-numeric-serializer.ts","../src/common/parse-cors-origins.ts","../src/common/parse-stringify-if-necessary.ts","../src/common/partition-array.ts","../src/common/pick-deep.ts","../src/common/pick-value-from-object.ts","../src/common/plurailze.ts","../src/common/prefix-array-items.ts","../src/common/promise-all.ts","../src/common/read-dir-recursive.ts","../src/common/remote-query-object-from-string.ts","../src/common/remote-query-object-to-string.ts","../src/common/remove-nullisih.ts","../src/common/remove-undefined-properties.ts","../src/common/remove-undefined.ts","../src/common/resolve-exports.ts","../src/common/retry-execution.ts","../src/common/rules.ts","../src/common/selector-constraints-to-string.ts","../src/common/serialize-error.ts","../src/common/simple-hash.ts","../src/common/string-to-select-relation-object.ts","../src/common/stringify-circular.ts","../src/common/to-camel-case.ts","../src/common/to-handle.ts","../src/common/to-kebab-case.ts","../src/common/to-pascal-case.ts","../src/common/to-snake-case.ts","../src/common/to-unix-slash.ts","../src/common/trim-zeros.ts","../src/common/try-convert-to-boolean.ts","../src/common/try-convert-to-number.ts","../src/common/unflatten-object-keys.ts","../src/common/upper-case-first.ts","../src/common/validate-handle.ts","../src/common/validate-module-name.ts","../src/common/wrap-handler.ts","../src/common/__fixtures__/define-config/github/index.ts","../src/common/__tests__/array-intersection.spec.ts","../src/common/__tests__/build-query.spec.ts","../src/common/__tests__/build-regexp-if-valid.spec.ts","../src/common/__tests__/compress-name.spec.ts","../src/common/__tests__/convert-item-response-to-update-request.ts","../src/common/__tests__/create-psql-index-helper.spec.ts","../src/common/__tests__/deep-copy.spec.ts","../src/common/__tests__/deep-equal-obj.spec.ts","../src/common/__tests__/deep-flat-map.ts","../src/common/__tests__/deep-merge.ts","../src/common/__tests__/define-config.spec.ts","../src/common/__tests__/env-editor.spec.ts","../src/common/__tests__/filter-object-by-keys.spec.ts","../src/common/__tests__/flatten-object-to-key-value-pairs.spec.ts","../src/common/__tests__/get-duplicates.spec.ts","../src/common/__tests__/get-resolved-plugins.spec.ts","../src/common/__tests__/get-selects-and-relations-from-object-array.spec.ts","../src/common/__tests__/graceful-shutdown-server.ts","../src/common/__tests__/group-by.spec.ts","../src/common/__tests__/handle-postgres-database-error.spec.ts","../src/common/__tests__/is-email.spec.ts","../src/common/__tests__/is-present.spec.ts","../src/common/__tests__/is-valid-handle.spec.ts","../src/common/__tests__/load-env.spec.ts","../src/common/__tests__/map-object-to.ts","../src/common/__tests__/merge-metadata.spec.ts","../src/common/__tests__/normalize-locale.spec.ts","../src/common/__tests__/object-to-string-path.spec.ts","../src/common/__tests__/omit-deep.spec.ts","../src/common/__tests__/parse-cors-origins.spec.ts","../src/common/__tests__/partition-array.spec.ts","../src/common/__tests__/pick-value-from-object.spec.ts","../src/common/__tests__/pluralize.spec.ts","../src/common/__tests__/promise-all.spec.ts","../src/common/__tests__/read-dir-recursive.spec.ts","../src/common/__tests__/remote-query-object-from-string.spec.ts","../src/common/__tests__/remote-query-object-to-string.spec.ts","../src/common/__tests__/remove-undefined-properties.spec.ts","../src/common/__tests__/remove-undefined.spec.ts","../src/common/__tests__/retry-execution.spec.ts","../src/common/__tests__/string-to-select-relation-object.ts","../src/common/__tests__/to-camel-case.spec.ts","../src/common/__tests__/to-handle.spec.ts","../src/common/__tests__/transform-modules.spec.ts","../src/common/__tests__/unflatten-object-keys.spec.ts","../src/common/__tests__/upper-case-first.spec.ts","../src/common/__tests__/validate-module-name.spec.ts","../src/core-flows/events.ts","../src/core-flows/index.ts","../src/dal/index.ts","../src/dal/utils.ts","../src/dal/mikro-orm/base-entity.ts","../src/dal/mikro-orm/big-number-field.ts","../src/dal/mikro-orm/custom-db-migrator.ts","../src/dal/mikro-orm/db-error-mapper.ts","../src/dal/mikro-orm/mikro-orm-create-connection.ts","../src/dal/mikro-orm/mikro-orm-free-text-search-filter.ts","../src/dal/mikro-orm/mikro-orm-repository.ts","../src/dal/mikro-orm/mikro-orm-serializer-old.ts","../src/dal/mikro-orm/mikro-orm-serializer.ts","../src/dal/mikro-orm/mikro-orm-soft-deletable-filter.ts","../src/dal/mikro-orm/utils.ts","../src/dal/mikro-orm/__fixtures__/utils.ts","../src/dal/mikro-orm/__tests__/base-entity.spec.ts","../src/dal/mikro-orm/__tests__/big-number-field.spec.ts","../src/dal/mikro-orm/__tests__/mikro-orm-free-text-search-filter.spec.ts","../src/dal/mikro-orm/__tests__/mikro-orm-serializer.spec.ts","../src/dal/mikro-orm/__tests__/ts-migration-generator.spec.ts","../src/dal/mikro-orm/decorators/foreign-key.ts","../src/dal/mikro-orm/decorators/searchable.ts","../src/dal/mikro-orm/integration-tests/__fixtures__/database.ts","../src/dal/mikro-orm/integration-tests/__fixtures__/utils.ts","../src/dal/mikro-orm/integration-tests/__tests__/mikro-orm-repository.spec.ts","../src/dal/mikro-orm/integration-tests/__tests__/utils.spec.ts","../src/defaults/countries.ts","../src/defaults/currencies.ts","../src/defaults/index.ts","../src/dev-server/index.ts","../src/dev-server/registry-helpers.ts","../src/dev-server/types.ts","../src/dev-server/handlers/job-handler.ts","../src/dev-server/handlers/step-handler.ts","../src/dev-server/handlers/subscriber-handler.ts","../src/dev-server/handlers/workflow-handler.ts","../src/dml/entity-builder.ts","../src/dml/entity.ts","../src/dml/errors.ts","../src/dml/index.ts","../src/dml/__tests__/array-property.spec.ts","../src/dml/__tests__/autoincrement-property.spec.ts","../src/dml/__tests__/base-property.spec.ts","../src/dml/__tests__/base-relationship.spec.ts","../src/dml/__tests__/big-number-property.spec.ts","../src/dml/__tests__/boolean-property.spec.ts","../src/dml/__tests__/create-graphql.spec.ts","../src/dml/__tests__/date-time-property.spec.ts","../src/dml/__tests__/entity-builder.spec.ts","../src/dml/__tests__/enum-schema.spec.ts","../src/dml/__tests__/float-property.spec.ts","../src/dml/__tests__/has-many-relationship.spec.ts","../src/dml/__tests__/has-one-relationship.spec.ts","../src/dml/__tests__/id-property.spec.ts","../src/dml/__tests__/json-property.spec.ts","../src/dml/__tests__/many-to-many.spec.ts","../src/dml/__tests__/number-property.spec.ts","../src/dml/__tests__/text-property.spec.ts","../src/dml/helpers/create-graphql.ts","../src/dml/helpers/create-mikro-orm-entity.ts","../src/dml/helpers/entity-builder/apply-searchable.ts","../src/dml/helpers/entity-builder/build-indexes.ts","../src/dml/helpers/entity-builder/create-big-number-properties.ts","../src/dml/helpers/entity-builder/create-default-properties.ts","../src/dml/helpers/entity-builder/define-property.ts","../src/dml/helpers/entity-builder/define-relationship.ts","../src/dml/helpers/entity-builder/index.ts","../src/dml/helpers/entity-builder/parse-entity-name.ts","../src/dml/helpers/entity-builder/query-builder.ts","../src/dml/helpers/entity-builder/relationship-helpers.ts","../src/dml/helpers/graphql-builder/get-attribute.ts","../src/dml/helpers/graphql-builder/set-relationship.ts","../src/dml/helpers/mikro-orm/apply-checks.ts","../src/dml/helpers/mikro-orm/apply-indexes.ts","../src/dml/helpers/mikro-orm/build-indexes.ts","../src/dml/integration-tests/utils.ts","../src/dml/integration-tests/__tests__/entity.spec.ts","../src/dml/integration-tests/__tests__/enum.spec.ts","../src/dml/integration-tests/__tests__/has-one-belongs-to.spec.ts","../src/dml/integration-tests/__tests__/many-to-many.spec.ts","../src/dml/integration-tests/__tests__/many-to-one.spec.ts","../src/dml/integration-tests/__tests__/translatable.spec.ts","../src/dml/properties/array.ts","../src/dml/properties/autoincrement.ts","../src/dml/properties/base.ts","../src/dml/properties/big-number.ts","../src/dml/properties/boolean.ts","../src/dml/properties/computed.ts","../src/dml/properties/date-time.ts","../src/dml/properties/enum.ts","../src/dml/properties/float.ts","../src/dml/properties/id.ts","../src/dml/properties/index.ts","../src/dml/properties/json.ts","../src/dml/properties/nullable.ts","../src/dml/properties/number.ts","../src/dml/properties/primary-key.ts","../src/dml/properties/text.ts","../src/dml/relations/base.ts","../src/dml/relations/belongs-to.ts","../src/dml/relations/has-many.ts","../src/dml/relations/has-one-fk.ts","../src/dml/relations/has-one.ts","../src/dml/relations/index.ts","../src/dml/relations/many-to-many.ts","../src/dml/relations/nullable.ts","../src/event-bus/build-event-messages.ts","../src/event-bus/common-events.ts","../src/event-bus/index.ts","../src/event-bus/message-aggregator.ts","../src/event-bus/utils.ts","../src/event-bus/__tests__/abstract-event-bus-module.spec.ts","../src/event-bus/__tests__/build-event-names-from-entity-name.spec.ts","../src/event-bus/__tests__/message-aggregator.spec.ts","../src/exceptions/index.ts","../src/exceptions/is-duplicate-error.ts","../src/exceptions/postgres-error.ts","../src/feature-flags/discover-and-register-feature-flags.ts","../src/feature-flags/discover-feature-flags.ts","../src/feature-flags/flag-router.ts","../src/feature-flags/index.ts","../src/feature-flags/register-flag.ts","../src/file/abstract-file-provider.ts","../src/file/index.ts","../src/graphql/clean-graphql.ts","../src/graphql/extract-relations-from-graphql.ts","../src/graphql/get-fields-and-relations.ts","../src/graphql/graphql-parser.ts","../src/graphql/graphql-to-fields.ts","../src/graphql/graphql-to-ts-types.ts","../src/graphql/index.ts","../src/graphql/__tests__/clean-graphql-schema.spec.ts","../src/graphql/__tests__/gql-schema-to-types.spec.ts","../src/graphql/__tests__/graphql-ast.ts","../src/graphql/__tests__/utils/gql-get-fields-and-relations.spec.ts","../src/graphql/__tests__/utils/graphql-schema-to-fields.ts","../src/link/compose-link-name.ts","../src/link/index.ts","../src/link/links.ts","../src/math/big-number.ts","../src/math/index.ts","../src/migrations/index.ts","../src/migrations/integration-tests/__tests__/migrations-generate.spec.ts","../src/migrations/integration-tests/__tests__/migrations-revert.spec.ts","../src/migrations/integration-tests/__tests__/migrations-run.spec.ts","../src/modules-sdk/acmekit-internal-service.ts","../src/modules-sdk/acmekit-service.ts","../src/modules-sdk/build-query.ts","../src/modules-sdk/create-acmekit-mikro-orm-event-subscriber.ts","../src/modules-sdk/create-pg-connection.ts","../src/modules-sdk/define-link.ts","../src/modules-sdk/define-policies.ts","../src/modules-sdk/definition.ts","../src/modules-sdk/event-builder-factory.ts","../src/modules-sdk/index.ts","../src/modules-sdk/joiner-config-builder.ts","../src/modules-sdk/load-module-database-config.ts","../src/modules-sdk/mikro-orm-cli-config-builder.ts","../src/modules-sdk/module-provider-registration-key.ts","../src/modules-sdk/module-provider.ts","../src/modules-sdk/module.ts","../src/modules-sdk/modules-to-container-types.ts","../src/modules-sdk/policy-to-types.ts","../src/modules-sdk/query-context.ts","../src/modules-sdk/__fixtures__/joiner-config/entities.ts","../src/modules-sdk/__tests__/acmekit-internal-service.ts","../src/modules-sdk/__tests__/acmekit-service-typings.spec.ts","../src/modules-sdk/__tests__/acmekit-service.spec.ts","../src/modules-sdk/__tests__/build-query.spec.ts","../src/modules-sdk/__tests__/joiner-config-builder.spec.ts","../src/modules-sdk/__tests__/load-database-config.spec.ts","../src/modules-sdk/__tests__/mikro-orm-cli-config-builder.spec.ts","../src/modules-sdk/__tests__/modules-to-container-types.spec.ts","../src/modules-sdk/decorators/context-parameter.ts","../src/modules-sdk/decorators/emit-events.ts","../src/modules-sdk/decorators/index.ts","../src/modules-sdk/decorators/inject-into-context.ts","../src/modules-sdk/decorators/inject-manager.ts","../src/modules-sdk/decorators/inject-shared-context.ts","../src/modules-sdk/decorators/inject-transaction-manager.ts","../src/modules-sdk/decorators/module.ts","../src/modules-sdk/decorators/__tests__/emit-events.ts","../src/modules-sdk/loaders/container-loader-factory.ts","../src/modules-sdk/loaders/load-models.ts","../src/modules-sdk/loaders/mikro-orm-connection-loader-factory.ts","../src/modules-sdk/loaders/mikro-orm-connection-loader.ts","../src/modules-sdk/migration-scripts/index.ts","../src/modules-sdk/migration-scripts/migration-down.ts","../src/modules-sdk/migration-scripts/migration-generate.ts","../src/modules-sdk/migration-scripts/migration-up.ts","../src/modules-sdk/migration-scripts/seed.ts","../src/modules-sdk/types/acmekit-service.ts","../src/modules-sdk/types/links-config.ts","../src/notification/abstract-notification-provider.ts","../src/notification/common.ts","../src/notification/events.ts","../src/notification/index.ts","../src/orchestration/index.ts","../src/orchestration/symbol.ts","../src/orchestration/types.ts","../src/pg/index.ts","../src/pg/integration-tests/__tests__/pg_utils.spec.ts","../src/policies/discover-policies.ts","../src/policies/index.ts","../src/routes/index.ts","../src/routes/routes-to-types.ts","../src/routes/__fixtures__/admin/api-keys/route.ts","../src/routes/__fixtures__/admin/api-keys/validators.ts","../src/routes/__fixtures__/admin/custom/route.ts","../src/routes/__fixtures__/admin/locales/route.d.ts","../src/routes/__fixtures__/admin/users/route.ts","../src/routes/__fixtures__/admin/users/[id]/route.ts","../src/routes/__tests__/routes-to-types.spec.ts","../src/search/abstract-service.ts","../src/search/index-types.ts","../src/search/index.ts","../src/search/search-relations.ts","../src/search/variant-keys.ts","../src/translations/apply-translations.ts","../src/translations/index.ts","../src/translations/__tests__/apply-translations.spec.ts","../src/user/events.ts","../src/user/index.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acmekit/utils",
3
- "version": "2.13.35",
3
+ "version": "2.13.37",
4
4
  "description": "AcmeKit utilities functions shared by AcmeKit core and Modules",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -26,11 +26,12 @@
26
26
  "author": "AcmeKit",
27
27
  "license": "MIT",
28
28
  "devDependencies": {
29
- "@acmekit/types": "2.13.35",
30
- "express": "^4.21.0"
29
+ "@acmekit/types": "2.13.37",
30
+ "express": "^4.21.0",
31
+ "typescript": ">=5.0.0"
31
32
  },
32
33
  "dependencies": {
33
- "@acmekit/deps": "2.13.35",
34
+ "@acmekit/deps": "2.13.37",
34
35
  "@graphql-codegen/core": "^4.0.2",
35
36
  "@graphql-codegen/typescript": "^4.0.9",
36
37
  "@graphql-tools/merge": "^9.0.7",