@opensaas/stack-core 0.20.1 → 0.22.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.
Files changed (136) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +334 -0
  3. package/CLAUDE.md +29 -11
  4. package/dist/access/access-filter.d.ts +29 -0
  5. package/dist/access/access-filter.d.ts.map +1 -0
  6. package/dist/access/access-filter.js +68 -0
  7. package/dist/access/access-filter.js.map +1 -0
  8. package/dist/access/engine.d.ts +15 -48
  9. package/dist/access/engine.d.ts.map +1 -1
  10. package/dist/access/engine.js +14 -280
  11. package/dist/access/engine.js.map +1 -1
  12. package/dist/access/field-access.d.ts +44 -0
  13. package/dist/access/field-access.d.ts.map +1 -0
  14. package/dist/access/field-access.js +123 -0
  15. package/dist/access/field-access.js.map +1 -0
  16. package/dist/access/field-access.test.d.ts +2 -0
  17. package/dist/access/field-access.test.d.ts.map +1 -0
  18. package/dist/access/{engine.test.js → field-access.test.js} +2 -2
  19. package/dist/access/field-access.test.js.map +1 -0
  20. package/dist/access/field-visibility.d.ts +13 -0
  21. package/dist/access/field-visibility.d.ts.map +1 -0
  22. package/dist/access/field-visibility.js +178 -0
  23. package/dist/access/field-visibility.js.map +1 -0
  24. package/dist/access/index.d.ts +4 -1
  25. package/dist/access/index.d.ts.map +1 -1
  26. package/dist/access/index.js +8 -1
  27. package/dist/access/index.js.map +1 -1
  28. package/dist/access/multi-column-read-write.test.d.ts +2 -0
  29. package/dist/access/multi-column-read-write.test.d.ts.map +1 -0
  30. package/dist/access/multi-column-read-write.test.js +149 -0
  31. package/dist/access/multi-column-read-write.test.js.map +1 -0
  32. package/dist/config/index.d.ts +1 -1
  33. package/dist/config/index.d.ts.map +1 -1
  34. package/dist/config/types.d.ts +334 -5
  35. package/dist/config/types.d.ts.map +1 -1
  36. package/dist/context/hook-pipeline.d.ts +49 -0
  37. package/dist/context/hook-pipeline.d.ts.map +1 -0
  38. package/dist/context/hook-pipeline.js +75 -0
  39. package/dist/context/hook-pipeline.js.map +1 -0
  40. package/dist/context/index.d.ts.map +1 -1
  41. package/dist/context/index.js +30 -462
  42. package/dist/context/index.js.map +1 -1
  43. package/dist/context/nested-operations.d.ts.map +1 -1
  44. package/dist/context/nested-operations.js +72 -68
  45. package/dist/context/nested-operations.js.map +1 -1
  46. package/dist/context/write-pipeline.d.ts +158 -0
  47. package/dist/context/write-pipeline.d.ts.map +1 -0
  48. package/dist/context/write-pipeline.js +306 -0
  49. package/dist/context/write-pipeline.js.map +1 -0
  50. package/dist/extend.d.ts +3 -0
  51. package/dist/extend.d.ts.map +1 -0
  52. package/dist/extend.js +10 -0
  53. package/dist/extend.js.map +1 -0
  54. package/dist/fields/format-prisma-default.d.ts +35 -0
  55. package/dist/fields/format-prisma-default.d.ts.map +1 -0
  56. package/dist/fields/format-prisma-default.js +52 -0
  57. package/dist/fields/format-prisma-default.js.map +1 -0
  58. package/dist/fields/format-prisma-default.test.d.ts +2 -0
  59. package/dist/fields/format-prisma-default.test.d.ts.map +1 -0
  60. package/dist/fields/format-prisma-default.test.js +54 -0
  61. package/dist/fields/format-prisma-default.test.js.map +1 -0
  62. package/dist/fields/index.d.ts +1 -0
  63. package/dist/fields/index.d.ts.map +1 -1
  64. package/dist/fields/index.js +267 -18
  65. package/dist/fields/index.js.map +1 -1
  66. package/dist/fields/select.test.js +85 -0
  67. package/dist/fields/select.test.js.map +1 -1
  68. package/dist/fields/text-keystone-compat.test.d.ts +2 -0
  69. package/dist/fields/text-keystone-compat.test.d.ts.map +1 -0
  70. package/dist/fields/text-keystone-compat.test.js +93 -0
  71. package/dist/fields/text-keystone-compat.test.js.map +1 -0
  72. package/dist/hooks/index.d.ts +20 -0
  73. package/dist/hooks/index.d.ts.map +1 -1
  74. package/dist/hooks/index.js +246 -0
  75. package/dist/hooks/index.js.map +1 -1
  76. package/dist/index.d.ts +6 -8
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +25 -9
  79. package/dist/index.js.map +1 -1
  80. package/dist/index.test.d.ts +2 -0
  81. package/dist/index.test.d.ts.map +1 -0
  82. package/dist/index.test.js +33 -0
  83. package/dist/index.test.js.map +1 -0
  84. package/dist/internal.d.ts +8 -0
  85. package/dist/internal.d.ts.map +1 -0
  86. package/dist/internal.js +16 -0
  87. package/dist/internal.js.map +1 -0
  88. package/dist/mcp/handler.js +0 -1
  89. package/dist/mcp/handler.js.map +1 -1
  90. package/dist/validation/field-config.d.ts +55 -0
  91. package/dist/validation/field-config.d.ts.map +1 -0
  92. package/dist/validation/field-config.js +100 -0
  93. package/dist/validation/field-config.js.map +1 -0
  94. package/dist/validation/field-config.test.d.ts +2 -0
  95. package/dist/validation/field-config.test.d.ts.map +1 -0
  96. package/dist/validation/field-config.test.js +159 -0
  97. package/dist/validation/field-config.test.js.map +1 -0
  98. package/package.json +11 -3
  99. package/src/access/access-filter.ts +97 -0
  100. package/src/access/engine.ts +13 -396
  101. package/src/access/{engine.test.ts → field-access.test.ts} +1 -1
  102. package/src/access/field-access.ts +159 -0
  103. package/src/access/field-visibility.ts +269 -0
  104. package/src/access/index.ts +7 -4
  105. package/src/access/multi-column-read-write.test.ts +255 -0
  106. package/src/config/index.ts +3 -0
  107. package/src/config/types.ts +342 -4
  108. package/src/context/hook-pipeline.ts +160 -0
  109. package/src/context/index.ts +29 -667
  110. package/src/context/nested-operations.ts +142 -111
  111. package/src/context/write-pipeline.ts +543 -0
  112. package/src/extend.ts +19 -0
  113. package/src/fields/format-prisma-default.test.ts +64 -0
  114. package/src/fields/format-prisma-default.ts +67 -0
  115. package/src/fields/index.ts +375 -20
  116. package/src/fields/select.test.ts +99 -0
  117. package/src/fields/text-keystone-compat.test.ts +126 -0
  118. package/src/hooks/index.ts +270 -0
  119. package/src/index.test.ts +50 -0
  120. package/src/index.ts +35 -82
  121. package/src/internal.ts +49 -0
  122. package/src/mcp/handler.ts +0 -2
  123. package/src/validation/field-config.test.ts +199 -0
  124. package/src/validation/field-config.ts +145 -0
  125. package/tests/access-relationships.test.ts +4 -4
  126. package/tests/access.test.ts +1 -1
  127. package/tests/field-hooks.test.ts +410 -0
  128. package/tests/field-types.test.ts +1 -1
  129. package/tests/hook-pipeline.test.ts +233 -0
  130. package/tests/nested-operation-registry.test.ts +206 -0
  131. package/tests/write-pipeline.test.ts +588 -0
  132. package/tsconfig.tsbuildinfo +1 -1
  133. package/vitest.config.ts +43 -1
  134. package/dist/access/engine.test.d.ts +0 -2
  135. package/dist/access/engine.test.d.ts.map +0 -1
  136. package/dist/access/engine.test.js.map +0 -1
@@ -1,40 +1,6 @@
1
1
  import { checkAccess, filterWritableFields, getRelatedListConfig } from '../access/index.js';
2
- import { executeResolveInput, executeValidate, validateFieldRules, ValidationError, } from '../hooks/index.js';
2
+ import { executeResolveInput, executeValidate, executeFieldResolveInputHooks, validateFieldRules, ValidationError, } from '../hooks/index.js';
3
3
  import { getDbKey } from '../lib/case-utils.js';
4
- /**
5
- * Execute field-level resolveInput hooks
6
- * Allows fields to transform their input values before database write
7
- */
8
- async function executeFieldResolveInputHooks(
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- inputData,
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
- resolvedData, fields, operation, context, listKey,
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- item) {
15
- let result = { ...resolvedData };
16
- for (const [fieldKey, fieldConfig] of Object.entries(fields)) {
17
- // Skip if field not in data
18
- if (!(fieldKey in result))
19
- continue;
20
- // Skip if no hooks defined
21
- if (!fieldConfig.hooks?.resolveInput)
22
- continue;
23
- // Execute field hook
24
- const transformedValue = await fieldConfig.hooks.resolveInput({
25
- listKey,
26
- fieldKey,
27
- operation,
28
- inputData,
29
- item,
30
- resolvedData: { ...result }, // Pass a copy to avoid mutation affecting recorded args
31
- context,
32
- });
33
- // Create new object with updated field to avoid mutating the passed reference
34
- result = { ...result, [fieldKey]: transformedValue };
35
- }
36
- return result;
37
- }
38
4
  /**
39
5
  * Check if a field config is a relationship field
40
6
  */
@@ -271,6 +237,69 @@ relatedListConfig, context, config, prisma) {
271
237
  }));
272
238
  return Array.isArray(operations) ? processedOps : processedOps[0];
273
239
  }
240
+ /**
241
+ * Registry of nested-operation handlers keyed by nested-op kind.
242
+ *
243
+ * The dispatch loop in {@link processNestedOperations} looks handlers up here
244
+ * instead of branching on each kind. Kinds that require hooks/access control
245
+ * (`create`, `connect`, `connectOrCreate`, `update`) provide an `execute` that
246
+ * applies them; pass-through kinds (`disconnect`, `delete`, `deleteMany`,
247
+ * `set`, `updateMany`) return their value unchanged so Prisma's own
248
+ * constraints apply.
249
+ */
250
+ const nestedOpRegistry = {
251
+ create: {
252
+ execute: ({ value, relatedListConfig, context, config }) => processNestedCreate(value, relatedListConfig, context, config),
253
+ },
254
+ connect: {
255
+ execute: ({ value, relatedListName, relatedListConfig, context, prisma }) => processNestedConnect(value, relatedListName, relatedListConfig, context, prisma),
256
+ },
257
+ connectOrCreate: {
258
+ execute: ({ value, relatedListName, relatedListConfig, context, config, prisma }) => processNestedConnectOrCreate(value, relatedListName, relatedListConfig, context, config, prisma),
259
+ },
260
+ update: {
261
+ execute: ({ value, relatedListName, relatedListConfig, context, config, prisma }) => processNestedUpdate(value, relatedListName, relatedListConfig, context, config, prisma),
262
+ },
263
+ // Pass-through kinds: no hooks/access control, left to Prisma's own constraints.
264
+ disconnect: { execute: ({ value }) => Promise.resolve(value) },
265
+ delete: { execute: ({ value }) => Promise.resolve(value) },
266
+ deleteMany: { execute: ({ value }) => Promise.resolve(value) },
267
+ set: { execute: ({ value }) => Promise.resolve(value) },
268
+ updateMany: { execute: ({ value }) => Promise.resolve(value) },
269
+ };
270
+ /**
271
+ * Order in which nested-op kinds are processed for a single relationship field.
272
+ *
273
+ * Mirrors the historical in-place dispatch order so behaviour is preserved.
274
+ */
275
+ const nestedOpOrder = [
276
+ 'create',
277
+ 'connect',
278
+ 'connectOrCreate',
279
+ 'update',
280
+ 'disconnect',
281
+ 'delete',
282
+ 'deleteMany',
283
+ 'set',
284
+ 'updateMany',
285
+ ];
286
+ /**
287
+ * Process the nested relationship operations supplied for a single
288
+ * relationship field's value, dispatching each present nested-op kind through
289
+ * the {@link nestedOpRegistry}.
290
+ */
291
+ async function processFieldNestedOps(valueRecord, args) {
292
+ const nestedOp = {};
293
+ for (const kind of nestedOpOrder) {
294
+ const value = valueRecord[kind];
295
+ if (value === undefined) {
296
+ continue;
297
+ }
298
+ const handler = nestedOpRegistry[kind];
299
+ nestedOp[kind] = await handler.execute({ ...args, value });
300
+ }
301
+ return nestedOp;
302
+ }
274
303
  /**
275
304
  * Process all nested operations in a data payload
276
305
  * Recursively handles relationship fields with nested writes
@@ -296,39 +325,14 @@ export async function processNestedOperations(data, fieldConfigs, config, contex
296
325
  continue;
297
326
  }
298
327
  const { listName: relatedListName, listConfig: relatedListConfig } = relatedConfig;
299
- // Process different nested operation types
300
- const nestedOp = {};
301
- const valueRecord = value;
302
- if (valueRecord.create !== undefined) {
303
- nestedOp.create = await processNestedCreate(valueRecord.create, relatedListConfig, context, config);
304
- }
305
- if (valueRecord.connect !== undefined) {
306
- nestedOp.connect = await processNestedConnect(valueRecord.connect, relatedListName, relatedListConfig, context, context.prisma);
307
- }
308
- if (valueRecord.connectOrCreate !== undefined) {
309
- nestedOp.connectOrCreate = await processNestedConnectOrCreate(valueRecord.connectOrCreate, relatedListName, relatedListConfig, context, config, context.prisma);
310
- }
311
- if (valueRecord.update !== undefined) {
312
- nestedOp.update = await processNestedUpdate(valueRecord.update, relatedListName, relatedListConfig, context, config, context.prisma);
313
- }
314
- // For other operations, pass through (disconnect, delete, set, etc.)
315
- // These will be subject to Prisma's own constraints
316
- if (valueRecord.disconnect !== undefined) {
317
- nestedOp.disconnect = valueRecord.disconnect;
318
- }
319
- if (valueRecord.delete !== undefined) {
320
- nestedOp.delete = valueRecord.delete;
321
- }
322
- if (valueRecord.deleteMany !== undefined) {
323
- nestedOp.deleteMany = valueRecord.deleteMany;
324
- }
325
- if (valueRecord.set !== undefined) {
326
- nestedOp.set = valueRecord.set;
327
- }
328
- if (valueRecord.updateMany !== undefined) {
329
- nestedOp.updateMany = valueRecord.updateMany;
330
- }
331
- processed[fieldName] = nestedOp;
328
+ // Dispatch each present nested-op kind through the handler registry.
329
+ processed[fieldName] = await processFieldNestedOps(value, {
330
+ relatedListName,
331
+ relatedListConfig,
332
+ context,
333
+ config,
334
+ prisma: context.prisma,
335
+ });
332
336
  }
333
337
  return processed;
334
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nested-operations.js","sourceRoot":"","sources":["../../src/context/nested-operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-operations.js","sourceRoot":"","sources":["../../src/context/nested-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import type { OpenSaasConfig, ListConfig } from '../config/types.js';
2
+ import type { AccessContext, PrismaClientLike } from '../access/types.js';
3
+ /**
4
+ * Write Pipeline — the single module that runs the canonical, secured write
5
+ * sequence for one create/update/delete. It owns the phase order in one place;
6
+ * the per-operation differences (target resolution + access, which input phases
7
+ * run, the DB verb and returned row) are supplied by a {@link WriteStrategy}.
8
+ *
9
+ * The phase order is the framework's single most important invariant. See the
10
+ * "Write Pipeline" glossary term in CONTEXT.md and the hooks ordering in
11
+ * CLAUDE.md. Reads (findUnique/findMany) and the two-phase read model
12
+ * (ADR-0001) are intentionally out of scope here.
13
+ */
14
+ /**
15
+ * The write operations the pipeline can run.
16
+ */
17
+ export type WriteOperation = 'create' | 'update' | 'delete';
18
+ /**
19
+ * Result of resolving a write target (axis 1).
20
+ *
21
+ * - `{ status: 'ok', originalItem }` — proceed. `originalItem` is the existing
22
+ * row for update/delete, or `undefined` for create.
23
+ * - `{ status: 'denied' }` — access denied, missing target, or filter
24
+ * non-match. The pipeline short-circuits to `null` (silent failure) BEFORE
25
+ * any input phases, before-hooks, or the DB call.
26
+ */
27
+ export type TargetResolution = {
28
+ status: 'ok';
29
+ originalItem: Record<string, unknown> | undefined;
30
+ } | {
31
+ status: 'denied';
32
+ };
33
+ /**
34
+ * Minimal dynamic Prisma model surface used by the write pipeline. Model names
35
+ * are generated at runtime, so the concrete client type is not known here.
36
+ */
37
+ export interface PrismaModel {
38
+ findUnique: (args: {
39
+ where: Record<string, unknown>;
40
+ }) => Promise<Record<string, unknown> | null>;
41
+ findFirst: (args: {
42
+ where: Record<string, unknown>;
43
+ }) => Promise<Record<string, unknown> | null>;
44
+ count: () => Promise<number>;
45
+ create: (args: {
46
+ data: Record<string, unknown>;
47
+ }) => Promise<Record<string, unknown>>;
48
+ update: (args: {
49
+ where: Record<string, unknown>;
50
+ data: Record<string, unknown>;
51
+ }) => Promise<Record<string, unknown>>;
52
+ delete: (args: {
53
+ where: Record<string, unknown>;
54
+ }) => Promise<Record<string, unknown>>;
55
+ }
56
+ /**
57
+ * Per-operation strategy. Supplies the three axes on which create/update/delete
58
+ * genuinely differ; the pipeline owns the shared phase order around them.
59
+ *
60
+ * 1. `resolveTarget` — fetch the target row (if any) + operation-level access.
61
+ * 2. `runInputPhases` — whether the resolveInput → validate-hooks → field
62
+ * rules → filter-writable → nested-ops span runs (create & update: yes;
63
+ * delete: no).
64
+ * 3. `persist` — the DB verb; returns the row passed through Field Visibility.
65
+ */
66
+ export interface WriteStrategy {
67
+ operation: WriteOperation;
68
+ /**
69
+ * Axis 1: resolve the target row and check operation-level access. Receives
70
+ * the dynamically-resolved Prisma model so it can fetch rows and perform
71
+ * filter re-checks. Implementations must honour `context._isSudo`.
72
+ */
73
+ resolveTarget(model: PrismaModel): Promise<TargetResolution>;
74
+ /**
75
+ * Axis 2: whether to run the input-shaping phases (resolveInput → validate
76
+ * hooks → built-in field rules → filter-writable → nested ops). Delete runs
77
+ * only its `validate`/field-validate hooks and skips the rest.
78
+ */
79
+ runInputPhases: boolean;
80
+ /**
81
+ * Axis 3: execute the database write and return the persisted/deleted row.
82
+ * `data` is the fully-resolved write payload (empty object for delete).
83
+ */
84
+ persist(model: PrismaModel, data: Record<string, unknown>): Promise<Record<string, unknown>>;
85
+ }
86
+ /**
87
+ * Arguments shared by every write pipeline run.
88
+ */
89
+ export interface WritePipelineArgs<TPrisma extends PrismaClientLike> {
90
+ listName: string;
91
+ listConfig: ListConfig<any>;
92
+ prisma: TPrisma;
93
+ context: AccessContext<TPrisma>;
94
+ config: OpenSaasConfig;
95
+ /** The original input data for the write (create/update). `undefined` for delete. */
96
+ inputData: Record<string, unknown> | undefined;
97
+ /** The per-operation strategy supplying the three variation axes. */
98
+ strategy: WriteStrategy;
99
+ }
100
+ /**
101
+ * Run the canonical secured write sequence once.
102
+ *
103
+ * Phase order (owned here, in one place):
104
+ * resolve target + operation-level access
105
+ * → list/field `resolveInput`
106
+ * → list/field `validate`
107
+ * → built-in field rules (`validateFieldRules`)
108
+ * → filter writable fields
109
+ * → nested operations
110
+ * → list/field `beforeOperation`
111
+ * → DB
112
+ * → list/field `afterOperation`
113
+ * → `filterReadableFields` (Field Visibility)
114
+ *
115
+ * Contract preserved exactly:
116
+ * - missing target / access denied / filter non-match → `null` (silent),
117
+ * BEFORE the DB call and BEFORE `beforeOperation`.
118
+ * - validation failure → THROW `ValidationError` (never silent).
119
+ * - sudo mode skips access checks and writable-field filtering (the strategy
120
+ * and `filterWritableFields` both honour `context._isSudo`).
121
+ * - `afterOperation` receives `originalItem` for update/delete (undefined for
122
+ * create).
123
+ * - delete returns the deleted row as-is (no Field Visibility pass), matching
124
+ * current behaviour.
125
+ */
126
+ export declare function runWritePipeline<TPrisma extends PrismaClientLike>(args: WritePipelineArgs<TPrisma>): Promise<Record<string, unknown> | null>;
127
+ /**
128
+ * Create strategy.
129
+ *
130
+ * Axis 1: checks `create` access with NO existing row. Enforces the
131
+ * singleton-create constraint even under sudo. On create, an access result of
132
+ * `true` OR a filter object both proceed — there is no filter re-check.
133
+ * Axis 2: runs all input phases.
134
+ * Axis 3: `model.create({ data })`, prepending `id: 1` for singleton lists.
135
+ */
136
+ export declare function createWriteStrategy(listName: string, listConfig: ListConfig<any>, context: AccessContext): WriteStrategy;
137
+ /**
138
+ * Update strategy.
139
+ *
140
+ * Axis 1: fetch row, check `update` access, re-check filter results.
141
+ * Axis 2: runs all input phases.
142
+ * Axis 3: `model.update({ where, data })`; afterOperation gets `originalItem`.
143
+ */
144
+ export declare function updateWriteStrategy(listConfig: ListConfig<any>, context: AccessContext, where: {
145
+ id: string;
146
+ }): WriteStrategy;
147
+ /**
148
+ * Delete strategy.
149
+ *
150
+ * Axis 1: enforce singleton constraint (even under sudo), fetch row, check
151
+ * `delete` access, re-check filter results.
152
+ * Axis 2: SKIPS input phases (runs only validate/field-validate).
153
+ * Axis 3: `model.delete({ where })`; afterOperation gets `originalItem`.
154
+ */
155
+ export declare function deleteWriteStrategy(listName: string, listConfig: ListConfig<any>, context: AccessContext, where: {
156
+ id: string;
157
+ }): WriteStrategy;
158
+ //# sourceMappingURL=write-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-pipeline.d.ts","sourceRoot":"","sources":["../../src/context/write-pipeline.ts"],"names":[],"mappings":"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"}