@dbos-inc/dbos-sdk 2.10.22 → 2.11.5-preview.ga519d145ea
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/src/authdecorators.d.ts +9 -0
- package/dist/src/authdecorators.d.ts.map +1 -0
- package/dist/src/authdecorators.js +71 -0
- package/dist/src/authdecorators.js.map +1 -0
- package/dist/src/context.d.ts +8 -3
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js.map +1 -1
- package/dist/src/dbos-executor.d.ts +1 -1
- package/dist/src/dbos-executor.d.ts.map +1 -1
- package/dist/src/dbos-executor.js +45 -22
- package/dist/src/dbos-executor.js.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/databases.d.ts +1 -1
- package/dist/src/dbos-runtime/migrate.d.ts +2 -2
- package/dist/src/dbos-runtime/workflow_management.d.ts +1 -0
- package/dist/src/dbos-runtime/workflow_management.d.ts.map +1 -1
- package/dist/src/dbos-runtime/workflow_management.js +12 -1
- package/dist/src/dbos-runtime/workflow_management.js.map +1 -1
- package/dist/src/dbos.d.ts +59 -4
- package/dist/src/dbos.d.ts.map +1 -1
- package/dist/src/dbos.js +82 -18
- package/dist/src/dbos.js.map +1 -1
- package/dist/src/decorators.d.ts +73 -52
- package/dist/src/decorators.d.ts.map +1 -1
- package/dist/src/decorators.js +297 -246
- package/dist/src/decorators.js.map +1 -1
- package/dist/src/httpServer/handler.d.ts.map +1 -1
- package/dist/src/httpServer/handler.js +3 -2
- package/dist/src/httpServer/handler.js.map +1 -1
- package/dist/src/httpServer/middleware.d.ts +2 -4
- package/dist/src/httpServer/middleware.d.ts.map +1 -1
- package/dist/src/httpServer/middleware.js +3 -3
- package/dist/src/httpServer/middleware.js.map +1 -1
- package/dist/src/httpServer/server.d.ts +2 -0
- package/dist/src/httpServer/server.d.ts.map +1 -1
- package/dist/src/httpServer/server.js +205 -185
- package/dist/src/httpServer/server.js.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +25 -20
- package/dist/src/index.js.map +1 -1
- package/dist/src/paramdecorators.d.ts +30 -0
- package/dist/src/paramdecorators.d.ts.map +1 -0
- package/dist/src/paramdecorators.js +362 -0
- package/dist/src/paramdecorators.js.map +1 -0
- package/dist/src/system_database.d.ts +3 -2
- package/dist/src/system_database.d.ts.map +1 -1
- package/dist/src/system_database.js +27 -0
- package/dist/src/system_database.js.map +1 -1
- package/dist/src/testing/testing_runtime.d.ts +1 -2
- package/dist/src/testing/testing_runtime.d.ts.map +1 -1
- package/dist/src/testing/testing_runtime.js +1 -0
- package/dist/src/testing/testing_runtime.js.map +1 -1
- package/dist/src/workflow.d.ts +2 -2
- package/dist/src/workflow.d.ts.map +1 -1
- package/dist/src/workflow.js +1 -1
- package/dist/src/workflow.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/data_validation.d.ts +0 -3
- package/dist/src/data_validation.d.ts.map +0 -1
- package/dist/src/data_validation.js +0 -185
- package/dist/src/data_validation.js.map +0 -1
package/dist/src/index.js
CHANGED
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
23
|
return result;
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
exports.
|
27
|
-
exports.configureInstance = exports.OpenApiSecurityScheme = void 0;
|
26
|
+
exports.Workflow = exports.Transaction = exports.DeleteApi = exports.PutApi = exports.PatchApi = exports.PostApi = exports.GetApi = exports.InitContext = exports.createTestingRuntime = exports.KafkaConsume = exports.Kafka = exports.ArgSource = exports.ArgSources = exports.KoaMiddleware = exports.KoaGlobalMiddleware = exports.KoaCors = exports.KoaBodyParser = exports.Authentication = exports.parseConfigFile = exports.requestArgValidation = exports.SkipLogging = exports.LogMasks = exports.LogMask = exports.DefaultArgValidate = exports.DefaultArgOptional = exports.DefaultArgRequired = exports.ArgVarchar = exports.ArgDate = exports.ArgOptional = exports.ArgRequired = exports.DefaultRequiredRole = exports.RequiredRole = exports.OrmEntities = exports.ArgName = exports.MethodParameter = exports.ConfiguredInstance = exports.DBOSInitializer = exports.StatusString = exports.DBOSWorkflowConflictError = exports.DBOSResponseError = exports.Error = exports.WorkflowQueue = exports.DBOSLifecycleCallback = exports.associateClassWithEventReceiver = exports.associateMethodWithEventReceiver = exports.Scheduled = exports.SchedulerConfig = exports.SchedulerMode = exports.DBOSClient = exports.DBOS = void 0;
|
27
|
+
exports.configureInstance = exports.OpenApiSecurityScheme = exports.DBOSDeploy = exports.StoredProcedure = exports.Communicator = exports.Step = void 0;
|
28
28
|
var dbos_1 = require("./dbos");
|
29
29
|
Object.defineProperty(exports, "DBOS", { enumerable: true, get: function () { return dbos_1.DBOS; } });
|
30
30
|
var client_1 = require("./client");
|
@@ -37,37 +37,42 @@ var decorators_1 = require("./decorators");
|
|
37
37
|
// Extensions for others to register event receivers/pollers
|
38
38
|
Object.defineProperty(exports, "associateMethodWithEventReceiver", { enumerable: true, get: function () { return decorators_1.associateMethodWithEventReceiver; } });
|
39
39
|
Object.defineProperty(exports, "associateClassWithEventReceiver", { enumerable: true, get: function () { return decorators_1.associateClassWithEventReceiver; } });
|
40
|
+
var decorators_2 = require("./decorators");
|
41
|
+
Object.defineProperty(exports, "DBOSLifecycleCallback", { enumerable: true, get: function () { return decorators_2.DBOSLifecycleCallback; } });
|
40
42
|
var wfqueue_1 = require("./wfqueue");
|
41
43
|
Object.defineProperty(exports, "WorkflowQueue", { enumerable: true, get: function () { return wfqueue_1.WorkflowQueue; } });
|
42
44
|
exports.Error = __importStar(require("./error"));
|
43
45
|
var error_1 = require("./error");
|
44
46
|
Object.defineProperty(exports, "DBOSResponseError", { enumerable: true, get: function () { return error_1.DBOSResponseError; } });
|
47
|
+
Object.defineProperty(exports, "DBOSWorkflowConflictError", { enumerable: true, get: function () { return error_1.DBOSWorkflowConflictError; } });
|
45
48
|
var workflow_1 = require("./workflow");
|
46
49
|
Object.defineProperty(exports, "StatusString", { enumerable: true, get: function () { return workflow_1.StatusString; } });
|
47
|
-
var
|
50
|
+
var decorators_3 = require("./decorators");
|
48
51
|
// Method Decorators
|
49
|
-
Object.defineProperty(exports, "DBOSInitializer", { enumerable: true, get: function () { return
|
50
|
-
Object.defineProperty(exports, "RequiredRole", { enumerable: true, get: function () { return decorators_2.RequiredRole; } });
|
52
|
+
Object.defineProperty(exports, "DBOSInitializer", { enumerable: true, get: function () { return decorators_3.DBOSInitializer; } });
|
51
53
|
// Class Instances
|
52
|
-
Object.defineProperty(exports, "ConfiguredInstance", { enumerable: true, get: function () { return
|
53
|
-
// Items under redesign for v3
|
54
|
-
var decorators_3 = require("./decorators");
|
55
|
-
Object.defineProperty(exports, "LogMasks", { enumerable: true, get: function () { return decorators_3.LogMasks; } });
|
54
|
+
Object.defineProperty(exports, "ConfiguredInstance", { enumerable: true, get: function () { return decorators_3.ConfiguredInstance; } });
|
56
55
|
// Parameter Decorators
|
57
|
-
Object.defineProperty(exports, "
|
58
|
-
Object.defineProperty(exports, "ArgOptional", { enumerable: true, get: function () { return decorators_3.ArgOptional; } });
|
59
|
-
Object.defineProperty(exports, "SkipLogging", { enumerable: true, get: function () { return decorators_3.SkipLogging; } });
|
60
|
-
Object.defineProperty(exports, "LogMask", { enumerable: true, get: function () { return decorators_3.LogMask; } });
|
56
|
+
Object.defineProperty(exports, "MethodParameter", { enumerable: true, get: function () { return decorators_3.MethodParameter; } });
|
61
57
|
Object.defineProperty(exports, "ArgName", { enumerable: true, get: function () { return decorators_3.ArgName; } });
|
62
|
-
Object.defineProperty(exports, "ArgDate", { enumerable: true, get: function () { return decorators_3.ArgDate; } });
|
63
|
-
Object.defineProperty(exports, "ArgVarchar", { enumerable: true, get: function () { return decorators_3.ArgVarchar; } });
|
64
|
-
// Class Decorators
|
65
|
-
Object.defineProperty(exports, "DefaultRequiredRole", { enumerable: true, get: function () { return decorators_3.DefaultRequiredRole; } });
|
66
|
-
Object.defineProperty(exports, "DefaultArgRequired", { enumerable: true, get: function () { return decorators_3.DefaultArgRequired; } });
|
67
|
-
Object.defineProperty(exports, "DefaultArgOptional", { enumerable: true, get: function () { return decorators_3.DefaultArgOptional; } });
|
68
|
-
Object.defineProperty(exports, "DefaultArgValidate", { enumerable: true, get: function () { return decorators_3.DefaultArgValidate; } });
|
69
58
|
// ORM Class Decorators
|
70
59
|
Object.defineProperty(exports, "OrmEntities", { enumerable: true, get: function () { return decorators_3.OrmEntities; } });
|
60
|
+
var authdecorators_1 = require("./authdecorators");
|
61
|
+
Object.defineProperty(exports, "RequiredRole", { enumerable: true, get: function () { return authdecorators_1.RequiredRole; } });
|
62
|
+
// Class Decorators
|
63
|
+
Object.defineProperty(exports, "DefaultRequiredRole", { enumerable: true, get: function () { return authdecorators_1.DefaultRequiredRole; } });
|
64
|
+
var paramdecorators_1 = require("./paramdecorators");
|
65
|
+
Object.defineProperty(exports, "ArgRequired", { enumerable: true, get: function () { return paramdecorators_1.ArgRequired; } });
|
66
|
+
Object.defineProperty(exports, "ArgOptional", { enumerable: true, get: function () { return paramdecorators_1.ArgOptional; } });
|
67
|
+
Object.defineProperty(exports, "ArgDate", { enumerable: true, get: function () { return paramdecorators_1.ArgDate; } });
|
68
|
+
Object.defineProperty(exports, "ArgVarchar", { enumerable: true, get: function () { return paramdecorators_1.ArgVarchar; } });
|
69
|
+
Object.defineProperty(exports, "DefaultArgRequired", { enumerable: true, get: function () { return paramdecorators_1.DefaultArgRequired; } });
|
70
|
+
Object.defineProperty(exports, "DefaultArgOptional", { enumerable: true, get: function () { return paramdecorators_1.DefaultArgOptional; } });
|
71
|
+
Object.defineProperty(exports, "DefaultArgValidate", { enumerable: true, get: function () { return paramdecorators_1.DefaultArgValidate; } });
|
72
|
+
Object.defineProperty(exports, "LogMask", { enumerable: true, get: function () { return paramdecorators_1.LogMask; } });
|
73
|
+
Object.defineProperty(exports, "LogMasks", { enumerable: true, get: function () { return paramdecorators_1.LogMasks; } });
|
74
|
+
Object.defineProperty(exports, "SkipLogging", { enumerable: true, get: function () { return paramdecorators_1.SkipLogging; } });
|
75
|
+
Object.defineProperty(exports, "requestArgValidation", { enumerable: true, get: function () { return paramdecorators_1.requestArgValidation; } });
|
71
76
|
var config_1 = require("./dbos-runtime/config");
|
72
77
|
Object.defineProperty(exports, "parseConfigFile", { enumerable: true, get: function () { return config_1.parseConfigFile; } });
|
73
78
|
var middleware_1 = require("./httpServer/middleware");
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AAEnB,mDAAkF;AAAzE,0GAAA,aAAa,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,sGAAA,SAAS,OAAA;AAElD,2CAIsB;AAHpB,4DAA4D;AAC5D,8HAAA,gCAAgC,OAAA;AAChC,6HAAA,+BAA+B,OAAA;AAYjC,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,iDAAiC;AAEjC,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AAEnB,mDAAkF;AAAzE,0GAAA,aAAa,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,sGAAA,SAAS,OAAA;AAElD,2CAIsB;AAHpB,4DAA4D;AAC5D,8HAAA,gCAAgC,OAAA;AAChC,6HAAA,+BAA+B,OAAA;AAYjC,2CAAqD;AAA5C,mHAAA,qBAAqB,OAAA;AAE9B,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,iDAAiC;AAEjC,iCAAuE;AAA9D,0GAAA,iBAAiB,OAAA;AAAE,kHAAA,yBAAyB,OAAA;AAMrD,uCAQoB;AAJlB,wGAAA,YAAY,OAAA;AAad,2CAasB;AAZpB,oBAAoB;AACpB,6GAAA,eAAe,OAAA;AAEf,kBAAkB;AAClB,gHAAA,kBAAkB,OAAA;AAElB,uBAAuB;AACvB,6GAAA,eAAe,OAAA;AACf,qGAAA,OAAO,OAAA;AAEP,uBAAuB;AACvB,yGAAA,WAAW,OAAA;AAGb,mDAK0B;AAJxB,8GAAA,YAAY,OAAA;AAEZ,mBAAmB;AACnB,qHAAA,mBAAmB,OAAA;AAGrB,qDAY2B;AAXzB,8GAAA,WAAW,OAAA;AACX,8GAAA,WAAW,OAAA;AACX,0GAAA,OAAO,OAAA;AACP,6GAAA,UAAU,OAAA;AACV,qHAAA,kBAAkB,OAAA;AAClB,qHAAA,kBAAkB,OAAA;AAClB,qHAAA,kBAAkB,OAAA;AAClB,0GAAA,OAAO,OAAA;AACP,2GAAA,QAAQ,OAAA;AACR,8GAAA,WAAW,OAAA;AACX,uHAAA,oBAAoB,OAAA;AAGtB,gDAAsE;AAA/C,yGAAA,eAAe,OAAA;AAMtC,sDAWiC;AAN/B,wBAAwB;AACxB,4GAAA,cAAc,OAAA;AACd,2GAAA,aAAa,OAAA;AACb,qGAAA,OAAO,OAAA;AACP,iHAAA,mBAAmB,OAAA;AACnB,2GAAA,aAAa,OAAA;AAGf,0DAAuD;AAA9C,0GAAA,UAAU,OAAA;AAEnB,gDAG8B;AAF5B,gCAAgC;AAChC,oGAAA,SAAS,OAAA;AAGX,iCAAiC;AAEjC,uCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAE5B,6DAAiF;AAAxE,uHAAA,oBAAoB,OAAA;AAI7B,+BAAqC;AAA5B,mGAAA,WAAW,OAAA;AAEpB,gDAS8B;AAN5B,sBAAsB;AACtB,iGAAA,MAAM,OAAA;AACN,kGAAA,OAAO,OAAA;AACP,mGAAA,QAAQ,OAAA;AACR,iGAAA,MAAM,OAAA;AACN,oGAAA,SAAS,OAAA;AAGX,2CAQsB;AAPpB,oBAAoB;AACpB,yGAAA,WAAW,OAAA;AACX,sGAAA,QAAQ,OAAA;AACR,kGAAA,IAAI,OAAA;AACJ,0GAAA,IAAI,OAAgB;AACpB,6GAAA,eAAe,OAAA;AACf,wGAAA,UAAU,OAAA;AAGZ,sDAGiC;AAF/B,qBAAqB;AACrB,mHAAA,qBAAqB,OAAA;AASvB,2CAGsB;AAFpB,kBAAkB;AAClB,+GAAA,iBAAiB,OAAA"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { MethodRegistrationBase } from './decorators';
|
2
|
+
export declare enum ArgRequiredOptions {
|
3
|
+
REQUIRED = "REQUIRED",
|
4
|
+
OPTIONAL = "OPTIONAL",
|
5
|
+
DEFAULT = "DEFAULT"
|
6
|
+
}
|
7
|
+
export declare function requestArgValidation(methReg: MethodRegistrationBase): void;
|
8
|
+
export declare function ArgRequired(target: object, propertyKey: string | symbol, parameterIndex: number): void;
|
9
|
+
export declare function ArgOptional(target: object, propertyKey: string | symbol, parameterIndex: number): void;
|
10
|
+
export declare function ArgDate(): (target: object, propertyKey: string | symbol, parameterIndex: number) => void;
|
11
|
+
export declare function ArgVarchar(length: number): (target: object, propertyKey: string | symbol, parameterIndex: number) => void;
|
12
|
+
export declare function DefaultArgRequired<T extends {
|
13
|
+
new (...args: unknown[]): object;
|
14
|
+
}>(ctor: T): void;
|
15
|
+
export declare function DefaultArgValidate<T extends {
|
16
|
+
new (...args: unknown[]): object;
|
17
|
+
}>(ctor: T): void;
|
18
|
+
export declare function DefaultArgOptional<T extends {
|
19
|
+
new (...args: unknown[]): object;
|
20
|
+
}>(ctor: T): void;
|
21
|
+
export declare enum LogMasks {
|
22
|
+
NONE = "NONE",
|
23
|
+
HASH = "HASH",
|
24
|
+
SKIP = "SKIP"
|
25
|
+
}
|
26
|
+
export declare const LOGGER = "log";
|
27
|
+
export declare function SkipLogging(target: object, propertyKey: string | symbol, parameterIndex: number): void;
|
28
|
+
export declare function LogMask(mask: LogMasks): (target: object, propertyKey: string | symbol, parameterIndex: number) => void;
|
29
|
+
export declare function logMethodArgs<Args extends unknown[]>(methReg: MethodRegistrationBase, args: Args): Args;
|
30
|
+
//# sourceMappingURL=paramdecorators.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"paramdecorators.d.ts","sourceRoot":"","sources":["../../src/paramdecorators.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAOtD,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAuBD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,QAEnE;AA0CD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,QAa/F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,QAa/F;AAED,wBAAgB,OAAO,aAEI,MAAM,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,UAetF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,YACd,MAAM,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,UActF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,QAKzF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,QAKzF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,QAKzF;AAED,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAMD,eAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,QAW/F;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,YACX,MAAM,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,UAYtF;AAwBD,wBAAgB,aAAa,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,QA4BhG"}
|
@@ -0,0 +1,362 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.logMethodArgs = exports.LogMask = exports.SkipLogging = exports.LOGGER = exports.LogMasks = exports.DefaultArgOptional = exports.DefaultArgValidate = exports.DefaultArgRequired = exports.ArgVarchar = exports.ArgDate = exports.ArgOptional = exports.ArgRequired = exports.requestArgValidation = exports.ArgRequiredOptions = void 0;
|
27
|
+
const crypto = __importStar(require("crypto"));
|
28
|
+
const decorators_1 = require("./decorators");
|
29
|
+
const error_1 = require("./error");
|
30
|
+
const dbos_1 = require("./dbos");
|
31
|
+
const VALIDATOR = 'validator';
|
32
|
+
var ArgRequiredOptions;
|
33
|
+
(function (ArgRequiredOptions) {
|
34
|
+
ArgRequiredOptions["REQUIRED"] = "REQUIRED";
|
35
|
+
ArgRequiredOptions["OPTIONAL"] = "OPTIONAL";
|
36
|
+
ArgRequiredOptions["DEFAULT"] = "DEFAULT";
|
37
|
+
})(ArgRequiredOptions || (exports.ArgRequiredOptions = ArgRequiredOptions = {}));
|
38
|
+
function getValidatorClassInfo(methReg) {
|
39
|
+
const valInfo = methReg.defaults?.getRegisteredInfo(VALIDATOR);
|
40
|
+
return {
|
41
|
+
defaultArgRequired: valInfo?.defaultArgRequired ?? ArgRequiredOptions.DEFAULT,
|
42
|
+
defaultArgValidate: valInfo?.defaultArgValidate ?? false,
|
43
|
+
};
|
44
|
+
}
|
45
|
+
function requestArgValidation(methReg) {
|
46
|
+
methReg.getRegisteredInfo(VALIDATOR).performArgValidation = true;
|
47
|
+
}
|
48
|
+
exports.requestArgValidation = requestArgValidation;
|
49
|
+
function getValidatorFuncInfo(methReg) {
|
50
|
+
const valInfo = methReg.getRegisteredInfo(VALIDATOR);
|
51
|
+
return {
|
52
|
+
performArgValidation: valInfo.performArgValidation ?? false,
|
53
|
+
};
|
54
|
+
}
|
55
|
+
function getValidatorArgInfo(param) {
|
56
|
+
const valInfo = param.getRegisteredInfo(VALIDATOR);
|
57
|
+
return {
|
58
|
+
required: valInfo.required ?? ArgRequiredOptions.DEFAULT,
|
59
|
+
};
|
60
|
+
}
|
61
|
+
class ValidationInserter {
|
62
|
+
installMiddleware(methReg) {
|
63
|
+
const valInfo = getValidatorClassInfo(methReg);
|
64
|
+
const defaultArgRequired = valInfo.defaultArgRequired;
|
65
|
+
const defaultArgValidate = valInfo.defaultArgValidate;
|
66
|
+
let shouldValidate = getValidatorFuncInfo(methReg).performArgValidation ||
|
67
|
+
defaultArgRequired === ArgRequiredOptions.REQUIRED ||
|
68
|
+
defaultArgValidate;
|
69
|
+
for (const a of methReg.args) {
|
70
|
+
if (getValidatorArgInfo(a).required === ArgRequiredOptions.REQUIRED) {
|
71
|
+
shouldValidate = true;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
if (shouldValidate) {
|
75
|
+
requestArgValidation(methReg);
|
76
|
+
methReg.addEntryInterceptor(validateMethodArgs, 20);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
const valInserter = new ValidationInserter();
|
81
|
+
function ArgRequired(target, propertyKey, parameterIndex) {
|
82
|
+
const curParam = (0, decorators_1.associateParameterWithExternal)(VALIDATOR, target, undefined, propertyKey.toString(), undefined, parameterIndex);
|
83
|
+
curParam.required = ArgRequiredOptions.REQUIRED;
|
84
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
85
|
+
}
|
86
|
+
exports.ArgRequired = ArgRequired;
|
87
|
+
function ArgOptional(target, propertyKey, parameterIndex) {
|
88
|
+
const curParam = (0, decorators_1.associateParameterWithExternal)(VALIDATOR, target, undefined, propertyKey.toString(), undefined, parameterIndex);
|
89
|
+
curParam.required = ArgRequiredOptions.OPTIONAL;
|
90
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
91
|
+
}
|
92
|
+
exports.ArgOptional = ArgOptional;
|
93
|
+
function ArgDate() {
|
94
|
+
// TODO a little more info about it - is it a date or timestamp precision?
|
95
|
+
return function (target, propertyKey, parameterIndex) {
|
96
|
+
const curParam = (0, decorators_1.associateParameterWithExternal)('type', target, undefined, propertyKey.toString(), undefined, parameterIndex);
|
97
|
+
if (!curParam.dataType)
|
98
|
+
curParam.dataType = new decorators_1.DBOSDataType();
|
99
|
+
curParam.dataType.dataType = 'timestamp';
|
100
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
101
|
+
};
|
102
|
+
}
|
103
|
+
exports.ArgDate = ArgDate;
|
104
|
+
function ArgVarchar(length) {
|
105
|
+
return function (target, propertyKey, parameterIndex) {
|
106
|
+
const curParam = (0, decorators_1.associateParameterWithExternal)('type', target, undefined, propertyKey.toString(), undefined, parameterIndex);
|
107
|
+
curParam.dataType = decorators_1.DBOSDataType.varchar(length);
|
108
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
109
|
+
};
|
110
|
+
}
|
111
|
+
exports.ArgVarchar = ArgVarchar;
|
112
|
+
function DefaultArgRequired(ctor) {
|
113
|
+
const clsreg = dbos_1.DBOS.associateClassWithInfo(VALIDATOR, ctor);
|
114
|
+
clsreg.defaultArgRequired = ArgRequiredOptions.REQUIRED;
|
115
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
116
|
+
}
|
117
|
+
exports.DefaultArgRequired = DefaultArgRequired;
|
118
|
+
function DefaultArgValidate(ctor) {
|
119
|
+
const clsreg = dbos_1.DBOS.associateClassWithInfo(VALIDATOR, ctor);
|
120
|
+
clsreg.defaultArgValidate = true;
|
121
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
122
|
+
}
|
123
|
+
exports.DefaultArgValidate = DefaultArgValidate;
|
124
|
+
function DefaultArgOptional(ctor) {
|
125
|
+
const clsreg = dbos_1.DBOS.associateClassWithInfo(VALIDATOR, ctor);
|
126
|
+
clsreg.defaultArgRequired = ArgRequiredOptions.OPTIONAL;
|
127
|
+
(0, decorators_1.registerMiddlewareInserter)(valInserter);
|
128
|
+
}
|
129
|
+
exports.DefaultArgOptional = DefaultArgOptional;
|
130
|
+
var LogMasks;
|
131
|
+
(function (LogMasks) {
|
132
|
+
LogMasks["NONE"] = "NONE";
|
133
|
+
LogMasks["HASH"] = "HASH";
|
134
|
+
LogMasks["SKIP"] = "SKIP";
|
135
|
+
})(LogMasks || (exports.LogMasks = LogMasks = {}));
|
136
|
+
exports.LOGGER = 'log';
|
137
|
+
function SkipLogging(target, propertyKey, parameterIndex) {
|
138
|
+
const curParam = (0, decorators_1.associateParameterWithExternal)(exports.LOGGER, target, undefined, propertyKey.toString(), undefined, parameterIndex);
|
139
|
+
curParam.logMask = LogMasks.SKIP;
|
140
|
+
}
|
141
|
+
exports.SkipLogging = SkipLogging;
|
142
|
+
function LogMask(mask) {
|
143
|
+
return function (target, propertyKey, parameterIndex) {
|
144
|
+
const curParam = (0, decorators_1.associateParameterWithExternal)(exports.LOGGER, target, undefined, propertyKey.toString(), undefined, parameterIndex);
|
145
|
+
curParam.logMask = mask;
|
146
|
+
};
|
147
|
+
}
|
148
|
+
exports.LogMask = LogMask;
|
149
|
+
function generateSaltedHash(data, salt) {
|
150
|
+
const hash = crypto.createHash('sha256'); // You can use other algorithms like 'md5', 'sha512', etc.
|
151
|
+
hash.update(data + salt);
|
152
|
+
return hash.digest('hex');
|
153
|
+
}
|
154
|
+
function getLoggerArgInfo(param) {
|
155
|
+
const valInfo = param.getRegisteredInfo(exports.LOGGER);
|
156
|
+
return {
|
157
|
+
logMask: valInfo.logMask ?? LogMasks.NONE,
|
158
|
+
};
|
159
|
+
}
|
160
|
+
class LoggingInserter {
|
161
|
+
installMiddleware(methReg) {
|
162
|
+
methReg.addEntryInterceptor(logMethodArgs, 30);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
const logInserter = new LoggingInserter();
|
166
|
+
(0, decorators_1.registerMiddlewareInserter)(logInserter);
|
167
|
+
function logMethodArgs(methReg, args) {
|
168
|
+
// Argument logging
|
169
|
+
args.forEach((argValue, idx) => {
|
170
|
+
if (idx === 0 && methReg.passContext) {
|
171
|
+
return;
|
172
|
+
}
|
173
|
+
let loggedArgValue = argValue;
|
174
|
+
const logMask = getLoggerArgInfo(methReg.args[idx]).logMask;
|
175
|
+
if (logMask === LogMasks.SKIP) {
|
176
|
+
return;
|
177
|
+
}
|
178
|
+
else {
|
179
|
+
if (logMask !== LogMasks.NONE) {
|
180
|
+
// For now this means hash
|
181
|
+
if (methReg.args[idx].dataType?.dataType === 'json') {
|
182
|
+
loggedArgValue = generateSaltedHash(JSON.stringify(argValue), 'JSONSALT');
|
183
|
+
}
|
184
|
+
else {
|
185
|
+
// Yes, we are doing the same as above for now.
|
186
|
+
// It can be better if we have verified the type of the data
|
187
|
+
loggedArgValue = generateSaltedHash(JSON.stringify(argValue), 'DBOSSALT');
|
188
|
+
}
|
189
|
+
}
|
190
|
+
dbos_1.DBOS.span?.setAttribute(methReg.args[idx].name, loggedArgValue);
|
191
|
+
}
|
192
|
+
});
|
193
|
+
return args;
|
194
|
+
}
|
195
|
+
exports.logMethodArgs = logMethodArgs;
|
196
|
+
function validateMethodArgs(methReg, args) {
|
197
|
+
const validationError = (msg) => {
|
198
|
+
const err = new error_1.DBOSDataValidationError(msg);
|
199
|
+
dbos_1.DBOS.span?.addEvent('DataValidationError', { message: err.message });
|
200
|
+
return err;
|
201
|
+
};
|
202
|
+
// Input validation
|
203
|
+
methReg.args.forEach((argDescriptor, idx) => {
|
204
|
+
if (idx === 0 && methReg.passContext) {
|
205
|
+
return;
|
206
|
+
}
|
207
|
+
let argValue = args[idx];
|
208
|
+
// So... there is such a thing as "undefined", and another thing called "null"
|
209
|
+
// We will fold this to "undefined" for our APIs. It's just a rule of ours.
|
210
|
+
if (argValue === null) {
|
211
|
+
argValue = undefined;
|
212
|
+
args[idx] = undefined;
|
213
|
+
}
|
214
|
+
if (argValue === undefined) {
|
215
|
+
const valInfo = getValidatorClassInfo(methReg);
|
216
|
+
const defaultArgRequired = valInfo.defaultArgRequired;
|
217
|
+
const defaultArgValidate = valInfo.defaultArgValidate;
|
218
|
+
const argRequired = getValidatorArgInfo(argDescriptor).required;
|
219
|
+
if (argRequired === ArgRequiredOptions.REQUIRED ||
|
220
|
+
(argRequired === ArgRequiredOptions.DEFAULT &&
|
221
|
+
(defaultArgRequired === ArgRequiredOptions.REQUIRED || defaultArgValidate))) {
|
222
|
+
if (idx >= args.length) {
|
223
|
+
throw validationError(`Insufficient number of arguments calling ${methReg.name} - ${args.length}/${methReg.args.length}`);
|
224
|
+
}
|
225
|
+
else {
|
226
|
+
throw validationError(`Missing required argument ${argDescriptor.name} of ${methReg.name}`);
|
227
|
+
}
|
228
|
+
}
|
229
|
+
}
|
230
|
+
if (argValue === undefined) {
|
231
|
+
return;
|
232
|
+
}
|
233
|
+
if (argValue instanceof String) {
|
234
|
+
argValue = argValue.toString();
|
235
|
+
args[idx] = argValue;
|
236
|
+
}
|
237
|
+
if (argValue instanceof Boolean) {
|
238
|
+
argValue = argValue.valueOf();
|
239
|
+
args[idx] = argValue;
|
240
|
+
}
|
241
|
+
if (argValue instanceof Number) {
|
242
|
+
argValue = argValue.valueOf();
|
243
|
+
args[idx] = argValue;
|
244
|
+
}
|
245
|
+
if (argValue instanceof BigInt) {
|
246
|
+
// ES2020+
|
247
|
+
argValue = argValue.valueOf();
|
248
|
+
args[idx] = argValue;
|
249
|
+
}
|
250
|
+
// Argument validation - below - if we have any info about it
|
251
|
+
if (!argDescriptor.dataType)
|
252
|
+
return;
|
253
|
+
// Maybe look into https://www.npmjs.com/package/validator
|
254
|
+
// We could support emails and other validations too with something like that...
|
255
|
+
if (argDescriptor.dataType.dataType === 'text' || argDescriptor.dataType.dataType === 'varchar') {
|
256
|
+
if (typeof argValue !== 'string') {
|
257
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and should be a string`);
|
258
|
+
}
|
259
|
+
if (argDescriptor.dataType.length > 0) {
|
260
|
+
if (argValue.length > argDescriptor.dataType.length) {
|
261
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' with maximum length ${argDescriptor.dataType.length} but has length ${argValue.length}`);
|
262
|
+
}
|
263
|
+
}
|
264
|
+
}
|
265
|
+
if (argDescriptor.dataType.dataType === 'boolean') {
|
266
|
+
if (typeof argValue !== 'boolean') {
|
267
|
+
if (typeof argValue === 'number') {
|
268
|
+
if (argValue === 0 || argValue === 1) {
|
269
|
+
argValue = argValue !== 0 ? true : false;
|
270
|
+
args[idx] = argValue;
|
271
|
+
}
|
272
|
+
else {
|
273
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and may be a number (0 or 1) convertible to boolean, but was ${argValue}.`);
|
274
|
+
}
|
275
|
+
}
|
276
|
+
else if (typeof argValue === 'string') {
|
277
|
+
if (argValue.toLowerCase() === 't' || argValue.toLowerCase() === 'true' || argValue === '1') {
|
278
|
+
argValue = true;
|
279
|
+
args[idx] = argValue;
|
280
|
+
}
|
281
|
+
else if (argValue.toLowerCase() === 'f' || argValue.toLowerCase() === 'false' || argValue === '0') {
|
282
|
+
argValue = false;
|
283
|
+
args[idx] = argValue;
|
284
|
+
}
|
285
|
+
else {
|
286
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and may be a string convertible to boolean, but was ${argValue}.`);
|
287
|
+
}
|
288
|
+
}
|
289
|
+
else {
|
290
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and should be a boolean`);
|
291
|
+
}
|
292
|
+
}
|
293
|
+
}
|
294
|
+
if (argDescriptor.dataType.dataType === 'decimal') {
|
295
|
+
// Range check precision and scale... wishing there was a bigdecimal
|
296
|
+
// Floats don't really permit us to check the scale.
|
297
|
+
if (typeof argValue !== 'number') {
|
298
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and should be a number`);
|
299
|
+
}
|
300
|
+
let prec = argDescriptor.dataType.precision;
|
301
|
+
if (prec > 0) {
|
302
|
+
if (argDescriptor.dataType.scale > 0) {
|
303
|
+
prec = prec - argDescriptor.dataType.scale;
|
304
|
+
}
|
305
|
+
if (Math.abs(argValue) >= Math.exp(prec)) {
|
306
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is out of range for type '${argDescriptor.dataType.formatAsString()}`);
|
307
|
+
}
|
308
|
+
}
|
309
|
+
}
|
310
|
+
if (argDescriptor.dataType.dataType === 'double' || argDescriptor.dataType.dataType === 'integer') {
|
311
|
+
if (typeof argValue !== 'number') {
|
312
|
+
if (typeof argValue === 'string') {
|
313
|
+
const n = parseFloat(argValue);
|
314
|
+
if (isNaN(n)) {
|
315
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and should be a number`);
|
316
|
+
}
|
317
|
+
argValue = n;
|
318
|
+
args[idx] = argValue;
|
319
|
+
}
|
320
|
+
else if (typeof argValue === 'bigint') {
|
321
|
+
// Hum, maybe we should allow bigint as a type, number won't even do 64-bit.
|
322
|
+
argValue = Number(argValue).valueOf();
|
323
|
+
args[idx] = argValue;
|
324
|
+
}
|
325
|
+
else {
|
326
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' and should be a number`);
|
327
|
+
}
|
328
|
+
}
|
329
|
+
if (argDescriptor.dataType.dataType === 'integer') {
|
330
|
+
if (!Number.isInteger(argValue)) {
|
331
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' but has a fractional part`);
|
332
|
+
}
|
333
|
+
}
|
334
|
+
}
|
335
|
+
if (argDescriptor.dataType.dataType === 'timestamp') {
|
336
|
+
if (!(argValue instanceof Date)) {
|
337
|
+
if (typeof argValue === 'string') {
|
338
|
+
const d = Date.parse(argValue);
|
339
|
+
if (isNaN(d)) {
|
340
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' but is a string that will not parse as Date`);
|
341
|
+
}
|
342
|
+
argValue = new Date(d);
|
343
|
+
args[idx] = argValue;
|
344
|
+
}
|
345
|
+
else {
|
346
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' but is not a date or time`);
|
347
|
+
}
|
348
|
+
}
|
349
|
+
}
|
350
|
+
if (argDescriptor.dataType.dataType === 'uuid') {
|
351
|
+
// This validation is loose. A tighter one would be:
|
352
|
+
// /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/
|
353
|
+
// That matches UUID version 1-5.
|
354
|
+
if (!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(String(argValue))) {
|
355
|
+
throw validationError(`Argument ${argDescriptor.name} of ${methReg.name} is marked as type '${argDescriptor.dataType.dataType}' but is not a valid UUID`);
|
356
|
+
}
|
357
|
+
}
|
358
|
+
// JSON can be anything. We can validate it against a schema at some later version...
|
359
|
+
});
|
360
|
+
return args;
|
361
|
+
}
|
362
|
+
//# sourceMappingURL=paramdecorators.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"paramdecorators.js","sourceRoot":"","sources":["../../src/paramdecorators.ts"],"names":[],"mappings":"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"}
|
@@ -3,7 +3,6 @@ import { DBOSConfigInternal } from './dbos-executor';
|
|
3
3
|
import { Pool, PoolConfig, Client } from 'pg';
|
4
4
|
import { GetPendingWorkflowsOutput, GetQueuedWorkflowsInput, GetWorkflowsInput, StatusString } from './workflow';
|
5
5
|
import { operation_outputs } from '../schemas/system_db_schema';
|
6
|
-
import { HTTPRequest } from './context';
|
7
6
|
import { GlobalLogger as Logger } from './telemetry/logs';
|
8
7
|
import { Knex } from 'knex';
|
9
8
|
import { WorkflowQueue } from './wfqueue';
|
@@ -77,6 +76,7 @@ export interface SystemDatabase {
|
|
77
76
|
upsertEventDispatchState(state: DBOSEventReceiverState): Promise<DBOSEventReceiverState>;
|
78
77
|
listWorkflows(input: GetWorkflowsInput): Promise<WorkflowStatusInternal[]>;
|
79
78
|
listQueuedWorkflows(input: GetQueuedWorkflowsInput): Promise<WorkflowStatusInternal[]>;
|
79
|
+
garbageCollect(timeThresholdMs?: number, rowsThreshold?: number): Promise<void>;
|
80
80
|
}
|
81
81
|
export interface WorkflowStatusInternal {
|
82
82
|
workflowUUID: string;
|
@@ -91,7 +91,7 @@ export interface WorkflowStatusInternal {
|
|
91
91
|
input: string;
|
92
92
|
assumedRole: string;
|
93
93
|
authenticatedRoles: string[];
|
94
|
-
request:
|
94
|
+
request: object;
|
95
95
|
executorId: string;
|
96
96
|
applicationVersion?: string;
|
97
97
|
applicationID: string;
|
@@ -194,6 +194,7 @@ export declare class PostgresSystemDatabase implements SystemDatabase {
|
|
194
194
|
listQueuedWorkflows(input: GetQueuedWorkflowsInput): Promise<WorkflowStatusInternal[]>;
|
195
195
|
clearQueueAssignment(workflowID: string): Promise<boolean>;
|
196
196
|
findAndMarkStartableWorkflows(queue: WorkflowQueue, executorID: string, appVersion: string): Promise<string[]>;
|
197
|
+
garbageCollect(cutoffEpochTimestampMs?: number, rowsThreshold?: number): Promise<void>;
|
197
198
|
}
|
198
199
|
export {};
|
199
200
|
//# sourceMappingURL=system_database.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"system_database.d.ts","sourceRoot":"","sources":["../../src/system_database.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAiB,IAAI,EAA4B,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAUvF,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EAEL,iBAAiB,EAIlB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"system_database.d.ts","sourceRoot":"","sources":["../../src/system_database.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAiB,IAAI,EAA4B,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAUvF,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EAEL,iBAAiB,EAIlB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,kBAAkB,CAChB,UAAU,EAAE,sBAAsB,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAIlG,qCAAqC,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IACnD,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzE,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GACA,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IACpH,mBAAmB,CACjB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAGnD,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,EACxD,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CACV,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACpF,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrF,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,6BAA6B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAG/G,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExF,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE1B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,GACA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAY1B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;IAC/C,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAGzF,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC3E,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACvF,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF;AAGD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,qBAAqB,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAoBvF;AAED,cAAM,eAAe,CAAC,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAa;IAC/D,KAAK,EAAE,MAAM,CAAK;IAElB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI;;;;IASrD,kBAAkB,CAAC,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;IAUjD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;CAOrC;AAqUD,qBAAa,sBAAuB,YAAW,cAAc;;IAoCzD,QAAQ,CAAC,YAAY,EAAE,UAAU;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,aAAa,CAAC;IAtCzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAEtC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IAoBtB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC1C,yBAAyB,EAAE,MAAM,CAAQ;IACzC,wBAAwB,EAAE,MAAM,CAAS;IACzC,wBAAwB,EAAE,OAAO,CAAQ;IACzC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAyB;IACzE,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAyB;IAC1E,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,IAAI,CAAC,CAAyB;IAExE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAa;IACvE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;gBAGxD,YAAY,EAAE,UAAU,EACxB,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,oBAAQ;IAiC3B,IAAI;IAiCJ,OAAO;WAgBA,YAAY,CAAC,UAAU,EAAE,kBAAkB;IAelD,kBAAkB,CACtB,UAAU,EAAE,sBAAsB,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+ClD,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IA0CjG,qCAAqC,CACzC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAS5C,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IASxE,qBAAqB,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,OAAO,EACtB,OAAO,GAAE;QACP,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClB,GACL,OAAO,CAAC,IAAI,CAAC;IASV,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACxF,OAAO,CAAC,MAAM,CAAC;IAkFZ,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD/F,QAAQ,CAAC,SAAS,qBAAqB;IAGjC,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA6BV,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,GAAE,MAAmD,GAClE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoHnB,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,EACxD,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,IAAI,CAAC;IAUV,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,GACA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsHnB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CjD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCvD,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC;IAcvE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtC,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IA2BnC,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IA+ElD;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;IAmDzC,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAuBxC,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA8BxF,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA0C1E,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAmCtF,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1D,6BAA6B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqH9G,cAAc,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA+B7F"}
|
@@ -1403,6 +1403,33 @@ class PostgresSystemDatabase {
|
|
1403
1403
|
// Return the IDs of all functions we marked started
|
1404
1404
|
return claimedIDs;
|
1405
1405
|
}
|
1406
|
+
async garbageCollect(cutoffEpochTimestampMs, rowsThreshold) {
|
1407
|
+
if (rowsThreshold !== undefined) {
|
1408
|
+
// Get the created_at timestamp of the rows_threshold newest row
|
1409
|
+
const result = (await this.knexDB(`${dbos_executor_1.DBOSExecutor.systemDBSchemaName}.workflow_status`)
|
1410
|
+
.select('created_at')
|
1411
|
+
.orderBy('created_at', 'desc')
|
1412
|
+
.limit(1)
|
1413
|
+
.offset(rowsThreshold - 1)
|
1414
|
+
.first());
|
1415
|
+
if (result !== undefined) {
|
1416
|
+
const rowsBasedCutoff = result.created_at;
|
1417
|
+
// Use the more restrictive cutoff (higher timestamp = more recent = more deletion)
|
1418
|
+
if (cutoffEpochTimestampMs === undefined || rowsBasedCutoff > cutoffEpochTimestampMs) {
|
1419
|
+
cutoffEpochTimestampMs = rowsBasedCutoff;
|
1420
|
+
}
|
1421
|
+
}
|
1422
|
+
}
|
1423
|
+
if (cutoffEpochTimestampMs === undefined) {
|
1424
|
+
return;
|
1425
|
+
}
|
1426
|
+
// Delete all workflows older than cutoff that are NOT PENDING or ENQUEUED
|
1427
|
+
await this.knexDB(`${dbos_executor_1.DBOSExecutor.systemDBSchemaName}.workflow_status`)
|
1428
|
+
.where('created_at', '<', cutoffEpochTimestampMs)
|
1429
|
+
.whereNotIn('status', [workflow_1.StatusString.PENDING, workflow_1.StatusString.ENQUEUED])
|
1430
|
+
.del();
|
1431
|
+
return;
|
1432
|
+
}
|
1406
1433
|
}
|
1407
1434
|
exports.PostgresSystemDatabase = PostgresSystemDatabase;
|
1408
1435
|
__decorate([
|