@milaboratories/pl-middle-layer 1.10.33 → 1.10.35
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/dist/block_registry/watcher.d.ts +4 -1
- package/dist/block_registry/watcher.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +735 -712
- package/dist/index.mjs.map +1 -1
- package/dist/middle_layer/driver_kit.d.ts +2 -2
- package/dist/middle_layer/driver_kit.d.ts.map +1 -1
- package/dist/middle_layer/middle_layer.d.ts +2 -0
- package/dist/middle_layer/middle_layer.d.ts.map +1 -1
- package/dist/middle_layer/ops.d.ts +3 -1
- package/dist/middle_layer/ops.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/block_registry/watcher.ts +45 -12
- package/src/middle_layer/driver_kit.ts +15 -11
- package/src/middle_layer/middle_layer.ts +6 -3
- package/src/middle_layer/ops.ts +9 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PlClient } from '@milaboratories/pl-client';
|
|
2
2
|
import { DownloadDriver, InternalLsDriver, LogsDriver, UploadDriver } from '@milaboratories/pl-drivers';
|
|
3
|
-
import {
|
|
3
|
+
import { Signer } from '@milaboratories/ts-helpers';
|
|
4
4
|
import { PFrameDriver } from '../pool';
|
|
5
5
|
import { DriverKitOpsConstructor } from './ops';
|
|
6
6
|
import * as Sdk from '@milaboratories/pl-model-common';
|
|
@@ -27,5 +27,5 @@ export interface MiddleLayerDriverKit extends Sdk.DriverKit {
|
|
|
27
27
|
* */
|
|
28
28
|
readonly uploadDriver: UploadDriver;
|
|
29
29
|
}
|
|
30
|
-
export declare function initDriverKit(pl: PlClient,
|
|
30
|
+
export declare function initDriverKit(pl: PlClient, _ops: DriverKitOpsConstructor): Promise<MiddleLayerDriverKit>;
|
|
31
31
|
//# sourceMappingURL=driver_kit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver_kit.d.ts","sourceRoot":"","sources":["../../src/middle_layer/driver_kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"driver_kit.d.ts","sourceRoot":"","sources":["../../src/middle_layer/driver_kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAML,cAAc,EACd,gBAAgB,EAChB,UAAU,EAGV,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAA8B,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAqC,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAEnF;;;;;;KAMK;AACL,MAAM,WAAW,oBAAqB,SAAQ,GAAG,CAAC,SAAS;IAEzD,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IAEpC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAE/B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC;;;SAGK;IACL,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;SAGK;IACL,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACrC;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAyC/B"}
|
|
@@ -11,6 +11,7 @@ import { QuickJSWASMModule } from 'quickjs-emscripten';
|
|
|
11
11
|
import { MiddleLayerDriverKit } from './driver_kit';
|
|
12
12
|
import { DriverKit } from '@platforma-sdk/model';
|
|
13
13
|
import { DownloadUrlDriver } from '@milaboratories/pl-drivers';
|
|
14
|
+
import { V2RegistryProvider } from '../block_registry/registry-v2-provider';
|
|
14
15
|
export interface MiddleLayerEnvironment {
|
|
15
16
|
readonly pl: PlClient;
|
|
16
17
|
readonly signer: Signer;
|
|
@@ -40,6 +41,7 @@ export declare class MiddleLayer {
|
|
|
40
41
|
private readonly projectListResourceId;
|
|
41
42
|
private readonly openedProjectsList;
|
|
42
43
|
private readonly projectListTree;
|
|
44
|
+
readonly blockRegistryProvider: V2RegistryProvider;
|
|
43
45
|
private readonly pl;
|
|
44
46
|
/** Contains a reactive list of projects along with their meta information. */
|
|
45
47
|
readonly projectList: ComputableStableDefined<ProjectListEntry[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middle_layer.d.ts","sourceRoot":"","sources":["../../src/middle_layer/middle_layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,UAAU,EAEX,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAA0C,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAkB,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAyB,cAAc,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAiB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"middle_layer.d.ts","sourceRoot":"","sources":["../../src/middle_layer/middle_layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { TemporalSynchronizedTreeOps } from './types';
|
|
2
2
|
import { DownloadDriverOps, UploadDriverOps, LogsStreamDriverOps } from '@milaboratories/pl-drivers';
|
|
3
|
+
import { MiLogger } from '@milaboratories/ts-helpers';
|
|
3
4
|
/** Options required to initialize full set of middle layer driver kit */
|
|
4
5
|
export type DriverKitOps = {
|
|
6
|
+
readonly logger: MiLogger;
|
|
5
7
|
/**
|
|
6
8
|
* Local secret, that is used to sign and verify different pieces of information
|
|
7
9
|
* that can be used to access local data, like local paths for ongoing uploads.
|
|
@@ -38,7 +40,7 @@ export type DriverKitOps = {
|
|
|
38
40
|
readonly localStorageNameToPath: Record<string, string>;
|
|
39
41
|
};
|
|
40
42
|
/** Some defaults fot MiddleLayerOps. */
|
|
41
|
-
export declare const DefaultDriverKitOps: Pick<DriverKitOps, 'platformLocalStorageNameToPath' | 'blobDriverOps' | 'uploadDriverOps' | 'logStreamDriverOps' | 'localStorageNameToPath'>;
|
|
43
|
+
export declare const DefaultDriverKitOps: Pick<DriverKitOps, 'logger' | 'platformLocalStorageNameToPath' | 'blobDriverOps' | 'uploadDriverOps' | 'logStreamDriverOps' | 'localStorageNameToPath'>;
|
|
42
44
|
/** Fields with default values are marked as optional here. */
|
|
43
45
|
export type DriverKitOpsConstructor = Omit<DriverKitOps, keyof typeof DefaultDriverKitOps> & Partial<typeof DefaultDriverKitOps>;
|
|
44
46
|
/** Configuration controlling different aspects of middle layer behaviour. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/middle_layer/ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/middle_layer/ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAwB,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG5E,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG;IAKzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAM1B;;;;;SAKK;IACL,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAE1C,iDAAiD;IACjD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;;SAIK;IACL,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMhE;;;SAGK;IACL,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAO1C,mDAAmD;IACnD,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAMjD;;;;;SAKK;IACL,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,EAAE,IAAI,CACpC,YAAY,EACV,QAAQ,GACR,gCAAgC,GAChC,eAAe,GACf,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,CAoB3B,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,mBAAmB,CAAC,GACxF,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtC,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG;IAC1C;0CACsC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;IAEzD;4FACwF;IACxF,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAExC;0DACsD;IACtD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEtC,+CAA+C;IAC/C,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAE/C,8CAA8C;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,EAAE,IAAI,CACtC,cAAc,EACZ,MAAM,OAAO,mBAAmB,GAChC,oBAAoB,GACpB,wBAAwB,GACxB,sBAAsB,GACtB,gCAAgC,GAChC,+BAA+B,CAUlC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,OAAO,qBAAqB,CAAC,GAC9F,OAAO,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/pl-middle-layer",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.35",
|
|
4
4
|
"description": "Pl Middle Layer",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"utility-types": "^3.11.0",
|
|
28
28
|
"yaml": "^2.5.1",
|
|
29
29
|
"zod": "^3.23.8",
|
|
30
|
-
"@milaboratories/computable": "^2.1.
|
|
30
|
+
"@milaboratories/computable": "^2.1.9",
|
|
31
31
|
"@milaboratories/resolve-helper": "^1.0.1",
|
|
32
|
-
"@platforma-sdk/block-tools": "^2.3.
|
|
32
|
+
"@platforma-sdk/block-tools": "^2.3.7",
|
|
33
33
|
"@milaboratories/pl-client": "^2.4.17",
|
|
34
|
-
"@milaboratories/pl-drivers": "^1.2.
|
|
34
|
+
"@milaboratories/pl-drivers": "^1.2.26",
|
|
35
35
|
"@milaboratories/pl-model-common": "^1.3.13",
|
|
36
|
-
"@milaboratories/pl-model-middle-layer": "^1.4.
|
|
37
|
-
"@milaboratories/pl-tree": "^1.3.
|
|
36
|
+
"@milaboratories/pl-model-middle-layer": "^1.4.3",
|
|
37
|
+
"@milaboratories/pl-tree": "^1.3.15",
|
|
38
38
|
"@platforma-sdk/model": "^1.2.29",
|
|
39
39
|
"@milaboratories/ts-helpers": "^1.0.28",
|
|
40
40
|
"@platforma-sdk/workflow-tengo": "1.2.10"
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { PollComputablePool, PollPoolOps } from '@milaboratories/computable';
|
|
2
|
-
import { BlockPackSpec } from '@milaboratories/pl-model-middle-layer';
|
|
2
|
+
import { blockPackIdEquals, BlockPackSpec } from '@milaboratories/pl-model-middle-layer';
|
|
3
3
|
import { Dispatcher } from 'undici';
|
|
4
4
|
import { getDevV1PacketMtime, getDevV2PacketMtime } from './registry';
|
|
5
|
-
import { tryLoadPackDescription } from '@platforma-sdk/block-tools';
|
|
5
|
+
import { RegistryV2Reader, tryLoadPackDescription } from '@platforma-sdk/block-tools';
|
|
6
|
+
import { MiLogger } from '@milaboratories/ts-helpers';
|
|
7
|
+
import { V2RegistryProvider } from './registry-v2-provider';
|
|
6
8
|
|
|
7
9
|
export const DefaultBlockUpdateWatcherOps: PollPoolOps = {
|
|
8
10
|
minDelay: 1500
|
|
@@ -18,8 +20,12 @@ export class BlockUpdateWatcher extends PollComputablePool<
|
|
|
18
20
|
> {
|
|
19
21
|
private readonly http?: Dispatcher;
|
|
20
22
|
|
|
21
|
-
constructor(
|
|
22
|
-
|
|
23
|
+
constructor(
|
|
24
|
+
private readonly registryProvider: V2RegistryProvider,
|
|
25
|
+
logger: MiLogger,
|
|
26
|
+
ops: BlockUpdateWatcherOps = {}
|
|
27
|
+
) {
|
|
28
|
+
super({ ...ops, ...DefaultBlockUpdateWatcherOps }, logger);
|
|
23
29
|
this.http = ops.http;
|
|
24
30
|
}
|
|
25
31
|
|
|
@@ -29,6 +35,8 @@ export class BlockUpdateWatcher extends PollComputablePool<
|
|
|
29
35
|
return `dev_1_${req.folder}_${req.mtime}`;
|
|
30
36
|
case 'dev-v2':
|
|
31
37
|
return `dev_2_${req.folder}_${req.mtime}`;
|
|
38
|
+
case 'from-registry-v2':
|
|
39
|
+
return `from_registry_v2_${req.registryUrl}_${req.id.organization}_${req.id.name}`;
|
|
32
40
|
default:
|
|
33
41
|
return NoUpdatesKey;
|
|
34
42
|
}
|
|
@@ -38,17 +46,42 @@ export class BlockUpdateWatcher extends PollComputablePool<
|
|
|
38
46
|
try {
|
|
39
47
|
switch (req.type) {
|
|
40
48
|
case 'dev-v1': {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
try {
|
|
50
|
+
const mtime = await getDevV1PacketMtime(req.folder);
|
|
51
|
+
if (mtime === req.mtime) return undefined;
|
|
52
|
+
else return { ...req, mtime };
|
|
53
|
+
} catch (err: unknown) {
|
|
54
|
+
this.logger.warn(err);
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
44
57
|
}
|
|
58
|
+
|
|
45
59
|
case 'dev-v2': {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
60
|
+
try {
|
|
61
|
+
const description = await tryLoadPackDescription(req.folder);
|
|
62
|
+
if (description === undefined) return undefined;
|
|
63
|
+
const mtime = await getDevV2PacketMtime(description);
|
|
64
|
+
if (mtime === req.mtime) return undefined;
|
|
65
|
+
else return { ...req, mtime: mtime };
|
|
66
|
+
} catch (err: unknown) {
|
|
67
|
+
this.logger.warn(err);
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
case 'from-registry-v2': {
|
|
73
|
+
try {
|
|
74
|
+
const registry = this.registryProvider.getRegistry(req.registryUrl);
|
|
75
|
+
const spec = (await registry.getOverviewForSpec(req.id))?.spec;
|
|
76
|
+
if (spec?.type !== 'from-registry-v2') throw new Error('Unexpected');
|
|
77
|
+
if (blockPackIdEquals(spec.id, req.id)) return undefined;
|
|
78
|
+
return spec;
|
|
79
|
+
} catch (err: unknown) {
|
|
80
|
+
this.logger.warn(err);
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
51
83
|
}
|
|
84
|
+
|
|
52
85
|
default:
|
|
53
86
|
return undefined;
|
|
54
87
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { PlClient } from '@milaboratories/pl-client';
|
|
2
2
|
import {
|
|
3
|
-
createDownloadClient,
|
|
3
|
+
createDownloadClient,
|
|
4
|
+
createLogsClient,
|
|
5
|
+
createLsFilesClient,
|
|
6
|
+
createUploadBlobClient,
|
|
7
|
+
createUploadProgressClient,
|
|
8
|
+
DownloadDriver,
|
|
4
9
|
InternalLsDriver,
|
|
5
10
|
LogsDriver,
|
|
6
11
|
LogsStreamDriver,
|
|
@@ -45,22 +50,21 @@ export interface MiddleLayerDriverKit extends Sdk.DriverKit {
|
|
|
45
50
|
|
|
46
51
|
export async function initDriverKit(
|
|
47
52
|
pl: PlClient,
|
|
48
|
-
logger: MiLogger,
|
|
49
53
|
_ops: DriverKitOpsConstructor
|
|
50
54
|
): Promise<MiddleLayerDriverKit> {
|
|
51
55
|
const ops: DriverKitOps = { ...DefaultDriverKitOps, ..._ops };
|
|
52
|
-
checkStorageNamesDoNotIntersect(logger, ops);
|
|
56
|
+
checkStorageNamesDoNotIntersect(ops.logger, ops);
|
|
53
57
|
|
|
54
58
|
const signer = new HmacSha256Signer(ops.localSecret);
|
|
55
59
|
|
|
56
|
-
const downloadClient = createDownloadClient(logger, pl, ops.platformLocalStorageNameToPath);
|
|
57
|
-
const logsClient = createLogsClient(pl, logger);
|
|
58
|
-
const uploadBlobClient = createUploadBlobClient(pl, logger);
|
|
59
|
-
const uploadProgressClient = createUploadProgressClient(pl, logger);
|
|
60
|
-
const lsClient = createLsFilesClient(pl, logger);
|
|
60
|
+
const downloadClient = createDownloadClient(ops.logger, pl, ops.platformLocalStorageNameToPath);
|
|
61
|
+
const logsClient = createLogsClient(pl, ops.logger);
|
|
62
|
+
const uploadBlobClient = createUploadBlobClient(pl, ops.logger);
|
|
63
|
+
const uploadProgressClient = createUploadProgressClient(pl, ops.logger);
|
|
64
|
+
const lsClient = createLsFilesClient(pl, ops.logger);
|
|
61
65
|
|
|
62
66
|
const blobDriver = new DownloadDriver(
|
|
63
|
-
logger,
|
|
67
|
+
ops.logger,
|
|
64
68
|
downloadClient,
|
|
65
69
|
logsClient,
|
|
66
70
|
ops.blobDownloadPath,
|
|
@@ -68,7 +72,7 @@ export async function initDriverKit(
|
|
|
68
72
|
ops.blobDriverOps
|
|
69
73
|
);
|
|
70
74
|
const uploadDriver = new UploadDriver(
|
|
71
|
-
logger,
|
|
75
|
+
ops.logger,
|
|
72
76
|
signer,
|
|
73
77
|
uploadBlobClient,
|
|
74
78
|
uploadProgressClient,
|
|
@@ -76,7 +80,7 @@ export async function initDriverKit(
|
|
|
76
80
|
);
|
|
77
81
|
const logsStreamDriver = new LogsStreamDriver(logsClient, ops.logStreamDriverOps);
|
|
78
82
|
const logDriver = new LogsDriver(logsStreamDriver, blobDriver);
|
|
79
|
-
const lsDriver = new LsDriver(logger, lsClient, pl, signer, ops.localStorageNameToPath);
|
|
83
|
+
const lsDriver = new LsDriver(ops.logger, lsClient, pl, signer, ops.localStorageNameToPath);
|
|
80
84
|
|
|
81
85
|
const pFrameDriver = new PFrameDriver(blobDriver);
|
|
82
86
|
|
|
@@ -60,6 +60,7 @@ export class MiddleLayer {
|
|
|
60
60
|
private readonly projectListResourceId: ResourceId,
|
|
61
61
|
private readonly openedProjectsList: WatchableValue<ResourceId[]>,
|
|
62
62
|
private readonly projectListTree: SynchronizedTreeState,
|
|
63
|
+
public readonly blockRegistryProvider: V2RegistryProvider,
|
|
63
64
|
projectList: ComputableStableDefined<ProjectListEntry[]>
|
|
64
65
|
) {
|
|
65
66
|
this.projectList = projectList;
|
|
@@ -195,10 +196,11 @@ export class MiddleLayer {
|
|
|
195
196
|
}
|
|
196
197
|
});
|
|
197
198
|
|
|
198
|
-
const logger =
|
|
199
|
+
const logger = ops.logger;
|
|
199
200
|
|
|
200
|
-
const driverKit = await initDriverKit(pl,
|
|
201
|
+
const driverKit = await initDriverKit(pl, ops);
|
|
201
202
|
|
|
203
|
+
// passed to components having no own retry logic
|
|
202
204
|
const retryHttpDispatcher = new RetryAgent(pl.httpDispatcher, {
|
|
203
205
|
minTimeout: 250,
|
|
204
206
|
maxRetries: 4
|
|
@@ -225,7 +227,7 @@ export class MiddleLayer {
|
|
|
225
227
|
bpPreparer,
|
|
226
228
|
frontendDownloadDriver,
|
|
227
229
|
driverKit,
|
|
228
|
-
blockUpdateWatcher: new BlockUpdateWatcher({
|
|
230
|
+
blockUpdateWatcher: new BlockUpdateWatcher(v2RegistryProvider, logger, {
|
|
229
231
|
minDelay: ops.devBlockUpdateRecheckInterval,
|
|
230
232
|
http: retryHttpDispatcher
|
|
231
233
|
}),
|
|
@@ -242,6 +244,7 @@ export class MiddleLayer {
|
|
|
242
244
|
projects,
|
|
243
245
|
openedProjects,
|
|
244
246
|
projectListTC.tree,
|
|
247
|
+
v2RegistryProvider,
|
|
245
248
|
projectListTC.computable
|
|
246
249
|
);
|
|
247
250
|
}
|
package/src/middle_layer/ops.ts
CHANGED
|
@@ -2,10 +2,17 @@ import { TemporalSynchronizedTreeOps } from './types';
|
|
|
2
2
|
import { DownloadDriverOps } from '@milaboratories/pl-drivers';
|
|
3
3
|
import { UploadDriverOps } from '@milaboratories/pl-drivers';
|
|
4
4
|
import { LogsStreamDriverOps } from '@milaboratories/pl-drivers';
|
|
5
|
+
import { ConsoleLoggerAdapter, MiLogger } from '@milaboratories/ts-helpers';
|
|
5
6
|
import * as os from 'node:os';
|
|
6
7
|
|
|
7
8
|
/** Options required to initialize full set of middle layer driver kit */
|
|
8
9
|
export type DriverKitOps = {
|
|
10
|
+
//
|
|
11
|
+
// Common
|
|
12
|
+
//
|
|
13
|
+
|
|
14
|
+
readonly logger: MiLogger;
|
|
15
|
+
|
|
9
16
|
//
|
|
10
17
|
// Signer
|
|
11
18
|
//
|
|
@@ -72,12 +79,14 @@ export type DriverKitOps = {
|
|
|
72
79
|
/** Some defaults fot MiddleLayerOps. */
|
|
73
80
|
export const DefaultDriverKitOps: Pick<
|
|
74
81
|
DriverKitOps,
|
|
82
|
+
| 'logger'
|
|
75
83
|
| 'platformLocalStorageNameToPath'
|
|
76
84
|
| 'blobDriverOps'
|
|
77
85
|
| 'uploadDriverOps'
|
|
78
86
|
| 'logStreamDriverOps'
|
|
79
87
|
| 'localStorageNameToPath'
|
|
80
88
|
> = {
|
|
89
|
+
logger: new ConsoleLoggerAdapter(),
|
|
81
90
|
platformLocalStorageNameToPath: {},
|
|
82
91
|
localStorageNameToPath: { local: os.homedir() },
|
|
83
92
|
blobDriverOps: {
|