@webda/content-mapper 0.0.0-stage → 4.0.0-beta.5

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 (115) hide show
  1. package/LICENSE +166 -0
  2. package/lib/coercions.d.ts +22 -0
  3. package/lib/coercions.d.ts.map +1 -0
  4. package/lib/coercions.js +10 -0
  5. package/lib/coercions.js.map +1 -0
  6. package/lib/context.d.ts +56 -0
  7. package/lib/context.d.ts.map +1 -0
  8. package/lib/context.js +111 -0
  9. package/lib/context.js.map +1 -0
  10. package/lib/defaults.d.ts +31 -0
  11. package/lib/defaults.d.ts.map +1 -0
  12. package/lib/defaults.js +33 -0
  13. package/lib/defaults.js.map +1 -0
  14. package/lib/generators/accessors.d.ts +15 -0
  15. package/lib/generators/accessors.d.ts.map +1 -0
  16. package/lib/generators/accessors.js +567 -0
  17. package/lib/generators/accessors.js.map +1 -0
  18. package/lib/generators/behaviors.d.ts +21 -0
  19. package/lib/generators/behaviors.d.ts.map +1 -0
  20. package/lib/generators/behaviors.js +292 -0
  21. package/lib/generators/behaviors.js.map +1 -0
  22. package/lib/generators/imports.d.ts +86 -0
  23. package/lib/generators/imports.d.ts.map +1 -0
  24. package/lib/generators/imports.js +205 -0
  25. package/lib/generators/imports.js.map +1 -0
  26. package/lib/generators/loadparameters.d.ts +7 -0
  27. package/lib/generators/loadparameters.d.ts.map +1 -0
  28. package/lib/generators/loadparameters.js +175 -0
  29. package/lib/generators/loadparameters.js.map +1 -0
  30. package/lib/generators/qlvalidator.d.ts +53 -0
  31. package/lib/generators/qlvalidator.d.ts.map +1 -0
  32. package/lib/generators/qlvalidator.js +238 -0
  33. package/lib/generators/qlvalidator.js.map +1 -0
  34. package/lib/index.d.ts +53 -0
  35. package/lib/index.d.ts.map +1 -0
  36. package/lib/index.js +36 -0
  37. package/lib/index.js.map +1 -0
  38. package/lib/module-discovery.d.ts +211 -0
  39. package/lib/module-discovery.d.ts.map +1 -0
  40. package/lib/module-discovery.js +662 -0
  41. package/lib/module-discovery.js.map +1 -0
  42. package/lib/module.d.ts +213 -0
  43. package/lib/module.d.ts.map +1 -0
  44. package/lib/module.js +1243 -0
  45. package/lib/module.js.map +1 -0
  46. package/lib/plan.d.ts +101 -0
  47. package/lib/plan.d.ts.map +1 -0
  48. package/lib/plan.js +61 -0
  49. package/lib/plan.js.map +1 -0
  50. package/lib/property-order.d.ts +37 -0
  51. package/lib/property-order.d.ts.map +1 -0
  52. package/lib/property-order.js +141 -0
  53. package/lib/property-order.js.map +1 -0
  54. package/lib/schema/action.d.ts +46 -0
  55. package/lib/schema/action.d.ts.map +1 -0
  56. package/lib/schema/action.js +190 -0
  57. package/lib/schema/action.js.map +1 -0
  58. package/lib/schema/annotations.d.ts +63 -0
  59. package/lib/schema/annotations.d.ts.map +1 -0
  60. package/lib/schema/annotations.js +116 -0
  61. package/lib/schema/annotations.js.map +1 -0
  62. package/lib/schema/converter.d.ts +363 -0
  63. package/lib/schema/converter.d.ts.map +1 -0
  64. package/lib/schema/converter.js +1377 -0
  65. package/lib/schema/converter.js.map +1 -0
  66. package/lib/schema/jsdoc.d.ts +34 -0
  67. package/lib/schema/jsdoc.d.ts.map +1 -0
  68. package/lib/schema/jsdoc.js +206 -0
  69. package/lib/schema/jsdoc.js.map +1 -0
  70. package/lib/schema/model.d.ts +27 -0
  71. package/lib/schema/model.d.ts.map +1 -0
  72. package/lib/schema/model.js +86 -0
  73. package/lib/schema/model.js.map +1 -0
  74. package/lib/schema/project.d.ts +34 -0
  75. package/lib/schema/project.d.ts.map +1 -0
  76. package/lib/schema/project.js +305 -0
  77. package/lib/schema/project.js.map +1 -0
  78. package/lib/schema/service.d.ts +62 -0
  79. package/lib/schema/service.d.ts.map +1 -0
  80. package/lib/schema/service.js +130 -0
  81. package/lib/schema/service.js.map +1 -0
  82. package/lib/schema/types.d.ts +61 -0
  83. package/lib/schema/types.d.ts.map +1 -0
  84. package/lib/schema/types.js +36 -0
  85. package/lib/schema/types.js.map +1 -0
  86. package/lib/schema/worker-cli.d.ts +3 -0
  87. package/lib/schema/worker-cli.d.ts.map +1 -0
  88. package/lib/schema/worker-cli.js +7 -0
  89. package/lib/schema/worker-cli.js.map +1 -0
  90. package/lib/schema/worker.d.ts +81 -0
  91. package/lib/schema/worker.d.ts.map +1 -0
  92. package/lib/schema/worker.js +186 -0
  93. package/lib/schema/worker.js.map +1 -0
  94. package/lib/server.d.ts +2 -0
  95. package/lib/server.d.ts.map +1 -0
  96. package/lib/server.js +133 -0
  97. package/lib/server.js.map +1 -0
  98. package/lib/session.d.ts +84 -0
  99. package/lib/session.d.ts.map +1 -0
  100. package/lib/session.js +141 -0
  101. package/lib/session.js.map +1 -0
  102. package/lib/spans.d.ts +46 -0
  103. package/lib/spans.d.ts.map +1 -0
  104. package/lib/spans.js +64 -0
  105. package/lib/spans.js.map +1 -0
  106. package/lib/twopass.d.ts +45 -0
  107. package/lib/twopass.d.ts.map +1 -0
  108. package/lib/twopass.js +87 -0
  109. package/lib/twopass.js.map +1 -0
  110. package/lib/vite.d.ts +20 -0
  111. package/lib/vite.d.ts.map +1 -0
  112. package/lib/vite.js +41 -0
  113. package/lib/vite.js.map +1 -0
  114. package/package.json +93 -3
  115. package/README.md +0 -3
@@ -0,0 +1,363 @@
1
+ import type { Checker, Project, Type } from "typescript/unstable/sync";
2
+ import type { Node } from "typescript/unstable/ast";
3
+ import { type JSONSchema7 } from "./types.ts";
4
+ /**
5
+ * Which side of an accessor pair a schema describes.
6
+ *
7
+ * Service parameters only ever use `input`. The DTO modes exist for stage 7.2
8
+ * (model schemas) and are declared here so the property filter has one
9
+ * definition rather than two.
10
+ */
11
+ export type SchemaMode = "input" | "output" | "dto-in" | "dto-out";
12
+ /** How a `Buffer`-like type is represented. */
13
+ export type BufferStrategy = "base64" | "binary" | "hex" | "array";
14
+ /** Converter construction options. */
15
+ export interface ConverterOptions {
16
+ /** Project the checker belongs to, needed to resolve node handles. */
17
+ project: Project;
18
+ /** The resident checker. */
19
+ checker: Checker;
20
+ /** Recursion limit; beyond it a property is left unconstrained. */
21
+ maxDepth?: number;
22
+ /** Accessor handling. */
23
+ mode?: SchemaMode;
24
+ /** Suppress the automatic `default: false` on booleans. */
25
+ disableBooleanDefaultToFalse?: boolean;
26
+ /** Representation for `Buffer` / `ArrayBuffer`. */
27
+ bufferStrategy?: BufferStrategy;
28
+ }
29
+ /**
30
+ * Converts TypeScript types into JSON Schema draft-07 documents.
31
+ *
32
+ * One instance may serve many conversions; `definitions` are reset per
33
+ * document.
34
+ */
35
+ export declare class SchemaConverter {
36
+ private readonly project;
37
+ private readonly checker;
38
+ private readonly maxDepth;
39
+ private readonly mode;
40
+ private readonly booleanDefaultFalse;
41
+ private readonly bufferStrategy;
42
+ /** Sub-schemas hoisted out of the current document. */
43
+ private definitions;
44
+ /** Fallback resolution context when a property has no declaration. */
45
+ private targetNode;
46
+ /**
47
+ * @param options - project, checker and conversion settings
48
+ */
49
+ constructor(options: ConverterOptions);
50
+ /**
51
+ * Convert the type at a node into a complete schema document.
52
+ *
53
+ * Mirrors `SchemaGenerator.getSchemaFromNodes` with a single node, which is
54
+ * how `@webda/compiler` always calls it.
55
+ * @param node - a declaration or type node
56
+ * @returns a self-contained draft-07 document
57
+ */
58
+ fromNode(node: Node): JSONSchema7;
59
+ /**
60
+ * Convert a type into a complete schema document.
61
+ *
62
+ * Mirrors `SchemaGenerator.getSchemaFromType`.
63
+ * @param type - the type to convert
64
+ * @param contextNode - resolution context for properties without declarations
65
+ * @returns a self-contained draft-07 document
66
+ */
67
+ fromType(type: Type, contextNode?: Node): JSONSchema7;
68
+ /**
69
+ * Build one document: convert, hoist, inline the root, sort.
70
+ * @param type - the type to convert
71
+ * @param typeName - key the root definition is registered under
72
+ * @param node - resolution context
73
+ * @returns the finished document
74
+ */
75
+ private document;
76
+ /**
77
+ * Follow the root `$ref` into the document body.
78
+ *
79
+ * A definition can itself be a bare `$ref` — an anonymous object registered
80
+ * under a union-branch path, for instance — so the chain is followed to the
81
+ * end and every consumed definition removed.
82
+ * @param result - the document to flatten, mutated in place
83
+ */
84
+ private inlineRootRef;
85
+ /**
86
+ * Convert one type into `definition`, in place.
87
+ *
88
+ * The branch order matters and is taken from `@webda/schema`: literals
89
+ * before their widened forms, `Date` and `RegExp` before the generic
90
+ * class/interface handling, arrays after unions. The final `else` throws.
91
+ * @param type - the type to convert
92
+ * @param definition - schema to populate
93
+ * @param path - schema path, used for definition keys and error messages
94
+ * @param node - declaration the type came from, when there is one
95
+ * @param depth - recursion depth
96
+ * @returns whether the parent should keep the property, and its optionality
97
+ */
98
+ private property;
99
+ /**
100
+ * Merge annotations from a type alias tagged `@schemaInherits`.
101
+ *
102
+ * `type Email = string` with `@format email` on the alias only reaches the
103
+ * property when the alias opts in, otherwise every use of a documented alias
104
+ * would inherit its prose.
105
+ * @param definition - schema to enrich
106
+ * @param node - the property declaration
107
+ */
108
+ private inheritAliasDocs;
109
+ /**
110
+ * Convert a class, interface, anonymous object or generic reference.
111
+ *
112
+ * The shape is registered in `definitions` and the caller's slot replaced
113
+ * with a `$ref`, except at the document root where an anonymous object is
114
+ * inlined instead — otherwise the root would sit behind a definition keyed
115
+ * by its own stringified shape.
116
+ * @param type - the object-like type
117
+ * @param definition - schema slot to populate
118
+ * @param path - schema path
119
+ * @param typeName - stringified type, used as the definition key
120
+ * @param node - declaration context
121
+ * @param depth - recursion depth
122
+ * @returns keep or skip
123
+ */
124
+ private objectLike;
125
+ /**
126
+ * Prefer the apparent type when a type alias hides the concrete shape.
127
+ * @param type - the declared type
128
+ * @returns the type whose properties should be enumerated
129
+ */
130
+ private structuralType;
131
+ /**
132
+ * Build the `type` / `properties` / `required` / `additionalProperties`
133
+ * portion of an object schema.
134
+ *
135
+ * Properties are read off the **type**, not the declaration's own members,
136
+ * so inherited attributes are included.
137
+ * @param type - the object type
138
+ * @param path - schema path of the object
139
+ * @returns the object schema
140
+ */
141
+ private objectShape;
142
+ /**
143
+ * The type a property contributes to this schema, honouring accessors.
144
+ *
145
+ * For an input schema a getter-only property cannot be supplied at all; when
146
+ * a setter exists its parameter type is the accepted one, which is what
147
+ * makes the asymmetric accessors the content mapper generates meaningful.
148
+ * @param prop - the property symbol
149
+ * @param declaration - its primary declaration
150
+ * @param location - resolution context
151
+ * @returns the type to convert, or undefined to drop the property
152
+ */
153
+ private readableType;
154
+ /**
155
+ * Register a schema under a definition key and rewrite the slot as a `$ref`.
156
+ *
157
+ * Inline object types stringify to their whole shape, which makes a useless
158
+ * key, so those fall back to the schema path.
159
+ * @param rawKey - stringified type
160
+ * @param source - the schema to store
161
+ * @param slot - the caller's schema object, emptied and replaced by a `$ref`
162
+ * @param path - schema path, used when the key is unusable
163
+ */
164
+ private registerDefinition;
165
+ /**
166
+ * The return type of the first of `methodNames` the type declares.
167
+ *
168
+ * The apparent type is consulted first so a generic instantiation carries
169
+ * its type arguments into the signature.
170
+ * @param type - the type to inspect
171
+ * @param methodNames - names to try, in order
172
+ * @param location - resolution context
173
+ * @returns the return type, or undefined when no method matches
174
+ */
175
+ private methodReturnType;
176
+ /**
177
+ * Whether a type still contains an unsubstituted type parameter.
178
+ * @param type - the type to inspect
179
+ * @param seen - types already visited, guarding cycles
180
+ * @returns true when a type parameter is reachable
181
+ */
182
+ private mentionsTypeParameter;
183
+ /**
184
+ * The value a class accepts through `fromDto`, for the Input schema.
185
+ *
186
+ * Static and instance declarations both count, because `fromDto` is
187
+ * normally static. A first parameter of `never` is the explicit way to say
188
+ * "this attribute is never supplied".
189
+ * @param type - the type to inspect
190
+ * @param location - resolution context
191
+ * @returns the accepted type, `"skip"`, or undefined when absent
192
+ */
193
+ private resolveFromDto;
194
+ /**
195
+ * Whether a class is tagged `@readOnly`, opting its attributes out of Input.
196
+ * @param type - the type to inspect
197
+ * @returns true when the tag is present
198
+ */
199
+ private hasReadOnlyTag;
200
+ /**
201
+ * Reduce an intersection to the constituent that carries the data.
202
+ *
203
+ * `string & { __brand: x }` is a string, and `T & { toString(): string }`
204
+ * is `T` — an `allOf` of the parts would be technically true and useless.
205
+ * @param type - the type to simplify
206
+ * @returns the simplified type, or the original
207
+ */
208
+ private simplifyIntersection;
209
+ /**
210
+ * Union constituents in the order `webda.module.json` records them.
211
+ *
212
+ * `UnionType.getTypes()` returns them alphabetically, so without this every
213
+ * `enum` and every `type: [..]` in the corpus is reordered.
214
+ *
215
+ * TypeScript 6 exposed a union's constituents sorted by type id, and ids
216
+ * are issued as types are created. That has two regimes, and reproducing
217
+ * both is what makes this correct rather than lucky:
218
+ *
219
+ * - **Primitives** are interned when the checker starts, in a fixed order,
220
+ * so they always sort ahead of everything else and among themselves by
221
+ * that order. `number | string` is recorded as `["string", "number"]`.
222
+ * - **Literals** are interned on first use, so their ids follow the source.
223
+ *
224
+ * Sorting on 7.1's ids reproduces neither reliably: they are assigned as
225
+ * the session happens to query, so `"SUCCESS" | "ERROR"` came back reversed
226
+ * whenever something earlier in the batch had already interned `"ERROR"` —
227
+ * the score depended on which requests shared a worker. Primitives are
228
+ * ranked from the table instead, and literals from the syntax.
229
+ * @param type - the union type
230
+ * @param node - the declaration the union was reached through
231
+ * @returns the constituents, in the recorded order
232
+ */
233
+ private unionOrder;
234
+ /**
235
+ * Type ids of a union's constituents, in the order the syntax lists them.
236
+ * @param type - the union type
237
+ * @param node - the declaration the union was reached through
238
+ * @returns the ids, or undefined when there is no syntax to read
239
+ */
240
+ private declaredUnionOrder;
241
+ /**
242
+ * The `UnionTypeNode` a union type was written as, if there is one.
243
+ * @param type - the union type
244
+ * @param node - the declaration the union was reached through
245
+ * @returns the syntax node
246
+ */
247
+ private unionTypeNode;
248
+ /**
249
+ * Convert a union into `anyOf`, then simplify.
250
+ *
251
+ * The simplifications are what turn most unions in the corpus into the
252
+ * `enum` and `type: [..]` forms that appear in `webda.module.json`, so they
253
+ * are part of the output contract rather than cosmetic.
254
+ * @param type - the union type
255
+ * @param definition - schema to populate
256
+ * @param path - schema path
257
+ * @param node - the declaration the union was reached through
258
+ * @param depth - recursion depth
259
+ * @returns keep, and whether `undefined` was a member
260
+ */
261
+ private union;
262
+ /**
263
+ * Collapse an `anyOf` into the narrowest equivalent form.
264
+ * @param definition - schema carrying `anyOf`, mutated in place
265
+ */
266
+ private simplifyUnion;
267
+ /**
268
+ * Convert an intersection by merging object constituents.
269
+ *
270
+ * A merge is only sound when every constituent is an object; anything else
271
+ * falls back to `allOf`, which states the constraint without pretending to
272
+ * flatten it.
273
+ * @param type - the intersection type
274
+ * @param definition - schema to populate
275
+ * @param path - schema path
276
+ * @param depth - recursion depth
277
+ * @returns keep
278
+ */
279
+ private intersection;
280
+ /**
281
+ * Convert an array or tuple type.
282
+ * @param type - the array-like type
283
+ * @param definition - schema to populate
284
+ * @param path - schema path
285
+ * @param depth - recursion depth
286
+ * @returns keep
287
+ */
288
+ private array;
289
+ /**
290
+ * Convert a tuple into positional or homogeneous `items`.
291
+ * @param type - the tuple reference
292
+ * @param definition - schema to populate
293
+ * @param path - schema path
294
+ * @param depth - recursion depth
295
+ * @returns keep
296
+ */
297
+ private tuple;
298
+ /**
299
+ * Whether the type should be represented as a JSON array.
300
+ *
301
+ * Mapped types are excluded explicitly: the checker synthesises a numeric
302
+ * index signature for some of them, which would otherwise read as an array.
303
+ * @param type - the type to test
304
+ * @returns true when array-like
305
+ */
306
+ private isArrayLike;
307
+ /**
308
+ * The element type of an array-like type.
309
+ * @param type - the array-like type
310
+ * @returns the element type, or undefined when it cannot be resolved
311
+ */
312
+ private elementType;
313
+ /**
314
+ * Whether the type is a binary buffer.
315
+ * @param type - the type to test
316
+ * @param typeName - its stringified form
317
+ * @returns true for `Buffer`, `ArrayBuffer` or a `Buffer`-flavoured `Uint8Array`
318
+ */
319
+ private isBuffer;
320
+ /**
321
+ * Write the configured buffer representation.
322
+ * @param definition - schema to populate
323
+ */
324
+ private applyBuffer;
325
+ /**
326
+ * Whether the current mode describes values being supplied.
327
+ * @returns true for `input` and `dto-in`
328
+ */
329
+ private isInputMode;
330
+ /**
331
+ * Resolve a symbol's primary declaration node.
332
+ *
333
+ * `Symbol.declarations` are handles, not nodes; reaching the AST needs an
334
+ * explicit `resolve` against the project.
335
+ * @param symbol - the symbol
336
+ * @returns the declaration, when it has one
337
+ */
338
+ private declarationOf;
339
+ /**
340
+ * Whether a property is keyed by an ES symbol.
341
+ *
342
+ * Symbol-keyed slots are how Webda stores model internals
343
+ * (`[WEBDA_STORAGE]`, `[WEBDA_EVENTS]`), and none of them are JSON.
344
+ * @param prop - the property symbol
345
+ * @param declaration - its declaration
346
+ * @returns true when the key is an ES symbol
347
+ */
348
+ private isSymbolKeyed;
349
+ /**
350
+ * The initializer expression governing a type, if any.
351
+ * @param type - the type
352
+ * @param node - the declaration it was read from
353
+ * @returns the initializer expression
354
+ */
355
+ private initializerFor;
356
+ /**
357
+ * The name under which a declaration's schema is registered.
358
+ * @param node - the node being converted
359
+ * @returns the declared name, or undefined for type nodes
360
+ */
361
+ private declaredName;
362
+ }
363
+ //# sourceMappingURL=converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/schema/converter.ts"],"names":[],"mappings":"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"}