@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
|
@@ -13,6 +13,7 @@ import * as fs from 'fs';
|
|
|
13
13
|
import * as path from 'path';
|
|
14
14
|
import { ResolveStartupMode, SetProvider, StartupManager } from '@memberjunction/core';
|
|
15
15
|
import { minimatch } from 'minimatch';
|
|
16
|
+
import { IsIgnoredDirectoryName } from './ignore-directories.js';
|
|
16
17
|
/** Global mssql ConnectionPool (SQL Server path only) */
|
|
17
18
|
let globalPool = null;
|
|
18
19
|
/** Global pg.Pool (PostgreSQL path only) — typed loosely to avoid a hard pg dep at import time */
|
|
@@ -323,10 +324,7 @@ export function FindEntityDirectories(dir, specificDir, directoryOrder, ignoreDi
|
|
|
323
324
|
for (const entry of entries) {
|
|
324
325
|
if (entry.isDirectory() && !entry.name.startsWith('.')) {
|
|
325
326
|
// Check if this directory should be ignored
|
|
326
|
-
if (
|
|
327
|
-
// Simple pattern matching: exact name or ends with pattern
|
|
328
|
-
return entry.name === pattern || entry.name.endsWith(pattern);
|
|
329
|
-
})) {
|
|
327
|
+
if (IsIgnoredDirectoryName(entry.name, ignoreDirectories)) {
|
|
330
328
|
continue;
|
|
331
329
|
}
|
|
332
330
|
const subDir = path.join(dir, entry.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-utils.js","sourceRoot":"","sources":["../../src/lib/provider-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC3G,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAkC,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAY,MAAM,sBAAsB,CAAC;AAEjI,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,yDAAyD;AACzD,IAAI,UAAU,GAA8B,IAAI,CAAC;AAEjD,kGAAkG;AAClG,IAAI,YAAY,GAAwC,IAAI,CAAC;AAE7D,+DAA+D;AAC/D,IAAI,cAAc,GAAgC,IAAI,CAAC;AAEvD,8CAA8C;AAC9C,IAAI,qBAAqB,GAAyC,IAAI,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAgB;IACvD,kDAAkD;IAClD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,+CAA+C;IAC/C,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,qBAAqB,GAAG,QAAQ,KAAK,YAAY;QAC/C,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC;QACpC,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAgB;IACvD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,MAAgB;IACzD,MAAM,UAAU,GAAe;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAClD,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,+EAA+E;QAC/E,wEAAwE;QACxE,2CAA2C;QAC3C,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC,SAAS,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM;gBACvD,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC;YACzD,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,KAAK,GAAG;YAC/D,YAAY,EAAE,MAAM,CAAC,cAAc;YACnC,gBAAgB,EAAE,IAAI;SACvB;KACF,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,UAAU,GAAG,IAAI,CAAC;IAElB,MAAM,cAAc,GAAG,IAAI,2BAA2B,CACpD,IAAI,EACJ,MAAM,CAAC,YAAY,IAAI,MAAM,CAC9B,CAAC;IAEF,wFAAwF;IACxF,8EAA8E;IAC9E,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACnG,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3F,cAAc,GAAG,WAA8C,CAAC;IAChE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,MAAgB;IACxD,+EAA+E;IAC/E,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IACxC,MAAM,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,eAAe,EAAE,GAC7E,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAClD,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,CAAC;QACN,yEAAyE;QACzE,KAAK,EAAE,eAAe;QACtB,8EAA8E;QAC9E,2EAA2E;QAC3E,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,EAAE,CAAC;IACrB,YAAY,GAAG,MAAM,CAAC;IAEtB,MAAM,YAAY,GAAG,IAAI,4BAA4B,CACnD;QACE,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAClD,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,CAAC;QACjB,+FAA+F;QAC/F,iGAAiG;QACjG,kGAAkG;QAClG,gGAAgG;QAChG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAwB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3G,EACD,UAAU,EACV,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC9C,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtB,cAAc,GAAG,QAAQ,CAAC;IAE1B,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3C,iFAAiF;IACjF,oFAAoF;IACpF,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACnD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC3F,MAAM,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7G,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACvC,2EAA2E;QAC3E,8EAA8E;QAC9E,2EAA2E;QAC3E,+DAA+D;QAC/D,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,UAAU,CAAC,KAAK,EAAE;YAClB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC5B,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACpC,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,CAAC,CAAC;SACH,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,mCAAmC;QACrC,CAAC,CAAC,CAAC;QACH,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QACD,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;IACtB,qBAAqB,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IAED,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAClE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAC/D,CAAC;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,kDAAkD;YAClD,+DAA+D;YAC/D,iFAAiF;YACjF,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,WAAoB,EACpB,cAAyB,EACzB,iBAA4B,EAC5B,aAAwB,EACxB,aAAwB;IAExB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,gGAAgG;IAChG,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3F,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAEpD,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;oBAEnE,+DAA+D;oBAC/D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACxB,OAAO,OAAO,CAAC;oBACjB,CAAC;oBAED,6EAA6E;oBAC7E,wDAAwD;oBACxD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC1B,2DAA2D;wBAC3D,MAAM,uBAAuB,GAAG;4BAC9B,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;4BAC5B,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;yBACpC,CAAC;wBACF,OAAO,qBAAqB,CAC1B,SAAS,EACT,SAAS,EACT,MAAM,CAAC,cAAc,EACrB,uBAAuB,EACvB,aAAa,EACb,aAAa,CACd,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,gEAAgE;gBAClE,CAAC;YACH,CAAC;YAED,mEAAmE;YACnE,OAAO,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QACtH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kEAAkE;IAClE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,4CAA4C;YAC5C,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxD,2DAA2D;gBAC3D,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;YAExE,IAAI,aAAa,EAAE,CAAC;gBAClB,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,gDAAgD;QAChD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,OAAO,CACpC,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC;QACnD,OAAO,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,0EAA0E;IAC1E,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,OAAO,qBAAqB,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACzE,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,WAAoB,EACpB,cAAyB,EACzB,iBAA4B,EAC5B,aAAwB,EACxB,aAAwB;IAExB,OAAO,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAClH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,WAAqB,EACrB,aAAwB,EACxB,aAAwB;IAExB,IAAI,YAAY,GAAG,WAAW,CAAC;IAE/B,mCAAmC;IACnC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAClC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"provider-utils.js","sourceRoot":"","sources":["../../src/lib/provider-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Applies one pull run's CLI overrides to an entity folder's config.
|
|
3
|
+
* @module pull-option-overrides
|
|
4
|
+
*/
|
|
5
|
+
import type { EntityConfig } from '../config.js';
|
|
6
|
+
/** Pull settings that CLI flags can set for one run. */
|
|
7
|
+
export interface PullFieldOverrides {
|
|
8
|
+
/** Replaces the folder's pull.mergeStrategy. */
|
|
9
|
+
MergeStrategy?: 'overwrite' | 'merge' | 'skip';
|
|
10
|
+
/** Added to the folder's pull.preserveFields. */
|
|
11
|
+
PreserveFields?: string[];
|
|
12
|
+
/** Added to the folder's pull.excludeFields. */
|
|
13
|
+
ExcludeFields?: string[];
|
|
14
|
+
/** Replaces the folder's pull.updateExistingRecords when given. */
|
|
15
|
+
UpdateExistingRecords?: boolean;
|
|
16
|
+
/** Replaces the folder's pull.createNewFileIfNotFound when given. */
|
|
17
|
+
CreateNewFileIfNotFound?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns a copy of the config with the overrides applied. Returns the same config
|
|
21
|
+
* object when there is nothing to apply.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ApplyPullOverrides(config: EntityConfig, overrides: PullFieldOverrides): EntityConfig;
|
|
24
|
+
//# sourceMappingURL=pull-option-overrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-option-overrides.d.ts","sourceRoot":"","sources":["../../src/lib/pull-option-overrides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,aAAa,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,GAAG,YAAY,CA2BpG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Applies one pull run's CLI overrides to an entity folder's config.
|
|
3
|
+
* @module pull-option-overrides
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Returns a copy of the config with the overrides applied. Returns the same config
|
|
7
|
+
* object when there is nothing to apply.
|
|
8
|
+
*/
|
|
9
|
+
export function ApplyPullOverrides(config, overrides) {
|
|
10
|
+
const hasOverride = !!overrides.MergeStrategy ||
|
|
11
|
+
!!overrides.PreserveFields?.length ||
|
|
12
|
+
!!overrides.ExcludeFields?.length ||
|
|
13
|
+
overrides.UpdateExistingRecords !== undefined ||
|
|
14
|
+
overrides.CreateNewFileIfNotFound !== undefined;
|
|
15
|
+
if (!hasOverride) {
|
|
16
|
+
return config;
|
|
17
|
+
}
|
|
18
|
+
const pull = { ...config.pull };
|
|
19
|
+
if (overrides.MergeStrategy) {
|
|
20
|
+
pull.mergeStrategy = overrides.MergeStrategy;
|
|
21
|
+
}
|
|
22
|
+
if (overrides.PreserveFields?.length) {
|
|
23
|
+
pull.preserveFields = unique([...(pull.preserveFields ?? []), ...overrides.PreserveFields]);
|
|
24
|
+
}
|
|
25
|
+
if (overrides.ExcludeFields?.length) {
|
|
26
|
+
pull.excludeFields = unique([...(pull.excludeFields ?? []), ...overrides.ExcludeFields]);
|
|
27
|
+
}
|
|
28
|
+
if (overrides.UpdateExistingRecords !== undefined) {
|
|
29
|
+
pull.updateExistingRecords = overrides.UpdateExistingRecords;
|
|
30
|
+
}
|
|
31
|
+
if (overrides.CreateNewFileIfNotFound !== undefined) {
|
|
32
|
+
pull.createNewFileIfNotFound = overrides.CreateNewFileIfNotFound;
|
|
33
|
+
}
|
|
34
|
+
return { ...config, pull };
|
|
35
|
+
}
|
|
36
|
+
function unique(values) {
|
|
37
|
+
return [...new Set(values)];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=pull-option-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-option-overrides.js","sourceRoot":"","sources":["../../src/lib/pull-option-overrides.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,SAA6B;IACpF,MAAM,WAAW,GACf,CAAC,CAAC,SAAS,CAAC,aAAa;QACzB,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM;QAClC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM;QACjC,SAAS,CAAC,qBAAqB,KAAK,SAAS;QAC7C,SAAS,CAAC,uBAAuB,KAAK,SAAS,CAAC;IAClD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;IAC/C,CAAC;IACD,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,SAAS,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,CAAC;IAC/D,CAAC;IACD,IAAI,SAAS,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;QACpD,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Chooses the entity folders a push runs over.
|
|
3
|
+
* @module push-directories
|
|
4
|
+
*/
|
|
5
|
+
import { SyncConfig } from '../config.js';
|
|
6
|
+
import { PushWhenFilterResult, SkippedDirectory } from './push-when.js';
|
|
7
|
+
/** The settings and the entity folders for one push or watch run. */
|
|
8
|
+
export interface PushFolders {
|
|
9
|
+
/** The `--dir` folder, or the original working directory when there is no `--dir`. */
|
|
10
|
+
ConfigDir: string;
|
|
11
|
+
/** The folder whose `.mj-sync.json` holds the run settings. */
|
|
12
|
+
SyncRootDir: string;
|
|
13
|
+
/** The `.mj-sync.json` of {@link SyncRootDir}, or null when there is none. */
|
|
14
|
+
SyncConfig: SyncConfig | null;
|
|
15
|
+
/**
|
|
16
|
+
* Finds the entity folders and removes the folders whose `pushWhen` is not true
|
|
17
|
+
* (see {@link SelectPushDirectories}). Reads `pushWhen` each time it is called.
|
|
18
|
+
* @throws Error when there is no entity folder before the `pushWhen` filter
|
|
19
|
+
*/
|
|
20
|
+
SelectDirectories: () => PushWhenFilterResult;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Finds the start folder and the sync root for a run, and loads the sync-root `.mj-sync.json`.
|
|
24
|
+
* The folder selection uses that config's `directoryOrder` and `ignoreDirectories`.
|
|
25
|
+
* @param originalCwd - The folder the command was started from
|
|
26
|
+
* @param dir - The `--dir` value, relative to `originalCwd`
|
|
27
|
+
*/
|
|
28
|
+
export declare function ResolvePushFolders(originalCwd: string, dir?: string, include?: string[], exclude?: string[]): Promise<PushFolders>;
|
|
29
|
+
/** The line printed for a folder that `pushWhen` skipped. Names the variable, never its value. */
|
|
30
|
+
export declare function SkippedDirectoryMessage(configDir: string, skipped: SkippedDirectory): string;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the folder whose `.mj-sync.json` holds the push settings for `dir`: the nearest
|
|
33
|
+
* folder at or above `dir` whose config has no `entity`. Returns the resolved `dir` when there is none.
|
|
34
|
+
*/
|
|
35
|
+
export declare function FindSyncRootDir(dir: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Finds the entity folders under `configDir`, or `configDir` itself when `--dir` points at an
|
|
38
|
+
* entity folder, then removes the folders whose `pushWhen` is not true.
|
|
39
|
+
* @throws Error when there is no entity folder before the `pushWhen` filter
|
|
40
|
+
*/
|
|
41
|
+
export declare function SelectPushDirectories(configDir: string, dirOptionGiven: boolean, syncConfig: SyncConfig | null, include?: string[], exclude?: string[], env?: NodeJS.ProcessEnv): PushWhenFilterResult;
|
|
42
|
+
//# sourceMappingURL=push-directories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-directories.d.ts","sourceRoot":"","sources":["../../src/lib/push-directories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAkB,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAoB,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvF,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;CAC/C;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,WAAW,CAAC,CAUtB;AAED,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAE5F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBnD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,oBAAoB,CAatB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Chooses the entity folders a push runs over.
|
|
3
|
+
* @module push-directories
|
|
4
|
+
*/
|
|
5
|
+
import fs from 'fs-extra';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { LoadSyncConfig } from '../config.js';
|
|
8
|
+
import { FindEntityDirectories } from './provider-utils.js';
|
|
9
|
+
import { FilterByPushWhen } from './push-when.js';
|
|
10
|
+
/**
|
|
11
|
+
* Finds the start folder and the sync root for a run, and loads the sync-root `.mj-sync.json`.
|
|
12
|
+
* The folder selection uses that config's `directoryOrder` and `ignoreDirectories`.
|
|
13
|
+
* @param originalCwd - The folder the command was started from
|
|
14
|
+
* @param dir - The `--dir` value, relative to `originalCwd`
|
|
15
|
+
*/
|
|
16
|
+
export async function ResolvePushFolders(originalCwd, dir, include, exclude) {
|
|
17
|
+
const configDir = dir ? path.resolve(originalCwd, dir) : originalCwd;
|
|
18
|
+
const syncRootDir = dir ? FindSyncRootDir(configDir) : configDir;
|
|
19
|
+
const syncConfig = await LoadSyncConfig(syncRootDir);
|
|
20
|
+
return {
|
|
21
|
+
ConfigDir: configDir,
|
|
22
|
+
SyncRootDir: syncRootDir,
|
|
23
|
+
SyncConfig: syncConfig,
|
|
24
|
+
SelectDirectories: () => SelectPushDirectories(configDir, !!dir, syncConfig, include, exclude),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** The line printed for a folder that `pushWhen` skipped. Names the variable, never its value. */
|
|
28
|
+
export function SkippedDirectoryMessage(configDir, skipped) {
|
|
29
|
+
return `⏭️ Skipped folder ${path.relative(configDir, skipped.Directory) || path.basename(skipped.Directory)}: ${skipped.Reason}`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the folder whose `.mj-sync.json` holds the push settings for `dir`: the nearest
|
|
33
|
+
* folder at or above `dir` whose config has no `entity`. Returns the resolved `dir` when there is none.
|
|
34
|
+
*/
|
|
35
|
+
export function FindSyncRootDir(dir) {
|
|
36
|
+
let current = path.resolve(dir);
|
|
37
|
+
while (true) {
|
|
38
|
+
const config = readConfig(current);
|
|
39
|
+
if (!config) {
|
|
40
|
+
return path.resolve(dir);
|
|
41
|
+
}
|
|
42
|
+
if (!config.entity) {
|
|
43
|
+
return current;
|
|
44
|
+
}
|
|
45
|
+
const parent = path.dirname(current);
|
|
46
|
+
if (parent === current) {
|
|
47
|
+
return path.resolve(dir);
|
|
48
|
+
}
|
|
49
|
+
current = parent;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Finds the entity folders under `configDir`, or `configDir` itself when `--dir` points at an
|
|
54
|
+
* entity folder, then removes the folders whose `pushWhen` is not true.
|
|
55
|
+
* @throws Error when there is no entity folder before the `pushWhen` filter
|
|
56
|
+
*/
|
|
57
|
+
export function SelectPushDirectories(configDir, dirOptionGiven, syncConfig, include, exclude, env = process.env) {
|
|
58
|
+
const found = FindEntityDirectories(configDir, dirOptionGiven ? configDir : undefined, syncConfig?.directoryOrder, syncConfig?.ignoreDirectories, include, exclude);
|
|
59
|
+
if (found.length === 0) {
|
|
60
|
+
throw new Error('No entity directories found');
|
|
61
|
+
}
|
|
62
|
+
return FilterByPushWhen(found, env);
|
|
63
|
+
}
|
|
64
|
+
function readConfig(dir) {
|
|
65
|
+
const configPath = path.join(dir, '.mj-sync.json');
|
|
66
|
+
if (!fs.existsSync(configPath)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return fs.readJsonSync(configPath);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=push-directories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-directories.js","sourceRoot":"","sources":["../../src/lib/push-directories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The `pushWhen` folder setting: a folder is pushed only when the
|
|
3
|
+
* environment variable it names is `true` or `1`.
|
|
4
|
+
* @module push-when
|
|
5
|
+
*/
|
|
6
|
+
/** Whether push should run over a folder, and why not. */
|
|
7
|
+
export interface PushWhenDecision {
|
|
8
|
+
Push: boolean;
|
|
9
|
+
/** Why the folder is skipped, or null when it is pushed. Never contains the variable's value. */
|
|
10
|
+
Reason: string | null;
|
|
11
|
+
}
|
|
12
|
+
/** A folder that push skipped because of its `pushWhen`. */
|
|
13
|
+
export interface SkippedDirectory {
|
|
14
|
+
Directory: string;
|
|
15
|
+
Reason: string;
|
|
16
|
+
}
|
|
17
|
+
/** Folders split by their `pushWhen`. */
|
|
18
|
+
export interface PushWhenFilterResult {
|
|
19
|
+
Included: string[];
|
|
20
|
+
Skipped: SkippedDirectory[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Checks the form of a `pushWhen` value.
|
|
24
|
+
* @returns An error message, or null when the value is a plain `@env:VAR` reference
|
|
25
|
+
*/
|
|
26
|
+
export declare function PushWhenError(pushWhen: unknown): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Decides whether a folder with this `pushWhen` is pushed. An absent value always pushes.
|
|
29
|
+
* @throws Error when the value is malformed (see {@link PushWhenError})
|
|
30
|
+
*/
|
|
31
|
+
export declare function EvaluatePushWhen(pushWhen: unknown, env?: NodeJS.ProcessEnv): PushWhenDecision;
|
|
32
|
+
/**
|
|
33
|
+
* Splits folders into the ones push runs over and the ones their `pushWhen` skips.
|
|
34
|
+
* Keeps the input order.
|
|
35
|
+
* @throws Error naming the config file when it cannot be read, is not a JSON object, or has a malformed `pushWhen`
|
|
36
|
+
*/
|
|
37
|
+
export declare function FilterByPushWhen(directories: string[], env?: NodeJS.ProcessEnv): PushWhenFilterResult;
|
|
38
|
+
//# sourceMappingURL=push-when.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-when.d.ts","sourceRoot":"","sources":["../../src/lib/push-when.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,iGAAiG;IACjG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAY9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,gBAAgB,CAiB1G;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,oBAAoB,CAYlH"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The `pushWhen` folder setting: a folder is pushed only when the
|
|
3
|
+
* environment variable it names is `true` or `1`.
|
|
4
|
+
* @module push-when
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'fs-extra';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { IsEnvFlagTrue, ParseEnvReference } from './env-reference.js';
|
|
9
|
+
/**
|
|
10
|
+
* Checks the form of a `pushWhen` value.
|
|
11
|
+
* @returns An error message, or null when the value is a plain `@env:VAR` reference
|
|
12
|
+
*/
|
|
13
|
+
export function PushWhenError(pushWhen) {
|
|
14
|
+
if (typeof pushWhen !== 'string') {
|
|
15
|
+
return 'pushWhen must be a string like "@env:VARIABLE"';
|
|
16
|
+
}
|
|
17
|
+
const reference = ParseEnvReference(pushWhen);
|
|
18
|
+
if (!reference) {
|
|
19
|
+
return `pushWhen "${pushWhen}" must be an @env: reference, like "@env:VARIABLE"`;
|
|
20
|
+
}
|
|
21
|
+
if (reference.Optional) {
|
|
22
|
+
return `pushWhen "${pushWhen}" cannot use ?optional`;
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Decides whether a folder with this `pushWhen` is pushed. An absent value always pushes.
|
|
28
|
+
* @throws Error when the value is malformed (see {@link PushWhenError})
|
|
29
|
+
*/
|
|
30
|
+
export function EvaluatePushWhen(pushWhen, env = process.env) {
|
|
31
|
+
if (pushWhen === undefined) {
|
|
32
|
+
return { Push: true, Reason: null };
|
|
33
|
+
}
|
|
34
|
+
const problem = PushWhenError(pushWhen);
|
|
35
|
+
if (problem) {
|
|
36
|
+
throw new Error(problem);
|
|
37
|
+
}
|
|
38
|
+
const variableName = ParseEnvReference(pushWhen)?.VariableName ?? '';
|
|
39
|
+
const value = env[variableName];
|
|
40
|
+
if (value === undefined || value.trim() === '') {
|
|
41
|
+
return { Push: false, Reason: `${variableName} is not set` };
|
|
42
|
+
}
|
|
43
|
+
if (!IsEnvFlagTrue(value)) {
|
|
44
|
+
return { Push: false, Reason: `${variableName} is not true` };
|
|
45
|
+
}
|
|
46
|
+
return { Push: true, Reason: null };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Splits folders into the ones push runs over and the ones their `pushWhen` skips.
|
|
50
|
+
* Keeps the input order.
|
|
51
|
+
* @throws Error naming the config file when it cannot be read, is not a JSON object, or has a malformed `pushWhen`
|
|
52
|
+
*/
|
|
53
|
+
export function FilterByPushWhen(directories, env = process.env) {
|
|
54
|
+
const result = { Included: [], Skipped: [] };
|
|
55
|
+
for (const directory of directories) {
|
|
56
|
+
const configPath = path.join(directory, '.mj-sync.json');
|
|
57
|
+
const decision = decide(configPath, env);
|
|
58
|
+
if (decision.Push) {
|
|
59
|
+
result.Included.push(directory);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
result.Skipped.push({ Directory: directory, Reason: decision.Reason ?? '' });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
function decide(configPath, env) {
|
|
68
|
+
if (!fs.existsSync(configPath)) {
|
|
69
|
+
return { Push: true, Reason: null };
|
|
70
|
+
}
|
|
71
|
+
const config = fs.readJsonSync(configPath);
|
|
72
|
+
if (typeof config !== 'object' || config === null || Array.isArray(config)) {
|
|
73
|
+
throw new Error(`Invalid .mj-sync.json in ${configPath}: expected a JSON object`);
|
|
74
|
+
}
|
|
75
|
+
const pushWhen = config.pushWhen;
|
|
76
|
+
try {
|
|
77
|
+
return EvaluatePushWhen(pushWhen, env);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
81
|
+
throw new Error(`Invalid pushWhen in ${configPath}: ${message}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=push-when.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-when.js","sourceRoot":"","sources":["../../src/lib/push-when.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ export interface FlattenedRecord {
|
|
|
21
21
|
* Independent sibling roots get distinct graphIds and may run in parallel.
|
|
22
22
|
*/
|
|
23
23
|
graphId: string;
|
|
24
|
+
/** The record file this record came from. Set by push for every record of the file. */
|
|
25
|
+
FilePath?: string;
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
26
28
|
* Represents a reverse dependency relationship
|
|
@@ -42,6 +44,13 @@ export interface DependencyAnalysisResult {
|
|
|
42
44
|
dependencyGraph: Map<string, Set<string>>;
|
|
43
45
|
dependencyLevels?: FlattenedRecord[][];
|
|
44
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Depth-first topological order: each record comes after every record it depends on that is in
|
|
49
|
+
* `byId`. Records with no dependencies are started first, then the rest in input order. A cycle is
|
|
50
|
+
* broken where the walk meets it (cycles are reported separately); a dependency missing from `byId`
|
|
51
|
+
* is skipped.
|
|
52
|
+
*/
|
|
53
|
+
export declare function DependencyOrder(records: FlattenedRecord[], byId: ReadonlyMap<string, FlattenedRecord>): FlattenedRecord[];
|
|
45
54
|
/**
|
|
46
55
|
* Analyzes and sorts records based on their dependencies
|
|
47
56
|
*/
|
|
@@ -170,9 +179,9 @@ export declare class RecordDependencyAnalyzer {
|
|
|
170
179
|
*
|
|
171
180
|
* This is simply the reverse of the forward topological sort used for creates.
|
|
172
181
|
*/
|
|
173
|
-
ReverseTopologicalSort(records: FlattenedRecord[]
|
|
182
|
+
ReverseTopologicalSort(records: FlattenedRecord[]): FlattenedRecord[][];
|
|
174
183
|
/** @deprecated Use {@link ReverseTopologicalSort}. */
|
|
175
|
-
reverseTopologicalSort(records: FlattenedRecord[]
|
|
184
|
+
reverseTopologicalSort(records: FlattenedRecord[]): FlattenedRecord[][];
|
|
176
185
|
/**
|
|
177
186
|
* Find all transitive dependents of a set of records
|
|
178
187
|
* This is useful for finding all records that must be deleted when deleting a parent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-dependency-analyzer.d.ts","sourceRoot":"","sources":["../../src/lib/record-dependency-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,UAAU,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"record-dependency-analyzer.d.ts","sourceRoot":"","sources":["../../src/lib/record-dependency-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
import { Metadata } from '@memberjunction/core';
|
|
2
2
|
import { METADATA_KEYWORDS } from '../constants/metadata-keywords.js';
|
|
3
|
+
/**
|
|
4
|
+
* Depth-first topological order: each record comes after every record it depends on that is in
|
|
5
|
+
* `byId`. Records with no dependencies are started first, then the rest in input order. A cycle is
|
|
6
|
+
* broken where the walk meets it (cycles are reported separately); a dependency missing from `byId`
|
|
7
|
+
* is skipped.
|
|
8
|
+
*/
|
|
9
|
+
export function DependencyOrder(records, byId) {
|
|
10
|
+
const result = [];
|
|
11
|
+
const visited = new Set();
|
|
12
|
+
const inProgress = new Set();
|
|
13
|
+
const visit = (recordId) => {
|
|
14
|
+
if (visited.has(recordId) || inProgress.has(recordId)) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const record = byId.get(recordId);
|
|
18
|
+
if (!record) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
inProgress.add(recordId);
|
|
22
|
+
for (const depId of record.dependencies) {
|
|
23
|
+
visit(depId);
|
|
24
|
+
}
|
|
25
|
+
inProgress.delete(recordId);
|
|
26
|
+
visited.add(recordId);
|
|
27
|
+
result.push(record);
|
|
28
|
+
};
|
|
29
|
+
for (const record of records) {
|
|
30
|
+
if (record.dependencies.size === 0) {
|
|
31
|
+
visit(record.id);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const record of records) {
|
|
35
|
+
visit(record.id);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
3
39
|
/**
|
|
4
40
|
* Analyzes and sorts records based on their dependencies
|
|
5
41
|
*/
|
|
@@ -494,46 +530,7 @@ export class RecordDependencyAnalyzer {
|
|
|
494
530
|
* Performs topological sort on the dependency graph
|
|
495
531
|
*/
|
|
496
532
|
topologicalSort() {
|
|
497
|
-
|
|
498
|
-
const visited = new Set();
|
|
499
|
-
const tempStack = new Set();
|
|
500
|
-
const visit = (recordId) => {
|
|
501
|
-
if (tempStack.has(recordId)) {
|
|
502
|
-
// Circular dependency - we've already detected these
|
|
503
|
-
return false;
|
|
504
|
-
}
|
|
505
|
-
if (visited.has(recordId)) {
|
|
506
|
-
return true;
|
|
507
|
-
}
|
|
508
|
-
tempStack.add(recordId);
|
|
509
|
-
const record = this.recordIdMap.get(recordId);
|
|
510
|
-
if (record) {
|
|
511
|
-
// Visit dependencies first
|
|
512
|
-
for (const depId of record.dependencies) {
|
|
513
|
-
visit(depId);
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
tempStack.delete(recordId);
|
|
517
|
-
visited.add(recordId);
|
|
518
|
-
if (record) {
|
|
519
|
-
result.push(record);
|
|
520
|
-
}
|
|
521
|
-
return true;
|
|
522
|
-
};
|
|
523
|
-
// Process all records, starting with those that have no dependencies
|
|
524
|
-
// First, process records with no dependencies
|
|
525
|
-
for (const record of this.flattenedRecords) {
|
|
526
|
-
if (record.dependencies.size === 0 && !visited.has(record.id)) {
|
|
527
|
-
visit(record.id);
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
// Then process any remaining records (handles disconnected components)
|
|
531
|
-
for (const record of this.flattenedRecords) {
|
|
532
|
-
if (!visited.has(record.id)) {
|
|
533
|
-
visit(record.id);
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
return result;
|
|
533
|
+
return DependencyOrder(this.flattenedRecords, this.recordIdMap);
|
|
537
534
|
}
|
|
538
535
|
/**
|
|
539
536
|
* Groups sorted records into dependency levels for parallel processing
|
|
@@ -646,40 +643,20 @@ export class RecordDependencyAnalyzer {
|
|
|
646
643
|
*
|
|
647
644
|
* This is simply the reverse of the forward topological sort used for creates.
|
|
648
645
|
*/
|
|
649
|
-
ReverseTopologicalSort(records
|
|
650
|
-
//
|
|
651
|
-
|
|
652
|
-
//
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
if (depLevel !== undefined && depLevel > maxDependencyLevel) {
|
|
659
|
-
maxDependencyLevel = depLevel;
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
// This record's level is one more than its highest dependency
|
|
663
|
-
const recordLevel = maxDependencyLevel + 1;
|
|
664
|
-
recordLevels.set(record.id, recordLevel);
|
|
665
|
-
}
|
|
666
|
-
// Group records by level
|
|
667
|
-
const forwardLevels = [];
|
|
668
|
-
for (const record of records) {
|
|
669
|
-
const level = recordLevels.get(record.id) || 0;
|
|
670
|
-
if (!forwardLevels[level]) {
|
|
671
|
-
forwardLevels[level] = [];
|
|
672
|
-
}
|
|
673
|
-
forwardLevels[level].push(record);
|
|
674
|
-
}
|
|
675
|
-
// Reverse the array for deletion order
|
|
676
|
-
// Forward level 0 (roots) becomes last to delete
|
|
677
|
-
// Forward level N (leaves) becomes first to delete
|
|
646
|
+
ReverseTopologicalSort(records) {
|
|
647
|
+
// The same DFS order and level grouping the forward sort uses, over only these records: a
|
|
648
|
+
// dependency outside the set has no level, so it is ignored. The DFS visits each record's
|
|
649
|
+
// dependencies before the record, so the levels do not depend on the input order (#4935).
|
|
650
|
+
const byId = new Map(records.map((record) => [record.id, record]));
|
|
651
|
+
const ordered = DependencyOrder(records, byId);
|
|
652
|
+
// A record's level is one more than its highest dependency's, so the levels have no gaps
|
|
653
|
+
const forwardLevels = this.groupByDependencyLevels(ordered, new Map());
|
|
654
|
+
// Forward level 0 (roots) deletes last; the highest level (leaves) deletes first
|
|
678
655
|
return forwardLevels.reverse();
|
|
679
656
|
}
|
|
680
657
|
/** @deprecated Use {@link ReverseTopologicalSort}. */
|
|
681
|
-
reverseTopologicalSort(records
|
|
682
|
-
return this.ReverseTopologicalSort(records
|
|
658
|
+
reverseTopologicalSort(records) {
|
|
659
|
+
return this.ReverseTopologicalSort(records);
|
|
683
660
|
}
|
|
684
661
|
/**
|
|
685
662
|
* Find all transitive dependents of a set of records
|