@toa.io/extensions.configuration 1.0.0-alpha.276 → 1.0.0-alpha.277
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/CHANGELOG.md +7 -0
- package/components/configuration.values/operations/create.js +4 -31
- package/components/configuration.values/operations/create.js.map +1 -1
- package/components/configuration.values/operations/fetch.d.ts +1 -1
- package/components/configuration.values/operations/fetch.js +3 -7
- package/components/configuration.values/operations/fetch.js.map +1 -1
- package/components/configuration.values/operations/get.d.ts +1 -1
- package/components/configuration.values/operations/get.js +5 -9
- package/components/configuration.values/operations/get.js.map +1 -1
- package/components/configuration.values/operations/lib/map.js +4 -9
- package/components/configuration.values/operations/lib/map.js.map +1 -1
- package/components/configuration.values/operations/lib/map.test.js +14 -14
- package/components/configuration.values/operations/lib/map.test.js.map +1 -1
- package/components/configuration.values/operations/lib/resolve.js +3 -7
- package/components/configuration.values/operations/lib/resolve.js.map +1 -1
- package/components/configuration.values/operations/list.d.ts +1 -1
- package/components/configuration.values/operations/list.js +6 -10
- package/components/configuration.values/operations/list.js.map +1 -1
- package/components/configuration.values/source/create.ts +1 -1
- package/components/configuration.values/source/fetch.ts +1 -1
- package/components/configuration.values/source/get.ts +2 -2
- package/components/configuration.values/source/lib/map.test.ts +10 -7
- package/components/configuration.values/source/lib/resolve.ts +1 -1
- package/components/configuration.values/source/list.ts +2 -2
- package/components/configuration.values/tsconfig.json +1 -0
- package/components/configuration.values/tsconfig.tsbuildinfo +1 -0
- package/cucumber.mjs +5 -0
- package/features/steps/UI.ts +7 -4
- package/package.json +8 -14
- package/source/Aspect.test.ts +27 -23
- package/source/Aspect.ts +4 -4
- package/source/Client.test.ts +24 -20
- package/source/Client.ts +2 -2
- package/source/Composition.ts +4 -4
- package/source/Factory.ts +5 -5
- package/source/Secret.test.ts +14 -11
- package/source/UI.ts +2 -2
- package/source/configuration.test.ts +21 -18
- package/source/configuration.ts +3 -3
- package/source/deployment.test.ts +20 -19
- package/source/deployment.ts +7 -6
- package/source/epoch.test.ts +8 -5
- package/source/index.ts +4 -4
- package/source/manifest.test.ts +8 -5
- package/source/manifest.ts +2 -2
- package/source/schemas.ts +1 -1
- package/transpiled/Aspect.d.ts +2 -2
- package/transpiled/Aspect.js +12 -16
- package/transpiled/Aspect.js.map +1 -1
- package/transpiled/Aspect.test.js +30 -29
- package/transpiled/Aspect.test.js.map +1 -1
- package/transpiled/Client.d.ts +1 -1
- package/transpiled/Client.js +10 -14
- package/transpiled/Client.js.map +1 -1
- package/transpiled/Client.test.js +28 -27
- package/transpiled/Client.test.js.map +1 -1
- package/transpiled/Composition.d.ts +1 -1
- package/transpiled/Composition.js +11 -16
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Factory.d.ts +1 -1
- package/transpiled/Factory.js +9 -13
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Secret.d.ts +0 -1
- package/transpiled/Secret.js +7 -11
- package/transpiled/Secret.js.map +1 -1
- package/transpiled/Secret.test.js +15 -15
- package/transpiled/Secret.test.js.map +1 -1
- package/transpiled/UI.js +14 -41
- package/transpiled/UI.js.map +1 -1
- package/transpiled/configuration.d.ts +1 -1
- package/transpiled/configuration.js +13 -42
- package/transpiled/configuration.js.map +1 -1
- package/transpiled/configuration.test.js +25 -25
- package/transpiled/configuration.test.js.map +1 -1
- package/transpiled/const.js +7 -10
- package/transpiled/const.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +19 -49
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/deployment.test.js +29 -31
- package/transpiled/deployment.test.js.map +1 -1
- package/transpiled/epoch.js +3 -7
- package/transpiled/epoch.js.map +1 -1
- package/transpiled/epoch.test.js +7 -7
- package/transpiled/epoch.test.js.map +1 -1
- package/transpiled/index.d.ts +4 -4
- package/transpiled/index.js +4 -12
- package/transpiled/index.js.map +1 -1
- package/transpiled/manifest.d.ts +1 -1
- package/transpiled/manifest.js +2 -29
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/manifest.test.js +9 -9
- package/transpiled/manifest.test.js.map +1 -1
- package/transpiled/schemas.js +5 -31
- package/transpiled/schemas.js.map +1 -1
- package/tsconfig.json +2 -1
- package/tsconfig.tsbuildinfo +1 -0
- package/ui/dist/_app/immutable/chunks/{Cov6-56A.js → BmgElDKV.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{MOpxGoVO.js → D8FpNdzZ.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{Chb3af1a.js → DqEfc78C.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{CDKtbN4n.js → SDlqkjtd.js} +2 -2
- package/ui/dist/_app/immutable/chunks/{E7oj41Za.js → XCuD79lA.js} +1 -1
- package/ui/dist/_app/immutable/entry/{app.B9v2AwU_.js → app.DviKj8uz.js} +2 -2
- package/ui/dist/_app/immutable/entry/start.B5sHlPUn.js +1 -0
- package/ui/dist/_app/immutable/nodes/{0.DKSa6mGa.js → 0.BEypu1s7.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{1.Cnu_jAWf.js → 1.Dy5V5EUo.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{2.Dg1zeC2b.js → 2.DCbpDeYM.js} +1 -1
- package/ui/dist/_app/immutable/nodes/3.10zn4N8f.js +1 -0
- package/ui/dist/_app/immutable/nodes/{4.1bG6DC_9.js → 4.DkEiu1vL.js} +1 -1
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +10 -10
- package/components/configuration.values/operations/tsconfig.tsbuildinfo +0 -1
- package/cucumber.js +0 -8
- package/transpiled/tsconfig.tsbuildinfo +0 -1
- package/ui/dist/_app/immutable/entry/start.B97KALv1.js +0 -1
- package/ui/dist/_app/immutable/nodes/3.QCbZIibO.js +0 -1
package/transpiled/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../source/Client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../source/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { it, beforeEach, afterEach, mock } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
4
|
+
import { Connector } from '@toa.io/core';
|
|
5
|
+
import { timeout } from '@toa.io/generic';
|
|
6
|
+
import { Client } from './Client.js';
|
|
7
|
+
import { EVENT } from './const.js';
|
|
8
|
+
class Remote extends Connector {
|
|
9
|
+
invoke = mock.fn(async (_endpoint, request) => request.input.map((pair) => ({
|
|
9
10
|
...pair,
|
|
10
11
|
configuration: this.values[pair.component] ?? null,
|
|
11
12
|
created: this.values[pair.component] === undefined ? 0 : 7
|
|
@@ -20,17 +21,17 @@ beforeEach(() => {
|
|
|
20
21
|
remote = new Remote();
|
|
21
22
|
receiver = null;
|
|
22
23
|
boot = {
|
|
23
|
-
remote:
|
|
24
|
-
|
|
24
|
+
remote: mock.fn(async (locator) => {
|
|
25
|
+
assert.deepStrictEqual(locator.id, 'configuration.values');
|
|
25
26
|
return remote;
|
|
26
27
|
}),
|
|
27
|
-
receive:
|
|
28
|
-
|
|
28
|
+
receive: mock.fn(async (label, consumer) => {
|
|
29
|
+
assert.deepStrictEqual(label, EVENT);
|
|
29
30
|
receiver = consumer;
|
|
30
|
-
return new
|
|
31
|
+
return new Connector();
|
|
31
32
|
})
|
|
32
33
|
};
|
|
33
|
-
client = new
|
|
34
|
+
client = new Client(boot, { base: 10, max: 20, warn: 2 });
|
|
34
35
|
});
|
|
35
36
|
afterEach(async () => {
|
|
36
37
|
await client.disconnect();
|
|
@@ -39,10 +40,10 @@ it('should send the requests of one tick as one call', async () => {
|
|
|
39
40
|
remote.values = { 'a.one': { foo: 1 }, 'a.two': { foo: 2 } };
|
|
40
41
|
await client.connect();
|
|
41
42
|
const [one, two] = await Promise.all([client.fetch('a.one', 'e1'), client.fetch('a.two', 'e2')]);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
assert.deepStrictEqual(one, { configuration: { foo: 1 }, created: 7 });
|
|
44
|
+
assert.deepStrictEqual(two, { configuration: { foo: 2 }, created: 7 });
|
|
45
|
+
assert.strictEqual(remote.invoke.mock.callCount(), 1);
|
|
46
|
+
assert.deepStrictEqual(remote.invoke.mock.calls[0].arguments[1], {
|
|
46
47
|
input: [{ component: 'a.one', epoch: 'e1' }, { component: 'a.two', epoch: 'e2' }]
|
|
47
48
|
});
|
|
48
49
|
});
|
|
@@ -51,27 +52,27 @@ it('should keep asking until served', async () => {
|
|
|
51
52
|
const fetching = client.fetch('a.one', 'e1');
|
|
52
53
|
const deadline = Date.now() + 1000;
|
|
53
54
|
while (remote.invoke.mock.calls.length < 2 && Date.now() < deadline)
|
|
54
|
-
await
|
|
55
|
-
|
|
55
|
+
await timeout(5);
|
|
56
|
+
assert.ok(remote.invoke.mock.calls.length >= 2);
|
|
56
57
|
remote.values = { 'a.one': { foo: 1 } };
|
|
57
|
-
|
|
58
|
+
assert.deepStrictEqual((await fetching).configuration, { foo: 1 });
|
|
58
59
|
});
|
|
59
60
|
it('should hand a created object to its subscribers', async () => {
|
|
60
61
|
await client.connect();
|
|
61
|
-
const listener =
|
|
62
|
-
const other =
|
|
62
|
+
const listener = mock.fn();
|
|
63
|
+
const other = mock.fn();
|
|
63
64
|
client.subscribe('a.one', 'e1', listener);
|
|
64
65
|
client.subscribe('a.one', 'e0', other);
|
|
65
66
|
await receiver.receive({
|
|
66
67
|
payload: { component: 'a.one', epoch: 'e1', configuration: { foo: 2 }, _created: 12 }
|
|
67
68
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
assert.ok(listener.mock.calls.some((call) => call.arguments.length === 1 && isDeepStrictEqual(call.arguments[0], { configuration: { foo: 2 }, created: 12 })));
|
|
70
|
+
assert.strictEqual(other.mock.callCount(), 0);
|
|
71
|
+
assert.strictEqual(remote.invoke.mock.callCount(), 0);
|
|
71
72
|
client.unsubscribe('a.one', 'e1', listener);
|
|
72
73
|
await receiver.receive({
|
|
73
74
|
payload: { component: 'a.one', epoch: 'e1', configuration: { foo: 3 }, _created: 13 }
|
|
74
75
|
});
|
|
75
|
-
|
|
76
|
+
assert.strictEqual(listener.mock.callCount(), 1);
|
|
76
77
|
});
|
|
77
78
|
//# sourceMappingURL=Client.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.test.js","sourceRoot":"","sources":["../source/Client.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Client.test.js","sourceRoot":"","sources":["../source/Client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connector } from '@toa.io/core';
|
|
2
|
-
import type { Bootloader } from './Factory';
|
|
2
|
+
import type { Bootloader } from './Factory.js';
|
|
3
3
|
/** Hosts the values component in the service process. */
|
|
4
4
|
export declare class Composition extends Connector {
|
|
5
5
|
private readonly boot;
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const core_1 = require("@toa.io/core");
|
|
7
|
-
const const_1 = require("./const");
|
|
8
|
-
const UI_1 = require("./UI");
|
|
1
|
+
import { readdirSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { Connector } from '@toa.io/core';
|
|
4
|
+
import { UI_PORT } from './const.js';
|
|
5
|
+
import { UI } from './UI.js';
|
|
9
6
|
/** Hosts the values component in the service process. */
|
|
10
|
-
class Composition extends
|
|
7
|
+
export class Composition extends Connector {
|
|
11
8
|
boot;
|
|
12
9
|
constructor(boot) {
|
|
13
10
|
super();
|
|
@@ -19,25 +16,23 @@ class Composition extends core_1.Connector {
|
|
|
19
16
|
this.depends(composition);
|
|
20
17
|
// connected here rather than declared as a dependency: dependencies are connected
|
|
21
18
|
// before `open` runs, so one added from inside it would never be
|
|
22
|
-
const ui = new
|
|
19
|
+
const ui = new UI(UI_PORT);
|
|
23
20
|
await ui.connect();
|
|
24
21
|
this.depends(ui);
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
|
-
|
|
28
|
-
function components() {
|
|
24
|
+
export function components() {
|
|
29
25
|
const labels = [];
|
|
30
26
|
const paths = [];
|
|
31
27
|
for (const entry of entries()) {
|
|
32
28
|
labels.push(entry.name.replace('.', '-'));
|
|
33
|
-
paths.push(
|
|
29
|
+
paths.push(resolve(ROOT, entry.name));
|
|
34
30
|
}
|
|
35
31
|
return { labels, paths };
|
|
36
32
|
}
|
|
37
|
-
exports.components = components;
|
|
38
33
|
function entries() {
|
|
39
|
-
const entries =
|
|
34
|
+
const entries = readdirSync(ROOT, { withFileTypes: true });
|
|
40
35
|
return entries.filter((entry) => entry.isDirectory());
|
|
41
36
|
}
|
|
42
|
-
const ROOT = (
|
|
37
|
+
const ROOT = resolve(import.meta.dirname, '../components/');
|
|
43
38
|
//# sourceMappingURL=Composition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composition.js","sourceRoot":"","sources":["../source/Composition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Composition.js","sourceRoot":"","sources":["../source/Composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAG5B,yDAAyD;AACzD,MAAM,OAAO,WAAY,SAAQ,SAAS;IACvB,IAAI,CAAY;IAEjC,YAAoB,IAAgB;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAA;QAEnE,MAAM,WAAW,CAAC,OAAO,EAAE,CAAA;QAE3B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAEzB,kFAAkF;QAClF,iEAAiE;QACjE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,CAAA;QAE1B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;QAElB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC;CACF;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED,SAAS,OAAO;IACd,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;AACvD,CAAC;AAOD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA"}
|
package/transpiled/Factory.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Connector, type Locator, type extensions } from '@toa.io/core';
|
|
2
|
-
import type { Manifest } from './manifest';
|
|
2
|
+
import type { Manifest } from './manifest.js';
|
|
3
3
|
export declare class Factory implements extensions.Factory {
|
|
4
4
|
private readonly boot;
|
|
5
5
|
private client;
|
package/transpiled/Factory.js
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const Composition_1 = require("./Composition");
|
|
7
|
-
const configuration_1 = require("./configuration");
|
|
8
|
-
class Factory {
|
|
1
|
+
import { Aspect } from './Aspect.js';
|
|
2
|
+
import { Client } from './Client.js';
|
|
3
|
+
import { Composition } from './Composition.js';
|
|
4
|
+
import { overridden } from './configuration.js';
|
|
5
|
+
export class Factory {
|
|
9
6
|
boot;
|
|
10
7
|
client = null;
|
|
11
8
|
constructor(boot) {
|
|
12
9
|
this.boot = boot;
|
|
13
10
|
}
|
|
14
11
|
aspect(locator, manifest) {
|
|
15
|
-
const client =
|
|
16
|
-
return new
|
|
12
|
+
const client = overridden(locator) ? null : this.shared();
|
|
13
|
+
return new Aspect(locator, manifest, client);
|
|
17
14
|
}
|
|
18
15
|
service() {
|
|
19
|
-
return new
|
|
16
|
+
return new Composition(this.boot);
|
|
20
17
|
}
|
|
21
18
|
shared() {
|
|
22
19
|
if (this.client === null || this.client.disposed)
|
|
23
|
-
this.client = new
|
|
20
|
+
this.client = new Client(this.boot);
|
|
24
21
|
return this.client;
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
|
-
exports.Factory = Factory;
|
|
28
24
|
//# sourceMappingURL=Factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Factory.js","sourceRoot":"","sources":["../source/Factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Factory.js","sourceRoot":"","sources":["../source/Factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,MAAM,OAAO,OAAO;IACD,IAAI,CAAY;IACzB,MAAM,GAAkB,IAAI,CAAA;IAEpC,YAAoB,IAAgB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,MAAM,CAAE,OAAgB,EAAE,QAAkB;QACjD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;QAEzD,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAEO,MAAM;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErC,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF"}
|
package/transpiled/Secret.d.ts
CHANGED
package/transpiled/Secret.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REDACTED = exports.Secret = void 0;
|
|
4
|
-
const node_util_1 = require("node:util");
|
|
1
|
+
import { inspect } from 'node:util';
|
|
5
2
|
/** A configuration value that must not leak: a string only to whoever asks for it. */
|
|
6
|
-
class Secret {
|
|
3
|
+
export class Secret {
|
|
7
4
|
#value;
|
|
8
5
|
constructor(value) {
|
|
9
6
|
this.#value = value;
|
|
@@ -12,15 +9,14 @@ class Secret {
|
|
|
12
9
|
return this.#value;
|
|
13
10
|
}
|
|
14
11
|
toString() {
|
|
15
|
-
return
|
|
12
|
+
return REDACTED;
|
|
16
13
|
}
|
|
17
14
|
toJSON() {
|
|
18
|
-
return
|
|
15
|
+
return REDACTED;
|
|
19
16
|
}
|
|
20
|
-
[
|
|
21
|
-
return
|
|
17
|
+
[inspect.custom]() {
|
|
18
|
+
return REDACTED;
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
|
-
|
|
25
|
-
exports.REDACTED = '<REDACTED>';
|
|
21
|
+
export const REDACTED = '<REDACTED>';
|
|
26
22
|
//# sourceMappingURL=Secret.js.map
|
package/transpiled/Secret.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secret.js","sourceRoot":"","sources":["../source/Secret.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Secret.js","sourceRoot":"","sources":["../source/Secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,sFAAsF;AACtF,MAAM,OAAO,MAAM;IACR,MAAM,CAAQ;IAEvB,YAAoB,KAAa;QAC/B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,QAAQ;QACb,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,MAAM;QACX,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,CAAC,OAAO,CAAC,MAAM,CAAC;QACrB,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAA"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const secret = new
|
|
1
|
+
import { it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { inspect } from 'node:util';
|
|
4
|
+
import { REDACTED, Secret } from './Secret.js';
|
|
5
|
+
const secret = new Secret('s3cret');
|
|
6
6
|
it('should unwrap', () => {
|
|
7
|
-
|
|
7
|
+
assert.deepStrictEqual(secret.unwrap(), 's3cret');
|
|
8
8
|
});
|
|
9
9
|
it('should not show as a string', () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
assert.deepStrictEqual(String(secret), REDACTED);
|
|
11
|
+
assert.deepStrictEqual(`${secret}`, REDACTED);
|
|
12
|
+
assert.deepStrictEqual('' + secret, REDACTED);
|
|
13
13
|
});
|
|
14
14
|
it('should not show in JSON', () => {
|
|
15
|
-
|
|
15
|
+
assert.deepStrictEqual(JSON.stringify({ key: secret }), '{"key":"<REDACTED>"}');
|
|
16
16
|
});
|
|
17
17
|
it('should not show when inspected', () => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
assert.deepStrictEqual(inspect(secret), REDACTED);
|
|
19
|
+
assert.ok(inspect({ key: secret }).includes(REDACTED));
|
|
20
|
+
assert.ok(!(inspect({ key: secret }).includes('s3cret')));
|
|
21
21
|
});
|
|
22
22
|
it('should not expose the value as a property', () => {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
assert.deepStrictEqual(Object.keys(secret), []);
|
|
24
|
+
assert.deepStrictEqual({ ...secret }, {});
|
|
25
25
|
});
|
|
26
26
|
//# sourceMappingURL=Secret.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secret.test.js","sourceRoot":"","sources":["../source/Secret.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Secret.test.js","sourceRoot":"","sources":["../source/Secret.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AAC9B,OAAO,MAAM,MAAM,oBAAoB,CAAA;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEnC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;IACvB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAA;AACnD,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;IAChD,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACjC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAA;AACjF,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACnD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/C,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA"}
|
package/transpiled/UI.js
CHANGED
|
@@ -1,35 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.UI = void 0;
|
|
27
|
-
const fs = __importStar(require("node:fs"));
|
|
28
|
-
const http = __importStar(require("node:http"));
|
|
29
|
-
const path = __importStar(require("node:path"));
|
|
30
|
-
const core_1 = require("@toa.io/core");
|
|
31
|
-
const openspan_1 = require("openspan");
|
|
32
|
-
const const_1 = require("./const");
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as http from 'node:http';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { Connector } from '@toa.io/core';
|
|
5
|
+
import { console } from 'openspan';
|
|
6
|
+
import { UI_PATH } from './const.js';
|
|
33
7
|
/**
|
|
34
8
|
* Serves the configuration UI: the directory `ui` builds, and nothing else.
|
|
35
9
|
*
|
|
@@ -37,7 +11,7 @@ const const_1 = require("./const");
|
|
|
37
11
|
* so this server routes relative to `UI_PATH` — which is also what the ingress
|
|
38
12
|
* forwards. `/configuration/*` is left alone: that is the component's own API.
|
|
39
13
|
*/
|
|
40
|
-
class UI extends
|
|
14
|
+
export class UI extends Connector {
|
|
41
15
|
server = http.createServer();
|
|
42
16
|
port;
|
|
43
17
|
root;
|
|
@@ -68,8 +42,8 @@ class UI extends core_1.Connector {
|
|
|
68
42
|
this.server.listen(this.port);
|
|
69
43
|
});
|
|
70
44
|
if (!isFile(path.join(this.root, 'index.html')))
|
|
71
|
-
|
|
72
|
-
|
|
45
|
+
console.warn('Configuration UI is not built', { root: this.root });
|
|
46
|
+
console.info('Configuration UI started', { port: this.port, path: UI_PATH + '/' });
|
|
73
47
|
}
|
|
74
48
|
async close() {
|
|
75
49
|
const closed = new Promise((resolve) => this.server.once('close', () => {
|
|
@@ -81,7 +55,7 @@ class UI extends core_1.Connector {
|
|
|
81
55
|
}
|
|
82
56
|
listen(request, response) {
|
|
83
57
|
void this.respond(request, response).catch((error) => {
|
|
84
|
-
|
|
58
|
+
console.error('Configuration UI failure', { message: error.message });
|
|
85
59
|
if (!response.writableEnded)
|
|
86
60
|
response.writeHead(500).end();
|
|
87
61
|
});
|
|
@@ -98,7 +72,7 @@ class UI extends core_1.Connector {
|
|
|
98
72
|
}
|
|
99
73
|
// the port is the explorer's alone, so the root is the way in
|
|
100
74
|
if (pathname === '/') {
|
|
101
|
-
response.writeHead(302, { location:
|
|
75
|
+
response.writeHead(302, { location: UI_PATH + '/' }).end();
|
|
102
76
|
return;
|
|
103
77
|
}
|
|
104
78
|
const file = this.resolve(pathname);
|
|
@@ -113,9 +87,9 @@ class UI extends core_1.Connector {
|
|
|
113
87
|
* because the client router — not this server — knows what routes there are.
|
|
114
88
|
*/
|
|
115
89
|
resolve(pathname) {
|
|
116
|
-
if (!pathname.startsWith(
|
|
90
|
+
if (!pathname.startsWith(UI_PATH))
|
|
117
91
|
return null;
|
|
118
|
-
const relative = pathname.slice(
|
|
92
|
+
const relative = pathname.slice(UI_PATH.length);
|
|
119
93
|
if (relative !== '' && !relative.startsWith('/'))
|
|
120
94
|
return null;
|
|
121
95
|
const file = path.join(this.root, relative);
|
|
@@ -150,7 +124,6 @@ class UI extends core_1.Connector {
|
|
|
150
124
|
fs.createReadStream(file).pipe(response);
|
|
151
125
|
}
|
|
152
126
|
}
|
|
153
|
-
exports.UI = UI;
|
|
154
127
|
function decode(url) {
|
|
155
128
|
try {
|
|
156
129
|
return decodeURIComponent(url.split('?')[0]);
|
|
@@ -163,7 +136,7 @@ function isFile(file) {
|
|
|
163
136
|
return fs.existsSync(file) && fs.statSync(file).isFile();
|
|
164
137
|
}
|
|
165
138
|
/** Where `npm run build:ui` puts the page, from both `source` and `transpiled`. */
|
|
166
|
-
const SITE = path.resolve(
|
|
139
|
+
const SITE = path.resolve(import.meta.dirname, '..', 'ui', 'dist');
|
|
167
140
|
/** Assets under this prefix carry their build hash in the name. */
|
|
168
141
|
const IMMUTABLE = path.join('_app', 'immutable');
|
|
169
142
|
const FOREVER = 'public, max-age=31536000, immutable';
|
package/transpiled/UI.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UI.js","sourceRoot":"","sources":["../source/UI.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UI.js","sourceRoot":"","sources":["../source/UI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Locator } from '@toa.io/core';
|
|
2
|
-
import type { Manifest } from './manifest';
|
|
2
|
+
import type { Manifest } from './manifest.js';
|
|
3
3
|
/** The variable is set, so the values service is not consulted. */
|
|
4
4
|
export declare function overridden(locator: Locator): boolean;
|
|
5
5
|
/** The variable, the manifest defaults, then the schema. */
|
|
@@ -1,48 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.fit = exports.local = exports.overridden = void 0;
|
|
27
|
-
const generic_1 = require("@toa.io/generic");
|
|
28
|
-
const schemas = __importStar(require("@toa.io/schemas"));
|
|
29
|
-
const const_1 = require("./const");
|
|
30
|
-
const Secret_1 = require("./Secret");
|
|
1
|
+
import { add } from '@toa.io/generic';
|
|
2
|
+
import * as schemas from '@toa.io/schemas';
|
|
3
|
+
import { PREFIX, SECRET_RX } from './const.js';
|
|
4
|
+
import { Secret } from './Secret.js';
|
|
31
5
|
/** The variable is set, so the values service is not consulted. */
|
|
32
|
-
function overridden(locator) {
|
|
33
|
-
return process.env[
|
|
6
|
+
export function overridden(locator) {
|
|
7
|
+
return process.env[PREFIX + locator.uppercase] !== undefined;
|
|
34
8
|
}
|
|
35
|
-
exports.overridden = overridden;
|
|
36
9
|
/** The variable, the manifest defaults, then the schema. */
|
|
37
|
-
function local(locator, manifest) {
|
|
10
|
+
export function local(locator, manifest) {
|
|
38
11
|
const values = read(locator.uppercase);
|
|
39
12
|
if (manifest.defaults !== undefined)
|
|
40
|
-
|
|
13
|
+
add(values, manifest.defaults);
|
|
41
14
|
return fit(values, manifest);
|
|
42
15
|
}
|
|
43
|
-
exports.local = local;
|
|
44
16
|
/** A copy of the value with the schema applied and the secrets substituted. */
|
|
45
|
-
function fit(raw, manifest) {
|
|
17
|
+
export function fit(raw, manifest) {
|
|
46
18
|
// a copy of the caller's, and one of this realm: what came over the wire is JSON anyway
|
|
47
19
|
const values = JSON.parse(JSON.stringify(raw));
|
|
48
20
|
// the schema sees the references, which are the strings it declares
|
|
@@ -50,13 +22,12 @@ function fit(raw, manifest) {
|
|
|
50
22
|
substituteSecrets(values);
|
|
51
23
|
return values;
|
|
52
24
|
}
|
|
53
|
-
exports.fit = fit;
|
|
54
25
|
function validate(values, manifest) {
|
|
55
26
|
const schema = schemas.schema(manifest.schema);
|
|
56
27
|
schema.validate(values);
|
|
57
28
|
}
|
|
58
29
|
function read(suffix) {
|
|
59
|
-
const variable =
|
|
30
|
+
const variable = PREFIX + suffix;
|
|
60
31
|
const string = process.env[variable];
|
|
61
32
|
if (string === undefined)
|
|
62
33
|
return {};
|
|
@@ -69,15 +40,15 @@ function substituteSecrets(configuration) {
|
|
|
69
40
|
substituteSecrets(value);
|
|
70
41
|
if (typeof value !== 'string')
|
|
71
42
|
continue;
|
|
72
|
-
const match = value.match(
|
|
43
|
+
const match = value.match(SECRET_RX);
|
|
73
44
|
if (match === null)
|
|
74
45
|
continue;
|
|
75
46
|
const name = match.groups?.variable;
|
|
76
|
-
configuration[key] = new
|
|
47
|
+
configuration[key] = new Secret(getSecret(name));
|
|
77
48
|
}
|
|
78
49
|
}
|
|
79
50
|
function getSecret(name) {
|
|
80
|
-
const variable =
|
|
51
|
+
const variable = PREFIX + '_' + name;
|
|
81
52
|
const value = process.env[variable];
|
|
82
53
|
if (value === undefined)
|
|
83
54
|
throw new Error(`${variable} is not set.`);
|