hikoutei 0.5.20 → 0.5.21

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 (92) hide show
  1. package/dist/adapter/persistence/contracts/scalar.d.ts +34 -0
  2. package/dist/adapter/persistence/contracts/scalar.d.ts.map +1 -1
  3. package/dist/adapter/persistence/contracts/scalar.js +6 -1
  4. package/dist/adapter/persistence/contracts/scalar.js.map +1 -1
  5. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.d.ts +19 -20
  6. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.d.ts.map +1 -1
  7. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js +117 -67
  8. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js.map +1 -1
  9. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedRuntime.d.ts +31 -0
  10. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedRuntime.d.ts.map +1 -0
  11. package/dist/adapter/persistence/providers/mikro-orm/engine/{MikroOrmMappedTypedSheets.js → MikroOrmMappedRuntime.js} +10 -31
  12. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedRuntime.js.map +1 -0
  13. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js.map +1 -1
  14. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js.map +1 -1
  15. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarStorage.d.ts +12 -0
  16. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarStorage.d.ts.map +1 -0
  17. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarStorage.js +20 -0
  18. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarStorage.js.map +1 -0
  19. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts +2 -7
  20. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts.map +1 -1
  21. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js +5 -11
  22. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js.map +1 -1
  23. package/dist/api/Hikoutei.d.ts.map +1 -1
  24. package/dist/api/Hikoutei.js +3 -4
  25. package/dist/api/Hikoutei.js.map +1 -1
  26. package/dist/api/errors.d.ts +2 -0
  27. package/dist/api/errors.d.ts.map +1 -1
  28. package/dist/api/errors.js +2 -0
  29. package/dist/api/errors.js.map +1 -1
  30. package/dist/api/internalEntityManager.d.ts.map +1 -1
  31. package/dist/api/internalEntityManager.js +31 -9
  32. package/dist/api/internalEntityManager.js.map +1 -1
  33. package/dist/application/orm/mapping/contracts.d.ts +8 -3
  34. package/dist/application/orm/mapping/contracts.d.ts.map +1 -1
  35. package/dist/application/orm/mapping/values.d.ts +2 -0
  36. package/dist/application/orm/mapping/values.d.ts.map +1 -1
  37. package/dist/application/orm/mapping/values.js +10 -3
  38. package/dist/application/orm/mapping/values.js.map +1 -1
  39. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +2 -2
  40. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
  41. package/dist/application/orm/persistence/flush/flushCoordinator.js +9 -16
  42. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
  43. package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts.map +1 -1
  44. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +26 -13
  45. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -1
  46. package/dist/application/orm/persistence/projection/projectionEffects.d.ts +2 -2
  47. package/dist/application/orm/persistence/projection/projectionEffects.d.ts.map +1 -1
  48. package/dist/application/orm/persistence/projection/projectionEffects.js +6 -6
  49. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -1
  50. package/dist/application/orm/persistence/scalar/unitOfWork.d.ts +21 -2
  51. package/dist/application/orm/persistence/scalar/unitOfWork.d.ts.map +1 -1
  52. package/dist/application/orm/persistence/scalar/unitOfWork.js +107 -8
  53. package/dist/application/orm/persistence/scalar/unitOfWork.js.map +1 -1
  54. package/dist/application/orm/persistence/support/contracts.d.ts +6 -6
  55. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -1
  56. package/dist/application/orm/persistence/support/contracts.js +0 -2
  57. package/dist/application/orm/persistence/support/contracts.js.map +1 -1
  58. package/dist/application/orm/persistence/support/helpers.d.ts +3 -3
  59. package/dist/application/orm/persistence/support/helpers.d.ts.map +1 -1
  60. package/dist/application/orm/persistence/support/helpers.js +12 -9
  61. package/dist/application/orm/persistence/support/helpers.js.map +1 -1
  62. package/dist/application/orm/persistence/support/timing.d.ts +2 -2
  63. package/dist/application/orm/persistence/support/timing.d.ts.map +1 -1
  64. package/dist/application/orm/persistence/support/timing.js +4 -4
  65. package/dist/application/orm/persistence/support/timing.js.map +1 -1
  66. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
  67. package/dist/application/sync/service/SyncServiceBootstrap.js +3 -3
  68. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
  69. package/package.json +1 -1
  70. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts +0 -55
  71. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts.map +0 -1
  72. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js +0 -120
  73. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js.map +0 -1
  74. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +0 -56
  75. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +0 -1
  76. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js.map +0 -1
  77. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts +0 -38
  78. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts.map +0 -1
  79. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js +0 -57
  80. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js.map +0 -1
  81. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts +0 -19
  82. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts.map +0 -1
  83. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js +0 -67
  84. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js.map +0 -1
  85. package/dist/application/orm/api/TypedSheetsOrm.d.ts +0 -71
  86. package/dist/application/orm/api/TypedSheetsOrm.d.ts.map +0 -1
  87. package/dist/application/orm/api/TypedSheetsOrm.js +0 -116
  88. package/dist/application/orm/api/TypedSheetsOrm.js.map +0 -1
  89. package/dist/application/orm/api/contracts.d.ts +0 -118
  90. package/dist/application/orm/api/contracts.d.ts.map +0 -1
  91. package/dist/application/orm/api/contracts.js +0 -21
  92. package/dist/application/orm/api/contracts.js.map +0 -1
@@ -1,120 +0,0 @@
1
- /**
2
- * MikroORM EntityManager bridge for the adapter-neutral typed-sheets engine.
3
- *
4
- * Stateful delegation stays in this class. Changeset normalization is kept in
5
- * `MikroOrmFlushChanges.ts` so the lifecycle contract can be tested separately
6
- * from transaction and identity-map behavior.
7
- */
8
- import { collectMikroOrmFlushChanges } from "../storage/MikroOrmFlushChanges.js";
9
- /**
10
- * Adapts one forked MikroORM manager to the typed-sheets engine contract.
11
- *
12
- * The subscriber is scoped to this manager instance and ignores events from
13
- * other forks, preventing a request-local flush plan from leaking across
14
- * identity maps or transactions.
15
- */
16
- export class MikroOrmSqliteTypedSheetsEntityManager {
17
- storage;
18
- entityManager;
19
- flushListener;
20
- constructor(storage, entityManager) {
21
- this.storage = storage;
22
- this.entityManager = entityManager;
23
- this.entityManager.getEventManager().registerSubscriber({
24
- onFlush: async (args) => this.coordinateFlush(args),
25
- });
26
- }
27
- /** Creates a manager with an independent MikroORM identity map. */
28
- fork(options) {
29
- const forked = options?.clear === undefined
30
- ? this.entityManager.fork()
31
- : this.entityManager.fork({ clear: options.clear });
32
- return new MikroOrmSqliteTypedSheetsEntityManager(this.storage, forked);
33
- }
34
- /** Delegates entity construction while keeping MikroORM types inside the adapter. */
35
- create(entityName, data) {
36
- if (typeof entityName === "string") {
37
- const metadata = this.entityManager.getMetadata().getByUniqueName(entityName);
38
- return this.entityManager.create(metadata.class, this.toMikroData(data), { partial: true });
39
- }
40
- return this.entityManager.create(entityName, this.toMikroData(data), { partial: true });
41
- }
42
- /** Converts public partial data into the untyped provider data boundary. */
43
- toMikroData(data) {
44
- return Object.fromEntries(Object.entries(data));
45
- }
46
- /** Reads a filtered entity collection through the local SQLite manager. */
47
- async find(entityName, where, options) {
48
- if (typeof entityName === "string") {
49
- const metadata = this.entityManager.getMetadata().getByUniqueName(entityName);
50
- return this.entityManager.find(metadata.class, where, options);
51
- }
52
- return this.entityManager.find(entityName, where, options);
53
- }
54
- /** Reads one filtered entity through the local SQLite manager. */
55
- async findOne(entityName, where, options) {
56
- if (typeof entityName === "string") {
57
- const metadata = this.entityManager.getMetadata().getByUniqueName(entityName);
58
- return this.entityManager.findOne(metadata.class, where, options);
59
- }
60
- return this.entityManager.findOne(entityName, where, options);
61
- }
62
- /** Marks one or more entities for MikroORM insertion or update. */
63
- persist(entity) {
64
- this.entityManager.persist(entity);
65
- }
66
- /** Marks one or more entities for MikroORM removal. */
67
- remove(entity) {
68
- this.entityManager.remove(entity);
69
- }
70
- /** Flushes the current MikroORM unit of work. */
71
- async flush() {
72
- await this.entityManager.flush();
73
- }
74
- /** Runs work through MikroORM's transaction boundary. */
75
- async transactional(operation) {
76
- return this.entityManager.transactional(async (transactionalEntityManager) => {
77
- return operation(new MikroOrmSqliteTypedSheetsEntityManager(this.storage, transactionalEntityManager));
78
- });
79
- }
80
- /** Clears MikroORM's request-local identity map. */
81
- clear() {
82
- this.entityManager.clear();
83
- }
84
- /** Reports whether this manager already owns a SQLite transaction. */
85
- isInTransaction() {
86
- return this.entityManager.isInTransaction();
87
- }
88
- /** Opens the explicit SQLite transaction used by the public facade. */
89
- async begin() {
90
- await this.entityManager.begin();
91
- }
92
- /** Commits the explicit SQLite transaction used by the public facade. */
93
- async commit() {
94
- await this.entityManager.commit();
95
- }
96
- /** Rolls back the explicit SQLite transaction used by the public facade. */
97
- async rollback() {
98
- await this.entityManager.rollback();
99
- }
100
- /** Stores the planner that must share this manager's flush transaction. */
101
- onFlush(listener) {
102
- this.flushListener = listener;
103
- }
104
- /** Converts a MikroORM flush event into one typed-sheets planning callback. */
105
- async coordinateFlush(args) {
106
- if (args.em !== this.entityManager)
107
- return;
108
- const listener = this.flushListener;
109
- if (listener === undefined)
110
- return;
111
- const changes = collectMikroOrmFlushChanges(args);
112
- if (changes.length === 0)
113
- return;
114
- await listener({
115
- changes,
116
- sql: this.storage.createSqlExecutor(this.entityManager),
117
- });
118
- }
119
- }
120
- //# sourceMappingURL=MikroOrmTypedSheetsEntityManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmTypedSheetsEntityManager.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- /**
2
- * MikroORM convenience entrypoints for the built-in entity-to-Sheets mapping.
3
- *
4
- * The public `TypedSheetsOrm` remains ours. This module only chooses MikroORM
5
- * as the current SQLite execution engine and performs the mapping registry
6
- * setup before the application begins calling `em.persist()` and `em.flush()`.
7
- */
8
- import { type TypedSheetsEntityMapping, type TypedSheetsEntityMappingRegistry } from "../../../../../application/orm/mapping/entityMapping.js";
9
- import type { MappedFlushSyncHook, RegisteredTypedSheetsMappedProjection, TypedSheetsEntityWriterOptions } from "../../../../../application/orm/persistence/support/contracts.js";
10
- import type { TypedSheetsOrm } from "../../../../../application/orm/api/TypedSheetsOrm.js";
11
- import type { RegisteredSyncProjectionDefinition } from "../../../../../application/sync/sheetsContract/sheetsProvisioning.js";
12
- import { type InitializeMikroOrmSqliteAdapterOptions, type MikroOrmSqliteAdapter } from "../storage/MikroOrmSqliteAdapter.js";
13
- /** Options for creating a mapped public ORM around an existing MikroORM SQLite adapter. */
14
- export interface CreateMappedTypedSheetsOrmOptions {
15
- readonly mappings: TypedSheetsEntityMappingRegistry | readonly TypedSheetsEntityMapping[];
16
- readonly writer: TypedSheetsEntityWriterOptions;
17
- /**
18
- * Internal sync behavior injected into the mapped flush transaction.
19
- *
20
- * Never part of the root application contract; the sync service bootstrap
21
- * supplies it so NEEDS_REBASE audits and implicit system-wins resolution
22
- * stay atomic with entity/canonical/outbox writes.
23
- */
24
- readonly syncFlushHook?: MappedFlushSyncHook;
25
- }
26
- /** Options for opening, migrating, registering, and mapping a dedicated SQLite runtime. */
27
- export interface InitializeMappedTypedSheetsOrmOptions extends InitializeMikroOrmSqliteAdapterOptions, CreateMappedTypedSheetsOrmOptions {
28
- /**
29
- * Optional internal hook invoked after local registry writes succeed.
30
- *
31
- * The hook receives the exact generated projection definitions so the sync
32
- * service can provision a remote provider without duplicating route metadata.
33
- */
34
- readonly onRegisteredProjections?: (definitions: readonly RegisteredSyncProjectionDefinition[]) => Promise<void>;
35
- }
36
- /** Internal mapped runtime resources shared by the ORM facade and sync worker. */
37
- export interface InitializedMappedTypedSheetsRuntime {
38
- readonly storage: MikroOrmSqliteAdapter;
39
- readonly orm: TypedSheetsOrm;
40
- readonly mappings: TypedSheetsEntityMappingRegistry;
41
- readonly registrations: readonly RegisteredTypedSheetsMappedProjection[];
42
- }
43
- /**
44
- * Creates the public typed-sheets EntityManager facade with its built-in
45
- * canonical/outbox planner. Mapping routes must already be registered.
46
- */
47
- export declare function createMappedTypedSheetsOrm(storage: MikroOrmSqliteAdapter, options: CreateMappedTypedSheetsOrmOptions): TypedSheetsOrm;
48
- /**
49
- * Opens a dedicated MikroORM SQLite runtime ready for mapped entity lifecycle work.
50
- *
51
- * Startup performs non-destructive entity/schema migration and idempotent local
52
- * projection registration. Remote provider-side provisioning remains explicit so
53
- * a process cannot mutate a spreadsheet merely by opening its local database.
54
- */
55
- export declare function initializeMappedTypedSheetsRuntime(options: InitializeMappedTypedSheetsOrmOptions): Promise<InitializedMappedTypedSheetsRuntime>;
56
- //# sourceMappingURL=MikroOrmMappedTypedSheets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmMappedTypedSheets.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACtC,MAAM,yDAAyD,CAAC;AACjE,OAAO,KAAK,EACV,mBAAmB,EACnB,qCAAqC,EACrC,8BAA8B,EAC/B,MAAM,iEAAiE,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,sEAAsE,CAAC;AAI/H,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAG7C,2FAA2F;AAC3F,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,GAAG,SAAS,wBAAwB,EAAE,CAAC;IAC1F,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CAC9C;AAED,2FAA2F;AAC3F,MAAM,WAAW,qCACf,SAAQ,sCAAsC,EAAE,iCAAiC;IACjF;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CACjC,WAAW,EAAE,SAAS,kCAAkC,EAAE,KACvD,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,qCAAqC,EAAE,CAAC;CAC1E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,iCAAiC,GACzC,cAAc,CAShB;AAED;;;;;;GAMG;AACH,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,mCAAmC,CAAC,CA8B9C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmMappedTypedSheets.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,0CAA0C,EAC1C,iCAAiC,EACjC,uCAAuC,GACxC,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EACL,sCAAsC,GAGvC,MAAM,yDAAyD,CAAC;AAQjE,OAAO,EACL,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,+BAA+B,GAGhC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAsCxF;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAA8B,EAC9B,OAA0C;IAE1C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,oBAAoB,CAAC,OAAO,EAAE;QACnC,gBAAgB,EAAE,uCAAuC,CAAC;YACxD,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;SACzF,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,OAA8C;IAE9C,MAAM,EACJ,QAAQ,EAAE,aAAa,EACvB,MAAM,EACN,uBAAuB,EACvB,aAAa,EACb,GAAG,cAAc,EAClB,GAAG,OAAO,CAAC;IACZ,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,kCAAkC,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,MAAM,iCAAiC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzF,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,uBAAuB,CAAC,0CAA0C,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO;YACL,OAAO;YACP,GAAG,EAAE,0BAA0B,CAAC,OAAO,EAAE;gBACvC,QAAQ;gBACR,MAAM;gBACN,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;aAC1D,CAAC;YACF,QAAQ;YACR,aAAa;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,KAA6E;IAE7E,IAAI,kBAAkB,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,sCAAsC,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC"}
@@ -1,38 +0,0 @@
1
- /**
2
- * MikroORM implementation of the replaceable typed-sheets entity engine.
3
- *
4
- * This module owns engine construction and shutdown only. EntityManager
5
- * delegation and changeset normalization live in focused adapter modules.
6
- */
7
- import type { TypedSheetsEntityEngine, TypedSheetsEntityEngineManager } from "../../../../../application/orm/api/contracts.js";
8
- import type { CreateTypedSheetsOrmOptions, TypedSheetsOrm } from "../../../../../application/orm/api/TypedSheetsOrm.js";
9
- import { type InitializeMikroOrmSqliteAdapterOptions, type MikroOrmSqliteAdapter } from "../storage/MikroOrmSqliteAdapter.js";
10
- /** Options for initializing a dedicated typed-sheets SQLite ORM instance. */
11
- export interface InitializeTypedSheetsOrmOptions extends InitializeMikroOrmSqliteAdapterOptions {
12
- /** Plans canonical and Sheets outbox work for every durable entity flush. */
13
- readonly flushCoordinator: CreateTypedSheetsOrmOptions["flushCoordinator"];
14
- }
15
- /**
16
- * Wraps the MikroORM SQLite adapter as our replaceable entity execution engine.
17
- *
18
- * A future Drizzle or another ORM implementation only needs to implement the
19
- * same typed-sheets engine contract; application lifecycle calls stay stable.
20
- */
21
- export declare class MikroOrmSqliteTypedSheetsEngine implements TypedSheetsEntityEngine {
22
- private readonly storage;
23
- constructor(storage: MikroOrmSqliteAdapter);
24
- /** Opens a MikroORM-backed manager behind the typed-sheets engine boundary. */
25
- fork(): TypedSheetsEntityEngineManager;
26
- /** Closes the dedicated MikroORM SQLite connection. */
27
- close(force?: boolean): Promise<void>;
28
- }
29
- /** Creates the replaceable typed-sheets engine backed by one SQLite adapter. */
30
- export declare function createMikroOrmSqliteTypedSheetsEngine(storage: MikroOrmSqliteAdapter): MikroOrmSqliteTypedSheetsEngine;
31
- /** Creates our public entity facade around an existing MikroORM SQLite adapter. */
32
- export declare function createTypedSheetsOrm(storage: MikroOrmSqliteAdapter, options: CreateTypedSheetsOrmOptions): TypedSheetsOrm;
33
- /**
34
- * Opens and migrates a dedicated SQLite runtime, then returns our public ORM
35
- * facade. Startup cleanup closes the adapter if migration or construction fails.
36
- */
37
- export declare function initializeTypedSheetsOrm(options: InitializeTypedSheetsOrmOptions): Promise<TypedSheetsOrm>;
38
- //# sourceMappingURL=MikroOrmTypedSheetsEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmTypedSheetsEngine.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EACV,2BAA2B,EAC3B,cAAc,EACf,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAG7C,6EAA6E;AAC7E,MAAM,WAAW,+BAAgC,SAAQ,sCAAsC;IAC7F,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;CAC5E;AAED;;;;;GAKG;AACH,qBAAa,+BAAgC,YAAW,uBAAuB;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAE3D,+EAA+E;IAC/E,IAAI,IAAI,8BAA8B;IAOtC,uDAAuD;IACjD,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1C;AAED,gFAAgF;AAChF,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,qBAAqB,GAC7B,+BAA+B,CAEjC;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAEhB;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,cAAc,CAAC,CAazB"}
@@ -1,57 +0,0 @@
1
- /**
2
- * MikroORM implementation of the replaceable typed-sheets entity engine.
3
- *
4
- * This module owns engine construction and shutdown only. EntityManager
5
- * delegation and changeset normalization live in focused adapter modules.
6
- */
7
- import { createTypedSheetsOrm as createTypedSheetsOrmFacade } from "../../../../../application/orm/api/TypedSheetsOrm.js";
8
- import { initializeMikroOrmSqliteAdapter, } from "../storage/MikroOrmSqliteAdapter.js";
9
- import { MikroOrmSqliteTypedSheetsEntityManager } from "../api/MikroOrmTypedSheetsEntityManager.js";
10
- /**
11
- * Wraps the MikroORM SQLite adapter as our replaceable entity execution engine.
12
- *
13
- * A future Drizzle or another ORM implementation only needs to implement the
14
- * same typed-sheets engine contract; application lifecycle calls stay stable.
15
- */
16
- export class MikroOrmSqliteTypedSheetsEngine {
17
- storage;
18
- constructor(storage) {
19
- this.storage = storage;
20
- }
21
- /** Opens a MikroORM-backed manager behind the typed-sheets engine boundary. */
22
- fork() {
23
- return new MikroOrmSqliteTypedSheetsEntityManager(this.storage, this.storage.forkEntityManager());
24
- }
25
- /** Closes the dedicated MikroORM SQLite connection. */
26
- async close(force = false) {
27
- await this.storage.close(force);
28
- }
29
- }
30
- /** Creates the replaceable typed-sheets engine backed by one SQLite adapter. */
31
- export function createMikroOrmSqliteTypedSheetsEngine(storage) {
32
- return new MikroOrmSqliteTypedSheetsEngine(storage);
33
- }
34
- /** Creates our public entity facade around an existing MikroORM SQLite adapter. */
35
- export function createTypedSheetsOrm(storage, options) {
36
- return createTypedSheetsOrmFacade(createMikroOrmSqliteTypedSheetsEngine(storage), options);
37
- }
38
- /**
39
- * Opens and migrates a dedicated SQLite runtime, then returns our public ORM
40
- * facade. Startup cleanup closes the adapter if migration or construction fails.
41
- */
42
- export async function initializeTypedSheetsOrm(options) {
43
- const { flushCoordinator, ...adapterOptions } = options;
44
- const storage = await initializeMikroOrmSqliteAdapter(adapterOptions);
45
- try {
46
- // The root ORM path owns only entity tables. The mapped sync path calls
47
- // initializeMappedTypedSheetsRuntime(), which explicitly migrates the
48
- // canonical/observation/outbox schema before registering projections.
49
- await storage.migrateEntitySchema();
50
- return createTypedSheetsOrm(storage, { flushCoordinator });
51
- }
52
- catch (error) {
53
- await storage.close(true);
54
- throw error;
55
- }
56
- }
57
- //# sourceMappingURL=MikroOrmTypedSheetsEngine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmTypedSheetsEngine.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAS1H,OAAO,EACL,+BAA+B,GAGhC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,sCAAsC,EAAE,MAAM,4CAA4C,CAAC;AAQpG;;;;;GAKG;AACH,MAAM,OAAO,+BAA+B;IACb;IAA7B,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IAE/D,+EAA+E;IAC/E,IAAI;QACF,OAAO,IAAI,sCAAsC,CAC/C,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CACjC,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,UAAU,qCAAqC,CACnD,OAA8B;IAE9B,OAAO,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAClC,OAA8B,EAC9B,OAAoC;IAEpC,OAAO,0BAA0B,CAAC,qCAAqC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAwC;IAExC,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACpC,OAAO,oBAAoB,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Pure translation from MikroORM changesets to the adapter-neutral lifecycle
3
- * contract. No database writes or EntityManager state changes happen here.
4
- */
5
- import { ChangeSetType } from "@mikro-orm/core";
6
- import type { ChangeSet, FlushEventArgs } from "@mikro-orm/core";
7
- import { type TypedSheetsEntityChange, type TypedSheetsEntityChangeKind } from "../../../../../application/orm/api/contracts.js";
8
- /**
9
- * Collects one effective change per entity from MikroORM's early and regular
10
- * changesets. A create-then-delete pair cancels before the planner sees it.
11
- */
12
- export declare function collectMikroOrmFlushChanges(args: FlushEventArgs): readonly TypedSheetsEntityChange[];
13
- /** Converts one MikroORM changeset into the public lifecycle shape. */
14
- export declare function toTypedSheetsEntityChange(changeSet: ChangeSet<object>): TypedSheetsEntityChange;
15
- /** Coalesces multiple changesets for one entity without mutating either input. */
16
- export declare function mergeMikroOrmEntityChanges(current: TypedSheetsEntityChange, next: TypedSheetsEntityChange): TypedSheetsEntityChange;
17
- /** Maps every MikroORM changeset type to our closed lifecycle set. */
18
- export declare function toTypedSheetsChangeKind(changeSetType: ChangeSetType): TypedSheetsEntityChangeKind;
19
- //# sourceMappingURL=MikroOrmFlushChanges.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmFlushChanges.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EACjC,MAAM,iDAAiD,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,cAAc,GACnB,SAAS,uBAAuB,EAAE,CAmBpC;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAC3B,uBAAuB,CAQzB;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,uBAAuB,GAC5B,uBAAuB,CAazB;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,aAAa,GAC3B,2BAA2B,CAW7B"}
@@ -1,67 +0,0 @@
1
- /**
2
- * Pure translation from MikroORM changesets to the adapter-neutral lifecycle
3
- * contract. No database writes or EntityManager state changes happen here.
4
- */
5
- import { ChangeSetType } from "@mikro-orm/core";
6
- import { primaryKeyPresence, TYPED_SHEETS_ENTITY_CHANGE_KINDS, } from "../../../../../application/orm/api/contracts.js";
7
- /**
8
- * Collects one effective change per entity from MikroORM's early and regular
9
- * changesets. A create-then-delete pair cancels before the planner sees it.
10
- */
11
- export function collectMikroOrmFlushChanges(args) {
12
- const changesByEntity = new Map();
13
- for (const changeSet of args.uow.getChangeSets()) {
14
- const next = toTypedSheetsEntityChange(changeSet);
15
- const current = changesByEntity.get(next.entity);
16
- if (current === undefined) {
17
- changesByEntity.set(next.entity, next);
18
- continue;
19
- }
20
- if (current.kind === TYPED_SHEETS_ENTITY_CHANGE_KINDS.CREATE &&
21
- next.kind === TYPED_SHEETS_ENTITY_CHANGE_KINDS.DELETE) {
22
- changesByEntity.delete(next.entity);
23
- continue;
24
- }
25
- changesByEntity.set(next.entity, mergeMikroOrmEntityChanges(current, next));
26
- }
27
- return [...changesByEntity.values()];
28
- }
29
- /** Converts one MikroORM changeset into the public lifecycle shape. */
30
- export function toTypedSheetsEntityChange(changeSet) {
31
- return {
32
- kind: toTypedSheetsChangeKind(changeSet.type),
33
- entityName: changeSet.meta.className,
34
- entity: changeSet.entity,
35
- primaryKey: primaryKeyPresence(changeSet.getSerializedPrimaryKey()),
36
- payload: { ...changeSet.payload },
37
- };
38
- }
39
- /** Coalesces multiple changesets for one entity without mutating either input. */
40
- export function mergeMikroOrmEntityChanges(current, next) {
41
- const kind = next.kind === TYPED_SHEETS_ENTITY_CHANGE_KINDS.DELETE
42
- ? TYPED_SHEETS_ENTITY_CHANGE_KINDS.DELETE
43
- : current.kind === TYPED_SHEETS_ENTITY_CHANGE_KINDS.CREATE
44
- ? TYPED_SHEETS_ENTITY_CHANGE_KINDS.CREATE
45
- : next.kind;
46
- return {
47
- ...next,
48
- kind,
49
- payload: kind === TYPED_SHEETS_ENTITY_CHANGE_KINDS.DELETE
50
- ? next.payload
51
- : { ...current.payload, ...next.payload },
52
- };
53
- }
54
- /** Maps every MikroORM changeset type to our closed lifecycle set. */
55
- export function toTypedSheetsChangeKind(changeSetType) {
56
- switch (changeSetType) {
57
- case ChangeSetType.CREATE:
58
- return TYPED_SHEETS_ENTITY_CHANGE_KINDS.CREATE;
59
- case ChangeSetType.UPDATE:
60
- case ChangeSetType.UPDATE_EARLY:
61
- return TYPED_SHEETS_ENTITY_CHANGE_KINDS.UPDATE;
62
- case ChangeSetType.DELETE:
63
- case ChangeSetType.DELETE_EARLY:
64
- return TYPED_SHEETS_ENTITY_CHANGE_KINDS.DELETE;
65
- }
66
- }
67
- //# sourceMappingURL=MikroOrmFlushChanges.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MikroOrmFlushChanges.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,gCAAgC,GAGjC,MAAM,iDAAiD,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAoB;IAEpB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC,CAAC;IACnE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QACD,IACE,OAAO,CAAC,IAAI,KAAK,gCAAgC,CAAC,MAAM;YACxD,IAAI,CAAC,IAAI,KAAK,gCAAgC,CAAC,MAAM,EACrD,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,yBAAyB,CACvC,SAA4B;IAE5B,OAAO;QACL,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7C,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS;QACpC,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,UAAU,EAAE,kBAAkB,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QACnE,OAAO,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;KAClC,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,0BAA0B,CACxC,OAAgC,EAChC,IAA6B;IAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,gCAAgC,CAAC,MAAM;QAChE,CAAC,CAAC,gCAAgC,CAAC,MAAM;QACzC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,gCAAgC,CAAC,MAAM;YACxD,CAAC,CAAC,gCAAgC,CAAC,MAAM;YACzC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAChB,OAAO;QACL,GAAG,IAAI;QACP,IAAI;QACJ,OAAO,EAAE,IAAI,KAAK,gCAAgC,CAAC,MAAM;YACvD,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CACrC,aAA4B;IAE5B,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,aAAa,CAAC,MAAM;YACvB,OAAO,gCAAgC,CAAC,MAAM,CAAC;QACjD,KAAK,aAAa,CAAC,MAAM,CAAC;QAC1B,KAAK,aAAa,CAAC,YAAY;YAC7B,OAAO,gCAAgC,CAAC,MAAM,CAAC;QACjD,KAAK,aAAa,CAAC,MAAM,CAAC;QAC1B,KAAK,aAAa,CAAC,YAAY;YAC7B,OAAO,gCAAgC,CAAC,MAAM,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -1,71 +0,0 @@
1
- /**
2
- * Public entity-manager facade owned by typed-sheets.
3
- *
4
- * The facade keeps the application workflow stable while a replaceable
5
- * execution engine handles SQLite-specific persistence details underneath.
6
- */
7
- import type { TypedSheetsEntityData, TypedSheetsEntityEngine, TypedSheetsEntityEngineManager, TypedSheetsEntityFilter, TypedSheetsEntityReference, TypedSheetsFindOptions, TypedSheetsForkOptions, TypedSheetsFlushCoordinator } from "./contracts.js";
8
- /** Options for creating our public typed-sheets ORM around one execution engine. */
9
- export interface CreateTypedSheetsOrmOptions {
10
- /** Plans canonical and Sheets outbox work for every durable entity flush. */
11
- readonly flushCoordinator: TypedSheetsFlushCoordinator;
12
- }
13
- /**
14
- * Root object for typed-sheets entity lifecycle operations.
15
- *
16
- * Its `em` property exposes our manager rather than an engine-specific one,
17
- * so application code cannot bypass the canonical and outbox flush plan.
18
- */
19
- export declare class TypedSheetsOrm {
20
- private readonly engine;
21
- private readonly flushCoordinator;
22
- /** Root entity manager; call `fork()` before request or job-local work. */
23
- readonly em: TypedSheetsEntityManager;
24
- constructor(engine: TypedSheetsEntityEngine, flushCoordinator: TypedSheetsFlushCoordinator);
25
- /** Closes resources owned by the underlying SQLite execution engine. */
26
- close(force?: boolean): Promise<void>;
27
- private createEntityManager;
28
- }
29
- /** Creates our public entity facade around a replaceable SQLite execution engine. */
30
- export declare function createTypedSheetsOrm(engine: TypedSheetsEntityEngine, options: CreateTypedSheetsOrmOptions): TypedSheetsOrm;
31
- /**
32
- * Entity-manager facade with the familiar entity lifecycle method names.
33
- *
34
- * The current public subset intentionally focuses on lifecycle-safe reads and
35
- * `persist` / `remove` / `flush` operations while mapping metadata is built.
36
- */
37
- export declare class TypedSheetsEntityManager {
38
- private readonly entityManager;
39
- private readonly flushCoordinator;
40
- constructor(entityManager: TypedSheetsEntityEngineManager, flushCoordinator: TypedSheetsFlushCoordinator);
41
- /** Creates an isolated manager with its own identity map. */
42
- fork(options?: TypedSheetsForkOptions): TypedSheetsEntityManager;
43
- /** Creates a managed entity instance without writing it until `flush()`. */
44
- create<Entity extends object>(entityName: TypedSheetsEntityReference<Entity>, data: TypedSheetsEntityData<Entity>): Entity;
45
- /** Reads all entities matching one initial equality filter from SQLite. */
46
- find<Entity extends object>(entityName: TypedSheetsEntityReference<Entity>, where: TypedSheetsEntityFilter<Entity>, options?: TypedSheetsFindOptions): Promise<readonly Entity[]>;
47
- /** Reads one entity or returns null when no entity matches the filter. */
48
- findOne<Entity extends object>(entityName: TypedSheetsEntityReference<Entity>, where: TypedSheetsEntityFilter<Entity>, options?: TypedSheetsFindOptions): Promise<Entity | null>;
49
- /** Marks one entity or iterable of entities for insertion or update at the next flush. */
50
- persist<Entity extends object>(entity: Entity | Iterable<Entity>): this;
51
- /** Marks one entity or iterable of entities for removal at the next flush. */
52
- remove<Entity extends object>(entity: Entity | Iterable<Entity>): this;
53
- /**
54
- * Persists all pending entity changes with their typed-sheets sync plan.
55
- *
56
- * An existing transaction is reused. Otherwise this method opens a SQLite
57
- * transaction itself so entity rows and outbox work commit or roll back
58
- * together.
59
- */
60
- flush(): Promise<void>;
61
- /**
62
- * Runs entity work in one transaction and flushes it automatically on success.
63
- *
64
- * The callback receives another typed-sheets manager, so its flush still
65
- * coordinates canonical and Sheets outbox work.
66
- */
67
- transactional<Result>(operation: (entityManager: TypedSheetsEntityManager) => Promise<Result>): Promise<Result>;
68
- /** Detaches every managed entity from this request or job-local manager. */
69
- clear(): void;
70
- }
71
- //# sourceMappingURL=TypedSheetsOrm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TypedSheetsOrm.d.ts","sourceRoot":"","sources":["../../../../src/application/orm/api/TypedSheetsOrm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;CACxD;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IALnC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,EAAE,wBAAwB,CAAC;gBAGnB,MAAM,EAAE,uBAAuB,EAC/B,gBAAgB,EAAE,2BAA2B;IAKhE,wEAAwE;IAClE,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,OAAO,CAAC,mBAAmB;CAK5B;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAEhB;AAED;;;;;GAKG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADhB,aAAa,EAAE,8BAA8B,EAC7C,gBAAgB,EAAE,2BAA2B;IAKhE,6DAA6D;IAC7D,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,wBAAwB;IAOhE,4EAA4E;IAC5E,MAAM,CAAC,MAAM,SAAS,MAAM,EAC1B,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAC9C,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAClC,MAAM;IAIT,2EAA2E;IACrE,IAAI,CAAC,MAAM,SAAS,MAAM,EAC9B,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAC9C,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,EACtC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAI7B,0EAA0E;IACpE,OAAO,CAAC,MAAM,SAAS,MAAM,EACjC,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAC9C,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,EACtC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzB,0FAA0F;IAC1F,OAAO,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAKvE,8EAA8E;IAC9E,MAAM,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAKtE;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EACxB,SAAS,EAAE,CAAC,aAAa,EAAE,wBAAwB,KAAK,OAAO,CAAC,MAAM,CAAC,GACtE,OAAO,CAAC,MAAM,CAAC;IAUlB,4EAA4E;IAC5E,KAAK,IAAI,IAAI;CAGd"}
@@ -1,116 +0,0 @@
1
- /**
2
- * Public entity-manager facade owned by typed-sheets.
3
- *
4
- * The facade keeps the application workflow stable while a replaceable
5
- * execution engine handles SQLite-specific persistence details underneath.
6
- */
7
- /**
8
- * Root object for typed-sheets entity lifecycle operations.
9
- *
10
- * Its `em` property exposes our manager rather than an engine-specific one,
11
- * so application code cannot bypass the canonical and outbox flush plan.
12
- */
13
- export class TypedSheetsOrm {
14
- engine;
15
- flushCoordinator;
16
- /** Root entity manager; call `fork()` before request or job-local work. */
17
- em;
18
- constructor(engine, flushCoordinator) {
19
- this.engine = engine;
20
- this.flushCoordinator = flushCoordinator;
21
- this.em = this.createEntityManager(engine.fork());
22
- }
23
- /** Closes resources owned by the underlying SQLite execution engine. */
24
- async close(force = false) {
25
- await this.engine.close(force);
26
- }
27
- createEntityManager(entityManager) {
28
- return new TypedSheetsEntityManager(entityManager, this.flushCoordinator);
29
- }
30
- }
31
- /** Creates our public entity facade around a replaceable SQLite execution engine. */
32
- export function createTypedSheetsOrm(engine, options) {
33
- return new TypedSheetsOrm(engine, options.flushCoordinator);
34
- }
35
- /**
36
- * Entity-manager facade with the familiar entity lifecycle method names.
37
- *
38
- * The current public subset intentionally focuses on lifecycle-safe reads and
39
- * `persist` / `remove` / `flush` operations while mapping metadata is built.
40
- */
41
- export class TypedSheetsEntityManager {
42
- entityManager;
43
- flushCoordinator;
44
- constructor(entityManager, flushCoordinator) {
45
- this.entityManager = entityManager;
46
- this.flushCoordinator = flushCoordinator;
47
- this.entityManager.onFlush(async (context) => this.flushCoordinator.onFlush(context));
48
- }
49
- /** Creates an isolated manager with its own identity map. */
50
- fork(options) {
51
- return new TypedSheetsEntityManager(this.entityManager.fork(options), this.flushCoordinator);
52
- }
53
- /** Creates a managed entity instance without writing it until `flush()`. */
54
- create(entityName, data) {
55
- return this.entityManager.create(entityName, data);
56
- }
57
- /** Reads all entities matching one initial equality filter from SQLite. */
58
- async find(entityName, where, options) {
59
- return this.entityManager.find(entityName, where, options);
60
- }
61
- /** Reads one entity or returns null when no entity matches the filter. */
62
- async findOne(entityName, where, options) {
63
- return this.entityManager.findOne(entityName, where, options);
64
- }
65
- /** Marks one entity or iterable of entities for insertion or update at the next flush. */
66
- persist(entity) {
67
- this.entityManager.persist(entity);
68
- return this;
69
- }
70
- /** Marks one entity or iterable of entities for removal at the next flush. */
71
- remove(entity) {
72
- this.entityManager.remove(entity);
73
- return this;
74
- }
75
- /**
76
- * Persists all pending entity changes with their typed-sheets sync plan.
77
- *
78
- * An existing transaction is reused. Otherwise this method opens a SQLite
79
- * transaction itself so entity rows and outbox work commit or roll back
80
- * together.
81
- */
82
- async flush() {
83
- if (this.entityManager.isInTransaction()) {
84
- await this.entityManager.flush();
85
- return;
86
- }
87
- await this.entityManager.begin();
88
- try {
89
- await this.entityManager.flush();
90
- await this.entityManager.commit();
91
- }
92
- catch (error) {
93
- if (this.entityManager.isInTransaction()) {
94
- await this.entityManager.rollback();
95
- }
96
- throw error;
97
- }
98
- }
99
- /**
100
- * Runs entity work in one transaction and flushes it automatically on success.
101
- *
102
- * The callback receives another typed-sheets manager, so its flush still
103
- * coordinates canonical and Sheets outbox work.
104
- */
105
- async transactional(operation) {
106
- return this.entityManager.transactional(async (transactionalEntityManager) => {
107
- const manager = new TypedSheetsEntityManager(transactionalEntityManager, this.flushCoordinator);
108
- return operation(manager);
109
- });
110
- }
111
- /** Detaches every managed entity from this request or job-local manager. */
112
- clear() {
113
- this.entityManager.clear();
114
- }
115
- }
116
- //# sourceMappingURL=TypedSheetsOrm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TypedSheetsOrm.js","sourceRoot":"","sources":["../../../../src/application/orm/api/TypedSheetsOrm.ts"],"names":[],"mappings":"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"}