agl 1.0.17 → 21.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.smartconfig.json +55 -0
- package/changelog.md +1026 -0
- package/cli.js +14 -0
- package/dist_serve/bundle.js +44778 -0
- package/dist_serve/index.html +13 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.authmodels.d.ts +126 -0
- package/dist_ts/classes.authmodels.js +1422 -0
- package/dist_ts/classes.authstore.d.ts +160 -0
- package/dist_ts/classes.authstore.js +2483 -0
- package/dist_ts/classes.browserresourcehost.d.ts +85 -0
- package/dist_ts/classes.browserresourcehost.js +912 -0
- package/dist_ts/classes.cli.d.ts +21 -0
- package/dist_ts/classes.cli.js +1082 -0
- package/dist_ts/classes.config.d.ts +23 -0
- package/dist_ts/classes.config.js +267 -0
- package/dist_ts/classes.controller.d.ts +523 -0
- package/dist_ts/classes.controller.js +10611 -0
- package/dist_ts/classes.controllermanagement.d.ts +32 -0
- package/dist_ts/classes.controllermanagement.js +222 -0
- package/dist_ts/classes.draftmanager.d.ts +30 -0
- package/dist_ts/classes.draftmanager.js +179 -0
- package/dist_ts/classes.embeddeddb.d.ts +30 -0
- package/dist_ts/classes.embeddeddb.js +159 -0
- package/dist_ts/classes.flexframedtransport.d.ts +56 -0
- package/dist_ts/classes.flexframedtransport.js +275 -0
- package/dist_ts/classes.flexmodels.private.d.ts +231 -0
- package/dist_ts/classes.flexmodels.private.js +985 -0
- package/dist_ts/classes.flexmodels.public.d.ts +207 -0
- package/dist_ts/classes.flexmodels.public.js +885 -0
- package/dist_ts/classes.flexprojectionreader.d.ts +89 -0
- package/dist_ts/classes.flexprojectionreader.js +580 -0
- package/dist_ts/classes.flexservice.d.ts +196 -0
- package/dist_ts/classes.flexservice.js +3704 -0
- package/dist_ts/classes.flexstore.d.ts +174 -0
- package/dist_ts/classes.flexstore.js +3400 -0
- package/dist_ts/classes.flexsupervisor.d.ts +105 -0
- package/dist_ts/classes.flexsupervisor.js +1191 -0
- package/dist_ts/classes.gitreversion.d.ts +431 -0
- package/dist_ts/classes.gitreversion.js +10592 -0
- package/dist_ts/classes.harnessoperationmanager.d.ts +113 -0
- package/dist_ts/classes.harnessoperationmanager.js +602 -0
- package/dist_ts/classes.opencodeclient.d.ts +146 -0
- package/dist_ts/classes.opencodeclient.js +3003 -0
- package/dist_ts/classes.opencodesupervisor.d.ts +60 -0
- package/dist_ts/classes.opencodesupervisor.js +1003 -0
- package/dist_ts/classes.passkeymanager.d.ts +34 -0
- package/dist_ts/classes.passkeymanager.js +456 -0
- package/dist_ts/classes.processinspection.d.ts +50 -0
- package/dist_ts/classes.processinspection.js +484 -0
- package/dist_ts/classes.resourcecoordinator.d.ts +64 -0
- package/dist_ts/classes.resourcecoordinator.js +294 -0
- package/dist_ts/classes.sessionintelligencereader.d.ts +13 -0
- package/dist_ts/classes.sessionintelligencereader.js +40 -0
- package/dist_ts/classes.systemmetricssampler.d.ts +53 -0
- package/dist_ts/classes.systemmetricssampler.js +168 -0
- package/dist_ts/classes.terminalmanager.d.ts +95 -0
- package/dist_ts/classes.terminalmanager.js +981 -0
- package/dist_ts/classes.terminalresourcehost.d.ts +20 -0
- package/dist_ts/classes.terminalresourcehost.js +84 -0
- package/dist_ts/classes.upgradecoordinator.d.ts +244 -0
- package/dist_ts/classes.upgradecoordinator.js +2155 -0
- package/dist_ts/classes.upgradetransaction.d.ts +92 -0
- package/dist_ts/classes.upgradetransaction.js +2125 -0
- package/dist_ts/classes.uploadmanager.d.ts +24 -0
- package/dist_ts/classes.uploadmanager.js +210 -0
- package/dist_ts/classes.validation.d.ts +91 -0
- package/dist_ts/classes.validation.js +1087 -0
- package/dist_ts/flexharness.child.d.ts +1 -0
- package/dist_ts/flexharness.child.js +28 -0
- package/dist_ts/functions.canonicaldirectory.d.ts +21 -0
- package/dist_ts/functions.canonicaldirectory.js +144 -0
- package/dist_ts/functions.controllerdataroot.d.ts +15 -0
- package/dist_ts/functions.controllerdataroot.js +76 -0
- package/dist_ts/functions.embeddeddb.d.ts +2 -0
- package/dist_ts/functions.embeddeddb.js +21 -0
- package/dist_ts/functions.flexcredentialstore.d.ts +16 -0
- package/dist_ts/functions.flexcredentialstore.js +93 -0
- package/dist_ts/functions.opencodeauth.d.ts +3 -0
- package/dist_ts/functions.opencodeauth.js +31 -0
- package/dist_ts/functions.runtimeenvironment.d.ts +2 -0
- package/dist_ts/functions.runtimeenvironment.js +79 -0
- package/dist_ts/functions.upgradefollower.d.ts +3 -0
- package/dist_ts/functions.upgradefollower.js +95 -0
- package/dist_ts/index.d.ts +24 -0
- package/dist_ts/index.js +25 -0
- package/dist_ts/interfaces.auth.d.ts +181 -0
- package/dist_ts/interfaces.auth.js +82 -0
- package/dist_ts/interfaces.config.d.ts +34 -0
- package/dist_ts/interfaces.config.js +2 -0
- package/dist_ts/interfaces.flexipc.d.ts +939 -0
- package/dist_ts/interfaces.flexipc.js +1492 -0
- package/dist_ts/interfaces.gitreversion.d.ts +246 -0
- package/dist_ts/interfaces.gitreversion.js +2 -0
- package/dist_ts/interfaces.lifecycle.d.ts +37 -0
- package/dist_ts/interfaces.lifecycle.js +2 -0
- package/dist_ts/interfaces.opencode.d.ts +101 -0
- package/dist_ts/interfaces.opencode.js +3 -0
- package/dist_ts/interfaces.projects.d.ts +156 -0
- package/dist_ts/interfaces.projects.js +5 -0
- package/dist_ts/plugins.d.ts +36 -0
- package/dist_ts/plugins.js +40 -0
- package/dist_ts_interfaces/index.d.ts +2 -0
- package/dist_ts_interfaces/index.js +3 -0
- package/dist_ts_interfaces/interfaces.d.ts +747 -0
- package/dist_ts_interfaces/interfaces.js +47 -0
- package/dist_ts_interfaces/plugins.d.ts +4 -0
- package/dist_ts_interfaces/plugins.js +3 -0
- package/dist_ts_interfaces/requests.d.ts +806 -0
- package/dist_ts_interfaces/requests.js +2 -0
- package/dist_ts_migration/classes.documentmigrationrunner.d.ts +8 -0
- package/dist_ts_migration/classes.documentmigrationrunner.js +24 -0
- package/dist_ts_migration/classes.flexmigrationrunner.d.ts +11 -0
- package/dist_ts_migration/classes.flexmigrationrunner.js +25 -0
- package/dist_ts_migration/classes.flexpostharnessmigrationrunner.d.ts +10 -0
- package/dist_ts_migration/classes.flexpostharnessmigrationrunner.js +15 -0
- package/dist_ts_migration/classes.migrationrunner.d.ts +8 -0
- package/dist_ts_migration/classes.migrationrunner.js +34 -0
- package/dist_ts_migration/index.d.ts +12 -0
- package/dist_ts_migration/index.js +13 -0
- package/dist_ts_migration/v10_flexharnessv3migration.d.ts +11 -0
- package/dist_ts_migration/v10_flexharnessv3migration.js +23 -0
- package/dist_ts_migration/v13_flexprojectionorder.d.ts +11 -0
- package/dist_ts_migration/v13_flexprojectionorder.js +23 -0
- package/dist_ts_migration/v16_flexprovidercredentials.d.ts +22 -0
- package/dist_ts_migration/v16_flexprovidercredentials.js +149 -0
- package/dist_ts_migration/v18_resourcelayout.d.ts +22 -0
- package/dist_ts_migration/v18_resourcelayout.js +23 -0
- package/dist_ts_migration/v18_resourcelayoutmigration.d.ts +6 -0
- package/dist_ts_migration/v18_resourcelayoutmigration.js +61 -0
- package/dist_ts_migration/v19_flexprojectmanagement.d.ts +11 -0
- package/dist_ts_migration/v19_flexprojectmanagement.js +21 -0
- package/dist_ts_migration/v1_embeddeddatabaselocation.d.ts +28 -0
- package/dist_ts_migration/v1_embeddeddatabaselocation.js +415 -0
- package/dist_ts_migration/v22_projectfilesystemidentitymigration.d.ts +7 -0
- package/dist_ts_migration/v22_projectfilesystemidentitymigration.js +105 -0
- package/dist_ts_migration/v2_controllerdataroot.d.ts +130 -0
- package/dist_ts_migration/v2_controllerdataroot.js +1887 -0
- package/dist_ts_migration/v6_protocoldocumentmigration.d.ts +7 -0
- package/dist_ts_migration/v6_protocoldocumentmigration.js +100 -0
- package/dist_ts_migration/v6_protocoldocuments.d.ts +7 -0
- package/dist_ts_migration/v6_protocoldocuments.js +138 -0
- package/html/index.html +13 -0
- package/{LICENSE → license.md} +2 -2
- package/package.json +86 -48
- package/readme.md +480 -0
- package/readme.plan.md +188 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/classes.authmodels.ts +1245 -0
- package/ts/classes.authstore.ts +3274 -0
- package/ts/classes.browserresourcehost.ts +1205 -0
- package/ts/classes.cli.ts +1254 -0
- package/ts/classes.config.ts +351 -0
- package/ts/classes.controller.ts +14426 -0
- package/ts/classes.controllermanagement.ts +330 -0
- package/ts/classes.draftmanager.ts +232 -0
- package/ts/classes.embeddeddb.ts +166 -0
- package/ts/classes.flexframedtransport.ts +283 -0
- package/ts/classes.flexmodels.private.ts +823 -0
- package/ts/classes.flexmodels.public.ts +732 -0
- package/ts/classes.flexprojectionreader.ts +816 -0
- package/ts/classes.flexservice.ts +4302 -0
- package/ts/classes.flexstore.ts +4565 -0
- package/ts/classes.flexsupervisor.ts +1453 -0
- package/ts/classes.gitreversion.ts +13353 -0
- package/ts/classes.harnessoperationmanager.ts +870 -0
- package/ts/classes.opencodeclient.ts +4110 -0
- package/ts/classes.opencodesupervisor.ts +1280 -0
- package/ts/classes.passkeymanager.ts +570 -0
- package/ts/classes.processinspection.ts +623 -0
- package/ts/classes.resourcecoordinator.ts +436 -0
- package/ts/classes.sessionintelligencereader.ts +52 -0
- package/ts/classes.systemmetricssampler.ts +215 -0
- package/ts/classes.terminalmanager.ts +1207 -0
- package/ts/classes.terminalresourcehost.ts +122 -0
- package/ts/classes.upgradecoordinator.ts +2675 -0
- package/ts/classes.upgradetransaction.ts +2900 -0
- package/ts/classes.uploadmanager.ts +240 -0
- package/ts/classes.validation.ts +1409 -0
- package/ts/flexharness.child.ts +35 -0
- package/ts/functions.canonicaldirectory.ts +213 -0
- package/ts/functions.controllerdataroot.ts +107 -0
- package/ts/functions.embeddeddb.ts +22 -0
- package/ts/functions.flexcredentialstore.ts +128 -0
- package/ts/functions.opencodeauth.ts +34 -0
- package/ts/functions.runtimeenvironment.ts +90 -0
- package/ts/functions.upgradefollower.ts +115 -0
- package/ts/index.ts +36 -6
- package/ts/interfaces.auth.ts +316 -0
- package/ts/interfaces.config.ts +37 -0
- package/ts/interfaces.flexipc.ts +2586 -0
- package/ts/interfaces.gitreversion.ts +336 -0
- package/ts/interfaces.lifecycle.ts +46 -0
- package/ts/interfaces.opencode.ts +153 -0
- package/ts/interfaces.projects.ts +182 -0
- package/ts/plugins.ts +64 -0
- package/ts_interfaces/index.ts +2 -0
- package/ts_interfaces/interfaces.ts +827 -0
- package/ts_interfaces/plugins.ts +15 -0
- package/ts_interfaces/requests.ts +1186 -0
- package/ts_migration/classes.documentmigrationrunner.ts +32 -0
- package/ts_migration/classes.flexmigrationrunner.ts +33 -0
- package/ts_migration/classes.flexpostharnessmigrationrunner.ts +22 -0
- package/ts_migration/classes.migrationrunner.ts +40 -0
- package/ts_migration/index.ts +12 -0
- package/ts_migration/v10_flexharnessv3migration.ts +35 -0
- package/ts_migration/v13_flexprojectionorder.ts +33 -0
- package/ts_migration/v16_flexprovidercredentials.ts +196 -0
- package/ts_migration/v18_resourcelayout.ts +55 -0
- package/ts_migration/v18_resourcelayoutmigration.ts +68 -0
- package/ts_migration/v19_flexprojectmanagement.ts +28 -0
- package/ts_migration/v1_embeddeddatabaselocation.ts +560 -0
- package/ts_migration/v22_projectfilesystemidentitymigration.ts +121 -0
- package/ts_migration/v2_controllerdataroot.ts +2349 -0
- package/ts_migration/v6_protocoldocumentmigration.ts +144 -0
- package/ts_migration/v6_protocoldocuments.ts +198 -0
- package/ts_web/00_commitinfo_data.ts +8 -0
- package/ts_web/classes.controllersocketclient.ts +517 -0
- package/ts_web/classes.sessiondraftsync.ts +390 -0
- package/ts_web/elements.harnesscontrollerapp.ts +11494 -0
- package/ts_web/index.ts +2 -0
- package/ts_web/plugins.ts +31 -0
- package/.gitlab-ci.yml +0 -71
- package/.npmignore +0 -5
- package/README.md +0 -40
- package/dist/cli.js +0 -2
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -9
- package/dist/mod_bundle/index.d.ts +0 -1
- package/dist/mod_bundle/index.js +0 -18
- package/dist/mod_bundle/mod.plugins.d.ts +0 -4
- package/dist/mod_bundle/mod.plugins.js +0 -11
- package/dist/mod_install/index.d.ts +0 -4
- package/dist/mod_install/index.js +0 -21
- package/dist/mod_install/mod.plugins.d.ts +0 -1
- package/dist/mod_install/mod.plugins.js +0 -7
- package/dist/mod_standard/index.d.ts +0 -4
- package/dist/mod_standard/index.js +0 -21
- package/dist/mod_standard/mod.browser.d.ts +0 -6
- package/dist/mod_standard/mod.browser.js +0 -14
- package/dist/mod_standard/mod.clean.d.ts +0 -4
- package/dist/mod_standard/mod.clean.js +0 -12
- package/dist/mod_standard/mod.compile.d.ts +0 -4
- package/dist/mod_standard/mod.compile.js +0 -21
- package/dist/mod_standard/mod.plugins.d.ts +0 -8
- package/dist/mod_standard/mod.plugins.js +0 -19
- package/dist/mod_standard/mod.test.d.ts +0 -4
- package/dist/mod_standard/mod.test.js +0 -12
- package/dist/plr.cli.d.ts +0 -3
- package/dist/plr.cli.js +0 -57
- package/dist/plr.config.d.ts +0 -11
- package/dist/plr.config.js +0 -26
- package/dist/plr.mods.d.ts +0 -17
- package/dist/plr.mods.js +0 -17
- package/dist/plr.paths.d.ts +0 -19
- package/dist/plr.paths.js +0 -26
- package/dist/plr.plugins.d.ts +0 -8
- package/dist/plr.plugins.js +0 -16
- package/npmextra.json +0 -10
- package/ts/mod_bundle/index.ts +0 -20
- package/ts/mod_bundle/mod.plugins.ts +0 -9
- package/ts/mod_install/index.ts +0 -20
- package/ts/mod_install/mod.plugins.ts +0 -1
- package/ts/mod_standard/index.ts +0 -23
- package/ts/mod_standard/mod.browser.ts +0 -17
- package/ts/mod_standard/mod.clean.ts +0 -13
- package/ts/mod_standard/mod.compile.ts +0 -23
- package/ts/mod_standard/mod.plugins.ts +0 -17
- package/ts/mod_standard/mod.test.ts +0 -13
- package/ts/plr.cli.ts +0 -60
- package/ts/plr.config.ts +0 -36
- package/ts/plr.mods.ts +0 -25
- package/ts/plr.paths.ts +0 -29
- package/ts/plr.plugins.ts +0 -17
- package/tslint.json +0 -3
- package/yarn.lock +0 -3464
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
export declare class PostDatabaseDocumentMigrationRunner {
|
|
3
|
+
private readonly database;
|
|
4
|
+
private readonly migrations;
|
|
5
|
+
constructor(database: plugins.smartdata.SmartdataDb | undefined);
|
|
6
|
+
run(): Promise<void>;
|
|
7
|
+
runProjectFilesystemIdentity(controllerIdArg: string): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
import { ProtocolV6DocumentMigration } from './v6_protocoldocumentmigration.js';
|
|
3
|
+
import { ProtocolV18ResourceLayoutMigration } from './v18_resourcelayoutmigration.js';
|
|
4
|
+
import { ProtocolV22ProjectFilesystemIdentityMigration } from './v22_projectfilesystemidentitymigration.js';
|
|
5
|
+
export class PostDatabaseDocumentMigrationRunner {
|
|
6
|
+
database;
|
|
7
|
+
migrations;
|
|
8
|
+
constructor(database) {
|
|
9
|
+
this.database = database;
|
|
10
|
+
this.migrations = [
|
|
11
|
+
new ProtocolV6DocumentMigration(this.database),
|
|
12
|
+
new ProtocolV18ResourceLayoutMigration(this.database),
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
async run() {
|
|
16
|
+
for (const migration of this.migrations) {
|
|
17
|
+
await migration.run();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async runProjectFilesystemIdentity(controllerIdArg) {
|
|
21
|
+
await new ProtocolV22ProjectFilesystemIdentityMigration(this.database, controllerIdArg).run();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kb2N1bWVudG1pZ3JhdGlvbnJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX21pZ3JhdGlvbi9jbGFzc2VzLmRvY3VtZW50bWlncmF0aW9ucnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFNNUcsTUFBTSxPQUFPLG1DQUFtQztJQUdqQjtJQUZaLFVBQVUsQ0FBdUI7SUFFbEQsWUFBNkIsUUFBbUQ7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBMkM7UUFDOUUsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDOUMsSUFBSSxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3RELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUc7UUFDZCxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxlQUF1QjtRQUMvRCxNQUFNLElBQUksNkNBQTZDLENBQ3JELElBQUksQ0FBQyxRQUFRLEVBQ2IsZUFBZSxDQUNoQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FlexStore } from '../dist_ts/classes.flexstore.js';
|
|
2
|
+
export interface IFlexPersistenceMigrationOptions {
|
|
3
|
+
store: FlexStore;
|
|
4
|
+
storageKeys: Iterable<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class FlexPersistenceMigrationRunner {
|
|
7
|
+
private readonly store;
|
|
8
|
+
private readonly storageKeys;
|
|
9
|
+
constructor(optionsArg: IFlexPersistenceMigrationOptions);
|
|
10
|
+
run(signalArg?: AbortSignal): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FlexHarnessV3MigrationRunner } from './v10_flexharnessv3migration.js';
|
|
2
|
+
import { FlexProjectionOrderMigration } from './v13_flexprojectionorder.js';
|
|
3
|
+
export class FlexPersistenceMigrationRunner {
|
|
4
|
+
store;
|
|
5
|
+
storageKeys;
|
|
6
|
+
constructor(optionsArg) {
|
|
7
|
+
this.store = optionsArg.store;
|
|
8
|
+
this.storageKeys = [...new Set(optionsArg.storageKeys)].sort();
|
|
9
|
+
}
|
|
10
|
+
async run(signalArg) {
|
|
11
|
+
await new FlexHarnessV3MigrationRunner({
|
|
12
|
+
store: this.store,
|
|
13
|
+
storageKeys: this.storageKeys,
|
|
14
|
+
}).run(signalArg);
|
|
15
|
+
await new FlexProjectionOrderMigration({
|
|
16
|
+
store: this.store,
|
|
17
|
+
storageKeys: this.storageKeys,
|
|
18
|
+
}).run(signalArg);
|
|
19
|
+
for (const storageKey of this.storageKeys) {
|
|
20
|
+
signalArg?.throwIfAborted();
|
|
21
|
+
await this.store.ensurePublicProjection(storageKey);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5mbGV4bWlncmF0aW9ucnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfbWlncmF0aW9uL2NsYXNzZXMuZmxleG1pZ3JhdGlvbnJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU81RSxNQUFNLE9BQU8sOEJBQThCO0lBQ3hCLEtBQUssQ0FBWTtJQUNqQixXQUFXLENBQVc7SUFFdkMsWUFBWSxVQUE0QztRQUN0RCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBdUI7UUFDdEMsTUFBTSxJQUFJLDRCQUE0QixDQUFDO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDOUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQixNQUFNLElBQUksNEJBQTRCLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xCLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
export interface IFlexPostHarnessMigrationRunnerOptions<TScope> {
|
|
3
|
+
harness: plugins.flexharness.FlexHarness<TScope>;
|
|
4
|
+
scopeIds: Iterable<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class FlexPostHarnessMigrationRunner<TScope> {
|
|
7
|
+
private readonly migrations;
|
|
8
|
+
constructor(optionsArg: IFlexPostHarnessMigrationRunnerOptions<TScope>);
|
|
9
|
+
run(signalArg?: AbortSignal): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
import { FlexProjectManagementMigration } from './v19_flexprojectmanagement.js';
|
|
3
|
+
export class FlexPostHarnessMigrationRunner {
|
|
4
|
+
migrations;
|
|
5
|
+
constructor(optionsArg) {
|
|
6
|
+
this.migrations = [new FlexProjectManagementMigration(optionsArg)];
|
|
7
|
+
}
|
|
8
|
+
async run(signalArg) {
|
|
9
|
+
for (const migration of this.migrations) {
|
|
10
|
+
signalArg?.throwIfAborted();
|
|
11
|
+
await migration.run(signalArg);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5mbGV4cG9zdGhhcm5lc3NtaWdyYXRpb25ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19taWdyYXRpb24vY2xhc3Nlcy5mbGV4cG9zdGhhcm5lc3NtaWdyYXRpb25ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9oRixNQUFNLE9BQU8sOEJBQThCO0lBQ3hCLFVBQVUsQ0FBeUQ7SUFFcEYsWUFBWSxVQUEwRDtRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQXVCO1FBQ3RDLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUM1QixNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type IEmbeddedDatabaseLocationMigrationOptions, type IEmbeddedDatabaseLocationMigrationResult } from './v1_embeddeddatabaselocation.js';
|
|
2
|
+
export declare class EmbeddedDatabaseMigrationRunner {
|
|
3
|
+
private readonly migrations;
|
|
4
|
+
constructor(optionsArg: IEmbeddedDatabaseLocationMigrationOptions);
|
|
5
|
+
get hasOwnedResources(): boolean;
|
|
6
|
+
run(): Promise<IEmbeddedDatabaseLocationMigrationResult | undefined>;
|
|
7
|
+
stop(): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { EmbeddedDatabaseLocationMigration, } from './v1_embeddeddatabaselocation.js';
|
|
2
|
+
export class EmbeddedDatabaseMigrationRunner {
|
|
3
|
+
migrations;
|
|
4
|
+
constructor(optionsArg) {
|
|
5
|
+
this.migrations = [new EmbeddedDatabaseLocationMigration(optionsArg)];
|
|
6
|
+
}
|
|
7
|
+
get hasOwnedResources() {
|
|
8
|
+
return this.migrations.some((migration) => migration.hasOwnedResources);
|
|
9
|
+
}
|
|
10
|
+
async run() {
|
|
11
|
+
let result;
|
|
12
|
+
for (const migration of this.migrations) {
|
|
13
|
+
result = await migration.run() ?? result;
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
async stop() {
|
|
18
|
+
const errors = [];
|
|
19
|
+
for (const migration of [...this.migrations].reverse()) {
|
|
20
|
+
try {
|
|
21
|
+
await migration.stop();
|
|
22
|
+
}
|
|
23
|
+
catch (errorArg) {
|
|
24
|
+
errors.push(errorArg);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (errors.length === 1)
|
|
28
|
+
throw errors[0];
|
|
29
|
+
if (errors.length > 1) {
|
|
30
|
+
throw new AggregateError(errors, 'Embedded database migration runner cleanup failed.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5taWdyYXRpb25ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19taWdyYXRpb24vY2xhc3Nlcy5taWdyYXRpb25ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlDQUFpQyxHQUdsQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE1BQU0sT0FBTywrQkFBK0I7SUFDekIsVUFBVSxDQUFzQztJQUVqRSxZQUFZLFVBQXFEO1FBQy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLGlDQUFpQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRztRQUNkLElBQUksTUFBNEQsQ0FBQztRQUNqRSxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLE1BQU0sR0FBYyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLFNBQVMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDO2dCQUNILE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLENBQUM7WUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsb0RBQW9ELENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './classes.migrationrunner.js';
|
|
2
|
+
export * from './classes.flexmigrationrunner.js';
|
|
3
|
+
export * from './v1_embeddeddatabaselocation.js';
|
|
4
|
+
export * from './v2_controllerdataroot.js';
|
|
5
|
+
export * from './v10_flexharnessv3migration.js';
|
|
6
|
+
export * from './v13_flexprojectionorder.js';
|
|
7
|
+
export * from './v16_flexprovidercredentials.js';
|
|
8
|
+
export * from './v18_resourcelayout.js';
|
|
9
|
+
export * from './v18_resourcelayoutmigration.js';
|
|
10
|
+
export * from './classes.flexpostharnessmigrationrunner.js';
|
|
11
|
+
export * from './v19_flexprojectmanagement.js';
|
|
12
|
+
export * from './v22_projectfilesystemidentitymigration.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './classes.migrationrunner.js';
|
|
2
|
+
export * from './classes.flexmigrationrunner.js';
|
|
3
|
+
export * from './v1_embeddeddatabaselocation.js';
|
|
4
|
+
export * from './v2_controllerdataroot.js';
|
|
5
|
+
export * from './v10_flexharnessv3migration.js';
|
|
6
|
+
export * from './v13_flexprojectionorder.js';
|
|
7
|
+
export * from './v16_flexprovidercredentials.js';
|
|
8
|
+
export * from './v18_resourcelayout.js';
|
|
9
|
+
export * from './v18_resourcelayoutmigration.js';
|
|
10
|
+
export * from './classes.flexpostharnessmigrationrunner.js';
|
|
11
|
+
export * from './v19_flexprojectmanagement.js';
|
|
12
|
+
export * from './v22_projectfilesystemidentitymigration.js';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19taWdyYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNkNBQTZDLENBQUMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FlexStore } from '../dist_ts/classes.flexstore.js';
|
|
2
|
+
export interface IFlexHarnessV3MigrationOptions {
|
|
3
|
+
store: FlexStore;
|
|
4
|
+
storageKeys: Iterable<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class FlexHarnessV3MigrationRunner {
|
|
7
|
+
private readonly store;
|
|
8
|
+
private readonly storageKeys;
|
|
9
|
+
constructor(optionsArg: IFlexHarnessV3MigrationOptions);
|
|
10
|
+
run(signalArg?: AbortSignal): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
export class FlexHarnessV3MigrationRunner {
|
|
3
|
+
store;
|
|
4
|
+
storageKeys;
|
|
5
|
+
constructor(optionsArg) {
|
|
6
|
+
this.store = optionsArg.store;
|
|
7
|
+
this.storageKeys = [...new Set(optionsArg.storageKeys)].sort();
|
|
8
|
+
}
|
|
9
|
+
async run(signalArg) {
|
|
10
|
+
const migrationStores = this.store.getLegacyMigrationStores();
|
|
11
|
+
for (const storageKey of this.storageKeys) {
|
|
12
|
+
signalArg?.throwIfAborted();
|
|
13
|
+
if (!await this.store.hasCompletedLegacyMigration(storageKey)) {
|
|
14
|
+
const legacySnapshot = await this.store.loadLegacy(storageKey);
|
|
15
|
+
if (legacySnapshot) {
|
|
16
|
+
await plugins.flexharnessMigration.migrateLegacyFlexHarnessSnapshot(storageKey, legacySnapshot, migrationStores);
|
|
17
|
+
await this.store.completeLegacyMigration(storageKey);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEwX2ZsZXhoYXJuZXNzdjNtaWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19taWdyYXRpb24vdjEwX2ZsZXhoYXJuZXNzdjNtaWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQVE1QyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3RCLEtBQUssQ0FBWTtJQUNqQixXQUFXLENBQVc7SUFFdkMsWUFBWSxVQUEwQztRQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBdUI7UUFDdEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzlELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9ELElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25CLE1BQU0sT0FBTyxDQUFDLG9CQUFvQixDQUFDLGdDQUFnQyxDQUNqRSxVQUFVLEVBQ1YsY0FBYyxFQUNkLGVBQWUsQ0FDaEIsQ0FBQztvQkFDRixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FlexStore } from '../dist_ts/classes.flexstore.js';
|
|
2
|
+
export interface IFlexProjectionOrderMigrationOptions {
|
|
3
|
+
store: FlexStore;
|
|
4
|
+
storageKeys: Iterable<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class FlexProjectionOrderMigration {
|
|
7
|
+
private readonly store;
|
|
8
|
+
private readonly storageKeys;
|
|
9
|
+
constructor(optionsArg: IFlexProjectionOrderMigrationOptions);
|
|
10
|
+
run(signalArg?: AbortSignal): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class FlexProjectionOrderMigration {
|
|
2
|
+
store;
|
|
3
|
+
storageKeys;
|
|
4
|
+
constructor(optionsArg) {
|
|
5
|
+
this.store = optionsArg.store;
|
|
6
|
+
this.storageKeys = [...new Set(optionsArg.storageKeys)].sort();
|
|
7
|
+
}
|
|
8
|
+
async run(signalArg) {
|
|
9
|
+
for (const storageKey of this.storageKeys) {
|
|
10
|
+
let cursor;
|
|
11
|
+
do {
|
|
12
|
+
signalArg?.throwIfAborted();
|
|
13
|
+
const page = await this.store.listProjectionOrderMigrationPage(storageKey, cursor);
|
|
14
|
+
for (const sessionId of page.sessionIds) {
|
|
15
|
+
signalArg?.throwIfAborted();
|
|
16
|
+
await this.store.rewriteProjectionSourceOrder(storageKey, sessionId);
|
|
17
|
+
}
|
|
18
|
+
cursor = page.nextCursor;
|
|
19
|
+
} while (cursor);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjEzX2ZsZXhwcm9qZWN0aW9ub3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19taWdyYXRpb24vdjEzX2ZsZXhwcm9qZWN0aW9ub3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLDRCQUE0QjtJQUN0QixLQUFLLENBQVk7SUFDakIsV0FBVyxDQUFXO0lBRXZDLFlBQVksVUFBZ0Q7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQXVCO1FBQ3RDLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksTUFFSCxDQUFDO1lBQ0YsR0FBRyxDQUFDO2dCQUNGLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDbkYsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3hDLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdkUsQ0FBQztnQkFDRCxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUMzQixDQUFDLFFBQVEsTUFBTSxFQUFFO1FBQ25CLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const flexProviderCredentialStoreId = "flex-provider-credentials.v1";
|
|
2
|
+
export declare const flexProviderCredentialConnectionLimit = 512;
|
|
3
|
+
export interface IFlexProviderCredentialStore {
|
|
4
|
+
getEntry(accountArg: string): Promise<Uint8Array | null>;
|
|
5
|
+
setEntry(accountArg: string, valueArg: Uint8Array): Promise<void>;
|
|
6
|
+
deleteEntry(accountArg: string): Promise<boolean>;
|
|
7
|
+
}
|
|
8
|
+
export interface IFlexProviderCredentialStorePair<TKernelStore extends IFlexProviderCredentialStore = IFlexProviderCredentialStore, TSealedStore extends IFlexProviderCredentialStore = IFlexProviderCredentialStore> {
|
|
9
|
+
kernelStore: TKernelStore;
|
|
10
|
+
sealedStore: TSealedStore;
|
|
11
|
+
}
|
|
12
|
+
export interface IFlexProviderCredentialMigrationOptions<TKernelStore extends IFlexProviderCredentialStore, TSealedStore extends IFlexProviderCredentialStore> {
|
|
13
|
+
stores: IFlexProviderCredentialStorePair<TKernelStore, TSealedStore>;
|
|
14
|
+
recreateStores: (storesArg: IFlexProviderCredentialStorePair<TKernelStore, TSealedStore>) => Promise<IFlexProviderCredentialStorePair<TKernelStore, TSealedStore>>;
|
|
15
|
+
connectionIds: Iterable<string>;
|
|
16
|
+
}
|
|
17
|
+
export type TFlexProviderCredentialMigrationErrorCode = 'CONNECTION_LIMIT_EXCEEDED' | 'CREDENTIAL_CONFLICT' | 'CREDENTIAL_INVALID' | 'MUTATION_RECONCILIATION_FAILED';
|
|
18
|
+
export declare class FlexProviderCredentialMigrationError extends Error {
|
|
19
|
+
readonly code: TFlexProviderCredentialMigrationErrorCode;
|
|
20
|
+
constructor(code: TFlexProviderCredentialMigrationErrorCode);
|
|
21
|
+
}
|
|
22
|
+
export declare const migrateFlexProviderCredentials: <TKernelStore extends IFlexProviderCredentialStore, TSealedStore extends IFlexProviderCredentialStore>(optionsArg: IFlexProviderCredentialMigrationOptions<TKernelStore, TSealedStore>, signalArg?: AbortSignal) => Promise<IFlexProviderCredentialStorePair<TKernelStore, TSealedStore>>;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
export const flexProviderCredentialStoreId = 'flex-provider-credentials.v1';
|
|
3
|
+
export const flexProviderCredentialConnectionLimit = 512;
|
|
4
|
+
export class FlexProviderCredentialMigrationError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(code) {
|
|
7
|
+
super(`Flex provider credential migration failed (${code}).`);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.name = 'FlexProviderCredentialMigrationError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const maximumMutationAttempts = 2;
|
|
13
|
+
const credentialAccount = (connectionIdArg) => `provider:${connectionIdArg}`;
|
|
14
|
+
const isMutationOutcomeUnknown = (errorArg) => (errorArg instanceof plugins.smartsecret.SmartSecretKernelStoreError
|
|
15
|
+
|| errorArg instanceof plugins.smartsecret.SmartSecretSealedFileStoreError) && errorArg.code === 'MUTATION_OUTCOME_UNKNOWN';
|
|
16
|
+
const credentialBytesEqual = (leftArg, rightArg) => leftArg.byteLength === rightArg.byteLength
|
|
17
|
+
&& plugins.crypto.timingSafeEqual(leftArg, rightArg);
|
|
18
|
+
const validateCredentialBytes = (bytesArg) => {
|
|
19
|
+
try {
|
|
20
|
+
const credential = plugins.smartaiProviders.parseProviderCredential(bytesArg);
|
|
21
|
+
if (credential.kind !== 'chatgptOAuth' || credential.providerId !== 'openai') {
|
|
22
|
+
throw new FlexProviderCredentialMigrationError('CREDENTIAL_INVALID');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (errorArg) {
|
|
26
|
+
if (errorArg instanceof FlexProviderCredentialMigrationError)
|
|
27
|
+
throw errorArg;
|
|
28
|
+
throw new FlexProviderCredentialMigrationError('CREDENTIAL_INVALID');
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const readValidatedCredential = async (storeArg, accountArg) => {
|
|
32
|
+
const bytes = await storeArg.getEntry(accountArg);
|
|
33
|
+
if (!bytes)
|
|
34
|
+
return null;
|
|
35
|
+
try {
|
|
36
|
+
validateCredentialBytes(bytes);
|
|
37
|
+
return bytes;
|
|
38
|
+
}
|
|
39
|
+
catch (errorArg) {
|
|
40
|
+
bytes.fill(0);
|
|
41
|
+
throw errorArg;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const deleteLegacyCredentialEntry = async (optionsArg, accountArg, expectedBytesArg) => {
|
|
45
|
+
let stores = optionsArg.stores;
|
|
46
|
+
let requiresConfirmedRetry = false;
|
|
47
|
+
for (let attempt = 0; attempt < maximumMutationAttempts; attempt += 1) {
|
|
48
|
+
let outcomeWasUnknown = false;
|
|
49
|
+
try {
|
|
50
|
+
await stores.kernelStore.deleteEntry(accountArg);
|
|
51
|
+
}
|
|
52
|
+
catch (errorArg) {
|
|
53
|
+
if (!isMutationOutcomeUnknown(errorArg))
|
|
54
|
+
throw errorArg;
|
|
55
|
+
stores = await optionsArg.recreateStores(stores);
|
|
56
|
+
outcomeWasUnknown = true;
|
|
57
|
+
requiresConfirmedRetry = true;
|
|
58
|
+
}
|
|
59
|
+
const readback = await readValidatedCredential(stores.kernelStore, accountArg);
|
|
60
|
+
try {
|
|
61
|
+
if (!readback) {
|
|
62
|
+
if (!requiresConfirmedRetry || !outcomeWasUnknown)
|
|
63
|
+
return stores;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (!credentialBytesEqual(readback, expectedBytesArg)) {
|
|
67
|
+
throw new FlexProviderCredentialMigrationError('CREDENTIAL_CONFLICT');
|
|
68
|
+
}
|
|
69
|
+
if (!outcomeWasUnknown || attempt === maximumMutationAttempts - 1) {
|
|
70
|
+
throw new FlexProviderCredentialMigrationError('MUTATION_RECONCILIATION_FAILED');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
readback?.fill(0);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw new FlexProviderCredentialMigrationError('MUTATION_RECONCILIATION_FAILED');
|
|
78
|
+
};
|
|
79
|
+
export const migrateFlexProviderCredentials = async (optionsArg, signalArg) => {
|
|
80
|
+
const connectionIds = [...new Set(optionsArg.connectionIds)].sort();
|
|
81
|
+
if (connectionIds.length > flexProviderCredentialConnectionLimit) {
|
|
82
|
+
throw new FlexProviderCredentialMigrationError('CONNECTION_LIMIT_EXCEEDED');
|
|
83
|
+
}
|
|
84
|
+
let stores = optionsArg.stores;
|
|
85
|
+
for (const connectionId of connectionIds) {
|
|
86
|
+
signalArg?.throwIfAborted();
|
|
87
|
+
const account = credentialAccount(connectionId);
|
|
88
|
+
let sourceBytes = null;
|
|
89
|
+
let sealedBytes = null;
|
|
90
|
+
try {
|
|
91
|
+
sourceBytes = await readValidatedCredential(stores.kernelStore, account);
|
|
92
|
+
sealedBytes = await readValidatedCredential(stores.sealedStore, account);
|
|
93
|
+
if (!sourceBytes)
|
|
94
|
+
continue;
|
|
95
|
+
if (sealedBytes && !credentialBytesEqual(sourceBytes, sealedBytes)) {
|
|
96
|
+
throw new FlexProviderCredentialMigrationError('CREDENTIAL_CONFLICT');
|
|
97
|
+
}
|
|
98
|
+
if (!sealedBytes) {
|
|
99
|
+
let copied = false;
|
|
100
|
+
let requiresConfirmedRetry = false;
|
|
101
|
+
for (let attempt = 0; attempt < maximumMutationAttempts; attempt += 1) {
|
|
102
|
+
let outcomeWasUnknown = false;
|
|
103
|
+
try {
|
|
104
|
+
await stores.sealedStore.setEntry(account, sourceBytes);
|
|
105
|
+
}
|
|
106
|
+
catch (errorArg) {
|
|
107
|
+
if (!isMutationOutcomeUnknown(errorArg))
|
|
108
|
+
throw errorArg;
|
|
109
|
+
stores = await optionsArg.recreateStores(stores);
|
|
110
|
+
outcomeWasUnknown = true;
|
|
111
|
+
requiresConfirmedRetry = true;
|
|
112
|
+
}
|
|
113
|
+
const readback = await readValidatedCredential(stores.sealedStore, account);
|
|
114
|
+
try {
|
|
115
|
+
if (readback && credentialBytesEqual(readback, sourceBytes)) {
|
|
116
|
+
if (!requiresConfirmedRetry || !outcomeWasUnknown) {
|
|
117
|
+
copied = true;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (readback) {
|
|
123
|
+
throw new FlexProviderCredentialMigrationError('CREDENTIAL_CONFLICT');
|
|
124
|
+
}
|
|
125
|
+
if (!outcomeWasUnknown || attempt === maximumMutationAttempts - 1) {
|
|
126
|
+
throw new FlexProviderCredentialMigrationError('MUTATION_RECONCILIATION_FAILED');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
readback?.fill(0);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!copied) {
|
|
134
|
+
throw new FlexProviderCredentialMigrationError('MUTATION_RECONCILIATION_FAILED');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
stores = await deleteLegacyCredentialEntry({
|
|
138
|
+
stores,
|
|
139
|
+
recreateStores: optionsArg.recreateStores,
|
|
140
|
+
}, account, sourceBytes);
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
sourceBytes?.fill(0);
|
|
144
|
+
sealedBytes?.fill(0);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return stores;
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjE2X2ZsZXhwcm92aWRlcmNyZWRlbnRpYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfbWlncmF0aW9uL3YxNl9mbGV4cHJvdmlkZXJjcmVkZW50aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLDhCQUE4QixDQUFDO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEdBQUcsQ0FBQztBQWlDekQsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLEtBQUs7SUFDakM7SUFBNUIsWUFBNEIsSUFBK0M7UUFDekUsS0FBSyxDQUFDLDhDQUE4QyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBRHBDLFNBQUksR0FBSixJQUFJLENBQTJDO1FBRXpFLElBQUksQ0FBQyxJQUFJLEdBQUcsc0NBQXNDLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBRUQsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7QUFFbEMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGVBQXVCLEVBQVUsRUFBRSxDQUFDLFlBQVksZUFBZSxFQUFFLENBQUM7QUFFN0YsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFFBQWlCLEVBQVcsRUFBRSxDQUFDLENBQy9ELFFBQVEsWUFBWSxPQUFPLENBQUMsV0FBVyxDQUFDLDJCQUEyQjtPQUNoRSxRQUFRLFlBQVksT0FBTyxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FDM0UsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLDBCQUEwQixDQUFDO0FBRWxELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFtQixFQUFFLFFBQW9CLEVBQVcsRUFBRSxDQUNsRixPQUFPLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxVQUFVO09BQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztB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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IControllerSessionGroupsDocument } from '../dist_ts/interfaces.projects.js';
|
|
2
|
+
import type { TControllerSessionId } from '../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface IProtocolV18LayoutMigrationResult {
|
|
4
|
+
document: IControllerSessionGroupsDocument;
|
|
5
|
+
migrated: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface IProtocolV18LegacySessionGroup {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
sessionIds: Array<TControllerSessionId | {
|
|
11
|
+
harnessId: 'controller';
|
|
12
|
+
nativeId: string;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export interface IProtocolV18LegacySessionGroupsDocument extends Omit<IControllerSessionGroupsDocument, 'groups' | 'ungroupedSessionIds'> {
|
|
16
|
+
groups: IProtocolV18LegacySessionGroup[];
|
|
17
|
+
ungroupedSessionIds?: Array<TControllerSessionId | {
|
|
18
|
+
harnessId: 'controller';
|
|
19
|
+
nativeId: string;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export declare const migrateProtocolV18SessionLayoutDocument: (valueArg: IProtocolV18LegacySessionGroupsDocument) => IProtocolV18LayoutMigrationResult;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const isPlainObject = (valueArg) => typeof valueArg === 'object' && valueArg !== null && !Array.isArray(valueArg);
|
|
2
|
+
const isLegacyTerminalId = (valueArg) => isPlainObject(valueArg) && valueArg.harnessId === 'controller';
|
|
3
|
+
export const migrateProtocolV18SessionLayoutDocument = (valueArg) => {
|
|
4
|
+
const groups = valueArg.groups.map((group) => ({
|
|
5
|
+
...group,
|
|
6
|
+
sessionIds: group.sessionIds.filter((sessionId) => !isLegacyTerminalId(sessionId)),
|
|
7
|
+
}));
|
|
8
|
+
const ungroupedSessionIds = (valueArg.ungroupedSessionIds ?? [])
|
|
9
|
+
.filter((sessionId) => !isLegacyTerminalId(sessionId));
|
|
10
|
+
const migrated = groups.some((group, index) => (group.sessionIds.length !== valueArg.groups[index].sessionIds.length)) || ungroupedSessionIds.length !== (valueArg.ungroupedSessionIds ?? []).length;
|
|
11
|
+
if (!migrated)
|
|
12
|
+
return { document: valueArg, migrated: false };
|
|
13
|
+
return {
|
|
14
|
+
document: {
|
|
15
|
+
...valueArg,
|
|
16
|
+
groups,
|
|
17
|
+
ungroupedSessionIds,
|
|
18
|
+
revision: (valueArg.revision ?? 0) + 1,
|
|
19
|
+
},
|
|
20
|
+
migrated: true,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjE4X3Jlc291cmNlbGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfbWlncmF0aW9uL3YxOF9yZXNvdXJjZWxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3QkEsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFpQixFQUF1QixFQUFFLENBQy9ELE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVoRixNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBaUIsRUFBVyxFQUFFLENBQ3hELGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQztBQUVqRSxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxDQUNyRCxRQUFpRCxFQUNkLEVBQUU7SUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0MsR0FBRyxLQUFLO1FBQ1IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUNqQyxDQUFDLFNBQVMsRUFBcUMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQ2pGO0tBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztTQUM3RCxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQXFDLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQzdDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDckUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakYsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQTRDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2xHLE9BQU87UUFDTCxRQUFRLEVBQUU7WUFDUixHQUFHLFFBQVE7WUFDWCxNQUFNO1lBQ04sbUJBQW1CO1lBQ25CLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUN2QztRQUNELFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
import { assertControllerSessionGroupsDocument, ControllerSessionGroupsModel, } from '../dist_ts/classes.authmodels.js';
|
|
3
|
+
import { AuthError } from '../dist_ts/interfaces.auth.js';
|
|
4
|
+
import { migrateProtocolV18SessionLayoutDocument } from './v18_resourcelayout.js';
|
|
5
|
+
const migrationPageLimit = 128;
|
|
6
|
+
const persistedBodyFromRawDocument = (valueArg) => {
|
|
7
|
+
const body = { ...valueArg };
|
|
8
|
+
delete body._id;
|
|
9
|
+
delete body._smartdataRevision;
|
|
10
|
+
return body;
|
|
11
|
+
};
|
|
12
|
+
export class ProtocolV18ResourceLayoutMigration {
|
|
13
|
+
database;
|
|
14
|
+
constructor(database) {
|
|
15
|
+
this.database = database;
|
|
16
|
+
}
|
|
17
|
+
async run() {
|
|
18
|
+
if (!this.database) {
|
|
19
|
+
throw new AuthError('not_initialized', 'The authentication store database is unavailable.');
|
|
20
|
+
}
|
|
21
|
+
const collection = ControllerSessionGroupsModel.collection.mongoDbCollection;
|
|
22
|
+
let lastId;
|
|
23
|
+
while (true) {
|
|
24
|
+
const cursor = collection.find(lastId ? { _id: { $gt: lastId } } : {})
|
|
25
|
+
.sort({ _id: 1 })
|
|
26
|
+
.limit(migrationPageLimit);
|
|
27
|
+
let documents;
|
|
28
|
+
try {
|
|
29
|
+
documents = await cursor.toArray();
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
await cursor.close();
|
|
33
|
+
}
|
|
34
|
+
for (const raw of documents) {
|
|
35
|
+
const migration = migrateProtocolV18SessionLayoutDocument(persistedBodyFromRawDocument(raw));
|
|
36
|
+
assertControllerSessionGroupsDocument(migration.document);
|
|
37
|
+
if (!migration.migrated)
|
|
38
|
+
continue;
|
|
39
|
+
const selector = raw._smartdataRevision === undefined
|
|
40
|
+
? { _id: raw._id, _smartdataRevision: { $exists: false } }
|
|
41
|
+
: { _id: raw._id, _smartdataRevision: raw._smartdataRevision };
|
|
42
|
+
const replaced = await collection.findOneAndReplace(selector, { _id: raw._id, ...migration.document, _smartdataRevision: plugins.crypto.randomUUID() }, { returnDocument: 'after', includeResultMetadata: false, upsert: false });
|
|
43
|
+
if (!replaced) {
|
|
44
|
+
const concurrent = await collection.findOne({ _id: raw._id });
|
|
45
|
+
if (!concurrent)
|
|
46
|
+
throw new AuthError('concurrent_change', 'The resource layout migration changed concurrently.');
|
|
47
|
+
const remaining = migrateProtocolV18SessionLayoutDocument(persistedBodyFromRawDocument(concurrent));
|
|
48
|
+
assertControllerSessionGroupsDocument(remaining.document);
|
|
49
|
+
if (remaining.migrated) {
|
|
50
|
+
throw new AuthError('concurrent_change', 'The resource layout migration changed concurrently.');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const last = documents.at(-1);
|
|
55
|
+
if (!last || documents.length < migrationPageLimit)
|
|
56
|
+
break;
|
|
57
|
+
lastId = last._id;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjE4X3Jlc291cmNlbGF5b3V0bWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfbWlncmF0aW9uL3YxOF9yZXNvdXJjZWxheW91dG1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsNEJBQTRCLEdBQzdCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2xGLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0sNEJBQTRCLEdBQUcsQ0FDbkMsUUFBaUMsRUFDUSxFQUFFO0lBQzNDLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztJQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDaEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDL0IsT0FBTyxJQUEwRCxDQUFDO0FBQ3BFLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxrQ0FBa0M7SUFDaEI7SUFBN0IsWUFBNkIsUUFBbUQ7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBMkM7SUFBRyxDQUFDO0lBRTdFLEtBQUssQ0FBQyxHQUFHO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksU0FBUyxDQUFDLGlCQUFpQixFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztRQUM3RSxJQUFJLE1BQThGLENBQUM7UUFDbkcsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sTUFBTSxHQUFHLFVB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
export interface IFlexProjectManagementMigrationOptions<TScope> {
|
|
3
|
+
harness: plugins.flexharness.FlexHarness<TScope>;
|
|
4
|
+
scopeIds: Iterable<string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class FlexProjectManagementMigration<TScope> {
|
|
7
|
+
private readonly harness;
|
|
8
|
+
private readonly scopeIds;
|
|
9
|
+
constructor(optionsArg: IFlexProjectManagementMigrationOptions<TScope>);
|
|
10
|
+
run(signalArg?: AbortSignal): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as plugins from '../dist_ts/plugins.js';
|
|
2
|
+
export class FlexProjectManagementMigration {
|
|
3
|
+
harness;
|
|
4
|
+
scopeIds;
|
|
5
|
+
constructor(optionsArg) {
|
|
6
|
+
this.harness = optionsArg.harness;
|
|
7
|
+
this.scopeIds = [...new Set(optionsArg.scopeIds)].sort();
|
|
8
|
+
}
|
|
9
|
+
async run(signalArg) {
|
|
10
|
+
for (const scopeId of this.scopeIds) {
|
|
11
|
+
signalArg?.throwIfAborted();
|
|
12
|
+
// listSessions durably repairs legacy session generations before PM state is loaded.
|
|
13
|
+
const sessions = await this.harness.listSessions(scopeId);
|
|
14
|
+
for (const session of sessions) {
|
|
15
|
+
signalArg?.throwIfAborted();
|
|
16
|
+
await this.harness.getProjectState(scopeId, session.sessionId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjE5X2ZsZXhwcm9qZWN0bWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX21pZ3JhdGlvbi92MTlfZmxleHByb2plY3RtYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFPNUMsTUFBTSxPQUFPLDhCQUE4QjtJQUN4QixPQUFPLENBQTBDO0lBQ2pELFFBQVEsQ0FBVztJQUVwQyxZQUFZLFVBQTBEO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUF1QjtRQUN0QyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDNUIscUZBQXFGO1lBQ3JGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|