@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.
Files changed (122) hide show
  1. package/README.md +115 -51
  2. package/dist/config.d.ts +5 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/RecordProcessor.d.ts +98 -0
  10. package/dist/lib/RecordProcessor.d.ts.map +1 -1
  11. package/dist/lib/RecordProcessor.js +424 -22
  12. package/dist/lib/RecordProcessor.js.map +1 -1
  13. package/dist/lib/RelatedEntityHandler.d.ts +4 -1
  14. package/dist/lib/RelatedEntityHandler.d.ts.map +1 -1
  15. package/dist/lib/RelatedEntityHandler.js +49 -11
  16. package/dist/lib/RelatedEntityHandler.js.map +1 -1
  17. package/dist/lib/created-record-key.d.ts +34 -0
  18. package/dist/lib/created-record-key.d.ts.map +1 -0
  19. package/dist/lib/created-record-key.js +46 -0
  20. package/dist/lib/created-record-key.js.map +1 -0
  21. package/dist/lib/deletion-auditor.d.ts.map +1 -1
  22. package/dist/lib/deletion-auditor.js +33 -2
  23. package/dist/lib/deletion-auditor.js.map +1 -1
  24. package/dist/lib/entity-field-names.d.ts +11 -0
  25. package/dist/lib/entity-field-names.d.ts.map +1 -0
  26. package/dist/lib/entity-field-names.js +15 -0
  27. package/dist/lib/entity-field-names.js.map +1 -0
  28. package/dist/lib/env-derived-fields.d.ts +23 -0
  29. package/dist/lib/env-derived-fields.d.ts.map +1 -0
  30. package/dist/lib/env-derived-fields.js +53 -0
  31. package/dist/lib/env-derived-fields.js.map +1 -0
  32. package/dist/lib/env-display.d.ts +54 -0
  33. package/dist/lib/env-display.d.ts.map +1 -0
  34. package/dist/lib/env-display.js +156 -0
  35. package/dist/lib/env-display.js.map +1 -0
  36. package/dist/lib/env-reference.d.ts +104 -0
  37. package/dist/lib/env-reference.d.ts.map +1 -0
  38. package/dist/lib/env-reference.js +241 -0
  39. package/dist/lib/env-reference.js.map +1 -0
  40. package/dist/lib/env-sql-redactor.d.ts +74 -0
  41. package/dist/lib/env-sql-redactor.d.ts.map +1 -0
  42. package/dist/lib/env-sql-redactor.js +297 -0
  43. package/dist/lib/env-sql-redactor.js.map +1 -0
  44. package/dist/lib/existing-record-index.d.ts +70 -0
  45. package/dist/lib/existing-record-index.d.ts.map +1 -0
  46. package/dist/lib/existing-record-index.js +158 -0
  47. package/dist/lib/existing-record-index.js.map +1 -0
  48. package/dist/lib/ignore-directories.d.ts +10 -0
  49. package/dist/lib/ignore-directories.d.ts.map +1 -0
  50. package/dist/lib/ignore-directories.js +12 -0
  51. package/dist/lib/ignore-directories.js.map +1 -0
  52. package/dist/lib/json-record-lines.d.ts +17 -0
  53. package/dist/lib/json-record-lines.d.ts.map +1 -0
  54. package/dist/lib/json-record-lines.js +170 -0
  55. package/dist/lib/json-record-lines.js.map +1 -0
  56. package/dist/lib/json-subproperty-externalization.d.ts.map +1 -1
  57. package/dist/lib/json-subproperty-externalization.js +3 -1
  58. package/dist/lib/json-subproperty-externalization.js.map +1 -1
  59. package/dist/lib/lookup-reference.d.ts +38 -0
  60. package/dist/lib/lookup-reference.d.ts.map +1 -0
  61. package/dist/lib/lookup-reference.js +62 -0
  62. package/dist/lib/lookup-reference.js.map +1 -0
  63. package/dist/lib/provider-utils.d.ts.map +1 -1
  64. package/dist/lib/provider-utils.js +2 -4
  65. package/dist/lib/provider-utils.js.map +1 -1
  66. package/dist/lib/pull-option-overrides.d.ts +24 -0
  67. package/dist/lib/pull-option-overrides.d.ts.map +1 -0
  68. package/dist/lib/pull-option-overrides.js +39 -0
  69. package/dist/lib/pull-option-overrides.js.map +1 -0
  70. package/dist/lib/push-directories.d.ts +42 -0
  71. package/dist/lib/push-directories.d.ts.map +1 -0
  72. package/dist/lib/push-directories.js +71 -0
  73. package/dist/lib/push-directories.js.map +1 -0
  74. package/dist/lib/push-when.d.ts +38 -0
  75. package/dist/lib/push-when.d.ts.map +1 -0
  76. package/dist/lib/push-when.js +84 -0
  77. package/dist/lib/push-when.js.map +1 -0
  78. package/dist/lib/record-dependency-analyzer.d.ts +2 -0
  79. package/dist/lib/record-dependency-analyzer.d.ts.map +1 -1
  80. package/dist/lib/record-dependency-analyzer.js.map +1 -1
  81. package/dist/lib/record-file-glob.d.ts +11 -0
  82. package/dist/lib/record-file-glob.d.ts.map +1 -0
  83. package/dist/lib/record-file-glob.js +10 -0
  84. package/dist/lib/record-file-glob.js.map +1 -0
  85. package/dist/lib/reference-parser.d.ts +3 -2
  86. package/dist/lib/reference-parser.d.ts.map +1 -1
  87. package/dist/lib/reference-parser.js +27 -27
  88. package/dist/lib/reference-parser.js.map +1 -1
  89. package/dist/lib/sync-engine.d.ts +46 -4
  90. package/dist/lib/sync-engine.d.ts.map +1 -1
  91. package/dist/lib/sync-engine.js +215 -59
  92. package/dist/lib/sync-engine.js.map +1 -1
  93. package/dist/lib/sync-state-manager.d.ts +7 -3
  94. package/dist/lib/sync-state-manager.d.ts.map +1 -1
  95. package/dist/lib/sync-state-manager.js +19 -4
  96. package/dist/lib/sync-state-manager.js.map +1 -1
  97. package/dist/lib/watch-file-filter.d.ts +31 -0
  98. package/dist/lib/watch-file-filter.d.ts.map +1 -0
  99. package/dist/lib/watch-file-filter.js +64 -0
  100. package/dist/lib/watch-file-filter.js.map +1 -0
  101. package/dist/plugins/index.d.ts.map +1 -1
  102. package/dist/plugins/index.js +44 -14
  103. package/dist/plugins/index.js.map +1 -1
  104. package/dist/services/PullService.d.ts +41 -1
  105. package/dist/services/PullService.d.ts.map +1 -1
  106. package/dist/services/PullService.js +261 -101
  107. package/dist/services/PullService.js.map +1 -1
  108. package/dist/services/PushService.d.ts +59 -0
  109. package/dist/services/PushService.d.ts.map +1 -1
  110. package/dist/services/PushService.js +435 -173
  111. package/dist/services/PushService.js.map +1 -1
  112. package/dist/services/ValidationService.d.ts +43 -8
  113. package/dist/services/ValidationService.d.ts.map +1 -1
  114. package/dist/services/ValidationService.js +338 -127
  115. package/dist/services/ValidationService.js.map +1 -1
  116. package/dist/services/WatchService.d.ts +26 -0
  117. package/dist/services/WatchService.d.ts.map +1 -1
  118. package/dist/services/WatchService.js +210 -75
  119. package/dist/services/WatchService.js.map +1 -1
  120. package/dist/types/validation.d.ts +6 -0
  121. package/dist/types/validation.d.ts.map +1 -1
  122. 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 { LoadEntityConfig, LoadSyncConfig } from '../config.js';
6
- import { FindEntityDirectories } from '../lib/provider-utils.js';
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
- const entityDirs = FindEntityDirectories(process.cwd(), options.dir);
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 found');
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
- // Setup SQL logging session
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
- // Watch for JSON files and external files
33
- const patterns = [
34
- path.join(entityDir, entityConfig.filePattern || '**/*.json'),
35
- path.join(entityDir, '**/*.md'),
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
- return {
70
- watchers,
71
- stop: async () => {
72
- // Clear all debounce timers
73
- for (const timer of this.debounceTimers.values()) {
74
- clearTimeout(timer);
75
- }
76
- this.debounceTimers.clear();
77
- // Close all watchers
78
- await Promise.all(watchers.map(w => w.close()));
79
- // Dispose SQL logging session
80
- if (this.sqlLoggingSession) {
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
- // Build defaults
138
- const defaults = await this.syncEngine.buildDefaults(filePath, entityConfig);
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 (recordData.primaryKey) {
143
- entity = await this.syncEngine.loadEntity(entityConfig.entity, recordData.primaryKey);
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
- // UUID generation now happens automatically in BaseEntity.NewRecord()
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 first
232
+ // Apply defaults only to fields the record does not set
153
233
  for (const [field, value] of Object.entries(defaults)) {
154
- if (field in entity) {
155
- entity[field] = value;
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
- if (field in entity) {
161
- const processedValue = await this.syncEngine.processFieldValue(value, path.dirname(filePath));
162
- entity[field] = processedValue;
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
- // Save the record
201
- const saved = await entity.Save();
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
- for (const pk of entityInfo.PrimaryKeys) {
225
- newPrimaryKey[pk.Name] = entity.Get(pk.Name);
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",
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.4",
40
- "@memberjunction/config": "6.2.0-edge.4",
41
- "@memberjunction/core": "6.2.0-edge.4",
42
- "@memberjunction/core-entities": "6.2.0-edge.4",
43
- "@memberjunction/core-entities-server": "6.2.0-edge.4",
44
- "@memberjunction/generic-database-provider": "6.2.0-edge.4",
45
- "@memberjunction/global": "6.2.0-edge.4",
46
- "@memberjunction/graphql-dataprovider": "6.2.0-edge.4",
47
- "@memberjunction/network-utils": "6.2.0-edge.4",
48
- "@memberjunction/postgresql-dataprovider": "6.2.0-edge.4",
49
- "@memberjunction/record-graph": "6.2.0-edge.4",
50
- "@memberjunction/server-bootstrap-lite": "6.2.0-edge.4",
51
- "@memberjunction/sql-dialect": "6.2.0-edge.4",
52
- "@memberjunction/sqlserver-dataprovider": "6.2.0-edge.4",
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
  }