@dudousxd/nestjs-catalog 0.30.0 → 0.32.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/catalog.pipeline.d.ts +82 -1
- package/dist/catalog.pipeline.js +225 -15
- package/dist/catalog.store.d.ts +188 -1
- package/dist/catalog.store.js +7 -0
- package/dist/client.d.ts +2 -2
- package/dist/client.js +12 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +10 -5
- package/package.json +1 -1
|
@@ -63,6 +63,87 @@ export declare const CATALOG_SOURCE_TYPE_KEY = "objectType";
|
|
|
63
63
|
* refusal nobody can see the cause of.
|
|
64
64
|
*/
|
|
65
65
|
export declare function workflowSourceObjectType(node: WorkflowNode | Record<string, unknown>): string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* The config key a `catalog` source names **one snapshot** in.
|
|
68
|
+
*
|
|
69
|
+
* ## Why the key is not called `snapshotId`
|
|
70
|
+
*
|
|
71
|
+
* Because `snapshotId` is already taken, by something that is not this, in a
|
|
72
|
+
* place a person reads on the same afternoon. A run body carries a `snapshotId`
|
|
73
|
+
* and it is the **durable run id** — reusing one that already succeeded replays
|
|
74
|
+
* that run and returns its old counts as a fresh success. The two are especially
|
|
75
|
+
* confusable because they are frequently the *same string*: a snapshot's id is
|
|
76
|
+
* caller-supplied and a durable pipeline passes its run id (see
|
|
77
|
+
* {@link SnapshotRef.id}), so `snapshotId` in one field means "run this again"
|
|
78
|
+
* and in the other means "read that load", and nothing about the spelling says
|
|
79
|
+
* which. `objectSnapshot` pairs with {@link CATALOG_SOURCE_TYPE_KEY} instead —
|
|
80
|
+
* the two fields of this kind read as one sentence, *this object type, this
|
|
81
|
+
* snapshot of it* — and cannot be pasted into each other's place by accident.
|
|
82
|
+
*
|
|
83
|
+
* Absent is the ordinary case and means the snapshot the type is **currently
|
|
84
|
+
* serving**, resolved when the node runs. That default is not spelled: there is
|
|
85
|
+
* no `objectSnapshot: "current"`, because a second spelling of the default is a
|
|
86
|
+
* second thing to keep in step, and because the words it would be spelled with
|
|
87
|
+
* are exactly the ones {@link catalogSnapshotRefusal} refuses.
|
|
88
|
+
*/
|
|
89
|
+
export declare const CATALOG_SOURCE_SNAPSHOT_KEY = "objectSnapshot";
|
|
90
|
+
/**
|
|
91
|
+
* The words a snapshot may not be named by, whatever a store's ids look like.
|
|
92
|
+
*
|
|
93
|
+
* Two different mistakes, refused together because they are refused for one
|
|
94
|
+
* reason — that a name here has to mean the same load on every run:
|
|
95
|
+
*
|
|
96
|
+
* - **Relative references.** `previous`, `last`, `newest`. The thing somebody
|
|
97
|
+
* actually wants when diffing, and the property a graph must not have: it
|
|
98
|
+
* resolves against whatever has been committed by the time the node runs, so
|
|
99
|
+
* the same stored graph reads different data on Tuesday than it did on Monday
|
|
100
|
+
* while its {@link workflowGraphHash} says nothing changed. And it is not
|
|
101
|
+
* merely unstable, it is unstable *per node*: a diff graph with one source on
|
|
102
|
+
* `current` and one on `previous` resolves them at two different instants, so
|
|
103
|
+
* a commit landing between the two probes leaves both pointing at the same
|
|
104
|
+
* load — an empty diff, reported as success, which is the exact green-and-
|
|
105
|
+
* silent failure this kind was built to end. The friction they would have
|
|
106
|
+
* saved is answered by the picker instead: the inspector lists the snapshots,
|
|
107
|
+
* so an id is chosen from a list rather than looked up.
|
|
108
|
+
* - **Anything that could mean "all of them".** `all`, `*`, `%`. The measurement
|
|
109
|
+
* in {@link CONNECTOR_KINDS} is what a read of every retained snapshot at once
|
|
110
|
+
* looks like — 89,440 rows where 44,720 were current, `succeeded`, every `SUM`
|
|
111
|
+
* doubled — and the whole reason this kind names a type rather than a table is
|
|
112
|
+
* that a type cannot be named that way. A snapshot must not reintroduce it.
|
|
113
|
+
*
|
|
114
|
+
* Folded to lower case before comparison, so `Latest` is refused too. An id that
|
|
115
|
+
* genuinely *is* one of these words cannot be named here, and that is the trade:
|
|
116
|
+
* a handful of unusable ids against a name whose meaning a reader cannot get
|
|
117
|
+
* wrong.
|
|
118
|
+
*/
|
|
119
|
+
export declare const CATALOG_SNAPSHOT_RESERVED_NAMES: readonly ["current", "latest", "newest", "head", "previous", "prior", "last", "oldest", "first", "all", "any", "none"];
|
|
120
|
+
/**
|
|
121
|
+
* Why a snapshot name cannot be used, or `undefined` when it can.
|
|
122
|
+
*
|
|
123
|
+
* A sentence rather than a boolean because three callers say it — the canvas,
|
|
124
|
+
* `validateWorkflow`, and `fetchCatalog` at the moment of the read — and three
|
|
125
|
+
* hand-written phrasings of one rule is how a refusal on the canvas stops
|
|
126
|
+
* matching the refusal on the run.
|
|
127
|
+
*
|
|
128
|
+
* A blank name is not a refusal: absent means the current snapshot, which is the
|
|
129
|
+
* default and the overwhelmingly common case.
|
|
130
|
+
*/
|
|
131
|
+
export declare function catalogSnapshotRefusal(named: string): string | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Which snapshot a `catalog` source reads, when it names one rather than taking
|
|
134
|
+
* the current one.
|
|
135
|
+
*
|
|
136
|
+
* `undefined` covers "not that kind", "no snapshot named", and "named as blank
|
|
137
|
+
* space", and every caller wants the same thing from all three: read whatever
|
|
138
|
+
* the type is serving. Trimmed for the reason {@link workflowSourceObjectType}
|
|
139
|
+
* trims — an id differing from a real one by a trailing space resolves nothing,
|
|
140
|
+
* and the refusal it earns names a string that looks correct.
|
|
141
|
+
*
|
|
142
|
+
* Deliberately **not** validating: a name this returns may still be one
|
|
143
|
+
* {@link catalogSnapshotRefusal} refuses. Splitting the two is what lets the
|
|
144
|
+
* canvas show the field's contents while telling somebody why it will not run.
|
|
145
|
+
*/
|
|
146
|
+
export declare function workflowSourceSnapshot(node: WorkflowNode | Record<string, unknown>): string | undefined;
|
|
66
147
|
/**
|
|
67
148
|
* How the bytes behind a `file` or `s3` connector are read as records.
|
|
68
149
|
*
|
|
@@ -3982,7 +4063,7 @@ export interface CallableWorkflowBlock {
|
|
|
3982
4063
|
}
|
|
3983
4064
|
export declare function callableWorkflowBlock(ref: CallableWorkflowRef): CallableWorkflowBlock | undefined;
|
|
3984
4065
|
/** Every way a graph can be refused. Exported so a canvas can key off the code. */
|
|
3985
|
-
export declare const WORKFLOW_ISSUE_CODES: readonly ["empty", "invalid-node-id", "duplicate-node-id", "edge-endpoint-missing", "self-edge", "duplicate-edge", "cycle", "no-source", "source-has-input", "no-sink", "duplicate-sink-type", "sink-has-output", "unreachable", "dead-end", "transform-not-named", "source-type-not-named", "call-not-named", "call-plain-has-output", "if-not-named", "if-threshold-invalid", "if-needs-one-input", "branch-not-labelled", "branch-on-plain-edge", "filter-predicate-invalid", "filter-narrows-unacknowledged", "filter-narrows-nothing", "rename-invalid", "aggregate-invalid", "lookup-invalid", "lookup-reference-not-wired", "lookup-nothing-to-enrich", "column-not-produced", "version-pin-invalid"];
|
|
4066
|
+
export declare const WORKFLOW_ISSUE_CODES: readonly ["empty", "invalid-node-id", "duplicate-node-id", "edge-endpoint-missing", "self-edge", "duplicate-edge", "cycle", "no-source", "source-has-input", "no-sink", "duplicate-sink-type", "sink-has-output", "unreachable", "dead-end", "transform-not-named", "source-type-not-named", "source-snapshot-not-an-id", "call-not-named", "call-plain-has-output", "if-not-named", "if-threshold-invalid", "if-needs-one-input", "branch-not-labelled", "branch-on-plain-edge", "filter-predicate-invalid", "filter-narrows-unacknowledged", "filter-narrows-nothing", "rename-invalid", "aggregate-invalid", "lookup-invalid", "lookup-reference-not-wired", "lookup-nothing-to-enrich", "column-not-produced", "version-pin-invalid"];
|
|
3986
4067
|
export type WorkflowIssueCode = (typeof WORKFLOW_ISSUE_CODES)[number];
|
|
3987
4068
|
export interface WorkflowValidationIssue {
|
|
3988
4069
|
code: WorkflowIssueCode;
|
package/dist/catalog.pipeline.js
CHANGED
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
* systems each believing they decide when a load runs.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.REDACTED_SECRET = exports.CATALOG_PIPELINE_STORE = exports.WORKFLOW_ISSUE_CODES = exports.WORKFLOW_CALL_CONTRACT = exports.WORKFLOW_EXECUTION_MODES = exports.WORKFLOW_STATUSES = exports.WORKFLOW_BRANCH_LABELS = exports.NODE_KIND_IS_REUSABLE = exports.REUSABLE_NODE_KINDS = exports.WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS = exports.WORKFLOW_LOOKUP_MAX_FIELDS = exports.WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR = exports.WORKFLOW_AGGREGATE_MAX_SEPARATOR = exports.WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING = exports.WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH = exports.WORKFLOW_AGGREGATE_GROUPS_CEILING = exports.WORKFLOW_AGGREGATE_MAX_GROUPS = exports.WORKFLOW_AGGREGATE_MAX_AGGREGATES = exports.WORKFLOW_AGGREGATE_MAX_GROUP_BY = exports.WORKFLOW_LOOKUP_UNMATCHED = exports.WORKFLOW_AGGREGATE_FUNCTIONS = exports.WORKFLOW_RENAME_MAX_COLUMNS = exports.WORKFLOW_RENAME_UNNAMED = exports.WORKFLOW_FILTER_MAX_VALUES = exports.WORKFLOW_FILTER_MAX_DEPTH = exports.WORKFLOW_FILTER_COLUMN_PATTERN = exports.WORKFLOW_FILTER_OPERATORS = exports.WORKFLOW_FILTER_PREDICATE_KINDS = exports.WORKFLOW_PREDICATE_KINDS = exports.WORKFLOW_CALL_MODES = exports.WORKFLOW_ROW_GAP = exports.WORKFLOW_COLUMN_GAP = exports.WORKFLOW_NODE_HEIGHT = exports.WORKFLOW_NODE_WIDTH = exports.WORKFLOW_NODE_ID_PATTERN = exports.WORKFLOW_NODE_KINDS = exports.WORKFLOW_SKIP_REASONS = exports.CODE_CONTEXT_CONTRACT = exports.TRANSFORM_RUNNER = exports.TRANSFORM_MODES = exports.TRANSFORM_LANGUAGES = exports.SOURCE_FORMATS = exports.CATALOG_SOURCE_TYPE_KEY = exports.CONNECTOR_KINDS = void 0;
|
|
12
|
+
exports.REDACTED_SECRET = exports.CATALOG_PIPELINE_STORE = exports.WORKFLOW_ISSUE_CODES = exports.WORKFLOW_CALL_CONTRACT = exports.WORKFLOW_EXECUTION_MODES = exports.WORKFLOW_STATUSES = exports.WORKFLOW_BRANCH_LABELS = exports.NODE_KIND_IS_REUSABLE = exports.REUSABLE_NODE_KINDS = exports.WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS = exports.WORKFLOW_LOOKUP_MAX_FIELDS = exports.WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR = exports.WORKFLOW_AGGREGATE_MAX_SEPARATOR = exports.WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING = exports.WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH = exports.WORKFLOW_AGGREGATE_GROUPS_CEILING = exports.WORKFLOW_AGGREGATE_MAX_GROUPS = exports.WORKFLOW_AGGREGATE_MAX_AGGREGATES = exports.WORKFLOW_AGGREGATE_MAX_GROUP_BY = exports.WORKFLOW_LOOKUP_UNMATCHED = exports.WORKFLOW_AGGREGATE_FUNCTIONS = exports.WORKFLOW_RENAME_MAX_COLUMNS = exports.WORKFLOW_RENAME_UNNAMED = exports.WORKFLOW_FILTER_MAX_VALUES = exports.WORKFLOW_FILTER_MAX_DEPTH = exports.WORKFLOW_FILTER_COLUMN_PATTERN = exports.WORKFLOW_FILTER_OPERATORS = exports.WORKFLOW_FILTER_PREDICATE_KINDS = exports.WORKFLOW_PREDICATE_KINDS = exports.WORKFLOW_CALL_MODES = exports.WORKFLOW_ROW_GAP = exports.WORKFLOW_COLUMN_GAP = exports.WORKFLOW_NODE_HEIGHT = exports.WORKFLOW_NODE_WIDTH = exports.WORKFLOW_NODE_ID_PATTERN = exports.WORKFLOW_NODE_KINDS = exports.WORKFLOW_SKIP_REASONS = exports.CODE_CONTEXT_CONTRACT = exports.TRANSFORM_RUNNER = exports.TRANSFORM_MODES = exports.TRANSFORM_LANGUAGES = exports.SOURCE_FORMATS = exports.CATALOG_SNAPSHOT_RESERVED_NAMES = exports.CATALOG_SOURCE_SNAPSHOT_KEY = exports.CATALOG_SOURCE_TYPE_KEY = exports.CONNECTOR_KINDS = void 0;
|
|
13
13
|
exports.isConnectorKind = isConnectorKind;
|
|
14
14
|
exports.unreachableConnectorKind = unreachableConnectorKind;
|
|
15
15
|
exports.workflowSourceObjectType = workflowSourceObjectType;
|
|
16
|
+
exports.catalogSnapshotRefusal = catalogSnapshotRefusal;
|
|
17
|
+
exports.workflowSourceSnapshot = workflowSourceSnapshot;
|
|
16
18
|
exports.isSourceFormat = isSourceFormat;
|
|
17
19
|
exports.unreachableSourceFormat = unreachableSourceFormat;
|
|
18
20
|
exports.isTransformLanguage = isTransformLanguage;
|
|
@@ -156,6 +158,12 @@ exports.CONNECTOR_KINDS = [
|
|
|
156
158
|
* snapshot it serves, and a type with nothing committed is refused rather
|
|
157
159
|
* than read as zero rows. See `fetchCatalog` in the pipeline package.
|
|
158
160
|
*
|
|
161
|
+
* A node may instead name **one snapshot by id** — see
|
|
162
|
+
* {@link CATALOG_SOURCE_SNAPSHOT_KEY}, which is how a graph diffs two versions
|
|
163
|
+
* of a type or reprocesses an old one without leaving the model. It is an id
|
|
164
|
+
* and only an id: nothing relative, and nothing that could mean "all of them",
|
|
165
|
+
* which is the reading that produced the measurement above.
|
|
166
|
+
*
|
|
159
167
|
* Not connectable — see `CONNECTION_KINDS` in the react package. A connection
|
|
160
168
|
* is an address and a credential shared by several loads, and this kind has
|
|
161
169
|
* neither.
|
|
@@ -227,6 +235,127 @@ function workflowSourceObjectType(node) {
|
|
|
227
235
|
const trimmed = named.trim();
|
|
228
236
|
return trimmed.length === 0 ? undefined : trimmed;
|
|
229
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* The config key a `catalog` source names **one snapshot** in.
|
|
240
|
+
*
|
|
241
|
+
* ## Why the key is not called `snapshotId`
|
|
242
|
+
*
|
|
243
|
+
* Because `snapshotId` is already taken, by something that is not this, in a
|
|
244
|
+
* place a person reads on the same afternoon. A run body carries a `snapshotId`
|
|
245
|
+
* and it is the **durable run id** — reusing one that already succeeded replays
|
|
246
|
+
* that run and returns its old counts as a fresh success. The two are especially
|
|
247
|
+
* confusable because they are frequently the *same string*: a snapshot's id is
|
|
248
|
+
* caller-supplied and a durable pipeline passes its run id (see
|
|
249
|
+
* {@link SnapshotRef.id}), so `snapshotId` in one field means "run this again"
|
|
250
|
+
* and in the other means "read that load", and nothing about the spelling says
|
|
251
|
+
* which. `objectSnapshot` pairs with {@link CATALOG_SOURCE_TYPE_KEY} instead —
|
|
252
|
+
* the two fields of this kind read as one sentence, *this object type, this
|
|
253
|
+
* snapshot of it* — and cannot be pasted into each other's place by accident.
|
|
254
|
+
*
|
|
255
|
+
* Absent is the ordinary case and means the snapshot the type is **currently
|
|
256
|
+
* serving**, resolved when the node runs. That default is not spelled: there is
|
|
257
|
+
* no `objectSnapshot: "current"`, because a second spelling of the default is a
|
|
258
|
+
* second thing to keep in step, and because the words it would be spelled with
|
|
259
|
+
* are exactly the ones {@link catalogSnapshotRefusal} refuses.
|
|
260
|
+
*/
|
|
261
|
+
exports.CATALOG_SOURCE_SNAPSHOT_KEY = 'objectSnapshot';
|
|
262
|
+
/**
|
|
263
|
+
* The words a snapshot may not be named by, whatever a store's ids look like.
|
|
264
|
+
*
|
|
265
|
+
* Two different mistakes, refused together because they are refused for one
|
|
266
|
+
* reason — that a name here has to mean the same load on every run:
|
|
267
|
+
*
|
|
268
|
+
* - **Relative references.** `previous`, `last`, `newest`. The thing somebody
|
|
269
|
+
* actually wants when diffing, and the property a graph must not have: it
|
|
270
|
+
* resolves against whatever has been committed by the time the node runs, so
|
|
271
|
+
* the same stored graph reads different data on Tuesday than it did on Monday
|
|
272
|
+
* while its {@link workflowGraphHash} says nothing changed. And it is not
|
|
273
|
+
* merely unstable, it is unstable *per node*: a diff graph with one source on
|
|
274
|
+
* `current` and one on `previous` resolves them at two different instants, so
|
|
275
|
+
* a commit landing between the two probes leaves both pointing at the same
|
|
276
|
+
* load — an empty diff, reported as success, which is the exact green-and-
|
|
277
|
+
* silent failure this kind was built to end. The friction they would have
|
|
278
|
+
* saved is answered by the picker instead: the inspector lists the snapshots,
|
|
279
|
+
* so an id is chosen from a list rather than looked up.
|
|
280
|
+
* - **Anything that could mean "all of them".** `all`, `*`, `%`. The measurement
|
|
281
|
+
* in {@link CONNECTOR_KINDS} is what a read of every retained snapshot at once
|
|
282
|
+
* looks like — 89,440 rows where 44,720 were current, `succeeded`, every `SUM`
|
|
283
|
+
* doubled — and the whole reason this kind names a type rather than a table is
|
|
284
|
+
* that a type cannot be named that way. A snapshot must not reintroduce it.
|
|
285
|
+
*
|
|
286
|
+
* Folded to lower case before comparison, so `Latest` is refused too. An id that
|
|
287
|
+
* genuinely *is* one of these words cannot be named here, and that is the trade:
|
|
288
|
+
* a handful of unusable ids against a name whose meaning a reader cannot get
|
|
289
|
+
* wrong.
|
|
290
|
+
*/
|
|
291
|
+
exports.CATALOG_SNAPSHOT_RESERVED_NAMES = [
|
|
292
|
+
'current',
|
|
293
|
+
'latest',
|
|
294
|
+
'newest',
|
|
295
|
+
'head',
|
|
296
|
+
'previous',
|
|
297
|
+
'prior',
|
|
298
|
+
'last',
|
|
299
|
+
'oldest',
|
|
300
|
+
'first',
|
|
301
|
+
'all',
|
|
302
|
+
'any',
|
|
303
|
+
'none',
|
|
304
|
+
];
|
|
305
|
+
/**
|
|
306
|
+
* Why a snapshot name cannot be used, or `undefined` when it can.
|
|
307
|
+
*
|
|
308
|
+
* A sentence rather than a boolean because three callers say it — the canvas,
|
|
309
|
+
* `validateWorkflow`, and `fetchCatalog` at the moment of the read — and three
|
|
310
|
+
* hand-written phrasings of one rule is how a refusal on the canvas stops
|
|
311
|
+
* matching the refusal on the run.
|
|
312
|
+
*
|
|
313
|
+
* A blank name is not a refusal: absent means the current snapshot, which is the
|
|
314
|
+
* default and the overwhelmingly common case.
|
|
315
|
+
*/
|
|
316
|
+
function catalogSnapshotRefusal(named) {
|
|
317
|
+
const trimmed = named.trim();
|
|
318
|
+
if (trimmed.length === 0)
|
|
319
|
+
return undefined;
|
|
320
|
+
const folded = trimmed.toLowerCase();
|
|
321
|
+
if (exports.CATALOG_SNAPSHOT_RESERVED_NAMES.some((reserved) => reserved === folded)) {
|
|
322
|
+
return `"${trimmed}" is not a snapshot id, it is a way of describing one. A source reads the snapshot with the id it names, and nothing else: a relative reference would resolve against whatever had been committed by the time the node ran, so the same graph would read different data on different days with no version change to show for it — and two nodes resolving "current" and "previous" a second apart can end up on the same load and report an empty diff as success. Leave this blank for the snapshot the type is currently serving, or name one id from the list. The reserved words are ${exports.CATALOG_SNAPSHOT_RESERVED_NAMES.join(', ')}.`;
|
|
323
|
+
}
|
|
324
|
+
// A wildcard is the "all of them" reading wearing punctuation, and a leading
|
|
325
|
+
// `-`, `~` or `^` is how every version-control system in the world spells "one
|
|
326
|
+
// before". Both are refused by shape rather than by membership, because there
|
|
327
|
+
// is no end to the list of ways to write them.
|
|
328
|
+
if (/[*%?]/.test(trimmed) || /^[-~^+]/.test(trimmed)) {
|
|
329
|
+
return `"${trimmed}" cannot name a snapshot. A wildcard or an offset would either match several loads at once — which is the read this source kind exists to make impossible, because the physical table holds every load ever committed — or resolve to a different one on every run. Name one snapshot id, or leave this blank for the one the type is currently serving.`;
|
|
330
|
+
}
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Which snapshot a `catalog` source reads, when it names one rather than taking
|
|
335
|
+
* the current one.
|
|
336
|
+
*
|
|
337
|
+
* `undefined` covers "not that kind", "no snapshot named", and "named as blank
|
|
338
|
+
* space", and every caller wants the same thing from all three: read whatever
|
|
339
|
+
* the type is serving. Trimmed for the reason {@link workflowSourceObjectType}
|
|
340
|
+
* trims — an id differing from a real one by a trailing space resolves nothing,
|
|
341
|
+
* and the refusal it earns names a string that looks correct.
|
|
342
|
+
*
|
|
343
|
+
* Deliberately **not** validating: a name this returns may still be one
|
|
344
|
+
* {@link catalogSnapshotRefusal} refuses. Splitting the two is what lets the
|
|
345
|
+
* canvas show the field's contents while telling somebody why it will not run.
|
|
346
|
+
*/
|
|
347
|
+
function workflowSourceSnapshot(node) {
|
|
348
|
+
if (Reflect.get(node, 'sourceKind') !== 'catalog')
|
|
349
|
+
return undefined;
|
|
350
|
+
const config = Reflect.get(node, 'config');
|
|
351
|
+
if (typeof config !== 'object' || config === null)
|
|
352
|
+
return undefined;
|
|
353
|
+
const named = Reflect.get(config, exports.CATALOG_SOURCE_SNAPSHOT_KEY);
|
|
354
|
+
if (typeof named !== 'string')
|
|
355
|
+
return undefined;
|
|
356
|
+
const trimmed = named.trim();
|
|
357
|
+
return trimmed.length === 0 ? undefined : trimmed;
|
|
358
|
+
}
|
|
230
359
|
/**
|
|
231
360
|
* How the bytes behind a `file` or `s3` connector are read as records.
|
|
232
361
|
*
|
|
@@ -2429,6 +2558,16 @@ exports.WORKFLOW_ISSUE_CODES = [
|
|
|
2429
2558
|
* type to guess, and guessing would read somebody else's data.
|
|
2430
2559
|
*/
|
|
2431
2560
|
'source-type-not-named',
|
|
2561
|
+
/**
|
|
2562
|
+
* A `catalog` source whose named snapshot is not a name — a relative
|
|
2563
|
+
* reference, or something that could match several loads.
|
|
2564
|
+
*
|
|
2565
|
+
* Its own code rather than part of `source-type-not-named`, because the node
|
|
2566
|
+
* is not missing anything: it names a type and it names a snapshot, and the
|
|
2567
|
+
* snapshot is the wrong *kind* of thing. See {@link catalogSnapshotRefusal}
|
|
2568
|
+
* for both mistakes and why one graph must not be able to make either.
|
|
2569
|
+
*/
|
|
2570
|
+
'source-snapshot-not-an-id',
|
|
2432
2571
|
'call-not-named',
|
|
2433
2572
|
/**
|
|
2434
2573
|
* A plain call wired into something. See {@link WORKFLOW_CALL_MODES}: a plain
|
|
@@ -2939,20 +3078,8 @@ function nodeIsUnconfigured(node) {
|
|
|
2939
3078
|
message: `Transform node "${node.name}" (${node.id}) names no transform, so there is no code for it to run.`,
|
|
2940
3079
|
};
|
|
2941
3080
|
}
|
|
2942
|
-
if (node.kind === 'source'
|
|
2943
|
-
|
|
2944
|
-
// allowed to arrive from a named connection, so a blank field on the node is
|
|
2945
|
-
// not evidence of anything. A `catalog` source has no connection to borrow
|
|
2946
|
-
// from — the type name is the whole configuration — so a blank one is
|
|
2947
|
-
// decidable here.
|
|
2948
|
-
if (workflowSourceObjectType(node) === undefined) {
|
|
2949
|
-
return {
|
|
2950
|
-
code: 'source-type-not-named',
|
|
2951
|
-
nodeIds: [node.id],
|
|
2952
|
-
message: `Source "${node.name}" (${node.id}) reads from the catalog but does not say which object type, so there is nothing for it to read. Name the type on the node; there is no default, because a default would read somebody else's data.`,
|
|
2953
|
-
};
|
|
2954
|
-
}
|
|
2955
|
-
}
|
|
3081
|
+
if (node.kind === 'source')
|
|
3082
|
+
return sourceIsUnconfigured(node);
|
|
2956
3083
|
if (node.kind === 'call')
|
|
2957
3084
|
return callIsUnnamed(node);
|
|
2958
3085
|
if (node.kind === 'if')
|
|
@@ -2967,6 +3094,45 @@ function nodeIsUnconfigured(node) {
|
|
|
2967
3094
|
return lookupIsUnconfigured(node);
|
|
2968
3095
|
return undefined;
|
|
2969
3096
|
}
|
|
3097
|
+
/**
|
|
3098
|
+
* A source whose own config cannot be run, which is only ever a `catalog` one.
|
|
3099
|
+
*
|
|
3100
|
+
* Every other kind's address is allowed to arrive from a named connection, so a
|
|
3101
|
+
* blank field on the node is not evidence of anything — a `sql` source with no
|
|
3102
|
+
* url is the normal shape of one reading through a connection. A `catalog`
|
|
3103
|
+
* source has no connection to borrow from, so both of its fields are decidable
|
|
3104
|
+
* from the node alone.
|
|
3105
|
+
*
|
|
3106
|
+
* Its own function beside the ones every other configured kind has, rather than
|
|
3107
|
+
* inline in the dispatcher, for the reason `canonicalSource` is one: a
|
|
3108
|
+
* dispatcher that carries one case inline is where the next case gets written
|
|
3109
|
+
* inline too.
|
|
3110
|
+
*/
|
|
3111
|
+
function sourceIsUnconfigured(node) {
|
|
3112
|
+
if (node.sourceKind !== 'catalog')
|
|
3113
|
+
return undefined;
|
|
3114
|
+
if (workflowSourceObjectType(node) === undefined) {
|
|
3115
|
+
return {
|
|
3116
|
+
code: 'source-type-not-named',
|
|
3117
|
+
nodeIds: [node.id],
|
|
3118
|
+
message: `Source "${node.name}" (${node.id}) reads from the catalog but does not say which object type, so there is nothing for it to read. Name the type on the node; there is no default, because a default would read somebody else's data.`,
|
|
3119
|
+
};
|
|
3120
|
+
}
|
|
3121
|
+
// A named snapshot, when there is one. Refused here rather than only at the
|
|
3122
|
+
// moment of the read for the reason the type name is: a source that cannot
|
|
3123
|
+
// resolve what it names fails inside a durable step halfway through a load,
|
|
3124
|
+
// and the graph it fails on is one somebody was allowed to save.
|
|
3125
|
+
const snapshot = workflowSourceSnapshot(node);
|
|
3126
|
+
const refusal = snapshot === undefined ? undefined : catalogSnapshotRefusal(snapshot);
|
|
3127
|
+
if (refusal !== undefined) {
|
|
3128
|
+
return {
|
|
3129
|
+
code: 'source-snapshot-not-an-id',
|
|
3130
|
+
nodeIds: [node.id],
|
|
3131
|
+
message: `Source "${node.name}" (${node.id}) cannot read the snapshot it names. ${refusal}`,
|
|
3132
|
+
};
|
|
3133
|
+
}
|
|
3134
|
+
return undefined;
|
|
3135
|
+
}
|
|
2970
3136
|
/**
|
|
2971
3137
|
* An aggregate this service will not store.
|
|
2972
3138
|
*
|
|
@@ -3698,6 +3864,18 @@ function canonicalSource(node) {
|
|
|
3698
3864
|
node.mode ?? 'full',
|
|
3699
3865
|
// Sorted keys, so a canvas that rewrites the object in a different order
|
|
3700
3866
|
// does not look like an edit.
|
|
3867
|
+
//
|
|
3868
|
+
// This is also where `objectSnapshot` enters the fingerprint, and it needs
|
|
3869
|
+
// no line of its own to do it: a config key that is absent contributes
|
|
3870
|
+
// nothing, so every source drawn before a snapshot could be named hashes to
|
|
3871
|
+
// exactly the string it always did, and a node repointed from the current
|
|
3872
|
+
// load to a named one is a new version of the graph — which it is, as surely
|
|
3873
|
+
// as repointing a SQL source at another query. The rule the rest of this
|
|
3874
|
+
// file applies by appending optional components only when set, this case
|
|
3875
|
+
// gets for free. What it does NOT get for free is the empty string: a form
|
|
3876
|
+
// that stored `objectSnapshot: ""` for a blank field would renumber every
|
|
3877
|
+
// graph it touched while meaning "the current one", which is why
|
|
3878
|
+
// `sourceConfigFrom` in the react package omits the key instead.
|
|
3701
3879
|
sortedEntries(node.config),
|
|
3702
3880
|
// Appended only when there is a reference, exactly as `edge.branch` above
|
|
3703
3881
|
// is appended only when there is a label, and for the same reason: adding
|
|
@@ -4161,6 +4339,34 @@ function lookupProducedColumns(node, upstream) {
|
|
|
4161
4339
|
* names — `fetchCatalog` asks for exactly those and the store returns exactly
|
|
4162
4340
|
* those — so the set is closed in the sense {@link workflowKnownColumns}
|
|
4163
4341
|
* requires: an upper bound that holds whatever is upstream, since nothing is.
|
|
4342
|
+
*
|
|
4343
|
+
* ## …and it stops answering the moment the node names a snapshot
|
|
4344
|
+
*
|
|
4345
|
+
* This is the subtle one, and the answer went the other way at first. The
|
|
4346
|
+
* argument for keeping the published set is that the store selects the type's
|
|
4347
|
+
* *declared* properties whatever snapshot is being read, so the record keys come
|
|
4348
|
+
* back the same either way — a property added after the old load simply arrives
|
|
4349
|
+
* null. On that reading the set is still an upper bound and still closed.
|
|
4350
|
+
*
|
|
4351
|
+
* It is wrong, and it is wrong in **both** directions, which is what settles it.
|
|
4352
|
+
* The published properties describe the type as it is declared *now*; the
|
|
4353
|
+
* snapshot was written under whatever was declared *then*, and nothing in the
|
|
4354
|
+
* graph, the registry or this function can say whether those are the same
|
|
4355
|
+
* declaration. Rename a property — publish `unit_mel`, load, republish as
|
|
4356
|
+
* `unitMel` — and reading the old snapshot gives:
|
|
4357
|
+
*
|
|
4358
|
+
* - a filter on `unitMel` **allowed**, because the published set has it, that
|
|
4359
|
+
* matches no row, because that column is null for every row of that load. The
|
|
4360
|
+
* graph comes out empty and green: the failure this whole check exists to
|
|
4361
|
+
* catch, waved through by the check itself.
|
|
4362
|
+
* - a filter on `unit_mel` **refused**, because the published set no longer has
|
|
4363
|
+
* it — a wrong refusal of a graph that is right about the load it named.
|
|
4364
|
+
*
|
|
4365
|
+
* So the published schema is a claim about the type and not about the snapshot,
|
|
4366
|
+
* and the two are the same claim only for the snapshot the type is serving.
|
|
4367
|
+
* Where a claim cannot be proved this file says `undefined` and stays silent
|
|
4368
|
+
* — the answer it already gives for four kinds — rather than a set that is
|
|
4369
|
+
* confidently the wrong shape.
|
|
4164
4370
|
*/
|
|
4165
4371
|
function sourceProducedColumns(node, knowledge) {
|
|
4166
4372
|
const kind = node.sourceKind;
|
|
@@ -4168,6 +4374,10 @@ function sourceProducedColumns(node, knowledge) {
|
|
|
4168
4374
|
return undefined;
|
|
4169
4375
|
}
|
|
4170
4376
|
if (kind === 'catalog') {
|
|
4377
|
+
// A named snapshot is a load whose shape the published type does not
|
|
4378
|
+
// describe. See the docblock: silence, not the current property set.
|
|
4379
|
+
if (workflowSourceSnapshot(node) !== undefined)
|
|
4380
|
+
return undefined;
|
|
4171
4381
|
const named = workflowSourceObjectType(node);
|
|
4172
4382
|
if (named === undefined || knowledge === undefined)
|
|
4173
4383
|
return undefined;
|
package/dist/catalog.store.d.ts
CHANGED
|
@@ -9,6 +9,77 @@ import type { CatalogObjectQuery, CatalogObjectTypeDef } from './catalog.types';
|
|
|
9
9
|
* the application's own tables, a separate warehouse schema, or a column store,
|
|
10
10
|
* without the screens above it changing.
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* Where a snapshot's rows have been copied to, outside the database.
|
|
14
|
+
*
|
|
15
|
+
* **Vocabulary only — this package writes none of these and reads none of them.**
|
|
16
|
+
* It is declared here because it belongs on {@link SnapshotRef}, and a
|
|
17
|
+
* `SnapshotRef` is what every screen and every caller already holds. The
|
|
18
|
+
* machinery that produces an archive lives in
|
|
19
|
+
* `@dudousxd/nestjs-catalog-pipeline`, which is the package already allowed to
|
|
20
|
+
* know what a bucket is; the catalog itself stays unable to name one.
|
|
21
|
+
*
|
|
22
|
+
* ## What its presence means, and what it does not
|
|
23
|
+
*
|
|
24
|
+
* Present means *a verified copy of this snapshot exists at `path`*. It says
|
|
25
|
+
* nothing about whether the rows are still in the database — those are two
|
|
26
|
+
* independent facts and a caller that conflates them gets the dangerous reading
|
|
27
|
+
* in both directions. Which is why "are the rows still there" is a *different*
|
|
28
|
+
* field, {@link SnapshotRef.droppedAt}, and the two compose as a grid rather
|
|
29
|
+
* than as one ladder:
|
|
30
|
+
*
|
|
31
|
+
* - **neither** — the snapshot is in the database and nowhere else.
|
|
32
|
+
* - **`archive` only** — copied, not moved. Reads are unchanged and cost what
|
|
33
|
+
* they always did.
|
|
34
|
+
* - **`droppedAt` only** — a tombstone. The record survives so run history
|
|
35
|
+
* stays resolvable; the data does not, and no read of it can succeed.
|
|
36
|
+
* - **both** — the snapshot lives in object storage. Still identified, still
|
|
37
|
+
* recoverable, and **not** the same price as a read of a hot snapshot.
|
|
38
|
+
* {@link bytes} is here so a screen can say which it is about to do rather
|
|
39
|
+
* than presenting the two as one click.
|
|
40
|
+
*
|
|
41
|
+
* A snapshot with no `SnapshotRef` at all is the fifth state, and it is the
|
|
42
|
+
* only one that means *gone*: nothing left to name it, and every
|
|
43
|
+
* `catalog_connector_run` that produced it now points at nothing.
|
|
44
|
+
*/
|
|
45
|
+
export interface SnapshotArchiveRef {
|
|
46
|
+
/** The only format written today. Named rather than assumed, so a second one can arrive. */
|
|
47
|
+
format: 'parquet';
|
|
48
|
+
/**
|
|
49
|
+
* The disk the bytes went to, when a host named one.
|
|
50
|
+
*
|
|
51
|
+
* Absent means `path` is resolved by whatever wrote it — a filesystem path in
|
|
52
|
+
* a test, a bucket a host configured. The disk is recorded rather than
|
|
53
|
+
* inferred because a deployment may mount several and "which one" is not
|
|
54
|
+
* recoverable from the path.
|
|
55
|
+
*/
|
|
56
|
+
disk?: string;
|
|
57
|
+
/** The directory holding this snapshot's parts and its manifest, without a trailing slash. */
|
|
58
|
+
path: string;
|
|
59
|
+
/** Rows in the archive. Compared against the snapshot's own count when it was written. */
|
|
60
|
+
rowCount: number;
|
|
61
|
+
/** Size on the far end, for a screen that has to say what a read will cost. */
|
|
62
|
+
bytes: number;
|
|
63
|
+
/**
|
|
64
|
+
* SHA-256 over the row stream in `_row` order, as the manifest records it.
|
|
65
|
+
*
|
|
66
|
+
* A row count catches a truncated archive and nothing else: an archive with
|
|
67
|
+
* every row present and one value corrupted has exactly the right count. This
|
|
68
|
+
* is the check that fails for that, and it is only meaningful because the
|
|
69
|
+
* stream is ordered — see the store's `streamSnapshot`.
|
|
70
|
+
*/
|
|
71
|
+
checksum: string;
|
|
72
|
+
writtenAt: string;
|
|
73
|
+
/**
|
|
74
|
+
* When the archive was last read back and found to match.
|
|
75
|
+
*
|
|
76
|
+
* Separate from {@link writtenAt} because they answer different questions and
|
|
77
|
+
* a caller about to delete rows needs the second one. Absent means written but
|
|
78
|
+
* not confirmed readable, which is exactly the state in which nothing may be
|
|
79
|
+
* deleted.
|
|
80
|
+
*/
|
|
81
|
+
verifiedAt?: string;
|
|
82
|
+
}
|
|
12
83
|
/** A point-in-time view of one object type. */
|
|
13
84
|
export interface SnapshotRef {
|
|
14
85
|
/**
|
|
@@ -27,6 +98,51 @@ export interface SnapshotRef {
|
|
|
27
98
|
principalId: string;
|
|
28
99
|
/** Free-form provenance: which base, which file, which workflow run. */
|
|
29
100
|
labels?: Record<string, string>;
|
|
101
|
+
/**
|
|
102
|
+
* Where this snapshot's rows have been copied to, if anywhere.
|
|
103
|
+
*
|
|
104
|
+
* Optional, and absent is the answer for every snapshot in every deployment
|
|
105
|
+
* that archives nothing — which is all of them until a host asks. See
|
|
106
|
+
* {@link SnapshotArchiveRef} for the states it composes into.
|
|
107
|
+
*/
|
|
108
|
+
archive?: SnapshotArchiveRef;
|
|
109
|
+
/**
|
|
110
|
+
* When this snapshot's rows were deleted, if they have been.
|
|
111
|
+
*
|
|
112
|
+
* Present makes this ref a **tombstone**: the record of the load survives —
|
|
113
|
+
* who wrote it, when, under which labels, and how many rows it held — while
|
|
114
|
+
* the rows themselves are gone. Absent is the answer for every snapshot that
|
|
115
|
+
* still has its data, which is every snapshot until something drops one.
|
|
116
|
+
*
|
|
117
|
+
* ## Why the record is kept rather than deleted with the rows
|
|
118
|
+
*
|
|
119
|
+
* A snapshot is a whole version of an object type, and committing a new one
|
|
120
|
+
* leaves the old rows in place beside the new ones. Nothing removed them, so
|
|
121
|
+
* a type loaded daily holds every day it has ever been loaded; one deployment
|
|
122
|
+
* reached 441 retained snapshots and 100 GB and the database then refused
|
|
123
|
+
* connections. The obvious repair — drop old snapshots — was blocked by a
|
|
124
|
+
* real objection, that `catalog_connector_run` records the snapshot each run
|
|
125
|
+
* produced, so deleting the snapshot turns the run history into a list of
|
|
126
|
+
* pointers to nothing.
|
|
127
|
+
*
|
|
128
|
+
* The objection is about the *record*, and the disk is held by the *rows*.
|
|
129
|
+
* They are separable, and separating them is the whole of this field: the
|
|
130
|
+
* bytes can go while the run that produced them stays answerable. It says
|
|
131
|
+
* nothing about *when* anything should be dropped — there is no retention
|
|
132
|
+
* policy anywhere in this package and this field does not imply one.
|
|
133
|
+
*
|
|
134
|
+
* ## What it obliges a reader to do
|
|
135
|
+
*
|
|
136
|
+
* Refuse, out loud. A read of a tombstoned snapshot must fail with a sentence
|
|
137
|
+
* naming the drop and its date; it must never come back as zero rows, which
|
|
138
|
+
* is indistinguishable from a load that collapsed and is the failure this
|
|
139
|
+
* codebase refuses everywhere else. The store enforces the one invariant that
|
|
140
|
+
* keeps ordinary reads free of the question: **the snapshot a type is serving
|
|
141
|
+
* can never be tombstoned**, so only an explicit read of history can meet one.
|
|
142
|
+
*
|
|
143
|
+
* ISO-8601, like {@link createdAt}.
|
|
144
|
+
*/
|
|
145
|
+
droppedAt?: string;
|
|
30
146
|
}
|
|
31
147
|
/**
|
|
32
148
|
* How a store holds history. One list, so nothing narrows a stored or
|
|
@@ -290,6 +406,59 @@ export interface CatalogSnapshotStreamStore extends CatalogReadStore {
|
|
|
290
406
|
}
|
|
291
407
|
/** A store that can stream a whole snapshot. See {@link CatalogSnapshotStreamStore}. */
|
|
292
408
|
export declare function supportsSnapshotStreams(store: unknown): store is CatalogSnapshotStreamStore;
|
|
409
|
+
/** Where one snapshot id turned out to live. */
|
|
410
|
+
export interface CatalogSnapshotLocation {
|
|
411
|
+
/** The object type the snapshot belongs to. */
|
|
412
|
+
typeName: string;
|
|
413
|
+
/** The snapshot itself, tombstone and archive included. */
|
|
414
|
+
snapshot: SnapshotRef;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* A store that can say what a snapshot id refers to, without being told the type.
|
|
418
|
+
*
|
|
419
|
+
* ## Why this is a question and not an inference
|
|
420
|
+
*
|
|
421
|
+
* Because a caller naming a snapshot has exactly one thing — a string — and
|
|
422
|
+
* every wrong answer about it is silent. {@link CatalogReadStore.read} given an
|
|
423
|
+
* id that does not exist returns `{ rows: [], total: 0 }`, which is the same
|
|
424
|
+
* answer it gives for a snapshot that is genuinely empty, for a filter that
|
|
425
|
+
* excluded everything, and for a load that collapsed. Existence cannot be
|
|
426
|
+
* inferred from a count.
|
|
427
|
+
*
|
|
428
|
+
* {@link CatalogReadStore.listSnapshots} answers *most* of it: the snapshot is
|
|
429
|
+
* in the type's list or it is not, and the ref carries {@link
|
|
430
|
+
* SnapshotRef.droppedAt} and {@link SnapshotRef.archive}. What it cannot answer
|
|
431
|
+
* is the third case, and the third case is the one somebody actually hits — an
|
|
432
|
+
* id copied off the wrong type's history, or off a run that loaded something
|
|
433
|
+
* else. "There is no such snapshot" and "that snapshot belongs to
|
|
434
|
+
* AfFleetReplica" send a person to two different places, and only a lookup that
|
|
435
|
+
* is not scoped to one type can tell them apart.
|
|
436
|
+
*
|
|
437
|
+
* A list rather than an option, because ids are caller-supplied: a run that
|
|
438
|
+
* loads two types under one durable run id gives both snapshots the same id, and
|
|
439
|
+
* reporting one of them would be reporting a coin toss.
|
|
440
|
+
*
|
|
441
|
+
* ## Optional, like every other capability here
|
|
442
|
+
*
|
|
443
|
+
* The caller degrades rather than refuses when it is absent — `listSnapshots`
|
|
444
|
+
* still separates missing from tombstoned, and the refusal simply stops claiming
|
|
445
|
+
* to have checked the other types. Adapters are free to skip it; today the only
|
|
446
|
+
* store that implements {@link CatalogSnapshotStreamStore} is the only one that
|
|
447
|
+
* can serve a `catalog` source at all, and it is the one that implements this.
|
|
448
|
+
*/
|
|
449
|
+
export interface CatalogSnapshotLookupStore extends CatalogReadStore {
|
|
450
|
+
/**
|
|
451
|
+
* Every snapshot in this store carrying `snapshotId`, whatever its type.
|
|
452
|
+
*
|
|
453
|
+
* Empty means no type has one. This is an **identity** question and not a
|
|
454
|
+
* read: it must answer for a tombstoned snapshot exactly as it answers for a
|
|
455
|
+
* live one, because a caller that cannot see the tombstone is a caller that
|
|
456
|
+
* reports it as missing.
|
|
457
|
+
*/
|
|
458
|
+
locateSnapshot(snapshotId: string): Promise<CatalogSnapshotLocation[]>;
|
|
459
|
+
}
|
|
460
|
+
/** A store that can resolve a snapshot id. See {@link CatalogSnapshotLookupStore}. */
|
|
461
|
+
export declare function supportsSnapshotLookup(store: unknown): store is CatalogSnapshotLookupStore;
|
|
293
462
|
/** A store that owns its copy of the data and can be loaded into. */
|
|
294
463
|
export interface CatalogWriteStore extends CatalogReadStore {
|
|
295
464
|
/**
|
|
@@ -347,7 +516,25 @@ export interface CatalogWriteStore extends CatalogReadStore {
|
|
|
347
516
|
* indistinguishable from a completed one that happened to lose rows.
|
|
348
517
|
*/
|
|
349
518
|
commit(type: CatalogObjectTypeDef, snapshotId: string): Promise<SnapshotRef>;
|
|
350
|
-
/**
|
|
519
|
+
/**
|
|
520
|
+
* Drop a snapshot's rows. Refuses the currently-committed one.
|
|
521
|
+
*
|
|
522
|
+
* **The rows, and not necessarily the record.** A store that keeps a snapshot
|
|
523
|
+
* list should keep the entry and mark it {@link SnapshotRef.droppedAt} rather
|
|
524
|
+
* than removing it, because the entry is what makes a connector run that
|
|
525
|
+
* names this snapshot still answerable — see that field for the argument in
|
|
526
|
+
* full. A store whose record and rows are the same object has nothing to
|
|
527
|
+
* keep, and reports no `droppedAt` because it has none to report.
|
|
528
|
+
*
|
|
529
|
+
* Idempotent: dropping a snapshot whose rows are already gone is a no-op that
|
|
530
|
+
* leaves the original drop time standing, so a retried step does not rewrite
|
|
531
|
+
* history to the moment of its retry.
|
|
532
|
+
*
|
|
533
|
+
* Two refusals follow from a tombstone existing, and both belong to the store
|
|
534
|
+
* because it is the only thing that can see the state: a tombstoned snapshot
|
|
535
|
+
* may not be {@link commit}ted — that is exactly how a published type comes to
|
|
536
|
+
* serve nothing — and a read of one must fail rather than return zero rows.
|
|
537
|
+
*/
|
|
351
538
|
dropSnapshot(type: CatalogObjectTypeDef, snapshotId: string): Promise<void>;
|
|
352
539
|
/**
|
|
353
540
|
* Which snapshot this store is serving for `type`, or `undefined` when it has
|
package/dist/catalog.store.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.CATALOG_STORE = exports.CatalogColumnCollisionError = exports.UnsafeIden
|
|
|
4
4
|
exports.isCatalogStoreCapabilities = isCatalogStoreCapabilities;
|
|
5
5
|
exports.supportsObjectFilters = supportsObjectFilters;
|
|
6
6
|
exports.supportsSnapshotStreams = supportsSnapshotStreams;
|
|
7
|
+
exports.supportsSnapshotLookup = supportsSnapshotLookup;
|
|
7
8
|
exports.isReservedColumn = isReservedColumn;
|
|
8
9
|
exports.findColumnCollisions = findColumnCollisions;
|
|
9
10
|
exports.assertNoColumnCollisions = assertNoColumnCollisions;
|
|
@@ -60,6 +61,12 @@ function supportsSnapshotStreams(store) {
|
|
|
60
61
|
store !== null &&
|
|
61
62
|
typeof Reflect.get(store, 'streamSnapshot') === 'function');
|
|
62
63
|
}
|
|
64
|
+
/** A store that can resolve a snapshot id. See {@link CatalogSnapshotLookupStore}. */
|
|
65
|
+
function supportsSnapshotLookup(store) {
|
|
66
|
+
return (typeof store === 'object' &&
|
|
67
|
+
store !== null &&
|
|
68
|
+
typeof Reflect.get(store, 'locateSnapshot') === 'function');
|
|
69
|
+
}
|
|
63
70
|
/**
|
|
64
71
|
* The columns a snapshot-emulating store adds to every object table.
|
|
65
72
|
*
|
package/dist/client.d.ts
CHANGED
|
@@ -155,7 +155,7 @@ export declare const catalogRoutes: {
|
|
|
155
155
|
};
|
|
156
156
|
export type { CatalogConnection, CatalogConnector, ConnectionCheck, CatalogTransform, CatalogTransformFunction, CatalogTransformInput, CatalogRecordTransformFunction, CatalogRecordTransformInput, CatalogWorkflow, CatalogWorkflowCapabilities, CatalogWorkflowRelease, ConnectorKind, ConnectorRun, TransformLanguage, TransformMode, TransformResult, CallableWorkflowRef, WorkflowBranchLabel, WorkflowCallEnvelope, WorkflowCallMode, WorkflowCallNode, WorkflowCallOutput, WorkflowEdge, WorkflowExecutionMode, WorkflowFilterAll, WorkflowFilterAny, WorkflowAggregate, WorkflowAggregateFunction, WorkflowAggregateNode, WorkflowFilterComparison, WorkflowFilterGroup, WorkflowFilterNode, WorkflowFilterOneOf, WorkflowFilterOperator, WorkflowFilterPredicate, WorkflowFilterPredicateKind, WorkflowFilterPresence, WorkflowFilterValue, WorkflowGraph, WorkflowEnvPredicate, WorkflowIfNode, WorkflowIfPredicate, WorkflowIssueCode, WorkflowNode, WorkflowNodeKind, WorkflowNodeOutcome, WorkflowPredicateKind, WorkflowInputFilter, WorkflowLookupNode, WorkflowLookupUnmatched, WorkflowRenameNode, WorkflowRenameUnnamed, WorkflowRowCountPredicate, WorkflowRunOrderEntry, WorkflowSinkNode, WorkflowSkipReason, WorkflowSourceNode, WorkflowStageRef, WorkflowTransformNode, WorkflowValidationIssue, CatalogReusableNode, CatalogReusableNodeUse, ReusableNodeBody, ReusableNodeKind, ReusableNodeRef, ReusableSinkBody, ReusableSourceBody, SourceFormat, VersionPinCopy, } from './catalog.pipeline';
|
|
157
157
|
export { type TransformShape, transformDeclaresModule, transformShape, } from './transform-shape';
|
|
158
|
-
export { CATALOG_SOURCE_TYPE_KEY, CONNECTOR_KINDS, isConnectorKind, isSourceFormat, isTransformLanguage, isTransformMode, TRANSFORM_MODES, transformMode, recordModeRefusal, SOURCE_FORMATS, isWorkflowEdge, isWorkflowNode, liveWorkflowVersion, REDACTED_SECRET, TRANSFORM_LANGUAGES, readWorkflowCallOutput, WORKFLOW_CALL_CONTRACT, WORKFLOW_CALL_MODES, isWorkflowCallMode, unreachableCallMode, workflowCallMode, applyReusableNode, reusableNodeBodyOf, isReusableNodeBody, isReusableNodeKind, REUSABLE_NODE_KINDS, NODE_KIND_IS_REUSABLE, nodeKindIsReusable, unreachableReusableNodeKind, describeLiveVersion, describeVersionPin, } from './catalog.pipeline';
|
|
158
|
+
export { CATALOG_SOURCE_TYPE_KEY, CATALOG_SNAPSHOT_RESERVED_NAMES, CATALOG_SOURCE_SNAPSHOT_KEY, catalogSnapshotRefusal, CONNECTOR_KINDS, isConnectorKind, isSourceFormat, isTransformLanguage, isTransformMode, TRANSFORM_MODES, transformMode, recordModeRefusal, SOURCE_FORMATS, isWorkflowEdge, isWorkflowNode, liveWorkflowVersion, REDACTED_SECRET, TRANSFORM_LANGUAGES, readWorkflowCallOutput, WORKFLOW_CALL_CONTRACT, WORKFLOW_CALL_MODES, isWorkflowCallMode, unreachableCallMode, workflowCallMode, applyReusableNode, reusableNodeBodyOf, isReusableNodeBody, isReusableNodeKind, REUSABLE_NODE_KINDS, NODE_KIND_IS_REUSABLE, nodeKindIsReusable, unreachableReusableNodeKind, describeLiveVersion, describeVersionPin, } from './catalog.pipeline';
|
|
159
159
|
/**
|
|
160
160
|
* The workflow validator, shipped to the browser deliberately.
|
|
161
161
|
*
|
|
@@ -183,7 +183,7 @@ export { CATALOG_SOURCE_TYPE_KEY, CONNECTOR_KINDS, isConnectorKind, isSourceForm
|
|
|
183
183
|
* ends up drawn with its boxes overlapping — which is exactly what happened.
|
|
184
184
|
*/
|
|
185
185
|
export { WORKFLOW_COLUMN_GAP, WORKFLOW_NODE_HEIGHT, WORKFLOW_NODE_WIDTH, WORKFLOW_ROW_GAP, workflowColumnX, workflowRowY, } from './catalog.pipeline';
|
|
186
|
-
export { validateWorkflow, WORKFLOW_EXECUTION_MODES, WORKFLOW_ISSUE_CODES, WORKFLOW_NODE_ID_PATTERN, WORKFLOW_NODE_KINDS, WORKFLOW_BRANCH_LABELS, WORKFLOW_PREDICATE_KINDS, WORKFLOW_FILTER_COLUMN_PATTERN, WORKFLOW_FILTER_MAX_DEPTH, WORKFLOW_FILTER_MAX_VALUES, WORKFLOW_FILTER_OPERATORS, WORKFLOW_FILTER_PREDICATE_KINDS, WORKFLOW_LOOKUP_MAX_FIELDS, WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS, WORKFLOW_LOOKUP_UNMATCHED, WORKFLOW_RENAME_MAX_COLUMNS, WORKFLOW_RENAME_UNNAMED, WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR, WORKFLOW_AGGREGATE_FUNCTIONS, WORKFLOW_AGGREGATE_GROUPS_CEILING, WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING, WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH, WORKFLOW_AGGREGATE_MAX_AGGREGATES, WORKFLOW_AGGREGATE_MAX_GROUP_BY, WORKFLOW_AGGREGATE_MAX_GROUPS, WORKFLOW_AGGREGATE_MAX_SEPARATOR, WORKFLOW_SKIP_REASONS, isWorkflowBranchLabel, isWorkflowFilterOperator, isWorkflowFilterPredicate, isWorkflowFilterPredicateKind, isWorkflowFilterValue, isWorkflowIfPredicate, isWorkflowPredicateKind, isWorkflowAggregateFunction, isWorkflowAggregates, isWorkflowLookupFields, isWorkflowLookupUnmatched, isWorkflowRenameColumns, isWorkflowRenameUnnamed, isWorkflowSkipReason, workflowFilterColumns, workflowFilterMatches, renameColumnRefusals, workflowRenameUnnamed, aggregateRefusals, workflowAggregateColumns, workflowAggregateJoinMaxLength, workflowAggregateMaxGroups, workflowAggregateNeedsColumn, workflowAggregateOutputColumns, workflowAggregateSeparator, lookupConfigRefusals, workflowLookupColumns, workflowLookupKey, workflowLookupUnmatched, workflowKnownColumns, workflowSourceObjectType, workflowNarrowedTypes, workflowNodeRuns, unreachableFilterOperator, unreachableFilterPredicateKind, unreachableConnectorKind, unreachableNodeKind, unreachableLookupUnmatched, unreachablePredicateKind, unreachableAggregateFunction, unreachableRenameUnnamed, WORKFLOW_STATUSES, workflowGraphHash, workflowRunOrder, isWorkflowExecutionMode, isWorkflowNodeKind, isWorkflowStatus, callableWorkflowBlock, } from './catalog.pipeline';
|
|
186
|
+
export { validateWorkflow, WORKFLOW_EXECUTION_MODES, WORKFLOW_ISSUE_CODES, WORKFLOW_NODE_ID_PATTERN, WORKFLOW_NODE_KINDS, WORKFLOW_BRANCH_LABELS, WORKFLOW_PREDICATE_KINDS, WORKFLOW_FILTER_COLUMN_PATTERN, WORKFLOW_FILTER_MAX_DEPTH, WORKFLOW_FILTER_MAX_VALUES, WORKFLOW_FILTER_OPERATORS, WORKFLOW_FILTER_PREDICATE_KINDS, WORKFLOW_LOOKUP_MAX_FIELDS, WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS, WORKFLOW_LOOKUP_UNMATCHED, WORKFLOW_RENAME_MAX_COLUMNS, WORKFLOW_RENAME_UNNAMED, WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR, WORKFLOW_AGGREGATE_FUNCTIONS, WORKFLOW_AGGREGATE_GROUPS_CEILING, WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING, WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH, WORKFLOW_AGGREGATE_MAX_AGGREGATES, WORKFLOW_AGGREGATE_MAX_GROUP_BY, WORKFLOW_AGGREGATE_MAX_GROUPS, WORKFLOW_AGGREGATE_MAX_SEPARATOR, WORKFLOW_SKIP_REASONS, isWorkflowBranchLabel, isWorkflowFilterOperator, isWorkflowFilterPredicate, isWorkflowFilterPredicateKind, isWorkflowFilterValue, isWorkflowIfPredicate, isWorkflowPredicateKind, isWorkflowAggregateFunction, isWorkflowAggregates, isWorkflowLookupFields, isWorkflowLookupUnmatched, isWorkflowRenameColumns, isWorkflowRenameUnnamed, isWorkflowSkipReason, workflowFilterColumns, workflowFilterMatches, renameColumnRefusals, workflowRenameUnnamed, aggregateRefusals, workflowAggregateColumns, workflowAggregateJoinMaxLength, workflowAggregateMaxGroups, workflowAggregateNeedsColumn, workflowAggregateOutputColumns, workflowAggregateSeparator, lookupConfigRefusals, workflowLookupColumns, workflowLookupKey, workflowLookupUnmatched, workflowKnownColumns, workflowSourceObjectType, workflowSourceSnapshot, workflowNarrowedTypes, workflowNodeRuns, unreachableFilterOperator, unreachableFilterPredicateKind, unreachableConnectorKind, unreachableNodeKind, unreachableLookupUnmatched, unreachablePredicateKind, unreachableAggregateFunction, unreachableRenameUnnamed, WORKFLOW_STATUSES, workflowGraphHash, workflowRunOrder, isWorkflowExecutionMode, isWorkflowNodeKind, isWorkflowStatus, callableWorkflowBlock, } from './catalog.pipeline';
|
|
187
187
|
export type { CallableWorkflowBlock, CallableWorkflowDisagreement, WorkflowColumnKnowledge, WorkflowStatus, } from './catalog.pipeline';
|
|
188
188
|
export type { CatalogTrace, CatalogTraceList, CatalogTraceOutcome, CatalogTraceSpan, TraceQuery, } from './catalog.workspace';
|
|
189
189
|
export type { CatalogLoadExpectations, DeleteReconciliation, LoadExpectation, RowCountBound, StoredLoadExpectation, } from './catalog.pipeline';
|
package/dist/client.js
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* types are.
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.DELETE_RECONCILIATION_STRATEGIES = exports.callableWorkflowBlock = exports.isWorkflowStatus = exports.isWorkflowNodeKind = exports.isWorkflowExecutionMode = exports.workflowRunOrder = exports.workflowGraphHash = exports.WORKFLOW_STATUSES = exports.unreachableRenameUnnamed = exports.unreachableAggregateFunction = exports.unreachablePredicateKind = exports.unreachableLookupUnmatched = exports.unreachableNodeKind = exports.unreachableConnectorKind = exports.unreachableFilterPredicateKind = exports.unreachableFilterOperator = exports.workflowNodeRuns = exports.workflowNarrowedTypes = exports.workflowSourceObjectType = exports.workflowKnownColumns = exports.workflowLookupUnmatched = exports.workflowLookupKey = exports.workflowLookupColumns = exports.lookupConfigRefusals = exports.workflowAggregateSeparator = exports.workflowAggregateOutputColumns = exports.workflowAggregateNeedsColumn = exports.workflowAggregateMaxGroups = exports.workflowAggregateJoinMaxLength = exports.workflowAggregateColumns = exports.aggregateRefusals = exports.workflowRenameUnnamed = void 0;
|
|
14
|
+
exports.nodeKindIsReusable = exports.NODE_KIND_IS_REUSABLE = exports.REUSABLE_NODE_KINDS = exports.isReusableNodeKind = exports.isReusableNodeBody = exports.reusableNodeBodyOf = exports.applyReusableNode = exports.workflowCallMode = exports.unreachableCallMode = exports.isWorkflowCallMode = exports.WORKFLOW_CALL_MODES = exports.WORKFLOW_CALL_CONTRACT = exports.readWorkflowCallOutput = exports.TRANSFORM_LANGUAGES = exports.REDACTED_SECRET = exports.liveWorkflowVersion = exports.isWorkflowNode = exports.isWorkflowEdge = exports.SOURCE_FORMATS = exports.recordModeRefusal = exports.transformMode = exports.TRANSFORM_MODES = exports.isTransformMode = exports.isTransformLanguage = exports.isSourceFormat = exports.isConnectorKind = exports.CONNECTOR_KINDS = exports.catalogSnapshotRefusal = exports.CATALOG_SOURCE_SNAPSHOT_KEY = exports.CATALOG_SNAPSHOT_RESERVED_NAMES = exports.CATALOG_SOURCE_TYPE_KEY = exports.transformShape = exports.transformDeclaresModule = exports.catalogRoutes = exports.UnsafeIdentifierError = exports.physicalColumn = exports.outputAlias = exports.isSafeIdentifier = exports.VALUELESS_FILTER_OPERATORS = exports.resolveObjectFilters = exports.parseObjectFilter = exports.offeredFilterOperators = exports.isCatalogFilterOperator = exports.filterOperatorsFor = exports.filterOperatorTakesValue = exports.encodeObjectFilter = exports.coerceFilterValue = exports.CATALOG_FILTER_OPERATORS = exports.CATALOG_FILTER_LIMIT = exports.CATALOG_REVISION_LIMIT = void 0;
|
|
15
|
+
exports.isWorkflowSkipReason = exports.isWorkflowRenameUnnamed = exports.isWorkflowRenameColumns = exports.isWorkflowLookupUnmatched = exports.isWorkflowLookupFields = exports.isWorkflowAggregates = exports.isWorkflowAggregateFunction = exports.isWorkflowPredicateKind = exports.isWorkflowIfPredicate = exports.isWorkflowFilterValue = exports.isWorkflowFilterPredicateKind = exports.isWorkflowFilterPredicate = exports.isWorkflowFilterOperator = exports.isWorkflowBranchLabel = exports.WORKFLOW_SKIP_REASONS = exports.WORKFLOW_AGGREGATE_MAX_SEPARATOR = exports.WORKFLOW_AGGREGATE_MAX_GROUPS = exports.WORKFLOW_AGGREGATE_MAX_GROUP_BY = exports.WORKFLOW_AGGREGATE_MAX_AGGREGATES = exports.WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH = exports.WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING = exports.WORKFLOW_AGGREGATE_GROUPS_CEILING = exports.WORKFLOW_AGGREGATE_FUNCTIONS = exports.WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR = exports.WORKFLOW_RENAME_UNNAMED = exports.WORKFLOW_RENAME_MAX_COLUMNS = exports.WORKFLOW_LOOKUP_UNMATCHED = exports.WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS = exports.WORKFLOW_LOOKUP_MAX_FIELDS = exports.WORKFLOW_FILTER_PREDICATE_KINDS = exports.WORKFLOW_FILTER_OPERATORS = exports.WORKFLOW_FILTER_MAX_VALUES = exports.WORKFLOW_FILTER_MAX_DEPTH = exports.WORKFLOW_FILTER_COLUMN_PATTERN = exports.WORKFLOW_PREDICATE_KINDS = exports.WORKFLOW_BRANCH_LABELS = exports.WORKFLOW_NODE_KINDS = exports.WORKFLOW_NODE_ID_PATTERN = exports.WORKFLOW_ISSUE_CODES = exports.WORKFLOW_EXECUTION_MODES = exports.validateWorkflow = exports.workflowRowY = exports.workflowColumnX = exports.WORKFLOW_ROW_GAP = exports.WORKFLOW_NODE_WIDTH = exports.WORKFLOW_NODE_HEIGHT = exports.WORKFLOW_COLUMN_GAP = exports.describeVersionPin = exports.describeLiveVersion = exports.unreachableReusableNodeKind = void 0;
|
|
16
|
+
exports.DELETE_RECONCILIATION_STRATEGIES = exports.callableWorkflowBlock = exports.isWorkflowStatus = exports.isWorkflowNodeKind = exports.isWorkflowExecutionMode = exports.workflowRunOrder = exports.workflowGraphHash = exports.WORKFLOW_STATUSES = exports.unreachableRenameUnnamed = exports.unreachableAggregateFunction = exports.unreachablePredicateKind = exports.unreachableLookupUnmatched = exports.unreachableNodeKind = exports.unreachableConnectorKind = exports.unreachableFilterPredicateKind = exports.unreachableFilterOperator = exports.workflowNodeRuns = exports.workflowNarrowedTypes = exports.workflowSourceSnapshot = exports.workflowSourceObjectType = exports.workflowKnownColumns = exports.workflowLookupUnmatched = exports.workflowLookupKey = exports.workflowLookupColumns = exports.lookupConfigRefusals = exports.workflowAggregateSeparator = exports.workflowAggregateOutputColumns = exports.workflowAggregateNeedsColumn = exports.workflowAggregateMaxGroups = exports.workflowAggregateJoinMaxLength = exports.workflowAggregateColumns = exports.aggregateRefusals = exports.workflowRenameUnnamed = exports.renameColumnRefusals = exports.workflowFilterMatches = exports.workflowFilterColumns = void 0;
|
|
17
17
|
exports.isDeleteReconciliationStrategy = isDeleteReconciliationStrategy;
|
|
18
18
|
exports.pipelineExpectationRoutes = pipelineExpectationRoutes;
|
|
19
19
|
// A value, not a type: a screen saying how far back the history goes should read
|
|
@@ -144,6 +144,12 @@ var catalog_pipeline_1 = require("./catalog.pipeline");
|
|
|
144
144
|
// The config key a `catalog` source names its object type in, so the
|
|
145
145
|
// inspector writing it and the fetcher reading it cannot spell it differently.
|
|
146
146
|
Object.defineProperty(exports, "CATALOG_SOURCE_TYPE_KEY", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_SOURCE_TYPE_KEY; } });
|
|
147
|
+
// …and the key it names one snapshot of that type in, plus the one rule about
|
|
148
|
+
// what may go in it. The inspector refuses a relative reference with the same
|
|
149
|
+
// sentence the validator and the fetcher do, because it is the same function.
|
|
150
|
+
Object.defineProperty(exports, "CATALOG_SNAPSHOT_RESERVED_NAMES", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_SNAPSHOT_RESERVED_NAMES; } });
|
|
151
|
+
Object.defineProperty(exports, "CATALOG_SOURCE_SNAPSHOT_KEY", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_SOURCE_SNAPSHOT_KEY; } });
|
|
152
|
+
Object.defineProperty(exports, "catalogSnapshotRefusal", { enumerable: true, get: function () { return catalog_pipeline_1.catalogSnapshotRefusal; } });
|
|
147
153
|
Object.defineProperty(exports, "CONNECTOR_KINDS", { enumerable: true, get: function () { return catalog_pipeline_1.CONNECTOR_KINDS; } });
|
|
148
154
|
Object.defineProperty(exports, "isConnectorKind", { enumerable: true, get: function () { return catalog_pipeline_1.isConnectorKind; } });
|
|
149
155
|
Object.defineProperty(exports, "isSourceFormat", { enumerable: true, get: function () { return catalog_pipeline_1.isSourceFormat; } });
|
|
@@ -355,6 +361,9 @@ Object.defineProperty(exports, "workflowKnownColumns", { enumerable: true, get:
|
|
|
355
361
|
// Which object type a `catalog` source reads, read off the node by the one
|
|
356
362
|
// function the validator and the fetcher also use.
|
|
357
363
|
Object.defineProperty(exports, "workflowSourceObjectType", { enumerable: true, get: function () { return catalog_pipeline_3.workflowSourceObjectType; } });
|
|
364
|
+
// …and which snapshot of it, when the node names one rather than reading
|
|
365
|
+
// whatever is being served.
|
|
366
|
+
Object.defineProperty(exports, "workflowSourceSnapshot", { enumerable: true, get: function () { return catalog_pipeline_3.workflowSourceSnapshot; } });
|
|
358
367
|
// Which published types a filter stands in front of. The console has to offer
|
|
359
368
|
// the same acknowledgements the validator requires, and a canvas computing its
|
|
360
369
|
// own answer would offer a set the server then refuses.
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { type CatalogOverlayStore, FileCatalogOverlayStore, InMemoryCatalogOverl
|
|
|
8
8
|
export { CATALOG_OVERLAY_STORE } from './catalog.overlay-store.token';
|
|
9
9
|
export { MikroOrmCatalogRegistry } from './catalog.registry';
|
|
10
10
|
export { CatalogRegistry } from './catalog.registry.base';
|
|
11
|
-
export { CATALOG_PIPELINE_STORE, CODE_CONTEXT_CONTRACT, type CatalogCodeContext, type CatalogConnection, type CatalogConnector, type ConnectionCheck, CATALOG_SOURCE_TYPE_KEY, CONNECTOR_KINDS, type CatalogLoadExpectations, type CatalogLoadExpectationStore, type CatalogPipelineStore, type CatalogStageStore, type CatalogRecordTransformFunction, type CatalogRecordTransformInput, type CatalogTransform, type CatalogTransformFunction, type CatalogTransformInput, type CatalogWorkflow, type CatalogWorkflowCapabilities, type CatalogWorkflowRelease, type CatalogWorkflowReleaseStore, type CatalogWorkflowStore, type CallableWorkflowBlock, type CallableWorkflowDisagreement, type CallableWorkflowRef, callableWorkflowBlock, type ConnectorKind, type ConnectorRun, type DeleteReconciliation, isConnectorKind, isPipelineStore, isSourceFormat, isTransformLanguage, isTransformMode, type LoadExpectation, type RowCountBound, SOURCE_FORMATS, type SourceFormat, unreachableSourceFormat, type StoredLoadExpectation, readWorkflowCallOutput, REDACTED_SECRET, supportsLoadExpectations, supportsReusableNodes, supportsTransformPins, supportsTransformRevisions, supportsTransformStreaming, applyReusableNode, type CatalogReusableNode, type CatalogReusableNodeStore, type CatalogReusableNodeUse, describeLiveVersion, describeVersionPin, isReusableNodeBody, isReusableNodeKind, NODE_KIND_IS_REUSABLE, nodeKindIsReusable, REUSABLE_NODE_KINDS, type ReusableNodeBody, type ReusableNodeKind, type ReusableNodeRef, type ReusableSinkBody, type ReusableSourceBody, reusableNodeBodyOf, unreachableReusableNodeKind, type VersionPinCopy, isWorkflowBranchLabel, isWorkflowEdge, isWorkflowExecutionMode, isWorkflowFilterOperator, isWorkflowFilterPredicate, isWorkflowFilterPredicateKind, isWorkflowFilterValue, isWorkflowIfPredicate, isWorkflowNode, isWorkflowCallMode, isWorkflowNodeKind, isWorkflowPredicateKind, isWorkflowLookupFields, isWorkflowLookupUnmatched, isWorkflowRenameColumns, isWorkflowRenameUnnamed, isWorkflowSkipReason, isWorkflowStatus, liveWorkflowVersion, supportsWorkflowReleases, supportsWorkflows, supportsWorkflowStages, supportsStagePayloads, TRANSFORM_RUNNER, TRANSFORM_LANGUAGES, TRANSFORM_MODES, recordModeRefusal, transformMode, type TransformLanguage, type TransformMode, type TransformResult, type TransformRunner, type TransformStream, type TransformStreamSummary, unreachableFilterOperator, unreachableTransformMode, unreachableFilterPredicateKind, unreachableCallMode, unreachableConnectorKind, unreachableNodeKind, unreachablePredicateKind, unreachableLookupUnmatched, unreachableRenameUnnamed, validateWorkflow, WORKFLOW_BRANCH_LABELS, WORKFLOW_CALL_CONTRACT, WORKFLOW_CALL_MODES, WORKFLOW_COLUMN_GAP, WORKFLOW_EXECUTION_MODES, WORKFLOW_FILTER_COLUMN_PATTERN, WORKFLOW_FILTER_MAX_DEPTH, WORKFLOW_FILTER_MAX_VALUES, WORKFLOW_FILTER_OPERATORS, WORKFLOW_FILTER_PREDICATE_KINDS, WORKFLOW_ISSUE_CODES, WORKFLOW_NODE_HEIGHT, WORKFLOW_NODE_ID_PATTERN, WORKFLOW_NODE_KINDS, WORKFLOW_NODE_WIDTH, WORKFLOW_PREDICATE_KINDS, WORKFLOW_RENAME_MAX_COLUMNS, WORKFLOW_RENAME_UNNAMED, WORKFLOW_ROW_GAP, WORKFLOW_SKIP_REASONS, WORKFLOW_STATUSES, type WorkflowBranchLabel, type WorkflowColumnKnowledge, workflowColumnX, workflowRowY, type WorkflowCallEnvelope, type WorkflowCallMode, workflowCallMode, type WorkflowCallNode, type WorkflowCallOutput, type WorkflowEdge, type WorkflowExecutionMode, type WorkflowFilterAll, type WorkflowFilterAny, type WorkflowFilterComparison, type WorkflowFilterGroup, workflowFilterColumns, workflowFilterMatches, type WorkflowFilterNode, type WorkflowFilterOneOf, type WorkflowFilterOperator, type WorkflowFilterPredicate, type WorkflowFilterPredicateKind, type WorkflowFilterPresence, type WorkflowFilterValue, type WorkflowGraph, workflowGraphHash, type WorkflowEnvPredicate, type WorkflowIfNode, type WorkflowIfPredicate, type WorkflowIssueCode, type WorkflowNode, type WorkflowNodeKind, workflowKnownColumns, workflowNarrowedTypes, workflowSourceObjectType, type WorkflowNodeOutcome, workflowNodeRuns, type WorkflowNodeStepInput, type WorkflowNodeStepOutput, workflowRunOrder, type WorkflowRunOrderEntry, type WorkflowPredicateKind, lookupConfigRefusals, type WorkflowInputFilter, type WorkflowLookupNode, type WorkflowLookupUnmatched, workflowLookupColumns, workflowLookupKey, workflowLookupUnmatched, WORKFLOW_LOOKUP_MAX_FIELDS, WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS, WORKFLOW_LOOKUP_UNMATCHED, renameColumnRefusals, type WorkflowRenameNode, type WorkflowRenameUnnamed, workflowRenameUnnamed, type WorkflowRowCountPredicate, type WorkflowSinkNode, type WorkflowSkipReason, type WorkflowSourceNode, type WorkflowStageRef, type WorkflowStatus, type WorkflowTransformNode, type WorkflowValidationIssue, aggregateRefusals, isWorkflowAggregateFunction, isWorkflowAggregates, unreachableAggregateFunction, WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR, WORKFLOW_AGGREGATE_FUNCTIONS, WORKFLOW_AGGREGATE_GROUPS_CEILING, WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING, WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH, WORKFLOW_AGGREGATE_MAX_AGGREGATES, WORKFLOW_AGGREGATE_MAX_GROUP_BY, WORKFLOW_AGGREGATE_MAX_GROUPS, WORKFLOW_AGGREGATE_MAX_SEPARATOR, type WorkflowAggregate, workflowAggregateColumns, type WorkflowAggregateFunction, workflowAggregateJoinMaxLength, workflowAggregateMaxGroups, workflowAggregateNeedsColumn, type WorkflowAggregateNode, workflowAggregateOutputColumns, workflowAggregateSeparator, } from './catalog.pipeline';
|
|
11
|
+
export { CATALOG_PIPELINE_STORE, CODE_CONTEXT_CONTRACT, type CatalogCodeContext, type CatalogConnection, type CatalogConnector, type ConnectionCheck, CATALOG_SNAPSHOT_RESERVED_NAMES, CATALOG_SOURCE_SNAPSHOT_KEY, CATALOG_SOURCE_TYPE_KEY, catalogSnapshotRefusal, CONNECTOR_KINDS, type CatalogLoadExpectations, type CatalogLoadExpectationStore, type CatalogPipelineStore, type CatalogStageStore, type CatalogRecordTransformFunction, type CatalogRecordTransformInput, type CatalogTransform, type CatalogTransformFunction, type CatalogTransformInput, type CatalogWorkflow, type CatalogWorkflowCapabilities, type CatalogWorkflowRelease, type CatalogWorkflowReleaseStore, type CatalogWorkflowStore, type CallableWorkflowBlock, type CallableWorkflowDisagreement, type CallableWorkflowRef, callableWorkflowBlock, type ConnectorKind, type ConnectorRun, type DeleteReconciliation, isConnectorKind, isPipelineStore, isSourceFormat, isTransformLanguage, isTransformMode, type LoadExpectation, type RowCountBound, SOURCE_FORMATS, type SourceFormat, unreachableSourceFormat, type StoredLoadExpectation, readWorkflowCallOutput, REDACTED_SECRET, supportsLoadExpectations, supportsReusableNodes, supportsTransformPins, supportsTransformRevisions, supportsTransformStreaming, applyReusableNode, type CatalogReusableNode, type CatalogReusableNodeStore, type CatalogReusableNodeUse, describeLiveVersion, describeVersionPin, isReusableNodeBody, isReusableNodeKind, NODE_KIND_IS_REUSABLE, nodeKindIsReusable, REUSABLE_NODE_KINDS, type ReusableNodeBody, type ReusableNodeKind, type ReusableNodeRef, type ReusableSinkBody, type ReusableSourceBody, reusableNodeBodyOf, unreachableReusableNodeKind, type VersionPinCopy, isWorkflowBranchLabel, isWorkflowEdge, isWorkflowExecutionMode, isWorkflowFilterOperator, isWorkflowFilterPredicate, isWorkflowFilterPredicateKind, isWorkflowFilterValue, isWorkflowIfPredicate, isWorkflowNode, isWorkflowCallMode, isWorkflowNodeKind, isWorkflowPredicateKind, isWorkflowLookupFields, isWorkflowLookupUnmatched, isWorkflowRenameColumns, isWorkflowRenameUnnamed, isWorkflowSkipReason, isWorkflowStatus, liveWorkflowVersion, supportsWorkflowReleases, supportsWorkflows, supportsWorkflowStages, supportsStagePayloads, TRANSFORM_RUNNER, TRANSFORM_LANGUAGES, TRANSFORM_MODES, recordModeRefusal, transformMode, type TransformLanguage, type TransformMode, type TransformResult, type TransformRunner, type TransformStream, type TransformStreamSummary, unreachableFilterOperator, unreachableTransformMode, unreachableFilterPredicateKind, unreachableCallMode, unreachableConnectorKind, unreachableNodeKind, unreachablePredicateKind, unreachableLookupUnmatched, unreachableRenameUnnamed, validateWorkflow, WORKFLOW_BRANCH_LABELS, WORKFLOW_CALL_CONTRACT, WORKFLOW_CALL_MODES, WORKFLOW_COLUMN_GAP, WORKFLOW_EXECUTION_MODES, WORKFLOW_FILTER_COLUMN_PATTERN, WORKFLOW_FILTER_MAX_DEPTH, WORKFLOW_FILTER_MAX_VALUES, WORKFLOW_FILTER_OPERATORS, WORKFLOW_FILTER_PREDICATE_KINDS, WORKFLOW_ISSUE_CODES, WORKFLOW_NODE_HEIGHT, WORKFLOW_NODE_ID_PATTERN, WORKFLOW_NODE_KINDS, WORKFLOW_NODE_WIDTH, WORKFLOW_PREDICATE_KINDS, WORKFLOW_RENAME_MAX_COLUMNS, WORKFLOW_RENAME_UNNAMED, WORKFLOW_ROW_GAP, WORKFLOW_SKIP_REASONS, WORKFLOW_STATUSES, type WorkflowBranchLabel, type WorkflowColumnKnowledge, workflowColumnX, workflowRowY, type WorkflowCallEnvelope, type WorkflowCallMode, workflowCallMode, type WorkflowCallNode, type WorkflowCallOutput, type WorkflowEdge, type WorkflowExecutionMode, type WorkflowFilterAll, type WorkflowFilterAny, type WorkflowFilterComparison, type WorkflowFilterGroup, workflowFilterColumns, workflowFilterMatches, type WorkflowFilterNode, type WorkflowFilterOneOf, type WorkflowFilterOperator, type WorkflowFilterPredicate, type WorkflowFilterPredicateKind, type WorkflowFilterPresence, type WorkflowFilterValue, type WorkflowGraph, workflowGraphHash, type WorkflowEnvPredicate, type WorkflowIfNode, type WorkflowIfPredicate, type WorkflowIssueCode, type WorkflowNode, type WorkflowNodeKind, workflowKnownColumns, workflowNarrowedTypes, workflowSourceObjectType, workflowSourceSnapshot, type WorkflowNodeOutcome, workflowNodeRuns, type WorkflowNodeStepInput, type WorkflowNodeStepOutput, workflowRunOrder, type WorkflowRunOrderEntry, type WorkflowPredicateKind, lookupConfigRefusals, type WorkflowInputFilter, type WorkflowLookupNode, type WorkflowLookupUnmatched, workflowLookupColumns, workflowLookupKey, workflowLookupUnmatched, WORKFLOW_LOOKUP_MAX_FIELDS, WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS, WORKFLOW_LOOKUP_UNMATCHED, renameColumnRefusals, type WorkflowRenameNode, type WorkflowRenameUnnamed, workflowRenameUnnamed, type WorkflowRowCountPredicate, type WorkflowSinkNode, type WorkflowSkipReason, type WorkflowSourceNode, type WorkflowStageRef, type WorkflowStatus, type WorkflowTransformNode, type WorkflowValidationIssue, aggregateRefusals, isWorkflowAggregateFunction, isWorkflowAggregates, unreachableAggregateFunction, WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR, WORKFLOW_AGGREGATE_FUNCTIONS, WORKFLOW_AGGREGATE_GROUPS_CEILING, WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING, WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH, WORKFLOW_AGGREGATE_MAX_AGGREGATES, WORKFLOW_AGGREGATE_MAX_GROUP_BY, WORKFLOW_AGGREGATE_MAX_GROUPS, WORKFLOW_AGGREGATE_MAX_SEPARATOR, type WorkflowAggregate, workflowAggregateColumns, type WorkflowAggregateFunction, workflowAggregateJoinMaxLength, workflowAggregateMaxGroups, workflowAggregateNeedsColumn, type WorkflowAggregateNode, workflowAggregateOutputColumns, workflowAggregateSeparator, } from './catalog.pipeline';
|
|
12
12
|
export { AggregateTable, type AggregateTableStats, aggregateInputColumns, WorkflowAggregateError, } from './catalog.aggregate';
|
|
13
13
|
export { type ColumnarStageBatch, STAGE_ENCODING, STAGE_ENCODING_VERSION, type StagePayload, classifyStagePayload, decodeStageRows, encodeStageRows, isColumnarStageBatch, renameStagePayload, type StageRenamePlan, type StageRenameResult, } from './catalog.stage-encoding';
|
|
14
14
|
export * from './catalog.environment';
|
|
@@ -23,7 +23,7 @@ export { type AuditQuery, CATALOG_REVISION_LIMIT, CATALOG_TRACE_OUTCOMES, CATALO
|
|
|
23
23
|
export { CATALOG_PRINCIPAL_RESOLVER, type CatalogActor, type CatalogGrants, type CatalogPrincipal, type CatalogPrincipalResolver, type CatalogScope, composePrincipalId, delegatePrincipal, expandScopes, hasScope, parsePrincipalId, PRINCIPAL_ACTOR_SEPARATOR, maySeeClassification, mayRead, mayWrite, readableObjectPage, StaticKeyPrincipalResolver, } from './catalog.principal';
|
|
24
24
|
export * from './catalog.access';
|
|
25
25
|
export * from './catalog.filters';
|
|
26
|
-
export { assertNoColumnCollisions, assertSafeIdentifier, CATALOG_RESERVED_COLUMNS, CATALOG_SNAPSHOT_MODES, CATALOG_STORE, type CarryForwardResult, type CatalogColumnCollision, CatalogColumnCollisionError, type CatalogFilteringReadStore, supportsObjectFilters, type CatalogMergeStore, type CatalogReadQuery, type CatalogReadResult, type CatalogReadStore, type CatalogReservedColumn, type CatalogSnapshotMode, type CatalogSnapshotStreamStore, type CatalogStoreCapabilities, type CatalogWriteStore, type ColumnCollisionOptions, findColumnCollisions, isCatalogStoreCapabilities, isReservedColumn, isSafeIdentifier, isWriteStore, outputAlias, physicalColumn, type SnapshotRef, supportsCarryForward, supportsSnapshotStreams, UnsafeIdentifierError, } from './catalog.store';
|
|
26
|
+
export { assertNoColumnCollisions, assertSafeIdentifier, CATALOG_RESERVED_COLUMNS, CATALOG_SNAPSHOT_MODES, CATALOG_STORE, type CarryForwardResult, type CatalogColumnCollision, CatalogColumnCollisionError, type CatalogFilteringReadStore, supportsObjectFilters, type CatalogMergeStore, type CatalogReadQuery, type CatalogReadResult, type CatalogReadStore, type CatalogReservedColumn, type CatalogSnapshotLocation, type CatalogSnapshotLookupStore, type CatalogSnapshotMode, type CatalogSnapshotStreamStore, type CatalogStoreCapabilities, type CatalogWriteStore, type ColumnCollisionOptions, findColumnCollisions, isCatalogStoreCapabilities, isReservedColumn, isSafeIdentifier, isWriteStore, outputAlias, physicalColumn, type SnapshotArchiveRef, type SnapshotRef, supportsCarryForward, supportsSnapshotLookup, supportsSnapshotStreams, UnsafeIdentifierError, } from './catalog.store';
|
|
27
27
|
export { MikroOrmReadStore } from './stores/mikro-orm-read.store';
|
|
28
28
|
export type { CatalogGraph, CatalogObjectPage, CatalogObjectQuery, CatalogObjectTypeDef, CatalogOverlay, CatalogPropertyDef, CatalogRelationDef, CatalogSnapshot, RelationKind, ScalarType, } from './catalog.types';
|
|
29
29
|
export { isRelationKind, RELATION_KINDS } from './catalog.types';
|
package/dist/index.js
CHANGED
|
@@ -14,11 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.RequireScopes = exports.RequireHuman = exports.REQUIRES_HUMAN = exports.REQUIRED_SCOPES = exports.RELATION_KINDS = exports.isRelationKind = exports.MikroOrmReadStore = exports.UnsafeIdentifierError = exports.supportsSnapshotStreams = exports.supportsCarryForward = exports.physicalColumn = exports.outputAlias = exports.isWriteStore = exports.isSafeIdentifier = exports.isReservedColumn = exports.isCatalogStoreCapabilities = exports.findColumnCollisions = exports.supportsObjectFilters = exports.CatalogColumnCollisionError = exports.CATALOG_STORE = exports.CATALOG_SNAPSHOT_MODES = void 0;
|
|
17
|
+
exports.nodeKindIsReusable = exports.NODE_KIND_IS_REUSABLE = exports.isReusableNodeKind = exports.isReusableNodeBody = exports.describeVersionPin = exports.describeLiveVersion = exports.applyReusableNode = exports.supportsTransformStreaming = exports.supportsTransformRevisions = exports.supportsTransformPins = exports.supportsReusableNodes = exports.supportsLoadExpectations = exports.REDACTED_SECRET = exports.readWorkflowCallOutput = exports.unreachableSourceFormat = exports.SOURCE_FORMATS = exports.isTransformMode = exports.isTransformLanguage = exports.isSourceFormat = exports.isPipelineStore = exports.isConnectorKind = exports.callableWorkflowBlock = exports.CONNECTOR_KINDS = exports.catalogSnapshotRefusal = exports.CATALOG_SOURCE_TYPE_KEY = exports.CATALOG_SOURCE_SNAPSHOT_KEY = exports.CATALOG_SNAPSHOT_RESERVED_NAMES = exports.CODE_CONTEXT_CONTRACT = exports.CATALOG_PIPELINE_STORE = exports.CatalogRegistry = exports.MikroOrmCatalogRegistry = exports.CATALOG_OVERLAY_STORE = exports.InMemoryCatalogOverlayStore = exports.FileCatalogOverlayStore = exports.CATALOG_OPTIONS = exports.isStreamingQueryStore = exports.isQueryStore = exports.assertReadOnlyShape = exports.CatalogModule = exports.emitCatalog = exports.curationActor = exports.channelNameFor = exports.catalogEventPhase = exports.UNATTRIBUTED_PRINCIPAL_ID = exports.CATALOG_LIB = exports.CATALOG_EVENTS = exports.CATALOG_EVENT_PHASE_FALLBACK = exports.CATALOG_EVENT_PHASE = exports.CatalogType = exports.CatalogProperty = void 0;
|
|
18
|
+
exports.WORKFLOW_FILTER_OPERATORS = exports.WORKFLOW_FILTER_MAX_VALUES = exports.WORKFLOW_FILTER_MAX_DEPTH = exports.WORKFLOW_FILTER_COLUMN_PATTERN = exports.WORKFLOW_EXECUTION_MODES = exports.WORKFLOW_COLUMN_GAP = exports.WORKFLOW_CALL_MODES = exports.WORKFLOW_CALL_CONTRACT = exports.WORKFLOW_BRANCH_LABELS = exports.validateWorkflow = exports.unreachableRenameUnnamed = exports.unreachableLookupUnmatched = exports.unreachablePredicateKind = exports.unreachableNodeKind = exports.unreachableConnectorKind = exports.unreachableCallMode = exports.unreachableFilterPredicateKind = exports.unreachableTransformMode = exports.unreachableFilterOperator = exports.transformMode = exports.recordModeRefusal = exports.TRANSFORM_MODES = exports.TRANSFORM_LANGUAGES = exports.TRANSFORM_RUNNER = exports.supportsStagePayloads = exports.supportsWorkflowStages = exports.supportsWorkflows = exports.supportsWorkflowReleases = exports.liveWorkflowVersion = exports.isWorkflowStatus = exports.isWorkflowSkipReason = exports.isWorkflowRenameUnnamed = exports.isWorkflowRenameColumns = exports.isWorkflowLookupUnmatched = exports.isWorkflowLookupFields = exports.isWorkflowPredicateKind = exports.isWorkflowNodeKind = exports.isWorkflowCallMode = exports.isWorkflowNode = exports.isWorkflowIfPredicate = exports.isWorkflowFilterValue = exports.isWorkflowFilterPredicateKind = exports.isWorkflowFilterPredicate = exports.isWorkflowFilterOperator = exports.isWorkflowExecutionMode = exports.isWorkflowEdge = exports.isWorkflowBranchLabel = exports.unreachableReusableNodeKind = exports.reusableNodeBodyOf = exports.REUSABLE_NODE_KINDS = void 0;
|
|
19
|
+
exports.workflowAggregateNeedsColumn = exports.workflowAggregateMaxGroups = exports.workflowAggregateJoinMaxLength = exports.workflowAggregateColumns = exports.WORKFLOW_AGGREGATE_MAX_SEPARATOR = exports.WORKFLOW_AGGREGATE_MAX_GROUPS = exports.WORKFLOW_AGGREGATE_MAX_GROUP_BY = exports.WORKFLOW_AGGREGATE_MAX_AGGREGATES = exports.WORKFLOW_AGGREGATE_JOIN_MAX_LENGTH = exports.WORKFLOW_AGGREGATE_JOIN_LENGTH_CEILING = exports.WORKFLOW_AGGREGATE_GROUPS_CEILING = exports.WORKFLOW_AGGREGATE_FUNCTIONS = exports.WORKFLOW_AGGREGATE_DEFAULT_SEPARATOR = exports.unreachableAggregateFunction = exports.isWorkflowAggregates = exports.isWorkflowAggregateFunction = exports.aggregateRefusals = exports.workflowRenameUnnamed = exports.renameColumnRefusals = exports.WORKFLOW_LOOKUP_UNMATCHED = exports.WORKFLOW_LOOKUP_MAX_REFERENCE_ROWS = exports.WORKFLOW_LOOKUP_MAX_FIELDS = exports.workflowLookupUnmatched = exports.workflowLookupKey = exports.workflowLookupColumns = exports.lookupConfigRefusals = exports.workflowRunOrder = exports.workflowNodeRuns = exports.workflowSourceSnapshot = exports.workflowSourceObjectType = exports.workflowNarrowedTypes = exports.workflowKnownColumns = exports.workflowGraphHash = exports.workflowFilterMatches = exports.workflowFilterColumns = exports.workflowCallMode = exports.workflowRowY = exports.workflowColumnX = exports.WORKFLOW_STATUSES = exports.WORKFLOW_SKIP_REASONS = exports.WORKFLOW_ROW_GAP = exports.WORKFLOW_RENAME_UNNAMED = exports.WORKFLOW_RENAME_MAX_COLUMNS = exports.WORKFLOW_PREDICATE_KINDS = exports.WORKFLOW_NODE_WIDTH = exports.WORKFLOW_NODE_KINDS = exports.WORKFLOW_NODE_ID_PATTERN = exports.WORKFLOW_NODE_HEIGHT = exports.WORKFLOW_ISSUE_CODES = exports.WORKFLOW_FILTER_PREDICATE_KINDS = void 0;
|
|
20
|
+
exports.readableObjectPage = exports.mayWrite = exports.mayRead = exports.maySeeClassification = exports.PRINCIPAL_ACTOR_SEPARATOR = exports.parsePrincipalId = exports.hasScope = exports.expandScopes = exports.delegatePrincipal = exports.composePrincipalId = exports.CATALOG_PRINCIPAL_RESOLVER = exports.traceOutcomeFilter = exports.supportsSavedQueryRevisions = exports.isWorkspaceStore = exports.isTraceStore = exports.isCatalogTraceOutcome = exports.embeddedVisualization = exports.CATALOG_WORKSPACE_STORE = exports.CATALOG_TRACE_STORE = exports.CATALOG_TRACE_OUTCOMES = exports.CATALOG_REVISION_LIMIT = exports.visibleToPrincipal = exports.searchCatalog = exports.maySearch = exports.emptySearch = exports.bestMatch = exports.MAX_SEARCH_LIMIT = exports.DEFAULT_SEARCH_LIMIT = exports.CatalogService = exports.transformShapeHint = exports.transformShape = exports.transformDeclaresModule = exports.SubprocessTransformRunner = exports.toCsv = exports.guardFormula = exports.csvLines = exports.csvCell = exports.QueryCache = exports.renameStagePayload = exports.isColumnarStageBatch = exports.encodeStageRows = exports.decodeStageRows = exports.classifyStagePayload = exports.STAGE_ENCODING_VERSION = exports.STAGE_ENCODING = exports.WorkflowAggregateError = exports.aggregateInputColumns = exports.AggregateTable = exports.workflowAggregateSeparator = exports.workflowAggregateOutputColumns = void 0;
|
|
21
|
+
exports.RequireScopes = exports.RequireHuman = exports.REQUIRES_HUMAN = exports.REQUIRED_SCOPES = exports.RELATION_KINDS = exports.isRelationKind = exports.MikroOrmReadStore = exports.UnsafeIdentifierError = exports.supportsSnapshotStreams = exports.supportsSnapshotLookup = exports.supportsCarryForward = exports.physicalColumn = exports.outputAlias = exports.isWriteStore = exports.isSafeIdentifier = exports.isReservedColumn = exports.isCatalogStoreCapabilities = exports.findColumnCollisions = exports.supportsObjectFilters = exports.CatalogColumnCollisionError = exports.CATALOG_STORE = exports.CATALOG_SNAPSHOT_MODES = exports.CATALOG_RESERVED_COLUMNS = exports.assertSafeIdentifier = exports.assertNoColumnCollisions = exports.StaticKeyPrincipalResolver = void 0;
|
|
22
22
|
var catalog_decorators_1 = require("./catalog.decorators");
|
|
23
23
|
Object.defineProperty(exports, "CatalogProperty", { enumerable: true, get: function () { return catalog_decorators_1.CatalogProperty; } });
|
|
24
24
|
Object.defineProperty(exports, "CatalogType", { enumerable: true, get: function () { return catalog_decorators_1.CatalogType; } });
|
|
@@ -60,7 +60,10 @@ Object.defineProperty(exports, "CatalogRegistry", { enumerable: true, get: funct
|
|
|
60
60
|
var catalog_pipeline_1 = require("./catalog.pipeline");
|
|
61
61
|
Object.defineProperty(exports, "CATALOG_PIPELINE_STORE", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_PIPELINE_STORE; } });
|
|
62
62
|
Object.defineProperty(exports, "CODE_CONTEXT_CONTRACT", { enumerable: true, get: function () { return catalog_pipeline_1.CODE_CONTEXT_CONTRACT; } });
|
|
63
|
+
Object.defineProperty(exports, "CATALOG_SNAPSHOT_RESERVED_NAMES", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_SNAPSHOT_RESERVED_NAMES; } });
|
|
64
|
+
Object.defineProperty(exports, "CATALOG_SOURCE_SNAPSHOT_KEY", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_SOURCE_SNAPSHOT_KEY; } });
|
|
63
65
|
Object.defineProperty(exports, "CATALOG_SOURCE_TYPE_KEY", { enumerable: true, get: function () { return catalog_pipeline_1.CATALOG_SOURCE_TYPE_KEY; } });
|
|
66
|
+
Object.defineProperty(exports, "catalogSnapshotRefusal", { enumerable: true, get: function () { return catalog_pipeline_1.catalogSnapshotRefusal; } });
|
|
64
67
|
Object.defineProperty(exports, "CONNECTOR_KINDS", { enumerable: true, get: function () { return catalog_pipeline_1.CONNECTOR_KINDS; } });
|
|
65
68
|
Object.defineProperty(exports, "callableWorkflowBlock", { enumerable: true, get: function () { return catalog_pipeline_1.callableWorkflowBlock; } });
|
|
66
69
|
Object.defineProperty(exports, "isConnectorKind", { enumerable: true, get: function () { return catalog_pipeline_1.isConnectorKind; } });
|
|
@@ -155,6 +158,7 @@ Object.defineProperty(exports, "workflowGraphHash", { enumerable: true, get: fun
|
|
|
155
158
|
Object.defineProperty(exports, "workflowKnownColumns", { enumerable: true, get: function () { return catalog_pipeline_1.workflowKnownColumns; } });
|
|
156
159
|
Object.defineProperty(exports, "workflowNarrowedTypes", { enumerable: true, get: function () { return catalog_pipeline_1.workflowNarrowedTypes; } });
|
|
157
160
|
Object.defineProperty(exports, "workflowSourceObjectType", { enumerable: true, get: function () { return catalog_pipeline_1.workflowSourceObjectType; } });
|
|
161
|
+
Object.defineProperty(exports, "workflowSourceSnapshot", { enumerable: true, get: function () { return catalog_pipeline_1.workflowSourceSnapshot; } });
|
|
158
162
|
Object.defineProperty(exports, "workflowNodeRuns", { enumerable: true, get: function () { return catalog_pipeline_1.workflowNodeRuns; } });
|
|
159
163
|
Object.defineProperty(exports, "workflowRunOrder", { enumerable: true, get: function () { return catalog_pipeline_1.workflowRunOrder; } });
|
|
160
164
|
// The lookup vocabulary. `workflowLookupKey` is exported because it is the one
|
|
@@ -306,6 +310,7 @@ Object.defineProperty(exports, "isWriteStore", { enumerable: true, get: function
|
|
|
306
310
|
Object.defineProperty(exports, "outputAlias", { enumerable: true, get: function () { return catalog_store_1.outputAlias; } });
|
|
307
311
|
Object.defineProperty(exports, "physicalColumn", { enumerable: true, get: function () { return catalog_store_1.physicalColumn; } });
|
|
308
312
|
Object.defineProperty(exports, "supportsCarryForward", { enumerable: true, get: function () { return catalog_store_1.supportsCarryForward; } });
|
|
313
|
+
Object.defineProperty(exports, "supportsSnapshotLookup", { enumerable: true, get: function () { return catalog_store_1.supportsSnapshotLookup; } });
|
|
309
314
|
Object.defineProperty(exports, "supportsSnapshotStreams", { enumerable: true, get: function () { return catalog_store_1.supportsSnapshotStreams; } });
|
|
310
315
|
Object.defineProperty(exports, "UnsafeIdentifierError", { enumerable: true, get: function () { return catalog_store_1.UnsafeIdentifierError; } });
|
|
311
316
|
var mikro_orm_read_store_1 = require("./stores/mikro-orm-read.store");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dudousxd/nestjs-catalog",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "A metadata registry for NestJS: object types, properties and relations, derived from your ORM and enriched with decorators.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Davide Carvalho",
|