@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,124 @@
1
+ // prisma-default-mapper.ts
2
+ // Maps Prisma @default(...) values to EntitySchema FieldDef.default
3
+ // Author: Dr Hamid MADANI drmdh@msn.com
4
+ // License: AGPL-3.0-or-later
5
+ import { WarningCode } from '../core/types.js';
6
+ /**
7
+ * Sentinel values we emit for Prisma's special default functions.
8
+ * These are recognizable patterns that a downstream ORM can interpret.
9
+ *
10
+ * We DON'T execute these at adapter time — we just signal the intent
11
+ * so the ORM can decide (autoincrement in SQLite vs. Postgres differs).
12
+ */
13
+ export const DefaultSentinel = {
14
+ AUTOINCREMENT: '__MOSTA_AUTOINCREMENT__',
15
+ NOW: '__MOSTA_NOW__',
16
+ UUID: '__MOSTA_UUID__',
17
+ UUID_V4: '__MOSTA_UUID_V4__',
18
+ UUID_V7: '__MOSTA_UUID_V7__',
19
+ CUID: '__MOSTA_CUID__',
20
+ CUID2: '__MOSTA_CUID2__',
21
+ NANOID: '__MOSTA_NANOID__',
22
+ ULID: '__MOSTA_ULID__',
23
+ DB_GENERATED: '__MOSTA_DB_GENERATED__',
24
+ OBJECT_ID: '__MOSTA_OBJECT_ID__',
25
+ };
26
+ /**
27
+ * Parse a Prisma @default value and return the EntitySchema equivalent.
28
+ *
29
+ * Returns `undefined` if no default is specified or it's unmappable.
30
+ * Emits warnings for dbgenerated() (non-portable SQL).
31
+ */
32
+ export function mapPrismaDefault(defaultValue, fieldName, entityName, enumValues, opts, emitWarning) {
33
+ if (defaultValue === undefined || defaultValue === null)
34
+ return undefined;
35
+ // 1. Function default : { __fn: 'now', params: [] }
36
+ if (isFunctionDefault(defaultValue)) {
37
+ const fnName = defaultValue.__fn;
38
+ const params = defaultValue.params ?? [];
39
+ switch (fnName) {
40
+ case 'autoincrement':
41
+ return DefaultSentinel.AUTOINCREMENT;
42
+ case 'now':
43
+ return DefaultSentinel.NOW;
44
+ case 'uuid': {
45
+ const version = typeof params[0] === 'number' ? params[0] : 4;
46
+ if (version === 4)
47
+ return DefaultSentinel.UUID_V4;
48
+ if (version === 7)
49
+ return DefaultSentinel.UUID_V7;
50
+ return DefaultSentinel.UUID;
51
+ }
52
+ case 'cuid': {
53
+ const version = typeof params[0] === 'number' ? params[0] : 1;
54
+ return version === 2 ? DefaultSentinel.CUID2 : DefaultSentinel.CUID;
55
+ }
56
+ case 'nanoid':
57
+ return DefaultSentinel.NANOID;
58
+ case 'ulid':
59
+ return DefaultSentinel.ULID;
60
+ case 'auto':
61
+ // MongoDB @default(auto()) — generates ObjectId
62
+ return DefaultSentinel.OBJECT_ID;
63
+ case 'dbgenerated':
64
+ emitWarning({
65
+ code: WarningCode.UNSUPPORTED_FEATURE,
66
+ message: `@default(dbgenerated(...)) on "${fieldName}" is not portable across dialects`,
67
+ entity: entityName,
68
+ field: fieldName,
69
+ });
70
+ return DefaultSentinel.DB_GENERATED;
71
+ default:
72
+ emitWarning({
73
+ code: WarningCode.UNKNOWN_EXTENSION,
74
+ message: `Unknown @default function "${fnName}" on "${fieldName}"`,
75
+ entity: entityName,
76
+ field: fieldName,
77
+ });
78
+ return undefined;
79
+ }
80
+ }
81
+ // 2. Literal defaults (string, number, boolean, array)
82
+ if (typeof defaultValue === 'string' ||
83
+ typeof defaultValue === 'number' ||
84
+ typeof defaultValue === 'boolean') {
85
+ // Normalize string booleans : @mrleebo/prisma-ast returns `false`/`true` as bare strings
86
+ if (defaultValue === 'true')
87
+ return true;
88
+ if (defaultValue === 'false')
89
+ return false;
90
+ // Normalize string numbers : AST returns numbers as strings ("0", "320")
91
+ if (typeof defaultValue === 'string' && /^-?\d+$/.test(defaultValue)) {
92
+ return parseInt(defaultValue, 10);
93
+ }
94
+ if (typeof defaultValue === 'string' && /^-?\d+\.\d+$/.test(defaultValue)) {
95
+ return parseFloat(defaultValue);
96
+ }
97
+ // Strip quotes from string literals (AST sometimes keeps them)
98
+ if (typeof defaultValue === 'string' &&
99
+ defaultValue.startsWith('"') && defaultValue.endsWith('"')) {
100
+ return defaultValue.slice(1, -1);
101
+ }
102
+ // Enum value reference (bare identifier matches an enum)
103
+ if (typeof defaultValue === 'string' && enumValues?.includes(defaultValue)) {
104
+ return defaultValue;
105
+ }
106
+ return defaultValue;
107
+ }
108
+ // 3. Array literal (e.g., @default([]))
109
+ if (Array.isArray(defaultValue)) {
110
+ return defaultValue;
111
+ }
112
+ // Unrecognized form
113
+ emitWarning({
114
+ code: WarningCode.UNKNOWN_EXTENSION,
115
+ message: `Unrecognized @default form for "${fieldName}": ${JSON.stringify(defaultValue)}`,
116
+ entity: entityName,
117
+ field: fieldName,
118
+ });
119
+ return undefined;
120
+ }
121
+ function isFunctionDefault(v) {
122
+ return !!v && typeof v === 'object' && '__fn' in v;
123
+ }
124
+ //# sourceMappingURL=prisma-default-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-default-mapper.js","sourceRoot":"","sources":["../../src/utils/prisma-default-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { FieldType } from '@mostajs/orm';
2
+ import { type AdapterOptions, type AdapterWarning } from '../core/types.js';
3
+ export interface PrismaTypeMapping {
4
+ type: FieldType;
5
+ /** EntitySchema doesn't preserve precision — capture here if important */
6
+ meta?: {
7
+ /** Original Prisma scalar (Int, BigInt, Decimal...) */
8
+ prismaType?: string;
9
+ /** maxLength from @db.VarChar(N) */
10
+ maxLength?: number;
11
+ /** precision/scale from @db.Decimal(p, s) */
12
+ precision?: number;
13
+ scale?: number;
14
+ };
15
+ }
16
+ /**
17
+ * Map a Prisma scalar type name to @mostajs/orm FieldType.
18
+ *
19
+ * Lossy mappings emit warnings:
20
+ * - BigInt → number (precision loss beyond 2^53)
21
+ * - Decimal → number (arbitrary precision lost)
22
+ * - Bytes → string (base64 encoding, no native blob in EntitySchema)
23
+ *
24
+ * Unknown types are treated as enum references (caller resolves).
25
+ */
26
+ export declare function mapPrismaScalar(prismaType: string, fieldName: string, entityName: string, opts: AdapterOptions | undefined, emitWarning: (w: AdapterWarning) => void): PrismaTypeMapping | null;
27
+ /**
28
+ * Parse an @db.XYZ attribute and extract length/precision metadata.
29
+ * Used to enrich meta on the mapping (not persisted in EntitySchema).
30
+ */
31
+ export declare function extractDbMetadata(dbAttrName: string, args: unknown[]): Partial<PrismaTypeMapping['meta']>;
32
+ //# sourceMappingURL=prisma-type-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-type-mapper.d.ts","sourceRoot":"","sources":["../../src/utils/prisma-type-mapper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAe,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,0EAA0E;IAC1E,IAAI,CAAC,EAAE;QACL,uDAAuD;QACvD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oCAAoC;QACpC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,6CAA6C;QAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,WAAW,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,GACvC,iBAAiB,GAAG,IAAI,CAmD1B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EAAE,GACd,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAsBpC"}
@@ -0,0 +1,95 @@
1
+ // prisma-type-mapper.ts
2
+ // Maps Prisma scalar types to @mostajs/orm FieldType.
3
+ // Emits warnings for lossy conversions.
4
+ // Author: Dr Hamid MADANI drmdh@msn.com
5
+ // License: AGPL-3.0-or-later
6
+ import { WarningCode } from '../core/types.js';
7
+ /**
8
+ * Map a Prisma scalar type name to @mostajs/orm FieldType.
9
+ *
10
+ * Lossy mappings emit warnings:
11
+ * - BigInt → number (precision loss beyond 2^53)
12
+ * - Decimal → number (arbitrary precision lost)
13
+ * - Bytes → string (base64 encoding, no native blob in EntitySchema)
14
+ *
15
+ * Unknown types are treated as enum references (caller resolves).
16
+ */
17
+ export function mapPrismaScalar(prismaType, fieldName, entityName, opts, emitWarning) {
18
+ switch (prismaType) {
19
+ case 'String':
20
+ return { type: 'string', meta: { prismaType } };
21
+ case 'Boolean':
22
+ return { type: 'boolean', meta: { prismaType } };
23
+ case 'Int':
24
+ return { type: 'number', meta: { prismaType } };
25
+ case 'Float':
26
+ return { type: 'number', meta: { prismaType } };
27
+ case 'DateTime':
28
+ return { type: 'date', meta: { prismaType } };
29
+ case 'Json':
30
+ return { type: 'json', meta: { prismaType } };
31
+ case 'BigInt':
32
+ emitWarning({
33
+ code: WarningCode.LOSSY_CONVERSION,
34
+ message: `BigInt field "${fieldName}" mapped to number; values > 2^53 will lose precision`,
35
+ entity: entityName,
36
+ field: fieldName,
37
+ });
38
+ return { type: 'number', meta: { prismaType } };
39
+ case 'Decimal':
40
+ emitWarning({
41
+ code: WarningCode.LOSSY_CONVERSION,
42
+ message: `Decimal field "${fieldName}" mapped to number; arbitrary precision is not preserved`,
43
+ entity: entityName,
44
+ field: fieldName,
45
+ });
46
+ return { type: 'number', meta: { prismaType } };
47
+ case 'Bytes':
48
+ emitWarning({
49
+ code: WarningCode.LOSSY_CONVERSION,
50
+ message: `Bytes field "${fieldName}" mapped to string (base64); binary handling must be done by application`,
51
+ entity: entityName,
52
+ field: fieldName,
53
+ });
54
+ return { type: 'string', meta: { prismaType } };
55
+ default:
56
+ // Unknown — caller decides if it's an enum, relation, or error
57
+ return null;
58
+ }
59
+ }
60
+ /**
61
+ * Parse an @db.XYZ attribute and extract length/precision metadata.
62
+ * Used to enrich meta on the mapping (not persisted in EntitySchema).
63
+ */
64
+ export function extractDbMetadata(dbAttrName, args) {
65
+ const meta = {};
66
+ switch (dbAttrName) {
67
+ case 'VarChar':
68
+ case 'Char':
69
+ case 'NVarChar': {
70
+ const len = toNumber(args[0]);
71
+ if (len != null)
72
+ meta.maxLength = len;
73
+ break;
74
+ }
75
+ case 'Decimal':
76
+ case 'Numeric': {
77
+ const p = toNumber(args[0]);
78
+ const s = toNumber(args[1]);
79
+ if (p != null)
80
+ meta.precision = p;
81
+ if (s != null)
82
+ meta.scale = s;
83
+ break;
84
+ }
85
+ }
86
+ return meta;
87
+ }
88
+ function toNumber(v) {
89
+ if (typeof v === 'number')
90
+ return v;
91
+ if (typeof v === 'string' && /^\d+$/.test(v))
92
+ return parseInt(v, 10);
93
+ return null;
94
+ }
95
+ //# sourceMappingURL=prisma-type-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-type-mapper.js","sourceRoot":"","sources":["../../src/utils/prisma-type-mapper.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "@mostajs/orm-adapter",
3
+ "version": "0.2.0",
4
+ "description": "Third-party schema adapters for @mostajs/orm — convert Prisma, JSON Schema, OpenAPI to EntitySchema",
5
+ "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
+ "license": "AGPL-3.0-or-later",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./native": {
17
+ "types": "./dist/adapters/native.adapter.d.ts",
18
+ "import": "./dist/adapters/native.adapter.js"
19
+ },
20
+ "./prisma": {
21
+ "types": "./dist/adapters/prisma.adapter.d.ts",
22
+ "import": "./dist/adapters/prisma.adapter.js"
23
+ },
24
+ "./jsonschema": {
25
+ "types": "./dist/adapters/jsonschema.adapter.d.ts",
26
+ "import": "./dist/adapters/jsonschema.adapter.js"
27
+ },
28
+ "./openapi": {
29
+ "types": "./dist/adapters/openapi.adapter.d.ts",
30
+ "import": "./dist/adapters/openapi.adapter.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "LICENSE",
36
+ "README.md",
37
+ "CHANGELOG.md"
38
+ ],
39
+ "scripts": {
40
+ "build": "tsc",
41
+ "dev": "tsc --watch",
42
+ "clean": "rm -rf dist",
43
+ "test": "npx tsx test-scripts/run-all.ts",
44
+ "test:native": "npx tsx test-scripts/test-native.ts",
45
+ "test:prisma": "npx tsx test-scripts/test-prisma.ts",
46
+ "test:jsonschema": "npx tsx test-scripts/test-jsonschema.ts",
47
+ "test:openapi": "npx tsx test-scripts/test-openapi.ts",
48
+ "prepublishOnly": "npm run clean && npm run build"
49
+ },
50
+ "keywords": [
51
+ "mostajs",
52
+ "orm",
53
+ "schema",
54
+ "adapter",
55
+ "prisma",
56
+ "json-schema",
57
+ "openapi",
58
+ "swagger",
59
+ "entity-schema",
60
+ "interoperability"
61
+ ],
62
+ "repository": {
63
+ "type": "git",
64
+ "url": "git+https://github.com/apolocine/mosta-orm-adapter.git"
65
+ },
66
+ "bugs": {
67
+ "url": "https://github.com/apolocine/mosta-orm-adapter/issues"
68
+ },
69
+ "homepage": "https://github.com/apolocine/mosta-orm-adapter#readme",
70
+ "peerDependencies": {
71
+ "@mostajs/orm": "^1.9.0"
72
+ },
73
+ "dependencies": {
74
+ "@mrleebo/prisma-ast": "^0.12.0",
75
+ "@apidevtools/json-schema-ref-parser": "^11.0.0",
76
+ "ajv": "^8.12.0",
77
+ "ajv-formats": "^3.0.1",
78
+ "@readme/openapi-parser": "^6.0.1",
79
+ "openapi-types": "^12.1.3"
80
+ },
81
+ "devDependencies": {
82
+ "@mostajs/orm": "^1.9.0",
83
+ "@types/node": "^20.0.0",
84
+ "tsx": "^4.0.0",
85
+ "typescript": "^5.3.0"
86
+ },
87
+ "engines": {
88
+ "node": ">=18.0.0"
89
+ }
90
+ }