@contrail/cli 3.4.5 → 3.4.6-alpha.cffb28e
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 +1 -1
- package/dist/commands/groups/import.js +4 -1
- package/dist/commands/load-local/index.js +25 -30
- package/dist/helpers/pipeline/formatters.d.ts +2 -3
- package/dist/helpers/pipeline/formatters.js +63 -63
- package/node_modules/@contrail/entity-compare/CHANGELOG.md +13 -0
- package/node_modules/@contrail/entity-compare/README.md +0 -0
- package/node_modules/@contrail/entity-compare/lib/entity-compare/entity-compare.client.d.ts +36 -0
- package/node_modules/@contrail/entity-compare/lib/entity-compare/entity-compare.client.js +118 -0
- package/node_modules/@contrail/entity-compare/lib/entity-compare/index.d.ts +1 -0
- package/node_modules/@contrail/entity-compare/lib/entity-compare/index.js +17 -0
- package/node_modules/@contrail/entity-compare/lib/entity-compare/mockData.d.ts +11 -0
- package/node_modules/@contrail/entity-compare/lib/entity-compare/mockData.js +99 -0
- package/node_modules/@contrail/entity-compare/lib/index.d.ts +1 -0
- package/node_modules/@contrail/entity-compare/lib/index.js +17 -0
- package/node_modules/@contrail/entity-compare/package.json +45 -0
- package/node_modules/@contrail/loader/lib/__mocks__/@contrail/cache.d.ts +2 -0
- package/node_modules/@contrail/loader/lib/__mocks__/@contrail/cache.js +18 -0
- package/node_modules/@contrail/loader/lib/base-processor.d.ts +17 -0
- package/node_modules/@contrail/loader/lib/base-processor.js +26 -0
- package/node_modules/@contrail/loader/lib/color-processor.d.ts +19 -0
- package/node_modules/@contrail/loader/lib/color-processor.js +76 -0
- package/node_modules/@contrail/loader/lib/color-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/color-processor.spec.js +307 -0
- package/node_modules/@contrail/loader/lib/common/conditional-columns.d.ts +16 -0
- package/node_modules/@contrail/loader/lib/common/conditional-columns.js +84 -0
- package/node_modules/@contrail/loader/lib/common/conditional-columns.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/conditional-columns.spec.js +644 -0
- package/node_modules/@contrail/loader/lib/common/constants.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/constants.js +4 -0
- package/node_modules/@contrail/loader/lib/common/csv-file-helper.d.ts +6 -0
- package/node_modules/@contrail/loader/lib/common/csv-file-helper.js +66 -0
- package/node_modules/@contrail/loader/lib/common/csv-file-helper.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/csv-file-helper.spec.js +34 -0
- package/node_modules/@contrail/loader/lib/common/data-transformer-functions.d.ts +32 -0
- package/node_modules/@contrail/loader/lib/common/data-transformer-functions.js +309 -0
- package/node_modules/@contrail/loader/lib/common/data-transformer.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/data-transformer.spec.js +744 -0
- package/node_modules/@contrail/loader/lib/common/entities-helper.d.ts +33 -0
- package/node_modules/@contrail/loader/lib/common/entities-helper.js +300 -0
- package/node_modules/@contrail/loader/lib/common/entities-helper.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/entities-helper.spec.js +287 -0
- package/node_modules/@contrail/loader/lib/common/entity-builder-helpers.d.ts +6 -0
- package/node_modules/@contrail/loader/lib/common/entity-builder-helpers.js +114 -0
- package/node_modules/@contrail/loader/lib/common/entity-builder-helpers.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/entity-builder-helpers.spec.js +137 -0
- package/node_modules/@contrail/loader/lib/common/file-helper.d.ts +3 -0
- package/node_modules/@contrail/loader/lib/common/file-helper.js +37 -0
- package/node_modules/@contrail/loader/lib/common/file-helper.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/file-helper.spec.js +65 -0
- package/node_modules/@contrail/loader/lib/common/size-range-helpers.d.ts +42 -0
- package/node_modules/@contrail/loader/lib/common/size-range-helpers.js +162 -0
- package/node_modules/@contrail/loader/lib/common/size-range-helpers.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/size-range-helpers.spec.js +320 -0
- package/node_modules/@contrail/loader/lib/common/type-helper.d.ts +18 -0
- package/node_modules/@contrail/loader/lib/common/type-helper.js +232 -0
- package/node_modules/@contrail/loader/lib/common/type-helper.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/type-helper.spec.js +110 -0
- package/node_modules/@contrail/loader/lib/common/util.d.ts +11 -0
- package/node_modules/@contrail/loader/lib/common/util.js +85 -0
- package/node_modules/@contrail/loader/lib/common/util.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/common/util.spec.js +109 -0
- package/node_modules/@contrail/loader/lib/constants.d.ts +29 -0
- package/node_modules/@contrail/loader/lib/constants.js +32 -0
- package/node_modules/@contrail/loader/lib/custom-entity-processor.d.ts +20 -0
- package/node_modules/@contrail/loader/lib/custom-entity-processor.js +59 -0
- package/node_modules/@contrail/loader/lib/custom-entity-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/custom-entity-processor.spec.js +161 -0
- package/node_modules/@contrail/loader/lib/entities-v2/base-processor-v2.d.ts +27 -0
- package/node_modules/@contrail/loader/lib/entities-v2/base-processor-v2.js +55 -0
- package/node_modules/@contrail/loader/lib/entities-v2/colors-v2/color-processor-v2.d.ts +19 -0
- package/node_modules/@contrail/loader/lib/entities-v2/colors-v2/color-processor-v2.js +92 -0
- package/node_modules/@contrail/loader/lib/entities-v2/colors-v2/color-processor-v2.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/colors-v2/color-processor-v2.spec.js +456 -0
- package/node_modules/@contrail/loader/lib/entities-v2/custom-entities-v2/custom-entity-processor-v2.d.ts +20 -0
- package/node_modules/@contrail/loader/lib/entities-v2/custom-entities-v2/custom-entity-processor-v2.js +75 -0
- package/node_modules/@contrail/loader/lib/entities-v2/custom-entities-v2/custom-entity-processor-v2.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/custom-entities-v2/custom-entity-processor-v2.spec.js +211 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entities-helper.d.ts +33 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entities-helper.js +298 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entities-helper.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entities-helper.spec.js +137 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entity-processor-v2.d.ts +36 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entity-processor-v2.js +316 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entity-processor-v2.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/entity-processor-v2.spec.js +973 -0
- package/node_modules/@contrail/loader/lib/entities-v2/file-preprocessor-v2.d.ts +40 -0
- package/node_modules/@contrail/loader/lib/entities-v2/file-preprocessor-v2.js +276 -0
- package/node_modules/@contrail/loader/lib/entities-v2/file-preprocessor-v2.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/file-preprocessor-v2.spec.js +161 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/assortment-processor.d.ts +49 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/assortment-processor.js +388 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/assortment-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/assortment-processor.spec.js +411 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-helper.d.ts +20 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-helper.js +193 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-helper.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-helper.spec.js +190 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-processor.d.ts +37 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-processor.js +271 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/item-processor.spec.js +654 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/partial-assortment-processor.d.ts +35 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/partial-assortment-processor.js +242 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/partial-assortment-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/partial-assortment-processor.spec.js +167 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/project-item-processor.d.ts +20 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/project-item-processor.js +104 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/project-item-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entities-v2/linesheet-v2/project-item-processor.spec.js +172 -0
- package/node_modules/@contrail/loader/lib/entity-processor.d.ts +34 -0
- package/node_modules/@contrail/loader/lib/entity-processor.js +214 -0
- package/node_modules/@contrail/loader/lib/entity-processor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/entity-processor.spec.js +693 -0
- package/node_modules/@contrail/loader/lib/file-preprocessor.d.ts +31 -0
- package/node_modules/@contrail/loader/lib/file-preprocessor.js +212 -0
- package/node_modules/@contrail/loader/lib/file-preprocessor.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/file-preprocessor.spec.js +151 -0
- package/node_modules/@contrail/loader/lib/index.d.ts +9 -941
- package/node_modules/@contrail/loader/lib/index.js +25 -12492
- package/node_modules/@contrail/loader/lib/mockData.d.ts +36 -0
- package/node_modules/@contrail/loader/lib/mockData.js +209 -0
- package/node_modules/@contrail/loader/lib/pipeline/assortment-execute-helpers.d.ts +9 -0
- package/node_modules/@contrail/loader/lib/pipeline/assortment-execute-helpers.js +226 -0
- package/node_modules/@contrail/loader/lib/pipeline/assortment-execute-helpers.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/assortment-execute-helpers.spec.js +305 -0
- package/node_modules/@contrail/loader/lib/pipeline/coerce-values-by-type.d.ts +7 -0
- package/node_modules/@contrail/loader/lib/pipeline/coerce-values-by-type.js +133 -0
- package/node_modules/@contrail/loader/lib/pipeline/execute-multi-type.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/execute-multi-type.spec.js +454 -0
- package/node_modules/@contrail/loader/lib/pipeline/execute.d.ts +3 -0
- package/node_modules/@contrail/loader/lib/pipeline/execute.js +271 -0
- package/node_modules/@contrail/loader/lib/pipeline/execute.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/execute.spec.js +186 -0
- package/node_modules/@contrail/loader/lib/pipeline/index.d.ts +7 -0
- package/node_modules/@contrail/loader/lib/pipeline/index.js +29 -0
- package/node_modules/@contrail/loader/lib/pipeline/item-execute-helpers.d.ts +38 -0
- package/node_modules/@contrail/loader/lib/pipeline/item-execute-helpers.js +517 -0
- package/node_modules/@contrail/loader/lib/pipeline/item-execute-helpers.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/item-execute-helpers.spec.js +170 -0
- package/node_modules/@contrail/loader/lib/pipeline/loader-pipeline.d.ts +10 -0
- package/node_modules/@contrail/loader/lib/pipeline/loader-pipeline.js +26 -0
- package/node_modules/@contrail/loader/lib/pipeline/loader-pipeline.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/loader-pipeline.spec.js +125 -0
- package/node_modules/@contrail/loader/lib/pipeline/preview.d.ts +3 -0
- package/node_modules/@contrail/loader/lib/pipeline/preview.js +219 -0
- package/node_modules/@contrail/loader/lib/pipeline/preview.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/preview.spec.js +155 -0
- package/node_modules/@contrail/loader/lib/pipeline/project-item-execute-helpers.d.ts +5 -0
- package/node_modules/@contrail/loader/lib/pipeline/project-item-execute-helpers.js +580 -0
- package/node_modules/@contrail/loader/lib/pipeline/transform.d.ts +3 -0
- package/node_modules/@contrail/loader/lib/pipeline/transform.js +356 -0
- package/node_modules/@contrail/loader/lib/pipeline/transform.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/transform.spec.js +442 -0
- package/node_modules/@contrail/loader/lib/pipeline/types.d.ts +251 -0
- package/node_modules/@contrail/loader/lib/pipeline/types.js +140 -0
- package/node_modules/@contrail/loader/lib/pipeline/validate.d.ts +2 -0
- package/node_modules/@contrail/loader/lib/pipeline/validate.js +1217 -0
- package/node_modules/@contrail/loader/lib/pipeline/validate.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/pipeline/validate.spec.js +1214 -0
- package/node_modules/@contrail/loader/lib/processor-registry.d.ts +3 -0
- package/node_modules/@contrail/loader/lib/processor-registry.js +53 -0
- package/node_modules/@contrail/loader/lib/processor-registry.spec.d.ts +1 -0
- package/node_modules/@contrail/loader/lib/processor-registry.spec.js +8 -0
- package/node_modules/@contrail/loader/package.json +9 -11
- package/node_modules/@contrail/telemetry/CHANGELOG.md +24 -0
- package/node_modules/@contrail/telemetry/README.md +1 -0
- package/node_modules/@contrail/telemetry/lib/index.d.ts +1 -0
- package/node_modules/@contrail/telemetry/lib/index.js +17 -0
- package/node_modules/@contrail/telemetry/lib/logger/index.d.ts +3 -0
- package/node_modules/@contrail/telemetry/lib/logger/index.js +30 -0
- package/node_modules/@contrail/telemetry/package.json +44 -0
- package/node_modules/@pinojs/redact/.github/dependabot.yml +13 -0
- package/node_modules/@pinojs/redact/.github/workflows/ci.yml +48 -0
- package/node_modules/@pinojs/redact/.github/workflows/publish-release.yml +43 -0
- package/node_modules/@pinojs/redact/LICENSE +21 -0
- package/node_modules/@pinojs/redact/README.md +350 -0
- package/node_modules/@pinojs/redact/benchmarks/basic.js +184 -0
- package/node_modules/@pinojs/redact/eslint.config.js +1 -0
- package/node_modules/@pinojs/redact/index.d.ts +52 -0
- package/node_modules/@pinojs/redact/index.js +529 -0
- package/node_modules/@pinojs/redact/index.test-d.ts +22 -0
- package/node_modules/@pinojs/redact/package.json +37 -0
- package/node_modules/@pinojs/redact/scripts/sync-version.mjs +20 -0
- package/node_modules/@pinojs/redact/test/actual-redact-comparison.test.js +211 -0
- package/node_modules/@pinojs/redact/test/index.test.js +824 -0
- package/node_modules/@pinojs/redact/test/integration.test.js +390 -0
- package/node_modules/@pinojs/redact/test/multiple-wildcards.test.js +227 -0
- package/node_modules/@pinojs/redact/test/prototype-pollution.test.js +223 -0
- package/node_modules/@pinojs/redact/test/selective-clone.test.js +115 -0
- package/node_modules/@pinojs/redact/tsconfig.json +19 -0
- package/node_modules/atomic-sleep/.travis.yml +11 -0
- package/node_modules/atomic-sleep/LICENSE +22 -0
- package/node_modules/atomic-sleep/index.js +38 -0
- package/node_modules/atomic-sleep/package.json +37 -0
- package/node_modules/atomic-sleep/readme.md +58 -0
- package/node_modules/atomic-sleep/test.js +47 -0
- package/node_modules/on-exit-leak-free/.github/dependabot.yml +12 -0
- package/node_modules/on-exit-leak-free/.github/workflows/ci.yml +46 -0
- package/node_modules/on-exit-leak-free/LICENSE +21 -0
- package/node_modules/on-exit-leak-free/README.md +54 -0
- package/node_modules/on-exit-leak-free/index.js +108 -0
- package/node_modules/on-exit-leak-free/package.json +37 -0
- package/node_modules/on-exit-leak-free/test/base.test.js +30 -0
- package/node_modules/on-exit-leak-free/test/event-emitter-leak.test.js +23 -0
- package/node_modules/on-exit-leak-free/test/fixtures/beforeExit.js +33 -0
- package/node_modules/on-exit-leak-free/test/fixtures/close.js +21 -0
- package/node_modules/on-exit-leak-free/test/fixtures/gc-not-close.js +24 -0
- package/node_modules/on-exit-leak-free/test/fixtures/unregister.js +24 -0
- package/node_modules/pino/.nojekyll +0 -0
- package/node_modules/pino/.prettierignore +1 -0
- package/node_modules/pino/CNAME +1 -0
- package/node_modules/pino/CONTRIBUTING.md +30 -0
- package/node_modules/pino/LICENSE +21 -0
- package/node_modules/pino/README.md +177 -0
- package/node_modules/pino/SECURITY.md +87 -0
- package/node_modules/pino/benchmarks/basic.bench.js +95 -0
- package/node_modules/pino/benchmarks/child-child.bench.js +52 -0
- package/node_modules/pino/benchmarks/child-creation.bench.js +73 -0
- package/node_modules/pino/benchmarks/child.bench.js +62 -0
- package/node_modules/pino/benchmarks/deep-object.bench.js +88 -0
- package/node_modules/pino/benchmarks/formatters.bench.js +50 -0
- package/node_modules/pino/benchmarks/internal/custom-levels.js +67 -0
- package/node_modules/pino/benchmarks/internal/just-pino-heavy.bench.js +76 -0
- package/node_modules/pino/benchmarks/internal/just-pino.bench.js +182 -0
- package/node_modules/pino/benchmarks/internal/parent-vs-child.bench.js +75 -0
- package/node_modules/pino/benchmarks/internal/redact.bench.js +86 -0
- package/node_modules/pino/benchmarks/long-string.bench.js +81 -0
- package/node_modules/pino/benchmarks/multi-arg.bench.js +193 -0
- package/node_modules/pino/benchmarks/multistream.js +98 -0
- package/node_modules/pino/benchmarks/object.bench.js +82 -0
- package/node_modules/pino/benchmarks/utils/generate-benchmark-doc.js +36 -0
- package/node_modules/pino/benchmarks/utils/runbench.js +138 -0
- package/node_modules/pino/benchmarks/utils/wrap-log-level.js +55 -0
- package/node_modules/pino/bin.js +6 -0
- package/node_modules/pino/browser.js +547 -0
- package/node_modules/pino/build/sync-version.js +25 -0
- package/node_modules/pino/docs/api.md +1593 -0
- package/node_modules/pino/docs/asynchronous.md +40 -0
- package/node_modules/pino/docs/benchmarks.md +55 -0
- package/node_modules/pino/docs/browser.md +278 -0
- package/node_modules/pino/docs/bundling.md +40 -0
- package/node_modules/pino/docs/child-loggers.md +95 -0
- package/node_modules/pino/docs/diagnostics.md +16 -0
- package/node_modules/pino/docs/ecosystem.md +86 -0
- package/node_modules/pino/docs/help.md +345 -0
- package/node_modules/pino/docs/lts.md +64 -0
- package/node_modules/pino/docs/pretty.md +35 -0
- package/node_modules/pino/docs/redaction.md +135 -0
- package/node_modules/pino/docs/transports.md +1376 -0
- package/node_modules/pino/docs/web.md +309 -0
- package/node_modules/pino/eslint.config.js +28 -0
- package/node_modules/pino/examples/basic.js +43 -0
- package/node_modules/pino/examples/transport.js +68 -0
- package/node_modules/pino/favicon.ico +0 -0
- package/node_modules/pino/file.js +12 -0
- package/node_modules/pino/inc-version.sh +42 -0
- package/node_modules/pino/index.html +55 -0
- package/node_modules/pino/lib/caller.js +30 -0
- package/node_modules/pino/lib/constants.js +28 -0
- package/node_modules/pino/lib/deprecations.js +8 -0
- package/node_modules/pino/lib/levels.js +241 -0
- package/node_modules/pino/lib/meta.js +3 -0
- package/node_modules/pino/lib/multistream.js +203 -0
- package/node_modules/pino/lib/proto.js +256 -0
- package/node_modules/pino/lib/redaction.js +114 -0
- package/node_modules/pino/lib/symbols.js +74 -0
- package/node_modules/pino/lib/time.js +39 -0
- package/node_modules/pino/lib/tools.js +427 -0
- package/node_modules/pino/lib/transport-stream.js +56 -0
- package/node_modules/pino/lib/transport.js +289 -0
- package/node_modules/pino/lib/worker.js +194 -0
- package/node_modules/pino/package.json +120 -0
- package/node_modules/pino/pino.d.ts +908 -0
- package/node_modules/pino/pino.js +234 -0
- package/node_modules/pino/test/basic.test.js +886 -0
- package/node_modules/pino/test/broken-pipe.test.js +59 -0
- package/node_modules/pino/test/browser-child.test.js +132 -0
- package/node_modules/pino/test/browser-disabled.test.js +87 -0
- package/node_modules/pino/test/browser-early-console-freeze.test.js +12 -0
- package/node_modules/pino/test/browser-is-level-enabled.test.js +101 -0
- package/node_modules/pino/test/browser-levels.test.js +241 -0
- package/node_modules/pino/test/browser-serializers.test.js +352 -0
- package/node_modules/pino/test/browser-timestamp.test.js +88 -0
- package/node_modules/pino/test/browser-transmit.test.js +417 -0
- package/node_modules/pino/test/browser.test.js +698 -0
- package/node_modules/pino/test/complex-objects.test.js +36 -0
- package/node_modules/pino/test/crlf.test.js +34 -0
- package/node_modules/pino/test/custom-levels.test.js +267 -0
- package/node_modules/pino/test/diagnostics.test.js +107 -0
- package/node_modules/pino/test/error-key.test.js +37 -0
- package/node_modules/pino/test/error.test.js +403 -0
- package/node_modules/pino/test/escaping.test.js +93 -0
- package/node_modules/pino/test/esm/esm.mjs +14 -0
- package/node_modules/pino/test/esm/index.test.js +21 -0
- package/node_modules/pino/test/esm/named-exports.mjs +29 -0
- package/node_modules/pino/test/exit.test.js +79 -0
- package/node_modules/pino/test/fixtures/broken-pipe/basic.js +9 -0
- package/node_modules/pino/test/fixtures/broken-pipe/destination.js +10 -0
- package/node_modules/pino/test/fixtures/broken-pipe/syncfalse.js +12 -0
- package/node_modules/pino/test/fixtures/console-transport.js +13 -0
- package/node_modules/pino/test/fixtures/crashing-transport.js +13 -0
- package/node_modules/pino/test/fixtures/default-exit.js +8 -0
- package/node_modules/pino/test/fixtures/destination-exit.js +8 -0
- package/node_modules/pino/test/fixtures/eval/index.js +13 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/14-files.js +3 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/2-files.js +3 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file1.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file10.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file11.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file12.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file13.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file14.js +11 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file2.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file3.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file4.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file5.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file6.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file7.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file8.js +5 -0
- package/node_modules/pino/test/fixtures/eval/node_modules/file9.js +5 -0
- package/node_modules/pino/test/fixtures/noop-transport.js +10 -0
- package/node_modules/pino/test/fixtures/pretty/null-prototype.js +8 -0
- package/node_modules/pino/test/fixtures/stdout-hack-protection.js +11 -0
- package/node_modules/pino/test/fixtures/syncfalse-child.js +6 -0
- package/node_modules/pino/test/fixtures/syncfalse-exit.js +9 -0
- package/node_modules/pino/test/fixtures/syncfalse-flush-exit.js +10 -0
- package/node_modules/pino/test/fixtures/syncfalse.js +6 -0
- package/node_modules/pino/test/fixtures/syntax-error-esm.mjs +2 -0
- package/node_modules/pino/test/fixtures/to-file-transport-with-transform.js +20 -0
- package/node_modules/pino/test/fixtures/to-file-transport.js +13 -0
- package/node_modules/pino/test/fixtures/to-file-transport.mjs +8 -0
- package/node_modules/pino/test/fixtures/transport/index.js +12 -0
- package/node_modules/pino/test/fixtures/transport/package.json +5 -0
- package/node_modules/pino/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
- package/node_modules/pino/test/fixtures/transport-exit-immediately.js +11 -0
- package/node_modules/pino/test/fixtures/transport-exit-on-ready.js +12 -0
- package/node_modules/pino/test/fixtures/transport-invalid-node-options.js +26 -0
- package/node_modules/pino/test/fixtures/transport-main.js +9 -0
- package/node_modules/pino/test/fixtures/transport-many-lines.js +29 -0
- package/node_modules/pino/test/fixtures/transport-preload-main.mjs +13 -0
- package/node_modules/pino/test/fixtures/transport-preload.mjs +13 -0
- package/node_modules/pino/test/fixtures/transport-string-stdout.js +9 -0
- package/node_modules/pino/test/fixtures/transport-transform.js +21 -0
- package/node_modules/pino/test/fixtures/transport-uses-pino-config.js +33 -0
- package/node_modules/pino/test/fixtures/transport-with-on-exit.js +12 -0
- package/node_modules/pino/test/fixtures/transport-worker-data.js +19 -0
- package/node_modules/pino/test/fixtures/transport-worker-name.js +24 -0
- package/node_modules/pino/test/fixtures/transport-worker.js +15 -0
- package/node_modules/pino/test/fixtures/transport-wrong-export-type.js +3 -0
- package/node_modules/pino/test/fixtures/ts/to-file-transport-native.mts +15 -0
- package/node_modules/pino/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
- package/node_modules/pino/test/fixtures/ts/to-file-transport.ts +11 -0
- package/node_modules/pino/test/fixtures/ts/transpile.cjs +36 -0
- package/node_modules/pino/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
- package/node_modules/pino/test/fixtures/ts/transport-exit-immediately.ts +10 -0
- package/node_modules/pino/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
- package/node_modules/pino/test/fixtures/ts/transport-main.ts +8 -0
- package/node_modules/pino/test/fixtures/ts/transport-string-stdout.ts +8 -0
- package/node_modules/pino/test/fixtures/ts/transport-worker.ts +14 -0
- package/node_modules/pino/test/formatters.test.js +364 -0
- package/node_modules/pino/test/helper.d.ts +4 -0
- package/node_modules/pino/test/helper.js +155 -0
- package/node_modules/pino/test/hooks.test.js +114 -0
- package/node_modules/pino/test/http.test.js +214 -0
- package/node_modules/pino/test/internals/version.test.js +17 -0
- package/node_modules/pino/test/is-level-enabled.test.js +179 -0
- package/node_modules/pino/test/jest/basic.spec.js +10 -0
- package/node_modules/pino/test/levels.test.js +810 -0
- package/node_modules/pino/test/metadata.test.js +120 -0
- package/node_modules/pino/test/mixin-merge-strategy.test.js +57 -0
- package/node_modules/pino/test/mixin.test.js +241 -0
- package/node_modules/pino/test/multistream.test.js +729 -0
- package/node_modules/pino/test/redact.test.js +893 -0
- package/node_modules/pino/test/serializers.test.js +257 -0
- package/node_modules/pino/test/stdout-protection.test.js +41 -0
- package/node_modules/pino/test/syncfalse.test.js +186 -0
- package/node_modules/pino/test/timestamp-nano.test.js +37 -0
- package/node_modules/pino/test/timestamp.test.js +124 -0
- package/node_modules/pino/test/transport/big.test.js +42 -0
- package/node_modules/pino/test/transport/bundlers-support.test.js +99 -0
- package/node_modules/pino/test/transport/caller.test.js +24 -0
- package/node_modules/pino/test/transport/core.test.js +733 -0
- package/node_modules/pino/test/transport/core.transpiled.test.ts +114 -0
- package/node_modules/pino/test/transport/crash.test.js +36 -0
- package/node_modules/pino/test/transport/module-link.test.js +241 -0
- package/node_modules/pino/test/transport/native-type-stripping.test.mjs +151 -0
- package/node_modules/pino/test/transport/node-options.test.js +116 -0
- package/node_modules/pino/test/transport/pipeline.test.js +137 -0
- package/node_modules/pino/test/transport/preload.test.js +54 -0
- package/node_modules/pino/test/transport/repl.test.js +15 -0
- package/node_modules/pino/test/transport/sync-false.test.js +67 -0
- package/node_modules/pino/test/transport/sync-true.test.js +57 -0
- package/node_modules/pino/test/transport/targets.test.js +48 -0
- package/node_modules/pino/test/transport/uses-pino-config.test.js +166 -0
- package/node_modules/pino/test/transport-stream.test.js +40 -0
- package/node_modules/pino/test/types/pino-import.test-d.cts +30 -0
- package/node_modules/pino/test/types/pino-multistream.test-d.ts +28 -0
- package/node_modules/pino/test/types/pino-top-export.test-d.ts +34 -0
- package/node_modules/pino/test/types/pino-transport.test-d.ts +156 -0
- package/node_modules/pino/test/types/pino-type-only.test-d.ts +75 -0
- package/node_modules/pino/test/types/pino.test-d.ts +683 -0
- package/node_modules/pino/test/types/pino.ts +91 -0
- package/node_modules/pino/tsconfig.json +14 -0
- package/node_modules/pino-abstract-transport/.github/dependabot.yml +13 -0
- package/node_modules/pino-abstract-transport/.github/workflows/ci.yml +80 -0
- package/node_modules/pino-abstract-transport/.husky/pre-commit +4 -0
- package/node_modules/pino-abstract-transport/LICENSE +21 -0
- package/node_modules/pino-abstract-transport/README.md +171 -0
- package/node_modules/pino-abstract-transport/index.d.ts +122 -0
- package/node_modules/pino-abstract-transport/index.js +128 -0
- package/node_modules/pino-abstract-transport/package.json +41 -0
- package/node_modules/pino-abstract-transport/test/base.test.js +473 -0
- package/node_modules/pino-abstract-transport/test/fixtures/transport-async-iteration.js +22 -0
- package/node_modules/pino-abstract-transport/test/fixtures/transport-on-data.js +22 -0
- package/node_modules/pino-abstract-transport/test/fixtures/transport-transform.js +24 -0
- package/node_modules/pino-abstract-transport/test/fixtures/worker-pipeline.js +15 -0
- package/node_modules/pino-abstract-transport/test/match.js +24 -0
- package/node_modules/pino-abstract-transport/test/types/index.test-d.ts +31 -0
- package/node_modules/pino-abstract-transport/test/worker.test.js +372 -0
- package/node_modules/pino-std-serializers/.editorconfig +13 -0
- package/node_modules/pino-std-serializers/.github/dependabot.yml +13 -0
- package/node_modules/pino-std-serializers/.github/workflows/ci.yml +81 -0
- package/node_modules/pino-std-serializers/LICENSE +7 -0
- package/node_modules/pino-std-serializers/Readme.md +182 -0
- package/node_modules/pino-std-serializers/eslint.config.js +7 -0
- package/node_modules/pino-std-serializers/index.d.ts +145 -0
- package/node_modules/pino-std-serializers/index.js +36 -0
- package/node_modules/pino-std-serializers/lib/err-helpers.js +118 -0
- package/node_modules/pino-std-serializers/lib/err-proto.js +48 -0
- package/node_modules/pino-std-serializers/lib/err-with-cause.js +48 -0
- package/node_modules/pino-std-serializers/lib/err.js +45 -0
- package/node_modules/pino-std-serializers/lib/req.js +100 -0
- package/node_modules/pino-std-serializers/lib/res.js +47 -0
- package/node_modules/pino-std-serializers/package.json +42 -0
- package/node_modules/pino-std-serializers/test/err-with-cause.test.js +187 -0
- package/node_modules/pino-std-serializers/test/err.test.js +200 -0
- package/node_modules/pino-std-serializers/test/req.test.js +477 -0
- package/node_modules/pino-std-serializers/test/res.test.js +120 -0
- package/node_modules/pino-std-serializers/test/types/index.test-d.ts +71 -0
- package/node_modules/pino-std-serializers/tsconfig.json +13 -0
- package/node_modules/process-warning/.gitattributes +2 -0
- package/node_modules/process-warning/.github/dependabot.yml +13 -0
- package/node_modules/process-warning/.github/workflows/ci.yml +22 -0
- package/node_modules/process-warning/LICENSE +21 -0
- package/node_modules/process-warning/README.md +118 -0
- package/node_modules/process-warning/benchmarks/warn.js +25 -0
- package/node_modules/process-warning/eslint.config.js +6 -0
- package/node_modules/process-warning/examples/example.js +11 -0
- package/node_modules/process-warning/index.js +124 -0
- package/node_modules/process-warning/package.json +73 -0
- package/node_modules/process-warning/test/emit-interpolated-string.test.js +34 -0
- package/node_modules/process-warning/test/emit-once-only.test.js +33 -0
- package/node_modules/process-warning/test/emit-reset.test.js +40 -0
- package/node_modules/process-warning/test/emit-set.test.js +35 -0
- package/node_modules/process-warning/test/emit-unlimited.test.js +42 -0
- package/node_modules/process-warning/test/index.test.js +99 -0
- package/node_modules/process-warning/test/issue-88.test.js +38 -0
- package/node_modules/process-warning/test/jest.test.js +24 -0
- package/node_modules/process-warning/test/no-warnings.test.js +80 -0
- package/node_modules/process-warning/test/promise.js +10 -0
- package/node_modules/process-warning/types/index.d.ts +37 -0
- package/node_modules/process-warning/types/index.test-d.ts +36 -0
- package/node_modules/quick-format-unescaped/.github/workflows/ci.yml +21 -0
- package/node_modules/quick-format-unescaped/LICENSE +21 -0
- package/node_modules/quick-format-unescaped/benchmark.js +24 -0
- package/node_modules/quick-format-unescaped/index.js +109 -0
- package/node_modules/quick-format-unescaped/package.json +29 -0
- package/node_modules/quick-format-unescaped/readme.md +66 -0
- package/node_modules/quick-format-unescaped/test/index.js +136 -0
- package/node_modules/real-require/LICENSE.md +21 -0
- package/node_modules/real-require/README.md +51 -0
- package/node_modules/real-require/package.json +49 -0
- package/node_modules/real-require/src/index.js +14 -0
- package/node_modules/safe-stable-stringify/LICENSE +21 -0
- package/node_modules/safe-stable-stringify/esm/package.json +4 -0
- package/node_modules/safe-stable-stringify/esm/wrapper.d.ts +4 -0
- package/node_modules/safe-stable-stringify/esm/wrapper.js +6 -0
- package/node_modules/safe-stable-stringify/index.d.ts +22 -0
- package/node_modules/safe-stable-stringify/index.js +612 -0
- package/node_modules/safe-stable-stringify/package.json +65 -0
- package/node_modules/safe-stable-stringify/readme.md +177 -0
- package/node_modules/sonic-boom/.eslintignore +2 -0
- package/node_modules/sonic-boom/.taprc +3 -0
- package/node_modules/sonic-boom/LICENSE +21 -0
- package/node_modules/sonic-boom/README.md +153 -0
- package/node_modules/sonic-boom/bench.js +98 -0
- package/node_modules/sonic-boom/check.js +18 -0
- package/node_modules/sonic-boom/example.js +8 -0
- package/node_modules/sonic-boom/fixtures/firehose.js +22 -0
- package/node_modules/sonic-boom/index.js +733 -0
- package/node_modules/sonic-boom/package.json +52 -0
- package/node_modules/sonic-boom/test/destroy.test.js +49 -0
- package/node_modules/sonic-boom/test/end.test.js +98 -0
- package/node_modules/sonic-boom/test/flush-sync.test.js +140 -0
- package/node_modules/sonic-boom/test/flush.test.js +419 -0
- package/node_modules/sonic-boom/test/fsync.test.js +63 -0
- package/node_modules/sonic-boom/test/helper.js +42 -0
- package/node_modules/sonic-boom/test/minlength.test.js +35 -0
- package/node_modules/sonic-boom/test/mode.test.js +116 -0
- package/node_modules/sonic-boom/test/periodicflush.test.js +61 -0
- package/node_modules/sonic-boom/test/reopen.test.js +239 -0
- package/node_modules/sonic-boom/test/retry.test.js +414 -0
- package/node_modules/sonic-boom/test/sync.test.js +261 -0
- package/node_modules/sonic-boom/test/write.test.js +515 -0
- package/node_modules/sonic-boom/types/index.d.ts +63 -0
- package/node_modules/sonic-boom/types/tests/test.ts +4 -0
- package/node_modules/split2/LICENSE +13 -0
- package/node_modules/split2/README.md +85 -0
- package/node_modules/split2/bench.js +27 -0
- package/node_modules/split2/index.js +141 -0
- package/node_modules/split2/package.json +39 -0
- package/node_modules/split2/test.js +409 -0
- package/node_modules/thread-stream/.github/dependabot.yml +13 -0
- package/node_modules/thread-stream/.github/workflows/ci.yml +74 -0
- package/node_modules/thread-stream/.husky/pre-commit +4 -0
- package/node_modules/thread-stream/CLAUDE.md +53 -0
- package/node_modules/thread-stream/LICENSE +21 -0
- package/node_modules/thread-stream/README.md +135 -0
- package/node_modules/thread-stream/bench.js +85 -0
- package/node_modules/thread-stream/eslint.config.js +10 -0
- package/node_modules/thread-stream/index.d.ts +92 -0
- package/node_modules/thread-stream/index.js +541 -0
- package/node_modules/thread-stream/lib/indexes.js +9 -0
- package/node_modules/thread-stream/lib/wait.js +68 -0
- package/node_modules/thread-stream/lib/worker.js +179 -0
- package/node_modules/thread-stream/package.json +52 -0
- package/node_modules/thread-stream/test/base.test.js +259 -0
- package/node_modules/thread-stream/test/bench.test.js +38 -0
- package/node_modules/thread-stream/test/bundlers.test.js +59 -0
- package/node_modules/thread-stream/test/close-on-gc.js +37 -0
- package/node_modules/thread-stream/test/commonjs-fallback.test.js +75 -0
- package/node_modules/thread-stream/test/context.test.js +21 -0
- package/node_modules/thread-stream/test/create-and-exit.js +16 -0
- package/node_modules/thread-stream/test/custom-worker.js +9 -0
- package/node_modules/thread-stream/test/dir with spaces/test-package.zip +0 -0
- package/node_modules/thread-stream/test/emit-event.js +22 -0
- package/node_modules/thread-stream/test/end.test.js +56 -0
- package/node_modules/thread-stream/test/error.js +14 -0
- package/node_modules/thread-stream/test/esm.test.mjs +46 -0
- package/node_modules/thread-stream/test/event.test.js +24 -0
- package/node_modules/thread-stream/test/exit.js +14 -0
- package/node_modules/thread-stream/test/get-context.js +22 -0
- package/node_modules/thread-stream/test/helper.d.ts +1 -0
- package/node_modules/thread-stream/test/helper.js +26 -0
- package/node_modules/thread-stream/test/indexes.test.js +11 -0
- package/node_modules/thread-stream/test/multibyte-chars.test.mjs +75 -0
- package/node_modules/thread-stream/test/on-message.js +18 -0
- package/node_modules/thread-stream/test/pkg/index.js +37 -0
- package/node_modules/thread-stream/test/pkg/pkg.config.json +14 -0
- package/node_modules/thread-stream/test/pkg/pkg.test.js +45 -0
- package/node_modules/thread-stream/test/port.js +16 -0
- package/node_modules/thread-stream/test/post-message.test.js +23 -0
- package/node_modules/thread-stream/test/string-limit-2.test.js +35 -0
- package/node_modules/thread-stream/test/string-limit.test.js +37 -0
- package/node_modules/thread-stream/test/syntax-error.mjs +2 -0
- package/node_modules/thread-stream/test/thread-management.test.js +138 -0
- package/node_modules/thread-stream/test/to-file-on-destroy.js +23 -0
- package/node_modules/thread-stream/test/to-file-on-final.js +24 -0
- package/node_modules/thread-stream/test/to-file.js +12 -0
- package/node_modules/thread-stream/test/to-file.mjs +8 -0
- package/node_modules/thread-stream/test/to-next.js +9 -0
- package/node_modules/thread-stream/test/transpiled.test.js +29 -0
- package/node_modules/thread-stream/test/ts/to-file.ts +10 -0
- package/node_modules/thread-stream/test/ts/transpile.sh +19 -0
- package/node_modules/thread-stream/test/ts-commonjs-default-export.zip +0 -0
- package/node_modules/thread-stream/test/ts-native.test.mjs +35 -0
- package/node_modules/thread-stream/test/ts-node-fallback.test.js +35 -0
- package/node_modules/thread-stream/test/uncaughtException.js +21 -0
- package/node_modules/thread-stream/test/unhandledRejection.js +21 -0
- package/node_modules/thread-stream/test/yarnrc.yml +7 -0
- package/node_modules/thread-stream/tsconfig.json +8 -0
- package/oclif.manifest.json +6 -7
- package/package.json +11 -3
- package/node_modules/@contrail/loader/lib/index.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ProcessingIssues } from '@contrail/entity-types';
|
|
2
|
+
export declare function getUniqueAndDuplicateEntries(strings: string[]): {
|
|
3
|
+
uniqueStrings: Array<string>;
|
|
4
|
+
duplicateStrings: Array<string>;
|
|
5
|
+
};
|
|
6
|
+
export declare function getDuplicateFederatedIds(data: any[], federatedIdField: string): ProcessingIssues[];
|
|
7
|
+
export declare function getConflictingFederatedIdsGroupedByField(data: any[], federatedIdField: string, groupByField: string): string[];
|
|
8
|
+
export declare function getConflictingFieldForFederatedId(data: any[], federatedIdField: string, field: string): {
|
|
9
|
+
federatedId: string;
|
|
10
|
+
values: string[];
|
|
11
|
+
}[];
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getConflictingFieldForFederatedId = exports.getConflictingFederatedIdsGroupedByField = exports.getDuplicateFederatedIds = exports.getUniqueAndDuplicateEntries = void 0;
|
|
4
|
+
const entity_types_1 = require("@contrail/entity-types");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
function getUniqueAndDuplicateEntries(strings) {
|
|
7
|
+
const uniqueStrings = new Set();
|
|
8
|
+
const duplicateStrings = new Set();
|
|
9
|
+
for (const string of strings) {
|
|
10
|
+
if (duplicateStrings.has(string)) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
else if (uniqueStrings.has(string)) {
|
|
14
|
+
duplicateStrings.add(string);
|
|
15
|
+
uniqueStrings.delete(string);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
uniqueStrings.add(string);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
uniqueStrings: Array.from(uniqueStrings),
|
|
23
|
+
duplicateStrings: Array.from(duplicateStrings),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.getUniqueAndDuplicateEntries = getUniqueAndDuplicateEntries;
|
|
27
|
+
function getDuplicateFederatedIds(data, federatedIdField) {
|
|
28
|
+
if (!data || !federatedIdField)
|
|
29
|
+
return [];
|
|
30
|
+
const errors = [];
|
|
31
|
+
const federatedIdCounts = {};
|
|
32
|
+
data.forEach((item, index) => {
|
|
33
|
+
const federatedId = item[federatedIdField];
|
|
34
|
+
if (!federatedId)
|
|
35
|
+
return;
|
|
36
|
+
if (!federatedIdCounts[federatedId]) {
|
|
37
|
+
federatedIdCounts[federatedId] = [];
|
|
38
|
+
}
|
|
39
|
+
federatedIdCounts[federatedId].push(index + 2);
|
|
40
|
+
});
|
|
41
|
+
Object.entries(federatedIdCounts).forEach(([federatedId, indices]) => {
|
|
42
|
+
if (indices.length > 1) {
|
|
43
|
+
indices.forEach((rowIndex) => {
|
|
44
|
+
errors.push({
|
|
45
|
+
rowNumber: rowIndex,
|
|
46
|
+
columnIssues: [
|
|
47
|
+
{
|
|
48
|
+
columnName: federatedIdField,
|
|
49
|
+
message: `Duplicate federatedId found: ${federatedId}`,
|
|
50
|
+
issueType: entity_types_1.IssueType.DUPLICATE_FEDERATED_ID,
|
|
51
|
+
data: JSON.stringify(data[rowIndex - 2]),
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return errors;
|
|
59
|
+
}
|
|
60
|
+
exports.getDuplicateFederatedIds = getDuplicateFederatedIds;
|
|
61
|
+
function getConflictingFederatedIdsGroupedByField(data, federatedIdField, groupByField) {
|
|
62
|
+
if (!data || !federatedIdField || !groupByField)
|
|
63
|
+
return [];
|
|
64
|
+
const groupedByField = (0, lodash_1.groupBy)(data, groupByField);
|
|
65
|
+
const conflictingFedIds = Object.entries(groupedByField)
|
|
66
|
+
.map(([uniqueNames, rows]) => [uniqueNames, (0, lodash_1.uniq)(rows.map((x) => x[federatedIdField]))])
|
|
67
|
+
.filter(([uniqueNames, uniqueFedIds]) => uniqueFedIds.length > 1)
|
|
68
|
+
.map(([uniqueNames, conflictingFedIds]) => conflictingFedIds);
|
|
69
|
+
return (0, lodash_1.flatten)(conflictingFedIds);
|
|
70
|
+
}
|
|
71
|
+
exports.getConflictingFederatedIdsGroupedByField = getConflictingFederatedIdsGroupedByField;
|
|
72
|
+
function getConflictingFieldForFederatedId(data, federatedIdField, field) {
|
|
73
|
+
if (!data || !federatedIdField || !field)
|
|
74
|
+
return [];
|
|
75
|
+
const groupedByFedId = (0, lodash_1.groupBy)(data, federatedIdField);
|
|
76
|
+
const conflictingValues = Object.entries(groupedByFedId)
|
|
77
|
+
.map(([federatedId, rows]) => [federatedId, (0, lodash_1.uniq)(rows.map((x) => x[field]))])
|
|
78
|
+
.filter(([federatedId, uniqueNames]) => uniqueNames.length > 1)
|
|
79
|
+
.map(([federatedId, names]) => ({
|
|
80
|
+
federatedId,
|
|
81
|
+
values: names,
|
|
82
|
+
}));
|
|
83
|
+
return conflictingValues;
|
|
84
|
+
}
|
|
85
|
+
exports.getConflictingFieldForFederatedId = getConflictingFieldForFederatedId;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const entity_types_1 = require("@contrail/entity-types");
|
|
4
|
+
const util_1 = require("./util");
|
|
5
|
+
describe('getUniqueAndDuplicateEntries', () => {
|
|
6
|
+
it('should return unique and duplicate strings correctly', () => {
|
|
7
|
+
const input = ['a', 'b', 'a', 'c', 'd', 'b'];
|
|
8
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
9
|
+
expect(result).toEqual({
|
|
10
|
+
uniqueStrings: ['c', 'd'],
|
|
11
|
+
duplicateStrings: ['a', 'b'],
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
it('should return all unique strings when there are no duplicates', () => {
|
|
15
|
+
const input = ['a', 'b', 'c', 'd'];
|
|
16
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
17
|
+
expect(result).toEqual({
|
|
18
|
+
uniqueStrings: ['a', 'b', 'c', 'd'],
|
|
19
|
+
duplicateStrings: [],
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
it('should return all duplicate strings when all elements are the same', () => {
|
|
23
|
+
const input = ['a', 'a', 'a', 'a'];
|
|
24
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
25
|
+
expect(result).toEqual({
|
|
26
|
+
uniqueStrings: [],
|
|
27
|
+
duplicateStrings: ['a'],
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it('should handle an empty array', () => {
|
|
31
|
+
const input = [];
|
|
32
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
33
|
+
expect(result).toEqual({
|
|
34
|
+
uniqueStrings: [],
|
|
35
|
+
duplicateStrings: [],
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
it('should handle an array with one element', () => {
|
|
39
|
+
const input = ['a'];
|
|
40
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
41
|
+
expect(result).toEqual({
|
|
42
|
+
uniqueStrings: ['a'],
|
|
43
|
+
duplicateStrings: [],
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
it('should handle an array with two different elements', () => {
|
|
47
|
+
const input = ['a', 'b'];
|
|
48
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
49
|
+
expect(result).toEqual({
|
|
50
|
+
uniqueStrings: ['a', 'b'],
|
|
51
|
+
duplicateStrings: [],
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
it('should handle an array with two same elements', () => {
|
|
55
|
+
const input = ['a', 'a'];
|
|
56
|
+
const result = (0, util_1.getUniqueAndDuplicateEntries)(input);
|
|
57
|
+
expect(result).toEqual({
|
|
58
|
+
uniqueStrings: [],
|
|
59
|
+
duplicateStrings: ['a'],
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('getDuplicateFederatedIds', () => {
|
|
64
|
+
it('should return duplicate federated IDs', () => {
|
|
65
|
+
const data = [{ name: 'color1' }, { name: 'color2' }, { name: 'color1' }, { name: 'color1' }];
|
|
66
|
+
const result = (0, util_1.getDuplicateFederatedIds)(data, 'name');
|
|
67
|
+
console.log(JSON.stringify(result, null, 2));
|
|
68
|
+
expect(result).toEqual([
|
|
69
|
+
{
|
|
70
|
+
rowNumber: 2,
|
|
71
|
+
columnIssues: [
|
|
72
|
+
{
|
|
73
|
+
columnName: 'name',
|
|
74
|
+
message: 'Duplicate federatedId found: color1',
|
|
75
|
+
issueType: entity_types_1.IssueType.DUPLICATE_FEDERATED_ID,
|
|
76
|
+
data: '{"name":"color1"}',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
rowNumber: 4,
|
|
82
|
+
columnIssues: [
|
|
83
|
+
{
|
|
84
|
+
columnName: 'name',
|
|
85
|
+
message: 'Duplicate federatedId found: color1',
|
|
86
|
+
issueType: entity_types_1.IssueType.DUPLICATE_FEDERATED_ID,
|
|
87
|
+
data: '{"name":"color1"}',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
rowNumber: 5,
|
|
93
|
+
columnIssues: [
|
|
94
|
+
{
|
|
95
|
+
columnName: 'name',
|
|
96
|
+
message: 'Duplicate federatedId found: color1',
|
|
97
|
+
issueType: entity_types_1.IssueType.DUPLICATE_FEDERATED_ID,
|
|
98
|
+
data: '{"name":"color1"}',
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
]);
|
|
103
|
+
});
|
|
104
|
+
it('should handle no duplicate federated IDs', () => {
|
|
105
|
+
const data = [{ name: 'color1' }, { name: 'color2' }, { name: 'color3' }];
|
|
106
|
+
const result = (0, util_1.getDuplicateFederatedIds)(data, 'name');
|
|
107
|
+
expect(result).toEqual([]);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const COLOR_PROCESSOR_ERRORS: {
|
|
2
|
+
readonly TYPEPATH_MISSING: "\"typePath\" with value \"color\" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping \"typePath\" mapping with value \"color\" with one of these methods, then try the load again.";
|
|
3
|
+
};
|
|
4
|
+
export declare const COLOR_PROCESSOR_WARNINGS: {
|
|
5
|
+
readonly HEX_IGNORED_WARNING: "\"Hex\" is ignored when red, green, and blue columns are present";
|
|
6
|
+
};
|
|
7
|
+
export declare const CUSTOM_ENTITY_PROCESSOR_ERRORS: {
|
|
8
|
+
readonly TYPEPATH_MISSING: "\"typePath\" with value \"custom-entity:<subtypepath>\" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping \"typePath\" mapping with value \"custom-entity:<subtypepath>\" with one of these methods, then try the load again.";
|
|
9
|
+
};
|
|
10
|
+
export declare const ENTITY_PROCESSOR_ERRORS: {
|
|
11
|
+
readonly CONFIG_EMPTY: "Config file is empty";
|
|
12
|
+
readonly LOAD_TYPE_REQUIRED: "\"loadType\" is required in the config file";
|
|
13
|
+
readonly LOAD_TYPE_INVALID: (type: string) => string;
|
|
14
|
+
readonly FEDERATED_ID_REQUIRED: "\"federatedId\" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping \"federatedId\" mapping with one of these methods, then try the load again.";
|
|
15
|
+
readonly NAME_REQUIRED: "\"name\" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping \"name\" mapping with one of these methods, then try the load again.";
|
|
16
|
+
readonly SINGLE_LOAD_TYPE: (entityType: string) => string;
|
|
17
|
+
};
|
|
18
|
+
export declare const ITEM_PROCESSOR_ERRORS: {
|
|
19
|
+
readonly LOAD_TYPE_INVALID: "\"loadType\" must be either of values [\"ITEM\", \"PROJECT_ITEM\", \"ASSORTMENT\"] in the config file";
|
|
20
|
+
readonly TYPEPATH_INVALID: "\"typePath\" must be \"item\" or \"item:<subtypepath>\" in the config file";
|
|
21
|
+
readonly FAMILY_ID_EMPTY: "itemFamilyFederatedId is null or undefined or empty in the CSV file";
|
|
22
|
+
readonly CONFLICTING_IDS: (ids: any) => string;
|
|
23
|
+
};
|
|
24
|
+
export declare const ITEM_PROCESSOR_WARNINGS: {
|
|
25
|
+
readonly OPTIONNAME_UNMAPPED: "\"optionName\" is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file.";
|
|
26
|
+
readonly OPTIONNAME_NOT_FOUND: (optionName: string) => string;
|
|
27
|
+
readonly OPTION_FEDERATED_ID_UNMAPPED: "\"itemOptionFederatedId\" is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file.";
|
|
28
|
+
readonly OPTION_FEDERATED_ID_NOT_FOUND: (itemOptionFederatedId: string) => string;
|
|
29
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ITEM_PROCESSOR_WARNINGS = exports.ITEM_PROCESSOR_ERRORS = exports.ENTITY_PROCESSOR_ERRORS = exports.CUSTOM_ENTITY_PROCESSOR_ERRORS = exports.COLOR_PROCESSOR_WARNINGS = exports.COLOR_PROCESSOR_ERRORS = void 0;
|
|
4
|
+
exports.COLOR_PROCESSOR_ERRORS = {
|
|
5
|
+
TYPEPATH_MISSING: '"typePath" with value "color" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping "typePath" mapping with value "color" with one of these methods, then try the load again.',
|
|
6
|
+
};
|
|
7
|
+
exports.COLOR_PROCESSOR_WARNINGS = {
|
|
8
|
+
HEX_IGNORED_WARNING: '"Hex" is ignored when red, green, and blue columns are present',
|
|
9
|
+
};
|
|
10
|
+
exports.CUSTOM_ENTITY_PROCESSOR_ERRORS = {
|
|
11
|
+
TYPEPATH_MISSING: '"typePath" with value "custom-entity:<subtypepath>" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping "typePath" mapping with value "custom-entity:<subtypepath>" with one of these methods, then try the load again.',
|
|
12
|
+
};
|
|
13
|
+
exports.ENTITY_PROCESSOR_ERRORS = {
|
|
14
|
+
CONFIG_EMPTY: 'Config file is empty',
|
|
15
|
+
LOAD_TYPE_REQUIRED: '"loadType" is required in the config file',
|
|
16
|
+
LOAD_TYPE_INVALID: (type) => `"loadType" must be single value "${type}" in the config file`,
|
|
17
|
+
FEDERATED_ID_REQUIRED: '"federatedId" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping "federatedId" mapping with one of these methods, then try the load again.',
|
|
18
|
+
NAME_REQUIRED: '"name" is required property but is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file. Please add a mapping "name" mapping with one of these methods, then try the load again.',
|
|
19
|
+
SINGLE_LOAD_TYPE: (entityType) => `"loadType" must be single value "${entityType}" in the config file`,
|
|
20
|
+
};
|
|
21
|
+
exports.ITEM_PROCESSOR_ERRORS = {
|
|
22
|
+
LOAD_TYPE_INVALID: '"loadType" must be either of values ["ITEM", "PROJECT_ITEM", "ASSORTMENT"] in the config file',
|
|
23
|
+
TYPEPATH_INVALID: '"typePath" must be "item" or "item:<subtypepath>" in the config file',
|
|
24
|
+
FAMILY_ID_EMPTY: 'itemFamilyFederatedId is null or undefined or empty in the CSV file',
|
|
25
|
+
CONFLICTING_IDS: (ids) => `Found conflicting family federated Ids: ${ids}`,
|
|
26
|
+
};
|
|
27
|
+
exports.ITEM_PROCESSOR_WARNINGS = {
|
|
28
|
+
OPTIONNAME_UNMAPPED: '"optionName" is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file.',
|
|
29
|
+
OPTIONNAME_NOT_FOUND: (optionName) => `"${optionName}" column not found in the CSV file`,
|
|
30
|
+
OPTION_FEDERATED_ID_UNMAPPED: '"itemOptionFederatedId" is not found in the federatedMapping config, conditionalColumns config, or as a header in the CSV file.',
|
|
31
|
+
OPTION_FEDERATED_ID_NOT_FOUND: (itemOptionFederatedId) => `"${itemOptionFederatedId}" column not found in the CSV file`,
|
|
32
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GeneralIssueDetails, LoaderProcess, ProcessingIssues } from '@contrail/entity-types';
|
|
2
|
+
import { BaseProcessor } from './base-processor';
|
|
3
|
+
interface CustomEntityData {
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
export declare class CustomEntityProcessor extends BaseProcessor {
|
|
7
|
+
static typesToTransformBy: string[];
|
|
8
|
+
static requiredProperties: string[];
|
|
9
|
+
static processFederatedId(federatedId: string, typePath: string): string;
|
|
10
|
+
static setExtraProperties(entity: any, type: any): void;
|
|
11
|
+
private static isValidCustomEntityTypePath;
|
|
12
|
+
private static validateTypePath;
|
|
13
|
+
static validateLoadFile(data: CustomEntityData[], config: LoaderProcess): {
|
|
14
|
+
errors: ProcessingIssues[];
|
|
15
|
+
warnings: ProcessingIssues[];
|
|
16
|
+
generalErrors: GeneralIssueDetails[];
|
|
17
|
+
generalWarnings: GeneralIssueDetails[];
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomEntityProcessor = void 0;
|
|
4
|
+
const entity_types_1 = require("@contrail/entity-types");
|
|
5
|
+
const base_processor_1 = require("./base-processor");
|
|
6
|
+
const entity_processor_1 = require("./entity-processor");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
class CustomEntityProcessor extends base_processor_1.BaseProcessor {
|
|
9
|
+
static typesToTransformBy = ['custom-entity'];
|
|
10
|
+
static requiredProperties = ['typePath', 'typeId', 'federatedId', 'name'];
|
|
11
|
+
static processFederatedId(federatedId, typePath) {
|
|
12
|
+
if (!federatedId.startsWith('custom-entity:')) {
|
|
13
|
+
federatedId = typePath + ':' + federatedId;
|
|
14
|
+
}
|
|
15
|
+
return federatedId;
|
|
16
|
+
}
|
|
17
|
+
static setExtraProperties(entity, type) {
|
|
18
|
+
entity.typeId = type.type.id;
|
|
19
|
+
}
|
|
20
|
+
static isValidCustomEntityTypePath(typePath) {
|
|
21
|
+
return !!typePath?.startsWith('custom-entity:') && !!typePath?.split(':')[1]?.length;
|
|
22
|
+
}
|
|
23
|
+
static validateTypePath(data, config, csvHeaders, generalErrors) {
|
|
24
|
+
const typePathSource = {
|
|
25
|
+
conditional: config?.conditionalColumns?.some((column) => column.toProperty === 'typePath' && this.isValidCustomEntityTypePath(column.default)),
|
|
26
|
+
federated: config?.federatedMappings?.typePath,
|
|
27
|
+
csv: csvHeaders?.includes('typePath'),
|
|
28
|
+
};
|
|
29
|
+
if (typePathSource.csv) {
|
|
30
|
+
const hasCorrectTypePath = data.every((row) => this.isValidCustomEntityTypePath(row.typePath));
|
|
31
|
+
if (!hasCorrectTypePath) {
|
|
32
|
+
generalErrors.push({
|
|
33
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
34
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!typePathSource.conditional && !typePathSource.federated) {
|
|
40
|
+
generalErrors.push({
|
|
41
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
42
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (typePathSource.federated && !csvHeaders.includes(typePathSource.federated)) {
|
|
47
|
+
generalErrors.push({
|
|
48
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
49
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static validateLoadFile(data, config) {
|
|
54
|
+
const { errors, warnings, generalErrors, generalWarnings, csvHeaders } = entity_processor_1.EntityProcessor.validateLoadFile(data, config, entity_types_1.LoadType.CUSTOM_ENTITY);
|
|
55
|
+
this.validateTypePath(data, config, csvHeaders, generalErrors);
|
|
56
|
+
return { errors, warnings, generalErrors, generalWarnings };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.CustomEntityProcessor = CustomEntityProcessor;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("./constants");
|
|
4
|
+
const custom_entity_processor_1 = require("./custom-entity-processor");
|
|
5
|
+
const entity_types_1 = require("@contrail/entity-types");
|
|
6
|
+
describe('Custom Entity Processor', () => {
|
|
7
|
+
const loaderProcess = {
|
|
8
|
+
id: 'mock-loader-process-id',
|
|
9
|
+
loadFileId: 'mock-load-file-id',
|
|
10
|
+
loadType: [entity_types_1.LoadType.CUSTOM_ENTITY],
|
|
11
|
+
status: entity_types_1.LoadStatus.COMPLETE,
|
|
12
|
+
federatedMappings: {
|
|
13
|
+
federatedId: 'name',
|
|
14
|
+
name: 'name',
|
|
15
|
+
},
|
|
16
|
+
conditionalColumns: [
|
|
17
|
+
{
|
|
18
|
+
toProperty: 'typePath',
|
|
19
|
+
default: 'custom-entity:material',
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
describe('requiredProperties', () => {
|
|
24
|
+
it('should have the correct required properties', () => {
|
|
25
|
+
expect(custom_entity_processor_1.CustomEntityProcessor.requiredProperties).toEqual(['typePath', 'typeId', 'federatedId', 'name']);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('validateLoadFile', () => {
|
|
29
|
+
describe('typePath validation', () => {
|
|
30
|
+
it('should validate typePath in conditional columns', () => {
|
|
31
|
+
const data = [{ name: 'material1' }];
|
|
32
|
+
const config = {
|
|
33
|
+
...loaderProcess,
|
|
34
|
+
conditionalColumns: [
|
|
35
|
+
{
|
|
36
|
+
toProperty: 'typePath',
|
|
37
|
+
default: 'custom-entity:material',
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
42
|
+
expect(result.generalErrors).toHaveLength(0);
|
|
43
|
+
});
|
|
44
|
+
it('should validate typePath in CSV data', () => {
|
|
45
|
+
const data = [
|
|
46
|
+
{ name: 'material1', typePath: 'custom-entity:material' },
|
|
47
|
+
{ name: 'material2', typePath: 'custom-entity:material' },
|
|
48
|
+
];
|
|
49
|
+
const config = {
|
|
50
|
+
...loaderProcess,
|
|
51
|
+
conditionalColumns: [],
|
|
52
|
+
};
|
|
53
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
54
|
+
expect(result.generalErrors).toHaveLength(0);
|
|
55
|
+
});
|
|
56
|
+
it('should allow typePath to be in either conditional columns or CSV', () => {
|
|
57
|
+
const dataWithTypePath = [{ name: 'material1', typePath: 'custom-entity:material' }];
|
|
58
|
+
const configWithConditional = {
|
|
59
|
+
...loaderProcess,
|
|
60
|
+
conditionalColumns: [
|
|
61
|
+
{
|
|
62
|
+
toProperty: 'typePath',
|
|
63
|
+
default: 'custom-entity:material',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
const result1 = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(dataWithTypePath, loaderProcess);
|
|
68
|
+
const result2 = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile([{ name: 'material1' }], configWithConditional);
|
|
69
|
+
expect(result1.generalErrors).toHaveLength(0);
|
|
70
|
+
expect(result2.generalErrors).toHaveLength(0);
|
|
71
|
+
});
|
|
72
|
+
it('should error when typePath is missing from both conditional columns and CSV', () => {
|
|
73
|
+
const data = [{ name: 'material1' }];
|
|
74
|
+
const config = {
|
|
75
|
+
...loaderProcess,
|
|
76
|
+
conditionalColumns: [],
|
|
77
|
+
};
|
|
78
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
79
|
+
expect(result.generalErrors).toContainEqual({
|
|
80
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
81
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
it('should error when typePath in CSV has incorrect format', () => {
|
|
85
|
+
const data = [
|
|
86
|
+
{ name: 'material1', typePath: 'wrong:material' },
|
|
87
|
+
{ name: 'material2', typePath: 'custom-entity:' },
|
|
88
|
+
];
|
|
89
|
+
const config = {
|
|
90
|
+
...loaderProcess,
|
|
91
|
+
conditionalColumns: [],
|
|
92
|
+
};
|
|
93
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
94
|
+
expect(result.generalErrors).toContainEqual({
|
|
95
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
96
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
it('should handle mixed conditional columns', () => {
|
|
100
|
+
const data = [{ name: 'material1' }];
|
|
101
|
+
const config = {
|
|
102
|
+
...loaderProcess,
|
|
103
|
+
conditionalColumns: [
|
|
104
|
+
{
|
|
105
|
+
toProperty: 'name',
|
|
106
|
+
default: 'Default Material',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
toProperty: 'typePath',
|
|
110
|
+
default: 'custom-entity:material',
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
};
|
|
114
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
115
|
+
expect(result.generalErrors).toHaveLength(0);
|
|
116
|
+
});
|
|
117
|
+
it('should prioritize CSV typePath over conditional columns', () => {
|
|
118
|
+
const data = [{ name: 'material1', typePath: 'custom-entity:material' }];
|
|
119
|
+
const config = {
|
|
120
|
+
...loaderProcess,
|
|
121
|
+
conditionalColumns: [
|
|
122
|
+
{
|
|
123
|
+
toProperty: 'typePath',
|
|
124
|
+
default: 'custom-entity:wrong',
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
};
|
|
128
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
129
|
+
expect(result.generalErrors).toHaveLength(0);
|
|
130
|
+
});
|
|
131
|
+
it('should validate federatedId in federatedMapping', () => {
|
|
132
|
+
const data = [{ name: 'material1', typePathCSV: 'custom-entity:material' }];
|
|
133
|
+
const config = {
|
|
134
|
+
...loaderProcess,
|
|
135
|
+
federatedMappings: {
|
|
136
|
+
typePath: 'typePathCSV',
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
140
|
+
expect(result.generalErrors).not.toContainEqual({
|
|
141
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
142
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
it('should error when federatedId column from mapping is not in CSV', () => {
|
|
146
|
+
const data = [{ name: 'material1', typePathCSV: 'custom-entity:material' }];
|
|
147
|
+
const config = {
|
|
148
|
+
...loaderProcess,
|
|
149
|
+
federatedMappings: {
|
|
150
|
+
typePath: 'invalidTypePathCSV',
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
const result = custom_entity_processor_1.CustomEntityProcessor.validateLoadFile(data, config);
|
|
154
|
+
expect(result.generalErrors).toContainEqual({
|
|
155
|
+
message: constants_1.CUSTOM_ENTITY_PROCESSOR_ERRORS.TYPEPATH_MISSING,
|
|
156
|
+
issueType: entity_types_1.IssueType.CONFIG,
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EntitiesClient, EntityType, GeneralIssueDetails, LoaderProcess, ProcessingIssues } from '@contrail/entity-types';
|
|
2
|
+
export declare class BaseProcessorV2 {
|
|
3
|
+
static requiredProperties: string[];
|
|
4
|
+
static transformData(data: any[]): any[];
|
|
5
|
+
static getTypePath(row: any, entityType: any): any;
|
|
6
|
+
static processFederatedId(federatedId: string, typePath: string): string;
|
|
7
|
+
static getEntityTypeForFederatedId(entityType: EntityType): EntityType;
|
|
8
|
+
static validateRow(row: {
|
|
9
|
+
[key: string]: string;
|
|
10
|
+
}): boolean;
|
|
11
|
+
static setExtraProperties(entity: any, type: any, row?: any): void;
|
|
12
|
+
static assignExtraItems(client: any, typePaths: any, typesByPath: any, incomingItems: any, projectId: string): Promise<any>;
|
|
13
|
+
static getFederatedIdKeys(): string[];
|
|
14
|
+
static logIncommingEntities(incomingEntities: any[], entityType: string, result: any): void;
|
|
15
|
+
static validateLoadFile(data: any[], config: LoaderProcess): {
|
|
16
|
+
errors: ProcessingIssues[];
|
|
17
|
+
warnings: ProcessingIssues[];
|
|
18
|
+
generalErrors: GeneralIssueDetails[];
|
|
19
|
+
generalWarnings: GeneralIssueDetails[];
|
|
20
|
+
};
|
|
21
|
+
static processEntitiesProperties(client: EntitiesClient, entitiSpecificProps: any, data: any[]): Promise<{
|
|
22
|
+
projectId: string | null;
|
|
23
|
+
}>;
|
|
24
|
+
static canExtractFederatedIds(entityResult: any, incomingEntities: any[]): boolean;
|
|
25
|
+
static canAddProperty(allPropertiesSlugs: string[], propertyName: string): boolean;
|
|
26
|
+
static buildAssortmentEntities(client: EntitiesClient, rawData: any[], loaderProcess: LoaderProcess, entitySpecificProperties: any): any;
|
|
27
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseProcessorV2 = void 0;
|
|
4
|
+
class BaseProcessorV2 {
|
|
5
|
+
static requiredProperties = [];
|
|
6
|
+
static transformData(data) {
|
|
7
|
+
return data;
|
|
8
|
+
}
|
|
9
|
+
static getTypePath(row, entityType) {
|
|
10
|
+
return row?.typePath || entityType;
|
|
11
|
+
}
|
|
12
|
+
static processFederatedId(federatedId, typePath) {
|
|
13
|
+
return federatedId;
|
|
14
|
+
}
|
|
15
|
+
static getEntityTypeForFederatedId(entityType) {
|
|
16
|
+
return entityType;
|
|
17
|
+
}
|
|
18
|
+
static validateRow(row) {
|
|
19
|
+
return !!row.federatedId;
|
|
20
|
+
}
|
|
21
|
+
static setExtraProperties(entity, type, row) { }
|
|
22
|
+
static async assignExtraItems(client, typePaths, typesByPath, incomingItems, projectId) {
|
|
23
|
+
return {
|
|
24
|
+
itemsByFamilyId: null,
|
|
25
|
+
sizeRangeWarningsAsStringList: null,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
static getFederatedIdKeys() {
|
|
29
|
+
return ['federatedId'];
|
|
30
|
+
}
|
|
31
|
+
static logIncommingEntities(incomingEntities, entityType, result) {
|
|
32
|
+
console.debug(`${entityType}s to upload: `, incomingEntities.length);
|
|
33
|
+
}
|
|
34
|
+
static validateLoadFile(data, config) {
|
|
35
|
+
return {
|
|
36
|
+
errors: [],
|
|
37
|
+
warnings: [],
|
|
38
|
+
generalErrors: [],
|
|
39
|
+
generalWarnings: [],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
static async processEntitiesProperties(client, entitiSpecificProps, data) {
|
|
43
|
+
return { projectId: null };
|
|
44
|
+
}
|
|
45
|
+
static canExtractFederatedIds(entityResult, incomingEntities) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
static canAddProperty(allPropertiesSlugs, propertyName) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
static buildAssortmentEntities(client, rawData, loaderProcess, entitySpecificProperties) {
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.BaseProcessorV2 = BaseProcessorV2;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GeneralIssueDetails, LoaderProcess, ProcessingIssues } from '@contrail/entity-types';
|
|
2
|
+
import { BaseProcessorV2 } from '../base-processor-v2';
|
|
3
|
+
interface ColorData {
|
|
4
|
+
hex?: string;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
export declare class ColorProcessorV2 extends BaseProcessorV2 {
|
|
8
|
+
static requiredProperties: string[];
|
|
9
|
+
static canAddProperty(allPropertiesSlugs: string[], propertyName: string): boolean;
|
|
10
|
+
static transformData(data: ColorData[]): ColorData[];
|
|
11
|
+
static validateLoadFile(data: ColorData[], config: LoaderProcess): {
|
|
12
|
+
errors: ProcessingIssues[];
|
|
13
|
+
warnings: ProcessingIssues[];
|
|
14
|
+
generalErrors: GeneralIssueDetails[];
|
|
15
|
+
generalWarnings: GeneralIssueDetails[];
|
|
16
|
+
};
|
|
17
|
+
private static validateTypePath;
|
|
18
|
+
}
|
|
19
|
+
export {};
|