@verdant-web/common 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/cjs/EventSubscriber.d.ts +17 -0
- package/dist/cjs/EventSubscriber.js +67 -0
- package/dist/cjs/EventSubscriber.js.map +1 -0
- package/dist/cjs/baseline.d.ts +5 -0
- package/dist/cjs/baseline.js +3 -0
- package/dist/cjs/baseline.js.map +1 -0
- package/dist/cjs/batching.d.ts +41 -0
- package/dist/cjs/batching.js +89 -0
- package/dist/cjs/batching.js.map +1 -0
- package/dist/cjs/files.d.ts +19 -0
- package/dist/cjs/files.js +19 -0
- package/dist/cjs/files.js.map +1 -0
- package/dist/cjs/files.test.d.ts +1 -0
- package/dist/cjs/files.test.js +81 -0
- package/dist/cjs/files.test.js.map +1 -0
- package/dist/cjs/index.d.ts +18 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/indexes.d.ts +14 -0
- package/dist/cjs/indexes.js +116 -0
- package/dist/cjs/indexes.js.map +1 -0
- package/dist/cjs/indexes.test.d.ts +1 -0
- package/dist/cjs/indexes.test.js +128 -0
- package/dist/cjs/indexes.test.js.map +1 -0
- package/dist/cjs/migration.d.ts +98 -0
- package/dist/cjs/migration.js +128 -0
- package/dist/cjs/migration.js.map +1 -0
- package/dist/cjs/oids.d.ts +87 -0
- package/dist/cjs/oids.js +375 -0
- package/dist/cjs/oids.js.map +1 -0
- package/dist/cjs/oids.test.d.ts +1 -0
- package/dist/cjs/oids.test.js +282 -0
- package/dist/cjs/oids.test.js.map +1 -0
- package/dist/cjs/operation.d.ts +139 -0
- package/dist/cjs/operation.js +533 -0
- package/dist/cjs/operation.js.map +1 -0
- package/dist/cjs/operation.test.d.ts +1 -0
- package/dist/cjs/operation.test.js +827 -0
- package/dist/cjs/operation.test.js.map +1 -0
- package/dist/cjs/patch.d.ts +26 -0
- package/dist/cjs/patch.js +227 -0
- package/dist/cjs/patch.js.map +1 -0
- package/dist/cjs/presence.d.ts +27 -0
- package/dist/cjs/presence.js +3 -0
- package/dist/cjs/presence.js.map +1 -0
- package/dist/cjs/protocol.d.ts +145 -0
- package/dist/cjs/protocol.js +4 -0
- package/dist/cjs/protocol.js.map +1 -0
- package/dist/cjs/refs.d.ts +5 -0
- package/dist/cjs/refs.js +22 -0
- package/dist/cjs/refs.js.map +1 -0
- package/dist/cjs/replica.d.ts +28 -0
- package/dist/cjs/replica.js +29 -0
- package/dist/cjs/replica.js.map +1 -0
- package/dist/cjs/schema/defaults.d.ts +4 -0
- package/dist/cjs/schema/defaults.js +72 -0
- package/dist/cjs/schema/defaults.js.map +1 -0
- package/dist/cjs/schema/defaults.test.d.ts +1 -0
- package/dist/cjs/schema/defaults.test.js +21 -0
- package/dist/cjs/schema/defaults.test.js.map +1 -0
- package/dist/cjs/schema/index.d.ts +8 -0
- package/dist/cjs/schema/index.js +29 -0
- package/dist/cjs/schema/index.js.map +1 -0
- package/dist/cjs/schema/indexFilters.d.ts +6 -0
- package/dist/cjs/schema/indexFilters.js +31 -0
- package/dist/cjs/schema/indexFilters.js.map +1 -0
- package/dist/cjs/schema/types/collection.d.ts +51 -0
- package/dist/cjs/schema/types/collection.js +3 -0
- package/dist/cjs/schema/types/collection.js.map +1 -0
- package/dist/cjs/schema/types/compounds.d.ts +12 -0
- package/dist/cjs/schema/types/compounds.js +3 -0
- package/dist/cjs/schema/types/compounds.js.map +1 -0
- package/dist/cjs/schema/types/fields.d.ts +59 -0
- package/dist/cjs/schema/types/fields.js +3 -0
- package/dist/cjs/schema/types/fields.js.map +1 -0
- package/dist/cjs/schema/types/filters.d.ts +29 -0
- package/dist/cjs/schema/types/filters.js +3 -0
- package/dist/cjs/schema/types/filters.js.map +1 -0
- package/dist/cjs/schema/types/shapes.d.ts +21 -0
- package/dist/cjs/schema/types/shapes.js +3 -0
- package/dist/cjs/schema/types/shapes.js.map +1 -0
- package/dist/cjs/schema/types/synthetics.d.ts +28 -0
- package/dist/cjs/schema/types/synthetics.js +3 -0
- package/dist/cjs/schema/types/synthetics.js.map +1 -0
- package/dist/cjs/schema/types.d.ts +18 -0
- package/dist/cjs/schema/types.js +23 -0
- package/dist/cjs/schema/types.js.map +1 -0
- package/dist/cjs/timestamp.d.ts +48 -0
- package/dist/cjs/timestamp.js +244 -0
- package/dist/cjs/timestamp.js.map +1 -0
- package/dist/cjs/timestamp.test.d.ts +1 -0
- package/dist/cjs/timestamp.test.js +94 -0
- package/dist/cjs/timestamp.test.js.map +1 -0
- package/dist/cjs/undo.d.ts +3 -0
- package/dist/cjs/undo.js +199 -0
- package/dist/cjs/undo.js.map +1 -0
- package/dist/cjs/utils.d.ts +15 -0
- package/dist/cjs/utils.js +128 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/utils.test.d.ts +1 -0
- package/dist/cjs/utils.test.js +37 -0
- package/dist/cjs/utils.test.js.map +1 -0
- package/dist/esm/EventSubscriber.d.ts +17 -0
- package/dist/esm/EventSubscriber.js +63 -0
- package/dist/esm/EventSubscriber.js.map +1 -0
- package/dist/esm/baseline.d.ts +5 -0
- package/dist/esm/baseline.js +2 -0
- package/dist/esm/baseline.js.map +1 -0
- package/dist/esm/batching.d.ts +41 -0
- package/dist/esm/batching.js +84 -0
- package/dist/esm/batching.js.map +1 -0
- package/dist/esm/files.d.ts +19 -0
- package/dist/esm/files.js +13 -0
- package/dist/esm/files.js.map +1 -0
- package/dist/esm/files.test.d.ts +1 -0
- package/dist/esm/files.test.js +79 -0
- package/dist/esm/files.test.js.map +1 -0
- package/dist/esm/index.d.ts +18 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indexes.d.ts +14 -0
- package/dist/esm/indexes.js +106 -0
- package/dist/esm/indexes.js.map +1 -0
- package/dist/esm/indexes.test.d.ts +1 -0
- package/dist/esm/indexes.test.js +126 -0
- package/dist/esm/indexes.test.js.map +1 -0
- package/dist/esm/migration.d.ts +98 -0
- package/dist/esm/migration.js +122 -0
- package/dist/esm/migration.js.map +1 -0
- package/dist/esm/oids.d.ts +87 -0
- package/dist/esm/oids.js +348 -0
- package/dist/esm/oids.js.map +1 -0
- package/dist/esm/oids.test.d.ts +1 -0
- package/dist/esm/oids.test.js +280 -0
- package/dist/esm/oids.test.js.map +1 -0
- package/dist/esm/operation.d.ts +139 -0
- package/dist/esm/operation.js +518 -0
- package/dist/esm/operation.js.map +1 -0
- package/dist/esm/operation.test.d.ts +1 -0
- package/dist/esm/operation.test.js +825 -0
- package/dist/esm/operation.test.js.map +1 -0
- package/dist/esm/patch.d.ts +26 -0
- package/dist/esm/patch.js +223 -0
- package/dist/esm/patch.js.map +1 -0
- package/dist/esm/presence.d.ts +27 -0
- package/dist/esm/presence.js +2 -0
- package/dist/esm/presence.js.map +1 -0
- package/dist/esm/protocol.d.ts +145 -0
- package/dist/esm/protocol.js +3 -0
- package/dist/esm/protocol.js.map +1 -0
- package/dist/esm/refs.d.ts +5 -0
- package/dist/esm/refs.js +17 -0
- package/dist/esm/refs.js.map +1 -0
- package/dist/esm/replica.d.ts +28 -0
- package/dist/esm/replica.js +26 -0
- package/dist/esm/replica.js.map +1 -0
- package/dist/esm/schema/defaults.d.ts +4 -0
- package/dist/esm/schema/defaults.js +66 -0
- package/dist/esm/schema/defaults.js.map +1 -0
- package/dist/esm/schema/defaults.test.d.ts +1 -0
- package/dist/esm/schema/defaults.test.js +19 -0
- package/dist/esm/schema/defaults.test.js.map +1 -0
- package/dist/esm/schema/index.d.ts +8 -0
- package/dist/esm/schema/index.js +10 -0
- package/dist/esm/schema/index.js.map +1 -0
- package/dist/esm/schema/indexFilters.d.ts +6 -0
- package/dist/esm/schema/indexFilters.js +23 -0
- package/dist/esm/schema/indexFilters.js.map +1 -0
- package/dist/esm/schema/types/collection.d.ts +51 -0
- package/dist/esm/schema/types/collection.js +2 -0
- package/dist/esm/schema/types/collection.js.map +1 -0
- package/dist/esm/schema/types/compounds.d.ts +12 -0
- package/dist/esm/schema/types/compounds.js +2 -0
- package/dist/esm/schema/types/compounds.js.map +1 -0
- package/dist/esm/schema/types/fields.d.ts +59 -0
- package/dist/esm/schema/types/fields.js +2 -0
- package/dist/esm/schema/types/fields.js.map +1 -0
- package/dist/esm/schema/types/filters.d.ts +29 -0
- package/dist/esm/schema/types/filters.js +2 -0
- package/dist/esm/schema/types/filters.js.map +1 -0
- package/dist/esm/schema/types/shapes.d.ts +21 -0
- package/dist/esm/schema/types/shapes.js +2 -0
- package/dist/esm/schema/types/shapes.js.map +1 -0
- package/dist/esm/schema/types/synthetics.d.ts +28 -0
- package/dist/esm/schema/types/synthetics.js +2 -0
- package/dist/esm/schema/types/synthetics.js.map +1 -0
- package/dist/esm/schema/types.d.ts +18 -0
- package/dist/esm/schema/types.js +7 -0
- package/dist/esm/schema/types.js.map +1 -0
- package/dist/esm/timestamp.d.ts +48 -0
- package/dist/esm/timestamp.js +229 -0
- package/dist/esm/timestamp.js.map +1 -0
- package/dist/esm/timestamp.test.d.ts +1 -0
- package/dist/esm/timestamp.test.js +92 -0
- package/dist/esm/timestamp.test.js.map +1 -0
- package/dist/esm/undo.d.ts +3 -0
- package/dist/esm/undo.js +195 -0
- package/dist/esm/undo.js.map +1 -0
- package/dist/esm/utils.d.ts +15 -0
- package/dist/esm/utils.js +114 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/utils.test.d.ts +1 -0
- package/dist/esm/utils.test.js +35 -0
- package/dist/esm/utils.test.js.map +1 -0
- package/dist/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +38 -0
- package/src/EventSubscriber.ts +81 -0
- package/src/baseline.ts +9 -0
- package/src/batching.ts +135 -0
- package/src/files.ts +34 -0
- package/src/index.ts +26 -0
- package/src/indexes.test.ts +158 -0
- package/src/indexes.ts +151 -0
- package/src/migration.ts +391 -0
- package/src/oids.test.ts +395 -0
- package/src/oids.ts +442 -0
- package/src/operation.test.ts +966 -0
- package/src/operation.ts +755 -0
- package/src/patch.ts +277 -0
- package/src/presence.ts +29 -0
- package/src/protocol.ts +184 -0
- package/src/refs.ts +16 -0
- package/src/replica.ts +29 -0
- package/src/schema/defaults.test.ts +19 -0
- package/src/schema/defaults.ts +72 -0
- package/src/schema/index.ts +28 -0
- package/src/schema/indexFilters.ts +49 -0
- package/src/schema/types/collection.ts +133 -0
- package/src/schema/types/compounds.ts +33 -0
- package/src/schema/types/fields.ts +85 -0
- package/src/schema/types/filters.ts +39 -0
- package/src/schema/types/shapes.ts +83 -0
- package/src/schema/types/synthetics.ts +45 -0
- package/src/schema/types.ts +28 -0
- package/src/timestamp.test.ts +113 -0
- package/src/timestamp.ts +284 -0
- package/src/undo.ts +205 -0
- package/src/utils.test.ts +38 -0
- package/src/utils.ts +137 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { getFieldDefault } from './defaults.js';
|
|
3
|
+
import { assignOid, createOid, maybeGetOid } from '../oids.js';
|
|
4
|
+
describe('getting field defaults', () => {
|
|
5
|
+
it('does not apply the same oid from the previous application', () => {
|
|
6
|
+
const field = {
|
|
7
|
+
type: 'any',
|
|
8
|
+
default: {
|
|
9
|
+
id: '123',
|
|
10
|
+
name: 'test',
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
const first = getFieldDefault(field);
|
|
14
|
+
assignOid(first, createOid('test', '1', []));
|
|
15
|
+
const second = getFieldDefault(field);
|
|
16
|
+
expect(maybeGetOid(second)).toBe(undefined);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=defaults.test.js.map
|
|
@@ -0,0 +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,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAU,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG;YACb,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACR,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,MAAM;aACZ;SACQ,CAAC;QACX,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CollectionCompoundIndices, StorageCollectionSchema, StorageFieldsSchema, StorageSchema, StorageSyntheticIndices } from './types.js';
|
|
2
|
+
export declare function collection<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>, Compounds extends CollectionCompoundIndices<Fields, Synthetics>>(input: StorageCollectionSchema<Fields, Synthetics, Compounds>): StorageCollectionSchema<Fields, Synthetics, Compounds>;
|
|
3
|
+
export declare function schema<Schema extends StorageSchema<{
|
|
4
|
+
[key: string]: StorageCollectionSchema<any, any, any>;
|
|
5
|
+
}>>(input: Schema): Schema;
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './indexFilters.js';
|
|
8
|
+
export * from './defaults.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,UAAU,CAIxB,KAA6D;IAC9D,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAIpB,KAAa;IACd,OAAO,KAAK,CAAC;AACd,CAAC;AAED,cAAc,YAAY,CAAC;AAE3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CollectionCompoundIndexFilter, CollectionFilter, MatchCollectionIndexFilter, RangeCollectionIndexFilter, SortIndexFilter, StartsWithIndexFilter } from './types.js';
|
|
2
|
+
export declare function isMatchIndexFilter(filter: CollectionFilter): filter is MatchCollectionIndexFilter;
|
|
3
|
+
export declare function isRangeIndexFilter(filter: CollectionFilter): filter is RangeCollectionIndexFilter;
|
|
4
|
+
export declare function isCompoundIndexFilter(filter: CollectionFilter): filter is CollectionCompoundIndexFilter;
|
|
5
|
+
export declare function isStartsWithIndexFilter(filter: CollectionFilter): filter is StartsWithIndexFilter;
|
|
6
|
+
export declare function isSortIndexFilter(filter: CollectionFilter): filter is SortIndexFilter;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function isMatchIndexFilter(filter) {
|
|
2
|
+
return filter.equals !== undefined;
|
|
3
|
+
}
|
|
4
|
+
export function isRangeIndexFilter(filter) {
|
|
5
|
+
return (filter.gte !== undefined ||
|
|
6
|
+
filter.lte !== undefined ||
|
|
7
|
+
filter.gt !== undefined ||
|
|
8
|
+
filter.lt !== undefined);
|
|
9
|
+
}
|
|
10
|
+
export function isCompoundIndexFilter(filter) {
|
|
11
|
+
return !!filter.match;
|
|
12
|
+
}
|
|
13
|
+
export function isStartsWithIndexFilter(filter) {
|
|
14
|
+
return filter.startsWith !== undefined;
|
|
15
|
+
}
|
|
16
|
+
export function isSortIndexFilter(filter) {
|
|
17
|
+
return (!isRangeIndexFilter(filter) &&
|
|
18
|
+
!isMatchIndexFilter(filter) &&
|
|
19
|
+
!isCompoundIndexFilter(filter) &&
|
|
20
|
+
!isStartsWithIndexFilter(filter) &&
|
|
21
|
+
filter.order);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=indexFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexFilters.js","sourceRoot":"","sources":["../../../src/schema/indexFilters.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CACjC,MAAwB;IAExB,OAAQ,MAAc,CAAC,MAAM,KAAK,SAAS,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,MAAwB;IAExB,OAAO,CACL,MAAc,CAAC,GAAG,KAAK,SAAS;QAChC,MAAc,CAAC,GAAG,KAAK,SAAS;QAChC,MAAc,CAAC,EAAE,KAAK,SAAS;QAC/B,MAAc,CAAC,EAAE,KAAK,SAAS,CAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,MAAwB;IAExB,OAAO,CAAC,CAAE,MAAc,CAAC,KAAK,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,MAAwB;IAExB,OAAQ,MAAc,CAAC,UAAU,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,MAAwB;IAExB,OAAO,CACN,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC3B,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC3B,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAC9B,CAAC,uBAAuB,CAAC,MAAM,CAAC;QAC/B,MAAc,CAAC,KAAK,CACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CollectionCompoundIndices } from './compounds.js';
|
|
2
|
+
import { NestedStorageFieldSchema, StorageFieldSchema, StorageFieldsSchema, StorageIndexableFields } from './fields.js';
|
|
3
|
+
import { StorageDocument } from './shapes.js';
|
|
4
|
+
import { StorageSyntheticIndexSchema, StorageSyntheticIndices } from './synthetics.js';
|
|
5
|
+
/**
|
|
6
|
+
* The main collection schema
|
|
7
|
+
*/
|
|
8
|
+
export declare type StorageCollectionSchema<Fields extends StorageFieldsSchema = StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields> = StorageSyntheticIndices<Fields>, Compounds extends CollectionCompoundIndices<Fields, Synthetics> = CollectionCompoundIndices<Fields, Synthetics>> = {
|
|
9
|
+
name: string;
|
|
10
|
+
/**
|
|
11
|
+
* Optionally provide a plural name. Useful for some code generation purposes.
|
|
12
|
+
*/
|
|
13
|
+
pluralName?: string;
|
|
14
|
+
fields: Fields;
|
|
15
|
+
synthetics?: Synthetics;
|
|
16
|
+
compounds?: Compounds;
|
|
17
|
+
primaryKey: StorageIndexablePropertyName<Fields, Synthetics>;
|
|
18
|
+
};
|
|
19
|
+
export declare type NamedSchema<Schemas extends StorageCollectionSchema<any, any, any>, Name extends string> = Schemas extends {
|
|
20
|
+
name: Name;
|
|
21
|
+
} ? Schemas : never;
|
|
22
|
+
export declare type IndexedSchemaProperties<Schema extends StorageCollectionSchema<any, any, any>> = {
|
|
23
|
+
[K in keyof CollectionSchemaFields<Schema> as CollectionSchemaFields<Schema>[K] extends {
|
|
24
|
+
indexed: true;
|
|
25
|
+
} ? K : never]: CollectionSchemaFields<Schema>[K];
|
|
26
|
+
} & CollectionSchemaComputedIndexes<Schema> & CollectionSchemaCompoundIndexes<Schema>;
|
|
27
|
+
export declare type CollectionIndexName<Collection extends StorageCollectionSchema<any, any, any>> = Extract<keyof IndexedSchemaProperties<Collection>, string>;
|
|
28
|
+
export declare type CollectionProperties<Collection extends StorageCollectionSchema<any, any, any>> = Collection['fields'] & Collection['synthetics'];
|
|
29
|
+
export declare type CollectionPropertyName<Collection extends StorageCollectionSchema<any, any, any>> = Exclude<keyof CollectionProperties<Collection>, number | symbol>;
|
|
30
|
+
export declare type CollectionEvents<Collection extends StorageCollectionSchema<any, any, any>> = {
|
|
31
|
+
put: (value: StorageDocument<Collection>) => void;
|
|
32
|
+
delete: (id: string) => void;
|
|
33
|
+
[key: `put:${string}`]: (value: StorageDocument<Collection>) => void;
|
|
34
|
+
[key: `delete:${string}`]: () => void;
|
|
35
|
+
};
|
|
36
|
+
export declare type SchemaForCollection<Collection extends StorageCollectionSchema<any, any, any>> = Collection;
|
|
37
|
+
export declare type CollectionSchemaFields<Schema extends StorageCollectionSchema<any, any, any>> = Schema extends StorageCollectionSchema<infer F, any, any> ? F : never;
|
|
38
|
+
export declare type CollectionSchemaComputedIndexes<Schema extends StorageCollectionSchema<any, any, any>> = Schema extends StorageCollectionSchema<any, infer S, any> ? S : never;
|
|
39
|
+
export declare type CollectionSchemaCompoundIndexes<Schema extends StorageCollectionSchema<any, any, any>> = Schema extends StorageCollectionSchema<any, any, infer C> ? C : never;
|
|
40
|
+
export declare type StorageIndexableProperties<Schema extends StorageCollectionSchema<any, any, any>> = {
|
|
41
|
+
[K in keyof CollectionSchemaFields<Schema>]: CollectionSchemaFields<Schema>[K] extends {
|
|
42
|
+
indexed: boolean;
|
|
43
|
+
} ? CollectionSchemaFields<Schema>[K] : never;
|
|
44
|
+
} & CollectionSchemaComputedIndexes<Schema>;
|
|
45
|
+
export declare type StorageSchemaProperty<Schema extends StorageCollectionSchema<any, any, any>> = StorageSchemaProperties<Schema>[keyof StorageSchemaProperties<Schema>];
|
|
46
|
+
export declare type StorageSchemaPropertyName<Schema extends StorageCollectionSchema<any, any, any>> = Extract<keyof StorageSchemaProperties<Schema>, string>;
|
|
47
|
+
export declare type GetSchemaProperty<Schema extends StorageCollectionSchema<any, any, any>, Key extends StorageSchemaPropertyName<Schema>> = StorageSchemaProperties<Schema>[Key];
|
|
48
|
+
export declare type StoragePropertySchema<BaseFields extends StorageFieldsSchema> = StorageFieldSchema | NestedStorageFieldSchema | StorageSyntheticIndexSchema<BaseFields>;
|
|
49
|
+
export declare type StoragePropertyName<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>> = Exclude<keyof Fields, number | symbol> | Exclude<keyof Synthetics, number | symbol>;
|
|
50
|
+
export declare type StorageIndexablePropertyName<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>> = Extract<keyof StorageIndexableFields<Fields>, string> | Extract<keyof Synthetics, string>;
|
|
51
|
+
export declare type StorageSchemaProperties<Schema extends StorageCollectionSchema<any, any, any>> = Schema extends StorageCollectionSchema<infer F, infer S, infer C> ? F & S & C : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../src/schema/types/collection.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CollectionSchemaCompoundIndexes, StorageCollectionSchema, StoragePropertyName } from './collection.js';
|
|
2
|
+
import { StorageFieldsSchema, StorageObjectFieldSchema } from './fields.js';
|
|
3
|
+
import { StorageSyntheticIndices } from './synthetics.js';
|
|
4
|
+
declare type OmitObjectFields<T extends StorageFieldsSchema> = {
|
|
5
|
+
[K in keyof T]: T[K] extends StorageObjectFieldSchema ? never : T[K];
|
|
6
|
+
};
|
|
7
|
+
export declare type CollectionCompoundIndex<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>> = {
|
|
8
|
+
of: StoragePropertyName<OmitObjectFields<Fields>, Synthetics>[];
|
|
9
|
+
};
|
|
10
|
+
export declare type CollectionCompoundIndices<Fields extends StorageFieldsSchema, Synthetics extends StorageSyntheticIndices<Fields>> = Record<string, CollectionCompoundIndex<Fields, Synthetics>>;
|
|
11
|
+
export declare type CollectionCompoundIndexName<Collection extends StorageCollectionSchema<any, any, any>> = Exclude<keyof CollectionSchemaCompoundIndexes<Collection>, number | symbol>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compounds.js","sourceRoot":"","sources":["../../../../src/schema/types/compounds.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare type StorageStringFieldSchema = {
|
|
2
|
+
type: 'string';
|
|
3
|
+
indexed?: boolean;
|
|
4
|
+
nullable?: boolean;
|
|
5
|
+
default?: string | (() => string);
|
|
6
|
+
};
|
|
7
|
+
export declare type StorageNumberFieldSchema = {
|
|
8
|
+
type: 'number';
|
|
9
|
+
indexed?: boolean;
|
|
10
|
+
nullable?: boolean;
|
|
11
|
+
default?: number | (() => number);
|
|
12
|
+
};
|
|
13
|
+
export declare type StorageBooleanFieldSchema = {
|
|
14
|
+
type: 'boolean';
|
|
15
|
+
nullable?: boolean;
|
|
16
|
+
default?: boolean | (() => boolean);
|
|
17
|
+
indexed?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export declare type StorageArrayFieldSchema = {
|
|
20
|
+
type: 'array';
|
|
21
|
+
items: NestedStorageFieldSchema;
|
|
22
|
+
nullable?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare type StorageObjectFieldSchema = {
|
|
25
|
+
type: 'object';
|
|
26
|
+
properties: NestedStorageFieldsSchema;
|
|
27
|
+
nullable?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare type StorageAnyFieldSchema = {
|
|
30
|
+
type: 'any';
|
|
31
|
+
default?: any;
|
|
32
|
+
};
|
|
33
|
+
export declare type StorageMapFieldSchema<V extends NestedStorageFieldSchema> = {
|
|
34
|
+
type: 'map';
|
|
35
|
+
values: V;
|
|
36
|
+
};
|
|
37
|
+
export declare type StorageFileFieldSchema = {
|
|
38
|
+
type: 'file';
|
|
39
|
+
nullable?: boolean;
|
|
40
|
+
};
|
|
41
|
+
export declare type StorageFieldSchema = StorageStringFieldSchema | StorageNumberFieldSchema | StorageBooleanFieldSchema | StorageArrayFieldSchema | StorageObjectFieldSchema | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
|
|
42
|
+
export declare type NestedStorageStringFieldSchema = {
|
|
43
|
+
type: 'string';
|
|
44
|
+
nullable?: boolean;
|
|
45
|
+
default?: string | (() => string);
|
|
46
|
+
};
|
|
47
|
+
export declare type NestedStorageNumberFieldSchema = {
|
|
48
|
+
type: 'number';
|
|
49
|
+
nullable?: boolean;
|
|
50
|
+
default?: number | (() => number);
|
|
51
|
+
};
|
|
52
|
+
export declare type NestedStorageFieldSchema = NestedStorageStringFieldSchema | NestedStorageNumberFieldSchema | StorageBooleanFieldSchema | StorageArrayFieldSchema | StorageObjectFieldSchema | StorageAnyFieldSchema | StorageMapFieldSchema<any> | StorageFileFieldSchema;
|
|
53
|
+
export declare type StorageFieldsSchema = Record<string, StorageFieldSchema>;
|
|
54
|
+
export declare type NestedStorageFieldsSchema = Record<string, NestedStorageFieldSchema>;
|
|
55
|
+
export declare type StorageIndexableFields<Fields extends StorageFieldsSchema> = {
|
|
56
|
+
[K in keyof Fields]: Fields[K] extends {
|
|
57
|
+
indexed: boolean;
|
|
58
|
+
} ? K : never;
|
|
59
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../src/schema/types/fields.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare type MatchCollectionIndexFilter = {
|
|
2
|
+
where: string;
|
|
3
|
+
equals: any;
|
|
4
|
+
order?: 'asc' | 'desc';
|
|
5
|
+
};
|
|
6
|
+
export declare type RangeCollectionIndexFilter = {
|
|
7
|
+
where: string;
|
|
8
|
+
gte?: any;
|
|
9
|
+
lte?: any;
|
|
10
|
+
gt?: any;
|
|
11
|
+
lt?: any;
|
|
12
|
+
order?: 'asc' | 'desc';
|
|
13
|
+
};
|
|
14
|
+
export declare type CollectionCompoundIndexFilter = {
|
|
15
|
+
where: string;
|
|
16
|
+
match: Record<string, any>;
|
|
17
|
+
order: 'asc' | 'desc';
|
|
18
|
+
};
|
|
19
|
+
export declare type SortIndexFilter = {
|
|
20
|
+
where: string;
|
|
21
|
+
order: 'asc' | 'desc';
|
|
22
|
+
};
|
|
23
|
+
export declare type StartsWithIndexFilter = {
|
|
24
|
+
where: string;
|
|
25
|
+
startsWith: string;
|
|
26
|
+
order?: 'asc' | 'desc';
|
|
27
|
+
};
|
|
28
|
+
export declare type CollectionIndexFilter = MatchCollectionIndexFilter | RangeCollectionIndexFilter | CollectionCompoundIndexFilter | StartsWithIndexFilter | SortIndexFilter;
|
|
29
|
+
export declare type CollectionFilter = CollectionIndexFilter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/schema/types/filters.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StorageCollectionSchema, StoragePropertySchema } from './collection.js';
|
|
2
|
+
import { NestedStorageFieldsSchema, StorageArrayFieldSchema, StorageFieldsSchema, StorageMapFieldSchema, StorageObjectFieldSchema } from './fields.js';
|
|
3
|
+
declare type StoragePropertyIsNullable<T extends StoragePropertySchema<any>> = T extends {
|
|
4
|
+
nullable?: boolean;
|
|
5
|
+
} ? T['nullable'] extends boolean ? true : false : T['type'] extends 'any' ? true : false;
|
|
6
|
+
export declare type BaseShapeFromProperty<T extends StoragePropertySchema<any>> = T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'boolean' ? boolean : T extends StorageArrayFieldSchema ? ShapeFromProperty<T['items']>[] : T extends StorageObjectFieldSchema ? ShapeFromFields<T['properties']> : T extends StorageMapFieldSchema<any> ? Record<string, ShapeFromProperty<T['values']>> : T['type'] extends 'any' ? any : T['type'] extends 'file' ? File : never;
|
|
7
|
+
export declare type ShapeFromProperty<T extends StoragePropertySchema<any>> = StoragePropertyIsNullable<T> extends true ? BaseShapeFromProperty<T> | null : BaseShapeFromProperty<T>;
|
|
8
|
+
export declare type ShapeFromFields<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
|
|
9
|
+
[K in keyof T]: ShapeFromProperty<T[K]>;
|
|
10
|
+
};
|
|
11
|
+
export declare type StorageDocument<Collection extends StorageCollectionSchema<any, any, any>> = ShapeFromFields<Collection['fields']>;
|
|
12
|
+
declare type StoragePropertyIsOptional<T extends StoragePropertySchema<any>> = StoragePropertyIsNullable<T> extends true ? true : T extends {
|
|
13
|
+
default?: any;
|
|
14
|
+
} ? true : T['type'] extends 'any' ? true : T['type'] extends 'array' ? true : T['type'] extends 'map' ? true : false;
|
|
15
|
+
declare type ShapeFromFieldsWithDefaults<T extends StorageFieldsSchema | NestedStorageFieldsSchema> = {
|
|
16
|
+
[K in keyof T as StoragePropertyIsOptional<T[K]> extends true ? K : never]?: ShapeFromProperty<T[K]>;
|
|
17
|
+
} & {
|
|
18
|
+
[K in keyof T as StoragePropertyIsOptional<T[K]> extends true ? never : K]: ShapeFromProperty<T[K]>;
|
|
19
|
+
};
|
|
20
|
+
export declare type StorageDocumentInit<Collection extends StorageCollectionSchema<any, any, any>> = ShapeFromFieldsWithDefaults<Collection['fields']>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../../src/schema/types/shapes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { StorageFieldsSchema } from './fields.js';
|
|
2
|
+
import { ShapeFromFields } from './shapes.js';
|
|
3
|
+
export declare type StorageStringSyntheticSchema<Fields extends StorageFieldsSchema> = {
|
|
4
|
+
type: 'string';
|
|
5
|
+
compute: (value: ShapeFromFields<Fields>) => string | null;
|
|
6
|
+
};
|
|
7
|
+
export declare type StorageNumberSyntheticSchema<Fields extends StorageFieldsSchema> = {
|
|
8
|
+
type: 'number';
|
|
9
|
+
compute: (value: ShapeFromFields<Fields>) => number | null;
|
|
10
|
+
};
|
|
11
|
+
export declare type StorageBooleanSyntheticSchema<Fields extends StorageFieldsSchema> = {
|
|
12
|
+
type: 'boolean';
|
|
13
|
+
compute: (value: ShapeFromFields<Fields>) => boolean | null;
|
|
14
|
+
};
|
|
15
|
+
export declare type StorageStringArraySyntheticSchema<Fields extends StorageFieldsSchema> = {
|
|
16
|
+
type: 'string[]';
|
|
17
|
+
compute: (value: ShapeFromFields<Fields>) => string[];
|
|
18
|
+
};
|
|
19
|
+
export declare type StorageNumberArraySyntheticSchema<Fields extends StorageFieldsSchema> = {
|
|
20
|
+
type: 'number[]';
|
|
21
|
+
compute: (value: ShapeFromFields<Fields>) => number[];
|
|
22
|
+
};
|
|
23
|
+
export declare type StorageBooleanArraySyntheticSchema<Fields extends StorageFieldsSchema> = {
|
|
24
|
+
type: 'boolean[]';
|
|
25
|
+
compute: (value: ShapeFromFields<Fields>) => boolean[];
|
|
26
|
+
};
|
|
27
|
+
export declare type StorageSyntheticIndices<Fields extends StorageFieldsSchema> = Record<string, StorageSyntheticIndexSchema<Fields>>;
|
|
28
|
+
export declare type StorageSyntheticIndexSchema<Fields extends StorageFieldsSchema> = StorageStringSyntheticSchema<Fields> | StorageNumberSyntheticSchema<Fields> | StorageBooleanSyntheticSchema<Fields> | StorageStringArraySyntheticSchema<Fields> | StorageNumberArraySyntheticSchema<Fields> | StorageBooleanArraySyntheticSchema<Fields>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthetics.js","sourceRoot":"","sources":["../../../../src/schema/types/synthetics.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StorageCollectionSchema } from './types/collection.js';
|
|
2
|
+
export * from './types/collection.js';
|
|
3
|
+
export * from './types/compounds.js';
|
|
4
|
+
export * from './types/fields.js';
|
|
5
|
+
export * from './types/filters.js';
|
|
6
|
+
export * from './types/shapes.js';
|
|
7
|
+
export * from './types/synthetics.js';
|
|
8
|
+
export interface StorageInit<Schemas extends StorageCollectionSchema> {
|
|
9
|
+
collections: Record<string, Schemas>;
|
|
10
|
+
}
|
|
11
|
+
export declare type StorageSchema<Collections extends {
|
|
12
|
+
[k: string]: StorageCollectionSchema;
|
|
13
|
+
} = any> = {
|
|
14
|
+
version: number;
|
|
15
|
+
collections: Collections;
|
|
16
|
+
};
|
|
17
|
+
export declare type SchemaCollectionName<Schema extends StorageSchema<any>> = Schema extends StorageSchema<infer Cs> ? Exclude<keyof Cs, number | symbol> : never;
|
|
18
|
+
export declare type SchemaCollection<Schema extends StorageSchema<any>, Name extends SchemaCollectionName<Schema>> = Schema extends StorageSchema<infer Cs> ? Cs[Name] : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/schema/types.ts"],"names":[],"mappings":"AAEA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface TimestampProvider {
|
|
2
|
+
now(version: number): string;
|
|
3
|
+
update(remoteTimestamp: string): void;
|
|
4
|
+
zero(version: number): string;
|
|
5
|
+
getWallClockTime(timestamp: string): number;
|
|
6
|
+
}
|
|
7
|
+
export declare function encodeVersion(version: number | string): string;
|
|
8
|
+
export declare function OLD_encodeVersion(version: number | string): string;
|
|
9
|
+
export declare class NaiveTimestampProvider implements TimestampProvider {
|
|
10
|
+
counter: number;
|
|
11
|
+
now: (version: number | string) => string;
|
|
12
|
+
update: () => void;
|
|
13
|
+
zero: (version: number | string) => string;
|
|
14
|
+
getWallClockTime: (timestamp: string) => number;
|
|
15
|
+
}
|
|
16
|
+
export declare class HybridLogicalClockTimestampProvider implements TimestampProvider {
|
|
17
|
+
private latest;
|
|
18
|
+
private zeroCounter;
|
|
19
|
+
now: (version: string | number) => string;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated - use now() instead and update to latest format
|
|
22
|
+
*/
|
|
23
|
+
OLD_now: (version: string | number) => string;
|
|
24
|
+
/** Get the current timer state. Does not increment counter. */
|
|
25
|
+
timerState: () => HLCTimestamp;
|
|
26
|
+
update: (remoteTimestamp: string) => void;
|
|
27
|
+
get: (version: string | number, raw: HLCTimestamp) => string;
|
|
28
|
+
zero: (version: string | number) => string;
|
|
29
|
+
getWallClockTime: (timestamp: string) => number;
|
|
30
|
+
}
|
|
31
|
+
interface HLCTimestamp {
|
|
32
|
+
time: number;
|
|
33
|
+
counter: number;
|
|
34
|
+
node: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function serializeHlcTimestamp(ts: HLCTimestamp): string;
|
|
37
|
+
export declare function deserializeHlcTimestamp(clock: string): HLCTimestamp;
|
|
38
|
+
/**
|
|
39
|
+
* Below, converters for old-style timestamps are defined.
|
|
40
|
+
* These are for migrating older clients to the new format.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Converts a timestamp from the old format to the new format.
|
|
44
|
+
*/
|
|
45
|
+
export declare function convertOldHlcTimestamp(ts: string): string;
|
|
46
|
+
export declare function OLD_serializeHlcTimestamp(ts: HLCTimestamp): string;
|
|
47
|
+
export declare function OLD_deserializeHlcTimestamp(clock: string): HLCTimestamp;
|
|
48
|
+
export {};
|