@dudousxd/nestjs-catalog 0.5.0 → 0.7.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/README.md +163 -0
- package/dist/access.controller.js +25 -0
- package/dist/catalog.controller.d.ts +46 -0
- package/dist/catalog.controller.js +199 -23
- package/dist/catalog.decorators.d.ts +17 -0
- package/dist/catalog.decorators.js +17 -0
- package/dist/catalog.environment.d.ts +104 -12
- package/dist/catalog.environment.js +64 -1
- package/dist/catalog.events.d.ts +67 -3
- package/dist/catalog.events.js +15 -2
- package/dist/catalog.pipeline.d.ts +19 -0
- package/dist/catalog.principal.d.ts +49 -1
- package/dist/catalog.principal.js +92 -0
- package/dist/catalog.registry.js +117 -28
- package/dist/catalog.service.d.ts +53 -10
- package/dist/catalog.service.js +180 -15
- package/dist/catalog.types.d.ts +114 -3
- package/dist/catalog.workspace.d.ts +68 -8
- package/dist/catalog.workspace.js +23 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -2
- package/package.json +1 -1
package/dist/catalog.types.d.ts
CHANGED
|
@@ -54,7 +54,24 @@ export interface CatalogPropertyDef {
|
|
|
54
54
|
/** True when the value came from a hand-written decorator rather than the ORM. */
|
|
55
55
|
enriched: boolean;
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* A link between two object types — the thing that makes this an ontology
|
|
59
|
+
* rather than a list of tables.
|
|
60
|
+
*
|
|
61
|
+
* **Structure derived, semantics declared**, the same split as everywhere else.
|
|
62
|
+
* A `@ManyToOne` already names its target, its kind and its join column, so none
|
|
63
|
+
* of that is ever written by hand — a decorator that could restate it is a
|
|
64
|
+
* decorator that can disagree with the schema. What a human adds is what they
|
|
65
|
+
* add to a scalar, a label and a meaning, through `@CatalogProperty` or the
|
|
66
|
+
* overlay; both key on the property name and so reach a relation without having
|
|
67
|
+
* to know it is one.
|
|
68
|
+
*
|
|
69
|
+
* **One row per declaration, not per link.** `@ManyToOne(() => Base)` on `Mvr`
|
|
70
|
+
* with the matching `@OneToMany` on `Base` is two rows describing one link.
|
|
71
|
+
* Collapsing them here would mean `Base` could not carry its own label for the
|
|
72
|
+
* end it declares, and a type could not say what it points at without consulting
|
|
73
|
+
* every other type. The graph collapses them instead — see {@link CatalogGraph}.
|
|
74
|
+
*/
|
|
58
75
|
export interface CatalogRelationDef {
|
|
59
76
|
name: string;
|
|
60
77
|
displayName: string;
|
|
@@ -67,6 +84,39 @@ export interface CatalogRelationDef {
|
|
|
67
84
|
nullable: boolean;
|
|
68
85
|
hidden: boolean;
|
|
69
86
|
order: number;
|
|
87
|
+
/**
|
|
88
|
+
* True when this side physically holds the key.
|
|
89
|
+
*
|
|
90
|
+
* The two ends of a link are not interchangeable. The owning end is where the
|
|
91
|
+
* foreign key actually is, so it is the end a join is written from, the end
|
|
92
|
+
* whose column can be indexed, and the end whose removal breaks the link. A
|
|
93
|
+
* `1:m` is never the owner — the key lives on the many side.
|
|
94
|
+
*/
|
|
95
|
+
owner: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* The property on {@link targetType} that is the other end of this same link,
|
|
98
|
+
* when the ORM knows it (MikroORM's `mappedBy` / `inversedBy`).
|
|
99
|
+
*
|
|
100
|
+
* This is what lets two rows be recognised as one link. Pairing them by name
|
|
101
|
+
* instead only works for the accident of both ends being spelled the same:
|
|
102
|
+
* `Mvr.base` and `Base.mvrs` are one link and would otherwise draw two edges,
|
|
103
|
+
* which is exactly the picture a graph is supposed to prevent.
|
|
104
|
+
*/
|
|
105
|
+
inverseName?: string;
|
|
106
|
+
/**
|
|
107
|
+
* Whether {@link targetType} is a type this catalog actually holds.
|
|
108
|
+
*
|
|
109
|
+
* False when the target was excluded by configuration, or belongs to an
|
|
110
|
+
* application that has not published it. The relation is still reported: that
|
|
111
|
+
* an MVR points at something called `Base` is true, and when the other end is
|
|
112
|
+
* missing that is the most useful single fact about it. Dropping it silently
|
|
113
|
+
* would leave a type looking unlinked when it is really linked to something
|
|
114
|
+
* out of reach — but drawing it as a navigable edge promises a node that
|
|
115
|
+
* cannot be opened, so the graph omits it and the type page keeps it, marked.
|
|
116
|
+
*/
|
|
117
|
+
targetPublished: boolean;
|
|
118
|
+
/** True when a human has labelled or described this link. */
|
|
119
|
+
enriched: boolean;
|
|
70
120
|
}
|
|
71
121
|
/** One node of the ontology. */
|
|
72
122
|
export interface CatalogObjectTypeDef {
|
|
@@ -97,6 +147,40 @@ export interface CatalogObjectTypeDef {
|
|
|
97
147
|
* came from a regex and are probably wrong.
|
|
98
148
|
*/
|
|
99
149
|
enriched: boolean;
|
|
150
|
+
/**
|
|
151
|
+
* When readers started seeing the data this type currently serves.
|
|
152
|
+
*
|
|
153
|
+
* `committedAt` of the newest committed snapshot, not `createdAt`: a load that
|
|
154
|
+
* was written and never committed is not what anybody is reading, and dating
|
|
155
|
+
* the type by it would report freshness nobody has.
|
|
156
|
+
*
|
|
157
|
+
* **Absent means no committed snapshot ever**, which is a different statement
|
|
158
|
+
* from "committed a year ago" — a type published by a schema and never loaded
|
|
159
|
+
* looked exactly like a type loaded daily until this field existed, and both
|
|
160
|
+
* looked exactly like a type whose publisher was deleted six months ago.
|
|
161
|
+
*
|
|
162
|
+
* Carried on the type rather than fetched per type on demand. The value of
|
|
163
|
+
* this signal is that it arrives without anybody going to look for it, and a
|
|
164
|
+
* field costing one request per row on a screen listing every type is a field
|
|
165
|
+
* that screen will not use.
|
|
166
|
+
*/
|
|
167
|
+
lastCommittedAt?: string;
|
|
168
|
+
/**
|
|
169
|
+
* Rows in that snapshot.
|
|
170
|
+
*
|
|
171
|
+
* Here for a failure the timestamp cannot show: a connector that starts
|
|
172
|
+
* returning 12 rows where it returned 40,000 produces data that is wrong and
|
|
173
|
+
* *fresh*, so every staleness signal reports it as healthy. The count next to
|
|
174
|
+
* the date is what makes that visible, and it is the same read.
|
|
175
|
+
*/
|
|
176
|
+
rowCount?: number;
|
|
177
|
+
/**
|
|
178
|
+
* Which application committed it.
|
|
179
|
+
*
|
|
180
|
+
* Because "stale since March" is never the last question — "so who was
|
|
181
|
+
* loading this?" is — and the answer is already in the row being read.
|
|
182
|
+
*/
|
|
183
|
+
lastPrincipalId?: string;
|
|
100
184
|
properties: CatalogPropertyDef[];
|
|
101
185
|
relations: CatalogRelationDef[];
|
|
102
186
|
}
|
|
@@ -108,12 +192,27 @@ export interface CatalogSnapshot {
|
|
|
108
192
|
stats: {
|
|
109
193
|
types: number;
|
|
110
194
|
properties: number;
|
|
195
|
+
/**
|
|
196
|
+
* Declared relations, summed over the types — **not** distinct links. A link
|
|
197
|
+
* declared at both ends counts twice, because that is what this number is
|
|
198
|
+
* derived from and quietly halving it would make it disagree with the rows
|
|
199
|
+
* on the type pages that produce it. `getGraph().edges.length` is the count
|
|
200
|
+
* of links.
|
|
201
|
+
*/
|
|
111
202
|
relations: number;
|
|
112
203
|
enrichedTypes: number;
|
|
113
204
|
};
|
|
114
205
|
types: CatalogObjectTypeDef[];
|
|
115
206
|
}
|
|
116
|
-
/**
|
|
207
|
+
/**
|
|
208
|
+
* Nodes and edges, for drawing the ontology.
|
|
209
|
+
*
|
|
210
|
+
* One edge per **link**, not per declaration: a link declared at both ends is
|
|
211
|
+
* one line on the picture, drawn from the end that holds the key so the arrow
|
|
212
|
+
* points the way a join is written. And every edge lands on a node that is
|
|
213
|
+
* present — a target this catalog does not hold produces no edge, because an
|
|
214
|
+
* edge to nowhere is a node the reader will try to click.
|
|
215
|
+
*/
|
|
117
216
|
export interface CatalogGraph {
|
|
118
217
|
nodes: Array<{
|
|
119
218
|
id: string;
|
|
@@ -143,6 +242,12 @@ export interface CatalogOverlay {
|
|
|
143
242
|
icon?: string;
|
|
144
243
|
group?: string;
|
|
145
244
|
titleProperty?: string;
|
|
245
|
+
/**
|
|
246
|
+
* Keyed by property name — and a relation is a property to whoever is
|
|
247
|
+
* looking, so a link's label and description are curated through this map
|
|
248
|
+
* too, under the relation's own name. That is why curating a link needs no
|
|
249
|
+
* new route and no new patch shape: `patchProperty` already accepts one.
|
|
250
|
+
*/
|
|
146
251
|
properties?: Record<string, {
|
|
147
252
|
displayName?: string;
|
|
148
253
|
description?: string;
|
|
@@ -166,7 +271,13 @@ export interface CatalogObjectPage {
|
|
|
166
271
|
size: number;
|
|
167
272
|
total: number;
|
|
168
273
|
pages: number;
|
|
169
|
-
/**
|
|
274
|
+
/**
|
|
275
|
+
* The visible, non-blob columns, in overlay order.
|
|
276
|
+
*
|
|
277
|
+
* Visible means "not hidden by the overlay". It does **not** mean redacted for
|
|
278
|
+
* a caller: a classified column is here, with its `classification` on it, and
|
|
279
|
+
* dropping it is the host's move — see `readableObjectPage`.
|
|
280
|
+
*/
|
|
170
281
|
columns: Array<{
|
|
171
282
|
name: string;
|
|
172
283
|
displayName: string;
|
|
@@ -34,8 +34,16 @@ export interface SavedQuery {
|
|
|
34
34
|
* relations, so working out "which types does this touch" means parsing the
|
|
35
35
|
* statement — and a permission derived from a parser is a permission that
|
|
36
36
|
* silently widens the day the parser meets a query it did not expect. Marking
|
|
37
|
-
* it shared is a decision a person made, and it shows up in the audit trail
|
|
38
|
-
*
|
|
37
|
+
* it shared is a decision a person made, and it shows up in the audit trail as
|
|
38
|
+
* one: `CatalogService` emits `query.shared` on the transition, in both
|
|
39
|
+
* directions, naming whoever made it. Deleting a shared query is one of those
|
|
40
|
+
* directions — it revokes outside access as surely as the toggle does — and is
|
|
41
|
+
* emitted the same way, with `deleted: true` to say which ending it was.
|
|
42
|
+
*
|
|
43
|
+
* That last sentence was a claim before it was true — the event did not exist
|
|
44
|
+
* and the one act that hands an outside application data left no trace at all.
|
|
45
|
+
* Anything written here about what is recorded should be checkable against
|
|
46
|
+
* `CATALOG_EVENTS` and an emit site.
|
|
39
47
|
*/
|
|
40
48
|
shared: boolean;
|
|
41
49
|
}
|
|
@@ -71,7 +79,11 @@ export interface Dashboard {
|
|
|
71
79
|
createdAt: string;
|
|
72
80
|
updatedAt: string;
|
|
73
81
|
cards: DashboardCard[];
|
|
74
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Fetchable through the embed API by an application with `catalog:embed`.
|
|
84
|
+
*
|
|
85
|
+
* Audited the same way {@link SavedQuery.shared} is, as `dashboard.shared`.
|
|
86
|
+
*/
|
|
75
87
|
shared: boolean;
|
|
76
88
|
}
|
|
77
89
|
export interface DashboardCard {
|
|
@@ -225,11 +237,17 @@ export interface CatalogTrace {
|
|
|
225
237
|
/**
|
|
226
238
|
* True when the whole story fits inside one tick of the recorder's clock.
|
|
227
239
|
*
|
|
228
|
-
* Worth saying out loud rather than quietly drawing zero-width bars:
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
240
|
+
* Worth saying out loud rather than quietly drawing zero-width bars: when a
|
|
241
|
+
* load finishes inside one tick it has no measurable internal timing at all,
|
|
242
|
+
* and a waterfall drawn from it would be a picture of rounding error.
|
|
243
|
+
* Ordering is still correct — see the lifecycle rank the store sorts by — but
|
|
244
|
+
* proportions are not, and a consumer should say so.
|
|
245
|
+
*
|
|
246
|
+
* How coarse a tick is belongs to the store, not to this field: read
|
|
247
|
+
* `clockResolutionMs` rather than assuming. The bundled MySQL store keeps
|
|
248
|
+
* milliseconds, so this is now true only of loads that really did finish
|
|
249
|
+
* inside one — and of rows written before that column was widened, which
|
|
250
|
+
* collapse onto a whole second and are honestly still coarse.
|
|
233
251
|
*/
|
|
234
252
|
coarse: boolean;
|
|
235
253
|
/** Ordered: what started it first, how it ended last. */
|
|
@@ -414,11 +432,53 @@ export interface EmbeddedDashboard {
|
|
|
414
432
|
charts: EmbeddedChart[];
|
|
415
433
|
generatedAt: string;
|
|
416
434
|
}
|
|
435
|
+
/**
|
|
436
|
+
* What the *card* says about a chart, as opposed to what the saved query says.
|
|
437
|
+
*
|
|
438
|
+
* A card carries two kinds of statement and they are easy to conflate. Width
|
|
439
|
+
* and position are a hint about the grid, which a consumer may ignore. `title`
|
|
440
|
+
* and `library` are overrides — the board's answer to a question the query has
|
|
441
|
+
* already answered — and dropping them is not a hint being ignored, it is the
|
|
442
|
+
* embed disagreeing with the console about the same dashboard.
|
|
443
|
+
*/
|
|
444
|
+
export interface EmbeddedChartPlacement {
|
|
445
|
+
width: number;
|
|
446
|
+
position: number;
|
|
447
|
+
/** The card's title override. Blank or absent falls back to the query's name. */
|
|
448
|
+
title?: string;
|
|
449
|
+
/** The card's library override. Absent falls back to the query's own. */
|
|
450
|
+
library?: string;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Which library draws an embedded chart, given the two places that can say.
|
|
454
|
+
*
|
|
455
|
+
* The server twin of `visualizationFor` in the React package, and it must stay
|
|
456
|
+
* the same rule: the card wins, then the query, then the built-in renderer. Two
|
|
457
|
+
* different precedences for one field would mean the console and an embedding
|
|
458
|
+
* application draw the same board differently, which is exactly the bug the
|
|
459
|
+
* override exists to prevent.
|
|
460
|
+
*
|
|
461
|
+
* Restated here rather than imported, because a server package must not depend
|
|
462
|
+
* on a React one. Kept as a named function rather than two lines inside
|
|
463
|
+
* `embedChart` for the same reason the React side did: a precedence a test can
|
|
464
|
+
* hold by name cannot drift silently.
|
|
465
|
+
*
|
|
466
|
+
* When neither chose, the key is ABSENT rather than explicitly undefined — this
|
|
467
|
+
* shape is serialised to a consumer, and "the key is there and empty" is a
|
|
468
|
+
* different statement from "nobody chose".
|
|
469
|
+
*/
|
|
470
|
+
export declare function embeddedVisualization(saved: QueryVisualization | undefined, cardLibrary: string | undefined): QueryVisualization;
|
|
417
471
|
export interface CatalogWorkspaceStore {
|
|
418
472
|
listSavedQueries(): Promise<SavedQuery[]>;
|
|
419
473
|
getSavedQuery(id: string): Promise<SavedQuery | undefined>;
|
|
420
474
|
saveQuery(input: SaveQueryInput, createdBy: string): Promise<SavedQuery>;
|
|
421
475
|
updateSavedQuery(id: string, input: Partial<SaveQueryInput>): Promise<SavedQuery | undefined>;
|
|
476
|
+
/**
|
|
477
|
+
* Unchanged by the audit work above it: the *store* takes no actor, because a
|
|
478
|
+
* store that emitted would emit on every path into it and could not tell a
|
|
479
|
+
* revocation from a cascade. `CatalogService.deleteSavedQuery` reads the row
|
|
480
|
+
* first and decides.
|
|
481
|
+
*/
|
|
422
482
|
deleteSavedQuery(id: string): Promise<boolean>;
|
|
423
483
|
listDashboards(): Promise<Dashboard[]>;
|
|
424
484
|
getDashboard(id: string): Promise<Dashboard | undefined>;
|
|
@@ -13,6 +13,7 @@ exports.CATALOG_WORKSPACE_STORE = exports.CATALOG_TRACE_STORE = exports.CATALOG_
|
|
|
13
13
|
exports.isCatalogTraceOutcome = isCatalogTraceOutcome;
|
|
14
14
|
exports.traceOutcomeFilter = traceOutcomeFilter;
|
|
15
15
|
exports.isTraceStore = isTraceStore;
|
|
16
|
+
exports.embeddedVisualization = embeddedVisualization;
|
|
16
17
|
exports.isWorkspaceStore = isWorkspaceStore;
|
|
17
18
|
/**
|
|
18
19
|
* The same events, told as stories instead of as a list.
|
|
@@ -79,6 +80,28 @@ function isTraceStore(store) {
|
|
|
79
80
|
store !== null &&
|
|
80
81
|
typeof Reflect.get(store, 'listTraces') === 'function');
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Which library draws an embedded chart, given the two places that can say.
|
|
85
|
+
*
|
|
86
|
+
* The server twin of `visualizationFor` in the React package, and it must stay
|
|
87
|
+
* the same rule: the card wins, then the query, then the built-in renderer. Two
|
|
88
|
+
* different precedences for one field would mean the console and an embedding
|
|
89
|
+
* application draw the same board differently, which is exactly the bug the
|
|
90
|
+
* override exists to prevent.
|
|
91
|
+
*
|
|
92
|
+
* Restated here rather than imported, because a server package must not depend
|
|
93
|
+
* on a React one. Kept as a named function rather than two lines inside
|
|
94
|
+
* `embedChart` for the same reason the React side did: a precedence a test can
|
|
95
|
+
* hold by name cannot drift silently.
|
|
96
|
+
*
|
|
97
|
+
* When neither chose, the key is ABSENT rather than explicitly undefined — this
|
|
98
|
+
* shape is serialised to a consumer, and "the key is there and empty" is a
|
|
99
|
+
* different statement from "nobody chose".
|
|
100
|
+
*/
|
|
101
|
+
function embeddedVisualization(saved, cardLibrary) {
|
|
102
|
+
const base = saved ?? { kind: 'table' };
|
|
103
|
+
return cardLibrary ? { ...base, library: cardLibrary } : base;
|
|
104
|
+
}
|
|
82
105
|
function isWorkspaceStore(store) {
|
|
83
106
|
return (typeof store === 'object' &&
|
|
84
107
|
store !== null &&
|
package/dist/index.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export * from './catalog.environment';
|
|
|
12
12
|
export { QueryCache, toCsv } from './catalog.query-cache';
|
|
13
13
|
export { SubprocessTransformRunner, type TransformRunnerOptions, } from './transform-runner';
|
|
14
14
|
export { CatalogService } from './catalog.service';
|
|
15
|
-
export { type AuditQuery, CATALOG_TRACE_OUTCOMES, CATALOG_TRACE_STORE, CATALOG_WORKSPACE_STORE, type CatalogAuditEvent, type CatalogTrace, type CatalogTraceList, type CatalogTraceOutcome, type CatalogTraceSpan, type CatalogTraceStore, type CatalogTraceTotals, type CatalogUnlinkedList, type CatalogWorkspaceStore, type Dashboard, type DashboardCard, isCatalogTraceOutcome, isTraceStore, isWorkspaceStore, type QueryVisualization, type SaveQueryInput, type SavedQuery, type TraceQuery, traceOutcomeFilter, } from './catalog.workspace';
|
|
16
|
-
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, StaticKeyPrincipalResolver, } from './catalog.principal';
|
|
15
|
+
export { type AuditQuery, CATALOG_TRACE_OUTCOMES, CATALOG_TRACE_STORE, CATALOG_WORKSPACE_STORE, type CatalogAuditEvent, type CatalogTrace, type CatalogTraceList, type CatalogTraceOutcome, type CatalogTraceSpan, type CatalogTraceStore, type CatalogTraceTotals, type CatalogUnlinkedList, type CatalogWorkspaceStore, type Dashboard, type DashboardCard, type EmbeddedChart, type EmbeddedChartPlacement, type EmbeddedDashboard, embeddedVisualization, isCatalogTraceOutcome, isTraceStore, isWorkspaceStore, type QueryVisualization, type SaveQueryInput, type SavedQuery, type TraceQuery, traceOutcomeFilter, } from './catalog.workspace';
|
|
16
|
+
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';
|
|
17
17
|
export * from './catalog.access';
|
|
18
18
|
export { assertNoColumnCollisions, CATALOG_RESERVED_COLUMNS, CATALOG_SNAPSHOT_MODES, CATALOG_STORE, type CarryForwardResult, type CatalogColumnCollision, CatalogColumnCollisionError, type CatalogMergeStore, type CatalogReadQuery, type CatalogReadResult, type CatalogReadStore, type CatalogReservedColumn, type CatalogSnapshotMode, type CatalogStoreCapabilities, type CatalogWriteStore, type ColumnCollisionOptions, findColumnCollisions, isCatalogStoreCapabilities, isReservedColumn, isWriteStore, type SnapshotRef, supportsCarryForward, } from './catalog.store';
|
|
19
19
|
export { MikroOrmReadStore } from './stores/mikro-orm-read.store';
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ 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.RequireScopes = exports.RequireHuman = exports.REQUIRES_HUMAN = exports.REQUIRED_SCOPES = exports.MikroOrmReadStore = exports.supportsCarryForward = exports.isWriteStore = exports.isReservedColumn = exports.isCatalogStoreCapabilities = exports.findColumnCollisions = exports.CatalogColumnCollisionError = exports.CATALOG_STORE = exports.CATALOG_SNAPSHOT_MODES = exports.CATALOG_RESERVED_COLUMNS = exports.assertNoColumnCollisions = exports.StaticKeyPrincipalResolver = exports.mayWrite = exports.mayRead = exports.maySeeClassification = exports.PRINCIPAL_ACTOR_SEPARATOR = exports.parsePrincipalId = exports.hasScope = exports.expandScopes = exports.delegatePrincipal = exports.composePrincipalId = void 0;
|
|
17
|
+
exports.traceOutcomeFilter = exports.isWorkspaceStore = exports.isTraceStore = exports.isCatalogTraceOutcome = exports.embeddedVisualization = exports.CATALOG_WORKSPACE_STORE = exports.CATALOG_TRACE_STORE = exports.CATALOG_TRACE_OUTCOMES = exports.CatalogService = exports.SubprocessTransformRunner = exports.toCsv = exports.QueryCache = exports.workflowRunOrder = exports.workflowGraphHash = exports.WORKFLOW_NODE_KINDS = exports.WORKFLOW_NODE_ID_PATTERN = exports.WORKFLOW_ISSUE_CODES = exports.WORKFLOW_EXECUTION_MODES = exports.validateWorkflow = exports.TRANSFORM_LANGUAGES = exports.TRANSFORM_RUNNER = exports.supportsWorkflowStages = exports.supportsWorkflows = exports.isWorkflowNodeKind = exports.isWorkflowNode = exports.isWorkflowExecutionMode = exports.isWorkflowEdge = exports.isTransformLanguage = exports.isPipelineStore = exports.isConnectorKind = exports.CONNECTOR_KINDS = exports.CATALOG_PIPELINE_STORE = exports.CatalogRegistry = exports.MikroOrmCatalogRegistry = exports.CATALOG_OVERLAY_STORE = exports.InMemoryCatalogOverlayStore = exports.FileCatalogOverlayStore = exports.CATALOG_OPTIONS = exports.isQueryStore = exports.assertReadOnlyShape = exports.CatalogModule = exports.emitCatalog = exports.channelNameFor = exports.catalogEventPhase = exports.CATALOG_LIB = exports.CATALOG_EVENTS = exports.CATALOG_EVENT_PHASE_FALLBACK = exports.CATALOG_EVENT_PHASE = exports.CatalogType = exports.CatalogProperty = void 0;
|
|
18
|
+
exports.RequireScopes = exports.RequireHuman = exports.REQUIRES_HUMAN = exports.REQUIRED_SCOPES = exports.MikroOrmReadStore = exports.supportsCarryForward = exports.isWriteStore = exports.isReservedColumn = exports.isCatalogStoreCapabilities = exports.findColumnCollisions = exports.CatalogColumnCollisionError = exports.CATALOG_STORE = exports.CATALOG_SNAPSHOT_MODES = exports.CATALOG_RESERVED_COLUMNS = exports.assertNoColumnCollisions = exports.StaticKeyPrincipalResolver = 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 = void 0;
|
|
19
19
|
var catalog_decorators_1 = require("./catalog.decorators");
|
|
20
20
|
Object.defineProperty(exports, "CatalogProperty", { enumerable: true, get: function () { return catalog_decorators_1.CatalogProperty; } });
|
|
21
21
|
Object.defineProperty(exports, "CatalogType", { enumerable: true, get: function () { return catalog_decorators_1.CatalogType; } });
|
|
@@ -78,6 +78,7 @@ var catalog_workspace_1 = require("./catalog.workspace");
|
|
|
78
78
|
Object.defineProperty(exports, "CATALOG_TRACE_OUTCOMES", { enumerable: true, get: function () { return catalog_workspace_1.CATALOG_TRACE_OUTCOMES; } });
|
|
79
79
|
Object.defineProperty(exports, "CATALOG_TRACE_STORE", { enumerable: true, get: function () { return catalog_workspace_1.CATALOG_TRACE_STORE; } });
|
|
80
80
|
Object.defineProperty(exports, "CATALOG_WORKSPACE_STORE", { enumerable: true, get: function () { return catalog_workspace_1.CATALOG_WORKSPACE_STORE; } });
|
|
81
|
+
Object.defineProperty(exports, "embeddedVisualization", { enumerable: true, get: function () { return catalog_workspace_1.embeddedVisualization; } });
|
|
81
82
|
Object.defineProperty(exports, "isCatalogTraceOutcome", { enumerable: true, get: function () { return catalog_workspace_1.isCatalogTraceOutcome; } });
|
|
82
83
|
Object.defineProperty(exports, "isTraceStore", { enumerable: true, get: function () { return catalog_workspace_1.isTraceStore; } });
|
|
83
84
|
Object.defineProperty(exports, "isWorkspaceStore", { enumerable: true, get: function () { return catalog_workspace_1.isWorkspaceStore; } });
|
|
@@ -93,6 +94,7 @@ Object.defineProperty(exports, "PRINCIPAL_ACTOR_SEPARATOR", { enumerable: true,
|
|
|
93
94
|
Object.defineProperty(exports, "maySeeClassification", { enumerable: true, get: function () { return catalog_principal_1.maySeeClassification; } });
|
|
94
95
|
Object.defineProperty(exports, "mayRead", { enumerable: true, get: function () { return catalog_principal_1.mayRead; } });
|
|
95
96
|
Object.defineProperty(exports, "mayWrite", { enumerable: true, get: function () { return catalog_principal_1.mayWrite; } });
|
|
97
|
+
Object.defineProperty(exports, "readableObjectPage", { enumerable: true, get: function () { return catalog_principal_1.readableObjectPage; } });
|
|
96
98
|
Object.defineProperty(exports, "StaticKeyPrincipalResolver", { enumerable: true, get: function () { return catalog_principal_1.StaticKeyPrincipalResolver; } });
|
|
97
99
|
// Everything, deliberately. The last release exported the directory interface
|
|
98
100
|
// but not the two types its one method takes and returns, so the seam could be
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dudousxd/nestjs-catalog",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.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",
|