aether-cache 0.1.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/README.md +124 -0
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +17 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/insert.d.ts +4 -0
- package/dist/cli/commands/insert.d.ts.map +1 -0
- package/dist/cli/commands/insert.js +18 -0
- package/dist/cli/commands/insert.js.map +1 -0
- package/dist/cli/commands/new-schema.d.ts +4 -0
- package/dist/cli/commands/new-schema.d.ts.map +1 -0
- package/dist/cli/commands/new-schema.js +27 -0
- package/dist/cli/commands/new-schema.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +12 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/database.d.ts +32 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +178 -0
- package/dist/database.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +55 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/collections/CollectionManager.d.ts +19 -0
- package/dist/internal/collections/CollectionManager.d.ts.map +1 -0
- package/dist/internal/collections/CollectionManager.js +102 -0
- package/dist/internal/collections/CollectionManager.js.map +1 -0
- package/dist/internal/identity/RecordIdentityManager.d.ts +8 -0
- package/dist/internal/identity/RecordIdentityManager.d.ts.map +1 -0
- package/dist/internal/identity/RecordIdentityManager.js +54 -0
- package/dist/internal/identity/RecordIdentityManager.js.map +1 -0
- package/dist/internal/indexing/IndexManager.d.ts +14 -0
- package/dist/internal/indexing/IndexManager.d.ts.map +1 -0
- package/dist/internal/indexing/IndexManager.js +65 -0
- package/dist/internal/indexing/IndexManager.js.map +1 -0
- package/dist/internal/persistence/JsonPersistenceAdapter.d.ts +20 -0
- package/dist/internal/persistence/JsonPersistenceAdapter.d.ts.map +1 -0
- package/dist/internal/persistence/JsonPersistenceAdapter.js +85 -0
- package/dist/internal/persistence/JsonPersistenceAdapter.js.map +1 -0
- package/dist/internal/platform/storagePath.d.ts +2 -0
- package/dist/internal/platform/storagePath.d.ts.map +1 -0
- package/dist/internal/platform/storagePath.js +21 -0
- package/dist/internal/platform/storagePath.js.map +1 -0
- package/dist/internal/schema/SchemaManager.d.ts +11 -0
- package/dist/internal/schema/SchemaManager.d.ts.map +1 -0
- package/dist/internal/schema/SchemaManager.js +41 -0
- package/dist/internal/schema/SchemaManager.js.map +1 -0
- package/dist/internal/validation/schema.d.ts +3 -0
- package/dist/internal/validation/schema.d.ts.map +1 -0
- package/dist/internal/validation/schema.js +27 -0
- package/dist/internal/validation/schema.js.map +1 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Collection, CollectionMetadata, CollectionName, DatabaseStore, RecordData, SchemaDefinition } from "../../types";
|
|
2
|
+
export declare class CollectionManager<TRecord extends RecordData = RecordData> {
|
|
3
|
+
private collections;
|
|
4
|
+
private readonly onCollectionChange?;
|
|
5
|
+
private readonly recordIdentityManager;
|
|
6
|
+
constructor(collections?: DatabaseStore<TRecord>["collections"], onCollectionChange?: () => void);
|
|
7
|
+
setCollections(collections: DatabaseStore<TRecord>["collections"]): void;
|
|
8
|
+
getCollections(): DatabaseStore<TRecord>["collections"];
|
|
9
|
+
createCollection(name: CollectionName, schema: SchemaDefinition, metadata?: Partial<CollectionMetadata>): Collection<TRecord>;
|
|
10
|
+
deleteCollection(name: CollectionName): boolean;
|
|
11
|
+
getCollection(name: CollectionName): Collection<TRecord>;
|
|
12
|
+
hasCollection(name: CollectionName): boolean;
|
|
13
|
+
updateSchema(name: CollectionName, schema: SchemaDefinition): Collection<TRecord>;
|
|
14
|
+
touchCollection(name: CollectionName): void;
|
|
15
|
+
private normalizeCollection;
|
|
16
|
+
private normalizeRecords;
|
|
17
|
+
private createMetadata;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CollectionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollectionManager.d.ts","sourceRoot":"","sources":["../../../src/internal/collections/CollectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAOrB,qBAAa,iBAAiB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACpE,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;gBAG5D,WAAW,GAAE,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAM,EACvD,kBAAkB,CAAC,EAAE,MAAM,IAAI;IAOjC,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI;IAcxE,cAAc,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;IAIvD,gBAAgB,CACd,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACzC,UAAU,CAAC,OAAO,CAAC;IAkBtB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAU/C,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;IAUxD,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAI5C,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC;IAYjF,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAO3C,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CollectionManager = void 0;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
const RecordIdentityManager_1 = require("../identity/RecordIdentityManager");
|
|
6
|
+
class CollectionManager {
|
|
7
|
+
collections;
|
|
8
|
+
onCollectionChange;
|
|
9
|
+
recordIdentityManager;
|
|
10
|
+
constructor(collections = {}, onCollectionChange) {
|
|
11
|
+
this.collections = collections;
|
|
12
|
+
this.onCollectionChange = onCollectionChange;
|
|
13
|
+
this.recordIdentityManager = new RecordIdentityManager_1.RecordIdentityManager();
|
|
14
|
+
}
|
|
15
|
+
setCollections(collections) {
|
|
16
|
+
this.collections = Object.keys(collections).reduce((normalizedCollections, name) => {
|
|
17
|
+
normalizedCollections[name] = this.normalizeCollection(name, collections[name]);
|
|
18
|
+
return normalizedCollections;
|
|
19
|
+
}, {});
|
|
20
|
+
this.onCollectionChange?.();
|
|
21
|
+
}
|
|
22
|
+
getCollections() {
|
|
23
|
+
return this.collections;
|
|
24
|
+
}
|
|
25
|
+
createCollection(name, schema, metadata = {}) {
|
|
26
|
+
if (this.collections[name]) {
|
|
27
|
+
throw new errors_1.CollectionExistsError(name);
|
|
28
|
+
}
|
|
29
|
+
const collection = {
|
|
30
|
+
name,
|
|
31
|
+
schema,
|
|
32
|
+
metadata: this.createMetadata(metadata),
|
|
33
|
+
records: {},
|
|
34
|
+
indexes: {},
|
|
35
|
+
};
|
|
36
|
+
this.collections[name] = collection;
|
|
37
|
+
this.onCollectionChange?.();
|
|
38
|
+
return collection;
|
|
39
|
+
}
|
|
40
|
+
deleteCollection(name) {
|
|
41
|
+
if (!this.collections[name]) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
delete this.collections[name];
|
|
45
|
+
this.onCollectionChange?.();
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
getCollection(name) {
|
|
49
|
+
const collection = this.collections[name];
|
|
50
|
+
if (!collection) {
|
|
51
|
+
throw new errors_1.CollectionNotFoundError(name);
|
|
52
|
+
}
|
|
53
|
+
return collection;
|
|
54
|
+
}
|
|
55
|
+
hasCollection(name) {
|
|
56
|
+
return Boolean(this.collections[name]);
|
|
57
|
+
}
|
|
58
|
+
updateSchema(name, schema) {
|
|
59
|
+
const collection = this.collections[name];
|
|
60
|
+
if (!collection) {
|
|
61
|
+
return this.createCollection(name, schema);
|
|
62
|
+
}
|
|
63
|
+
collection.schema = schema;
|
|
64
|
+
this.touchCollection(name);
|
|
65
|
+
return collection;
|
|
66
|
+
}
|
|
67
|
+
touchCollection(name) {
|
|
68
|
+
const collection = this.getCollection(name);
|
|
69
|
+
collection.metadata.updatedAt = new Date().toISOString();
|
|
70
|
+
collection.metadata.recordCount = Object.keys(collection.records).length;
|
|
71
|
+
this.onCollectionChange?.();
|
|
72
|
+
}
|
|
73
|
+
normalizeCollection(name, collection) {
|
|
74
|
+
const records = this.normalizeRecords(collection.records ?? {});
|
|
75
|
+
const metadata = this.createMetadata(collection.metadata);
|
|
76
|
+
metadata.recordCount = Object.keys(records).length;
|
|
77
|
+
return {
|
|
78
|
+
name: collection.name ?? name,
|
|
79
|
+
schema: collection.schema ?? {},
|
|
80
|
+
metadata,
|
|
81
|
+
records,
|
|
82
|
+
indexes: collection.indexes ?? {},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
normalizeRecords(records) {
|
|
86
|
+
return Object.keys(records).reduce((normalizedRecords, id) => {
|
|
87
|
+
normalizedRecords[id] = this.recordIdentityManager.normalizeRecord(id, records[id]);
|
|
88
|
+
return normalizedRecords;
|
|
89
|
+
}, {});
|
|
90
|
+
}
|
|
91
|
+
createMetadata(metadata = {}) {
|
|
92
|
+
const now = new Date().toISOString();
|
|
93
|
+
return {
|
|
94
|
+
createdAt: metadata.createdAt ?? now,
|
|
95
|
+
updatedAt: metadata.updatedAt ?? now,
|
|
96
|
+
recordCount: metadata.recordCount ?? 0,
|
|
97
|
+
...metadata,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.CollectionManager = CollectionManager;
|
|
102
|
+
//# sourceMappingURL=CollectionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollectionManager.js","sourceRoot":"","sources":["../../../src/internal/collections/CollectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Collection, RecordData, RecordId, StoredRecord } from "../../types";
|
|
2
|
+
export declare class RecordIdentityManager {
|
|
3
|
+
createRecord<TRecord extends RecordData>(collection: Collection<TRecord>, data: TRecord, requestedId?: RecordId): StoredRecord<TRecord>;
|
|
4
|
+
normalizeRecord<TRecord extends RecordData>(id: RecordId, record: StoredRecord<TRecord> | TRecord): StoredRecord<TRecord>;
|
|
5
|
+
private generateId;
|
|
6
|
+
private isStoredRecord;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=RecordIdentityManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordIdentityManager.d.ts","sourceRoot":"","sources":["../../../src/internal/identity/RecordIdentityManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7E,qBAAa,qBAAqB;IAChC,YAAY,CAAC,OAAO,SAAS,UAAU,EACrC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,EAC/B,IAAI,EAAE,OAAO,EACb,WAAW,CAAC,EAAE,QAAQ,GACrB,YAAY,CAAC,OAAO,CAAC;IAgBxB,eAAe,CAAC,OAAO,SAAS,UAAU,EACxC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,GACtC,YAAY,CAAC,OAAO,CAAC;IAsBxB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;CAUvB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RecordIdentityManager = void 0;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
class RecordIdentityManager {
|
|
6
|
+
createRecord(collection, data, requestedId) {
|
|
7
|
+
const id = requestedId ?? this.generateId();
|
|
8
|
+
if (collection.records[id]) {
|
|
9
|
+
throw new errors_1.DuplicateRecordIdError(id);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
id,
|
|
13
|
+
identity: {
|
|
14
|
+
primaryKey: id,
|
|
15
|
+
},
|
|
16
|
+
data,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
normalizeRecord(id, record) {
|
|
20
|
+
if (this.isStoredRecord(record)) {
|
|
21
|
+
const primaryKey = record.identity?.primaryKey ?? record.id ?? id;
|
|
22
|
+
return {
|
|
23
|
+
...record,
|
|
24
|
+
id: record.id ?? id,
|
|
25
|
+
identity: {
|
|
26
|
+
primaryKey,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
id,
|
|
32
|
+
identity: {
|
|
33
|
+
primaryKey: id,
|
|
34
|
+
},
|
|
35
|
+
data: record,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
generateId() {
|
|
39
|
+
if (typeof crypto !== "undefined" && "randomUUID" in crypto) {
|
|
40
|
+
return crypto.randomUUID();
|
|
41
|
+
}
|
|
42
|
+
return `${Date.now().toString(36)}_${Math.random()
|
|
43
|
+
.toString(36)
|
|
44
|
+
.slice(2, 12)}`;
|
|
45
|
+
}
|
|
46
|
+
isStoredRecord(record) {
|
|
47
|
+
return (record !== null &&
|
|
48
|
+
typeof record === "object" &&
|
|
49
|
+
"id" in record &&
|
|
50
|
+
"data" in record);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.RecordIdentityManager = RecordIdentityManager;
|
|
54
|
+
//# sourceMappingURL=RecordIdentityManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordIdentityManager.js","sourceRoot":"","sources":["../../../src/internal/identity/RecordIdentityManager.ts"],"names":[],"mappings":";;;AACA,yCAAsD;AAEtD,MAAa,qBAAqB;IAChC,YAAY,CACV,UAA+B,EAC/B,IAAa,EACb,WAAsB;QAEtB,MAAM,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAE5C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,+BAAsB,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,EAAE;YACF,QAAQ,EAAE;gBACR,UAAU,EAAE,EAAE;aACf;YACD,IAAI;SACL,CAAC;IACJ,CAAC;IAED,eAAe,CACb,EAAY,EACZ,MAAuC;QAEvC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;YAElE,OAAO;gBACL,GAAG,MAAM;gBACT,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE;gBACnB,QAAQ,EAAE;oBACR,UAAU;iBACX;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE;YACF,QAAQ,EAAE;gBACR,UAAU,EAAE,EAAE;aACf;YACD,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAEO,UAAU;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;aAC/C,QAAQ,CAAC,EAAE,CAAC;aACZ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACpB,CAAC;IAEO,cAAc,CACpB,MAAuC;QAEvC,OAAO,CACL,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,IAAI,IAAI,MAAM;YACd,MAAM,IAAI,MAAM,CACjB,CAAC;IACJ,CAAC;CACF;AAlED,sDAkEC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Collection, CollectionName, RecordData, RecordId, StoredRecord } from "../../types";
|
|
2
|
+
export declare class IndexManager<TRecord extends RecordData = RecordData> {
|
|
3
|
+
private indexes;
|
|
4
|
+
initializeCollection(collection: Collection<TRecord>): void;
|
|
5
|
+
ensureCollection(collection: Collection<TRecord>): void;
|
|
6
|
+
dropCollection(collectionName: CollectionName): boolean;
|
|
7
|
+
indexRecord(collectionName: CollectionName, record: StoredRecord<TRecord>): void;
|
|
8
|
+
updateRecord(collectionName: CollectionName, record: StoredRecord<TRecord>): void;
|
|
9
|
+
deleteRecord(collectionName: CollectionName, recordId: RecordId): boolean;
|
|
10
|
+
getByPrimaryKey(collectionName: CollectionName, recordId: RecordId): StoredRecord<TRecord> | undefined;
|
|
11
|
+
hasPrimaryKey(collectionName: CollectionName, recordId: RecordId): boolean;
|
|
12
|
+
private getCollectionIndexes;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=IndexManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexManager.d.ts","sourceRoot":"","sources":["../../../src/internal/indexing/IndexManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,qBAAa,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IAC/D,OAAO,CAAC,OAAO,CAA0D;IAEzE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;IAkB3D,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;IAMvD,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO;IASvD,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAKhF,YAAY,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAIjF,YAAY,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAWzE,eAAe,CACb,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,GACjB,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS;IAIpC,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAI1E,OAAO,CAAC,oBAAoB;CAc7B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IndexManager = void 0;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
class IndexManager {
|
|
6
|
+
indexes = {};
|
|
7
|
+
initializeCollection(collection) {
|
|
8
|
+
this.indexes[collection.name] = {
|
|
9
|
+
primary: {
|
|
10
|
+
name: "primary",
|
|
11
|
+
kind: "primary",
|
|
12
|
+
field: "identity.primaryKey",
|
|
13
|
+
entries: { ...collection.records },
|
|
14
|
+
},
|
|
15
|
+
secondary: {},
|
|
16
|
+
};
|
|
17
|
+
collection.indexes.primary = {
|
|
18
|
+
name: "primary",
|
|
19
|
+
kind: "primary",
|
|
20
|
+
field: "identity.primaryKey",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
ensureCollection(collection) {
|
|
24
|
+
if (!this.indexes[collection.name]) {
|
|
25
|
+
this.initializeCollection(collection);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
dropCollection(collectionName) {
|
|
29
|
+
if (!this.indexes[collectionName]) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
delete this.indexes[collectionName];
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
indexRecord(collectionName, record) {
|
|
36
|
+
const collectionIndexes = this.getCollectionIndexes(collectionName);
|
|
37
|
+
collectionIndexes.primary.entries[record.identity.primaryKey] = record;
|
|
38
|
+
}
|
|
39
|
+
updateRecord(collectionName, record) {
|
|
40
|
+
this.indexRecord(collectionName, record);
|
|
41
|
+
}
|
|
42
|
+
deleteRecord(collectionName, recordId) {
|
|
43
|
+
const collectionIndexes = this.getCollectionIndexes(collectionName);
|
|
44
|
+
if (!collectionIndexes.primary.entries[recordId]) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
delete collectionIndexes.primary.entries[recordId];
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
getByPrimaryKey(collectionName, recordId) {
|
|
51
|
+
return this.indexes[collectionName]?.primary.entries[recordId];
|
|
52
|
+
}
|
|
53
|
+
hasPrimaryKey(collectionName, recordId) {
|
|
54
|
+
return Boolean(this.getByPrimaryKey(collectionName, recordId));
|
|
55
|
+
}
|
|
56
|
+
getCollectionIndexes(collectionName) {
|
|
57
|
+
const collectionIndexes = this.indexes[collectionName];
|
|
58
|
+
if (!collectionIndexes) {
|
|
59
|
+
throw new errors_1.AetherCacheError("COLLECTION_NOT_FOUND", `Indexes for collection '${collectionName}' do not exist`);
|
|
60
|
+
}
|
|
61
|
+
return collectionIndexes;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.IndexManager = IndexManager;
|
|
65
|
+
//# sourceMappingURL=IndexManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexManager.js","sourceRoot":"","sources":["../../../src/internal/indexing/IndexManager.ts"],"names":[],"mappings":";;;AAQA,yCAAgD;AAEhD,MAAa,YAAY;IACf,OAAO,GAAuD,EAAE,CAAC;IAEzE,oBAAoB,CAAC,UAA+B;QAClD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;YAC9B,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE;aACnC;YACD,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,UAAU,CAAC,OAAO,CAAC,OAAO,GAAG;YAC3B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,qBAAqB;SAC7B,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,UAA+B;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,cAA8B;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,cAA8B,EAAE,MAA6B;QACvE,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACpE,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IACzE,CAAC;IAED,YAAY,CAAC,cAA8B,EAAE,MAA6B;QACxE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,cAA8B,EAAE,QAAkB;QAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAEpE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CACb,cAA8B,EAC9B,QAAkB;QAElB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,aAAa,CAAC,cAA8B,EAAE,QAAkB;QAC9D,OAAO,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IAEO,oBAAoB,CAC1B,cAA8B;QAE9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,yBAAgB,CACxB,sBAAsB,EACtB,2BAA2B,cAAc,gBAAgB,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAjFD,oCAiFC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DatabaseStore, RecordData, SchemaRegistration } from "../../types";
|
|
2
|
+
export interface PersistenceSnapshot<TRecord extends RecordData = RecordData> {
|
|
3
|
+
data?: DatabaseStore<TRecord>;
|
|
4
|
+
schemas?: SchemaRegistration[];
|
|
5
|
+
}
|
|
6
|
+
export declare class JsonPersistenceAdapter<TRecord extends RecordData = RecordData> {
|
|
7
|
+
private readonly storageDir;
|
|
8
|
+
private readonly dataFileName;
|
|
9
|
+
private readonly schemaFileName;
|
|
10
|
+
constructor(storageDir?: string);
|
|
11
|
+
load(): Promise<PersistenceSnapshot<TRecord>>;
|
|
12
|
+
saveData(data: DatabaseStore<TRecord>): Promise<void>;
|
|
13
|
+
saveSchemas(schemas: SchemaRegistration[]): Promise<void>;
|
|
14
|
+
save(snapshot: PersistenceSnapshot<TRecord>): Promise<void>;
|
|
15
|
+
private get dataPath();
|
|
16
|
+
private get schemaPath();
|
|
17
|
+
private readJson;
|
|
18
|
+
private writeJsonAtomic;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=JsonPersistenceAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonPersistenceAdapter.d.ts","sourceRoot":"","sources":["../../../src/internal/persistence/JsonPersistenceAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAI5E,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IAC1E,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,qBAAa,sBAAsB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;gBAEzC,UAAU,GAAE,MAA+B;IAIjD,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAY7C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjE,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,UAAU,GAErB;YAEa,QAAQ;YAoBR,eAAe;CAc9B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.JsonPersistenceAdapter = void 0;
|
|
7
|
+
const promises_1 = require("node:fs/promises");
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const errors_1 = require("../../errors");
|
|
10
|
+
const storagePath_1 = require("../platform/storagePath");
|
|
11
|
+
class JsonPersistenceAdapter {
|
|
12
|
+
storageDir;
|
|
13
|
+
dataFileName = "dataStore.json";
|
|
14
|
+
schemaFileName = "schemaStore.json";
|
|
15
|
+
constructor(storageDir = (0, storagePath_1.getDefaultStorageDir)()) {
|
|
16
|
+
this.storageDir = storageDir;
|
|
17
|
+
}
|
|
18
|
+
async load() {
|
|
19
|
+
const [data, schemas] = await Promise.all([
|
|
20
|
+
this.readJson(this.dataPath),
|
|
21
|
+
this.readJson(this.schemaPath),
|
|
22
|
+
]);
|
|
23
|
+
return {
|
|
24
|
+
data,
|
|
25
|
+
schemas,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async saveData(data) {
|
|
29
|
+
await this.writeJsonAtomic(this.dataPath, data);
|
|
30
|
+
}
|
|
31
|
+
async saveSchemas(schemas) {
|
|
32
|
+
await this.writeJsonAtomic(this.schemaPath, schemas);
|
|
33
|
+
}
|
|
34
|
+
async save(snapshot) {
|
|
35
|
+
const writes = [];
|
|
36
|
+
if (snapshot.data) {
|
|
37
|
+
writes.push(this.saveData(snapshot.data));
|
|
38
|
+
}
|
|
39
|
+
if (snapshot.schemas) {
|
|
40
|
+
writes.push(this.saveSchemas(snapshot.schemas));
|
|
41
|
+
}
|
|
42
|
+
await Promise.all(writes);
|
|
43
|
+
}
|
|
44
|
+
get dataPath() {
|
|
45
|
+
return node_path_1.default.join(this.storageDir, this.dataFileName);
|
|
46
|
+
}
|
|
47
|
+
get schemaPath() {
|
|
48
|
+
return node_path_1.default.join(this.storageDir, this.schemaFileName);
|
|
49
|
+
}
|
|
50
|
+
async readJson(filePath) {
|
|
51
|
+
try {
|
|
52
|
+
const raw = await (0, promises_1.readFile)(filePath, "utf8");
|
|
53
|
+
if (!raw.trim()) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return JSON.parse(raw);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
throw new errors_1.PersistenceError(`Failed to read '${filePath}': ${formatError(error)}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async writeJsonAtomic(filePath, value) {
|
|
66
|
+
try {
|
|
67
|
+
await (0, promises_1.mkdir)(node_path_1.default.dirname(filePath), { recursive: true });
|
|
68
|
+
const tempPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
|
|
69
|
+
const json = `${JSON.stringify(value, null, 2)}\n`;
|
|
70
|
+
await (0, promises_1.writeFile)(tempPath, json, "utf8");
|
|
71
|
+
await (0, promises_1.rename)(tempPath, filePath);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw new errors_1.PersistenceError(`Failed to write '${filePath}': ${formatError(error)}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.JsonPersistenceAdapter = JsonPersistenceAdapter;
|
|
79
|
+
function isNodeError(error) {
|
|
80
|
+
return error instanceof Error && "code" in error;
|
|
81
|
+
}
|
|
82
|
+
function formatError(error) {
|
|
83
|
+
return error instanceof Error ? error.message : String(error);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=JsonPersistenceAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonPersistenceAdapter.js","sourceRoot":"","sources":["../../../src/internal/persistence/JsonPersistenceAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storagePath.d.ts","sourceRoot":"","sources":["../../../src/internal/platform/storagePath.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,IAAI,MAAM,CAgB7C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getDefaultStorageDir = getDefaultStorageDir;
|
|
7
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
function getDefaultStorageDir() {
|
|
10
|
+
switch (process.platform) {
|
|
11
|
+
case "linux":
|
|
12
|
+
return node_path_1.default.join(node_os_1.default.homedir(), ".local", "share", "aether-cache");
|
|
13
|
+
case "win32":
|
|
14
|
+
return node_path_1.default.join(node_os_1.default.homedir(), "AppData", "Roaming", "aether-cache");
|
|
15
|
+
case "darwin":
|
|
16
|
+
return node_path_1.default.join(node_os_1.default.homedir(), "Library", "Application Support", "aether-cache");
|
|
17
|
+
default:
|
|
18
|
+
return node_path_1.default.join(node_os_1.default.homedir(), ".aether-cache");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=storagePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storagePath.js","sourceRoot":"","sources":["../../../src/internal/platform/storagePath.ts"],"names":[],"mappings":";;;;;AAGA,oDAgBC;AAnBD,sDAAyB;AACzB,0DAA6B;AAE7B,SAAgB,oBAAoB;IAClC,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACpE,KAAK,OAAO;YACV,OAAO,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACvE,KAAK,QAAQ;YACX,OAAO,mBAAI,CAAC,IAAI,CACd,iBAAE,CAAC,OAAO,EAAE,EACZ,SAAS,EACT,qBAAqB,EACrB,cAAc,CACf,CAAC;QACJ;YACE,OAAO,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RecordData, SchemaDefinition, SchemaRegistration } from "../../types";
|
|
2
|
+
import { CollectionManager } from "../collections/CollectionManager";
|
|
3
|
+
export declare class SchemaManager<TRecord extends RecordData = RecordData> {
|
|
4
|
+
private collectionManager?;
|
|
5
|
+
bindCollectionManager(collectionManager: CollectionManager<TRecord>): void;
|
|
6
|
+
registerSchema(name: string, schema: SchemaDefinition): SchemaRegistration[];
|
|
7
|
+
validate(collectionName: string, value: unknown): void;
|
|
8
|
+
getSchema(collectionName: string): SchemaRegistration | undefined;
|
|
9
|
+
listSchemas(): SchemaRegistration[];
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=SchemaManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaManager.d.ts","sourceRoot":"","sources":["../../../src/internal/schema/SchemaManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,qBAAa,aAAa,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IAChE,OAAO,CAAC,iBAAiB,CAAC,CAA6B;IAEvD,qBAAqB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI;IAI1E,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,GACvB,kBAAkB,EAAE;IAQvB,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKtD,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAajE,WAAW,IAAI,kBAAkB,EAAE;CAYpC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SchemaManager = void 0;
|
|
4
|
+
const schema_1 = require("../validation/schema");
|
|
5
|
+
class SchemaManager {
|
|
6
|
+
collectionManager;
|
|
7
|
+
bindCollectionManager(collectionManager) {
|
|
8
|
+
this.collectionManager = collectionManager;
|
|
9
|
+
}
|
|
10
|
+
registerSchema(name, schema) {
|
|
11
|
+
if (this.collectionManager) {
|
|
12
|
+
this.collectionManager.updateSchema(name, schema);
|
|
13
|
+
}
|
|
14
|
+
return this.listSchemas();
|
|
15
|
+
}
|
|
16
|
+
validate(collectionName, value) {
|
|
17
|
+
const schema = this.collectionManager?.getCollection(collectionName).schema;
|
|
18
|
+
(0, schema_1.validateRecord)(collectionName, value, schema);
|
|
19
|
+
}
|
|
20
|
+
getSchema(collectionName) {
|
|
21
|
+
const collection = this.collectionManager?.getCollection(collectionName);
|
|
22
|
+
if (!collection) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
name: collection.name,
|
|
27
|
+
schema: collection.schema,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
listSchemas() {
|
|
31
|
+
if (!this.collectionManager) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
return Object.values(this.collectionManager.getCollections()).map((collection) => ({
|
|
35
|
+
name: collection.name,
|
|
36
|
+
schema: collection.schema,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.SchemaManager = SchemaManager;
|
|
41
|
+
//# sourceMappingURL=SchemaManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaManager.js","sourceRoot":"","sources":["../../../src/internal/schema/SchemaManager.ts"],"names":[],"mappings":";;;AAOA,iDAAsD;AAEtD,MAAa,aAAa;IAChB,iBAAiB,CAA8B;IAEvD,qBAAqB,CAAC,iBAA6C;QACjE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,cAAc,CACZ,IAAY,EACZ,MAAwB;QAExB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,cAAsB,EAAE,KAAc;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;QAC5E,IAAA,uBAAc,EAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,cAAsB;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;QAEzE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAC/D,CAAC,UAA+B,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAhDD,sCAgDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/internal/validation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,IAAI,CA4BN"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateRecord = validateRecord;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
function validateRecord(collectionName, value, schema) {
|
|
6
|
+
if (!schema) {
|
|
7
|
+
throw new errors_1.SchemaNotFoundError(collectionName);
|
|
8
|
+
}
|
|
9
|
+
if (!isPlainObject(value)) {
|
|
10
|
+
throw new errors_1.ValidationError("Record value must be a plain object");
|
|
11
|
+
}
|
|
12
|
+
const record = value;
|
|
13
|
+
const missingKeys = Object.keys(schema).filter((key) => !(key in record));
|
|
14
|
+
if (missingKeys.length > 0) {
|
|
15
|
+
throw new errors_1.ValidationError(`Validation failed: missing required field(s): ${missingKeys.join(", ")}`);
|
|
16
|
+
}
|
|
17
|
+
const invalidTypes = Object.entries(schema)
|
|
18
|
+
.filter(([key, expectedType]) => typeof record[key] !== expectedType)
|
|
19
|
+
.map(([key, expectedType]) => `Field '${key}' expected ${expectedType}, received ${typeof record[key]}`);
|
|
20
|
+
if (invalidTypes.length > 0) {
|
|
21
|
+
throw new errors_1.ValidationError(invalidTypes.join("; "));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function isPlainObject(value) {
|
|
25
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/internal/validation/schema.ts"],"names":[],"mappings":";;AAGA,wCAgCC;AAlCD,yCAAoE;AAEpE,SAAgB,cAAc,CAC5B,cAAsB,EACtB,KAAc,EACd,MAAoC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,4BAAmB,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,wBAAe,CAAC,qCAAqC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IAE1E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,wBAAe,CACvB,iDAAiD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC;SACpE,GAAG,CACF,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,EAAE,CACtB,UAAU,GAAG,cAAc,YAAY,cAAc,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5E,CAAC;IAEJ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,wBAAe,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type PrimitiveSchemaType = "string" | "number" | "boolean" | "object";
|
|
2
|
+
export type SchemaDefinition = Record<string, PrimitiveSchemaType>;
|
|
3
|
+
export type RecordId = string;
|
|
4
|
+
export type CollectionName = string;
|
|
5
|
+
export interface AetherCacheOptions {
|
|
6
|
+
persist?: boolean;
|
|
7
|
+
storageDir?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RecordIdentity {
|
|
10
|
+
primaryKey: RecordId;
|
|
11
|
+
}
|
|
12
|
+
export type RecordData = object;
|
|
13
|
+
export interface StoredRecord<TRecord extends RecordData = RecordData> {
|
|
14
|
+
id: RecordId;
|
|
15
|
+
identity: RecordIdentity;
|
|
16
|
+
data: TRecord;
|
|
17
|
+
}
|
|
18
|
+
export type IndexKind = "primary" | "secondary";
|
|
19
|
+
export interface IndexMetadata {
|
|
20
|
+
name: string;
|
|
21
|
+
kind: IndexKind;
|
|
22
|
+
field: string;
|
|
23
|
+
}
|
|
24
|
+
export interface PrimaryKeyIndex<TRecord extends RecordData = RecordData> {
|
|
25
|
+
name: string;
|
|
26
|
+
kind: "primary";
|
|
27
|
+
field: "identity.primaryKey";
|
|
28
|
+
entries: Record<RecordId, StoredRecord<TRecord>>;
|
|
29
|
+
}
|
|
30
|
+
export interface CollectionIndexes<TRecord extends RecordData = RecordData> {
|
|
31
|
+
primary: PrimaryKeyIndex<TRecord>;
|
|
32
|
+
secondary: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
export interface CollectionMetadata {
|
|
35
|
+
createdAt: string;
|
|
36
|
+
updatedAt: string;
|
|
37
|
+
recordCount: number;
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
export interface Collection<TRecord extends RecordData = RecordData> {
|
|
41
|
+
name: CollectionName;
|
|
42
|
+
schema: SchemaDefinition;
|
|
43
|
+
metadata: CollectionMetadata;
|
|
44
|
+
records: Record<RecordId, StoredRecord<TRecord>>;
|
|
45
|
+
indexes: Record<string, IndexMetadata>;
|
|
46
|
+
}
|
|
47
|
+
export interface DatabaseStore<TRecord extends RecordData = RecordData> {
|
|
48
|
+
collections: Record<CollectionName, Collection<TRecord>>;
|
|
49
|
+
}
|
|
50
|
+
export interface SchemaRegistration {
|
|
51
|
+
name: CollectionName;
|
|
52
|
+
schema: SchemaDefinition;
|
|
53
|
+
}
|
|
54
|
+
export type FilterPredicate<TRecord extends RecordData> = (record: TRecord & {
|
|
55
|
+
id: RecordId;
|
|
56
|
+
}) => boolean;
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,QAAQ,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACnE,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACxE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACjE,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU;IACpE,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,UAAU,IAAI,CACxD,MAAM,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,QAAQ,CAAA;CAAE,KAC/B,OAAO,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|