@verdant-web/common 2.7.1 → 2.7.3

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,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: {},
@@ -236,7 +236,7 @@ export function createMigration(maybeOldSchema, maybeNewSchemaOrProcedure, maybe
236
236
  const unmigrated = changedCollections.filter((collection) => !migratedCollections.includes(collection));
237
237
  if (unmigrated.length > 0) {
238
238
  // TODO: does this deserve a full-on error?
239
- console.error(`Unmigrated changed collections from version ${oldSchema.version} to version ${newSchema.version}:`, unmigrated);
239
+ engine.log('error', `Unmigrated changed collections from version ${oldSchema.version} to version ${newSchema.version}:`, unmigrated);
240
240
  }
241
241
  }
242
242
  },
@@ -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":"AAAA,OAAO,EACN,gBAAgB,EAChB,MAAM,EACN,SAAS,EAGT,MAAM,EACN,iBAAiB,EACjB,UAAU,EACV,qBAAqB,EACrB,eAAe,EAKf,cAAc,GACd,MAAM,YAAY,CAAC;AAoLpB,MAAM,WAAW,GAAgB;IAChC,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,EAAE;CACf,CAAC;AAaF,MAAM,UAAU,OAAO,CACtB,oBAAyB,EACzB,oBAAyB,EACzB,qBAA2B;IAE3B,MAAM,yBAAyB,GAAG,OAAO,oBAAoB,KAAK,UAAU,CAAC;IAC7E,MAAM,SAAS,GAAG,yBAAyB;QAC1C,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,oBAAoB,CAAC;IACxB,MAAM,SAAS,GAAG,yBAAyB;QAC1C,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,oBAAoB,CAAC;IACxB,MAAM,SAAS,GAAG,yBAAyB;QAC1C,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,qBAAqB,CAAC;IACzB,wCAAwC;IACxC,MAAM,kBAAkB,GAAa,MAAM,CAAC,IAAI,CAC/C,SAAS,CAAC,WAAW,CACrB,CAAC,MAAM,CACP,CAAC,GAAG,EAAE,EAAE,CACP,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;QAC1B,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1C,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC7C,CAAC;IACF,MAAM,kBAAkB,GAAa,MAAM,CAAC,IAAI,CAC/C,SAAS,CAAC,WAAW,CACrB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CACjE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CACpC,CAAC;IACF,qDAAqD;IACrD,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;IAClD,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QAC3D,mDAAmD;QACnD,IACC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC1B,CAAC,GAAG,EAAE,EAAE,eAAC,OAAA,CAAC,CAAA,MAAA,SAAS,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAA,KAAI,MAAA,SAAS,CAAC,GAAG,CAAC,0CAAE,OAAO,CAAA,CAAA,EAAA,CAC5D,EACA,CAAC;YACF,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QACD,+CAA+C;QAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3D,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED,MAAM,YAAY,GAAgD,EAAE,CAAC;IACrE,MAAM,cAAc,GAAgD,EAAE,CAAC;IACvE,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CACzD,CAAC;QACF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CACzD,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAC9B,2BAA2B;YAC3B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,cAAc,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;YAClC,2BAA2B;YAC3B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,cAAsB,EAAE,GAAQ,EAAE,EAAE;QACzD,OAAO,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAE,EAAE,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC9D,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACzD,OAAO,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEF,OAAO;QACN,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;YAC1C,MAAM,mBAAmB,GAAa,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC;gBACf,OAAO,EAAE,KAAK,EAAE,UAAe,EAAE,QAAa,EAAE,EAAE;oBACjD,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;oBACvC,MAAM,OAAO,GAAG,KAAK,EAAE,GAAQ,EAAE,EAAE;wBAClC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACtC,yDAAyD;wBACzD,mBAAmB;wBACnB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC/B,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,aAAa;oBACb,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC1C,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACrC,qDAAqD;oBACrD,sDAAsD;oBACtD,0BAA0B;oBAC1B,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBACD,QAAQ,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG;gBAC3B,YAAY;gBACZ,IAAI,EAAE;oBACL,kBAAkB;oBAClB,gBAAgB;oBAChB,kBAAkB;iBAClB;gBACD,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC3B,CAAC,CAAC;YAEH,4DAA4D;YAC5D,kDAAkD;YAElD,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CACT,OAAO,EACP,8CAA8C,EAC9C,uBAAuB,CACvB,CAAC;gBACF,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;oBAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAC3C,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CACzD,CAAC;gBACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,2CAA2C;oBAC3C,OAAO,CAAC,KAAK,CACZ,+CAA+C,SAAS,CAAC,OAAO,eAAe,SAAS,CAAC,OAAO,GAAG,EACnG,UAAU,CACV,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QACD,kBAAkB;QAClB,YAAY;QACZ,cAAc;QACd,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAClD,kBAAkB;QAClB,gBAAgB;QAChB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAClD,SAAS;QACT,SAAS;KACT,CAAC;AACH,CAAC;AAmDD,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,EAAU;IACtD,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAClB,UAA4B;IAE5B,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,OAAO;QACN,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpD,sDAAsD;YACtD,SAAS;YACT,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACjD,CAAC;YACD,MAAM,CACL,SAAS,EACT,qCAAqC,UAAU,IAAI,GAAG,6DAA6D,CACnH,CAAC;YAEF,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAEtD,OAAO;gBACN,IAAI,EAAE,GAAG;gBACT,UAAU;gBACV,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAQ;aACzC,CAAC;QACH,CAAC,CAAC;QACF,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC;YAC9C,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,QAAiB;SACvB,CAAC,CAAC;KACH,CAAC;AACH,CAAC;AAWD,MAAM,UAAU,sBAAsB,CACrC,MAAqB,EACrB,SAA8B;IAE9B,IAAI,SAAS,GAAG,SAAS;QACxB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC;YACA,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,EAAE;SACf,CAAC;IACJ,OAAO,OAAO,CAAC,SAAS,EAAE,SAAS,IAAI,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1E,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO;QAEhD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,kBAAyB,EAAE,CAAC;YACzD,wCAAwC;YACxC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AA4ED,MAAM,UAAU,eAAe,CAC9B,cAA6B,EAC7B,yBAE6C,EAC7C,cAAqE;IAErE,MAAM,yBAAyB,GAC9B,OAAO,yBAAyB,KAAK,UAAU;QAC/C,yBAAyB,KAAK,SAAS,CAAC;IACzC,MAAM,SAAS,GAAG,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;IAC3E,MAAM,SAAS,GAAG,yBAAyB;QAC1C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,yBAAyB,CAAC;IAC7B,MAAM,SAAS,GAAG,yBAAyB;QAC1C,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,cAAc,CAAC;IAClB,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;IAC1D,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;IAC1D,MAAM,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,aAAa,GACb,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE3C,OAAO;QACN,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;YAC1C,MAAM,mBAAmB,GAAa,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,KAAK,EAAE,UAAe,EAAE,QAAa,EAAE,EAAE;gBACxD,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,KAAK,EAAE,GAAQ,EAAE,EAAE;oBAClC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACtC,yDAAyD;oBACzD,mBAAmB;oBACnB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC/B,MAAM,eAAe,GAAG,cAAc,CACrC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EACxC,MAAM,CACN,CAAC;oBACF,IAAI,eAAe,EAAE,CAAC;wBACrB,qBAAqB;oBACtB,CAAC;oBACD,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,aAAa;gBACb,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC1C,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,qDAAqD;gBACrD,sDAAsD;gBACtD,0BAA0B;gBAC1B,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5C,CAAC,CAAC;YACF,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG;gBACjB,OAAO;gBACP,IAAI,EAAE;oBACL,kBAAkB;oBAClB,gBAAgB;oBAChB,kBAAkB;iBAClB;gBACD,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC3B,CAAC,CAAA,CAAC;YAEH,4DAA4D;YAC5D,kDAAkD;YAElD,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CACT,OAAO,EACP,8CAA8C,EAC9C,uBAAuB,CACvB,CAAC;gBACF,KAAK,MAAM,IAAI,IAAI,uBAAuB,EAAE,CAAC;oBAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAED,8CAA8C;gBAC9C,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;oBACvC,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;gBAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAC3C,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CACzD,CAAC;gBACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,2CAA2C;oBAC3C,MAAM,CAAC,GAAG,CACT,OAAO,EACP,+CAA+C,SAAS,CAAC,OAAO,eAAe,SAAS,CAAC,OAAO,GAAG,EACnG,UAAU,CACV,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QACD,kBAAkB;QAClB,YAAY;QACZ,cAAc;QACd,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAClD,kBAAkB;QAClB,gBAAgB;QAChB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAClD,SAAS;QACT,SAAS;KACT,CAAC;AACH,CAAC;AAED,eAAe;AACf,SAAS,gBAAgB,CAAC,SAAwB,EAAE,SAAwB;IAC3E,MAAM,kBAAkB,GAAa,MAAM,CAAC,IAAI,CAC/C,SAAS,CAAC,WAAW,CACrB,CAAC,MAAM,CACP,CAAC,GAAG,EAAE,EAAE,CACP,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;QAC1B,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1C,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC7C,CAAC;IACF,MAAM,kBAAkB,GAAa,MAAM,CAAC,IAAI,CAC/C,SAAS,CAAC,WAAW,CACrB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CACjE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CACpC,CAAC;IACF,qDAAqD;IACrD,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;IAClD,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QAC3D,mDAAmD;QACnD,IACC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC1B,CAAC,GAAG,EAAE,EAAE,CACP,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAC5B,EACA,CAAC;YACF,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QACD,+CAA+C;QAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3D,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED,MAAM,YAAY,GAAgD,EAAE,CAAC;IACrE,MAAM,cAAc,GAAgD,EAAE,CAAC;IACvE,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CACzD,CAAC;QACF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CACzD,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAC9B,2BAA2B;YAC3B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,cAAc,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;YAClC,2BAA2B;YAC3B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,cAAsB,EAAE,GAAQ,EAAE,EAAE;QACzD,OAAO,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAE,EAAE,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC9D,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACzD,OAAO,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEF,OAAO;QACN,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,YAAY;QACZ,cAAc;QACd,uBAAuB;QACvB,YAAY;QACZ,aAAa;KACb,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,98 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { createMigration } from './migration.js';
3
+ import { schema } from './schema/index.js';
4
+ describe('migration', () => {
5
+ it('can migrate schemas with recursive fields', async () => {
6
+ const recursiveFieldBase = schema.fields.object({
7
+ fields: {},
8
+ });
9
+ const recursiveField = schema.fields.replaceObjectFields(recursiveFieldBase, {
10
+ nested: recursiveFieldBase,
11
+ });
12
+ const fromSchema = schema({
13
+ version: 1,
14
+ collections: {
15
+ things: schema.collection({
16
+ name: 'thing',
17
+ primaryKey: 'id',
18
+ fields: {
19
+ id: schema.fields.id(),
20
+ recursive: recursiveField,
21
+ },
22
+ }),
23
+ },
24
+ });
25
+ const toSchema = schema({
26
+ version: 2,
27
+ collections: {
28
+ things: schema.collection({
29
+ name: 'thing',
30
+ primaryKey: 'id',
31
+ fields: {
32
+ id: schema.fields.id(),
33
+ recursive: recursiveField,
34
+ newField: schema.fields.number(),
35
+ },
36
+ }),
37
+ },
38
+ });
39
+ const procedure = vi.fn(() => Promise.resolve());
40
+ const migration = createMigration(fromSchema, toSchema, procedure);
41
+ await migration.migrate({
42
+ log: () => { },
43
+ queries: {},
44
+ mutations: {},
45
+ migrate: () => Promise.resolve(),
46
+ deleteCollection: () => Promise.resolve(),
47
+ });
48
+ expect(procedure).toHaveBeenCalledOnce();
49
+ });
50
+ it('auto-migrates new default fields without complaining', async () => {
51
+ const fromSchema = schema({
52
+ version: 1,
53
+ collections: {
54
+ things: schema.collection({
55
+ name: 'thing',
56
+ primaryKey: 'id',
57
+ fields: {
58
+ id: schema.fields.id(),
59
+ },
60
+ }),
61
+ },
62
+ });
63
+ const toSchema = schema({
64
+ version: 2,
65
+ collections: {
66
+ things: schema.collection({
67
+ name: 'thing',
68
+ primaryKey: 'id',
69
+ fields: {
70
+ id: schema.fields.id(),
71
+ newField: schema.fields.number({
72
+ default: 1,
73
+ }),
74
+ newNullable: schema.fields.object({
75
+ fields: {
76
+ foo: schema.fields.string(),
77
+ },
78
+ nullable: true,
79
+ }),
80
+ },
81
+ }),
82
+ },
83
+ });
84
+ const procedure = vi.fn(() => Promise.resolve());
85
+ const migration = createMigration(fromSchema, toSchema, procedure);
86
+ const log = vi.fn();
87
+ await migration.migrate({
88
+ log,
89
+ queries: {},
90
+ mutations: {},
91
+ migrate: () => Promise.resolve(),
92
+ deleteCollection: () => Promise.resolve(),
93
+ });
94
+ expect(procedure).toHaveBeenCalledOnce();
95
+ expect(log).not.toHaveBeenCalledWith('error', 'Unmigrated changed collections from version 1 to version 2:', ['things']);
96
+ });
97
+ });
98
+ //# sourceMappingURL=migration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.test.js","sourceRoot":"","sources":["../../src/migration.test.ts"],"names":[],"mappings":"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"}
@@ -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,4 +1,4 @@
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
2
  type ObjectFieldArgs<Props extends StorageFieldsSchema> = {
3
3
  /** @deprecated - use fields. renamed for more consistency with collection root. */
4
4
  properties?: Props;
@@ -17,6 +17,7 @@ declare function replaceObjectFields(object: StorageObjectFieldSchema<any>, fiel
17
17
  type ArrayFieldArgs<T extends StorageFieldSchema> = {
18
18
  items: T;
19
19
  nullable?: boolean;
20
+ default?: ShapeFromProperty<T>[] | (() => ShapeFromProperty<T>[]);
20
21
  /** Add some docs to your field which will annotate the generated typing */
21
22
  documentation?: string;
22
23
  };
@@ -28,6 +29,7 @@ declare function arrayField<T extends StorageFieldSchema>(args: ArrayFieldArgs<T
28
29
  declare function replaceArrayItems(array: StorageArrayFieldSchema<any>, items: StorageFieldSchema): StorageArrayFieldSchema<any>;
29
30
  type MapFieldArgs<T extends StorageFieldSchema> = {
30
31
  values: T;
32
+ default?: Record<string, ShapeFromProperty<T>> | (() => Record<string, ShapeFromProperty<T>>);
31
33
  /** Add some docs to your field which will annotate the generated typing */
32
34
  documentation?: string;
33
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fieldHelpers.js","sourceRoot":"","sources":["../../../src/schema/fieldHelpers.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AA2BxB,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;AASD,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;AAOF,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
+ {"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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"}
@@ -16,6 +16,7 @@ export declare namespace schema {
16
16
  array: <T extends import("./types.js").StorageFieldSchema>(args: {
17
17
  items: T;
18
18
  nullable?: boolean;
19
+ default?: import("./types.js").ShapeFromProperty<T>[] | (() => import("./types.js").ShapeFromProperty<T>[]) | undefined;
19
20
  documentation?: string;
20
21
  }) => import("./types.js").StorageArrayFieldSchema<T>;
21
22
  replaceObjectFields: (object: import("./types.js").StorageObjectFieldSchema<any>, fields: StorageFieldsSchema) => import("./types.js").StorageObjectFieldSchema<any>;
@@ -42,6 +43,7 @@ export declare namespace schema {
42
43
  }) => import("./types.js").StorageAnyFieldSchema<TShape>;
43
44
  map: <T extends import("./types.js").StorageFieldSchema>(args: {
44
45
  values: T;
46
+ default?: Record<string, import("./types.js").ShapeFromProperty<T>> | (() => Record<string, import("./types.js").ShapeFromProperty<T>>) | undefined;
45
47
  documentation?: string;
46
48
  }) => import("./types.js").StorageMapFieldSchema<T>;
47
49
  replaceMapValues: (map: import("./types.js").StorageMapFieldSchema<any>, values: import("./types.js").StorageFieldSchema) => import("./types.js").StorageMapFieldSchema<any>;
@@ -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
  };
package/dist/esm/utils.js CHANGED
@@ -1,6 +1,6 @@
1
+ import hash from 'object-hash';
1
2
  import { v4 } from 'uuid';
2
3
  import { assignOid, maybeGetOid } from './oids.js';
3
- import hash from 'object-hash';
4
4
  export function take(obj, keys) {
5
5
  const result = {};
6
6
  for (const key of keys) {
@@ -32,7 +32,7 @@ export function getSortedIndex(array, insert, compare) {
32
32
  }
33
33
  return low;
34
34
  }
35
- function orderedReplacer(_, v) {
35
+ function orderedReplacer(k, v) {
36
36
  if (typeof v !== 'object' || v === null || Array.isArray(v)) {
37
37
  return v;
38
38
  }
@@ -43,7 +43,17 @@ function orderedReplacer(_, v) {
43
43
  * of key insertion order
44
44
  */
45
45
  export function stableStringify(obj) {
46
- return JSON.stringify(obj, orderedReplacer);
46
+ const seen = new WeakMap();
47
+ let cyclicCount = 0;
48
+ return JSON.stringify(obj, (k, v) => {
49
+ if (typeof v === 'object' && v !== null) {
50
+ if (seen.has(v)) {
51
+ return { $ref: seen.get(v) };
52
+ }
53
+ seen.set(v, `cyclic-ref:${cyclicCount++}`);
54
+ }
55
+ return orderedReplacer(k, v);
56
+ });
47
57
  }
48
58
  /**
49
59
  * A version of structured cloning which preserves object identity
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdant-web/common",
3
- "version": "2.7.1",
3
+ "version": "2.7.3",
4
4
  "access": "public",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,112 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { createMigration } from './migration.js';
3
+ import { schema } from './schema/index.js';
4
+
5
+ describe('migration', () => {
6
+ it('can migrate schemas with recursive fields', async () => {
7
+ const recursiveFieldBase = schema.fields.object({
8
+ fields: {},
9
+ });
10
+ const recursiveField = schema.fields.replaceObjectFields(
11
+ recursiveFieldBase,
12
+ {
13
+ nested: recursiveFieldBase,
14
+ },
15
+ );
16
+ const fromSchema = schema({
17
+ version: 1,
18
+ collections: {
19
+ things: schema.collection({
20
+ name: 'thing',
21
+ primaryKey: 'id',
22
+ fields: {
23
+ id: schema.fields.id(),
24
+ recursive: recursiveField,
25
+ },
26
+ }),
27
+ },
28
+ });
29
+ const toSchema = schema({
30
+ version: 2,
31
+ collections: {
32
+ things: schema.collection({
33
+ name: 'thing',
34
+ primaryKey: 'id',
35
+ fields: {
36
+ id: schema.fields.id(),
37
+ recursive: recursiveField,
38
+ newField: schema.fields.number(),
39
+ },
40
+ }),
41
+ },
42
+ });
43
+
44
+ const procedure = vi.fn(() => Promise.resolve());
45
+ const migration = createMigration(fromSchema, toSchema, procedure);
46
+
47
+ await migration.migrate({
48
+ log: () => {},
49
+ queries: {},
50
+ mutations: {},
51
+ migrate: () => Promise.resolve(),
52
+ deleteCollection: () => Promise.resolve(),
53
+ });
54
+
55
+ expect(procedure).toHaveBeenCalledOnce();
56
+ });
57
+
58
+ it('auto-migrates new default fields without complaining', async () => {
59
+ const fromSchema = schema({
60
+ version: 1,
61
+ collections: {
62
+ things: schema.collection({
63
+ name: 'thing',
64
+ primaryKey: 'id',
65
+ fields: {
66
+ id: schema.fields.id(),
67
+ },
68
+ }),
69
+ },
70
+ });
71
+ const toSchema = schema({
72
+ version: 2,
73
+ collections: {
74
+ things: schema.collection({
75
+ name: 'thing',
76
+ primaryKey: 'id',
77
+ fields: {
78
+ id: schema.fields.id(),
79
+ newField: schema.fields.number({
80
+ default: 1,
81
+ }),
82
+ newNullable: schema.fields.object({
83
+ fields: {
84
+ foo: schema.fields.string(),
85
+ },
86
+ nullable: true,
87
+ }),
88
+ },
89
+ }),
90
+ },
91
+ });
92
+
93
+ const procedure = vi.fn(() => Promise.resolve());
94
+ const migration = createMigration(fromSchema, toSchema, procedure);
95
+
96
+ const log = vi.fn();
97
+ await migration.migrate({
98
+ log,
99
+ queries: {},
100
+ mutations: {},
101
+ migrate: () => Promise.resolve(),
102
+ deleteCollection: () => Promise.resolve(),
103
+ });
104
+
105
+ expect(procedure).toHaveBeenCalledOnce();
106
+ expect(log).not.toHaveBeenCalledWith(
107
+ 'error',
108
+ 'Unmigrated changed collections from version 1 to version 2:',
109
+ ['things'],
110
+ );
111
+ });
112
+ });
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
 
@@ -654,7 +654,8 @@ export function createMigration(
654
654
  );
655
655
  if (unmigrated.length > 0) {
656
656
  // TODO: does this deserve a full-on error?
657
- console.error(
657
+ engine.log(
658
+ 'error',
658
659
  `Unmigrated changed collections from version ${oldSchema.version} to version ${newSchema.version}:`,
659
660
  unmigrated,
660
661
  );
@@ -697,7 +698,9 @@ function getMigrationInfo(oldSchema: StorageSchema, newSchema: StorageSchema) {
697
698
  // a new default was added - we can auto-migrate it
698
699
  if (
699
700
  Object.keys(newFields).some(
700
- (key) => !hasDefault(oldFields[key]) && hasDefault(newFields[key]),
701
+ (key) =>
702
+ (!oldFields[key] || isRequired(oldFields[key])) &&
703
+ !isRequired(newFields[key]),
701
704
  )
702
705
  ) {
703
706
  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,
@@ -55,6 +56,7 @@ function replaceObjectFields(
55
56
  type ArrayFieldArgs<T extends StorageFieldSchema> = {
56
57
  items: T;
57
58
  nullable?: boolean;
59
+ default?: ShapeFromProperty<T>[] | (() => ShapeFromProperty<T>[]);
58
60
  /** Add some docs to your field which will annotate the generated typing */
59
61
  documentation?: string;
60
62
  };
@@ -130,6 +132,9 @@ const anyField = <TShape>(args?: {
130
132
 
131
133
  type MapFieldArgs<T extends StorageFieldSchema> = {
132
134
  values: T;
135
+ default?:
136
+ | Record<string, ShapeFromProperty<T>>
137
+ | (() => Record<string, ShapeFromProperty<T>>);
133
138
  /** Add some docs to your field which will annotate the generated typing */
134
139
  documentation?: string;
135
140
  };
@@ -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
  };
package/src/utils.ts CHANGED
@@ -1,6 +1,6 @@
1
+ import hash from 'object-hash';
1
2
  import { v4 } from 'uuid';
2
3
  import { assignOid, maybeGetOid } from './oids.js';
3
- import hash from 'object-hash';
4
4
 
5
5
  export function take<T extends object, Keys extends keyof T>(
6
6
  obj: T,
@@ -45,7 +45,7 @@ export function getSortedIndex<T>(
45
45
  return low;
46
46
  }
47
47
 
48
- function orderedReplacer(_: any, v: any) {
48
+ function orderedReplacer(k: any, v: any) {
49
49
  if (typeof v !== 'object' || v === null || Array.isArray(v)) {
50
50
  return v;
51
51
  }
@@ -58,7 +58,17 @@ function orderedReplacer(_: any, v: any) {
58
58
  * of key insertion order
59
59
  */
60
60
  export function stableStringify(obj: any) {
61
- return JSON.stringify(obj, orderedReplacer);
61
+ const seen = new WeakMap();
62
+ let cyclicCount = 0;
63
+ return JSON.stringify(obj, (k, v) => {
64
+ if (typeof v === 'object' && v !== null) {
65
+ if (seen.has(v)) {
66
+ return { $ref: seen.get(v) };
67
+ }
68
+ seen.set(v, `cyclic-ref:${cyclicCount++}`);
69
+ }
70
+ return orderedReplacer(k, v);
71
+ });
62
72
  }
63
73
 
64
74
  /**