@mostajs/orm-adapter 0.2.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/LICENSE +29 -0
  3. package/README.md +182 -0
  4. package/dist/adapters/native.adapter.d.ts +36 -0
  5. package/dist/adapters/native.adapter.d.ts.map +1 -0
  6. package/dist/adapters/native.adapter.js +83 -0
  7. package/dist/adapters/native.adapter.js.map +1 -0
  8. package/dist/adapters/prisma.adapter.d.ts +48 -0
  9. package/dist/adapters/prisma.adapter.d.ts.map +1 -0
  10. package/dist/adapters/prisma.adapter.js +400 -0
  11. package/dist/adapters/prisma.adapter.js.map +1 -0
  12. package/dist/core/abstract.adapter.d.ts +39 -0
  13. package/dist/core/abstract.adapter.d.ts.map +1 -0
  14. package/dist/core/abstract.adapter.js +130 -0
  15. package/dist/core/abstract.adapter.js.map +1 -0
  16. package/dist/core/errors.d.ts +21 -0
  17. package/dist/core/errors.d.ts.map +1 -0
  18. package/dist/core/errors.js +37 -0
  19. package/dist/core/errors.js.map +1 -0
  20. package/dist/core/registry.d.ts +25 -0
  21. package/dist/core/registry.d.ts.map +1 -0
  22. package/dist/core/registry.js +68 -0
  23. package/dist/core/registry.js.map +1 -0
  24. package/dist/core/types.d.ts +76 -0
  25. package/dist/core/types.d.ts.map +1 -0
  26. package/dist/core/types.js +21 -0
  27. package/dist/core/types.js.map +1 -0
  28. package/dist/index.d.ts +18 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +32 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/utils/prisma-ast-helpers.d.ts +43 -0
  33. package/dist/utils/prisma-ast-helpers.d.ts.map +1 -0
  34. package/dist/utils/prisma-ast-helpers.js +155 -0
  35. package/dist/utils/prisma-ast-helpers.js.map +1 -0
  36. package/dist/utils/prisma-default-mapper.d.ts +29 -0
  37. package/dist/utils/prisma-default-mapper.d.ts.map +1 -0
  38. package/dist/utils/prisma-default-mapper.js +124 -0
  39. package/dist/utils/prisma-default-mapper.js.map +1 -0
  40. package/dist/utils/prisma-type-mapper.d.ts +32 -0
  41. package/dist/utils/prisma-type-mapper.d.ts.map +1 -0
  42. package/dist/utils/prisma-type-mapper.js +95 -0
  43. package/dist/utils/prisma-type-mapper.js.map +1 -0
  44. package/package.json +90 -0
@@ -0,0 +1,37 @@
1
+ // @mostajs/orm-adapter — Custom errors
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ /** Base error class for all adapter-related errors */
4
+ export class AdapterError extends Error {
5
+ code;
6
+ constructor(message, code = 'ADAPTER_ERROR') {
7
+ super(message);
8
+ this.code = code;
9
+ this.name = 'AdapterError';
10
+ }
11
+ }
12
+ /** Thrown when an input cannot be parsed by any registered adapter */
13
+ export class NoAdapterFoundError extends AdapterError {
14
+ constructor(message = 'No adapter can parse the given input') {
15
+ super(message, 'NO_ADAPTER_FOUND');
16
+ this.name = 'NoAdapterFoundError';
17
+ }
18
+ }
19
+ /** Thrown when input is malformed or violates its own schema */
20
+ export class InvalidSchemaError extends AdapterError {
21
+ details;
22
+ constructor(message, details) {
23
+ super(message, 'INVALID_SCHEMA');
24
+ this.details = details;
25
+ this.name = 'InvalidSchemaError';
26
+ }
27
+ }
28
+ /** Thrown in strict mode when an unsupported feature is encountered */
29
+ export class StrictWarningError extends AdapterError {
30
+ warning;
31
+ constructor(warning) {
32
+ super(`[${warning.code}] ${warning.message}`, warning.code);
33
+ this.warning = warning;
34
+ this.name = 'StrictWarningError';
35
+ }
36
+ }
37
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,wCAAwC;AAIxC,sDAAsD;AACtD,MAAM,OAAO,YAAa,SAAQ,KAAK;IACQ;IAA7C,YAAY,OAAe,EAAkB,OAAe,eAAe;QACzE,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAA0B;QAEzE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,sEAAsE;AACtE,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,sCAAsC;QAC1D,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACL;IAA7C,YAAY,OAAe,EAAkB,OAAiB;QAC5D,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QADU,YAAO,GAAP,OAAO,CAAU;QAE5D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,uEAAuE;AACvE,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACtB;IAA5B,YAA4B,OAAuB;QACjD,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QADlC,YAAO,GAAP,OAAO,CAAgB;QAEjD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ import type { IAdapter, AdapterOptions, RegistryOptions } from './types.js';
3
+ /**
4
+ * AdapterRegistry — central registry for all adapters.
5
+ * Provides auto-detection : given an unknown input, finds the right adapter
6
+ * and converts it to EntitySchema[].
7
+ */
8
+ export declare class AdapterRegistry {
9
+ private readonly options;
10
+ private readonly adapters;
11
+ constructor(options?: RegistryOptions);
12
+ /** Register an adapter. Later registrations take priority in detection. */
13
+ register(adapter: IAdapter): this;
14
+ /** Unregister an adapter by name */
15
+ unregister(name: string): boolean;
16
+ /** List all registered adapter names */
17
+ list(): string[];
18
+ /** Get a specific adapter by name */
19
+ get(name: string): IAdapter | undefined;
20
+ /** Detect which adapter can handle the given input */
21
+ detect(input: string | object): IAdapter | null;
22
+ /** Convert any known input to EntitySchema[] via auto-detected adapter */
23
+ fromAny(input: string | object, opts?: AdapterOptions): Promise<EntitySchema[]>;
24
+ }
25
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG5E;;;;GAIG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAEd,OAAO,GAAE,eAAoB;IAE1D,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IASjC,oCAAoC;IACpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASjC,wCAAwC;IACxC,IAAI,IAAI,MAAM,EAAE;IAIhB,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI;IAc/C,0EAA0E;IACpE,OAAO,CACX,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;CAS3B"}
@@ -0,0 +1,68 @@
1
+ // @mostajs/orm-adapter — AdapterRegistry
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ // License: AGPL-3.0-or-later
4
+ import { NoAdapterFoundError } from './errors.js';
5
+ /**
6
+ * AdapterRegistry — central registry for all adapters.
7
+ * Provides auto-detection : given an unknown input, finds the right adapter
8
+ * and converts it to EntitySchema[].
9
+ */
10
+ export class AdapterRegistry {
11
+ options;
12
+ adapters = [];
13
+ constructor(options = {}) {
14
+ this.options = options;
15
+ }
16
+ /** Register an adapter. Later registrations take priority in detection. */
17
+ register(adapter) {
18
+ // Remove any existing adapter with the same name (replace)
19
+ const idx = this.adapters.findIndex(a => a.name === adapter.name);
20
+ if (idx >= 0)
21
+ this.adapters.splice(idx, 1);
22
+ // Latest registrations first (priority)
23
+ this.adapters.unshift(adapter);
24
+ return this;
25
+ }
26
+ /** Unregister an adapter by name */
27
+ unregister(name) {
28
+ const idx = this.adapters.findIndex(a => a.name === name);
29
+ if (idx >= 0) {
30
+ this.adapters.splice(idx, 1);
31
+ return true;
32
+ }
33
+ return false;
34
+ }
35
+ /** List all registered adapter names */
36
+ list() {
37
+ return this.adapters.map(a => a.name);
38
+ }
39
+ /** Get a specific adapter by name */
40
+ get(name) {
41
+ return this.adapters.find(a => a.name === name);
42
+ }
43
+ /** Detect which adapter can handle the given input */
44
+ detect(input) {
45
+ for (const adapter of this.adapters) {
46
+ try {
47
+ if (adapter.canParse(input))
48
+ return adapter;
49
+ }
50
+ catch {
51
+ // canParse should not throw, but just in case: skip this adapter
52
+ }
53
+ }
54
+ if (this.options.strictDetection) {
55
+ throw new NoAdapterFoundError();
56
+ }
57
+ return null;
58
+ }
59
+ /** Convert any known input to EntitySchema[] via auto-detected adapter */
60
+ async fromAny(input, opts) {
61
+ const adapter = this.detect(input);
62
+ if (!adapter) {
63
+ throw new NoAdapterFoundError(`No registered adapter can parse input. Registered: [${this.list().join(', ')}]`);
64
+ }
65
+ return adapter.toEntitySchema(input, opts);
66
+ }
67
+ }
68
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,wCAAwC;AACxC,6BAA6B;AAI7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAGG;IAFZ,QAAQ,GAAe,EAAE,CAAC;IAE3C,YAA6B,UAA2B,EAAE;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAG,CAAC;IAE9D,2EAA2E;IAC3E,QAAQ,CAAC,OAAiB;QACxB,2DAA2D;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,GAAG,IAAI,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3C,wCAAwC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,UAAU,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wCAAwC;IACxC,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,qCAAqC;IACrC,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,sDAAsD;IACtD,MAAM,CAAC,KAAsB;QAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO,OAAO,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YACjC,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,OAAO,CACX,KAAsB,EACtB,IAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAC3B,uDAAuD,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,76 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ /**
3
+ * Warning codes emitted during schema conversion.
4
+ * Inspired by compiler diagnostic codes (TS1234, ESLint rules).
5
+ */
6
+ export declare const WarningCode: {
7
+ readonly UNSUPPORTED_FEATURE: "UNSUPPORTED_FEATURE";
8
+ readonly LOSSY_CONVERSION: "LOSSY_CONVERSION";
9
+ readonly MISSING_METADATA: "MISSING_METADATA";
10
+ readonly AMBIGUOUS_MAPPING: "AMBIGUOUS_MAPPING";
11
+ readonly PREVIEW_FEATURE: "PREVIEW_FEATURE";
12
+ readonly FALLBACK_APPLIED: "FALLBACK_APPLIED";
13
+ readonly CYCLIC_REFERENCE: "CYCLIC_REFERENCE";
14
+ readonly UNKNOWN_EXTENSION: "UNKNOWN_EXTENSION";
15
+ };
16
+ export type WarningCodeType = typeof WarningCode[keyof typeof WarningCode];
17
+ export interface AdapterWarning {
18
+ /** Machine-readable code (see WarningCode) */
19
+ code: WarningCodeType | string;
20
+ /** Human-readable message */
21
+ message: string;
22
+ /** Entity name where the warning applies (if applicable) */
23
+ entity?: string;
24
+ /** Field name within the entity (if applicable) */
25
+ field?: string;
26
+ /** Additional context */
27
+ context?: Record<string, unknown>;
28
+ }
29
+ export interface AdapterOptions {
30
+ /**
31
+ * When true, warnings become exceptions (fail-fast mode).
32
+ * When false (default), warnings are delivered via `onWarning`.
33
+ */
34
+ strict?: boolean;
35
+ /** Called for each warning emitted during conversion */
36
+ onWarning?: (warning: AdapterWarning) => void;
37
+ /** Custom extension values for x-mostajs-* metadata */
38
+ extensions?: Record<string, unknown>;
39
+ /**
40
+ * Preferred strategy for relation detection when ambiguous.
41
+ * - 'explicit' : require x-mostajs-relation extension
42
+ * - 'auto' : infer from conventions ($ref, naming)
43
+ * - 'none' : skip relation detection entirely
44
+ */
45
+ relationStrategy?: 'explicit' | 'auto' | 'none';
46
+ /** Fallback type for unmappable structures */
47
+ unknownTypesFallback?: 'json' | 'error' | 'string';
48
+ }
49
+ export interface IAdapter {
50
+ /** Unique identifier (e.g. 'prisma', 'jsonschema', 'openapi', 'native') */
51
+ readonly name: string;
52
+ /** Source vendor (e.g. 'prisma.io', 'json-schema.org') */
53
+ readonly vendor: string;
54
+ /** Adapter version (semver) */
55
+ readonly version: string;
56
+ /**
57
+ * Quick detection : can this adapter parse the given input?
58
+ * Should be fast and non-destructive (no full parsing).
59
+ */
60
+ canParse(input: string | object): boolean;
61
+ /**
62
+ * Primary conversion : source schema → EntitySchema[].
63
+ * Always returns an array, even for single-entity sources.
64
+ */
65
+ toEntitySchema(input: string | object, opts?: AdapterOptions): Promise<EntitySchema[]>;
66
+ /**
67
+ * Optional reverse conversion : EntitySchema[] → source format.
68
+ * Not all adapters implement this.
69
+ */
70
+ fromEntitySchema?(entities: EntitySchema[], opts?: AdapterOptions): Promise<string | object>;
71
+ }
72
+ export interface RegistryOptions {
73
+ /** Throw when no adapter matches (default: false, returns null) */
74
+ strictDetection?: boolean;
75
+ }
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAE3E,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAMD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAEhD,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;CACpD;AAMD,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAE1C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEvF;;;OAGG;IACH,gBAAgB,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC9F;AAMD,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,21 @@
1
+ // @mostajs/orm-adapter — Core types
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ // License: AGPL-3.0-or-later
4
+ // ============================================================
5
+ // Adapter Warnings
6
+ // ============================================================
7
+ /**
8
+ * Warning codes emitted during schema conversion.
9
+ * Inspired by compiler diagnostic codes (TS1234, ESLint rules).
10
+ */
11
+ export const WarningCode = {
12
+ UNSUPPORTED_FEATURE: 'UNSUPPORTED_FEATURE', // feature exists in source but not in target
13
+ LOSSY_CONVERSION: 'LOSSY_CONVERSION', // type precision / constraint lost
14
+ MISSING_METADATA: 'MISSING_METADATA', // expected metadata absent
15
+ AMBIGUOUS_MAPPING: 'AMBIGUOUS_MAPPING', // multiple valid interpretations
16
+ PREVIEW_FEATURE: 'PREVIEW_FEATURE', // experimental/preview feature used
17
+ FALLBACK_APPLIED: 'FALLBACK_APPLIED', // default strategy used
18
+ CYCLIC_REFERENCE: 'CYCLIC_REFERENCE', // self-referencing schema detected
19
+ UNKNOWN_EXTENSION: 'UNKNOWN_EXTENSION', // unrecognized x-* extension
20
+ };
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,wCAAwC;AACxC,6BAA6B;AAI7B,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,mBAAmB,EAAK,qBAAqB,EAAM,6CAA6C;IAChG,gBAAgB,EAAQ,kBAAkB,EAAS,mCAAmC;IACtF,gBAAgB,EAAQ,kBAAkB,EAAS,2BAA2B;IAC9E,iBAAiB,EAAO,mBAAmB,EAAQ,iCAAiC;IACpF,eAAe,EAAS,iBAAiB,EAAU,oCAAoC;IACvF,gBAAgB,EAAQ,kBAAkB,EAAS,wBAAwB;IAC3E,gBAAgB,EAAQ,kBAAkB,EAAS,mCAAmC;IACtF,iBAAiB,EAAO,mBAAmB,EAAQ,6BAA6B;CACxE,CAAC"}
@@ -0,0 +1,18 @@
1
+ export type { IAdapter, AdapterOptions, AdapterWarning, WarningCodeType, RegistryOptions, } from './core/types.js';
2
+ export { WarningCode } from './core/types.js';
3
+ export { AbstractAdapter } from './core/abstract.adapter.js';
4
+ export { AdapterRegistry } from './core/registry.js';
5
+ export { AdapterError, NoAdapterFoundError, InvalidSchemaError, StrictWarningError, } from './core/errors.js';
6
+ export { NativeAdapter } from './adapters/native.adapter.js';
7
+ export { PrismaAdapter } from './adapters/prisma.adapter.js';
8
+ export { DefaultSentinel } from './utils/prisma-default-mapper.js';
9
+ import { AdapterRegistry } from './core/registry.js';
10
+ /**
11
+ * Create a registry with all standard adapters pre-registered.
12
+ * Detection order (first registered = last priority) :
13
+ * PrismaAdapter > NativeAdapter
14
+ * (Prisma registered last so it wins over Native when input is a string.
15
+ * Native has canParse === false for strings, so no ambiguity either way.)
16
+ */
17
+ export declare function createDefaultRegistry(): AdapterRegistry;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAMvD"}
package/dist/index.js ADDED
@@ -0,0 +1,32 @@
1
+ // @mostajs/orm-adapter — Public API
2
+ // Third-party schema adapters for @mostajs/orm
3
+ // Author: Dr Hamid MADANI drmdh@msn.com
4
+ // License: AGPL-3.0-or-later
5
+ export { WarningCode } from './core/types.js';
6
+ export { AbstractAdapter } from './core/abstract.adapter.js';
7
+ export { AdapterRegistry } from './core/registry.js';
8
+ export { AdapterError, NoAdapterFoundError, InvalidSchemaError, StrictWarningError, } from './core/errors.js';
9
+ // --- Concrete adapters ---
10
+ export { NativeAdapter } from './adapters/native.adapter.js';
11
+ export { PrismaAdapter } from './adapters/prisma.adapter.js';
12
+ // --- Default-value sentinels (Prisma @default semantics) ---
13
+ export { DefaultSentinel } from './utils/prisma-default-mapper.js';
14
+ // --- Convenience factory ---
15
+ import { AdapterRegistry } from './core/registry.js';
16
+ import { NativeAdapter } from './adapters/native.adapter.js';
17
+ import { PrismaAdapter } from './adapters/prisma.adapter.js';
18
+ /**
19
+ * Create a registry with all standard adapters pre-registered.
20
+ * Detection order (first registered = last priority) :
21
+ * PrismaAdapter > NativeAdapter
22
+ * (Prisma registered last so it wins over Native when input is a string.
23
+ * Native has canParse === false for strings, so no ambiguity either way.)
24
+ */
25
+ export function createDefaultRegistry() {
26
+ const registry = new AdapterRegistry();
27
+ registry.register(new NativeAdapter());
28
+ registry.register(new PrismaAdapter());
29
+ // TODO: register JsonSchemaAdapter / OpenApiAdapter when ready
30
+ return registry;
31
+ }
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAE7D,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,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;AAE7D;;;;;;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,+DAA+D;IAC/D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { Schema, Block, Model, Enum, Field, Attribute } from '@mrleebo/prisma-ast';
2
+ export declare function isModel(block: Block): block is Model;
3
+ export declare function isEnum(block: Block): block is Enum;
4
+ export declare function isField(property: unknown): property is Field;
5
+ export declare function isAttribute(property: unknown): property is Attribute;
6
+ export declare function getModels(ast: Schema): Model[];
7
+ export declare function getEnums(ast: Schema): Enum[];
8
+ /** Build a map of enum name -> values, used for default-value resolution */
9
+ export declare function buildEnumMap(ast: Schema): Map<string, string[]>;
10
+ /** Build a set of model names, used for relation detection */
11
+ export declare function buildModelNameSet(ast: Schema): Set<string>;
12
+ export declare function getFields(model: Model): Field[];
13
+ /** Get @@-level attributes (block attributes) */
14
+ export declare function getBlockAttributes(model: Model): Attribute[];
15
+ /**
16
+ * Get the name of a field's type. Field.fieldType is either a string scalar
17
+ * (String, Int, ModelName, EnumName) or a Func node (for Unsupported("...")).
18
+ */
19
+ export declare function getFieldTypeName(field: Field): string;
20
+ /** Detect Unsupported("xxx") type */
21
+ export declare function isUnsupportedType(field: Field): boolean;
22
+ export declare function hasFieldAttribute(field: Field, attrName: string): boolean;
23
+ export declare function getFieldAttribute(field: Field, attrName: string): Attribute | undefined;
24
+ export declare function getDbAttribute(field: Field): Attribute | undefined;
25
+ /**
26
+ * Extract a plain-value arg (first positional or by key).
27
+ * Returns the raw value as produced by @mrleebo/prisma-ast.
28
+ */
29
+ export declare function getArgValue(attr: Attribute | undefined, index?: number): unknown;
30
+ /** Extract value of keyValue-form arg, e.g. `fields: [id]` */
31
+ export declare function getKeyValueArg(attr: Attribute | undefined, key: string): unknown;
32
+ /** Extract all positional values as array */
33
+ export declare function getPositionalArgs(attr: Attribute | undefined): unknown[];
34
+ export interface PrismaDefaultFunction {
35
+ name: string;
36
+ params: unknown[];
37
+ }
38
+ export declare function isFunctionDefault(value: unknown): value is {
39
+ __fn: string;
40
+ params: unknown[];
41
+ };
42
+ export declare function getFunctionName(value: unknown): string | null;
43
+ //# sourceMappingURL=prisma-ast-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-ast-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/prisma-ast-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAMjH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,CAEpD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,IAAI,CAElD;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,KAAK,CAE5D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,SAAS,CAEpE;AAMD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,CAE5C;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAW/D;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1D;AAMD,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,CAE/C;AAED,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,CAG5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAKrD;AAED,qCAAqC;AACrC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGvD;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEvF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAElE;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,KAAK,SAAI,GAAG,OAAO,CAG3E;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAShF;AAED,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,CAQxE;AA8CD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAE9F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK7D"}
@@ -0,0 +1,155 @@
1
+ // prisma-ast-helpers.ts
2
+ // Helpers for navigating the AST produced by @mrleebo/prisma-ast.
3
+ // Author: Dr Hamid MADANI drmdh@msn.com
4
+ // License: AGPL-3.0-or-later
5
+ // ============================================================
6
+ // AST type-narrowing predicates
7
+ // ============================================================
8
+ export function isModel(block) {
9
+ return block.type === 'model';
10
+ }
11
+ export function isEnum(block) {
12
+ return block.type === 'enum';
13
+ }
14
+ export function isField(property) {
15
+ return property?.type === 'field';
16
+ }
17
+ export function isAttribute(property) {
18
+ return property?.type === 'attribute';
19
+ }
20
+ // ============================================================
21
+ // Block extraction
22
+ // ============================================================
23
+ export function getModels(ast) {
24
+ return ast.list.filter(isModel);
25
+ }
26
+ export function getEnums(ast) {
27
+ return ast.list.filter(isEnum);
28
+ }
29
+ /** Build a map of enum name -> values, used for default-value resolution */
30
+ export function buildEnumMap(ast) {
31
+ const map = new Map();
32
+ for (const e of getEnums(ast)) {
33
+ const values = (e.enumerators ?? [])
34
+ .filter((en) => en?.type === 'enumerator')
35
+ .map(en => en.name);
36
+ map.set(e.name, values);
37
+ }
38
+ return map;
39
+ }
40
+ /** Build a set of model names, used for relation detection */
41
+ export function buildModelNameSet(ast) {
42
+ return new Set(getModels(ast).map(m => m.name));
43
+ }
44
+ // ============================================================
45
+ // Field-level helpers
46
+ // ============================================================
47
+ export function getFields(model) {
48
+ return (model.properties ?? []).filter(isField);
49
+ }
50
+ /** Get @@-level attributes (block attributes) */
51
+ export function getBlockAttributes(model) {
52
+ return (model.properties ?? [])
53
+ .filter((p) => p?.type === 'attribute');
54
+ }
55
+ /**
56
+ * Get the name of a field's type. Field.fieldType is either a string scalar
57
+ * (String, Int, ModelName, EnumName) or a Func node (for Unsupported("...")).
58
+ */
59
+ export function getFieldTypeName(field) {
60
+ const t = field.fieldType;
61
+ if (typeof t === 'string')
62
+ return t;
63
+ // Func node — typically Unsupported("...")
64
+ return t.name ?? 'Unknown';
65
+ }
66
+ /** Detect Unsupported("xxx") type */
67
+ export function isUnsupportedType(field) {
68
+ const t = field.fieldType;
69
+ return typeof t !== 'string' && t?.name === 'Unsupported';
70
+ }
71
+ // ============================================================
72
+ // Field attribute helpers
73
+ // ============================================================
74
+ export function hasFieldAttribute(field, attrName) {
75
+ return !!(field.attributes ?? []).find(a => a.name === attrName && !a.group);
76
+ }
77
+ export function getFieldAttribute(field, attrName) {
78
+ return (field.attributes ?? []).find(a => a.name === attrName && !a.group);
79
+ }
80
+ export function getDbAttribute(field) {
81
+ return (field.attributes ?? []).find(a => a.group === 'db');
82
+ }
83
+ // ============================================================
84
+ // Argument extraction
85
+ // ============================================================
86
+ /**
87
+ * Extract a plain-value arg (first positional or by key).
88
+ * Returns the raw value as produced by @mrleebo/prisma-ast.
89
+ */
90
+ export function getArgValue(attr, index = 0) {
91
+ const arg = attr?.args?.[index];
92
+ return extractArgValue(arg);
93
+ }
94
+ /** Extract value of keyValue-form arg, e.g. `fields: [id]` */
95
+ export function getKeyValueArg(attr, key) {
96
+ if (!attr?.args)
97
+ return undefined;
98
+ for (const arg of attr.args) {
99
+ const val = arg.value;
100
+ if (isKeyValueNode(val) && val.key === key) {
101
+ return extractArgValue({ value: val.value });
102
+ }
103
+ }
104
+ return undefined;
105
+ }
106
+ /** Extract all positional values as array */
107
+ export function getPositionalArgs(attr) {
108
+ if (!attr?.args)
109
+ return [];
110
+ return attr.args
111
+ .filter(arg => {
112
+ const v = arg.value;
113
+ return !isKeyValueNode(v);
114
+ })
115
+ .map(extractArgValue);
116
+ }
117
+ function isFunctionNode(v) {
118
+ return !!v && typeof v === 'object' && v.type === 'function';
119
+ }
120
+ function isArrayNode(v) {
121
+ return !!v && typeof v === 'object' && v.type === 'array';
122
+ }
123
+ function isKeyValueNode(v) {
124
+ return !!v && typeof v === 'object' && v.type === 'keyValue';
125
+ }
126
+ /** Canonical form of any attribute argument value */
127
+ function extractArgValue(arg) {
128
+ if (!arg)
129
+ return undefined;
130
+ const v = arg.value;
131
+ if (v === undefined || v === null)
132
+ return v;
133
+ if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean')
134
+ return v;
135
+ if (isFunctionNode(v)) {
136
+ return { __fn: v.name, params: v.params ?? [] };
137
+ }
138
+ if (isArrayNode(v)) {
139
+ return v.args;
140
+ }
141
+ if (isKeyValueNode(v)) {
142
+ return { [v.key]: extractArgValue({ value: v.value }) };
143
+ }
144
+ return v;
145
+ }
146
+ export function isFunctionDefault(value) {
147
+ return !!value && typeof value === 'object' && '__fn' in value;
148
+ }
149
+ export function getFunctionName(value) {
150
+ if (isFunctionDefault(value)) {
151
+ return value.__fn;
152
+ }
153
+ return null;
154
+ }
155
+ //# sourceMappingURL=prisma-ast-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-ast-helpers.js","sourceRoot":"","sources":["../../src/utils/prisma-ast-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type AdapterOptions, type AdapterWarning } from '../core/types.js';
2
+ /**
3
+ * Sentinel values we emit for Prisma's special default functions.
4
+ * These are recognizable patterns that a downstream ORM can interpret.
5
+ *
6
+ * We DON'T execute these at adapter time — we just signal the intent
7
+ * so the ORM can decide (autoincrement in SQLite vs. Postgres differs).
8
+ */
9
+ export declare const DefaultSentinel: {
10
+ readonly AUTOINCREMENT: "__MOSTA_AUTOINCREMENT__";
11
+ readonly NOW: "__MOSTA_NOW__";
12
+ readonly UUID: "__MOSTA_UUID__";
13
+ readonly UUID_V4: "__MOSTA_UUID_V4__";
14
+ readonly UUID_V7: "__MOSTA_UUID_V7__";
15
+ readonly CUID: "__MOSTA_CUID__";
16
+ readonly CUID2: "__MOSTA_CUID2__";
17
+ readonly NANOID: "__MOSTA_NANOID__";
18
+ readonly ULID: "__MOSTA_ULID__";
19
+ readonly DB_GENERATED: "__MOSTA_DB_GENERATED__";
20
+ readonly OBJECT_ID: "__MOSTA_OBJECT_ID__";
21
+ };
22
+ /**
23
+ * Parse a Prisma @default value and return the EntitySchema equivalent.
24
+ *
25
+ * Returns `undefined` if no default is specified or it's unmappable.
26
+ * Emits warnings for dbgenerated() (non-portable SQL).
27
+ */
28
+ export declare function mapPrismaDefault(defaultValue: unknown, fieldName: string, entityName: string, enumValues: string[] | undefined, opts: AdapterOptions | undefined, emitWarning: (w: AdapterWarning) => void): unknown;
29
+ //# sourceMappingURL=prisma-default-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-default-mapper.d.ts","sourceRoot":"","sources":["../../src/utils/prisma-default-mapper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEzF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;CAYlB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAChC,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,WAAW,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,GACvC,OAAO,CAkGT"}