@dbos-inc/typeorm-datasource 3.0.13-preview → 3.0.17-preview

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,20 +1,24 @@
1
1
  import { PoolConfig } from 'pg';
2
2
  import { DBOSDataSource, PGTransactionConfig } from '@dbos-inc/dbos-sdk/datasource';
3
3
  import { EntityManager } from 'typeorm';
4
- export declare class TypeOrmDataSource implements DBOSDataSource<PGTransactionConfig> {
4
+ export interface TypeORMTransactionConfig extends PGTransactionConfig {
5
+ name?: string;
6
+ }
7
+ export declare class TypeOrmDataSource implements DBOSDataSource<TypeORMTransactionConfig> {
5
8
  #private;
6
9
  readonly name: string;
7
10
  static get entityManager(): EntityManager;
8
- static initializeInternalSchema(config: PoolConfig): Promise<void>;
11
+ get entityManager(): EntityManager;
12
+ static initializeDBOSSchema(config: PoolConfig): Promise<void>;
9
13
  constructor(name: string, config: PoolConfig, entities: Function[]);
10
14
  /**
11
- * Run `callback` as a transaction against this DataSource
12
- * @param callback Function to run within a transactional context
15
+ * Run `func` as a transaction against this DataSource
16
+ * @param func Function to run within a transactional context
13
17
  * @param funcName Name to record for the transaction
14
18
  * @param config Transaction configuration (isolation, etc)
15
- * @returns Return value from `callback`
19
+ * @returns Return value from `func`
16
20
  */
17
- runTransaction<T>(callback: () => Promise<T>, funcName: string, config?: PGTransactionConfig): Promise<T>;
21
+ runTransaction<T>(func: () => Promise<T>, config?: TypeORMTransactionConfig): Promise<T>;
18
22
  /**
19
23
  * Register function as DBOS transaction, to be called within the context
20
24
  * of a transaction on this data source.
@@ -24,10 +28,10 @@ export declare class TypeOrmDataSource implements DBOSDataSource<PGTransactionCo
24
28
  * @param config Transaction settings
25
29
  * @returns Wrapped function, to be called instead of `func`
26
30
  */
27
- registerTransaction<This, Args extends unknown[], Return>(func: (this: This, ...args: Args) => Promise<Return>, config?: PGTransactionConfig, name?: string): (this: This, ...args: Args) => Promise<Return>;
31
+ registerTransaction<This, Args extends unknown[], Return>(func: (this: This, ...args: Args) => Promise<Return>, config?: TypeORMTransactionConfig): (this: This, ...args: Args) => Promise<Return>;
28
32
  /**
29
33
  * Decorator establishing function as a transaction
30
34
  */
31
- transaction(config?: PGTransactionConfig): <This, Args extends unknown[], Return>(_target: object, propertyKey: PropertyKey, descriptor: TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>) => TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>;
35
+ transaction(config?: TypeORMTransactionConfig): <This, Args extends unknown[], Return>(_target: object, propertyKey: PropertyKey, descriptor: TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>) => TypedPropertyDescriptor<(this: This, ...args: Args) => Promise<Return>>;
32
36
  }
33
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAQL,cAAc,EAEd,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAc,aAAa,EAAE,MAAM,SAAS,CAAC;AA+MpD,qBAAa,iBAAkB,YAAW,cAAc,CAAC,mBAAmB,CAAC;;IA2BzE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAzBvB,MAAM,KAAK,aAAa,IAAI,aAAa,CAUxC;WAEY,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;gBAa7D,IAAI,EAAE,MAAM,EACrB,MAAM,EAAE,UAAU,EAElB,QAAQ,EAAE,QAAQ,EAAE;IAMtB;;;;;;OAMG;IACG,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAIlG;;;;;;;;OAQG;IACH,mBAAmB,CAAC,IAAI,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EACtD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,EACpD,MAAM,CAAC,EAAE,mBAAmB,EAC5B,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,mBAAmB,mDAI3B,MAAM,eACF,WAAW,cACZ,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,QAAQ,MAAM,CAAC,CAAC,oCAAxC,IAAI,WAAW,IAAI,KAAK,QAAQ,MAAM,CAAC;CAWvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAQL,cAAc,EAEd,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAc,aAAa,EAAE,MAAM,SAAS,CAAC;AAIpD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8MD,qBAAa,iBAAkB,YAAW,cAAc,CAAC,wBAAwB,CAAC;;IAsC9E,QAAQ,CAAC,IAAI,EAAE,MAAM;IArBvB,MAAM,KAAK,aAAa,kBAEvB;IAED,IAAI,aAAa,kBAEhB;WAEY,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;gBAazD,IAAI,EAAE,MAAM,EACrB,MAAM,EAAE,UAAU,EAElB,QAAQ,EAAE,QAAQ,EAAE;IAMtB;;;;;;OAMG;IACG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,wBAAwB;IAIjF;;;;;;;;OAQG;IACH,mBAAmB,CAAC,IAAI,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EACtD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,EACpD,MAAM,CAAC,EAAE,wBAAwB,GAChC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,mDAIhC,MAAM,eACF,WAAW,cACZ,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,QAAQ,MAAM,CAAC,CAAC,oCAAxC,IAAI,WAAW,IAAI,KAAK,QAAQ,MAAM,CAAC;CAcvF"}
package/dist/index.js CHANGED
@@ -124,7 +124,7 @@ class TypeOrmTransactionHandler {
124
124
  if (readOnly) {
125
125
  await entityManager.query('SET TRANSACTION READ ONLY');
126
126
  }
127
- const result = await asyncLocalCtx.run({ entityManager: entityManager }, async () => {
127
+ const result = await asyncLocalCtx.run({ entityManager, owner: this }, async () => {
128
128
  return await func.call(target, ...args);
129
129
  });
130
130
  // save the output of read/write transactions
@@ -157,7 +157,7 @@ class TypeOrmTransactionHandler {
157
157
  class TypeOrmDataSource {
158
158
  name;
159
159
  // User calls this... DBOS not directly involved...
160
- static get entityManager() {
160
+ static #getEntityManager(p) {
161
161
  if (!dbos_sdk_1.DBOS.isInTransaction()) {
162
162
  throw new Error('Invalid use of TypeOrmDataSource.entityManager outside of a DBOS transaction');
163
163
  }
@@ -165,9 +165,18 @@ class TypeOrmDataSource {
165
165
  if (!ctx) {
166
166
  throw new Error('Invalid use of TypeOrmDataSource.entityManager outside of a DBOS transaction');
167
167
  }
168
+ if (p && p !== ctx.owner) {
169
+ throw new Error('Invalid retrieval of `TypeOrmDataSource.entityManager` from the wrong instance');
170
+ }
168
171
  return ctx.entityManager;
169
172
  }
170
- static async initializeInternalSchema(config) {
173
+ static get entityManager() {
174
+ return TypeOrmDataSource.#getEntityManager(undefined);
175
+ }
176
+ get entityManager() {
177
+ return TypeOrmDataSource.#getEntityManager(this.#provider);
178
+ }
179
+ static async initializeDBOSSchema(config) {
171
180
  const ds = await TypeOrmTransactionHandler.createInstance(config, []);
172
181
  try {
173
182
  await ds.query(datasource_1.createTransactionCompletionSchemaPG);
@@ -186,14 +195,14 @@ class TypeOrmDataSource {
186
195
  (0, datasource_1.registerDataSource)(this.#provider);
187
196
  }
188
197
  /**
189
- * Run `callback` as a transaction against this DataSource
190
- * @param callback Function to run within a transactional context
198
+ * Run `func` as a transaction against this DataSource
199
+ * @param func Function to run within a transactional context
191
200
  * @param funcName Name to record for the transaction
192
201
  * @param config Transaction configuration (isolation, etc)
193
- * @returns Return value from `callback`
202
+ * @returns Return value from `func`
194
203
  */
195
- async runTransaction(callback, funcName, config) {
196
- return await (0, datasource_1.runTransaction)(callback, funcName, { dsName: this.name, config });
204
+ async runTransaction(func, config) {
205
+ return await (0, datasource_1.runTransaction)(func, config?.name ?? func.name, { dsName: this.name, config });
197
206
  }
198
207
  /**
199
208
  * Register function as DBOS transaction, to be called within the context
@@ -204,8 +213,8 @@ class TypeOrmDataSource {
204
213
  * @param config Transaction settings
205
214
  * @returns Wrapped function, to be called instead of `func`
206
215
  */
207
- registerTransaction(func, config, name) {
208
- return (0, datasource_1.registerTransaction)(this.name, func, { name: name ?? func.name }, config);
216
+ registerTransaction(func, config) {
217
+ return (0, datasource_1.registerTransaction)(this.name, func, { name: config?.name ?? func.name }, config);
209
218
  }
210
219
  /**
211
220
  * Decorator establishing function as a transaction
@@ -217,7 +226,10 @@ class TypeOrmDataSource {
217
226
  if (!descriptor.value) {
218
227
  throw new Error('Use of decorator when original method is undefined');
219
228
  }
220
- descriptor.value = ds.registerTransaction(descriptor.value, config, String(propertyKey));
229
+ descriptor.value = ds.registerTransaction(descriptor.value, {
230
+ ...config,
231
+ name: config?.name ?? String(propertyKey),
232
+ });
221
233
  return descriptor;
222
234
  };
223
235
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -16,8 +16,13 @@ import { DataSource, EntityManager } from 'typeorm';
16
16
  import { AsyncLocalStorage } from 'async_hooks';
17
17
  import { SuperJSON } from 'superjson';
18
18
 
19
+ export interface TypeORMTransactionConfig extends PGTransactionConfig {
20
+ name?: string;
21
+ }
22
+
19
23
  interface DBOSTypeOrmLocalCtx {
20
24
  entityManager: EntityManager;
25
+ owner: TypeOrmTransactionHandler;
21
26
  }
22
27
 
23
28
  const asyncLocalCtx = new AsyncLocalStorage<DBOSTypeOrmLocalCtx>();
@@ -181,7 +186,7 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
181
186
  await entityManager.query('SET TRANSACTION READ ONLY');
182
187
  }
183
188
 
184
- const result = await asyncLocalCtx.run({ entityManager: entityManager }, async () => {
189
+ const result = await asyncLocalCtx.run({ entityManager, owner: this }, async () => {
185
190
  return await func.call(target, ...args);
186
191
  });
187
192
 
@@ -219,9 +224,9 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
219
224
  }
220
225
  }
221
226
 
222
- export class TypeOrmDataSource implements DBOSDataSource<PGTransactionConfig> {
227
+ export class TypeOrmDataSource implements DBOSDataSource<TypeORMTransactionConfig> {
223
228
  // User calls this... DBOS not directly involved...
224
- static get entityManager(): EntityManager {
229
+ static #getEntityManager(p?: TypeOrmTransactionHandler): EntityManager {
225
230
  if (!DBOS.isInTransaction()) {
226
231
  throw new Error('Invalid use of TypeOrmDataSource.entityManager outside of a DBOS transaction');
227
232
  }
@@ -229,11 +234,22 @@ export class TypeOrmDataSource implements DBOSDataSource<PGTransactionConfig> {
229
234
  if (!ctx) {
230
235
  throw new Error('Invalid use of TypeOrmDataSource.entityManager outside of a DBOS transaction');
231
236
  }
237
+ if (p && p !== ctx.owner) {
238
+ throw new Error('Invalid retrieval of `TypeOrmDataSource.entityManager` from the wrong instance');
239
+ }
232
240
 
233
241
  return ctx.entityManager;
234
242
  }
235
243
 
236
- static async initializeInternalSchema(config: PoolConfig): Promise<void> {
244
+ static get entityManager() {
245
+ return TypeOrmDataSource.#getEntityManager(undefined);
246
+ }
247
+
248
+ get entityManager() {
249
+ return TypeOrmDataSource.#getEntityManager(this.#provider);
250
+ }
251
+
252
+ static async initializeDBOSSchema(config: PoolConfig): Promise<void> {
237
253
  const ds = await TypeOrmTransactionHandler.createInstance(config, []);
238
254
  try {
239
255
  await ds.query(createTransactionCompletionSchemaPG);
@@ -256,14 +272,14 @@ export class TypeOrmDataSource implements DBOSDataSource<PGTransactionConfig> {
256
272
  }
257
273
 
258
274
  /**
259
- * Run `callback` as a transaction against this DataSource
260
- * @param callback Function to run within a transactional context
275
+ * Run `func` as a transaction against this DataSource
276
+ * @param func Function to run within a transactional context
261
277
  * @param funcName Name to record for the transaction
262
278
  * @param config Transaction configuration (isolation, etc)
263
- * @returns Return value from `callback`
279
+ * @returns Return value from `func`
264
280
  */
265
- async runTransaction<T>(callback: () => Promise<T>, funcName: string, config?: PGTransactionConfig) {
266
- return await runTransaction(callback, funcName, { dsName: this.name, config });
281
+ async runTransaction<T>(func: () => Promise<T>, config?: TypeORMTransactionConfig) {
282
+ return await runTransaction(func, config?.name ?? func.name, { dsName: this.name, config });
267
283
  }
268
284
 
269
285
  /**
@@ -277,16 +293,15 @@ export class TypeOrmDataSource implements DBOSDataSource<PGTransactionConfig> {
277
293
  */
278
294
  registerTransaction<This, Args extends unknown[], Return>(
279
295
  func: (this: This, ...args: Args) => Promise<Return>,
280
- config?: PGTransactionConfig,
281
- name?: string,
296
+ config?: TypeORMTransactionConfig,
282
297
  ): (this: This, ...args: Args) => Promise<Return> {
283
- return registerTransaction(this.name, func, { name: name ?? func.name }, config);
298
+ return registerTransaction(this.name, func, { name: config?.name ?? func.name }, config);
284
299
  }
285
300
 
286
301
  /**
287
302
  * Decorator establishing function as a transaction
288
303
  */
289
- transaction(config?: PGTransactionConfig) {
304
+ transaction(config?: TypeORMTransactionConfig) {
290
305
  // eslint-disable-next-line @typescript-eslint/no-this-alias
291
306
  const ds = this;
292
307
  return function decorator<This, Args extends unknown[], Return>(
@@ -298,7 +313,10 @@ export class TypeOrmDataSource implements DBOSDataSource<PGTransactionConfig> {
298
313
  throw new Error('Use of decorator when original method is undefined');
299
314
  }
300
315
 
301
- descriptor.value = ds.registerTransaction(descriptor.value, config, String(propertyKey));
316
+ descriptor.value = ds.registerTransaction(descriptor.value, {
317
+ ...config,
318
+ name: config?.name ?? String(propertyKey),
319
+ });
302
320
 
303
321
  return descriptor;
304
322
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbos-inc/typeorm-datasource",
3
- "version": "3.0.13-preview",
3
+ "version": "3.0.17-preview",
4
4
  "description": "DBOS DataSource library for TypeORM with PostgreSQL support",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,7 @@ describe('TypeOrmDataSource.configure', () => {
17
17
  });
18
18
 
19
19
  test('configure creates tx outputs table', async () => {
20
- await TypeOrmDataSource.initializeInternalSchema(config);
20
+ await TypeOrmDataSource.initializeDBOSSchema(config);
21
21
 
22
22
  const client = new Client(config);
23
23
  try {
@@ -42,7 +42,7 @@ describe('TypeOrmDataSource', () => {
42
42
  }
43
43
  }
44
44
 
45
- await TypeOrmDataSource.initializeInternalSchema(config);
45
+ await TypeOrmDataSource.initializeDBOSSchema(config);
46
46
 
47
47
  {
48
48
  const ds = new DataSource({
@@ -356,7 +356,7 @@ async function errorFunction(user: string) {
356
356
  }
357
357
 
358
358
  async function readFunction(user: string) {
359
- const result = await TypeOrmDataSource.entityManager.findOneBy(Greeting, { name: user });
359
+ const result = await dataSource.entityManager.findOneBy(Greeting, { name: user });
360
360
 
361
361
  return { user, greet_count: result?.greet_count, now: Date.now() };
362
362
  }
@@ -403,7 +403,7 @@ async function insertWorkflowReg(user: string) {
403
403
  }
404
404
 
405
405
  async function insertWorkflowRunTx(user: string) {
406
- return await dataSource.runTransaction(() => insertFunction(user), 'insertFunction');
406
+ return await dataSource.runTransaction(() => insertFunction(user), { name: 'insertFunction' });
407
407
  }
408
408
 
409
409
  async function errorWorkflowReg(user: string) {
@@ -411,7 +411,7 @@ async function errorWorkflowReg(user: string) {
411
411
  }
412
412
 
413
413
  async function errorWorkflowRunTx(user: string) {
414
- return await dataSource.runTransaction(() => errorFunction(user), 'errorFunction');
414
+ return await dataSource.runTransaction(() => errorFunction(user), { name: 'errorFunction' });
415
415
  }
416
416
 
417
417
  async function readWorkflowReg(user: string) {
@@ -419,7 +419,7 @@ async function readWorkflowReg(user: string) {
419
419
  }
420
420
 
421
421
  async function readWorkflowRunTx(user: string) {
422
- return await dataSource.runTransaction(() => readFunction(user), 'readFunction', { readOnly: true });
422
+ return await dataSource.runTransaction(() => readFunction(user), { name: 'readFunction', readOnly: true });
423
423
  }
424
424
 
425
425
  async function staticWorkflow(user: string) {