@verdant-web/common 2.0.2 → 2.1.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 (41) hide show
  1. package/dist/cjs/schema/defaults.test.js +16 -3
  2. package/dist/cjs/schema/defaults.test.js.map +1 -1
  3. package/dist/cjs/schema/fieldHelpers.d.ts +35 -0
  4. package/dist/cjs/schema/fieldHelpers.js +38 -0
  5. package/dist/cjs/schema/fieldHelpers.js.map +1 -0
  6. package/dist/cjs/schema/fields.js +13 -2
  7. package/dist/cjs/schema/fields.js.map +1 -1
  8. package/dist/cjs/schema/index.d.ts +44 -0
  9. package/dist/cjs/schema/index.js +10 -0
  10. package/dist/cjs/schema/index.js.map +1 -1
  11. package/dist/cjs/schema/types/compounds.d.ts +1 -1
  12. package/dist/cjs/schema/types/fields.d.ts +9 -8
  13. package/dist/cjs/schema/types/shapes.d.ts +5 -2
  14. package/dist/cjs/schema/validation.js +7 -0
  15. package/dist/cjs/schema/validation.js.map +1 -1
  16. package/dist/esm/schema/defaults.test.js +16 -3
  17. package/dist/esm/schema/defaults.test.js.map +1 -1
  18. package/dist/esm/schema/fieldHelpers.d.ts +35 -0
  19. package/dist/esm/schema/fieldHelpers.js +35 -0
  20. package/dist/esm/schema/fieldHelpers.js.map +1 -0
  21. package/dist/esm/schema/fields.js +13 -2
  22. package/dist/esm/schema/fields.js.map +1 -1
  23. package/dist/esm/schema/index.d.ts +44 -0
  24. package/dist/esm/schema/index.js +7 -0
  25. package/dist/esm/schema/index.js.map +1 -1
  26. package/dist/esm/schema/types/compounds.d.ts +1 -1
  27. package/dist/esm/schema/types/fields.d.ts +9 -8
  28. package/dist/esm/schema/types/shapes.d.ts +5 -2
  29. package/dist/esm/schema/validation.js +7 -0
  30. package/dist/esm/schema/validation.js.map +1 -1
  31. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/src/schema/defaults.test.ts +18 -4
  35. package/src/schema/fieldHelpers.ts +106 -0
  36. package/src/schema/fields.ts +23 -3
  37. package/src/schema/index.ts +7 -0
  38. package/src/schema/types/compounds.ts +2 -2
  39. package/src/schema/types/fields.ts +15 -13
  40. package/src/schema/types/shapes.ts +9 -5
  41. package/src/schema/validation.ts +13 -2
@@ -3,19 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
4
  const fields_js_1 = require("./fields.js");
5
5
  const oids_js_1 = require("../oids.js");
6
+ const fieldHelpers_js_1 = require("./fieldHelpers.js");
6
7
  (0, vitest_1.describe)('getting field defaults', () => {
7
8
  (0, vitest_1.it)('does not apply the same oid from the previous application', () => {
8
- const field = {
9
- type: 'any',
9
+ const field = fieldHelpers_js_1.fields.any({
10
10
  default: {
11
11
  id: '123',
12
12
  name: 'test',
13
13
  },
14
- };
14
+ });
15
15
  const first = (0, fields_js_1.getFieldDefault)(field);
16
16
  (0, oids_js_1.assignOid)(first, (0, oids_js_1.createOid)('test', '1'));
17
17
  const second = (0, fields_js_1.getFieldDefault)(field);
18
18
  (0, vitest_1.expect)((0, oids_js_1.maybeGetOid)(second)).toBe(undefined);
19
19
  });
20
+ (0, vitest_1.it)('defaults nested fields', () => {
21
+ const field = fieldHelpers_js_1.fields.object({
22
+ default: {},
23
+ properties: {
24
+ foo: {
25
+ type: 'string',
26
+ default: 'bar',
27
+ },
28
+ },
29
+ });
30
+ const defaults = (0, fields_js_1.getFieldDefault)(field);
31
+ (0, vitest_1.expect)(defaults).toEqual({ foo: 'bar' });
32
+ });
20
33
  });
21
34
  //# sourceMappingURL=defaults.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2CAA8C;AAC9C,wCAAuE;AAEvE,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG;YACb,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACQ,CAAC;QACX,MAAM,KAAK,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACrC,IAAA,mBAAS,EAAC,KAAK,EAAE,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,IAAA,qBAAW,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,2CAA8C;AAC9C,wCAA+D;AAC/D,uDAA2C;AAE3C,IAAA,iBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,wBAAM,CAAC,GAAG,CAAC;YACxB,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACrC,IAAA,mBAAS,EAAC,KAAK,EAAE,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,IAAA,qBAAW,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,wBAAM,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACX,GAAG,EAAE;oBACJ,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,KAAK;iBACd;aACD;SACD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { NestedStorageFieldSchema, NestedStorageFieldsSchema, ShapeFromFieldsWithDefaults, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageBooleanFieldSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from './types.js';
2
+ export declare const fields: {
3
+ object: <Props extends NestedStorageFieldsSchema>(args: {
4
+ properties: Props;
5
+ nullable?: boolean | undefined;
6
+ default?: ShapeFromFieldsWithDefaults<Props> | (() => ShapeFromFieldsWithDefaults<Props>) | undefined;
7
+ }) => StorageObjectFieldSchema<Props>;
8
+ array: <T extends NestedStorageFieldSchema>(args: {
9
+ items: T;
10
+ nullable?: boolean | undefined;
11
+ }) => StorageArrayFieldSchema<T>;
12
+ string: (args?: {
13
+ nullable?: boolean;
14
+ default?: string | (() => string);
15
+ options?: string[];
16
+ }) => StorageStringFieldSchema;
17
+ number: (args?: {
18
+ nullable?: boolean;
19
+ default?: number | (() => number);
20
+ }) => StorageNumberFieldSchema;
21
+ boolean: (args?: {
22
+ nullable?: boolean;
23
+ default?: boolean | (() => boolean);
24
+ }) => StorageBooleanFieldSchema;
25
+ any: <TShape>(args?: {
26
+ default?: TShape | undefined;
27
+ } | undefined) => StorageAnyFieldSchema<TShape>;
28
+ map: <T_1 extends NestedStorageFieldSchema>(args: {
29
+ values: T_1;
30
+ }) => StorageMapFieldSchema<T_1>;
31
+ file: (args?: {
32
+ nullable?: boolean;
33
+ downloadRemote?: boolean;
34
+ }) => StorageFileFieldSchema;
35
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fields = void 0;
4
+ const objectField = (args) => {
5
+ return Object.assign({ type: 'object' }, args);
6
+ };
7
+ const arrayField = (args) => {
8
+ return Object.assign({ type: 'array' }, args);
9
+ };
10
+ const stringField = (args) => {
11
+ return Object.assign({ type: 'string' }, args);
12
+ };
13
+ const numberField = (args) => {
14
+ return Object.assign({ type: 'number' }, args);
15
+ };
16
+ const booleanField = (args) => {
17
+ return Object.assign({ type: 'boolean' }, args);
18
+ };
19
+ const anyField = (args) => {
20
+ return Object.assign({ type: 'any' }, args);
21
+ };
22
+ const mapField = (args) => {
23
+ return Object.assign({ type: 'map' }, args);
24
+ };
25
+ const fileField = (args) => {
26
+ return Object.assign({ type: 'file' }, args);
27
+ };
28
+ exports.fields = {
29
+ object: objectField,
30
+ array: arrayField,
31
+ string: stringField,
32
+ number: numberField,
33
+ boolean: booleanField,
34
+ any: anyField,
35
+ map: mapField,
36
+ file: fileField,
37
+ };
38
+ //# sourceMappingURL=fieldHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":";;;AAcA,MAAM,WAAW,GAAG,CAA0C,IAM7D,EAAmC,EAAE;IACrC,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAqC,IAGvD,EAA8B,EAAE;IAChC,uBACC,IAAI,EAAE,OAAO,IACV,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAIpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAGpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAGrB,EAA6B,EAAE;IAC/B,uBACC,IAAI,EAAE,SAAS,IACZ,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAS,IAEzB,EAAiC,EAAE;IACnC,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAqC,IAErD,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAGlB,EAA0B,EAAE;IAC5B,uBACC,IAAI,EAAE,MAAM,IACT,IAAI,EACN;AACH,CAAC,CAAC;AAEW,QAAA,MAAM,GAAG;IACrB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;CACf,CAAC"}
@@ -20,8 +20,6 @@ function hasDefault(field) {
20
20
  return true;
21
21
  if (field.type === 'file')
22
22
  return false;
23
- if (field.type === 'object')
24
- return false;
25
23
  return field.default !== undefined;
26
24
  }
27
25
  exports.hasDefault = hasDefault;
@@ -137,6 +135,19 @@ function getFieldDefault(field) {
137
135
  if (field.type !== 'any' && field.nullable) {
138
136
  return null;
139
137
  }
138
+ if (field.type === 'object' && field.default) {
139
+ const defaultValue =
140
+ // @ts-ignore
141
+ typeof field.default === 'function'
142
+ ? field.default()
143
+ : JSON.parse(JSON.stringify(field.default));
144
+ for (const [key, property] of Object.entries(field.properties)) {
145
+ if (defaultValue[key] === undefined) {
146
+ defaultValue[key] = getFieldDefault(property);
147
+ }
148
+ }
149
+ return defaultValue;
150
+ }
140
151
  return undefined;
141
152
  }
142
153
  exports.getFieldDefault = getFieldDefault;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":";;;AAAA,wCAAqD;AACrD,0CAAuC;AAOvC,SAAgB,UAAU,CAAC,KAAyB;IACnD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,KAAK,CAAC,QAAQ,CAAC;AACvB,CAAC;AAJD,gCAIC;AAED,SAAgB,UAAU,CAAC,KAAqC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;AACpC,CAAC;AAND,gCAMC;AAED,SAAgB,UAAU,CAAC,KAAqC;IAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QAC1B,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,SAAS,CAAC;KACjB;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC3B,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,EAAE,CAAC;KACV;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,SAAS,CAAC;KACjB;IACD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;QACxC,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;KACvB;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACtB,CAAC;AAnBD,gCAmBC;AAED,SAAgB,YAAY,CAAC,KAAyB;IACrD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAFD,oCAEC;AAED,kBAAkB;AAClB,SAAgB,SAAS,CAAC,KAAyB;IAClD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC;AACtB,CAAC;AAPD,8BAOC;AAED,SAAgB,gBAAgB,CAC/B,UAAmC,EACnC,KAAU;IAEV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC7D,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5C,IACC,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;YACxD,oDAAoD;YACpD,2CAA2C;YAC3C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAC1C;YACD,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;SAC1B;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACf,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SAC5D;KACD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAnBD,4CAmBC;AAED,SAAgB,wCAAwC,CACvD,KAAU,EACV,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAC3C,KAAK,CAAC,UAAuC,CAC7C,EAAE;YACF,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBAC7B,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,YAAY,KAAK,SAAS,EAAE;oBAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;iBAC1B;aACD;YACD,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC/D;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,wCAAwC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;SAC5D;KACD;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,wCAAwC;YACxC,IAAI,GAAG,KAAK,iBAAO,IAAI,GAAG,KAAK,wBAAc;gBAAE,SAAS;YACxD,wCAAwC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7D;KACD;AACF,CAAC;AA5BD,4FA4BC;AAED,SAAgB,eAAe,CAAC,KAAyB;IACxD,IACC,KAAK,CAAC,IAAI,KAAK,QAAQ;QACvB,KAAK,CAAC,IAAI,KAAK,QAAQ;QACvB,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,IAAI,KAAK,KAAK,EACnB;QACD,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;YACzD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;SACvB;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YACvC,yBAAyB;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;SACjD;KACD;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC3B,OAAO,EAAE,CAAC;KACV;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACzB,OAAO,EAAE,CAAC;KACV;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;QAC3C,OAAO,IAAI,CAAC;KACZ;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE;QAC7C,MAAM,YAAY;QACjB,aAAa;QACb,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;YAClC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;YACjB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAC3C,KAAK,CAAC,UAAuC,CAC7C,EAAE;YACF,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBACpC,YAAY,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;aAC9C;SACD;QACD,OAAO,YAAY,CAAC;KACpB;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAvCD,0CAuCC;AAED,SAAgB,qBAAqB,CACpC,UAAmC,EACnC,KAAU;IAEV,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtD,yBAAyB;QACzB,IAAI,GAAG,KAAK,iBAAO,IAAI,GAAG,KAAK,wBAAc;YAAE,SAAS;QAExD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;SAClB;aAAM;YACN,gDAAgD,CAC/C,UAAU,EACV,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB,CAAC;SACF;KACD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAlBD,sDAkBC;AAED,SAAgB,gDAAgD,CAC/D,KAAU,EACV,KAAyB;IAEzB,IAAI,IAAA,mBAAQ,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;aAClB;iBAAM;gBACN,gDAAgD,CAC/C,UAAU,EACV,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CACrB,CAAC;aACF;SACD;KACD;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,gDAAgD,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;SACpE;KACD;AACF,CAAC;AApBD,4GAoBC"}
@@ -3,6 +3,50 @@ export declare function collection<Fields extends StorageFieldsSchema, Synthetic
3
3
  export declare function schema<Schema extends StorageSchema<{
4
4
  [key: string]: StorageCollectionSchema<any, any, any>;
5
5
  }>>(input: Schema): StorageSchema;
6
+ export declare namespace schema {
7
+ var collection: typeof import("./index.js").collection;
8
+ var fields: {
9
+ object: <Props extends import("./types.js").NestedStorageFieldsSchema>(args: {
10
+ properties: Props;
11
+ nullable?: boolean | undefined;
12
+ default?: import("./types.js").ShapeFromFieldsWithDefaults<Props> | (() => import("./types.js").ShapeFromFieldsWithDefaults<Props>) | undefined;
13
+ }) => import("./types.js").StorageObjectFieldSchema<Props>;
14
+ array: <T extends import("./types.js").NestedStorageFieldSchema>(args: {
15
+ items: T;
16
+ nullable?: boolean | undefined;
17
+ }) => import("./types.js").StorageArrayFieldSchema<T>;
18
+ string: (args?: {
19
+ nullable?: boolean | undefined;
20
+ default?: string | (() => string) | undefined;
21
+ options?: string[] | undefined;
22
+ } | undefined) => import("./types.js").StorageStringFieldSchema;
23
+ number: (args?: {
24
+ nullable?: boolean | undefined;
25
+ default?: number | (() => number) | undefined;
26
+ } | undefined) => import("./types.js").StorageNumberFieldSchema;
27
+ boolean: (args?: {
28
+ nullable?: boolean | undefined;
29
+ default?: boolean | (() => boolean) | undefined;
30
+ } | undefined) => import("./types.js").StorageBooleanFieldSchema;
31
+ any: <TShape>(args?: {
32
+ default?: TShape | undefined;
33
+ } | undefined) => import("./types.js").StorageAnyFieldSchema<TShape>;
34
+ map: <T_1 extends import("./types.js").NestedStorageFieldSchema>(args: {
35
+ values: T_1;
36
+ }) => import("./types.js").StorageMapFieldSchema<T_1>;
37
+ file: (args?: {
38
+ nullable?: boolean | undefined;
39
+ downloadRemote?: boolean | undefined;
40
+ } | undefined) => import("./types.js").StorageFileFieldSchema;
41
+ };
42
+ var generated: {
43
+ id: (() => string) & {
44
+ slug: () => string;
45
+ isCuid: (cuid: string) => boolean;
46
+ isSlug: (slug: string) => boolean;
47
+ };
48
+ };
49
+ }
6
50
  export * from './types.js';
7
51
  export * from './indexFilters.js';
8
52
  export * from './fields.js';
@@ -24,9 +24,14 @@ var __rest = (this && this.__rest) || function (s, e) {
24
24
  }
25
25
  return t;
26
26
  };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
27
30
  Object.defineProperty(exports, "__esModule", { value: true });
28
31
  exports.schema = exports.collection = void 0;
29
32
  const fields_js_1 = require("./fields.js");
33
+ const fieldHelpers_js_1 = require("./fieldHelpers.js");
34
+ const cuid_1 = __importDefault(require("cuid"));
30
35
  function collection(_a) {
31
36
  var { synthetics, indexes } = _a, input = __rest(_a, ["synthetics", "indexes"]);
32
37
  // back compat - copy synthetics in with indexes
@@ -46,6 +51,11 @@ function schema(input) {
46
51
  return input;
47
52
  }
48
53
  exports.schema = schema;
54
+ schema.collection = collection;
55
+ schema.fields = fieldHelpers_js_1.fields;
56
+ schema.generated = {
57
+ id: cuid_1.default,
58
+ };
49
59
  __exportStar(require("./types.js"), exports);
50
60
  __exportStar(require("./indexFilters.js"), exports);
51
61
  __exportStar(require("./fields.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AAWxC,SAAgB,UAAU,CAIxB,EAQD;QARC,EACD,UAAU,EACV,OAAO,OAMP,EALG,KAAK,cAHP,yBAID,CADQ;IAMR,gDAAgD;IAChD,MAAM,YAAY,mCAAQ,UAAU,GAAK,OAAO,CAAE,CAAC;IACnD,kEAAkE;IAClE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACxD,IAAI,IAAA,qBAAS,EAAC,KAAK,CAAC,EAAE;YACrB,YAAY,CAAC,GAAG,CAAC,GAAG;gBACnB,KAAK,EAAE,GAAG;aAC8B,CAAC;SAC1C;KACD;IACD,uCACI,KAAK,KACR,OAAO,EAAE,YAA0B,IAClC;AACH,CAAC;AA3BD,gCA2BC;AAED,SAAgB,MAAM,CAOpB,KAAa;IACd,OAAO,KAAK,CAAC;AACd,CAAC;AATD,wBASC;AAED,6CAA2B;AAE3B,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AAUxC,uDAA2C;AAC3C,gDAAwB;AAExB,SAAgB,UAAU,CAIxB,EAQD;QARC,EACD,UAAU,EACV,OAAO,OAMP,EALG,KAAK,cAHP,yBAID,CADQ;IAMR,gDAAgD;IAChD,MAAM,YAAY,mCAAQ,UAAU,GAAK,OAAO,CAAE,CAAC;IACnD,kEAAkE;IAClE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACxD,IAAI,IAAA,qBAAS,EAAC,KAAK,CAAC,EAAE;YACrB,YAAY,CAAC,GAAG,CAAC,GAAG;gBACnB,KAAK,EAAE,GAAG;aAC8B,CAAC;SAC1C;KACD;IACD,uCACI,KAAK,KACR,OAAO,EAAE,YAA0B,IAClC;AACH,CAAC;AA3BD,gCA2BC;AAED,SAAgB,MAAM,CAOpB,KAAa;IACd,OAAO,KAAK,CAAC;AACd,CAAC;AATD,wBASC;AACD,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,GAAG,wBAAM,CAAC;AACvB,MAAM,CAAC,SAAS,GAAG;IAClB,EAAE,EAAE,cAAI;CACR,CAAC;AAEF,6CAA2B;AAE3B,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B"}
@@ -1,7 +1,7 @@
1
1
  import { NestedStorageBooleanFieldSchema, NestedStorageNumberFieldSchema, NestedStorageStringFieldSchema, StorageArrayFieldSchema, StorageFieldsSchema } from './fields.js';
2
2
  import { DirectIndexableFieldName, StorageSyntheticIndices } from './synthetics.js';
3
3
  declare type PrimitiveArrayFields<Fields extends StorageFieldsSchema> = {
4
- [K in keyof Fields as Fields[K] extends StorageArrayFieldSchema ? Fields[K]['items'] extends NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema ? K : never : never]: Fields[K];
4
+ [K in keyof Fields as Fields[K] extends StorageArrayFieldSchema<infer U> ? U extends NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema ? K : never : never]: Fields[K];
5
5
  };
6
6
  declare type PrimitiveArrayFieldName<Fields extends StorageFieldsSchema> = Extract<keyof PrimitiveArrayFields<Fields>, string>;
7
7
  export declare type CollectionCompoundIndex<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>> = {
@@ -21,19 +21,20 @@ export declare type StorageBooleanFieldSchema = {
21
21
  /** @deprecated - add an index to indexes with this field name. */
22
22
  indexed?: boolean;
23
23
  };
24
- export declare type StorageArrayFieldSchema = {
24
+ export declare type StorageArrayFieldSchema<TItems extends NestedStorageFieldSchema> = {
25
25
  type: 'array';
26
- items: NestedStorageFieldSchema;
26
+ items: TItems;
27
27
  nullable?: boolean;
28
28
  };
29
- export declare type StorageObjectFieldSchema = {
29
+ export declare type StorageObjectFieldSchema<Props extends NestedStorageFieldsSchema> = {
30
30
  type: 'object';
31
- properties: NestedStorageFieldsSchema;
31
+ properties: Props;
32
32
  nullable?: boolean;
33
+ default?: Record<string, any> | (() => Record<string, any>);
33
34
  };
34
- export declare type StorageAnyFieldSchema = {
35
+ export declare type StorageAnyFieldSchema<TShape = any> = {
35
36
  type: 'any';
36
- default?: any;
37
+ default?: TShape;
37
38
  };
38
39
  export declare type StorageMapFieldSchema<V extends NestedStorageFieldSchema> = {
39
40
  type: 'map';
@@ -49,7 +50,7 @@ export declare type StorageFileFieldSchema = {
49
50
  */
50
51
  downloadRemote?: boolean;
51
52
  };
52
- export declare type StorageFieldSchema = StorageStringFieldSchema | StorageNumberFieldSchema | StorageBooleanFieldSchema | StorageArrayFieldSchema | StorageObjectFieldSchema | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
53
+ export declare type StorageFieldSchema = StorageStringFieldSchema | StorageNumberFieldSchema | StorageBooleanFieldSchema | StorageArrayFieldSchema<any> | StorageObjectFieldSchema<any> | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
53
54
  export declare type NestedStorageStringFieldSchema = {
54
55
  type: 'string';
55
56
  nullable?: boolean;
@@ -65,7 +66,7 @@ export declare type NestedStorageBooleanFieldSchema = {
65
66
  nullable?: boolean;
66
67
  default: boolean | (() => boolean);
67
68
  };
68
- export declare type NestedStorageFieldSchema = NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema | StorageArrayFieldSchema | StorageObjectFieldSchema | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
69
+ export declare type NestedStorageFieldSchema = NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | NestedStorageBooleanFieldSchema | StorageArrayFieldSchema<any> | StorageObjectFieldSchema<any> | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
69
70
  export declare type StorageFieldsSchema = {
70
71
  [key: string]: StorageFieldSchema;
71
72
  };
@@ -3,7 +3,7 @@ import { NestedStorageFieldsSchema, StorageArrayFieldSchema, StorageFieldSchema,
3
3
  declare type StoragePropertyIsNullable<T extends StorageFieldSchema> = T extends {
4
4
  nullable?: boolean;
5
5
  } ? T['nullable'] extends boolean ? true : false : T['type'] extends 'any' ? true : false;
6
- export declare type BaseShapeFromProperty<T extends StorageFieldSchema> = T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'boolean' ? boolean : T extends StorageArrayFieldSchema ? ShapeFromProperty<T['items']>[] : T extends StorageObjectFieldSchema ? ShapeFromFields<T['properties']> : T extends StorageMapFieldSchema<any> ? Record<string, ShapeFromProperty<T['values']>> : T['type'] extends 'any' ? any : T['type'] extends 'file' ? File : never;
6
+ export declare type BaseShapeFromProperty<T extends StorageFieldSchema> = T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'boolean' ? boolean : T extends StorageArrayFieldSchema<infer U> ? ShapeFromProperty<U>[] : T extends StorageObjectFieldSchema<infer U> ? ShapeFromFields<U> : T extends StorageMapFieldSchema<any> ? Record<string, ShapeFromProperty<T['values']>> : T['type'] extends 'any' ? any : T['type'] extends 'file' ? File : never;
7
7
  export declare type ShapeFromProperty<T extends StorageFieldSchema> = StoragePropertyIsNullable<T> extends true ? BaseShapeFromProperty<T> | null : BaseShapeFromProperty<T>;
8
8
  export declare type ShapeFromFields<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
9
9
  [K in keyof T]: ShapeFromProperty<T[K]>;
@@ -12,10 +12,13 @@ export declare type StorageDocument<Collection extends StorageCollectionSchema<a
12
12
  declare type StoragePropertyIsOptional<T extends StorageFieldSchema> = StoragePropertyIsNullable<T> extends true ? true : T extends {
13
13
  default?: any;
14
14
  } ? true : T['type'] extends 'any' ? true : T['type'] extends 'array' ? true : T['type'] extends 'map' ? true : false;
15
- declare type ShapeFromFieldsWithDefaults<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
15
+ export declare type ShapeFromFieldsWithDefaults<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
16
16
  [K in keyof T as StoragePropertyIsOptional<T[K]> extends true ? K : never]?: ShapeFromProperty<T[K]>;
17
17
  } & {
18
18
  [K in keyof T as StoragePropertyIsOptional<T[K]> extends true ? never : K]: ShapeFromProperty<T[K]>;
19
19
  };
20
20
  export declare type StorageDocumentInit<Collection extends StorageCollectionSchema<any, any, any>> = ShapeFromFieldsWithDefaults<Collection['fields']>;
21
+ export declare type FieldsFromShape<Shape extends Record<string, unknown>> = {
22
+ [K in keyof Shape]: StorageFieldSchema;
23
+ };
21
24
  export {};
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateEntityField = exports.validateEntity = void 0;
4
+ const oids_js_1 = require("../oids.js");
4
5
  const utils_js_1 = require("../utils.js");
5
6
  const fields_js_1 = require("./fields.js");
6
7
  function validateEntity(schema, entity) {
7
8
  for (const [key, value] of Object.entries(entity)) {
9
+ // legacy -- old objects sometimes accidentally include this key
10
+ if (key === oids_js_1.OID_KEY)
11
+ continue;
8
12
  if (!schema[key]) {
9
13
  return {
10
14
  type: 'invalid-key',
@@ -48,6 +52,9 @@ function validateEntityField({ field, value, fieldPath = [], depth, requireDefau
48
52
  };
49
53
  }
50
54
  for (const [key, subField] of Object.entries(field.properties)) {
55
+ // legacy -- old objects sometimes accidentally include this key
56
+ if (key === oids_js_1.OID_KEY)
57
+ continue;
51
58
  if (value[key]) {
52
59
  validateEntityField({
53
60
  field: subField,
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/schema/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/schema/validation.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,32 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import { getFieldDefault } from './fields.js';
3
3
  import { assignOid, createOid, maybeGetOid } from '../oids.js';
4
+ import { fields } from './fieldHelpers.js';
4
5
  describe('getting field defaults', () => {
5
6
  it('does not apply the same oid from the previous application', () => {
6
- const field = {
7
- type: 'any',
7
+ const field = fields.any({
8
8
  default: {
9
9
  id: '123',
10
10
  name: 'test',
11
11
  },
12
- };
12
+ });
13
13
  const first = getFieldDefault(field);
14
14
  assignOid(first, createOid('test', '1'));
15
15
  const second = getFieldDefault(field);
16
16
  expect(maybeGetOid(second)).toBe(undefined);
17
17
  });
18
+ it('defaults nested fields', () => {
19
+ const field = fields.object({
20
+ default: {},
21
+ properties: {
22
+ foo: {
23
+ type: 'string',
24
+ default: 'bar',
25
+ },
26
+ },
27
+ });
28
+ const defaults = getFieldDefault(field);
29
+ expect(defaults).toEqual({ foo: 'bar' });
30
+ });
18
31
  });
19
32
  //# sourceMappingURL=defaults.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAU,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG;YACb,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACQ,CAAC;QACX,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"defaults.test.js","sourceRoot":"","sources":["../../../src/schema/defaults.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;YACxB,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACX,GAAG,EAAE;oBACJ,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,KAAK;iBACd;aACD;SACD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { NestedStorageFieldSchema, NestedStorageFieldsSchema, ShapeFromFieldsWithDefaults, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageBooleanFieldSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from './types.js';
2
+ export declare const fields: {
3
+ object: <Props extends NestedStorageFieldsSchema>(args: {
4
+ properties: Props;
5
+ nullable?: boolean | undefined;
6
+ default?: ShapeFromFieldsWithDefaults<Props> | (() => ShapeFromFieldsWithDefaults<Props>) | undefined;
7
+ }) => StorageObjectFieldSchema<Props>;
8
+ array: <T extends NestedStorageFieldSchema>(args: {
9
+ items: T;
10
+ nullable?: boolean | undefined;
11
+ }) => StorageArrayFieldSchema<T>;
12
+ string: (args?: {
13
+ nullable?: boolean;
14
+ default?: string | (() => string);
15
+ options?: string[];
16
+ }) => StorageStringFieldSchema;
17
+ number: (args?: {
18
+ nullable?: boolean;
19
+ default?: number | (() => number);
20
+ }) => StorageNumberFieldSchema;
21
+ boolean: (args?: {
22
+ nullable?: boolean;
23
+ default?: boolean | (() => boolean);
24
+ }) => StorageBooleanFieldSchema;
25
+ any: <TShape>(args?: {
26
+ default?: TShape | undefined;
27
+ } | undefined) => StorageAnyFieldSchema<TShape>;
28
+ map: <T_1 extends NestedStorageFieldSchema>(args: {
29
+ values: T_1;
30
+ }) => StorageMapFieldSchema<T_1>;
31
+ file: (args?: {
32
+ nullable?: boolean;
33
+ downloadRemote?: boolean;
34
+ }) => StorageFileFieldSchema;
35
+ };
@@ -0,0 +1,35 @@
1
+ const objectField = (args) => {
2
+ return Object.assign({ type: 'object' }, args);
3
+ };
4
+ const arrayField = (args) => {
5
+ return Object.assign({ type: 'array' }, args);
6
+ };
7
+ const stringField = (args) => {
8
+ return Object.assign({ type: 'string' }, args);
9
+ };
10
+ const numberField = (args) => {
11
+ return Object.assign({ type: 'number' }, args);
12
+ };
13
+ const booleanField = (args) => {
14
+ return Object.assign({ type: 'boolean' }, args);
15
+ };
16
+ const anyField = (args) => {
17
+ return Object.assign({ type: 'any' }, args);
18
+ };
19
+ const mapField = (args) => {
20
+ return Object.assign({ type: 'map' }, args);
21
+ };
22
+ const fileField = (args) => {
23
+ return Object.assign({ type: 'file' }, args);
24
+ };
25
+ export const fields = {
26
+ object: objectField,
27
+ array: arrayField,
28
+ string: stringField,
29
+ number: numberField,
30
+ boolean: booleanField,
31
+ any: anyField,
32
+ map: mapField,
33
+ file: fileField,
34
+ };
35
+ //# sourceMappingURL=fieldHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,GAAG,CAA0C,IAM7D,EAAmC,EAAE;IACrC,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAqC,IAGvD,EAA8B,EAAE;IAChC,uBACC,IAAI,EAAE,OAAO,IACV,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAIpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAGpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAGrB,EAA6B,EAAE;IAC/B,uBACC,IAAI,EAAE,SAAS,IACZ,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAS,IAEzB,EAAiC,EAAE;IACnC,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAqC,IAErD,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAGlB,EAA0B,EAAE;IAC5B,uBACC,IAAI,EAAE,MAAM,IACT,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;CACf,CAAC"}
@@ -16,8 +16,6 @@ export function hasDefault(field) {
16
16
  return true;
17
17
  if (field.type === 'file')
18
18
  return false;
19
- if (field.type === 'object')
20
- return false;
21
19
  return field.default !== undefined;
22
20
  }
23
21
  export function getDefault(field) {
@@ -127,6 +125,19 @@ export function getFieldDefault(field) {
127
125
  if (field.type !== 'any' && field.nullable) {
128
126
  return null;
129
127
  }
128
+ if (field.type === 'object' && field.default) {
129
+ const defaultValue =
130
+ // @ts-ignore
131
+ typeof field.default === 'function'
132
+ ? field.default()
133
+ : JSON.parse(JSON.stringify(field.default));
134
+ for (const [key, property] of Object.entries(field.properties)) {
135
+ if (defaultValue[key] === undefined) {
136
+ defaultValue[key] = getFieldDefault(property);
137
+ }
138
+ }
139
+ return defaultValue;
140
+ }
130
141
  return undefined;
131
142
  }
132
143
  export function removeExtraProperties(collection, value) {
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,50 @@ export declare function collection<Fields extends StorageFieldsSchema, Synthetic
3
3
  export declare function schema<Schema extends StorageSchema<{
4
4
  [key: string]: StorageCollectionSchema<any, any, any>;
5
5
  }>>(input: Schema): StorageSchema;
6
+ export declare namespace schema {
7
+ var collection: typeof import("./index.js").collection;
8
+ var fields: {
9
+ object: <Props extends import("./types.js").NestedStorageFieldsSchema>(args: {
10
+ properties: Props;
11
+ nullable?: boolean | undefined;
12
+ default?: import("./types.js").ShapeFromFieldsWithDefaults<Props> | (() => import("./types.js").ShapeFromFieldsWithDefaults<Props>) | undefined;
13
+ }) => import("./types.js").StorageObjectFieldSchema<Props>;
14
+ array: <T extends import("./types.js").NestedStorageFieldSchema>(args: {
15
+ items: T;
16
+ nullable?: boolean | undefined;
17
+ }) => import("./types.js").StorageArrayFieldSchema<T>;
18
+ string: (args?: {
19
+ nullable?: boolean | undefined;
20
+ default?: string | (() => string) | undefined;
21
+ options?: string[] | undefined;
22
+ } | undefined) => import("./types.js").StorageStringFieldSchema;
23
+ number: (args?: {
24
+ nullable?: boolean | undefined;
25
+ default?: number | (() => number) | undefined;
26
+ } | undefined) => import("./types.js").StorageNumberFieldSchema;
27
+ boolean: (args?: {
28
+ nullable?: boolean | undefined;
29
+ default?: boolean | (() => boolean) | undefined;
30
+ } | undefined) => import("./types.js").StorageBooleanFieldSchema;
31
+ any: <TShape>(args?: {
32
+ default?: TShape | undefined;
33
+ } | undefined) => import("./types.js").StorageAnyFieldSchema<TShape>;
34
+ map: <T_1 extends import("./types.js").NestedStorageFieldSchema>(args: {
35
+ values: T_1;
36
+ }) => import("./types.js").StorageMapFieldSchema<T_1>;
37
+ file: (args?: {
38
+ nullable?: boolean | undefined;
39
+ downloadRemote?: boolean | undefined;
40
+ } | undefined) => import("./types.js").StorageFileFieldSchema;
41
+ };
42
+ var generated: {
43
+ id: (() => string) & {
44
+ slug: () => string;
45
+ isCuid: (cuid: string) => boolean;
46
+ isSlug: (slug: string) => boolean;
47
+ };
48
+ };
49
+ }
6
50
  export * from './types.js';
7
51
  export * from './indexFilters.js';
8
52
  export * from './fields.js';