@grnsft/if 0.6.0-beta.0 → 0.7.0-beta.0
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/Refactor-migration-guide.md +68 -82
- package/github-processes.md +3 -9
- package/manifests/examples/builtins/coefficient/failure-invalid-config-input-param.yml +2 -4
- package/manifests/examples/builtins/coefficient/failure-output-param-is-null.yaml +1 -3
- package/manifests/examples/builtins/coefficient/success.yml +1 -3
- package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +1 -2
- package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +3 -4
- package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yml +2 -3
- package/manifests/examples/builtins/csv-lookup/cloud-metadata/success.yml +1 -2
- package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-column.yml +1 -1
- package/manifests/examples/builtins/csv-lookup/region-metadata/failure-missing-output.yml +2 -2
- package/manifests/examples/builtins/csv-lookup/region-metadata/success-renaming.yml +1 -1
- package/manifests/examples/builtins/csv-lookup/region-metadata/success.yml +1 -1
- package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yml +1 -2
- package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +1 -2
- package/manifests/examples/builtins/csv-lookup/tdp-finder/success.yml +1 -2
- package/manifests/examples/builtins/divide/failure-invalid-config-denominator.yml +3 -5
- package/manifests/examples/builtins/divide/failure-missing-numerator.yml +2 -4
- package/manifests/examples/builtins/divide/success.yml +2 -2
- package/manifests/examples/builtins/exponent/success.yml +1 -1
- package/manifests/examples/builtins/interpolation/success.yml +1 -1
- package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +2 -2
- package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +1 -1
- package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +1 -1
- package/manifests/examples/builtins/mock-observations/success.yml +1 -1
- package/manifests/examples/builtins/multiply/failure-input-parameter-is-missing.yml +1 -1
- package/manifests/examples/builtins/multiply/success-with-multiple-inputs.yml +1 -1
- package/manifests/examples/builtins/multiply/success.yml +1 -1
- package/manifests/examples/builtins/regex/failure-missing-input-param.yml +1 -1
- package/manifests/examples/builtins/regex/failure-not-matching-with-regex.yml +2 -2
- package/manifests/examples/builtins/regex/success.yml +1 -1
- package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +3 -4
- package/manifests/examples/builtins/sci/failure-missing-input-param.yml +1 -1
- package/manifests/examples/builtins/sci/success.yml +1 -1
- package/manifests/examples/builtins/sci-embodied/scenario-1.yml +27 -0
- package/manifests/examples/builtins/sci-embodied/scenario-2.yml +37 -0
- package/manifests/examples/builtins/sci-embodied/success.yml +13 -0
- package/manifests/examples/builtins/shell/failure-invalid-command.yml +2 -2
- package/manifests/examples/builtins/shell/success.yml +2 -2
- package/manifests/examples/builtins/subtract/success.yml +1 -1
- package/manifests/examples/builtins/sum/failure-missing-input-param.yml +2 -2
- package/manifests/examples/builtins/sum/failure-missing-output-param.yml +2 -2
- package/manifests/examples/builtins/sum/success.yml +1 -1
- package/manifests/examples/builtins/time-converter/success.yaml +24 -0
- package/manifests/examples/builtins/time-sync/failure-config-start-later-end.yml +10 -12
- package/manifests/examples/builtins/time-sync/{failure-missing-global-config.yml → failure-missing-config.yml} +3 -8
- package/manifests/examples/builtins/time-sync/success.yml +2 -2
- package/manifests/examples/features/regroup/failure-missing-cloud-instance-type.yml +1 -1
- package/manifests/examples/features/regroup/success.yml +1 -1
- package/manifests/examples/pipelines/generics.yml +8 -8
- package/manifests/examples/pipelines/instance-metadata.yml +2 -2
- package/manifests/examples/pipelines/nesting.yml +75 -33
- package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-aggregate.yaml +166 -122
- package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-mocks.yaml +130 -70
- package/manifests/examples/pipelines/pipeline-teads-sci.yml +15 -15
- package/manifests/examples/pipelines/pipeline-with-aggregate.yml +57 -27
- package/manifests/examples/pipelines/pipeline-with-mocks.yml +99 -41
- package/manifests/examples/pipelines/scenario-3.yml +1 -1
- package/manifests/examples/pipelines/scenario-4.yml +5 -5
- package/manifests/examples/pipelines/scenario-5.yml +3 -3
- package/manifests/examples/pipelines/sci.yml +12 -12
- package/manifests/examples/pipelines/teads-curve.yml +10 -10
- package/manifests/examples/pipelines/zeros.yml +23 -23
- package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +40 -40
- package/manifests/outputs/bugs/input-error-missing-duration.yaml +1 -1
- package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +2 -2
- package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +1 -1
- package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +1 -1
- package/manifests/outputs/bugs/pipeline-ordering-error.yaml +6 -6
- package/manifests/outputs/builtins/coefficient/failure-invalid-config-input-param.yaml +2 -2
- package/manifests/outputs/builtins/coefficient/failure-output-param-is-null.yaml +1 -1
- package/manifests/outputs/builtins/coefficient/success.yaml +23 -22
- package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +76 -0
- package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +22 -21
- package/manifests/outputs/builtins/csv-lookup/cloud-metadata/success.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/region-metadata/failure-missing-column.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/region-metadata/failure-missing-output.yaml +21 -20
- package/manifests/outputs/builtins/csv-lookup/region-metadata/success-renaming.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/region-metadata/success.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +1 -1
- package/manifests/outputs/builtins/csv-lookup/tdp-finder/success.yaml +1 -1
- package/manifests/outputs/builtins/divide/failure-invalid-config-denominator.yaml +41 -25
- package/manifests/outputs/builtins/divide/failure-missing-numerator.yaml +32 -23
- package/manifests/outputs/builtins/divide/success-denominator-equal-zero.yaml +2 -2
- package/manifests/outputs/builtins/divide/success.yaml +2 -2
- package/manifests/outputs/builtins/exponent/success.yaml +1 -1
- package/manifests/outputs/builtins/interpolation/interpolation.yaml +1 -1
- package/manifests/outputs/builtins/interpolation/success.yaml +1 -1
- package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +3 -3
- package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +2 -2
- package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +1 -1
- package/manifests/outputs/builtins/mock-observations/success.yaml +49 -190
- package/manifests/outputs/builtins/multiply/failure-input-parameter-is-missing.yaml +1 -1
- package/manifests/outputs/builtins/multiply/success-with-multiple-inputs.yaml +1 -1
- package/manifests/outputs/builtins/multiply/success.yaml +1 -1
- package/manifests/outputs/builtins/regex/failure-missing-input-param.yaml +1 -1
- package/manifests/outputs/builtins/regex/failure-not-matching-with-regex.yaml +72 -0
- package/manifests/outputs/builtins/regex/success.yaml +1 -1
- package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +22 -23
- package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +1 -1
- package/manifests/outputs/builtins/sci/success.yaml +1 -1
- package/manifests/outputs/builtins/sci-embodied/failure-invalid-default-emission-value.yaml +22 -26
- package/manifests/outputs/builtins/sci-embodied/scenario-1.yaml +100 -0
- package/manifests/outputs/builtins/sci-embodied/scenario-2.yaml +101 -0
- package/manifests/outputs/builtins/sci-embodied/success.yaml +44 -20
- package/manifests/outputs/builtins/shell/failure-invalid-command.yaml +2 -2
- package/manifests/outputs/builtins/shell/success.yaml +1 -1
- package/manifests/outputs/builtins/subtract/success.yaml +1 -1
- package/manifests/outputs/builtins/sum/failure-missing-input-param.yaml +2 -2
- package/manifests/outputs/builtins/sum/failure-missing-output-param.yaml +2 -2
- package/manifests/outputs/builtins/sum/success.yaml +1 -1
- package/manifests/outputs/builtins/time-converter/success.yaml +73 -0
- package/manifests/outputs/builtins/time-sync/failure-config-start-later-end.yaml +3 -3
- package/manifests/outputs/builtins/time-sync/failure-missing-config.yaml +74 -0
- package/manifests/outputs/builtins/time-sync/success.yaml +50 -59
- package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +1 -1
- package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +1 -1
- package/manifests/outputs/features/aggregate-horizontal.yaml +4 -2
- package/manifests/outputs/features/aggregate-vertical.yaml +4 -2
- package/manifests/outputs/features/aggregate.yaml +4 -2
- package/manifests/outputs/features/regroup/failure-invalid-regroup.yaml +87 -0
- package/manifests/outputs/features/regroup/failure-missing-cloud-instance-type.yaml +87 -0
- package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +2 -2
- package/manifests/outputs/pipelines/generics.yaml +28 -28
- package/manifests/outputs/pipelines/instance-metadata.yaml +14 -14
- package/manifests/outputs/pipelines/nesting.yaml +713 -486
- package/manifests/outputs/pipelines/pipeline-teads-sci.yaml +63 -32
- package/manifests/outputs/pipelines/scenario-4.yaml +105 -0
- package/manifests/outputs/pipelines/sci.yaml +56 -32
- package/manifests/outputs/pipelines/teads-curve.yaml +18 -18
- package/manifests/outputs/pipelines/zeros.yaml +27 -27
- package/package.json +7 -5
- package/src/__mocks__/mock-manifest.yaml +1 -2
- package/src/if-env/config/env-template.yml +1 -2
- package/src/if-run/builtins/coefficient/README.md +41 -17
- package/src/if-run/builtins/copy-param/README.md +28 -8
- package/src/if-run/builtins/csv-lookup/README.md +31 -11
- package/src/if-run/builtins/divide/README.md +34 -12
- package/src/if-run/builtins/exponent/README.md +29 -11
- package/src/if-run/builtins/interpolation/README.md +37 -22
- package/src/if-run/builtins/mock-observations/README.md +27 -7
- package/src/if-run/builtins/multiply/README.md +27 -9
- package/src/if-run/builtins/regex/README.md +31 -11
- package/src/if-run/builtins/sci/README.md +29 -8
- package/src/if-run/builtins/sci-embodied/README.md +76 -75
- package/src/if-run/builtins/shell/README.md +15 -7
- package/src/if-run/builtins/subtract/README.md +28 -11
- package/src/if-run/builtins/sum/README.md +47 -14
- package/src/if-run/builtins/time-converter/README.md +136 -0
- package/src/if-run/builtins/time-sync/README.md +44 -22
- package/.gitmodules +0 -3
- package/build/common/config/index.d.ts +0 -1
- package/build/common/config/index.js +0 -6
- package/build/common/config/strings.d.ts +0 -8
- package/build/common/config/strings.js +0 -16
- package/build/common/lib/load.d.ts +0 -6
- package/build/common/lib/load.js +0 -18
- package/build/common/types/manifest.d.ts +0 -13
- package/build/common/types/manifest.js +0 -3
- package/build/common/util/debug-logger.d.ts +0 -4
- package/build/common/util/debug-logger.js +0 -115
- package/build/common/util/fs.d.ts +0 -20
- package/build/common/util/fs.js +0 -94
- package/build/common/util/helpers.d.ts +0 -15
- package/build/common/util/helpers.js +0 -80
- package/build/common/util/logger.d.ts +0 -5
- package/build/common/util/logger.js +0 -39
- package/build/common/util/validations.d.ts +0 -367
- package/build/common/util/validations.js +0 -141
- package/build/common/util/yaml.d.ts +0 -12
- package/build/common/util/yaml.js +0 -59
- package/build/if-check/config/config.d.ts +0 -6
- package/build/if-check/config/config.js +0 -31
- package/build/if-check/config/index.d.ts +0 -2
- package/build/if-check/config/index.js +0 -8
- package/build/if-check/config/strings.d.ts +0 -12
- package/build/if-check/config/strings.js +0 -16
- package/build/if-check/index.d.ts +0 -2
- package/build/if-check/index.js +0 -98
- package/build/if-check/types/process-args.d.ts +0 -4
- package/build/if-check/types/process-args.js +0 -3
- package/build/if-check/util/args.d.ts +0 -10
- package/build/if-check/util/args.js +0 -56
- package/build/if-check/util/helpers.d.ts +0 -4
- package/build/if-check/util/helpers.js +0 -18
- package/build/if-check/util/npm.d.ts +0 -4
- package/build/if-check/util/npm.js +0 -59
- package/build/if-csv/config/config.d.ts +0 -6
- package/build/if-csv/config/config.js +0 -37
- package/build/if-csv/config/index.d.ts +0 -2
- package/build/if-csv/config/index.js +0 -8
- package/build/if-csv/config/strings.d.ts +0 -4
- package/build/if-csv/config/strings.js +0 -8
- package/build/if-csv/index.d.ts +0 -2
- package/build/if-csv/index.js +0 -63
- package/build/if-csv/types/csv.d.ts +0 -7
- package/build/if-csv/types/csv.js +0 -3
- package/build/if-csv/types/process-args.d.ts +0 -5
- package/build/if-csv/types/process-args.js +0 -3
- package/build/if-csv/util/args.d.ts +0 -12
- package/build/if-csv/util/args.js +0 -51
- package/build/if-csv/util/helpers.d.ts +0 -9
- package/build/if-csv/util/helpers.js +0 -95
- package/build/if-diff/config/config.d.ts +0 -6
- package/build/if-diff/config/config.js +0 -31
- package/build/if-diff/config/index.d.ts +0 -2
- package/build/if-diff/config/index.js +0 -8
- package/build/if-diff/config/strings.d.ts +0 -6
- package/build/if-diff/config/strings.js +0 -10
- package/build/if-diff/index.d.ts +0 -2
- package/build/if-diff/index.js +0 -46
- package/build/if-diff/lib/compare.d.ts +0 -10
- package/build/if-diff/lib/compare.js +0 -56
- package/build/if-diff/lib/load.d.ts +0 -55
- package/build/if-diff/lib/load.js +0 -51
- package/build/if-diff/types/args.d.ts +0 -5
- package/build/if-diff/types/args.js +0 -3
- package/build/if-diff/types/compare.d.ts +0 -7
- package/build/if-diff/types/compare.js +0 -3
- package/build/if-diff/types/process-args.d.ts +0 -4
- package/build/if-diff/types/process-args.js +0 -3
- package/build/if-diff/util/args.d.ts +0 -5
- package/build/if-diff/util/args.js +0 -51
- package/build/if-diff/util/helpers.d.ts +0 -13
- package/build/if-diff/util/helpers.js +0 -75
- package/build/if-env/config/config.d.ts +0 -6
- package/build/if-env/config/config.js +0 -37
- package/build/if-env/config/index.d.ts +0 -2
- package/build/if-env/config/index.js +0 -8
- package/build/if-env/config/strings.d.ts +0 -7
- package/build/if-env/config/strings.js +0 -11
- package/build/if-env/index.d.ts +0 -2
- package/build/if-env/index.js +0 -40
- package/build/if-env/types/if-env.d.ts +0 -8
- package/build/if-env/types/if-env.js +0 -3
- package/build/if-env/types/npm.d.ts +0 -9
- package/build/if-env/types/npm.js +0 -3
- package/build/if-env/types/process-args.d.ts +0 -5
- package/build/if-env/types/process-args.js +0 -3
- package/build/if-env/util/args.d.ts +0 -12
- package/build/if-env/util/args.js +0 -47
- package/build/if-env/util/helpers.d.ts +0 -20
- package/build/if-env/util/helpers.js +0 -94
- package/build/if-env/util/npm.d.ts +0 -24
- package/build/if-env/util/npm.js +0 -126
- package/build/if-run/builtins/coefficient/index.d.ts +0 -2
- package/build/if-run/builtins/coefficient/index.js +0 -67
- package/build/if-run/builtins/copy-param/index.d.ts +0 -2
- package/build/if-run/builtins/copy-param/index.js +0 -70
- package/build/if-run/builtins/csv-lookup/index.d.ts +0 -2
- package/build/if-run/builtins/csv-lookup/index.js +0 -190
- package/build/if-run/builtins/divide/index.d.ts +0 -2
- package/build/if-run/builtins/divide/index.js +0 -80
- package/build/if-run/builtins/exponent/index.d.ts +0 -2
- package/build/if-run/builtins/exponent/index.js +0 -60
- package/build/if-run/builtins/export-log.d.ts +0 -4
- package/build/if-run/builtins/export-log.js +0 -44
- package/build/if-run/builtins/export-yaml.d.ts +0 -4
- package/build/if-run/builtins/export-yaml.js +0 -30
- package/build/if-run/builtins/index.d.ts +0 -15
- package/build/if-run/builtins/index.js +0 -34
- package/build/if-run/builtins/interpolation/index.d.ts +0 -2
- package/build/if-run/builtins/interpolation/index.js +0 -151
- package/build/if-run/builtins/mock-observations/helpers/common-generator.d.ts +0 -3
- package/build/if-run/builtins/mock-observations/helpers/common-generator.js +0 -29
- package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.d.ts +0 -3
- package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +0 -48
- package/build/if-run/builtins/mock-observations/index.d.ts +0 -2
- package/build/if-run/builtins/mock-observations/index.js +0 -116
- package/build/if-run/builtins/mock-observations/interfaces/index.d.ts +0 -6
- package/build/if-run/builtins/mock-observations/interfaces/index.js +0 -3
- package/build/if-run/builtins/multiply/index.d.ts +0 -2
- package/build/if-run/builtins/multiply/index.js +0 -59
- package/build/if-run/builtins/regex/index.d.ts +0 -2
- package/build/if-run/builtins/regex/index.js +0 -76
- package/build/if-run/builtins/sci/config.d.ts +0 -1
- package/build/if-run/builtins/sci/config.js +0 -44
- package/build/if-run/builtins/sci/index.d.ts +0 -2
- package/build/if-run/builtins/sci/index.js +0 -92
- package/build/if-run/builtins/sci-embodied/index.d.ts +0 -2
- package/build/if-run/builtins/sci-embodied/index.js +0 -156
- package/build/if-run/builtins/shell/index.d.ts +0 -2
- package/build/if-run/builtins/shell/index.js +0 -60
- package/build/if-run/builtins/subtract/index.d.ts +0 -2
- package/build/if-run/builtins/subtract/index.js +0 -61
- package/build/if-run/builtins/sum/index.d.ts +0 -2
- package/build/if-run/builtins/sum/index.js +0 -66
- package/build/if-run/builtins/time-sync/index.d.ts +0 -17
- package/build/if-run/builtins/time-sync/index.js +0 -339
- package/build/if-run/config/config.d.ts +0 -9
- package/build/if-run/config/config.js +0 -73
- package/build/if-run/config/index.d.ts +0 -2
- package/build/if-run/config/index.js +0 -8
- package/build/if-run/config/strings.d.ts +0 -64
- package/build/if-run/config/strings.js +0 -76
- package/build/if-run/index.d.ts +0 -2
- package/build/if-run/index.js +0 -63
- package/build/if-run/lib/aggregate.d.ts +0 -15
- package/build/if-run/lib/aggregate.js +0 -123
- package/build/if-run/lib/compute.d.ts +0 -5
- package/build/if-run/lib/compute.js +0 -136
- package/build/if-run/lib/environment.d.ts +0 -5
- package/build/if-run/lib/environment.js +0 -75
- package/build/if-run/lib/exhaust.d.ts +0 -7
- package/build/if-run/lib/exhaust.js +0 -27
- package/build/if-run/lib/explain.d.ts +0 -9
- package/build/if-run/lib/explain.js +0 -43
- package/build/if-run/lib/initialize.d.ts +0 -6
- package/build/if-run/lib/initialize.js +0 -109
- package/build/if-run/lib/regroup.d.ts +0 -5
- package/build/if-run/lib/regroup.js +0 -64
- package/build/if-run/types/aggregation.d.ts +0 -5
- package/build/if-run/types/aggregation.js +0 -6
- package/build/if-run/types/compute.d.ts +0 -29
- package/build/if-run/types/compute.js +0 -3
- package/build/if-run/types/environment.d.ts +0 -18
- package/build/if-run/types/environment.js +0 -3
- package/build/if-run/types/exhaust-plugin-interface.d.ts +0 -7
- package/build/if-run/types/exhaust-plugin-interface.js +0 -3
- package/build/if-run/types/explain.d.ts +0 -10
- package/build/if-run/types/explain.js +0 -3
- package/build/if-run/types/interface.d.ts +0 -3
- package/build/if-run/types/interface.js +0 -6
- package/build/if-run/types/plugin-storage.d.ts +0 -6
- package/build/if-run/types/plugin-storage.js +0 -3
- package/build/if-run/types/process-args.d.ts +0 -25
- package/build/if-run/types/process-args.js +0 -3
- package/build/if-run/types/time-sync.d.ts +0 -17
- package/build/if-run/types/time-sync.js +0 -3
- package/build/if-run/util/aggregation-helper.d.ts +0 -7
- package/build/if-run/util/aggregation-helper.js +0 -47
- package/build/if-run/util/args.d.ts +0 -9
- package/build/if-run/util/args.js +0 -60
- package/build/if-run/util/helpers.d.ts +0 -14
- package/build/if-run/util/helpers.js +0 -57
- package/build/if-run/util/log-memoize.d.ts +0 -3
- package/build/if-run/util/log-memoize.js +0 -19
- package/build/if-run/util/os-checker.d.ts +0 -7
- package/build/if-run/util/os-checker.js +0 -97
- package/build/if-run/util/plugin-storage.d.ts +0 -14
- package/build/if-run/util/plugin-storage.js +0 -34
- package/grafana/IF_GRAFANA_SETUP.md +0 -71
- package/grafana/if_grafana_config.json +0 -370
- package/manifests/examples/builtins/divide/failure-denominator-equal-zero.yml +0 -38
- package/manifests/examples/builtins/interpolation/interpolation.yml +0 -24
- package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +0 -23
- package/manifests/examples/builtins/sci-embodied/failure-missing-expected-lifespan.yml +0 -23
- package/manifests/examples/pipelines/scenario-1.yml +0 -34
- package/manifests/examples/pipelines/scenario-2.yml +0 -52
- package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +0 -72
- package/manifests/outputs/builtins/sci-embodied/failure-missing-expected-lifespan.yaml +0 -69
- package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +0 -449
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Sum = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const utils_1 = require("@grnsft/if-core/utils");
|
|
6
|
-
const validations_1 = require("../../../common/util/validations");
|
|
7
|
-
const config_1 = require("../../config");
|
|
8
|
-
const { GlobalConfigError } = utils_1.ERRORS;
|
|
9
|
-
const { MISSING_GLOBAL_CONFIG } = config_1.STRINGS;
|
|
10
|
-
const Sum = (globalConfig, parametersMetadata) => {
|
|
11
|
-
const metadata = {
|
|
12
|
-
kind: 'execute',
|
|
13
|
-
inputs: parametersMetadata?.inputs,
|
|
14
|
-
outputs: parametersMetadata?.outputs,
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Calculate the sum of each input-paramters.
|
|
18
|
-
*/
|
|
19
|
-
const execute = (inputs) => {
|
|
20
|
-
const safeGlobalConfig = validateGlobalConfig();
|
|
21
|
-
const inputParameters = safeGlobalConfig['input-parameters'];
|
|
22
|
-
const outputParameter = safeGlobalConfig['output-parameter'];
|
|
23
|
-
return inputs.map(input => {
|
|
24
|
-
validateSingleInput(input, inputParameters);
|
|
25
|
-
return {
|
|
26
|
-
...input,
|
|
27
|
-
[outputParameter]: calculateSum(input, inputParameters),
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Checks global config value are valid.
|
|
33
|
-
*/
|
|
34
|
-
const validateGlobalConfig = () => {
|
|
35
|
-
if (!globalConfig) {
|
|
36
|
-
throw new GlobalConfigError(MISSING_GLOBAL_CONFIG);
|
|
37
|
-
}
|
|
38
|
-
const globalConfigSchema = zod_1.z.object({
|
|
39
|
-
'input-parameters': zod_1.z.array(zod_1.z.string()),
|
|
40
|
-
'output-parameter': zod_1.z.string().min(1),
|
|
41
|
-
});
|
|
42
|
-
return (0, validations_1.validate)(globalConfigSchema, globalConfig);
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* Checks for required fields in input.
|
|
46
|
-
*/
|
|
47
|
-
const validateSingleInput = (input, inputParameters) => {
|
|
48
|
-
const inputData = inputParameters.reduce((acc, param) => {
|
|
49
|
-
acc[param] = input[param];
|
|
50
|
-
return acc;
|
|
51
|
-
}, {});
|
|
52
|
-
const validationSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.number());
|
|
53
|
-
(0, validations_1.validate)(validationSchema, inputData);
|
|
54
|
-
return input;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Calculates the sum of the energy components.
|
|
58
|
-
*/
|
|
59
|
-
const calculateSum = (input, inputParameters) => inputParameters.reduce((accumulator, metricToSum) => accumulator + input[metricToSum], 0);
|
|
60
|
-
return {
|
|
61
|
-
metadata,
|
|
62
|
-
execute,
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
exports.Sum = Sum;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3N1bS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBc0I7QUFDdEIsaURBQTZDO0FBUTdDLGtFQUEwRDtBQUUxRCx5Q0FBcUM7QUFFckMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ25DLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFakMsTUFBTSxHQUFHLEdBQUcsQ0FDakIsWUFBdUIsRUFDdkIsa0JBQTRDLEVBQzdCLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNO1FBQ2xDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPO0tBQ3JDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBc0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFN0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztZQUU1QyxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixDQUFDLGVBQWUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDO2FBQ3hELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNwRDtRQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxrQkFBa0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsc0JBQVEsRUFDYixrQkFBa0IsRUFDbEIsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsS0FBbUIsRUFDbkIsZUFBeUIsRUFDekIsRUFBRTtRQUNGLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQ3RDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2IsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFDRCxFQUE0QixDQUM3QixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFBLHNCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBbUIsRUFBRSxlQUF5QixFQUFFLEVBQUUsQ0FDdEUsZUFBZSxDQUFDLE1BQU0sQ0FDcEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUM5RCxDQUFDLENBQ0YsQ0FBQztJQUVKLE9BQU87UUFDTCxRQUFRO1FBQ1IsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDLENBQUM7QUFqRlcsUUFBQSxHQUFHLE9BaUZkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBFeGVjdXRlUGx1Z2luLFxuICBQbHVnaW5QYXJhbXMsXG4gIFN1bUNvbmZpZyxcbiAgUGx1Z2luUGFyYW1ldGVyc01ldGFkYXRhLFxufSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuY29uc3Qge0dsb2JhbENvbmZpZ0Vycm9yfSA9IEVSUk9SUztcbmNvbnN0IHtNSVNTSU5HX0dMT0JBTF9DT05GSUd9ID0gU1RSSU5HUztcblxuZXhwb3J0IGNvbnN0IFN1bSA9IChcbiAgZ2xvYmFsQ29uZmlnOiBTdW1Db25maWcsXG4gIHBhcmFtZXRlcnNNZXRhZGF0YTogUGx1Z2luUGFyYW1ldGVyc01ldGFkYXRhXG4pOiBFeGVjdXRlUGx1Z2luID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAga2luZDogJ2V4ZWN1dGUnLFxuICAgIGlucHV0czogcGFyYW1ldGVyc01ldGFkYXRhPy5pbnB1dHMsXG4gICAgb3V0cHV0czogcGFyYW1ldGVyc01ldGFkYXRhPy5vdXRwdXRzLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHN1bSBvZiBlYWNoIGlucHV0LXBhcmFtdGVycy5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSkgPT4ge1xuICAgIGNvbnN0IHNhZmVHbG9iYWxDb25maWcgPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IGlucHV0UGFyYW1ldGVycyA9IHNhZmVHbG9iYWxDb25maWdbJ2lucHV0LXBhcmFtZXRlcnMnXTtcbiAgICBjb25zdCBvdXRwdXRQYXJhbWV0ZXIgPSBzYWZlR2xvYmFsQ29uZmlnWydvdXRwdXQtcGFyYW1ldGVyJ107XG5cbiAgICByZXR1cm4gaW5wdXRzLm1hcChpbnB1dCA9PiB7XG4gICAgICB2YWxpZGF0ZVNpbmdsZUlucHV0KGlucHV0LCBpbnB1dFBhcmFtZXRlcnMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgW291dHB1dFBhcmFtZXRlcl06IGNhbGN1bGF0ZVN1bShpbnB1dCwgaW5wdXRQYXJhbWV0ZXJzKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBnbG9iYWwgY29uZmlnIHZhbHVlIGFyZSB2YWxpZC5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgR2xvYmFsQ29uZmlnRXJyb3IoTUlTU0lOR19HTE9CQUxfQ09ORklHKTtcbiAgICB9XG5cbiAgICBjb25zdCBnbG9iYWxDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICAnaW5wdXQtcGFyYW1ldGVycyc6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICAnb3V0cHV0LXBhcmFtZXRlcic6IHouc3RyaW5nKCkubWluKDEpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlPHouaW5mZXI8dHlwZW9mIGdsb2JhbENvbmZpZ1NjaGVtYT4+KFxuICAgICAgZ2xvYmFsQ29uZmlnU2NoZW1hLFxuICAgICAgZ2xvYmFsQ29uZmlnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGZvciByZXF1aXJlZCBmaWVsZHMgaW4gaW5wdXQuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZVNpbmdsZUlucHV0ID0gKFxuICAgIGlucHV0OiBQbHVnaW5QYXJhbXMsXG4gICAgaW5wdXRQYXJhbWV0ZXJzOiBzdHJpbmdbXVxuICApID0+IHtcbiAgICBjb25zdCBpbnB1dERhdGEgPSBpbnB1dFBhcmFtZXRlcnMucmVkdWNlKFxuICAgICAgKGFjYywgcGFyYW0pID0+IHtcbiAgICAgICAgYWNjW3BhcmFtXSA9IGlucHV0W3BhcmFtXTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbiAgICApO1xuICAgIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSB6LnJlY29yZCh6LnN0cmluZygpLCB6Lm51bWJlcigpKTtcbiAgICB2YWxpZGF0ZSh2YWxpZGF0aW9uU2NoZW1hLCBpbnB1dERhdGEpO1xuXG4gICAgcmV0dXJuIGlucHV0O1xuICB9O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBzdW0gb2YgdGhlIGVuZXJneSBjb21wb25lbnRzLlxuICAgKi9cbiAgY29uc3QgY2FsY3VsYXRlU3VtID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGlucHV0UGFyYW1ldGVyczogc3RyaW5nW10pID0+XG4gICAgaW5wdXRQYXJhbWV0ZXJzLnJlZHVjZShcbiAgICAgIChhY2N1bXVsYXRvciwgbWV0cmljVG9TdW0pID0+IGFjY3VtdWxhdG9yICsgaW5wdXRbbWV0cmljVG9TdW1dLFxuICAgICAgMFxuICAgICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtZXRhZGF0YSxcbiAgICBleGVjdXRlLFxuICB9O1xufTtcbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { ExecutePlugin, TimeNormalizerConfig, PluginParametersMetadata } from '@grnsft/if-core/types';
|
|
2
|
-
/**
|
|
3
|
-
* Time synchronization plugin converted into framework integrated tool.
|
|
4
|
-
* It can't be requested in `initialize.plugins` section anymore. Instead describe configuration in context.
|
|
5
|
-
* @example
|
|
6
|
-
* ```yaml
|
|
7
|
-
* name: time-sync
|
|
8
|
-
* description: sample in time sync lib
|
|
9
|
-
* tags: sample, time, sync
|
|
10
|
-
* time-sync:
|
|
11
|
-
* start-time: '2023-12-12T00:00:00.000Z'
|
|
12
|
-
* end-time: '2023-12-12T00:01:00.000Z'
|
|
13
|
-
* interval: 5
|
|
14
|
-
* allow-padding: true
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export declare const TimeSync: (globalConfig: TimeNormalizerConfig, parametersMetadata: PluginParametersMetadata) => ExecutePlugin;
|
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimeSync = void 0;
|
|
4
|
-
const types_1 = require("node:util/types");
|
|
5
|
-
const luxon_1 = require("luxon");
|
|
6
|
-
const zod_1 = require("zod");
|
|
7
|
-
const utils_1 = require("@grnsft/if-core/utils");
|
|
8
|
-
const validations_1 = require("../../../common/util/validations");
|
|
9
|
-
const config_1 = require("../../config");
|
|
10
|
-
const aggregate_1 = require("../../lib/aggregate");
|
|
11
|
-
luxon_1.Settings.defaultZone = 'utc';
|
|
12
|
-
const { GlobalConfigError, InvalidDateInInputError, InvalidPaddingError, InvalidInputError, } = utils_1.ERRORS;
|
|
13
|
-
const { INVALID_TIME_NORMALIZATION, INVALID_OBSERVATION_OVERLAP, AVOIDING_PADDING_BY_EDGES, INVALID_DATE_TYPE, START_LOWER_END, TIMESTAMP_REQUIRED, INVALID_DATETIME, } = config_1.STRINGS;
|
|
14
|
-
/**
|
|
15
|
-
* Time synchronization plugin converted into framework integrated tool.
|
|
16
|
-
* It can't be requested in `initialize.plugins` section anymore. Instead describe configuration in context.
|
|
17
|
-
* @example
|
|
18
|
-
* ```yaml
|
|
19
|
-
* name: time-sync
|
|
20
|
-
* description: sample in time sync lib
|
|
21
|
-
* tags: sample, time, sync
|
|
22
|
-
* time-sync:
|
|
23
|
-
* start-time: '2023-12-12T00:00:00.000Z'
|
|
24
|
-
* end-time: '2023-12-12T00:01:00.000Z'
|
|
25
|
-
* interval: 5
|
|
26
|
-
* allow-padding: true
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
const TimeSync = (globalConfig, parametersMetadata) => {
|
|
30
|
-
const metadata = {
|
|
31
|
-
kind: 'execute',
|
|
32
|
-
inputs: {
|
|
33
|
-
...{
|
|
34
|
-
timestamp: {
|
|
35
|
-
description: 'refers to the time of occurrence of the input',
|
|
36
|
-
unit: 'RFC3339',
|
|
37
|
-
'aggregation-method': 'none',
|
|
38
|
-
},
|
|
39
|
-
duration: {
|
|
40
|
-
description: 'refers to the duration of the input',
|
|
41
|
-
unit: 'seconds',
|
|
42
|
-
'aggregation-method': 'sum',
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
...parametersMetadata?.inputs,
|
|
46
|
-
},
|
|
47
|
-
outputs: parametersMetadata?.outputs,
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Take input array and return time-synchronized input array.
|
|
51
|
-
*/
|
|
52
|
-
const execute = (inputs) => {
|
|
53
|
-
const validatedConfig = validateGlobalConfig();
|
|
54
|
-
const timeParams = {
|
|
55
|
-
startTime: luxon_1.DateTime.fromISO(validatedConfig['start-time']),
|
|
56
|
-
endTime: luxon_1.DateTime.fromISO(validatedConfig['end-time']),
|
|
57
|
-
interval: validatedConfig.interval,
|
|
58
|
-
allowPadding: validatedConfig['allow-padding'],
|
|
59
|
-
};
|
|
60
|
-
const pad = checkForPadding(inputs, timeParams);
|
|
61
|
-
validatePadding(pad, timeParams);
|
|
62
|
-
const paddedInputs = padInputs(inputs, pad, timeParams);
|
|
63
|
-
const flattenInputs = paddedInputs.reduce((acc, input, index) => {
|
|
64
|
-
const safeInput = Object.assign({}, input, validateInput(input, index));
|
|
65
|
-
const currentMoment = parseDate(safeInput.timestamp);
|
|
66
|
-
/** Checks if not the first input, then check consistency with previous ones. */
|
|
67
|
-
if (index > 0) {
|
|
68
|
-
const previousInput = paddedInputs[index - 1];
|
|
69
|
-
const previousInputTimestamp = parseDate(previousInput.timestamp);
|
|
70
|
-
/** Checks for timestamps overlap. */
|
|
71
|
-
if (parseDate(previousInput.timestamp).plus({
|
|
72
|
-
seconds: previousInput.duration,
|
|
73
|
-
}) > currentMoment) {
|
|
74
|
-
throw new InvalidInputError(INVALID_OBSERVATION_OVERLAP);
|
|
75
|
-
}
|
|
76
|
-
const compareableTime = previousInputTimestamp.plus({
|
|
77
|
-
seconds: previousInput.duration,
|
|
78
|
-
});
|
|
79
|
-
const timelineGapSize = currentMoment
|
|
80
|
-
.diff(compareableTime)
|
|
81
|
-
.as('seconds');
|
|
82
|
-
/** Checks if there is gap in timeline. */
|
|
83
|
-
if (timelineGapSize > 1) {
|
|
84
|
-
acc.push(...getZeroishInputPerSecondBetweenRange(compareableTime, currentMoment, safeInput));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/** Break down current observation. */
|
|
88
|
-
for (let i = 0; i < safeInput.duration; i++) {
|
|
89
|
-
const normalizedInput = breakDownInput(safeInput, i);
|
|
90
|
-
acc.push(normalizedInput);
|
|
91
|
-
}
|
|
92
|
-
return trimInputsByGlobalTimeline(acc, timeParams);
|
|
93
|
-
}, []);
|
|
94
|
-
const sortedInputs = flattenInputs.sort((a, b) => parseDate(a.timestamp).diff(parseDate(b.timestamp)).as('seconds'));
|
|
95
|
-
return resampleInputs(sortedInputs, timeParams);
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* Dates are passed to `time-sync` both in ISO 8601 format
|
|
99
|
-
* and as a Date object (from the deserialization of a YAML file).
|
|
100
|
-
* If the YAML parser fails to identify as a date, it passes as a string.
|
|
101
|
-
*/
|
|
102
|
-
const parseDate = (date) => {
|
|
103
|
-
if (!date) {
|
|
104
|
-
return luxon_1.DateTime.invalid('Invalid date');
|
|
105
|
-
}
|
|
106
|
-
if ((0, types_1.isDate)(date)) {
|
|
107
|
-
return luxon_1.DateTime.fromJSDate(date);
|
|
108
|
-
}
|
|
109
|
-
if (typeof date === 'string') {
|
|
110
|
-
return luxon_1.DateTime.fromISO(date);
|
|
111
|
-
}
|
|
112
|
-
throw new InvalidDateInInputError(INVALID_DATE_TYPE(date));
|
|
113
|
-
};
|
|
114
|
-
/**
|
|
115
|
-
* Validates input parameters.
|
|
116
|
-
*/
|
|
117
|
-
const validateInput = (input, index) => {
|
|
118
|
-
const schema = zod_1.z.object({
|
|
119
|
-
timestamp: zod_1.z
|
|
120
|
-
.string({
|
|
121
|
-
required_error: TIMESTAMP_REQUIRED(index),
|
|
122
|
-
})
|
|
123
|
-
.datetime({
|
|
124
|
-
message: INVALID_DATETIME(index),
|
|
125
|
-
})
|
|
126
|
-
.or(zod_1.z.date()),
|
|
127
|
-
duration: zod_1.z.number(),
|
|
128
|
-
});
|
|
129
|
-
return (0, validations_1.validate)(schema, input);
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* Validates global config parameters.
|
|
133
|
-
*/
|
|
134
|
-
const validateGlobalConfig = () => {
|
|
135
|
-
if (globalConfig === undefined) {
|
|
136
|
-
throw new GlobalConfigError(INVALID_TIME_NORMALIZATION);
|
|
137
|
-
}
|
|
138
|
-
const schema = zod_1.z
|
|
139
|
-
.object({
|
|
140
|
-
'start-time': zod_1.z.string().datetime(),
|
|
141
|
-
'end-time': zod_1.z.string().datetime(),
|
|
142
|
-
interval: zod_1.z.number(),
|
|
143
|
-
'allow-padding': zod_1.z.boolean(),
|
|
144
|
-
})
|
|
145
|
-
.refine(data => data['start-time'] < data['end-time'], {
|
|
146
|
-
message: START_LOWER_END,
|
|
147
|
-
});
|
|
148
|
-
return (0, validations_1.validate)(schema, globalConfig);
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* Calculates minimal factor.
|
|
152
|
-
*/
|
|
153
|
-
const convertPerInterval = (value, duration) => value / duration;
|
|
154
|
-
/**
|
|
155
|
-
* Normalize time per given second.
|
|
156
|
-
*/
|
|
157
|
-
const normalizeTimePerSecond = (currentRoundMoment, i) => {
|
|
158
|
-
const thisMoment = parseDate(currentRoundMoment).startOf('second');
|
|
159
|
-
return thisMoment.plus({ seconds: i });
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* Breaks down input per minimal time unit.
|
|
163
|
-
*/
|
|
164
|
-
const breakDownInput = (input, i) => {
|
|
165
|
-
const inputKeys = Object.keys(input);
|
|
166
|
-
return inputKeys.reduce((acc, key) => {
|
|
167
|
-
const method = (0, aggregate_1.getAggregationMethod)(key);
|
|
168
|
-
if (key === 'timestamp') {
|
|
169
|
-
const perSecond = normalizeTimePerSecond(input.timestamp, i);
|
|
170
|
-
acc[key] = perSecond.toUTC().toISO() ?? '';
|
|
171
|
-
return acc;
|
|
172
|
-
}
|
|
173
|
-
/** @todo use user defined resolution later */
|
|
174
|
-
if (key === 'duration') {
|
|
175
|
-
acc[key] = 1;
|
|
176
|
-
return acc;
|
|
177
|
-
}
|
|
178
|
-
acc[key] =
|
|
179
|
-
method === 'sum'
|
|
180
|
-
? convertPerInterval(input[key], input['duration'])
|
|
181
|
-
: input[key];
|
|
182
|
-
return acc;
|
|
183
|
-
}, {});
|
|
184
|
-
};
|
|
185
|
-
/**
|
|
186
|
-
* Populates object to fill the gaps in observational timeline using zeroish values.
|
|
187
|
-
*/
|
|
188
|
-
const fillWithZeroishInput = (input, missingTimestamp) => {
|
|
189
|
-
const metrics = Object.keys(input);
|
|
190
|
-
return metrics.reduce((acc, metric) => {
|
|
191
|
-
if (metric === 'timestamp') {
|
|
192
|
-
acc[metric] = missingTimestamp.startOf('second').toUTC().toISO() ?? '';
|
|
193
|
-
return acc;
|
|
194
|
-
}
|
|
195
|
-
/** @todo later will be changed to user defined interval */
|
|
196
|
-
if (metric === 'duration') {
|
|
197
|
-
acc[metric] = 1;
|
|
198
|
-
return acc;
|
|
199
|
-
}
|
|
200
|
-
if (metric === 'time-reserved') {
|
|
201
|
-
acc[metric] = acc['duration'];
|
|
202
|
-
return acc;
|
|
203
|
-
}
|
|
204
|
-
const method = (0, aggregate_1.getAggregationMethod)(metric);
|
|
205
|
-
if (method === 'avg' || method === 'sum') {
|
|
206
|
-
acc[metric] = 0;
|
|
207
|
-
return acc;
|
|
208
|
-
}
|
|
209
|
-
acc[metric] = input[metric];
|
|
210
|
-
return acc;
|
|
211
|
-
}, {});
|
|
212
|
-
};
|
|
213
|
-
/**
|
|
214
|
-
* Checks if `error on padding` is enabled and padding is needed. If so, then throws error.
|
|
215
|
-
*/
|
|
216
|
-
const validatePadding = (pad, params) => {
|
|
217
|
-
const { start, end } = pad;
|
|
218
|
-
const isPaddingNeeded = start || end;
|
|
219
|
-
if (!params.allowPadding && isPaddingNeeded) {
|
|
220
|
-
throw new InvalidPaddingError(AVOIDING_PADDING_BY_EDGES(start, end));
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
/**
|
|
224
|
-
* Checks if padding is needed either at start of the timeline or the end and returns status.
|
|
225
|
-
*/
|
|
226
|
-
const checkForPadding = (inputs, params) => {
|
|
227
|
-
const startDiffInSeconds = parseDate(inputs[0].timestamp)
|
|
228
|
-
.diff(params.startTime)
|
|
229
|
-
.as('seconds');
|
|
230
|
-
const lastInput = inputs[inputs.length - 1];
|
|
231
|
-
const endDiffInSeconds = parseDate(lastInput.timestamp)
|
|
232
|
-
.plus({ second: lastInput.duration })
|
|
233
|
-
.diff(params.endTime)
|
|
234
|
-
.as('seconds');
|
|
235
|
-
return {
|
|
236
|
-
start: startDiffInSeconds > 0,
|
|
237
|
-
end: endDiffInSeconds < 0,
|
|
238
|
-
};
|
|
239
|
-
};
|
|
240
|
-
/**
|
|
241
|
-
* Iterates over given inputs frame, meanwhile checking if aggregation method is `sum`, then calculates it.
|
|
242
|
-
* For methods is `avg` and `none` calculating average of the frame.
|
|
243
|
-
*/
|
|
244
|
-
const resampleInputFrame = (inputsInTimeslot) => inputsInTimeslot.reduce((acc, input, index, inputs) => {
|
|
245
|
-
const metrics = Object.keys(input);
|
|
246
|
-
metrics.forEach(metric => {
|
|
247
|
-
let method = (0, aggregate_1.getAggregationMethod)(metric);
|
|
248
|
-
if (metric === 'timestamp') {
|
|
249
|
-
acc[metric] = inputs[0][metric];
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
if (metric === 'duration') {
|
|
253
|
-
method = 'sum';
|
|
254
|
-
}
|
|
255
|
-
if (!method) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
acc[metric] = acc[metric] ?? 0;
|
|
259
|
-
if (method === 'sum') {
|
|
260
|
-
acc[metric] += input[metric];
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
if (method === 'none') {
|
|
264
|
-
acc[metric] = input[metric];
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* If timeslot contains records more than one, then divide each metric by the timeslot length,
|
|
269
|
-
* so that their sum yields the timeslot average.
|
|
270
|
-
*/
|
|
271
|
-
if (inputsInTimeslot.length > 1 &&
|
|
272
|
-
index === inputsInTimeslot.length - 1) {
|
|
273
|
-
acc[metric] /= inputsInTimeslot.length;
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
acc[metric] += input[metric];
|
|
277
|
-
});
|
|
278
|
-
return acc;
|
|
279
|
-
}, {});
|
|
280
|
-
/**
|
|
281
|
-
* Takes each array frame with interval length, then aggregating them together as from units.yaml file.
|
|
282
|
-
*/
|
|
283
|
-
const resampleInputs = (inputs, params) => inputs.reduce((acc, _input, index, inputs) => {
|
|
284
|
-
const frameStart = index * params.interval;
|
|
285
|
-
const frameEnd = (index + 1) * params.interval;
|
|
286
|
-
const inputsFrame = inputs.slice(frameStart, frameEnd);
|
|
287
|
-
const resampledInput = resampleInputFrame(inputsFrame);
|
|
288
|
-
/** Checks if resampled input is not empty, then includes in result. */
|
|
289
|
-
if (Object.keys(resampledInput).length > 0) {
|
|
290
|
-
acc.push(resampledInput);
|
|
291
|
-
}
|
|
292
|
-
return acc;
|
|
293
|
-
}, []);
|
|
294
|
-
/**
|
|
295
|
-
* Pads zeroish inputs from the beginning or at the end of the inputs if needed.
|
|
296
|
-
*/
|
|
297
|
-
const padInputs = (inputs, pad, params) => {
|
|
298
|
-
const { start, end } = pad;
|
|
299
|
-
const paddedFromBeginning = [];
|
|
300
|
-
if (start) {
|
|
301
|
-
paddedFromBeginning.push(...getZeroishInputPerSecondBetweenRange(params.startTime, parseDate(inputs[0].timestamp), inputs[0]));
|
|
302
|
-
}
|
|
303
|
-
const paddedArray = paddedFromBeginning.concat(inputs);
|
|
304
|
-
if (end) {
|
|
305
|
-
const lastInput = inputs[inputs.length - 1];
|
|
306
|
-
const lastInputEnd = parseDate(lastInput.timestamp).plus({
|
|
307
|
-
seconds: lastInput.duration,
|
|
308
|
-
});
|
|
309
|
-
paddedArray.push(...getZeroishInputPerSecondBetweenRange(lastInputEnd, params.endTime.plus({ seconds: 1 }), lastInput));
|
|
310
|
-
}
|
|
311
|
-
return paddedArray;
|
|
312
|
-
};
|
|
313
|
-
const getZeroishInputPerSecondBetweenRange = (startDate, endDate, templateInput) => {
|
|
314
|
-
const array = [];
|
|
315
|
-
const dateRange = luxon_1.Interval.fromDateTimes(startDate, endDate);
|
|
316
|
-
for (const interval of dateRange.splitBy({ second: 1 })) {
|
|
317
|
-
array.push(fillWithZeroishInput(templateInput,
|
|
318
|
-
// as far as I can tell, start will never be null
|
|
319
|
-
// because if we pass an invalid start/endDate to
|
|
320
|
-
// Interval, we get a zero length array as the range
|
|
321
|
-
interval.start || luxon_1.DateTime.invalid('not expected - start is null')));
|
|
322
|
-
}
|
|
323
|
-
return array;
|
|
324
|
-
};
|
|
325
|
-
/*
|
|
326
|
-
* Checks if input's timestamp is included in global specified period then leaves it, otherwise.
|
|
327
|
-
*/
|
|
328
|
-
const trimInputsByGlobalTimeline = (inputs, params) => inputs.reduce((acc, item) => {
|
|
329
|
-
const { timestamp } = item;
|
|
330
|
-
if (parseDate(timestamp) >= params.startTime &&
|
|
331
|
-
parseDate(timestamp) <= params.endTime) {
|
|
332
|
-
acc.push(item);
|
|
333
|
-
}
|
|
334
|
-
return acc;
|
|
335
|
-
}, []);
|
|
336
|
-
return { metadata, execute };
|
|
337
|
-
};
|
|
338
|
-
exports.TimeSync = TimeSync;
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaWYtcnVuL2J1aWx0aW5zL3RpbWUtc3luYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFFdkMsaUNBQXVFO0FBQ3ZFLDZCQUFzQjtBQUN0QixpREFBNkM7QUFXN0Msa0VBQTBEO0FBRTFELHlDQUFxQztBQUNyQyxtREFBeUQ7QUFFekQsZ0JBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRTdCLE1BQU0sRUFDSixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDbEIsR0FBRyxjQUFNLENBQUM7QUFFWCxNQUFNLEVBQ0osMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZ0JBQWdCLEdBQ2pCLEdBQUcsZ0JBQU8sQ0FBQztBQUVaOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FDdEIsWUFBa0MsRUFDbEMsa0JBQTRDLEVBQzdCLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRTtZQUNOLEdBQUk7Z0JBQ0YsU0FBUyxFQUFFO29CQUNULFdBQVcsRUFBRSwrQ0FBK0M7b0JBQzVELElBQUksRUFBRSxTQUFTO29CQUNmLG9CQUFvQixFQUFFLE1BQU07aUJBQzdCO2dCQUNELFFBQVEsRUFBRTtvQkFDUixXQUFXLEVBQUUscUNBQXFDO29CQUNsRCxJQUFJLEVBQUUsU0FBUztvQkFDZixvQkFBb0IsRUFBRSxLQUFLO2lCQUM1QjthQUNvQjtZQUN2QixHQUFHLGtCQUFrQixFQUFFLE1BQU07U0FDOUI7UUFDRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTztLQUNyQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLE9B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QUksRUFBRSxFQUFFO1FBQzFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFekIsSUFDRSxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVM7WUFDeEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQ3RDO1lBQ0EsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQW9CLENBQUMsQ0FBQztJQUUzQixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQWxjVyxRQUFBLFFBQVEsWUFrY25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0RhdGV9IGZyb20gJ25vZGU6dXRpbC90eXBlcyc7XG5cbmltcG9ydCB7U2V0dGluZ3MsIERhdGVUaW1lLCBEYXRlVGltZU1heWJlVmFsaWQsIEludGVydmFsfSBmcm9tICdsdXhvbic7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIEV4ZWN1dGVQbHVnaW4sXG4gIFBsdWdpblBhcmFtcyxcbiAgUGFkZGluZ1JlY2VpcHQsXG4gIFRpbWVOb3JtYWxpemVyQ29uZmlnLFxuICBUaW1lUGFyYW1zLFxuICBQbHVnaW5QYXJhbWV0ZXJzTWV0YWRhdGEsXG4gIFBhcmFtZXRlck1ldGFkYXRhLFxufSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdHlwZXMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC92YWxpZGF0aW9ucyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7Z2V0QWdncmVnYXRpb25NZXRob2R9IGZyb20gJy4uLy4uL2xpYi9hZ2dyZWdhdGUnO1xuXG5TZXR0aW5ncy5kZWZhdWx0Wm9uZSA9ICd1dGMnO1xuXG5jb25zdCB7XG4gIEdsb2JhbENvbmZpZ0Vycm9yLFxuICBJbnZhbGlkRGF0ZUluSW5wdXRFcnJvcixcbiAgSW52YWxpZFBhZGRpbmdFcnJvcixcbiAgSW52YWxpZElucHV0RXJyb3IsXG59ID0gRVJST1JTO1xuXG5jb25zdCB7XG4gIElOVkFMSURfVElNRV9OT1JNQUxJWkFUSU9OLFxuICBJTlZBTElEX09CU0VSVkFUSU9OX09WRVJMQVAsXG4gIEFWT0lESU5HX1BBRERJTkdfQllfRURHRVMsXG4gIElOVkFMSURfREFURV9UWVBFLFxuICBTVEFSVF9MT1dFUl9FTkQsXG4gIFRJTUVTVEFNUF9SRVFVSVJFRCxcbiAgSU5WQUxJRF9EQVRFVElNRSxcbn0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIFRpbWUgc3luY2hyb25pemF0aW9uIHBsdWdpbiBjb252ZXJ0ZWQgaW50byBmcmFtZXdvcmsgaW50ZWdyYXRlZCB0b29sLlxuICogSXQgY2FuJ3QgYmUgcmVxdWVzdGVkIGluIGBpbml0aWFsaXplLnBsdWdpbnNgIHNlY3Rpb24gYW55bW9yZS4gSW5zdGVhZCBkZXNjcmliZSBjb25maWd1cmF0aW9uIGluIGNvbnRleHQuXG4gKiBAZXhhbXBsZVxuICogYGBgeWFtbFxuICogbmFtZTogdGltZS1zeW5jXG4gKiBkZXNjcmlwdGlvbjogc2FtcGxlIGluIHRpbWUgc3luYyBsaWJcbiAqIHRhZ3M6IHNhbXBsZSwgdGltZSwgc3luY1xuICogdGltZS1zeW5jOlxuICogICBzdGFydC10aW1lOiAnMjAyMy0xMi0xMlQwMDowMDowMC4wMDBaJ1xuICogICBlbmQtdGltZTogJzIwMjMtMTItMTJUMDA6MDE6MDAuMDAwWidcbiAqICAgaW50ZXJ2YWw6IDVcbiAqICAgYWxsb3ctcGFkZGluZzogdHJ1ZVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBUaW1lU3luYyA9IChcbiAgZ2xvYmFsQ29uZmlnOiBUaW1lTm9ybWFsaXplckNvbmZpZyxcbiAgcGFyYW1ldGVyc01ldGFkYXRhOiBQbHVnaW5QYXJhbWV0ZXJzTWV0YWRhdGFcbik6IEV4ZWN1dGVQbHVnaW4gPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICBraW5kOiAnZXhlY3V0ZScsXG4gICAgaW5wdXRzOiB7XG4gICAgICAuLi4oe1xuICAgICAgICB0aW1lc3RhbXA6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ3JlZmVycyB0byB0aGUgdGltZSBvZiBvY2N1cnJlbmNlIG9mIHRoZSBpbnB1dCcsXG4gICAgICAgICAgdW5pdDogJ1JGQzMzMzknLFxuICAgICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiAnbm9uZScsXG4gICAgICAgIH0sXG4gICAgICAgIGR1cmF0aW9uOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdyZWZlcnMgdG8gdGhlIGR1cmF0aW9uIG9mIHRoZSBpbnB1dCcsXG4gICAgICAgICAgdW5pdDogJ3NlY29uZHMnLFxuICAgICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOiAnc3VtJyxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgUGFyYW1ldGVyTWV0YWRhdGEpLFxuICAgICAgLi4ucGFyYW1ldGVyc01ldGFkYXRhPy5pbnB1dHMsXG4gICAgfSxcbiAgICBvdXRwdXRzOiBwYXJhbWV0ZXJzTWV0YWRhdGE/Lm91dHB1dHMsXG4gIH07XG5cbiAgLyoqXG4gICAqIFRha2UgaW5wdXQgYXJyYXkgYW5kIHJldHVybiB0aW1lLXN5bmNocm9uaXplZCBpbnB1dCBhcnJheS5cbiAgICovXG4gIGNvbnN0IGV4ZWN1dGUgPSAoaW5wdXRzOiBQbHVnaW5QYXJhbXNbXSk6IFBsdWdpblBhcmFtc1tdID0+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRDb25maWcgPSB2YWxpZGF0ZUdsb2JhbENvbmZpZygpO1xuICAgIGNvbnN0IHRpbWVQYXJhbXMgPSB7XG4gICAgICBzdGFydFRpbWU6IERhdGVUaW1lLmZyb21JU08odmFsaWRhdGVkQ29uZmlnWydzdGFydC10aW1lJ10pLFxuICAgICAgZW5kVGltZTogRGF0ZVRpbWUuZnJvbUlTTyh2YWxpZGF0ZWRDb25maWdbJ2VuZC10aW1lJ10pLFxuICAgICAgaW50ZXJ2YWw6IHZhbGlkYXRlZENvbmZpZy5pbnRlcnZhbCxcbiAgICAgIGFsbG93UGFkZGluZzogdmFsaWRhdGVkQ29uZmlnWydhbGxvdy1wYWRkaW5nJ10sXG4gICAgfTtcblxuICAgIGNvbnN0IHBhZCA9IGNoZWNrRm9yUGFkZGluZyhpbnB1dHMsIHRpbWVQYXJhbXMpO1xuICAgIHZhbGlkYXRlUGFkZGluZyhwYWQsIHRpbWVQYXJhbXMpO1xuXG4gICAgY29uc3QgcGFkZGVkSW5wdXRzID0gcGFkSW5wdXRzKGlucHV0cywgcGFkLCB0aW1lUGFyYW1zKTtcblxuICAgIGNvbnN0IGZsYXR0ZW5JbnB1dHMgPSBwYWRkZWRJbnB1dHMucmVkdWNlKFxuICAgICAgKGFjYzogUGx1Z2luUGFyYW1zW10sIGlucHV0LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzYWZlSW5wdXQgPSBPYmplY3QuYXNzaWduKHt9LCBpbnB1dCwgdmFsaWRhdGVJbnB1dChpbnB1dCwgaW5kZXgpKTtcbiAgICAgICAgY29uc3QgY3VycmVudE1vbWVudCA9IHBhcnNlRGF0ZShzYWZlSW5wdXQudGltZXN0YW1wKTtcblxuICAgICAgICAvKiogQ2hlY2tzIGlmIG5vdCB0aGUgZmlyc3QgaW5wdXQsIHRoZW4gY2hlY2sgY29uc2lzdGVuY3kgd2l0aCBwcmV2aW91cyBvbmVzLiAqL1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNJbnB1dCA9IHBhZGRlZElucHV0c1tpbmRleCAtIDFdO1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzSW5wdXRUaW1lc3RhbXAgPSBwYXJzZURhdGUocHJldmlvdXNJbnB1dC50aW1lc3RhbXApO1xuXG4gICAgICAgICAgLyoqIENoZWNrcyBmb3IgdGltZXN0YW1wcyBvdmVybGFwLiAqL1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcnNlRGF0ZShwcmV2aW91c0lucHV0LnRpbWVzdGFtcCkucGx1cyh7XG4gICAgICAgICAgICAgIHNlY29uZHM6IHByZXZpb3VzSW5wdXQuZHVyYXRpb24sXG4gICAgICAgICAgICB9KSA+IGN1cnJlbnRNb21lbnRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkSW5wdXRFcnJvcihJTlZBTElEX09CU0VSVkFUSU9OX09WRVJMQVApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbXBhcmVhYmxlVGltZSA9IHByZXZpb3VzSW5wdXRUaW1lc3RhbXAucGx1cyh7XG4gICAgICAgICAgICBzZWNvbmRzOiBwcmV2aW91c0lucHV0LmR1cmF0aW9uLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgdGltZWxpbmVHYXBTaXplID0gY3VycmVudE1vbWVudFxuICAgICAgICAgICAgLmRpZmYoY29tcGFyZWFibGVUaW1lKVxuICAgICAgICAgICAgLmFzKCdzZWNvbmRzJyk7XG5cbiAgICAgICAgICAvKiogQ2hlY2tzIGlmIHRoZXJlIGlzIGdhcCBpbiB0aW1lbGluZS4gKi9cbiAgICAgICAgICBpZiAodGltZWxpbmVHYXBTaXplID4gMSkge1xuICAgICAgICAgICAgYWNjLnB1c2goXG4gICAgICAgICAgICAgIC4uLmdldFplcm9pc2hJbnB1dFBlclNlY29uZEJldHdlZW5SYW5nZShcbiAgICAgICAgICAgICAgICBjb21wYXJlYWJsZVRpbWUsXG4gICAgICAgICAgICAgICAgY3VycmVudE1vbWVudCxcbiAgICAgICAgICAgICAgICBzYWZlSW5wdXRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqIEJyZWFrIGRvd24gY3VycmVudCBvYnNlcnZhdGlvbi4gKi9cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzYWZlSW5wdXQuZHVyYXRpb247IGkrKykge1xuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRJbnB1dCA9IGJyZWFrRG93bklucHV0KHNhZmVJbnB1dCwgaSk7XG5cbiAgICAgICAgICBhY2MucHVzaChub3JtYWxpemVkSW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRyaW1JbnB1dHNCeUdsb2JhbFRpbWVsaW5lKGFjYywgdGltZVBhcmFtcyk7XG4gICAgICB9LFxuICAgICAgW10gYXMgUGx1Z2luUGFyYW1zW11cbiAgICApO1xuXG4gICAgY29uc3Qgc29ydGVkSW5wdXRzID0gZmxhdHRlbklucHV0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgcGFyc2VEYXRlKGEudGltZXN0YW1wKS5kaWZmKHBhcnNlRGF0ZShiLnRpbWVzdGFtcCkpLmFzKCdzZWNvbmRzJylcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc2FtcGxlSW5wdXRzKHNvcnRlZElucHV0cywgdGltZVBhcmFtcykgYXMgUGx1Z2luUGFyYW1zW107XG4gIH07XG5cbiAgLyoqXG4gICAqIERhdGVzIGFyZSBwYXNzZWQgdG8gYHRpbWUtc3luY2AgYm90aCBpbiBJU08gODYwMSBmb3JtYXRcbiAgICogYW5kIGFzIGEgRGF0ZSBvYmplY3QgKGZyb20gdGhlIGRlc2VyaWFsaXphdGlvbiBvZiBhIFlBTUwgZmlsZSkuXG4gICAqIElmIHRoZSBZQU1MIHBhcnNlciBmYWlscyB0byBpZGVudGlmeSBhcyBhIGRhdGUsIGl0IHBhc3NlcyBhcyBhIHN0cmluZy5cbiAgICovXG4gIGNvbnN0IHBhcnNlRGF0ZSA9IChkYXRlOiBEYXRlIHwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgnSW52YWxpZCBkYXRlJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzRGF0ZShkYXRlKSkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21JU08oZGF0ZSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEludmFsaWREYXRlSW5JbnB1dEVycm9yKElOVkFMSURfREFURV9UWVBFKGRhdGUpKTtcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIGlucHV0IHBhcmFtZXRlcnMuXG4gICAqL1xuICBjb25zdCB2YWxpZGF0ZUlucHV0ID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgICB0aW1lc3RhbXA6IHpcbiAgICAgICAgLnN0cmluZyh7XG4gICAgICAgICAgcmVxdWlyZWRfZXJyb3I6IFRJTUVTVEFNUF9SRVFVSVJFRChpbmRleCksXG4gICAgICAgIH0pXG4gICAgICAgIC5kYXRldGltZSh7XG4gICAgICAgICAgbWVzc2FnZTogSU5WQUxJRF9EQVRFVElNRShpbmRleCksXG4gICAgICAgIH0pXG4gICAgICAgIC5vcih6LmRhdGUoKSksXG4gICAgICBkdXJhdGlvbjogei5udW1iZXIoKSxcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZTx6LmluZmVyPHR5cGVvZiBzY2hlbWE+PihzY2hlbWEsIGlucHV0KTtcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIGdsb2JhbCBjb25maWcgcGFyYW1ldGVycy5cbiAgICovXG4gIGNvbnN0IHZhbGlkYXRlR2xvYmFsQ29uZmlnID0gKCkgPT4ge1xuICAgIGlmIChnbG9iYWxDb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEdsb2JhbENvbmZpZ0Vycm9yKElOVkFMSURfVElNRV9OT1JNQUxJWkFUSU9OKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgJ3N0YXJ0LXRpbWUnOiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gICAgICAgICdlbmQtdGltZSc6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgICAgICAgaW50ZXJ2YWw6IHoubnVtYmVyKCksXG4gICAgICAgICdhbGxvdy1wYWRkaW5nJzogei5ib29sZWFuKCksXG4gICAgICB9KVxuICAgICAgLnJlZmluZShkYXRhID0+IGRhdGFbJ3N0YXJ0LXRpbWUnXSA8IGRhdGFbJ2VuZC10aW1lJ10sIHtcbiAgICAgICAgbWVzc2FnZTogU1RBUlRfTE9XRVJfRU5ELFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGU8ei5pbmZlcjx0eXBlb2Ygc2NoZW1hPj4oc2NoZW1hLCBnbG9iYWxDb25maWcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIG1pbmltYWwgZmFjdG9yLlxuICAgKi9cbiAgY29uc3QgY29udmVydFBlckludGVydmFsID0gKHZhbHVlOiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpID0+XG4gICAgdmFsdWUgLyBkdXJhdGlvbjtcblxuICAvKipcbiAgICogTm9ybWFsaXplIHRpbWUgcGVyIGdpdmVuIHNlY29uZC5cbiAgICovXG4gIGNvbnN0IG5vcm1hbGl6ZVRpbWVQZXJTZWNvbmQgPSAoXG4gICAgY3VycmVudFJvdW5kTW9tZW50OiBEYXRlIHwgc3RyaW5nLFxuICAgIGk6IG51bWJlclxuICApID0+IHtcbiAgICBjb25zdCB0aGlzTW9tZW50ID0gcGFyc2VEYXRlKGN1cnJlbnRSb3VuZE1vbWVudCkuc3RhcnRPZignc2Vjb25kJyk7XG5cbiAgICByZXR1cm4gdGhpc01vbWVudC5wbHVzKHtzZWNvbmRzOiBpfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEJyZWFrcyBkb3duIGlucHV0IHBlciBtaW5pbWFsIHRpbWUgdW5pdC5cbiAgICovXG4gIGNvbnN0IGJyZWFrRG93bklucHV0ID0gKGlucHV0OiBQbHVnaW5QYXJhbXMsIGk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGlucHV0S2V5cyA9IE9iamVjdC5rZXlzKGlucHV0KTtcblxuICAgIHJldHVybiBpbnB1dEtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgY29uc3QgbWV0aG9kID0gZ2V0QWdncmVnYXRpb25NZXRob2Qoa2V5KTtcblxuICAgICAgaWYgKGtleSA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgY29uc3QgcGVyU2Vjb25kID0gbm9ybWFsaXplVGltZVBlclNlY29uZChpbnB1dC50aW1lc3RhbXAsIGkpO1xuICAgICAgICBhY2Nba2V5XSA9IHBlclNlY29uZC50b1VUQygpLnRvSVNPKCkgPz8gJyc7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgLyoqIEB0b2RvIHVzZSB1c2VyIGRlZmluZWQgcmVzb2x1dGlvbiBsYXRlciAqL1xuICAgICAgaWYgKGtleSA9PT0gJ2R1cmF0aW9uJykge1xuICAgICAgICBhY2Nba2V5XSA9IDE7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgYWNjW2tleV0gPVxuICAgICAgICBtZXRob2QgPT09ICdzdW0nXG4gICAgICAgICAgPyBjb252ZXJ0UGVySW50ZXJ2YWwoaW5wdXRba2V5XSwgaW5wdXRbJ2R1cmF0aW9uJ10pXG4gICAgICAgICAgOiBpbnB1dFtrZXldO1xuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIFBsdWdpblBhcmFtcyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFBvcHVsYXRlcyBvYmplY3QgdG8gZmlsbCB0aGUgZ2FwcyBpbiBvYnNlcnZhdGlvbmFsIHRpbWVsaW5lIHVzaW5nIHplcm9pc2ggdmFsdWVzLlxuICAgKi9cbiAgY29uc3QgZmlsbFdpdGhaZXJvaXNoSW5wdXQgPSAoXG4gICAgaW5wdXQ6IFBsdWdpblBhcmFtcyxcbiAgICBtaXNzaW5nVGltZXN0YW1wOiBEYXRlVGltZU1heWJlVmFsaWRcbiAgKSA9PiB7XG4gICAgY29uc3QgbWV0cmljcyA9IE9iamVjdC5rZXlzKGlucHV0KTtcblxuICAgIHJldHVybiBtZXRyaWNzLnJlZHVjZSgoYWNjLCBtZXRyaWMpID0+IHtcbiAgICAgIGlmIChtZXRyaWMgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgIGFjY1ttZXRyaWNdID0gbWlzc2luZ1RpbWVzdGFtcC5zdGFydE9mKCdzZWNvbmQnKS50b1VUQygpLnRvSVNPKCkgPz8gJyc7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgLyoqIEB0b2RvIGxhdGVyIHdpbGwgYmUgY2hhbmdlZCB0byB1c2VyIGRlZmluZWQgaW50ZXJ2YWwgKi9cbiAgICAgIGlmIChtZXRyaWMgPT09ICdkdXJhdGlvbicpIHtcbiAgICAgICAgYWNjW21ldHJpY10gPSAxO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRyaWMgPT09ICd0aW1lLXJlc2VydmVkJykge1xuICAgICAgICBhY2NbbWV0cmljXSA9IGFjY1snZHVyYXRpb24nXTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRob2QgPSBnZXRBZ2dyZWdhdGlvbk1ldGhvZChtZXRyaWMpO1xuXG4gICAgICBpZiAobWV0aG9kID09PSAnYXZnJyB8fCBtZXRob2QgPT09ICdzdW0nKSB7XG4gICAgICAgIGFjY1ttZXRyaWNdID0gMDtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICBhY2NbbWV0cmljXSA9IGlucHV0W21ldHJpY107XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUGx1Z2luUGFyYW1zKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBlcnJvciBvbiBwYWRkaW5nYCBpcyBlbmFibGVkIGFuZCBwYWRkaW5nIGlzIG5lZWRlZC4gSWYgc28sIHRoZW4gdGhyb3dzIGVycm9yLlxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVQYWRkaW5nID0gKHBhZDogUGFkZGluZ1JlY2VpcHQsIHBhcmFtczogVGltZVBhcmFtcyk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHtzdGFydCwgZW5kfSA9IHBhZDtcbiAgICBjb25zdCBpc1BhZGRpbmdOZWVkZWQgPSBzdGFydCB8fCBlbmQ7XG5cbiAgICBpZiAoIXBhcmFtcy5hbGxvd1BhZGRpbmcgJiYgaXNQYWRkaW5nTmVlZGVkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhZGRpbmdFcnJvcihBVk9JRElOR19QQURESU5HX0JZX0VER0VTKHN0YXJ0LCBlbmQpKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwYWRkaW5nIGlzIG5lZWRlZCBlaXRoZXIgYXQgc3RhcnQgb2YgdGhlIHRpbWVsaW5lIG9yIHRoZSBlbmQgYW5kIHJldHVybnMgc3RhdHVzLlxuICAgKi9cbiAgY29uc3QgY2hlY2tGb3JQYWRkaW5nID0gKFxuICAgIGlucHV0czogUGx1Z2luUGFyYW1zW10sXG4gICAgcGFyYW1zOiBUaW1lUGFyYW1zXG4gICk6IFBhZGRpbmdSZWNlaXB0ID0+IHtcbiAgICBjb25zdCBzdGFydERpZmZJblNlY29uZHMgPSBwYXJzZURhdGUoaW5wdXRzWzBdLnRpbWVzdGFtcClcbiAgICAgIC5kaWZmKHBhcmFtcy5zdGFydFRpbWUpXG4gICAgICAuYXMoJ3NlY29uZHMnKTtcblxuICAgIGNvbnN0IGxhc3RJbnB1dCA9IGlucHV0c1tpbnB1dHMubGVuZ3RoIC0gMV07XG5cbiAgICBjb25zdCBlbmREaWZmSW5TZWNvbmRzID0gcGFyc2VEYXRlKGxhc3RJbnB1dC50aW1lc3RhbXApXG4gICAgICAucGx1cyh7c2Vjb25kOiBsYXN0SW5wdXQuZHVyYXRpb259KVxuICAgICAgLmRpZmYocGFyYW1zLmVuZFRpbWUpXG4gICAgICAuYXMoJ3NlY29uZHMnKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogc3RhcnREaWZmSW5TZWNvbmRzID4gMCxcbiAgICAgIGVuZDogZW5kRGlmZkluU2Vjb25kcyA8IDAsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogSXRlcmF0ZXMgb3ZlciBnaXZlbiBpbnB1dHMgZnJhbWUsIG1lYW53aGlsZSBjaGVja2luZyBpZiBhZ2dyZWdhdGlvbiBtZXRob2QgaXMgYHN1bWAsIHRoZW4gY2FsY3VsYXRlcyBpdC5cbiAgICogRm9yIG1ldGhvZHMgaXMgYGF2Z2AgYW5kIGBub25lYCBjYWxjdWxhdGluZyBhdmVyYWdlIG9mIHRoZSBmcmFtZS5cbiAgICovXG4gIGNvbnN0IHJlc2FtcGxlSW5wdXRGcmFtZSA9IChpbnB1dHNJblRpbWVzbG90OiBQbHVnaW5QYXJhbXNbXSkgPT5cbiAgICBpbnB1dHNJblRpbWVzbG90LnJlZHVjZSgoYWNjLCBpbnB1dCwgaW5kZXgsIGlucHV0cykgPT4ge1xuICAgICAgY29uc3QgbWV0cmljcyA9IE9iamVjdC5rZXlzKGlucHV0KTtcblxuICAgICAgbWV0cmljcy5mb3JFYWNoKG1ldHJpYyA9PiB7XG4gICAgICAgIGxldCBtZXRob2QgPSBnZXRBZ2dyZWdhdGlvbk1ldGhvZChtZXRyaWMpO1xuXG4gICAgICAgIGlmIChtZXRyaWMgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgICAgYWNjW21ldHJpY10gPSBpbnB1dHNbMF1bbWV0cmljXTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRyaWMgPT09ICdkdXJhdGlvbicpIHtcbiAgICAgICAgICBtZXRob2QgPSAnc3VtJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWV0aG9kKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjW21ldHJpY10gPSBhY2NbbWV0cmljXSA/PyAwO1xuXG4gICAgICAgIGlmIChtZXRob2QgPT09ICdzdW0nKSB7XG4gICAgICAgICAgYWNjW21ldHJpY10gKz0gaW5wdXRbbWV0cmljXTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRob2QgPT09ICdub25lJykge1xuICAgICAgICAgIGFjY1ttZXRyaWNdID0gaW5wdXRbbWV0cmljXTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aW1lc2xvdCBjb250YWlucyByZWNvcmRzIG1vcmUgdGhhbiBvbmUsIHRoZW4gZGl2aWRlIGVhY2ggbWV0cmljIGJ5IHRoZSB0aW1lc2xvdCBsZW5ndGgsXG4gICAgICAgICAqICBzbyB0aGF0IHRoZWlyIHN1bSB5aWVsZHMgdGhlIHRpbWVzbG90IGF2ZXJhZ2UuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5wdXRzSW5UaW1lc2xvdC5sZW5ndGggPiAxICYmXG4gICAgICAgICAgaW5kZXggPT09IGlucHV0c0luVGltZXNsb3QubGVuZ3RoIC0gMVxuICAgICAgICApIHtcbiAgICAgICAgICBhY2NbbWV0cmljXSAvPSBpbnB1dHNJblRpbWVzbG90Lmxlbmd0aDtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjY1ttZXRyaWNdICs9IGlucHV0W21ldHJpY107XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBQbHVnaW5QYXJhbXMpO1xuXG4gIC8qKlxuICAgKiBUYWtlcyBlYWNoIGFycmF5IGZyYW1lIHdpdGggaW50ZXJ2YWwgbGVuZ3RoLCB0aGVuIGFnZ3JlZ2F0aW5nIHRoZW0gdG9nZXRoZXIgYXMgZnJvbSB1bml0cy55YW1sIGZpbGUuXG4gICAqL1xuICBjb25zdCByZXNhbXBsZUlucHV0cyA9IChpbnB1dHM6IFBsdWdpblBhcmFtc1tdLCBwYXJhbXM6IFRpbWVQYXJhbXMpID0+XG4gICAgaW5wdXRzLnJlZHVjZSgoYWNjOiBQbHVnaW5QYXJhbXNbXSwgX2lucHV0LCBpbmRleCwgaW5wdXRzKSA9PiB7XG4gICAgICBjb25zdCBmcmFtZVN0YXJ0ID0gaW5kZXggKiBwYXJhbXMuaW50ZXJ2YWw7XG4gICAgICBjb25zdCBmcmFtZUVuZCA9IChpbmRleCArIDEpICogcGFyYW1zLmludGVydmFsO1xuICAgICAgY29uc3QgaW5wdXRzRnJhbWUgPSBpbnB1dHMuc2xpY2UoZnJhbWVTdGFydCwgZnJhbWVFbmQpO1xuXG4gICAgICBjb25zdCByZXNhbXBsZWRJbnB1dCA9IHJlc2FtcGxlSW5wdXRGcmFtZShpbnB1dHNGcmFtZSk7XG5cbiAgICAgIC8qKiBDaGVja3MgaWYgcmVzYW1wbGVkIGlucHV0IGlzIG5vdCBlbXB0eSwgdGhlbiBpbmNsdWRlcyBpbiByZXN1bHQuICovXG4gICAgICBpZiAoT2JqZWN0LmtleXMocmVzYW1wbGVkSW5wdXQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWNjLnB1c2gocmVzYW1wbGVkSW5wdXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdIGFzIFBsdWdpblBhcmFtc1tdKTtcblxuICAvKipcbiAgICogUGFkcyB6ZXJvaXNoIGlucHV0cyBmcm9tIHRoZSBiZWdpbm5pbmcgb3IgYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXRzIGlmIG5lZWRlZC5cbiAgICovXG4gIGNvbnN0IHBhZElucHV0cyA9IChcbiAgICBpbnB1dHM6IFBsdWdpblBhcmFtc1tdLFxuICAgIHBhZDogUGFkZGluZ1JlY2VpcHQsXG4gICAgcGFyYW1zOiBUaW1lUGFyYW1zXG4gICk6IFBsdWdpblBhcmFtc1tdID0+IHtcbiAgICBjb25zdCB7c3RhcnQsIGVuZH0gPSBwYWQ7XG4gICAgY29uc3QgcGFkZGVkRnJvbUJlZ2lubmluZyA9IFtdO1xuXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBwYWRkZWRGcm9tQmVnaW5uaW5nLnB1c2goXG4gICAgICAgIC4uLmdldFplcm9pc2hJbnB1dFBlclNlY29uZEJldHdlZW5SYW5nZShcbiAgICAgICAgICBwYXJhbXMuc3RhcnRUaW1lLFxuICAgICAgICAgIHBhcnNlRGF0ZShpbnB1dHNbMF0udGltZXN0YW1wKSxcbiAgICAgICAgICBpbnB1dHNbMF1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWRkZWRBcnJheSA9IHBhZGRlZEZyb21CZWdpbm5pbmcuY29uY2F0KGlucHV0cyk7XG5cbiAgICBpZiAoZW5kKSB7XG4gICAgICBjb25zdCBsYXN0SW5wdXQgPSBpbnB1dHNbaW5wdXRzLmxlbmd0aCAtIDFdO1xuICAgICAgY29uc3QgbGFzdElucHV0RW5kID0gcGFyc2VEYXRlKGxhc3RJbnB1dC50aW1lc3RhbXApLnBsdXMoe1xuICAgICAgICBzZWNvbmRzOiBsYXN0SW5wdXQuZHVyYXRpb24sXG4gICAgICB9KTtcbiAgICAgIHBhZGRlZEFycmF5LnB1c2goXG4gICAgICAgIC4uLmdldFplcm9pc2hJbnB1dFBlclNlY29uZEJldHdlZW5SYW5nZShcbiAgICAgICAgICBsYXN0SW5wdXRFbmQsXG4gICAgICAgICAgcGFyYW1zLmVuZFRpbWUucGx1cyh7c2Vjb25kczogMX0pLFxuICAgICAgICAgIGxhc3RJbnB1dFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRkZWRBcnJheTtcbiAgfTtcblxuICBjb25zdCBnZXRaZXJvaXNoSW5wdXRQZXJTZWNvbmRCZXR3ZWVuUmFuZ2UgPSAoXG4gICAgc3RhcnREYXRlOiBEYXRlVGltZU1heWJlVmFsaWQsXG4gICAgZW5kRGF0ZTogRGF0ZVRpbWVNYXliZVZhbGlkLFxuICAgIHRlbXBsYXRlSW5wdXQ6IFBsdWdpblBhcmFtc1xuICApID0+IHtcbiAgICBjb25zdCBhcnJheTogUGx1Z2luUGFyYW1zW10gPSBbXTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IGludGVydmFsIG9mIGRhdGVSYW5nZS5zcGxpdEJ5KHtzZWNvbmQ6IDF9KSkge1xuICAgICAgYXJyYXkucHVzaChcbiAgICAgICAgZmlsbFdpdGhaZXJvaXNoSW5wdXQoXG4gICAgICAgICAgdGVtcGxhdGVJbnB1dCxcbiAgICAgICAgICAvLyBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgc3RhcnQgd2lsbCBuZXZlciBiZSBudWxsXG4gICAgICAgICAgLy8gYmVjYXVzZSBpZiB3ZSBwYXNzIGFuIGludmFsaWQgc3RhcnQvZW5kRGF0ZSB0b1xuICAgICAgICAgIC8vIEludGVydmFsLCB3ZSBnZXQgYSB6ZXJvIGxlbmd0aCBhcnJheSBhcyB0aGUgcmFuZ2VcbiAgICAgICAgICBpbnRlcnZhbC5zdGFydCB8fCBEYXRlVGltZS5pbnZhbGlkKCdub3QgZXhwZWN0ZWQgLSBzdGFydCBpcyBudWxsJylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH07XG5cbiAgLypcbiAgICogQ2hlY2tzIGlmIGlucHV0J3MgdGltZXN0YW1wIGlzIGluY2x1ZGVkIGluIGdsb2JhbCBzcGVjaWZpZWQgcGVyaW9kIHRoZW4gbGVhdmVzIGl0LCBvdGhlcndpc2UuXG4gICAqL1xuICBjb25zdCB0cmltSW5wdXRzQnlHbG9iYWxUaW1lbGluZSA9IChcbiAgICBpbnB1dHM6IFBsdWdpblBhcmFtc1tdLFxuICAgIHBhcmFtczogVGltZVBhcmFtc1xuICApOiBQbHVnaW5QYXJhbXNbXSA9PlxuICAgIGlucHV0cy5yZWR1Y2UoKGFjYzogUGx1Z2luUGFyYW1zW10sIGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHt0aW1lc3RhbXB9ID0gaXRlbTtcblxuICAgICAgaWYgKFxuICAgICAgICBwYXJzZURhdGUodGltZXN0YW1wKSA+PSBwYXJhbXMuc3RhcnRUaW1lICYmXG4gICAgICAgIHBhcnNlRGF0ZSh0aW1lc3RhbXApIDw9IHBhcmFtcy5lbmRUaW1lXG4gICAgICApIHtcbiAgICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgUGx1Z2luUGFyYW1zW10pO1xuXG4gIHJldHVybiB7bWV0YWRhdGEsIGV4ZWN1dGV9O1xufTtcbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ArgumentConfig, ParseOptions } from 'ts-command-line-args';
|
|
2
|
-
import { IfRunArgs } from '../types/process-args';
|
|
3
|
-
export declare const CONFIG: {
|
|
4
|
-
ARGS: ArgumentConfig<IfRunArgs>;
|
|
5
|
-
HELP: ParseOptions<any>;
|
|
6
|
-
GITHUB_PATH: string;
|
|
7
|
-
NATIVE_PLUGIN: string;
|
|
8
|
-
AGGREGATION_ADDITIONAL_PARAMS: string[];
|
|
9
|
-
};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONFIG = void 0;
|
|
4
|
-
const config_1 = require("../../common/config");
|
|
5
|
-
const { DISCLAIMER_MESSAGE } = config_1.STRINGS;
|
|
6
|
-
exports.CONFIG = {
|
|
7
|
-
ARGS: {
|
|
8
|
-
manifest: {
|
|
9
|
-
type: String,
|
|
10
|
-
optional: true,
|
|
11
|
-
alias: 'm',
|
|
12
|
-
description: '[path to the input file]',
|
|
13
|
-
},
|
|
14
|
-
output: {
|
|
15
|
-
type: String,
|
|
16
|
-
optional: true,
|
|
17
|
-
alias: 'o',
|
|
18
|
-
description: '[path to the output file]',
|
|
19
|
-
},
|
|
20
|
-
'override-params': {
|
|
21
|
-
type: String,
|
|
22
|
-
optional: true,
|
|
23
|
-
alias: 'p',
|
|
24
|
-
description: '[path to a parameter file that overrides our defaults]',
|
|
25
|
-
},
|
|
26
|
-
'no-output': {
|
|
27
|
-
type: Boolean,
|
|
28
|
-
optional: true,
|
|
29
|
-
alias: 'n',
|
|
30
|
-
description: '[prevent output to the console]',
|
|
31
|
-
},
|
|
32
|
-
help: {
|
|
33
|
-
type: Boolean,
|
|
34
|
-
optional: true,
|
|
35
|
-
alias: 'h',
|
|
36
|
-
description: '[prints out the above help instruction]',
|
|
37
|
-
},
|
|
38
|
-
debug: {
|
|
39
|
-
type: Boolean,
|
|
40
|
-
optional: true,
|
|
41
|
-
alias: 'd',
|
|
42
|
-
description: '[prints out debug logs to the console]',
|
|
43
|
-
},
|
|
44
|
-
observe: {
|
|
45
|
-
type: Boolean,
|
|
46
|
-
optional: true,
|
|
47
|
-
description: '[executes only observe pipeline of the manifest]',
|
|
48
|
-
},
|
|
49
|
-
regroup: {
|
|
50
|
-
type: Boolean,
|
|
51
|
-
optional: true,
|
|
52
|
-
description: '[executes only regroup pipeline of the manifest]',
|
|
53
|
-
},
|
|
54
|
-
compute: {
|
|
55
|
-
type: Boolean,
|
|
56
|
-
optional: true,
|
|
57
|
-
description: '[executes only compute pipeline of the manifest]',
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
HELP: {
|
|
61
|
-
helpArg: 'help',
|
|
62
|
-
headerContentSections: [
|
|
63
|
-
{ header: 'Impact Framework', content: 'Helpful keywords:' },
|
|
64
|
-
],
|
|
65
|
-
footerContentSections: [
|
|
66
|
-
{ header: 'Green Software Foundation', content: DISCLAIMER_MESSAGE },
|
|
67
|
-
],
|
|
68
|
-
},
|
|
69
|
-
GITHUB_PATH: 'https://github.com',
|
|
70
|
-
NATIVE_PLUGIN: 'if-plugins',
|
|
71
|
-
AGGREGATION_ADDITIONAL_PARAMS: ['timestamp', 'duration'],
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLXJ1bi9jb25maWcvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUE0QztBQUk1QyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXhCLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSwwQkFBMEI7U0FDeEM7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLEdBQUc7WUFDVixXQUFXLEVBQUUsMkJBQTJCO1NBQ3pDO1FBQ0QsaUJBQWlCLEVBQUU7WUFDakIsSUFBSSxFQUFFLE1BQU07WUFDWixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLHdEQUF3RDtTQUN0RTtRQUNELFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSxpQ0FBaUM7U0FDL0M7UUFDRCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsT0FBTztZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLEdBQUc7WUFDVixXQUFXLEVBQUUseUNBQXlDO1NBQ3ZEO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLHdDQUF3QztTQUN0RDtRQUNELE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUUsa0RBQWtEO1NBQ2hFO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxrREFBa0Q7U0FDaEU7UUFDRCxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsT0FBTztZQUNiLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLGtEQUFrRDtTQUNoRTtLQUMyQjtJQUM5QixJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtRQUNmLHFCQUFxQixFQUFFO1lBQ3JCLEVBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBQztTQUMzRDtRQUNELHFCQUFxQixFQUFFO1lBQ3JCLEVBQUMsTUFBTSxFQUFFLDJCQUEyQixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBQztTQUNuRTtLQUNtQjtJQUN0QixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLGFBQWEsRUFBRSxZQUFZO0lBQzNCLDZCQUE2QixFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQztDQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcmd1bWVudENvbmZpZywgUGFyc2VPcHRpb25zfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29tbW9uL2NvbmZpZyc7XG5cbmltcG9ydCB7SWZSdW5BcmdzfSBmcm9tICcuLi90eXBlcy9wcm9jZXNzLWFyZ3MnO1xuXG5jb25zdCB7RElTQ0xBSU1FUl9NRVNTQUdFfSA9IFNUUklOR1M7XG5cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIEFSR1M6IHtcbiAgICBtYW5pZmVzdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICBhbGlhczogJ20nLFxuICAgICAgZGVzY3JpcHRpb246ICdbcGF0aCB0byB0aGUgaW5wdXQgZmlsZV0nLFxuICAgIH0sXG4gICAgb3V0cHV0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnbycsXG4gICAgICBkZXNjcmlwdGlvbjogJ1twYXRoIHRvIHRoZSBvdXRwdXQgZmlsZV0nLFxuICAgIH0sXG4gICAgJ292ZXJyaWRlLXBhcmFtcyc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgYWxpYXM6ICdwJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnW3BhdGggdG8gYSBwYXJhbWV0ZXIgZmlsZSB0aGF0IG92ZXJyaWRlcyBvdXIgZGVmYXVsdHNdJyxcbiAgICB9LFxuICAgICduby1vdXRwdXQnOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICBhbGlhczogJ24nLFxuICAgICAgZGVzY3JpcHRpb246ICdbcHJldmVudCBvdXRwdXQgdG8gdGhlIGNvbnNvbGVdJyxcbiAgICB9LFxuICAgIGhlbHA6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnaCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1twcmludHMgb3V0IHRoZSBhYm92ZSBoZWxwIGluc3RydWN0aW9uXScsXG4gICAgfSxcbiAgICBkZWJ1Zzoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgYWxpYXM6ICdkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnW3ByaW50cyBvdXQgZGVidWcgbG9ncyB0byB0aGUgY29uc29sZV0nLFxuICAgIH0sXG4gICAgb2JzZXJ2ZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246ICdbZXhlY3V0ZXMgb25seSBvYnNlcnZlIHBpcGVsaW5lIG9mIHRoZSBtYW5pZmVzdF0nLFxuICAgIH0sXG4gICAgcmVncm91cDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246ICdbZXhlY3V0ZXMgb25seSByZWdyb3VwIHBpcGVsaW5lIG9mIHRoZSBtYW5pZmVzdF0nLFxuICAgIH0sXG4gICAgY29tcHV0ZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246ICdbZXhlY3V0ZXMgb25seSBjb21wdXRlIHBpcGVsaW5lIG9mIHRoZSBtYW5pZmVzdF0nLFxuICAgIH0sXG4gIH0gYXMgQXJndW1lbnRDb25maWc8SWZSdW5BcmdzPixcbiAgSEVMUDoge1xuICAgIGhlbHBBcmc6ICdoZWxwJyxcbiAgICBoZWFkZXJDb250ZW50U2VjdGlvbnM6IFtcbiAgICAgIHtoZWFkZXI6ICdJbXBhY3QgRnJhbWV3b3JrJywgY29udGVudDogJ0hlbHBmdWwga2V5d29yZHM6J30sXG4gICAgXSxcbiAgICBmb290ZXJDb250ZW50U2VjdGlvbnM6IFtcbiAgICAgIHtoZWFkZXI6ICdHcmVlbiBTb2Z0d2FyZSBGb3VuZGF0aW9uJywgY29udGVudDogRElTQ0xBSU1FUl9NRVNTQUdFfSxcbiAgICBdLFxuICB9IGFzIFBhcnNlT3B0aW9uczxhbnk+LFxuICBHSVRIVUJfUEFUSDogJ2h0dHBzOi8vZ2l0aHViLmNvbScsXG4gIE5BVElWRV9QTFVHSU46ICdpZi1wbHVnaW5zJyxcbiAgQUdHUkVHQVRJT05fQURESVRJT05BTF9QQVJBTVM6IFsndGltZXN0YW1wJywgJ2R1cmF0aW9uJ10sXG59O1xuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.STRINGS = exports.CONFIG = void 0;
|
|
4
|
-
var config_1 = require("./config");
|
|
5
|
-
Object.defineProperty(exports, "CONFIG", { enumerable: true, get: function () { return config_1.CONFIG; } });
|
|
6
|
-
var strings_1 = require("./strings");
|
|
7
|
-
Object.defineProperty(exports, "STRINGS", { enumerable: true, get: function () { return strings_1.STRINGS; } });
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtcnVuL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFBeEIsZ0dBQUEsTUFBTSxPQUFBO0FBQ2QscUNBQWtDO0FBQTFCLGtHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7Q09ORklHfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQge1NUUklOR1N9IGZyb20gJy4vc3RyaW5ncyc7XG4iXX0=
|