@opensaas/stack-storage 0.24.0 → 0.26.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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +10 -4
- package/dist/fields/index.js.map +1 -1
- package/package.json +2 -2
- package/src/fields/index.ts +10 -4
- package/tests/field-zod-schema.test.ts +133 -0
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @opensaas/stack-storage
|
|
2
2
|
|
|
3
|
+
## 0.26.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#619](https://github.com/OpenSaasAU/stack/pull/619) [`29ca3a9`](https://github.com/OpenSaasAU/stack/commit/29ca3a9fdd90af4e34b9ff770ae9a5ae94df2337) Thanks [@borisno2](https://github.com/borisno2)! - Fix file()/image() fields being required on create/update: their Zod schema now uses key-optionality (.nullish()) so an omitted field validates and stores null (Zod 4).
|
|
8
|
+
|
|
9
|
+
## 0.25.0
|
|
10
|
+
|
|
3
11
|
## 0.24.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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"}
|
package/dist/fields/index.js
CHANGED
|
@@ -131,8 +131,11 @@ export function file(options) {
|
|
|
131
131
|
storageProvider: z.string(),
|
|
132
132
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
133
133
|
});
|
|
134
|
-
// Allow null or undefined values
|
|
135
|
-
|
|
134
|
+
// Allow null or undefined values. `.nullish()` (= `.nullable().optional()`)
|
|
135
|
+
// makes the object KEY optional in Zod 4 — a bare union that merely accepts
|
|
136
|
+
// an `undefined` value does NOT (see issue #618, and the #570 precedent in
|
|
137
|
+
// core's validation tests).
|
|
138
|
+
return fileMetadataSchema.nullish();
|
|
136
139
|
},
|
|
137
140
|
getPrismaType: (_fieldName) => {
|
|
138
141
|
// Store as JSON in database (single-column default mode).
|
|
@@ -300,8 +303,11 @@ export function image(options) {
|
|
|
300
303
|
}))
|
|
301
304
|
.optional(),
|
|
302
305
|
});
|
|
303
|
-
// Allow null or undefined values
|
|
304
|
-
|
|
306
|
+
// Allow null or undefined values. `.nullish()` (= `.nullable().optional()`)
|
|
307
|
+
// makes the object KEY optional in Zod 4 — a bare union that merely accepts
|
|
308
|
+
// an `undefined` value does NOT (see issue #618, and the #570 precedent in
|
|
309
|
+
// core's validation tests).
|
|
310
|
+
return imageMetadataSchema.nullish();
|
|
305
311
|
},
|
|
306
312
|
getPrismaType: (_fieldName) => {
|
|
307
313
|
// Store as JSON in database
|
package/dist/fields/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensaas/stack-storage",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "File and image upload field types with pluggable storage providers for OpenSaas Stack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@vitest/coverage-v8": "^4.0.18",
|
|
36
36
|
"typescript": "^5.9.3",
|
|
37
37
|
"vitest": "^4.1.0",
|
|
38
|
-
"@opensaas/stack-core": "0.
|
|
38
|
+
"@opensaas/stack-core": "0.26.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@opensaas/stack-core": "^0"
|
package/src/fields/index.ts
CHANGED
|
@@ -302,8 +302,11 @@ export function file<TTypeInfo extends TypeInfo = TypeInfo>(
|
|
|
302
302
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
303
303
|
})
|
|
304
304
|
|
|
305
|
-
// Allow null or undefined values
|
|
306
|
-
|
|
305
|
+
// Allow null or undefined values. `.nullish()` (= `.nullable().optional()`)
|
|
306
|
+
// makes the object KEY optional in Zod 4 — a bare union that merely accepts
|
|
307
|
+
// an `undefined` value does NOT (see issue #618, and the #570 precedent in
|
|
308
|
+
// core's validation tests).
|
|
309
|
+
return fileMetadataSchema.nullish()
|
|
307
310
|
},
|
|
308
311
|
|
|
309
312
|
getPrismaType: (_fieldName: string) => {
|
|
@@ -506,8 +509,11 @@ export function image<TTypeInfo extends TypeInfo = TypeInfo>(
|
|
|
506
509
|
.optional(),
|
|
507
510
|
})
|
|
508
511
|
|
|
509
|
-
// Allow null or undefined values
|
|
510
|
-
|
|
512
|
+
// Allow null or undefined values. `.nullish()` (= `.nullable().optional()`)
|
|
513
|
+
// makes the object KEY optional in Zod 4 — a bare union that merely accepts
|
|
514
|
+
// an `undefined` value does NOT (see issue #618, and the #570 precedent in
|
|
515
|
+
// core's validation tests).
|
|
516
|
+
return imageMetadataSchema.nullish()
|
|
511
517
|
},
|
|
512
518
|
|
|
513
519
|
getPrismaType: (_fieldName: string) => {
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { z } from 'zod'
|
|
3
|
+
import { image, file } from '../src/fields/index.js'
|
|
4
|
+
import type { ImageMetadata, FileMetadata } from '../src/config/types.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Regression tests for issue #618: file()/image() fields were erroneously
|
|
8
|
+
* required on create/update because getZodSchema() returned
|
|
9
|
+
* `z.union([metadataSchema, z.null(), z.undefined()])`. In Zod 4, a union that
|
|
10
|
+
* merely accepts an `undefined` *value* does NOT make the object KEY optional —
|
|
11
|
+
* an omitted key fails with "expected nonoptional, received undefined". The fix
|
|
12
|
+
* returns `metadataSchema.nullish()` so the key is genuinely optional.
|
|
13
|
+
*
|
|
14
|
+
* Core composes create/update input via `z.object({ <field>: getZodSchema(...) })`
|
|
15
|
+
* with no extra wrapping (see packages/core/src/validation/schema.ts), so these
|
|
16
|
+
* tests reproduce that composition exactly.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** A correctly-shaped ImageMetadata value. */
|
|
20
|
+
const validImageMetadata: ImageMetadata = {
|
|
21
|
+
filename: 'photo.png',
|
|
22
|
+
originalFilename: 'photo.png',
|
|
23
|
+
url: '/uploads/photo.png',
|
|
24
|
+
mimeType: 'image/png',
|
|
25
|
+
size: 1234,
|
|
26
|
+
width: 100,
|
|
27
|
+
height: 100,
|
|
28
|
+
uploadedAt: new Date().toISOString(),
|
|
29
|
+
storageProvider: 'images',
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** A correctly-shaped FileMetadata value. */
|
|
33
|
+
const validFileMetadata: FileMetadata = {
|
|
34
|
+
filename: 'doc.pdf',
|
|
35
|
+
originalFilename: 'doc.pdf',
|
|
36
|
+
url: '/uploads/doc.pdf',
|
|
37
|
+
mimeType: 'application/pdf',
|
|
38
|
+
size: 4096,
|
|
39
|
+
uploadedAt: new Date().toISOString(),
|
|
40
|
+
storageProvider: 'documents',
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Wrap a single field schema the way core's generateZodSchema does. */
|
|
44
|
+
function objectFor(
|
|
45
|
+
field: { getZodSchema?: (name: string, op: 'create' | 'update') => z.ZodTypeAny },
|
|
46
|
+
fieldName: string,
|
|
47
|
+
operation: 'create' | 'update',
|
|
48
|
+
): z.ZodObject<Record<string, z.ZodTypeAny>> {
|
|
49
|
+
const schema = field.getZodSchema?.(fieldName, operation)
|
|
50
|
+
if (!schema) throw new Error('field has no getZodSchema')
|
|
51
|
+
return z.object({ [fieldName]: schema })
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
describe('image()/file() getZodSchema key-optionality (issue #618)', () => {
|
|
55
|
+
for (const operation of ['create', 'update'] as const) {
|
|
56
|
+
describe(`${operation}`, () => {
|
|
57
|
+
it(`image(): an OMITTED field validates (no key present)`, () => {
|
|
58
|
+
const obj = objectFor(image({ storage: 'images' }), 'avatar', operation)
|
|
59
|
+
const result = obj.safeParse({})
|
|
60
|
+
expect(result.success).toBe(true)
|
|
61
|
+
if (result.success) {
|
|
62
|
+
// Omitted optional key reads back as undefined.
|
|
63
|
+
expect(result.data.avatar).toBeUndefined()
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it(`file(): an OMITTED field validates (no key present)`, () => {
|
|
68
|
+
const obj = objectFor(file({ storage: 'documents' }), 'resume', operation)
|
|
69
|
+
const result = obj.safeParse({})
|
|
70
|
+
expect(result.success).toBe(true)
|
|
71
|
+
if (result.success) {
|
|
72
|
+
expect(result.data.resume).toBeUndefined()
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
it(`image(): explicit null validates`, () => {
|
|
77
|
+
const obj = objectFor(image({ storage: 'images' }), 'avatar', operation)
|
|
78
|
+
expect(obj.safeParse({ avatar: null }).success).toBe(true)
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
it(`file(): explicit null validates`, () => {
|
|
82
|
+
const obj = objectFor(file({ storage: 'documents' }), 'resume', operation)
|
|
83
|
+
expect(obj.safeParse({ resume: null }).success).toBe(true)
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
it(`image(): explicit undefined validates`, () => {
|
|
87
|
+
const obj = objectFor(image({ storage: 'images' }), 'avatar', operation)
|
|
88
|
+
expect(obj.safeParse({ avatar: undefined }).success).toBe(true)
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
it(`file(): explicit undefined validates`, () => {
|
|
92
|
+
const obj = objectFor(file({ storage: 'documents' }), 'resume', operation)
|
|
93
|
+
expect(obj.safeParse({ resume: undefined }).success).toBe(true)
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
it(`image(): null/omitted validates in multi-column (keystone) mode`, () => {
|
|
97
|
+
const field = image({ storage: 'images', db: { columns: 'keystone' } })
|
|
98
|
+
const obj = objectFor(field, 'avatar', operation)
|
|
99
|
+
expect(obj.safeParse({}).success).toBe(true)
|
|
100
|
+
expect(obj.safeParse({ avatar: null }).success).toBe(true)
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
it(`file(): null/omitted validates in multi-column (keystone) mode`, () => {
|
|
104
|
+
const field = file({ storage: 'documents', db: { columns: 'keystone' } })
|
|
105
|
+
const obj = objectFor(field, 'resume', operation)
|
|
106
|
+
expect(obj.safeParse({}).success).toBe(true)
|
|
107
|
+
expect(obj.safeParse({ resume: null }).success).toBe(true)
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
it(`image(): a correctly-shaped metadata object validates`, () => {
|
|
111
|
+
const obj = objectFor(image({ storage: 'images' }), 'avatar', operation)
|
|
112
|
+
expect(obj.safeParse({ avatar: validImageMetadata }).success).toBe(true)
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
it(`file(): a correctly-shaped metadata object validates`, () => {
|
|
116
|
+
const obj = objectFor(file({ storage: 'documents' }), 'resume', operation)
|
|
117
|
+
expect(obj.safeParse({ resume: validFileMetadata }).success).toBe(true)
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
it(`image(): a malformed metadata object still fails`, () => {
|
|
121
|
+
const obj = objectFor(image({ storage: 'images' }), 'avatar', operation)
|
|
122
|
+
// Missing required sub-fields (width/height/size/...).
|
|
123
|
+
expect(obj.safeParse({ avatar: { filename: 'x.png' } }).success).toBe(false)
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
it(`file(): a malformed metadata object still fails`, () => {
|
|
127
|
+
const obj = objectFor(file({ storage: 'documents' }), 'resume', operation)
|
|
128
|
+
// size should be a number, not a string.
|
|
129
|
+
expect(obj.safeParse({ resume: { ...validFileMetadata, size: 'big' } }).success).toBe(false)
|
|
130
|
+
})
|
|
131
|
+
})
|
|
132
|
+
}
|
|
133
|
+
})
|