@verdant-web/common 2.1.1 → 2.3.0-next.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/dist/esm/EventSubscriber.js.map +1 -1
- package/dist/esm/batching.js.map +1 -1
- package/dist/esm/error.js +8 -2
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/indexes.js +2 -2
- package/dist/esm/indexes.js.map +1 -1
- package/dist/esm/memo.js.map +1 -1
- package/dist/esm/migration.js.map +1 -1
- package/dist/esm/oids.js.map +1 -1
- package/dist/esm/operation.js.map +1 -1
- package/dist/esm/patch.js.map +1 -1
- package/dist/esm/replica.js +1 -1
- package/dist/esm/replica.js.map +1 -1
- package/dist/esm/schema/children.js.map +1 -1
- package/dist/esm/schema/fieldHelpers.js.map +1 -1
- package/dist/esm/schema/fields.js +0 -14
- package/dist/esm/schema/fields.js.map +1 -1
- package/dist/esm/schema/index.js +1 -2
- package/dist/esm/schema/index.js.map +1 -1
- package/dist/esm/schema/validation.js.map +1 -1
- package/dist/esm/timestamp.js.map +1 -1
- package/dist/esm/timestamp.test.js.map +1 -1
- package/dist/esm/undo.js.map +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -8
- package/src/error.ts +7 -1
- package/src/indexes.ts +2 -2
- package/src/protocol.ts +1 -1
- package/src/schema/fieldHelpers.ts +5 -5
- package/src/schema/fields.ts +3 -13
- package/src/schema/index.ts +1 -2
- package/src/schema/types/compounds.ts +6 -6
- package/src/schema/types/fields.ts +8 -47
- package/src/schema/types/shapes.ts +2 -7
- package/src/schema/types/synthetics.ts +0 -1
- package/src/schema/validation.ts +2 -6
- package/dist/cjs/EventSubscriber.d.ts +0 -18
- package/dist/cjs/EventSubscriber.js +0 -70
- package/dist/cjs/EventSubscriber.js.map +0 -1
- package/dist/cjs/baseline.d.ts +0 -5
- package/dist/cjs/baseline.js +0 -3
- package/dist/cjs/baseline.js.map +0 -1
- package/dist/cjs/batching.d.ts +0 -43
- package/dist/cjs/batching.js +0 -98
- package/dist/cjs/batching.js.map +0 -1
- package/dist/cjs/error.d.ts +0 -16
- package/dist/cjs/error.js +0 -37
- package/dist/cjs/error.js.map +0 -1
- package/dist/cjs/files.d.ts +0 -19
- package/dist/cjs/files.js +0 -19
- package/dist/cjs/files.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -21
- package/dist/cjs/index.js +0 -44
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/indexes.d.ts +0 -17
- package/dist/cjs/indexes.js +0 -146
- package/dist/cjs/indexes.js.map +0 -1
- package/dist/cjs/indexes.test.d.ts +0 -1
- package/dist/cjs/indexes.test.js +0 -156
- package/dist/cjs/indexes.test.js.map +0 -1
- package/dist/cjs/memo.d.ts +0 -6
- package/dist/cjs/memo.js +0 -25
- package/dist/cjs/memo.js.map +0 -1
- package/dist/cjs/memo.test.d.ts +0 -1
- package/dist/cjs/memo.test.js +0 -29
- package/dist/cjs/memo.test.js.map +0 -1
- package/dist/cjs/migration.d.ts +0 -174
- package/dist/cjs/migration.js +0 -310
- package/dist/cjs/migration.js.map +0 -1
- package/dist/cjs/oids.d.ts +0 -101
- package/dist/cjs/oids.js +0 -466
- package/dist/cjs/oids.js.map +0 -1
- package/dist/cjs/oids.test.d.ts +0 -1
- package/dist/cjs/oids.test.js +0 -409
- package/dist/cjs/oids.test.js.map +0 -1
- package/dist/cjs/operation.d.ts +0 -142
- package/dist/cjs/operation.js +0 -549
- package/dist/cjs/operation.js.map +0 -1
- package/dist/cjs/operation.test.d.ts +0 -1
- package/dist/cjs/operation.test.js +0 -977
- package/dist/cjs/operation.test.js.map +0 -1
- package/dist/cjs/patch.d.ts +0 -28
- package/dist/cjs/patch.js +0 -230
- package/dist/cjs/patch.js.map +0 -1
- package/dist/cjs/presence.d.ts +0 -29
- package/dist/cjs/presence.js +0 -3
- package/dist/cjs/presence.js.map +0 -1
- package/dist/cjs/protocol.d.ts +0 -145
- package/dist/cjs/protocol.js +0 -4
- package/dist/cjs/protocol.js.map +0 -1
- package/dist/cjs/refs.d.ts +0 -7
- package/dist/cjs/refs.js +0 -30
- package/dist/cjs/refs.js.map +0 -1
- package/dist/cjs/replica.d.ts +0 -28
- package/dist/cjs/replica.js +0 -29
- package/dist/cjs/replica.js.map +0 -1
- package/dist/cjs/schema/children.d.ts +0 -2
- package/dist/cjs/schema/children.js +0 -24
- package/dist/cjs/schema/children.js.map +0 -1
- package/dist/cjs/schema/defaults.test.d.ts +0 -1
- package/dist/cjs/schema/defaults.test.js +0 -34
- package/dist/cjs/schema/defaults.test.js.map +0 -1
- package/dist/cjs/schema/fieldHelpers.d.ts +0 -35
- package/dist/cjs/schema/fieldHelpers.js +0 -38
- package/dist/cjs/schema/fieldHelpers.js.map +0 -1
- package/dist/cjs/schema/fields.d.ts +0 -12
- package/dist/cjs/schema/fields.js +0 -187
- package/dist/cjs/schema/fields.js.map +0 -1
- package/dist/cjs/schema/index.d.ts +0 -54
- package/dist/cjs/schema/index.js +0 -64
- package/dist/cjs/schema/index.js.map +0 -1
- package/dist/cjs/schema/indexFilters.d.ts +0 -6
- package/dist/cjs/schema/indexFilters.js +0 -31
- package/dist/cjs/schema/indexFilters.js.map +0 -1
- package/dist/cjs/schema/types/collection.d.ts +0 -23
- package/dist/cjs/schema/types/collection.js +0 -3
- package/dist/cjs/schema/types/collection.js.map +0 -1
- package/dist/cjs/schema/types/compounds.d.ts +0 -11
- package/dist/cjs/schema/types/compounds.js +0 -3
- package/dist/cjs/schema/types/compounds.js.map +0 -1
- package/dist/cjs/schema/types/fields.d.ts +0 -78
- package/dist/cjs/schema/types/fields.js +0 -3
- package/dist/cjs/schema/types/fields.js.map +0 -1
- package/dist/cjs/schema/types/filters.d.ts +0 -29
- package/dist/cjs/schema/types/filters.js +0 -3
- package/dist/cjs/schema/types/filters.js.map +0 -1
- package/dist/cjs/schema/types/shapes.d.ts +0 -24
- package/dist/cjs/schema/types/shapes.js +0 -3
- package/dist/cjs/schema/types/shapes.js.map +0 -1
- package/dist/cjs/schema/types/synthetics.d.ts +0 -37
- package/dist/cjs/schema/types/synthetics.js +0 -3
- package/dist/cjs/schema/types/synthetics.js.map +0 -1
- package/dist/cjs/schema/types.d.ts +0 -18
- package/dist/cjs/schema/types.js +0 -23
- package/dist/cjs/schema/types.js.map +0 -1
- package/dist/cjs/schema/validation.d.ts +0 -14
- package/dist/cjs/schema/validation.js +0 -158
- package/dist/cjs/schema/validation.js.map +0 -1
- package/dist/cjs/timestamp.d.ts +0 -51
- package/dist/cjs/timestamp.js +0 -254
- package/dist/cjs/timestamp.js.map +0 -1
- package/dist/cjs/timestamp.test.d.ts +0 -1
- package/dist/cjs/timestamp.test.js +0 -105
- package/dist/cjs/timestamp.test.js.map +0 -1
- package/dist/cjs/undo.d.ts +0 -3
- package/dist/cjs/undo.js +0 -201
- package/dist/cjs/undo.js.map +0 -1
- package/dist/cjs/utils.d.ts +0 -20
- package/dist/cjs/utils.js +0 -146
- package/dist/cjs/utils.js.map +0 -1
- package/dist/cjs/utils.test.d.ts +0 -1
- package/dist/cjs/utils.test.js +0 -37
- package/dist/cjs/utils.test.js.map +0 -1
- package/dist/esm/EventSubscriber.d.ts +0 -18
- package/dist/esm/baseline.d.ts +0 -5
- package/dist/esm/batching.d.ts +0 -43
- package/dist/esm/error.d.ts +0 -16
- package/dist/esm/files.d.ts +0 -19
- package/dist/esm/index.d.ts +0 -21
- package/dist/esm/indexes.d.ts +0 -17
- package/dist/esm/indexes.test.d.ts +0 -1
- package/dist/esm/memo.d.ts +0 -6
- package/dist/esm/memo.test.d.ts +0 -1
- package/dist/esm/migration.d.ts +0 -174
- package/dist/esm/oids.d.ts +0 -101
- package/dist/esm/oids.test.d.ts +0 -1
- package/dist/esm/operation.d.ts +0 -142
- package/dist/esm/operation.test.d.ts +0 -1
- package/dist/esm/patch.d.ts +0 -28
- package/dist/esm/presence.d.ts +0 -29
- package/dist/esm/protocol.d.ts +0 -145
- package/dist/esm/refs.d.ts +0 -7
- package/dist/esm/replica.d.ts +0 -28
- package/dist/esm/schema/children.d.ts +0 -2
- package/dist/esm/schema/defaults.test.d.ts +0 -1
- package/dist/esm/schema/fieldHelpers.d.ts +0 -35
- package/dist/esm/schema/fields.d.ts +0 -12
- package/dist/esm/schema/index.d.ts +0 -54
- package/dist/esm/schema/indexFilters.d.ts +0 -6
- package/dist/esm/schema/types/collection.d.ts +0 -23
- package/dist/esm/schema/types/compounds.d.ts +0 -11
- package/dist/esm/schema/types/fields.d.ts +0 -78
- package/dist/esm/schema/types/filters.d.ts +0 -29
- package/dist/esm/schema/types/shapes.d.ts +0 -24
- package/dist/esm/schema/types/synthetics.d.ts +0 -37
- package/dist/esm/schema/types.d.ts +0 -18
- package/dist/esm/schema/validation.d.ts +0 -14
- package/dist/esm/timestamp.d.ts +0 -51
- package/dist/esm/timestamp.test.d.ts +0 -1
- package/dist/esm/undo.d.ts +0 -3
- package/dist/esm/utils.d.ts +0 -20
- package/dist/esm/utils.test.d.ts +0 -1
- package/dist/tsconfig-cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/cjs/error.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isVerdantErrorResponse = exports.VerdantError = exports.VerdantErrorCode = void 0;
|
|
4
|
-
var VerdantErrorCode;
|
|
5
|
-
(function (VerdantErrorCode) {
|
|
6
|
-
VerdantErrorCode[VerdantErrorCode["Unexpected"] = 5000] = "Unexpected";
|
|
7
|
-
VerdantErrorCode[VerdantErrorCode["NoToken"] = 4010] = "NoToken";
|
|
8
|
-
VerdantErrorCode[VerdantErrorCode["InvalidToken"] = 4011] = "InvalidToken";
|
|
9
|
-
VerdantErrorCode[VerdantErrorCode["TokenExpired"] = 4012] = "TokenExpired";
|
|
10
|
-
})(VerdantErrorCode = exports.VerdantErrorCode || (exports.VerdantErrorCode = {}));
|
|
11
|
-
class VerdantError extends Error {
|
|
12
|
-
constructor(code, cause, message) {
|
|
13
|
-
super(message !== null && message !== void 0 ? message : `Verdant error: ${code}`, {
|
|
14
|
-
cause,
|
|
15
|
-
});
|
|
16
|
-
this.code = code;
|
|
17
|
-
this.toResponse = () => {
|
|
18
|
-
return JSON.stringify({
|
|
19
|
-
code: this.code,
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
get httpStatus() {
|
|
24
|
-
const status = Math.floor(this.code / 10);
|
|
25
|
-
if (status < 600) {
|
|
26
|
-
return status;
|
|
27
|
-
}
|
|
28
|
-
return 500;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.VerdantError = VerdantError;
|
|
32
|
-
VerdantError.Code = VerdantErrorCode;
|
|
33
|
-
function isVerdantErrorResponse(body) {
|
|
34
|
-
return (typeof body === 'object' && 'code' in body && typeof body.code === 'number');
|
|
35
|
-
}
|
|
36
|
-
exports.isVerdantErrorResponse = isVerdantErrorResponse;
|
|
37
|
-
//# sourceMappingURL=error.js.map
|
package/dist/cjs/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC3B,sEAAiB,CAAA;IACjB,gEAAc,CAAA;IACd,0EAAmB,CAAA;IACnB,0EAAmB,CAAA;AACpB,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;AAED,MAAa,YAAa,SAAQ,KAAK;IAGtC,YACQ,IAAsB,EAC7B,KAAyB,EACzB,OAAgB;QAEhB,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,kBAAkB,IAAI,EAAE,EAAE;YAC1C,KAAK;SACL,CAAC,CAAC;QANI,SAAI,GAAJ,IAAI,CAAkB;QAiB9B,eAAU,GAAG,GAAG,EAAE;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;aACf,CAAC,CAAC;QACJ,CAAC,CAAC;IAdF,CAAC;IAED,IAAI,UAAU;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,GAAG,EAAE;YACjB,OAAO,MAAM,CAAC;SACd;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;;AAnBF,oCA0BC;AAzBO,iBAAI,GAAG,gBAAgB,CAAC;AA2BhC,SAAgB,sBAAsB,CAAC,IAAS;IAC/C,OAAO,CACN,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAC3E,CAAC;AACH,CAAC;AAJD,wDAIC"}
|
package/dist/cjs/files.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare type FileRef = {
|
|
2
|
-
'@@type': 'file';
|
|
3
|
-
id: string;
|
|
4
|
-
};
|
|
5
|
-
export declare function isFileRef(value: any): value is FileRef;
|
|
6
|
-
export declare function createFileRef(id: string): FileRef;
|
|
7
|
-
export declare type FileData = {
|
|
8
|
-
id: string;
|
|
9
|
-
/**
|
|
10
|
-
* For locally created files, this starts false, until it's uploaded
|
|
11
|
-
* Remote files this is always true
|
|
12
|
-
*/
|
|
13
|
-
remote: boolean;
|
|
14
|
-
name: string;
|
|
15
|
-
type: string;
|
|
16
|
-
file?: Blob;
|
|
17
|
-
url?: string;
|
|
18
|
-
};
|
|
19
|
-
export declare function getAllFileFields(snapshot: any): [string, FileRef][];
|
package/dist/cjs/files.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAllFileFields = exports.createFileRef = exports.isFileRef = void 0;
|
|
4
|
-
function isFileRef(value) {
|
|
5
|
-
return value && value['@@type'] === 'file';
|
|
6
|
-
}
|
|
7
|
-
exports.isFileRef = isFileRef;
|
|
8
|
-
function createFileRef(id) {
|
|
9
|
-
return {
|
|
10
|
-
'@@type': 'file',
|
|
11
|
-
id,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
exports.createFileRef = createFileRef;
|
|
15
|
-
function getAllFileFields(snapshot) {
|
|
16
|
-
return Object.entries(snapshot).filter((entry) => isFileRef(entry[1]));
|
|
17
|
-
}
|
|
18
|
-
exports.getAllFileFields = getAllFileFields;
|
|
19
|
-
//# sourceMappingURL=files.js.map
|
package/dist/cjs/files.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/files.ts"],"names":[],"mappings":";;;AAKA,SAAgB,SAAS,CAAC,KAAU;IACnC,OAAO,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;AAC5C,CAAC;AAFD,8BAEC;AACD,SAAgB,aAAa,CAAC,EAAU;IACvC,OAAO;QACN,QAAQ,EAAE,MAAM;QAChB,EAAE;KACF,CAAC;AACH,CAAC;AALD,sCAKC;AAeD,SAAgB,gBAAgB,CAAC,QAAa;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAGlE,CAAC;AACL,CAAC;AALD,4CAKC"}
|
package/dist/cjs/index.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export * from './protocol.js';
|
|
2
|
-
export * from './timestamp.js';
|
|
3
|
-
export * from './operation.js';
|
|
4
|
-
export * from './baseline.js';
|
|
5
|
-
export * from './replica.js';
|
|
6
|
-
export * from './schema/index.js';
|
|
7
|
-
export * from './utils.js';
|
|
8
|
-
export * from './indexes.js';
|
|
9
|
-
export { migrate, migrationRange, createDefaultMigration, createMigration, } from './migration.js';
|
|
10
|
-
export type { Migration, MigrationIndexDescription, MigrationEngine, } from './migration.js';
|
|
11
|
-
export type { UserInfo } from './presence.js';
|
|
12
|
-
export * from './patch.js';
|
|
13
|
-
export * from './oids.js';
|
|
14
|
-
export * from './EventSubscriber.js';
|
|
15
|
-
export * from './undo.js';
|
|
16
|
-
export * from './batching.js';
|
|
17
|
-
export * from './files.js';
|
|
18
|
-
export type { Ref } from './refs.js';
|
|
19
|
-
export { makeObjectRef, makeFileRef, isRef, compareRefs } from './refs.js';
|
|
20
|
-
export * from './memo.js';
|
|
21
|
-
export * from './error.js';
|
package/dist/cjs/index.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.compareRefs = exports.isRef = exports.makeFileRef = exports.makeObjectRef = exports.createMigration = exports.createDefaultMigration = exports.migrationRange = exports.migrate = void 0;
|
|
18
|
-
__exportStar(require("./protocol.js"), exports);
|
|
19
|
-
__exportStar(require("./timestamp.js"), exports);
|
|
20
|
-
__exportStar(require("./operation.js"), exports);
|
|
21
|
-
__exportStar(require("./baseline.js"), exports);
|
|
22
|
-
__exportStar(require("./replica.js"), exports);
|
|
23
|
-
__exportStar(require("./schema/index.js"), exports);
|
|
24
|
-
__exportStar(require("./utils.js"), exports);
|
|
25
|
-
__exportStar(require("./indexes.js"), exports);
|
|
26
|
-
var migration_js_1 = require("./migration.js");
|
|
27
|
-
Object.defineProperty(exports, "migrate", { enumerable: true, get: function () { return migration_js_1.migrate; } });
|
|
28
|
-
Object.defineProperty(exports, "migrationRange", { enumerable: true, get: function () { return migration_js_1.migrationRange; } });
|
|
29
|
-
Object.defineProperty(exports, "createDefaultMigration", { enumerable: true, get: function () { return migration_js_1.createDefaultMigration; } });
|
|
30
|
-
Object.defineProperty(exports, "createMigration", { enumerable: true, get: function () { return migration_js_1.createMigration; } });
|
|
31
|
-
__exportStar(require("./patch.js"), exports);
|
|
32
|
-
__exportStar(require("./oids.js"), exports);
|
|
33
|
-
__exportStar(require("./EventSubscriber.js"), exports);
|
|
34
|
-
__exportStar(require("./undo.js"), exports);
|
|
35
|
-
__exportStar(require("./batching.js"), exports);
|
|
36
|
-
__exportStar(require("./files.js"), exports);
|
|
37
|
-
var refs_js_1 = require("./refs.js");
|
|
38
|
-
Object.defineProperty(exports, "makeObjectRef", { enumerable: true, get: function () { return refs_js_1.makeObjectRef; } });
|
|
39
|
-
Object.defineProperty(exports, "makeFileRef", { enumerable: true, get: function () { return refs_js_1.makeFileRef; } });
|
|
40
|
-
Object.defineProperty(exports, "isRef", { enumerable: true, get: function () { return refs_js_1.isRef; } });
|
|
41
|
-
Object.defineProperty(exports, "compareRefs", { enumerable: true, get: function () { return refs_js_1.compareRefs; } });
|
|
42
|
-
__exportStar(require("./memo.js"), exports);
|
|
43
|
-
__exportStar(require("./error.js"), exports);
|
|
44
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,gDAA8B;AAC9B,+CAA6B;AAC7B,oDAAkC;AAClC,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAKwB;AAJvB,uGAAA,OAAO,OAAA;AACP,8GAAA,cAAc,OAAA;AACd,sHAAA,sBAAsB,OAAA;AACtB,+GAAA,eAAe,OAAA;AAQhB,6CAA2B;AAC3B,4CAA0B;AAC1B,uDAAqC;AACrC,4CAA0B;AAC1B,gDAA8B;AAC9B,6CAA2B;AAE3B,qCAA2E;AAAlE,wGAAA,aAAa,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,gGAAA,KAAK,OAAA;AAAE,sGAAA,WAAW,OAAA;AACvD,4CAA0B;AAC1B,6CAA2B"}
|
package/dist/cjs/indexes.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { StorageCollectionSchema, StorageDirectSyntheticSchema } from './index.js';
|
|
2
|
-
export declare const COMPOUND_INDEX_SEPARATOR = "\uFFFFFE";
|
|
3
|
-
export declare const COMPOUND_INDEX_LOWER_BOUND_SEPARATOR = "\0";
|
|
4
|
-
export declare const COMPOUND_INDEX_UPPER_BOUND_SEPARATOR = "\uFFFFFF";
|
|
5
|
-
declare type IndexableFieldValue = string | number | boolean | any[];
|
|
6
|
-
export declare type CompoundIndexValue = string | string[];
|
|
7
|
-
export declare function createCompoundIndexValue(...fields: IndexableFieldValue[]): CompoundIndexValue;
|
|
8
|
-
export declare function createUpperBoundIndexValue(...fields: IndexableFieldValue[]): string;
|
|
9
|
-
export declare function createLowerBoundIndexValue(...fields: IndexableFieldValue[]): string;
|
|
10
|
-
export declare function isDirectSynthetic(index: any): index is StorageDirectSyntheticSchema<any>;
|
|
11
|
-
export declare function computeSynthetics(schema: StorageCollectionSchema, obj: any): Record<string, any>;
|
|
12
|
-
export declare function computeCompoundIndices(schema: StorageCollectionSchema<any, any, any>, doc: any): any;
|
|
13
|
-
export declare function getIndexValues(schema: StorageCollectionSchema<any, any, any>, doc: any): any;
|
|
14
|
-
export declare function assignIndexValues(schema: StorageCollectionSchema<any, any, any>, doc: any): any;
|
|
15
|
-
export declare const NULL_INDEX_VALUE = "null";
|
|
16
|
-
export declare function sanitizeIndexValue(value: unknown): string | number | (string | number)[];
|
|
17
|
-
export {};
|
package/dist/cjs/indexes.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sanitizeIndexValue = exports.NULL_INDEX_VALUE = exports.assignIndexValues = exports.getIndexValues = exports.computeCompoundIndices = exports.computeSynthetics = exports.isDirectSynthetic = exports.createLowerBoundIndexValue = exports.createUpperBoundIndexValue = exports.createCompoundIndexValue = exports.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR = exports.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR = exports.COMPOUND_INDEX_SEPARATOR = void 0;
|
|
4
|
-
const index_js_1 = require("./index.js");
|
|
5
|
-
// unlikely to be used unicode character
|
|
6
|
-
exports.COMPOUND_INDEX_SEPARATOR = '\uFFFFFE';
|
|
7
|
-
// 1 lower than separator
|
|
8
|
-
exports.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR = '\u0000';
|
|
9
|
-
// 1 higher than separator
|
|
10
|
-
exports.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR = '\uFFFFFF';
|
|
11
|
-
function createCompoundIndexValue(...fields) {
|
|
12
|
-
const value = expandArrayIndex(fields);
|
|
13
|
-
if (value.length === 1) {
|
|
14
|
-
return value[0];
|
|
15
|
-
}
|
|
16
|
-
return value;
|
|
17
|
-
}
|
|
18
|
-
exports.createCompoundIndexValue = createCompoundIndexValue;
|
|
19
|
-
function createUpperBoundIndexValue(...fields) {
|
|
20
|
-
return (fields.join(exports.COMPOUND_INDEX_SEPARATOR) +
|
|
21
|
-
`${exports.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR}`);
|
|
22
|
-
}
|
|
23
|
-
exports.createUpperBoundIndexValue = createUpperBoundIndexValue;
|
|
24
|
-
function createLowerBoundIndexValue(...fields) {
|
|
25
|
-
return (fields.join(exports.COMPOUND_INDEX_SEPARATOR) +
|
|
26
|
-
`${exports.COMPOUND_INDEX_SEPARATOR}${exports.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR}`);
|
|
27
|
-
}
|
|
28
|
-
exports.createLowerBoundIndexValue = createLowerBoundIndexValue;
|
|
29
|
-
/**
|
|
30
|
-
* Whenever an array value is included in a compound index, we have to expand
|
|
31
|
-
* the value to include all permutations of values in the array.
|
|
32
|
-
* For example if we had an index id + tags on a document
|
|
33
|
-
*
|
|
34
|
-
* {
|
|
35
|
-
* id: '1',
|
|
36
|
-
* tags: ['a', 'b']
|
|
37
|
-
* }
|
|
38
|
-
*
|
|
39
|
-
* we want to create an index:
|
|
40
|
-
*
|
|
41
|
-
* id_tags: ['1#a', '1#b']
|
|
42
|
-
*
|
|
43
|
-
* If multiple arrays are indexed we have to exponentially expand...
|
|
44
|
-
*
|
|
45
|
-
* id_tags_tags2: ['1#a#a', '1#a#b', '1#b#a', '1#b#b']
|
|
46
|
-
*
|
|
47
|
-
* To generalize this we construct a 2-level array of strings.
|
|
48
|
-
* Iterating over indexed values, we expand each item into N items if
|
|
49
|
-
* the current value is an array.
|
|
50
|
-
*
|
|
51
|
-
* Then we combine all nested arrays into compound index values.
|
|
52
|
-
* This will produce an array of 1 element if none of the indexed values
|
|
53
|
-
* were arrays. The caller should unwrap that.
|
|
54
|
-
*
|
|
55
|
-
* This function also deduplicates values.
|
|
56
|
-
*/
|
|
57
|
-
function expandArrayIndex(fields) {
|
|
58
|
-
let value = [[]];
|
|
59
|
-
for (const field of fields) {
|
|
60
|
-
if (Array.isArray(field)) {
|
|
61
|
-
const newValue = [];
|
|
62
|
-
for (const previousValue of value) {
|
|
63
|
-
for (const fieldValue of field) {
|
|
64
|
-
newValue.push(previousValue.concat(fieldValue));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
value = newValue;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
for (const item of value) {
|
|
71
|
-
item.push(`${field}`);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return Array.from(new Set(value.map((item) => {
|
|
76
|
-
return item.join(exports.COMPOUND_INDEX_SEPARATOR);
|
|
77
|
-
})));
|
|
78
|
-
}
|
|
79
|
-
function isDirectSynthetic(index) {
|
|
80
|
-
return !!index.field;
|
|
81
|
-
}
|
|
82
|
-
exports.isDirectSynthetic = isDirectSynthetic;
|
|
83
|
-
function computeSynthetics(schema, obj) {
|
|
84
|
-
const result = {};
|
|
85
|
-
for (const [name, property] of Object.entries(schema.indexes || {})) {
|
|
86
|
-
const index = property;
|
|
87
|
-
if (isDirectSynthetic(index)) {
|
|
88
|
-
result[name] = sanitizeIndexValue(obj[index.field]);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
result[name] = sanitizeIndexValue(index.compute(obj));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
exports.computeSynthetics = computeSynthetics;
|
|
97
|
-
function computeCompoundIndices(schema, doc) {
|
|
98
|
-
return Object.entries(schema.compounds || {}).reduce((acc, [indexKey, index]) => {
|
|
99
|
-
acc[indexKey] = createCompoundIndexValue(...index.of.map((key) => doc[key]));
|
|
100
|
-
return acc;
|
|
101
|
-
}, {});
|
|
102
|
-
}
|
|
103
|
-
exports.computeCompoundIndices = computeCompoundIndices;
|
|
104
|
-
function computeIndexedFields(schema, doc) {
|
|
105
|
-
return Object.entries(schema.fields).reduce((acc, [key, field]) => {
|
|
106
|
-
if ((0, index_js_1.isIndexed)(field)) {
|
|
107
|
-
acc[key] = sanitizeIndexValue(doc[key]);
|
|
108
|
-
}
|
|
109
|
-
return acc;
|
|
110
|
-
}, {});
|
|
111
|
-
}
|
|
112
|
-
function getIndexValues(schema, doc) {
|
|
113
|
-
const basicIndexes = Object.assign(Object.assign({ [schema.primaryKey]: doc[schema.primaryKey] }, computeIndexedFields(schema, doc)), computeSynthetics(schema, doc));
|
|
114
|
-
Object.assign(basicIndexes, computeCompoundIndices(schema, Object.assign(Object.assign({}, doc), basicIndexes)));
|
|
115
|
-
basicIndexes['@@@snapshot'] = doc;
|
|
116
|
-
return basicIndexes;
|
|
117
|
-
}
|
|
118
|
-
exports.getIndexValues = getIndexValues;
|
|
119
|
-
function assignIndexValues(schema, doc) {
|
|
120
|
-
Object.assign(doc, computeSynthetics(schema, doc));
|
|
121
|
-
Object.assign(doc, computeCompoundIndices(schema, doc));
|
|
122
|
-
return doc;
|
|
123
|
-
}
|
|
124
|
-
exports.assignIndexValues = assignIndexValues;
|
|
125
|
-
exports.NULL_INDEX_VALUE = 'null';
|
|
126
|
-
function sanitizeIndexValue(value) {
|
|
127
|
-
if (value === null) {
|
|
128
|
-
return exports.NULL_INDEX_VALUE;
|
|
129
|
-
}
|
|
130
|
-
if (typeof value === 'string' || typeof value === 'number') {
|
|
131
|
-
return value;
|
|
132
|
-
}
|
|
133
|
-
if (typeof value === 'boolean' || value === null) {
|
|
134
|
-
return `${value}`;
|
|
135
|
-
}
|
|
136
|
-
if (value === undefined) {
|
|
137
|
-
// this shouldn't happen ,but for resiliency...
|
|
138
|
-
return 'undefined';
|
|
139
|
-
}
|
|
140
|
-
if (Array.isArray(value)) {
|
|
141
|
-
return value.map(sanitizeIndexValue);
|
|
142
|
-
}
|
|
143
|
-
throw new Error(`Unsupported index value: ${value}`);
|
|
144
|
-
}
|
|
145
|
-
exports.sanitizeIndexValue = sanitizeIndexValue;
|
|
146
|
-
//# sourceMappingURL=indexes.js.map
|
package/dist/cjs/indexes.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/indexes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/cjs/indexes.test.js
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const indexes_js_1 = require("./indexes.js");
|
|
5
|
-
(0, vitest_1.describe)('compound indexes', () => {
|
|
6
|
-
(0, vitest_1.it)('can be created from two string values', () => {
|
|
7
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)('a', 'b')).toEqual(`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`);
|
|
8
|
-
});
|
|
9
|
-
(0, vitest_1.it)('can be created from two number values', () => {
|
|
10
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(1, 2)).toEqual(`1${indexes_js_1.COMPOUND_INDEX_SEPARATOR}2`);
|
|
11
|
-
});
|
|
12
|
-
(0, vitest_1.it)('can be created from an array and string value', () => {
|
|
13
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(['a', 'b'], 'c')).toEqual([
|
|
14
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
15
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
16
|
-
]);
|
|
17
|
-
});
|
|
18
|
-
(0, vitest_1.it)('can be created from a string and array of numbers', () => {
|
|
19
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)('a', [1, 2])).toEqual([
|
|
20
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}1`,
|
|
21
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}2`,
|
|
22
|
-
]);
|
|
23
|
-
});
|
|
24
|
-
(0, vitest_1.it)('can be created from an array of strings and an array of booleans', () => {
|
|
25
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(['a', 'b'], [true, false])).toEqual([
|
|
26
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
27
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
28
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
29
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
30
|
-
]);
|
|
31
|
-
});
|
|
32
|
-
(0, vitest_1.it)('remove duplicate array compound index values', () => {
|
|
33
|
-
(0, vitest_1.expect)((0, indexes_js_1.createCompoundIndexValue)(['a', 'b', 'b'], [true, false, true])).toEqual([
|
|
34
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
35
|
-
`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
36
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}true`,
|
|
37
|
-
`b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}false`,
|
|
38
|
-
]);
|
|
39
|
-
});
|
|
40
|
-
(0, vitest_1.it)('creates lower bound value for multi-value indexes', () => {
|
|
41
|
-
(0, vitest_1.expect)((0, indexes_js_1.createLowerBoundIndexValue)('a', 'b')).toEqual(`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b${indexes_js_1.COMPOUND_INDEX_SEPARATOR}${indexes_js_1.COMPOUND_INDEX_LOWER_BOUND_SEPARATOR}`);
|
|
42
|
-
});
|
|
43
|
-
(0, vitest_1.it)('creates upper bound value for multi-value indexes', () => {
|
|
44
|
-
(0, vitest_1.expect)((0, indexes_js_1.createUpperBoundIndexValue)('a', 'b')).toEqual(`a${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b${indexes_js_1.COMPOUND_INDEX_UPPER_BOUND_SEPARATOR}`);
|
|
45
|
-
}),
|
|
46
|
-
(0, vitest_1.it)('will always be grouped by the first item', () => {
|
|
47
|
-
(0, vitest_1.expect)([
|
|
48
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'b'),
|
|
49
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'c'),
|
|
50
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'd'),
|
|
51
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa', 'e'),
|
|
52
|
-
// extra nefarious!
|
|
53
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaaa', 'no!'),
|
|
54
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaaaaa ', 'no!'),
|
|
55
|
-
(0, indexes_js_1.createCompoundIndexValue)(`aaaaaa😎`, 'no!'),
|
|
56
|
-
(0, indexes_js_1.createCompoundIndexValue)(`aaaaaa😎😎`, 'no!'),
|
|
57
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaa', 'no!'),
|
|
58
|
-
(0, indexes_js_1.createCompoundIndexValue)(`aaaaaaa😎no!`, 'no!'),
|
|
59
|
-
].sort()).toEqual([
|
|
60
|
-
`aaaaaa ${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
61
|
-
`aaaaaaa😎no!${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
62
|
-
`aaaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
63
|
-
`aaaaaa😎😎${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
64
|
-
`aaaaaa😎${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
65
|
-
// this is the contiguous block of relevant values
|
|
66
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`,
|
|
67
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
68
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}d`,
|
|
69
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}e`,
|
|
70
|
-
// here ends the block
|
|
71
|
-
`aaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}no!`,
|
|
72
|
-
]);
|
|
73
|
-
});
|
|
74
|
-
(0, vitest_1.it)('will be bounded by upper and lower bound values', () => {
|
|
75
|
-
const match = 'aaaaaa';
|
|
76
|
-
const sorted = [
|
|
77
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'b'),
|
|
78
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'c'),
|
|
79
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'd'),
|
|
80
|
-
(0, indexes_js_1.createCompoundIndexValue)(match, 'e'),
|
|
81
|
-
// extra nefarious!
|
|
82
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}a`, 'no!'),
|
|
83
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match} `, 'no!'),
|
|
84
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}😎`, 'no!'),
|
|
85
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}😎😎`, 'no!'),
|
|
86
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaa', 'no!'),
|
|
87
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match}a😎no!`, 'no!'),
|
|
88
|
-
].sort();
|
|
89
|
-
const boundedBlock = sorted.filter((value) => value > (0, indexes_js_1.createLowerBoundIndexValue)(match) &&
|
|
90
|
-
value < (0, indexes_js_1.createUpperBoundIndexValue)(match));
|
|
91
|
-
(0, vitest_1.expect)(boundedBlock).toEqual([
|
|
92
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`,
|
|
93
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
94
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}d`,
|
|
95
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}e`,
|
|
96
|
-
]);
|
|
97
|
-
});
|
|
98
|
-
(0, vitest_1.it)('will be bounded by upper and lower bounds when matching multiple sections', () => {
|
|
99
|
-
const match1 = 'aaaaaa';
|
|
100
|
-
const match2 = 'bbbbbb';
|
|
101
|
-
const sorted = [
|
|
102
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'b'),
|
|
103
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'c'),
|
|
104
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'd'),
|
|
105
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, match2, 'e'),
|
|
106
|
-
// extra nefarious!
|
|
107
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}a`, match2, 'no!'),
|
|
108
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1} `, match2, 'no!'),
|
|
109
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}😎`, match2, 'no!'),
|
|
110
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}😎😎`, match2, 'no!'),
|
|
111
|
-
(0, indexes_js_1.createCompoundIndexValue)('aaa', match2, 'no!'),
|
|
112
|
-
(0, indexes_js_1.createCompoundIndexValue)(`${match1}a😎no!`, match2, 'no!'),
|
|
113
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, `${match2}a😎no!`, 'no!'),
|
|
114
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, `${match2} `, 'no!'),
|
|
115
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, ' ', 'no!'),
|
|
116
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, '\u00001', 'no!'),
|
|
117
|
-
(0, indexes_js_1.createCompoundIndexValue)(match1, '\uE007f', 'no!'),
|
|
118
|
-
].sort();
|
|
119
|
-
(0, vitest_1.expect)(sorted.filter((value) => value > (0, indexes_js_1.createLowerBoundIndexValue)(match1, match2) &&
|
|
120
|
-
value < (0, indexes_js_1.createUpperBoundIndexValue)(match1, match2))).toEqual([
|
|
121
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}b`,
|
|
122
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}c`,
|
|
123
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}d`,
|
|
124
|
-
`aaaaaa${indexes_js_1.COMPOUND_INDEX_SEPARATOR}bbbbbb${indexes_js_1.COMPOUND_INDEX_SEPARATOR}e`,
|
|
125
|
-
]);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
(0, vitest_1.describe)('all indexes', () => {
|
|
129
|
-
(0, vitest_1.it)('computes compound indexes from other indexes', () => {
|
|
130
|
-
(0, vitest_1.expect)((0, indexes_js_1.getIndexValues)({
|
|
131
|
-
name: 'test',
|
|
132
|
-
primaryKey: 'foo',
|
|
133
|
-
fields: {
|
|
134
|
-
foo: {
|
|
135
|
-
type: 'string',
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
indexes: {
|
|
139
|
-
bar: {
|
|
140
|
-
compute: (doc) => doc.foo + 'bar',
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
compounds: {
|
|
144
|
-
foobar: {
|
|
145
|
-
of: ['foo', 'bar'],
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
}, { foo: 'foo' })).toEqual({
|
|
149
|
-
foobar: 'foo' + indexes_js_1.COMPOUND_INDEX_SEPARATOR + 'foobar',
|
|
150
|
-
'@@@snapshot': { foo: 'foo' },
|
|
151
|
-
foo: 'foo',
|
|
152
|
-
bar: 'foobar',
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
//# sourceMappingURL=indexes.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.test.js","sourceRoot":"","sources":["../../src/indexes.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/memo.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memoizes the last invocation of a function with the same memo keys.
|
|
3
|
-
* As long as key identity and set doesn't change, the last computed
|
|
4
|
-
* value will be returned.
|
|
5
|
-
*/
|
|
6
|
-
export declare function memoByKeys<TRet, TKeys extends any[]>(fn: (...args: unknown[]) => TRet, getKeys: () => TKeys): (...args: unknown[]) => TRet;
|
package/dist/cjs/memo.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoByKeys = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Memoizes the last invocation of a function with the same memo keys.
|
|
6
|
-
* As long as key identity and set doesn't change, the last computed
|
|
7
|
-
* value will be returned.
|
|
8
|
-
*/
|
|
9
|
-
function memoByKeys(fn, getKeys) {
|
|
10
|
-
let cachedKeys;
|
|
11
|
-
let cachedResult;
|
|
12
|
-
return (...args) => {
|
|
13
|
-
const keys = getKeys();
|
|
14
|
-
if (cachedKeys &&
|
|
15
|
-
cachedKeys.length === keys.length &&
|
|
16
|
-
cachedKeys.every((key, i) => key === keys[i])) {
|
|
17
|
-
return cachedResult;
|
|
18
|
-
}
|
|
19
|
-
cachedKeys = [...keys];
|
|
20
|
-
cachedResult = fn(...args);
|
|
21
|
-
return cachedResult;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
exports.memoByKeys = memoByKeys;
|
|
25
|
-
//# sourceMappingURL=memo.js.map
|
package/dist/cjs/memo.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/memo.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,SAAgB,UAAU,CACzB,EAAgC,EAChC,OAAoB;IAEpB,IAAI,UAA6B,CAAC;IAClC,IAAI,YAA8B,CAAC;IACnC,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IACC,UAAU;YACV,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YACjC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAC5C;YACD,OAAO,YAAa,CAAC;SACrB;QACD,UAAU,GAAG,CAAC,GAAG,IAAI,CAAU,CAAC;QAChC,YAAY,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,OAAO,YAAY,CAAC;IACrB,CAAC,CAAC;AACH,CAAC;AAnBD,gCAmBC"}
|
package/dist/cjs/memo.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/cjs/memo.test.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const memo_js_1 = require("./memo.js");
|
|
5
|
-
(0, vitest_1.describe)('memoByKeys', () => {
|
|
6
|
-
(0, vitest_1.it)('memoizes from provided key list', () => {
|
|
7
|
-
let i = 0;
|
|
8
|
-
const a = {
|
|
9
|
-
value: 0,
|
|
10
|
-
};
|
|
11
|
-
const b = {
|
|
12
|
-
value: 0,
|
|
13
|
-
};
|
|
14
|
-
const compute = vitest_1.vi.fn(() => a.value + b.value);
|
|
15
|
-
const keys = [a, b];
|
|
16
|
-
const memoized = (0, memo_js_1.memoByKeys)(compute, () => keys);
|
|
17
|
-
(0, vitest_1.expect)(memoized()).toEqual(0);
|
|
18
|
-
(0, vitest_1.expect)(memoized()).toEqual(0);
|
|
19
|
-
// ok, change the values - but not key identities
|
|
20
|
-
a.value = 1;
|
|
21
|
-
(0, vitest_1.expect)(memoized()).toEqual(0);
|
|
22
|
-
(0, vitest_1.expect)(compute).toHaveBeenCalledOnce();
|
|
23
|
-
keys.push({ value: 0 });
|
|
24
|
-
(0, vitest_1.expect)(memoized()).toEqual(1);
|
|
25
|
-
(0, vitest_1.expect)(memoized()).toEqual(1);
|
|
26
|
-
(0, vitest_1.expect)(compute).toHaveBeenCalledTimes(2);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=memo.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memo.test.js","sourceRoot":"","sources":["../../src/memo.test.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAClD,uCAAuC;AAEvC,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,GAAG;YACT,KAAK,EAAE,CAAC;SACR,CAAC;QACF,MAAM,CAAC,GAAG;YACT,KAAK,EAAE,CAAC;SACR,CAAC;QACF,MAAM,OAAO,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,iDAAiD;QACjD,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACZ,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|