@quantform/core 0.7.0-beta.4 → 0.7.0-beta.41
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/asset/asset.d.ts +3 -0
- package/dist/asset/asset.d.ts.map +1 -1
- package/dist/asset/asset.js +7 -1
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +3 -36
- package/dist/cli/internal/script.d.ts +8 -0
- package/dist/cli/internal/script.d.ts.map +1 -0
- package/dist/cli/internal/script.js +58 -0
- package/dist/cli/pull.d.ts.map +1 -1
- package/dist/cli/pull.js +4 -83
- package/dist/cli/replay.d.ts.map +1 -1
- package/dist/cli/replay.js +3 -35
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +3 -37
- package/dist/index.d.ts +5 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -14
- package/dist/instrument/instrument.d.ts +3 -0
- package/dist/instrument/instrument.d.ts.map +1 -1
- package/dist/instrument/instrument.js +7 -1
- package/dist/make-test-module.d.ts +3 -2
- package/dist/make-test-module.d.ts.map +1 -1
- package/dist/make-test-module.js +13 -2
- package/dist/operators.d.ts +5 -0
- package/dist/operators.d.ts.map +1 -0
- package/dist/operators.js +16 -0
- package/dist/replay/index.d.ts +6 -4
- package/dist/replay/index.d.ts.map +1 -1
- package/dist/replay/index.js +6 -4
- package/dist/replay/replay-guard.d.ts +10 -0
- package/dist/replay/replay-guard.d.ts.map +1 -0
- package/dist/replay/replay-guard.js +8 -0
- package/dist/replay/replay.d.ts +10 -0
- package/dist/replay/replay.d.ts.map +1 -0
- package/dist/replay/replay.js +9 -0
- package/dist/replay/use-replay-breakpoint.d.ts +3 -0
- package/dist/replay/use-replay-breakpoint.d.ts.map +1 -0
- package/dist/replay/use-replay-breakpoint.js +22 -0
- package/dist/replay/use-replay-manager.d.ts +12 -0
- package/dist/replay/use-replay-manager.d.ts.map +1 -0
- package/dist/replay/use-replay-manager.js +88 -0
- package/dist/replay/use-replay-storage-buffer.d.ts +15 -0
- package/dist/replay/use-replay-storage-buffer.d.ts.map +1 -0
- package/dist/replay/use-replay-storage-buffer.js +50 -0
- package/dist/replay/use-replay-storage.d.ts +11 -8
- package/dist/replay/use-replay-storage.d.ts.map +1 -1
- package/dist/replay/use-replay-storage.js +34 -5
- package/dist/replay/use-replay-storage.spec.d.ts +2 -0
- package/dist/replay/use-replay-storage.spec.d.ts.map +1 -0
- package/dist/replay/use-replay-storage.spec.js +74 -0
- package/dist/replay/use-replay.d.ts +2 -2
- package/dist/replay/use-replay.d.ts.map +1 -1
- package/dist/replay/use-replay.js +8 -20
- package/dist/replay/use-replay.spec.js +125 -101
- package/dist/session/use-session-storage.js +2 -2
- package/dist/session/use-session.js +2 -2
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -0
- package/dist/storage/use-storage.d.ts.map +1 -1
- package/dist/storage/use-storage.js +2 -2
- package/dist/use-execution-mode.d.ts +6 -1
- package/dist/use-execution-mode.d.ts.map +1 -1
- package/dist/use-execution-mode.js +16 -8
- package/dist/use-logger.js +4 -4
- package/dist/use-memo.d.ts +0 -10
- package/dist/use-memo.d.ts.map +1 -1
- package/dist/use-memo.js +0 -10
- package/dist/use-timestamp.js +2 -2
- package/dist/when-socket.d.ts +8 -0
- package/dist/when-socket.d.ts.map +1 -0
- package/dist/{use-socket.js → when-socket.js} +6 -5
- package/dist/with-memo.d.ts +5 -0
- package/dist/with-memo.d.ts.map +1 -0
- package/dist/{use.js → with-memo.js} +5 -5
- package/dist/with-memo.spec.d.ts +2 -0
- package/dist/with-memo.spec.d.ts.map +1 -0
- package/dist/{use.spec.js → with-memo.spec.js} +3 -3
- package/dist/{use-request.d.ts → with-request.d.ts} +5 -4
- package/dist/with-request.d.ts.map +1 -0
- package/dist/with-request.js +69 -0
- package/package.json +1 -1
- package/src/asset/asset.ts +6 -0
- package/src/cli/dev.ts +4 -20
- package/src/cli/internal/script.ts +49 -0
- package/src/cli/pull.ts +6 -66
- package/src/cli/replay.ts +4 -16
- package/src/cli/run.ts +4 -18
- package/src/index.ts +5 -14
- package/src/instrument/instrument.ts +6 -0
- package/src/make-test-module.ts +24 -4
- package/src/operators.ts +18 -0
- package/src/replay/index.ts +6 -4
- package/src/replay/replay-guard.ts +11 -0
- package/src/replay/replay.ts +13 -0
- package/src/replay/use-replay-breakpoint.ts +29 -0
- package/src/replay/use-replay-manager.ts +106 -0
- package/src/replay/use-replay-storage-buffer.ts +43 -0
- package/src/replay/use-replay-storage.spec.ts +85 -0
- package/src/replay/use-replay-storage.ts +26 -5
- package/src/replay/use-replay.spec.ts +10 -3
- package/src/replay/use-replay.ts +11 -17
- package/src/session/use-session-storage.ts +2 -2
- package/src/session/use-session.ts +2 -2
- package/src/storage/index.ts +1 -0
- package/src/storage/use-storage.ts +2 -2
- package/src/use-execution-mode.ts +16 -8
- package/src/use-logger.ts +4 -4
- package/src/use-memo.ts +0 -10
- package/src/use-timestamp.ts +2 -2
- package/src/{use-socket.ts → when-socket.ts} +6 -4
- package/src/{use.spec.ts → with-memo.spec.ts} +3 -3
- package/src/{use.ts → with-memo.ts} +4 -4
- package/src/with-request.ts +83 -0
- package/dist/as-readonly.d.ts +0 -3
- package/dist/as-readonly.d.ts.map +0 -1
- package/dist/as-readonly.js +0 -8
- package/dist/defined.d.ts +0 -3
- package/dist/defined.d.ts.map +0 -1
- package/dist/defined.js +0 -8
- package/dist/exclude.d.ts +0 -3
- package/dist/exclude.d.ts.map +0 -1
- package/dist/exclude.js +0 -8
- package/dist/not-found.d.ts +0 -2
- package/dist/not-found.d.ts.map +0 -1
- package/dist/not-found.js +0 -4
- package/dist/replay/use-replay-coordinator.d.ts +0 -10
- package/dist/replay/use-replay-coordinator.d.ts.map +0 -1
- package/dist/replay/use-replay-coordinator.js +0 -119
- package/dist/replay/use-replay-reader.d.ts +0 -7
- package/dist/replay/use-replay-reader.d.ts.map +0 -1
- package/dist/replay/use-replay-reader.js +0 -32
- package/dist/replay/use-replay-reader.spec.d.ts +0 -2
- package/dist/replay/use-replay-reader.spec.d.ts.map +0 -1
- package/dist/replay/use-replay-reader.spec.js +0 -58
- package/dist/replay/use-replay-writer.d.ts +0 -6
- package/dist/replay/use-replay-writer.d.ts.map +0 -1
- package/dist/replay/use-replay-writer.js +0 -14
- package/dist/replay/use-replay-writer.spec.d.ts +0 -2
- package/dist/replay/use-replay-writer.spec.d.ts.map +0 -1
- package/dist/replay/use-replay-writer.spec.js +0 -53
- package/dist/replay/with-replay.d.ts +0 -4
- package/dist/replay/with-replay.d.ts.map +0 -1
- package/dist/replay/with-replay.js +0 -8
- package/dist/strat.d.ts +0 -7
- package/dist/strat.d.ts.map +0 -1
- package/dist/strat.js +0 -7
- package/dist/use-lock.d.ts +0 -9
- package/dist/use-lock.d.ts.map +0 -1
- package/dist/use-lock.js +0 -40
- package/dist/use-request.d.ts.map +0 -1
- package/dist/use-request.js +0 -27
- package/dist/use-socket.d.ts +0 -6
- package/dist/use-socket.d.ts.map +0 -1
- package/dist/use-state.d.ts +0 -4
- package/dist/use-state.d.ts.map +0 -1
- package/dist/use-state.js +0 -24
- package/dist/use-state.spec.d.ts +0 -2
- package/dist/use-state.spec.d.ts.map +0 -1
- package/dist/use-state.spec.js +0 -36
- package/dist/use.d.ts +0 -5
- package/dist/use.d.ts.map +0 -1
- package/dist/use.spec.d.ts +0 -2
- package/dist/use.spec.d.ts.map +0 -1
- package/src/as-readonly.ts +0 -5
- package/src/defined.ts +0 -6
- package/src/exclude.ts +0 -9
- package/src/not-found.ts +0 -1
- package/src/replay/use-replay-coordinator.ts +0 -142
- package/src/replay/use-replay-reader.spec.ts +0 -64
- package/src/replay/use-replay-reader.ts +0 -23
- package/src/replay/use-replay-writer.spec.ts +0 -56
- package/src/replay/use-replay-writer.ts +0 -17
- package/src/replay/with-replay.ts +0 -10
- package/src/strat.ts +0 -7
- package/src/use-lock.ts +0 -52
- package/src/use-request.ts +0 -47
- package/src/use-state.spec.ts +0 -31
- package/src/use-state.ts +0 -30
|
@@ -1,106 +1,130 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const rxjs_1 = require("rxjs");
|
|
13
|
-
const make_test_module_1 = require("../make-test-module");
|
|
14
|
-
const use_replay_coordinator_1 = require("../replay/use-replay-coordinator");
|
|
15
|
-
const use_execution_mode_1 = require("../use-execution-mode");
|
|
16
|
-
const __1 = require("..");
|
|
17
3
|
const use_replay_1 = require("./use-replay");
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
describe.skip(use_replay_coordinator_1.useReplayCoordinator.name, () => {
|
|
22
|
-
let fixtures;
|
|
23
|
-
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
fixtures = yield getFixtures();
|
|
25
|
-
}));
|
|
26
|
-
test('return single data stream for single data source', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
-
fixtures.givenRecordingEnabled(false);
|
|
28
|
-
yield fixtures.givenSampleStored(fixtures.sample1, ['sample1']);
|
|
29
|
-
const sample1 = fixtures.whenUseReplayCalled(fixtures.sample1, ['sample']);
|
|
30
|
-
yield fixtures.whenUseSampleStreamerStarted();
|
|
31
|
-
expect(yield sample1).toEqual(fixtures.sample1);
|
|
32
|
-
}));
|
|
33
|
-
test('return combined data stream for multiple data sources', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
-
fixtures.givenRecordingEnabled(false);
|
|
35
|
-
yield fixtures.givenSampleStored(fixtures.sample1, ['sample1']);
|
|
36
|
-
yield fixtures.givenSampleStored(fixtures.sample2, ['sample2']);
|
|
37
|
-
const sample1 = fixtures.whenUseReplayCalled(fixtures.sample1, ['sample1']);
|
|
38
|
-
const sample2 = fixtures.whenUseReplayCalled(fixtures.sample2, ['sample2']);
|
|
39
|
-
yield fixtures.whenUseSampleStreamerStarted();
|
|
40
|
-
expect(yield sample1).toEqual(fixtures.sample1);
|
|
41
|
-
expect(yield sample2).toEqual(fixtures.sample2);
|
|
42
|
-
}));
|
|
43
|
-
test('record and write data stream into storage', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
-
fixtures.givenRecordingEnabled(true);
|
|
45
|
-
const sample1 = yield fixtures.whenUseReplayCalled(fixtures.sample1, ['sample1x']);
|
|
46
|
-
const sample2 = yield fixtures.whenUseReplayCalled(fixtures.sample2, ['sample2x']);
|
|
47
|
-
fixtures.thenReplaySampleStored(sample1, ['sample1x']);
|
|
48
|
-
fixtures.thenReplaySampleStored(sample2, ['sample2x']);
|
|
49
|
-
}));
|
|
50
|
-
});
|
|
51
|
-
function getFixtures() {
|
|
52
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
const executionMode = (0, use_execution_mode_1.replayExecutionMode)();
|
|
54
|
-
const { act } = yield (0, make_test_module_1.makeTestModule)([
|
|
55
|
-
executionMode,
|
|
56
|
-
(0, use_replay_options_1.replayOptions)({ from: 0, to: Number.MAX_VALUE })
|
|
57
|
-
]);
|
|
58
|
-
return {
|
|
59
|
-
sample1: [
|
|
60
|
-
{ timestamp: 1, payload: { o: 111, h: 112, l: 113, c: 114 } },
|
|
61
|
-
{ timestamp: 2, payload: { o: 121, h: 122, l: 123, c: 124 } },
|
|
62
|
-
{ timestamp: 3, payload: { o: 131, h: 132, l: 133, c: 134 } }
|
|
63
|
-
],
|
|
64
|
-
sample2: [
|
|
65
|
-
{ timestamp: 1, payload: { o: 211, h: 212, l: 213, c: 214 } },
|
|
66
|
-
{ timestamp: 2, payload: { o: 221, h: 222, l: 223, c: 224 } },
|
|
67
|
-
{ timestamp: 3, payload: { o: 231, h: 232, l: 233, c: 234 } }
|
|
68
|
-
],
|
|
69
|
-
givenRecordingEnabled(recording) {
|
|
70
|
-
executionMode.useValue.recording = recording;
|
|
71
|
-
},
|
|
72
|
-
givenSampleStored(sample, dependencies) {
|
|
73
|
-
return act(() => {
|
|
74
|
-
const writer = (0, use_replay_writer_1.useReplayWriter)(dependencies);
|
|
75
|
-
return writer(sample);
|
|
76
|
-
});
|
|
77
|
-
},
|
|
78
|
-
whenUseReplayCalled(input, dependencies) {
|
|
79
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
const sample = Array.of();
|
|
81
|
-
yield act(() => (0, rxjs_1.lastValueFrom)((0, use_replay_1.useReplay)((0, rxjs_1.from)(input), dependencies).pipe((0, rxjs_1.tap)(it => sample.push(it)))));
|
|
82
|
-
return sample;
|
|
83
|
-
});
|
|
84
|
-
},
|
|
85
|
-
whenUseSampleStreamerStarted() {
|
|
86
|
-
act(() => {
|
|
87
|
-
const { tryContinue } = (0, use_replay_coordinator_1.useReplayCoordinator)();
|
|
88
|
-
tryContinue();
|
|
89
|
-
});
|
|
90
|
-
},
|
|
91
|
-
thenReplaySampleStored(sample, dependencies) {
|
|
92
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
-
const stored = yield act(() => {
|
|
94
|
-
const reader = (0, use_replay_reader_1.useReplayReader)(dependencies);
|
|
95
|
-
return reader({
|
|
96
|
-
where: {
|
|
97
|
-
timestamp: (0, __1.between)(sample[0].timestamp, sample[sample.length - 1].timestamp + 1)
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
expect(stored).toEqual(sample);
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
};
|
|
4
|
+
describe(use_replay_1.useReplay.name, () => {
|
|
5
|
+
test('happy path', () => {
|
|
6
|
+
expect(true).toBe(true);
|
|
105
7
|
});
|
|
8
|
+
});
|
|
9
|
+
/*
|
|
10
|
+
|
|
11
|
+
describe.skip(useReplayCoordinator.name, () => {
|
|
12
|
+
let fixtures: Awaited<ReturnType<typeof getFixtures>>;
|
|
13
|
+
|
|
14
|
+
beforeEach(async () => {
|
|
15
|
+
fixtures = await getFixtures();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('return single data stream for single data source', async () => {
|
|
19
|
+
fixtures.givenRecordingEnabled(false);
|
|
20
|
+
await fixtures.givenSampleStored(fixtures.sample1, ['sample1']);
|
|
21
|
+
|
|
22
|
+
const sample1 = fixtures.whenUseReplayCalled(fixtures.sample1, ['sample']);
|
|
23
|
+
await fixtures.whenUseSampleStreamerStarted();
|
|
24
|
+
|
|
25
|
+
expect(await sample1).toEqual(fixtures.sample1);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('return combined data stream for multiple data sources', async () => {
|
|
29
|
+
fixtures.givenRecordingEnabled(false);
|
|
30
|
+
await fixtures.givenSampleStored(fixtures.sample1, ['sample1']);
|
|
31
|
+
await fixtures.givenSampleStored(fixtures.sample2, ['sample2']);
|
|
32
|
+
|
|
33
|
+
const sample1 = fixtures.whenUseReplayCalled(fixtures.sample1, ['sample1']);
|
|
34
|
+
const sample2 = fixtures.whenUseReplayCalled(fixtures.sample2, ['sample2']);
|
|
35
|
+
await fixtures.whenUseSampleStreamerStarted();
|
|
36
|
+
|
|
37
|
+
expect(await sample1).toEqual(fixtures.sample1);
|
|
38
|
+
expect(await sample2).toEqual(fixtures.sample2);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('record and write data stream into storage', async () => {
|
|
42
|
+
fixtures.givenRecordingEnabled(true);
|
|
43
|
+
const sample1 = await fixtures.whenUseReplayCalled(fixtures.sample1, ['sample1x']);
|
|
44
|
+
const sample2 = await fixtures.whenUseReplayCalled(fixtures.sample2, ['sample2x']);
|
|
45
|
+
|
|
46
|
+
fixtures.thenReplaySampleStored(sample1, ['sample1x']);
|
|
47
|
+
fixtures.thenReplaySampleStored(sample2, ['sample2x']);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
async function getFixtures() {
|
|
52
|
+
const executionMode = replayExecutionMode();
|
|
53
|
+
|
|
54
|
+
const { act } = await makeTestModule([
|
|
55
|
+
executionMode,
|
|
56
|
+
replayOptions({ from: 0, to: Number.MAX_VALUE })
|
|
57
|
+
]);
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
sample1: [
|
|
61
|
+
{ timestamp: 1, payload: { o: 111, h: 112, l: 113, c: 114 } },
|
|
62
|
+
{ timestamp: 2, payload: { o: 121, h: 122, l: 123, c: 124 } },
|
|
63
|
+
{ timestamp: 3, payload: { o: 131, h: 132, l: 133, c: 134 } }
|
|
64
|
+
],
|
|
65
|
+
sample2: [
|
|
66
|
+
{ timestamp: 1, payload: { o: 211, h: 212, l: 213, c: 214 } },
|
|
67
|
+
{ timestamp: 2, payload: { o: 221, h: 222, l: 223, c: 224 } },
|
|
68
|
+
{ timestamp: 3, payload: { o: 231, h: 232, l: 233, c: 234 } }
|
|
69
|
+
],
|
|
70
|
+
|
|
71
|
+
givenRecordingEnabled(recording: boolean) {
|
|
72
|
+
executionMode.useValue.recording = recording;
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
givenSampleStored<T>(
|
|
76
|
+
sample: { timestamp: number; payload: T }[],
|
|
77
|
+
dependencies: dependency[]
|
|
78
|
+
) {
|
|
79
|
+
return act(() => {
|
|
80
|
+
const writer = useReplayWriter(dependencies);
|
|
81
|
+
|
|
82
|
+
return writer(sample);
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
async whenUseReplayCalled<T>(
|
|
87
|
+
input: { timestamp: number; payload: T }[],
|
|
88
|
+
dependencies: dependency[]
|
|
89
|
+
) {
|
|
90
|
+
const sample = Array.of<{ timestamp: number; payload: T }>();
|
|
91
|
+
|
|
92
|
+
await act(() =>
|
|
93
|
+
lastValueFrom(
|
|
94
|
+
useReplay<T>(from(input), dependencies).pipe(tap(it => sample.push(it)))
|
|
95
|
+
)
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
return sample;
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
whenUseSampleStreamerStarted() {
|
|
102
|
+
act(() => {
|
|
103
|
+
const { tryContinue } = useReplayCoordinator();
|
|
104
|
+
|
|
105
|
+
tryContinue();
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
async thenReplaySampleStored<T extends { timestamp: number }>(
|
|
110
|
+
sample: T[],
|
|
111
|
+
dependencies: dependency[]
|
|
112
|
+
) {
|
|
113
|
+
const stored = await act(() => {
|
|
114
|
+
const reader = useReplayReader(dependencies);
|
|
115
|
+
|
|
116
|
+
return reader({
|
|
117
|
+
where: {
|
|
118
|
+
timestamp: between(
|
|
119
|
+
sample[0].timestamp,
|
|
120
|
+
sample[sample.length - 1].timestamp + 1
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
expect(stored).toEqual(sample);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
106
129
|
}
|
|
130
|
+
*/
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useSessionStorage = void 0;
|
|
4
4
|
const session_1 = require("../session");
|
|
5
5
|
const storage_1 = require("../storage");
|
|
6
|
-
const
|
|
7
|
-
exports.useSessionStorage = (0,
|
|
6
|
+
const with_memo_1 = require("../with-memo");
|
|
7
|
+
exports.useSessionStorage = (0, with_memo_1.withMemo)(() => {
|
|
8
8
|
const { id } = (0, session_1.useSession)();
|
|
9
9
|
return (0, storage_1.useStorage)(['session', id]);
|
|
10
10
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useSession = void 0;
|
|
4
|
-
const
|
|
5
|
-
exports.useSession = (0,
|
|
4
|
+
const with_memo_1 = require("../with-memo");
|
|
5
|
+
exports.useSession = (0, with_memo_1.withMemo)(() => ({
|
|
6
6
|
id: 'ttt' //Date.now()
|
|
7
7
|
}));
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC"}
|
package/dist/storage/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./storage"), exports);
|
|
18
|
+
__exportStar(require("./use-cache"), exports);
|
|
18
19
|
__exportStar(require("./use-storage"), exports);
|
|
19
20
|
__exportStar(require("./use-storage-factory"), exports);
|
|
20
21
|
__exportStar(require("./in-memory"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-storage.d.ts","sourceRoot":"","sources":["../../src/storage/use-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-storage.d.ts","sourceRoot":"","sources":["../../src/storage/use-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,eAAe,CAAC;AAKpD,eAAO,MAAM,UAAU,6DAKrB,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useStorage = void 0;
|
|
4
|
-
const use_1 = require("../use");
|
|
5
4
|
const use_hash_1 = require("../use-hash");
|
|
5
|
+
const with_memo_1 = require("../with-memo");
|
|
6
6
|
const use_storage_factory_1 = require("./use-storage-factory");
|
|
7
|
-
exports.useStorage = (0,
|
|
7
|
+
exports.useStorage = (0, with_memo_1.withMemo)((dependencies) => {
|
|
8
8
|
const key = (0, use_hash_1.useHash)(dependencies);
|
|
9
9
|
const factory = (0, use_storage_factory_1.useStorageFactory)();
|
|
10
10
|
return factory.for(key);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type ExecutionMode = {
|
|
2
|
-
mode: '
|
|
2
|
+
mode: 'replay' | 'paper' | 'live' | 'idle';
|
|
3
3
|
recording: boolean;
|
|
4
4
|
};
|
|
5
5
|
export declare function replayExecutionMode(): {
|
|
@@ -18,10 +18,15 @@ export declare function liveExecutionMode(options: {
|
|
|
18
18
|
provide: symbol;
|
|
19
19
|
useValue: ExecutionMode;
|
|
20
20
|
};
|
|
21
|
+
export declare function idleExecutionMode(): {
|
|
22
|
+
provide: symbol;
|
|
23
|
+
useValue: ExecutionMode;
|
|
24
|
+
};
|
|
21
25
|
export declare const useExecutionMode: () => {
|
|
22
26
|
isReplay: boolean;
|
|
23
27
|
isPaper: boolean;
|
|
24
28
|
isLive: boolean;
|
|
29
|
+
isIdle: boolean;
|
|
25
30
|
isSimulation: boolean;
|
|
26
31
|
recording: boolean;
|
|
27
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-execution-mode.d.ts","sourceRoot":"","sources":["../src/use-execution-mode.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"use-execution-mode.d.ts","sourceRoot":"","sources":["../src/use-execution-mode.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,mBAAmB;;;EAKlC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE;;;EAKjE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE;;;EAKhE;AAED,wBAAgB,iBAAiB;;;EAKhC;AAED,eAAO,MAAM,gBAAgB;;;;;;;CAW5B,CAAC"}
|
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useExecutionMode = exports.liveExecutionMode = exports.paperExecutionMode = exports.replayExecutionMode = void 0;
|
|
3
|
+
exports.useExecutionMode = exports.idleExecutionMode = exports.liveExecutionMode = exports.paperExecutionMode = exports.replayExecutionMode = void 0;
|
|
4
4
|
const module_1 = require("./module");
|
|
5
5
|
const injectionToken = Symbol('execution-mode');
|
|
6
6
|
function replayExecutionMode() {
|
|
7
7
|
return {
|
|
8
8
|
provide: injectionToken,
|
|
9
|
-
useValue: { mode: '
|
|
9
|
+
useValue: { mode: 'replay', recording: false }
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
exports.replayExecutionMode = replayExecutionMode;
|
|
13
13
|
function paperExecutionMode(options) {
|
|
14
14
|
return {
|
|
15
15
|
provide: injectionToken,
|
|
16
|
-
useValue: Object.assign({ mode: '
|
|
16
|
+
useValue: Object.assign({ mode: 'paper' }, options)
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
exports.paperExecutionMode = paperExecutionMode;
|
|
20
20
|
function liveExecutionMode(options) {
|
|
21
21
|
return {
|
|
22
22
|
provide: injectionToken,
|
|
23
|
-
useValue: Object.assign({ mode: '
|
|
23
|
+
useValue: Object.assign({ mode: 'live' }, options)
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
exports.liveExecutionMode = liveExecutionMode;
|
|
27
|
+
function idleExecutionMode() {
|
|
28
|
+
return {
|
|
29
|
+
provide: injectionToken,
|
|
30
|
+
useValue: { mode: 'idle', recording: false }
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.idleExecutionMode = idleExecutionMode;
|
|
27
34
|
const useExecutionMode = () => {
|
|
28
35
|
const mode = (0, module_1.useContext)(injectionToken);
|
|
29
36
|
return {
|
|
30
|
-
isReplay: mode.mode === '
|
|
31
|
-
isPaper: mode.mode === '
|
|
32
|
-
isLive: mode.mode === '
|
|
33
|
-
|
|
37
|
+
isReplay: mode.mode === 'replay',
|
|
38
|
+
isPaper: mode.mode === 'paper',
|
|
39
|
+
isLive: mode.mode === 'live',
|
|
40
|
+
isIdle: mode.mode === 'idle',
|
|
41
|
+
isSimulation: mode.mode !== 'live',
|
|
34
42
|
recording: mode.recording
|
|
35
43
|
};
|
|
36
44
|
};
|
package/dist/use-logger.js
CHANGED
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.useLogger = void 0;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const use_1 = require("./use");
|
|
9
8
|
const use_timestamp_1 = require("./use-timestamp");
|
|
9
|
+
const with_memo_1 = require("./with-memo");
|
|
10
10
|
const colorize = (content) => {
|
|
11
11
|
let hash = 0x811c9dc5;
|
|
12
12
|
for (let i = 0; i < content.length; i++) {
|
|
@@ -18,7 +18,7 @@ const colorize = (content) => {
|
|
|
18
18
|
/**
|
|
19
19
|
*
|
|
20
20
|
*/
|
|
21
|
-
exports.useLogger = (0,
|
|
21
|
+
exports.useLogger = (0, with_memo_1.withMemo)((context, tint) => {
|
|
22
22
|
const prefix = () => `${chalk_1.default.gray(new Date((0, use_timestamp_1.useTimestamp)()).toISOString())} ${chalk_1.default.hex(tint !== null && tint !== void 0 ? tint : colorize(context))(context)}`;
|
|
23
23
|
return {
|
|
24
24
|
info: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
|
|
@@ -31,7 +31,7 @@ exports.useLogger = (0, use_1.use)((context, tint) => {
|
|
|
31
31
|
? console.warn(`${prefix()}: ${message}`, params)
|
|
32
32
|
: console.warn(`${prefix()}: ${message}`),
|
|
33
33
|
error: (message, ...params) => (params === null || params === void 0 ? void 0 : params.length)
|
|
34
|
-
? console.error(`${prefix()}: ${message}`, params)
|
|
35
|
-
: console.error(`${prefix()}: ${message}`)
|
|
34
|
+
? console.error(`${prefix()}: ${chalk_1.default.red(message)}`, params)
|
|
35
|
+
: console.error(`${prefix()}: ${chalk_1.default.red(message)}`)
|
|
36
36
|
};
|
|
37
37
|
});
|
package/dist/use-memo.d.ts
CHANGED
|
@@ -7,15 +7,5 @@ export declare function memo(): {
|
|
|
7
7
|
provide: symbol;
|
|
8
8
|
useValue: {};
|
|
9
9
|
};
|
|
10
|
-
/**
|
|
11
|
-
* @name useMemo
|
|
12
|
-
* @description
|
|
13
|
-
* A hook that caches the result of an expensive calculation, based on a set of dependencies.
|
|
14
|
-
*
|
|
15
|
-
* @template T The type of the value that is memoized.
|
|
16
|
-
* @param {() => T} calculateValue A function that returns the value to memoize.
|
|
17
|
-
* @param {dependency[]} dependencies An array of dependencies that determine when the value should be recalculated.
|
|
18
|
-
* @returns {T} The memoized value.
|
|
19
|
-
*/
|
|
20
10
|
export declare function useMemo<T>(calculateValue: () => T, dependencies: dependency[]): T;
|
|
21
11
|
//# sourceMappingURL=use-memo.d.ts.map
|
package/dist/use-memo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-memo.d.ts","sourceRoot":"","sources":["../src/use-memo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAW,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,KAAK,eAAuB,CAAC;AAE1C;;GAEG;AACH,wBAAgB,IAAI;;;EAKnB;AAED
|
|
1
|
+
{"version":3,"file":"use-memo.d.ts","sourceRoot":"","sources":["../src/use-memo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAW,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,KAAK,eAAuB,CAAC;AAE1C;;GAEG;AACH,wBAAgB,IAAI;;;EAKnB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,KAS7E"}
|
package/dist/use-memo.js
CHANGED
|
@@ -14,16 +14,6 @@ function memo() {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
exports.memo = memo;
|
|
17
|
-
/**
|
|
18
|
-
* @name useMemo
|
|
19
|
-
* @description
|
|
20
|
-
* A hook that caches the result of an expensive calculation, based on a set of dependencies.
|
|
21
|
-
*
|
|
22
|
-
* @template T The type of the value that is memoized.
|
|
23
|
-
* @param {() => T} calculateValue A function that returns the value to memoize.
|
|
24
|
-
* @param {dependency[]} dependencies An array of dependencies that determine when the value should be recalculated.
|
|
25
|
-
* @returns {T} The memoized value.
|
|
26
|
-
*/
|
|
27
17
|
function useMemo(calculateValue, dependencies) {
|
|
28
18
|
const memory = (0, module_1.useContext)(exports.token);
|
|
29
19
|
const hash = (0, use_hash_1.useHash)(dependencies);
|
package/dist/use-timestamp.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useTimestamp = void 0;
|
|
4
|
-
const
|
|
4
|
+
const replay_1 = require("./replay");
|
|
5
5
|
const use_execution_mode_1 = require("./use-execution-mode");
|
|
6
6
|
function useTimestamp() {
|
|
7
7
|
const { isReplay } = (0, use_execution_mode_1.useExecutionMode)();
|
|
8
8
|
if (isReplay) {
|
|
9
|
-
return (0,
|
|
9
|
+
return (0, replay_1.useReplayManager)().timestamp();
|
|
10
10
|
}
|
|
11
11
|
return Date.now();
|
|
12
12
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when-socket.d.ts","sourceRoot":"","sources":["../src/when-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMlC,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAA2B,GAC1D,CAAC,UAAU,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAmDnF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.whenSocket = void 0;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
5
|
const ws_1 = require("ws");
|
|
6
6
|
const use_logger_1 = require("./use-logger");
|
|
7
7
|
const use_timestamp_1 = require("./use-timestamp");
|
|
8
|
-
function
|
|
9
|
-
const { debug } = (0, use_logger_1.useLogger)('
|
|
8
|
+
function whenSocket(url, options = { pingInterval: 5000 }) {
|
|
9
|
+
const { debug } = (0, use_logger_1.useLogger)('whenSocket');
|
|
10
10
|
const message = new rxjs_1.Observable(stream => {
|
|
11
11
|
const socket = new ws_1.WebSocket(url);
|
|
12
12
|
let isAlive = false;
|
|
@@ -14,6 +14,7 @@ function useSocket(url) {
|
|
|
14
14
|
socket.onmessage = it => stream.next({ timestamp: (0, use_timestamp_1.useTimestamp)(), payload: JSON.parse(it.data) });
|
|
15
15
|
socket.onerror = it => {
|
|
16
16
|
clearInterval(interval);
|
|
17
|
+
debug('errored', url);
|
|
17
18
|
stream.error(it);
|
|
18
19
|
};
|
|
19
20
|
socket.onclose = () => {
|
|
@@ -33,7 +34,7 @@ function useSocket(url) {
|
|
|
33
34
|
socket.terminate();
|
|
34
35
|
clearInterval(interval);
|
|
35
36
|
}
|
|
36
|
-
},
|
|
37
|
+
}, options.pingInterval);
|
|
37
38
|
socket.on('pong', () => {
|
|
38
39
|
isAlive = true;
|
|
39
40
|
});
|
|
@@ -49,4 +50,4 @@ function useSocket(url) {
|
|
|
49
50
|
});
|
|
50
51
|
return [message, (message) => JSON.stringify(message)];
|
|
51
52
|
}
|
|
52
|
-
exports.
|
|
53
|
+
exports.whenSocket = whenSocket;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { dependency } from './use-hash';
|
|
3
|
+
export declare function withMemo<T extends Array<dependency>, U>(fn: (...args: T) => U): (...args: T) => U;
|
|
4
|
+
export declare function withMemo<T extends Array<dependency>, U>(fn: (...args: T) => Observable<U>): (...args: T) => Observable<U>;
|
|
5
|
+
//# sourceMappingURL=with-memo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-memo.d.ts","sourceRoot":"","sources":["../src/with-memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,EAAe,MAAM,MAAM,CAAC;AAK7D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EACrD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GACpB,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AACrB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EACrD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAChC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.withMemo = void 0;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
|
-
const as_readonly_1 = require("./as-readonly");
|
|
7
6
|
const module_1 = require("./module");
|
|
7
|
+
const operators_1 = require("./operators");
|
|
8
8
|
const use_memo_1 = require("./use-memo");
|
|
9
|
-
function
|
|
9
|
+
function withMemo(fn) {
|
|
10
10
|
(0, module_1.throwWithContext)();
|
|
11
11
|
const uniqueId = (0, uuid_1.v4)();
|
|
12
12
|
return (...args) => (0, use_memo_1.useMemo)(() => {
|
|
13
13
|
const value = fn(...args);
|
|
14
14
|
if ((0, rxjs_1.isObservable)(value)) {
|
|
15
|
-
return value.pipe((0,
|
|
15
|
+
return value.pipe((0, operators_1.asReadonly)(), (0, rxjs_1.shareReplay)(1));
|
|
16
16
|
}
|
|
17
17
|
return value;
|
|
18
18
|
}, [uniqueId, ...args]);
|
|
19
19
|
}
|
|
20
|
-
exports.
|
|
20
|
+
exports.withMemo = withMemo;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-memo.spec.d.ts","sourceRoot":"","sources":["../src/with-memo.spec.ts"],"names":[],"mappings":""}
|
|
@@ -11,8 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const make_test_module_1 = require("./make-test-module");
|
|
13
13
|
const instrument_1 = require("./instrument");
|
|
14
|
-
const
|
|
15
|
-
describe(
|
|
14
|
+
const with_memo_1 = require("./with-memo");
|
|
15
|
+
describe(with_memo_1.withMemo.name, () => {
|
|
16
16
|
let fixtures;
|
|
17
17
|
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
18
|
fixtures = yield getFixtures();
|
|
@@ -38,7 +38,7 @@ describe(use_1.use.name, () => {
|
|
|
38
38
|
function getFixtures() {
|
|
39
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
40
|
const { act } = yield (0, make_test_module_1.makeTestModule)([]);
|
|
41
|
-
const getValue = (0,
|
|
41
|
+
const getValue = (0, with_memo_1.withMemo)((instrument) => instrument.id);
|
|
42
42
|
return {
|
|
43
43
|
act,
|
|
44
44
|
getValue: act(() => (instrument) => getValue(instrument))
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
1
2
|
export type RequestMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';
|
|
2
3
|
export declare class RequestNetworkError extends Error {
|
|
3
4
|
readonly statusCode: number;
|
|
4
5
|
readonly json: () => Promise<string>;
|
|
5
6
|
constructor(statusCode: number, json: () => Promise<string>);
|
|
6
7
|
}
|
|
7
|
-
export declare function
|
|
8
|
+
export declare function withRequest({ method, url, headers, body }: {
|
|
8
9
|
method: RequestMethod;
|
|
9
10
|
url: string;
|
|
10
11
|
headers?: Record<string, any>;
|
|
11
12
|
body?: string;
|
|
12
|
-
}):
|
|
13
|
+
}): Observable<{
|
|
13
14
|
timestamp: number;
|
|
14
|
-
payload:
|
|
15
|
+
payload: unknown;
|
|
15
16
|
}>;
|
|
16
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=with-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-request.d.ts","sourceRoot":"","sources":["../src/with-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMlC,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,QAAQ,GACR,SAAS,GACT,SAAS,GACT,OAAO,GACP,OAAO,CAAC;AAEZ,qBAAa,mBAAoB,SAAQ,KAAK;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC;gBAAxD,UAAU,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC;CAG9E;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,GAAG,EACH,OAAO,EACP,IAAI,EACL,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;eAGoC,MAAM;aAAW,OAAO;GA6C5D"}
|