@highstate/backend 0.9.16 → 0.9.18

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.
Files changed (125) hide show
  1. package/dist/chunk-NAAIDR4U.js +8499 -0
  2. package/dist/chunk-NAAIDR4U.js.map +1 -0
  3. package/dist/chunk-OU5OQBLB.js +74 -0
  4. package/dist/chunk-OU5OQBLB.js.map +1 -0
  5. package/dist/{chunk-WHALQHEZ.js → chunk-Y7DXREVO.js} +502 -774
  6. package/dist/chunk-Y7DXREVO.js.map +1 -0
  7. package/dist/highstate.manifest.json +4 -4
  8. package/dist/index.js +2979 -2233
  9. package/dist/index.js.map +1 -1
  10. package/dist/library/package-resolution-worker.js +7 -5
  11. package/dist/library/package-resolution-worker.js.map +1 -1
  12. package/dist/library/worker/main.js +40 -41
  13. package/dist/library/worker/main.js.map +1 -1
  14. package/dist/magic-string.es-5ABAC4JN.js +1292 -0
  15. package/dist/magic-string.es-5ABAC4JN.js.map +1 -0
  16. package/dist/shared/index.js +3 -216
  17. package/dist/shared/index.js.map +1 -1
  18. package/package.json +9 -6
  19. package/src/artifact/encryption.ts +47 -7
  20. package/src/artifact/factory.ts +2 -2
  21. package/src/artifact/local.ts +2 -6
  22. package/src/business/__traces__/secret/update-instance-secrets/create-and-delete-secrets-simultaneously.md +356 -0
  23. package/src/business/__traces__/secret/update-instance-secrets/create-new-secrets-for-instance.md +274 -0
  24. package/src/business/__traces__/secret/update-instance-secrets/delete-existing-secrets.md +223 -0
  25. package/src/business/__traces__/secret/update-instance-secrets/no-op-when-no-changes.md +147 -0
  26. package/src/business/__traces__/secret/update-instance-secrets/update-existing-secrets.md +280 -0
  27. package/src/business/__traces__/worker/update-unit-registrations/add-new-unit-registration-when-other-exists.md +360 -0
  28. package/src/business/__traces__/worker/update-unit-registrations/add-new-unit-registration.md +215 -0
  29. package/src/business/__traces__/worker/update-unit-registrations/create-multiple-workers-with-different-identities.md +427 -0
  30. package/src/business/__traces__/worker/update-unit-registrations/handle-nonexistent-registration-id-gracefully.md +217 -0
  31. package/src/business/__traces__/worker/update-unit-registrations/no-op-when-no-changes.md +132 -0
  32. package/src/business/__traces__/worker/update-unit-registrations/recreate-worker-when-image-changes.md +454 -0
  33. package/src/business/__traces__/worker/update-unit-registrations/recreate-worker-when-image-version-changes.md +426 -0
  34. package/src/business/__traces__/worker/update-unit-registrations/recreate-worker-with-same-identity-reuses-service-account.md +372 -0
  35. package/src/business/__traces__/worker/update-unit-registrations/remove-one-of-multiple-unit-registrations.md +383 -0
  36. package/src/business/__traces__/worker/update-unit-registrations/remove-unit-registration.md +245 -0
  37. package/src/business/__traces__/worker/update-unit-registrations/update-existing-unit-registration-when-params-change.md +174 -0
  38. package/src/business/__traces__/worker/update-unit-registrations/update-params-and-image-simultaneously.md +432 -0
  39. package/src/business/__traces__/worker/update-unit-registrations/worker-with-multiple-registrations-not-deleted-when-one-removed.md +220 -0
  40. package/src/business/artifact.ts +2 -1
  41. package/src/business/index.ts +1 -0
  42. package/src/business/instance-lock.ts +3 -2
  43. package/src/business/instance-state.ts +202 -60
  44. package/src/business/project-unlock.ts +41 -23
  45. package/src/business/project.ts +299 -0
  46. package/src/business/secret.test.ts +178 -0
  47. package/src/business/secret.ts +139 -45
  48. package/src/business/worker.test.ts +614 -0
  49. package/src/business/worker.ts +289 -52
  50. package/src/common/clock.ts +18 -0
  51. package/src/common/index.ts +3 -0
  52. package/src/common/random.ts +68 -0
  53. package/src/common/test/index.ts +2 -0
  54. package/src/common/test/render.ts +98 -0
  55. package/src/common/test/tracer.ts +359 -0
  56. package/src/config.ts +5 -1
  57. package/src/hotstate/manager.ts +8 -8
  58. package/src/hotstate/validation.ts +0 -1
  59. package/src/library/abstractions.ts +20 -11
  60. package/src/library/local.ts +6 -13
  61. package/src/library/worker/evaluator.ts +30 -34
  62. package/src/library/worker/loader.lite.ts +13 -0
  63. package/src/library/worker/main.ts +8 -8
  64. package/src/library/worker/protocol.ts +0 -11
  65. package/src/lock/index.ts +1 -0
  66. package/src/lock/manager.ts +17 -2
  67. package/src/lock/test.ts +108 -0
  68. package/src/orchestrator/manager.ts +17 -36
  69. package/src/orchestrator/operation-workset.ts +34 -37
  70. package/src/orchestrator/operation.ts +129 -74
  71. package/src/project/abstractions.ts +27 -51
  72. package/src/project/evaluation.ts +248 -0
  73. package/src/project/index.ts +1 -1
  74. package/src/project/local.ts +75 -127
  75. package/src/pubsub/manager.ts +21 -13
  76. package/src/runner/abstractions.ts +29 -9
  77. package/src/runner/artifact-env.ts +3 -3
  78. package/src/runner/local.ts +29 -19
  79. package/src/runner/pulumi.ts +4 -1
  80. package/src/services.ts +77 -24
  81. package/src/shared/models/backend/library.ts +4 -4
  82. package/src/shared/models/backend/project.ts +25 -6
  83. package/src/shared/models/backend/unlock-method.ts +1 -1
  84. package/src/shared/models/base.ts +1 -84
  85. package/src/shared/models/project/api-key.ts +5 -2
  86. package/src/shared/models/project/artifact.ts +3 -33
  87. package/src/shared/models/project/index.ts +1 -2
  88. package/src/shared/models/project/lock.ts +3 -3
  89. package/src/shared/models/project/model.ts +14 -0
  90. package/src/shared/models/project/operation.ts +3 -3
  91. package/src/shared/models/project/page.ts +3 -3
  92. package/src/shared/models/project/secret.ts +4 -18
  93. package/src/shared/models/project/service-account.ts +2 -2
  94. package/src/shared/models/project/state.ts +32 -15
  95. package/src/shared/models/project/terminal.ts +4 -5
  96. package/src/shared/models/project/trigger.ts +1 -1
  97. package/src/shared/models/project/unlock-method.ts +9 -2
  98. package/src/shared/models/project/worker.ts +9 -7
  99. package/src/shared/resolvers/graph-resolver.ts +41 -26
  100. package/src/shared/resolvers/input.ts +47 -5
  101. package/src/shared/resolvers/validation.ts +23 -7
  102. package/src/shared/utils/args.ts +25 -0
  103. package/src/shared/utils/index.ts +1 -0
  104. package/src/state/abstractions.ts +98 -259
  105. package/src/state/encryption.ts +39 -0
  106. package/src/state/index.ts +1 -0
  107. package/src/state/local/backend.ts +29 -222
  108. package/src/state/local/collection.ts +105 -86
  109. package/src/state/manager.ts +358 -287
  110. package/src/state/memory/backend.ts +70 -0
  111. package/src/state/memory/collection.ts +270 -0
  112. package/src/state/memory/index.ts +2 -0
  113. package/src/state/repository/repository.index.ts +1 -1
  114. package/src/state/repository/repository.ts +71 -22
  115. package/src/state/test.ts +457 -0
  116. package/src/unlock/abstractions.ts +49 -0
  117. package/src/unlock/index.ts +2 -0
  118. package/src/unlock/memory.ts +32 -0
  119. package/src/worker/manager.ts +28 -0
  120. package/dist/chunk-RCB4AFGD.js +0 -159
  121. package/dist/chunk-RCB4AFGD.js.map +0 -1
  122. package/dist/chunk-WHALQHEZ.js.map +0 -1
  123. package/src/project/manager.ts +0 -574
  124. package/src/shared/models/project/component.ts +0 -45
  125. package/src/shared/models/project/instance.ts +0 -74
@@ -0,0 +1,426 @@
1
+ ## arrange
2
+
3
+ ### <a id="trace-1"></a> 1. 💾 putItem
4
+
5
+ **Collection:** `workers:test`
6
+
7
+ **Key:** `"00000000-0011-7000-8000-413b6b413f41"`
8
+
9
+ **Value:**
10
+
11
+ ```js
12
+ {
13
+ "id": "00000000-0011-7000-8000-413b6b413f41",
14
+ "meta": {},
15
+ "image": "ghcr.io/org/worker:v1",
16
+ "apiKeyId": "00000000-0023-7000-8000-8b4d7d535153",
17
+ "failedStartAttempts": 5,
18
+ "status": "starting",
19
+ "identity": "ghcr.io/org/worker",
20
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365"
21
+ }
22
+ ```
23
+
24
+ ### <a id="trace-2"></a> 2. 💾 putItem
25
+
26
+ **Collection:** `worker-registrations:test`
27
+
28
+ **Key:** `"00000000-0047-7000-8001-1b71a1777577"`
29
+
30
+ **Value:**
31
+
32
+ ```js
33
+ {
34
+ "id": "00000000-0047-7000-8001-1b71a1777577",
35
+ "meta": {},
36
+ "workerId": "00000000-0011-7000-8000-413b6b413f41",
37
+ "image": "ghcr.io/org/worker:v1",
38
+ "instanceId": "test",
39
+ "params": {}
40
+ }
41
+ ```
42
+
43
+ ## act
44
+
45
+ ### <a id="trace-3"></a> 3. 🔒 locked, released at [32](#trace-32)
46
+
47
+ **Keys:**
48
+
49
+ `"worker-image:test:ghcr.io/org/worker:v2"`
50
+
51
+ ### <a id="trace-4"></a> 4. 📖 getManyRecord
52
+
53
+ **Collection:** `worker-registrations:test`
54
+
55
+ **Keys:**
56
+
57
+ `"00000000-0047-7000-8001-1b71a1777577"`
58
+
59
+ **Result:**
60
+
61
+ ```js
62
+ {
63
+ "00000000-0047-7000-8001-1b71a1777577": {
64
+ "id": "00000000-0047-7000-8001-1b71a1777577",
65
+ "meta": {
66
+ "createdAt": 0,
67
+ "updatedAt": 0
68
+ },
69
+ "workerId": "00000000-0011-7000-8000-413b6b413f41",
70
+ "instanceId": "test",
71
+ "image": "ghcr.io/org/worker:v1",
72
+ "params": {}
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### <a id="trace-5"></a> 5. 🔒 locked, released at [14](#trace-14)
78
+
79
+ **Keys:**
80
+
81
+ `"worker-image:test:ghcr.io/org/worker"`
82
+
83
+ ### <a id="trace-6"></a> 6. 📖 getAllItems
84
+
85
+ **Collection:** `workers:test`
86
+
87
+ **Result:**
88
+
89
+ ```js
90
+ {
91
+ "id": "00000000-0011-7000-8000-413b6b413f41",
92
+ "meta": {
93
+ "createdAt": 0,
94
+ "updatedAt": 0
95
+ },
96
+ "status": "starting",
97
+ "failedStartAttempts": 5,
98
+ "identity": "ghcr.io/org/worker",
99
+ "image": "ghcr.io/org/worker:v1",
100
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365",
101
+ "apiKeyId": "00000000-0023-7000-8000-8b4d7d535153"
102
+ }
103
+ ```
104
+
105
+ ### <a id="trace-7"></a> 7. â„šī¸ info
106
+
107
+ `creating new worker for image "ghcr.io/org/worker:v2" with identity "ghcr.io/org/worker" in project "test"`
108
+
109
+ **Data:**
110
+
111
+ ```js
112
+ {
113
+ "service": "WorkerService",
114
+ "projectId": "test",
115
+ "image": "ghcr.io/org/worker:v2",
116
+ "identity": "ghcr.io/org/worker"
117
+ }
118
+ ```
119
+
120
+ ### <a id="trace-8"></a> 8. 🔍 debug
121
+
122
+ `sibling worker with identity "ghcr.io/org/worker" already exists, using its service account`
123
+
124
+ **Data:**
125
+
126
+ ```js
127
+ {
128
+ "service": "WorkerService"
129
+ }
130
+ ```
131
+
132
+ ### <a id="trace-9"></a> 9. 💾 putItem
133
+
134
+ **Collection:** `api-keys:test`
135
+
136
+ **Batch ID:** `2`, written at [12](#trace-12)
137
+
138
+ **Key:** `"00000000-0059-7000-8001-6183b3898789"`
139
+
140
+ **Value:**
141
+
142
+ ```js
143
+ {
144
+ "id": "00000000-0059-7000-8001-6183b3898789",
145
+ "meta": {},
146
+ "token": "8b8d958e909598969b94c395c59b999ba39c9ea3a6a4a9a2d1a3d3a9a7a9b1aa",
147
+ "scopes": [
148
+ {
149
+ "type": "service-account",
150
+ "actions": [
151
+ "full"
152
+ ],
153
+ "serviceAccountIds": [
154
+ "00000000-0035-7000-8000-d15f8f656365"
155
+ ]
156
+ }
157
+ ]
158
+ }
159
+ ```
160
+
161
+ ### <a id="trace-10"></a> 10. â„šī¸ info
162
+
163
+ `creating worker "00000000-008b-7000-8002-2bb5e5bbb9bb" for image "ghcr.io/org/worker:v2" in project "test"`
164
+
165
+ **Data:**
166
+
167
+ ```js
168
+ {
169
+ "service": "WorkerService",
170
+ "projectId": "test",
171
+ "workerId": "00000000-008b-7000-8002-2bb5e5bbb9bb",
172
+ "image": "ghcr.io/org/worker:v2",
173
+ "identity": "ghcr.io/org/worker",
174
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365"
175
+ }
176
+ ```
177
+
178
+ ### <a id="trace-11"></a> 11. 💾 putItem
179
+
180
+ **Collection:** `workers:test`
181
+
182
+ **Batch ID:** `2`, written at [12](#trace-12)
183
+
184
+ **Key:** `"00000000-008b-7000-8002-2bb5e5bbb9bb"`
185
+
186
+ **Value:**
187
+
188
+ ```js
189
+ {
190
+ "id": "00000000-008b-7000-8002-2bb5e5bbb9bb",
191
+ "meta": {},
192
+ "status": "starting",
193
+ "failedStartAttempts": 5,
194
+ "identity": "ghcr.io/org/worker",
195
+ "image": "ghcr.io/org/worker:v2",
196
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365",
197
+ "apiKeyId": "00000000-0059-7000-8001-6183b3898789"
198
+ }
199
+ ```
200
+
201
+ ### <a id="trace-12"></a> 12. 💾 write [9](#trace-9), [11](#trace-11)
202
+
203
+ ### <a id="trace-13"></a> 13. ✅ workerManager.startWorker
204
+
205
+ **Args:**
206
+
207
+ `"test"`
208
+
209
+ `"00000000-008b-7000-8002-2bb5e5bbb9bb"`
210
+
211
+ ### <a id="trace-14"></a> 14. 🔓 released, locked at [5](#trace-5)
212
+
213
+ **Keys:**
214
+
215
+ `"worker-image:test:ghcr.io/org/worker"`
216
+
217
+ ### <a id="trace-15"></a> 15. â„šī¸ info
218
+
219
+ `updating worker registration "00000000-0047-7000-8001-1b71a1777577" for unit worker "worker" in project "test" (worker changed from "00000000-0011-7000-8000-413b6b413f41" to "00000000-008b-7000-8002-2bb5e5bbb9bb")`
220
+
221
+ **Data:**
222
+
223
+ ```js
224
+ {
225
+ "service": "WorkerService",
226
+ "projectId": "test",
227
+ "registrationId": "00000000-0047-7000-8001-1b71a1777577",
228
+ "unitWorkerName": "worker",
229
+ "oldWorkerId": "00000000-0011-7000-8000-413b6b413f41",
230
+ "newWorkerId": "00000000-008b-7000-8002-2bb5e5bbb9bb",
231
+ "oldImage": "ghcr.io/org/worker:v1",
232
+ "newImage": "ghcr.io/org/worker:v2"
233
+ }
234
+ ```
235
+
236
+ ### <a id="trace-16"></a> 16. 💾 putItem
237
+
238
+ **Collection:** `worker-registrations:test`
239
+
240
+ **Batch ID:** `1`, written at [31](#trace-31)
241
+
242
+ **Key:** `"00000000-0047-7000-8001-1b71a1777577"`
243
+
244
+ **Value:**
245
+
246
+ ```js
247
+ {
248
+ "id": "00000000-0047-7000-8001-1b71a1777577",
249
+ "meta": {
250
+ "createdAt": 0,
251
+ "updatedAt": 0
252
+ },
253
+ "image": "ghcr.io/org/worker:v2",
254
+ "params": {},
255
+ "instanceId": "test",
256
+ "workerId": "00000000-008b-7000-8002-2bb5e5bbb9bb"
257
+ }
258
+ ```
259
+
260
+ ### <a id="trace-17"></a> 17. 💾 put
261
+
262
+ **Collection:** `worker-registration-index:test:00000000-008b-7000-8002-2bb5e5bbb9bb`
263
+
264
+ **Key:** `"00000000-0047-7000-8001-1b71a1777577"`
265
+
266
+ **Value:**
267
+
268
+ `""`
269
+
270
+ ### <a id="trace-18"></a> 18. đŸ—‘ī¸ delete
271
+
272
+ **Collection:** `worker-registration-index:test:00000000-0011-7000-8000-413b6b413f41`
273
+
274
+ **Key:** `"00000000-0047-7000-8001-1b71a1777577"`
275
+
276
+ ### <a id="trace-19"></a> 19. 🔒 locked, released at [30](#trace-30)
277
+
278
+ **Keys:**
279
+
280
+ `"worker:00000000-0011-7000-8000-413b6b413f41"`
281
+
282
+ ### <a id="trace-20"></a> 20. 📸 snapshot, used by [21](#trace-21)
283
+
284
+ ### <a id="trace-21"></a> 21. 📖 getAll
285
+
286
+ **Collection:** `worker-registration-index:test:00000000-0011-7000-8000-413b6b413f41`
287
+
288
+ **Result:** `[]`
289
+
290
+ **Snapshot ID:** `1`, captured at [20](#trace-20)
291
+
292
+ ### <a id="trace-22"></a> 22. 📖 get
293
+
294
+ **Collection:** `workers:test`
295
+
296
+ **Keys:**
297
+
298
+ `"00000000-0011-7000-8000-413b6b413f41"`
299
+
300
+ **Result:**
301
+
302
+ ```js
303
+ {
304
+ "id": "00000000-0011-7000-8000-413b6b413f41",
305
+ "meta": {
306
+ "createdAt": 0,
307
+ "updatedAt": 0
308
+ },
309
+ "status": "starting",
310
+ "failedStartAttempts": 5,
311
+ "identity": "ghcr.io/org/worker",
312
+ "image": "ghcr.io/org/worker:v1",
313
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365",
314
+ "apiKeyId": "00000000-0023-7000-8000-8b4d7d535153"
315
+ }
316
+ ```
317
+
318
+ ### <a id="trace-23"></a> 23. â„šī¸ info
319
+
320
+ `deleting worker "00000000-0011-7000-8000-413b6b413f41" with image "ghcr.io/org/worker:v1" in project "test" (no registrations remaining)`
321
+
322
+ **Data:**
323
+
324
+ ```js
325
+ {
326
+ "service": "WorkerService",
327
+ "projectId": "test",
328
+ "workerId": "00000000-0011-7000-8000-413b6b413f41",
329
+ "image": "ghcr.io/org/worker:v1",
330
+ "identity": "ghcr.io/org/worker"
331
+ }
332
+ ```
333
+
334
+ ### <a id="trace-24"></a> 24. đŸ—‘ī¸ delete
335
+
336
+ **Collection:** `workers:test`
337
+
338
+ **Batch ID:** `3`, written at [28](#trace-28)
339
+
340
+ **Key:** `"00000000-0011-7000-8000-413b6b413f41"`
341
+
342
+ ### <a id="trace-25"></a> 25. đŸ—‘ī¸ delete
343
+
344
+ **Collection:** `api-keys:test`
345
+
346
+ **Batch ID:** `3`, written at [28](#trace-28)
347
+
348
+ **Key:** `"00000000-0023-7000-8000-8b4d7d535153"`
349
+
350
+ ### <a id="trace-26"></a> 26. 📖 getAllItems
351
+
352
+ **Collection:** `workers:test`
353
+
354
+ **Result:**
355
+
356
+ ```js
357
+ {
358
+ "id": "00000000-0011-7000-8000-413b6b413f41",
359
+ "meta": {
360
+ "createdAt": 0,
361
+ "updatedAt": 0
362
+ },
363
+ "status": "starting",
364
+ "failedStartAttempts": 5,
365
+ "identity": "ghcr.io/org/worker",
366
+ "image": "ghcr.io/org/worker:v1",
367
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365",
368
+ "apiKeyId": "00000000-0023-7000-8000-8b4d7d535153"
369
+ }
370
+ ```
371
+
372
+ ```js
373
+ {
374
+ "id": "00000000-008b-7000-8002-2bb5e5bbb9bb",
375
+ "meta": {
376
+ "createdAt": 0,
377
+ "updatedAt": 0
378
+ },
379
+ "status": "starting",
380
+ "failedStartAttempts": 5,
381
+ "identity": "ghcr.io/org/worker",
382
+ "image": "ghcr.io/org/worker:v2",
383
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365",
384
+ "apiKeyId": "00000000-0059-7000-8001-6183b3898789"
385
+ }
386
+ ```
387
+
388
+ ### <a id="trace-27"></a> 27. 🔍 debug
389
+
390
+ `not deleting service account "00000000-0035-7000-8000-d15f8f656365" for worker "00000000-0011-7000-8000-413b6b413f41" in project "test" (has sibling workers)`
391
+
392
+ **Data:**
393
+
394
+ ```js
395
+ {
396
+ "service": "WorkerService",
397
+ "projectId": "test",
398
+ "workerId": "00000000-0011-7000-8000-413b6b413f41",
399
+ "serviceAccountId": "00000000-0035-7000-8000-d15f8f656365",
400
+ "identity": "ghcr.io/org/worker"
401
+ }
402
+ ```
403
+
404
+ ### <a id="trace-28"></a> 28. 💾 write [24](#trace-24), [25](#trace-25)
405
+
406
+ ### <a id="trace-29"></a> 29. ✅ workerManager.stopWorker
407
+
408
+ **Args:**
409
+
410
+ `"test"`
411
+
412
+ `"00000000-0011-7000-8000-413b6b413f41"`
413
+
414
+ ### <a id="trace-30"></a> 30. 🔓 released, locked at [19](#trace-19)
415
+
416
+ **Keys:**
417
+
418
+ `"worker:00000000-0011-7000-8000-413b6b413f41"`
419
+
420
+ ### <a id="trace-31"></a> 31. 💾 write [16](#trace-16)
421
+
422
+ ### <a id="trace-32"></a> 32. 🔓 released, locked at [3](#trace-3)
423
+
424
+ **Keys:**
425
+
426
+ `"worker-image:test:ghcr.io/org/worker:v2"`