@ghentcdh/create-crouton 0.0.1-alpha.44 → 0.0.1-alpha.47

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/index.js CHANGED
@@ -18824,14 +18824,23 @@ var ResponseSchema = external_exports.object({
18824
18824
  var DataSourceShape = zod_default.object({
18825
18825
  /** Datasource name (folder + `name` in data-source.json). */
18826
18826
  name: zod_default.string(),
18827
- /** Env var holding the connection URL. */
18828
- urlEnv: zod_default.string(),
18827
+ /**
18828
+ * Env var holding the connection URL. Required for Prisma adapters; optional
18829
+ * for custom adapters whose connection config may differ (secrets file, SDK
18830
+ * key, etc.).
18831
+ */
18832
+ urlEnv: zod_default.string().optional(),
18829
18833
  /** Import path for this datasource's generated Zod types (for resource `schema.ts`). */
18830
18834
  generatedTypesImport: zod_default.string().optional(),
18831
18835
  /** Datasource type tag. Default `postgres`. */
18832
18836
  type: zod_default.string().default("postgres"),
18833
18837
  /** Mark this as the default datasource. Default `false`. */
18834
18838
  default: zod_default.boolean().default(false),
18839
+ /**
18840
+ * Adapter kind. `"prisma"` (default) expects `index.ts` to default-export a
18841
+ * `PrismaClient`; `"custom"` expects it to default-export a `DataSourceAdapter`.
18842
+ */
18843
+ adapter: zod_default.enum(["prisma", "custom"]).default("prisma"),
18835
18844
  /** Prisma schema path, relative to project root. Default `prisma/<name>/schema.prisma`. */
18836
18845
  prismaSchema: zod_default.string().optional(),
18837
18846
  /** Prisma config path, relative to project root. Default `prisma/<name>/prisma.config.ts`. */
@@ -19538,11 +19547,17 @@ var ViewColumnConfigSchema = external_exports.object({
19538
19547
  fieldInput: FieldInputSchema.optional()
19539
19548
  });
19540
19549
  var ViewConfigSchema = external_exports.object({
19541
- json_schema: external_exports.record(external_exports.string(), external_exports.unknown()),
19542
- ui_schema: external_exports.record(external_exports.string(), external_exports.unknown()),
19550
+ // TODO why we have both?
19551
+ json_schema: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19552
+ ui_schema: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19553
+ // TODO why we have both?
19554
+ ui: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19555
+ data: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
19543
19556
  columns: external_exports.array(ViewColumnConfigSchema),
19544
19557
  defaultSort: external_exports.string().optional()
19545
19558
  });
19559
+ var viewDefList = ["table", "view", "form"];
19560
+ var ViewDefEnum = external_exports.enum(viewDefList);
19546
19561
 
19547
19562
  // ../crouton-core/src/lib/i18n/Translations.schema.ts
19548
19563
  var NestedStringRecord = external_exports.lazy(
@@ -19616,14 +19631,51 @@ var relImport = (fromDir, toDir) => {
19616
19631
  };
19617
19632
  var buildDatasourceFiles = (opts) => {
19618
19633
  const name = opts.name;
19619
- const type = opts.type ?? "postgres";
19620
19634
  const isDefault = opts.default === true;
19635
+ const adapter = opts.adapter ?? "prisma";
19636
+ const dsDir = posix.join(opts.dataSourcesDir, name);
19637
+ if (adapter === "custom") {
19638
+ const dataSourceJson2 = {
19639
+ adapter: "custom",
19640
+ name,
19641
+ ...opts.urlEnv ? { urlEnv: opts.urlEnv } : {},
19642
+ ...isDefault ? { default: true } : {}
19643
+ };
19644
+ const indexTs2 = `import type { DataSourceAdapter } from '@ghentcdh/crouton-api';
19645
+
19646
+ const adapter: DataSourceAdapter = {
19647
+ kind: 'custom',
19648
+
19649
+ supports(_model: string): boolean {
19650
+ return true;
19651
+ },
19652
+
19653
+ async disconnect(): Promise<void> {
19654
+ // clean up connections
19655
+ },
19656
+ };
19657
+
19658
+ export default adapter;
19659
+ `;
19660
+ const notes2 = [];
19661
+ if (opts.urlEnv) notes2.push(`Add ${opts.urlEnv} to your .env (and .env.example).`);
19662
+ notes2.push(`Implement your DataSourceAdapter in ${posix.join(dsDir, "index.ts")}.`);
19663
+ return {
19664
+ files: [
19665
+ { path: posix.join(dsDir, "data-source.json"), contents: `${JSON.stringify(dataSourceJson2, null, 2)}
19666
+ ` },
19667
+ { path: posix.join(dsDir, "index.ts"), contents: indexTs2 }
19668
+ ],
19669
+ resolved: { name, urlEnv: opts.urlEnv, adapter: "custom", default: isDefault },
19670
+ notes: notes2
19671
+ };
19672
+ }
19673
+ const type = opts.type ?? "postgres";
19621
19674
  const provider = PRISMA_PROVIDERS[type.toLowerCase()] ?? "postgresql";
19622
19675
  const prismaSchema = opts.prismaSchema ?? `prisma/${name}/schema.prisma`;
19623
19676
  const prismaConfig = opts.prismaConfig ?? defaultPrismaConfig(name);
19624
19677
  const zodOutput = opts.zodOutput ?? `generated/${name}/src`;
19625
19678
  const clientOutput = opts.clientOutput ?? `generated/${name}/client`;
19626
- const dsDir = posix.join(opts.dataSourcesDir, name);
19627
19679
  const schemaDir = dirname4(prismaSchema);
19628
19680
  const migrationsDir = posix.join(schemaDir, "migrations");
19629
19681
  const dataSourceJson = {
@@ -19704,7 +19756,7 @@ export default defineConfig({
19704
19756
  ];
19705
19757
  return {
19706
19758
  files,
19707
- resolved: { name, type, default: isDefault, urlEnv: opts.urlEnv, generatedTypesImport: opts.generatedTypesImport, prismaSchema, prismaConfig, zodOutput, clientOutput },
19759
+ resolved: { name, type, adapter: "prisma", default: isDefault, urlEnv: opts.urlEnv, generatedTypesImport: opts.generatedTypesImport, prismaSchema, prismaConfig, zodOutput, clientOutput },
19708
19760
  notes
19709
19761
  };
19710
19762
  };
@@ -19837,7 +19889,7 @@ var runCreate = async (name, opts) => {
19837
19889
  const tokens = {
19838
19890
  name,
19839
19891
  Name: toTitle(name),
19840
- version: true ? "0.0.1-alpha.44" : "latest",
19892
+ version: true ? "0.0.1-alpha.47" : "latest",
19841
19893
  year: String((/* @__PURE__ */ new Date()).getFullYear()),
19842
19894
  pmRun: pm === "npm" ? "npm run" : pm,
19843
19895
  urlEnv: "DATABASE_URL",