orange-orm 4.5.0-beta.0 → 4.5.0-beta.2
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/README.md +6 -1
- package/docs/changelog.md +4 -0
- package/package.json +10 -6
- package/src/applyPatch.js +5 -2
- package/src/client/index.js +3 -2
- package/src/client/index.mjs +13552 -6381
- package/src/client/rollup.config.js +24 -4
- package/src/client/stringify.js +2 -9
- package/src/createDomain.js +7 -28
- package/src/d1/newDatabase.js +23 -37
- package/src/d1/newPool.js +6 -6
- package/src/d1/newTransaction.js +1 -0
- package/src/d1/pool/newGenericPool.js +2 -14
- package/src/emitEvent.js +6 -4
- package/src/emptyFilter.js +12 -12
- package/src/format.js +9 -0
- package/src/generic-pool.js +274 -313
- package/src/getManyDto/newQuery.js +5 -5
- package/src/getManyDto/query/newSingleQuery.js +5 -5
- package/src/getManyDto.js +73 -41
- package/src/hostExpress/cycle.ts +211 -0
- package/src/hostExpress/executePath.js +361 -357
- package/src/hostExpress.js +2 -7
- package/src/hostLocal.js +9 -9
- package/src/index.js +13 -17
- package/src/indexBrowser.js +39 -0
- package/src/mssql/newDatabase.js +19 -31
- package/src/mssql/newPool.js +2 -2
- package/src/mssql/newTransaction.js +4 -3
- package/src/mssql/pool/newGenericPool.js +1 -13
- package/src/mySql/deleteFromSql.js +5 -5
- package/src/mySql/insert.js +5 -5
- package/src/mySql/insertSql.js +2 -3
- package/src/mySql/lastInsertedSql.js +3 -4
- package/src/mySql/newDatabase.js +20 -34
- package/src/mySql/newPool.js +10 -10
- package/src/mySql/newTransaction.js +2 -2
- package/src/mySql/pool/newGenericPool.js +2 -15
- package/src/mySql/quote.js +1 -0
- package/src/newId.js +2 -1
- package/src/newImmutable.js +1 -2
- package/src/oracle/deleteFromSql.js +5 -5
- package/src/oracle/formatDateOut.js +1 -1
- package/src/oracle/insert.js +6 -6
- package/src/oracle/insertSql.js +6 -14
- package/src/oracle/lastInsertedSql.js +3 -3
- package/src/oracle/mergeSql.js +3 -6
- package/src/oracle/newDatabase.js +18 -33
- package/src/oracle/newInsertCommandCore.js +5 -5
- package/src/oracle/newPool.js +10 -10
- package/src/oracle/newTransaction.js +2 -1
- package/src/oracle/pool/newGenericPool.js +2 -14
- package/src/oracle/quote.js +1 -0
- package/src/oracle/wrapQuery.js +0 -3
- package/src/package.json +5 -0
- package/src/patchRow.js +2 -2
- package/src/patchTable.js +6 -5
- package/src/pg/deleteFromSql.js +5 -5
- package/src/pg/formatDateOut.js +1 -2
- package/src/pg/insert.js +3 -3
- package/src/pg/insertSql.js +2 -7
- package/src/pg/lastInsertedSql.js +1 -2
- package/src/pg/newDatabase.js +20 -37
- package/src/pg/newPool.js +10 -10
- package/src/pg/newTransaction.js +2 -1
- package/src/pg/pool/newPgPool.js +23 -16
- package/src/pg/pool/parseSearchPathParam.js +10 -0
- package/src/pg/quote.js +2 -0
- package/src/pg/schema.js +2 -2
- package/src/{mySql/pool/defaults.js → poolDefaults.js} +0 -2
- package/src/promisify.js +24 -0
- package/src/query.js +2 -2
- package/src/sap/deleteFromSql.js +3 -3
- package/src/sap/formatDateOut.js +1 -1
- package/src/sap/insert.js +5 -5
- package/src/sap/insertSql.js +4 -5
- package/src/sap/lastInsertedSql.js +3 -3
- package/src/sap/mergeSql.js +1 -2
- package/src/sap/newDatabase.js +23 -34
- package/src/sap/newPool.js +2 -2
- package/src/sap/newTransaction.js +2 -1
- package/src/sap/quote.js +1 -0
- package/src/sqlite/deleteFromSql.js +5 -5
- package/src/sqlite/insert.js +5 -5
- package/src/sqlite/insertSql.js +2 -2
- package/src/sqlite/lastInsertedSql.js +2 -2
- package/src/sqlite/newDatabase.js +16 -32
- package/src/sqlite/newPool.js +10 -10
- package/src/sqlite/newTransaction.js +2 -1
- package/src/sqlite/pool/newGenericPool.js +1 -13
- package/src/sqlite/quote.js +1 -0
- package/src/table/aggregate.js +1 -1
- package/src/table/begin.js +5 -5
- package/src/table/cascadeDelete.js +2 -2
- package/src/table/column/binary/newDecode.js +2 -2
- package/src/table/column/binary/newEncode.js +3 -4
- package/src/table/column/boolean/newDecode.js +1 -1
- package/src/table/column/boolean/newEncode.js +6 -6
- package/src/table/column/date/formatOut.js +3 -5
- package/src/table/column/date/newDecode.js +2 -2
- package/src/table/column/date/newEncode.js +8 -8
- package/src/table/column/date/tryParseISO.js +6 -8
- package/src/table/column/date.js +1 -1
- package/src/table/column/dateWithTimeZone/newEncode.js +3 -4
- package/src/table/column/dateWithTimeZone.js +1 -1
- package/src/table/column/encodeFilterArg.js +3 -3
- package/src/table/column/equal.js +3 -3
- package/src/table/column/extractAlias.js +0 -2
- package/src/table/column/greaterThan.js +3 -3
- package/src/table/column/greaterThanOrEqual.js +3 -3
- package/src/table/column/guid/newDecode.js +1 -1
- package/src/table/column/guid/newEncode.js +3 -3
- package/src/table/column/in.js +3 -3
- package/src/table/column/json/formatOut.js +3 -3
- package/src/table/column/json/newDecode.js +3 -3
- package/src/table/column/json/newEncode.js +6 -6
- package/src/table/column/json.js +2 -1
- package/src/table/column/lessThan.js +3 -3
- package/src/table/column/lessThanOrEqual.js +4 -4
- package/src/table/column/negotiateRawSqlFilter.js +1 -72
- package/src/table/column/newBoolean.js +2 -53
- package/src/table/column/newColumn.js +21 -21
- package/src/table/column/newDecodeCore.js +1 -1
- package/src/table/column/notEqual.js +3 -3
- package/src/table/column/numeric/newDecode.js +2 -2
- package/src/table/column/numeric/newEncode.js +3 -3
- package/src/table/column/string/contains.js +2 -1
- package/src/table/column/string/containsCore.js +5 -5
- package/src/table/column/string/endsWith.js +1 -1
- package/src/table/column/string/endsWithCore.js +4 -4
- package/src/table/column/string/iContains.js +2 -1
- package/src/table/column/string/iEndsWith.js +1 -1
- package/src/table/column/string/iEqual.js +3 -3
- package/src/table/column/string/iStartsWith.js +1 -1
- package/src/table/column/string/newEncode.js +3 -3
- package/src/table/column/string/startsWith.js +1 -1
- package/src/table/column/string/startsWithCore.js +4 -4
- package/src/table/column/string.js +14 -14
- package/src/table/column/utils.js +113 -0
- package/src/table/column.js +6 -2
- package/src/table/commands/beginCommand.js +2 -2
- package/src/table/commands/compressChanges.js +2 -2
- package/src/table/commands/delete/newSingleCommand.js +5 -5
- package/src/table/commands/delete/singleCommand/joinSql.js +12 -12
- package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +2 -2
- package/src/table/commands/delete/singleCommand/selectSql.js +6 -6
- package/src/table/commands/delete/singleCommand/subFilter.js +11 -11
- package/src/table/commands/delete/singleCommand/whereSql.js +2 -2
- package/src/table/commands/getChangeSet.js +2 -2
- package/src/table/commands/insert/getSqlTemplate.js +16 -16
- package/src/table/commands/lastCommandMatches.js +2 -2
- package/src/table/commands/newDeleteCommand.js +5 -10
- package/src/table/commands/newGetLastInsertedCommand.js +4 -4
- package/src/table/commands/newGetLastInsertedCommandCore.js +5 -5
- package/src/table/commands/newInsertCommand.js +5 -3
- package/src/table/commands/newInsertCommandCore.js +12 -12
- package/src/table/commands/newRow.js +4 -4
- package/src/table/commands/newUpdateCommand.js +4 -4
- package/src/table/commands/newUpdateCommandCore.js +4 -4
- package/src/table/commands/pushCommand.js +2 -2
- package/src/table/commit.js +13 -11
- package/src/table/count.js +8 -8
- package/src/table/delete.js +4 -4
- package/src/table/deleteSessionContext.js +2 -14
- package/src/table/executeQueries/executeChanges.js +3 -3
- package/src/table/executeQueries/executeQueriesCore.js +2 -2
- package/src/table/executeQueries/executeQuery.js +2 -2
- package/src/table/executeQueries/resolveExecuteQuery.js +3 -10
- package/src/table/executeQueries.js +4 -4
- package/src/table/getFromDbById.js +1 -1
- package/src/table/getMany.js +7 -7
- package/src/table/getManyDto.js +3 -4
- package/src/table/getSessionContext.js +4 -4
- package/src/table/getSessionSingleton.js +3 -2
- package/src/table/groupBy/newQuery.js +4 -4
- package/src/table/groupBy.js +9 -9
- package/src/table/insert.js +10 -13
- package/src/table/joinRelation/getRelatives.js +6 -6
- package/src/table/newCascadeDeleteStrategy.js +1 -7
- package/src/table/newGetRelated.js +3 -3
- package/src/table/newManyRelation.js +9 -9
- package/src/table/newOneRelation.js +9 -9
- package/src/table/newPrimaryKeyFilter.js +6 -6
- package/src/table/newQuery.js +5 -5
- package/src/table/newRelatedTable.js +6 -12
- package/src/table/newRowCache.js +17 -17
- package/src/table/newThrow.js +2 -2
- package/src/table/oneRelation/getRelatives.js +5 -5
- package/src/table/popChanges.js +3 -3
- package/src/table/promise.js +2 -8
- package/src/table/query/extractLimit.js +2 -2
- package/src/table/query/extractOffset.js +2 -2
- package/src/table/query/extractOrderBy.js +2 -2
- package/src/table/query/newParameterized.js +8 -11
- package/src/table/query/newSingleQuery.js +7 -7
- package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
- package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
- package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +4 -4
- package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
- package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +2 -7
- package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +2 -2
- package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +2 -2
- package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +5 -5
- package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +6 -5
- package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +2 -8
- package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +2 -2
- package/src/table/query/singleQuery/negotiateExclusive.js +2 -2
- package/src/table/query/singleQuery/newColumnSql.js +3 -3
- package/src/table/query/singleQuery/newDiscriminatorSql.js +2 -2
- package/src/table/query/singleQuery/newJoinSql.js +7 -7
- package/src/table/query/singleQuery/newWhereSql.js +3 -3
- package/src/table/quote.js +4 -4
- package/src/table/relatedTable/aggregate.js +2 -8
- package/src/table/relatedTable/all.js +6 -12
- package/src/table/relatedTable/any.js +4 -11
- package/src/table/relatedTable/childColumn.js +12 -12
- package/src/table/relatedTable/columnAggregate.js +3 -3
- package/src/table/relatedTable/columnAggregateGroup.js +11 -11
- package/src/table/relatedTable/joinSql.js +5 -5
- package/src/table/relatedTable/joinSqlArray.js +3 -3
- package/src/table/relatedTable/none.js +4 -10
- package/src/table/relatedTable/relatedColumn.js +13 -13
- package/src/table/relatedTable/selectSql.js +2 -2
- package/src/table/relatedTable/subFilter.js +4 -4
- package/src/table/relatedTable/where.js +3 -9
- package/src/table/relatedTable/whereSql.js +2 -2
- package/src/table/relation/manyCache/synchronizeAdded.js +2 -2
- package/src/table/relation/manyCache/synchronizeChanged.js +3 -3
- package/src/table/relation/manyCache/synchronizeRemoved.js +2 -2
- package/src/table/relation/newForeignKeyFilter.js +2 -2
- package/src/table/relation/newManyCache.js +25 -17
- package/src/table/relation/newOneCache.js +6 -6
- package/src/table/releaseDbClient.js +4 -4
- package/src/table/resultToPromise.js +1 -3
- package/src/table/resultToRows/dbRowToRow.js +6 -13
- package/src/table/resultToRows/dbRowsToRows.js +2 -2
- package/src/table/resultToRows/decodeDbRow.js +2 -2
- package/src/table/resultToRows/delete/removeFromCache.js +4 -11
- package/src/table/resultToRows/delete.js +6 -6
- package/src/table/resultToRows/newDecodeDbRow.js +19 -25
- package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
- package/src/table/resultToRows/toDto.js +3 -3
- package/src/table/resultToRows.js +3 -3
- package/src/table/rollback.js +21 -11
- package/src/table/rowArray/negotiateNextTick.js +1 -2
- package/src/table/setSessionSingleton.js +6 -3
- package/src/table/tryGetFirstFromDb.js +4 -4
- package/src/table/tryGetFromCacheById.js +3 -3
- package/src/table/tryGetFromDbById/extractStrategy.js +2 -2
- package/src/table/tryGetFromDbById.js +8 -6
- package/src/table/tryGetSessionContext.js +3 -13
- package/src/table/tryReleaseDbClient.js +2 -2
- package/src/table/updateField.js +4 -4
- package/src/table/where.js +2 -2
- package/src/table.js +56 -53
- package/src/tedious/deleteFromSql.js +5 -5
- package/src/tedious/formatDateOut.js +1 -1
- package/src/tedious/getManyDto/newQueryCore.js +5 -5
- package/src/tedious/getManyDto/query/newSingleQuery.js +5 -5
- package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +4 -5
- package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +4 -5
- package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
- package/src/tedious/getManyDto/query/newSubQueries.js +9 -26
- package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +5 -6
- package/src/tedious/getManyDto.js +6 -6
- package/src/tedious/insert.js +3 -3
- package/src/tedious/insertSql.js +3 -3
- package/src/tedious/newDatabase.js +17 -30
- package/src/tedious/newPool.js +10 -10
- package/src/tedious/newTransaction.js +3 -4
- package/src/tedious/pool/newGenericPool.js +1 -13
- package/src/tedious/quote.js +1 -0
- package/src/validateDeleteConflict.js +4 -2
- package/src/createDomain/negotiateForwardProperty.js +0 -23
- package/src/d1/pool/defaults.js +0 -45
- package/src/mssql/pool/defaults.js +0 -45
- package/src/oracle/pool/defaults.js +0 -45
- package/src/pg/pool/defaults.js +0 -45
- package/src/sqlite/pool/defaults.js +0 -45
- package/src/table/createJSONReadStream.js +0 -7
- package/src/table/createJSONReadStreamDefault.js +0 -33
- package/src/table/createJSONReadStreamNative.js +0 -31
- package/src/table/createReadStream.js +0 -24
- package/src/table/createReadStreamCoreNative.js +0 -40
- package/src/table/createReadStreamDefault.js +0 -102
- package/src/table/createReadStreamNative.js +0 -17
- package/src/table/readStream/extractLimit.js +0 -7
- package/src/table/readStream/extractOrderBy.js +0 -59
- package/src/table/readStream/mySql/newQuery.js +0 -16
- package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
- package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
- package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
- package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
- package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
- package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
- package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
- package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
- package/src/table/readStream/newQuery.js +0 -32
- package/src/table/readStream/newQueryStream.js +0 -8
- package/src/table/readStream/pg/newQuery.js +0 -8
- package/src/table/readStream/pg/newQueryCore.js +0 -17
- package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
- package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries.js +0 -47
- package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
- package/src/table/readStreamDefault/createBatchFilter.js +0 -39
- package/src/tedious/pool/defaults.js +0 -45
- package/src/useHook.js +0 -9
package/src/pg/newPool.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
const promisify = require('../promisify');
|
|
2
|
+
const pools = require('../pools');
|
|
3
|
+
const end = require('./pool/end');
|
|
4
|
+
const newPgPool = require('./pool/newPgPool');
|
|
5
|
+
const newId = require('../newId');
|
|
6
6
|
|
|
7
7
|
function newPool(connectionString, poolOptions) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
let pool = newPgPool(connectionString, poolOptions);
|
|
9
|
+
let id = newId();
|
|
10
|
+
let boundEnd = end.bind(null, pool, id);
|
|
11
|
+
let c = {};
|
|
12
12
|
|
|
13
13
|
c.connect = pool.connect;
|
|
14
|
-
c.end =
|
|
14
|
+
c.end = promisify(boundEnd);
|
|
15
15
|
pools[id] = c;
|
|
16
16
|
return c;
|
|
17
17
|
}
|
package/src/pg/newTransaction.js
CHANGED
|
@@ -8,6 +8,7 @@ var formatDateOut = require('./formatDateOut');
|
|
|
8
8
|
var encodeJSON = require('./encodeJSON');
|
|
9
9
|
var insertSql = require('./insertSql');
|
|
10
10
|
var insert = require('./insert');
|
|
11
|
+
var quote = require('./quote');
|
|
11
12
|
|
|
12
13
|
function newResolveTransaction(domain, pool, { readonly = false } = {}) {
|
|
13
14
|
var rdb = { poolFactory: pool };
|
|
@@ -32,7 +33,7 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
|
|
|
32
33
|
caller.visitPg();
|
|
33
34
|
};
|
|
34
35
|
rdb.aggregateCount = 0;
|
|
35
|
-
rdb.quote =
|
|
36
|
+
rdb.quote = quote;
|
|
36
37
|
|
|
37
38
|
if (readonly) {
|
|
38
39
|
rdb.dbClient = {
|
package/src/pg/pool/newPgPool.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
/* eslint-disable no-prototype-builtins */
|
|
2
2
|
//slightly modified code from github.com/brianc/node-postgres
|
|
3
|
-
var
|
|
3
|
+
var log = require('../../table/log');
|
|
4
4
|
|
|
5
|
-
var defaults = require('
|
|
5
|
+
var defaults = require('../../poolDefaults');
|
|
6
6
|
var genericPool = require('../../generic-pool');
|
|
7
7
|
var _pg = require('pg');
|
|
8
|
+
var parseSearchPathParam = require('./parseSearchPathParam');
|
|
8
9
|
|
|
9
10
|
function newPgPool(connectionString, poolOptions) {
|
|
10
11
|
poolOptions = poolOptions || {};
|
|
11
12
|
let pg = poolOptions.native ? _pg.native : _pg;
|
|
13
|
+
|
|
14
|
+
// @ts-ignore
|
|
12
15
|
var pool = genericPool.Pool({
|
|
13
16
|
max: poolOptions.size || poolOptions.poolSize || defaults.poolSize,
|
|
14
17
|
idleTimeoutMillis: poolOptions.idleTimeout || defaults.poolIdleTimeout,
|
|
15
18
|
reapIntervalMillis: poolOptions.reapIntervalMillis || defaults.reapIntervalMillis,
|
|
16
|
-
log: poolOptions.log
|
|
19
|
+
log: poolOptions.log,
|
|
17
20
|
create: function(cb) {
|
|
18
21
|
var client = new pg.Client(connectionString);
|
|
19
22
|
client.connect(function(err) {
|
|
@@ -41,7 +44,8 @@ function newPgPool(connectionString, poolOptions) {
|
|
|
41
44
|
}
|
|
42
45
|
});
|
|
43
46
|
client.poolCount = 0;
|
|
44
|
-
|
|
47
|
+
negotiateSearchPath(client, connectionString, (err) => cb(err, client));
|
|
48
|
+
|
|
45
49
|
});
|
|
46
50
|
},
|
|
47
51
|
destroy: function(client) {
|
|
@@ -50,22 +54,12 @@ function newPgPool(connectionString, poolOptions) {
|
|
|
50
54
|
client.end();
|
|
51
55
|
}
|
|
52
56
|
});
|
|
53
|
-
//mixin EventEmitter to pool
|
|
54
|
-
EventEmitter.call(pool);
|
|
55
|
-
for (var key in EventEmitter.prototype) {
|
|
56
|
-
if (EventEmitter.prototype.hasOwnProperty(key)) {
|
|
57
|
-
pool[key] = EventEmitter.prototype[key];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
57
|
//monkey-patch with connect method
|
|
61
58
|
pool.connect = function(cb) {
|
|
62
|
-
var domain = process.domain;
|
|
63
59
|
pool.acquire(function(err, client) {
|
|
64
|
-
if (domain) {
|
|
65
|
-
cb = domain.bind(cb);
|
|
66
|
-
}
|
|
67
60
|
if (err) return cb(err, null, function() {
|
|
68
|
-
/*NOOP*/
|
|
61
|
+
/*NOOP*/
|
|
62
|
+
});
|
|
69
63
|
client.poolCount++;
|
|
70
64
|
cb(null, client, function(err) {
|
|
71
65
|
if (err) {
|
|
@@ -79,4 +73,17 @@ function newPgPool(connectionString, poolOptions) {
|
|
|
79
73
|
return pool;
|
|
80
74
|
}
|
|
81
75
|
|
|
76
|
+
function negotiateSearchPath(client, connectionString, cb) {
|
|
77
|
+
const searchPath = parseSearchPathParam(connectionString);
|
|
78
|
+
if (searchPath) {
|
|
79
|
+
const sql = `set search_path to ${searchPath}`;
|
|
80
|
+
log.emitQuery({sql, parameters: []});
|
|
81
|
+
return client.query(sql, cb);
|
|
82
|
+
}
|
|
83
|
+
else
|
|
84
|
+
cb();
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
82
89
|
module.exports = newPgPool;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
function parseSearchPathParam(connectionString = '') {
|
|
2
|
+
const [, queryString] = connectionString.split('?');
|
|
3
|
+
if (!queryString)
|
|
4
|
+
return;
|
|
5
|
+
const params = new URLSearchParams(queryString);
|
|
6
|
+
const searchPath = params.get('search_path');
|
|
7
|
+
return searchPath;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
module.exports = parseSearchPathParam;
|
package/src/pg/quote.js
ADDED
package/src/pg/schema.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
var query = require('../query');
|
|
2
2
|
|
|
3
|
-
function executeSchema(schema) {
|
|
3
|
+
function executeSchema(context, schema) {
|
|
4
4
|
if (!schema)
|
|
5
5
|
throw new Error('Missing schema');
|
|
6
6
|
if (!Array.isArray(schema))
|
|
7
7
|
schema = [schema];
|
|
8
|
-
return query('SET LOCAL search_path TO ' + schema.join(','));
|
|
8
|
+
return query(context, 'SET LOCAL search_path TO ' + schema.join(','));
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
module.exports = executeSchema;
|
package/src/promisify.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function promisify(original) {
|
|
2
|
+
if (typeof original !== 'function') {
|
|
3
|
+
throw new TypeError('The "original" argument must be of type Function');
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
return function(...args) {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
// Add the callback that Node-style APIs expect
|
|
9
|
+
function callback(err, ...values) {
|
|
10
|
+
if (err) {
|
|
11
|
+
return reject(err);
|
|
12
|
+
}
|
|
13
|
+
// If there's exactly one success value, return it;
|
|
14
|
+
// otherwise, return all values as an array.
|
|
15
|
+
return resolve(values.length > 1 ? values : values[0]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Call the original function, appending our callback
|
|
19
|
+
original.call(this, ...args, callback);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
module.exports = promisify;
|
package/src/query.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var executeQueries = require('./table/executeQueries');
|
|
2
2
|
var wrapQuery = require('./query/wrapQuery');
|
|
3
3
|
|
|
4
|
-
function doQuery(query) {
|
|
4
|
+
function doQuery(context, query) {
|
|
5
5
|
var wrappedQuery = wrapQuery(query);
|
|
6
|
-
return executeQueries([wrappedQuery]).then(unwrapResult);
|
|
6
|
+
return executeQueries(context, [wrappedQuery]).then(unwrapResult);
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
function unwrapResult(results) {
|
package/src/sap/deleteFromSql.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var format = 'delete from %s from %s as %s %s';
|
|
2
|
-
|
|
3
|
-
const quote = require('
|
|
2
|
+
const formatString = require('../format');
|
|
3
|
+
const quote = require('./quote');
|
|
4
4
|
|
|
5
5
|
function deleteFromSql(table, alias, whereSql) {
|
|
6
6
|
var name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias) ;
|
|
8
|
-
return
|
|
8
|
+
return formatString(format, name, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
package/src/sap/formatDateOut.js
CHANGED
package/src/sap/insert.js
CHANGED
|
@@ -5,16 +5,16 @@ let executeQueries = require('../table/executeQueries');
|
|
|
5
5
|
let pushCommand = require('../table/commands/pushCommand');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
function insertDefault(table, row, options) {
|
|
8
|
+
function insertDefault(context, table, row, options) {
|
|
9
9
|
let commands = [];
|
|
10
|
-
let insertCmd = newInsertCommand(newInsertCommandCore, table, row, options);
|
|
10
|
+
let insertCmd = newInsertCommand(newInsertCommandCore.bind(null, context), table, row, options);
|
|
11
11
|
insertCmd.disallowCompress = true;
|
|
12
|
-
pushCommand(insertCmd);
|
|
12
|
+
pushCommand(context, insertCmd);
|
|
13
13
|
|
|
14
|
-
let selectCmd = newGetLastInsertedCommand(table, row, insertCmd);
|
|
14
|
+
let selectCmd = newGetLastInsertedCommand(context, table, row, insertCmd);
|
|
15
15
|
commands.push(selectCmd);
|
|
16
16
|
|
|
17
|
-
return executeQueries(commands).then((result) => result[result.length - 1]);
|
|
17
|
+
return executeQueries(context, commands).then((result) => result[result.length - 1]);
|
|
18
18
|
|
|
19
19
|
}
|
|
20
20
|
|
package/src/sap/insertSql.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const getSessionSingleton = require('../table/getSessionSingleton');
|
|
2
1
|
const mergeSql = require('./mergeSql');
|
|
2
|
+
const quote = require('./quote');
|
|
3
3
|
|
|
4
|
-
function getSqlTemplate(_table, _row, options) {
|
|
4
|
+
function getSqlTemplate(_context, _table, _row, options) {
|
|
5
5
|
|
|
6
6
|
if (hasConcurrency(_table, options) && hasColumns())
|
|
7
|
-
return mergeSql.apply(null, arguments);
|
|
7
|
+
return mergeSql.apply(null, [...arguments].slice(1));
|
|
8
8
|
else
|
|
9
|
-
return insertSql.apply(null, arguments);
|
|
9
|
+
return insertSql.apply(null, [...arguments].slice(1));
|
|
10
10
|
|
|
11
11
|
function hasColumns() {
|
|
12
12
|
for(let p in _row) {
|
|
@@ -27,7 +27,6 @@ function hasConcurrency(table,options) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
function insertSql(table, row) {
|
|
30
|
-
const quote = getSessionSingleton('quote');
|
|
31
30
|
let columnNames = [];
|
|
32
31
|
let regularColumnNames = [];
|
|
33
32
|
let values = [];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function lastInsertedSql(table, keyValues) {
|
|
2
|
-
return keyValues.map((value,i) => {
|
|
1
|
+
function lastInsertedSql(context, table, keyValues) {
|
|
2
|
+
return keyValues.map((value, i) => {
|
|
3
3
|
let column = table._primaryColumns[i];
|
|
4
4
|
if (value === undefined && column.tsType === 'NumberColumn')
|
|
5
5
|
return `${column._dbName}=@@identity`;
|
|
6
6
|
else
|
|
7
|
-
return column.eq(value);
|
|
7
|
+
return column.eq(context, value);
|
|
8
8
|
});
|
|
9
9
|
|
|
10
10
|
}
|
package/src/sap/mergeSql.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
const
|
|
1
|
+
const quote = require('./quote');
|
|
2
2
|
|
|
3
3
|
function insertSql(table, row, options) {
|
|
4
|
-
const quote = getSessionSingleton('quote');
|
|
5
4
|
let columnNames = [];
|
|
6
5
|
let conflictColumnUpdateSql = '';
|
|
7
6
|
let values = [];
|
package/src/sap/newDatabase.js
CHANGED
|
@@ -4,10 +4,6 @@ let _begin = require('../table/begin');
|
|
|
4
4
|
let commit = require('../table/commit');
|
|
5
5
|
let rollback = require('../table/rollback');
|
|
6
6
|
let newPool = require('./newPool');
|
|
7
|
-
let useHook = require('../useHook');
|
|
8
|
-
let promise = require('promise/domains');
|
|
9
|
-
let versionArray = process.version.replace('v', '').split('.');
|
|
10
|
-
let major = parseInt(versionArray[0]);
|
|
11
7
|
let express = require('../hostExpress');
|
|
12
8
|
let hostLocal = require('../hostLocal');
|
|
13
9
|
let doQuery = require('../query');
|
|
@@ -34,15 +30,12 @@ function newDatabase(connectionString, poolOptions) {
|
|
|
34
30
|
|
|
35
31
|
if (fn)
|
|
36
32
|
return domain.run(runInTransaction);
|
|
37
|
-
else if ((major >= 12) && useHook()) {
|
|
38
|
-
domain.exitContext = true;
|
|
39
|
-
return domain.start().then(run);
|
|
40
|
-
}
|
|
41
33
|
else
|
|
42
34
|
return domain.run(run);
|
|
43
35
|
|
|
36
|
+
|
|
44
37
|
function begin() {
|
|
45
|
-
return _begin(options
|
|
38
|
+
return _begin(domain, options);
|
|
46
39
|
}
|
|
47
40
|
|
|
48
41
|
async function runInTransaction() {
|
|
@@ -50,69 +43,65 @@ function newDatabase(connectionString, poolOptions) {
|
|
|
50
43
|
let transaction = newTransaction(domain, pool, options);
|
|
51
44
|
await new Promise(transaction)
|
|
52
45
|
.then(begin)
|
|
53
|
-
.then(fn)
|
|
46
|
+
.then(() => fn(domain))
|
|
54
47
|
.then((res) => result = res)
|
|
55
|
-
.then(
|
|
56
|
-
.then(null,
|
|
48
|
+
.then(() => commit(domain))
|
|
49
|
+
.then(null, (e) => rollback(domain, e));
|
|
57
50
|
return result;
|
|
51
|
+
|
|
58
52
|
}
|
|
59
53
|
|
|
60
54
|
function run() {
|
|
61
55
|
let p;
|
|
62
56
|
let transaction = newTransaction(domain, pool, options);
|
|
63
|
-
|
|
64
|
-
p = new Promise(transaction);
|
|
65
|
-
else
|
|
66
|
-
p = new promise(transaction);
|
|
57
|
+
p = new Promise(transaction);
|
|
67
58
|
|
|
68
59
|
return p.then(begin);
|
|
69
60
|
}
|
|
70
61
|
|
|
71
62
|
};
|
|
72
63
|
|
|
73
|
-
c.createTransaction = function() {
|
|
64
|
+
c.createTransaction = function(options) {
|
|
74
65
|
let domain = createDomain();
|
|
75
66
|
let transaction = newTransaction(domain, pool);
|
|
76
|
-
let p = domain.run(() => new Promise(transaction).then(
|
|
67
|
+
let p = domain.run(() => new Promise(transaction).then(begin));
|
|
77
68
|
|
|
78
69
|
function run(fn) {
|
|
79
|
-
return p.then(
|
|
70
|
+
return p.then(() => fn(domain));
|
|
80
71
|
}
|
|
81
|
-
return run;
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
c.bindTransaction = function() {
|
|
85
|
-
// @ts-ignore
|
|
86
|
-
var domain = process.domain;
|
|
87
|
-
let p = domain.run(() => true);
|
|
88
72
|
|
|
89
|
-
function
|
|
90
|
-
return
|
|
73
|
+
function begin() {
|
|
74
|
+
return _begin(domain, options);
|
|
91
75
|
}
|
|
76
|
+
|
|
77
|
+
run.rollback = rollback.bind(null, domain);
|
|
78
|
+
run.commit = commit.bind(null, domain);
|
|
79
|
+
|
|
92
80
|
return run;
|
|
81
|
+
|
|
93
82
|
};
|
|
94
83
|
|
|
84
|
+
|
|
85
|
+
|
|
95
86
|
c.query = function(query) {
|
|
96
87
|
let domain = createDomain();
|
|
97
88
|
let transaction = newTransaction(domain, pool);
|
|
98
89
|
let p = domain.run(() => new Promise(transaction)
|
|
99
|
-
.then(() => setSessionSingleton('changes', []))
|
|
100
|
-
.then(() => doQuery(query).then(onResult, onError)));
|
|
90
|
+
.then(() => setSessionSingleton(domain, 'changes', []))
|
|
91
|
+
.then(() => doQuery(domain, query).then(onResult, onError)));
|
|
101
92
|
return p;
|
|
102
93
|
|
|
103
94
|
function onResult(result) {
|
|
104
|
-
releaseDbClient();
|
|
95
|
+
releaseDbClient(domain);
|
|
105
96
|
return result;
|
|
106
97
|
}
|
|
107
98
|
|
|
108
99
|
function onError(e) {
|
|
109
|
-
releaseDbClient();
|
|
100
|
+
releaseDbClient(domain);
|
|
110
101
|
throw e;
|
|
111
102
|
}
|
|
112
103
|
};
|
|
113
104
|
|
|
114
|
-
|
|
115
|
-
|
|
116
105
|
c.rollback = rollback;
|
|
117
106
|
c.commit = commit;
|
|
118
107
|
|
package/src/sap/newPool.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
const promisify = require('../promisify');
|
|
1
2
|
var pools = require('../pools');
|
|
2
|
-
var promise = require('../table/promise');
|
|
3
3
|
var end = require('./pool/end');
|
|
4
4
|
var newGenericPool = require('../mssql/pool/newGenericPool');
|
|
5
5
|
var newId = require('../newId');
|
|
@@ -11,7 +11,7 @@ function newPool(connectionString, poolOptions) {
|
|
|
11
11
|
var c = {};
|
|
12
12
|
|
|
13
13
|
c.connect = pool.connect;
|
|
14
|
-
c.end =
|
|
14
|
+
c.end = promisify(boundEnd);
|
|
15
15
|
pools[id] = c;
|
|
16
16
|
return c;
|
|
17
17
|
}
|
|
@@ -7,6 +7,7 @@ const formatDateOut = require('./formatDateOut');
|
|
|
7
7
|
const insertSql = require('./insertSql');
|
|
8
8
|
const insert = require('./insert');
|
|
9
9
|
const limitAndOffset = require('./limitAndOffset');
|
|
10
|
+
const quote = require('./quote');
|
|
10
11
|
|
|
11
12
|
function newResolveTransaction(domain, pool, { readonly = false } = {}) {
|
|
12
13
|
var rdb = {poolFactory: pool};
|
|
@@ -40,7 +41,7 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
|
|
|
40
41
|
caller.visitSap();
|
|
41
42
|
};
|
|
42
43
|
rdb.aggregateCount = 0;
|
|
43
|
-
rdb.quote =
|
|
44
|
+
rdb.quote = quote;
|
|
44
45
|
|
|
45
46
|
if (readonly) {
|
|
46
47
|
rdb.dbClient = {
|
package/src/sap/quote.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = (name) => `[${name}]`;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const quote = require('
|
|
1
|
+
const format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
|
|
2
|
+
const formatString = require('../format');
|
|
3
|
+
const quote = require('./quote');
|
|
4
4
|
|
|
5
5
|
function deleteFromSql(table, alias, whereSql) {
|
|
6
|
-
|
|
6
|
+
const name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias);
|
|
8
|
-
return
|
|
8
|
+
return formatString(format, name, name, alias, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
package/src/sqlite/insert.js
CHANGED
|
@@ -5,16 +5,16 @@ let executeQueries = require('../table/executeQueries');
|
|
|
5
5
|
let pushCommand = require('../table/commands/pushCommand');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
function insertDefault(table, row, options) {
|
|
8
|
+
function insertDefault(context, table, row, options) {
|
|
9
9
|
let commands = [];
|
|
10
|
-
let insertCmd = newInsertCommand(newInsertCommandCore, table, row, options);
|
|
10
|
+
let insertCmd = newInsertCommand(newInsertCommandCore.bind(null, context), table, row, options);
|
|
11
11
|
insertCmd.disallowCompress = true;
|
|
12
|
-
pushCommand(insertCmd);
|
|
12
|
+
pushCommand(context, insertCmd);
|
|
13
13
|
|
|
14
|
-
let selectCmd = newGetLastInsertedCommand(table, row, insertCmd);
|
|
14
|
+
let selectCmd = newGetLastInsertedCommand(context, table, row, insertCmd);
|
|
15
15
|
commands.push(selectCmd);
|
|
16
16
|
|
|
17
|
-
return executeQueries(commands).then((result) => result[result.length - 1]);
|
|
17
|
+
return executeQueries(context, commands).then((result) => result[result.length - 1]);
|
|
18
18
|
|
|
19
19
|
}
|
|
20
20
|
|
package/src/sqlite/insertSql.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function lastInsertedSql(table, keyValues) {
|
|
1
|
+
function lastInsertedSql(context, table, keyValues) {
|
|
2
2
|
return keyValues.map((value,i) => {
|
|
3
3
|
let column = table._primaryColumns[i];
|
|
4
4
|
if (value === undefined && column.tsType === 'NumberColumn')
|
|
5
5
|
return 'rowid IN (select last_insert_rowid())';
|
|
6
6
|
else
|
|
7
|
-
return column.eq(value);
|
|
7
|
+
return column.eq(context, value);
|
|
8
8
|
});
|
|
9
9
|
|
|
10
10
|
}
|
|
@@ -4,10 +4,6 @@ let _begin = require('../table/begin');
|
|
|
4
4
|
let commit = require('../table/commit');
|
|
5
5
|
let rollback = require('../table/rollback');
|
|
6
6
|
let newPool = require('./newPool');
|
|
7
|
-
let useHook = require('../useHook');
|
|
8
|
-
let promise = require('promise/domains');
|
|
9
|
-
let versionArray = process.version.replace('v', '').split('.');
|
|
10
|
-
let major = parseInt(versionArray[0]);
|
|
11
7
|
let express = require('../hostExpress');
|
|
12
8
|
let hostLocal = require('../hostLocal');
|
|
13
9
|
let doQuery = require('../query');
|
|
@@ -34,15 +30,11 @@ function newDatabase(connectionString, poolOptions) {
|
|
|
34
30
|
|
|
35
31
|
if (fn)
|
|
36
32
|
return domain.run(runInTransaction);
|
|
37
|
-
else if ((major >= 12) && useHook()) {
|
|
38
|
-
domain.exitContext = true;
|
|
39
|
-
return domain.start().then(run);
|
|
40
|
-
}
|
|
41
33
|
else
|
|
42
34
|
return domain.run(run);
|
|
43
35
|
|
|
44
36
|
function begin() {
|
|
45
|
-
return _begin(options
|
|
37
|
+
return _begin(domain, options);
|
|
46
38
|
}
|
|
47
39
|
|
|
48
40
|
async function runInTransaction() {
|
|
@@ -50,63 +42,55 @@ function newDatabase(connectionString, poolOptions) {
|
|
|
50
42
|
let transaction = newTransaction(domain, pool, options);
|
|
51
43
|
await new Promise(transaction)
|
|
52
44
|
.then(begin)
|
|
53
|
-
.then(fn)
|
|
45
|
+
.then(() => fn(domain))
|
|
54
46
|
.then((res) => result = res)
|
|
55
|
-
.then(
|
|
56
|
-
.then(null,
|
|
47
|
+
.then(() => commit(domain))
|
|
48
|
+
.then(null, (e) => rollback(domain, e));
|
|
57
49
|
return result;
|
|
58
50
|
}
|
|
59
51
|
|
|
60
52
|
function run() {
|
|
61
53
|
let p;
|
|
62
54
|
let transaction = newTransaction(domain, pool, options);
|
|
63
|
-
|
|
64
|
-
p = new Promise(transaction);
|
|
65
|
-
else
|
|
66
|
-
p = new promise(transaction);
|
|
55
|
+
p = new Promise(transaction);
|
|
67
56
|
|
|
68
57
|
return p.then(begin);
|
|
69
58
|
}
|
|
70
59
|
|
|
71
60
|
};
|
|
72
61
|
|
|
73
|
-
c.createTransaction = function() {
|
|
62
|
+
c.createTransaction = function(options) {
|
|
74
63
|
let domain = createDomain();
|
|
75
64
|
let transaction = newTransaction(domain, pool);
|
|
76
|
-
let p = domain.run(() => new Promise(transaction).then(
|
|
65
|
+
let p = domain.run(() => new Promise(transaction).then(begin));
|
|
77
66
|
|
|
78
67
|
function run(fn) {
|
|
79
|
-
return p.then(
|
|
68
|
+
return p.then(() => fn(domain));
|
|
80
69
|
}
|
|
70
|
+
run.rollback = rollback.bind(null, domain);
|
|
71
|
+
run.commit = commit.bind(null, domain);
|
|
81
72
|
return run;
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
c.bindTransaction = function() {
|
|
85
|
-
// @ts-ignore
|
|
86
|
-
var domain = process.domain;
|
|
87
|
-
let p = domain.run(() => true);
|
|
88
73
|
|
|
89
|
-
function
|
|
90
|
-
return
|
|
74
|
+
function begin() {
|
|
75
|
+
return _begin(domain, options);
|
|
91
76
|
}
|
|
92
|
-
return run;
|
|
93
77
|
};
|
|
94
78
|
|
|
95
79
|
c.query = function(query) {
|
|
96
80
|
let domain = createDomain();
|
|
97
81
|
let transaction = newTransaction(domain, pool);
|
|
98
82
|
let p = domain.run(() => new Promise(transaction)
|
|
99
|
-
.then(() => setSessionSingleton('changes', []))
|
|
100
|
-
.then(() => doQuery(query).then(onResult, onError)));
|
|
83
|
+
.then(() => setSessionSingleton(domain, 'changes', []))
|
|
84
|
+
.then(() => doQuery(domain, query).then(onResult, onError)));
|
|
101
85
|
return p;
|
|
102
86
|
|
|
103
87
|
function onResult(result) {
|
|
104
|
-
releaseDbClient();
|
|
88
|
+
releaseDbClient(domain);
|
|
105
89
|
return result;
|
|
106
90
|
}
|
|
107
91
|
|
|
108
92
|
function onError(e) {
|
|
109
|
-
releaseDbClient();
|
|
93
|
+
releaseDbClient(domain);
|
|
110
94
|
throw e;
|
|
111
95
|
}
|
|
112
96
|
};
|
package/src/sqlite/newPool.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
const promisify = require('../promisify');
|
|
2
|
+
const pools = require('../pools');
|
|
3
|
+
const end = require('./pool/end');
|
|
4
|
+
const newGenericPool = require('./pool/newGenericPool');
|
|
5
|
+
const newId = require('../newId');
|
|
6
6
|
|
|
7
7
|
function newPool(connectionString, poolOptions) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
let pool = newGenericPool(connectionString, poolOptions);
|
|
9
|
+
let id = newId();
|
|
10
|
+
let boundEnd = end.bind(null, pool, id);
|
|
11
|
+
let c = {};
|
|
12
12
|
|
|
13
13
|
c.connect = pool.connect;
|
|
14
|
-
c.end =
|
|
14
|
+
c.end = promisify(boundEnd);
|
|
15
15
|
pools[id] = c;
|
|
16
16
|
return c;
|
|
17
17
|
}
|