@opensaas/stack-cli 0.20.1 ā 0.21.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/dist/commands/generate.d.ts +8 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +32 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/generator/context.d.ts.map +1 -1
- package/dist/generator/context.js +2 -4
- package/dist/generator/context.js.map +1 -1
- package/dist/generator/lists.d.ts.map +1 -1
- package/dist/generator/lists.js +16 -5
- package/dist/generator/lists.js.map +1 -1
- package/dist/generator/prisma-config.d.ts +15 -2
- package/dist/generator/prisma-config.d.ts.map +1 -1
- package/dist/generator/prisma-config.js +23 -4
- package/dist/generator/prisma-config.js.map +1 -1
- package/dist/generator/prisma.d.ts.map +1 -1
- package/dist/generator/prisma.js +42 -368
- package/dist/generator/prisma.js.map +1 -1
- package/dist/generator/types.d.ts.map +1 -1
- package/dist/generator/types.js +5 -2
- package/dist/generator/types.js.map +1 -1
- package/dist/mcp/lib/documentation-provider.d.ts.map +1 -1
- package/dist/mcp/lib/documentation-provider.js +36 -39
- package/dist/mcp/lib/documentation-provider.js.map +1 -1
- package/dist/migration/generators/migration-generator.d.ts.map +1 -1
- package/dist/migration/generators/migration-generator.js +2 -4
- package/dist/migration/generators/migration-generator.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
import type { FieldConfigValidationError } from '@opensaas/stack-core';
|
|
2
|
+
/**
|
|
3
|
+
* Format field self-containment errors into a friendly, multi-line message.
|
|
4
|
+
* Each violation names the list, field, and the contract method it omits, so
|
|
5
|
+
* a misimplemented (often third-party) field is actionable at a glance rather
|
|
6
|
+
* than surfacing as a deep generator stack trace.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatFieldValidationErrors(errors: FieldConfigValidationError[]): string;
|
|
1
9
|
export declare function generateCommand(): Promise<void>;
|
|
2
10
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAEtE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,CAcxF;AAED,wBAAsB,eAAe,kBAmMpC"}
|
|
@@ -5,6 +5,27 @@ import chalk from 'chalk';
|
|
|
5
5
|
import ora from 'ora';
|
|
6
6
|
import { createJiti } from 'jiti';
|
|
7
7
|
import { writePrismaSchema, writePrismaConfig, writeTypes, writeLists, writeContext, writePluginTypes, writePrismaExtensions, } from '../generator/index.js';
|
|
8
|
+
import { validateConfigFields } from '@opensaas/stack-core';
|
|
9
|
+
/**
|
|
10
|
+
* Format field self-containment errors into a friendly, multi-line message.
|
|
11
|
+
* Each violation names the list, field, and the contract method it omits, so
|
|
12
|
+
* a misimplemented (often third-party) field is actionable at a glance rather
|
|
13
|
+
* than surfacing as a deep generator stack trace.
|
|
14
|
+
*/
|
|
15
|
+
export function formatFieldValidationErrors(errors) {
|
|
16
|
+
const lines = errors.map((error) => {
|
|
17
|
+
const location = error.listKey ? `${error.listKey}.${error.fieldKey}` : error.fieldKey;
|
|
18
|
+
return ` ⢠${location} (type "${error.fieldType}") is missing ${error.missingMethod}()`;
|
|
19
|
+
});
|
|
20
|
+
return [
|
|
21
|
+
`${errors.length} field(s) do not satisfy the self-containment contract:`,
|
|
22
|
+
...lines,
|
|
23
|
+
'',
|
|
24
|
+
'Each field builder must implement getPrismaType, getTypeScriptType, and',
|
|
25
|
+
'getZodSchema (or getPrismaRelation for relationships) so the generator can',
|
|
26
|
+
'produce schema and types without inspecting field internals.',
|
|
27
|
+
].join('\n');
|
|
28
|
+
}
|
|
8
29
|
export async function generateCommand() {
|
|
9
30
|
console.log(chalk.bold('\nš OpenSaas Generator\n'));
|
|
10
31
|
const cwd = process.cwd();
|
|
@@ -47,6 +68,17 @@ export async function generateCommand() {
|
|
|
47
68
|
throw err;
|
|
48
69
|
}
|
|
49
70
|
}
|
|
71
|
+
// Validate field self-containment up front, before any generation runs.
|
|
72
|
+
// A misimplemented field surfaces a clear, per-field message here rather
|
|
73
|
+
// than throwing deep inside schema/type generation.
|
|
74
|
+
const validationSpinner = ora('Validating field configuration...').start();
|
|
75
|
+
const fieldErrors = validateConfigFields(config);
|
|
76
|
+
if (fieldErrors.length > 0) {
|
|
77
|
+
validationSpinner.fail(chalk.red('Field configuration invalid'));
|
|
78
|
+
console.error(chalk.red('\nā Error:'), formatFieldValidationErrors(fieldErrors));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
validationSpinner.succeed(chalk.green('Field configuration valid'));
|
|
50
82
|
// Generate Prisma schema, types, and context
|
|
51
83
|
const generatorSpinner = ora('Generating schema and types...').start();
|
|
52
84
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACjC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuM9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAU7E"}
|
|
@@ -19,14 +19,12 @@ export function generateContext(config) {
|
|
|
19
19
|
throw new Error(
|
|
20
20
|
'Prisma 7 requires a database adapter. Please add prismaClientConstructor to your opensaas.config.ts db configuration.\\n\\n' +
|
|
21
21
|
'Example for SQLite:\\n' +
|
|
22
|
-
'import {
|
|
23
|
-
'import Database from \\'better-sqlite3\\'\\n\\n' +
|
|
22
|
+
'import { PrismaBetterSqlite3 } from \\'@prisma/adapter-better-sqlite3\\'\\n\\n' +
|
|
24
23
|
'db: {\\n' +
|
|
25
24
|
' provider: \\'sqlite\\',\\n' +
|
|
26
25
|
' url: process.env.DATABASE_URL || \\'file:./dev.db\\',\\n' +
|
|
27
26
|
' prismaClientConstructor: (PrismaClient) => {\\n' +
|
|
28
|
-
' const
|
|
29
|
-
' const adapter = new PrismaBetterSQLite3(db)\\n' +
|
|
27
|
+
' const adapter = new PrismaBetterSqlite3({ url: process.env.DATABASE_URL || \\'file:./dev.db\\' })\\n' +
|
|
30
28
|
' return new PrismaClient({ adapter })\\n' +
|
|
31
29
|
' }\\n' +
|
|
32
30
|
'}\\n\\n' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAA;IAEhE,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAE7E,gDAAgD;IAChD,0EAA0E;IAC1E,MAAM,mBAAmB,GAAG,oBAAoB;QAC9C,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,wDAAwD;IACxD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAA;IAEhE,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAE7E,gDAAgD;IAChD,0EAA0E;IAC1E,MAAM,mBAAmB,GAAG,oBAAoB;QAC9C,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC;;;;;;;;;;;;;;;SAeG,CAAA;IAEP,sDAAsD;IACtD,MAAM,gBAAgB,GAAG,UAAU;QACjC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDL;QACG,CAAC,CAAC;;;;;;;;;;;;;;;;;;CAkBL,CAAA;IAEC,2CAA2C;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAyCgB,mBAAmB;;;;;;;;;;;;;;EAc1C,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CjB,CAAA;AACD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAsB,EAAE,UAAkB;IACrE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEvC,0BAA0B;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../src/generator/lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../src/generator/lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAmC1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA2ErE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAU3E"}
|
package/dist/generator/lists.js
CHANGED
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
/**
|
|
4
|
-
* Map field type string to TypeScript field type
|
|
4
|
+
* Map a field type string to the TypeScript field-config type and the
|
|
5
|
+
* `@opensaas/stack-core` entry point it is exported from.
|
|
6
|
+
*
|
|
7
|
+
* Built-in field types and their config types live on the `/fields` entry
|
|
8
|
+
* point. Unknown field types (e.g. those contributed by plugins) fall back to
|
|
9
|
+
* the generic `BaseFieldConfig`, exported from the `/extend` authoring surface.
|
|
5
10
|
*/
|
|
6
|
-
function
|
|
11
|
+
function getFieldTypeImport(fieldType) {
|
|
7
12
|
const typeMap = {
|
|
8
13
|
text: 'TextField',
|
|
9
14
|
integer: 'IntegerField',
|
|
15
|
+
decimal: 'DecimalField',
|
|
10
16
|
checkbox: 'CheckboxField',
|
|
11
17
|
timestamp: 'TimestampField',
|
|
18
|
+
calendarDay: 'CalendarDayField',
|
|
12
19
|
password: 'PasswordField',
|
|
13
20
|
select: 'SelectField',
|
|
14
21
|
relationship: 'RelationshipField',
|
|
15
22
|
json: 'JsonField',
|
|
16
23
|
virtual: 'VirtualField',
|
|
17
24
|
};
|
|
18
|
-
|
|
25
|
+
const typeName = typeMap[fieldType];
|
|
26
|
+
if (typeName) {
|
|
27
|
+
return { module: '@opensaas/stack-core/fields', typeName };
|
|
28
|
+
}
|
|
29
|
+
return { module: '@opensaas/stack-core/extend', typeName: 'BaseFieldConfig' };
|
|
19
30
|
}
|
|
20
31
|
/**
|
|
21
32
|
* Generate Lists namespace with TypeInfo for each list
|
|
@@ -86,8 +97,8 @@ export function generateListsNamespace(config) {
|
|
|
86
97
|
lines.push(` */`);
|
|
87
98
|
lines.push(` export type Fields = {`);
|
|
88
99
|
for (const [fieldName, fieldConfig] of Object.entries(listConfig.fields)) {
|
|
89
|
-
const
|
|
90
|
-
lines.push(` ${fieldName}: import('
|
|
100
|
+
const { module, typeName } = getFieldTypeImport(fieldConfig.type);
|
|
101
|
+
lines.push(` ${fieldName}: import('${module}').${typeName}<Lists.${listName}.TypeInfo>`);
|
|
91
102
|
}
|
|
92
103
|
lines.push(` }`);
|
|
93
104
|
lines.push('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../src/generator/lists.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B
|
|
1
|
+
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../src/generator/lists.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,24 @@ import type { OpenSaasConfig } from '@opensaas/stack-core';
|
|
|
3
3
|
* Generate Prisma config file for CLI commands
|
|
4
4
|
*
|
|
5
5
|
* Prisma 7 requires a prisma.config.ts file at the project root for CLI commands
|
|
6
|
-
* like `prisma db push` and `prisma migrate
|
|
7
|
-
* runtime configuration (which uses adapters in
|
|
6
|
+
* like `prisma db push`, `prisma migrate dev`, and `prisma migrate deploy`. This
|
|
7
|
+
* is separate from the runtime configuration (which uses adapters in
|
|
8
|
+
* opensaas.config.ts).
|
|
8
9
|
*
|
|
9
10
|
* The CLI config provides the database URL for schema operations, while the
|
|
10
11
|
* runtime config provides adapters for actual query execution.
|
|
12
|
+
*
|
|
13
|
+
* The datasource URL prefers `DIRECT_DATABASE_URL` and falls back to
|
|
14
|
+
* `DATABASE_URL`. On serverless Postgres (e.g. Neon) the running app connects
|
|
15
|
+
* through a pooled `DATABASE_URL`, while migrations need a direct (non-pooled)
|
|
16
|
+
* connection ā set `DIRECT_DATABASE_URL` to that direct URL. Local SQLite is
|
|
17
|
+
* untouched: with `DIRECT_DATABASE_URL` unset, the expression falls back to
|
|
18
|
+
* `DATABASE_URL`.
|
|
19
|
+
*
|
|
20
|
+
* Note: a local `env` helper is emitted instead of the one from `prisma/config`
|
|
21
|
+
* because the upstream helper throws when a variable is unset, which would break
|
|
22
|
+
* the `??` fallback. The local helper returns `undefined` for missing variables
|
|
23
|
+
* so the fallback can take effect.
|
|
11
24
|
*/
|
|
12
25
|
export declare function generatePrismaConfig(_config: OpenSaasConfig): string;
|
|
13
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-config.d.ts","sourceRoot":"","sources":["../../src/generator/prisma-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D
|
|
1
|
+
{"version":3,"file":"prisma-config.d.ts","sourceRoot":"","sources":["../../src/generator/prisma-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAsBpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAUlF"}
|
|
@@ -4,22 +4,41 @@ import * as path from 'path';
|
|
|
4
4
|
* Generate Prisma config file for CLI commands
|
|
5
5
|
*
|
|
6
6
|
* Prisma 7 requires a prisma.config.ts file at the project root for CLI commands
|
|
7
|
-
* like `prisma db push` and `prisma migrate
|
|
8
|
-
* runtime configuration (which uses adapters in
|
|
7
|
+
* like `prisma db push`, `prisma migrate dev`, and `prisma migrate deploy`. This
|
|
8
|
+
* is separate from the runtime configuration (which uses adapters in
|
|
9
|
+
* opensaas.config.ts).
|
|
9
10
|
*
|
|
10
11
|
* The CLI config provides the database URL for schema operations, while the
|
|
11
12
|
* runtime config provides adapters for actual query execution.
|
|
13
|
+
*
|
|
14
|
+
* The datasource URL prefers `DIRECT_DATABASE_URL` and falls back to
|
|
15
|
+
* `DATABASE_URL`. On serverless Postgres (e.g. Neon) the running app connects
|
|
16
|
+
* through a pooled `DATABASE_URL`, while migrations need a direct (non-pooled)
|
|
17
|
+
* connection ā set `DIRECT_DATABASE_URL` to that direct URL. Local SQLite is
|
|
18
|
+
* untouched: with `DIRECT_DATABASE_URL` unset, the expression falls back to
|
|
19
|
+
* `DATABASE_URL`.
|
|
20
|
+
*
|
|
21
|
+
* Note: a local `env` helper is emitted instead of the one from `prisma/config`
|
|
22
|
+
* because the upstream helper throws when a variable is unset, which would break
|
|
23
|
+
* the `??` fallback. The local helper returns `undefined` for missing variables
|
|
24
|
+
* so the fallback can take effect.
|
|
12
25
|
*/
|
|
13
26
|
export function generatePrismaConfig(_config) {
|
|
14
27
|
const lines = [];
|
|
15
28
|
// Import dotenv for environment variable loading
|
|
16
29
|
lines.push("import 'dotenv/config'");
|
|
17
|
-
lines.push("import { defineConfig
|
|
30
|
+
lines.push("import { defineConfig } from 'prisma/config'");
|
|
31
|
+
lines.push('');
|
|
32
|
+
lines.push('// Read an environment variable, returning undefined when unset so the');
|
|
33
|
+
lines.push('// `??` fallback below can take effect. (The `env` helper from');
|
|
34
|
+
lines.push("// 'prisma/config' throws on missing variables, which would break the");
|
|
35
|
+
lines.push('// fallback.)');
|
|
36
|
+
lines.push('const env = (name: string): string | undefined => process.env[name]');
|
|
18
37
|
lines.push('');
|
|
19
38
|
lines.push('export default defineConfig({');
|
|
20
39
|
lines.push(" schema: 'prisma',");
|
|
21
40
|
lines.push(' datasource: {');
|
|
22
|
-
lines.push(" url: env('DATABASE_URL'),");
|
|
41
|
+
lines.push(" url: env('DIRECT_DATABASE_URL') ?? env('DATABASE_URL'),");
|
|
23
42
|
lines.push(' },');
|
|
24
43
|
lines.push('})');
|
|
25
44
|
lines.push('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-config.js","sourceRoot":"","sources":["../../src/generator/prisma-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B
|
|
1
|
+
{"version":3,"file":"prisma-config.js","sourceRoot":"","sources":["../../src/generator/prisma-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,iDAAiD;IACjD,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;IACpF,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;IAC5E,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;IACnF,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3B,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;IACjF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IAC3C,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC7B,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IACzE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB,EAAE,UAAkB;IAC1E,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAEjD,0BAA0B;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAA;AA2CvE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAiKnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAUlF"}
|