@dbos-inc/typeorm-datasource 4.4.4-preview → 4.4.6-preview.g878192fef4
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 +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -20
- package/dist/index.js.map +1 -1
- package/index.ts +26 -16
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -10,13 +10,13 @@ export declare class TypeOrmDataSource implements DBOSDataSource<TypeORMTransact
|
|
|
10
10
|
readonly name: string;
|
|
11
11
|
static get entityManager(): EntityManager;
|
|
12
12
|
get entityManager(): EntityManager;
|
|
13
|
-
static initializeDBOSSchema(config: PoolConfig): Promise<void>;
|
|
13
|
+
static initializeDBOSSchema(config: PoolConfig, schemaName?: string): Promise<void>;
|
|
14
14
|
/**
|
|
15
15
|
* @deprecated - For readability, use `createFromConfig` or `createFromDataSource`
|
|
16
16
|
*/
|
|
17
|
-
constructor(name: string, config?: PoolConfig, entities?: Function[], dataSource?: DataSource);
|
|
18
|
-
static createFromConfig(name: string, config: PoolConfig, entities: Function[]): TypeOrmDataSource;
|
|
19
|
-
static createFromDataSource(name: string, ds: DataSource): TypeOrmDataSource;
|
|
17
|
+
constructor(name: string, config?: PoolConfig, entities?: Function[], dataSource?: DataSource, schemaName?: string);
|
|
18
|
+
static createFromConfig(name: string, config: PoolConfig, entities: Function[], schemaName?: string): TypeOrmDataSource;
|
|
19
|
+
static createFromDataSource(name: string, ds: DataSource, schemaName?: string): TypeOrmDataSource;
|
|
20
20
|
/**
|
|
21
21
|
* Run `func` as a transaction against this DataSource
|
|
22
22
|
* @param func Function to run within a transactional context
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAQL,cAAc,EAEd,mBAAmB,EAGpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIpD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAQL,cAAc,EAEd,mBAAmB,EAGpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIpD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiPD,qBAAa,iBAAkB,YAAW,cAAc,CAAC,wBAAwB,CAAC;;IAyC9E,QAAQ,CAAC,IAAI,EAAE,MAAM;IAxBvB,MAAM,KAAK,aAAa,kBAEvB;IAED,IAAI,aAAa,kBAEhB;WAEY,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjG;;OAEG;gBAEQ,IAAI,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,UAAU,EAEnB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EACrB,UAAU,CAAC,EAAE,UAAU,EACvB,UAAU,GAAE,MAAe;IAe7B,MAAM,CAAC,gBAAgB,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAElB,QAAQ,EAAE,QAAQ,EAAE,EACpB,UAAU,GAAE,MAAe;IAK7B,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,GAAE,MAAe;IAIrF;;;;;;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,GAAG,YAAY,GAC/C,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,kDAIjC,MAAM,eACD,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;CAevF"}
|
package/dist/index.js
CHANGED
|
@@ -14,13 +14,15 @@ class TypeOrmTransactionHandler {
|
|
|
14
14
|
providedDataSource;
|
|
15
15
|
dsType = 'TypeOrm';
|
|
16
16
|
#createdDataSource;
|
|
17
|
+
schemaName;
|
|
17
18
|
constructor(name, config,
|
|
18
19
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
19
|
-
entities, providedDataSource) {
|
|
20
|
+
entities, providedDataSource, schemaName = 'dbos') {
|
|
20
21
|
this.name = name;
|
|
21
22
|
this.config = config;
|
|
22
23
|
this.entities = entities;
|
|
23
24
|
this.providedDataSource = providedDataSource;
|
|
25
|
+
this.schemaName = schemaName;
|
|
24
26
|
}
|
|
25
27
|
static async createDataSource(config,
|
|
26
28
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
@@ -56,7 +58,7 @@ class TypeOrmTransactionHandler {
|
|
|
56
58
|
}
|
|
57
59
|
let installed = false;
|
|
58
60
|
try {
|
|
59
|
-
const res = await this.dataSource.query(datasource_1.checkSchemaInstallationPG);
|
|
61
|
+
const res = await this.dataSource.query((0, datasource_1.checkSchemaInstallationPG)(this.schemaName));
|
|
60
62
|
installed = !!res[0]?.schema_exists && !!res[0]?.table_exists;
|
|
61
63
|
}
|
|
62
64
|
catch (e) {
|
|
@@ -65,11 +67,11 @@ class TypeOrmTransactionHandler {
|
|
|
65
67
|
// Install
|
|
66
68
|
if (!installed) {
|
|
67
69
|
try {
|
|
68
|
-
await this.dataSource.query(datasource_1.createTransactionCompletionSchemaPG);
|
|
69
|
-
await this.dataSource.query(datasource_1.createTransactionCompletionTablePG);
|
|
70
|
+
await this.dataSource.query((0, datasource_1.createTransactionCompletionSchemaPG)(this.schemaName));
|
|
71
|
+
await this.dataSource.query((0, datasource_1.createTransactionCompletionTablePG)(this.schemaName));
|
|
70
72
|
}
|
|
71
73
|
catch (err) {
|
|
72
|
-
throw new Error(`In initialization of 'TypeOrmDataSource' ${this.name}: The '
|
|
74
|
+
throw new Error(`In initialization of 'TypeOrmDataSource' ${this.name}: The '${this.schemaName}.transaction_completion' table does not exist, and could not be created. This should be added to your database migrations.
|
|
73
75
|
See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`);
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -80,7 +82,7 @@ class TypeOrmTransactionHandler {
|
|
|
80
82
|
await ds?.destroy();
|
|
81
83
|
}
|
|
82
84
|
async #checkExecution(workflowID, stepID) {
|
|
83
|
-
const rows = await this.dataSource.query(`SELECT output, error FROM
|
|
85
|
+
const rows = await this.dataSource.query(`SELECT output, error FROM "${this.schemaName}".transaction_completion
|
|
84
86
|
WHERE workflow_id=$1 AND function_num=$2;`, [workflowID, stepID]);
|
|
85
87
|
if (rows.length !== 1) {
|
|
86
88
|
return undefined;
|
|
@@ -91,9 +93,9 @@ class TypeOrmTransactionHandler {
|
|
|
91
93
|
const { output, error } = rows[0];
|
|
92
94
|
return error !== null ? { error } : { output };
|
|
93
95
|
}
|
|
94
|
-
static async #recordOutput(entityManager, workflowID, stepID, output) {
|
|
96
|
+
static async #recordOutput(entityManager, workflowID, stepID, output, schemaName) {
|
|
95
97
|
try {
|
|
96
|
-
await entityManager.query(`INSERT INTO
|
|
98
|
+
await entityManager.query(`INSERT INTO "${schemaName}".transaction_completion (workflow_id, function_num, output)
|
|
97
99
|
VALUES ($1, $2, $3)`, [workflowID, stepID, output]);
|
|
98
100
|
}
|
|
99
101
|
catch (error) {
|
|
@@ -107,7 +109,7 @@ class TypeOrmTransactionHandler {
|
|
|
107
109
|
}
|
|
108
110
|
async #recordError(workflowID, stepID, error) {
|
|
109
111
|
try {
|
|
110
|
-
await this.dataSource.query(`INSERT INTO
|
|
112
|
+
await this.dataSource.query(`INSERT INTO "${this.schemaName}".transaction_completion (workflow_id, function_num, error)
|
|
111
113
|
VALUES ($1, $2, $3)`, [workflowID, stepID, error]);
|
|
112
114
|
}
|
|
113
115
|
catch (error) {
|
|
@@ -153,7 +155,7 @@ class TypeOrmTransactionHandler {
|
|
|
153
155
|
});
|
|
154
156
|
// save the output of read/write transactions
|
|
155
157
|
if (saveResults) {
|
|
156
|
-
await TypeOrmTransactionHandler.#recordOutput(entityManager, workflowID, stepID, superjson_1.SuperJSON.stringify(result));
|
|
158
|
+
await TypeOrmTransactionHandler.#recordOutput(entityManager, workflowID, stepID, superjson_1.SuperJSON.stringify(result), this.schemaName);
|
|
157
159
|
}
|
|
158
160
|
return result;
|
|
159
161
|
});
|
|
@@ -200,11 +202,11 @@ class TypeOrmDataSource {
|
|
|
200
202
|
get entityManager() {
|
|
201
203
|
return TypeOrmDataSource.#getEntityManager(this.#provider);
|
|
202
204
|
}
|
|
203
|
-
static async initializeDBOSSchema(config) {
|
|
205
|
+
static async initializeDBOSSchema(config, schemaName = 'dbos') {
|
|
204
206
|
const ds = await TypeOrmTransactionHandler.createDataSource(config, []);
|
|
205
207
|
try {
|
|
206
|
-
await ds.query(datasource_1.createTransactionCompletionSchemaPG);
|
|
207
|
-
await ds.query(datasource_1.createTransactionCompletionTablePG);
|
|
208
|
+
await ds.query((0, datasource_1.createTransactionCompletionSchemaPG)(schemaName));
|
|
209
|
+
await ds.query((0, datasource_1.createTransactionCompletionTablePG)(schemaName));
|
|
208
210
|
}
|
|
209
211
|
finally {
|
|
210
212
|
await ds.destroy();
|
|
@@ -216,14 +218,14 @@ class TypeOrmDataSource {
|
|
|
216
218
|
*/
|
|
217
219
|
constructor(name, config,
|
|
218
220
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
219
|
-
entities, dataSource) {
|
|
221
|
+
entities, dataSource, schemaName = 'dbos') {
|
|
220
222
|
this.name = name;
|
|
221
223
|
if (config && entities) {
|
|
222
|
-
this.#provider = new TypeOrmTransactionHandler(name, config, entities, undefined);
|
|
224
|
+
this.#provider = new TypeOrmTransactionHandler(name, config, entities, undefined, schemaName);
|
|
223
225
|
(0, datasource_1.registerDataSource)(this.#provider);
|
|
224
226
|
}
|
|
225
227
|
else if (dataSource) {
|
|
226
|
-
this.#provider = new TypeOrmTransactionHandler(name, undefined, undefined, dataSource);
|
|
228
|
+
this.#provider = new TypeOrmTransactionHandler(name, undefined, undefined, dataSource, schemaName);
|
|
227
229
|
(0, datasource_1.registerDataSource)(this.#provider);
|
|
228
230
|
}
|
|
229
231
|
else {
|
|
@@ -232,11 +234,11 @@ class TypeOrmDataSource {
|
|
|
232
234
|
}
|
|
233
235
|
static createFromConfig(name, config,
|
|
234
236
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
235
|
-
entities) {
|
|
236
|
-
return new TypeOrmDataSource(name, config, entities);
|
|
237
|
+
entities, schemaName = 'dbos') {
|
|
238
|
+
return new TypeOrmDataSource(name, config, entities, undefined, schemaName);
|
|
237
239
|
}
|
|
238
|
-
static createFromDataSource(name, ds) {
|
|
239
|
-
return new TypeOrmDataSource(name, undefined, undefined, ds);
|
|
240
|
+
static createFromDataSource(name, ds, schemaName = 'dbos') {
|
|
241
|
+
return new TypeOrmDataSource(name, undefined, undefined, ds, schemaName);
|
|
240
242
|
}
|
|
241
243
|
/**
|
|
242
244
|
* Run `func` as a transaction against this DataSource
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AACA,iDAAmF;AACnF,8DAauC;AACvC,qCAAoD;AACpD,6CAAgD;AAChD,yCAAsC;AAWtC,MAAM,aAAa,GAAG,IAAI,+BAAiB,EAAuB,CAAC;AASnE,MAAM,yBAAyB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -39,6 +39,7 @@ interface transaction_completion {
|
|
|
39
39
|
class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
40
40
|
readonly dsType = 'TypeOrm';
|
|
41
41
|
#createdDataSource: DataSource | undefined;
|
|
42
|
+
readonly schemaName: string;
|
|
42
43
|
|
|
43
44
|
constructor(
|
|
44
45
|
readonly name: string,
|
|
@@ -46,7 +47,10 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
46
47
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
47
48
|
private readonly entities?: Function[],
|
|
48
49
|
private readonly providedDataSource?: DataSource,
|
|
49
|
-
|
|
50
|
+
schemaName: string = 'dbos',
|
|
51
|
+
) {
|
|
52
|
+
this.schemaName = schemaName;
|
|
53
|
+
}
|
|
50
54
|
|
|
51
55
|
static async createDataSource(
|
|
52
56
|
config: PoolConfig,
|
|
@@ -87,7 +91,9 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
87
91
|
|
|
88
92
|
let installed = false;
|
|
89
93
|
try {
|
|
90
|
-
const res = await this.dataSource.query<CheckSchemaInstallationReturn[]>(
|
|
94
|
+
const res = await this.dataSource.query<CheckSchemaInstallationReturn[]>(
|
|
95
|
+
checkSchemaInstallationPG(this.schemaName),
|
|
96
|
+
);
|
|
91
97
|
installed = !!res[0]?.schema_exists && !!res[0]?.table_exists;
|
|
92
98
|
} catch (e) {
|
|
93
99
|
throw new Error(
|
|
@@ -98,11 +104,11 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
98
104
|
// Install
|
|
99
105
|
if (!installed) {
|
|
100
106
|
try {
|
|
101
|
-
await this.dataSource.query(createTransactionCompletionSchemaPG);
|
|
102
|
-
await this.dataSource.query(createTransactionCompletionTablePG);
|
|
107
|
+
await this.dataSource.query(createTransactionCompletionSchemaPG(this.schemaName));
|
|
108
|
+
await this.dataSource.query(createTransactionCompletionTablePG(this.schemaName));
|
|
103
109
|
} catch (err) {
|
|
104
110
|
throw new Error(
|
|
105
|
-
`In initialization of 'TypeOrmDataSource' ${this.name}: The '
|
|
111
|
+
`In initialization of 'TypeOrmDataSource' ${this.name}: The '${this.schemaName}.transaction_completion' table does not exist, and could not be created. This should be added to your database migrations.
|
|
106
112
|
See: https://docs.dbos.dev/typescript/tutorials/transaction-tutorial#installing-the-dbos-schema`,
|
|
107
113
|
);
|
|
108
114
|
}
|
|
@@ -121,7 +127,7 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
121
127
|
): Promise<{ output: string | null } | { error: string } | undefined> {
|
|
122
128
|
type TxOutputRow = Pick<transaction_completion, 'output' | 'error'>;
|
|
123
129
|
const rows = await this.dataSource.query<TxOutputRow[]>(
|
|
124
|
-
`SELECT output, error FROM
|
|
130
|
+
`SELECT output, error FROM "${this.schemaName}".transaction_completion
|
|
125
131
|
WHERE workflow_id=$1 AND function_num=$2;`,
|
|
126
132
|
[workflowID, stepID],
|
|
127
133
|
);
|
|
@@ -143,10 +149,11 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
143
149
|
workflowID: string,
|
|
144
150
|
stepID: number,
|
|
145
151
|
output: string,
|
|
152
|
+
schemaName: string,
|
|
146
153
|
): Promise<void> {
|
|
147
154
|
try {
|
|
148
155
|
await entityManager.query(
|
|
149
|
-
`INSERT INTO
|
|
156
|
+
`INSERT INTO "${schemaName}".transaction_completion (workflow_id, function_num, output)
|
|
150
157
|
VALUES ($1, $2, $3)`,
|
|
151
158
|
[workflowID, stepID, output],
|
|
152
159
|
);
|
|
@@ -162,7 +169,7 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
162
169
|
async #recordError(workflowID: string, stepID: number, error: string): Promise<void> {
|
|
163
170
|
try {
|
|
164
171
|
await this.dataSource.query(
|
|
165
|
-
`INSERT INTO
|
|
172
|
+
`INSERT INTO "${this.schemaName}".transaction_completion (workflow_id, function_num, error)
|
|
166
173
|
VALUES ($1, $2, $3)`,
|
|
167
174
|
[workflowID, stepID, error],
|
|
168
175
|
);
|
|
@@ -226,6 +233,7 @@ class TypeOrmTransactionHandler implements DataSourceTransactionHandler {
|
|
|
226
233
|
workflowID,
|
|
227
234
|
stepID!,
|
|
228
235
|
SuperJSON.stringify(result),
|
|
236
|
+
this.schemaName,
|
|
229
237
|
);
|
|
230
238
|
}
|
|
231
239
|
|
|
@@ -278,11 +286,11 @@ export class TypeOrmDataSource implements DBOSDataSource<TypeORMTransactionConfi
|
|
|
278
286
|
return TypeOrmDataSource.#getEntityManager(this.#provider);
|
|
279
287
|
}
|
|
280
288
|
|
|
281
|
-
static async initializeDBOSSchema(config: PoolConfig): Promise<void> {
|
|
289
|
+
static async initializeDBOSSchema(config: PoolConfig, schemaName: string = 'dbos'): Promise<void> {
|
|
282
290
|
const ds = await TypeOrmTransactionHandler.createDataSource(config, []);
|
|
283
291
|
try {
|
|
284
|
-
await ds.query(createTransactionCompletionSchemaPG);
|
|
285
|
-
await ds.query(createTransactionCompletionTablePG);
|
|
292
|
+
await ds.query(createTransactionCompletionSchemaPG(schemaName));
|
|
293
|
+
await ds.query(createTransactionCompletionTablePG(schemaName));
|
|
286
294
|
} finally {
|
|
287
295
|
await ds.destroy();
|
|
288
296
|
}
|
|
@@ -299,12 +307,13 @@ export class TypeOrmDataSource implements DBOSDataSource<TypeORMTransactionConfi
|
|
|
299
307
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
300
308
|
entities?: Function[],
|
|
301
309
|
dataSource?: DataSource,
|
|
310
|
+
schemaName: string = 'dbos',
|
|
302
311
|
) {
|
|
303
312
|
if (config && entities) {
|
|
304
|
-
this.#provider = new TypeOrmTransactionHandler(name, config, entities, undefined);
|
|
313
|
+
this.#provider = new TypeOrmTransactionHandler(name, config, entities, undefined, schemaName);
|
|
305
314
|
registerDataSource(this.#provider);
|
|
306
315
|
} else if (dataSource) {
|
|
307
|
-
this.#provider = new TypeOrmTransactionHandler(name, undefined, undefined, dataSource);
|
|
316
|
+
this.#provider = new TypeOrmTransactionHandler(name, undefined, undefined, dataSource, schemaName);
|
|
308
317
|
registerDataSource(this.#provider);
|
|
309
318
|
} else {
|
|
310
319
|
throw new TypeError(
|
|
@@ -318,12 +327,13 @@ export class TypeOrmDataSource implements DBOSDataSource<TypeORMTransactionConfi
|
|
|
318
327
|
config: PoolConfig,
|
|
319
328
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
320
329
|
entities: Function[],
|
|
330
|
+
schemaName: string = 'dbos',
|
|
321
331
|
) {
|
|
322
|
-
return new TypeOrmDataSource(name, config, entities);
|
|
332
|
+
return new TypeOrmDataSource(name, config, entities, undefined, schemaName);
|
|
323
333
|
}
|
|
324
334
|
|
|
325
|
-
static createFromDataSource(name: string, ds: DataSource) {
|
|
326
|
-
return new TypeOrmDataSource(name, undefined, undefined, ds);
|
|
335
|
+
static createFromDataSource(name: string, ds: DataSource, schemaName: string = 'dbos') {
|
|
336
|
+
return new TypeOrmDataSource(name, undefined, undefined, ds, schemaName);
|
|
327
337
|
}
|
|
328
338
|
|
|
329
339
|
/**
|
package/package.json
CHANGED