@mostajs/orm-adapter 0.3.0 → 0.4.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  All notable changes to `@mostajs/orm-adapter` will be documented in this file.
4
4
 
5
+ ## [0.4.0] — 2026-04-12
6
+
7
+ ### Added
8
+
9
+ - **OpenApiAdapter** : converts OpenAPI 2.0/3.0/3.1 specs to `EntitySchema[]`
10
+ - OpenAPI 3.1 : full JSON Schema 2020-12 semantics
11
+ - OpenAPI 3.0.x : auto-normalized to 3.1 shape before conversion
12
+ - `nullable: true` → `type: [T, "null"]`
13
+ - `example: X` → `examples: [X]`
14
+ - `exclusiveMinimum: true` + `minimum: X` → `exclusiveMinimum: X`
15
+ - Swagger 2.0 detected with PREVIEW_FEATURE warning
16
+ - Extracts all `components/schemas` as entities
17
+ - Delegates to JsonSchemaAdapter for the schema conversion pipeline
18
+ - **x-mostajs-relation preservation** : re-attaches extensions on $ref-bearing properties (dereference strips siblings)
19
+ - **Title injection** : auto-adds `title: <key>` to each schema for relation detection
20
+ - **Input forms** : object, JSON string (YAML requires pre-parsing)
21
+ - Uses `@readme/openapi-parser` for validation + dereferencing
22
+ - **Utils** : `openapi-normalize` (3.0 → 3.1 transformations)
23
+ - **JsonSchemaAdapter.schemasToEntities()** : public method to convert a named schema map without root-detection heuristic
24
+ - 50 new unit tests on 3 fixtures :
25
+ - `petstore-3.1.json` (3 entities, relations, discriminator, x-mostajs-*)
26
+ - `petstore-3.0.json` (legacy with all normalizations)
27
+ - `discriminator.json` (oneOf polymorphism)
28
+
29
+ ### Changed
30
+
31
+ - `createDefaultRegistry()` now includes OpenApiAdapter (4 adapters total)
32
+ - `JsonSchemaAdapter.toEntitySchema()` : uses `structuredClone` instead of JSON.parse/stringify to handle circular refs from OpenAPI's dereferenced tree
33
+
34
+ ### Total test coverage
35
+
36
+ 196 tests across 4 adapters :
37
+ - 31 native
38
+ - 55 prisma
39
+ - 60 jsonschema
40
+ - 50 openapi
41
+
5
42
  ## [0.3.0] — 2026-04-12
6
43
 
7
44
  ### Added
package/README.md CHANGED
@@ -147,9 +147,28 @@ export class MyCustomAdapter extends AbstractAdapter {
147
147
  - **v0.1.0** — NativeAdapter + core (AbstractAdapter, Registry) ✅
148
148
  - **v0.2.0** — PrismaAdapter (scalars, relations, enums, implicit M-N) ✅
149
149
  - **v0.3.0** — JsonSchemaAdapter (Draft 2020-12 + Draft-07 + allOf + x-mostajs-*) ✅
150
- - **v0.4.0** — OpenApiAdapter (3.1 with 3.0 normalization)
150
+ - **v0.4.0** — OpenApiAdapter (3.1 + 3.0 normalization + Swagger 2.0 detect)
151
151
  - **v1.0.0** — Production-ready, all 4 adapters with reverse conversion
152
152
 
153
+ ## OpenApiAdapter example
154
+
155
+ ```ts
156
+ import { OpenApiAdapter } from '@mostajs/orm-adapter';
157
+ import { readFileSync } from 'fs';
158
+
159
+ const spec = JSON.parse(readFileSync('./openapi.json', 'utf8'));
160
+ const adapter = new OpenApiAdapter();
161
+ const entities = await adapter.toEntitySchema(spec);
162
+
163
+ // Extracts every components/schemas entry as an EntitySchema.
164
+ // Auto-handles:
165
+ // - OpenAPI 3.0 → 3.1 normalization (nullable, exclusiveMin, examples)
166
+ // - $ref resolution (internal)
167
+ // - allOf flattening (inheritance)
168
+ // - discriminator → EntitySchema.discriminator
169
+ // - x-mostajs-relation on $ref-bearing properties (preserved across dereference)
170
+ ```
171
+
153
172
  ## PrismaAdapter example
154
173
 
155
174
  ```ts
@@ -1,6 +1,7 @@
1
1
  import type { EntitySchema } from '@mostajs/orm';
2
2
  import { AbstractAdapter } from '../core/abstract.adapter.js';
3
3
  import { type AdapterOptions } from '../core/types.js';
4
+ import { type JsonSchema } from '../utils/jsonschema-types.js';
4
5
  /**
5
6
  * JsonSchemaAdapter — converts JSON Schema to EntitySchema[].
6
7
  *
@@ -29,6 +30,12 @@ export declare class JsonSchemaAdapter extends AbstractAdapter {
29
30
  readonly version = "0.3.0";
30
31
  canParse(input: string | object): boolean;
31
32
  toEntitySchema(input: string | object, opts?: AdapterOptions): Promise<EntitySchema[]>;
33
+ /**
34
+ * Convert a named map of schemas directly to EntitySchema[].
35
+ * Used by OpenApiAdapter when it has already extracted components.schemas.
36
+ * Skips the "root entity" detection heuristic.
37
+ */
38
+ schemasToEntities(schemas: Record<string, JsonSchema>, opts?: AdapterOptions): Promise<EntitySchema[]>;
32
39
  private collectEntities;
33
40
  private nameFromId;
34
41
  private convertEntity;
@@ -1 +1 @@
1
- {"version":3,"file":"jsonschema.adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/jsonschema.adapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAA4D,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAe,KAAK,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAmBzF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,qBAAqB;IACpC,QAAQ,CAAC,OAAO,WAAW;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAoBnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwC5F,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IAwErB,OAAO,CAAC,eAAe;IAgDvB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,UAAU;IAgDlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,YAAY;CAQrB"}
1
+ {"version":3,"file":"jsonschema.adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/jsonschema.adapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAA4D,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAe,KAAK,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EACL,KAAK,UAAU,EAOhB,MAAM,8BAA8B,CAAC;AAStC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,qBAAqB;IACpC,QAAQ,CAAC,OAAO,WAAW;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAoBnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwC5F;;;;OAIG;IACG,iBAAiB,CACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACnC,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;IAa1B,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IAwErB,OAAO,CAAC,eAAe;IAgDvB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,UAAU;IAgDlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,YAAY;CAQrB"}
@@ -62,8 +62,12 @@ export class JsonSchemaAdapter extends AbstractAdapter {
62
62
  let resolved;
63
63
  try {
64
64
  // Dereference : resolves all $ref into inline schemas.
65
- // We clone to avoid mutating caller's input.
66
- resolved = await $RefParser.dereference(JSON.parse(JSON.stringify(raw)));
65
+ // structuredClone handles circular references (unlike JSON.parse/stringify)
66
+ // which matter when this adapter is called from OpenApiAdapter on already-dereferenced specs.
67
+ const cloned = typeof structuredClone === 'function'
68
+ ? structuredClone(raw)
69
+ : JSON.parse(JSON.stringify(raw));
70
+ resolved = await $RefParser.dereference(cloned);
67
71
  }
68
72
  catch (e) {
69
73
  throw new InvalidSchemaError(`Failed to dereference JSON Schema: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
@@ -82,6 +86,19 @@ export class JsonSchemaAdapter extends AbstractAdapter {
82
86
  const entities = candidates.map(c => this.convertEntity(c, candidates, seen, opts));
83
87
  return entities;
84
88
  }
89
+ /**
90
+ * Convert a named map of schemas directly to EntitySchema[].
91
+ * Used by OpenApiAdapter when it has already extracted components.schemas.
92
+ * Skips the "root entity" detection heuristic.
93
+ */
94
+ async schemasToEntities(schemas, opts) {
95
+ const candidates = Object.entries(schemas).map(([name, schema]) => ({
96
+ name: this.pascalCase(name),
97
+ schema,
98
+ }));
99
+ const seen = new Set();
100
+ return candidates.map(c => this.convertEntity(c, candidates, seen, opts));
101
+ }
85
102
  // ============================================================
86
103
  // Entity collection
87
104
  // ============================================================
@@ -1 +1 @@
1
- {"version":3,"file":"jsonschema.adapter.js","sourceRoot":"","sources":["../../src/adapters/jsonschema.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonschema.adapter.js","sourceRoot":"","sources":["../../src/adapters/jsonschema.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ import { AbstractAdapter } from '../core/abstract.adapter.js';
3
+ import { type AdapterOptions } from '../core/types.js';
4
+ /**
5
+ * OpenApiAdapter — converts OpenAPI specs to EntitySchema[].
6
+ *
7
+ * Supported (MVP v0.4.0) :
8
+ * - OpenAPI 3.0.x (auto-normalized to 3.1 shape before conversion)
9
+ * - OpenAPI 3.1.x (JSON Schema 2020-12 compliant)
10
+ * - Extracts all `components/schemas` as entities
11
+ * - All features of JsonSchemaAdapter (allOf, discriminator, $ref, x-mostajs-*, etc.)
12
+ * - 3.0→3.1 normalizations :
13
+ * - `nullable: true` → `type: [T, "null"]`
14
+ * - `example: X` → `examples: [X]`
15
+ * - `exclusiveMinimum: true` → `exclusiveMinimum: <number>`
16
+ * - Input : object, JSON string, YAML string, or file path (via @readme/openapi-parser)
17
+ *
18
+ * Not supported yet (v0.5+) :
19
+ * - paths → CRUD endpoint deduction (opt-in flag planned)
20
+ * - Inline schemas inside `paths` (only `components/schemas` become entities)
21
+ * - Webhooks (detected, parsed, but not mapped to entities)
22
+ * - `pathItems` components (parsed, not used for entities)
23
+ * - File upload body (kept as string with warning)
24
+ */
25
+ export declare class OpenApiAdapter extends AbstractAdapter {
26
+ readonly name = "openapi";
27
+ readonly vendor = "openapis.org";
28
+ readonly version = "0.4.0";
29
+ /** Internal JsonSchemaAdapter used to convert normalized schemas */
30
+ private readonly jsonSchemaAdapter;
31
+ canParse(input: string | object): boolean;
32
+ toEntitySchema(input: string | object, opts?: AdapterOptions): Promise<EntitySchema[]>;
33
+ /**
34
+ * Walk the ORIGINAL (pre-dereference) spec and record all x-mostajs-relation
35
+ * extensions on properties that also have a $ref. These siblings are stripped
36
+ * during dereference, so we capture them here and re-attach after.
37
+ */
38
+ private extractRelationOverrides;
39
+ /**
40
+ * After dereference, re-attach the x-mostajs-relation extensions we extracted.
41
+ * The property schema becomes `{ ...inlinedRef, 'x-mostajs-relation': saved }`.
42
+ */
43
+ private reattachRelationOverrides;
44
+ /** Clone input for the parser (must not mutate caller's input) */
45
+ private cloneForParser;
46
+ /**
47
+ * Normalize input to object form.
48
+ * @readme/openapi-parser treats strings as file paths (not content),
49
+ * so we JSON.parse strings ourselves here.
50
+ */
51
+ private resolveInput;
52
+ /**
53
+ * Ensure each schema in components.schemas has `title: <key>`.
54
+ * After dereference, inlined schemas need a title for JsonSchemaAdapter's
55
+ * relation detection (which matches property schema titles against entity names).
56
+ */
57
+ private injectSchemaTitles;
58
+ /** Parse JSON string if necessary — used for canParse detection only */
59
+ private tryParseAny;
60
+ }
61
+ //# sourceMappingURL=openapi.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/openapi.adapter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAe,KAAK,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAkBzF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,MAAM,kBAAkB;IACjC,QAAQ,CAAC,OAAO,WAAW;IAE3B,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAE7D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAcnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8E5F;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAuBjC,kEAAkE;IAClE,OAAO,CAAC,cAAc;IAMtB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B,wEAAwE;IACxE,OAAO,CAAC,WAAW;CAWpB"}
@@ -0,0 +1,220 @@
1
+ // openapi.adapter.ts
2
+ // Converts OpenAPI 3.0 / 3.1 specifications to EntitySchema[].
3
+ // Extracts components/schemas and feeds them through the JsonSchema pipeline.
4
+ // Parser : @readme/openapi-parser (supports 2.0, 3.0, 3.1 complet).
5
+ // Author: Dr Hamid MADANI drmdh@msn.com
6
+ // License: AGPL-3.0-or-later
7
+ import { dereference, validate } from '@readme/openapi-parser';
8
+ import { AbstractAdapter } from '../core/abstract.adapter.js';
9
+ import { WarningCode } from '../core/types.js';
10
+ import { InvalidSchemaError } from '../core/errors.js';
11
+ import { JsonSchemaAdapter } from './jsonschema.adapter.js';
12
+ import { normalizeComponentsSchemas, isOpenApi30 } from '../utils/openapi-normalize.js';
13
+ /**
14
+ * OpenApiAdapter — converts OpenAPI specs to EntitySchema[].
15
+ *
16
+ * Supported (MVP v0.4.0) :
17
+ * - OpenAPI 3.0.x (auto-normalized to 3.1 shape before conversion)
18
+ * - OpenAPI 3.1.x (JSON Schema 2020-12 compliant)
19
+ * - Extracts all `components/schemas` as entities
20
+ * - All features of JsonSchemaAdapter (allOf, discriminator, $ref, x-mostajs-*, etc.)
21
+ * - 3.0→3.1 normalizations :
22
+ * - `nullable: true` → `type: [T, "null"]`
23
+ * - `example: X` → `examples: [X]`
24
+ * - `exclusiveMinimum: true` → `exclusiveMinimum: <number>`
25
+ * - Input : object, JSON string, YAML string, or file path (via @readme/openapi-parser)
26
+ *
27
+ * Not supported yet (v0.5+) :
28
+ * - paths → CRUD endpoint deduction (opt-in flag planned)
29
+ * - Inline schemas inside `paths` (only `components/schemas` become entities)
30
+ * - Webhooks (detected, parsed, but not mapped to entities)
31
+ * - `pathItems` components (parsed, not used for entities)
32
+ * - File upload body (kept as string with warning)
33
+ */
34
+ export class OpenApiAdapter extends AbstractAdapter {
35
+ name = 'openapi';
36
+ vendor = 'openapis.org';
37
+ version = '0.4.0';
38
+ /** Internal JsonSchemaAdapter used to convert normalized schemas */
39
+ jsonSchemaAdapter = new JsonSchemaAdapter();
40
+ canParse(input) {
41
+ const obj = this.tryParseAny(input);
42
+ if (!obj || typeof obj !== 'object')
43
+ return false;
44
+ const doc = obj;
45
+ // Strongest indicator : `openapi: "3.x.y"` field
46
+ if (typeof doc.openapi === 'string' && /^3\./.test(doc.openapi))
47
+ return true;
48
+ // Swagger 2.0 shape (not yet supported but let us detect and warn)
49
+ if (obj.swagger === '2.0')
50
+ return true;
51
+ return false;
52
+ }
53
+ async toEntitySchema(input, opts) {
54
+ // 1. Normalize input to object (parse JSON string if needed).
55
+ // @readme/openapi-parser treats strings as file paths — we want inline parsing.
56
+ const specInput = this.resolveInput(input);
57
+ // 2. Pre-annotate components.schemas with title = key, so dereference propagates names.
58
+ this.injectSchemaTitles(specInput);
59
+ // 3. Pre-extract x-mostajs-relation from $ref-bearing properties before dereference.
60
+ // json-schema-ref-parser strips siblings when resolving $ref.
61
+ const relationOverrides = this.extractRelationOverrides(specInput);
62
+ // 4. Parse + dereference via @readme/openapi-parser
63
+ let spec;
64
+ try {
65
+ // We validate first for diagnostics, but don't fail on warnings
66
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
+ const report = await validate(this.cloneForParser(specInput));
68
+ if (!report.valid) {
69
+ this.warn(opts, {
70
+ code: WarningCode.FALLBACK_APPLIED,
71
+ message: `OpenAPI spec has validation issues; proceeding anyway`,
72
+ });
73
+ }
74
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+ spec = (await dereference(this.cloneForParser(specInput)));
76
+ }
77
+ catch (e) {
78
+ throw new InvalidSchemaError(`Failed to parse OpenAPI spec: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
79
+ }
80
+ // 4b. Re-attach x-mostajs-relation overrides on each property
81
+ this.reattachRelationOverrides(spec, relationOverrides);
82
+ // 2. Warn if Swagger 2.0 (not fully supported)
83
+ if (spec.swagger === '2.0') {
84
+ this.warn(opts, {
85
+ code: WarningCode.PREVIEW_FEATURE,
86
+ message: `Swagger 2.0 input — conversion may be incomplete. Consider migrating to OpenAPI 3.1.`,
87
+ });
88
+ }
89
+ const version = spec.openapi;
90
+ if (isOpenApi30(version)) {
91
+ // Handled by normalize below — just informational
92
+ }
93
+ // 3. Extract components.schemas
94
+ const rawSchemas = spec.components?.schemas;
95
+ if (!rawSchemas || Object.keys(rawSchemas).length === 0) {
96
+ this.warn(opts, {
97
+ code: WarningCode.MISSING_METADATA,
98
+ message: `OpenAPI spec has no components.schemas — no entities extracted`,
99
+ });
100
+ return [];
101
+ }
102
+ // 4. Normalize 3.0 → 3.1 if needed
103
+ const normalized = normalizeComponentsSchemas(spec.components, version, w => this.warn(opts, w));
104
+ if (!normalized)
105
+ return [];
106
+ // 5. Ensure each schema has a title so inline detection works post-dereference
107
+ const titled = {};
108
+ for (const [name, schema] of Object.entries(normalized)) {
109
+ titled[name] = schema.title ? schema : { ...schema, title: name };
110
+ }
111
+ // 6. Delegate to JsonSchemaAdapter
112
+ return this.jsonSchemaAdapter.schemasToEntities(titled, opts);
113
+ }
114
+ /**
115
+ * Walk the ORIGINAL (pre-dereference) spec and record all x-mostajs-relation
116
+ * extensions on properties that also have a $ref. These siblings are stripped
117
+ * during dereference, so we capture them here and re-attach after.
118
+ */
119
+ extractRelationOverrides(doc) {
120
+ const map = new Map(); // schemaName -> propName -> xRel
121
+ const schemas = doc.components?.schemas;
122
+ if (!schemas)
123
+ return map;
124
+ for (const [schemaName, schema] of Object.entries(schemas)) {
125
+ if (!schema?.properties)
126
+ continue;
127
+ const propMap = new Map();
128
+ for (const [propName, prop] of Object.entries(schema.properties)) {
129
+ const p = prop;
130
+ if (p['x-mostajs-relation']) {
131
+ propMap.set(propName, p['x-mostajs-relation']);
132
+ }
133
+ }
134
+ if (propMap.size > 0)
135
+ map.set(schemaName, propMap);
136
+ }
137
+ return map;
138
+ }
139
+ /**
140
+ * After dereference, re-attach the x-mostajs-relation extensions we extracted.
141
+ * The property schema becomes `{ ...inlinedRef, 'x-mostajs-relation': saved }`.
142
+ */
143
+ reattachRelationOverrides(doc, overrides) {
144
+ const schemas = doc.components?.schemas;
145
+ if (!schemas)
146
+ return;
147
+ for (const [schemaName, propMap] of overrides) {
148
+ const schema = schemas[schemaName];
149
+ if (!schema?.properties)
150
+ continue;
151
+ for (const [propName, xRel] of propMap) {
152
+ const prop = schema.properties[propName];
153
+ if (prop && typeof prop === 'object') {
154
+ prop['x-mostajs-relation'] = xRel;
155
+ }
156
+ }
157
+ }
158
+ }
159
+ // ============================================================
160
+ // Utilities
161
+ // ============================================================
162
+ /** Clone input for the parser (must not mutate caller's input) */
163
+ cloneForParser(input) {
164
+ return typeof structuredClone === 'function'
165
+ ? structuredClone(input)
166
+ : JSON.parse(JSON.stringify(input));
167
+ }
168
+ /**
169
+ * Normalize input to object form.
170
+ * @readme/openapi-parser treats strings as file paths (not content),
171
+ * so we JSON.parse strings ourselves here.
172
+ */
173
+ resolveInput(input) {
174
+ if (typeof input !== 'string')
175
+ return input;
176
+ const trimmed = input.trim();
177
+ if (trimmed.startsWith('{')) {
178
+ try {
179
+ return JSON.parse(trimmed);
180
+ }
181
+ catch (e) {
182
+ throw new InvalidSchemaError(`Invalid JSON input: ${e instanceof Error ? e.message : String(e)}`);
183
+ }
184
+ }
185
+ // YAML parsing not implemented yet — recommend pre-parsing
186
+ throw new InvalidSchemaError('OpenApiAdapter accepts objects or JSON strings. For YAML, pre-parse with js-yaml.');
187
+ }
188
+ /**
189
+ * Ensure each schema in components.schemas has `title: <key>`.
190
+ * After dereference, inlined schemas need a title for JsonSchemaAdapter's
191
+ * relation detection (which matches property schema titles against entity names).
192
+ */
193
+ injectSchemaTitles(doc) {
194
+ const schemas = doc.components?.schemas;
195
+ if (!schemas)
196
+ return;
197
+ for (const [name, schema] of Object.entries(schemas)) {
198
+ if (schema && typeof schema === 'object' && !schema.title) {
199
+ schema.title = name;
200
+ }
201
+ }
202
+ }
203
+ /** Parse JSON string if necessary — used for canParse detection only */
204
+ tryParseAny(input) {
205
+ if (typeof input !== 'string')
206
+ return input;
207
+ const trimmed = input.trim();
208
+ if (trimmed.startsWith('{')) {
209
+ try {
210
+ return JSON.parse(trimmed);
211
+ }
212
+ catch { /* fall through */ }
213
+ }
214
+ if (/^\s*openapi\s*:\s*['"]?3\./m.test(trimmed)) {
215
+ return { openapi: '3.0.0' }; // placeholder to pass canParse
216
+ }
217
+ return null;
218
+ }
219
+ }
220
+ //# sourceMappingURL=openapi.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.adapter.js","sourceRoot":"","sources":["../../src/adapters/openapi.adapter.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export { AdapterError, NoAdapterFoundError, InvalidSchemaError, StrictWarningErr
6
6
  export { NativeAdapter } from './adapters/native.adapter.js';
7
7
  export { PrismaAdapter } from './adapters/prisma.adapter.js';
8
8
  export { JsonSchemaAdapter } from './adapters/jsonschema.adapter.js';
9
+ export { OpenApiAdapter } from './adapters/openapi.adapter.js';
9
10
  export { DefaultSentinel } from './utils/prisma-default-mapper.js';
10
11
  export type { JsonSchema, JsonSchemaType, XMostajsEntity, XMostajsRelation, DraftVersion, } from './utils/jsonschema-types.js';
11
12
  import { AdapterRegistry } from './core/registry.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,YAAY,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,YAAY,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAOvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,YAAY,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,YAAY,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMrD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAOvD"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ export { AdapterError, NoAdapterFoundError, InvalidSchemaError, StrictWarningErr
10
10
  export { NativeAdapter } from './adapters/native.adapter.js';
11
11
  export { PrismaAdapter } from './adapters/prisma.adapter.js';
12
12
  export { JsonSchemaAdapter } from './adapters/jsonschema.adapter.js';
13
+ export { OpenApiAdapter } from './adapters/openapi.adapter.js';
13
14
  // --- Default-value sentinels (Prisma @default semantics) ---
14
15
  export { DefaultSentinel } from './utils/prisma-default-mapper.js';
15
16
  // --- Convenience factory ---
@@ -17,6 +18,7 @@ import { AdapterRegistry } from './core/registry.js';
17
18
  import { NativeAdapter } from './adapters/native.adapter.js';
18
19
  import { PrismaAdapter } from './adapters/prisma.adapter.js';
19
20
  import { JsonSchemaAdapter } from './adapters/jsonschema.adapter.js';
21
+ import { OpenApiAdapter } from './adapters/openapi.adapter.js';
20
22
  /**
21
23
  * Create a registry with all standard adapters pre-registered.
22
24
  * Detection order (first registered = last priority) :
@@ -29,7 +31,7 @@ export function createDefaultRegistry() {
29
31
  registry.register(new NativeAdapter());
30
32
  registry.register(new PrismaAdapter());
31
33
  registry.register(new JsonSchemaAdapter());
32
- // TODO: register OpenApiAdapter when ready
34
+ registry.register(new OpenApiAdapter());
33
35
  return registry;
34
36
  }
35
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,+CAA+C;AAC/C,wCAAwC;AACxC,6BAA6B;AAW7B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAWnE,8BAA8B;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC3C,2CAA2C;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,+CAA+C;AAC/C,wCAAwC;AACxC,6BAA6B;AAW7B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAWnE,8BAA8B;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { JsonSchema } from './jsonschema-types.js';
2
+ import { type AdapterWarning } from '../core/types.js';
3
+ /** Detect if a spec is OpenAPI 3.0.x (not 3.1) */
4
+ export declare function isOpenApi30(version: string | undefined): boolean;
5
+ /**
6
+ * Normalize a Schema Object to 3.1 shape (in-place safe — operates on a cloned tree).
7
+ * Recursively walks through properties, items, $defs, allOf/oneOf/anyOf.
8
+ *
9
+ * Transformations applied:
10
+ * - nullable: true → type: [T, "null"]
11
+ * - example: X → examples: [X] (deprecated in 3.1)
12
+ * - exclusiveMinimum: true (3.0 boolean) → exclusiveMinimum: minimum (3.1 number)
13
+ * - exclusiveMaximum: true (3.0 boolean) → exclusiveMaximum: maximum (3.1 number)
14
+ * - Drop format: binary + enforce blob (kept as-is but flagged)
15
+ */
16
+ export declare function normalizeSchema30to31(schema: JsonSchema, emitWarning: (w: AdapterWarning) => void, path?: string): JsonSchema;
17
+ /**
18
+ * Normalize ALL schemas in components.schemas.
19
+ * Only runs if the spec is OpenAPI 3.0.x.
20
+ */
21
+ export declare function normalizeComponentsSchemas(components: {
22
+ schemas?: Record<string, JsonSchema>;
23
+ } | undefined, version: string | undefined, emitWarning: (w: AdapterWarning) => void): Record<string, JsonSchema> | undefined;
24
+ //# sourceMappingURL=openapi-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-normalize.d.ts","sourceRoot":"","sources":["../../src/utils/openapi-normalize.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpE,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,EACxC,IAAI,SAAM,GACT,UAAU,CAyFZ;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAAE,GAAG,SAAS,EAChE,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,GACvC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAkBxC"}
@@ -0,0 +1,118 @@
1
+ // openapi-normalize.ts
2
+ // Normalizes OpenAPI 3.0.x schemas to OpenAPI 3.1 / JSON Schema 2020-12 shape.
3
+ // Makes it safe to feed OpenAPI schemas into the JsonSchema type mapper.
4
+ // Author: Dr Hamid MADANI drmdh@msn.com
5
+ // License: AGPL-3.0-or-later
6
+ import { WarningCode } from '../core/types.js';
7
+ /** Detect if a spec is OpenAPI 3.0.x (not 3.1) */
8
+ export function isOpenApi30(version) {
9
+ if (!version)
10
+ return false;
11
+ return /^3\.0/.test(version);
12
+ }
13
+ /**
14
+ * Normalize a Schema Object to 3.1 shape (in-place safe — operates on a cloned tree).
15
+ * Recursively walks through properties, items, $defs, allOf/oneOf/anyOf.
16
+ *
17
+ * Transformations applied:
18
+ * - nullable: true → type: [T, "null"]
19
+ * - example: X → examples: [X] (deprecated in 3.1)
20
+ * - exclusiveMinimum: true (3.0 boolean) → exclusiveMinimum: minimum (3.1 number)
21
+ * - exclusiveMaximum: true (3.0 boolean) → exclusiveMaximum: maximum (3.1 number)
22
+ * - Drop format: binary + enforce blob (kept as-is but flagged)
23
+ */
24
+ export function normalizeSchema30to31(schema, emitWarning, path = '$') {
25
+ if (!schema || typeof schema !== 'object')
26
+ return schema;
27
+ const out = { ...schema };
28
+ // 1. nullable: true → type: [T, "null"]
29
+ if (out.nullable === true) {
30
+ if (typeof out.type === 'string') {
31
+ out.type = [out.type, 'null'];
32
+ }
33
+ else if (Array.isArray(out.type)) {
34
+ if (!out.type.includes('null'))
35
+ out.type = [...out.type, 'null'];
36
+ }
37
+ delete out.nullable;
38
+ }
39
+ // 2. example (singular, deprecated 3.1) → examples
40
+ const schemaAny = out;
41
+ if (schemaAny.example !== undefined && !out.examples) {
42
+ out.examples = [schemaAny.example];
43
+ delete schemaAny.example;
44
+ }
45
+ // 3. exclusiveMinimum/Maximum boolean (3.0) → numeric (3.1)
46
+ if (out.exclusiveMinimum === true && typeof out.minimum === 'number') {
47
+ out.exclusiveMinimum = out.minimum;
48
+ delete out.minimum;
49
+ }
50
+ else if (out.exclusiveMinimum === false) {
51
+ delete out.exclusiveMinimum;
52
+ }
53
+ if (out.exclusiveMaximum === true && typeof out.maximum === 'number') {
54
+ out.exclusiveMaximum = out.maximum;
55
+ delete out.maximum;
56
+ }
57
+ else if (out.exclusiveMaximum === false) {
58
+ delete out.exclusiveMaximum;
59
+ }
60
+ // 4. Recurse into nested schemas
61
+ if (out.properties) {
62
+ out.properties = Object.fromEntries(Object.entries(out.properties).map(([k, v]) => [
63
+ k,
64
+ normalizeSchema30to31(v, emitWarning, `${path}.properties.${k}`),
65
+ ]));
66
+ }
67
+ if (out.items) {
68
+ if (Array.isArray(out.items)) {
69
+ out.items = out.items.map((it, i) => normalizeSchema30to31(it, emitWarning, `${path}.items[${i}]`));
70
+ }
71
+ else {
72
+ out.items = normalizeSchema30to31(out.items, emitWarning, `${path}.items`);
73
+ }
74
+ }
75
+ if (out.$defs) {
76
+ out.$defs = Object.fromEntries(Object.entries(out.$defs).map(([k, v]) => [
77
+ k,
78
+ normalizeSchema30to31(v, emitWarning, `${path}.$defs.${k}`),
79
+ ]));
80
+ }
81
+ if (out.definitions) {
82
+ out.definitions = Object.fromEntries(Object.entries(out.definitions).map(([k, v]) => [
83
+ k,
84
+ normalizeSchema30to31(v, emitWarning, `${path}.definitions.${k}`),
85
+ ]));
86
+ }
87
+ for (const k of ['allOf', 'oneOf', 'anyOf']) {
88
+ const arr = out[k];
89
+ if (Array.isArray(arr)) {
90
+ out[k] = arr.map((s, i) => normalizeSchema30to31(s, emitWarning, `${path}.${k}[${i}]`));
91
+ }
92
+ }
93
+ if (out.not) {
94
+ out.not = normalizeSchema30to31(out.not, emitWarning, `${path}.not`);
95
+ }
96
+ return out;
97
+ }
98
+ /**
99
+ * Normalize ALL schemas in components.schemas.
100
+ * Only runs if the spec is OpenAPI 3.0.x.
101
+ */
102
+ export function normalizeComponentsSchemas(components, version, emitWarning) {
103
+ const schemas = components?.schemas;
104
+ if (!schemas)
105
+ return undefined;
106
+ if (!isOpenApi30(version))
107
+ return schemas; // already 3.1+
108
+ // Emit a single info-level warning per spec
109
+ emitWarning({
110
+ code: WarningCode.FALLBACK_APPLIED,
111
+ message: `OpenAPI 3.0 detected — normalizing schemas to 3.1 shape (nullable/exclusiveMin/examples)`,
112
+ });
113
+ return Object.fromEntries(Object.entries(schemas).map(([name, schema]) => [
114
+ name,
115
+ normalizeSchema30to31(schema, emitWarning, `components.schemas.${name}`),
116
+ ]));
117
+ }
118
+ //# sourceMappingURL=openapi-normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-normalize.js","sourceRoot":"","sources":["../../src/utils/openapi-normalize.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/orm-adapter",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Third-party schema adapters for @mostajs/orm — convert Prisma, JSON Schema, OpenAPI to EntitySchema",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "AGPL-3.0-or-later",