@verdant-web/store 4.1.3 → 4.1.4

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.
@@ -2,6 +2,11 @@ import { createMigration, schema } from '@verdant-web/common';
2
2
  // @ts-ignore
3
3
  import { IDBFactory } from 'fake-indexeddb';
4
4
  import { ClientDescriptor, IdbPersistence, } from '../../index.js';
5
+ const test = schema.fields.object({
6
+ fields: {
7
+ foo: schema.fields.string(),
8
+ },
9
+ });
5
10
  export const todoCollection = schema.collection({
6
11
  name: 'todo',
7
12
  primaryKey: 'id',
@@ -1 +1 @@
1
- {"version":3,"file":"testStorage.js","sourceRoot":"","sources":["../../../../src/__tests__/fixtures/testStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testStorage.js","sourceRoot":"","sources":["../../../../src/__tests__/fixtures/testStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ import { createMigration, schema, } from '@verdant-web/common';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { ClientDescriptor } from '../client/ClientDescriptor.js';
4
+ import { IdbPersistence } from '../persistence/idb/idbPersistence.js';
5
+ describe('schema', () => {
6
+ it('supports recursive nested fields without breaking', async () => {
7
+ const baseField = schema.fields.object({
8
+ fields: {
9
+ foo: schema.fields.string(),
10
+ },
11
+ });
12
+ const nestedField = schema.fields.replaceObjectFields(baseField, {
13
+ foo: schema.fields.string(),
14
+ bar: schema.fields.map({
15
+ values: baseField,
16
+ }),
17
+ });
18
+ const tests = schema.collection({
19
+ name: 'tests',
20
+ primaryKey: 'id',
21
+ fields: {
22
+ id: schema.fields.string(),
23
+ nested: nestedField,
24
+ },
25
+ indexes: {
26
+ testLevel3: {
27
+ type: 'string',
28
+ compute: (doc) => { var _a, _b, _c, _d, _e; return (_e = (_d = (_c = (_b = (_a = doc.nested.bar) === null || _a === void 0 ? void 0 : _a.baz) === null || _b === void 0 ? void 0 : _b.bar) === null || _c === void 0 ? void 0 : _c.baz) === null || _d === void 0 ? void 0 : _d.foo) !== null && _e !== void 0 ? _e : ''; },
29
+ },
30
+ },
31
+ });
32
+ const testSchema = schema({
33
+ version: 1,
34
+ collections: {
35
+ tests,
36
+ },
37
+ });
38
+ const storage = (await new ClientDescriptor({
39
+ schema: testSchema,
40
+ migrations: [createMigration(testSchema)],
41
+ namespace: 'schematest',
42
+ oldSchemas: [testSchema],
43
+ persistence: new IdbPersistence(new IDBFactory()),
44
+ }).open());
45
+ const doc = await storage.tests.put({
46
+ id: 'test',
47
+ nested: {
48
+ foo: 'foo',
49
+ bar: {
50
+ baz: {
51
+ foo: 'bar',
52
+ bar: {
53
+ baz: {
54
+ foo: 'bar',
55
+ },
56
+ },
57
+ },
58
+ },
59
+ },
60
+ });
61
+ expect(doc.get('nested').get('bar').get('baz').get('bar').get('baz').get('foo')).toBe('bar');
62
+ });
63
+ });
64
+ //# sourceMappingURL=schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../../src/__tests__/schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,MAAM,GAIN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAKlE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,MAAM,EAAE;gBACP,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;aAC3B;SACD,CAAC,CAAC;QACH,MAAM,WAAW,GAAgB,MAAM,CAAC,MAAM,CAAC,mBAAmB,CACjE,SAAS,EACT;YACC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACtB,MAAM,EAAE,SAAS;aACjB,CAAC;SACF,CACD,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;YAC/B,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE;gBACP,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC1B,MAAM,EAAE,WAAW;aACnB;YACD,OAAO,EAAE;gBACR,UAAU,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,2BAAC,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,GAAG,CAAC,MAAM,CAAC,GAAG,0CAAE,GAAG,0CAAE,GAAG,0CAAE,GAAG,0CAAE,GAAG,mCAAI,EAAE,CAAA,EAAA;iBAC1D;aACD;SACD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,CAAC;YACzB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE;gBACZ,KAAK;aACL;SACD,CAAC,CAAC;QAEH,MAAM,OAAO,GAA0B,CAAC,MAAM,IAAI,gBAAgB,CAAC;YAClE,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,CAAC,eAAe,CAAK,UAAU,CAAC,CAAC;YAC7C,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,UAAU,EAAE,CAAC;SACjD,CAAC,CAAC,IAAI,EAAE,CAAQ,CAAC;QAElB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACnC,EAAE,EAAE,MAAM;YACV,MAAM,EAAE;gBACP,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE;oBACJ,GAAG,EAAE;wBACJ,GAAG,EAAE,KAAK;wBACV,GAAG,EAAE;4BACJ,GAAG,EAAE;gCACJ,GAAG,EAAE,KAAK;6BACV;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CAAC;QAEH,MAAM,CACL,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CACxE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdant-web/store",
3
- "version": "4.1.3",
3
+ "version": "4.1.4",
4
4
  "access": "public",
5
5
  "type": "module",
6
6
  "main": "dist/esm/index.js",
@@ -34,7 +34,7 @@
34
34
  "jszip": "^3.10.1",
35
35
  "jwt-decode": "^3.1.2",
36
36
  "weak-event": "^2.0.5",
37
- "@verdant-web/common": "2.7.0"
37
+ "@verdant-web/common": "2.7.1"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "20.10.5",
@@ -2,11 +2,17 @@ import { createMigration, schema } from '@verdant-web/common';
2
2
  // @ts-ignore
3
3
  import { IDBFactory } from 'fake-indexeddb';
4
4
  import {
5
- ClientWithCollections,
6
5
  ClientDescriptor,
6
+ ClientWithCollections,
7
7
  IdbPersistence,
8
8
  } from '../../index.js';
9
9
 
10
+ const test = schema.fields.object({
11
+ fields: {
12
+ foo: schema.fields.string(),
13
+ },
14
+ });
15
+
10
16
  export const todoCollection = schema.collection({
11
17
  name: 'todo',
12
18
  primaryKey: 'id',
@@ -0,0 +1,85 @@
1
+ import {
2
+ createMigration,
3
+ schema,
4
+ StorageMapFieldSchema,
5
+ StorageObjectFieldSchema,
6
+ StorageStringFieldSchema,
7
+ } from '@verdant-web/common';
8
+ import { describe, expect, it } from 'vitest';
9
+ import { ClientDescriptor } from '../client/ClientDescriptor.js';
10
+ import { ClientWithCollections } from '../index.js';
11
+ import { IdbPersistence } from '../persistence/idb/idbPersistence.js';
12
+
13
+ describe('schema', () => {
14
+ it('supports recursive nested fields without breaking', async () => {
15
+ type NestedField = StorageObjectFieldSchema<{
16
+ foo: StorageStringFieldSchema;
17
+ bar: StorageMapFieldSchema<NestedField>;
18
+ }>;
19
+ const baseField = schema.fields.object({
20
+ fields: {
21
+ foo: schema.fields.string(),
22
+ },
23
+ });
24
+ const nestedField: NestedField = schema.fields.replaceObjectFields(
25
+ baseField,
26
+ {
27
+ foo: schema.fields.string(),
28
+ bar: schema.fields.map({
29
+ values: baseField,
30
+ }),
31
+ },
32
+ );
33
+
34
+ const tests = schema.collection({
35
+ name: 'tests',
36
+ primaryKey: 'id',
37
+ fields: {
38
+ id: schema.fields.string(),
39
+ nested: nestedField,
40
+ },
41
+ indexes: {
42
+ testLevel3: {
43
+ type: 'string',
44
+ compute: (doc) => doc.nested.bar?.baz?.bar?.baz?.foo ?? '',
45
+ },
46
+ },
47
+ });
48
+
49
+ const testSchema = schema({
50
+ version: 1,
51
+ collections: {
52
+ tests,
53
+ },
54
+ });
55
+
56
+ const storage: ClientWithCollections = (await new ClientDescriptor({
57
+ schema: testSchema,
58
+ migrations: [createMigration<{}>(testSchema)],
59
+ namespace: 'schematest',
60
+ oldSchemas: [testSchema],
61
+ persistence: new IdbPersistence(new IDBFactory()),
62
+ }).open()) as any;
63
+
64
+ const doc = await storage.tests.put({
65
+ id: 'test',
66
+ nested: {
67
+ foo: 'foo',
68
+ bar: {
69
+ baz: {
70
+ foo: 'bar',
71
+ bar: {
72
+ baz: {
73
+ foo: 'bar',
74
+ },
75
+ },
76
+ },
77
+ },
78
+ },
79
+ });
80
+
81
+ expect(
82
+ doc.get('nested').get('bar').get('baz').get('bar').get('baz').get('foo'),
83
+ ).toBe('bar');
84
+ });
85
+ });