@memberjunction/metadata-sync 6.2.0-edge.3 → 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 (130) hide show
  1. package/README.md +117 -53
  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/entity-subclass-guard.d.ts +8 -7
  29. package/dist/lib/entity-subclass-guard.d.ts.map +1 -1
  30. package/dist/lib/entity-subclass-guard.js +20 -8
  31. package/dist/lib/entity-subclass-guard.js.map +1 -1
  32. package/dist/lib/env-derived-fields.d.ts +23 -0
  33. package/dist/lib/env-derived-fields.d.ts.map +1 -0
  34. package/dist/lib/env-derived-fields.js +53 -0
  35. package/dist/lib/env-derived-fields.js.map +1 -0
  36. package/dist/lib/env-display.d.ts +54 -0
  37. package/dist/lib/env-display.d.ts.map +1 -0
  38. package/dist/lib/env-display.js +156 -0
  39. package/dist/lib/env-display.js.map +1 -0
  40. package/dist/lib/env-reference.d.ts +104 -0
  41. package/dist/lib/env-reference.d.ts.map +1 -0
  42. package/dist/lib/env-reference.js +241 -0
  43. package/dist/lib/env-reference.js.map +1 -0
  44. package/dist/lib/env-sql-redactor.d.ts +74 -0
  45. package/dist/lib/env-sql-redactor.d.ts.map +1 -0
  46. package/dist/lib/env-sql-redactor.js +297 -0
  47. package/dist/lib/env-sql-redactor.js.map +1 -0
  48. package/dist/lib/existing-record-index.d.ts +70 -0
  49. package/dist/lib/existing-record-index.d.ts.map +1 -0
  50. package/dist/lib/existing-record-index.js +158 -0
  51. package/dist/lib/existing-record-index.js.map +1 -0
  52. package/dist/lib/ignore-directories.d.ts +10 -0
  53. package/dist/lib/ignore-directories.d.ts.map +1 -0
  54. package/dist/lib/ignore-directories.js +12 -0
  55. package/dist/lib/ignore-directories.js.map +1 -0
  56. package/dist/lib/json-record-lines.d.ts +17 -0
  57. package/dist/lib/json-record-lines.d.ts.map +1 -0
  58. package/dist/lib/json-record-lines.js +170 -0
  59. package/dist/lib/json-record-lines.js.map +1 -0
  60. package/dist/lib/json-subproperty-externalization.d.ts.map +1 -1
  61. package/dist/lib/json-subproperty-externalization.js +3 -1
  62. package/dist/lib/json-subproperty-externalization.js.map +1 -1
  63. package/dist/lib/lookup-reference.d.ts +38 -0
  64. package/dist/lib/lookup-reference.d.ts.map +1 -0
  65. package/dist/lib/lookup-reference.js +62 -0
  66. package/dist/lib/lookup-reference.js.map +1 -0
  67. package/dist/lib/provider-utils.d.ts.map +1 -1
  68. package/dist/lib/provider-utils.js +2 -4
  69. package/dist/lib/provider-utils.js.map +1 -1
  70. package/dist/lib/pull-option-overrides.d.ts +24 -0
  71. package/dist/lib/pull-option-overrides.d.ts.map +1 -0
  72. package/dist/lib/pull-option-overrides.js +39 -0
  73. package/dist/lib/pull-option-overrides.js.map +1 -0
  74. package/dist/lib/push-directories.d.ts +42 -0
  75. package/dist/lib/push-directories.d.ts.map +1 -0
  76. package/dist/lib/push-directories.js +71 -0
  77. package/dist/lib/push-directories.js.map +1 -0
  78. package/dist/lib/push-when.d.ts +38 -0
  79. package/dist/lib/push-when.d.ts.map +1 -0
  80. package/dist/lib/push-when.js +84 -0
  81. package/dist/lib/push-when.js.map +1 -0
  82. package/dist/lib/record-dependency-analyzer.d.ts +2 -0
  83. package/dist/lib/record-dependency-analyzer.d.ts.map +1 -1
  84. package/dist/lib/record-dependency-analyzer.js.map +1 -1
  85. package/dist/lib/record-file-glob.d.ts +11 -0
  86. package/dist/lib/record-file-glob.d.ts.map +1 -0
  87. package/dist/lib/record-file-glob.js +10 -0
  88. package/dist/lib/record-file-glob.js.map +1 -0
  89. package/dist/lib/reference-parser.d.ts +3 -2
  90. package/dist/lib/reference-parser.d.ts.map +1 -1
  91. package/dist/lib/reference-parser.js +27 -27
  92. package/dist/lib/reference-parser.js.map +1 -1
  93. package/dist/lib/sync-engine.d.ts +52 -4
  94. package/dist/lib/sync-engine.d.ts.map +1 -1
  95. package/dist/lib/sync-engine.js +233 -61
  96. package/dist/lib/sync-engine.js.map +1 -1
  97. package/dist/lib/sync-state-manager.d.ts +7 -3
  98. package/dist/lib/sync-state-manager.d.ts.map +1 -1
  99. package/dist/lib/sync-state-manager.js +19 -4
  100. package/dist/lib/sync-state-manager.js.map +1 -1
  101. package/dist/lib/watch-file-filter.d.ts +31 -0
  102. package/dist/lib/watch-file-filter.d.ts.map +1 -0
  103. package/dist/lib/watch-file-filter.js +64 -0
  104. package/dist/lib/watch-file-filter.js.map +1 -0
  105. package/dist/plugins/index.d.ts.map +1 -1
  106. package/dist/plugins/index.js +55 -23
  107. package/dist/plugins/index.js.map +1 -1
  108. package/dist/services/FormattingService.d.ts +14 -7
  109. package/dist/services/FormattingService.d.ts.map +1 -1
  110. package/dist/services/FormattingService.js +22 -9
  111. package/dist/services/FormattingService.js.map +1 -1
  112. package/dist/services/PullService.d.ts +53 -1
  113. package/dist/services/PullService.d.ts.map +1 -1
  114. package/dist/services/PullService.js +323 -120
  115. package/dist/services/PullService.js.map +1 -1
  116. package/dist/services/PushService.d.ts +59 -0
  117. package/dist/services/PushService.d.ts.map +1 -1
  118. package/dist/services/PushService.js +448 -173
  119. package/dist/services/PushService.js.map +1 -1
  120. package/dist/services/ValidationService.d.ts +43 -8
  121. package/dist/services/ValidationService.d.ts.map +1 -1
  122. package/dist/services/ValidationService.js +338 -127
  123. package/dist/services/ValidationService.js.map +1 -1
  124. package/dist/services/WatchService.d.ts +26 -0
  125. package/dist/services/WatchService.d.ts.map +1 -1
  126. package/dist/services/WatchService.js +210 -75
  127. package/dist/services/WatchService.js.map +1 -1
  128. package/dist/types/validation.d.ts +6 -0
  129. package/dist/types/validation.d.ts.map +1 -1
  130. package/package.json +17 -16
@@ -9,10 +9,13 @@
9
9
  * drive this code, not re-declared copies of its regexes.
10
10
  *
11
11
  * NOTE: this is the *validation-side* parser. The push-side runtime resolution
12
- * in `sync-engine.ts` (`processFieldValue`) has its own parsing that
13
- * additionally understands `@url:` and the `?allowDefer` flag.
12
+ * in `sync-engine.ts` (`ProcessFieldValue`) also understands `@url:`. Both sides
13
+ * split `@lookup:` with `SplitLookupReference` and read `@env:` with
14
+ * {@link ENV_REFERENCE_PATTERN}.
14
15
  */
15
16
  import { METADATA_KEYWORDS } from '../constants/metadata-keywords.js';
17
+ import { ENV_REFERENCE_PATTERN } from './env-reference.js';
18
+ import { ParseLookupCreateFields, SplitLookupReference } from './lookup-reference.js';
16
19
  /**
17
20
  * Ordered reference patterns. Each entry pairs a reference type with the exact
18
21
  * regex that recognizes it. `@lookup:` captures the entity name (everything up
@@ -25,7 +28,7 @@ const REFERENCE_PATTERNS = [
25
28
  [METADATA_KEYWORDS.PARENT, /^@parent:(.+)$/],
26
29
  [METADATA_KEYWORDS.ROOT, /^@root:(.+)$/],
27
30
  [METADATA_KEYWORDS.OWNER, /^@owner:(.+)$/],
28
- [METADATA_KEYWORDS.ENV, /^@env:(.+)$/],
31
+ [METADATA_KEYWORDS.ENV, ENV_REFERENCE_PATTERN],
29
32
  ];
30
33
  /**
31
34
  * Parses a metadata reference string into its structured form.
@@ -53,29 +56,32 @@ export function parseMetadataReference(reference) {
53
56
  return ParseMetadataReference(reference);
54
57
  }
55
58
  /**
56
- * Parses the portion of a `@lookup:` reference after the entity name.
57
- *
58
- * Handles single-field (`Name=X`) and multi-field (`Name=X&Status=Y`)
59
- * criteria, the `?create` flag, and `?create&Field=Value` additional
60
- * creation fields (values URI-decoded).
59
+ * Parses the portion of a `@lookup:` reference after the entity name, split the way push splits it:
60
+ * criteria before the first `?`, flags after it. Handles single-field (`Name=X`) and multi-field
61
+ * (`Name=X&Status=Y`) criteria, the `create` flag, and `create&Field=Value` creation fields.
61
62
  */
62
63
  function parseLookupReference(entity, remaining) {
63
- // Check if this has ?create syntax
64
- const hasCreate = remaining.includes('?create');
65
- const lookupPart = hasCreate ? remaining.split('?')[0] : remaining;
64
+ const split = SplitLookupReference(`${entity}.${remaining}`);
65
+ const criteriaText = split ? split.CriteriaText : remaining;
66
+ const flagsText = split ? split.FlagsText : '';
67
+ const hasCreate = split ? split.FlagNames.has('create') : false;
66
68
  // Parse all lookup fields (can be multiple with &)
67
- const fields = parseLookupCriteria(lookupPart);
69
+ const fields = parseLookupCriteria(criteriaText);
68
70
  // For backward compatibility, use the first field as primary
69
71
  const primaryField = fields.length > 0 ? fields[0] : { field: '', value: '' };
70
- return {
72
+ const parsed = {
71
73
  type: METADATA_KEYWORDS.LOOKUP,
72
74
  value: primaryField.value,
73
75
  entity,
74
76
  field: primaryField.field,
75
77
  fields, // Include all fields for validation
76
78
  createIfMissing: hasCreate,
77
- additionalFields: parseCreateFields(remaining, hasCreate),
79
+ additionalFields: parseCreateFields(flagsText, hasCreate),
78
80
  };
81
+ if (split && split.UnknownBareFlags.length > 0) {
82
+ parsed.UnknownFlags = split.UnknownBareFlags;
83
+ }
84
+ return parsed;
79
85
  }
80
86
  /**
81
87
  * Splits `Field1=Value1&Field2=Value2` criteria into field/value pairs.
@@ -92,20 +98,14 @@ function parseLookupCriteria(lookupPart) {
92
98
  }
93
99
  return fields;
94
100
  }
95
- /**
96
- * Parses additional creation fields following `?create&` (e.g.
97
- * `?create&Description=Auto%20created`). Values are URI-decoded.
98
- */
99
- function parseCreateFields(remaining, hasCreate) {
101
+ /** The creation fields after the `create` flag (e.g. `create&Description=Auto%20created`). Values are URI-decoded. */
102
+ function parseCreateFields(flagsText, hasCreate) {
100
103
  const additionalFields = {};
101
- if (hasCreate && remaining.includes('?create&')) {
102
- const createPart = remaining.split('?create&')[1];
103
- for (const pair of createPart.split('&')) {
104
- const [key, val] = pair.split('=');
105
- if (key && val) {
106
- additionalFields[key] = decodeURIComponent(val);
107
- }
108
- }
104
+ if (!hasCreate) {
105
+ return additionalFields;
106
+ }
107
+ for (const { Name, Value } of ParseLookupCreateFields(flagsText)) {
108
+ additionalFields[Name] = Value;
109
109
  }
110
110
  return additionalFields;
111
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reference-parser.js","sourceRoot":"","sources":["../../src/lib/reference-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-parser.js","sourceRoot":"","sources":["../../src/lib/reference-parser.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,8 @@ export interface SyncResolutionCollector {
67
67
  notes: SyncNote[];
68
68
  /** Current field path prefix (e.g., "fields" or "primaryKey") */
69
69
  fieldPrefix: string;
70
+ /** Field name → names of the variables whose values went into that field. Filled only when present. */
71
+ EnvFields?: Map<string, Set<string>>;
70
72
  }
71
73
  /**
72
74
  * Represents the structure of a metadata record with optional sync tracking
@@ -126,6 +128,10 @@ export declare class SyncEngine {
126
128
  private metadata;
127
129
  private contextUser;
128
130
  private syncMetadataEngine;
131
+ /** Names of every environment variable this engine resolved, kept for the engine's lifetime and never cleared. Never holds values. */
132
+ readonly ResolvedEnvVariables: Set<string>;
133
+ /** Runs right before a `@lookup:…?create` lookup saves the record it creates, with the env-sourced fields of that record. */
134
+ BeforeLookupCreateSave: ((entity: BaseEntity, envFields: ReadonlyMap<string, ReadonlySet<string>>) => void) | null;
129
135
  SetMetadataEngine(engine: SyncMetadataEngine): void;
130
136
  /** @deprecated Use {@link SetMetadataEngine}. */
131
137
  setMetadataEngine(engine: SyncMetadataEngine): void;
@@ -178,6 +184,7 @@ export declare class SyncEngine {
178
184
  * - `@url:address` - Fetches content from a URL
179
185
  * - `@lookup:Entity.Field=Value` - Looks up an entity ID by field value
180
186
  * - `@env:VARIABLE` - Reads an environment variable
187
+ * - `@env:VARIABLE?optional` - Like `@env:`, but a missing variable throws {@link OptionalEnvMissingError} so the caller can leave the field out
181
188
  *
182
189
  * @param value - The field value to process
183
190
  * @param baseDir - Base directory for resolving relative file paths
@@ -257,12 +264,20 @@ export declare class SyncEngine {
257
264
  ResolveLookup(entityName: string, lookupFields: Array<{
258
265
  fieldName: string;
259
266
  fieldValue: string;
260
- }>, autoCreate?: boolean, createFields?: Record<string, any>, batchContext?: BatchContext, allowDefer?: boolean, originalValue?: string, recordProvider?: IMetadataProvider): Promise<string>;
267
+ }>, autoCreate?: boolean, createFields?: Record<string, any>, batchContext?: BatchContext, allowDefer?: boolean, originalValue?: string, recordProvider?: IMetadataProvider, envFields?: ReadonlyMap<string, ReadonlySet<string>>): Promise<string>;
268
+ /** `Field='value' AND …` for messages; env-sourced criteria print as `Field=<from @env:VAR>`. */
269
+ private describeLookupFilter;
270
+ /**
271
+ * Adds the variable names a lookup criterion or create field recorded in its scratch collector to the
272
+ * lookup's map. `@env:` values and `@parent:`/`@lookup:` results equal to an env value are recorded.
273
+ * @returns The field's variable names in the lookup's map, or undefined when it is not env-sourced
274
+ */
275
+ private addLookupEnvField;
261
276
  /** @deprecated Use {@link ResolveLookup}. */
262
277
  resolveLookup(entityName: string, lookupFields: Array<{
263
278
  fieldName: string;
264
279
  fieldValue: string;
265
- }>, autoCreate?: boolean, createFields?: Record<string, any>, batchContext?: BatchContext, allowDefer?: boolean, originalValue?: string, recordProvider?: IMetadataProvider): Promise<string>;
280
+ }>, autoCreate?: boolean, createFields?: Record<string, any>, batchContext?: BatchContext, allowDefer?: boolean, originalValue?: string, recordProvider?: IMetadataProvider, envFields?: ReadonlyMap<string, ReadonlySet<string>>): Promise<string>;
266
281
  /**
267
282
  * Build cascading defaults for a file path and process field values
268
283
  *
@@ -272,12 +287,39 @@ export declare class SyncEngine {
272
287
  *
273
288
  * @param filePath - Path to the file being processed
274
289
  * @param entityConfig - Entity configuration containing base defaults
290
+ * @param resolutionCollector - Optional collector; when it has an `EnvFields` map, env-sourced defaults are recorded in it (no notes are added)
291
+ * @param skippedOptional - Optional map; receives field → variable for each default left out because its `?optional` variable is not set
275
292
  * @returns Processed defaults with all references resolved
276
293
  * @throws Error if any default value processing fails
277
294
  */
278
- BuildDefaults(filePath: string, entityConfig: EntityConfig): Promise<Record<string, any>>;
295
+ BuildDefaults(filePath: string, entityConfig: EntityConfig, resolutionCollector?: SyncResolutionCollector, skippedOptional?: Map<string, string>): Promise<Record<string, unknown>>;
279
296
  /** @deprecated Use {@link BuildDefaults}. */
280
- buildDefaults(filePath: string, entityConfig: EntityConfig): Promise<Record<string, any>>;
297
+ buildDefaults(filePath: string, entityConfig: EntityConfig, resolutionCollector?: SyncResolutionCollector, skippedOptional?: Map<string, string>): Promise<Record<string, unknown>>;
298
+ /**
299
+ * The folders from the sync root (the nearest folder at or above `startDir` whose
300
+ * `.mj-sync.json` has no `entity`) down to `startDir`. Without a sync root, the chain
301
+ * starts at the file system root.
302
+ * The walk passes through folders without a `.mj-sync.json`, because record sub-folders have none (unlike `FindSyncRootDir`, which finds the settings root).
303
+ */
304
+ private folderChainFor;
305
+ /** True when `dir` has a readable `.mj-sync.json` with no (or an empty) `entity`. */
306
+ private isSyncRoot;
307
+ /**
308
+ * A scratch collector that records `@env:` fields into its own map and drops notes, or undefined when the
309
+ * caller's collector has no map. {@link mergeEnvFields} copies its map into the caller's map on success.
310
+ */
311
+ private envOnlyCollector;
312
+ /** Adds the variable names of a scratch collector to the caller's `EnvFields` map. */
313
+ private mergeEnvFields;
314
+ /**
315
+ * Finds the resolved variables whose current value is in a value copied by `@parent:` or `@owner:`, or returned by `@lookup:`
316
+ * (trimmed, case-insensitive): the whole value, or for values of 6 or more characters any part of it,
317
+ * plain or JSON-escaped. Records them under `fieldName` when the collector has an `EnvFields` map.
318
+ * @returns The matching variable names, sorted
319
+ */
320
+ private recordCopiedEnvValue;
321
+ /** True when the copied text is the variable value, or holds a value of at least `MIN_MASKED_VALUE_LENGTH` characters. */
322
+ private holdsCopiedEnvValue;
281
323
  /**
282
324
  * Load folder configuration from .mj-folder.json file
283
325
  *
@@ -416,6 +458,12 @@ export declare class SyncEngine {
416
458
  * ```
417
459
  */
418
460
  LoadEntity(entityName: string, primaryKey: Record<string, any>, recordProvider?: IMetadataProvider): Promise<BaseEntity | null>;
461
+ /**
462
+ * Loads a record by primary key straight from the database, using the record's provider when one
463
+ * is passed so the read joins that provider's transaction. Returns `null` when no row exists.
464
+ * `cacheResult` controls whether a hit is added to the preload cache.
465
+ */
466
+ private loadFromDatabase;
419
467
  /** @deprecated Use {@link LoadEntity}. */
420
468
  loadEntity(entityName: string, primaryKey: Record<string, any>, recordProvider?: IMetadataProvider): Promise<BaseEntity | null>;
421
469
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/lib/sync-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../src/lib/sync-engine.ts"],"names":[],"mappings":"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"}