@breautek/storm 8.5.0 → 9.0.0
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/CHANGELOG.md +16 -0
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +2 -9
- package/docs/classes/Application.html +37 -38
- package/docs/classes/ConfigLoader.html +3 -3
- package/docs/classes/Database.html +2 -2
- package/docs/classes/DatabaseCastObject.html +2 -2
- package/docs/classes/DatabaseConnection.html +24 -21
- package/docs/classes/DatabaseQueryError.html +30 -9
- package/docs/classes/DeadLockError.html +30 -9
- package/docs/classes/DiskSpaceError.html +29 -8
- package/docs/classes/DropTemporaryTableQuery.html +11 -8
- package/docs/classes/DuplicateEntryError.html +29 -8
- package/docs/classes/EntityNotFoundError.html +29 -8
- package/docs/classes/ExpiredTokenError.html +29 -8
- package/docs/classes/Handler.html +4 -4
- package/docs/classes/InternalError.html +29 -8
- package/docs/classes/InvalidCredentialsError.html +29 -8
- package/docs/classes/InvalidValueError.html +29 -8
- package/docs/classes/LineString.html +2 -2
- package/docs/classes/LockWaitTimeoutError.html +30 -9
- package/docs/classes/ManagedDatabaseConnection.html +11 -5
- package/docs/classes/Middleware.html +5 -4
- package/docs/classes/MissingConfigError.html +29 -8
- package/docs/classes/MissingParameterError.html +29 -8
- package/docs/classes/MySQLConnection.html +28 -23
- package/docs/classes/MySQLDatabase.html +2 -2
- package/docs/classes/NotImplementedError.html +29 -8
- package/docs/classes/Point.html +2 -2
- package/docs/classes/Polygon.html +2 -2
- package/docs/classes/Query.html +11 -8
- package/docs/classes/RawError.html +29 -8
- package/docs/classes/RawQuery.html +11 -8
- package/docs/classes/Request.html +2 -2
- package/docs/classes/Response.html +2 -2
- package/docs/classes/ResponseData.html +2 -2
- package/docs/classes/ServiceProvider.html +2 -2
- package/docs/classes/ServiceResponse.html +2 -2
- package/docs/classes/SetSessionVariableQuery.html +11 -8
- package/docs/classes/StormError.html +29 -8
- package/docs/classes/TemporaryTableQuery.html +11 -8
- package/docs/classes/TimeoutError.html +29 -8
- package/docs/classes/Token.html +2 -2
- package/docs/classes/TokenManager.html +2 -2
- package/docs/classes/Transaction.html +2 -2
- package/docs/classes/UnauthorizedAccessError.html +29 -8
- package/docs/enums/ErrorCode.html +2 -2
- package/docs/enums/ExitCode.html +2 -2
- package/docs/enums/HTTPMethod.html +2 -2
- package/docs/enums/IsolationLevel.html +2 -2
- package/docs/enums/JWTError.html +2 -2
- package/docs/enums/StatusCode.html +2 -2
- package/docs/enums/TransactionAccessLevel.html +4 -0
- package/docs/functions/getInstance.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +1 -1
- package/docs/interfaces/IAdditionalErrorDetails.html +1 -1
- package/docs/interfaces/ICloudwatchConfig.html +2 -2
- package/docs/interfaces/ICloudwatchCredentials.html +2 -2
- package/docs/interfaces/ICloudwatchStreamConfig.html +2 -2
- package/docs/interfaces/IConfig.html +2 -2
- package/docs/interfaces/IDatabaseConfig.html +2 -2
- package/docs/interfaces/IDatabaseConnection.html +11 -5
- package/docs/interfaces/IDatabasePosition.html +2 -2
- package/docs/interfaces/IErrorResponse.html +2 -2
- package/docs/interfaces/IFormData.html +2 -2
- package/docs/interfaces/IInsertQueryResult.html +2 -2
- package/docs/interfaces/IJWTVerifyOptions.html +2 -2
- package/docs/interfaces/IOKPacket.html +2 -2
- package/docs/interfaces/IParameterMap.html +1 -1
- package/docs/interfaces/IQueryable.html +2 -2
- package/docs/interfaces/IRequestResponse.html +2 -2
- package/docs/interfaces/ISetSessionVariableQueryInput.html +2 -2
- package/docs/interfaces/IStormCLIArgs.html +2 -2
- package/docs/interfaces/ITemporaryTableQueryInput.html +2 -2
- package/docs/interfaces/IUpdateQueryResult.html +2 -2
- package/docs/interfaces/formidable.FileJSON.html +1 -1
- package/docs/interfaces/formidable.Part.html +16 -16
- package/docs/types/IDeleteQueryResult.html +1 -1
- package/docs/types/IStoredProcedureResult.html +1 -1
- package/docs/types/TCoordinate.html +1 -1
- package/lib/Application.d.ts +2 -3
- package/lib/Application.js +22 -9
- package/lib/Application.js.map +1 -1
- package/lib/DatabaseConnection.d.ts +3 -0
- package/lib/DatabaseConnection.js.map +1 -1
- package/lib/Handler.d.ts +25 -28
- package/lib/Handler.js +18 -4
- package/lib/Handler.js.map +1 -1
- package/lib/IDatabaseConnection.d.ts +8 -1
- package/lib/IRequestResponse.d.ts +2 -2
- package/lib/IRequestResponse.js +1 -1
- package/lib/ManagedDatabaseConnection.d.ts +5 -1
- package/lib/ManagedDatabaseConnection.js +11 -2
- package/lib/ManagedDatabaseConnection.js.map +1 -1
- package/lib/Middleware.d.ts +8 -2
- package/lib/Middleware.js +9 -1
- package/lib/Middleware.js.map +1 -1
- package/lib/MySQLConnection.d.ts +14 -1
- package/lib/MySQLConnection.js +37 -6
- package/lib/MySQLConnection.js.map +1 -1
- package/lib/MySQLDatabase.js +8 -10
- package/lib/MySQLDatabase.js.map +1 -1
- package/lib/Query.d.ts +2 -0
- package/lib/Query.js +2 -0
- package/lib/Query.js.map +1 -1
- package/lib/Response.d.ts +8 -5
- package/lib/Response.js +4 -3
- package/lib/Response.js.map +1 -1
- package/lib/ServiceProvider.d.ts +6 -6
- package/lib/ServiceProvider.js +8 -5
- package/lib/ServiceProvider.js.map +1 -1
- package/lib/TokenManager.d.ts +2 -1
- package/lib/TokenManager.js.map +1 -1
- package/lib/Transaction.d.ts +3 -1
- package/lib/Transaction.js +4 -2
- package/lib/Transaction.js.map +1 -1
- package/lib/TransactionAccessLevel.d.ts +7 -0
- package/lib/{IHandler.js → TransactionAccessLevel.js} +11 -2
- package/lib/TransactionAccessLevel.js.map +1 -0
- package/lib/api.d.ts +2 -5
- package/lib/api.js +4 -6
- package/lib/api.js.map +1 -1
- package/lib/private/ConnectionReplicationWaiter.js +1 -1
- package/lib/private/ConnectionReplicationWaiter.js.map +1 -1
- package/lib/private/GetProcessList.d.ts +15 -0
- package/lib/private/GetProcessList.js +11 -0
- package/lib/private/GetProcessList.js.map +1 -0
- package/lib/private/StartTransactionQuery.d.ts +8 -1
- package/lib/private/StartTransactionQuery.js +11 -2
- package/lib/private/StartTransactionQuery.js.map +1 -1
- package/package.json +17 -16
- package/src/Application.ts +23 -10
- package/src/DatabaseConnection.ts +6 -0
- package/src/Handler.ts +41 -46
- package/src/IDatabaseConnection.ts +9 -1
- package/src/IRequestResponse.ts +3 -3
- package/src/ManagedDatabaseConnection.ts +15 -2
- package/src/Middleware.ts +14 -2
- package/src/MySQLConnection.ts +43 -9
- package/src/MySQLDatabase.ts +8 -10
- package/src/Query.ts +2 -0
- package/src/Response.ts +20 -7
- package/src/ServiceProvider.ts +17 -13
- package/src/TokenManager.ts +2 -1
- package/src/Transaction.ts +5 -2
- package/src/{IServiceHeaders.ts → TransactionAccessLevel.ts} +7 -3
- package/src/api.ts +2 -5
- package/src/private/ConnectionReplicationWaiter.ts +1 -1
- package/src/private/GetProcessList.ts +20 -0
- package/src/private/StartTransactionQuery.ts +22 -4
- package/docs/classes/BackendAuthenticationMiddleware.html +0 -8
- package/docs/classes/CORSMiddleware.html +0 -14
- package/docs/interfaces/IHandler.html +0 -2
- package/docs/interfaces/IServiceHeaders.html +0 -1
- package/docs/types/IHandlerError.html +0 -5
- package/docs/types/IHandlerResponse.html +0 -11
- package/lib/BackendAuthenticationMiddleware.d.ts +0 -18
- package/lib/BackendAuthenticationMiddleware.js +0 -67
- package/lib/BackendAuthenticationMiddleware.js.map +0 -1
- package/lib/CORSMiddleware.d.ts +0 -28
- package/lib/CORSMiddleware.js +0 -81
- package/lib/CORSMiddleware.js.map +0 -1
- package/lib/IHandler.d.ts +0 -5
- package/lib/IHandler.js.map +0 -1
- package/lib/IServiceHeaders.d.ts +0 -3
- package/lib/IServiceHeaders.js +0 -18
- package/lib/IServiceHeaders.js.map +0 -1
- package/src/BackendAuthenticationMiddleware.ts +0 -75
- package/src/CORSMiddleware.ts +0 -90
- package/src/IHandler.ts +0 -22
package/lib/api.js
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.Point = exports.DatabaseCastObject = exports.ExitCode = exports.TokenManager = exports.Token = exports.
|
|
19
|
-
exports.formidable = exports.Polygon =
|
|
18
|
+
exports.LineString = exports.Point = exports.DatabaseCastObject = exports.ExitCode = exports.TokenManager = exports.Token = exports.ServiceResponse = exports.HTTPMethod = exports.ServiceProvider = exports.Handler = exports.ResponseData = exports.Response = exports.Request = exports.Middleware = exports.StatusCode = exports.LockWaitTimeoutError = exports.DeadLockError = exports.NotImplementedError = exports.DatabaseQueryError = exports.MissingConfigError = exports.DuplicateEntryError = exports.DiskSpaceError = exports.EntityNotFoundError = exports.UnauthorizedAccessError = exports.InvalidValueError = exports.ExpiredTokenError = exports.InternalError = exports.InvalidCredentialsError = exports.MissingParameterError = exports.JWTError = exports.TimeoutError = exports.StormError = exports.RawError = exports.ErrorCode = exports.TransactionAccessLevel = exports.Transaction = exports.IsolationLevel = exports.SetSessionVariableQuery = exports.RawQuery = exports.DropTemporaryTableQuery = exports.TemporaryTableQuery = exports.Query = exports.ManagedDatabaseConnection = exports.MySQLConnection = exports.MySQLDatabase = exports.DatabaseConnection = exports.Database = exports.ConfigLoader = exports.Application = exports.getInstance = void 0;
|
|
19
|
+
exports.formidable = exports.Polygon = void 0;
|
|
20
20
|
const tslib_1 = require("tslib");
|
|
21
21
|
// Application
|
|
22
22
|
var instance_1 = require("./instance");
|
|
@@ -51,6 +51,8 @@ var IsolationLevel_1 = require("./IsolationLevel");
|
|
|
51
51
|
Object.defineProperty(exports, "IsolationLevel", { enumerable: true, get: function () { return IsolationLevel_1.IsolationLevel; } });
|
|
52
52
|
var Transaction_1 = require("./Transaction");
|
|
53
53
|
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return Transaction_1.Transaction; } });
|
|
54
|
+
var TransactionAccessLevel_1 = require("./TransactionAccessLevel");
|
|
55
|
+
Object.defineProperty(exports, "TransactionAccessLevel", { enumerable: true, get: function () { return TransactionAccessLevel_1.TransactionAccessLevel; } });
|
|
54
56
|
// Errors
|
|
55
57
|
var ErrorCode_1 = require("./ErrorCode");
|
|
56
58
|
Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return ErrorCode_1.ErrorCode; } });
|
|
@@ -103,16 +105,12 @@ var ResponseData_1 = require("./ResponseData");
|
|
|
103
105
|
Object.defineProperty(exports, "ResponseData", { enumerable: true, get: function () { return ResponseData_1.ResponseData; } });
|
|
104
106
|
var Handler_1 = require("./Handler");
|
|
105
107
|
Object.defineProperty(exports, "Handler", { enumerable: true, get: function () { return Handler_1.Handler; } });
|
|
106
|
-
var CORSMiddleware_1 = require("./CORSMiddleware");
|
|
107
|
-
Object.defineProperty(exports, "CORSMiddleware", { enumerable: true, get: function () { return CORSMiddleware_1.CORSMiddleware; } });
|
|
108
108
|
var ServiceProvider_1 = require("./ServiceProvider");
|
|
109
109
|
Object.defineProperty(exports, "ServiceProvider", { enumerable: true, get: function () { return ServiceProvider_1.ServiceProvider; } });
|
|
110
110
|
var HTTPMethod_1 = require("./HTTPMethod");
|
|
111
111
|
Object.defineProperty(exports, "HTTPMethod", { enumerable: true, get: function () { return HTTPMethod_1.HTTPMethod; } });
|
|
112
112
|
var ServiceResponse_1 = require("./ServiceResponse");
|
|
113
113
|
Object.defineProperty(exports, "ServiceResponse", { enumerable: true, get: function () { return ServiceResponse_1.ServiceResponse; } });
|
|
114
|
-
var BackendAuthenticationMiddleware_1 = require("./BackendAuthenticationMiddleware");
|
|
115
|
-
Object.defineProperty(exports, "BackendAuthenticationMiddleware", { enumerable: true, get: function () { return BackendAuthenticationMiddleware_1.BackendAuthenticationMiddleware; } });
|
|
116
114
|
// Token
|
|
117
115
|
var Token_1 = require("./Token");
|
|
118
116
|
Object.defineProperty(exports, "Token", { enumerable: true, get: function () { return Token_1.Token; } });
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;AAGnB,mEAAgE;AAAxD,gIAAA,sBAAsB,OAAA;AAE9B,SAAS;AACT,yCAAsC;AAA9B,sGAAA,SAAS,OAAA;AACjB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2CAIsB;AAHlB,wGAAA,UAAU,OAAA;AAId,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,iEAA8D;AAAtD,8HAAA,qBAAqB,OAAA;AAC7B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,6DAA0D;AAAlD,0HAAA,mBAAmB,OAAA;AAC3B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+DAA4D;AAApD,4HAAA,oBAAoB,OAAA;AAE5B,OAAO;AACP,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAiD;AAAzC,kGAAA,OAAO,OAAA;AACf,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AACf,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AAkBvB,QAAQ;AACR,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,QAAQ;AACR,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,2CAAwC;AAAhC,wGAAA,UAAU,OAAA;AAClB,qCAAkC;AAA1B,kGAAA,OAAO,OAAA;AAEf,cAAc;AACd,+DAAyC;AACjC,gCAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionReplicationWaiter.js","sourceRoot":"","sources":["../../src/private/ConnectionReplicationWaiter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;EAcE;;;AAIF,oDAAiD;AACjD,kDAA+C;AAE/C,MAAa,2BAA2B;IAqBpC,YAAmB,IAAyB,EAAE,aAAqB,2BAA2B,CAAC,mBAAmB;QAC9G,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAEO,MAAM,CAAC,OAAe;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,UAAU,CAAC,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAC;YACd,CAAC,EAAE,OAAO,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAyB,EAAE,UAAkB,2BAA2B,CAAC,eAAe;QACtG,IAAI,
|
|
1
|
+
{"version":3,"file":"ConnectionReplicationWaiter.js","sourceRoot":"","sources":["../../src/private/ConnectionReplicationWaiter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;EAcE;;;AAIF,oDAAiD;AACjD,kDAA+C;AAE/C,MAAa,2BAA2B;IAqBpC,YAAmB,IAAyB,EAAE,aAAqB,2BAA2B,CAAC,mBAAmB;QAC9G,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAEO,MAAM,CAAC,OAAe;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,UAAU,CAAC,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAC;YACd,CAAC,EAAE,OAAO,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAyB,EAAE,UAAkB,2BAA2B,CAAC,eAAe;QACtG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,aAAa,GAAY,KAAK,CAAC;QACnC,IAAI,UAAU,GAAY,KAAK,CAAC;QAEhC,IAAI,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,aAAa,GAAG,IAAI,CAAC;QACzB,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,aAAa,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACV,CAAC;YAED,IAAI,UAAU,GAAsB,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;YAElF,wEAAwE;YACxE,yDAAyD;YACzD,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;gBACpH,MAAM,IAAI,6BAAa,CAAC,iCAAiC,CAAC,CAAC;YAC/D,CAAC;YAED,uDAAuD;YACvD,wDAAwD;YACxD,2BAA2B;YAC3B,IAAI,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM;YACV,CAAC;YAED,wDAAwD;YACxD,mDAAmD;YACnD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC5E,MAAM;YACV,CAAC;YAED,gEAAgE;YAChE,4CAA4C;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACb,+CAA+C;YAC/C,6BAA6B;YAC7B,MAAM,IAAI,2BAAY,EAAE,CAAC;QAC7B,CAAC;QAED,+BAA+B;QAC/B,YAAY,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;;AAtFL,kEAuFC;AAtFG;;;;;GAKG;AACoB,+CAAmB,GAAW,IAAI,CAAC;AAE1D;;;;;;GAMG;AACoB,2CAAe,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,oBAAoB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IDatabaseConnection } from '../IDatabaseConnection';
|
|
2
|
+
import { Query } from '../Query';
|
|
3
|
+
export interface IGetProcessListOutput {
|
|
4
|
+
Id: number;
|
|
5
|
+
User: string;
|
|
6
|
+
Host: string;
|
|
7
|
+
db: string;
|
|
8
|
+
Command: string;
|
|
9
|
+
Time: number;
|
|
10
|
+
State: string;
|
|
11
|
+
Info: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class GetProcessList extends Query<void, IGetProcessListOutput[]> {
|
|
14
|
+
protected _getQuery(connection: IDatabaseConnection): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetProcessList = void 0;
|
|
4
|
+
const Query_1 = require("../Query");
|
|
5
|
+
class GetProcessList extends Query_1.Query {
|
|
6
|
+
_getQuery(connection) {
|
|
7
|
+
return 'SHOW PROCESSLIST';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.GetProcessList = GetProcessList;
|
|
11
|
+
//# sourceMappingURL=GetProcessList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetProcessList.js","sourceRoot":"","sources":["../../src/private/GetProcessList.ts"],"names":[],"mappings":";;;AAEA,oCAA+B;AAa/B,MAAa,cAAe,SAAQ,aAAoC;IACjD,SAAS,CAAC,UAA+B;QACxD,OAAO,kBAAkB,CAAC;IAC9B,CAAC;CACJ;AAJD,wCAIC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { Query } from '../Query';
|
|
2
|
-
|
|
2
|
+
import { TransactionAccessLevel } from '../TransactionAccessLevel';
|
|
3
|
+
/**
|
|
4
|
+
* @since 8.6.0
|
|
5
|
+
*/
|
|
6
|
+
export interface IStartTransactionQueryInput {
|
|
7
|
+
accessLevel?: TransactionAccessLevel;
|
|
8
|
+
}
|
|
9
|
+
export declare class StartTransactionQuery extends Query<IStartTransactionQueryInput, void> {
|
|
3
10
|
protected _getQuery(): string;
|
|
4
11
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright 2017-
|
|
3
|
+
Copyright 2017-2025 Norman Breau
|
|
4
4
|
|
|
5
5
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
you may not use this file except in compliance with the License.
|
|
@@ -17,9 +17,18 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.StartTransactionQuery = void 0;
|
|
19
19
|
const Query_1 = require("../Query");
|
|
20
|
+
const TransactionAccessLevel_1 = require("../TransactionAccessLevel");
|
|
20
21
|
class StartTransactionQuery extends Query_1.Query {
|
|
21
22
|
_getQuery() {
|
|
22
|
-
|
|
23
|
+
let params = this.getParameters();
|
|
24
|
+
let accessString;
|
|
25
|
+
if (params?.accessLevel === TransactionAccessLevel_1.TransactionAccessLevel.RO) {
|
|
26
|
+
accessString = 'READ ONLY';
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
accessString = 'READ WRITE';
|
|
30
|
+
}
|
|
31
|
+
return `START TRANSACTION ${accessString}`;
|
|
23
32
|
}
|
|
24
33
|
}
|
|
25
34
|
exports.StartTransactionQuery = StartTransactionQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartTransactionQuery.js","sourceRoot":"","sources":["../../src/private/StartTransactionQuery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,oCAA+B;
|
|
1
|
+
{"version":3,"file":"StartTransactionQuery.js","sourceRoot":"","sources":["../../src/private/StartTransactionQuery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,oCAA+B;AAC/B,sEAAmE;AASnE,MAAa,qBAAsB,SAAQ,aAAwC;IAC5D,SAAS;QACxB,IAAI,MAAM,GAAgC,IAAI,CAAC,aAAa,EAAE,CAAC;QAE/D,IAAI,YAAoB,CAAC;QACzB,IAAI,MAAM,EAAE,WAAW,KAAK,+CAAsB,CAAC,EAAE,EAAE,CAAC;YACpD,YAAY,GAAG,WAAW,CAAC;QAC/B,CAAC;aACI,CAAC;YACF,YAAY,GAAG,YAAY,CAAC;QAChC,CAAC;QAED,OAAO,qBAAqB,YAAY,EAAE,CAAC;IAC/C,CAAC;CACJ;AAdD,sDAcC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breautek/storm",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"description": "Object-Oriented REST API framework",
|
|
5
5
|
"main": "lib/api.js",
|
|
6
6
|
"types": "lib/api.d.ts",
|
|
@@ -46,22 +46,22 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@arashi/token": "1.0.1",
|
|
48
48
|
"@breautek/merge-change": "1.0.0",
|
|
49
|
-
"@types/body-parser": "1.19.
|
|
50
|
-
"@types/express": "
|
|
49
|
+
"@types/body-parser": "1.19.6",
|
|
50
|
+
"@types/express": "5.0.3",
|
|
51
51
|
"@types/formidable": "3.4.5",
|
|
52
|
-
"@types/jsonwebtoken": "9.0.
|
|
52
|
+
"@types/jsonwebtoken": "9.0.10",
|
|
53
53
|
"@types/mysql": "2.15.27",
|
|
54
|
-
"@types/node": "
|
|
54
|
+
"@types/node": "24.0.10",
|
|
55
55
|
"@types/uuid": "10.0.0",
|
|
56
56
|
"ajv": "8.17.1",
|
|
57
|
-
"body-parser": "
|
|
58
|
-
"commander": "
|
|
59
|
-
"express": "
|
|
60
|
-
"form-data": "4.0.
|
|
57
|
+
"body-parser": "2.2.0",
|
|
58
|
+
"commander": "14.0.0",
|
|
59
|
+
"express": "5.1.0",
|
|
60
|
+
"form-data": "4.0.3",
|
|
61
61
|
"formidable": "3.5.4",
|
|
62
62
|
"jsonwebtoken": "9.0.2",
|
|
63
63
|
"mysql": "2.18.1",
|
|
64
|
-
"sql-formatter": "15.6.
|
|
64
|
+
"sql-formatter": "15.6.6",
|
|
65
65
|
"tslib": "2.8.1",
|
|
66
66
|
"uuid": "11.1.0"
|
|
67
67
|
},
|
|
@@ -73,14 +73,15 @@
|
|
|
73
73
|
"@arashi/interfaces": "1.2.1",
|
|
74
74
|
"@arashi/logger": "4.1.3",
|
|
75
75
|
"@totalpave/eslint-plugin": "7.0.11",
|
|
76
|
-
"@types/jest": "
|
|
76
|
+
"@types/jest": "30.0.0",
|
|
77
|
+
"@types/ms": "2.1.0",
|
|
77
78
|
"auto-changelog": "2.5.0",
|
|
78
|
-
"jest": "
|
|
79
|
-
"jest-jasmine2": "
|
|
80
|
-
"ts-jest": "29.
|
|
79
|
+
"jest": "30.0.4",
|
|
80
|
+
"jest-jasmine2": "30.0.4",
|
|
81
|
+
"ts-jest": "29.4.0",
|
|
81
82
|
"ts-node": "10.9.2",
|
|
82
|
-
"typedoc": "0.28.
|
|
83
|
-
"typedoc-plugin-markdown": "4.
|
|
83
|
+
"typedoc": "0.28.7",
|
|
84
|
+
"typedoc-plugin-markdown": "4.7.0",
|
|
84
85
|
"typescript": "5.8.3"
|
|
85
86
|
}
|
|
86
87
|
}
|
package/src/Application.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2017-
|
|
2
|
+
Copyright 2017-2025 Norman Breau
|
|
3
3
|
|
|
4
4
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
you may not use this file except in compliance with the License.
|
|
@@ -20,7 +20,6 @@ import {TokenManager} from './TokenManager';
|
|
|
20
20
|
import {ApplicationEvent} from './ApplicationEvent';
|
|
21
21
|
import {Database} from './Database';
|
|
22
22
|
import {Handler} from './Handler';
|
|
23
|
-
import {IHandler} from './IHandler';
|
|
24
23
|
import {Request} from './Request';
|
|
25
24
|
import {Response} from './Response';
|
|
26
25
|
import {ConfigLoader} from './ConfigLoader';
|
|
@@ -164,10 +163,26 @@ export abstract class Application
|
|
|
164
163
|
type : 'application/json',
|
|
165
164
|
limit : this.getRequestSizeLimit()
|
|
166
165
|
}));
|
|
166
|
+
this.$server.use(BodyParser.urlencoded({
|
|
167
|
+
type: [
|
|
168
|
+
'*/form',
|
|
169
|
+
'*/x-www-form-urlencoded'
|
|
170
|
+
]
|
|
171
|
+
}));
|
|
167
172
|
this.$server.use(BodyParser.text({
|
|
168
173
|
type : 'text/*',
|
|
169
174
|
limit : this.getRequestSizeLimit()
|
|
170
175
|
}));
|
|
176
|
+
|
|
177
|
+
this.$server.use(BodyParser.raw({
|
|
178
|
+
type: [
|
|
179
|
+
'application/*',
|
|
180
|
+
'image/*',
|
|
181
|
+
'video/*',
|
|
182
|
+
'audio/*'
|
|
183
|
+
],
|
|
184
|
+
limit : this.getRequestSizeLimit()
|
|
185
|
+
}));
|
|
171
186
|
|
|
172
187
|
this.$getLogger().trace(TAG, 'Attaching handlers...');
|
|
173
188
|
await this._attachHandlers();
|
|
@@ -345,30 +360,28 @@ export abstract class Application
|
|
|
345
360
|
/**
|
|
346
361
|
*
|
|
347
362
|
* @param path The URL API path. E.g. /api/myService/myCommand/
|
|
348
|
-
* @param
|
|
363
|
+
* @param Handler
|
|
349
364
|
*/
|
|
350
|
-
|
|
351
|
-
public attachHandler(path: string, HandlerClass: IHandler): void {
|
|
352
|
-
let handler: Handler = new HandlerClass(this);
|
|
365
|
+
public attachHandler(path: string, handler: Handler): void {
|
|
353
366
|
this.attachHandlerInstance(path, handler);
|
|
354
367
|
}
|
|
355
368
|
|
|
356
369
|
public attachHandlerInstance(path: string, handler: Handler): void {
|
|
357
370
|
this.$server.get(path, (request: Express.Request, response: Express.Response) => {
|
|
358
371
|
let r: Request = new Request(request);
|
|
359
|
-
handler.get(r, new Response(response, r.getURL()));
|
|
372
|
+
handler.get(r, new Response(this, response, r.getURL()));
|
|
360
373
|
});
|
|
361
374
|
this.$server.post(path, (request: Express.Request, response: Express.Response) => {
|
|
362
375
|
let r: Request = new Request(request);
|
|
363
|
-
handler.post(r, new Response(response, r.getURL()));
|
|
376
|
+
handler.post(r, new Response(this, response, r.getURL()));
|
|
364
377
|
});
|
|
365
378
|
this.$server.put(path, (request: Express.Request, response: Express.Response) => {
|
|
366
379
|
let r: Request = new Request(request);
|
|
367
|
-
handler.put(r, new Response(response, r.getURL()));
|
|
380
|
+
handler.put(r, new Response(this, response, r.getURL()));
|
|
368
381
|
});
|
|
369
382
|
this.$server.delete(path, (request: Express.Request, response: Express.Response) => {
|
|
370
383
|
let r: Request = new Request(request);
|
|
371
|
-
handler.delete(r, new Response(response, r.getURL()));
|
|
384
|
+
handler.delete(r, new Response(this, response, r.getURL()));
|
|
372
385
|
});
|
|
373
386
|
}
|
|
374
387
|
|
|
@@ -57,6 +57,12 @@ export abstract class DatabaseConnection<TAPI> implements IDatabaseConnection {
|
|
|
57
57
|
|
|
58
58
|
this.$armLingerWarning();
|
|
59
59
|
}
|
|
60
|
+
|
|
61
|
+
public abstract isMaster(): boolean;
|
|
62
|
+
|
|
63
|
+
public abstract isReplication(): boolean;
|
|
64
|
+
|
|
65
|
+
public abstract hasReplicationEnabled(): boolean;
|
|
60
66
|
|
|
61
67
|
private $triggerLingerWarning(): void {
|
|
62
68
|
getInstance().getLogger().warn(TAG, `Database connection has lingered for ${LINGER_WARNING}ms of inactivity.\n\n${this.$instantiationStack}`);
|
package/src/Handler.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2017-
|
|
2
|
+
Copyright 2017-2025 Norman Breau
|
|
3
3
|
|
|
4
4
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
you may not use this file except in compliance with the License.
|
|
@@ -15,9 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import {Application} from './Application';
|
|
18
|
-
import {getInstance} from './instance';
|
|
19
18
|
import {Request} from './Request';
|
|
20
|
-
import {Response} from './Response';
|
|
19
|
+
import {Response, SendableData} from './Response';
|
|
21
20
|
import {Middleware} from './Middleware';
|
|
22
21
|
import {StormError} from './StormError';
|
|
23
22
|
import {IConfig} from './IConfig';
|
|
@@ -25,47 +24,28 @@ import { InternalError } from './InternalError';
|
|
|
25
24
|
import { IRequestResponse } from './IRequestResponse';
|
|
26
25
|
import { BaseLogger } from '@arashi/logger';
|
|
27
26
|
import { ResponseData } from './ResponseData';
|
|
28
|
-
import { ReadStream } from 'fs';
|
|
29
27
|
import { NotImplementedError } from './NotImplementedError';
|
|
30
28
|
import { HTTPMethod } from './HTTPMethod';
|
|
31
29
|
|
|
32
30
|
const TAG: string = 'Handler';
|
|
33
31
|
|
|
34
|
-
/**
|
|
35
|
-
* IHandlerResponse can actually accept any arbitrary object, however it may do
|
|
36
|
-
* certain things depending on the type of object it receives.
|
|
37
|
-
*
|
|
38
|
-
* - If the response object is a stream, it will pipe the stream to stream the HTTP response.
|
|
39
|
-
* - If the response is ResponseData, the status code and response data will be passed as the HTTP response.
|
|
40
|
-
* - Passing nothing/undefined will return a status code of 204 with no body content
|
|
41
|
-
* - Primitive data types will be passed as is
|
|
42
|
-
* - Buffers will be passed through
|
|
43
|
-
* - Any other object will be passed through JSON.stringify
|
|
44
|
-
*/
|
|
45
|
-
export type IHandlerResponse = ResponseData | ReadableStream | ReadStream | any | void;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Like IHandlerResponse, an IHandlerError can be any arbitrary type of object,
|
|
49
|
-
* however it's recommended that the type be of a StormError.
|
|
50
|
-
*
|
|
51
|
-
* If the type is not a StormError, the error will be wrapped in an InternalError object.
|
|
52
|
-
* This is to avoid accidental leakage of privilege data (e.g. snippets of database queries with sensitive information)
|
|
53
|
-
*/
|
|
54
|
-
export type IHandlerError = StormError | Error | any;
|
|
55
|
-
|
|
56
32
|
export class Handler<
|
|
57
33
|
TApplication extends Application = Application,
|
|
58
|
-
TGetRequest =
|
|
59
|
-
TGetResponse =
|
|
60
|
-
TPostRequest =
|
|
61
|
-
TPostResponse =
|
|
62
|
-
TPutRequest =
|
|
63
|
-
TPutResponse =
|
|
64
|
-
TDeleteRequest =
|
|
65
|
-
TDeleteResponse =
|
|
34
|
+
TGetRequest extends SendableData = void | SendableData,
|
|
35
|
+
TGetResponse extends SendableData = void | SendableData,
|
|
36
|
+
TPostRequest extends SendableData = void | SendableData,
|
|
37
|
+
TPostResponse extends SendableData = void | SendableData,
|
|
38
|
+
TPutRequest extends SendableData = void | SendableData,
|
|
39
|
+
TPutResponse extends SendableData = void | SendableData,
|
|
40
|
+
TDeleteRequest extends SendableData = void | SendableData,
|
|
41
|
+
TDeleteResponse extends SendableData = void | SendableData
|
|
66
42
|
> {
|
|
67
43
|
|
|
68
44
|
private $app: TApplication;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated
|
|
48
|
+
*/
|
|
69
49
|
private $middlewares: Middleware[];
|
|
70
50
|
|
|
71
51
|
constructor(app: TApplication) {
|
|
@@ -77,23 +57,32 @@ export class Handler<
|
|
|
77
57
|
return this.$app;
|
|
78
58
|
}
|
|
79
59
|
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated
|
|
62
|
+
*/
|
|
80
63
|
protected _initMiddlewares(): Middleware[] {
|
|
81
64
|
return [];
|
|
82
65
|
}
|
|
83
66
|
|
|
84
|
-
public getAccessToken(request: Request): string {
|
|
85
|
-
let config: IConfig =
|
|
67
|
+
public getAccessToken(request: Request<unknown>): string {
|
|
68
|
+
let config: IConfig = this.$app.getConfig();
|
|
86
69
|
let authHeader: string = config.authentication_header;
|
|
87
70
|
return request.getHeader(authHeader);
|
|
88
71
|
}
|
|
89
72
|
|
|
73
|
+
/**
|
|
74
|
+
* @deprecated
|
|
75
|
+
* @param request
|
|
76
|
+
* @param response
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
90
79
|
private async $executeMiddlewares(request: Request, response: Response): Promise<IRequestResponse> {
|
|
91
80
|
let result: IRequestResponse = {
|
|
92
81
|
request,
|
|
93
82
|
response
|
|
94
83
|
};
|
|
95
84
|
|
|
96
|
-
let logger: BaseLogger =
|
|
85
|
+
let logger: BaseLogger = this.$app.getLogger();
|
|
97
86
|
|
|
98
87
|
try {
|
|
99
88
|
for (let i: number = 0; i < this.$middlewares.length; i++) {
|
|
@@ -133,13 +122,19 @@ export class Handler<
|
|
|
133
122
|
return Promise.resolve(result);
|
|
134
123
|
}
|
|
135
124
|
|
|
125
|
+
/**
|
|
126
|
+
* @deprecated
|
|
127
|
+
* @param request
|
|
128
|
+
* @param response
|
|
129
|
+
* @param error
|
|
130
|
+
*/
|
|
136
131
|
protected _onMiddlewareReject(request: Request, response: Response, error: StormError): void {}
|
|
137
132
|
|
|
138
|
-
private $handleResponse<TResponse>(response: Response<TResponse>, data:
|
|
133
|
+
private $handleResponse<TResponse extends SendableData>(response: Response<TResponse>, data: TResponse | ResponseData<TResponse>): void {
|
|
139
134
|
response.send(data);
|
|
140
135
|
}
|
|
141
136
|
|
|
142
|
-
private $handleResponseError<TResponse>(response: Response<TResponse>, error: any): void {
|
|
137
|
+
private $handleResponseError<TResponse extends SendableData>(response: Response<TResponse>, error: any): void {
|
|
143
138
|
response.error(error);
|
|
144
139
|
}
|
|
145
140
|
|
|
@@ -148,7 +143,7 @@ export class Handler<
|
|
|
148
143
|
|
|
149
144
|
try {
|
|
150
145
|
let result: IRequestResponse<TGetRequest, TGetResponse> = await this.$executeMiddlewares(request, response);
|
|
151
|
-
let req:
|
|
146
|
+
let req: TGetResponse | ResponseData<TGetResponse> = await this._get(result.request);
|
|
152
147
|
this.$handleResponse(response, req);
|
|
153
148
|
}
|
|
154
149
|
catch (ex) {
|
|
@@ -161,7 +156,7 @@ export class Handler<
|
|
|
161
156
|
|
|
162
157
|
try {
|
|
163
158
|
let result: IRequestResponse<TPutRequest, TPutResponse> = await this.$executeMiddlewares(request, response);
|
|
164
|
-
let req:
|
|
159
|
+
let req: TPutResponse | ResponseData<TPutResponse> = await this._put(result.request);
|
|
165
160
|
this.$handleResponse(response, req);
|
|
166
161
|
}
|
|
167
162
|
catch (ex) {
|
|
@@ -187,7 +182,7 @@ export class Handler<
|
|
|
187
182
|
|
|
188
183
|
try {
|
|
189
184
|
let result: IRequestResponse<TDeleteRequest, TDeleteResponse> = await this.$executeMiddlewares(request, response);
|
|
190
|
-
let req:
|
|
185
|
+
let req: ResponseData<TDeleteResponse> | TDeleteResponse = await this._delete(result.request);
|
|
191
186
|
this.$handleResponse(response, req);
|
|
192
187
|
}
|
|
193
188
|
catch (ex) {
|
|
@@ -195,19 +190,19 @@ export class Handler<
|
|
|
195
190
|
}
|
|
196
191
|
}
|
|
197
192
|
|
|
198
|
-
protected async _get(request: Request<TGetRequest>): Promise<TGetResponse
|
|
193
|
+
protected async _get(request: Request<TGetRequest>): Promise<TGetResponse | ResponseData<TGetResponse>> {
|
|
199
194
|
throw new NotImplementedError(HTTPMethod.GET);
|
|
200
195
|
}
|
|
201
196
|
|
|
202
|
-
protected async _post(request: Request<TPostRequest>): Promise<TPostResponse
|
|
197
|
+
protected async _post(request: Request<TPostRequest>): Promise<TPostResponse | ResponseData<TPostResponse>> {
|
|
203
198
|
throw new NotImplementedError(HTTPMethod.POST);
|
|
204
199
|
}
|
|
205
200
|
|
|
206
|
-
protected async _put(request: Request<TPutRequest>): Promise<TPutResponse
|
|
201
|
+
protected async _put(request: Request<TPutRequest>): Promise<TPutResponse | ResponseData<TPutResponse>> {
|
|
207
202
|
throw new NotImplementedError(HTTPMethod.PUT);
|
|
208
203
|
}
|
|
209
204
|
|
|
210
|
-
protected async _delete(request: Request<TDeleteRequest>): Promise<TDeleteResponse
|
|
205
|
+
protected async _delete(request: Request<TDeleteRequest>): Promise<TDeleteResponse | ResponseData<TDeleteResponse>> {
|
|
211
206
|
throw new NotImplementedError(HTTPMethod.DELETE);
|
|
212
207
|
}
|
|
213
208
|
}
|
|
@@ -18,19 +18,27 @@ import { Readable } from 'stream';
|
|
|
18
18
|
import { IQueryable } from './IQueryable';
|
|
19
19
|
import { IsolationLevel } from './IsolationLevel';
|
|
20
20
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
21
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
21
22
|
|
|
22
23
|
export interface IDatabaseConnection {
|
|
23
24
|
setInstantiationStack(stack: string): void;
|
|
24
25
|
getInstantiationStack(): string;
|
|
25
26
|
getAPI(): any;
|
|
26
27
|
isReadOnly(): boolean;
|
|
28
|
+
isMaster(): boolean;
|
|
29
|
+
isReplication(): boolean;
|
|
30
|
+
hasReplicationEnabled(): boolean;
|
|
27
31
|
setTimeout(timeout: number): void;
|
|
28
32
|
getTimeout(): number;
|
|
29
33
|
query(query: IQueryable<any>, params?: any): Promise<any>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated - Streaming queries does not support post processing, creating a confusing API
|
|
37
|
+
*/
|
|
30
38
|
stream(query: IQueryable<any>, params?: any, streamOptions?: any): Readable;
|
|
31
39
|
close(forceClose?: boolean): Promise<void>;
|
|
32
40
|
isClosed(): boolean;
|
|
33
|
-
startTransaction(level?: IsolationLevel): Promise<void>;
|
|
41
|
+
startTransaction(level?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void>;
|
|
34
42
|
isTransaction(): boolean;
|
|
35
43
|
commit(): Promise<void>;
|
|
36
44
|
rollback(): Promise<void>;
|
package/src/IRequestResponse.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Copyright 2017-
|
|
2
|
+
Copyright 2017-2025 Norman Breau
|
|
3
3
|
|
|
4
4
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
you may not use this file except in compliance with the License.
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import {Request} from './Request';
|
|
18
|
-
import {Response} from './Response';
|
|
18
|
+
import {Response, SendableData} from './Response';
|
|
19
19
|
|
|
20
|
-
export interface IRequestResponse<TRequest = any, TResponse =
|
|
20
|
+
export interface IRequestResponse<TRequest = any, TResponse extends SendableData = SendableData> {
|
|
21
21
|
request: Request<TRequest>;
|
|
22
22
|
response: Response<TResponse>;
|
|
23
23
|
}
|
|
@@ -21,6 +21,7 @@ import { Query } from './Query';
|
|
|
21
21
|
import { IsolationLevel } from './IsolationLevel';
|
|
22
22
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
23
23
|
import { IQueryable } from './IQueryable';
|
|
24
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
24
25
|
|
|
25
26
|
const TAG: string = 'ManagedDatabaseConnection';
|
|
26
27
|
|
|
@@ -43,6 +44,18 @@ export class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
|
43
44
|
this.$instantionStack = new Error().stack;
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
public isMaster(): boolean {
|
|
48
|
+
throw new Error('Method not implemented.');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public isReplication(): boolean {
|
|
52
|
+
throw new Error('Method not implemented.');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public hasReplicationEnabled(): boolean {
|
|
56
|
+
throw new Error('Method not implemented.');
|
|
57
|
+
}
|
|
58
|
+
|
|
46
59
|
public formatQuery(query: IQueryable<any>): string {
|
|
47
60
|
throw new Error('Unsupported API call');
|
|
48
61
|
}
|
|
@@ -176,11 +189,11 @@ export class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
|
176
189
|
});
|
|
177
190
|
}
|
|
178
191
|
|
|
179
|
-
public startTransaction(isolationLevel?: IsolationLevel): Promise<void> {
|
|
192
|
+
public startTransaction(isolationLevel?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void> {
|
|
180
193
|
return new Promise<void>((resolve, reject) => {
|
|
181
194
|
this.$getConnection().then((connection: IDatabaseConnection) => {
|
|
182
195
|
if (!this.isManaged()) {
|
|
183
|
-
connection.startTransaction(isolationLevel).then(resolve).catch(reject);
|
|
196
|
+
connection.startTransaction(isolationLevel, accessLevel).then(resolve).catch(reject);
|
|
184
197
|
}
|
|
185
198
|
else {
|
|
186
199
|
resolve();
|
package/src/Middleware.ts
CHANGED
|
@@ -17,9 +17,21 @@
|
|
|
17
17
|
import {Request} from './Request';
|
|
18
18
|
import {Response} from './Response';
|
|
19
19
|
import {IRequestResponse} from './IRequestResponse';
|
|
20
|
+
import { Application } from './Application';
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated
|
|
24
|
+
*/
|
|
25
|
+
export abstract class Middleware<TApplication extends Application = Application> {
|
|
26
|
+
private $app: TApplication;
|
|
27
|
+
|
|
28
|
+
public constructor(app: TApplication) {
|
|
29
|
+
this.$app = app;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public getApplication(): TApplication {
|
|
33
|
+
return this.$app;
|
|
34
|
+
}
|
|
23
35
|
|
|
24
36
|
protected abstract _execute(request: Request, response: Response): Promise<IRequestResponse>;
|
|
25
37
|
|