dbctx 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +6004 -279
- package/package.json +11 -8
- package/dist/app/assemble.d.mts +0 -5
- package/dist/app/assemble.d.mts.map +0 -1
- package/dist/app/assemble.mjs +0 -182
- package/dist/app/config.d.mts +0 -9
- package/dist/app/config.d.mts.map +0 -1
- package/dist/app/config.mjs +0 -49
- package/dist/app/db.d.mts +0 -9
- package/dist/app/db.d.mts.map +0 -1
- package/dist/app/db.mjs +0 -182
- package/dist/app/detect.d.mts +0 -14
- package/dist/app/detect.d.mts.map +0 -1
- package/dist/app/detect.mjs +0 -108
- package/dist/app/list.d.mts +0 -4
- package/dist/app/list.d.mts.map +0 -1
- package/dist/app/list.mjs +0 -93
- package/dist/app/load-introspection.d.mts +0 -26
- package/dist/app/load-introspection.d.mts.map +0 -1
- package/dist/app/load-introspection.mjs +0 -89
- package/dist/app/login.d.mts +0 -2
- package/dist/app/login.d.mts.map +0 -1
- package/dist/app/login.mjs +0 -69
- package/dist/app/open-url.d.mts +0 -6
- package/dist/app/open-url.d.mts.map +0 -1
- package/dist/app/open-url.mjs +0 -33
- package/dist/app/sample.d.mts +0 -24
- package/dist/app/sample.d.mts.map +0 -1
- package/dist/app/sample.mjs +0 -257
- package/dist/app/session.d.mts +0 -9
- package/dist/app/session.d.mts.map +0 -1
- package/dist/app/session.mjs +0 -195
- package/dist/app/ssh.d.mts +0 -3
- package/dist/app/ssh.d.mts.map +0 -1
- package/dist/app/ssh.mjs +0 -218
- package/dist/app/tail.d.mts +0 -13
- package/dist/app/tail.d.mts.map +0 -1
- package/dist/app/tail.mjs +0 -168
- package/dist/db/analyze.d.mts +0 -3
- package/dist/db/analyze.d.mts.map +0 -1
- package/dist/db/analyze.mjs +0 -16
- package/dist/db/attributes.d.mts +0 -16
- package/dist/db/attributes.d.mts.map +0 -1
- package/dist/db/attributes.mjs +0 -37
- package/dist/db/check-constraints.d.mts +0 -9
- package/dist/db/check-constraints.d.mts.map +0 -1
- package/dist/db/check-constraints.mjs +0 -17
- package/dist/db/custom-types.d.mts +0 -26
- package/dist/db/custom-types.d.mts.map +0 -1
- package/dist/db/custom-types.mjs +0 -61
- package/dist/db/enums.d.mts +0 -8
- package/dist/db/enums.d.mts.map +0 -1
- package/dist/db/enums.mjs +0 -24
- package/dist/db/extensions.d.mts +0 -8
- package/dist/db/extensions.d.mts.map +0 -1
- package/dist/db/extensions.mjs +0 -14
- package/dist/db/file-stats.d.mts +0 -11
- package/dist/db/file-stats.d.mts.map +0 -1
- package/dist/db/file-stats.mjs +0 -43
- package/dist/db/foreign-keys.d.mts +0 -14
- package/dist/db/foreign-keys.d.mts.map +0 -1
- package/dist/db/foreign-keys.mjs +0 -44
- package/dist/db/functions.d.mts +0 -11
- package/dist/db/functions.d.mts.map +0 -1
- package/dist/db/functions.mjs +0 -23
- package/dist/db/index.d.mts +0 -19
- package/dist/db/index.d.mts.map +0 -1
- package/dist/db/index.mjs +0 -19
- package/dist/db/indexes.d.mts +0 -16
- package/dist/db/indexes.d.mts.map +0 -1
- package/dist/db/indexes.mjs +0 -38
- package/dist/db/planner-stats.d.mts +0 -33
- package/dist/db/planner-stats.d.mts.map +0 -1
- package/dist/db/planner-stats.mjs +0 -103
- package/dist/db/relations.d.mts +0 -11
- package/dist/db/relations.d.mts.map +0 -1
- package/dist/db/relations.mjs +0 -32
- package/dist/db/rls.d.mts +0 -21
- package/dist/db/rls.d.mts.map +0 -1
- package/dist/db/rls.mjs +0 -48
- package/dist/db/sample.d.mts +0 -16
- package/dist/db/sample.d.mts.map +0 -1
- package/dist/db/sample.mjs +0 -73
- package/dist/db/sequences.d.mts +0 -15
- package/dist/db/sequences.d.mts.map +0 -1
- package/dist/db/sequences.mjs +0 -31
- package/dist/db/stats.d.mts +0 -12
- package/dist/db/stats.d.mts.map +0 -1
- package/dist/db/stats.mjs +0 -34
- package/dist/db/triggers.d.mts +0 -11
- package/dist/db/triggers.d.mts.map +0 -1
- package/dist/db/triggers.mjs +0 -21
- package/dist/db/version.d.mts +0 -14
- package/dist/db/version.d.mts.map +0 -1
- package/dist/db/version.mjs +0 -27
- package/dist/flow/events.d.mts +0 -115
- package/dist/flow/events.d.mts.map +0 -1
- package/dist/flow/events.mjs +0 -2
- package/dist/flow/interpreter.d.mts +0 -21
- package/dist/flow/interpreter.d.mts.map +0 -1
- package/dist/flow/interpreter.mjs +0 -605
- package/dist/flow/projection.d.mts +0 -17
- package/dist/flow/projection.d.mts.map +0 -1
- package/dist/flow/projection.mjs +0 -83
- package/dist/flow/projection.test.d.mts +0 -2
- package/dist/flow/projection.test.d.mts.map +0 -1
- package/dist/flow/projection.test.mjs +0 -162
- package/dist/flow/reducer.d.mts +0 -5
- package/dist/flow/reducer.d.mts.map +0 -1
- package/dist/flow/reducer.mjs +0 -306
- package/dist/flow/reducer.test.d.mts +0 -2
- package/dist/flow/reducer.test.d.mts.map +0 -1
- package/dist/flow/reducer.test.mjs +0 -479
- package/dist/flow/run.d.mts +0 -3
- package/dist/flow/run.d.mts.map +0 -1
- package/dist/flow/run.mjs +0 -89
- package/dist/flow/states.d.mts +0 -54
- package/dist/flow/states.d.mts.map +0 -1
- package/dist/flow/states.mjs +0 -39
- package/dist/index.d.mts +0 -29
- package/dist/index.d.mts.map +0 -1
- package/dist/lib/atomic-write.d.mts +0 -4
- package/dist/lib/atomic-write.d.mts.map +0 -1
- package/dist/lib/atomic-write.mjs +0 -75
- package/dist/lib/env.d.mts +0 -2
- package/dist/lib/env.d.mts.map +0 -1
- package/dist/lib/env.mjs +0 -4
- package/dist/lib/stream-job.d.mts +0 -19
- package/dist/lib/stream-job.d.mts.map +0 -1
- package/dist/lib/stream-job.mjs +0 -55
- package/dist/lib/trpc-url.d.mts +0 -2
- package/dist/lib/trpc-url.d.mts.map +0 -1
- package/dist/lib/trpc-url.mjs +0 -5
- package/dist/lib/trpc.d.mts +0 -7
- package/dist/lib/trpc.d.mts.map +0 -1
- package/dist/lib/trpc.mjs +0 -37
- package/dist/lib/trpc.react.d.mts +0 -4
- package/dist/lib/trpc.react.d.mts.map +0 -1
- package/dist/lib/trpc.react.mjs +0 -3
- package/dist/lib/version.d.mts +0 -2
- package/dist/lib/version.d.mts.map +0 -1
- package/dist/lib/version.mjs +0 -5
- package/dist/logger.d.mts +0 -3
- package/dist/logger.d.mts.map +0 -1
- package/dist/logger.mjs +0 -11
- package/dist/providers/TrpcProvider.d.ts +0 -9
- package/dist/providers/TrpcProvider.d.ts.map +0 -1
- package/dist/providers/TrpcProvider.js +0 -41
- package/dist/store.d.mts +0 -176
- package/dist/store.d.mts.map +0 -1
- package/dist/store.mjs +0 -147
- package/dist/types/connection.d.mts +0 -17
- package/dist/types/connection.d.mts.map +0 -1
- package/dist/types/connection.mjs +0 -2
- package/dist/ui/App.d.ts +0 -10
- package/dist/ui/App.d.ts.map +0 -1
- package/dist/ui/App.js +0 -41
- package/dist/ui/components/Analyze.d.ts +0 -10
- package/dist/ui/components/Analyze.d.ts.map +0 -1
- package/dist/ui/components/Analyze.js +0 -54
- package/dist/ui/components/Billing.d.ts +0 -10
- package/dist/ui/components/Billing.d.ts.map +0 -1
- package/dist/ui/components/Billing.js +0 -40
- package/dist/ui/components/DB.d.ts +0 -10
- package/dist/ui/components/DB.d.ts.map +0 -1
- package/dist/ui/components/DB.js +0 -22
- package/dist/ui/components/DatabasePicker.d.ts +0 -13
- package/dist/ui/components/DatabasePicker.d.ts.map +0 -1
- package/dist/ui/components/DatabasePicker.js +0 -79
- package/dist/ui/components/Enrich.d.ts +0 -10
- package/dist/ui/components/Enrich.d.ts.map +0 -1
- package/dist/ui/components/Enrich.js +0 -41
- package/dist/ui/components/Error.d.ts +0 -7
- package/dist/ui/components/Error.d.ts.map +0 -1
- package/dist/ui/components/Error.js +0 -6
- package/dist/ui/components/Gate.d.ts +0 -10
- package/dist/ui/components/Gate.d.ts.map +0 -1
- package/dist/ui/components/Gate.js +0 -15
- package/dist/ui/components/Introspect.d.ts +0 -10
- package/dist/ui/components/Introspect.d.ts.map +0 -1
- package/dist/ui/components/Introspect.js +0 -66
- package/dist/ui/components/IntrospectionUpload.d.ts +0 -10
- package/dist/ui/components/IntrospectionUpload.d.ts.map +0 -1
- package/dist/ui/components/IntrospectionUpload.js +0 -30
- package/dist/ui/components/Login.d.ts +0 -19
- package/dist/ui/components/Login.d.ts.map +0 -1
- package/dist/ui/components/Login.js +0 -38
- package/dist/ui/components/OutputJson.d.ts +0 -10
- package/dist/ui/components/OutputJson.d.ts.map +0 -1
- package/dist/ui/components/OutputJson.js +0 -18
- package/dist/ui/components/PasswordInput.d.ts +0 -7
- package/dist/ui/components/PasswordInput.d.ts.map +0 -1
- package/dist/ui/components/PasswordInput.js +0 -32
- package/dist/ui/components/SSH.d.ts +0 -10
- package/dist/ui/components/SSH.d.ts.map +0 -1
- package/dist/ui/components/SSH.js +0 -22
- package/dist/ui/components/SamplesUpload.d.ts +0 -10
- package/dist/ui/components/SamplesUpload.d.ts.map +0 -1
- package/dist/ui/components/SamplesUpload.js +0 -24
- package/dist/ui/components/Sampling.d.ts +0 -10
- package/dist/ui/components/Sampling.d.ts.map +0 -1
- package/dist/ui/components/Sampling.js +0 -58
- package/dist/ui/components/Session.d.ts +0 -10
- package/dist/ui/components/Session.d.ts.map +0 -1
- package/dist/ui/components/Session.js +0 -47
- package/dist/ui/components/Spinner.d.ts +0 -3
- package/dist/ui/components/Spinner.d.ts.map +0 -1
- package/dist/ui/components/Spinner.js +0 -30
- package/dist/ui/components/Splash.d.ts +0 -3
- package/dist/ui/components/Splash.d.ts.map +0 -1
- package/dist/ui/components/Splash.js +0 -13
- package/dist/ui/components/TextInput.d.ts +0 -11
- package/dist/ui/components/TextInput.d.ts.map +0 -1
- package/dist/ui/components/TextInput.js +0 -286
- package/dist/ui/components/UserExplanation.d.ts +0 -10
- package/dist/ui/components/UserExplanation.d.ts.map +0 -1
- package/dist/ui/components/UserExplanation.js +0 -34
- package/dist/validatePaths.d.mts +0 -13
- package/dist/validatePaths.d.mts.map +0 -1
- package/dist/validatePaths.mjs +0 -58
package/dist/flow/reducer.mjs
DELETED
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
import { initialPostIntrospection, } from './states.mjs';
|
|
2
|
-
// Pure reducer: (state, event) → state. Exhaustive switch over the
|
|
3
|
-
// discriminated union so TypeScript catches missing cases at compile time.
|
|
4
|
-
// Unrelated events (event kinds that don't apply to the current phase or
|
|
5
|
-
// sub-status) return state unchanged — pinned by the no-op invariant test.
|
|
6
|
-
const setError = (state, phase, message) => ({
|
|
7
|
-
...state,
|
|
8
|
-
phase: 'error',
|
|
9
|
-
errorPhase: phase,
|
|
10
|
-
errorMessage: message,
|
|
11
|
-
});
|
|
12
|
-
const stopAfterReached = (state) => ({
|
|
13
|
-
...state,
|
|
14
|
-
phase: 'done',
|
|
15
|
-
});
|
|
16
|
-
export const reduce = (state, event) => {
|
|
17
|
-
// Side-channel: post-introspection progress can fire in any phase
|
|
18
|
-
// post-`ingesting-introspection`. Update the sub-status without changing
|
|
19
|
-
// primary phase.
|
|
20
|
-
if (event.kind === 'post-introspection-progress') {
|
|
21
|
-
return {
|
|
22
|
-
...state,
|
|
23
|
-
postIntrospection: {
|
|
24
|
-
...state.postIntrospection,
|
|
25
|
-
state: 'running',
|
|
26
|
-
stage: event.stage,
|
|
27
|
-
tokensIn: event.tokensIn,
|
|
28
|
-
tokensOut: event.tokensOut,
|
|
29
|
-
columnsDone: event.columnsDone,
|
|
30
|
-
columnsTotal: event.columnsTotal,
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
if (event.kind === 'post-introspection-completed') {
|
|
35
|
-
return {
|
|
36
|
-
...state,
|
|
37
|
-
postIntrospection: {
|
|
38
|
-
...state.postIntrospection,
|
|
39
|
-
state: 'done',
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (event.kind === 'post-introspection-failed') {
|
|
44
|
-
return {
|
|
45
|
-
...state,
|
|
46
|
-
postIntrospection: {
|
|
47
|
-
...state.postIntrospection,
|
|
48
|
-
state: 'error',
|
|
49
|
-
error: event.error,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
// Stop-after is the same shape regardless of phase: enter terminal `done`.
|
|
54
|
-
if (event.kind === 'stop-after-reached') {
|
|
55
|
-
return stopAfterReached(state);
|
|
56
|
-
}
|
|
57
|
-
// ── phase-specific transitions ──────────────────────────────────
|
|
58
|
-
if (state.phase === 'idle') {
|
|
59
|
-
if (event.kind === 'start') {
|
|
60
|
-
return {
|
|
61
|
-
...state,
|
|
62
|
-
phase: state.sshEnabled ? 'connecting-ssh' : 'connecting-db',
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
return state;
|
|
66
|
-
}
|
|
67
|
-
if (state.phase === 'connecting-ssh') {
|
|
68
|
-
if (event.kind === 'ssh-connected' || event.kind === 'ssh-not-needed') {
|
|
69
|
-
return state.stopAfter === 'ssh-connect'
|
|
70
|
-
? stopAfterReached(state)
|
|
71
|
-
: { ...state, phase: 'connecting-db' };
|
|
72
|
-
}
|
|
73
|
-
if (event.kind === 'ssh-failed') {
|
|
74
|
-
return setError(state, 'connecting-ssh', event.error);
|
|
75
|
-
}
|
|
76
|
-
return state;
|
|
77
|
-
}
|
|
78
|
-
if (state.phase === 'connecting-db') {
|
|
79
|
-
if (event.kind === 'db-connected') {
|
|
80
|
-
return state.stopAfter === 'db-connect'
|
|
81
|
-
? stopAfterReached(state)
|
|
82
|
-
: { ...state, phase: 'introspecting' };
|
|
83
|
-
}
|
|
84
|
-
if (event.kind === 'db-failed') {
|
|
85
|
-
return setError(state, 'connecting-db', event.error);
|
|
86
|
-
}
|
|
87
|
-
return state;
|
|
88
|
-
}
|
|
89
|
-
if (state.phase === 'introspecting') {
|
|
90
|
-
if (event.kind === 'introspection-loaded') {
|
|
91
|
-
// Output JSON write is a sub-step before stop-after-introspection.
|
|
92
|
-
return state.outputJSONPath !== null
|
|
93
|
-
? { ...state, phase: 'output-json' }
|
|
94
|
-
: state.stopAfter === 'introspection'
|
|
95
|
-
? stopAfterReached(state)
|
|
96
|
-
: { ...state, phase: 'creating-session' };
|
|
97
|
-
}
|
|
98
|
-
if (event.kind === 'introspection-failed') {
|
|
99
|
-
return setError(state, 'introspecting', event.error);
|
|
100
|
-
}
|
|
101
|
-
return state;
|
|
102
|
-
}
|
|
103
|
-
if (state.phase === 'output-json') {
|
|
104
|
-
if (event.kind === 'output-json-written' ||
|
|
105
|
-
event.kind === 'output-json-skipped' ||
|
|
106
|
-
event.kind === 'output-json-not-requested') {
|
|
107
|
-
return state.stopAfter === 'introspection'
|
|
108
|
-
? stopAfterReached(state)
|
|
109
|
-
: { ...state, phase: 'creating-session' };
|
|
110
|
-
}
|
|
111
|
-
if (event.kind === 'output-json-failed') {
|
|
112
|
-
return setError(state, 'output-json', event.error);
|
|
113
|
-
}
|
|
114
|
-
return state;
|
|
115
|
-
}
|
|
116
|
-
if (state.phase === 'creating-session') {
|
|
117
|
-
if (event.kind === 'session-created') {
|
|
118
|
-
return {
|
|
119
|
-
...state,
|
|
120
|
-
sessionId: event.sessionId,
|
|
121
|
-
phase: 'awaiting-authorization',
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
if (event.kind === 'fast-path-completed') {
|
|
125
|
-
return {
|
|
126
|
-
...state,
|
|
127
|
-
sessionId: event.sessionId,
|
|
128
|
-
authToken: event.token,
|
|
129
|
-
phase: state.explanation !== null
|
|
130
|
-
? 'preflight-checking'
|
|
131
|
-
: 'awaiting-explanation',
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
if (event.kind === 'auth-not-needed') {
|
|
135
|
-
// No server-side flow at all — proceed straight to terminal.
|
|
136
|
-
return stopAfterReached(state);
|
|
137
|
-
}
|
|
138
|
-
if (event.kind === 'session-failed') {
|
|
139
|
-
return setError(state, 'creating-session', event.error);
|
|
140
|
-
}
|
|
141
|
-
return state;
|
|
142
|
-
}
|
|
143
|
-
if (state.phase === 'awaiting-authorization') {
|
|
144
|
-
if (event.kind === 'auth-confirmed') {
|
|
145
|
-
return {
|
|
146
|
-
...state,
|
|
147
|
-
authToken: event.token,
|
|
148
|
-
phase: state.explanation !== null
|
|
149
|
-
? 'preflight-checking'
|
|
150
|
-
: 'awaiting-explanation',
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
if (event.kind === 'auth-failed') {
|
|
154
|
-
return setError(state, 'awaiting-authorization', event.error);
|
|
155
|
-
}
|
|
156
|
-
return state;
|
|
157
|
-
}
|
|
158
|
-
if (state.phase === 'awaiting-explanation') {
|
|
159
|
-
if (event.kind === 'explanation-given') {
|
|
160
|
-
return {
|
|
161
|
-
...state,
|
|
162
|
-
explanation: event.value,
|
|
163
|
-
phase: 'preflight-checking',
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
return state;
|
|
167
|
-
}
|
|
168
|
-
if (state.phase === 'preflight-checking') {
|
|
169
|
-
if (event.kind === 'check-introspection-hit') {
|
|
170
|
-
// Reused revision: skip ingest entirely. Post-introspection state
|
|
171
|
-
// depends on whether the server returned a job id.
|
|
172
|
-
return {
|
|
173
|
-
...state,
|
|
174
|
-
revisionId: event.revisionId,
|
|
175
|
-
samplesAlreadyIngested: event.samplesExist,
|
|
176
|
-
tablesNeedingSamples: event.tablesNeedingSamples,
|
|
177
|
-
preflightHit: true,
|
|
178
|
-
postIntrospection: {
|
|
179
|
-
...state.postIntrospection,
|
|
180
|
-
jobId: event.postIntrospectionJobId,
|
|
181
|
-
state: event.postIntrospectionJobId === null
|
|
182
|
-
? 'done'
|
|
183
|
-
: 'queued',
|
|
184
|
-
reused: event.postIntrospectionJobId === null,
|
|
185
|
-
},
|
|
186
|
-
phase: event.samplesExist
|
|
187
|
-
? 'awaiting-post-sampling'
|
|
188
|
-
: 'sampling-mask-resolving',
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
if (event.kind === 'check-introspection-miss') {
|
|
192
|
-
return { ...state, phase: 'ingesting-introspection' };
|
|
193
|
-
}
|
|
194
|
-
if (event.kind === 'ingest-failed') {
|
|
195
|
-
return setError(state, 'preflight-checking', event.error);
|
|
196
|
-
}
|
|
197
|
-
return state;
|
|
198
|
-
}
|
|
199
|
-
if (state.phase === 'ingesting-introspection') {
|
|
200
|
-
if (event.kind === 'introspection-ingested') {
|
|
201
|
-
return {
|
|
202
|
-
...state,
|
|
203
|
-
revisionId: event.revisionId,
|
|
204
|
-
samplesAlreadyIngested: event.samplesExist,
|
|
205
|
-
tablesNeedingSamples: event.tablesNeedingSamples,
|
|
206
|
-
postIntrospection: {
|
|
207
|
-
...state.postIntrospection,
|
|
208
|
-
jobId: event.postIntrospectionJobId,
|
|
209
|
-
state: event.postIntrospectionJobId === null
|
|
210
|
-
? 'done'
|
|
211
|
-
: 'queued',
|
|
212
|
-
reused: event.postIntrospectionJobId === null,
|
|
213
|
-
},
|
|
214
|
-
phase: event.samplesExist
|
|
215
|
-
? 'awaiting-post-sampling'
|
|
216
|
-
: 'sampling-mask-resolving',
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
if (event.kind === 'ingest-failed') {
|
|
220
|
-
return setError(state, 'ingesting-introspection', event.error);
|
|
221
|
-
}
|
|
222
|
-
return state;
|
|
223
|
-
}
|
|
224
|
-
if (state.phase === 'sampling-mask-resolving') {
|
|
225
|
-
if (event.kind === 'mask-loaded') {
|
|
226
|
-
return {
|
|
227
|
-
...state,
|
|
228
|
-
sampling: { ...state.sampling, mask: event.mask },
|
|
229
|
-
phase: 'sampling',
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
if (event.kind === 'mask-fetch-failed') {
|
|
233
|
-
return setError(state, 'sampling-mask-resolving', event.error);
|
|
234
|
-
}
|
|
235
|
-
// Cascade: post-introspection failed while we're still waiting on
|
|
236
|
-
// it for the mask (the side-channel handler above already updated
|
|
237
|
-
// sub-status; primary phase needs to fail too). The interpreter
|
|
238
|
-
// re-dispatches as `mask-fetch-failed` after observing the substate
|
|
239
|
-
// change.
|
|
240
|
-
return state;
|
|
241
|
-
}
|
|
242
|
-
if (state.phase === 'sampling') {
|
|
243
|
-
if (event.kind === 'sample-table-yielded') {
|
|
244
|
-
return {
|
|
245
|
-
...state,
|
|
246
|
-
sampling: {
|
|
247
|
-
...state.sampling,
|
|
248
|
-
collected: [...state.sampling.collected, event.event],
|
|
249
|
-
},
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
if (event.kind === 'sampling-completed') {
|
|
253
|
-
return state.stopAfter === 'sampling'
|
|
254
|
-
? stopAfterReached(state)
|
|
255
|
-
: {
|
|
256
|
-
...state,
|
|
257
|
-
sampling: {
|
|
258
|
-
...state.sampling,
|
|
259
|
-
totalTables: state.sampling.collected.length,
|
|
260
|
-
},
|
|
261
|
-
phase: 'uploading-samples',
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
if (event.kind === 'sampling-failed') {
|
|
265
|
-
return setError(state, 'sampling', event.error);
|
|
266
|
-
}
|
|
267
|
-
return state;
|
|
268
|
-
}
|
|
269
|
-
if (state.phase === 'uploading-samples') {
|
|
270
|
-
if (event.kind === 'sample-chunk-uploaded') {
|
|
271
|
-
return {
|
|
272
|
-
...state,
|
|
273
|
-
sampling: {
|
|
274
|
-
...state.sampling,
|
|
275
|
-
uploadedTables: state.sampling.uploadedTables + event.chunkSize,
|
|
276
|
-
},
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
if (event.kind === 'samples-upload-completed' ||
|
|
280
|
-
event.kind === 'samples-upload-not-needed') {
|
|
281
|
-
return { ...state, phase: 'awaiting-post-sampling' };
|
|
282
|
-
}
|
|
283
|
-
if (event.kind === 'samples-upload-failed') {
|
|
284
|
-
return setError(state, 'uploading-samples', event.error);
|
|
285
|
-
}
|
|
286
|
-
return state;
|
|
287
|
-
}
|
|
288
|
-
if (state.phase === 'awaiting-post-sampling') {
|
|
289
|
-
if (event.kind === 'post-sampling-completed') {
|
|
290
|
-
return { ...state, phase: 'done' };
|
|
291
|
-
}
|
|
292
|
-
if (event.kind === 'post-sampling-failed') {
|
|
293
|
-
return setError(state, 'awaiting-post-sampling', event.error);
|
|
294
|
-
}
|
|
295
|
-
return state;
|
|
296
|
-
}
|
|
297
|
-
// Terminal phases ignore further events.
|
|
298
|
-
return state;
|
|
299
|
-
};
|
|
300
|
-
// Resets sub-status fields to fresh — useful when the reducer is composed
|
|
301
|
-
// with a higher-level driver that wants a clean slate (tests use this).
|
|
302
|
-
export const cleanPostIntrospection = (state) => ({
|
|
303
|
-
...state,
|
|
304
|
-
postIntrospection: initialPostIntrospection,
|
|
305
|
-
});
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5tanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJmbG93L3JlZHVjZXIubXRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCx3QkFBd0IsR0FHM0IsTUFBTSxjQUFjLENBQUM7QUFFdEIsbUVBQW1FO0FBQ25FLDJFQUEyRTtBQUMzRSx5RUFBeUU7QUFDekUsMkVBQTJFO0FBRTNFLE1BQU0sUUFBUSxHQUFHLENBQ2IsS0FBaUIsRUFDakIsS0FBaUIsRUFDakIsT0FBZSxFQUNMLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsR0FBRyxLQUFLO0lBQ1IsS0FBSyxFQUFFLE9BQU87SUFDZCxVQUFVLEVBQUUsS0FBSztJQUNqQixZQUFZLEVBQUUsT0FBTztDQUN4QixDQUFDLENBQUM7QUFFSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBYyxFQUFFLENBQUMsQ0FBQztJQUN6RCxHQUFHLEtBQUs7SUFDUixLQUFLLEVBQUUsTUFBTTtDQUNoQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEtBQWlCLEVBQWMsRUFBRTtJQUN2RSxrRUFBa0U7SUFDbEUseUVBQXlFO0lBQ3pFLGlCQUFpQjtJQUNqQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssNkJBQTZCLEVBQUUsQ0FBQztRQUMvQyxPQUFPO1lBQ0gsR0FBRyxLQUFLO1lBQ1IsaUJBQWlCLEVBQUU7Z0JBQ2YsR0FBRyxLQUFLLENBQUMsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7YUFDbkM7U0FDSixDQUFDO0lBQ04s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QUFDLEtBQUssS0FBSyx3QkFBd0IsRUFBRSxDQUFDO1FBQzNDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyx5QkFBeUIsRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBQyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsMEVBQTBFO0FBQzFFLHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWlCLEVBQWMsRUFBRSxDQUFDLENBQUM7SUFDdEUsR0FBRyxLQUFLO0lBQ1IsaUJBQWlCLEVBQUUsd0JBQXdCO0NBQzlDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtURmxvd0V2ZW50fSBmcm9tICcuL2V2ZW50cy5tanMnO1xuaW1wb3J0IHtcbiAgICBpbml0aWFsUG9zdEludHJvc3BlY3Rpb24sXG4gICAgdHlwZSBURmxvd1BoYXNlLFxuICAgIHR5cGUgVEZsb3dTdGF0ZSxcbn0gZnJvbSAnLi9zdGF0ZXMubWpzJztcblxuLy8gUHVyZSByZWR1Y2VyOiAoc3RhdGUsIGV2ZW50KSDihpIgc3RhdGUuIEV4aGF1c3RpdmUgc3dpdGNoIG92ZXIgdGhlXG4vLyBkaXNjcmltaW5hdGVkIHVuaW9uIHNvIFR5cGVTY3JpcHQgY2F0Y2hlcyBtaXNzaW5nIGNhc2VzIGF0IGNvbXBpbGUgdGltZS5cbi8vIFVucmVsYXRlZCBldmVudHMgKGV2ZW50IGtpbmRzIHRoYXQgZG9uJ3QgYXBwbHkgdG8gdGhlIGN1cnJlbnQgcGhhc2Ugb3Jcbi8vIHN1Yi1zdGF0dXMpIHJldHVybiBzdGF0ZSB1bmNoYW5nZWQg4oCUIHBpbm5lZCBieSB0aGUgbm8tb3AgaW52YXJpYW50IHRlc3QuXG5cbmNvbnN0IHNldEVycm9yID0gKFxuICAgIHN0YXRlOiBURmxvd1N0YXRlLFxuICAgIHBoYXNlOiBURmxvd1BoYXNlLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbik6IFRGbG93U3RhdGUgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBwaGFzZTogJ2Vycm9yJyxcbiAgICBlcnJvclBoYXNlOiBwaGFzZSxcbiAgICBlcnJvck1lc3NhZ2U6IG1lc3NhZ2UsXG59KTtcblxuY29uc3Qgc3RvcEFmdGVyUmVhY2hlZCA9IChzdGF0ZTogVEZsb3dTdGF0ZSk6IFRGbG93U3RhdGUgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBwaGFzZTogJ2RvbmUnLFxufSk7XG5cbmV4cG9ydCBjb25zdCByZWR1Y2UgPSAoc3RhdGU6IFRGbG93U3RhdGUsIGV2ZW50OiBURmxvd0V2ZW50KTogVEZsb3dTdGF0ZSA9PiB7XG4gICAgLy8gU2lkZS1jaGFubmVsOiBwb3N0LWludHJvc3BlY3Rpb24gcHJvZ3Jlc3MgY2FuIGZpcmUgaW4gYW55IHBoYXNlXG4gICAgLy8gcG9zdC1gaW5nZXN0aW5nLWludHJvc3BlY3Rpb25gLiBVcGRhdGUgdGhlIHN1Yi1zdGF0dXMgd2l0aG91dCBjaGFuZ2luZ1xuICAgIC8vIHByaW1hcnkgcGhhc2UuXG4gICAgaWYgKGV2ZW50LmtpbmQgPT09ICdwb3N0LWludHJvc3BlY3Rpb24tcHJvZ3Jlc3MnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHBvc3RJbnRyb3NwZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUucG9zdEludHJvc3BlY3Rpb24sXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdydW5uaW5nJyxcbiAgICAgICAgICAgICAgICBzdGFnZTogZXZlbnQuc3RhZ2UsXG4gICAgICAgICAgICAgICAgdG9rZW5zSW46IGV2ZW50LnRva2Vuc0luLFxuICAgICAgICAgICAgICAgIHRva2Vuc091dDogZXZlbnQudG9rZW5zT3V0LFxuICAgICAgICAgICAgICAgIGNvbHVtbnNEb25lOiBldmVudC5jb2x1bW5zRG9uZSxcbiAgICAgICAgICAgICAgICBjb2x1bW5zVG90YWw6IGV2ZW50LmNvbHVtbnNUb3RhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudC5raW5kID09PSAncG9zdC1pbnRyb3NwZWN0aW9uLWNvbXBsZXRlZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcG9zdEludHJvc3BlY3Rpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5wb3N0SW50cm9zcGVjdGlvbixcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2RvbmUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmtpbmQgPT09ICdwb3N0LWludHJvc3BlY3Rpb24tZmFpbGVkJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBwb3N0SW50cm9zcGVjdGlvbjoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnBvc3RJbnRyb3NwZWN0aW9uLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIGVycm9yOiBldmVudC5lcnJvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gU3RvcC1hZnRlciBpcyB0aGUgc2FtZSBzaGFwZSByZWdhcmRsZXNzIG9mIHBoYXNlOiBlbnRlciB0ZXJtaW5hbCBgZG9uZWAuXG4gICAgaWYgKGV2ZW50LmtpbmQgPT09ICdzdG9wLWFmdGVyLXJlYWNoZWQnKSB7XG4gICAgICAgIHJldHVybiBzdG9wQWZ0ZXJSZWFjaGVkKHN0YXRlKTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgcGhhc2Utc3BlY2lmaWMgdHJhbnNpdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdpZGxlJykge1xuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBwaGFzZTogc3RhdGUuc3NoRW5hYmxlZCA/ICdjb25uZWN0aW5nLXNzaCcgOiAnY29ubmVjdGluZy1kYicsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdjb25uZWN0aW5nLXNzaCcpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdzc2gtY29ubmVjdGVkJyB8fCBldmVudC5raW5kID09PSAnc3NoLW5vdC1uZWVkZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuc3RvcEFmdGVyID09PSAnc3NoLWNvbm5lY3QnXG4gICAgICAgICAgICAgICAgPyBzdG9wQWZ0ZXJSZWFjaGVkKHN0YXRlKVxuICAgICAgICAgICAgICAgIDogey4uLnN0YXRlLCBwaGFzZTogJ2Nvbm5lY3RpbmctZGInfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3NzaC1mYWlsZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0RXJyb3Ioc3RhdGUsICdjb25uZWN0aW5nLXNzaCcsIGV2ZW50LmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnY29ubmVjdGluZy1kYicpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdkYi1jb25uZWN0ZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuc3RvcEFmdGVyID09PSAnZGItY29ubmVjdCdcbiAgICAgICAgICAgICAgICA/IHN0b3BBZnRlclJlYWNoZWQoc3RhdGUpXG4gICAgICAgICAgICAgICAgOiB7Li4uc3RhdGUsIHBoYXNlOiAnaW50cm9zcGVjdGluZyd9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5raW5kID09PSAnZGItZmFpbGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHNldEVycm9yKHN0YXRlLCAnY29ubmVjdGluZy1kYicsIGV2ZW50LmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnaW50cm9zcGVjdGluZycpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdpbnRyb3NwZWN0aW9uLWxvYWRlZCcpIHtcbiAgICAgICAgICAgIC8vIE91dHB1dCBKU09OIHdyaXRlIGlzIGEgc3ViLXN0ZXAgYmVmb3JlIHN0b3AtYWZ0ZXItaW50cm9zcGVjdGlvbi5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5vdXRwdXRKU09OUGF0aCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgID8gey4uLnN0YXRlLCBwaGFzZTogJ291dHB1dC1qc29uJ31cbiAgICAgICAgICAgICAgICA6IHN0YXRlLnN0b3BBZnRlciA9PT0gJ2ludHJvc3BlY3Rpb24nXG4gICAgICAgICAgICAgICAgICA/IHN0b3BBZnRlclJlYWNoZWQoc3RhdGUpXG4gICAgICAgICAgICAgICAgICA6IHsuLi5zdGF0ZSwgcGhhc2U6ICdjcmVhdGluZy1zZXNzaW9uJ307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdpbnRyb3NwZWN0aW9uLWZhaWxlZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcihzdGF0ZSwgJ2ludHJvc3BlY3RpbmcnLCBldmVudC5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ291dHB1dC1qc29uJykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5raW5kID09PSAnb3V0cHV0LWpzb24td3JpdHRlbicgfHxcbiAgICAgICAgICAgIGV2ZW50LmtpbmQgPT09ICdvdXRwdXQtanNvbi1za2lwcGVkJyB8fFxuICAgICAgICAgICAgZXZlbnQua2luZCA9PT0gJ291dHB1dC1qc29uLW5vdC1yZXF1ZXN0ZWQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnN0b3BBZnRlciA9PT0gJ2ludHJvc3BlY3Rpb24nXG4gICAgICAgICAgICAgICAgPyBzdG9wQWZ0ZXJSZWFjaGVkKHN0YXRlKVxuICAgICAgICAgICAgICAgIDogey4uLnN0YXRlLCBwaGFzZTogJ2NyZWF0aW5nLXNlc3Npb24nfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ291dHB1dC1qc29uLWZhaWxlZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcihzdGF0ZSwgJ291dHB1dC1qc29uJywgZXZlbnQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdjcmVhdGluZy1zZXNzaW9uJykge1xuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3Nlc3Npb24tY3JlYXRlZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2Vzc2lvbklkOiBldmVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgcGhhc2U6ICdhd2FpdGluZy1hdXRob3JpemF0aW9uJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdmYXN0LXBhdGgtY29tcGxldGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzZXNzaW9uSWQ6IGV2ZW50LnNlc3Npb25JZCxcbiAgICAgICAgICAgICAgICBhdXRoVG9rZW46IGV2ZW50LnRva2VuLFxuICAgICAgICAgICAgICAgIHBoYXNlOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5leHBsYW5hdGlvbiAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncHJlZmxpZ2h0LWNoZWNraW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYXdhaXRpbmctZXhwbGFuYXRpb24nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ2F1dGgtbm90LW5lZWRlZCcpIHtcbiAgICAgICAgICAgIC8vIE5vIHNlcnZlci1zaWRlIGZsb3cgYXQgYWxsIOKAlCBwcm9jZWVkIHN0cmFpZ2h0IHRvIHRlcm1pbmFsLlxuICAgICAgICAgICAgcmV0dXJuIHN0b3BBZnRlclJlYWNoZWQoc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5raW5kID09PSAnc2Vzc2lvbi1mYWlsZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0RXJyb3Ioc3RhdGUsICdjcmVhdGluZy1zZXNzaW9uJywgZXZlbnQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdhd2FpdGluZy1hdXRob3JpemF0aW9uJykge1xuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ2F1dGgtY29uZmlybWVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBhdXRoVG9rZW46IGV2ZW50LnRva2VuLFxuICAgICAgICAgICAgICAgIHBoYXNlOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5leHBsYW5hdGlvbiAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncHJlZmxpZ2h0LWNoZWNraW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYXdhaXRpbmctZXhwbGFuYXRpb24nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ2F1dGgtZmFpbGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHNldEVycm9yKHN0YXRlLCAnYXdhaXRpbmctYXV0aG9yaXphdGlvbicsIGV2ZW50LmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnYXdhaXRpbmctZXhwbGFuYXRpb24nKSB7XG4gICAgICAgIGlmIChldmVudC5raW5kID09PSAnZXhwbGFuYXRpb24tZ2l2ZW4nKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uOiBldmVudC52YWx1ZSxcbiAgICAgICAgICAgICAgICBwaGFzZTogJ3ByZWZsaWdodC1jaGVja2luZycsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdwcmVmbGlnaHQtY2hlY2tpbmcnKSB7XG4gICAgICAgIGlmIChldmVudC5raW5kID09PSAnY2hlY2staW50cm9zcGVjdGlvbi1oaXQnKSB7XG4gICAgICAgICAgICAvLyBSZXVzZWQgcmV2aXNpb246IHNraXAgaW5nZXN0IGVudGlyZWx5LiBQb3N0LWludHJvc3BlY3Rpb24gc3RhdGVcbiAgICAgICAgICAgIC8vIGRlcGVuZHMgb24gd2hldGhlciB0aGUgc2VydmVyIHJldHVybmVkIGEgam9iIGlkLlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICByZXZpc2lvbklkOiBldmVudC5yZXZpc2lvbklkLFxuICAgICAgICAgICAgICAgIHNhbXBsZXNBbHJlYWR5SW5nZXN0ZWQ6IGV2ZW50LnNhbXBsZXNFeGlzdCxcbiAgICAgICAgICAgICAgICB0YWJsZXNOZWVkaW5nU2FtcGxlczogZXZlbnQudGFibGVzTmVlZGluZ1NhbXBsZXMsXG4gICAgICAgICAgICAgICAgcHJlZmxpZ2h0SGl0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHBvc3RJbnRyb3NwZWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnBvc3RJbnRyb3NwZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBqb2JJZDogZXZlbnQucG9zdEludHJvc3BlY3Rpb25Kb2JJZCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wb3N0SW50cm9zcGVjdGlvbkpvYklkID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZG9uZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdxdWV1ZWQnLFxuICAgICAgICAgICAgICAgICAgICByZXVzZWQ6IGV2ZW50LnBvc3RJbnRyb3NwZWN0aW9uSm9iSWQgPT09IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaGFzZTogZXZlbnQuc2FtcGxlc0V4aXN0XG4gICAgICAgICAgICAgICAgICAgID8gJ2F3YWl0aW5nLXBvc3Qtc2FtcGxpbmcnXG4gICAgICAgICAgICAgICAgICAgIDogJ3NhbXBsaW5nLW1hc2stcmVzb2x2aW5nJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdjaGVjay1pbnRyb3NwZWN0aW9uLW1pc3MnKSB7XG4gICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlLCBwaGFzZTogJ2luZ2VzdGluZy1pbnRyb3NwZWN0aW9uJ307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdpbmdlc3QtZmFpbGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHNldEVycm9yKHN0YXRlLCAncHJlZmxpZ2h0LWNoZWNraW5nJywgZXZlbnQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdpbmdlc3RpbmctaW50cm9zcGVjdGlvbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdpbnRyb3NwZWN0aW9uLWluZ2VzdGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICByZXZpc2lvbklkOiBldmVudC5yZXZpc2lvbklkLFxuICAgICAgICAgICAgICAgIHNhbXBsZXNBbHJlYWR5SW5nZXN0ZWQ6IGV2ZW50LnNhbXBsZXNFeGlzdCxcbiAgICAgICAgICAgICAgICB0YWJsZXNOZWVkaW5nU2FtcGxlczogZXZlbnQudGFibGVzTmVlZGluZ1NhbXBsZXMsXG4gICAgICAgICAgICAgICAgcG9zdEludHJvc3BlY3Rpb246IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUucG9zdEludHJvc3BlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGpvYklkOiBldmVudC5wb3N0SW50cm9zcGVjdGlvbkpvYklkLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBvc3RJbnRyb3NwZWN0aW9uSm9iSWQgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdkb25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3F1ZXVlZCcsXG4gICAgICAgICAgICAgICAgICAgIHJldXNlZDogZXZlbnQucG9zdEludHJvc3BlY3Rpb25Kb2JJZCA9PT0gbnVsbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBoYXNlOiBldmVudC5zYW1wbGVzRXhpc3RcbiAgICAgICAgICAgICAgICAgICAgPyAnYXdhaXRpbmctcG9zdC1zYW1wbGluZydcbiAgICAgICAgICAgICAgICAgICAgOiAnc2FtcGxpbmctbWFzay1yZXNvbHZpbmcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ2luZ2VzdC1mYWlsZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0RXJyb3Ioc3RhdGUsICdpbmdlc3RpbmctaW50cm9zcGVjdGlvbicsIGV2ZW50LmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnc2FtcGxpbmctbWFzay1yZXNvbHZpbmcnKSB7XG4gICAgICAgIGlmIChldmVudC5raW5kID09PSAnbWFzay1sb2FkZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNhbXBsaW5nOiB7Li4uc3RhdGUuc2FtcGxpbmcsIG1hc2s6IGV2ZW50Lm1hc2t9LFxuICAgICAgICAgICAgICAgIHBoYXNlOiAnc2FtcGxpbmcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ21hc2stZmV0Y2gtZmFpbGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHNldEVycm9yKHN0YXRlLCAnc2FtcGxpbmctbWFzay1yZXNvbHZpbmcnLCBldmVudC5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FzY2FkZTogcG9zdC1pbnRyb3NwZWN0aW9uIGZhaWxlZCB3aGlsZSB3ZSdyZSBzdGlsbCB3YWl0aW5nIG9uXG4gICAgICAgIC8vIGl0IGZvciB0aGUgbWFzayAodGhlIHNpZGUtY2hhbm5lbCBoYW5kbGVyIGFib3ZlIGFscmVhZHkgdXBkYXRlZFxuICAgICAgICAvLyBzdWItc3RhdHVzOyBwcmltYXJ5IHBoYXNlIG5lZWRzIHRvIGZhaWwgdG9vKS4gVGhlIGludGVycHJldGVyXG4gICAgICAgIC8vIHJlLWRpc3BhdGNoZXMgYXMgYG1hc2stZmV0Y2gtZmFpbGVkYCBhZnRlciBvYnNlcnZpbmcgdGhlIHN1YnN0YXRlXG4gICAgICAgIC8vIGNoYW5nZS5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ3NhbXBsaW5nJykge1xuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3NhbXBsZS10YWJsZS15aWVsZGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzYW1wbGluZzoge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zYW1wbGluZyxcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGVkOiBbLi4uc3RhdGUuc2FtcGxpbmcuY29sbGVjdGVkLCBldmVudC5ldmVudF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdzYW1wbGluZy1jb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuc3RvcEFmdGVyID09PSAnc2FtcGxpbmcnXG4gICAgICAgICAgICAgICAgPyBzdG9wQWZ0ZXJSZWFjaGVkKHN0YXRlKVxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIHNhbXBsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNhbXBsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFRhYmxlczogc3RhdGUuc2FtcGxpbmcuY29sbGVjdGVkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHBoYXNlOiAndXBsb2FkaW5nLXNhbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3NhbXBsaW5nLWZhaWxlZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcihzdGF0ZSwgJ3NhbXBsaW5nJywgZXZlbnQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICd1cGxvYWRpbmctc2FtcGxlcycpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdzYW1wbGUtY2h1bmstdXBsb2FkZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNhbXBsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNhbXBsaW5nLFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZFRhYmxlczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnNhbXBsaW5nLnVwbG9hZGVkVGFibGVzICsgZXZlbnQuY2h1bmtTaXplLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50LmtpbmQgPT09ICdzYW1wbGVzLXVwbG9hZC1jb21wbGV0ZWQnIHx8XG4gICAgICAgICAgICBldmVudC5raW5kID09PSAnc2FtcGxlcy11cGxvYWQtbm90LW5lZWRlZCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlLCBwaGFzZTogJ2F3YWl0aW5nLXBvc3Qtc2FtcGxpbmcnfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3NhbXBsZXMtdXBsb2FkLWZhaWxlZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcihzdGF0ZSwgJ3VwbG9hZGluZy1zYW1wbGVzJywgZXZlbnQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdhd2FpdGluZy1wb3N0LXNhbXBsaW5nJykge1xuICAgICAgICBpZiAoZXZlbnQua2luZCA9PT0gJ3Bvc3Qtc2FtcGxpbmctY29tcGxldGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHsuLi5zdGF0ZSwgcGhhc2U6ICdkb25lJ307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtpbmQgPT09ICdwb3N0LXNhbXBsaW5nLWZhaWxlZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcihzdGF0ZSwgJ2F3YWl0aW5nLXBvc3Qtc2FtcGxpbmcnLCBldmVudC5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIC8vIFRlcm1pbmFsIHBoYXNlcyBpZ25vcmUgZnVydGhlciBldmVudHMuXG4gICAgcmV0dXJuIHN0YXRlO1xufTtcblxuLy8gUmVzZXRzIHN1Yi1zdGF0dXMgZmllbGRzIHRvIGZyZXNoIOKAlCB1c2VmdWwgd2hlbiB0aGUgcmVkdWNlciBpcyBjb21wb3NlZFxuLy8gd2l0aCBhIGhpZ2hlci1sZXZlbCBkcml2ZXIgdGhhdCB3YW50cyBhIGNsZWFuIHNsYXRlICh0ZXN0cyB1c2UgdGhpcykuXG5leHBvcnQgY29uc3QgY2xlYW5Qb3N0SW50cm9zcGVjdGlvbiA9IChzdGF0ZTogVEZsb3dTdGF0ZSk6IFRGbG93U3RhdGUgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBwb3N0SW50cm9zcGVjdGlvbjogaW5pdGlhbFBvc3RJbnRyb3NwZWN0aW9uLFxufSk7XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.test.d.mts","sourceRoot":"./src/","sources":["flow/reducer.test.mts"],"names":[],"mappings":""}
|