@verdant-web/common 2.7.0 → 2.7.2

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.
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  export declare class Batcher<T, UserData = any> {
3
2
  private flusher;
4
3
  private batches;
@@ -34,9 +33,9 @@ export declare class Batch<T, UserData = any> {
34
33
  });
35
34
  update: ({ items, max, timeout, userData, }: {
36
35
  items: Array<T>;
37
- max?: number | null | undefined;
38
- timeout?: number | null | undefined;
39
- userData?: UserData | undefined;
36
+ max?: number | null;
37
+ timeout?: number | null;
38
+ userData?: UserData;
40
39
  }) => void;
41
40
  flush: () => any;
42
41
  discard: () => void;
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  export type FileRef = {
3
2
  '@@type': 'file';
4
3
  id: string;
@@ -1,4 +1,4 @@
1
- import { StorageCollectionSchema, StorageSchema, StorageDocument, CollectionFilter, StorageDocumentInit, AuthorizationKey } from './index.js';
1
+ import { AuthorizationKey, CollectionFilter, StorageCollectionSchema, StorageDocument, StorageDocumentInit, StorageSchema } from './index.js';
2
2
  /**@deprecated */
3
3
  export interface DroppedCollectionMigrationStrategy<Old extends StorageCollectionSchema<any, any, any>> {
4
4
  (old: Old): void | Promise<void>;
@@ -1,4 +1,4 @@
1
- import { stableStringify, addFieldDefaults, removeExtraProperties, assert, assignOid, getOid, hasDefault, validateEntity, isMultiValueIndex, } from './index.js';
1
+ import { addFieldDefaults, assert, assignOid, getOid, isMultiValueIndex, isRequired, removeExtraProperties, stableStringify, validateEntity, } from './index.js';
2
2
  const emptySchema = {
3
3
  version: 0,
4
4
  collections: {},
@@ -264,7 +264,8 @@ function getMigrationInfo(oldSchema, newSchema) {
264
264
  const oldFields = oldSchema.collections[collection].fields;
265
265
  const newFields = newSchema.collections[collection].fields;
266
266
  // a new default was added - we can auto-migrate it
267
- if (Object.keys(newFields).some((key) => !hasDefault(oldFields[key]) && hasDefault(newFields[key]))) {
267
+ if (Object.keys(newFields).some((key) => (!oldFields[key] || isRequired(oldFields[key])) &&
268
+ !isRequired(newFields[key]))) {
268
269
  autoMigratedCollections.add(collection);
269
270
  }
270
271
  // a field was removed - we can auto-migrate it
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/migration.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,4 @@ export declare const MATCH_LEGACY_OID_JSON_STRING: RegExp;
15
15
  export declare function replaceLegacyOidsInJsonString(string: string): string;
16
16
  export declare function replaceLegacyOidsInObject(obj: any): any;
17
17
  export declare function getLegacyDotOidSubIdRange(oid: ObjectIdentifier): string[];
18
- export declare function isOidKey(key: string): boolean;
18
+ export declare function isOidKey(key: string): key is "__@@oid_do_not_use" | "@@id";
@@ -21,7 +21,7 @@ export declare class PatchCreator {
21
21
  createListPush: (oid: ObjectIdentifier, value: any) => Operation[];
22
22
  createListAdd: (oid: ObjectIdentifier, value: any) => Operation[];
23
23
  createListInsert: (oid: ObjectIdentifier, index: number, value: any) => Operation[];
24
- createListRemove: (oid: ObjectIdentifier, value: any, only?: 'first' | 'last') => Operation[];
24
+ createListRemove: (oid: ObjectIdentifier, value: any, only?: "first" | "last") => Operation[];
25
25
  createListDelete: (oid: ObjectIdentifier, index: number, count?: number) => Operation[];
26
26
  createListMoveByRef: (oid: ObjectIdentifier, value: ObjectRef | FileRef, index: number) => Operation[];
27
27
  createListMoveByIndex: (oid: ObjectIdentifier, fromIndex: number, toIndex: number) => Operation[];
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { getFieldDefault } from './fields.js';
3
2
  import { assignOid, createOid, maybeGetOid } from '../oids.js';
4
3
  import { fields } from './fieldHelpers.js';
4
+ import { getFieldDefault } from './fields.js';
5
5
  describe('getting field defaults', () => {
6
6
  it('does not apply the same oid from the previous application', () => {
7
7
  const field = fields.any({
@@ -28,5 +28,29 @@ describe('getting field defaults', () => {
28
28
  const defaults = getFieldDefault(field);
29
29
  expect(defaults).toEqual({ foo: 'bar' });
30
30
  });
31
+ it('supports defaults on arrays', () => {
32
+ const field = fields.array({
33
+ items: fields.object({
34
+ fields: {
35
+ foo: fields.string(),
36
+ },
37
+ }),
38
+ default: [{ foo: 'baz' }],
39
+ });
40
+ const defaults = getFieldDefault(field);
41
+ expect(defaults).toEqual([{ foo: 'baz' }]);
42
+ });
43
+ it('supports defaults on maps', () => {
44
+ const field = fields.map({
45
+ values: fields.object({
46
+ fields: {
47
+ foo: fields.string({ default: 'bar' }),
48
+ },
49
+ }),
50
+ default: { test: { foo: 'baz' } },
51
+ });
52
+ const defaults = getFieldDefault(field);
53
+ expect(defaults).toEqual({ test: { foo: 'baz' } });
54
+ });
31
55
  });
32
56
  //# 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,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"}
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,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,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;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;gBACpB,MAAM,EAAE;oBACP,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE;iBACpB;aACD,CAAC;YACF,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAqB,CAAC;SAC5C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACrB,MAAM,EAAE;oBACP,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;iBACtC;aACD,CAAC;YACF,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAqB,EAAE;SACpD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,18 +1,49 @@
1
- import { ShapeFromFieldsWithDefaults, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageBooleanFieldSchema, StorageFieldSchema, StorageFieldsSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from './types.js';
1
+ import { ShapeFromFieldsWithDefaults, ShapeFromProperty, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageBooleanFieldSchema, StorageFieldSchema, StorageFieldsSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from './types.js';
2
+ type ObjectFieldArgs<Props extends StorageFieldsSchema> = {
3
+ /** @deprecated - use fields. renamed for more consistency with collection root. */
4
+ properties?: Props;
5
+ fields?: Props;
6
+ nullable?: boolean;
7
+ default?: ShapeFromFieldsWithDefaults<Props> | (() => ShapeFromFieldsWithDefaults<Props>);
8
+ /** Add some docs to your field which will annotate the generated typing */
9
+ documentation?: string;
10
+ };
11
+ declare function objectField<Props extends StorageFieldsSchema>(args: ObjectFieldArgs<Props>): StorageObjectFieldSchema<Props>;
12
+ /**
13
+ * Used for recursively defined field schemas. Replaces the original properties
14
+ * of an object field with the provided fields. This will mutate the original field.
15
+ */
16
+ declare function replaceObjectFields(object: StorageObjectFieldSchema<any>, fields: StorageFieldsSchema): StorageObjectFieldSchema<any>;
17
+ type ArrayFieldArgs<T extends StorageFieldSchema> = {
18
+ items: T;
19
+ nullable?: boolean;
20
+ default?: ShapeFromProperty<T>[] | (() => ShapeFromProperty<T>[]);
21
+ /** Add some docs to your field which will annotate the generated typing */
22
+ documentation?: string;
23
+ };
24
+ declare function arrayField<T extends StorageFieldSchema>(args: ArrayFieldArgs<T>): StorageArrayFieldSchema<T>;
25
+ /**
26
+ * Used for recursively defined field schemas. Replaces the original items
27
+ * of an array field with the provided items. This will mutate the original field.
28
+ */
29
+ declare function replaceArrayItems(array: StorageArrayFieldSchema<any>, items: StorageFieldSchema): StorageArrayFieldSchema<any>;
30
+ type MapFieldArgs<T extends StorageFieldSchema> = {
31
+ values: T;
32
+ default?: Record<string, ShapeFromProperty<T>> | (() => Record<string, ShapeFromProperty<T>>);
33
+ /** Add some docs to your field which will annotate the generated typing */
34
+ documentation?: string;
35
+ };
36
+ declare function mapField<T extends StorageFieldSchema>(args: MapFieldArgs<T>): StorageMapFieldSchema<T>;
37
+ /**
38
+ * Used for recursively defined field schemas. Replaces the original values
39
+ * of a map field with the provided values. This will mutate the original field.
40
+ */
41
+ declare function replaceMapValues(map: StorageMapFieldSchema<any>, values: StorageFieldSchema): StorageMapFieldSchema<any>;
2
42
  export declare const fields: {
3
- object: <Props extends StorageFieldsSchema>(args: {
4
- properties: Props;
5
- nullable?: boolean;
6
- default?: ShapeFromFieldsWithDefaults<Props> | (() => ShapeFromFieldsWithDefaults<Props>);
7
- /** Add some docs to your field which will annotate the generated typing */
8
- documentation?: string;
9
- }) => StorageObjectFieldSchema<Props>;
10
- array: <T extends StorageFieldSchema>(args: {
11
- items: T;
12
- nullable?: boolean;
13
- /** Add some docs to your field which will annotate the generated typing */
14
- documentation?: string;
15
- }) => StorageArrayFieldSchema<T>;
43
+ object: typeof objectField;
44
+ array: typeof arrayField;
45
+ replaceObjectFields: typeof replaceObjectFields;
46
+ replaceArrayItems: typeof replaceArrayItems;
16
47
  string: (args?: {
17
48
  nullable?: boolean;
18
49
  default?: string | (() => string);
@@ -37,11 +68,8 @@ export declare const fields: {
37
68
  /** Add some docs to your field which will annotate the generated typing */
38
69
  documentation?: string;
39
70
  }) => StorageAnyFieldSchema<TShape>;
40
- map: <T_1 extends StorageFieldSchema>(args: {
41
- values: T_1;
42
- /** Add some docs to your field which will annotate the generated typing */
43
- documentation?: string | undefined;
44
- }) => StorageMapFieldSchema<T_1>;
71
+ map: typeof mapField;
72
+ replaceMapValues: typeof replaceMapValues;
45
73
  file: (args?: {
46
74
  nullable?: boolean;
47
75
  downloadRemote?: boolean;
@@ -50,3 +78,4 @@ export declare const fields: {
50
78
  }) => StorageFileFieldSchema;
51
79
  id: () => StorageStringFieldSchema;
52
80
  };
81
+ export {};
@@ -1,10 +1,42 @@
1
- import cuid from 'cuid';
2
- const objectField = (args) => {
3
- return Object.assign({ type: 'object' }, args);
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
4
11
  };
5
- const arrayField = (args) => {
12
+ import cuid from 'cuid';
13
+ function objectField(args) {
14
+ const { properties, fields } = args, resolvedArgs = __rest(args, ["properties", "fields"]);
15
+ const props = properties || fields;
16
+ if (!props) {
17
+ throw new Error('objectField must be passed a properties object');
18
+ }
19
+ return Object.assign(Object.assign({ type: 'object' }, resolvedArgs), { properties: props });
20
+ }
21
+ /**
22
+ * Used for recursively defined field schemas. Replaces the original properties
23
+ * of an object field with the provided fields. This will mutate the original field.
24
+ */
25
+ function replaceObjectFields(object, fields) {
26
+ object.properties = fields;
27
+ return object;
28
+ }
29
+ function arrayField(args) {
6
30
  return Object.assign({ type: 'array' }, args);
7
- };
31
+ }
32
+ /**
33
+ * Used for recursively defined field schemas. Replaces the original items
34
+ * of an array field with the provided items. This will mutate the original field.
35
+ */
36
+ function replaceArrayItems(array, items) {
37
+ array.items = items;
38
+ return array;
39
+ }
8
40
  const stringField = (args) => {
9
41
  return Object.assign({ type: 'string' }, args);
10
42
  };
@@ -17,9 +49,17 @@ const booleanField = (args) => {
17
49
  const anyField = (args) => {
18
50
  return Object.assign({ type: 'any' }, args);
19
51
  };
20
- const mapField = (args) => {
52
+ function mapField(args) {
21
53
  return Object.assign({ type: 'map' }, args);
22
- };
54
+ }
55
+ /**
56
+ * Used for recursively defined field schemas. Replaces the original values
57
+ * of a map field with the provided values. This will mutate the original field.
58
+ */
59
+ function replaceMapValues(map, values) {
60
+ map.values = values;
61
+ return map;
62
+ }
23
63
  const fileField = (args) => {
24
64
  return Object.assign({ type: 'file' }, args);
25
65
  };
@@ -36,11 +76,14 @@ const idField = () => {
36
76
  export const fields = {
37
77
  object: objectField,
38
78
  array: arrayField,
79
+ replaceObjectFields,
80
+ replaceArrayItems,
39
81
  string: stringField,
40
82
  number: numberField,
41
83
  boolean: booleanField,
42
84
  any: anyField,
43
85
  map: mapField,
86
+ replaceMapValues,
44
87
  file: fileField,
45
88
  id: idField,
46
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAexB,MAAM,WAAW,GAAG,CAAoC,IAQvD,EAAmC,EAAE;IACrC,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAA+B,IAKjD,EAA8B,EAAE;IAChC,uBACC,IAAI,EAAE,OAAO,IACV,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAMpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAKpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAKrB,EAA6B,EAAE;IAC/B,uBACC,IAAI,EAAE,SAAS,IACZ,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAS,IAIzB,EAAiC,EAAE;IACnC,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAA+B,IAI/C,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAKlB,EAA0B,EAAE;IAC5B,uBACC,IAAI,EAAE,MAAM,IACT,IAAI,EACN;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAG,GAA6B,EAAE;IAC9C,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;KACb,CAAC;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;IACf,EAAE,EAAE,OAAO;CACX,CAAC"}
1
+ {"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AA4BxB,SAAS,WAAW,CACnB,IAA4B;IAE5B,MAAM,EAAE,UAAU,EAAE,MAAM,KAAsB,IAAI,EAArB,YAAY,UAAK,IAAI,EAA9C,wBAAuC,CAAO,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,IAAI,MAAM,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnE,CAAC;IACD,qCACC,IAAI,EAAE,QAAQ,IACX,YAAY,KACf,UAAU,EAAE,KAAK,IAChB;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAC3B,MAAqC,EACrC,MAA2B;IAE3B,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;IAC3B,OAAO,MAAM,CAAC;AACf,CAAC;AAUD,SAAS,UAAU,CAClB,IAAuB;IAEvB,uBACC,IAAI,EAAE,OAAO,IACV,IAAI,EACN;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACzB,KAAmC,EACnC,KAAyB;IAEzB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAMpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAKpB,EAA4B,EAAE;IAC9B,uBACC,IAAI,EAAE,QAAQ,IACX,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAKrB,EAA6B,EAAE;IAC/B,uBACC,IAAI,EAAE,SAAS,IACZ,IAAI,EACN;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAS,IAIzB,EAAiC,EAAE;IACnC,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC,CAAC;AAUF,SAAS,QAAQ,CAChB,IAAqB;IAErB,uBACC,IAAI,EAAE,KAAK,IACR,IAAI,EACN;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACxB,GAA+B,EAC/B,MAA0B;IAE1B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,IAKlB,EAA0B,EAAE;IAC5B,uBACC,IAAI,EAAE,MAAM,IACT,IAAI,EACN;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAG,GAA6B,EAAE;IAC9C,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;KACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,gBAAgB;IAChB,IAAI,EAAE,SAAS;IACf,EAAE,EAAE,OAAO;CACX,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { StorageFieldSchema, StorageCollectionSchema } from './types.js';
1
+ import type { StorageCollectionSchema, StorageFieldSchema } from './types.js';
2
2
  export declare function isNullable(field: StorageFieldSchema): boolean | undefined;
3
3
  export declare function hasDefault(field: StorageFieldSchema | undefined): boolean;
4
- export declare function getDefault(field: StorageFieldSchema | undefined): any;
4
+ export declare function isRequired(field: StorageFieldSchema): boolean;
5
5
  export declare function isPrunePoint(field: StorageFieldSchema): boolean;
6
6
  export declare function addFieldDefaults(collection: StorageCollectionSchema, value: any): any;
7
7
  export declare function traverseCollectionFieldsAndApplyDefaults(value: any, field: StorageFieldSchema): any;
@@ -18,30 +18,8 @@ export function hasDefault(field) {
18
18
  return false;
19
19
  return field.default !== undefined;
20
20
  }
21
- export function getDefault(field) {
22
- if (!field || !hasDefault(field))
23
- return undefined;
24
- if (field.type === 'file') {
25
- if (isNullable(field))
26
- return null;
27
- return undefined;
28
- }
29
- if (field.type === 'map')
30
- return {};
31
- if (field.type === 'array') {
32
- if (isNullable(field))
33
- return null;
34
- return [];
35
- }
36
- if (field.type === 'object') {
37
- if (isNullable(field))
38
- return null;
39
- return undefined;
40
- }
41
- if (typeof field.default === 'function') {
42
- return field.default();
43
- }
44
- return field.default;
21
+ export function isRequired(field) {
22
+ return !isNullable(field) && !hasDefault(field);
45
23
  }
46
24
  export function isPrunePoint(field) {
47
25
  return isNullable(field) || hasDefault(field);
@@ -90,17 +68,23 @@ export function traverseCollectionFieldsAndApplyDefaults(value, field) {
90
68
  }
91
69
  }
92
70
  export function getFieldDefault(field) {
93
- if (field.type === 'string' ||
94
- field.type === 'number' ||
95
- field.type === 'boolean' ||
96
- field.type === 'any') {
97
- if (field.default && typeof field.default === 'function') {
98
- return field.default();
99
- }
100
- else if (field.default !== undefined) {
101
- // TODO: structuredClone?
102
- return JSON.parse(JSON.stringify(field.default));
71
+ if ('default' in field) {
72
+ const val = typeof field.default === 'function' ? field.default() : field.default;
73
+ if (val === null)
74
+ return val;
75
+ const cloned = structuredClone(val);
76
+ if (field.type === 'object') {
77
+ // objects also apply defaults of sub-fields over top of the default object
78
+ for (const [key, property] of Object.entries(field.properties)) {
79
+ if (cloned[key] === undefined) {
80
+ cloned[key] = getFieldDefault(property);
81
+ }
82
+ }
103
83
  }
84
+ return cloned;
85
+ }
86
+ if (isNullable(field)) {
87
+ return null;
104
88
  }
105
89
  if (field.type === 'array') {
106
90
  return [];
@@ -108,22 +92,6 @@ export function getFieldDefault(field) {
108
92
  if (field.type === 'map') {
109
93
  return {};
110
94
  }
111
- if (field.type !== 'any' && field.nullable) {
112
- return null;
113
- }
114
- if (field.type === 'object' && field.default) {
115
- const defaultValue =
116
- // @ts-ignore
117
- typeof field.default === 'function'
118
- ? field.default()
119
- : JSON.parse(JSON.stringify(field.default));
120
- for (const [key, property] of Object.entries(field.properties)) {
121
- if (defaultValue[key] === undefined) {
122
- defaultValue[key] = getFieldDefault(property);
123
- }
124
- }
125
- return defaultValue;
126
- }
127
95
  return undefined;
128
96
  }
129
97
  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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"}
@@ -7,52 +7,58 @@ export declare namespace schema {
7
7
  var collection: typeof import("./index.js").collection;
8
8
  var fields: {
9
9
  object: <Props extends StorageFieldsSchema>(args: {
10
- properties: Props;
11
- nullable?: boolean | undefined;
10
+ properties?: Props | undefined;
11
+ fields?: Props | undefined;
12
+ nullable?: boolean;
12
13
  default?: import("./types.js").ShapeFromFieldsWithDefaults<Props> | (() => import("./types.js").ShapeFromFieldsWithDefaults<Props>) | undefined;
13
- documentation?: string | undefined;
14
+ documentation?: string;
14
15
  }) => import("./types.js").StorageObjectFieldSchema<Props>;
15
16
  array: <T extends import("./types.js").StorageFieldSchema>(args: {
16
17
  items: T;
17
- nullable?: boolean | undefined;
18
- documentation?: string | undefined;
18
+ nullable?: boolean;
19
+ default?: import("./types.js").ShapeFromProperty<T>[] | (() => import("./types.js").ShapeFromProperty<T>[]) | undefined;
20
+ documentation?: string;
19
21
  }) => import("./types.js").StorageArrayFieldSchema<T>;
22
+ replaceObjectFields: (object: import("./types.js").StorageObjectFieldSchema<any>, fields: StorageFieldsSchema) => import("./types.js").StorageObjectFieldSchema<any>;
23
+ replaceArrayItems: (array: import("./types.js").StorageArrayFieldSchema<any>, items: import("./types.js").StorageFieldSchema) => import("./types.js").StorageArrayFieldSchema<any>;
20
24
  string: (args?: {
21
- nullable?: boolean | undefined;
22
- default?: string | (() => string) | undefined;
23
- options?: string[] | undefined;
24
- documentation?: string | undefined;
25
- } | undefined) => import("./types.js").StorageStringFieldSchema;
25
+ nullable?: boolean;
26
+ default?: string | (() => string);
27
+ options?: string[];
28
+ documentation?: string;
29
+ }) => import("./types.js").StorageStringFieldSchema;
26
30
  number: (args?: {
27
- nullable?: boolean | undefined;
28
- default?: number | (() => number) | undefined;
29
- documentation?: string | undefined;
30
- } | undefined) => import("./types.js").StorageNumberFieldSchema;
31
+ nullable?: boolean;
32
+ default?: number | (() => number);
33
+ documentation?: string;
34
+ }) => import("./types.js").StorageNumberFieldSchema;
31
35
  boolean: (args?: {
32
- nullable?: boolean | undefined;
33
- default?: boolean | (() => boolean) | undefined;
34
- documentation?: string | undefined;
35
- } | undefined) => import("./types.js").StorageBooleanFieldSchema;
36
+ nullable?: boolean;
37
+ default?: boolean | (() => boolean);
38
+ documentation?: string;
39
+ }) => import("./types.js").StorageBooleanFieldSchema;
36
40
  any: <TShape>(args?: {
37
- default?: TShape | undefined;
38
- documentation?: string | undefined;
39
- } | undefined) => import("./types.js").StorageAnyFieldSchema<TShape>;
40
- map: <T_1 extends import("./types.js").StorageFieldSchema>(args: {
41
- values: T_1;
42
- documentation?: string | undefined;
43
- }) => import("./types.js").StorageMapFieldSchema<T_1>;
41
+ default?: TShape;
42
+ documentation?: string;
43
+ }) => import("./types.js").StorageAnyFieldSchema<TShape>;
44
+ map: <T extends import("./types.js").StorageFieldSchema>(args: {
45
+ values: T;
46
+ default?: Record<string, import("./types.js").ShapeFromProperty<T>> | (() => Record<string, import("./types.js").ShapeFromProperty<T>>) | undefined;
47
+ documentation?: string;
48
+ }) => import("./types.js").StorageMapFieldSchema<T>;
49
+ replaceMapValues: (map: import("./types.js").StorageMapFieldSchema<any>, values: import("./types.js").StorageFieldSchema) => import("./types.js").StorageMapFieldSchema<any>;
44
50
  file: (args?: {
45
- nullable?: boolean | undefined;
46
- downloadRemote?: boolean | undefined;
47
- documentation?: string | undefined;
48
- } | undefined) => import("./types.js").StorageFileFieldSchema;
51
+ nullable?: boolean;
52
+ downloadRemote?: boolean;
53
+ documentation?: string;
54
+ }) => import("./types.js").StorageFileFieldSchema;
49
55
  id: () => import("./types.js").StorageStringFieldSchema;
50
56
  };
51
57
  var generated: {
52
58
  id: (() => string) & {
53
- slug: () => string;
54
- isCuid: (cuid: string) => boolean;
55
- isSlug: (slug: string) => boolean;
59
+ slug: (() => string);
60
+ isCuid: ((cuid: string) => boolean);
61
+ isSlug: ((slug: string) => boolean);
56
62
  };
57
63
  };
58
64
  }
@@ -25,6 +25,7 @@ export type StorageArrayFieldSchema<TItems extends StorageFieldSchema> = {
25
25
  type: 'array';
26
26
  items: TItems;
27
27
  nullable?: boolean;
28
+ default?: any[] | (() => any[]);
28
29
  /** Add some docs to your field which will annotate the generated typing */
29
30
  documentation?: string;
30
31
  };
@@ -45,6 +46,7 @@ export type StorageAnyFieldSchema<TShape = any> = {
45
46
  export type StorageMapFieldSchema<V extends StorageFieldSchema> = {
46
47
  type: 'map';
47
48
  values: V;
49
+ default?: Record<string, any> | (() => Record<string, any>);
48
50
  /** Add some docs to your field which will annotate the generated typing */
49
51
  documentation?: string;
50
52
  };
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import { StorageCollectionSchema } from './collection.js';
3
2
  import { StorageArrayFieldSchema, StorageFieldSchema, StorageFieldsSchema, StorageMapFieldSchema, StorageObjectFieldSchema } from './fields.js';
4
3
  type StoragePropertyIsNullable<T extends StorageFieldSchema> = T extends {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdant-web/common",
3
- "version": "2.7.0",
3
+ "version": "2.7.2",
4
4
  "access": "public",
5
5
  "type": "module",
6
6
  "exports": {
package/src/migration.ts CHANGED
@@ -1,19 +1,19 @@
1
1
  import {
2
- stableStringify,
3
- StorageCollectionSchema,
4
- StorageSchema,
5
2
  addFieldDefaults,
6
- StorageDocument,
7
- CollectionFilter,
8
- StorageDocumentInit,
9
- removeExtraProperties,
10
3
  assert,
11
4
  assignOid,
12
- getOid,
13
- hasDefault,
14
- validateEntity,
15
5
  AuthorizationKey,
6
+ CollectionFilter,
7
+ getOid,
16
8
  isMultiValueIndex,
9
+ isRequired,
10
+ removeExtraProperties,
11
+ stableStringify,
12
+ StorageCollectionSchema,
13
+ StorageDocument,
14
+ StorageDocumentInit,
15
+ StorageSchema,
16
+ validateEntity,
17
17
  } from './index.js';
18
18
 
19
19
  /**@deprecated */
@@ -27,9 +27,9 @@ export interface PreservedCollectionMigrationStrategy<
27
27
  Old extends StorageCollectionSchema<any, any, any>,
28
28
  New extends StorageCollectionSchema<any, any, any>,
29
29
  > {
30
- (old: StorageDocument<Old>):
31
- | StorageDocument<New>
32
- | Promise<StorageDocument<New>>;
30
+ (
31
+ old: StorageDocument<Old>,
32
+ ): StorageDocument<New> | Promise<StorageDocument<New>>;
33
33
  }
34
34
  /** @deprecated */
35
35
  type MigrationStrategy<
@@ -109,7 +109,7 @@ type StrategyFor<
109
109
  ? PreservedCollectionMigrationStrategy<
110
110
  Old['collections'][Key],
111
111
  New['collections'][Key]
112
- >
112
+ >
113
113
  : DroppedCollectionMigrationStrategy<Old['collections'][Key]>;
114
114
 
115
115
  /** @deprecated */
@@ -476,7 +476,7 @@ export function createDefaultMigration(
476
476
  : {
477
477
  version: 0,
478
478
  collections: {},
479
- };
479
+ };
480
480
  return migrate(oldSchema, newSchema || schema, async ({ migrate, info }) => {
481
481
  if ((newSchema || schema).version === 1) return;
482
482
 
@@ -697,7 +697,9 @@ function getMigrationInfo(oldSchema: StorageSchema, newSchema: StorageSchema) {
697
697
  // a new default was added - we can auto-migrate it
698
698
  if (
699
699
  Object.keys(newFields).some(
700
- (key) => !hasDefault(oldFields[key]) && hasDefault(newFields[key]),
700
+ (key) =>
701
+ (!oldFields[key] || isRequired(oldFields[key])) &&
702
+ !isRequired(newFields[key]),
701
703
  )
702
704
  ) {
703
705
  autoMigratedCollections.add(collection);
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { getFieldDefault } from './fields.js';
3
2
  import { assignOid, createOid, maybeGetOid } from '../oids.js';
4
3
  import { fields } from './fieldHelpers.js';
4
+ import { getFieldDefault } from './fields.js';
5
5
 
6
6
  describe('getting field defaults', () => {
7
7
  it('does not apply the same oid from the previous application', () => {
@@ -30,4 +30,30 @@ describe('getting field defaults', () => {
30
30
  const defaults = getFieldDefault(field);
31
31
  expect(defaults).toEqual({ foo: 'bar' });
32
32
  });
33
+
34
+ it('supports defaults on arrays', () => {
35
+ const field = fields.array({
36
+ items: fields.object({
37
+ fields: {
38
+ foo: fields.string(),
39
+ },
40
+ }),
41
+ default: [{ foo: 'baz' } as { foo: string }],
42
+ });
43
+ const defaults = getFieldDefault(field);
44
+ expect(defaults).toEqual([{ foo: 'baz' }]);
45
+ });
46
+
47
+ it('supports defaults on maps', () => {
48
+ const field = fields.map({
49
+ values: fields.object({
50
+ fields: {
51
+ foo: fields.string({ default: 'bar' }),
52
+ },
53
+ }),
54
+ default: { test: { foo: 'baz' } as { foo: string } },
55
+ });
56
+ const defaults = getFieldDefault(field);
57
+ expect(defaults).toEqual({ test: { foo: 'baz' } });
58
+ });
33
59
  });
@@ -1,6 +1,7 @@
1
1
  import cuid from 'cuid';
2
2
  import {
3
3
  ShapeFromFieldsWithDefaults,
4
+ ShapeFromProperty,
4
5
  StorageAnyFieldSchema,
5
6
  StorageArrayFieldSchema,
6
7
  StorageBooleanFieldSchema,
@@ -13,32 +14,73 @@ import {
13
14
  StorageStringFieldSchema,
14
15
  } from './types.js';
15
16
 
16
- const objectField = <Props extends StorageFieldsSchema>(args: {
17
- properties: Props;
17
+ type ObjectFieldArgs<Props extends StorageFieldsSchema> = {
18
+ /** @deprecated - use fields. renamed for more consistency with collection root. */
19
+ properties?: Props;
20
+ fields?: Props;
18
21
  nullable?: boolean;
19
22
  default?:
20
23
  | ShapeFromFieldsWithDefaults<Props>
21
24
  | (() => ShapeFromFieldsWithDefaults<Props>);
22
25
  /** Add some docs to your field which will annotate the generated typing */
23
26
  documentation?: string;
24
- }): StorageObjectFieldSchema<Props> => {
27
+ };
28
+
29
+ function objectField<Props extends StorageFieldsSchema>(
30
+ args: ObjectFieldArgs<Props>,
31
+ ): StorageObjectFieldSchema<Props> {
32
+ const { properties, fields, ...resolvedArgs } = args;
33
+ const props = properties || fields;
34
+ if (!props) {
35
+ throw new Error('objectField must be passed a properties object');
36
+ }
25
37
  return {
26
38
  type: 'object',
27
- ...args,
39
+ ...resolvedArgs,
40
+ properties: props,
28
41
  };
29
- };
42
+ }
43
+
44
+ /**
45
+ * Used for recursively defined field schemas. Replaces the original properties
46
+ * of an object field with the provided fields. This will mutate the original field.
47
+ */
48
+ function replaceObjectFields(
49
+ object: StorageObjectFieldSchema<any>,
50
+ fields: StorageFieldsSchema,
51
+ ): StorageObjectFieldSchema<any> {
52
+ object.properties = fields;
53
+ return object;
54
+ }
30
55
 
31
- const arrayField = <T extends StorageFieldSchema>(args: {
56
+ type ArrayFieldArgs<T extends StorageFieldSchema> = {
32
57
  items: T;
33
58
  nullable?: boolean;
59
+ default?: ShapeFromProperty<T>[] | (() => ShapeFromProperty<T>[]);
34
60
  /** Add some docs to your field which will annotate the generated typing */
35
61
  documentation?: string;
36
- }): StorageArrayFieldSchema<T> => {
62
+ };
63
+
64
+ function arrayField<T extends StorageFieldSchema>(
65
+ args: ArrayFieldArgs<T>,
66
+ ): StorageArrayFieldSchema<T> {
37
67
  return {
38
68
  type: 'array',
39
69
  ...args,
40
70
  };
41
- };
71
+ }
72
+
73
+ /**
74
+ * Used for recursively defined field schemas. Replaces the original items
75
+ * of an array field with the provided items. This will mutate the original field.
76
+ */
77
+ function replaceArrayItems(
78
+ array: StorageArrayFieldSchema<any>,
79
+ items: StorageFieldSchema,
80
+ ): StorageArrayFieldSchema<any> {
81
+ array.items = items;
82
+ return array;
83
+ }
42
84
 
43
85
  const stringField = (args?: {
44
86
  nullable?: boolean;
@@ -88,16 +130,34 @@ const anyField = <TShape>(args?: {
88
130
  };
89
131
  };
90
132
 
91
- const mapField = <T extends StorageFieldSchema>(args: {
133
+ type MapFieldArgs<T extends StorageFieldSchema> = {
92
134
  values: T;
135
+ default?:
136
+ | Record<string, ShapeFromProperty<T>>
137
+ | (() => Record<string, ShapeFromProperty<T>>);
93
138
  /** Add some docs to your field which will annotate the generated typing */
94
139
  documentation?: string;
95
- }): StorageMapFieldSchema<T> => {
140
+ };
141
+ function mapField<T extends StorageFieldSchema>(
142
+ args: MapFieldArgs<T>,
143
+ ): StorageMapFieldSchema<T> {
96
144
  return {
97
145
  type: 'map',
98
146
  ...args,
99
147
  };
100
- };
148
+ }
149
+
150
+ /**
151
+ * Used for recursively defined field schemas. Replaces the original values
152
+ * of a map field with the provided values. This will mutate the original field.
153
+ */
154
+ function replaceMapValues(
155
+ map: StorageMapFieldSchema<any>,
156
+ values: StorageFieldSchema,
157
+ ): StorageMapFieldSchema<any> {
158
+ map.values = values;
159
+ return map;
160
+ }
101
161
 
102
162
  const fileField = (args?: {
103
163
  nullable?: boolean;
@@ -125,11 +185,14 @@ const idField = (): StorageStringFieldSchema => {
125
185
  export const fields = {
126
186
  object: objectField,
127
187
  array: arrayField,
188
+ replaceObjectFields,
189
+ replaceArrayItems,
128
190
  string: stringField,
129
191
  number: numberField,
130
192
  boolean: booleanField,
131
193
  any: anyField,
132
194
  map: mapField,
195
+ replaceMapValues,
133
196
  file: fileField,
134
197
  id: idField,
135
198
  };
@@ -1,8 +1,8 @@
1
1
  import { LEGACY_OID_KEY, OID_KEY } from '../oidsLegacy.js';
2
2
  import { isObject } from '../utils.js';
3
3
  import type {
4
- StorageFieldSchema,
5
4
  StorageCollectionSchema,
5
+ StorageFieldSchema,
6
6
  StorageFieldsSchema,
7
7
  } from './types.js';
8
8
 
@@ -20,25 +20,8 @@ export function hasDefault(field: StorageFieldSchema | undefined) {
20
20
  return field.default !== undefined;
21
21
  }
22
22
 
23
- export function getDefault(field: StorageFieldSchema | undefined) {
24
- if (!field || !hasDefault(field)) return undefined;
25
- if (field.type === 'file') {
26
- if (isNullable(field)) return null;
27
- return undefined;
28
- }
29
- if (field.type === 'map') return {};
30
- if (field.type === 'array') {
31
- if (isNullable(field)) return null;
32
- return [];
33
- }
34
- if (field.type === 'object') {
35
- if (isNullable(field)) return null;
36
- return undefined;
37
- }
38
- if (typeof field.default === 'function') {
39
- return field.default();
40
- }
41
- return field.default;
23
+ export function isRequired(field: StorageFieldSchema) {
24
+ return !isNullable(field) && !hasDefault(field);
42
25
  }
43
26
 
44
27
  export function isPrunePoint(field: StorageFieldSchema) {
@@ -96,44 +79,39 @@ export function traverseCollectionFieldsAndApplyDefaults(
96
79
  }
97
80
  }
98
81
 
99
- export function getFieldDefault(field: StorageFieldSchema) {
100
- if (
101
- field.type === 'string' ||
102
- field.type === 'number' ||
103
- field.type === 'boolean' ||
104
- field.type === 'any'
105
- ) {
106
- if (field.default && typeof field.default === 'function') {
107
- return field.default();
108
- } else if (field.default !== undefined) {
109
- // TODO: structuredClone?
110
- return JSON.parse(JSON.stringify(field.default));
82
+ export function getFieldDefault(field: StorageFieldSchema): any {
83
+ if ('default' in field) {
84
+ const val =
85
+ typeof field.default === 'function' ? field.default() : field.default;
86
+ if (val === null) return val;
87
+
88
+ const cloned = structuredClone(val);
89
+
90
+ if (field.type === 'object') {
91
+ // objects also apply defaults of sub-fields over top of the default object
92
+ for (const [key, property] of Object.entries(
93
+ field.properties as StorageFieldsSchema,
94
+ )) {
95
+ if (cloned[key] === undefined) {
96
+ cloned[key] = getFieldDefault(property);
97
+ }
98
+ }
111
99
  }
100
+ return cloned;
112
101
  }
102
+
103
+ if (isNullable(field)) {
104
+ return null;
105
+ }
106
+
113
107
  if (field.type === 'array') {
114
108
  return [];
115
109
  }
110
+
116
111
  if (field.type === 'map') {
117
112
  return {};
118
113
  }
119
- if (field.type !== 'any' && field.nullable) {
120
- return null;
121
- }
122
- if (field.type === 'object' && field.default) {
123
- const defaultValue =
124
- // @ts-ignore
125
- typeof field.default === 'function'
126
- ? field.default()
127
- : JSON.parse(JSON.stringify(field.default));
128
- for (const [key, property] of Object.entries(
129
- field.properties as StorageFieldsSchema,
130
- )) {
131
- if (defaultValue[key] === undefined) {
132
- defaultValue[key] = getFieldDefault(property);
133
- }
134
- }
135
- return defaultValue;
136
- }
114
+
137
115
  return undefined;
138
116
  }
139
117
 
@@ -25,6 +25,7 @@ export type StorageArrayFieldSchema<TItems extends StorageFieldSchema> = {
25
25
  type: 'array';
26
26
  items: TItems;
27
27
  nullable?: boolean;
28
+ default?: any[] | (() => any[]);
28
29
  /** Add some docs to your field which will annotate the generated typing */
29
30
  documentation?: string;
30
31
  };
@@ -45,6 +46,7 @@ export type StorageAnyFieldSchema<TShape = any> = {
45
46
  export type StorageMapFieldSchema<V extends StorageFieldSchema> = {
46
47
  type: 'map';
47
48
  values: V;
49
+ default?: Record<string, any> | (() => Record<string, any>);
48
50
  /** Add some docs to your field which will annotate the generated typing */
49
51
  documentation?: string;
50
52
  };