velocious 1.0.455 → 1.0.457
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 +1 -1
- package/build/cli/commands/db/drop.js +7 -3
- package/build/database/datetime-storage.js +188 -0
- package/build/database/drivers/base.js +2 -2
- package/build/database/drivers/mssql/index.js +4 -0
- package/build/database/drivers/mysql/index.js +11 -1
- package/build/database/drivers/pgsql/index.js +15 -3
- package/build/database/migration/index.js +127 -0
- package/build/database/record/index.js +6 -63
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +19 -3
- package/build/frontend-model-controller.js +4 -2
- package/build/frontend-models/base.js +7 -0
- package/build/frontend-models/websocket-publishers.js +11 -0
- package/build/src/cli/commands/db/drop.d.ts.map +1 -1
- package/build/src/cli/commands/db/drop.js +10 -4
- package/build/src/database/datetime-storage.d.ts +56 -0
- package/build/src/database/datetime-storage.d.ts.map +1 -0
- package/build/src/database/datetime-storage.js +174 -0
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +3 -3
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +4 -1
- package/build/src/database/drivers/mysql/index.d.ts +5 -0
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +10 -2
- package/build/src/database/drivers/pgsql/index.d.ts +5 -0
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +13 -3
- package/build/src/database/migration/index.d.ts +66 -0
- package/build/src/database/migration/index.d.ts.map +1 -1
- package/build/src/database/migration/index.js +112 -1
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +7 -52
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +20 -4
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +5 -3
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +6 -1
- package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-publishers.js +12 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/cli/commands/db/drop.js +7 -3
- package/src/database/datetime-storage.js +188 -0
- package/src/database/drivers/base.js +2 -2
- package/src/database/drivers/mssql/index.js +4 -0
- package/src/database/drivers/mysql/index.js +11 -1
- package/src/database/drivers/pgsql/index.js +15 -3
- package/src/database/migration/index.js +127 -0
- package/src/database/record/index.js +6 -63
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +19 -3
- package/src/frontend-model-controller.js +4 -2
- package/src/frontend-models/base.js +7 -0
- package/src/frontend-models/websocket-publishers.js +11 -0
|
@@ -5,6 +5,7 @@ import timeout from "awaitery/build/timeout.js"
|
|
|
5
5
|
import wait from "awaitery/build/wait.js"
|
|
6
6
|
import FrontendModelQuery, {frontendModelEventOptionsPayload} from "./query.js"
|
|
7
7
|
import FrontendModelPreloader from "./preloader.js"
|
|
8
|
+
import { normalizeDateStringForWrite } from "../database/datetime-storage.js"
|
|
8
9
|
import {registerFrontendModel, resolveFrontendModelClass} from "./model-registry.js"
|
|
9
10
|
import {validateFrontendModelResourceCommandName, validateFrontendModelResourcePath} from "./resource-config-validation.js"
|
|
10
11
|
import {deserializeFrontendModelTransportValue, serializeFrontendModelTransportValue} from "./transport-serialization.js"
|
|
@@ -3775,6 +3776,12 @@ export default class FrontendModelBase {
|
|
|
3775
3776
|
*/
|
|
3776
3777
|
static findByPrimitiveValuesMatch(actualValue, expectedValue) {
|
|
3777
3778
|
if (actualValue instanceof Date && typeof expectedValue === "string") {
|
|
3779
|
+
const normalizedExpectedValue = normalizeDateStringForWrite(expectedValue)
|
|
3780
|
+
|
|
3781
|
+
if (normalizedExpectedValue instanceof Date) {
|
|
3782
|
+
return actualValue.toISOString() === normalizedExpectedValue.toISOString()
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3778
3785
|
return actualValue.toISOString() === expectedValue
|
|
3779
3786
|
}
|
|
3780
3787
|
|
|
@@ -43,6 +43,12 @@ function frontendModelResourcesFromAbilityResourcesList(abilityResources) {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (frontendModelResourceDefinitionIsClass(resourceClass)) {
|
|
46
|
+
// An abstract base resource (no static ModelClass — e.g. an app's shared
|
|
47
|
+
// `BaseResource` that other resources extend) backs no model, so it isn't a
|
|
48
|
+
// publishable frontend model. Skip it instead of letting `modelClass()`
|
|
49
|
+
// throw `requires a static ModelClass` during ability-resource discovery.
|
|
50
|
+
if (!resourceClass.ModelClass) continue
|
|
51
|
+
|
|
46
52
|
const modelName = resourceClass.modelClass().getModelName()
|
|
47
53
|
|
|
48
54
|
resources[modelName] = resourceClass
|
|
@@ -102,6 +108,11 @@ export async function ensureFrontendModelWebsocketPublishersRegistered(configura
|
|
|
102
108
|
}
|
|
103
109
|
|
|
104
110
|
for (const resourceClass of Object.values(allFrontendModels)) {
|
|
111
|
+
// An abstract base resource (no static ModelClass — e.g. an app's shared
|
|
112
|
+
// `BaseResource` that other resources extend) backs no model, so there is
|
|
113
|
+
// nothing to publish realtime events for. Skip it instead of throwing.
|
|
114
|
+
if (!resourceClass.ModelClass) continue
|
|
115
|
+
|
|
105
116
|
const modelClass = resourceClass.modelClass()
|
|
106
117
|
const modelName = modelClass.getModelName()
|
|
107
118
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/db/drop.js"],"names":[],"mappings":"AAIA;IACE;;;OAGG;IACH,WAFa,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/db/drop.js"],"names":[],"mappings":"AAIA;IACE;;;OAGG;IACH,WAFa,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CA8CzC;IAED;;;;OAIG;IACH,yCAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAOzB;CACF;0BA9EyB,mBAAmB"}
|
|
@@ -26,9 +26,15 @@ export default class DbDrop extends DbBaseCommand {
|
|
|
26
26
|
// driver's system default.
|
|
27
27
|
const configuredFallback = newConfiguration.useDatabase;
|
|
28
28
|
const useConfiguredFallback = typeof configuredFallback == "string" && configuredFallback.length > 0 && configuredFallback != targetDatabaseName;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
if (useConfiguredFallback) {
|
|
30
|
+
newConfiguration.database = configuredFallback;
|
|
31
|
+
}
|
|
32
|
+
else if (databaseType == "mysql") {
|
|
33
|
+
delete newConfiguration.database;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
newConfiguration.database = this.systemFallbackDatabaseName(databaseType);
|
|
37
|
+
}
|
|
32
38
|
if (databaseType == "mssql" && newConfiguration.sqlConfig?.database) {
|
|
33
39
|
delete newConfiguration.sqlConfig.database;
|
|
34
40
|
}
|
|
@@ -63,4 +69,4 @@ export default class DbDrop extends DbBaseCommand {
|
|
|
63
69
|
await this.queryOrCollectSqls(sqls, (sql) => ({ databaseName, sql }));
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvZGIvZHJvcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGFBQWEsTUFBTSxtQkFBbUIsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFFeEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFPLFNBQVEsYUFBYTtJQUMvQzs7O09BR0c7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRTVELElBQUksV0FBVyxJQUFJLGFBQWEsSUFBSSxXQUFXLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRkFBc0YsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUN0SCxDQUFDO1FBRUQsS0FBSyxNQUFNLGtCQUFrQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztZQUNsRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUVoRixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUV2QyxJQUFJLFlBQVksSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUE7Z0JBQ2hGLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO2dCQUN6RSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFBO2dCQUVuSCxzRUFBc0U7Z0JBQ3RFLGdFQUFnRTtnQkFDaEUsb0VBQW9FO2dCQUNwRSxvRUFBb0U7Z0JBQ3BFLDJCQUEyQjtnQkFDM0IsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUE7Z0JBQ3ZELE1BQU0scUJBQXFCLEdBQUcsT0FBTyxrQkFBa0IsSUFBSSxRQUFRLElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQTtnQkFFaEosSUFBSSxxQkFBcUIsRUFBRSxDQUFDO29CQUMxQixnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUE7Z0JBQ2hELENBQUM7cUJBQU0sSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFBO2dCQUNsQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sZ0JBQWdCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDM0UsQ0FBQztnQkFFRCxJQUFJLFlBQVksSUFBSSxPQUFPLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUNwRSxPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUE7Z0JBQzVDLENBQUM7Z0JBRUQsTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQ25FLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO2dCQUM3QyxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsMEJBQTBCLENBQUMsWUFBWTtRQUNyQyxJQUFJLFlBQVksSUFBSSxPQUFPO1lBQUUsT0FBTyxVQUFVLENBQUE7UUFDOUMsSUFBSSxZQUFZLElBQUksT0FBTztZQUFFLE9BQU8sUUFBUSxDQUFBO1FBRTVDLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxrQkFBa0I7UUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDN0csTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBRXpGLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERiQmFzZUNvbW1hbmQgZnJvbSBcIi4vYmFzZS1jb21tYW5kLmpzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQge2luY29ycG9yYXRlfSBmcm9tIFwiaW5jb3Jwb3JhdG9yXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGJEcm9wIGV4dGVuZHMgRGJCYXNlQ29tbWFuZCB7XG4gIC8qKlxuICAgKiBSdW5zIGV4ZWN1dGUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQgfCBBcnJheTxvYmplY3Q+Pn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzIHdoZW4gcnVubmluZyBpbiBkcnkgbW9kZS5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXRFbnZpcm9ubWVudCgpXG5cbiAgICBpZiAoZW52aXJvbm1lbnQgIT0gXCJkZXZlbG9wbWVudFwiICYmIGVudmlyb25tZW50ICE9IFwidGVzdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoaXMgY29tbWFuZCBzaG91bGQgb25seSBiZSBleGVjdXRlZCBvbiBkZXZlbG9wbWVudCBhbmQgdGVzdCBlbnZpcm9ubWVudHMgYW5kIG5vdDogJHtlbnZpcm9ubWVudH1gKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGF0YWJhc2VJZGVudGlmaWVyIG9mIHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLmdldERhdGFiYXNlSWRlbnRpZmllcnMoKSkge1xuICAgICAgY29uc3QgZGF0YWJhc2VUeXBlID0gdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VUeXBlKGRhdGFiYXNlSWRlbnRpZmllcilcblxuICAgICAgaWYgKHRoaXMuYXJncy50ZXN0aW5nKSB0aGlzLnJlc3VsdCA9IFtdXG5cbiAgICAgIGlmIChkYXRhYmFzZVR5cGUgIT0gXCJzcWxpdGVcIikge1xuICAgICAgICBjb25zdCBkYXRhYmFzZVBvb2wgPSB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXREYXRhYmFzZVBvb2woZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgICAgICBjb25zdCBuZXdDb25maWd1cmF0aW9uID0gaW5jb3Jwb3JhdGUoe30sIGRhdGFiYXNlUG9vbC5nZXRDb25maWd1cmF0aW9uKCkpXG4gICAgICAgIGNvbnN0IHRhcmdldERhdGFiYXNlTmFtZSA9IGRpZ2codGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGF0YWJhc2VDb25maWd1cmF0aW9uKCksIGRhdGFiYXNlSWRlbnRpZmllciwgXCJkYXRhYmFzZVwiKVxuXG4gICAgICAgIC8vIENvbm5lY3QgdG8gYSBrbm93bi1leGlzdGluZyBzeXN0ZW0gZGF0YWJhc2U6IHRoZSB0YXJnZXQgaXMgYWJvdXQgdG9cbiAgICAgICAgLy8gYmUgZHJvcHBlZCAoc28gd2UgY2FuJ3QgYmUgY29ubmVjdGVkIHRvIGl0KSwgUG9zdGdyZXMgcmVqZWN0c1xuICAgICAgICAvLyBEUk9QIERBVEFCQVNFIHdoaWxlIGNvbm5lY3RlZCB0byBpdCwgYW5kIGNvbmZpZ3VyZWQgYHVzZURhdGFiYXNlYFxuICAgICAgICAvLyBtYXkgaGFwcGVuIHRvIGVxdWFsIHRoZSB0YXJnZXQg4oCUIGluIHRoYXQgY2FzZSBmYWxsIHRocm91Z2ggdG8gdGhlXG4gICAgICAgIC8vIGRyaXZlcidzIHN5c3RlbSBkZWZhdWx0LlxuICAgICAgICBjb25zdCBjb25maWd1cmVkRmFsbGJhY2sgPSBuZXdDb25maWd1cmF0aW9uLnVzZURhdGFiYXNlXG4gICAgICAgIGNvbnN0IHVzZUNvbmZpZ3VyZWRGYWxsYmFjayA9IHR5cGVvZiBjb25maWd1cmVkRmFsbGJhY2sgPT0gXCJzdHJpbmdcIiAmJiBjb25maWd1cmVkRmFsbGJhY2subGVuZ3RoID4gMCAmJiBjb25maWd1cmVkRmFsbGJhY2sgIT0gdGFyZ2V0RGF0YWJhc2VOYW1lXG5cbiAgICAgICAgaWYgKHVzZUNvbmZpZ3VyZWRGYWxsYmFjaykge1xuICAgICAgICAgIG5ld0NvbmZpZ3VyYXRpb24uZGF0YWJhc2UgPSBjb25maWd1cmVkRmFsbGJhY2tcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJteXNxbFwiKSB7XG4gICAgICAgICAgZGVsZXRlIG5ld0NvbmZpZ3VyYXRpb24uZGF0YWJhc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdDb25maWd1cmF0aW9uLmRhdGFiYXNlID0gdGhpcy5zeXN0ZW1GYWxsYmFja0RhdGFiYXNlTmFtZShkYXRhYmFzZVR5cGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwibXNzcWxcIiAmJiBuZXdDb25maWd1cmF0aW9uLnNxbENvbmZpZz8uZGF0YWJhc2UpIHtcbiAgICAgICAgICBkZWxldGUgbmV3Q29uZmlndXJhdGlvbi5zcWxDb25maWcuZGF0YWJhc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMud2l0aERpcmVjdERhdGFiYXNlQ29ubmVjdGlvbihuZXdDb25maWd1cmF0aW9uLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5kcm9wRGF0YWJhc2UoZGF0YWJhc2VJZGVudGlmaWVyKVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5hcmdzLnRlc3RpbmcpIHJldHVybiB0aGlzLnJlc3VsdFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN5c3RlbSBmYWxsYmFjayBkYXRhYmFzZSBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VUeXBlIC0gRGF0YWJhc2UgdHlwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTeXN0ZW0vbWFpbnRlbmFuY2UgZGF0YWJhc2UgbmFtZSBmb3IgdGhhdCBkcml2ZXIuXG4gICAqL1xuICBzeXN0ZW1GYWxsYmFja0RhdGFiYXNlTmFtZShkYXRhYmFzZVR5cGUpIHtcbiAgICBpZiAoZGF0YWJhc2VUeXBlID09IFwicGdzcWxcIikgcmV0dXJuIFwicG9zdGdyZXNcIlxuICAgIGlmIChkYXRhYmFzZVR5cGUgPT0gXCJtc3NxbFwiKSByZXR1cm4gXCJtYXN0ZXJcIlxuXG4gICAgcmV0dXJuIFwibXlzcWxcIlxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZHJvcCBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlSWRlbnRpZmllciAtIERhdGFiYXNlIGlkZW50aWZpZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBkcm9wRGF0YWJhc2UoZGF0YWJhc2VJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgZGF0YWJhc2VOYW1lID0gZGlnZyh0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXREYXRhYmFzZUNvbmZpZ3VyYXRpb24oKSwgZGF0YWJhc2VJZGVudGlmaWVyLCBcImRhdGFiYXNlXCIpXG4gICAgY29uc3Qgc3FscyA9IHRoaXMuZ2V0RGF0YWJhc2VDb25uZWN0aW9uKCkuZHJvcERhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwge2lmRXhpc3RzOiB0cnVlfSlcblxuICAgIGF3YWl0IHRoaXMucXVlcnlPckNvbGxlY3RTcWxzKHNxbHMsIChzcWwpID0+ICh7ZGF0YWJhc2VOYW1lLCBzcWx9KSlcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks whether a string has a datetime timezone suffix.
|
|
3
|
+
* @param {string} value - Value to check.
|
|
4
|
+
* @returns {boolean} - Whether the string ends with `Z` or an offset.
|
|
5
|
+
*/
|
|
6
|
+
export function hasDateTimeTimezone(value: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Formats a Date for database storage as a UTC instant.
|
|
9
|
+
* @param {Date} value - Date value.
|
|
10
|
+
* @param {object} args - Options.
|
|
11
|
+
* @param {string} args.databaseType - Database driver type.
|
|
12
|
+
* @returns {string} - Database datetime string.
|
|
13
|
+
*/
|
|
14
|
+
export function formatDateForDatabase(value: Date, { databaseType }: {
|
|
15
|
+
databaseType: string;
|
|
16
|
+
}): string;
|
|
17
|
+
/**
|
|
18
|
+
* Normalizes a record write string into a Date when it is a recognized datetime string.
|
|
19
|
+
* Timezone-less strings are external input and are treated as UTC.
|
|
20
|
+
* @param {string} value - Value to normalize.
|
|
21
|
+
* @returns {Date | string} - Normalized value.
|
|
22
|
+
*/
|
|
23
|
+
export function normalizeDateStringForWrite(value: string): Date | string;
|
|
24
|
+
/**
|
|
25
|
+
* Normalizes a record write value into a Date when it is a recognized datetime string.
|
|
26
|
+
* Timezone-less strings are external input and are treated as UTC.
|
|
27
|
+
* @param {Date | string | null | undefined} value - Value to normalize.
|
|
28
|
+
* @returns {Date | string | null | undefined} - Normalized value.
|
|
29
|
+
*/
|
|
30
|
+
export function normalizeDateValueForWrite(value: Date | string | null | undefined): Date | string | null | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Normalizes a database value into a Date for record reads.
|
|
33
|
+
* SQLite timezone-less rows are legacy local wall-clock rows produced before
|
|
34
|
+
* UTC storage. New SQLite writes include `Z`, so they take the exact branch.
|
|
35
|
+
* @param {Date | string | null | undefined} value - Stored database value.
|
|
36
|
+
* @param {object} args - Options.
|
|
37
|
+
* @param {string} args.databaseType - Database driver type.
|
|
38
|
+
* @returns {Date | string | null | undefined} - Normalized value.
|
|
39
|
+
*/
|
|
40
|
+
export function normalizeDateValueForRead(value: Date | string | null | undefined, { databaseType }: {
|
|
41
|
+
databaseType: string;
|
|
42
|
+
}): Date | string | null | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Converts a legacy timezone-less datetime value into the new UTC database storage format.
|
|
45
|
+
* The optional offset follows JavaScript's `Date#getTimezoneOffset()` sign convention.
|
|
46
|
+
* @param {Date | string | null | undefined} value - Legacy value.
|
|
47
|
+
* @param {object} args - Options.
|
|
48
|
+
* @param {string} args.databaseType - Database driver type.
|
|
49
|
+
* @param {number | undefined} [args.legacyLocalOffsetMinutes] - UTC-minus-local offset in minutes.
|
|
50
|
+
* @returns {Date | string | null | undefined} - Converted database value or the original value.
|
|
51
|
+
*/
|
|
52
|
+
export function convertLegacyDateValueToUtcStorage(value: Date | string | null | undefined, { databaseType, legacyLocalOffsetMinutes }: {
|
|
53
|
+
databaseType: string;
|
|
54
|
+
legacyLocalOffsetMinutes?: number | undefined;
|
|
55
|
+
}): Date | string | null | undefined;
|
|
56
|
+
//# sourceMappingURL=datetime-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime-storage.d.ts","sourceRoot":"","sources":["../../../src/database/datetime-storage.js"],"names":[],"mappings":"AAuFA;;;;GAIG;AACH,2CAHW,MAAM,GACJ,OAAO,CAInB;AAED;;;;;;GAMG;AACH,6CALW,IAAI,oBAEZ;IAAqB,YAAY,EAAzB,MAAM;CACd,GAAU,MAAM,CAoBlB;AAED;;;;;GAKG;AACH,mDAHW,MAAM,GACJ,IAAI,GAAG,MAAM,CAMzB;AAED;;;;;GAKG;AACH,kDAHW,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAM5C;AAED;;;;;;;;GAQG;AACH,iDALW,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,oBAExC;IAAqB,YAAY,EAAzB,MAAM;CACd,GAAU,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAW5C;AAED;;;;;;;;GAQG;AACH,0DANW,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,8CAExC;IAAqB,YAAY,EAAzB,MAAM;IACoB,wBAAwB,GAAlD,MAAM,GAAG,SAAS;CAC1B,GAAU,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAa5C"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import isDate from "../utils/is-date.js";
|
|
3
|
+
const dateTimeWithTimezonePattern = /^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:[zZ]|[+-]\d{2}:\d{2})$/;
|
|
4
|
+
const dateTimeWithoutTimezonePattern = /^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?$/;
|
|
5
|
+
const timezoneSuffixPattern = /(?:[zZ]|[+-]\d{2}:\d{2})$/;
|
|
6
|
+
/**
|
|
7
|
+
* Pads a numeric date/time part.
|
|
8
|
+
* @param {number} value - Numeric part.
|
|
9
|
+
* @param {number} length - Target length.
|
|
10
|
+
* @returns {string} - Padded part.
|
|
11
|
+
*/
|
|
12
|
+
function pad(value, length = 2) {
|
|
13
|
+
return String(value).padStart(length, "0");
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Replaces SQL-style datetime separators with ISO separators for parsing.
|
|
17
|
+
* @param {string} value - Datetime string.
|
|
18
|
+
* @returns {string} - Datetime string with a `T` separator.
|
|
19
|
+
*/
|
|
20
|
+
function normalizeDateTimeSeparator(value) {
|
|
21
|
+
return value.includes("T") ? value : value.replace(" ", "T");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parses a datetime string with an explicit timezone.
|
|
25
|
+
* @param {string} value - Datetime string.
|
|
26
|
+
* @returns {Date | string} - Parsed date or the original string when it is not a recognized datetime.
|
|
27
|
+
*/
|
|
28
|
+
function parseTimezoneQualifiedDateTimeString(value) {
|
|
29
|
+
if (!dateTimeWithTimezonePattern.test(value))
|
|
30
|
+
return value;
|
|
31
|
+
const timestamp = Date.parse(normalizeDateTimeSeparator(value));
|
|
32
|
+
if (Number.isNaN(timestamp))
|
|
33
|
+
return value;
|
|
34
|
+
return new Date(timestamp);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parses a timezone-less datetime string as UTC.
|
|
38
|
+
* @param {string} value - Datetime string.
|
|
39
|
+
* @returns {Date | string} - Parsed date or the original string when it is not a recognized datetime.
|
|
40
|
+
*/
|
|
41
|
+
function parseTimezoneLessDateTimeStringAsUtc(value) {
|
|
42
|
+
if (!dateTimeWithoutTimezonePattern.test(value))
|
|
43
|
+
return value;
|
|
44
|
+
const timestamp = Date.parse(`${normalizeDateTimeSeparator(value)}Z`);
|
|
45
|
+
if (Number.isNaN(timestamp))
|
|
46
|
+
return value;
|
|
47
|
+
return new Date(timestamp);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parses a timezone-less datetime string as the current runtime's local wall-clock time.
|
|
51
|
+
* @param {string} value - Datetime string.
|
|
52
|
+
* @returns {Date | string} - Parsed date or the original string when it is not a recognized datetime.
|
|
53
|
+
*/
|
|
54
|
+
function parseTimezoneLessDateTimeStringAsLocal(value) {
|
|
55
|
+
if (!dateTimeWithoutTimezonePattern.test(value))
|
|
56
|
+
return value;
|
|
57
|
+
const timestamp = Date.parse(normalizeDateTimeSeparator(value));
|
|
58
|
+
if (Number.isNaN(timestamp))
|
|
59
|
+
return value;
|
|
60
|
+
return new Date(timestamp);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parses a timezone-less legacy datetime string with an explicit local offset.
|
|
64
|
+
* The offset follows JavaScript's `Date#getTimezoneOffset()` sign convention.
|
|
65
|
+
* @param {string} value - Datetime string.
|
|
66
|
+
* @param {number} legacyLocalOffsetMinutes - UTC-minus-local offset in minutes.
|
|
67
|
+
* @returns {Date | string} - Parsed date or the original string when it is not a recognized datetime.
|
|
68
|
+
*/
|
|
69
|
+
function parseTimezoneLessDateTimeStringWithOffset(value, legacyLocalOffsetMinutes) {
|
|
70
|
+
const utcDate = parseTimezoneLessDateTimeStringAsUtc(value);
|
|
71
|
+
if (!isDate(utcDate))
|
|
72
|
+
return value;
|
|
73
|
+
return new Date(utcDate.getTime() + (legacyLocalOffsetMinutes * 60 * 1000));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Checks whether a string has a datetime timezone suffix.
|
|
77
|
+
* @param {string} value - Value to check.
|
|
78
|
+
* @returns {boolean} - Whether the string ends with `Z` or an offset.
|
|
79
|
+
*/
|
|
80
|
+
export function hasDateTimeTimezone(value) {
|
|
81
|
+
return timezoneSuffixPattern.test(value);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Formats a Date for database storage as a UTC instant.
|
|
85
|
+
* @param {Date} value - Date value.
|
|
86
|
+
* @param {object} args - Options.
|
|
87
|
+
* @param {string} args.databaseType - Database driver type.
|
|
88
|
+
* @returns {string} - Database datetime string.
|
|
89
|
+
*/
|
|
90
|
+
export function formatDateForDatabase(value, { databaseType }) {
|
|
91
|
+
if (databaseType == "sqlite")
|
|
92
|
+
return value.toISOString();
|
|
93
|
+
return [
|
|
94
|
+
value.getUTCFullYear(),
|
|
95
|
+
"-",
|
|
96
|
+
pad(value.getUTCMonth() + 1),
|
|
97
|
+
"-",
|
|
98
|
+
pad(value.getUTCDate()),
|
|
99
|
+
" ",
|
|
100
|
+
pad(value.getUTCHours()),
|
|
101
|
+
":",
|
|
102
|
+
pad(value.getUTCMinutes()),
|
|
103
|
+
":",
|
|
104
|
+
pad(value.getUTCSeconds()),
|
|
105
|
+
".",
|
|
106
|
+
pad(value.getUTCMilliseconds(), 3)
|
|
107
|
+
].join("");
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Normalizes a record write string into a Date when it is a recognized datetime string.
|
|
111
|
+
* Timezone-less strings are external input and are treated as UTC.
|
|
112
|
+
* @param {string} value - Value to normalize.
|
|
113
|
+
* @returns {Date | string} - Normalized value.
|
|
114
|
+
*/
|
|
115
|
+
export function normalizeDateStringForWrite(value) {
|
|
116
|
+
if (hasDateTimeTimezone(value))
|
|
117
|
+
return parseTimezoneQualifiedDateTimeString(value);
|
|
118
|
+
return parseTimezoneLessDateTimeStringAsUtc(value);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Normalizes a record write value into a Date when it is a recognized datetime string.
|
|
122
|
+
* Timezone-less strings are external input and are treated as UTC.
|
|
123
|
+
* @param {Date | string | null | undefined} value - Value to normalize.
|
|
124
|
+
* @returns {Date | string | null | undefined} - Normalized value.
|
|
125
|
+
*/
|
|
126
|
+
export function normalizeDateValueForWrite(value) {
|
|
127
|
+
if (typeof value != "string")
|
|
128
|
+
return value;
|
|
129
|
+
return normalizeDateStringForWrite(value);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Normalizes a database value into a Date for record reads.
|
|
133
|
+
* SQLite timezone-less rows are legacy local wall-clock rows produced before
|
|
134
|
+
* UTC storage. New SQLite writes include `Z`, so they take the exact branch.
|
|
135
|
+
* @param {Date | string | null | undefined} value - Stored database value.
|
|
136
|
+
* @param {object} args - Options.
|
|
137
|
+
* @param {string} args.databaseType - Database driver type.
|
|
138
|
+
* @returns {Date | string | null | undefined} - Normalized value.
|
|
139
|
+
*/
|
|
140
|
+
export function normalizeDateValueForRead(value, { databaseType }) {
|
|
141
|
+
if (value === null || value === undefined)
|
|
142
|
+
return value;
|
|
143
|
+
if (isDate(value))
|
|
144
|
+
return new Date(value.getTime());
|
|
145
|
+
if (typeof value != "string")
|
|
146
|
+
return value;
|
|
147
|
+
if (hasDateTimeTimezone(value))
|
|
148
|
+
return parseTimezoneQualifiedDateTimeString(value);
|
|
149
|
+
if (databaseType == "sqlite")
|
|
150
|
+
return parseTimezoneLessDateTimeStringAsLocal(value);
|
|
151
|
+
return parseTimezoneLessDateTimeStringAsUtc(value);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Converts a legacy timezone-less datetime value into the new UTC database storage format.
|
|
155
|
+
* The optional offset follows JavaScript's `Date#getTimezoneOffset()` sign convention.
|
|
156
|
+
* @param {Date | string | null | undefined} value - Legacy value.
|
|
157
|
+
* @param {object} args - Options.
|
|
158
|
+
* @param {string} args.databaseType - Database driver type.
|
|
159
|
+
* @param {number | undefined} [args.legacyLocalOffsetMinutes] - UTC-minus-local offset in minutes.
|
|
160
|
+
* @returns {Date | string | null | undefined} - Converted database value or the original value.
|
|
161
|
+
*/
|
|
162
|
+
export function convertLegacyDateValueToUtcStorage(value, { databaseType, legacyLocalOffsetMinutes }) {
|
|
163
|
+
if (typeof value != "string")
|
|
164
|
+
return value;
|
|
165
|
+
if (hasDateTimeTimezone(value))
|
|
166
|
+
return value;
|
|
167
|
+
const parsedDate = legacyLocalOffsetMinutes === undefined
|
|
168
|
+
? parseTimezoneLessDateTimeStringAsLocal(value)
|
|
169
|
+
: parseTimezoneLessDateTimeStringWithOffset(value, legacyLocalOffsetMinutes);
|
|
170
|
+
if (!isDate(parsedDate))
|
|
171
|
+
return value;
|
|
172
|
+
return formatDateForDatabase(parsedDate, { databaseType });
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9kYXRldGltZS1zdG9yYWdlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLE1BQU0sTUFBTSxxQkFBcUIsQ0FBQTtBQUV4QyxNQUFNLDJCQUEyQixHQUFHLGdGQUFnRixDQUFBO0FBQ3BILE1BQU0sOEJBQThCLEdBQUcsd0RBQXdELENBQUE7QUFDL0YsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQTtBQUV6RDs7Ozs7R0FLRztBQUNILFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUM1QixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUywwQkFBMEIsQ0FBQyxLQUFLO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUM5RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsb0NBQW9DLENBQUMsS0FBSztJQUNqRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUUvRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFekMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUM1QixDQUFDO0FBRUQ7Ozs7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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgaXNEYXRlIGZyb20gXCIuLi91dGlscy9pcy1kYXRlLmpzXCJcblxuY29uc3QgZGF0ZVRpbWVXaXRoVGltZXpvbmVQYXR0ZXJuID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfVsgVF1cXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZHsxLDl9KT8oPzpbelpdfFsrLV1cXGR7Mn06XFxkezJ9KSQvXG5jb25zdCBkYXRlVGltZVdpdGhvdXRUaW1lem9uZVBhdHRlcm4gPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9WyBUXVxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkezEsOX0pPyQvXG5jb25zdCB0aW1lem9uZVN1ZmZpeFBhdHRlcm4gPSAvKD86W3paXXxbKy1dXFxkezJ9OlxcZHsyfSkkL1xuXG4vKipcbiAqIFBhZHMgYSBudW1lcmljIGRhdGUvdGltZSBwYXJ0LlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gTnVtZXJpYyBwYXJ0LlxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCAtIFRhcmdldCBsZW5ndGguXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFBhZGRlZCBwYXJ0LlxuICovXG5mdW5jdGlvbiBwYWQodmFsdWUsIGxlbmd0aCA9IDIpIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkucGFkU3RhcnQobGVuZ3RoLCBcIjBcIilcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBTUUwtc3R5bGUgZGF0ZXRpbWUgc2VwYXJhdG9ycyB3aXRoIElTTyBzZXBhcmF0b3JzIGZvciBwYXJzaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gRGF0ZXRpbWUgc3RyaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gLSBEYXRldGltZSBzdHJpbmcgd2l0aCBhIGBUYCBzZXBhcmF0b3IuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURhdGVUaW1lU2VwYXJhdG9yKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5pbmNsdWRlcyhcIlRcIikgPyB2YWx1ZSA6IHZhbHVlLnJlcGxhY2UoXCIgXCIsIFwiVFwiKVxufVxuXG4vKipcbiAqIFBhcnNlcyBhIGRhdGV0aW1lIHN0cmluZyB3aXRoIGFuIGV4cGxpY2l0IHRpbWV6b25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gRGF0ZXRpbWUgc3RyaW5nLlxuICogQHJldHVybnMge0RhdGUgfCBzdHJpbmd9IC0gUGFyc2VkIGRhdGUgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB3aGVuIGl0IGlzIG5vdCBhIHJlY29nbml6ZWQgZGF0ZXRpbWUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVGltZXpvbmVRdWFsaWZpZWREYXRlVGltZVN0cmluZyh2YWx1ZSkge1xuICBpZiAoIWRhdGVUaW1lV2l0aFRpbWV6b25lUGF0dGVybi50ZXN0KHZhbHVlKSkgcmV0dXJuIHZhbHVlXG5cbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5wYXJzZShub3JtYWxpemVEYXRlVGltZVNlcGFyYXRvcih2YWx1ZSkpXG5cbiAgaWYgKE51bWJlci5pc05hTih0aW1lc3RhbXApKSByZXR1cm4gdmFsdWVcblxuICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wKVxufVxuXG4vKipcbiAqIFBhcnNlcyBhIHRpbWV6b25lLWxlc3MgZGF0ZXRpbWUgc3RyaW5nIGFzIFVUQy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIERhdGV0aW1lIHN0cmluZy5cbiAqIEByZXR1cm5zIHtEYXRlIHwgc3RyaW5nfSAtIFBhcnNlZCBkYXRlIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgd2hlbiBpdCBpcyBub3QgYSByZWNvZ25pemVkIGRhdGV0aW1lLlxuICovXG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lTGVzc0RhdGVUaW1lU3RyaW5nQXNVdGModmFsdWUpIHtcbiAgaWYgKCFkYXRlVGltZVdpdGhvdXRUaW1lem9uZVBhdHRlcm4udGVzdCh2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUucGFyc2UoYCR7bm9ybWFsaXplRGF0ZVRpbWVTZXBhcmF0b3IodmFsdWUpfVpgKVxuXG4gIGlmIChOdW1iZXIuaXNOYU4odGltZXN0YW1wKSkgcmV0dXJuIHZhbHVlXG5cbiAgcmV0dXJuIG5ldyBEYXRlKHRpbWVzdGFtcClcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSB0aW1lem9uZS1sZXNzIGRhdGV0aW1lIHN0cmluZyBhcyB0aGUgY3VycmVudCBydW50aW1lJ3MgbG9jYWwgd2FsbC1jbG9jayB0aW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gRGF0ZXRpbWUgc3RyaW5nLlxuICogQHJldHVybnMge0RhdGUgfCBzdHJpbmd9IC0gUGFyc2VkIGRhdGUgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB3aGVuIGl0IGlzIG5vdCBhIHJlY29nbml6ZWQgZGF0ZXRpbWUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVGltZXpvbmVMZXNzRGF0ZVRpbWVTdHJpbmdBc0xvY2FsKHZhbHVlKSB7XG4gIGlmICghZGF0ZVRpbWVXaXRob3V0VGltZXpvbmVQYXR0ZXJuLnRlc3QodmFsdWUpKSByZXR1cm4gdmFsdWVcblxuICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLnBhcnNlKG5vcm1hbGl6ZURhdGVUaW1lU2VwYXJhdG9yKHZhbHVlKSlcblxuICBpZiAoTnVtYmVyLmlzTmFOKHRpbWVzdGFtcCkpIHJldHVybiB2YWx1ZVxuXG4gIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXApXG59XG5cbi8qKlxuICogUGFyc2VzIGEgdGltZXpvbmUtbGVzcyBsZWdhY3kgZGF0ZXRpbWUgc3RyaW5nIHdpdGggYW4gZXhwbGljaXQgbG9jYWwgb2Zmc2V0LlxuICogVGhlIG9mZnNldCBmb2xsb3dzIEphdmFTY3JpcHQncyBgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCgpYCBzaWduIGNvbnZlbnRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBEYXRldGltZSBzdHJpbmcuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVnYWN5TG9jYWxPZmZzZXRNaW51dGVzIC0gVVRDLW1pbnVzLWxvY2FsIG9mZnNldCBpbiBtaW51dGVzLlxuICogQHJldHVybnMge0RhdGUgfCBzdHJpbmd9IC0gUGFyc2VkIGRhdGUgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB3aGVuIGl0IGlzIG5vdCBhIHJlY29nbml6ZWQgZGF0ZXRpbWUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVGltZXpvbmVMZXNzRGF0ZVRpbWVTdHJpbmdXaXRoT2Zmc2V0KHZhbHVlLCBsZWdhY3lMb2NhbE9mZnNldE1pbnV0ZXMpIHtcbiAgY29uc3QgdXRjRGF0ZSA9IHBhcnNlVGltZXpvbmVMZXNzRGF0ZVRpbWVTdHJpbmdBc1V0Yyh2YWx1ZSlcblxuICBpZiAoIWlzRGF0ZSh1dGNEYXRlKSkgcmV0dXJuIHZhbHVlXG5cbiAgcmV0dXJuIG5ldyBEYXRlKHV0Y0RhdGUuZ2V0VGltZSgpICsgKGxlZ2FjeUxvY2FsT2Zmc2V0TWludXRlcyAqIDYwICogMTAwMCkpXG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBzdHJpbmcgaGFzIGEgZGF0ZXRpbWUgdGltZXpvbmUgc3VmZml4LlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGBaYCBvciBhbiBvZmZzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNEYXRlVGltZVRpbWV6b25lKHZhbHVlKSB7XG4gIHJldHVybiB0aW1lem9uZVN1ZmZpeFBhdHRlcm4udGVzdCh2YWx1ZSlcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgRGF0ZSBmb3IgZGF0YWJhc2Ugc3RvcmFnZSBhcyBhIFVUQyBpbnN0YW50LlxuICogQHBhcmFtIHtEYXRlfSB2YWx1ZSAtIERhdGUgdmFsdWUuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5kYXRhYmFzZVR5cGUgLSBEYXRhYmFzZSBkcml2ZXIgdHlwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRGF0YWJhc2UgZGF0ZXRpbWUgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZUZvckRhdGFiYXNlKHZhbHVlLCB7ZGF0YWJhc2VUeXBlfSkge1xuICBpZiAoZGF0YWJhc2VUeXBlID09IFwic3FsaXRlXCIpIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIFtcbiAgICB2YWx1ZS5nZXRVVENGdWxsWWVhcigpLFxuICAgIFwiLVwiLFxuICAgIHBhZCh2YWx1ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgXCItXCIsXG4gICAgcGFkKHZhbHVlLmdldFVUQ0RhdGUoKSksXG4gICAgXCIgXCIsXG4gICAgcGFkKHZhbHVlLmdldFVUQ0hvdXJzKCkpLFxuICAgIFwiOlwiLFxuICAgIHBhZCh2YWx1ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgIFwiOlwiLFxuICAgIHBhZCh2YWx1ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgIFwiLlwiLFxuICAgIHBhZCh2YWx1ZS5nZXRVVENNaWxsaXNlY29uZHMoKSwgMylcbiAgXS5qb2luKFwiXCIpXG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHJlY29yZCB3cml0ZSBzdHJpbmcgaW50byBhIERhdGUgd2hlbiBpdCBpcyBhIHJlY29nbml6ZWQgZGF0ZXRpbWUgc3RyaW5nLlxuICogVGltZXpvbmUtbGVzcyBzdHJpbmdzIGFyZSBleHRlcm5hbCBpbnB1dCBhbmQgYXJlIHRyZWF0ZWQgYXMgVVRDLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMge0RhdGUgfCBzdHJpbmd9IC0gTm9ybWFsaXplZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGVTdHJpbmdGb3JXcml0ZSh2YWx1ZSkge1xuICBpZiAoaGFzRGF0ZVRpbWVUaW1lem9uZSh2YWx1ZSkpIHJldHVybiBwYXJzZVRpbWV6b25lUXVhbGlmaWVkRGF0ZVRpbWVTdHJpbmcodmFsdWUpXG5cbiAgcmV0dXJuIHBhcnNlVGltZXpvbmVMZXNzRGF0ZVRpbWVTdHJpbmdBc1V0Yyh2YWx1ZSlcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcmVjb3JkIHdyaXRlIHZhbHVlIGludG8gYSBEYXRlIHdoZW4gaXQgaXMgYSByZWNvZ25pemVkIGRhdGV0aW1lIHN0cmluZy5cbiAqIFRpbWV6b25lLWxlc3Mgc3RyaW5ncyBhcmUgZXh0ZXJuYWwgaW5wdXQgYW5kIGFyZSB0cmVhdGVkIGFzIFVUQy5cbiAqIEBwYXJhbSB7RGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IHZhbHVlIC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMge0RhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSAtIE5vcm1hbGl6ZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEYXRlVmFsdWVGb3JXcml0ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZVxuXG4gIHJldHVybiBub3JtYWxpemVEYXRlU3RyaW5nRm9yV3JpdGUodmFsdWUpXG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGRhdGFiYXNlIHZhbHVlIGludG8gYSBEYXRlIGZvciByZWNvcmQgcmVhZHMuXG4gKiBTUUxpdGUgdGltZXpvbmUtbGVzcyByb3dzIGFyZSBsZWdhY3kgbG9jYWwgd2FsbC1jbG9jayByb3dzIHByb2R1Y2VkIGJlZm9yZVxuICogVVRDIHN0b3JhZ2UuIE5ldyBTUUxpdGUgd3JpdGVzIGluY2x1ZGUgYFpgLCBzbyB0aGV5IHRha2UgdGhlIGV4YWN0IGJyYW5jaC5cbiAqIEBwYXJhbSB7RGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IHZhbHVlIC0gU3RvcmVkIGRhdGFiYXNlIHZhbHVlLlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuZGF0YWJhc2VUeXBlIC0gRGF0YWJhc2UgZHJpdmVyIHR5cGUuXG4gKiBAcmV0dXJucyB7RGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IC0gTm9ybWFsaXplZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGVWYWx1ZUZvclJlYWQodmFsdWUsIHtkYXRhYmFzZVR5cGV9KSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdmFsdWVcblxuICBpZiAoaXNEYXRlKHZhbHVlKSkgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSlcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWVcbiAgaWYgKGhhc0RhdGVUaW1lVGltZXpvbmUodmFsdWUpKSByZXR1cm4gcGFyc2VUaW1lem9uZVF1YWxpZmllZERhdGVUaW1lU3RyaW5nKHZhbHVlKVxuICBpZiAoZGF0YWJhc2VUeXBlID09IFwic3FsaXRlXCIpIHJldHVybiBwYXJzZVRpbWV6b25lTGVzc0RhdGVUaW1lU3RyaW5nQXNMb2NhbCh2YWx1ZSlcblxuICByZXR1cm4gcGFyc2VUaW1lem9uZUxlc3NEYXRlVGltZVN0cmluZ0FzVXRjKHZhbHVlKVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbGVnYWN5IHRpbWV6b25lLWxlc3MgZGF0ZXRpbWUgdmFsdWUgaW50byB0aGUgbmV3IFVUQyBkYXRhYmFzZSBzdG9yYWdlIGZvcm1hdC5cbiAqIFRoZSBvcHRpb25hbCBvZmZzZXQgZm9sbG93cyBKYXZhU2NyaXB0J3MgYERhdGUjZ2V0VGltZXpvbmVPZmZzZXQoKWAgc2lnbiBjb252ZW50aW9uLlxuICogQHBhcmFtIHtEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gdmFsdWUgLSBMZWdhY3kgdmFsdWUuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5kYXRhYmFzZVR5cGUgLSBEYXRhYmFzZSBkcml2ZXIgdHlwZS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbYXJncy5sZWdhY3lMb2NhbE9mZnNldE1pbnV0ZXNdIC0gVVRDLW1pbnVzLWxvY2FsIG9mZnNldCBpbiBtaW51dGVzLlxuICogQHJldHVybnMge0RhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSAtIENvbnZlcnRlZCBkYXRhYmFzZSB2YWx1ZSBvciB0aGUgb3JpZ2luYWwgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TGVnYWN5RGF0ZVZhbHVlVG9VdGNTdG9yYWdlKHZhbHVlLCB7ZGF0YWJhc2VUeXBlLCBsZWdhY3lMb2NhbE9mZnNldE1pbnV0ZXN9KSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlXG4gIGlmIChoYXNEYXRlVGltZVRpbWV6b25lKHZhbHVlKSkgcmV0dXJuIHZhbHVlXG5cbiAgY29uc3QgcGFyc2VkRGF0ZSA9IGxlZ2FjeUxvY2FsT2Zmc2V0TWludXRlcyA9PT0gdW5kZWZpbmVkXG4gICAgPyBwYXJzZVRpbWV6b25lTGVzc0RhdGVUaW1lU3RyaW5nQXNMb2NhbCh2YWx1ZSlcbiAgICA6IHBhcnNlVGltZXpvbmVMZXNzRGF0ZVRpbWVTdHJpbmdXaXRoT2Zmc2V0KHZhbHVlLCBsZWdhY3lMb2NhbE9mZnNldE1pbnV0ZXMpXG5cbiAgaWYgKCFpc0RhdGUocGFyc2VkRGF0ZSkpIHJldHVybiB2YWx1ZVxuXG4gIHJldHVybiBmb3JtYXREYXRlRm9yRGF0YWJhc2UocGFyc2VkRGF0ZSwge2RhdGFiYXNlVHlwZX0pXG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/base.js"],"names":[],"mappings":"AA0IA;IA0BE;;;;OAIG;IACH,oBAHW,OAAO,8BAA8B,EAAE,yBAAyB,iBAChE,OAAO,wBAAwB,EAAE,OAAO,EAWlD;IAvCD;;oCAEgC;IAChC,OADU,MAAM,GAAG,SAAS,CACX;IACjB;;0DAEsD;IACtD,4BADU,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB;IAC1B;;yCAEqC;IACrC,cADU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAC,CAAC,CAAC,CACrB;IACZ;;0CAEsC;IACtC,yBADU,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CACX;IACvB;;oCAEgC;IAChC,yBADU,MAAM,GAAG,SAAS,CACL;IACvB;;yCAEqC;IACrC,cADU,gBAAgB,GAAG,IAAI,CACd;IAQjB,wEAAmB;IACnB,wDAAkC;IAClC,aAAwB;IACxB,eAA8B;IAE9B,2BAA2B;IAC3B,iCAA4C;IAI9C;;;;;;;;OAQG;IACH,yBAPW,MAAM,cACN,MAAM,uBACN,MAAM,wBACN,MAAM,QACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;OAKG;IACH,2BAHW,OAAO,wBAAwB,EAAE,OAAO,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7B;IAED;;;;OAIG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,gCAHW,MAAM,GAAG,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CAKzB;IADC,kDAA+C;IAGjD;;;OAGG;IACH,+BAFa,OAAO,CAAC,IAAI,CAAC,CAKzB;IAED;;;OAGG;IACH,aAFa,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;;;;;;;OASG;IACH,gCAPW,MAAM,SAEd;QAAuB,WAAW;QACZ,eAAe;QACf,iBAAiB;KACvC,GAAU,MAAM,EAAE,CAE2E;IAEhG;;;;;;;OAOG;IACH,8BALW,MAAM,SAEd;QAAuB,QAAQ;KAC/B,GAAU,MAAM,EAAE,CAEuE;IAE5F;;;;;OAKG;IACH,2BAHW,kBAAkB,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7B;IAED;;;;OAIG;IACH,uBAHW,OAAO,wBAAwB,EAAE,OAAO,GACtC,OAAO,CAAC,IAAI,CAAC,CASzB;IAED;;;;;OAKG;IACH,0BAHW,OAAO,wBAAwB,EAAE,OAAO,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7B;IAED;;;;OAIG;IACH,aAHW,iBAAiB,GACf,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;;;OAKG;IACH,gBAHW,iBAAiB,GACf,MAAM,CAIlB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,SACN,oBAAoB,GAClB,OAAO,CAAC,IAAI,CAAC,CASzB;IAED;;;;;;OAMG;IACH,yBAJW,MAAM,SACN,oBAAoB,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7B;IAED;;;;;OAKG;IACH,cAHW,OAAC,GACC,OAAC,CAIb;IAED;;;OAGG;IACH,WAFa,OAAO,8BAA8B,EAAE,yBAAyB,CAI5E;IAED;;;OAGG;IACH,oBAFa,OAAO,wBAAwB,EAAE,OAAO,CAMpD;IAED;;;OAGG;IACH,YAFa,MAAM,GAAG,SAAS,CAI9B;IAED;;;OAGG;IACH,kBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,oBAFa,IAAI,CAShB;IAED;;;OAGG;IACH,0BAFa,IAAI,CAIhB;IAED;;;;OAIG;IACH,uCAHW,MAAM,IAAI,GACR,IAAI,CAIhB;IAED;;;OAGG;IACH,uBAFa,OAAO,CAInB;IAED;;;;;;OAMG;IACH,sBALa,CAAC,YACH,MAAM,YACN,MAAM,OAAO,CAAC,CAAC,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAwBtB;IAED;;;;;;;OAOG;IACH,2BANa,CAAC,aACH,MAAM,gBACN,MAAM,YACN,MAAM,OAAO,CAAC,CAAC,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAItB;IAED;;;;OAIG;IACH,+BAHW,OAAC,GACC,OAAC,CAMb;IAED;;;;OAIG;IACH,aAFa,OAAO,CAAC,KAAK,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAI7D;IAED;;;OAGG;IACH,gBAFa,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIlC;IAED;;;;;;OAMG;IACH,qBALW,MAAM,SAEd;QAAsB,UAAU,EAAxB,OAAO;KACf,GAAU,OAAO,CAAC,OAAO,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC,CAuBlE;IAED;;;;;OAKG;IACH,gCAJW,MAAM,cACN,MAAM,EAAE,GACN,MAAM,CAQlB;IAED;;;;OAIG;IACH,2BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,iBAAiB,EAAE,OAAO,CAAC,CAItD;IAED;;;;OAIG;IACH,WAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,aAHW,iBAAiB,GACf,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;;;;OAMG;IACH,0BALW,MAAM,WACN,KAAK,CAAC,MAAM,CAAC,QACb,KAAK,CAAC,KAAK,CAAC,OAAC,CAAC,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;;;OAKG;IACH,gBAHW,iBAAiB,GACf,MAAM,CAIlB;IAED;;;;OAIG;IACH,aAHW,iBAAiB,GACf,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;;OAIG;IACH,gBAFa,OAAO,CAAC,MAAM,CAAC,CAI3B;IAED;;;;OAIG;IACH,qBAHW,OAAC,GACC,OAAC,CAyBb;IAED;;;;;OAKG;IACH,6BAHW,OAAC,GACC,OAAO,CAUnB;IAED;;;;OAIG;IACH,WAFa,OAAO,4BAA4B,EAAE,OAAO,CAIxD;IAED;;;;OAIG;IACH,aAHW,OAAC,GACC,MAAM,GAAG,MAAM,CAS3B;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFa,KAAK,CASjB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,eAAe,CAAC,CAUpC;IAED;;;;OAIG;IACH,mBAHW,MAAM,GAAG,SAAS,GAChB,IAAI,CAIhB;IAED;;;;OAIG;IACH,wCAFa,OAAO,CAInB;IAED;;;OAGG;IACH,iCAFa,OAAO,CAE4B;IAEhD;;;;OAIG;IACH,+BAFa,OAAO,CAE0B;IAE9C;;;;OAIG;IACH,uBAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAS5B;IAED;;;;OAIG;IACH,sBAHW,MAAM,OAAO,CAAC,IAAI,CAAC,GACjB,OAAO,CAAC,OAAC,CAAC,CA6EtB;IAED;;;;;OAKG;IACH,sBAHW,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAWzB;IAED;;;OAGG;IACH,oBAFa,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;OAGG;IACH,2BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,qBAFa,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;OAGG;IACH,4BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,mCAFa,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;;;;OAKG;IACH,WAJW,MAAM,YACN,YAAY,GACV,OAAO,CAAC,eAAe,CAAC,CA2CpC;IAED;;;;;;;;;OASG;IACH,mDAPG;QAAqB,WAAW,EAAxB,MAAM;QACO,QAAQ,EAArB,MAAM;KACd,WAAQ,YAAY,iBACZ,OAAO,4CAA4C,EAAE,OAAO,GAAG,SAAS,SACxE,MAAM,GACJ,OAAO,CAAC,eAAe,CAAC,CAyCpC;IAED;;;OAGG;IACH,oBAFa,+BAA+B,CAgB3C;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;;OAKG;IACH,qCAJW,MAAM,WACN,YAAY,GACV,MAAM,CAoBlB;IAED;;;;OAIG;IACH,gCAHW,MAAM,GACJ,MAAM,CAiBlB;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,OAAO,CAkBnB;IAED;;;OAGG;IACH,wBAFa,OAAO,CASnB;IAED;;;;;;;;OAQG;IACH,oDANG;QAAqB,SAAS,EAAtB,MAAM;QACO,OAAO,EAApB,MAAM;QACmB,WAAW,EAApC,MAAM,GAAG,SAAS;QACL,GAAG,EAAhB,MAAM;KACd,GAAU,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;;OAIG;IACH,8BAHW,MAAM,GAAG,SAAS,GAChB,MAAM,GAAG,SAAS,CAmB9B;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,eAAe,CAAC,CAIpC;IAED;;;;;OAKG;IACH,mBAHW,KAAK,GACH,MAAM,CAEiD;IAEpE;;;;OAIG;IACH,+BAHW,KAAK,GACH,4BAA4B,CAIxC;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,IAAI,CAOhB;IAED;;;OAGG;IACH,sBAFa,IAAI,CAMhB;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,OAAO,CAyCnB;IAED;;;OAGG;IACH,cAFa,OAAO,CAInB;IAED;;;OAGG;IACH,uBAFa,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;;OAGG;IACH,8BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,yBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,8BAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;;OAIG;IACH,qCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;;;OAMG;IACH,wBALW,MAAM,iBACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAiBzB;IAED;;;;OAIG;IACH,gCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;;OAIG;IACH,uCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;;OAIG;IACH,iCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;;OAIG;IACH,wCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,qBAFa,OAAO,CAAC,IAAI,CAAC,CAqCzB;IAED;;;;OAIG;IACH,aAHW,iBAAiB,GACf,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;;;OAKG;IACH,gBAHW,iBAAiB,GACf,MAAM,CAIlB;IAED;;;;;OAKG;IACH,gBAHW,iBAAiB,GACf,MAAM,CAIlB;IAED;;;;OAIG;IACH,sBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,qBAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,kCAHW,MAAa,IAAI,GACf,OAAO,CAAC,OAAC,CAAC,CAUtB;IAED;;;;;;;;;;OAUG;IACH,0BAJW,MAAM,UACN;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,GACzB,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;;OAKG;IACH,6BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;;OAKG;IACH,0BAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;;;;OAOG;IACH,yBAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAI5B;CACF;;;;;;;;aA9kDa,KAAK,CAAC,MAAM,GAAG,OAAO,iCAAiC,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;eAIjE,MAAM;;;;;;;;;;;;;;;;;;;;;;eAWN,MAAM;;;;gBACN;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAC,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAUlB,MAAM;;;;;2BAIP,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;8BACjB,KAAK,CAAC,YAAY,CAAC;;;;;;;;WAKlB,OAAO;;;;eACP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBP,MAAM,EAAE;;;;aACR,MAAM;;;;qBACN,MAAM;;;;eACN,MAAM;;;;gBACN,MAAM;;;;;;;;;iBAMN,wBAAwB,GAAG,IAAI;;;;wBAC/B,MAAM,GAAG,SAAS;;;;mBAClB,MAAM,GAAG,SAAS;;;;kBAClB,MAAM,GAAG,SAAS;;;;iBAClB,MAAM;;;;WACN,MAAM,GAAG,SAAS;;;;sBAClB,MAAM;;;;wBACN,MAAM;;;;;;;;;iBAMN,MAAM,EAAE;;;;aACR,MAAM;;;;qBACN,MAAM;;;;gBACN,MAAM;;;;;;;;;gBAMN,MAAM;;;;UACN,MAAM;;;;eACN,MAAM;;;;;;;;;qBAKN,MAAM,EAAE;;;;UACR,MAAM;;;;eACN,MAAM;;;;mBACN,MAAM,EAAE;;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/base.js"],"names":[],"mappings":"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"}
|