@powerhousedao/reactor 4.1.0-dev.103 → 4.1.0-dev.105

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.
Files changed (91) hide show
  1. package/dist/src/client/reactor-client.d.ts +2 -2
  2. package/dist/src/client/reactor-client.d.ts.map +1 -1
  3. package/dist/src/client/reactor-client.js +5 -5
  4. package/dist/src/client/reactor-client.js.map +1 -1
  5. package/dist/src/client/types.d.ts +4 -4
  6. package/dist/src/client/types.d.ts.map +1 -1
  7. package/dist/src/core/reactor-builder.d.ts +3 -0
  8. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  9. package/dist/src/core/reactor-builder.js +12 -56
  10. package/dist/src/core/reactor-builder.js.map +1 -1
  11. package/dist/src/core/reactor.d.ts +1 -1
  12. package/dist/src/core/reactor.d.ts.map +1 -1
  13. package/dist/src/core/reactor.js +13 -5
  14. package/dist/src/core/reactor.js.map +1 -1
  15. package/dist/src/core/types.d.ts +4 -2
  16. package/dist/src/core/types.d.ts.map +1 -1
  17. package/dist/src/executor/simple-job-executor.d.ts +1 -1
  18. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  19. package/dist/src/executor/simple-job-executor.js +5 -5
  20. package/dist/src/executor/simple-job-executor.js.map +1 -1
  21. package/dist/src/executor/util.js +1 -1
  22. package/dist/src/executor/util.js.map +1 -1
  23. package/dist/src/read-models/document-view.d.ts +0 -2
  24. package/dist/src/read-models/document-view.d.ts.map +1 -1
  25. package/dist/src/read-models/document-view.js +6 -115
  26. package/dist/src/read-models/document-view.js.map +1 -1
  27. package/dist/src/read-models/types.d.ts +3 -3
  28. package/dist/src/read-models/types.d.ts.map +1 -1
  29. package/dist/src/shared/types.d.ts +3 -0
  30. package/dist/src/shared/types.d.ts.map +1 -1
  31. package/dist/src/shared/types.js.map +1 -1
  32. package/dist/src/storage/kysely/document-indexer.d.ts +0 -2
  33. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  34. package/dist/src/storage/kysely/document-indexer.js +5 -69
  35. package/dist/src/storage/kysely/document-indexer.js.map +1 -1
  36. package/dist/src/storage/kysely/keyframe-store.d.ts.map +1 -1
  37. package/dist/src/storage/kysely/keyframe-store.js +6 -13
  38. package/dist/src/storage/kysely/keyframe-store.js.map +1 -1
  39. package/dist/src/storage/kysely/store.js +1 -1
  40. package/dist/src/storage/kysely/store.js.map +1 -1
  41. package/dist/src/storage/kysely/types.d.ts +3 -3
  42. package/dist/src/storage/kysely/types.d.ts.map +1 -1
  43. package/dist/src/storage/migrations/001_create_operation_table.d.ts +3 -0
  44. package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -0
  45. package/dist/src/storage/migrations/001_create_operation_table.js +40 -0
  46. package/dist/src/storage/migrations/001_create_operation_table.js.map +1 -0
  47. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +3 -0
  48. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +1 -0
  49. package/dist/src/storage/migrations/002_create_keyframe_table.js +27 -0
  50. package/dist/src/storage/migrations/002_create_keyframe_table.js.map +1 -0
  51. package/dist/src/storage/migrations/003_create_document_table.d.ts +3 -0
  52. package/dist/src/storage/migrations/003_create_document_table.d.ts.map +1 -0
  53. package/dist/src/storage/migrations/003_create_document_table.js +10 -0
  54. package/dist/src/storage/migrations/003_create_document_table.js.map +1 -0
  55. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +3 -0
  56. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +1 -0
  57. package/dist/src/storage/migrations/004_create_document_relationship_table.js +35 -0
  58. package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +1 -0
  59. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +3 -0
  60. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +1 -0
  61. package/dist/src/storage/migrations/005_create_indexer_state_table.js +10 -0
  62. package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +1 -0
  63. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +3 -0
  64. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +1 -0
  65. package/dist/src/storage/migrations/006_create_document_snapshot_table.js +49 -0
  66. package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +1 -0
  67. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +3 -0
  68. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +1 -0
  69. package/dist/src/storage/migrations/007_create_slug_mapping_table.js +24 -0
  70. package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +1 -0
  71. package/dist/src/storage/migrations/008_create_view_state_table.d.ts +3 -0
  72. package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -0
  73. package/dist/src/storage/migrations/008_create_view_state_table.js +9 -0
  74. package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -0
  75. package/dist/src/storage/migrations/index.d.ts +3 -0
  76. package/dist/src/storage/migrations/index.d.ts.map +1 -0
  77. package/dist/src/storage/migrations/index.js +3 -0
  78. package/dist/src/storage/migrations/index.js.map +1 -0
  79. package/dist/src/storage/migrations/migrator.d.ts +5 -0
  80. package/dist/src/storage/migrations/migrator.d.ts.map +1 -0
  81. package/dist/src/storage/migrations/migrator.js +51 -0
  82. package/dist/src/storage/migrations/migrator.js.map +1 -0
  83. package/dist/src/storage/migrations/run-migrations.d.ts +2 -0
  84. package/dist/src/storage/migrations/run-migrations.d.ts.map +1 -0
  85. package/dist/src/storage/migrations/run-migrations.js +58 -0
  86. package/dist/src/storage/migrations/run-migrations.js.map +1 -0
  87. package/dist/src/storage/migrations/types.d.ts +9 -0
  88. package/dist/src/storage/migrations/types.d.ts.map +1 -0
  89. package/dist/src/storage/migrations/types.js +2 -0
  90. package/dist/src/storage/migrations/types.js.map +1 -0
  91. package/package.json +7 -4
@@ -0,0 +1,51 @@
1
+ import { Migrator } from "kysely";
2
+ import * as migration001 from "./001_create_operation_table.js";
3
+ import * as migration002 from "./002_create_keyframe_table.js";
4
+ import * as migration003 from "./003_create_document_table.js";
5
+ import * as migration004 from "./004_create_document_relationship_table.js";
6
+ import * as migration005 from "./005_create_indexer_state_table.js";
7
+ import * as migration006 from "./006_create_document_snapshot_table.js";
8
+ import * as migration007 from "./007_create_slug_mapping_table.js";
9
+ import * as migration008 from "./008_create_view_state_table.js";
10
+ const migrations = {
11
+ "001_create_operation_table": migration001,
12
+ "002_create_keyframe_table": migration002,
13
+ "003_create_document_table": migration003,
14
+ "004_create_document_relationship_table": migration004,
15
+ "005_create_indexer_state_table": migration005,
16
+ "006_create_document_snapshot_table": migration006,
17
+ "007_create_slug_mapping_table": migration007,
18
+ "008_create_view_state_table": migration008,
19
+ };
20
+ class ProgrammaticMigrationProvider {
21
+ getMigrations() {
22
+ return Promise.resolve(migrations);
23
+ }
24
+ }
25
+ export async function runMigrations(db) {
26
+ const migrator = new Migrator({
27
+ db,
28
+ provider: new ProgrammaticMigrationProvider(),
29
+ });
30
+ const { error, results } = await migrator.migrateToLatest();
31
+ const migrationsExecuted = results?.map((result) => result.migrationName) ?? [];
32
+ if (error) {
33
+ return {
34
+ success: false,
35
+ migrationsExecuted,
36
+ error: error instanceof Error ? error : new Error("Unknown migration error"),
37
+ };
38
+ }
39
+ return {
40
+ success: true,
41
+ migrationsExecuted,
42
+ };
43
+ }
44
+ export async function getMigrationStatus(db) {
45
+ const migrator = new Migrator({
46
+ db,
47
+ provider: new ProgrammaticMigrationProvider(),
48
+ });
49
+ return await migrator.getMigrations();
50
+ }
51
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../../src/storage/migrations/migrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,YAAY,MAAM,6CAA6C,CAAC;AAC5E,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,YAAY,MAAM,kCAAkC,CAAC;AAEjE,MAAM,UAAU,GAAG;IACjB,4BAA4B,EAAE,YAAY;IAC1C,2BAA2B,EAAE,YAAY;IACzC,2BAA2B,EAAE,YAAY;IACzC,wCAAwC,EAAE,YAAY;IACtD,gCAAgC,EAAE,YAAY;IAC9C,oCAAoC,EAAE,YAAY;IAClD,+BAA+B,EAAE,YAAY;IAC7C,6BAA6B,EAAE,YAAY;CAC5C,CAAC;AAEF,MAAM,6BAA6B;IACjC,aAAa;QACX,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAe;IACjD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,EAAE;QACF,QAAQ,EAAE,IAAI,6BAA6B,EAAE;KAC9C,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;IAE5D,MAAM,kBAAkB,GACtB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAEvD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,KAAK;YACd,kBAAkB;YAClB,KAAK,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC;SACxE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAe;IACtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,EAAE;QACF,QAAQ,EAAE,IAAI,6BAA6B,EAAE;KAC9C,CAAC,CAAC;IAEH,OAAO,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run-migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-migrations.d.ts","sourceRoot":"","sources":["../../../../src/storage/migrations/run-migrations.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { Kysely } from "kysely";
2
+ import { KyselyPGlite } from "kysely-pglite";
3
+ import { runMigrations, getMigrationStatus } from "./migrator.js";
4
+ async function main() {
5
+ const command = process.argv[2];
6
+ const kyselyPGlite = await KyselyPGlite.create();
7
+ const db = new Kysely({
8
+ dialect: kyselyPGlite.dialect,
9
+ });
10
+ try {
11
+ if (command === "up" || !command) {
12
+ console.log("Running migrations...");
13
+ const result = await runMigrations(db);
14
+ if (!result.success) {
15
+ console.error("Migration failed:", result.error?.message);
16
+ process.exit(1);
17
+ }
18
+ if (result.migrationsExecuted.length === 0) {
19
+ console.log("No migrations to run - database is up to date");
20
+ }
21
+ else {
22
+ console.log(`Successfully executed ${result.migrationsExecuted.length} migration(s):`);
23
+ for (const name of result.migrationsExecuted) {
24
+ console.log(` - ${name}`);
25
+ }
26
+ }
27
+ }
28
+ else if (command === "status") {
29
+ console.log("Checking migration status...");
30
+ const migrations = await getMigrationStatus(db);
31
+ console.log("\nMigration Status:");
32
+ console.log("=================");
33
+ for (const migration of migrations) {
34
+ const status = migration.executedAt
35
+ ? `✓ Executed at ${migration.executedAt.toISOString()}`
36
+ : "○ Pending";
37
+ console.log(`${status} - ${migration.name}`);
38
+ }
39
+ }
40
+ else {
41
+ console.error(`Unknown command: ${command}`);
42
+ console.log("\nUsage:");
43
+ console.log(" pnpm migrate - Run pending migrations");
44
+ console.log(" pnpm migrate up - Run pending migrations");
45
+ console.log(" pnpm migrate status - Show migration status");
46
+ process.exit(1);
47
+ }
48
+ }
49
+ catch (error) {
50
+ console.error("Error:", error instanceof Error ? error.message : String(error));
51
+ process.exit(1);
52
+ }
53
+ finally {
54
+ await db.destroy();
55
+ }
56
+ }
57
+ void main();
58
+ //# sourceMappingURL=run-migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-migrations.js","sourceRoot":"","sources":["../../../../src/storage/migrations/run-migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Migration } from "kysely";
2
+ export type MigrationStrategy = "auto" | "manual" | "none";
3
+ export interface MigrationResult {
4
+ success: boolean;
5
+ migrationsExecuted: string[];
6
+ error?: Error;
7
+ }
8
+ export type ReactorMigration = Migration;
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/storage/migrations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/storage/migrations/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor",
3
- "version": "4.1.0-dev.103",
3
+ "version": "4.1.0-dev.105",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "url": "https://github.com/powerhouse-inc/powerhouse",
@@ -28,11 +28,12 @@
28
28
  "kysely": "^0.28.2",
29
29
  "kysely-pglite": "^0.6.1",
30
30
  "uuid": "^11.0.5",
31
- "document-drive": "4.1.0-dev.103",
32
- "document-model": "4.1.0-dev.103"
31
+ "document-model": "4.1.0-dev.105",
32
+ "document-drive": "4.1.0-dev.105"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@vitest/coverage-v8": "^3.2.4",
36
+ "tsx": "^4.19.2",
36
37
  "typescript": "^5.7.3",
37
38
  "vitest": "^3.2.4"
38
39
  },
@@ -46,6 +47,8 @@
46
47
  "bench": "vitest bench --run",
47
48
  "clean": "rimraf dist",
48
49
  "clean:node_modules": "rimraf node_modules",
49
- "claude": "pnpm build && pnpm test && npx prettier --write \"**/*.ts\" && pnpm lint"
50
+ "claude": "pnpm build && pnpm test && npx prettier --write \"**/*.ts\" && pnpm lint",
51
+ "migrate": "tsx src/storage/migrations/run-migrations.ts",
52
+ "migrate:status": "tsx src/storage/migrations/run-migrations.ts status"
50
53
  }
51
54
  }