@ghentcdh/create-crouton 0.0.1-alpha.46 → 0.0.1-alpha.48

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`. */
@@ -19622,14 +19631,51 @@ var relImport = (fromDir, toDir) => {
19622
19631
  };
19623
19632
  var buildDatasourceFiles = (opts) => {
19624
19633
  const name = opts.name;
19625
- const type = opts.type ?? "postgres";
19626
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";
19627
19674
  const provider = PRISMA_PROVIDERS[type.toLowerCase()] ?? "postgresql";
19628
19675
  const prismaSchema = opts.prismaSchema ?? `prisma/${name}/schema.prisma`;
19629
19676
  const prismaConfig = opts.prismaConfig ?? defaultPrismaConfig(name);
19630
19677
  const zodOutput = opts.zodOutput ?? `generated/${name}/src`;
19631
19678
  const clientOutput = opts.clientOutput ?? `generated/${name}/client`;
19632
- const dsDir = posix.join(opts.dataSourcesDir, name);
19633
19679
  const schemaDir = dirname4(prismaSchema);
19634
19680
  const migrationsDir = posix.join(schemaDir, "migrations");
19635
19681
  const dataSourceJson = {
@@ -19710,7 +19756,7 @@ export default defineConfig({
19710
19756
  ];
19711
19757
  return {
19712
19758
  files,
19713
- 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 },
19714
19760
  notes
19715
19761
  };
19716
19762
  };
@@ -19843,7 +19889,7 @@ var runCreate = async (name, opts) => {
19843
19889
  const tokens = {
19844
19890
  name,
19845
19891
  Name: toTitle(name),
19846
- version: true ? "0.0.1-alpha.46" : "latest",
19892
+ version: true ? "0.0.1-alpha.48" : "latest",
19847
19893
  year: String((/* @__PURE__ */ new Date()).getFullYear()),
19848
19894
  pmRun: pm === "npm" ? "npm run" : pm,
19849
19895
  urlEnv: "DATABASE_URL",