@baseplate-dev/project-builder-lib 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/definition/feature/feature-utils.js +1 -1
  2. package/dist/definition/feature/feature-utils.js.map +1 -1
  3. package/dist/definition/project-definition-container.d.ts +3 -2
  4. package/dist/definition/project-definition-container.d.ts.map +1 -1
  5. package/dist/definition/project-definition-container.js +8 -6
  6. package/dist/definition/project-definition-container.js.map +1 -1
  7. package/dist/definition/project-definition-container.test-utils.d.ts.map +1 -1
  8. package/dist/definition/project-definition-container.test-utils.js +3 -7
  9. package/dist/definition/project-definition-container.test-utils.js.map +1 -1
  10. package/dist/migrations/index.d.ts.map +1 -1
  11. package/dist/migrations/index.js +2 -0
  12. package/dist/migrations/index.js.map +1 -1
  13. package/dist/migrations/migration-015-null-parent-refs.d.ts +17 -0
  14. package/dist/migrations/migration-015-null-parent-refs.d.ts.map +1 -0
  15. package/dist/migrations/migration-015-null-parent-refs.js +20 -0
  16. package/dist/migrations/migration-015-null-parent-refs.js.map +1 -0
  17. package/dist/parser/parser.d.ts +2 -2
  18. package/dist/parser/parser.d.ts.map +1 -1
  19. package/dist/parser/parser.js +11 -7
  20. package/dist/parser/parser.js.map +1 -1
  21. package/dist/plugins/migrations/run-migrations.js.map +1 -1
  22. package/dist/plugins/schema/index.d.ts +0 -2
  23. package/dist/plugins/schema/index.d.ts.map +1 -1
  24. package/dist/plugins/schema/index.js +0 -2
  25. package/dist/plugins/schema/index.js.map +1 -1
  26. package/dist/plugins/spec/config-spec.d.ts +3 -3
  27. package/dist/plugins/spec/config-spec.d.ts.map +1 -1
  28. package/dist/plugins/spec/config-spec.js +3 -3
  29. package/dist/plugins/spec/config-spec.js.map +1 -1
  30. package/dist/references/{ref-builder.d.ts → definition-ref-builder.d.ts} +13 -137
  31. package/dist/references/definition-ref-builder.d.ts.map +1 -0
  32. package/dist/references/definition-ref-builder.js +242 -0
  33. package/dist/references/definition-ref-builder.js.map +1 -0
  34. package/dist/references/deserialize-schema.d.ts +12 -1
  35. package/dist/references/deserialize-schema.d.ts.map +1 -1
  36. package/dist/references/deserialize-schema.js +24 -4
  37. package/dist/references/deserialize-schema.js.map +1 -1
  38. package/dist/references/extend-parser-context-with-refs.d.ts +16 -0
  39. package/dist/references/extend-parser-context-with-refs.d.ts.map +1 -0
  40. package/dist/references/extend-parser-context-with-refs.js +82 -0
  41. package/dist/references/extend-parser-context-with-refs.js.map +1 -0
  42. package/dist/references/extract-definition-refs.d.ts +19 -0
  43. package/dist/references/extract-definition-refs.d.ts.map +1 -0
  44. package/dist/references/extract-definition-refs.js +63 -0
  45. package/dist/references/extract-definition-refs.js.map +1 -0
  46. package/dist/references/fix-ref-deletions.d.ts +6 -6
  47. package/dist/references/fix-ref-deletions.d.ts.map +1 -1
  48. package/dist/references/fix-ref-deletions.js +13 -5
  49. package/dist/references/fix-ref-deletions.js.map +1 -1
  50. package/dist/references/index.d.ts +2 -1
  51. package/dist/references/index.d.ts.map +1 -1
  52. package/dist/references/index.js +2 -1
  53. package/dist/references/index.js.map +1 -1
  54. package/dist/references/markers.d.ts +22 -0
  55. package/dist/references/markers.d.ts.map +1 -0
  56. package/dist/references/markers.js +21 -0
  57. package/dist/references/markers.js.map +1 -0
  58. package/dist/references/parse-schema-with-references.d.ts +2 -2
  59. package/dist/references/parse-schema-with-references.d.ts.map +1 -1
  60. package/dist/references/parse-schema-with-references.js +13 -4
  61. package/dist/references/parse-schema-with-references.js.map +1 -1
  62. package/dist/references/resolve-zod-ref-payload-names.d.ts +1 -1
  63. package/dist/references/resolve-zod-ref-payload-names.d.ts.map +1 -1
  64. package/dist/references/serialize-schema.d.ts +2 -2
  65. package/dist/references/serialize-schema.d.ts.map +1 -1
  66. package/dist/references/serialize-schema.js +4 -3
  67. package/dist/references/serialize-schema.js.map +1 -1
  68. package/dist/references/strip-ref-markers.d.ts +7 -0
  69. package/dist/references/strip-ref-markers.d.ts.map +1 -0
  70. package/dist/references/strip-ref-markers.js +22 -0
  71. package/dist/references/strip-ref-markers.js.map +1 -0
  72. package/dist/references/types.d.ts +2 -2
  73. package/dist/references/types.d.ts.map +1 -1
  74. package/dist/schema/apps/admin/app.d.ts +958 -200
  75. package/dist/schema/apps/admin/app.d.ts.map +1 -1
  76. package/dist/schema/apps/admin/app.js +2 -3
  77. package/dist/schema/apps/admin/app.js.map +1 -1
  78. package/dist/schema/apps/admin/sections/base.d.ts +15 -3
  79. package/dist/schema/apps/admin/sections/base.d.ts.map +1 -1
  80. package/dist/schema/apps/admin/sections/base.js +4 -4
  81. package/dist/schema/apps/admin/sections/base.js.map +1 -1
  82. package/dist/schema/apps/admin/sections/crud-form/admin-crud-input.d.ts +12 -6
  83. package/dist/schema/apps/admin/sections/crud-form/admin-crud-input.d.ts.map +1 -1
  84. package/dist/schema/apps/admin/sections/crud-form/admin-crud-input.js +9 -5
  85. package/dist/schema/apps/admin/sections/crud-form/admin-crud-input.js.map +1 -1
  86. package/dist/schema/apps/admin/sections/crud-form/built-in-input.d.ts +19 -19
  87. package/dist/schema/apps/admin/sections/crud-form/built-in-input.d.ts.map +1 -1
  88. package/dist/schema/apps/admin/sections/crud-form/built-in-input.js +18 -19
  89. package/dist/schema/apps/admin/sections/crud-form/built-in-input.js.map +1 -1
  90. package/dist/schema/apps/admin/sections/crud-form/types.d.ts +1 -1
  91. package/dist/schema/apps/admin/sections/crud-form/types.d.ts.map +1 -1
  92. package/dist/schema/apps/admin/sections/crud.d.ts +468 -130
  93. package/dist/schema/apps/admin/sections/crud.d.ts.map +1 -1
  94. package/dist/schema/apps/admin/sections/crud.js +14 -14
  95. package/dist/schema/apps/admin/sections/crud.js.map +1 -1
  96. package/dist/schema/apps/backend/index.d.ts +1 -1
  97. package/dist/schema/apps/types.d.ts +1 -1
  98. package/dist/schema/apps/types.js +1 -1
  99. package/dist/schema/apps/web/index.d.ts +2 -2
  100. package/dist/schema/apps/web/index.d.ts.map +1 -1
  101. package/dist/schema/apps/web/index.js +2 -3
  102. package/dist/schema/apps/web/index.js.map +1 -1
  103. package/dist/schema/auth/index.d.ts +1 -1
  104. package/dist/schema/auth/index.js +1 -1
  105. package/dist/schema/creator/schema-creator.d.ts +3 -2
  106. package/dist/schema/creator/schema-creator.d.ts.map +1 -1
  107. package/dist/schema/creator/schema-creator.js +8 -1
  108. package/dist/schema/creator/schema-creator.js.map +1 -1
  109. package/dist/schema/creator/types.d.ts +35 -2
  110. package/dist/schema/creator/types.d.ts.map +1 -1
  111. package/dist/schema/features/feature.d.ts +29 -15
  112. package/dist/schema/features/feature.d.ts.map +1 -1
  113. package/dist/schema/features/feature.js +7 -4
  114. package/dist/schema/features/feature.js.map +1 -1
  115. package/dist/schema/features/theme.d.ts +12 -12
  116. package/dist/schema/models/enums.d.ts +62 -19
  117. package/dist/schema/models/enums.d.ts.map +1 -1
  118. package/dist/schema/models/enums.js +5 -4
  119. package/dist/schema/models/enums.js.map +1 -1
  120. package/dist/schema/models/graphql.d.ts +9 -9
  121. package/dist/schema/models/graphql.d.ts.map +1 -1
  122. package/dist/schema/models/graphql.js +12 -13
  123. package/dist/schema/models/graphql.js.map +1 -1
  124. package/dist/schema/models/index.d.ts +545 -131
  125. package/dist/schema/models/index.d.ts.map +1 -1
  126. package/dist/schema/models/index.js +24 -19
  127. package/dist/schema/models/index.js.map +1 -1
  128. package/dist/schema/models/transformers/built-in-transformers.d.ts +87 -23
  129. package/dist/schema/models/transformers/built-in-transformers.d.ts.map +1 -1
  130. package/dist/schema/models/transformers/built-in-transformers.js +10 -10
  131. package/dist/schema/models/transformers/built-in-transformers.js.map +1 -1
  132. package/dist/schema/models/transformers/transformers.d.ts +14 -8
  133. package/dist/schema/models/transformers/transformers.d.ts.map +1 -1
  134. package/dist/schema/models/transformers/transformers.js +9 -5
  135. package/dist/schema/models/transformers/transformers.js.map +1 -1
  136. package/dist/schema/models/transformers/types.d.ts +4 -3
  137. package/dist/schema/models/transformers/types.d.ts.map +1 -1
  138. package/dist/schema/models/transformers/types.js +2 -4
  139. package/dist/schema/models/transformers/types.js.map +1 -1
  140. package/dist/schema/plugins/definition.d.ts +64 -70
  141. package/dist/schema/plugins/definition.d.ts.map +1 -1
  142. package/dist/schema/plugins/definition.js +18 -16
  143. package/dist/schema/plugins/definition.js.map +1 -1
  144. package/dist/schema/project-definition.d.ts +1960 -534
  145. package/dist/schema/project-definition.d.ts.map +1 -1
  146. package/dist/schema/project-definition.js +1 -2
  147. package/dist/schema/project-definition.js.map +1 -1
  148. package/dist/schema/settings.d.ts +15 -15
  149. package/dist/schema/template-extractor/index.d.ts +1 -1
  150. package/dist/tools/model-merger/model-merger.d.ts +6 -6
  151. package/dist/tools/model-merger/model-merger.d.ts.map +1 -1
  152. package/dist/web/hooks/index.d.ts +1 -1
  153. package/dist/web/hooks/index.d.ts.map +1 -1
  154. package/dist/web/hooks/index.js +1 -1
  155. package/dist/web/hooks/index.js.map +1 -1
  156. package/dist/web/hooks/use-definition-schema.d.ts +3 -0
  157. package/dist/web/hooks/use-definition-schema.d.ts.map +1 -0
  158. package/dist/web/hooks/use-definition-schema.js +7 -0
  159. package/dist/web/hooks/use-definition-schema.js.map +1 -0
  160. package/dist/web/hooks/use-project-definition.d.ts +3 -3
  161. package/dist/web/hooks/use-project-definition.d.ts.map +1 -1
  162. package/package.json +5 -5
  163. package/dist/plugins/schema/common.d.ts +0 -6
  164. package/dist/plugins/schema/common.d.ts.map +0 -1
  165. package/dist/plugins/schema/common.js +0 -2
  166. package/dist/plugins/schema/common.js.map +0 -1
  167. package/dist/plugins/schema/parser.d.ts +0 -19
  168. package/dist/plugins/schema/parser.d.ts.map +0 -1
  169. package/dist/plugins/schema/parser.js +0 -41
  170. package/dist/plugins/schema/parser.js.map +0 -1
  171. package/dist/plugins/schema/zod-with-plugins.d.ts +0 -12
  172. package/dist/plugins/schema/zod-with-plugins.d.ts.map +0 -1
  173. package/dist/plugins/schema/zod-with-plugins.js +0 -26
  174. package/dist/plugins/schema/zod-with-plugins.js.map +0 -1
  175. package/dist/references/ref-builder.d.ts.map +0 -1
  176. package/dist/references/ref-builder.js +0 -494
  177. package/dist/references/ref-builder.js.map +0 -1
  178. package/dist/web/hooks/use-plugin-enhanced-schema.d.ts +0 -4
  179. package/dist/web/hooks/use-plugin-enhanced-schema.d.ts.map +0 -1
  180. package/dist/web/hooks/use-plugin-enhanced-schema.js +0 -8
  181. package/dist/web/hooks/use-plugin-enhanced-schema.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition-ref-builder.d.ts","sourceRoot":"","sources":["../../src/references/definition-ref-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,242 @@
1
+ import { get } from 'es-toolkit/compat';
2
+ import { stripRefMarkers } from './strip-ref-markers.js';
3
+ /**
4
+ * Creates a definition entity name resolver.
5
+ * @param entityNameResolver - The entity name resolver.
6
+ * @returns The definition entity name resolver.
7
+ */
8
+ export function createDefinitionEntityNameResolver(entityNameResolver) {
9
+ return entityNameResolver;
10
+ }
11
+ /**
12
+ * DefinitionRefBuilder is responsible for constructing reference paths, and registering
13
+ * references and entities as defined in a Zod schema.
14
+ *
15
+ * The builder uses a prefix (usually the current parsing path) and context (a
16
+ * shared map for resolving relative references) to build complete reference paths.
17
+ *
18
+ * @template TInput - The type of the input data being parsed.
19
+ */
20
+ export class DefinitionRefBuilder {
21
+ /**
22
+ * Creates a new builder instance.
23
+ * @param pathPrefix - The starting path for all references.
24
+ * @param context - Shared context including a path map and deserialize flag.
25
+ * @param data - The data being parsed.
26
+ */
27
+ constructor(pathPrefix, context, data) {
28
+ Object.defineProperty(this, "references", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: void 0
33
+ });
34
+ Object.defineProperty(this, "entitiesWithNameResolver", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: void 0
39
+ });
40
+ Object.defineProperty(this, "pathPrefix", {
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true,
44
+ value: void 0
45
+ });
46
+ Object.defineProperty(this, "context", {
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true,
50
+ value: void 0
51
+ });
52
+ Object.defineProperty(this, "pathMap", {
53
+ enumerable: true,
54
+ configurable: true,
55
+ writable: true,
56
+ value: void 0
57
+ });
58
+ Object.defineProperty(this, "data", {
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true,
62
+ value: void 0
63
+ });
64
+ this.references = [];
65
+ this.entitiesWithNameResolver = [];
66
+ this.pathPrefix = pathPrefix;
67
+ this.context = context;
68
+ this.pathMap = new Map();
69
+ this.data = data;
70
+ }
71
+ /**
72
+ * Converts a dot-separated string path into an array of keys.
73
+ * @param path - A string (e.g. "a.b.0.c") representing the path.
74
+ * @returns An array of keys (numbers for numeric strings, otherwise strings).
75
+ */
76
+ _constructPathWithoutPrefix(path) {
77
+ if (!path)
78
+ return [];
79
+ const pathComponents = path
80
+ .split('.')
81
+ .map((key) => (/^[0-9]+$/.test(key) ? Number.parseInt(key, 10) : key));
82
+ return pathComponents;
83
+ }
84
+ /**
85
+ * Prepends the builder's path prefix to the provided path.
86
+ * @param path - The dot-separated path string.
87
+ * @returns The complete reference path as an array.
88
+ */
89
+ _constructPath(path) {
90
+ if (!path)
91
+ return this.pathPrefix;
92
+ return [...this.pathPrefix, ...this._constructPathWithoutPrefix(path)];
93
+ }
94
+ /**
95
+ * Constructs a reference path that may be defined directly as a string or indirectly
96
+ * via a context object. If a context object is provided, the function looks up the
97
+ * actual path from the builder's context.
98
+ *
99
+ * @param path - Either a dot-separated string path or an object with a context key.
100
+ * @param expectedEntityType - The entity type expected for this context.
101
+ * @returns The resolved reference path.
102
+ * @throws If the context cannot be found or its type does not match.
103
+ */
104
+ _constructPathWithContext(path, expectedEntityType) {
105
+ if (typeof path === 'string') {
106
+ return this._constructPath(path);
107
+ }
108
+ // Lookup the context for the given key.
109
+ const pathContext = this.context.pathMap.get(path.context);
110
+ if (!pathContext) {
111
+ throw new Error(`Could not find context for ${path.context} from ${this.pathPrefix.join('.')}`);
112
+ }
113
+ if (pathContext.type !== expectedEntityType) {
114
+ throw new Error(`Attempted to retrieve context for ${path.context} from ${this.pathPrefix.join('.')} expecting ${expectedEntityType.name}, but found ${pathContext.type.name}`);
115
+ }
116
+ return pathContext.path;
117
+ }
118
+ /**
119
+ * Registers a reference based on the provided input definition.
120
+ *
121
+ * Flow:
122
+ * 1. Validate that the parent path is provided if required (and vice versa).
123
+ * 2. Compute the reference path; if the path is empty, use the entire data.
124
+ * 3. If the referenced value is null or undefined, skip adding the reference.
125
+ * 4. Otherwise, add the reference and, if requested, register its context.
126
+ *
127
+ * @param reference - The reference definition.
128
+ * @throws If parent path usage is incorrect.
129
+ */
130
+ addReference(reference) {
131
+ if (!reference.type.parentType && reference.parentPath) {
132
+ throw new Error(`Parent path does nothing since reference does not have parent`);
133
+ }
134
+ if (reference.type.parentType && !reference.parentPath) {
135
+ throw new Error(`Parent path required if reference type has parent type`);
136
+ }
137
+ // Compute the path without prefix once.
138
+ const refPathWithoutPrefix = this._constructPathWithoutPrefix(reference.path);
139
+ // If the path is empty, use the entire data; otherwise, retrieve the value.
140
+ const refValue = refPathWithoutPrefix.length === 0
141
+ ? this.data
142
+ : get(this.data, refPathWithoutPrefix);
143
+ if (refValue === undefined || refValue === null)
144
+ return;
145
+ const fullPath = this._constructPath(reference.path);
146
+ this.references.push({
147
+ type: reference.type,
148
+ path: fullPath,
149
+ parentPath: reference.parentPath &&
150
+ reference.type.parentType &&
151
+ this._constructPathWithContext(reference.parentPath, reference.type.parentType),
152
+ onDelete: reference.onDelete,
153
+ });
154
+ // Optionally, add this path to the shared context.
155
+ if (reference.addContext) {
156
+ this._addPathToContext(fullPath, reference.type, reference.addContext);
157
+ }
158
+ }
159
+ /**
160
+ * Registers an entity based on the provided definition.
161
+ *
162
+ * Flow:
163
+ * 1. Validate that not both a name and a name reference path are provided.
164
+ * 2. Compute the full entity path.
165
+ * 3. Resolve the entity ID:
166
+ * - Use the provided idPath if available; otherwise, default to appending 'id'
167
+ * to the entity path.
168
+ * - If no id is found, generate a new one.
169
+ * 4. Resolve the entity name:
170
+ * - Use the provided resolveName if available; otherwise, default to using the
171
+ * name path.
172
+ * 5. Register the entity in either the direct entities list or the name-ref list.
173
+ * 6. Optionally, add the entity’s id path to the shared context.
174
+ *
175
+ * @param entity - The entity definition.
176
+ * @throws If both name and nameRefPath are provided or if no name is resolved.
177
+ */
178
+ addEntity(entity) {
179
+ // Build the full path for the entity.
180
+ const path = this._constructPath(entity.path);
181
+ // Resolve the id path: if provided use it; otherwise, assume the id is at "entity.path.id"
182
+ const idPath = entity.idPath
183
+ ? this._constructPathWithoutPrefix(entity.idPath)
184
+ : [...this._constructPathWithoutPrefix(entity.path), 'id'];
185
+ const id = get(this.data, idPath);
186
+ if (!id) {
187
+ throw new Error(`No id found for entity ${entity.type.name}`);
188
+ }
189
+ if (!entity.type.isId(id)) {
190
+ throw new Error(`Invalid id: ${id} for entity ${entity.type.name}`);
191
+ }
192
+ // Resolve the name: if getNameResolver is provided, use it to build the name resolver; otherwise,
193
+ // use the default name resolver.
194
+ const getNameResolver = entity.getNameResolver ?? ((value) => get(value, 'name'));
195
+ const nameResolver = getNameResolver(stripRefMarkers(this.data));
196
+ // Base entity definition shared between regular entities and those with a name reference.
197
+ const entityBase = {
198
+ id,
199
+ type: entity.type,
200
+ path,
201
+ idPath: [...this.pathPrefix, ...idPath],
202
+ parentPath: entity.parentPath &&
203
+ entity.type.parentType &&
204
+ this._constructPathWithContext(entity.parentPath, entity.type.parentType),
205
+ };
206
+ this.entitiesWithNameResolver.push({
207
+ ...entityBase,
208
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- needed to allow more specific generic typed to be put in here
209
+ nameResolver: typeof nameResolver === 'string'
210
+ ? { resolveName: () => nameResolver }
211
+ : nameResolver,
212
+ });
213
+ // Optionally add the id path to the context.
214
+ if (entity.addContext) {
215
+ this._addPathToContext([...this.pathPrefix, ...idPath], entity.type, entity.addContext);
216
+ }
217
+ }
218
+ /**
219
+ * Registers a given path into the builder's context map.
220
+ * @param path - The full reference path.
221
+ * @param type - The entity type associated with the path.
222
+ * @param context - A unique key to identify this context.
223
+ * @throws If the context key is already registered.
224
+ */
225
+ _addPathToContext(path, type, context) {
226
+ // For now, allow overriding contexts to maintain compatibility
227
+ this.pathMap.set(context, { path, type });
228
+ // Also register in the shared context for other builders to access
229
+ this.context.pathMap.set(context, { path, type });
230
+ }
231
+ /**
232
+ * Convenience method that builds a full path from a dot-separated string and
233
+ * adds it to the context.
234
+ * @param path - The dot-separated string path.
235
+ * @param type - The entity type.
236
+ * @param context - The context key.
237
+ */
238
+ addPathToContext(path, type, context) {
239
+ this._addPathToContext(this._constructPath(path), type, context);
240
+ }
241
+ }
242
+ //# sourceMappingURL=definition-ref-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition-ref-builder.js","sourceRoot":"","sources":["../../src/references/definition-ref-builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,15 @@
1
1
  import type { TypeOf, z } from 'zod';
2
+ import type { DefinitionSchemaCreator, DefinitionSchemaCreatorOptions } from '#src/schema/creator/types.js';
2
3
  import type { ResolvedZodRefPayload } from './types.js';
3
- export declare function deserializeSchemaWithReferences<TSchema extends z.ZodType>(schema: TSchema, input: unknown): ResolvedZodRefPayload<TypeOf<TSchema>>;
4
+ /**
5
+ * Deserialize a schema with references using the new transform-based approach.
6
+ * This function converts human-readable names back to entity IDs.
7
+ *
8
+ * @template T - The schema creator type
9
+ * @param schemaCreator - The schema creator function
10
+ * @param input - The input data with names instead of IDs
11
+ * @param options - Options for the schema creator (excluding transformReferences)
12
+ * @returns The resolved payload with IDs instead of names
13
+ */
14
+ export declare function deserializeSchemaWithTransformedReferences<T extends DefinitionSchemaCreator>(schemaCreator: T, input: unknown, options: Omit<DefinitionSchemaCreatorOptions, 'transformReferences'>): ResolvedZodRefPayload<ReturnType<T> extends z.ZodType ? TypeOf<ReturnType<T>> : unknown>;
4
15
  //# sourceMappingURL=deserialize-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize-schema.d.ts","sourceRoot":"","sources":["../../src/references/deserialize-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMrC,OAAO,KAAK,EAAoB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQ1E,wBAAgB,+BAA+B,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EACvE,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,GACb,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CA0FxC"}
1
+ {"version":3,"file":"deserialize-schema.d.ts","sourceRoot":"","sources":["../../src/references/deserialize-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMrC,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAoB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQ1E;;;;;;;;;GASG;AACH,wBAAgB,0CAA0C,CACxD,CAAC,SAAS,uBAAuB,EAEjC,aAAa,EAAE,CAAC,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,GACnE,qBAAqB,CACtB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAClE,CAYA"}
@@ -1,15 +1,35 @@
1
1
  import { toposort } from '@baseplate-dev/utils';
2
2
  import { groupBy, keyBy, uniq } from 'es-toolkit';
3
3
  import { get, set } from 'es-toolkit/compat';
4
- import { parseSchemaWithReferences } from './parse-schema-with-references.js';
4
+ import { parseSchemaWithTransformedReferences } from './parse-schema-with-references.js';
5
5
  function referenceToNameParentId(name, parentId) {
6
6
  return JSON.stringify({ name, parentId });
7
7
  }
8
- export function deserializeSchemaWithReferences(schema, input) {
9
- const payload = parseSchemaWithReferences(schema, input, {
8
+ /**
9
+ * Deserialize a schema with references using the new transform-based approach.
10
+ * This function converts human-readable names back to entity IDs.
11
+ *
12
+ * @template T - The schema creator type
13
+ * @param schemaCreator - The schema creator function
14
+ * @param input - The input data with names instead of IDs
15
+ * @param options - Options for the schema creator (excluding transformReferences)
16
+ * @returns The resolved payload with IDs instead of names
17
+ */
18
+ export function deserializeSchemaWithTransformedReferences(schemaCreator, input, options) {
19
+ const payload = parseSchemaWithTransformedReferences(schemaCreator, input, options, {
10
20
  skipReferenceNameResolution: true,
11
21
  });
12
- // resolve all references
22
+ // Use the same resolution logic as the original function
23
+ return resolveReferencesToIds(payload);
24
+ }
25
+ /**
26
+ * Internal function to resolve entity names to IDs in the payload.
27
+ * This is shared logic between the old and new approaches.
28
+ *
29
+ * @param payload - The parsed payload with entities and references
30
+ * @returns The payload with references resolved to IDs
31
+ */
32
+ function resolveReferencesToIds(payload) {
13
33
  const { references, entities, data } = payload;
14
34
  // check we don't have more entities than IDs
15
35
  const entitiesById = groupBy(entities, (entity) => entity.id);
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize-schema.js","sourceRoot":"","sources":["../../src/references/deserialize-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deserialize-schema.js","sourceRoot":"","sources":["../../src/references/deserialize-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAS7C,OAAO,EAAE,oCAAoC,EAAE,MAAM,mCAAmC,CAAC;AAEzF,SAAS,uBAAuB,CAAC,IAAY,EAAE,QAAiB;IAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,0CAA0C,CAGxD,aAAgB,EAChB,KAAc,EACd,OAAoE;IAIpE,MAAM,OAAO,GAAG,oCAAoC,CAClD,aAAa,EACb,KAAK,EACL,OAAO,EACP;QACE,2BAA2B,EAAE,IAAI;KAClC,CACF,CAAC;IAEF,yDAAyD;IACzD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAC7B,OAAiC;IAEjC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/C,6CAA6C;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CACpB,CAAC;IACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,wCAAwC,kBAAkB;aACvD,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACnE;aACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,IAAI,eAAe,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,iCAAiC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAC9B,eAAe,EACf,WAAW;SACR,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;SAC/C,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QACnB,UAAU,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;QACjC,UAAU,CAAC,IAAI;KAChB,CAAC,CACL,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjE,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEhD,iCAAiC;QACjC,MAAM,sBAAsB,GAC1B,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACpB,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,UAAU;gBACzB,CAAC,CAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAY;gBACnC,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,UAAU,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACzD,CAAC;YACJ,CAAC;YAED,OAAO,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEL,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAW,CAAC;YAC3C,mFAAmF;YACnF,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,IAAK,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAY,CAAC;YACzE,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE7D,MAAM,cAAc,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAChD,GAAG,CAAC,IAAI,CAAC,IACX,IAAI,YAAY,GAAG,CACpB,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Paths } from 'type-fest';
2
+ import { z } from 'zod';
3
+ import type { DefinitionEntityType } from '#src/index.js';
4
+ import type { DefinitionSchemaCreatorOptions } from '#src/schema/index.js';
5
+ import type { DefinitionEntityInput, DefinitionReferenceInput, ZodBuilderFunction } from './definition-ref-builder.js';
6
+ export type WithRefType = <TEntityType extends DefinitionEntityType>(reference: DefinitionReferenceInput<string, TEntityType>) => z.ZodEffects<z.ZodString>;
7
+ type PathInput<Type> = Exclude<Paths<Type>, number>;
8
+ export type WithEntType = <TObject extends z.SomeZodObject, TEntityType extends DefinitionEntityType, TPath extends PathInput<z.input<TObject>>>(schema: TObject, entity: DefinitionEntityInput<z.input<TObject>, TEntityType, TPath>) => z.ZodEffects<TObject>;
9
+ export type WithRefBuilder = <T extends z.ZodType>(schema: T, builder?: ZodBuilderFunction<z.TypeOf<T>>) => z.ZodEffects<T>;
10
+ export declare function extendParserContextWithRefs({ transformReferences, }: DefinitionSchemaCreatorOptions): {
11
+ withRef: WithRefType;
12
+ withEnt: WithEntType;
13
+ withRefBuilder: WithRefBuilder;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=extend-parser-context-with-refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-parser-context-with-refs.d.ts","sourceRoot":"","sources":["../../src/references/extend-parser-context-with-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAEnB,MAAM,6BAA6B,CAAC;AAWrC,MAAM,MAAM,WAAW,GAAG,CAAC,WAAW,SAAS,oBAAoB,EACjE,SAAS,EAAE,wBAAwB,CAAC,MAAM,EAAE,WAAW,CAAC,KACrD,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAE/B,KAAK,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,SAAS,CAAC,CAAC,aAAa,EAC/B,WAAW,SAAS,oBAAoB,EACxC,KAAK,SAAS,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAEzC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,KAChE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC/C,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KACtC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAErB,wBAAgB,2BAA2B,CAAC,EAC1C,mBAAmB,GACpB,EAAE,8BAA8B,GAAG;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;CAChC,CA4GA"}
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ import { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';
3
+ export function extendParserContextWithRefs({ transformReferences, }) {
4
+ function withRef(reference) {
5
+ return z.string().transform((value) => {
6
+ if (transformReferences && value) {
7
+ return new DefinitionReferenceMarker(value, reference);
8
+ }
9
+ return value;
10
+ });
11
+ }
12
+ function withEnt(schema, entity) {
13
+ if (!('id' in schema.shape)) {
14
+ throw new Error(`Entity must have an id field. Entity type: ${entity.type.name}. Schema keys: ${Object.keys(schema.shape).join(', ')}`);
15
+ }
16
+ return schema.transform((value) => {
17
+ // Check if the id is valid
18
+ if (!('id' in value) || !entity.type.isId(value.id)) {
19
+ throw new Error(`Invalid id for entity ${entity.type.name}. Id: ${value.id}`);
20
+ }
21
+ if (transformReferences) {
22
+ const existingAnnotations = REF_ANNOTATIONS_MARKER_SYMBOL in value
23
+ ? value[REF_ANNOTATIONS_MARKER_SYMBOL]
24
+ : undefined;
25
+ return {
26
+ ...value,
27
+ [REF_ANNOTATIONS_MARKER_SYMBOL]: {
28
+ entities: [...(existingAnnotations?.entities ?? []), entity],
29
+ references: existingAnnotations?.references ?? [],
30
+ contextPaths: existingAnnotations?.contextPaths ?? [],
31
+ },
32
+ };
33
+ }
34
+ return value;
35
+ });
36
+ }
37
+ function withRefBuilder(schema, builder) {
38
+ return schema.transform((value) => {
39
+ if (!value) {
40
+ return value;
41
+ }
42
+ if (typeof value !== 'object') {
43
+ throw new TypeError(`refBuilder requires an object, but got ${typeof value}`);
44
+ }
45
+ const existingAnnotations = REF_ANNOTATIONS_MARKER_SYMBOL in value
46
+ ? value[REF_ANNOTATIONS_MARKER_SYMBOL]
47
+ : undefined;
48
+ const entities = existingAnnotations?.entities ?? [];
49
+ const references = existingAnnotations?.references ?? [];
50
+ const contextPaths = existingAnnotations?.contextPaths ?? [];
51
+ const refBuilder = {
52
+ addReference: (reference) => {
53
+ references.push(reference);
54
+ },
55
+ addEntity: (entity) => {
56
+ entities.push(entity);
57
+ },
58
+ addPathToContext: (path, type, context) => {
59
+ contextPaths.push({ path, type, context });
60
+ },
61
+ };
62
+ builder?.(refBuilder, value);
63
+ if (transformReferences) {
64
+ return {
65
+ ...value,
66
+ [REF_ANNOTATIONS_MARKER_SYMBOL]: {
67
+ entities,
68
+ references,
69
+ contextPaths,
70
+ },
71
+ };
72
+ }
73
+ return value;
74
+ });
75
+ }
76
+ return {
77
+ withRef,
78
+ withEnt,
79
+ withRefBuilder,
80
+ };
81
+ }
82
+ //# sourceMappingURL=extend-parser-context-with-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-parser-context-with-refs.js","sourceRoot":"","sources":["../../src/references/extend-parser-context-with-refs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { DefinitionEntityNameResolver, RefBuilderContext, ZodRefPayload } from './definition-ref-builder.js';
2
+ import type { DefinitionEntity, DefinitionReference, ReferencePath } from './types.js';
3
+ /**
4
+ * Entity with a name resolver.
5
+ */
6
+ export interface DefinitionEntityWithNameResolver extends Omit<DefinitionEntity, 'name'> {
7
+ nameResolver: DefinitionEntityNameResolver;
8
+ }
9
+ /**
10
+ * Context for storing references, entities, and builder context.
11
+ */
12
+ export interface ZodRefContext {
13
+ context: RefBuilderContext;
14
+ references: DefinitionReference[];
15
+ entitiesWithNameResolver: DefinitionEntityWithNameResolver[];
16
+ }
17
+ export declare function extractDefinitionRefsRecursive(value: unknown, context: ZodRefContext, path: ReferencePath): unknown;
18
+ export declare function extractDefinitionRefs<T>(value: T): ZodRefPayload<T>;
19
+ //# sourceMappingURL=extract-definition-refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-definition-refs.d.ts","sourceRoot":"","sources":["../../src/references/extract-definition-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAE5B,iBAAiB,EACjB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACd,MAAM,YAAY,CAAC;AAQpB;;GAEG;AACH,MAAM,WAAW,gCACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACtC,YAAY,EAAE,4BAA4B,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,wBAAwB,EAAE,gCAAgC,EAAE,CAAC;CAC9D;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAyET;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAgBnE"}
@@ -0,0 +1,63 @@
1
+ import { DefinitionRefBuilder } from './definition-ref-builder.js';
2
+ import { DefinitionReferenceMarker, REF_ANNOTATIONS_MARKER_SYMBOL, } from './markers.js';
3
+ export function extractDefinitionRefsRecursive(value, context, path) {
4
+ const builder = new DefinitionRefBuilder(path, context.context, value);
5
+ if (value instanceof DefinitionReferenceMarker) {
6
+ builder.addReference(value.reference);
7
+ context.references.push(...builder.references);
8
+ context.entitiesWithNameResolver.push(...builder.entitiesWithNameResolver);
9
+ return value.value;
10
+ }
11
+ if (typeof value === 'object' &&
12
+ value !== null &&
13
+ REF_ANNOTATIONS_MARKER_SYMBOL in value) {
14
+ const annotations = value[REF_ANNOTATIONS_MARKER_SYMBOL];
15
+ for (const entity of annotations.entities) {
16
+ builder.addEntity(entity);
17
+ }
18
+ for (const reference of annotations.references) {
19
+ builder.addReference(reference);
20
+ }
21
+ for (const pathInfo of annotations.contextPaths) {
22
+ builder.addPathToContext(pathInfo.path, pathInfo.type, pathInfo.context);
23
+ }
24
+ context.references.push(...builder.references);
25
+ context.entitiesWithNameResolver.push(...builder.entitiesWithNameResolver);
26
+ // Remove the marker symbol and process the clean object
27
+ const { [REF_ANNOTATIONS_MARKER_SYMBOL]: _, ...cleanValue } = value;
28
+ // Process the clean object recursively
29
+ return Object.fromEntries(Object.entries(cleanValue).map(([key, childValue]) => [
30
+ key,
31
+ extractDefinitionRefsRecursive(childValue, context, [...path, key]),
32
+ ]));
33
+ }
34
+ // Run recursively for arrays first (arrays are also objects)
35
+ if (Array.isArray(value)) {
36
+ return value.map((element, i) => extractDefinitionRefsRecursive(element, context, [...path, i]));
37
+ }
38
+ // Run recursively for regular objects
39
+ if (typeof value === 'object' && value !== null) {
40
+ return Object.fromEntries(Object.entries(value).map(([key, childValue]) => [
41
+ key,
42
+ extractDefinitionRefsRecursive(childValue, context, [...path, key]),
43
+ ]));
44
+ }
45
+ // Return primitive values as-is
46
+ return value;
47
+ }
48
+ export function extractDefinitionRefs(value) {
49
+ const refContext = {
50
+ context: {
51
+ pathMap: new Map(),
52
+ },
53
+ references: [],
54
+ entitiesWithNameResolver: [],
55
+ };
56
+ const cleanData = extractDefinitionRefsRecursive(value, refContext, []);
57
+ return {
58
+ data: cleanData,
59
+ references: refContext.references,
60
+ entitiesWithNameResolver: refContext.entitiesWithNameResolver,
61
+ };
62
+ }
63
+ //# sourceMappingURL=extract-definition-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-definition-refs.js","sourceRoot":"","sources":["../../src/references/extract-definition-refs.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { TypeOf, z } from 'zod';
1
+ import type { def, DefinitionSchemaCreator, DefinitionSchemaCreatorOptions } from '#src/schema/index.js';
2
2
  import type { DefinitionReference, ResolvedZodRefPayload } from './types.js';
3
- interface FixRefDeletionSuccessResult<TSchema extends z.ZodType> {
3
+ interface FixRefDeletionSuccessResult<T extends DefinitionSchemaCreator> {
4
4
  type: 'success';
5
- value: TypeOf<TSchema>;
6
- refPayload: ResolvedZodRefPayload<TypeOf<TSchema>>;
5
+ value: def.InferOutput<T>;
6
+ refPayload: ResolvedZodRefPayload<def.InferOutput<T>>;
7
7
  }
8
8
  export interface FixRefDeletionError {
9
9
  ref: DefinitionReference;
@@ -13,10 +13,10 @@ interface FixRefDeletionFailureResult {
13
13
  type: 'failure';
14
14
  issues: FixRefDeletionError[];
15
15
  }
16
- export type FixRefDeletionResult<TSchema extends z.ZodType> = FixRefDeletionSuccessResult<TSchema> | FixRefDeletionFailureResult;
16
+ export type FixRefDeletionResult<T extends DefinitionSchemaCreator> = FixRefDeletionSuccessResult<T> | FixRefDeletionFailureResult;
17
17
  /**
18
18
  * Fixes any reference deletions by performing the appropriate action for the reference
19
19
  */
20
- export declare function fixRefDeletions<TSchema extends z.ZodType>(schema: TSchema, value: TypeOf<TSchema>): FixRefDeletionResult<TSchema>;
20
+ export declare function fixRefDeletions<T extends DefinitionSchemaCreator>(schemaCreator: T, value: unknown, schemaCreatorOptions: Omit<DefinitionSchemaCreatorOptions, 'transformReferences'>): FixRefDeletionResult<T>;
21
21
  export {};
22
22
  //# sourceMappingURL=fix-ref-deletions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix-ref-deletions.d.ts","sourceRoot":"","sources":["../../src/references/fix-ref-deletions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKrC,OAAO,KAAK,EACV,mBAAmB,EAEnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAIpB,UAAU,2BAA2B,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO;IAC7D,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,mBAAmB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,IACtD,2BAA2B,CAAC,OAAO,CAAC,GACpC,2BAA2B,CAAC;AAKhC;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EACvD,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GACrB,oBAAoB,CAAC,OAAO,CAAC,CAuG/B"}
1
+ {"version":3,"file":"fix-ref-deletions.d.ts","sourceRoot":"","sources":["../../src/references/fix-ref-deletions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,GAAG,EACH,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,mBAAmB,EAEnB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAIpB,UAAU,2BAA2B,CAAC,CAAC,SAAS,uBAAuB;IACrE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,mBAAmB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,uBAAuB,IAC9D,2BAA2B,CAAC,CAAC,CAAC,GAC9B,2BAA2B,CAAC;AAKhC;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,uBAAuB,EAC/D,aAAa,EAAE,CAAC,EAChB,KAAK,EAAE,OAAO,EACd,oBAAoB,EAAE,IAAI,CACxB,8BAA8B,EAC9B,qBAAqB,CACtB,GACA,oBAAoB,CAAC,CAAC,CAAC,CAsHzB"}
@@ -1,18 +1,18 @@
1
1
  import { sortBy } from 'es-toolkit';
2
2
  import { get, groupBy, set } from 'es-toolkit/compat';
3
- import { parseSchemaWithReferences } from './parse-schema-with-references.js';
3
+ import { parseSchemaWithTransformedReferences } from './parse-schema-with-references.js';
4
4
  // sentinel ID to signify the reference has been flagged for deletion
5
5
  const DELETED_SENTINEL_ID = 'deleted-sentinel-id';
6
6
  /**
7
7
  * Fixes any reference deletions by performing the appropriate action for the reference
8
8
  */
9
- export function fixRefDeletions(schema, value) {
9
+ export function fixRefDeletions(schemaCreator, value, schemaCreatorOptions) {
10
10
  const issues = [];
11
11
  // find all references that do not have a corresponding entity
12
12
  let iterations;
13
13
  let valueToEdit = value;
14
14
  for (iterations = 0; iterations < 100; iterations++) {
15
- const parseResult = parseSchemaWithReferences(schema, valueToEdit, {
15
+ const parseResult = parseSchemaWithTransformedReferences(schemaCreator, valueToEdit, schemaCreatorOptions, {
16
16
  allowInvalidReferences: true,
17
17
  });
18
18
  const { references, entities } = parseResult;
@@ -55,8 +55,16 @@ export function fixRefDeletions(schema, value) {
55
55
  for (const ref of referencesMissingEntity) {
56
56
  const id = get(valueToEdit, ref.path);
57
57
  switch (ref.onDelete) {
58
- case 'SET_NULL': {
59
- set(valueToEdit, ref.path, null);
58
+ case 'SET_UNDEFINED': {
59
+ // Check if reference is inside an array
60
+ if (ref.path.length > 0) {
61
+ const parentPath = ref.path.slice(0, -1);
62
+ const parent = get(valueToEdit, parentPath);
63
+ if (Array.isArray(parent)) {
64
+ throw new TypeError(`SET_UNDEFINED cannot be used for references inside arrays at path ${ref.path.join('.')}. Use DELETE instead to remove the array element.`);
65
+ }
66
+ }
67
+ set(valueToEdit, ref.path, undefined);
60
68
  break;
61
69
  }
62
70
  case 'RESTRICT': {