@ghentcdh/crouton-api 0.0.1-alpha.57 → 0.0.1-alpha.59

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.cjs CHANGED
@@ -44,6 +44,8 @@ __export(index_exports, {
44
44
  ResourceHooksSchema: () => ResourceHooksSchema,
45
45
  SecurityGuardRegistry: () => SecurityGuardRegistry,
46
46
  WriteOpSchema: () => WriteOpSchema,
47
+ applyAfterFindAll: () => applyAfterFindAll,
48
+ applyBeforeFindAll: () => applyBeforeFindAll,
47
49
  buildFilterWhere: () => buildFilterWhere,
48
50
  buildViews: () => buildViews,
49
51
  decorateRow: () => decorateRow,
@@ -1993,7 +1995,9 @@ var import_zod21 = require("zod");
1993
1995
  var isInstanceOf = /* @__PURE__ */ __name((zodSchema, className) => {
1994
1996
  if (!(zodSchema instanceof import_zod21.z.ZodCustom)) return false;
1995
1997
  const result = zodSchema.safeParse(null);
1996
- return !result.success && result.error.issues[0]?.expected === className;
1998
+ if (result.success) return false;
1999
+ const issue = result.error.issues[0];
2000
+ return issue?.expected === className || (issue?.message?.includes(className) ?? false);
1997
2001
  }, "isInstanceOf");
1998
2002
  var jsonSchemaOverride = /* @__PURE__ */ __name(({ zodSchema, jsonSchema }) => {
1999
2003
  if (zodSchema instanceof import_zod21.z.ZodDate) {
@@ -5009,7 +5013,9 @@ var ReadOpSchema = import_zod39.z.enum([
5009
5013
  var ResourceHooksSchema = import_zod39.z.object({
5010
5014
  beforeWrite: import_zod39.z.custom().optional(),
5011
5015
  afterWrite: import_zod39.z.custom().optional(),
5012
- afterRead: import_zod39.z.custom().optional()
5016
+ afterRead: import_zod39.z.custom().optional(),
5017
+ beforeFindAll: import_zod39.z.custom().optional(),
5018
+ afterFindAll: import_zod39.z.custom().optional()
5013
5019
  });
5014
5020
 
5015
5021
  // src/lib/crud/hooks/hooks.loader.ts
@@ -5067,6 +5073,14 @@ var prepareWrite = /* @__PURE__ */ __name(async (data, op, target, adapter, id,
5067
5073
  const hook = target.hooks?.beforeWrite;
5068
5074
  return hook ? hook(normalized, hookCtxWrite(adapter, op, id, request, parent)) : normalized;
5069
5075
  }, "prepareWrite");
5076
+ var applyBeforeFindAll = /* @__PURE__ */ __name(async (params, target, adapter, request, parent) => {
5077
+ const hook = target.hooks?.beforeFindAll;
5078
+ return hook ? hook(params, hookCtxRead(adapter, "findAll", request, parent)) : params;
5079
+ }, "applyBeforeFindAll");
5080
+ var applyAfterFindAll = /* @__PURE__ */ __name(async (rows, target, adapter, request, parent) => {
5081
+ const hook = target.hooks?.afterFindAll;
5082
+ return hook ? hook(rows, hookCtxRead(adapter, "findAll", request, parent)) : rows;
5083
+ }, "applyAfterFindAll");
5070
5084
  var postWrite = /* @__PURE__ */ __name(async (result, op, target, adapter, id, request, parent) => {
5071
5085
  const hook = target.hooks?.afterWrite;
5072
5086
  return hook ? hook(result, hookCtxWrite(adapter, op, id, request, parent)) : result;
@@ -5365,9 +5379,11 @@ function createCrudRepository(prisma, config, dataSources, configRegistry) {
5365
5379
  hooks: config.hooks,
5366
5380
  valueLabelColumns: vlCols
5367
5381
  };
5368
- return decorateRows(rows, "findAll", target, adapter2, request);
5382
+ const decorated = await decorateRows(rows, "findAll", target, adapter2, request);
5383
+ return applyAfterFindAll(decorated, config, adapter2, request);
5369
5384
  }, "mkDecorateFindAll");
5370
5385
  const decorateFindAll2 = mkDecorateFindAll(resolvedAdapter);
5386
+ const applyBefore = /* @__PURE__ */ __name((params, request) => applyBeforeFindAll(params, config, resolvedAdapter, request), "applyBefore");
5371
5387
  const decorateFindOne2 = /* @__PURE__ */ __name((row, request) => decorateRow(row, "findOne", config, resolvedAdapter, request), "decorateFindOne");
5372
5388
  const prepareData2 = /* @__PURE__ */ __name((data, op, id, request) => prepareWrite(data, op, config, resolvedAdapter, id, request), "prepareData");
5373
5389
  const postData2 = /* @__PURE__ */ __name((result, op, id, request) => postWrite(result, op, config, resolvedAdapter, id, request), "postData");
@@ -5399,9 +5415,10 @@ function createCrudRepository(prisma, config, dataSources, configRegistry) {
5399
5415
  return {
5400
5416
  prisma,
5401
5417
  findAllWithCount: /* @__PURE__ */ __name(async (params, request) => {
5402
- const { data, count } = await resolvedAdapter.findAll(adapterModelKey, params, {
5418
+ const effectiveParams = await applyBefore(params, request);
5419
+ const { data, count } = await resolvedAdapter.findAll(adapterModelKey, effectiveParams, {
5403
5420
  ...ctx(request, "findAll"),
5404
- offset: offsetOf(params)
5421
+ offset: offsetOf(effectiveParams)
5405
5422
  });
5406
5423
  return {
5407
5424
  data: await decorateFindAll2(data, request),
@@ -5409,9 +5426,10 @@ function createCrudRepository(prisma, config, dataSources, configRegistry) {
5409
5426
  };
5410
5427
  }, "findAllWithCount"),
5411
5428
  findAll: /* @__PURE__ */ __name(async (params, request) => {
5412
- const { data } = await resolvedAdapter.findAll(adapterModelKey, params, {
5429
+ const effectiveParams = await applyBefore(params, request);
5430
+ const { data } = await resolvedAdapter.findAll(adapterModelKey, effectiveParams, {
5413
5431
  ...ctx(request, "findAll"),
5414
- offset: offsetOf(params)
5432
+ offset: offsetOf(effectiveParams)
5415
5433
  });
5416
5434
  return decorateFindAll2(data, request);
5417
5435
  }, "findAll"),
@@ -5473,7 +5491,8 @@ function createCrudRepository(prisma, config, dataSources, configRegistry) {
5473
5491
  hooks: config.hooks,
5474
5492
  valueLabelColumns: vlCols
5475
5493
  };
5476
- return decorateRows(rows, "findAll", target, adapter, request);
5494
+ const decorated = await decorateRows(rows, "findAll", target, adapter, request);
5495
+ return applyAfterFindAll(decorated, config, adapter, request);
5477
5496
  }, "decorateFindAll");
5478
5497
  const decorateFindOne = /* @__PURE__ */ __name((row, request) => decorateRow(row, "findOne", config, adapter, request), "decorateFindOne");
5479
5498
  const prepareData = /* @__PURE__ */ __name((data, op, id, request) => prepareWrite(data, op, config, adapter, id, request), "prepareData");
@@ -5481,7 +5500,10 @@ function createCrudRepository(prisma, config, dataSources, configRegistry) {
5481
5500
  const toId = /* @__PURE__ */ __name((id) => (config.idType ?? "string") === "number" ? +id : String(id), "toId");
5482
5501
  return {
5483
5502
  prisma,
5484
- findAll: /* @__PURE__ */ __name(async (params, request) => decorateFindAll(await reader.findAll(params, request), request), "findAll"),
5503
+ findAll: /* @__PURE__ */ __name(async (params, request) => {
5504
+ const effectiveParams = await applyBeforeFindAll(params, config, adapter, request);
5505
+ return decorateFindAll(await reader.findAll(effectiveParams, request), request);
5506
+ }, "findAll"),
5485
5507
  count: reader.count.bind(reader),
5486
5508
  findOne: /* @__PURE__ */ __name(async (id, request) => decorateFindOne(await reader.findOne(id, request), request), "findOne"),
5487
5509
  findAllByParent: reader.findAllByParent.bind(reader),
@@ -7916,7 +7938,46 @@ var buildResourceDiffs = /* @__PURE__ */ __name(async (models, deps) => {
7916
7938
  var import_node_child_process = require("child_process");
7917
7939
  var import_node_fs7 = require("fs");
7918
7940
  var import_promises7 = require("fs/promises");
7941
+ var import_node_module2 = require("module");
7919
7942
  var import_node_path15 = require("path");
7943
+ var loadDotenv = /* @__PURE__ */ __name((dir) => {
7944
+ try {
7945
+ const _require2 = (0, import_node_module2.createRequire)(importMetaUrl);
7946
+ const dotenv = _require2("dotenv");
7947
+ let d = dir;
7948
+ for (let i = 0; i < 6; i++) {
7949
+ if ((0, import_node_fs7.readdirSync)(d).includes(".env")) {
7950
+ dotenv.config({
7951
+ path: (0, import_node_path15.join)(d, ".env")
7952
+ });
7953
+ return;
7954
+ }
7955
+ const parent = (0, import_node_path15.dirname)(d);
7956
+ if (parent === d) break;
7957
+ d = parent;
7958
+ }
7959
+ } catch {
7960
+ }
7961
+ }, "loadDotenv");
7962
+ var resolveBin = /* @__PURE__ */ __name((name, cwd) => {
7963
+ let d = cwd;
7964
+ for (let i = 0; i < 6; i++) {
7965
+ const bin = (0, import_node_path15.join)(d, "node_modules", ".bin", name);
7966
+ if ((0, import_node_fs7.existsSync)(bin)) return [
7967
+ bin,
7968
+ []
7969
+ ];
7970
+ const parent = (0, import_node_path15.dirname)(d);
7971
+ if (parent === d) break;
7972
+ d = parent;
7973
+ }
7974
+ return [
7975
+ "npx",
7976
+ [
7977
+ name
7978
+ ]
7979
+ ];
7980
+ }, "resolveBin");
7920
7981
  var run = /* @__PURE__ */ __name((cmd, args, cwd) => new Promise((resolve7) => {
7921
7982
  const child = (0, import_node_child_process.spawn)(cmd, args, {
7922
7983
  cwd,
@@ -7953,8 +8014,9 @@ var backupSchema = /* @__PURE__ */ __name(async (schemaPath) => {
7953
8014
  return dest;
7954
8015
  }, "backupSchema");
7955
8016
  var prismaDbPull = /* @__PURE__ */ __name(async (cwd, prismaConfig) => {
7956
- const { code, stdout, stderr } = await run("npx", [
7957
- "prisma",
8017
+ const [bin, prefix] = resolveBin("prisma", cwd);
8018
+ const { code, stdout, stderr } = await run(bin, [
8019
+ ...prefix,
7958
8020
  "db",
7959
8021
  "pull",
7960
8022
  "--config",
@@ -7967,11 +8029,28 @@ ${stderr}`.trim()
7967
8029
  };
7968
8030
  }, "prismaDbPull");
7969
8031
  var prismaCaseFormat = /* @__PURE__ */ __name(async (cwd, schemaPath) => {
7970
- const { code, stdout, stderr } = await run("npx", [
7971
- "prisma-case-format",
7972
- "--file",
7973
- schemaPath
7974
- ], cwd);
8032
+ let binPath;
8033
+ try {
8034
+ const _require2 = (0, import_node_module2.createRequire)(importMetaUrl);
8035
+ binPath = _require2.resolve("prisma-case-format/bin/cli.js");
8036
+ } catch {
8037
+ }
8038
+ const [cmd, args] = binPath ? [
8039
+ process.execPath,
8040
+ [
8041
+ binPath,
8042
+ "--file",
8043
+ schemaPath
8044
+ ]
8045
+ ] : [
8046
+ "npx",
8047
+ [
8048
+ "prisma-case-format",
8049
+ "--file",
8050
+ schemaPath
8051
+ ]
8052
+ ];
8053
+ const { code, stdout, stderr } = await run(cmd, args, cwd);
7975
8054
  return {
7976
8055
  ok: code === 0,
7977
8056
  output: `${stdout}
@@ -7979,8 +8058,9 @@ ${stderr}`.trim()
7979
8058
  };
7980
8059
  }, "prismaCaseFormat");
7981
8060
  var prismaGenerate = /* @__PURE__ */ __name(async (cwd, prismaConfig) => {
7982
- const { code, stdout, stderr } = await run("npx", [
7983
- "prisma",
8061
+ const [bin, prefix] = resolveBin("prisma", cwd);
8062
+ const { code, stdout, stderr } = await run(bin, [
8063
+ ...prefix,
7984
8064
  "generate",
7985
8065
  "--config",
7986
8066
  prismaConfig
@@ -8021,6 +8101,7 @@ ${src}`, "utf-8");
8021
8101
  }, "fixZodImports");
8022
8102
  var pullAndGenerate = /* @__PURE__ */ __name(async (input) => {
8023
8103
  const { root, prismaConfigPath, schemaPath, zodOutputDir } = input;
8104
+ loadDotenv(root);
8024
8105
  const backupPath = await backupSchema(schemaPath);
8025
8106
  const dbPull = await prismaDbPull(root, prismaConfigPath);
8026
8107
  if (!dbPull.ok) {
@@ -9992,6 +10073,8 @@ var parseSchema = /* @__PURE__ */ __name((input, appConfig, view = "schemas") =>
9992
10073
  ResourceHooksSchema,
9993
10074
  SecurityGuardRegistry,
9994
10075
  WriteOpSchema,
10076
+ applyAfterFindAll,
10077
+ applyBeforeFindAll,
9995
10078
  buildFilterWhere,
9996
10079
  buildViews,
9997
10080
  decorateRow,