@prisma-next/target-postgres 0.5.0-dev.6 → 0.5.0-dev.60
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/dist/{codec-ids-CojIXVf9.mjs → codec-ids-ckQX9Kcg.mjs} +3 -2
- package/dist/{codec-ids-CojIXVf9.mjs.map → codec-ids-ckQX9Kcg.mjs.map} +1 -1
- package/dist/codec-ids.d.mts +2 -1
- package/dist/codec-ids.d.mts.map +1 -1
- package/dist/codec-ids.mjs +2 -2
- package/dist/codec-types.d.mts +1 -1
- package/dist/codec-types.mjs +2 -1
- package/dist/{codecs-D-F2KJqt.d.mts → codecs-B03dFv94.d.mts} +64 -30
- package/dist/codecs-B03dFv94.d.mts.map +1 -0
- package/dist/{codecs-BoahtY_Q.mjs → codecs-D0oXyJIH.mjs} +24 -104
- package/dist/codecs-D0oXyJIH.mjs.map +1 -0
- package/dist/codecs.d.mts +1 -1
- package/dist/codecs.mjs +2 -1
- package/dist/control.mjs +21 -63
- package/dist/control.mjs.map +1 -1
- package/dist/{data-transform-VfEGzXWt.mjs → data-transform-Be_i_DBc.mjs} +24 -5
- package/dist/data-transform-Be_i_DBc.mjs.map +1 -0
- package/dist/data-transform-CrpmG4uJ.d.mts +39 -0
- package/dist/data-transform-CrpmG4uJ.d.mts.map +1 -0
- package/dist/data-transform.d.mts +1 -1
- package/dist/data-transform.mjs +1 -1
- package/dist/{descriptor-meta-BVoVtyp-.mjs → descriptor-meta-Ieg1XLOs.mjs} +7 -12
- package/dist/descriptor-meta-Ieg1XLOs.mjs.map +1 -0
- package/dist/issue-planner.d.mts +1 -1
- package/dist/migration.d.mts +2 -2
- package/dist/migration.mjs +2 -2
- package/dist/op-factory-call-C3bWXKSP.d.mts.map +1 -1
- package/dist/pack.d.mts +28 -9
- package/dist/pack.d.mts.map +1 -1
- package/dist/pack.mjs +1 -1
- package/dist/{planner-CLUvVhUN.mjs → planner-Cm-ZLutk.mjs} +6 -6
- package/dist/planner-Cm-ZLutk.mjs.map +1 -0
- package/dist/{planner-produced-postgres-migration-DSSPq8QS.mjs → planner-produced-postgres-migration-Bi-RWO4-.mjs} +3 -4
- package/dist/{planner-produced-postgres-migration-DSSPq8QS.mjs.map → planner-produced-postgres-migration-Bi-RWO4-.mjs.map} +1 -1
- package/dist/{planner-produced-postgres-migration-CRRTno6Z.d.mts → planner-produced-postgres-migration-M3EfhWSS.d.mts} +2 -2
- package/dist/planner-produced-postgres-migration-M3EfhWSS.d.mts.map +1 -0
- package/dist/planner-produced-postgres-migration.d.mts +3 -2
- package/dist/planner-produced-postgres-migration.mjs +1 -1
- package/dist/planner.d.mts +17 -10
- package/dist/planner.d.mts.map +1 -1
- package/dist/planner.mjs +1 -1
- package/dist/{postgres-migration-BjA3Zmts.d.mts → postgres-migration-BFjbb25b.d.mts} +4 -3
- package/dist/postgres-migration-BFjbb25b.d.mts.map +1 -0
- package/dist/{postgres-migration-qtmtbONe.mjs → postgres-migration-BS9vQW97.mjs} +2 -2
- package/dist/postgres-migration-BS9vQW97.mjs.map +1 -0
- package/dist/{render-typescript-1rF_SB4g.mjs → render-typescript-Co3Emwgz.mjs} +1 -2
- package/dist/render-typescript-Co3Emwgz.mjs.map +1 -0
- package/dist/render-typescript.d.mts +1 -2
- package/dist/render-typescript.d.mts.map +1 -1
- package/dist/render-typescript.mjs +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/{statement-builders-BPnmt6wx.mjs → statement-builders-CHqCtSfe.mjs} +13 -8
- package/dist/statement-builders-CHqCtSfe.mjs.map +1 -0
- package/dist/statement-builders.d.mts +10 -3
- package/dist/statement-builders.d.mts.map +1 -1
- package/dist/statement-builders.mjs +2 -2
- package/package.json +15 -14
- package/src/core/authoring.ts +5 -11
- package/src/core/codec-ids.ts +1 -0
- package/src/core/codecs.ts +53 -40
- package/src/core/migrations/operations/data-transform.ts +86 -21
- package/src/core/migrations/planner-produced-postgres-migration.ts +0 -1
- package/src/core/migrations/planner.ts +17 -11
- package/src/core/migrations/postgres-migration.ts +3 -6
- package/src/core/migrations/render-typescript.ts +1 -5
- package/src/core/migrations/runner.ts +43 -112
- package/src/core/migrations/statement-builders.ts +22 -6
- package/src/exports/statement-builders.ts +1 -1
- package/dist/codecs-BoahtY_Q.mjs.map +0 -1
- package/dist/codecs-D-F2KJqt.d.mts.map +0 -1
- package/dist/data-transform-CxFRBIUp.d.mts +0 -32
- package/dist/data-transform-CxFRBIUp.d.mts.map +0 -1
- package/dist/data-transform-VfEGzXWt.mjs.map +0 -1
- package/dist/descriptor-meta-BVoVtyp-.mjs.map +0 -1
- package/dist/planner-CLUvVhUN.mjs.map +0 -1
- package/dist/planner-produced-postgres-migration-CRRTno6Z.d.mts.map +0 -1
- package/dist/postgres-migration-BjA3Zmts.d.mts.map +0 -1
- package/dist/postgres-migration-qtmtbONe.mjs.map +0 -1
- package/dist/render-typescript-1rF_SB4g.mjs.map +0 -1
- package/dist/statement-builders-BPnmt6wx.mjs.map +0 -1
- package/src/core/json-schema-type-expression.ts +0 -131
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
type JsonSchemaRecord = Record<string, unknown>;
|
|
2
|
-
|
|
3
|
-
const MAX_DEPTH = 32;
|
|
4
|
-
|
|
5
|
-
function isRecord(value: unknown): value is JsonSchemaRecord {
|
|
6
|
-
return typeof value === 'object' && value !== null;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function escapeStringLiteral(str: string): string {
|
|
10
|
-
return str
|
|
11
|
-
.replace(/\\/g, '\\\\')
|
|
12
|
-
.replace(/'/g, "\\'")
|
|
13
|
-
.replace(/\n/g, '\\n')
|
|
14
|
-
.replace(/\r/g, '\\r');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function quotePropertyKey(key: string): string {
|
|
18
|
-
return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? key : `'${escapeStringLiteral(key)}'`;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function renderLiteral(value: unknown): string {
|
|
22
|
-
if (typeof value === 'string') {
|
|
23
|
-
return `'${escapeStringLiteral(value)}'`;
|
|
24
|
-
}
|
|
25
|
-
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
26
|
-
return String(value);
|
|
27
|
-
}
|
|
28
|
-
if (value === null) {
|
|
29
|
-
return 'null';
|
|
30
|
-
}
|
|
31
|
-
return 'unknown';
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function renderUnion(items: readonly unknown[], depth: number): string {
|
|
35
|
-
const rendered = items.map((item) => render(item, depth));
|
|
36
|
-
return rendered.join(' | ');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function renderObjectType(schema: JsonSchemaRecord, depth: number): string {
|
|
40
|
-
const properties = isRecord(schema['properties']) ? schema['properties'] : {};
|
|
41
|
-
const required = Array.isArray(schema['required'])
|
|
42
|
-
? new Set(schema['required'].filter((key): key is string => typeof key === 'string'))
|
|
43
|
-
: new Set<string>();
|
|
44
|
-
const keys = Object.keys(properties).sort((left, right) => left.localeCompare(right));
|
|
45
|
-
|
|
46
|
-
if (keys.length === 0) {
|
|
47
|
-
const additionalProperties = schema['additionalProperties'];
|
|
48
|
-
if (additionalProperties === true || additionalProperties === undefined) {
|
|
49
|
-
return 'Record<string, unknown>';
|
|
50
|
-
}
|
|
51
|
-
return `Record<string, ${render(additionalProperties, depth)}>`;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const renderedProperties = keys.map((key) => {
|
|
55
|
-
const valueSchema = (properties as JsonSchemaRecord)[key];
|
|
56
|
-
const optionalMarker = required.has(key) ? '' : '?';
|
|
57
|
-
return `${quotePropertyKey(key)}${optionalMarker}: ${render(valueSchema, depth)}`;
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
return `{ ${renderedProperties.join('; ')} }`;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function renderArrayType(schema: JsonSchemaRecord, depth: number): string {
|
|
64
|
-
if (Array.isArray(schema['items'])) {
|
|
65
|
-
return `readonly [${schema['items'].map((item) => render(item, depth)).join(', ')}]`;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (schema['items'] !== undefined) {
|
|
69
|
-
const itemType = render(schema['items'], depth);
|
|
70
|
-
const needsParens = itemType.includes(' | ') || itemType.includes(' & ');
|
|
71
|
-
return needsParens ? `(${itemType})[]` : `${itemType}[]`;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return 'unknown[]';
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function render(schema: unknown, depth: number): string {
|
|
78
|
-
if (depth > MAX_DEPTH || !isRecord(schema)) {
|
|
79
|
-
return 'JsonValue';
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const nextDepth = depth + 1;
|
|
83
|
-
|
|
84
|
-
if ('const' in schema) {
|
|
85
|
-
return renderLiteral(schema['const']);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (Array.isArray(schema['enum'])) {
|
|
89
|
-
return schema['enum'].map((value) => renderLiteral(value)).join(' | ');
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (Array.isArray(schema['oneOf'])) {
|
|
93
|
-
return renderUnion(schema['oneOf'], nextDepth);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (Array.isArray(schema['anyOf'])) {
|
|
97
|
-
return renderUnion(schema['anyOf'], nextDepth);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (Array.isArray(schema['allOf'])) {
|
|
101
|
-
return schema['allOf'].map((item) => render(item, nextDepth)).join(' & ');
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (Array.isArray(schema['type'])) {
|
|
105
|
-
return schema['type'].map((item) => render({ ...schema, type: item }, nextDepth)).join(' | ');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
switch (schema['type']) {
|
|
109
|
-
case 'string':
|
|
110
|
-
return 'string';
|
|
111
|
-
case 'number':
|
|
112
|
-
case 'integer':
|
|
113
|
-
return 'number';
|
|
114
|
-
case 'boolean':
|
|
115
|
-
return 'boolean';
|
|
116
|
-
case 'null':
|
|
117
|
-
return 'null';
|
|
118
|
-
case 'array':
|
|
119
|
-
return renderArrayType(schema, nextDepth);
|
|
120
|
-
case 'object':
|
|
121
|
-
return renderObjectType(schema, nextDepth);
|
|
122
|
-
default:
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return 'JsonValue';
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export function renderTypeScriptTypeFromJsonSchema(schema: unknown): string {
|
|
130
|
-
return render(schema, 0);
|
|
131
|
-
}
|