@memberjunction/metadata-sync 5.40.2 → 5.41.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/lib/sync-metadata-engine.d.ts +101 -22
- package/dist/lib/sync-metadata-engine.d.ts.map +1 -1
- package/dist/lib/sync-metadata-engine.js +170 -50
- package/dist/lib/sync-metadata-engine.js.map +1 -1
- package/dist/services/FormattingService.d.ts +25 -1
- package/dist/services/FormattingService.d.ts.map +1 -1
- package/dist/services/FormattingService.js +94 -18
- package/dist/services/FormattingService.js.map +1 -1
- package/dist/services/PushService.d.ts +35 -1
- package/dist/services/PushService.d.ts.map +1 -1
- package/dist/services/PushService.js +163 -43
- package/dist/services/PushService.js.map +1 -1
- package/package.json +12 -12
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 1. **Preload** — `Config()` scans every JSON file under each entity
|
|
9
9
|
* directory once, collects the set of entity names touched (including
|
|
10
|
-
* nested `relatedEntities`), and
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* nested `relatedEntities`), and populates one in-memory slot per
|
|
11
|
+
* entity. We want *all* rows of each touched entity, not just the PKs
|
|
12
|
+
* mentioned in files — for two reasons:
|
|
13
13
|
*
|
|
14
14
|
* (a) `mj sync` is for METADATA. The entities involved (Actions,
|
|
15
15
|
* Prompts, Agents, Templates, etc.) are inherently bounded —
|
|
@@ -20,9 +20,35 @@
|
|
|
20
20
|
* the local files (e.g. a category referenced by name). A
|
|
21
21
|
* full preload means those lookups hit the cache too.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Each slot is filled one of two ways:
|
|
24
|
+
*
|
|
25
|
+
* - **Delegation (preferred)** — the CLI bootstrap runs
|
|
26
|
+
* `StartupManager.Startup()`, which Config()s every
|
|
27
|
+
* `@RegisterForStartup` engine (AIEngineBase, QueryEngine,
|
|
28
|
+
* IntegrationEngineBase, …) seconds before the push begins. Those
|
|
29
|
+
* engines already hold full, unfiltered `entity_object` caches of
|
|
30
|
+
* many of the entities we touch. Rather than re-querying the same
|
|
31
|
+
* rows, {@link delegateEntityIfCached} asks
|
|
32
|
+
* `BaseEngineRegistry.FindCachedEntity` for a loaded engine with an
|
|
33
|
+
* unfiltered, unordered, BaseEntity-typed cache and proxies our
|
|
34
|
+
* slot to that engine's **live array** (resolved per-access via
|
|
35
|
+
* engine + property name, so donor-side array reassignment can't
|
|
36
|
+
* strand us). Live references are safe because every accepted
|
|
37
|
+
* donor config passes `canUseImmediateMutation` — the donor's own
|
|
38
|
+
* event subscription maintains the array in place on save/delete,
|
|
39
|
+
* and our explicit {@link addEntityToCache} writes are
|
|
40
|
+
* PK-deduped on both sides.
|
|
41
|
+
*
|
|
42
|
+
* - **Self-load (fallback)** — entities no loaded engine caches
|
|
43
|
+
* (Templates, Actions, Entity Fields, …) are loaded by
|
|
44
|
+
* `BaseEngine.Load` issuing one unfiltered `RunView` per entity,
|
|
45
|
+
* exactly as before.
|
|
46
|
+
*
|
|
47
|
+
* Either way, the `BaseEntity` instances are reachable through
|
|
48
|
+
* {@link getCachedEntities} / {@link findCachedByPrimaryKey}; lookups
|
|
49
|
+
* during the sync phase consult those arrays instead of round-tripping
|
|
50
|
+
* the DB. Self-loaded slots live on dynamic properties named via
|
|
51
|
+
* {@link getPropertyNameForEntity}.
|
|
26
52
|
*
|
|
27
53
|
* 2. **Event-driven mutation** — `BaseEngine` already wires up the global
|
|
28
54
|
* `BaseEntity` event bus. Because our configs carry no Filter/OrderBy,
|
|
@@ -45,6 +71,11 @@ export interface CachedFile {
|
|
|
45
71
|
/** The fully-resolved JSON after `@include` preprocessing. Same reference as `rawData` when the file has no `@include`s. */
|
|
46
72
|
fileData: unknown;
|
|
47
73
|
}
|
|
74
|
+
/** One delegated entity → donor engine pairing, for logging/diagnostics. */
|
|
75
|
+
export interface DelegationSummaryEntry {
|
|
76
|
+
entityName: string;
|
|
77
|
+
engineClassName: string;
|
|
78
|
+
}
|
|
48
79
|
/**
|
|
49
80
|
* Coordinates upfront batch-preloading of `BaseEntity` instances and in-memory
|
|
50
81
|
* caches for `mj sync push`. See module docstring for the full picture.
|
|
@@ -55,6 +86,12 @@ export declare class SyncMetadataEngine extends BaseEngine<SyncMetadataEngine> {
|
|
|
55
86
|
private preloadedEntityNames;
|
|
56
87
|
private lookupCache;
|
|
57
88
|
private fileDataCache;
|
|
89
|
+
/**
|
|
90
|
+
* Entities whose slot proxies a donor engine's live cache instead of a
|
|
91
|
+
* self-loaded array. Populated by {@link delegateEntityIfCached} during
|
|
92
|
+
* `Config()`; consulted first by {@link resolveSlot}.
|
|
93
|
+
*/
|
|
94
|
+
private delegatedSlots;
|
|
58
95
|
/** Reverse index used to scope lookup invalidation on delete: entity name → set of lookup keys touching that entity. */
|
|
59
96
|
private lookupKeysByEntity;
|
|
60
97
|
/**
|
|
@@ -87,17 +124,27 @@ export declare class SyncMetadataEngine extends BaseEngine<SyncMetadataEngine> {
|
|
|
87
124
|
*/
|
|
88
125
|
getPropertyNameForEntity(entityName: string): string;
|
|
89
126
|
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
127
|
+
* Scan the metadata tree for touched entities, then fill one slot per
|
|
128
|
+
* entity: delegate to an already-loaded engine's cache when
|
|
129
|
+
* {@link delegateEntityIfCached} finds a suitable donor, otherwise
|
|
130
|
+
* self-load via `BaseEngine.Load` (which fans the per-entity unfiltered
|
|
131
|
+
* views out over a single `RunViews` batch under the hood). Finally,
|
|
132
|
+
* build the PK indexes and emit size warnings over BOTH kinds of slot.
|
|
133
|
+
*
|
|
134
|
+
* Note: `forceRefresh` only governs the self-loaded entities. Delegated
|
|
135
|
+
* data was loaded by `StartupManager` during this same process bootstrap,
|
|
136
|
+
* which satisfies preload's "current as of process start" freshness
|
|
137
|
+
* requirement without a second round of identical queries.
|
|
94
138
|
*/
|
|
95
139
|
Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<unknown>;
|
|
96
140
|
/**
|
|
97
|
-
* Build the per-entity PK → entity Map from each populated slot
|
|
98
|
-
*
|
|
99
|
-
* over the
|
|
100
|
-
* to the per-record-lookup savings it enables
|
|
141
|
+
* Build the per-entity PK → entity Map from each populated slot
|
|
142
|
+
* (self-loaded and delegated alike). Runs once after `Config()` fills
|
|
143
|
+
* the slots. The cost (one walk over the arrays, building Map entries)
|
|
144
|
+
* is trivial compared to the per-record-lookup savings it enables
|
|
145
|
+
* downstream. Delegated arrays mutate out-of-band (the donor's event
|
|
146
|
+
* subscription replaces saved instances with clones) — that drift is
|
|
147
|
+
* absorbed by {@link findCachedByPrimaryKey}'s scan-and-repair fallback.
|
|
101
148
|
*/
|
|
102
149
|
private buildPKIndexes;
|
|
103
150
|
/**
|
|
@@ -111,6 +158,32 @@ export declare class SyncMetadataEngine extends BaseEngine<SyncMetadataEngine> {
|
|
|
111
158
|
findCachedByPrimaryKey(entityName: string, primaryKey: Record<string, unknown>): BaseEntity | null;
|
|
112
159
|
markEntityAsPreloaded(entityName: string): void;
|
|
113
160
|
isEntityPreloaded(entityName: string): boolean;
|
|
161
|
+
/**
|
|
162
|
+
* Try to serve an entity's slot from another loaded engine's cache instead
|
|
163
|
+
* of re-querying the DB. Accepts the first `BaseEngineRegistry` match that
|
|
164
|
+
* holds the **complete** entity set in a live-mutation-safe shape:
|
|
165
|
+
*
|
|
166
|
+
* - `unfilteredOnly` — a `Filter` means a subset, useless as a full cache.
|
|
167
|
+
* - no `OrderBy` — ordered configs fail `canUseImmediateMutation`, so the
|
|
168
|
+
* donor responds to entity events with a full refresh that *reassigns*
|
|
169
|
+
* the array property mid-push instead of mutating it in place.
|
|
170
|
+
* - not `ResultType: 'simple'` and rows are `BaseEntity` instances — the
|
|
171
|
+
* sync phase calls `.Get()` / `.PrimaryKey` on cached rows.
|
|
172
|
+
* - not ourselves — a prior run's own slot must not masquerade as a donor.
|
|
173
|
+
*
|
|
174
|
+
* Returns true when a donor was registered; the caller then skips the
|
|
175
|
+
* self-load config for this entity.
|
|
176
|
+
*/
|
|
177
|
+
delegateEntityIfCached(entityName: string): boolean;
|
|
178
|
+
/** Delegated entity → donor engine pairings from the last `Config()` run, for logging. */
|
|
179
|
+
getDelegationSummary(): DelegationSummaryEntry[];
|
|
180
|
+
/**
|
|
181
|
+
* The single resolution point for an entity's backing array: the donor
|
|
182
|
+
* engine's live array when delegated (re-read per access — see
|
|
183
|
+
* {@link DelegatedSlot}), our own `cached_*` slot otherwise. Returns
|
|
184
|
+
* `undefined` when no slot exists yet.
|
|
185
|
+
*/
|
|
186
|
+
private resolveSlot;
|
|
114
187
|
getCachedEntities(entityName: string): BaseEntity[];
|
|
115
188
|
getCachedFile(filePath: string): CachedFile | undefined;
|
|
116
189
|
cacheFile(filePath: string, rawData: unknown, fileData: unknown): void;
|
|
@@ -143,16 +216,22 @@ export declare class SyncMetadataEngine extends BaseEngine<SyncMetadataEngine> {
|
|
|
143
216
|
serializePrimaryKey(entityInfo: EntityInfo, primaryKey: Record<string, unknown>): string;
|
|
144
217
|
/**
|
|
145
218
|
* Walk every entity referenced by metadata files (including nested
|
|
146
|
-
* `relatedEntities`) and
|
|
147
|
-
*
|
|
148
|
-
|
|
149
|
-
|
|
219
|
+
* `relatedEntities`) and return the set of entity names touched by this
|
|
220
|
+
* run. Also primes the file cache as a side effect of the scan.
|
|
221
|
+
*/
|
|
222
|
+
private collectTouchedEntities;
|
|
223
|
+
/**
|
|
224
|
+
* Decide, per touched entity, whether the slot delegates to an
|
|
225
|
+
* already-loaded engine's cache or self-loads. Returns the `BaseEngine`
|
|
226
|
+
* configs for the self-load remainder; each one triggers a single
|
|
227
|
+
* `SELECT * FROM vw<Entity>` (capped by `IgnoreMaxRows: true` in
|
|
228
|
+
* BaseEngine), pre-populating the per-entity slot the sync path reads.
|
|
150
229
|
*/
|
|
151
|
-
private
|
|
230
|
+
private partitionEntities;
|
|
152
231
|
/**
|
|
153
|
-
* After
|
|
154
|
-
*
|
|
155
|
-
* warning so the operator knows their sync is
|
|
232
|
+
* After the slots are filled, check whether any single preloaded entity
|
|
233
|
+
* (self-loaded or delegated) exceeds the metadata-scale threshold. Emit a
|
|
234
|
+
* warning so the operator knows their sync is using something it
|
|
156
235
|
* probably shouldn't be.
|
|
157
236
|
*/
|
|
158
237
|
private warnOnOversizedSlots;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-metadata-engine.d.ts","sourceRoot":"","sources":["../../src/lib/sync-metadata-engine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sync-metadata-engine.d.ts","sourceRoot":"","sources":["../../src/lib/sync-metadata-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 1. **Preload** — `Config()` scans every JSON file under each entity
|
|
9
9
|
* directory once, collects the set of entity names touched (including
|
|
10
|
-
* nested `relatedEntities`), and
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* nested `relatedEntities`), and populates one in-memory slot per
|
|
11
|
+
* entity. We want *all* rows of each touched entity, not just the PKs
|
|
12
|
+
* mentioned in files — for two reasons:
|
|
13
13
|
*
|
|
14
14
|
* (a) `mj sync` is for METADATA. The entities involved (Actions,
|
|
15
15
|
* Prompts, Agents, Templates, etc.) are inherently bounded —
|
|
@@ -20,9 +20,35 @@
|
|
|
20
20
|
* the local files (e.g. a category referenced by name). A
|
|
21
21
|
* full preload means those lookups hit the cache too.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Each slot is filled one of two ways:
|
|
24
|
+
*
|
|
25
|
+
* - **Delegation (preferred)** — the CLI bootstrap runs
|
|
26
|
+
* `StartupManager.Startup()`, which Config()s every
|
|
27
|
+
* `@RegisterForStartup` engine (AIEngineBase, QueryEngine,
|
|
28
|
+
* IntegrationEngineBase, …) seconds before the push begins. Those
|
|
29
|
+
* engines already hold full, unfiltered `entity_object` caches of
|
|
30
|
+
* many of the entities we touch. Rather than re-querying the same
|
|
31
|
+
* rows, {@link delegateEntityIfCached} asks
|
|
32
|
+
* `BaseEngineRegistry.FindCachedEntity` for a loaded engine with an
|
|
33
|
+
* unfiltered, unordered, BaseEntity-typed cache and proxies our
|
|
34
|
+
* slot to that engine's **live array** (resolved per-access via
|
|
35
|
+
* engine + property name, so donor-side array reassignment can't
|
|
36
|
+
* strand us). Live references are safe because every accepted
|
|
37
|
+
* donor config passes `canUseImmediateMutation` — the donor's own
|
|
38
|
+
* event subscription maintains the array in place on save/delete,
|
|
39
|
+
* and our explicit {@link addEntityToCache} writes are
|
|
40
|
+
* PK-deduped on both sides.
|
|
41
|
+
*
|
|
42
|
+
* - **Self-load (fallback)** — entities no loaded engine caches
|
|
43
|
+
* (Templates, Actions, Entity Fields, …) are loaded by
|
|
44
|
+
* `BaseEngine.Load` issuing one unfiltered `RunView` per entity,
|
|
45
|
+
* exactly as before.
|
|
46
|
+
*
|
|
47
|
+
* Either way, the `BaseEntity` instances are reachable through
|
|
48
|
+
* {@link getCachedEntities} / {@link findCachedByPrimaryKey}; lookups
|
|
49
|
+
* during the sync phase consult those arrays instead of round-tripping
|
|
50
|
+
* the DB. Self-loaded slots live on dynamic properties named via
|
|
51
|
+
* {@link getPropertyNameForEntity}.
|
|
26
52
|
*
|
|
27
53
|
* 2. **Event-driven mutation** — `BaseEngine` already wires up the global
|
|
28
54
|
* `BaseEntity` event bus. Because our configs carry no Filter/OrderBy,
|
|
@@ -36,7 +62,7 @@
|
|
|
36
62
|
*
|
|
37
63
|
* @module sync-metadata-engine
|
|
38
64
|
*/
|
|
39
|
-
import { BaseEngine } from '@memberjunction/core';
|
|
65
|
+
import { BaseEngine, BaseEngineRegistry, BaseEntity } from '@memberjunction/core';
|
|
40
66
|
import { IsUuidSQLType } from '@memberjunction/sql-dialect';
|
|
41
67
|
import fastGlob from 'fast-glob';
|
|
42
68
|
import fs from 'fs-extra';
|
|
@@ -65,6 +91,12 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
65
91
|
this.preloadedEntityNames = new Set();
|
|
66
92
|
this.lookupCache = new Map();
|
|
67
93
|
this.fileDataCache = new Map();
|
|
94
|
+
/**
|
|
95
|
+
* Entities whose slot proxies a donor engine's live cache instead of a
|
|
96
|
+
* self-loaded array. Populated by {@link delegateEntityIfCached} during
|
|
97
|
+
* `Config()`; consulted first by {@link resolveSlot}.
|
|
98
|
+
*/
|
|
99
|
+
this.delegatedSlots = new Map();
|
|
68
100
|
/** Reverse index used to scope lookup invalidation on delete: entity name → set of lookup keys touching that entity. */
|
|
69
101
|
this.lookupKeysByEntity = new Map();
|
|
70
102
|
/**
|
|
@@ -108,36 +140,47 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
108
140
|
return `${CACHED_ENTITY_PROP_PREFIX}${entityName.replace(/[^a-zA-Z0-9]/g, '_')}`;
|
|
109
141
|
}
|
|
110
142
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
143
|
+
* Scan the metadata tree for touched entities, then fill one slot per
|
|
144
|
+
* entity: delegate to an already-loaded engine's cache when
|
|
145
|
+
* {@link delegateEntityIfCached} finds a suitable donor, otherwise
|
|
146
|
+
* self-load via `BaseEngine.Load` (which fans the per-entity unfiltered
|
|
147
|
+
* views out over a single `RunViews` batch under the hood). Finally,
|
|
148
|
+
* build the PK indexes and emit size warnings over BOTH kinds of slot.
|
|
149
|
+
*
|
|
150
|
+
* Note: `forceRefresh` only governs the self-loaded entities. Delegated
|
|
151
|
+
* data was loaded by `StartupManager` during this same process bootstrap,
|
|
152
|
+
* which satisfies preload's "current as of process start" freshness
|
|
153
|
+
* requirement without a second round of identical queries.
|
|
115
154
|
*/
|
|
116
155
|
async Config(forceRefresh, contextUser, provider) {
|
|
117
|
-
const
|
|
156
|
+
const entityNames = await this.collectTouchedEntities();
|
|
157
|
+
const configs = this.partitionEntities(entityNames);
|
|
118
158
|
const providerToUse = provider || this.ProviderToUse;
|
|
119
159
|
if (configs.length > 0) {
|
|
120
160
|
await this.Load(configs, providerToUse, forceRefresh, contextUser);
|
|
121
|
-
|
|
122
|
-
|
|
161
|
+
}
|
|
162
|
+
if (this.preloadedEntityNames.size > 0) {
|
|
163
|
+
this.buildPKIndexes(this.preloadedEntityNames);
|
|
164
|
+
this.warnOnOversizedSlots(this.preloadedEntityNames);
|
|
123
165
|
}
|
|
124
166
|
return true;
|
|
125
167
|
}
|
|
126
168
|
/**
|
|
127
|
-
* Build the per-entity PK → entity Map from each populated slot
|
|
128
|
-
*
|
|
129
|
-
* over the
|
|
130
|
-
* to the per-record-lookup savings it enables
|
|
169
|
+
* Build the per-entity PK → entity Map from each populated slot
|
|
170
|
+
* (self-loaded and delegated alike). Runs once after `Config()` fills
|
|
171
|
+
* the slots. The cost (one walk over the arrays, building Map entries)
|
|
172
|
+
* is trivial compared to the per-record-lookup savings it enables
|
|
173
|
+
* downstream. Delegated arrays mutate out-of-band (the donor's event
|
|
174
|
+
* subscription replaces saved instances with clones) — that drift is
|
|
175
|
+
* absorbed by {@link findCachedByPrimaryKey}'s scan-and-repair fallback.
|
|
131
176
|
*/
|
|
132
|
-
buildPKIndexes(
|
|
133
|
-
for (const
|
|
134
|
-
|
|
135
|
-
continue;
|
|
136
|
-
const entityInfo = this.syncEngine.getEntityInfo(config.EntityName);
|
|
177
|
+
buildPKIndexes(entityNames) {
|
|
178
|
+
for (const entityName of entityNames) {
|
|
179
|
+
const entityInfo = this.syncEngine.getEntityInfo(entityName);
|
|
137
180
|
if (!entityInfo)
|
|
138
181
|
continue;
|
|
139
|
-
const list = this
|
|
140
|
-
if (!
|
|
182
|
+
const list = this.resolveSlot(entityName);
|
|
183
|
+
if (!list)
|
|
141
184
|
continue;
|
|
142
185
|
const index = new Map();
|
|
143
186
|
for (const entity of list) {
|
|
@@ -151,7 +194,7 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
151
194
|
// will still find it if needed.
|
|
152
195
|
}
|
|
153
196
|
}
|
|
154
|
-
this.pkIndexes.set(
|
|
197
|
+
this.pkIndexes.set(entityName, index);
|
|
155
198
|
}
|
|
156
199
|
}
|
|
157
200
|
/**
|
|
@@ -197,10 +240,71 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
197
240
|
isEntityPreloaded(entityName) {
|
|
198
241
|
return this.preloadedEntityNames.has(entityName);
|
|
199
242
|
}
|
|
200
|
-
|
|
243
|
+
/**
|
|
244
|
+
* Try to serve an entity's slot from another loaded engine's cache instead
|
|
245
|
+
* of re-querying the DB. Accepts the first `BaseEngineRegistry` match that
|
|
246
|
+
* holds the **complete** entity set in a live-mutation-safe shape:
|
|
247
|
+
*
|
|
248
|
+
* - `unfilteredOnly` — a `Filter` means a subset, useless as a full cache.
|
|
249
|
+
* - no `OrderBy` — ordered configs fail `canUseImmediateMutation`, so the
|
|
250
|
+
* donor responds to entity events with a full refresh that *reassigns*
|
|
251
|
+
* the array property mid-push instead of mutating it in place.
|
|
252
|
+
* - not `ResultType: 'simple'` and rows are `BaseEntity` instances — the
|
|
253
|
+
* sync phase calls `.Get()` / `.PrimaryKey` on cached rows.
|
|
254
|
+
* - not ourselves — a prior run's own slot must not masquerade as a donor.
|
|
255
|
+
*
|
|
256
|
+
* Returns true when a donor was registered; the caller then skips the
|
|
257
|
+
* self-load config for this entity.
|
|
258
|
+
*/
|
|
259
|
+
delegateEntityIfCached(entityName) {
|
|
260
|
+
const matches = BaseEngineRegistry.Instance.FindCachedEntity(entityName, { unfilteredOnly: true });
|
|
261
|
+
for (const match of matches) {
|
|
262
|
+
if (match.engine === this)
|
|
263
|
+
continue;
|
|
264
|
+
if (!match.config.PropertyName)
|
|
265
|
+
continue;
|
|
266
|
+
if (match.config.OrderBy)
|
|
267
|
+
continue;
|
|
268
|
+
if (match.config.ResultType === 'simple')
|
|
269
|
+
continue;
|
|
270
|
+
if (match.records.length > 0 && !(match.records[0] instanceof BaseEntity))
|
|
271
|
+
continue;
|
|
272
|
+
this.delegatedSlots.set(entityName, {
|
|
273
|
+
engine: match.engine,
|
|
274
|
+
propertyName: match.config.PropertyName,
|
|
275
|
+
engineClassName: match.engineClassName
|
|
276
|
+
});
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
/** Delegated entity → donor engine pairings from the last `Config()` run, for logging. */
|
|
282
|
+
getDelegationSummary() {
|
|
283
|
+
return Array.from(this.delegatedSlots.entries()).map(([entityName, slot]) => ({
|
|
284
|
+
entityName,
|
|
285
|
+
engineClassName: slot.engineClassName
|
|
286
|
+
}));
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* The single resolution point for an entity's backing array: the donor
|
|
290
|
+
* engine's live array when delegated (re-read per access — see
|
|
291
|
+
* {@link DelegatedSlot}), our own `cached_*` slot otherwise. Returns
|
|
292
|
+
* `undefined` when no slot exists yet.
|
|
293
|
+
*/
|
|
294
|
+
resolveSlot(entityName) {
|
|
295
|
+
const delegated = this.delegatedSlots.get(entityName);
|
|
296
|
+
if (delegated) {
|
|
297
|
+
const live = delegated.engine[delegated.propertyName];
|
|
298
|
+
if (Array.isArray(live))
|
|
299
|
+
return live;
|
|
300
|
+
// Defensive: donor slot vanished — fall through to our own slot.
|
|
301
|
+
}
|
|
201
302
|
const propName = this.getPropertyNameForEntity(entityName);
|
|
202
303
|
const list = this[propName];
|
|
203
|
-
return Array.isArray(list) ? list :
|
|
304
|
+
return Array.isArray(list) ? list : undefined;
|
|
305
|
+
}
|
|
306
|
+
getCachedEntities(entityName) {
|
|
307
|
+
return this.resolveSlot(entityName) ?? [];
|
|
204
308
|
}
|
|
205
309
|
getCachedFile(filePath) {
|
|
206
310
|
return this.fileDataCache.get(filePath);
|
|
@@ -217,12 +321,17 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
217
321
|
this.fileDataCache.delete(filePath);
|
|
218
322
|
}
|
|
219
323
|
addEntityToCache(entityName, entity) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
324
|
+
// Delegated entities write into the donor's live array: PK-dedup below
|
|
325
|
+
// prevents a duplicate against rows the donor already holds, and the
|
|
326
|
+
// donor's own save-event handler sees our instance by reference and
|
|
327
|
+
// no-ops rather than double-inserting.
|
|
328
|
+
let list = this.resolveSlot(entityName);
|
|
329
|
+
if (!list) {
|
|
330
|
+
const propName = this.getPropertyNameForEntity(entityName);
|
|
331
|
+
const slot = this;
|
|
223
332
|
slot[propName] = [];
|
|
333
|
+
list = slot[propName];
|
|
224
334
|
}
|
|
225
|
-
const list = slot[propName];
|
|
226
335
|
// `PrimaryKey.Equals` requires the entity to have a populated composite
|
|
227
336
|
// key; if either side is missing one we fall back to reference equality
|
|
228
337
|
// only (the entity might not be saved yet, in which case no dedup is
|
|
@@ -259,8 +368,9 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
259
368
|
catch { /* defensive: malformed entity */ }
|
|
260
369
|
}
|
|
261
370
|
removeEntityFromCache(entityName, primaryKey) {
|
|
262
|
-
|
|
263
|
-
|
|
371
|
+
// For delegated entities this splices the donor's live array; the donor's
|
|
372
|
+
// delete-event handler tolerates the row already being gone.
|
|
373
|
+
const list = this.resolveSlot(entityName);
|
|
264
374
|
const entityInfo = this.syncEngine.getEntityInfo(entityName);
|
|
265
375
|
let pkStr = null;
|
|
266
376
|
if (entityInfo) {
|
|
@@ -336,12 +446,10 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
336
446
|
}
|
|
337
447
|
/**
|
|
338
448
|
* Walk every entity referenced by metadata files (including nested
|
|
339
|
-
* `relatedEntities`) and
|
|
340
|
-
*
|
|
341
|
-
* (capped by `IgnoreMaxRows: true` in BaseEngine), pre-populating the
|
|
342
|
-
* per-entity slot the sync path will read from.
|
|
449
|
+
* `relatedEntities`) and return the set of entity names touched by this
|
|
450
|
+
* run. Also primes the file cache as a side effect of the scan.
|
|
343
451
|
*/
|
|
344
|
-
async
|
|
452
|
+
async collectTouchedEntities() {
|
|
345
453
|
const entitiesFound = new Set();
|
|
346
454
|
for (const entityDir of this.entityDirs) {
|
|
347
455
|
const entityConfig = await loadEntityConfig(entityDir);
|
|
@@ -357,12 +465,26 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
357
465
|
});
|
|
358
466
|
await this.processFilesInParallel(files, entityConfig.entity, entitiesFound);
|
|
359
467
|
}
|
|
468
|
+
return entitiesFound;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Decide, per touched entity, whether the slot delegates to an
|
|
472
|
+
* already-loaded engine's cache or self-loads. Returns the `BaseEngine`
|
|
473
|
+
* configs for the self-load remainder; each one triggers a single
|
|
474
|
+
* `SELECT * FROM vw<Entity>` (capped by `IgnoreMaxRows: true` in
|
|
475
|
+
* BaseEngine), pre-populating the per-entity slot the sync path reads.
|
|
476
|
+
*/
|
|
477
|
+
partitionEntities(entityNames) {
|
|
478
|
+
this.delegatedSlots.clear();
|
|
360
479
|
const configs = [];
|
|
361
|
-
for (const entityName of
|
|
480
|
+
for (const entityName of entityNames) {
|
|
362
481
|
const entityInfo = this.syncEngine.getEntityInfo(entityName);
|
|
363
482
|
if (!entityInfo)
|
|
364
483
|
continue;
|
|
365
484
|
this.markEntityAsPreloaded(entityName);
|
|
485
|
+
if (this.delegateEntityIfCached(entityName)) {
|
|
486
|
+
continue;
|
|
487
|
+
}
|
|
366
488
|
configs.push({
|
|
367
489
|
PropertyName: this.getPropertyNameForEntity(entityName),
|
|
368
490
|
EntityName: entityName,
|
|
@@ -378,20 +500,18 @@ export class SyncMetadataEngine extends BaseEngine {
|
|
|
378
500
|
return configs;
|
|
379
501
|
}
|
|
380
502
|
/**
|
|
381
|
-
* After
|
|
382
|
-
*
|
|
383
|
-
* warning so the operator knows their sync is
|
|
503
|
+
* After the slots are filled, check whether any single preloaded entity
|
|
504
|
+
* (self-loaded or delegated) exceeds the metadata-scale threshold. Emit a
|
|
505
|
+
* warning so the operator knows their sync is using something it
|
|
384
506
|
* probably shouldn't be.
|
|
385
507
|
*/
|
|
386
|
-
warnOnOversizedSlots(
|
|
387
|
-
for (const
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
const list = this[config.PropertyName];
|
|
391
|
-
if (!Array.isArray(list))
|
|
508
|
+
warnOnOversizedSlots(entityNames) {
|
|
509
|
+
for (const entityName of entityNames) {
|
|
510
|
+
const list = this.resolveSlot(entityName);
|
|
511
|
+
if (!list)
|
|
392
512
|
continue;
|
|
393
513
|
if (list.length > LARGE_ENTITY_WARN_THRESHOLD) {
|
|
394
|
-
this.warnings.push(`Preloaded ${list.length.toLocaleString()} rows of '${
|
|
514
|
+
this.warnings.push(`Preloaded ${list.length.toLocaleString()} rows of '${entityName}'. mj sync is intended for metadata-scale entities (hundreds to low tens of thousands); this is large enough that you may want to confirm this entity belongs in a sync workflow.`);
|
|
395
515
|
}
|
|
396
516
|
}
|
|
397
517
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-metadata-engine.js","sourceRoot":"","sources":["../../src/lib/sync-metadata-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-metadata-engine.js","sourceRoot":"","sources":["../../src/lib/sync-metadata-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ValidationResult } from '../types/validation.js';
|
|
2
|
+
import type { RecordChangeDetail } from './PushService.js';
|
|
2
3
|
export declare class FormattingService {
|
|
3
4
|
/**
|
|
4
5
|
* Format validation result as JSON
|
|
@@ -22,6 +23,29 @@ export declare class FormattingService {
|
|
|
22
23
|
unchanged?: number;
|
|
23
24
|
deferred?: number;
|
|
24
25
|
}): string;
|
|
26
|
+
/**
|
|
27
|
+
* Render a single two-column row of the summary box. Cell contents are kept as raw
|
|
28
|
+
* (uncolored) text so column/border alignment math is exact — only the box borders are
|
|
29
|
+
* colored. Each column is `label` (padded) + `value`, clamped to a fixed column width.
|
|
30
|
+
*/
|
|
31
|
+
private boxRow;
|
|
32
|
+
/**
|
|
33
|
+
* Render the end-of-run "Changes" recap: a focused block summarizing what was
|
|
34
|
+
* created/updated/deleted, GROUPED by entity + operation with counts (no per-record IDs
|
|
35
|
+
* or field diffs — those scale poorly and live in the detailed report instead). One line
|
|
36
|
+
* per entity/operation means the recap stays compact whether 1 or 10,000 records changed.
|
|
37
|
+
* Returns '' when there were no changes (caller should skip printing).
|
|
38
|
+
*
|
|
39
|
+
* For full per-record detail use `--verbose` (streams diffs inline during the push) or
|
|
40
|
+
* `--change-detail` (writes the report from `formatChangesReport()` to a file).
|
|
41
|
+
*/
|
|
42
|
+
formatChangesRecap(changes: RecordChangeDetail[]): string;
|
|
43
|
+
/**
|
|
44
|
+
* Render the FULL per-record change report as plain text (no ANSI), suitable for writing
|
|
45
|
+
* to a file via `--change-detail`. Lists every record's operation, entity, primary key,
|
|
46
|
+
* and — for updates — the field-level diffs.
|
|
47
|
+
*/
|
|
48
|
+
formatChangesReport(changes: RecordChangeDetail[], generatedAt: string): string;
|
|
25
49
|
private formatHeader;
|
|
26
50
|
private formatSectionHeader;
|
|
27
51
|
private formatSummaryBox;
|
|
@@ -30,7 +54,7 @@ export declare class FormattingService {
|
|
|
30
54
|
private formatWarning;
|
|
31
55
|
private formatFooter;
|
|
32
56
|
private shortenPath;
|
|
33
|
-
|
|
57
|
+
formatDuration(ms: number): string;
|
|
34
58
|
/**
|
|
35
59
|
* Get count of errors by type
|
|
36
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormattingService.d.ts","sourceRoot":"","sources":["../../src/services/FormattingService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA4D,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"FormattingService.d.ts","sourceRoot":"","sources":["../../src/services/FormattingService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAA4D,MAAM,qBAAqB,CAAC;AACjH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,qBAAa,iBAAiB;IAC1B;;OAEG;IACI,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IA+BrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAgBtB;IAEF;;OAEG;IACI,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAE,OAAe,GAAG,MAAM;IAmDzF;;OAEG;IACI,iBAAiB,CACpB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,KAAK,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GACF,MAAM;IAkCT;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAYd;;;;;;;;;OASG;IACI,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM;IAuChE;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAiBtF,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IA8DxB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,WAAW;IAQZ,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAMzC;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACI,gCAAgC,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAoS5E"}
|