donobu 2.23.0 → 2.23.1
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/package.json +1 -1
- package/dist/apis/EnvironmentDataApi.d.ts +0 -26
- package/dist/apis/EnvironmentDataApi.d.ts.map +0 -1
- package/dist/apis/EnvironmentDataApi.js +0 -59
- package/dist/apis/EnvironmentDataApi.js.map +0 -1
- package/dist/assets/donobu-virtual-mouse.svg +0 -11
- package/dist/assets/donobu.css +0 -62
- package/dist/assets/generated/parameter-schemas.json +0 -2241
- package/dist/assets/record.umd.min.cjs +0 -10399
- package/dist/bindings/FocusPage.d.ts +0 -23
- package/dist/bindings/FocusPage.d.ts.map +0 -1
- package/dist/bindings/FocusPage.js +0 -20
- package/dist/bindings/FocusPage.js.map +0 -1
- package/dist/bindings/ToggleDonobuAnnotations.d.ts +0 -21
- package/dist/bindings/ToggleDonobuAnnotations.d.ts.map +0 -1
- package/dist/bindings/ToggleDonobuAnnotations.js +0 -51
- package/dist/bindings/ToggleDonobuAnnotations.js.map +0 -1
- package/dist/esm/apis/EnvironmentDataApi.d.ts +0 -26
- package/dist/esm/apis/EnvironmentDataApi.d.ts.map +0 -1
- package/dist/esm/apis/EnvironmentDataApi.js +0 -59
- package/dist/esm/apis/EnvironmentDataApi.js.map +0 -1
- package/dist/esm/assets/donobu-virtual-mouse.svg +0 -11
- package/dist/esm/assets/donobu.css +0 -62
- package/dist/esm/assets/generated/parameter-schemas.json +0 -2241
- package/dist/esm/assets/record.umd.min.cjs +0 -10399
- package/dist/esm/bindings/FocusPage.d.ts +0 -23
- package/dist/esm/bindings/FocusPage.d.ts.map +0 -1
- package/dist/esm/bindings/FocusPage.js +0 -20
- package/dist/esm/bindings/FocusPage.js.map +0 -1
- package/dist/esm/bindings/ToggleDonobuAnnotations.d.ts +0 -21
- package/dist/esm/bindings/ToggleDonobuAnnotations.d.ts.map +0 -1
- package/dist/esm/bindings/ToggleDonobuAnnotations.js +0 -51
- package/dist/esm/bindings/ToggleDonobuAnnotations.js.map +0 -1
- package/dist/esm/lib/constants.d.ts +0 -8
- package/dist/esm/lib/constants.d.ts.map +0 -1
- package/dist/esm/lib/constants.js +0 -14
- package/dist/esm/lib/constants.js.map +0 -1
- package/dist/esm/lib/fixtures/testExtension.d.ts +0 -10
- package/dist/esm/lib/fixtures/testExtension.d.ts.map +0 -1
- package/dist/esm/lib/fixtures/testExtension.js +0 -383
- package/dist/esm/lib/fixtures/testExtension.js.map +0 -1
- package/dist/esm/lib/types.d.ts +0 -106
- package/dist/esm/lib/types.d.ts.map +0 -1
- package/dist/esm/lib/types.js +0 -3
- package/dist/esm/lib/types.js.map +0 -1
- package/dist/esm/managers/EnvironmentDataManager.d.ts +0 -58
- package/dist/esm/managers/EnvironmentDataManager.d.ts.map +0 -1
- package/dist/esm/managers/EnvironmentDataManager.js +0 -134
- package/dist/esm/managers/EnvironmentDataManager.js.map +0 -1
- package/dist/esm/managers/ProjectStructureGenerator.d.ts +0 -62
- package/dist/esm/managers/ProjectStructureGenerator.d.ts.map +0 -1
- package/dist/esm/managers/ProjectStructureGenerator.js +0 -234
- package/dist/esm/managers/ProjectStructureGenerator.js.map +0 -1
- package/dist/esm/managers/TestFileUpdater.d.ts +0 -56
- package/dist/esm/managers/TestFileUpdater.d.ts.map +0 -1
- package/dist/esm/managers/TestFileUpdater.js +0 -224
- package/dist/esm/managers/TestFileUpdater.js.map +0 -1
- package/dist/esm/models/AskAiRequest.d.ts +0 -15
- package/dist/esm/models/AskAiRequest.d.ts.map +0 -1
- package/dist/esm/models/AskAiRequest.js +0 -3
- package/dist/esm/models/AskAiRequest.js.map +0 -1
- package/dist/esm/models/BaseToolGptParameters.d.ts +0 -10
- package/dist/esm/models/BaseToolGptParameters.d.ts.map +0 -1
- package/dist/esm/models/BaseToolGptParameters.js +0 -3
- package/dist/esm/models/BaseToolGptParameters.js.map +0 -1
- package/dist/esm/models/BrowserFramework.d.ts +0 -61
- package/dist/esm/models/BrowserFramework.d.ts.map +0 -1
- package/dist/esm/models/BrowserFramework.js +0 -339
- package/dist/esm/models/BrowserFramework.js.map +0 -1
- package/dist/esm/models/EnvironmentDatum.d.ts +0 -54
- package/dist/esm/models/EnvironmentDatum.d.ts.map +0 -1
- package/dist/esm/models/EnvironmentDatum.js +0 -57
- package/dist/esm/models/EnvironmentDatum.js.map +0 -1
- package/dist/esm/models/FlowsQuery.d.ts +0 -12
- package/dist/esm/models/FlowsQuery.d.ts.map +0 -1
- package/dist/esm/models/FlowsQuery.js +0 -3
- package/dist/esm/models/FlowsQuery.js.map +0 -1
- package/dist/esm/persistence/AgentsPersistence.d.ts +0 -12
- package/dist/esm/persistence/AgentsPersistence.d.ts.map +0 -1
- package/dist/esm/persistence/AgentsPersistence.js +0 -3
- package/dist/esm/persistence/AgentsPersistence.js.map +0 -1
- package/dist/esm/persistence/AgentsPersistenceSqlite.d.ts +0 -15
- package/dist/esm/persistence/AgentsPersistenceSqlite.d.ts.map +0 -1
- package/dist/esm/persistence/AgentsPersistenceSqlite.js +0 -50
- package/dist/esm/persistence/AgentsPersistenceSqlite.js.map +0 -1
- package/dist/esm/persistence/AgentsPersistenceVolatile.d.ts +0 -14
- package/dist/esm/persistence/AgentsPersistenceVolatile.d.ts.map +0 -1
- package/dist/esm/persistence/AgentsPersistenceVolatile.js +0 -26
- package/dist/esm/persistence/AgentsPersistenceVolatile.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistence.d.ts +0 -104
- package/dist/esm/persistence/FlowsPersistence.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistence.js +0 -3
- package/dist/esm/persistence/FlowsPersistence.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceAwsS3.d.ts +0 -75
- package/dist/esm/persistence/FlowsPersistenceAwsS3.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceAwsS3.js +0 -525
- package/dist/esm/persistence/FlowsPersistenceAwsS3.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFactory.d.ts +0 -10
- package/dist/esm/persistence/FlowsPersistenceFactory.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFactory.js +0 -3
- package/dist/esm/persistence/FlowsPersistenceFactory.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFactoryImpl.d.ts +0 -57
- package/dist/esm/persistence/FlowsPersistenceFactoryImpl.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFactoryImpl.js +0 -235
- package/dist/esm/persistence/FlowsPersistenceFactoryImpl.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFactoryPreset.d.ts +0 -13
- package/dist/esm/persistence/FlowsPersistenceFactoryPreset.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFactoryPreset.js +0 -24
- package/dist/esm/persistence/FlowsPersistenceFactoryPreset.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFilesystem.d.ts +0 -69
- package/dist/esm/persistence/FlowsPersistenceFilesystem.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceFilesystem.js +0 -381
- package/dist/esm/persistence/FlowsPersistenceFilesystem.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.d.ts +0 -75
- package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.js +0 -485
- package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceSqlite.d.ts +0 -44
- package/dist/esm/persistence/FlowsPersistenceSqlite.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceSqlite.js +0 -264
- package/dist/esm/persistence/FlowsPersistenceSqlite.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceSupabase.d.ts +0 -44
- package/dist/esm/persistence/FlowsPersistenceSupabase.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceSupabase.js +0 -262
- package/dist/esm/persistence/FlowsPersistenceSupabase.js.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceVolatile.d.ts +0 -41
- package/dist/esm/persistence/FlowsPersistenceVolatile.d.ts.map +0 -1
- package/dist/esm/persistence/FlowsPersistenceVolatile.js +0 -171
- package/dist/esm/persistence/FlowsPersistenceVolatile.js.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistence.d.ts +0 -12
- package/dist/esm/persistence/GptConfigsPersistence.d.ts.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistence.js +0 -3
- package/dist/esm/persistence/GptConfigsPersistence.js.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistenceSqlite.d.ts +0 -13
- package/dist/esm/persistence/GptConfigsPersistenceSqlite.d.ts.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistenceSqlite.js +0 -35
- package/dist/esm/persistence/GptConfigsPersistenceSqlite.js.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistenceVolatile.d.ts +0 -15
- package/dist/esm/persistence/GptConfigsPersistenceVolatile.d.ts.map +0 -1
- package/dist/esm/persistence/GptConfigsPersistenceVolatile.js +0 -31
- package/dist/esm/persistence/GptConfigsPersistenceVolatile.js.map +0 -1
- package/dist/esm/playwrightTestExtensions.d.ts +0 -155
- package/dist/esm/playwrightTestExtensions.d.ts.map +0 -1
- package/dist/esm/playwrightTestExtensions.js +0 -688
- package/dist/esm/playwrightTestExtensions.js.map +0 -1
- package/dist/esm/utils/ToolsPluginsLoader.d.ts +0 -52
- package/dist/esm/utils/ToolsPluginsLoader.d.ts.map +0 -1
- package/dist/esm/utils/ToolsPluginsLoader.js +0 -301
- package/dist/esm/utils/ToolsPluginsLoader.js.map +0 -1
- package/dist/lib/autoTest.d.ts +0 -2
- package/dist/lib/autoTest.d.ts.map +0 -1
- package/dist/lib/autoTest.js +0 -17
- package/dist/lib/autoTest.js.map +0 -1
- package/dist/lib/constants.d.ts +0 -8
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -14
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/fixtures/testExtension.d.ts +0 -10
- package/dist/lib/fixtures/testExtension.d.ts.map +0 -1
- package/dist/lib/fixtures/testExtension.js +0 -383
- package/dist/lib/fixtures/testExtension.js.map +0 -1
- package/dist/lib/types.d.ts +0 -106
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -3
- package/dist/lib/types.js.map +0 -1
- package/dist/managers/EnvironmentDataManager.d.ts +0 -58
- package/dist/managers/EnvironmentDataManager.d.ts.map +0 -1
- package/dist/managers/EnvironmentDataManager.js +0 -134
- package/dist/managers/EnvironmentDataManager.js.map +0 -1
- package/dist/managers/ProjectStructureGenerator.d.ts +0 -62
- package/dist/managers/ProjectStructureGenerator.d.ts.map +0 -1
- package/dist/managers/ProjectStructureGenerator.js +0 -234
- package/dist/managers/ProjectStructureGenerator.js.map +0 -1
- package/dist/managers/TestFileUpdater.d.ts +0 -56
- package/dist/managers/TestFileUpdater.d.ts.map +0 -1
- package/dist/managers/TestFileUpdater.js +0 -224
- package/dist/managers/TestFileUpdater.js.map +0 -1
- package/dist/models/AskAiRequest.d.ts +0 -15
- package/dist/models/AskAiRequest.d.ts.map +0 -1
- package/dist/models/AskAiRequest.js +0 -3
- package/dist/models/AskAiRequest.js.map +0 -1
- package/dist/models/BaseToolGptParameters.d.ts +0 -10
- package/dist/models/BaseToolGptParameters.d.ts.map +0 -1
- package/dist/models/BaseToolGptParameters.js +0 -3
- package/dist/models/BaseToolGptParameters.js.map +0 -1
- package/dist/models/BrowserFramework.d.ts +0 -51
- package/dist/models/BrowserFramework.d.ts.map +0 -1
- package/dist/models/BrowserFramework.js +0 -364
- package/dist/models/BrowserFramework.js.map +0 -1
- package/dist/models/EnvironmentDatum.d.ts +0 -54
- package/dist/models/EnvironmentDatum.d.ts.map +0 -1
- package/dist/models/EnvironmentDatum.js +0 -57
- package/dist/models/EnvironmentDatum.js.map +0 -1
- package/dist/models/FlowsQuery.d.ts +0 -12
- package/dist/models/FlowsQuery.d.ts.map +0 -1
- package/dist/models/FlowsQuery.js +0 -3
- package/dist/models/FlowsQuery.js.map +0 -1
- package/dist/persistence/AgentsPersistence.d.ts +0 -12
- package/dist/persistence/AgentsPersistence.d.ts.map +0 -1
- package/dist/persistence/AgentsPersistence.js +0 -3
- package/dist/persistence/AgentsPersistence.js.map +0 -1
- package/dist/persistence/AgentsPersistenceSqlite.d.ts +0 -15
- package/dist/persistence/AgentsPersistenceSqlite.d.ts.map +0 -1
- package/dist/persistence/AgentsPersistenceSqlite.js +0 -50
- package/dist/persistence/AgentsPersistenceSqlite.js.map +0 -1
- package/dist/persistence/AgentsPersistenceVolatile.d.ts +0 -14
- package/dist/persistence/AgentsPersistenceVolatile.d.ts.map +0 -1
- package/dist/persistence/AgentsPersistenceVolatile.js +0 -26
- package/dist/persistence/AgentsPersistenceVolatile.js.map +0 -1
- package/dist/persistence/FlowsPersistence.d.ts +0 -104
- package/dist/persistence/FlowsPersistence.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistence.js +0 -3
- package/dist/persistence/FlowsPersistence.js.map +0 -1
- package/dist/persistence/FlowsPersistenceAwsS3.d.ts +0 -75
- package/dist/persistence/FlowsPersistenceAwsS3.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceAwsS3.js +0 -525
- package/dist/persistence/FlowsPersistenceAwsS3.js.map +0 -1
- package/dist/persistence/FlowsPersistenceFactory.d.ts +0 -10
- package/dist/persistence/FlowsPersistenceFactory.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceFactory.js +0 -3
- package/dist/persistence/FlowsPersistenceFactory.js.map +0 -1
- package/dist/persistence/FlowsPersistenceFactoryImpl.d.ts +0 -57
- package/dist/persistence/FlowsPersistenceFactoryImpl.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceFactoryImpl.js +0 -235
- package/dist/persistence/FlowsPersistenceFactoryImpl.js.map +0 -1
- package/dist/persistence/FlowsPersistenceFactoryPreset.d.ts +0 -13
- package/dist/persistence/FlowsPersistenceFactoryPreset.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceFactoryPreset.js +0 -24
- package/dist/persistence/FlowsPersistenceFactoryPreset.js.map +0 -1
- package/dist/persistence/FlowsPersistenceFilesystem.d.ts +0 -69
- package/dist/persistence/FlowsPersistenceFilesystem.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceFilesystem.js +0 -381
- package/dist/persistence/FlowsPersistenceFilesystem.js.map +0 -1
- package/dist/persistence/FlowsPersistenceGoogleCloudStorage.d.ts +0 -75
- package/dist/persistence/FlowsPersistenceGoogleCloudStorage.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceGoogleCloudStorage.js +0 -485
- package/dist/persistence/FlowsPersistenceGoogleCloudStorage.js.map +0 -1
- package/dist/persistence/FlowsPersistenceSqlite.d.ts +0 -44
- package/dist/persistence/FlowsPersistenceSqlite.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceSqlite.js +0 -264
- package/dist/persistence/FlowsPersistenceSqlite.js.map +0 -1
- package/dist/persistence/FlowsPersistenceSupabase.d.ts +0 -44
- package/dist/persistence/FlowsPersistenceSupabase.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceSupabase.js +0 -262
- package/dist/persistence/FlowsPersistenceSupabase.js.map +0 -1
- package/dist/persistence/FlowsPersistenceVolatile.d.ts +0 -41
- package/dist/persistence/FlowsPersistenceVolatile.d.ts.map +0 -1
- package/dist/persistence/FlowsPersistenceVolatile.js +0 -171
- package/dist/persistence/FlowsPersistenceVolatile.js.map +0 -1
- package/dist/persistence/GptConfigsPersistence.d.ts +0 -12
- package/dist/persistence/GptConfigsPersistence.d.ts.map +0 -1
- package/dist/persistence/GptConfigsPersistence.js +0 -3
- package/dist/persistence/GptConfigsPersistence.js.map +0 -1
- package/dist/persistence/GptConfigsPersistenceSqlite.d.ts +0 -13
- package/dist/persistence/GptConfigsPersistenceSqlite.d.ts.map +0 -1
- package/dist/persistence/GptConfigsPersistenceSqlite.js +0 -35
- package/dist/persistence/GptConfigsPersistenceSqlite.js.map +0 -1
- package/dist/persistence/GptConfigsPersistenceVolatile.d.ts +0 -15
- package/dist/persistence/GptConfigsPersistenceVolatile.d.ts.map +0 -1
- package/dist/persistence/GptConfigsPersistenceVolatile.js +0 -31
- package/dist/persistence/GptConfigsPersistenceVolatile.js.map +0 -1
- package/dist/playwrightTestExtensions.d.ts +0 -155
- package/dist/playwrightTestExtensions.d.ts.map +0 -1
- package/dist/playwrightTestExtensions.js +0 -688
- package/dist/playwrightTestExtensions.js.map +0 -1
- package/dist/tools/CreatePageObjectModel.d.ts +0 -16
- package/dist/tools/CreatePageObjectModel.d.ts.map +0 -1
- package/dist/tools/CreatePageObjectModel.js +0 -33
- package/dist/tools/CreatePageObjectModel.js.map +0 -1
- package/dist/utils/ToolsPluginsLoader.d.ts +0 -52
- package/dist/utils/ToolsPluginsLoader.d.ts.map +0 -1
- package/dist/utils/ToolsPluginsLoader.js +0 -301
- package/dist/utils/ToolsPluginsLoader.js.map +0 -1
- /package/dist/utils/{jsonSchemaUtils.d.ts → JsonSchemaUtils.d.ts} +0 -0
- /package/dist/utils/{jsonSchemaUtils.d.ts.map → JsonSchemaUtils.d.ts.map} +0 -0
- /package/dist/utils/{jsonSchemaUtils.js → JsonSchemaUtils.js} +0 -0
- /package/dist/utils/{jsonSchemaUtils.js.map → JsonSchemaUtils.js.map} +0 -0
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FlowsPersistenceFilesystem = void 0;
|
|
7
|
-
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const FlowNotFoundException_1 = require("../exceptions/FlowNotFoundException");
|
|
10
|
-
const Logger_1 = require("../utils/Logger");
|
|
11
|
-
const JsonUtils_1 = require("../utils/JsonUtils");
|
|
12
|
-
const MiscUtils_1 = require("../utils/MiscUtils");
|
|
13
|
-
/**
|
|
14
|
-
* A persistence implementation that uses the filesystem.
|
|
15
|
-
*/
|
|
16
|
-
class FlowsPersistenceFilesystem {
|
|
17
|
-
constructor(flowsDirectory, environmentDirectory) {
|
|
18
|
-
this.flowsDirectory = flowsDirectory;
|
|
19
|
-
this.environmentDirectory = environmentDirectory;
|
|
20
|
-
}
|
|
21
|
-
// Update the create method to also create the environment directory
|
|
22
|
-
static async create(storageDirectory) {
|
|
23
|
-
const flowsDirectory = path_1.default.join(storageDirectory, 'flows');
|
|
24
|
-
const environmentDirectory = path_1.default.join(storageDirectory, 'environment');
|
|
25
|
-
// Ensure directories exist
|
|
26
|
-
await promises_1.default.mkdir(flowsDirectory, { recursive: true }).catch((err) => {
|
|
27
|
-
Logger_1.appLogger.error('Failed to create flows directory', err);
|
|
28
|
-
});
|
|
29
|
-
await promises_1.default.mkdir(environmentDirectory, { recursive: true }).catch((err) => {
|
|
30
|
-
Logger_1.appLogger.error('Failed to create environment directory', err);
|
|
31
|
-
});
|
|
32
|
-
return new FlowsPersistenceFilesystem(flowsDirectory, environmentDirectory);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Set a piece of environment data that is available across all flows.
|
|
36
|
-
*/
|
|
37
|
-
async setEnvironmentDatum(key, value) {
|
|
38
|
-
if (!key) {
|
|
39
|
-
throw new Error('Key cannot be empty');
|
|
40
|
-
}
|
|
41
|
-
// Create the environment directory if it doesn't exist
|
|
42
|
-
await promises_1.default.mkdir(this.environmentDirectory, { recursive: true });
|
|
43
|
-
// Create a file with the key as the filename (properly encoded)
|
|
44
|
-
const filePath = path_1.default.join(this.environmentDirectory, this.encodeKey(key));
|
|
45
|
-
await promises_1.default.writeFile(filePath, value, 'utf-8');
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Delete a piece of environment data by its key.
|
|
49
|
-
* No-op if the data does not exist.
|
|
50
|
-
*/
|
|
51
|
-
async deleteEnvironmentDatum(key) {
|
|
52
|
-
if (!key) {
|
|
53
|
-
return; // No-op if key is empty
|
|
54
|
-
}
|
|
55
|
-
const filePath = path_1.default.join(this.environmentDirectory, this.encodeKey(key));
|
|
56
|
-
try {
|
|
57
|
-
// Check if file exists before attempting to delete
|
|
58
|
-
await promises_1.default.access(filePath);
|
|
59
|
-
await promises_1.default.unlink(filePath);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
// Ignore file not found errors
|
|
63
|
-
if (error.code !== 'ENOENT') {
|
|
64
|
-
Logger_1.appLogger.warn(`Failed to delete environment data for key: ${key}`, error);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Retrieve a piece of environment data by its key.
|
|
70
|
-
*/
|
|
71
|
-
async getEnvironmentDatum(key) {
|
|
72
|
-
if (!key) {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
const filePath = path_1.default.join(this.environmentDirectory, this.encodeKey(key));
|
|
76
|
-
try {
|
|
77
|
-
const content = await promises_1.default.readFile(filePath, 'utf-8');
|
|
78
|
-
return content;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
// Return undefined if the file doesn't exist
|
|
82
|
-
if (error.code === 'ENOENT') {
|
|
83
|
-
return undefined;
|
|
84
|
-
}
|
|
85
|
-
// Log other errors but still return undefined
|
|
86
|
-
Logger_1.appLogger.warn(`Failed to read environment data for key: ${key}`, error);
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get all environment data.
|
|
92
|
-
*/
|
|
93
|
-
async getEnvironmentData() {
|
|
94
|
-
const result = {};
|
|
95
|
-
try {
|
|
96
|
-
// Create the directory if it doesn't exist
|
|
97
|
-
await promises_1.default.mkdir(this.environmentDirectory, { recursive: true });
|
|
98
|
-
// Get all files in the environment directory
|
|
99
|
-
const files = await promises_1.default.readdir(this.environmentDirectory);
|
|
100
|
-
// Process each file
|
|
101
|
-
for (const encodedKey of files) {
|
|
102
|
-
try {
|
|
103
|
-
const filePath = path_1.default.join(this.environmentDirectory, encodedKey);
|
|
104
|
-
// Skip directories and non-files
|
|
105
|
-
const stats = await promises_1.default.stat(filePath);
|
|
106
|
-
if (!stats.isFile()) {
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
// Read file content and add to result
|
|
110
|
-
const content = await promises_1.default.readFile(filePath, 'utf-8');
|
|
111
|
-
const key = this.decodeKey(encodedKey);
|
|
112
|
-
result[key] = content;
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
Logger_1.appLogger.warn(`Failed to read environment data file: ${encodedKey}`, error);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
Logger_1.appLogger.error('Failed to read environment directory', error);
|
|
121
|
-
}
|
|
122
|
-
return result;
|
|
123
|
-
}
|
|
124
|
-
async setMetadata(flowMetadata) {
|
|
125
|
-
const flowDir = this.getFlowDirectory(flowMetadata.id);
|
|
126
|
-
await promises_1.default.mkdir(flowDir, { recursive: true });
|
|
127
|
-
const filePath = path_1.default.join(flowDir, FlowsPersistenceFilesystem.METADATA_FILENAME);
|
|
128
|
-
await promises_1.default.writeFile(filePath, JSON.stringify(flowMetadata, null, 2));
|
|
129
|
-
}
|
|
130
|
-
async getMetadataByFlowId(flowId) {
|
|
131
|
-
const filePath = path_1.default.join(this.getFlowDirectory(flowId), FlowsPersistenceFilesystem.METADATA_FILENAME);
|
|
132
|
-
try {
|
|
133
|
-
const content = await promises_1.default.readFile(filePath, 'utf-8');
|
|
134
|
-
const metadata = JSON.parse(content);
|
|
135
|
-
if (typeof metadata.startedAt === 'string') {
|
|
136
|
-
metadata.startedAt = Date.parse(metadata.startedAt) || 0;
|
|
137
|
-
}
|
|
138
|
-
if (typeof metadata.completedAt === 'string') {
|
|
139
|
-
metadata.completedAt = Date.parse(metadata.completedAt) || 0;
|
|
140
|
-
}
|
|
141
|
-
return metadata;
|
|
142
|
-
}
|
|
143
|
-
catch (_e) {
|
|
144
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Get flow metadata by name using pagination for efficiency
|
|
149
|
-
*/
|
|
150
|
-
async getMetadataByFlowName(flowName) {
|
|
151
|
-
if (!flowName) {
|
|
152
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forName('null');
|
|
153
|
-
}
|
|
154
|
-
const batchSize = 100;
|
|
155
|
-
let pageToken;
|
|
156
|
-
do {
|
|
157
|
-
// Get a batch of flows.
|
|
158
|
-
const result = await this.getFlows({
|
|
159
|
-
limit: batchSize,
|
|
160
|
-
pageToken,
|
|
161
|
-
});
|
|
162
|
-
// Search in the current batch.
|
|
163
|
-
const matchingFlow = result.items.find((flow) => flow.name === flowName);
|
|
164
|
-
if (matchingFlow) {
|
|
165
|
-
return matchingFlow;
|
|
166
|
-
}
|
|
167
|
-
// Continue to next page if available.
|
|
168
|
-
pageToken = result.nextPageToken;
|
|
169
|
-
} while (pageToken);
|
|
170
|
-
// If we get here, we've searched all flows and found nothing.
|
|
171
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forName(flowName);
|
|
172
|
-
}
|
|
173
|
-
async saveScreenShot(flowId, bytes) {
|
|
174
|
-
const imageType = MiscUtils_1.MiscUtils.detectImageType(bytes);
|
|
175
|
-
const filename = `${new Date().toISOString()}.screenshot.${imageType}`;
|
|
176
|
-
const screenShotPath = path_1.default.join(this.getFlowDirectory(flowId), filename);
|
|
177
|
-
await promises_1.default.writeFile(screenShotPath, bytes);
|
|
178
|
-
return filename;
|
|
179
|
-
}
|
|
180
|
-
async getScreenShot(flowId, screenShotId) {
|
|
181
|
-
return this.getFlowFile(flowId, screenShotId);
|
|
182
|
-
}
|
|
183
|
-
async saveToolCall(flowId, toolCall) {
|
|
184
|
-
const filePath = path_1.default.join(this.getFlowDirectory(flowId), `${toolCall.startedAt}${FlowsPersistenceFilesystem.TOOL_CALL_FILENAME_SUFFIX}`);
|
|
185
|
-
await promises_1.default.writeFile(filePath, JSON.stringify(toolCall, null, 2));
|
|
186
|
-
}
|
|
187
|
-
async getToolCalls(flowId) {
|
|
188
|
-
const flowDir = this.getFlowDirectory(flowId);
|
|
189
|
-
try {
|
|
190
|
-
const files = await promises_1.default.readdir(flowDir);
|
|
191
|
-
const toolCallFiles = files.filter((file) => file.endsWith(FlowsPersistenceFilesystem.TOOL_CALL_FILENAME_SUFFIX));
|
|
192
|
-
const toolCalls = await Promise.all(toolCallFiles.sort().map(async (file) => {
|
|
193
|
-
const content = await promises_1.default.readFile(path_1.default.join(flowDir, file), 'utf-8');
|
|
194
|
-
const toolCall = JSON.parse(content);
|
|
195
|
-
if (typeof toolCall.startedAt === 'string') {
|
|
196
|
-
toolCall.startedAt = Date.parse(toolCall.startedAt) || 0;
|
|
197
|
-
}
|
|
198
|
-
if (typeof toolCall.completedAt === 'string') {
|
|
199
|
-
toolCall.completedAt = Date.parse(toolCall.completedAt) || 0;
|
|
200
|
-
}
|
|
201
|
-
return toolCall;
|
|
202
|
-
}));
|
|
203
|
-
return toolCalls.sort((a, b) => a.startedAt - b.startedAt);
|
|
204
|
-
}
|
|
205
|
-
catch (_e) {
|
|
206
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Get flows with pagination and filtering from filesystem storage
|
|
211
|
-
*/
|
|
212
|
-
async getFlows(query) {
|
|
213
|
-
const { limit = 20, pageToken, name, runMode, state, startedAfter, startedBefore, } = query || {};
|
|
214
|
-
// Validate inputs.
|
|
215
|
-
const validLimit = Math.min(Math.max(1, limit), 100);
|
|
216
|
-
// Get all flow directories.
|
|
217
|
-
const flowDirs = await this.getAllFlowDirectories();
|
|
218
|
-
// Load metadata for all flows.
|
|
219
|
-
const metadataPromises = flowDirs.map(async (dir) => {
|
|
220
|
-
try {
|
|
221
|
-
const metadataPath = path_1.default.join(dir, FlowsPersistenceFilesystem.METADATA_FILENAME);
|
|
222
|
-
const content = await promises_1.default.readFile(metadataPath, 'utf-8');
|
|
223
|
-
const metadata = JSON.parse(content);
|
|
224
|
-
if (typeof metadata.startedAt === 'string') {
|
|
225
|
-
metadata.startedAt = Date.parse(metadata.startedAt) || 0;
|
|
226
|
-
}
|
|
227
|
-
if (typeof metadata.completedAt === 'string') {
|
|
228
|
-
metadata.completedAt = Date.parse(metadata.completedAt) || 0;
|
|
229
|
-
}
|
|
230
|
-
return metadata;
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
Logger_1.appLogger.warn(`Failed to read metadata in ${dir}`, error);
|
|
234
|
-
return null;
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
// Wait for all metadata to load.
|
|
238
|
-
const allMetadata = (await Promise.all(metadataPromises)).filter((metadata) => metadata !== null);
|
|
239
|
-
// Apply filters based on query parameters
|
|
240
|
-
let filteredMetadata = allMetadata;
|
|
241
|
-
if (name) {
|
|
242
|
-
filteredMetadata = filteredMetadata.filter((flow) => flow.name === name);
|
|
243
|
-
}
|
|
244
|
-
if (runMode) {
|
|
245
|
-
filteredMetadata = filteredMetadata.filter((flow) => flow.runMode === runMode);
|
|
246
|
-
}
|
|
247
|
-
if (state) {
|
|
248
|
-
filteredMetadata = filteredMetadata.filter((flow) => flow.state === state);
|
|
249
|
-
}
|
|
250
|
-
// Apply startedAfter filter
|
|
251
|
-
if (startedAfter !== undefined) {
|
|
252
|
-
filteredMetadata = filteredMetadata.filter((flow) => (flow.startedAt || 0) >= startedAfter);
|
|
253
|
-
}
|
|
254
|
-
// Apply startedBefore filter
|
|
255
|
-
if (startedBefore !== undefined) {
|
|
256
|
-
filteredMetadata = filteredMetadata.filter((flow) => (flow.startedAt || 0) <= startedBefore);
|
|
257
|
-
}
|
|
258
|
-
// Sort by creation date (newest first).
|
|
259
|
-
filteredMetadata.sort((a, b) => (b.startedAt || 0) - (a.startedAt || 0));
|
|
260
|
-
// Parse page token to get the offset.
|
|
261
|
-
const offset = pageToken ? parseInt(pageToken, 10) : 0;
|
|
262
|
-
// Apply pagination.
|
|
263
|
-
const paginatedMetadata = filteredMetadata.slice(offset, offset + validLimit);
|
|
264
|
-
// Check if there are more results.
|
|
265
|
-
const hasMore = offset + validLimit < filteredMetadata.length;
|
|
266
|
-
// Calculate next page token.
|
|
267
|
-
const nextPageToken = hasMore
|
|
268
|
-
? (offset + validLimit).toString()
|
|
269
|
-
: undefined;
|
|
270
|
-
return {
|
|
271
|
-
items: paginatedMetadata,
|
|
272
|
-
nextPageToken,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
async setVideo(flowId, bytes) {
|
|
276
|
-
const videoPath = path_1.default.join(this.getFlowDirectory(flowId), FlowsPersistenceFilesystem.VIDEO_FILENAME);
|
|
277
|
-
await promises_1.default.writeFile(videoPath, bytes);
|
|
278
|
-
}
|
|
279
|
-
async getVideoSegment(flowId, startOffset, length) {
|
|
280
|
-
try {
|
|
281
|
-
await this.getMetadataByFlowId(flowId);
|
|
282
|
-
const videoPath = path_1.default.join(this.getFlowDirectory(flowId), FlowsPersistenceFilesystem.VIDEO_FILENAME);
|
|
283
|
-
const stats = await promises_1.default.stat(videoPath);
|
|
284
|
-
const totalLength = stats.size;
|
|
285
|
-
const adjustedLength = Math.min(length, totalLength - startOffset);
|
|
286
|
-
const buffer = Buffer.alloc(adjustedLength);
|
|
287
|
-
const fileHandle = await promises_1.default.open(videoPath, 'r');
|
|
288
|
-
try {
|
|
289
|
-
await fileHandle.read(buffer, 0, adjustedLength, startOffset);
|
|
290
|
-
return {
|
|
291
|
-
bytes: buffer,
|
|
292
|
-
totalLength: totalLength,
|
|
293
|
-
startOffset: startOffset,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
finally {
|
|
297
|
-
await fileHandle.close();
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
catch {
|
|
301
|
-
return null;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
async getFlowFile(flowId, fileId) {
|
|
305
|
-
try {
|
|
306
|
-
await this.getMetadataByFlowId(flowId);
|
|
307
|
-
const filePath = path_1.default.join(this.getFlowDirectory(flowId), fileId);
|
|
308
|
-
return await promises_1.default.readFile(filePath);
|
|
309
|
-
}
|
|
310
|
-
catch {
|
|
311
|
-
return null;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
async setFlowFile(flowId, fileId, fileBytes) {
|
|
315
|
-
const filePath = path_1.default.join(this.getFlowDirectory(flowId), fileId);
|
|
316
|
-
await promises_1.default.writeFile(filePath, fileBytes);
|
|
317
|
-
}
|
|
318
|
-
async setBrowserState(flowId, browserState) {
|
|
319
|
-
const serializedBrowserState = Buffer.from(JSON.stringify(browserState), 'utf-8');
|
|
320
|
-
await this.setFlowFile(flowId, FlowsPersistenceFilesystem.BROWSER_STATE_FILENAME, serializedBrowserState);
|
|
321
|
-
}
|
|
322
|
-
async getBrowserState(flowId) {
|
|
323
|
-
const browserStateRaw = await this.getFlowFile(flowId, FlowsPersistenceFilesystem.BROWSER_STATE_FILENAME);
|
|
324
|
-
if (browserStateRaw) {
|
|
325
|
-
const browserState = JsonUtils_1.JsonUtils.jsonStringToJsonObject(browserStateRaw.toString('utf-8'));
|
|
326
|
-
if (browserState) {
|
|
327
|
-
return browserState;
|
|
328
|
-
}
|
|
329
|
-
else {
|
|
330
|
-
throw new Error(`Cannot load malformed browser state from flow ${flowId}`);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
async deleteFlow(flowId) {
|
|
338
|
-
const flowDirectory = this.getFlowDirectory(flowId);
|
|
339
|
-
await promises_1.default.rm(flowDirectory, { recursive: true, force: true });
|
|
340
|
-
}
|
|
341
|
-
getFlowDirectory(flowId) {
|
|
342
|
-
if (!flowId) {
|
|
343
|
-
throw FlowNotFoundException_1.FlowNotFoundException.forId(flowId);
|
|
344
|
-
}
|
|
345
|
-
return path_1.default.join(this.flowsDirectory, flowId);
|
|
346
|
-
}
|
|
347
|
-
async getAllFlowDirectories() {
|
|
348
|
-
try {
|
|
349
|
-
const entries = await promises_1.default.readdir(this.flowsDirectory, {
|
|
350
|
-
withFileTypes: true,
|
|
351
|
-
});
|
|
352
|
-
return entries
|
|
353
|
-
.filter((entry) => entry.isDirectory())
|
|
354
|
-
.map((entry) => path_1.default.join(this.flowsDirectory, entry.name));
|
|
355
|
-
}
|
|
356
|
-
catch (error) {
|
|
357
|
-
Logger_1.appLogger.error('Failed to find flow root directory', error);
|
|
358
|
-
throw error;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Encode a key to be used as a filename.
|
|
363
|
-
* This ensures special characters in keys don't cause filesystem issues.
|
|
364
|
-
*/
|
|
365
|
-
encodeKey(key) {
|
|
366
|
-
// Base64 encode to handle any special characters
|
|
367
|
-
return Buffer.from(key).toString('base64');
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Decode a filename back to the original key.
|
|
371
|
-
*/
|
|
372
|
-
decodeKey(encodedKey) {
|
|
373
|
-
return Buffer.from(encodedKey, 'base64').toString('utf-8');
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
exports.FlowsPersistenceFilesystem = FlowsPersistenceFilesystem;
|
|
377
|
-
FlowsPersistenceFilesystem.METADATA_FILENAME = 'metadata.json';
|
|
378
|
-
FlowsPersistenceFilesystem.BROWSER_STATE_FILENAME = 'browserstate.json';
|
|
379
|
-
FlowsPersistenceFilesystem.TOOL_CALL_FILENAME_SUFFIX = '.tool-call.json';
|
|
380
|
-
FlowsPersistenceFilesystem.VIDEO_FILENAME = 'video.webm';
|
|
381
|
-
//# sourceMappingURL=FlowsPersistenceFilesystem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceFilesystem.js","sourceRoot":"","sources":["../../../src/persistence/FlowsPersistenceFilesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { FlowsPersistence } from './FlowsPersistence';
|
|
2
|
-
import { FlowMetadata, FlowsQuery } from '../models/FlowMetadata';
|
|
3
|
-
import { ToolCall } from '../models/ToolCall';
|
|
4
|
-
import { VideoSegment } from '../models/VideoSegment';
|
|
5
|
-
import { BrowserStorageState } from '../models/BrowserStorageState';
|
|
6
|
-
import { PaginatedResult } from '../models/PaginatedResult';
|
|
7
|
-
/**
|
|
8
|
-
* A persistence implementation that uses Google Cloud Storage.
|
|
9
|
-
*
|
|
10
|
-
* If you are running locally, be sure to have the Google Cloud CLI installed
|
|
11
|
-
* so that you can authenticate using `gcloud auth application-default login`
|
|
12
|
-
* before running Donobu.
|
|
13
|
-
*
|
|
14
|
-
* If Donobu is being run in the Google cloud, be sure that the service account
|
|
15
|
-
* in which it is being run has permissions to read and write the Google Cloud
|
|
16
|
-
* Storage bucket specified as a constructor argument.
|
|
17
|
-
*/
|
|
18
|
-
export declare class FlowsPersistenceGoogleCloudStorage implements FlowsPersistence {
|
|
19
|
-
private readonly bucket;
|
|
20
|
-
private static readonly ENVIRONMENT_DATA_PREFIX;
|
|
21
|
-
private static readonly NAME_INDEX_PREFIX;
|
|
22
|
-
private static readonly RUN_MODE_INDEX_PREFIX;
|
|
23
|
-
private static readonly STATE_INDEX_PREFIX;
|
|
24
|
-
private static readonly RUN_MODE_STATE_INDEX_PREFIX;
|
|
25
|
-
private static readonly METADATA_FILENAME;
|
|
26
|
-
private static readonly BROWSER_STATE_FILENAME;
|
|
27
|
-
private static readonly TOOL_CALL_FILENAME_SUFFIX;
|
|
28
|
-
private static readonly VIDEO_FILENAME;
|
|
29
|
-
/**
|
|
30
|
-
* Dynamically imports the Google Cloud Storage library.
|
|
31
|
-
* This helps to delay loading the library until it's actually needed.
|
|
32
|
-
*/
|
|
33
|
-
private static importGoogleCloudStorage;
|
|
34
|
-
static create(bucketName: string): Promise<FlowsPersistenceGoogleCloudStorage>;
|
|
35
|
-
private constructor();
|
|
36
|
-
setEnvironmentDatum(key: string, value: string): Promise<void>;
|
|
37
|
-
deleteEnvironmentDatum(key: string): Promise<void>;
|
|
38
|
-
getEnvironmentDatum(key: string): Promise<string | undefined>;
|
|
39
|
-
getEnvironmentData(): Promise<Record<string, string>>;
|
|
40
|
-
setMetadata(flowMetadata: FlowMetadata): Promise<void>;
|
|
41
|
-
getMetadataByFlowId(flowId: string): Promise<FlowMetadata>;
|
|
42
|
-
getMetadataByFlowName(flowName: string): Promise<FlowMetadata>;
|
|
43
|
-
saveScreenShot(flowId: string, bytes: Buffer): Promise<string>;
|
|
44
|
-
getScreenShot(flowId: string, screenShotId: string): Promise<Buffer | null>;
|
|
45
|
-
saveToolCall(flowId: string, toolCall: ToolCall): Promise<void>;
|
|
46
|
-
getToolCalls(flowId: string): Promise<ToolCall[]>;
|
|
47
|
-
getFlows(query: FlowsQuery): Promise<PaginatedResult<FlowMetadata>>;
|
|
48
|
-
setVideo(flowId: string, bytes: Buffer): Promise<void>;
|
|
49
|
-
getVideoSegment(flowId: string, startOffset: number, length: number): Promise<VideoSegment | null>;
|
|
50
|
-
getFlowFile(flowId: string, fileId: string): Promise<Buffer | null>;
|
|
51
|
-
setFlowFile(flowId: string, fileId: string, fileBytes: Buffer): Promise<void>;
|
|
52
|
-
setBrowserState(flowId: string, browserState: BrowserStorageState): Promise<void>;
|
|
53
|
-
getBrowserState(flowId: string): Promise<BrowserStorageState | null>;
|
|
54
|
-
deleteFlow(flowId: string): Promise<void>;
|
|
55
|
-
private uploadString;
|
|
56
|
-
private uploadBytes;
|
|
57
|
-
private downloadString;
|
|
58
|
-
/**
|
|
59
|
-
* Update name-to-id index.
|
|
60
|
-
*/
|
|
61
|
-
private updateNameIndex;
|
|
62
|
-
/**
|
|
63
|
-
* Update runMode-to-id index.
|
|
64
|
-
*/
|
|
65
|
-
private updateRunModeIndex;
|
|
66
|
-
/**
|
|
67
|
-
* Update state-to-id index.
|
|
68
|
-
*/
|
|
69
|
-
private updateStateIndex;
|
|
70
|
-
/**
|
|
71
|
-
* Update combined runMode+state-to-id index.
|
|
72
|
-
*/
|
|
73
|
-
private updateRunModeStateIndex;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=FlowsPersistenceGoogleCloudStorage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsPersistenceGoogleCloudStorage.d.ts","sourceRoot":"","sources":["../../../src/persistence/FlowsPersistenceGoogleCloudStorage.ts"],"names":[],"mappings":"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"}
|