@opensaas/stack-core 0.23.0 → 0.25.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 (77) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +256 -0
  3. package/dist/access/access-filter.d.ts +39 -0
  4. package/dist/access/access-filter.d.ts.map +1 -1
  5. package/dist/access/access-filter.js +121 -0
  6. package/dist/access/access-filter.js.map +1 -1
  7. package/dist/access/field-access.d.ts +1 -0
  8. package/dist/access/field-access.d.ts.map +1 -1
  9. package/dist/access/field-access.js +79 -4
  10. package/dist/access/field-access.js.map +1 -1
  11. package/dist/access/field-access.test.js +213 -0
  12. package/dist/access/field-access.test.js.map +1 -1
  13. package/dist/access/index.d.ts +1 -1
  14. package/dist/access/index.d.ts.map +1 -1
  15. package/dist/access/index.js +1 -1
  16. package/dist/access/index.js.map +1 -1
  17. package/dist/access/types.d.ts +39 -0
  18. package/dist/access/types.d.ts.map +1 -1
  19. package/dist/config/index.d.ts +1 -1
  20. package/dist/config/index.d.ts.map +1 -1
  21. package/dist/config/types.d.ts +378 -0
  22. package/dist/config/types.d.ts.map +1 -1
  23. package/dist/context/index.d.ts +19 -1
  24. package/dist/context/index.d.ts.map +1 -1
  25. package/dist/context/index.js +153 -26
  26. package/dist/context/index.js.map +1 -1
  27. package/dist/context/nested-operations.d.ts +59 -3
  28. package/dist/context/nested-operations.d.ts.map +1 -1
  29. package/dist/context/nested-operations.js +552 -129
  30. package/dist/context/nested-operations.js.map +1 -1
  31. package/dist/context/transaction-boundary.d.ts +91 -0
  32. package/dist/context/transaction-boundary.d.ts.map +1 -0
  33. package/dist/context/transaction-boundary.js +329 -0
  34. package/dist/context/transaction-boundary.js.map +1 -0
  35. package/dist/context/write-pipeline.d.ts +15 -1
  36. package/dist/context/write-pipeline.d.ts.map +1 -1
  37. package/dist/context/write-pipeline.js +173 -10
  38. package/dist/context/write-pipeline.js.map +1 -1
  39. package/dist/fields/calendar-day.test.d.ts +2 -0
  40. package/dist/fields/calendar-day.test.d.ts.map +1 -0
  41. package/dist/fields/calendar-day.test.js +120 -0
  42. package/dist/fields/calendar-day.test.js.map +1 -0
  43. package/dist/fields/index.d.ts +18 -2
  44. package/dist/fields/index.d.ts.map +1 -1
  45. package/dist/fields/index.js +93 -17
  46. package/dist/fields/index.js.map +1 -1
  47. package/dist/hooks/index.d.ts +116 -0
  48. package/dist/hooks/index.d.ts.map +1 -1
  49. package/dist/hooks/index.js +154 -0
  50. package/dist/hooks/index.js.map +1 -1
  51. package/dist/validation/schema.test.js +222 -1
  52. package/dist/validation/schema.test.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/access/access-filter.ts +156 -0
  55. package/src/access/field-access.test.ts +255 -0
  56. package/src/access/field-access.ts +91 -5
  57. package/src/access/index.ts +1 -1
  58. package/src/access/types.ts +45 -0
  59. package/src/config/index.ts +2 -0
  60. package/src/config/types.ts +426 -0
  61. package/src/context/index.ts +207 -37
  62. package/src/context/nested-operations.ts +969 -143
  63. package/src/context/transaction-boundary.ts +440 -0
  64. package/src/context/write-pipeline.ts +234 -13
  65. package/src/fields/calendar-day.test.ts +140 -0
  66. package/src/fields/index.ts +96 -16
  67. package/src/hooks/index.ts +265 -0
  68. package/src/validation/schema.test.ts +266 -1
  69. package/tests/access.test.ts +24 -16
  70. package/tests/config.test.ts +30 -0
  71. package/tests/context.test.ts +481 -0
  72. package/tests/field-types.test.ts +17 -3
  73. package/tests/nested-access-and-hooks.test.ts +1130 -54
  74. package/tests/nested-operation-registry.test.ts +28 -3
  75. package/tests/nested-write-hooks.test.ts +864 -0
  76. package/tests/transaction-boundary-hooks.test.ts +465 -0
  77. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { generateZodSchema, validateWithZod } from './schema.js';
3
- import { text, integer, select } from '../fields/index.js';
3
+ import { text, integer, select, calendarDay, json, password } from '../fields/index.js';
4
4
  describe('Zod Schema Generation', () => {
5
5
  describe('generateZodSchema', () => {
6
6
  it('should generate schema for text field with required validation', () => {
@@ -184,5 +184,226 @@ describe('Zod Schema Generation', () => {
184
184
  expect(result.success).toBe(true);
185
185
  });
186
186
  });
187
+ // Regression: issue #570
188
+ // Under zod 4.4, `z.union([schema, z.undefined()])` rejects a MISSING key,
189
+ // so partial updates that omit a required-on-create field used to throw a
190
+ // ValidationError before the DB write. Update-shapes must use key-optionality
191
+ // (`.optional()`) so validation only checks the keys actually present.
192
+ describe('omitted required field on update (issue #570)', () => {
193
+ it('passes when a required text field is omitted while another field is present', () => {
194
+ const fields = {
195
+ name: text({ validation: { isRequired: true } }),
196
+ bio: text(),
197
+ };
198
+ const result = validateWithZod({ bio: 'hello' }, fields, 'update');
199
+ expect(result.success).toBe(true);
200
+ });
201
+ it('still enforces present-value rules for a required text field on update', () => {
202
+ const fields = {
203
+ name: text({ validation: { isRequired: true } }),
204
+ };
205
+ // Empty string must still be rejected when the key IS present
206
+ const result = validateWithZod({ name: '' }, fields, 'update');
207
+ expect(result.success).toBe(false);
208
+ if (!result.success) {
209
+ expect(result.errors).toHaveProperty('name');
210
+ }
211
+ });
212
+ it('still enforces length rules for a required text field present on update', () => {
213
+ const fields = {
214
+ title: text({ validation: { isRequired: true, length: { min: 5 } } }),
215
+ };
216
+ const result = validateWithZod({ title: 'Hi' }, fields, 'update');
217
+ expect(result.success).toBe(false);
218
+ if (!result.success) {
219
+ expect(result.errors.title).toContain('at least 5 characters');
220
+ }
221
+ });
222
+ it('keeps required text fields required on create', () => {
223
+ const fields = {
224
+ name: text({ validation: { isRequired: true } }),
225
+ };
226
+ const result = validateWithZod({}, fields, 'create');
227
+ expect(result.success).toBe(false);
228
+ if (!result.success) {
229
+ expect(result.errors).toHaveProperty('name');
230
+ }
231
+ });
232
+ it('allows an omitted required calendarDay field on update', () => {
233
+ const fields = {
234
+ startsOn: calendarDay({ validation: { isRequired: true } }),
235
+ label: text(),
236
+ };
237
+ const result = validateWithZod({ label: 'x' }, fields, 'update');
238
+ expect(result.success).toBe(true);
239
+ });
240
+ it('still rejects an invalid calendarDay value when present on update', () => {
241
+ const fields = {
242
+ startsOn: calendarDay({ validation: { isRequired: true } }),
243
+ };
244
+ const result = validateWithZod({ startsOn: 'not-a-date' }, fields, 'update');
245
+ expect(result.success).toBe(false);
246
+ if (!result.success) {
247
+ expect(result.errors).toHaveProperty('startsOn');
248
+ }
249
+ });
250
+ it('allows an omitted required json field on update', () => {
251
+ const fields = {
252
+ meta: json({ validation: { isRequired: true } }),
253
+ label: text(),
254
+ };
255
+ const result = validateWithZod({ label: 'x' }, fields, 'update');
256
+ expect(result.success).toBe(true);
257
+ });
258
+ it('allows an omitted required password field on update', () => {
259
+ const fields = {
260
+ secret: password({ validation: { isRequired: true } }),
261
+ label: text(),
262
+ };
263
+ const result = validateWithZod({ label: 'x' }, fields, 'update');
264
+ expect(result.success).toBe(true);
265
+ });
266
+ it('still rejects an empty required password value when present on update', () => {
267
+ const fields = {
268
+ secret: password({ validation: { isRequired: true } }),
269
+ };
270
+ const result = validateWithZod({ secret: '' }, fields, 'update');
271
+ expect(result.success).toBe(false);
272
+ if (!result.success) {
273
+ expect(result.errors).toHaveProperty('secret');
274
+ }
275
+ });
276
+ });
277
+ // Regression: issue #597
278
+ // A bare `z.unknown()` is treated as optional inside `z.object(...)`, so a
279
+ // required-on-create json field used to pass when the key was omitted. The
280
+ // create branch now refines the schema to reject undefined/absent keys while
281
+ // still accepting any present non-null JSON value (object, array, primitive).
282
+ // A present null is rejected by the issue #604 tightening below.
283
+ describe('required json on create (issue #597)', () => {
284
+ it('rejects an omitted required json field on create (key absent)', () => {
285
+ const fields = {
286
+ meta: json({ validation: { isRequired: true } }),
287
+ label: text(),
288
+ };
289
+ const result = validateWithZod({ label: 'x' }, fields, 'create');
290
+ expect(result.success).toBe(false);
291
+ if (!result.success) {
292
+ expect(result.errors).toHaveProperty('meta');
293
+ expect(result.errors.meta).toContain('is required');
294
+ }
295
+ });
296
+ it('rejects an explicit undefined required json field on create', () => {
297
+ const fields = {
298
+ meta: json({ validation: { isRequired: true } }),
299
+ };
300
+ const result = validateWithZod({ meta: undefined }, fields, 'create');
301
+ expect(result.success).toBe(false);
302
+ if (!result.success) {
303
+ expect(result.errors).toHaveProperty('meta');
304
+ }
305
+ });
306
+ it('accepts a present object value for a required json field on create', () => {
307
+ const fields = {
308
+ meta: json({ validation: { isRequired: true } }),
309
+ };
310
+ const result = validateWithZod({ meta: { a: 1 } }, fields, 'create');
311
+ expect(result.success).toBe(true);
312
+ });
313
+ it('accepts a present array value for a required json field on create', () => {
314
+ const fields = {
315
+ meta: json({ validation: { isRequired: true } }),
316
+ };
317
+ const result = validateWithZod({ meta: [] }, fields, 'create');
318
+ expect(result.success).toBe(true);
319
+ });
320
+ it('accepts a present primitive (0) value for a required json field on create', () => {
321
+ const fields = {
322
+ meta: json({ validation: { isRequired: true } }),
323
+ };
324
+ const result = validateWithZod({ meta: 0 }, fields, 'create');
325
+ expect(result.success).toBe(true);
326
+ });
327
+ it('allows an omitted non-required json field on create', () => {
328
+ const fields = {
329
+ meta: json(),
330
+ label: text(),
331
+ };
332
+ const result = validateWithZod({ label: 'x' }, fields, 'create');
333
+ expect(result.success).toBe(true);
334
+ });
335
+ });
336
+ // Regression: issue #604
337
+ // A required json field means non-null. A present `null` must be rejected at
338
+ // the validation layer (with a clear message) instead of surfacing later as a
339
+ // DB NOT NULL violation. Omission on update must still pass (#570), and
340
+ // omission on create must still be rejected (#597). Present non-null values
341
+ // — including falsy 0/""/false — are accepted. The Prisma column stays NOT
342
+ // NULL; only validation behaviour changes.
343
+ describe('required json is non-null (issue #604)', () => {
344
+ it('rejects a present null for a required json field on create', () => {
345
+ const fields = {
346
+ meta: json({ validation: { isRequired: true } }),
347
+ };
348
+ const result = validateWithZod({ meta: null }, fields, 'create');
349
+ expect(result.success).toBe(false);
350
+ if (!result.success) {
351
+ expect(result.errors).toHaveProperty('meta');
352
+ expect(result.errors.meta).toContain('is required');
353
+ }
354
+ });
355
+ it('rejects a present null for a required json field on update', () => {
356
+ const fields = {
357
+ meta: json({ validation: { isRequired: true } }),
358
+ };
359
+ const result = validateWithZod({ meta: null }, fields, 'update');
360
+ expect(result.success).toBe(false);
361
+ if (!result.success) {
362
+ expect(result.errors).toHaveProperty('meta');
363
+ expect(result.errors.meta).toContain('is required');
364
+ }
365
+ });
366
+ it('still allows an omitted required json field on update (preserves #570)', () => {
367
+ const fields = {
368
+ meta: json({ validation: { isRequired: true } }),
369
+ label: text(),
370
+ };
371
+ const result = validateWithZod({ label: 'x' }, fields, 'update');
372
+ expect(result.success).toBe(true);
373
+ });
374
+ it('accepts a present object value for a required json field on update', () => {
375
+ const fields = {
376
+ meta: json({ validation: { isRequired: true } }),
377
+ };
378
+ const result = validateWithZod({ meta: { a: 1 } }, fields, 'update');
379
+ expect(result.success).toBe(true);
380
+ });
381
+ it('accepts a present falsy non-null value for a required json field on update', () => {
382
+ const fields = {
383
+ meta: json({ validation: { isRequired: true } }),
384
+ };
385
+ expect(validateWithZod({ meta: 0 }, fields, 'update').success).toBe(true);
386
+ expect(validateWithZod({ meta: '' }, fields, 'update').success).toBe(true);
387
+ expect(validateWithZod({ meta: false }, fields, 'update').success).toBe(true);
388
+ });
389
+ it('accepts present falsy non-null values for a required json field on create', () => {
390
+ const fields = {
391
+ meta: json({ validation: { isRequired: true } }),
392
+ };
393
+ expect(validateWithZod({ meta: 0 }, fields, 'create').success).toBe(true);
394
+ expect(validateWithZod({ meta: '' }, fields, 'create').success).toBe(true);
395
+ expect(validateWithZod({ meta: false }, fields, 'create').success).toBe(true);
396
+ });
397
+ it('accepts an omitted or present null value for a non-required json field', () => {
398
+ const fields = {
399
+ meta: json(),
400
+ label: text(),
401
+ };
402
+ expect(validateWithZod({ label: 'x' }, fields, 'create').success).toBe(true);
403
+ expect(validateWithZod({ meta: null }, fields, 'create').success).toBe(true);
404
+ expect(validateWithZod({ label: 'x' }, fields, 'update').success).toBe(true);
405
+ expect(validateWithZod({ meta: null }, fields, 'update').success).toBe(true);
406
+ });
407
+ });
187
408
  });
188
409
  //# sourceMappingURL=schema.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/validation/schema.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/validation/schema.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensaas/stack-core",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Core stack for OpenSaas - schema definition, access control, and runtime utilities",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -95,3 +95,159 @@ export async function buildIncludeWithAccessControl(
95
95
 
96
96
  return hasRelationships ? include : undefined
97
97
  }
98
+
99
+ /**
100
+ * A single relation entry in a Prisma `include` object: either a bare `true`
101
+ * (fetch with no extra constraints) or an object that scopes the fetch with a
102
+ * `where` filter and/or a nested `include`.
103
+ */
104
+ type IncludeEntry = boolean | { where?: PrismaFilter; include?: IncludeObject }
105
+ type IncludeObject = Record<string, IncludeEntry>
106
+
107
+ /** The structured (object) form of a relation include entry. */
108
+ type IncludeEntryObject = { where?: PrismaFilter; include?: IncludeObject }
109
+
110
+ /**
111
+ * Narrow an unknown include value to the structured object form (vs bare `true`
112
+ * or any other primitive). Caller-supplied includes arrive untyped at the
113
+ * runtime boundary, so we validate the shape here rather than casting.
114
+ */
115
+ function asEntryObject(value: unknown): IncludeEntryObject | null {
116
+ if (value && typeof value === 'object') {
117
+ const obj = value as Record<string, unknown>
118
+ const where = obj.where
119
+ const include = obj.include
120
+ const entry: IncludeEntryObject = {}
121
+ if (where && typeof where === 'object') entry.where = where as PrismaFilter
122
+ if (include && typeof include === 'object') entry.include = include as IncludeObject
123
+ return entry
124
+ }
125
+ return null
126
+ }
127
+
128
+ /**
129
+ * AND-combine an access `where` with a caller-supplied nested `where`.
130
+ *
131
+ * The access filter is authoritative: the caller's filter may only NARROW the
132
+ * result further, never widen past what access permits. We therefore wrap both
133
+ * in a Prisma `AND` so neither can override the other. If only one side is
134
+ * present, it is returned as-is; if neither is present, the result is undefined.
135
+ */
136
+ function andWhere(
137
+ accessWhere: PrismaFilter | undefined,
138
+ callerWhere: PrismaFilter | undefined,
139
+ ): PrismaFilter | undefined {
140
+ if (accessWhere && callerWhere) {
141
+ return { AND: [accessWhere, callerWhere] }
142
+ }
143
+ return accessWhere ?? callerWhere
144
+ }
145
+
146
+ /**
147
+ * Merge a caller-supplied `include` with the access-controlled include — phase-1
148
+ * row/relation scoping for explicit caller selections.
149
+ *
150
+ * The caller's `include` decides WHICH relations to fetch; access control decides
151
+ * WHETHER each relation may be fetched and WITH WHAT filter. Replacing the
152
+ * access-controlled include with the caller's wholesale (the bug in #566) drops
153
+ * every per-relation access `where` and denied-relation exclusion, silently
154
+ * bypassing row-level access on any non-sudo read that passes `include`.
155
+ *
156
+ * For each relation the caller asks to include:
157
+ * - If the relation is a config-declared relationship but is ABSENT from the
158
+ * access-controlled include, its `query` access returned `false` → it is DROPPED
159
+ * (not fetched).
160
+ * - If it is present (allowed, possibly with a filter), the access entry is used
161
+ * as the base: the access `where` is AND-combined with any caller-supplied
162
+ * nested `where`, and nested includes are recursively merged using the related
163
+ * list's field configs (so deeply-nested selections are filtered at every
164
+ * level). A bare caller `true` becomes the access-controlled shape (filter +
165
+ * nested filtered include), never bare `true`.
166
+ * - If the caller names a key that is NOT a config-declared relationship, it is
167
+ * passed through unchanged (access control does not govern it).
168
+ *
169
+ * The access-controlled include is recursive to `MAX_DEPTH` (see
170
+ * `buildIncludeWithAccessControl`); beyond that depth no auto-include exists, so
171
+ * deeper caller selections pass through unscoped — consistent with the existing
172
+ * auto-include behaviour.
173
+ *
174
+ * `accessControlledInclude` being `undefined` is NOT "every relation denied". It
175
+ * means no access-controlled include was computed at all — a non-denial outcome
176
+ * that `buildIncludeWithAccessControl` returns when inside a `resolveOutput`/
177
+ * virtual-field context, at `MAX_DEPTH`, or when the list has no relationships.
178
+ * In every one of those cases there is nothing to merge against, so the caller's
179
+ * `include` is passed through unchanged (matching the prior `args.include || …`
180
+ * fallback). This is distinct from an `undefined` ENTRY inside a defined access
181
+ * include, which DOES mean the relation was denied and must be dropped (see the
182
+ * per-relation loop below). Only the whole-object `undefined` is a passthrough.
183
+ */
184
+ export function mergeIncludeWithAccessControl(
185
+ callerInclude: Record<string, unknown>,
186
+ accessControlledInclude: Record<string, unknown> | undefined,
187
+ fieldConfigs: Record<string, FieldConfig>,
188
+ config: OpenSaasConfig,
189
+ ): Record<string, unknown> {
190
+ // No access-controlled include was computed (resolveOutput/virtual context,
191
+ // MAX_DEPTH, or a list with no relationships) → nothing to scope against, so
192
+ // pass the caller's include through unchanged. Dropping relations here would be
193
+ // fail-closed data loss, not a denial. Denied relations are dropped only when a
194
+ // defined access include OMITS them (handled per-relation below).
195
+ if (accessControlledInclude === undefined) {
196
+ return callerInclude
197
+ }
198
+
199
+ const merged: Record<string, unknown> = {}
200
+ const accessInclude = accessControlledInclude
201
+
202
+ for (const [relationName, callerValue] of Object.entries(callerInclude)) {
203
+ const fieldConfig = fieldConfigs[relationName]
204
+ const isDeclaredRelationship =
205
+ fieldConfig?.type === 'relationship' && 'ref' in fieldConfig && !!fieldConfig.ref
206
+
207
+ // Not a config-declared relationship → access control does not govern it; pass through unchanged.
208
+ if (!isDeclaredRelationship) {
209
+ merged[relationName] = callerValue
210
+ continue
211
+ }
212
+
213
+ const accessValue = accessInclude[relationName]
214
+
215
+ // Declared relationship absent from the access include → query access denied → drop it.
216
+ if (accessValue === undefined) {
217
+ continue
218
+ }
219
+
220
+ const accessEntry = asEntryObject(accessValue)
221
+ const callerEntry = asEntryObject(callerValue)
222
+
223
+ // Resolve the related list's field configs so nested includes merge recursively.
224
+ const relatedConfig = getRelatedListConfig(fieldConfig.ref as string, config)
225
+ const relatedFields = relatedConfig?.listConfig.fields
226
+
227
+ const mergedWhere = andWhere(accessEntry?.where, callerEntry?.where)
228
+
229
+ let mergedNested: Record<string, unknown> | undefined
230
+ if (callerEntry?.include && relatedFields) {
231
+ // Recurse: scope the caller's nested selection against the nested access include.
232
+ mergedNested = mergeIncludeWithAccessControl(
233
+ callerEntry.include,
234
+ accessEntry?.include,
235
+ relatedFields,
236
+ config,
237
+ )
238
+ } else if (accessEntry?.include) {
239
+ // Caller selected the relation bare (no nested include); keep the
240
+ // access-controlled nested include so deeper relations stay filtered.
241
+ mergedNested = accessEntry.include
242
+ }
243
+
244
+ const entry: { where?: PrismaFilter; include?: Record<string, unknown> } = {}
245
+ if (mergedWhere) entry.where = mergedWhere
246
+ if (mergedNested && Object.keys(mergedNested).length > 0) entry.include = mergedNested
247
+
248
+ // A bare-`true` relation with no access filter and no nested include stays `true`.
249
+ merged[relationName] = Object.keys(entry).length > 0 ? entry : true
250
+ }
251
+
252
+ return merged
253
+ }