@cwqt/refract
Advanced tools
Comparing version 1.0.0 to 1.0.1
@@ -26,2 +26,3 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
const Types = __importStar(require("../types")); | ||
const perf_hooks_1 = require("perf_hooks"); | ||
const block_1 = require("./block"); | ||
@@ -32,26 +33,47 @@ const transform_1 = require("./transform"); | ||
const dedent_1 = require("./dedent"); | ||
const types_1 = require("../types"); | ||
exports.default = (config) => { | ||
const start = perf_hooks_1.performance.now(); | ||
(0, types_1.validate)(config); | ||
config.schema = config.schema.map(model => (['Field', 'Relation'].forEach(v => (0, utils_1.del)(model, v)), model)); | ||
return (0, dedent_1.dedent) ` | ||
${(0, block_1.header)(`refract - ${process.env.npm_package_version}`)} | ||
${(0, block_1.header)('datasource')} | ||
${(0, block_1.block)('database db', (0, transform_1.kv)(config.datasource))} | ||
${(0, block_1.header)('generators')} | ||
${config.generators | ||
.map(generator => (0, block_1.block)(`generator ${generator.name}`, (0, transform_1.kv)((0, utils_1.del)(generator, 'name')))) | ||
.join('\n')} | ||
${(0, block_1.header)('enums')} | ||
${config.schema | ||
.filter(Types.Blocks.isEnum) | ||
.map(e => (0, block_1.block)(`enum ${e.name}`, e.columns.map(c => `\t${c.name}`).join(',\n'))) | ||
.join('\n\n')} | ||
${(0, block_1.header)('models')} | ||
${config.schema | ||
.filter(Types.Blocks.isModel) | ||
.map(model => (0, block_1.block)(`model ${model.name}`, model.columns.map(column_1.column).join('\n'))) | ||
.join('\n\n')} | ||
`; | ||
const enums = config.schema.filter(Types.Blocks.isEnum); | ||
const models = config.schema.filter(Types.Blocks.isModel); | ||
const generators = config.generators; | ||
const datasource = config.datasource; | ||
const schema = (0, dedent_1.dedent)([ | ||
(0, block_1.header)('datasource'), | ||
(0, block_1.block)('datasource db', (0, transform_1.kv)(datasource)), | ||
generators.length | ||
? [ | ||
(0, block_1.header)('generators'), | ||
config.generators | ||
.map(generator => (0, block_1.block)(`generator ${generator.name}`, (0, transform_1.kv)((0, utils_1.del)(generator, 'name')))) | ||
.join('\n'), | ||
] | ||
: null, | ||
enums.length | ||
? [ | ||
(0, block_1.header)('enums'), | ||
enums | ||
.map(e => (0, block_1.block)(`enum ${e.name}`, e.columns.map(c => `\t${c.name}`).join(',\n'))) | ||
.join('\n\n'), | ||
] | ||
: null, | ||
models.length | ||
? [ | ||
(0, block_1.header)('models'), | ||
models | ||
.map(model => (0, block_1.block)(`model ${model.name}`, model.columns.map(column_1.column).join('\n'))) | ||
.join('\n\n'), | ||
] | ||
: null, | ||
] | ||
.filter(utils_1.nonNullable) | ||
.flat() | ||
.join('\n\n')); | ||
const end = perf_hooks_1.performance.now(); | ||
return [ | ||
(0, block_1.header)(`refract 1.0.1 - generated in ${(end - start).toFixed(3)} ms`), | ||
schema, | ||
].join('\n'); | ||
}; |
@@ -11,4 +11,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
switch (typeof value) { | ||
case 'string': | ||
case 'string': { | ||
if (value.endsWith('()')) | ||
return value; | ||
return `"${value}"`; | ||
} | ||
case 'number': | ||
@@ -15,0 +18,0 @@ return value.toString(); |
import { Block } from './blocks'; | ||
export declare type Datasource = { | ||
provider: 'postgresql' | 'mysql' | 'sqlite' | 'sqlserver' | 'mongodb'; | ||
provider: 'postgresql' | 'mysql' | 'sqlite' | 'sqlserver'; | ||
url: string; | ||
@@ -8,2 +8,3 @@ shadowDatabaseUrl?: string; | ||
}; | ||
declare type PreviewFeatures = 'filterJson' | 'interactiveTransactions' | 'fullTextSearch' | 'referentialIntegrity' | 'dataProxy' | 'extendedIndexes' | 'fullTextIndex' | 'cockroachdb'; | ||
export declare type Generator = { | ||
@@ -13,3 +14,3 @@ name: string; | ||
output?: string; | ||
previewFeatures?: string[]; | ||
previewFeatures?: PreviewFeatures[]; | ||
engineType?: 'library' | 'binary'; | ||
@@ -24,1 +25,3 @@ binaryTargets?: string[]; | ||
}; | ||
export declare const validate: (config: Config) => void; | ||
export {}; |
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.validate = void 0; | ||
const validate = (config) => { | ||
if (config.datasource.referentialIntegrity) { | ||
if (!config.generators.some(g => g.previewFeatures.includes('referentialIntegrity'))) | ||
throw new Error("Must have a generator with the 'referentialIntegrity' preview feature enabled to use referential integrity in the datasource"); | ||
} | ||
}; | ||
exports.validate = validate; |
{ | ||
"name": "@cwqt/refract", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "A TypeScript CDK for Prisma", | ||
@@ -5,0 +5,0 @@ "author": "cwqt", |
@@ -18,10 +18,10 @@ # refract | ||
// inspired from from: https://www.prisma.io/docs/concepts/components/prisma-schema#example | ||
const Role = Enum("Role", ["USER", "ADMIN"] as const); | ||
const Role = Enum('Role', ['USER', 'ADMIN'] as const); | ||
const Post = Model("Post"); | ||
const User = Model("User"); | ||
const Post = Model('Post'); | ||
const User = Model('User'); | ||
const Timestamps = Mixin() | ||
.Field("createdAt", DateTime(Default("now()"))) | ||
.Field("updatedAt", DateTime(UpdatedAt)); | ||
.Field('createdAt', DateTime(Default('now()'))) | ||
.Field('updatedAt', DateTime(UpdatedAt)); | ||
@@ -63,3 +63,3 @@ // prettier-ignore | ||
shadowDatabaseUrl: process.env.PG_SHADOW_URL, | ||
referentialIntegrity: true, | ||
referentialIntegrity: 'prisma', | ||
}, | ||
@@ -66,0 +66,0 @@ generators: [ |
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
69330
821