@hardkas/query-store 0.10.0-alpha → 0.11.1-alpha

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.
@@ -0,0 +1,15 @@
1
+ export interface DomainStoreJsonOptions {
2
+ filePath: string;
3
+ }
4
+ export declare class DomainStoreJson<T> {
5
+ private filePath;
6
+ private data;
7
+ constructor(options: DomainStoreJsonOptions);
8
+ private load;
9
+ private saveAll;
10
+ save(id: string, entity: T): void;
11
+ get(id: string): T | undefined;
12
+ list(): T[];
13
+ delete(id: string): boolean;
14
+ }
15
+ //# sourceMappingURL=domain-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-store.d.ts","sourceRoot":"","sources":["../src/domain-store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe,CAAC,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAiB;gBAEjB,OAAO,EAAE,sBAAsB;IAM3C,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,OAAO;IAUR,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI;IAKjC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9B,IAAI,IAAI,CAAC,EAAE;IAIX,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAOrC"}
@@ -0,0 +1,63 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ export class DomainStoreJson {
4
+ filePath;
5
+ data;
6
+ constructor(options) {
7
+ this.filePath = options.filePath;
8
+ this.data = new Map();
9
+ this.load();
10
+ }
11
+ load() {
12
+ if (!fs.existsSync(this.filePath)) {
13
+ const dir = path.dirname(this.filePath);
14
+ if (!fs.existsSync(dir)) {
15
+ fs.mkdirSync(dir, { recursive: true });
16
+ }
17
+ this.saveAll();
18
+ return;
19
+ }
20
+ try {
21
+ const raw = fs.readFileSync(this.filePath, 'utf-8');
22
+ const parsed = JSON.parse(raw, (key, value) => {
23
+ if (value && typeof value === 'object' && '__bigint__' in value) {
24
+ return BigInt(value.__bigint__);
25
+ }
26
+ return value;
27
+ });
28
+ for (const [k, v] of Object.entries(parsed)) {
29
+ this.data.set(k, v);
30
+ }
31
+ }
32
+ catch (err) {
33
+ console.error(`Failed to load DomainStoreJson at ${this.filePath}`, err);
34
+ }
35
+ }
36
+ saveAll() {
37
+ const obj = Object.fromEntries(this.data);
38
+ fs.writeFileSync(this.filePath, JSON.stringify(obj, (key, value) => {
39
+ if (typeof value === 'bigint') {
40
+ return { __bigint__: value.toString() };
41
+ }
42
+ return value;
43
+ }, 2), 'utf-8');
44
+ }
45
+ save(id, entity) {
46
+ this.data.set(id, entity);
47
+ this.saveAll();
48
+ }
49
+ get(id) {
50
+ return this.data.get(id);
51
+ }
52
+ list() {
53
+ return Array.from(this.data.values());
54
+ }
55
+ delete(id) {
56
+ const deleted = this.data.delete(id);
57
+ if (deleted) {
58
+ this.saveAll();
59
+ }
60
+ return deleted;
61
+ }
62
+ }
63
+ //# sourceMappingURL=domain-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-store.js","sourceRoot":"","sources":["../src/domain-store.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,6 @@ export * from "./db.js";
3
3
  export * from "./indexer.js";
4
4
  export * from "./backend.js";
5
5
  export * from "./ledger-appender.js";
6
+ export * from "./projection-store.js";
7
+ export * from "./domain-store.js";
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,6 @@ export * from "./db.js";
3
3
  export * from "./indexer.js";
4
4
  export * from "./backend.js";
5
5
  export * from "./ledger-appender.js";
6
+ export * from "./projection-store.js";
7
+ export * from "./domain-store.js";
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
@@ -36,7 +36,7 @@ export declare class MigrationRunner {
36
36
  }
37
37
  /**
38
38
  * Registry of all query-store migrations.
39
- * Version 1: Initial schema (Baseline 0.10.0-alpha).
39
+ * Version 1: Initial schema (Baseline 0.11.1-alpha).
40
40
  */
41
41
  export declare const MIGRATIONS: Migration[];
42
42
  //# sourceMappingURL=migrations.d.ts.map
@@ -96,7 +96,7 @@ export class MigrationRunner {
96
96
  }
97
97
  /**
98
98
  * Registry of all query-store migrations.
99
- * Version 1: Initial schema (Baseline 0.10.0-alpha).
99
+ * Version 1: Initial schema (Baseline 0.11.1-alpha).
100
100
  */
101
101
  export const MIGRATIONS = [
102
102
  {
@@ -0,0 +1,16 @@
1
+ export interface ProjectionStoreOptions {
2
+ namespace: string;
3
+ dirPath?: string;
4
+ }
5
+ export declare class ProjectionStoreJson {
6
+ private readonly namespace;
7
+ private readonly filePath;
8
+ constructor(options: ProjectionStoreOptions);
9
+ private ensureDir;
10
+ getAll(): Record<string, any>;
11
+ setAll(data: Record<string, any>): void;
12
+ get<T = any>(key: string): T | undefined;
13
+ set<T = any>(key: string, val: T): void;
14
+ update<T = any>(key: string, updater: (prev: T | undefined) => T): void;
15
+ }
16
+ //# sourceMappingURL=projection-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-store.d.ts","sourceRoot":"","sources":["../src/projection-store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,EAAE,sBAAsB;IAM3C,OAAO,CAAC,SAAS;IAOV,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAS7B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAOhC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKxC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAMvC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,IAAI;CAKjF"}
@@ -0,0 +1,48 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ export class ProjectionStoreJson {
4
+ namespace;
5
+ filePath;
6
+ constructor(options) {
7
+ this.namespace = options.namespace;
8
+ const dir = options.dirPath || path.join(process.cwd(), '.hardkas', 'projections');
9
+ this.filePath = path.join(dir, `${this.namespace}.json`);
10
+ }
11
+ ensureDir() {
12
+ const dir = path.dirname(this.filePath);
13
+ if (!fs.existsSync(dir)) {
14
+ fs.mkdirSync(dir, { recursive: true });
15
+ }
16
+ }
17
+ getAll() {
18
+ if (!fs.existsSync(this.filePath))
19
+ return {};
20
+ try {
21
+ return JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
22
+ }
23
+ catch {
24
+ return {};
25
+ }
26
+ }
27
+ setAll(data) {
28
+ this.ensureDir();
29
+ const tmp = this.filePath + '.tmp';
30
+ fs.writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf-8');
31
+ fs.renameSync(tmp, this.filePath);
32
+ }
33
+ get(key) {
34
+ const data = this.getAll();
35
+ return data[key];
36
+ }
37
+ set(key, val) {
38
+ const data = this.getAll();
39
+ data[key] = val;
40
+ this.setAll(data);
41
+ }
42
+ update(key, updater) {
43
+ const data = this.getAll();
44
+ data[key] = updater(data[key]);
45
+ this.setAll(data);
46
+ }
47
+ }
48
+ //# sourceMappingURL=projection-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-store.js","sourceRoot":"","sources":["../src/projection-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAOlC,MAAM,OAAO,mBAAmB;IACX,SAAS,CAAS;IAClB,QAAQ,CAAS;IAElC,YAAY,OAA+B;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACnF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEO,SAAS;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,IAAyB;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACnC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEM,GAAG,CAAU,GAAW;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAM,CAAC;IAC1B,CAAC;IAEM,GAAG,CAAU,GAAW,EAAE,GAAM;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAU,GAAW,EAAE,OAAmC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardkas/query-store",
3
- "version": "0.10.0-alpha",
3
+ "version": "0.11.1-alpha",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@hardkas/artifacts": "0.10.0-alpha",
16
- "@hardkas/core": "0.10.0-alpha"
15
+ "@hardkas/artifacts": "0.11.1-alpha",
16
+ "@hardkas/core": "0.11.1-alpha"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^22.10.0",