@quadnix/octo 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -21
- package/dist/app.type.d.ts +141 -22
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/model.decorator.d.ts +3 -5
- package/dist/decorators/model.decorator.js +1 -6
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/on-event.decorator.d.ts +2 -2
- package/dist/decorators/on-event.decorator.js.map +1 -1
- package/dist/decorators/resource.decorator.d.ts +50 -1
- package/dist/decorators/resource.decorator.js +38 -1
- package/dist/decorators/resource.decorator.js.map +1 -1
- package/dist/errors/schema.error.d.ts +8 -1
- package/dist/errors/schema.error.js +5 -1
- package/dist/errors/schema.error.js.map +1 -1
- package/dist/errors/terraform.error.d.ts +4 -3
- package/dist/errors/terraform.error.js +4 -3
- package/dist/errors/terraform.error.js.map +1 -1
- package/dist/errors/transaction.error.d.ts +32 -2
- package/dist/errors/transaction.error.js +22 -0
- package/dist/errors/transaction.error.js.map +1 -1
- package/dist/events/action.event.d.ts +8 -2
- package/dist/events/action.event.js +2 -2
- package/dist/events/action.event.js.map +1 -1
- package/dist/events/command.event.d.ts +43 -0
- package/dist/events/command.event.js +33 -0
- package/dist/events/command.event.js.map +1 -0
- package/dist/events/event.model.d.ts +7 -5
- package/dist/events/event.model.js +5 -3
- package/dist/events/event.model.js.map +1 -1
- package/dist/events/hook/commit.hook.event.d.ts +1 -1
- package/dist/events/hook/commit.hook.event.js.map +1 -1
- package/dist/events/hook/hook.event.d.ts +1 -1
- package/dist/events/hook/hook.event.js.map +1 -1
- package/dist/events/hook/model.hook.event.d.ts +1 -1
- package/dist/events/hook/model.hook.event.js.map +1 -1
- package/dist/events/hook/resource.hook.event.d.ts +1 -1
- package/dist/events/hook/resource.hook.event.js.map +1 -1
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/mode-result.event.d.ts +1 -1
- package/dist/events/mode-result.event.js.map +1 -1
- package/dist/events/mode.event.d.ts +8 -4
- package/dist/events/mode.event.js.map +1 -1
- package/dist/events/module.event.d.ts +7 -3
- package/dist/events/module.event.js +3 -2
- package/dist/events/module.event.js.map +1 -1
- package/dist/events/registration.event.d.ts +1 -1
- package/dist/events/registration.event.js.map +1 -1
- package/dist/events/serialization.event.d.ts +1 -1
- package/dist/events/serialization.event.js.map +1 -1
- package/dist/events/state.event.d.ts +102 -0
- package/dist/events/state.event.js +69 -0
- package/dist/events/state.event.js.map +1 -0
- package/dist/events/terraform.event.d.ts +37 -1
- package/dist/events/terraform.event.js +24 -0
- package/dist/events/terraform.event.js.map +1 -1
- package/dist/events/transaction.event.d.ts +3 -3
- package/dist/events/transaction.event.js +1 -1
- package/dist/events/transaction.event.js.map +1 -1
- package/dist/functions/container/container.js +1 -1
- package/dist/functions/container/container.js.map +1 -1
- package/dist/functions/container/test-container.js +2 -2
- package/dist/functions/container/test-container.js.map +1 -1
- package/dist/functions/dependency/dependency.d.ts +9 -22
- package/dist/functions/dependency/dependency.js +5 -1
- package/dist/functions/dependency/dependency.js.map +1 -1
- package/dist/functions/diff/diff.d.ts +14 -7
- package/dist/functions/diff/diff.js.map +1 -1
- package/dist/functions/node/node-action.abstract.d.ts +8 -10
- package/dist/functions/node/node-action.abstract.js +10 -16
- package/dist/functions/node/node-action.abstract.js.map +1 -1
- package/dist/functions/node/node.abstract.js +21 -10
- package/dist/functions/node/node.abstract.js.map +1 -1
- package/dist/functions/node/node.interface.d.ts +2 -1
- package/dist/functions/schema/schema.js +1 -1
- package/dist/functions/schema/schema.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/index.type.d.ts +5 -0
- package/dist/index.type.js +2 -0
- package/dist/index.type.js.map +1 -0
- package/dist/main.d.ts +4 -3
- package/dist/main.js +27 -11
- package/dist/main.js.map +1 -1
- package/dist/models/account/account.model.d.ts +6 -0
- package/dist/models/account/account.model.js +16 -0
- package/dist/models/account/account.model.js.map +1 -1
- package/dist/models/app/app.model.d.ts +0 -10
- package/dist/models/app/app.model.js +0 -30
- package/dist/models/app/app.model.js.map +1 -1
- package/dist/models/deployment/deployment.schema.d.ts +4 -0
- package/dist/models/deployment/deployment.schema.js +4 -0
- package/dist/models/deployment/deployment.schema.js.map +1 -1
- package/dist/models/environment/environment.model.d.ts +2 -2
- package/dist/models/environment/environment.model.js +2 -2
- package/dist/models/execution/execution.model.d.ts +1 -1
- package/dist/models/execution/execution.model.js +1 -1
- package/dist/models/image/image.model.d.ts +4 -3
- package/dist/models/image/image.model.js +7 -6
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/model.abstract.js +1 -1
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/pipeline/pipeline.model.d.ts +1 -1
- package/dist/models/pipeline/pipeline.model.js +1 -1
- package/dist/models/server/server.model.d.ts +2 -2
- package/dist/models/server/server.model.js +2 -2
- package/dist/models/service/service.model.d.ts +28 -11
- package/dist/models/service/service.model.js +56 -16
- package/dist/models/service/service.model.js.map +1 -1
- package/dist/models/service/service.schema.d.ts +46 -2
- package/dist/models/service/service.schema.js +54 -2
- package/dist/models/service/service.schema.js.map +1 -1
- package/dist/modes/commit.mode.d.ts +2 -2
- package/dist/modes/commit.mode.js +2 -2
- package/dist/modes/generate.mode.d.ts +2 -1
- package/dist/modes/generate.mode.js +3 -2
- package/dist/modes/generate.mode.js.map +1 -1
- package/dist/modes/run-action.mode.d.ts +1 -1
- package/dist/modes/run-action.mode.js +1 -1
- package/dist/modes/validate.mode.d.ts +24 -0
- package/dist/modes/validate.mode.js +89 -11
- package/dist/modes/validate.mode.js.map +1 -1
- package/dist/modules/module.container.d.ts +7 -1
- package/dist/modules/module.container.js +41 -5
- package/dist/modules/module.container.js.map +1 -1
- package/dist/modules/test-module.container.js +35 -83
- package/dist/modules/test-module.container.js.map +1 -1
- package/dist/overlays/overlay.abstract.js +1 -1
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/resources/resource-action.interface.d.ts +4 -2
- package/dist/resources/resource.abstract.d.ts +50 -8
- package/dist/resources/resource.abstract.js +63 -32
- package/dist/resources/resource.abstract.js.map +1 -1
- package/dist/resources/resource.interface.d.ts +0 -2
- package/dist/resources/resource.schema.d.ts +11 -1
- package/dist/resources/resource.schema.js +11 -1
- package/dist/resources/resource.schema.js.map +1 -1
- package/dist/services/event/event.service.d.ts +2 -2
- package/dist/services/event/event.service.js.map +1 -1
- package/dist/services/input/input.service.d.ts +30 -2
- package/dist/services/input/input.service.js +71 -4
- package/dist/services/input/input.service.js.map +1 -1
- package/dist/services/serialization/model/model-serialization.service.d.ts +4 -6
- package/dist/services/serialization/model/model-serialization.service.js +20 -17
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.d.ts +7 -6
- package/dist/services/serialization/resource/resource-serialization.service.js +25 -12
- package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
- package/dist/services/state-management/local.state-provider.d.ts +25 -9
- package/dist/services/state-management/local.state-provider.js +127 -21
- package/dist/services/state-management/local.state-provider.js.map +1 -1
- package/dist/services/state-management/remote.state-provider.d.ts +216 -0
- package/dist/services/state-management/remote.state-provider.js +645 -0
- package/dist/services/state-management/remote.state-provider.js.map +1 -0
- package/dist/services/state-management/state-management.service.d.ts +83 -40
- package/dist/services/state-management/state-management.service.js +130 -26
- package/dist/services/state-management/state-management.service.js.map +1 -1
- package/dist/services/state-management/state-provider.interface.d.ts +50 -9
- package/dist/services/state-management/state-provider.interface.js +14 -1
- package/dist/services/state-management/state-provider.interface.js.map +1 -1
- package/dist/services/state-management/terraform-state.service.d.ts +32 -9
- package/dist/services/state-management/terraform-state.service.js +64 -21
- package/dist/services/state-management/terraform-state.service.js.map +1 -1
- package/dist/services/state-management/test.state-provider.d.ts +11 -10
- package/dist/services/state-management/test.state-provider.js +35 -14
- package/dist/services/state-management/test.state-provider.js.map +1 -1
- package/dist/services/terraform/terraform.service.d.ts +57 -3
- package/dist/services/terraform/terraform.service.js +95 -8
- package/dist/services/terraform/terraform.service.js.map +1 -1
- package/dist/services/terraform/terraform.type.js +1 -1
- package/dist/services/terraform/terraform.type.js.map +1 -1
- package/dist/services/transaction/transaction.service.d.ts +29 -5
- package/dist/services/transaction/transaction.service.js +198 -34
- package/dist/services/transaction/transaction.service.js.map +1 -1
- package/dist/services/validation/validation.service.d.ts +2 -2
- package/dist/{functions → utilities}/diff/diff.utility.d.ts +2 -1
- package/dist/{functions → utilities}/diff/diff.utility.js +4 -3
- package/dist/utilities/diff/diff.utility.js.map +1 -0
- package/dist/utilities/file/file.utility.d.ts +6 -7
- package/dist/utilities/file/file.utility.js +13 -68
- package/dist/utilities/file/file.utility.js.map +1 -1
- package/dist/utilities/hcl/hcl.utility.d.ts +83 -16
- package/dist/utilities/hcl/hcl.utility.js +200 -27
- package/dist/utilities/hcl/hcl.utility.js.map +1 -1
- package/dist/utilities/http/http.utility.d.ts +57 -0
- package/dist/utilities/http/http.utility.js +98 -0
- package/dist/utilities/http/http.utility.js.map +1 -0
- package/dist/utilities/string/string.utility.d.ts +23 -3
- package/dist/utilities/string/string.utility.js +29 -3
- package/dist/utilities/string/string.utility.js.map +1 -1
- package/dist/utilities/terraform/terraform.utility.d.ts +70 -21
- package/dist/utilities/terraform/terraform.utility.js +255 -66
- package/dist/utilities/terraform/terraform.utility.js.map +1 -1
- package/dist/utilities/test-helpers/test-classes.d.ts +19 -0
- package/dist/utilities/test-helpers/test-classes.js +22 -0
- package/dist/utilities/test-helpers/test-classes.js.map +1 -1
- package/dist/utilities/test-helpers/test-models.d.ts +8 -1
- package/dist/utilities/test-helpers/test-models.js +25 -12
- package/dist/utilities/test-helpers/test-models.js.map +1 -1
- package/dist/utilities/test-helpers/test-modes.d.ts +1 -1
- package/dist/utilities/test-helpers/test-modes.js +36 -13
- package/dist/utilities/test-helpers/test-modes.js.map +1 -1
- package/dist/utilities/test-helpers/test-modules.d.ts +6 -0
- package/dist/utilities/test-helpers/test-modules.js +6 -0
- package/dist/utilities/test-helpers/test-modules.js.map +1 -1
- package/dist/utilities/test-helpers/test-overlays.d.ts +3 -1
- package/dist/utilities/test-helpers/test-overlays.js +8 -2
- package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
- package/dist/utilities/test-helpers/test-resources.d.ts +4 -2
- package/dist/utilities/test-helpers/test-resources.js +22 -20
- package/dist/utilities/test-helpers/test-resources.js.map +1 -1
- package/package.json +7 -2
- package/dist/functions/diff/diff.utility.js.map +0 -1
- package/dist/services/state-management/file-app-lock.utility.d.ts +0 -43
- package/dist/services/state-management/file-app-lock.utility.js +0 -124
- package/dist/services/state-management/file-app-lock.utility.js.map +0 -1
- package/dist/services/state-management/local-encryption.state-provider.d.ts +0 -71
- package/dist/services/state-management/local-encryption.state-provider.js +0 -116
- package/dist/services/state-management/local-encryption.state-provider.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.state-provider.js","sourceRoot":"","sources":["../../../src/services/state-management/remote.state-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,63 @@
|
|
|
1
1
|
import type { ModelSerializedOutput, ResourceSerializedOutput, TerraformFolderOutput, TerraformResourceOutput } from '../../app.type.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type IStateProvider } from './state-provider.interface.js';
|
|
3
3
|
/**
|
|
4
|
-
* The `userData`
|
|
4
|
+
* The `userData` written beside the model graph in `models.json`.
|
|
5
|
+
*
|
|
6
|
+
* @group Services/State Management
|
|
5
7
|
*/
|
|
6
|
-
|
|
8
|
+
export type ModelStateUserData = {
|
|
7
9
|
terraformFolders?: TerraformFolderOutput[];
|
|
8
10
|
version?: number;
|
|
9
|
-
}
|
|
11
|
+
};
|
|
10
12
|
/**
|
|
11
|
-
* The `userData`
|
|
13
|
+
* The `userData` written beside the resource graph in `resources-actual.json` and
|
|
12
14
|
* `resources-old.json`.
|
|
15
|
+
*
|
|
16
|
+
* @group Services/State Management
|
|
13
17
|
*/
|
|
14
|
-
|
|
18
|
+
export type ResourceStateUserData = {
|
|
15
19
|
terraformFolders?: TerraformFolderOutput[];
|
|
16
20
|
terraformResources?: TerraformResourceOutput[];
|
|
17
21
|
version?: number;
|
|
18
|
-
}
|
|
22
|
+
};
|
|
19
23
|
/**
|
|
20
|
-
*
|
|
21
|
-
* inputs it was given, the properties it was asked for, and the response it produced.
|
|
24
|
+
* `models.json`: the model graph as it stands after the last commit.
|
|
22
25
|
*
|
|
23
|
-
*
|
|
24
|
-
* while it exists it is the truth about that resource - octo state has not caught up yet.
|
|
26
|
+
* @group Services/State Management
|
|
25
27
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
export type ModelStateFile = {
|
|
29
|
+
data: ModelSerializedOutput;
|
|
30
|
+
userData: ModelStateUserData;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* `resources-actual.json`, the resource graph as it stands after the last commit, and
|
|
34
|
+
* `resources-old.json`, the resource graph as intent described it on the last commit.
|
|
35
|
+
*
|
|
36
|
+
* @group Services/State Management
|
|
37
|
+
*/
|
|
38
|
+
export type ResourceStateFile = {
|
|
39
|
+
data: ResourceSerializedOutput;
|
|
40
|
+
userData: ResourceStateUserData;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* `resource-state-<resourceId>.json`, with each `/` of the id written as `.`: what an external
|
|
44
|
+
* resource's action made of it — the inputs it was given, the properties it was asked for, and the
|
|
45
|
+
* response it produced. It exists only between the action succeeding and the `commit` that folds it
|
|
46
|
+
* into the resource graph, and while it exists it is the truth about that resource.
|
|
47
|
+
*
|
|
48
|
+
* @group Services/State Management
|
|
49
|
+
*/
|
|
50
|
+
export type ExternalResourceStateFile = {
|
|
51
|
+
inputs: {
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
};
|
|
54
|
+
properties: {
|
|
55
|
+
[key: string]: unknown;
|
|
56
|
+
};
|
|
57
|
+
response: {
|
|
58
|
+
[key: string]: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
31
61
|
/**
|
|
32
62
|
* Reads and writes Octo's state files through the configured {@link IStateProvider}.
|
|
33
63
|
*
|
|
@@ -41,6 +71,11 @@ export declare class StateManagementService {
|
|
|
41
71
|
* The resource graph as it stands after the last commit.
|
|
42
72
|
*/
|
|
43
73
|
readonly actualResourceStateFileName: string;
|
|
74
|
+
/**
|
|
75
|
+
* The prefix of each record an external resource's action writes, until `commit` folds it into
|
|
76
|
+
* the resource graph.
|
|
77
|
+
*/
|
|
78
|
+
readonly externalResourceStateFileNamePrefix: string;
|
|
44
79
|
/**
|
|
45
80
|
* The model graph as it stands after the last commit.
|
|
46
81
|
*/
|
|
@@ -49,7 +84,6 @@ export declare class StateManagementService {
|
|
|
49
84
|
* The resource graph as intent described it on the last commit.
|
|
50
85
|
*/
|
|
51
86
|
readonly oldResourceStateFileName: string;
|
|
52
|
-
private readonly externalResourceStateFileNamePrefix;
|
|
53
87
|
private readonly stateProvider;
|
|
54
88
|
/**
|
|
55
89
|
* @param stateProvider Where state is read from and written to.
|
|
@@ -61,10 +95,6 @@ export declare class StateManagementService {
|
|
|
61
95
|
* @internal
|
|
62
96
|
*/
|
|
63
97
|
deleteExternalResourceState(resourceId: string): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Deletes a state file. Deleting one that is not there is not an error.
|
|
66
|
-
*/
|
|
67
|
-
deleteState(stateFileName: string): Promise<void>;
|
|
68
98
|
/**
|
|
69
99
|
* The id of the lock currently held, or `undefined` when the app is unlocked.
|
|
70
100
|
*/
|
|
@@ -75,16 +105,13 @@ export declare class StateManagementService {
|
|
|
75
105
|
*
|
|
76
106
|
* @internal
|
|
77
107
|
*/
|
|
78
|
-
getExternalResourceState(resourceId: string): Promise<
|
|
108
|
+
getExternalResourceState(resourceId: string): Promise<ExternalResourceStateFile | undefined>;
|
|
79
109
|
/**
|
|
80
110
|
* Reads the model graph. Returns an empty graph when no state exists yet.
|
|
81
111
|
*/
|
|
82
112
|
getModelState(stateFileName: string, { freeze }?: {
|
|
83
113
|
freeze?: boolean;
|
|
84
|
-
}): Promise<
|
|
85
|
-
data: ModelSerializedOutput;
|
|
86
|
-
userData: ModelStateUserData;
|
|
87
|
-
}>;
|
|
114
|
+
}): Promise<ModelStateFile>;
|
|
88
115
|
/**
|
|
89
116
|
* The response of one resource: what an external resource's action published and `commit` has not
|
|
90
117
|
* recorded yet, falling back to what the last commit recorded. Undefined when neither holds it.
|
|
@@ -97,13 +124,11 @@ export declare class StateManagementService {
|
|
|
97
124
|
*/
|
|
98
125
|
getResourceState(stateFileName: string, { freeze }?: {
|
|
99
126
|
freeze?: boolean;
|
|
100
|
-
}): Promise<
|
|
101
|
-
data: ResourceSerializedOutput;
|
|
102
|
-
userData: ResourceStateUserData;
|
|
103
|
-
}>;
|
|
127
|
+
}): Promise<ResourceStateFile>;
|
|
104
128
|
/**
|
|
105
129
|
* Reads a state file as-is.
|
|
106
130
|
*
|
|
131
|
+
* @param stateFileName The file's name in the state provider.
|
|
107
132
|
* @param defaultValue Returned instead of throwing when the file does not exist.
|
|
108
133
|
*/
|
|
109
134
|
getState(stateFileName: string, defaultValue?: any): Promise<Buffer>;
|
|
@@ -124,20 +149,32 @@ export declare class StateManagementService {
|
|
|
124
149
|
*/
|
|
125
150
|
listExternalResourceStateIds(): Promise<string[]>;
|
|
126
151
|
/**
|
|
127
|
-
*
|
|
152
|
+
* The names of the state files whose name starts with `prefix`. See {@link IStateProvider.listStates}.
|
|
153
|
+
*/
|
|
154
|
+
listStates(prefix: string): Promise<string[]>;
|
|
155
|
+
/**
|
|
156
|
+
* Takes the app lock and returns its id. With `lockId`, resumes the run already holding it.
|
|
157
|
+
*
|
|
158
|
+
* A new lock is refused while the state holds a journal file of any command but `generate`,
|
|
159
|
+
* `validate` or `lock`: a run that finished without its journal being archived.
|
|
128
160
|
*
|
|
129
|
-
* @throws {@link
|
|
161
|
+
* @throws {@link AppLockError}
|
|
162
|
+
* * When a lock is held, naming the id that holds it.
|
|
163
|
+
* * When `lockId` is given and is not the lock held.
|
|
164
|
+
* * When the state holds journal files of an unfinished run.
|
|
130
165
|
*/
|
|
131
|
-
lockApp():
|
|
132
|
-
|
|
133
|
-
|
|
166
|
+
lockApp(lockId?: string): ReturnType<IStateProvider['lockApp']>;
|
|
167
|
+
/**
|
|
168
|
+
* Brings the state up to the newest a run may plan against. See {@link IStateProvider.refreshState}.
|
|
169
|
+
*/
|
|
170
|
+
refreshState(): Promise<Awaited<ReturnType<IStateProvider['refreshState']>>>;
|
|
134
171
|
/**
|
|
135
172
|
* Records what an external resource's action made of it. The next run reads it back rather than
|
|
136
173
|
* asking the resource graph, which does not learn any of this until `commit`.
|
|
137
174
|
*
|
|
138
175
|
* @internal
|
|
139
176
|
*/
|
|
140
|
-
saveExternalResourceState(resourceId: string, state:
|
|
177
|
+
saveExternalResourceState(resourceId: string, state: ExternalResourceStateFile): Promise<void>;
|
|
141
178
|
/**
|
|
142
179
|
* @internal
|
|
143
180
|
*/
|
|
@@ -147,11 +184,18 @@ export declare class StateManagementService {
|
|
|
147
184
|
*/
|
|
148
185
|
saveResourceState(stateFileName: string, data: ResourceSerializedOutput, userData: ResourceStateUserData): Promise<void>;
|
|
149
186
|
/**
|
|
150
|
-
* Writes
|
|
187
|
+
* Writes state files as-is and as one change, copying each one given a `filePath` and deleting each
|
|
188
|
+
* one given no `data`. Listeners of {@link StateFilesSavingEvent} may add files to the change first.
|
|
151
189
|
*/
|
|
152
|
-
|
|
190
|
+
saveStates(stateFiles: Parameters<IStateProvider['saveStates']>[0]): Promise<void>;
|
|
153
191
|
/**
|
|
154
|
-
* Releases the app lock. Unlocking an app that is not locked is
|
|
192
|
+
* Releases the app lock, then archives the run's journal. Unlocking an app that is not locked is
|
|
193
|
+
* not an error.
|
|
194
|
+
*
|
|
195
|
+
* In order: listeners of {@link AppUnlockingEvent} write the last of the run, and a failure there
|
|
196
|
+
* keeps the lock held; the lock is released, which seals the run; every journal file moves to
|
|
197
|
+
* `archives/<lockId>/`, a cleanup on this machine whose failure is reported on stderr rather than
|
|
198
|
+
* thrown.
|
|
155
199
|
*
|
|
156
200
|
* @throws {@link TransactionError} With the message `Invalid lock ID!` when a different lock is held.
|
|
157
201
|
*/
|
|
@@ -171,4 +215,3 @@ export declare class StateManagementServiceFactory {
|
|
|
171
215
|
*/
|
|
172
216
|
static create(stateProvider?: IStateProvider): Promise<StateManagementService>;
|
|
173
217
|
}
|
|
174
|
-
export {};
|
|
@@ -4,8 +4,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
7
8
|
import { Factory } from '../../decorators/factory.decorator.js';
|
|
8
|
-
import { TransactionError } from '../../errors/index.js';
|
|
9
|
+
import { AppLockError, TransactionError } from '../../errors/index.js';
|
|
10
|
+
import { AppLockRefusedEvent, AppLockTakenEvent, AppUnlockedEvent, AppUnlockingEvent, StateFilesSavedEvent, StateFilesSavingEvent, StateRefreshedEvent, } from '../../events/index.js';
|
|
11
|
+
import { EventService } from '../event/event.service.js';
|
|
12
|
+
import { JOURNAL_COMMANDS_BEFORE_LOCK, JOURNAL_STATE_FILE_NAME_PREFIX, } from './state-provider.interface.js';
|
|
9
13
|
/**
|
|
10
14
|
* Serializes one state file.
|
|
11
15
|
*
|
|
@@ -13,8 +17,8 @@ import { TransactionError } from '../../errors/index.js';
|
|
|
13
17
|
* reading the pull request that produced them sees which entries moved, and a merge conflict lands
|
|
14
18
|
* on the entries that actually collide instead of on the whole file.
|
|
15
19
|
*/
|
|
16
|
-
function serializeState(
|
|
17
|
-
return Buffer.from(JSON.stringify(
|
|
20
|
+
function serializeState(stateFile) {
|
|
21
|
+
return Buffer.from(JSON.stringify(stateFile, null, 2));
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* Reads and writes Octo's state files through the configured {@link IStateProvider}.
|
|
@@ -33,6 +37,11 @@ export class StateManagementService {
|
|
|
33
37
|
* The resource graph as it stands after the last commit.
|
|
34
38
|
*/
|
|
35
39
|
this.actualResourceStateFileName = 'resources-actual.json';
|
|
40
|
+
/**
|
|
41
|
+
* The prefix of each record an external resource's action writes, until `commit` folds it into
|
|
42
|
+
* the resource graph.
|
|
43
|
+
*/
|
|
44
|
+
this.externalResourceStateFileNamePrefix = 'resource-state-';
|
|
36
45
|
/**
|
|
37
46
|
* The model graph as it stands after the last commit.
|
|
38
47
|
*/
|
|
@@ -41,7 +50,6 @@ export class StateManagementService {
|
|
|
41
50
|
* The resource graph as intent described it on the last commit.
|
|
42
51
|
*/
|
|
43
52
|
this.oldResourceStateFileName = 'resources-old.json';
|
|
44
|
-
this.externalResourceStateFileNamePrefix = 'resource-state-';
|
|
45
53
|
this.stateProvider = stateProvider;
|
|
46
54
|
}
|
|
47
55
|
/**
|
|
@@ -50,13 +58,7 @@ export class StateManagementService {
|
|
|
50
58
|
* @internal
|
|
51
59
|
*/
|
|
52
60
|
async deleteExternalResourceState(resourceId) {
|
|
53
|
-
await this.
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Deletes a state file. Deleting one that is not there is not an error.
|
|
57
|
-
*/
|
|
58
|
-
async deleteState(stateFileName) {
|
|
59
|
-
return this.stateProvider.deleteState(stateFileName);
|
|
61
|
+
await this.saveStates([{ data: undefined, stateFileName: this.externalResourceStateFileName(resourceId) }]);
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* The id of the lock currently held, or `undefined` when the app is unlocked.
|
|
@@ -83,6 +85,7 @@ export class StateManagementService {
|
|
|
83
85
|
anchors: [],
|
|
84
86
|
dependencies: [],
|
|
85
87
|
models: {},
|
|
88
|
+
modules: {},
|
|
86
89
|
overlays: [],
|
|
87
90
|
},
|
|
88
91
|
userData: {},
|
|
@@ -148,6 +151,7 @@ export class StateManagementService {
|
|
|
148
151
|
/**
|
|
149
152
|
* Reads a state file as-is.
|
|
150
153
|
*
|
|
154
|
+
* @param stateFileName The file's name in the state provider.
|
|
151
155
|
* @param defaultValue Returned instead of throwing when the file does not exist.
|
|
152
156
|
*/
|
|
153
157
|
async getState(stateFileName, defaultValue) {
|
|
@@ -184,15 +188,66 @@ export class StateManagementService {
|
|
|
184
188
|
const stateFileNames = await this.stateProvider.listStates(this.externalResourceStateFileNamePrefix);
|
|
185
189
|
return stateFileNames
|
|
186
190
|
.filter((stateFileName) => stateFileName.endsWith('.json'))
|
|
187
|
-
.map((stateFileName) =>
|
|
191
|
+
.map((stateFileName) => stateFileName.slice(this.externalResourceStateFileNamePrefix.length, -'.json'.length).replace(/\./g, '/'));
|
|
188
192
|
}
|
|
189
193
|
/**
|
|
190
|
-
*
|
|
194
|
+
* The names of the state files whose name starts with `prefix`. See {@link IStateProvider.listStates}.
|
|
195
|
+
*/
|
|
196
|
+
async listStates(prefix) {
|
|
197
|
+
return this.stateProvider.listStates(prefix);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Takes the app lock and returns its id. With `lockId`, resumes the run already holding it.
|
|
191
201
|
*
|
|
192
|
-
*
|
|
202
|
+
* A new lock is refused while the state holds a journal file of any command but `generate`,
|
|
203
|
+
* `validate` or `lock`: a run that finished without its journal being archived.
|
|
204
|
+
*
|
|
205
|
+
* @throws {@link AppLockError}
|
|
206
|
+
* * When a lock is held, naming the id that holds it.
|
|
207
|
+
* * When `lockId` is given and is not the lock held.
|
|
208
|
+
* * When the state holds journal files of an unfinished run.
|
|
193
209
|
*/
|
|
194
|
-
async lockApp() {
|
|
195
|
-
|
|
210
|
+
async lockApp(lockId) {
|
|
211
|
+
const eventService = EventService.getInstance();
|
|
212
|
+
let lock;
|
|
213
|
+
try {
|
|
214
|
+
// Refuse a new lock over journal files no lock owns.
|
|
215
|
+
if (!lockId && !(await this.stateProvider.getAppLock())) {
|
|
216
|
+
const unfinishedStateFileNames = (await this.stateProvider.listStates(JOURNAL_STATE_FILE_NAME_PREFIX)).filter((stateFileName) => !JOURNAL_COMMANDS_BEFORE_LOCK.includes(stateFileName.split('.')[2]));
|
|
217
|
+
if (unfinishedStateFileNames.length > 0) {
|
|
218
|
+
throw new AppLockError(`State holds the journal of a run that was never archived: ${unfinishedStateFileNames.join(', ')}! ` +
|
|
219
|
+
'Move or delete these files, then lock again.', { reason: 'unfinished', stateFileNames: unfinishedStateFileNames });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
lock = await this.stateProvider.lockApp(lockId);
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
if (error instanceof AppLockError) {
|
|
226
|
+
await eventService.emitAndWait(new AppLockRefusedEvent(undefined, {
|
|
227
|
+
holder: error.holder,
|
|
228
|
+
newestCommitId: error.newestCommitId,
|
|
229
|
+
reason: error.reason,
|
|
230
|
+
refreshedCommitId: error.refreshedCommitId,
|
|
231
|
+
stateFileNames: error.stateFileNames,
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
await eventService.emitAndWait(new AppLockTakenEvent(undefined, {
|
|
237
|
+
commitId: lock.commitId,
|
|
238
|
+
lockId: lock.lockId,
|
|
239
|
+
resumed: !!lockId,
|
|
240
|
+
resumedFrom: lock.resumedFrom,
|
|
241
|
+
}));
|
|
242
|
+
return lock;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Brings the state up to the newest a run may plan against. See {@link IStateProvider.refreshState}.
|
|
246
|
+
*/
|
|
247
|
+
async refreshState() {
|
|
248
|
+
const refreshed = await this.stateProvider.refreshState();
|
|
249
|
+
await EventService.getInstance().emitAndWait(new StateRefreshedEvent(undefined, refreshed));
|
|
250
|
+
return refreshed;
|
|
196
251
|
}
|
|
197
252
|
/**
|
|
198
253
|
* Records what an external resource's action made of it. The next run reads it back rather than
|
|
@@ -201,40 +256,89 @@ export class StateManagementService {
|
|
|
201
256
|
* @internal
|
|
202
257
|
*/
|
|
203
258
|
async saveExternalResourceState(resourceId, state) {
|
|
204
|
-
await this.
|
|
259
|
+
await this.saveStates([
|
|
260
|
+
{ data: Buffer.from(JSON.stringify(state)), stateFileName: this.externalResourceStateFileName(resourceId) },
|
|
261
|
+
]);
|
|
205
262
|
}
|
|
206
263
|
/**
|
|
207
264
|
* @internal
|
|
208
265
|
*/
|
|
209
266
|
async saveModelState(stateFileName, data, userData) {
|
|
210
|
-
await this.
|
|
267
|
+
await this.saveStates([{ data: serializeState({ data, userData }), stateFileName }]);
|
|
211
268
|
}
|
|
212
269
|
/**
|
|
213
270
|
* @internal
|
|
214
271
|
*/
|
|
215
272
|
async saveResourceState(stateFileName, data, userData) {
|
|
216
|
-
await this.
|
|
273
|
+
await this.saveStates([{ data: serializeState({ data, userData }), stateFileName }]);
|
|
217
274
|
}
|
|
218
275
|
/**
|
|
219
|
-
* Writes
|
|
276
|
+
* Writes state files as-is and as one change, copying each one given a `filePath` and deleting each
|
|
277
|
+
* one given no `data`. Listeners of {@link StateFilesSavingEvent} may add files to the change first.
|
|
220
278
|
*/
|
|
221
|
-
async
|
|
222
|
-
|
|
279
|
+
async saveStates(stateFiles) {
|
|
280
|
+
const eventService = EventService.getInstance();
|
|
281
|
+
await eventService.emitAndWait(new StateFilesSavingEvent(undefined, { stateFiles }));
|
|
282
|
+
await this.stateProvider.saveStates(stateFiles);
|
|
283
|
+
eventService.emit(new StateFilesSavedEvent(undefined, {
|
|
284
|
+
stateFiles: stateFiles.map((stateFile) => 'filePath' in stateFile
|
|
285
|
+
? { data: undefined, filePath: stateFile.filePath, md5: undefined, stateFileName: stateFile.stateFileName }
|
|
286
|
+
: {
|
|
287
|
+
data: stateFile.data,
|
|
288
|
+
md5: stateFile.data === undefined ? undefined : createHash('md5').update(stateFile.data).digest('hex'),
|
|
289
|
+
stateFileName: stateFile.stateFileName,
|
|
290
|
+
}),
|
|
291
|
+
}));
|
|
223
292
|
}
|
|
224
293
|
/**
|
|
225
|
-
* Releases the app lock. Unlocking an app that is not locked is
|
|
294
|
+
* Releases the app lock, then archives the run's journal. Unlocking an app that is not locked is
|
|
295
|
+
* not an error.
|
|
296
|
+
*
|
|
297
|
+
* In order: listeners of {@link AppUnlockingEvent} write the last of the run, and a failure there
|
|
298
|
+
* keeps the lock held; the lock is released, which seals the run; every journal file moves to
|
|
299
|
+
* `archives/<lockId>/`, a cleanup on this machine whose failure is reported on stderr rather than
|
|
300
|
+
* thrown.
|
|
226
301
|
*
|
|
227
302
|
* @throws {@link TransactionError} With the message `Invalid lock ID!` when a different lock is held.
|
|
228
303
|
*/
|
|
229
304
|
async unlockApp(lockId) {
|
|
230
|
-
|
|
305
|
+
const eventService = EventService.getInstance();
|
|
306
|
+
await eventService.emitAndWait(new AppUnlockingEvent(undefined, { lockId }));
|
|
307
|
+
// Stop when no lock is held, and refuse to touch the journal of another.
|
|
308
|
+
const heldLockId = await this.stateProvider.getAppLock();
|
|
309
|
+
if (!heldLockId) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (heldLockId !== lockId) {
|
|
313
|
+
throw new TransactionError('Invalid lock ID!');
|
|
314
|
+
}
|
|
315
|
+
await this.stateProvider.unlockApp(lockId);
|
|
316
|
+
// Archive the run's journal, names unchanged.
|
|
317
|
+
try {
|
|
318
|
+
const stateFiles = [];
|
|
319
|
+
for (const stateFileName of await this.stateProvider.listStates(JOURNAL_STATE_FILE_NAME_PREFIX)) {
|
|
320
|
+
stateFiles.push({
|
|
321
|
+
data: await this.stateProvider.getState(stateFileName),
|
|
322
|
+
stateFileName: `archives/${lockId}/${stateFileName}`,
|
|
323
|
+
}, { data: undefined, stateFileName });
|
|
324
|
+
}
|
|
325
|
+
if (stateFiles.length > 0) {
|
|
326
|
+
await this.saveStates(stateFiles);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
process.stderr.write(`Failed to archive the journal of lock "${lockId}": ${error?.message ?? String(error)}\n`);
|
|
331
|
+
}
|
|
332
|
+
await eventService.emitAndWait(new AppUnlockedEvent(undefined, { lockId }));
|
|
231
333
|
}
|
|
232
334
|
/**
|
|
233
335
|
* @internal
|
|
234
336
|
*/
|
|
235
337
|
externalResourceStateFileName(resourceId) {
|
|
236
|
-
// A resource id is not a file name - it carries `/` where a resource is named after a path
|
|
237
|
-
|
|
338
|
+
// A resource id is not a file name - it carries `/` where a resource is named after a path, and
|
|
339
|
+
// a state file name is one thing in a directory, in an object store, and in a URL path segment.
|
|
340
|
+
// A resource id holds no `.`, so the separator stands in for the slash and reads back as one.
|
|
341
|
+
return `${this.externalResourceStateFileNamePrefix}${resourceId.replace(/\//g, '.')}.json`;
|
|
238
342
|
}
|
|
239
343
|
}
|
|
240
344
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-management.service.js","sourceRoot":"","sources":["../../../src/services/state-management/state-management.service.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"state-management.service.js","sourceRoot":"","sources":["../../../src/services/state-management/state-management.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The prefix of the state files the journal writes. A remote state provider uploads them while the
|
|
3
|
+
* lock is held, and never replaces them when it refreshes.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare const JOURNAL_STATE_FILE_NAME_PREFIX = "journal.";
|
|
8
|
+
/**
|
|
9
|
+
* The commands that run before a lock. Every other command runs under one, and its journal files
|
|
10
|
+
* belong to the lock held.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare const JOURNAL_COMMANDS_BEFORE_LOCK: string[];
|
|
1
15
|
/**
|
|
2
16
|
* Where Octo's state files live.
|
|
3
17
|
*
|
|
@@ -13,10 +27,6 @@
|
|
|
13
27
|
* @see Techniques for [State Providers](/docs/techniques/state-providers).
|
|
14
28
|
*/
|
|
15
29
|
export interface IStateProvider {
|
|
16
|
-
/**
|
|
17
|
-
* Deletes a state file. Deleting one that is not there is not an error.
|
|
18
|
-
*/
|
|
19
|
-
deleteState(stateFileName: string): Promise<void>;
|
|
20
30
|
/**
|
|
21
31
|
* The id of the lock currently held, or `undefined` when the app is unlocked.
|
|
22
32
|
*/
|
|
@@ -47,17 +57,48 @@ export interface IStateProvider {
|
|
|
47
57
|
/**
|
|
48
58
|
* Takes the app lock and returns its id, which `apply` and `commit` must then present.
|
|
49
59
|
*
|
|
50
|
-
* The lock is taken atomically, so of two callers racing for it exactly one wins.
|
|
60
|
+
* The lock is taken atomically, so of two callers racing for it exactly one wins. With `lockId`,
|
|
61
|
+
* resumes the run already holding that lock instead, which is how a run that died is finished.
|
|
62
|
+
* `commitId` names the record the run writes into, where the provider keeps one.
|
|
63
|
+
*
|
|
64
|
+
* A provider sharing state names where a resume took the state directory from in `resumedFrom`:
|
|
65
|
+
* `directory`, the directory the lock was taken in, left as it was; `run`, what the run uploaded so
|
|
66
|
+
* far; `sealed`, the newest sealed state, because the run uploaded nothing.
|
|
51
67
|
*
|
|
52
|
-
* @throws {@link
|
|
68
|
+
* @throws {@link AppLockError} When a lock is held, naming the id that holds it. When `lockId` is
|
|
69
|
+
* given and is not the lock held.
|
|
53
70
|
*/
|
|
54
|
-
lockApp(): Promise<{
|
|
71
|
+
lockApp(lockId?: string): Promise<{
|
|
72
|
+
commitId?: string;
|
|
55
73
|
lockId: string;
|
|
74
|
+
resumedFrom?: 'directory' | 'run' | 'sealed';
|
|
56
75
|
}>;
|
|
57
76
|
/**
|
|
58
|
-
*
|
|
77
|
+
* Brings the state up to the newest a run may plan against. `generate` calls it before reading any.
|
|
78
|
+
*
|
|
79
|
+
* A provider whose state is always the newest does nothing here, and returns `replaced: false`.
|
|
80
|
+
* One that replaced the state files names the commit it replaced them with, and the one before.
|
|
81
|
+
*/
|
|
82
|
+
refreshState(): Promise<{
|
|
83
|
+
commitId?: string;
|
|
84
|
+
previousCommitId?: string;
|
|
85
|
+
replaced: boolean;
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Writes state files as one change, overwriting whatever was there. A file comes from `data`, or is
|
|
89
|
+
* copied from the file at `filePath` without being read into memory; one given `data: undefined` is
|
|
90
|
+
* deleted. Deleting one that is not there is not an error. A name holding `/` is the machine's own:
|
|
91
|
+
* a provider sharing state keeps it on the machine.
|
|
92
|
+
*
|
|
93
|
+
* A provider that pays per write makes one write of the whole change rather than one per file.
|
|
59
94
|
*/
|
|
60
|
-
|
|
95
|
+
saveStates(stateFiles: ({
|
|
96
|
+
data: Buffer | undefined;
|
|
97
|
+
stateFileName: string;
|
|
98
|
+
} | {
|
|
99
|
+
filePath: string;
|
|
100
|
+
stateFileName: string;
|
|
101
|
+
})[]): Promise<void>;
|
|
61
102
|
/**
|
|
62
103
|
* Releases the app lock. Unlocking an app that is not locked is not an error.
|
|
63
104
|
*
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The prefix of the state files the journal writes. A remote state provider uploads them while the
|
|
3
|
+
* lock is held, and never replaces them when it refreshes.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export const JOURNAL_STATE_FILE_NAME_PREFIX = 'journal.';
|
|
8
|
+
/**
|
|
9
|
+
* The commands that run before a lock. Every other command runs under one, and its journal files
|
|
10
|
+
* belong to the lock held.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export const JOURNAL_COMMANDS_BEFORE_LOCK = ['generate', 'lock', 'validate'];
|
|
2
15
|
//# sourceMappingURL=state-provider.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-provider.interface.js","sourceRoot":"","sources":["../../../src/services/state-management/state-provider.interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"state-provider.interface.js","sourceRoot":"","sources":["../../../src/services/state-management/state-provider.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,UAAU,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC"}
|