@memberjunction/metadata-sync 6.2.0-edge.4 → 6.2.0-edge.6
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 +120 -52
- package/dist/config.d.ts +18 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/RecordProcessor.d.ts +98 -0
- package/dist/lib/RecordProcessor.d.ts.map +1 -1
- package/dist/lib/RecordProcessor.js +424 -22
- package/dist/lib/RecordProcessor.js.map +1 -1
- package/dist/lib/RelatedEntityHandler.d.ts +4 -1
- package/dist/lib/RelatedEntityHandler.d.ts.map +1 -1
- package/dist/lib/RelatedEntityHandler.js +49 -11
- package/dist/lib/RelatedEntityHandler.js.map +1 -1
- package/dist/lib/created-record-key.d.ts +34 -0
- package/dist/lib/created-record-key.d.ts.map +1 -0
- package/dist/lib/created-record-key.js +46 -0
- package/dist/lib/created-record-key.js.map +1 -0
- package/dist/lib/deletion-auditor.d.ts.map +1 -1
- package/dist/lib/deletion-auditor.js +34 -3
- package/dist/lib/deletion-auditor.js.map +1 -1
- package/dist/lib/entity-field-names.d.ts +11 -0
- package/dist/lib/entity-field-names.d.ts.map +1 -0
- package/dist/lib/entity-field-names.js +15 -0
- package/dist/lib/entity-field-names.js.map +1 -0
- package/dist/lib/env-derived-fields.d.ts +23 -0
- package/dist/lib/env-derived-fields.d.ts.map +1 -0
- package/dist/lib/env-derived-fields.js +53 -0
- package/dist/lib/env-derived-fields.js.map +1 -0
- package/dist/lib/env-display.d.ts +54 -0
- package/dist/lib/env-display.d.ts.map +1 -0
- package/dist/lib/env-display.js +156 -0
- package/dist/lib/env-display.js.map +1 -0
- package/dist/lib/env-reference.d.ts +104 -0
- package/dist/lib/env-reference.d.ts.map +1 -0
- package/dist/lib/env-reference.js +241 -0
- package/dist/lib/env-reference.js.map +1 -0
- package/dist/lib/env-sql-redactor.d.ts +74 -0
- package/dist/lib/env-sql-redactor.d.ts.map +1 -0
- package/dist/lib/env-sql-redactor.js +232 -0
- package/dist/lib/env-sql-redactor.js.map +1 -0
- package/dist/lib/existing-record-index.d.ts +70 -0
- package/dist/lib/existing-record-index.d.ts.map +1 -0
- package/dist/lib/existing-record-index.js +158 -0
- package/dist/lib/existing-record-index.js.map +1 -0
- package/dist/lib/ignore-directories.d.ts +10 -0
- package/dist/lib/ignore-directories.d.ts.map +1 -0
- package/dist/lib/ignore-directories.js +12 -0
- package/dist/lib/ignore-directories.js.map +1 -0
- package/dist/lib/json-record-lines.d.ts +17 -0
- package/dist/lib/json-record-lines.d.ts.map +1 -0
- package/dist/lib/json-record-lines.js +170 -0
- package/dist/lib/json-record-lines.js.map +1 -0
- package/dist/lib/json-subproperty-externalization.d.ts.map +1 -1
- package/dist/lib/json-subproperty-externalization.js +3 -1
- package/dist/lib/json-subproperty-externalization.js.map +1 -1
- package/dist/lib/lookup-reference.d.ts +38 -0
- package/dist/lib/lookup-reference.d.ts.map +1 -0
- package/dist/lib/lookup-reference.js +62 -0
- package/dist/lib/lookup-reference.js.map +1 -0
- package/dist/lib/lookup-sql.d.ts +108 -0
- package/dist/lib/lookup-sql.d.ts.map +1 -0
- package/dist/lib/lookup-sql.js +231 -0
- package/dist/lib/lookup-sql.js.map +1 -0
- package/dist/lib/natural-key-preflight.d.ts +86 -0
- package/dist/lib/natural-key-preflight.d.ts.map +1 -0
- package/dist/lib/natural-key-preflight.js +173 -0
- package/dist/lib/natural-key-preflight.js.map +1 -0
- package/dist/lib/provider-utils.d.ts.map +1 -1
- package/dist/lib/provider-utils.js +2 -4
- package/dist/lib/provider-utils.js.map +1 -1
- package/dist/lib/pull-option-overrides.d.ts +24 -0
- package/dist/lib/pull-option-overrides.d.ts.map +1 -0
- package/dist/lib/pull-option-overrides.js +39 -0
- package/dist/lib/pull-option-overrides.js.map +1 -0
- package/dist/lib/push-directories.d.ts +42 -0
- package/dist/lib/push-directories.d.ts.map +1 -0
- package/dist/lib/push-directories.js +71 -0
- package/dist/lib/push-directories.js.map +1 -0
- package/dist/lib/push-when.d.ts +38 -0
- package/dist/lib/push-when.d.ts.map +1 -0
- package/dist/lib/push-when.js +84 -0
- package/dist/lib/push-when.js.map +1 -0
- package/dist/lib/record-dependency-analyzer.d.ts +11 -2
- package/dist/lib/record-dependency-analyzer.d.ts.map +1 -1
- package/dist/lib/record-dependency-analyzer.js +48 -71
- package/dist/lib/record-dependency-analyzer.js.map +1 -1
- package/dist/lib/record-file-glob.d.ts +11 -0
- package/dist/lib/record-file-glob.d.ts.map +1 -0
- package/dist/lib/record-file-glob.js +10 -0
- package/dist/lib/record-file-glob.js.map +1 -0
- package/dist/lib/reference-parser.d.ts +3 -2
- package/dist/lib/reference-parser.d.ts.map +1 -1
- package/dist/lib/reference-parser.js +27 -27
- package/dist/lib/reference-parser.js.map +1 -1
- package/dist/lib/schema-placeholders.d.ts +29 -0
- package/dist/lib/schema-placeholders.d.ts.map +1 -0
- package/dist/lib/schema-placeholders.js +72 -0
- package/dist/lib/schema-placeholders.js.map +1 -0
- package/dist/lib/sql-logger.d.ts +9 -1
- package/dist/lib/sql-logger.d.ts.map +1 -1
- package/dist/lib/sql-logger.js +12 -7
- package/dist/lib/sql-logger.js.map +1 -1
- package/dist/lib/sql-set-line.d.ts +26 -0
- package/dist/lib/sql-set-line.d.ts.map +1 -0
- package/dist/lib/sql-set-line.js +84 -0
- package/dist/lib/sql-set-line.js.map +1 -0
- package/dist/lib/sync-engine.d.ts +58 -4
- package/dist/lib/sync-engine.d.ts.map +1 -1
- package/dist/lib/sync-engine.js +243 -59
- package/dist/lib/sync-engine.js.map +1 -1
- package/dist/lib/sync-state-manager.d.ts +7 -3
- package/dist/lib/sync-state-manager.d.ts.map +1 -1
- package/dist/lib/sync-state-manager.js +19 -4
- package/dist/lib/sync-state-manager.js.map +1 -1
- package/dist/lib/watch-file-filter.d.ts +31 -0
- package/dist/lib/watch-file-filter.d.ts.map +1 -0
- package/dist/lib/watch-file-filter.js +64 -0
- package/dist/lib/watch-file-filter.js.map +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +44 -14
- package/dist/plugins/index.js.map +1 -1
- package/dist/services/PullService.d.ts +41 -1
- package/dist/services/PullService.d.ts.map +1 -1
- package/dist/services/PullService.js +261 -101
- package/dist/services/PullService.js.map +1 -1
- package/dist/services/PushService.d.ts +80 -0
- package/dist/services/PushService.d.ts.map +1 -1
- package/dist/services/PushService.js +531 -189
- package/dist/services/PushService.js.map +1 -1
- package/dist/services/ValidationService.d.ts +43 -8
- package/dist/services/ValidationService.d.ts.map +1 -1
- package/dist/services/ValidationService.js +338 -127
- package/dist/services/ValidationService.js.map +1 -1
- package/dist/services/WatchService.d.ts +28 -0
- package/dist/services/WatchService.d.ts.map +1 -1
- package/dist/services/WatchService.js +226 -74
- package/dist/services/WatchService.js.map +1 -1
- package/dist/types/validation.d.ts +6 -0
- package/dist/types/validation.d.ts.map +1 -1
- package/package.json +17 -16
|
@@ -1,27 +1,74 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
1
2
|
import fs from 'fs-extra';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
import chokidar from 'chokidar';
|
|
4
5
|
import { Metadata } from '@memberjunction/core';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { OptionalEnvMissingError, OptionalEnvSkipMessage } from '../lib/env-reference.js';
|
|
7
|
+
import { EnvDisplayMask, MaskedError } from '../lib/env-display.js';
|
|
8
|
+
import { EnvSqlLog, AddSkippedOptionalEnvField } from '../lib/env-sql-redactor.js';
|
|
9
|
+
import { ComposeStatementTransforms, LookupSqlLog } from '../lib/lookup-sql.js';
|
|
10
|
+
import { ResolveSchemaPlaceholders } from '../lib/schema-placeholders.js';
|
|
11
|
+
import { CreatedRecordKeyFields } from '../lib/created-record-key.js';
|
|
12
|
+
import { EntityFieldName, RecordFieldNames } from '../lib/entity-field-names.js';
|
|
13
|
+
import { WatchFileFilter } from '../lib/watch-file-filter.js';
|
|
14
|
+
import { METADATA_KEYWORDS } from '../constants/metadata-keywords.js';
|
|
15
|
+
import { LoadEntityConfig } from '../config.js';
|
|
16
|
+
import { ResolvePushFolders, SkippedDirectoryMessage } from '../lib/push-directories.js';
|
|
7
17
|
import { configManager } from '../lib/config-manager.js';
|
|
8
18
|
import { JsonWriteHelper } from '../lib/json-write-helper.js';
|
|
9
19
|
export class WatchService {
|
|
10
20
|
constructor(syncEngine) {
|
|
11
21
|
this.debounceTimers = new Map();
|
|
22
|
+
/** For each record file watch wrote back, the hash of the content it wrote. */
|
|
23
|
+
this.ownWrites = new Map();
|
|
12
24
|
this.sqlLoggingSession = null;
|
|
25
|
+
/** Leaves env-sourced field values out of the watch SQL log; null when no log is open. */
|
|
26
|
+
this.envSqlLog = null;
|
|
27
|
+
/** Writes `@lookup` IDs into the watch SQL log as subqueries; null when no log is open. */
|
|
28
|
+
this.lookupSqlLog = null;
|
|
13
29
|
this.syncEngine = syncEngine;
|
|
14
30
|
}
|
|
15
31
|
async Watch(options = {}, callbacks) {
|
|
16
|
-
|
|
32
|
+
// Folders are chosen as push chooses them; pushWhen is read once, here
|
|
33
|
+
const folders = await ResolvePushFolders(configManager.getOriginalCwd(), options.dir);
|
|
34
|
+
const selection = folders.SelectDirectories();
|
|
35
|
+
for (const skipped of selection.Skipped) {
|
|
36
|
+
callbacks?.onWarn?.(SkippedDirectoryMessage(folders.ConfigDir, skipped));
|
|
37
|
+
}
|
|
38
|
+
const entityDirs = selection.Included;
|
|
17
39
|
if (entityDirs.length === 0) {
|
|
18
|
-
throw new Error('No entity directories
|
|
40
|
+
throw new Error('No entity directories to watch: pushWhen skips every folder');
|
|
19
41
|
}
|
|
20
42
|
callbacks?.onLog?.(`Watching ${entityDirs.length} entity ${entityDirs.length === 1 ? 'directory' : 'directories'} for changes`);
|
|
21
|
-
//
|
|
22
|
-
await this.setupSqlLogging(callbacks);
|
|
23
|
-
// Set up watchers
|
|
43
|
+
// The SQL log, the redactor and the lookup-create hook are closed together if the start fails
|
|
24
44
|
const watchers = [];
|
|
45
|
+
try {
|
|
46
|
+
await this.setupSqlLogging(folders.SyncConfig, callbacks);
|
|
47
|
+
await this.addWatchers(entityDirs, options, watchers, callbacks);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// A watcher that fails to close does not stop the cleanup or replace the start error
|
|
51
|
+
await Promise.allSettled(watchers.map(w => w.close()));
|
|
52
|
+
await this.closeSqlLogging(callbacks);
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
watchers,
|
|
57
|
+
SkippedDirectories: selection.Skipped,
|
|
58
|
+
stop: async () => {
|
|
59
|
+
// Clear all debounce timers
|
|
60
|
+
for (const timer of this.debounceTimers.values()) {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
}
|
|
63
|
+
this.debounceTimers.clear();
|
|
64
|
+
// Close all watchers
|
|
65
|
+
await Promise.all(watchers.map(w => w.close()));
|
|
66
|
+
await this.closeSqlLogging(callbacks);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** Starts one watcher for each entity folder and adds it to `watchers`. */
|
|
71
|
+
async addWatchers(entityDirs, options, watchers, callbacks) {
|
|
25
72
|
for (const entityDir of entityDirs) {
|
|
26
73
|
const entityConfig = await LoadEntityConfig(entityDir);
|
|
27
74
|
if (!entityConfig) {
|
|
@@ -29,66 +76,58 @@ export class WatchService {
|
|
|
29
76
|
continue;
|
|
30
77
|
}
|
|
31
78
|
callbacks?.onLog?.(`Watching ${entityConfig.entity} in ${entityDir}`);
|
|
32
|
-
//
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
path.join(entityDir, '**/*.txt'),
|
|
37
|
-
path.join(entityDir, '**/*.html'),
|
|
38
|
-
path.join(entityDir, '**/*.liquid'),
|
|
39
|
-
path.join(entityDir, '**/*.sql')
|
|
40
|
-
];
|
|
41
|
-
const ignored = [
|
|
42
|
-
'**/node_modules/**',
|
|
43
|
-
'**/.git/**',
|
|
44
|
-
'**/.mj-sync.json',
|
|
45
|
-
'**/.mj-folder.json',
|
|
46
|
-
'**/*.backup',
|
|
47
|
-
...(options.ignorePatterns || [])
|
|
48
|
-
];
|
|
49
|
-
const watcher = chokidar.watch(patterns, {
|
|
50
|
-
ignored,
|
|
79
|
+
// chokidar watches the folder; the filter picks record files and external files
|
|
80
|
+
const filter = new WatchFileFilter(entityDir, entityConfig.filePattern, options.ignorePatterns);
|
|
81
|
+
const watcher = chokidar.watch(entityDir, {
|
|
82
|
+
ignored: filter.Ignored,
|
|
51
83
|
persistent: true,
|
|
52
84
|
ignoreInitial: true
|
|
53
85
|
});
|
|
86
|
+
const onFile = (filePath, handle) => {
|
|
87
|
+
if (filter.Accepts(filePath)) {
|
|
88
|
+
handle();
|
|
89
|
+
}
|
|
90
|
+
};
|
|
54
91
|
watcher
|
|
55
|
-
.on('add', (filePath) => {
|
|
92
|
+
.on('add', (filePath) => onFile(filePath, () => {
|
|
56
93
|
callbacks?.onFileAdd?.(filePath, entityDir, entityConfig);
|
|
57
94
|
this.handleFileChange(filePath, 'added', entityDir, entityConfig, options, callbacks);
|
|
58
|
-
})
|
|
59
|
-
.on('change', (filePath) => {
|
|
95
|
+
}))
|
|
96
|
+
.on('change', (filePath) => onFile(filePath, () => {
|
|
60
97
|
callbacks?.onFileChange?.(filePath, entityDir, entityConfig);
|
|
61
98
|
this.handleFileChange(filePath, 'changed', entityDir, entityConfig, options, callbacks);
|
|
62
|
-
})
|
|
63
|
-
.on('unlink', (filePath) => {
|
|
99
|
+
}))
|
|
100
|
+
.on('unlink', (filePath) => onFile(filePath, () => {
|
|
64
101
|
callbacks?.onFileDelete?.(filePath, entityDir, entityConfig);
|
|
65
102
|
this.handleFileChange(filePath, 'deleted', entityDir, entityConfig, options, callbacks);
|
|
66
|
-
});
|
|
103
|
+
}));
|
|
67
104
|
watchers.push(watcher);
|
|
68
105
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
try {
|
|
82
|
-
callbacks?.onLog?.(`📝 SQL log written to: ${this.sqlLoggingSession.filePath}`);
|
|
83
|
-
await this.sqlLoggingSession.dispose();
|
|
84
|
-
this.sqlLoggingSession = null;
|
|
106
|
+
}
|
|
107
|
+
/** Disposes the SQL log session, gives the redactor's warnings, and closes the redactor and its hook. */
|
|
108
|
+
async closeSqlLogging(callbacks) {
|
|
109
|
+
try {
|
|
110
|
+
if (this.sqlLoggingSession) {
|
|
111
|
+
const sqlLogPath = this.sqlLoggingSession.filePath;
|
|
112
|
+
await this.sqlLoggingSession.dispose();
|
|
113
|
+
this.sqlLoggingSession = null;
|
|
114
|
+
if (await fs.pathExists(sqlLogPath)) {
|
|
115
|
+
callbacks?.onLog?.(`📝 SQL log written to: ${sqlLogPath}`);
|
|
116
|
+
for (const warning of this.envSqlLog?.Redactor.Warnings(sqlLogPath) ?? []) {
|
|
117
|
+
callbacks?.onWarn?.(warning);
|
|
85
118
|
}
|
|
86
|
-
|
|
87
|
-
callbacks?.onWarn?.(
|
|
119
|
+
for (const warning of this.lookupSqlLog?.Rewriter.Warnings() ?? []) {
|
|
120
|
+
callbacks?.onWarn?.(warning);
|
|
88
121
|
}
|
|
89
122
|
}
|
|
90
123
|
}
|
|
91
|
-
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
callbacks?.onWarn?.(`Failed to close SQL logging session: ${error}`);
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
this.closeEnvSqlLog();
|
|
130
|
+
}
|
|
92
131
|
}
|
|
93
132
|
/** @deprecated Use {@link Watch}. */
|
|
94
133
|
async watch(options = {}, callbacks) {
|
|
@@ -105,6 +144,9 @@ export class WatchService {
|
|
|
105
144
|
const timer = setTimeout(async () => {
|
|
106
145
|
this.debounceTimers.delete(filePath);
|
|
107
146
|
try {
|
|
147
|
+
if (event !== 'deleted' && (await this.isOwnWrite(filePath))) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
108
150
|
const relativePath = path.relative(entityDir, filePath);
|
|
109
151
|
callbacks?.onLog?.(`File ${event}: ${relativePath}`);
|
|
110
152
|
if (event === 'deleted') {
|
|
@@ -130,36 +172,95 @@ export class WatchService {
|
|
|
130
172
|
}, debounceMs);
|
|
131
173
|
this.debounceTimers.set(filePath, timer);
|
|
132
174
|
}
|
|
175
|
+
/** Keeps the hash of the content watch just wrote to the file. */
|
|
176
|
+
async rememberOwnWrite(filePath) {
|
|
177
|
+
this.ownWrites.set(filePath, await this.contentHash(filePath));
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* True when the file still holds the content watch last wrote to it (one write can fire more than
|
|
181
|
+
* one event). The entry is cleared at the first event with other content, which is synced.
|
|
182
|
+
*/
|
|
183
|
+
async isOwnWrite(filePath) {
|
|
184
|
+
const written = this.ownWrites.get(filePath);
|
|
185
|
+
if (written === undefined) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
if ((await this.contentHash(filePath)) === written) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
this.ownWrites.delete(filePath);
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
async contentHash(filePath) {
|
|
195
|
+
return crypto.createHash('sha256').update(await fs.readFile(filePath)).digest('hex');
|
|
196
|
+
}
|
|
133
197
|
async syncJsonFile(filePath, entityDir, entityConfig, callbacks) {
|
|
134
198
|
const recordData = await fs.readJson(filePath);
|
|
199
|
+
const baseDir = path.dirname(filePath);
|
|
135
200
|
// Keep original fields for file writing
|
|
136
201
|
const originalFields = { ...recordData.fields };
|
|
137
|
-
//
|
|
138
|
-
const
|
|
202
|
+
// Field name → the variables whose values went into it; used for masking and the SQL log
|
|
203
|
+
const resolutionCollector = { notes: [], fieldPrefix: 'primaryKey', EnvFields: new Map(), LookupSources: new Map() };
|
|
204
|
+
const envMask = new EnvDisplayMask(resolutionCollector.EnvFields);
|
|
205
|
+
// Build defaults from the record file's folders
|
|
206
|
+
const defaultsCollector = { notes: [], fieldPrefix: 'fields', EnvFields: new Map() };
|
|
207
|
+
const skippedDefaults = new Map();
|
|
208
|
+
const defaults = await this.syncEngine.buildDefaults(filePath, entityConfig, defaultsCollector, skippedDefaults);
|
|
209
|
+
const resolvedPrimaryKey = recordData.primaryKey
|
|
210
|
+
? await this.resolvePrimaryKey(recordData.primaryKey, baseDir, resolutionCollector)
|
|
211
|
+
: undefined;
|
|
139
212
|
// Load or create entity
|
|
140
213
|
let entity = null;
|
|
141
214
|
let isNew = false;
|
|
142
|
-
if (
|
|
143
|
-
entity = await this.syncEngine.loadEntity(entityConfig.entity,
|
|
215
|
+
if (resolvedPrimaryKey) {
|
|
216
|
+
entity = await this.syncEngine.loadEntity(entityConfig.entity, resolvedPrimaryKey);
|
|
144
217
|
}
|
|
145
218
|
if (!entity) {
|
|
146
|
-
// New record
|
|
219
|
+
// New record; UUID generation happens in BaseEntity.NewRecord(), and an @env: key field gets its resolved value
|
|
147
220
|
entity = await this.syncEngine.createEntityObject(entityConfig.entity);
|
|
148
221
|
entity.NewRecord();
|
|
149
222
|
isNew = true;
|
|
150
|
-
|
|
223
|
+
for (const [pkField, pkValue] of Object.entries(recordData.primaryKey ?? {})) {
|
|
224
|
+
if (isEnvKeyValue(pkValue)) {
|
|
225
|
+
entity.Set(pkField, resolvedPrimaryKey?.[pkField]);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Field names match the entity's fields without case and are set with the entity's spelling; other names (virtual properties) are set as written
|
|
230
|
+
const recordFields = new RecordFieldNames(recordData.fields);
|
|
231
|
+
// A default left out for an unset optional variable warns when the record would have used it
|
|
232
|
+
for (const [field, variableName] of skippedDefaults) {
|
|
233
|
+
const name = EntityFieldName(entity, field) ?? (field in entity ? field : undefined);
|
|
234
|
+
if (name && !recordFields.Has(name)) {
|
|
235
|
+
callbacks?.onWarn?.(OptionalEnvSkipMessage(entityConfig.entity, name, variableName));
|
|
236
|
+
AddSkippedOptionalEnvField(resolutionCollector.EnvFields, name, variableName);
|
|
237
|
+
}
|
|
151
238
|
}
|
|
152
|
-
// Apply defaults
|
|
239
|
+
// Apply defaults only to fields the record does not set
|
|
153
240
|
for (const [field, value] of Object.entries(defaults)) {
|
|
154
|
-
|
|
155
|
-
|
|
241
|
+
const name = EntityFieldName(entity, field) ?? (field in entity ? field : undefined);
|
|
242
|
+
if (name && !recordFields.Has(name)) {
|
|
243
|
+
entity.Set(name, value);
|
|
244
|
+
const variables = defaultsCollector.EnvFields?.get(field);
|
|
245
|
+
if (variables) {
|
|
246
|
+
resolutionCollector.EnvFields?.set(name, variables);
|
|
247
|
+
}
|
|
156
248
|
}
|
|
157
249
|
}
|
|
158
250
|
// Apply record fields with processed values for database operations
|
|
251
|
+
resolutionCollector.fieldPrefix = 'fields';
|
|
159
252
|
for (const [field, value] of Object.entries(recordData.fields)) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
253
|
+
const name = EntityFieldName(entity, field) ?? field;
|
|
254
|
+
try {
|
|
255
|
+
const processedValue = await this.syncEngine.processFieldValue(value, baseDir, null, null, 0, undefined, resolutionCollector, name);
|
|
256
|
+
entity.Set(name, processedValue);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
if (!(error instanceof OptionalEnvMissingError)) {
|
|
260
|
+
throw error;
|
|
261
|
+
}
|
|
262
|
+
callbacks?.onWarn?.(OptionalEnvSkipMessage(entityConfig.entity, name, error.VariableName));
|
|
263
|
+
AddSkippedOptionalEnvField(resolutionCollector.EnvFields, name, error.VariableName);
|
|
163
264
|
}
|
|
164
265
|
}
|
|
165
266
|
// Check if the record is dirty before saving
|
|
@@ -176,7 +277,7 @@ export class WatchService {
|
|
|
176
277
|
const primaryKeyDisplay = [];
|
|
177
278
|
if (entityInfo) {
|
|
178
279
|
for (const pk of entityInfo.PrimaryKeys) {
|
|
179
|
-
primaryKeyDisplay.push(`${pk.Name}: ${entity.Get(pk.Name)}`);
|
|
280
|
+
primaryKeyDisplay.push(`${pk.Name}: ${envMask.NewValue(pk.Name, String(entity.Get(pk.Name)))}`);
|
|
180
281
|
}
|
|
181
282
|
}
|
|
182
283
|
callbacks?.onLog?.(`📝 Updating ${entityConfig.entity} record:`);
|
|
@@ -188,7 +289,7 @@ export class WatchService {
|
|
|
188
289
|
const field = entity.GetFieldByName(fieldName);
|
|
189
290
|
const oldValue = field ? field.OldValue : undefined;
|
|
190
291
|
const newValue = changes[fieldName];
|
|
191
|
-
callbacks?.onLog?.(` ${fieldName}: ${oldValue} → ${newValue}`);
|
|
292
|
+
callbacks?.onLog?.(` ${fieldName}: ${envMask.OldValue(fieldName, String(oldValue))} → ${envMask.NewValue(fieldName, String(newValue))}`);
|
|
192
293
|
}
|
|
193
294
|
callbacks?.onRecordUpdated?.(entity, changes, entityConfig);
|
|
194
295
|
}
|
|
@@ -197,15 +298,29 @@ export class WatchService {
|
|
|
197
298
|
wasActuallyUpdated = true;
|
|
198
299
|
callbacks?.onRecordCreated?.(entity, entityConfig);
|
|
199
300
|
}
|
|
200
|
-
//
|
|
201
|
-
|
|
301
|
+
// A save that writes logs the full save SQL (logRecordChangeMetadata), so every env field is in the statement
|
|
302
|
+
if (wasActuallyUpdated) {
|
|
303
|
+
this.envSqlLog?.Redactor.RegisterEntityFields(entity, resolutionCollector.EnvFields, true);
|
|
304
|
+
this.lookupSqlLog?.Rewriter.RegisterEntityLookups(entity, resolutionCollector.LookupSources);
|
|
305
|
+
}
|
|
306
|
+
// Save the record; error text is masked for every variable resolved so far
|
|
307
|
+
const keyFields = this.syncEngine.getEntityInfo(entityConfig.entity)?.PrimaryKeys ?? [];
|
|
308
|
+
const keyBeforeSave = new Map(keyFields.map((pk) => [pk.Name, entity.Get(pk.Name)]));
|
|
309
|
+
const errorTextMask = EnvDisplayMask.ForVariables(this.syncEngine.ResolvedEnvVariables);
|
|
310
|
+
let saved;
|
|
311
|
+
try {
|
|
312
|
+
saved = await entity.Save();
|
|
313
|
+
}
|
|
314
|
+
catch (saveError) {
|
|
315
|
+
throw MaskedError(saveError, errorTextMask);
|
|
316
|
+
}
|
|
202
317
|
if (!saved) {
|
|
203
318
|
const message = entity.LatestResult?.Message;
|
|
204
319
|
if (message) {
|
|
205
|
-
throw new Error(`Failed to save record: ${message}`);
|
|
320
|
+
throw new Error(`Failed to save record: ${errorTextMask.MaskText(message)}`);
|
|
206
321
|
}
|
|
207
322
|
const errors = entity.LatestResult?.Errors?.map(err => typeof err === 'string' ? err : (err?.message || JSON.stringify(err)))?.join(', ') || 'Unknown error';
|
|
208
|
-
throw new Error(`Failed to save record: ${errors}`);
|
|
323
|
+
throw new Error(`Failed to save record: ${errorTextMask.MaskText(errors)}`);
|
|
209
324
|
}
|
|
210
325
|
if (wasActuallyUpdated) {
|
|
211
326
|
callbacks?.onLog?.(`Successfully ${isNew ? 'created' : 'updated'} ${entityConfig.entity} record`);
|
|
@@ -221,8 +336,9 @@ export class WatchService {
|
|
|
221
336
|
// Update primary key for new records
|
|
222
337
|
if (isNew) {
|
|
223
338
|
const newPrimaryKey = {};
|
|
224
|
-
|
|
225
|
-
|
|
339
|
+
// An env-sourced key keeps the file's reference unless the database assigned another value
|
|
340
|
+
for (const key of CreatedRecordKeyFields(entityInfo.PrimaryKeys, entity, keyBeforeSave, recordData.primaryKey, originalFields, envMask)) {
|
|
341
|
+
newPrimaryKey[key.Name] = key.FileValue;
|
|
226
342
|
}
|
|
227
343
|
recordData.primaryKey = newPrimaryKey;
|
|
228
344
|
}
|
|
@@ -235,9 +351,23 @@ export class WatchService {
|
|
|
235
351
|
recordData.fields = originalFields;
|
|
236
352
|
// Write back to file
|
|
237
353
|
await JsonWriteHelper.writeOrderedRecordData(filePath, recordData);
|
|
354
|
+
await this.rememberOwnWrite(filePath);
|
|
238
355
|
}
|
|
239
356
|
}
|
|
240
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* The key used to load the record: an `@env:` value is resolved (a malformed or unset reference
|
|
360
|
+
* throws); other values are used as written.
|
|
361
|
+
*/
|
|
362
|
+
async resolvePrimaryKey(primaryKey, baseDir, resolutionCollector) {
|
|
363
|
+
const resolved = {};
|
|
364
|
+
for (const [pkField, pkValue] of Object.entries(primaryKey)) {
|
|
365
|
+
resolved[pkField] = isEnvKeyValue(pkValue)
|
|
366
|
+
? await this.syncEngine.processFieldValue(pkValue, baseDir, null, null, 0, undefined, resolutionCollector, pkField)
|
|
367
|
+
: pkValue;
|
|
368
|
+
}
|
|
369
|
+
return resolved;
|
|
370
|
+
}
|
|
241
371
|
async syncExternalFile(filePath, entityDir, entityConfig, callbacks) {
|
|
242
372
|
// Find the corresponding JSON file
|
|
243
373
|
const fileName = path.basename(filePath);
|
|
@@ -259,10 +389,8 @@ export class WatchService {
|
|
|
259
389
|
}
|
|
260
390
|
}
|
|
261
391
|
}
|
|
262
|
-
async setupSqlLogging(callbacks) {
|
|
392
|
+
async setupSqlLogging(syncConfig, callbacks) {
|
|
263
393
|
try {
|
|
264
|
-
// Load sync config for SQL logging settings
|
|
265
|
-
const syncConfig = await LoadSyncConfig(configManager.getOriginalCwd());
|
|
266
394
|
if (syncConfig?.sqlLogging?.enabled) {
|
|
267
395
|
const provider = Metadata.Provider; // SQLServerDataProvider // global-provider-ok: metadata sync operates on the configured provider only
|
|
268
396
|
if (provider && typeof provider.CreateSqlLogger === 'function') {
|
|
@@ -277,8 +405,17 @@ export class WatchService {
|
|
|
277
405
|
// Ensure the directory exists
|
|
278
406
|
await fs.ensureDir(outputDir);
|
|
279
407
|
// Create the SQL logging session
|
|
408
|
+
this.envSqlLog = new EnvSqlLog(this.syncEngine);
|
|
409
|
+
this.lookupSqlLog = new LookupSqlLog(this.syncEngine);
|
|
410
|
+
const schemaPlaceholders = ResolveSchemaPlaceholders(syncConfig, configManager.GetMJConfig());
|
|
280
411
|
this.sqlLoggingSession = await provider.CreateSqlLogger(filepath, {
|
|
412
|
+
// Env values are left out first, then lookup IDs become subqueries (schema names in them
|
|
413
|
+
// become placeholders afterwards, in the logger)
|
|
414
|
+
TransformStatement: ComposeStatementTransforms(this.envSqlLog.Redactor.Transform, this.lookupSqlLog.Rewriter.Transform),
|
|
281
415
|
formatAsMigration: syncConfig.sqlLogging?.formatAsMigration || false,
|
|
416
|
+
schemaPlaceholders,
|
|
417
|
+
// Escaping is tied to migration output, never to whether placeholder rules exist
|
|
418
|
+
escapeFlywaySyntax: syncConfig.sqlLogging?.formatAsMigration === true || syncConfig.sqlLogging?.escapeFlywaySyntax === true,
|
|
282
419
|
description: 'MetadataSync watch operation',
|
|
283
420
|
logRecordChangeMetadata: true,
|
|
284
421
|
// batchSeparator is intentionally omitted — CreateSqlLogger injects the platform-appropriate
|
|
@@ -290,8 +427,23 @@ export class WatchService {
|
|
|
290
427
|
}
|
|
291
428
|
}
|
|
292
429
|
catch (error) {
|
|
430
|
+
// An open session keeps its redactor
|
|
431
|
+
if (!this.sqlLoggingSession) {
|
|
432
|
+
this.closeEnvSqlLog();
|
|
433
|
+
}
|
|
293
434
|
callbacks?.onWarn?.(`Failed to setup SQL logging: ${error}`);
|
|
294
435
|
}
|
|
295
436
|
}
|
|
437
|
+
/** Drops the SQL log redactor and its lookup-create hook, after the log is closed. */
|
|
438
|
+
closeEnvSqlLog() {
|
|
439
|
+
this.envSqlLog?.Close();
|
|
440
|
+
this.envSqlLog = null;
|
|
441
|
+
this.lookupSqlLog?.Close();
|
|
442
|
+
this.lookupSqlLog = null;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
/** True for a key value written as an `@env:` reference, valid or not. */
|
|
446
|
+
function isEnvKeyValue(value) {
|
|
447
|
+
return typeof value === 'string' && value.startsWith(METADATA_KEYWORDS.ENV);
|
|
296
448
|
}
|
|
297
449
|
//# sourceMappingURL=WatchService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatchService.js","sourceRoot":"","sources":["../../src/services/WatchService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WatchService.js","sourceRoot":"","sources":["../../src/services/WatchService.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,6 +97,10 @@ export interface ValidationOptions {
|
|
|
97
97
|
checkBestPractices: boolean;
|
|
98
98
|
include?: string[];
|
|
99
99
|
exclude?: string[];
|
|
100
|
+
/** When true, folders that push would skip because of their pushWhen are not validated. */
|
|
101
|
+
HonorPushWhen?: boolean;
|
|
102
|
+
/** When true, `dir` is treated as a root: its child folders are validated even when its own config has an entity. */
|
|
103
|
+
ValidateChildFoldersOnly?: boolean;
|
|
100
104
|
}
|
|
101
105
|
/**
|
|
102
106
|
* Reference type representing metadata keywords.
|
|
@@ -114,5 +118,7 @@ export interface ParsedReference {
|
|
|
114
118
|
}>;
|
|
115
119
|
createIfMissing?: boolean;
|
|
116
120
|
additionalFields?: Record<string, any>;
|
|
121
|
+
/** Lowercased bare `@lookup:` flags other than `create` and `allowDefer`. Set only when there are any. */
|
|
122
|
+
UnknownFlags?: string[];
|
|
117
123
|
}
|
|
118
124
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,OAAO,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5F,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC3C,SAAgB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAgB,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,oCAAoC;IACpC,IAAW,IAAI,IAAI,MAAM,CAExB;IACD,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEpB,KAAK,EAAE,eAAe;IAoBlC;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAY7B,mDAAmD;IACnD,mBAAmB,IAAI,MAAM;CAGhC;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC7C,SAAgB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,SAAgB,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,oCAAoC;IACpC,IAAW,IAAI,IAAI,MAAM,CAExB;IACD,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,iBAAiB;IAoBtC;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAY7B,mDAAmD;IACnD,mBAAmB,IAAI,MAAM;CAGhC;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/metadata-sync",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.2.0-edge.
|
|
4
|
+
"version": "6.2.0-edge.6",
|
|
5
5
|
"description": "MemberJunction metadata synchronization CLI tool",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"metadata",
|
|
@@ -36,20 +36,20 @@
|
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@inquirer/prompts": "^8.2.0",
|
|
39
|
-
"@memberjunction/cli-core": "6.2.0-edge.
|
|
40
|
-
"@memberjunction/config": "6.2.0-edge.
|
|
41
|
-
"@memberjunction/core": "6.2.0-edge.
|
|
42
|
-
"@memberjunction/core-entities": "6.2.0-edge.
|
|
43
|
-
"@memberjunction/core-entities-server": "6.2.0-edge.
|
|
44
|
-
"@memberjunction/generic-database-provider": "6.2.0-edge.
|
|
45
|
-
"@memberjunction/global": "6.2.0-edge.
|
|
46
|
-
"@memberjunction/graphql-dataprovider": "6.2.0-edge.
|
|
47
|
-
"@memberjunction/network-utils": "6.2.0-edge.
|
|
48
|
-
"@memberjunction/postgresql-dataprovider": "6.2.0-edge.
|
|
49
|
-
"@memberjunction/record-graph": "6.2.0-edge.
|
|
50
|
-
"@memberjunction/server-bootstrap-lite": "6.2.0-edge.
|
|
51
|
-
"@memberjunction/sql-dialect": "6.2.0-edge.
|
|
52
|
-
"@memberjunction/sqlserver-dataprovider": "6.2.0-edge.
|
|
39
|
+
"@memberjunction/cli-core": "6.2.0-edge.6",
|
|
40
|
+
"@memberjunction/config": "6.2.0-edge.6",
|
|
41
|
+
"@memberjunction/core": "6.2.0-edge.6",
|
|
42
|
+
"@memberjunction/core-entities": "6.2.0-edge.6",
|
|
43
|
+
"@memberjunction/core-entities-server": "6.2.0-edge.6",
|
|
44
|
+
"@memberjunction/generic-database-provider": "6.2.0-edge.6",
|
|
45
|
+
"@memberjunction/global": "6.2.0-edge.6",
|
|
46
|
+
"@memberjunction/graphql-dataprovider": "6.2.0-edge.6",
|
|
47
|
+
"@memberjunction/network-utils": "6.2.0-edge.6",
|
|
48
|
+
"@memberjunction/postgresql-dataprovider": "6.2.0-edge.6",
|
|
49
|
+
"@memberjunction/record-graph": "6.2.0-edge.6",
|
|
50
|
+
"@memberjunction/server-bootstrap-lite": "6.2.0-edge.6",
|
|
51
|
+
"@memberjunction/sql-dialect": "6.2.0-edge.6",
|
|
52
|
+
"@memberjunction/sqlserver-dataprovider": "6.2.0-edge.6",
|
|
53
53
|
"@oclif/core": "^3.27.0",
|
|
54
54
|
"chalk": "^5.6.2",
|
|
55
55
|
"chokidar": "^5.0.0",
|
|
@@ -76,6 +76,7 @@
|
|
|
76
76
|
"scripts": {
|
|
77
77
|
"build": "tsc -b && tsc-alias -f",
|
|
78
78
|
"test": "vitest run",
|
|
79
|
-
"test:watch": "vitest"
|
|
79
|
+
"test:watch": "vitest",
|
|
80
|
+
"test:types": "tsc --noEmit -p tsconfig.spec.json"
|
|
80
81
|
}
|
|
81
82
|
}
|