@memberjunction/metadata-sync 6.2.0-edge.4 → 6.2.0-edge.5
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 +115 -51
- package/dist/config.d.ts +5 -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 +33 -2
- 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 +297 -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/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 +2 -0
- package/dist/lib/record-dependency-analyzer.d.ts.map +1 -1
- 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/sync-engine.d.ts +46 -4
- package/dist/lib/sync-engine.d.ts.map +1 -1
- package/dist/lib/sync-engine.js +215 -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 +59 -0
- package/dist/services/PushService.d.ts.map +1 -1
- package/dist/services/PushService.js +435 -173
- 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 +26 -0
- package/dist/services/WatchService.d.ts.map +1 -1
- package/dist/services/WatchService.js +210 -75
- 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,70 @@
|
|
|
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 { CreatedRecordKeyFields } from '../lib/created-record-key.js';
|
|
10
|
+
import { EntityFieldName, RecordFieldNames } from '../lib/entity-field-names.js';
|
|
11
|
+
import { WatchFileFilter } from '../lib/watch-file-filter.js';
|
|
12
|
+
import { METADATA_KEYWORDS } from '../constants/metadata-keywords.js';
|
|
13
|
+
import { LoadEntityConfig } from '../config.js';
|
|
14
|
+
import { ResolvePushFolders, SkippedDirectoryMessage } from '../lib/push-directories.js';
|
|
7
15
|
import { configManager } from '../lib/config-manager.js';
|
|
8
16
|
import { JsonWriteHelper } from '../lib/json-write-helper.js';
|
|
9
17
|
export class WatchService {
|
|
10
18
|
constructor(syncEngine) {
|
|
11
19
|
this.debounceTimers = new Map();
|
|
20
|
+
/** For each record file watch wrote back, the hash of the content it wrote. */
|
|
21
|
+
this.ownWrites = new Map();
|
|
12
22
|
this.sqlLoggingSession = null;
|
|
23
|
+
/** Leaves env-sourced field values out of the watch SQL log; null when no log is open. */
|
|
24
|
+
this.envSqlLog = null;
|
|
13
25
|
this.syncEngine = syncEngine;
|
|
14
26
|
}
|
|
15
27
|
async Watch(options = {}, callbacks) {
|
|
16
|
-
|
|
28
|
+
// Folders are chosen as push chooses them; pushWhen is read once, here
|
|
29
|
+
const folders = await ResolvePushFolders(configManager.getOriginalCwd(), options.dir);
|
|
30
|
+
const selection = folders.SelectDirectories();
|
|
31
|
+
for (const skipped of selection.Skipped) {
|
|
32
|
+
callbacks?.onWarn?.(SkippedDirectoryMessage(folders.ConfigDir, skipped));
|
|
33
|
+
}
|
|
34
|
+
const entityDirs = selection.Included;
|
|
17
35
|
if (entityDirs.length === 0) {
|
|
18
|
-
throw new Error('No entity directories
|
|
36
|
+
throw new Error('No entity directories to watch: pushWhen skips every folder');
|
|
19
37
|
}
|
|
20
38
|
callbacks?.onLog?.(`Watching ${entityDirs.length} entity ${entityDirs.length === 1 ? 'directory' : 'directories'} for changes`);
|
|
21
|
-
//
|
|
22
|
-
await this.setupSqlLogging(callbacks);
|
|
23
|
-
// Set up watchers
|
|
39
|
+
// The SQL log, the redactor and the lookup-create hook are closed together if the start fails
|
|
24
40
|
const watchers = [];
|
|
41
|
+
try {
|
|
42
|
+
await this.setupSqlLogging(folders.SyncConfig, callbacks);
|
|
43
|
+
await this.addWatchers(entityDirs, options, watchers, callbacks);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// A watcher that fails to close does not stop the cleanup or replace the start error
|
|
47
|
+
await Promise.allSettled(watchers.map(w => w.close()));
|
|
48
|
+
await this.closeSqlLogging(callbacks);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
watchers,
|
|
53
|
+
SkippedDirectories: selection.Skipped,
|
|
54
|
+
stop: async () => {
|
|
55
|
+
// Clear all debounce timers
|
|
56
|
+
for (const timer of this.debounceTimers.values()) {
|
|
57
|
+
clearTimeout(timer);
|
|
58
|
+
}
|
|
59
|
+
this.debounceTimers.clear();
|
|
60
|
+
// Close all watchers
|
|
61
|
+
await Promise.all(watchers.map(w => w.close()));
|
|
62
|
+
await this.closeSqlLogging(callbacks);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** Starts one watcher for each entity folder and adds it to `watchers`. */
|
|
67
|
+
async addWatchers(entityDirs, options, watchers, callbacks) {
|
|
25
68
|
for (const entityDir of entityDirs) {
|
|
26
69
|
const entityConfig = await LoadEntityConfig(entityDir);
|
|
27
70
|
if (!entityConfig) {
|
|
@@ -29,66 +72,55 @@ export class WatchService {
|
|
|
29
72
|
continue;
|
|
30
73
|
}
|
|
31
74
|
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,
|
|
75
|
+
// chokidar watches the folder; the filter picks record files and external files
|
|
76
|
+
const filter = new WatchFileFilter(entityDir, entityConfig.filePattern, options.ignorePatterns);
|
|
77
|
+
const watcher = chokidar.watch(entityDir, {
|
|
78
|
+
ignored: filter.Ignored,
|
|
51
79
|
persistent: true,
|
|
52
80
|
ignoreInitial: true
|
|
53
81
|
});
|
|
82
|
+
const onFile = (filePath, handle) => {
|
|
83
|
+
if (filter.Accepts(filePath)) {
|
|
84
|
+
handle();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
54
87
|
watcher
|
|
55
|
-
.on('add', (filePath) => {
|
|
88
|
+
.on('add', (filePath) => onFile(filePath, () => {
|
|
56
89
|
callbacks?.onFileAdd?.(filePath, entityDir, entityConfig);
|
|
57
90
|
this.handleFileChange(filePath, 'added', entityDir, entityConfig, options, callbacks);
|
|
58
|
-
})
|
|
59
|
-
.on('change', (filePath) => {
|
|
91
|
+
}))
|
|
92
|
+
.on('change', (filePath) => onFile(filePath, () => {
|
|
60
93
|
callbacks?.onFileChange?.(filePath, entityDir, entityConfig);
|
|
61
94
|
this.handleFileChange(filePath, 'changed', entityDir, entityConfig, options, callbacks);
|
|
62
|
-
})
|
|
63
|
-
.on('unlink', (filePath) => {
|
|
95
|
+
}))
|
|
96
|
+
.on('unlink', (filePath) => onFile(filePath, () => {
|
|
64
97
|
callbacks?.onFileDelete?.(filePath, entityDir, entityConfig);
|
|
65
98
|
this.handleFileChange(filePath, 'deleted', entityDir, entityConfig, options, callbacks);
|
|
66
|
-
});
|
|
99
|
+
}));
|
|
67
100
|
watchers.push(watcher);
|
|
68
101
|
}
|
|
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;
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
callbacks?.onWarn?.(`Failed to close SQL logging session: ${error}`);
|
|
102
|
+
}
|
|
103
|
+
/** Disposes the SQL log session, gives the redactor's warnings, and closes the redactor and its hook. */
|
|
104
|
+
async closeSqlLogging(callbacks) {
|
|
105
|
+
try {
|
|
106
|
+
if (this.sqlLoggingSession) {
|
|
107
|
+
const sqlLogPath = this.sqlLoggingSession.filePath;
|
|
108
|
+
await this.sqlLoggingSession.dispose();
|
|
109
|
+
this.sqlLoggingSession = null;
|
|
110
|
+
if (await fs.pathExists(sqlLogPath)) {
|
|
111
|
+
callbacks?.onLog?.(`📝 SQL log written to: ${sqlLogPath}`);
|
|
112
|
+
for (const warning of this.envSqlLog?.Redactor.Warnings(sqlLogPath) ?? []) {
|
|
113
|
+
callbacks?.onWarn?.(warning);
|
|
88
114
|
}
|
|
89
115
|
}
|
|
90
116
|
}
|
|
91
|
-
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
callbacks?.onWarn?.(`Failed to close SQL logging session: ${error}`);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
this.closeEnvSqlLog();
|
|
123
|
+
}
|
|
92
124
|
}
|
|
93
125
|
/** @deprecated Use {@link Watch}. */
|
|
94
126
|
async watch(options = {}, callbacks) {
|
|
@@ -105,6 +137,9 @@ export class WatchService {
|
|
|
105
137
|
const timer = setTimeout(async () => {
|
|
106
138
|
this.debounceTimers.delete(filePath);
|
|
107
139
|
try {
|
|
140
|
+
if (event !== 'deleted' && (await this.isOwnWrite(filePath))) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
108
143
|
const relativePath = path.relative(entityDir, filePath);
|
|
109
144
|
callbacks?.onLog?.(`File ${event}: ${relativePath}`);
|
|
110
145
|
if (event === 'deleted') {
|
|
@@ -130,36 +165,95 @@ export class WatchService {
|
|
|
130
165
|
}, debounceMs);
|
|
131
166
|
this.debounceTimers.set(filePath, timer);
|
|
132
167
|
}
|
|
168
|
+
/** Keeps the hash of the content watch just wrote to the file. */
|
|
169
|
+
async rememberOwnWrite(filePath) {
|
|
170
|
+
this.ownWrites.set(filePath, await this.contentHash(filePath));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* True when the file still holds the content watch last wrote to it (one write can fire more than
|
|
174
|
+
* one event). The entry is cleared at the first event with other content, which is synced.
|
|
175
|
+
*/
|
|
176
|
+
async isOwnWrite(filePath) {
|
|
177
|
+
const written = this.ownWrites.get(filePath);
|
|
178
|
+
if (written === undefined) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
if ((await this.contentHash(filePath)) === written) {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
this.ownWrites.delete(filePath);
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
async contentHash(filePath) {
|
|
188
|
+
return crypto.createHash('sha256').update(await fs.readFile(filePath)).digest('hex');
|
|
189
|
+
}
|
|
133
190
|
async syncJsonFile(filePath, entityDir, entityConfig, callbacks) {
|
|
134
191
|
const recordData = await fs.readJson(filePath);
|
|
192
|
+
const baseDir = path.dirname(filePath);
|
|
135
193
|
// Keep original fields for file writing
|
|
136
194
|
const originalFields = { ...recordData.fields };
|
|
137
|
-
//
|
|
138
|
-
const
|
|
195
|
+
// Field name → the variables whose values went into it; used for masking and the SQL log
|
|
196
|
+
const resolutionCollector = { notes: [], fieldPrefix: 'primaryKey', EnvFields: new Map() };
|
|
197
|
+
const envMask = new EnvDisplayMask(resolutionCollector.EnvFields);
|
|
198
|
+
// Build defaults from the record file's folders
|
|
199
|
+
const defaultsCollector = { notes: [], fieldPrefix: 'fields', EnvFields: new Map() };
|
|
200
|
+
const skippedDefaults = new Map();
|
|
201
|
+
const defaults = await this.syncEngine.buildDefaults(filePath, entityConfig, defaultsCollector, skippedDefaults);
|
|
202
|
+
const resolvedPrimaryKey = recordData.primaryKey
|
|
203
|
+
? await this.resolvePrimaryKey(recordData.primaryKey, baseDir, resolutionCollector)
|
|
204
|
+
: undefined;
|
|
139
205
|
// Load or create entity
|
|
140
206
|
let entity = null;
|
|
141
207
|
let isNew = false;
|
|
142
|
-
if (
|
|
143
|
-
entity = await this.syncEngine.loadEntity(entityConfig.entity,
|
|
208
|
+
if (resolvedPrimaryKey) {
|
|
209
|
+
entity = await this.syncEngine.loadEntity(entityConfig.entity, resolvedPrimaryKey);
|
|
144
210
|
}
|
|
145
211
|
if (!entity) {
|
|
146
|
-
// New record
|
|
212
|
+
// New record; UUID generation happens in BaseEntity.NewRecord(), and an @env: key field gets its resolved value
|
|
147
213
|
entity = await this.syncEngine.createEntityObject(entityConfig.entity);
|
|
148
214
|
entity.NewRecord();
|
|
149
215
|
isNew = true;
|
|
150
|
-
|
|
216
|
+
for (const [pkField, pkValue] of Object.entries(recordData.primaryKey ?? {})) {
|
|
217
|
+
if (isEnvKeyValue(pkValue)) {
|
|
218
|
+
entity.Set(pkField, resolvedPrimaryKey?.[pkField]);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// 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
|
|
223
|
+
const recordFields = new RecordFieldNames(recordData.fields);
|
|
224
|
+
// A default left out for an unset optional variable warns when the record would have used it
|
|
225
|
+
for (const [field, variableName] of skippedDefaults) {
|
|
226
|
+
const name = EntityFieldName(entity, field) ?? (field in entity ? field : undefined);
|
|
227
|
+
if (name && !recordFields.Has(name)) {
|
|
228
|
+
callbacks?.onWarn?.(OptionalEnvSkipMessage(entityConfig.entity, name, variableName));
|
|
229
|
+
AddSkippedOptionalEnvField(resolutionCollector.EnvFields, name, variableName);
|
|
230
|
+
}
|
|
151
231
|
}
|
|
152
|
-
// Apply defaults
|
|
232
|
+
// Apply defaults only to fields the record does not set
|
|
153
233
|
for (const [field, value] of Object.entries(defaults)) {
|
|
154
|
-
|
|
155
|
-
|
|
234
|
+
const name = EntityFieldName(entity, field) ?? (field in entity ? field : undefined);
|
|
235
|
+
if (name && !recordFields.Has(name)) {
|
|
236
|
+
entity.Set(name, value);
|
|
237
|
+
const variables = defaultsCollector.EnvFields?.get(field);
|
|
238
|
+
if (variables) {
|
|
239
|
+
resolutionCollector.EnvFields?.set(name, variables);
|
|
240
|
+
}
|
|
156
241
|
}
|
|
157
242
|
}
|
|
158
243
|
// Apply record fields with processed values for database operations
|
|
244
|
+
resolutionCollector.fieldPrefix = 'fields';
|
|
159
245
|
for (const [field, value] of Object.entries(recordData.fields)) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
246
|
+
const name = EntityFieldName(entity, field) ?? field;
|
|
247
|
+
try {
|
|
248
|
+
const processedValue = await this.syncEngine.processFieldValue(value, baseDir, null, null, 0, undefined, resolutionCollector, name);
|
|
249
|
+
entity.Set(name, processedValue);
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
if (!(error instanceof OptionalEnvMissingError)) {
|
|
253
|
+
throw error;
|
|
254
|
+
}
|
|
255
|
+
callbacks?.onWarn?.(OptionalEnvSkipMessage(entityConfig.entity, name, error.VariableName));
|
|
256
|
+
AddSkippedOptionalEnvField(resolutionCollector.EnvFields, name, error.VariableName);
|
|
163
257
|
}
|
|
164
258
|
}
|
|
165
259
|
// Check if the record is dirty before saving
|
|
@@ -176,7 +270,7 @@ export class WatchService {
|
|
|
176
270
|
const primaryKeyDisplay = [];
|
|
177
271
|
if (entityInfo) {
|
|
178
272
|
for (const pk of entityInfo.PrimaryKeys) {
|
|
179
|
-
primaryKeyDisplay.push(`${pk.Name}: ${entity.Get(pk.Name)}`);
|
|
273
|
+
primaryKeyDisplay.push(`${pk.Name}: ${envMask.NewValue(pk.Name, String(entity.Get(pk.Name)))}`);
|
|
180
274
|
}
|
|
181
275
|
}
|
|
182
276
|
callbacks?.onLog?.(`📝 Updating ${entityConfig.entity} record:`);
|
|
@@ -188,7 +282,7 @@ export class WatchService {
|
|
|
188
282
|
const field = entity.GetFieldByName(fieldName);
|
|
189
283
|
const oldValue = field ? field.OldValue : undefined;
|
|
190
284
|
const newValue = changes[fieldName];
|
|
191
|
-
callbacks?.onLog?.(` ${fieldName}: ${oldValue} → ${newValue}`);
|
|
285
|
+
callbacks?.onLog?.(` ${fieldName}: ${envMask.OldValue(fieldName, String(oldValue))} → ${envMask.NewValue(fieldName, String(newValue))}`);
|
|
192
286
|
}
|
|
193
287
|
callbacks?.onRecordUpdated?.(entity, changes, entityConfig);
|
|
194
288
|
}
|
|
@@ -197,15 +291,28 @@ export class WatchService {
|
|
|
197
291
|
wasActuallyUpdated = true;
|
|
198
292
|
callbacks?.onRecordCreated?.(entity, entityConfig);
|
|
199
293
|
}
|
|
200
|
-
//
|
|
201
|
-
|
|
294
|
+
// A save that writes logs the full save SQL (logRecordChangeMetadata), so every env field is in the statement
|
|
295
|
+
if (wasActuallyUpdated) {
|
|
296
|
+
this.envSqlLog?.Redactor.RegisterEntityFields(entity, resolutionCollector.EnvFields, true);
|
|
297
|
+
}
|
|
298
|
+
// Save the record; error text is masked for every variable resolved so far
|
|
299
|
+
const keyFields = this.syncEngine.getEntityInfo(entityConfig.entity)?.PrimaryKeys ?? [];
|
|
300
|
+
const keyBeforeSave = new Map(keyFields.map((pk) => [pk.Name, entity.Get(pk.Name)]));
|
|
301
|
+
const errorTextMask = EnvDisplayMask.ForVariables(this.syncEngine.ResolvedEnvVariables);
|
|
302
|
+
let saved;
|
|
303
|
+
try {
|
|
304
|
+
saved = await entity.Save();
|
|
305
|
+
}
|
|
306
|
+
catch (saveError) {
|
|
307
|
+
throw MaskedError(saveError, errorTextMask);
|
|
308
|
+
}
|
|
202
309
|
if (!saved) {
|
|
203
310
|
const message = entity.LatestResult?.Message;
|
|
204
311
|
if (message) {
|
|
205
|
-
throw new Error(`Failed to save record: ${message}`);
|
|
312
|
+
throw new Error(`Failed to save record: ${errorTextMask.MaskText(message)}`);
|
|
206
313
|
}
|
|
207
314
|
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}`);
|
|
315
|
+
throw new Error(`Failed to save record: ${errorTextMask.MaskText(errors)}`);
|
|
209
316
|
}
|
|
210
317
|
if (wasActuallyUpdated) {
|
|
211
318
|
callbacks?.onLog?.(`Successfully ${isNew ? 'created' : 'updated'} ${entityConfig.entity} record`);
|
|
@@ -221,8 +328,9 @@ export class WatchService {
|
|
|
221
328
|
// Update primary key for new records
|
|
222
329
|
if (isNew) {
|
|
223
330
|
const newPrimaryKey = {};
|
|
224
|
-
|
|
225
|
-
|
|
331
|
+
// An env-sourced key keeps the file's reference unless the database assigned another value
|
|
332
|
+
for (const key of CreatedRecordKeyFields(entityInfo.PrimaryKeys, entity, keyBeforeSave, recordData.primaryKey, originalFields, envMask)) {
|
|
333
|
+
newPrimaryKey[key.Name] = key.FileValue;
|
|
226
334
|
}
|
|
227
335
|
recordData.primaryKey = newPrimaryKey;
|
|
228
336
|
}
|
|
@@ -235,9 +343,23 @@ export class WatchService {
|
|
|
235
343
|
recordData.fields = originalFields;
|
|
236
344
|
// Write back to file
|
|
237
345
|
await JsonWriteHelper.writeOrderedRecordData(filePath, recordData);
|
|
346
|
+
await this.rememberOwnWrite(filePath);
|
|
238
347
|
}
|
|
239
348
|
}
|
|
240
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* The key used to load the record: an `@env:` value is resolved (a malformed or unset reference
|
|
352
|
+
* throws); other values are used as written.
|
|
353
|
+
*/
|
|
354
|
+
async resolvePrimaryKey(primaryKey, baseDir, resolutionCollector) {
|
|
355
|
+
const resolved = {};
|
|
356
|
+
for (const [pkField, pkValue] of Object.entries(primaryKey)) {
|
|
357
|
+
resolved[pkField] = isEnvKeyValue(pkValue)
|
|
358
|
+
? await this.syncEngine.processFieldValue(pkValue, baseDir, null, null, 0, undefined, resolutionCollector, pkField)
|
|
359
|
+
: pkValue;
|
|
360
|
+
}
|
|
361
|
+
return resolved;
|
|
362
|
+
}
|
|
241
363
|
async syncExternalFile(filePath, entityDir, entityConfig, callbacks) {
|
|
242
364
|
// Find the corresponding JSON file
|
|
243
365
|
const fileName = path.basename(filePath);
|
|
@@ -259,10 +381,8 @@ export class WatchService {
|
|
|
259
381
|
}
|
|
260
382
|
}
|
|
261
383
|
}
|
|
262
|
-
async setupSqlLogging(callbacks) {
|
|
384
|
+
async setupSqlLogging(syncConfig, callbacks) {
|
|
263
385
|
try {
|
|
264
|
-
// Load sync config for SQL logging settings
|
|
265
|
-
const syncConfig = await LoadSyncConfig(configManager.getOriginalCwd());
|
|
266
386
|
if (syncConfig?.sqlLogging?.enabled) {
|
|
267
387
|
const provider = Metadata.Provider; // SQLServerDataProvider // global-provider-ok: metadata sync operates on the configured provider only
|
|
268
388
|
if (provider && typeof provider.CreateSqlLogger === 'function') {
|
|
@@ -277,7 +397,9 @@ export class WatchService {
|
|
|
277
397
|
// Ensure the directory exists
|
|
278
398
|
await fs.ensureDir(outputDir);
|
|
279
399
|
// Create the SQL logging session
|
|
400
|
+
this.envSqlLog = new EnvSqlLog(this.syncEngine);
|
|
280
401
|
this.sqlLoggingSession = await provider.CreateSqlLogger(filepath, {
|
|
402
|
+
TransformStatement: this.envSqlLog.Redactor.Transform,
|
|
281
403
|
formatAsMigration: syncConfig.sqlLogging?.formatAsMigration || false,
|
|
282
404
|
description: 'MetadataSync watch operation',
|
|
283
405
|
logRecordChangeMetadata: true,
|
|
@@ -290,8 +412,21 @@ export class WatchService {
|
|
|
290
412
|
}
|
|
291
413
|
}
|
|
292
414
|
catch (error) {
|
|
415
|
+
// An open session keeps its redactor
|
|
416
|
+
if (!this.sqlLoggingSession) {
|
|
417
|
+
this.closeEnvSqlLog();
|
|
418
|
+
}
|
|
293
419
|
callbacks?.onWarn?.(`Failed to setup SQL logging: ${error}`);
|
|
294
420
|
}
|
|
295
421
|
}
|
|
422
|
+
/** Drops the SQL log redactor and its lookup-create hook, after the log is closed. */
|
|
423
|
+
closeEnvSqlLog() {
|
|
424
|
+
this.envSqlLog?.Close();
|
|
425
|
+
this.envSqlLog = null;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
/** True for a key value written as an `@env:` reference, valid or not. */
|
|
429
|
+
function isEnvKeyValue(value) {
|
|
430
|
+
return typeof value === 'string' && value.startsWith(METADATA_KEYWORDS.ENV);
|
|
296
431
|
}
|
|
297
432
|
//# 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":"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
|
|
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.5",
|
|
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.5",
|
|
40
|
+
"@memberjunction/config": "6.2.0-edge.5",
|
|
41
|
+
"@memberjunction/core": "6.2.0-edge.5",
|
|
42
|
+
"@memberjunction/core-entities": "6.2.0-edge.5",
|
|
43
|
+
"@memberjunction/core-entities-server": "6.2.0-edge.5",
|
|
44
|
+
"@memberjunction/generic-database-provider": "6.2.0-edge.5",
|
|
45
|
+
"@memberjunction/global": "6.2.0-edge.5",
|
|
46
|
+
"@memberjunction/graphql-dataprovider": "6.2.0-edge.5",
|
|
47
|
+
"@memberjunction/network-utils": "6.2.0-edge.5",
|
|
48
|
+
"@memberjunction/postgresql-dataprovider": "6.2.0-edge.5",
|
|
49
|
+
"@memberjunction/record-graph": "6.2.0-edge.5",
|
|
50
|
+
"@memberjunction/server-bootstrap-lite": "6.2.0-edge.5",
|
|
51
|
+
"@memberjunction/sql-dialect": "6.2.0-edge.5",
|
|
52
|
+
"@memberjunction/sqlserver-dataprovider": "6.2.0-edge.5",
|
|
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
|
}
|