@grnsft/if 1.0.1 → 1.1.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/.dockerignore +10 -0
- package/CONTAINER.md +148 -0
- package/Dockerfile +73 -0
- package/HELM_CHART.md +96 -0
- package/README.md +56 -0
- package/bin/docker-entrypoint.sh +15 -0
- package/build/common/types/manifest.d.ts +1 -0
- package/build/common/types/manifest.js +1 -1
- package/build/common/util/debug-logger.js +4 -18
- package/build/common/util/helpers.d.ts +3 -2
- package/build/common/util/helpers.js +6 -18
- package/build/common/util/storage.d.ts +9 -0
- package/build/common/util/storage.js +24 -0
- package/build/if-api/config/config.d.ts +9 -0
- package/build/if-api/config/config.js +58 -0
- package/build/if-api/config/index.d.ts +2 -0
- package/build/if-api/config/index.js +8 -0
- package/build/if-api/config/strings.d.ts +16 -0
- package/build/if-api/config/strings.js +20 -0
- package/build/if-api/index.d.ts +2 -0
- package/build/if-api/index.js +268 -0
- package/build/if-api/types/process-args.d.ts +18 -0
- package/build/if-api/types/process-args.js +3 -0
- package/build/if-api/util/args.d.ts +5 -0
- package/build/if-api/util/args.js +42 -0
- package/build/if-check/index.js +1 -11
- package/build/if-check/util/npm.d.ts +1 -1
- package/build/if-check/util/npm.js +31 -74
- package/build/if-metadata-check/config/config.d.ts +5 -0
- package/build/if-metadata-check/config/config.js +26 -0
- package/build/if-metadata-check/config/strings.d.ts +5 -0
- package/build/if-metadata-check/config/strings.js +9 -0
- package/build/if-metadata-check/index.d.ts +2 -0
- package/build/if-metadata-check/index.js +30 -0
- package/build/if-metadata-check/types/plugin.d.ts +7 -0
- package/build/if-metadata-check/types/plugin.js +3 -0
- package/build/if-metadata-check/types/process-args.d.ts +5 -0
- package/build/if-metadata-check/types/process-args.js +3 -0
- package/build/if-metadata-check/util/args.d.ts +57 -0
- package/build/if-metadata-check/util/args.js +29 -0
- package/build/if-metadata-check/util/metadata-checker.d.ts +44 -0
- package/build/if-metadata-check/util/metadata-checker.js +99 -0
- package/build/if-run/builtins/divide/index.js +2 -2
- package/build/if-run/builtins/sci/index.js +2 -2
- package/build/if-run/config/strings.js +3 -3
- package/build/if-run/index.js +1 -1
- package/build/if-run/lib/aggregate.d.ts +2 -2
- package/build/if-run/lib/aggregate.js +5 -19
- package/build/if-run/lib/compute.d.ts +1 -1
- package/build/if-run/lib/compute.js +10 -9
- package/build/if-run/lib/environment.d.ts +5 -1
- package/build/if-run/lib/environment.js +30 -29
- package/build/if-run/lib/initialize.d.ts +12 -0
- package/build/if-run/lib/initialize.js +37 -3
- package/build/if-run/lib/regroup.d.ts +3 -2
- package/build/if-run/lib/regroup.js +13 -9
- package/build/if-run/types/compute.d.ts +1 -1
- package/build/if-run/types/compute.js +1 -1
- package/build/if-run/util/os-checker.js +14 -10
- package/helm-chart/.helmignore +23 -0
- package/helm-chart/Chart.yaml +24 -0
- package/helm-chart/templates/NOTES.txt +22 -0
- package/helm-chart/templates/_helpers.tpl +62 -0
- package/helm-chart/templates/additionalPlugins.yaml +13 -0
- package/helm-chart/templates/deployment.yaml +144 -0
- package/helm-chart/templates/disabledPlugins.yaml +11 -0
- package/helm-chart/templates/env-configmap.yaml +10 -0
- package/helm-chart/templates/env-secret.yaml +10 -0
- package/helm-chart/templates/hpa.yaml +32 -0
- package/helm-chart/templates/ingress.yaml +43 -0
- package/helm-chart/templates/npmrc.yaml +11 -0
- package/helm-chart/templates/service.yaml +24 -0
- package/helm-chart/templates/serviceaccount.yaml +13 -0
- package/helm-chart/templates/tests/test-connection.yaml +15 -0
- package/helm-chart/values.yaml +175 -0
- package/jest.config.js +6 -2
- package/manifests/examples/bugs/aggregation-error-wrong-metric.yml +173 -0
- package/manifests/examples/bugs/input-error-missing-duration.yml +25 -0
- package/manifests/examples/bugs/mock-observations-failure-duration-is-zero.yml +33 -0
- package/manifests/examples/bugs/pipeline-error-naming-mismatch.yml +32 -0
- package/manifests/examples/bugs/pipeline-error-uninitialized-plugin.yml +33 -0
- package/manifests/examples/bugs/pipeline-ordering-error.yml +91 -0
- package/manifests/examples/builtins/divide/success-denominator-equal-zero.yml +36 -0
- package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +0 -1
- package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +0 -1
- package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +0 -1
- package/manifests/examples/builtins/mock-observations/success.yml +0 -1
- package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +0 -1
- package/manifests/examples/builtins/sci/failure-missing-input-param.yml +0 -1
- package/manifests/examples/builtins/sci/success.yml +0 -1
- package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +22 -0
- package/manifests/examples/builtins/time-sync/failure-missing-config.yml +0 -2
- package/manifests/examples/builtins/time-sync/success.yml +0 -2
- package/manifests/examples/features/aggregate-failure-invalid-metrics.yml +50 -0
- package/manifests/examples/features/aggregate-failure-missing-metric-in-inputs.yml +50 -0
- package/manifests/examples/features/aggregate-horizontal.yml +58 -0
- package/manifests/examples/features/aggregate-vertical.yml +58 -0
- package/manifests/examples/features/aggregate.yml +58 -0
- package/manifests/examples/pipelines/cloud-metadata-divide.yml +36 -0
- package/manifests/examples/pipelines/pipeline-with-mocks.yml +0 -1
- package/manifests/examples/pipelines/scenario-5.yml +0 -1
- package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +0 -1
- package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +0 -1
- package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +0 -1
- package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +0 -1
- package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +0 -1
- package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +0 -1
- package/manifests/outputs/builtins/time-sync/failure-missing-config.yaml +0 -2
- package/manifests/outputs/features/regroup/success.yaml +72 -0
- package/manifests/outputs/pipelines/pipeline-with-aggregate.yaml +1291 -0
- package/manifests/outputs/pipelines/scenario-3.yaml +126 -0
- package/openapi.yaml +424 -0
- package/package.json +17 -12
- package/with-plugins/Dockerfile +59 -0
- package/.env +0 -5
- package/coverage/clover.xml +0 -2062
- package/coverage/coverage-final.json +0 -58
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/builtins/coefficient/index.html +0 -116
- package/coverage/lcov-report/builtins/coefficient/index.ts.html +0 -298
- package/coverage/lcov-report/builtins/csv-lookup/index.html +0 -116
- package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +0 -826
- package/coverage/lcov-report/builtins/divide/index.html +0 -116
- package/coverage/lcov-report/builtins/divide/index.ts.html +0 -358
- package/coverage/lcov-report/builtins/exponent/index.html +0 -116
- package/coverage/lcov-report/builtins/exponent/index.ts.html +0 -361
- package/coverage/lcov-report/builtins/export-csv-raw.ts.html +0 -553
- package/coverage/lcov-report/builtins/export-csv.ts.html +0 -436
- package/coverage/lcov-report/builtins/export-log.ts.html +0 -148
- package/coverage/lcov-report/builtins/export-yaml.ts.html +0 -193
- package/coverage/lcov-report/builtins/group-by.ts.html +0 -370
- package/coverage/lcov-report/builtins/index.html +0 -206
- package/coverage/lcov-report/builtins/index.ts.html +0 -130
- package/coverage/lcov-report/builtins/interpolation/index.html +0 -116
- package/coverage/lcov-report/builtins/interpolation/index.ts.html +0 -676
- package/coverage/lcov-report/builtins/interpolation/types.ts.html +0 -100
- package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +0 -184
- package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +0 -131
- package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -289
- package/coverage/lcov-report/builtins/mock-observations/index.html +0 -116
- package/coverage/lcov-report/builtins/mock-observations/index.ts.html +0 -619
- package/coverage/lcov-report/builtins/multiply/index.html +0 -116
- package/coverage/lcov-report/builtins/multiply/index.ts.html +0 -343
- package/coverage/lcov-report/builtins/regex/index.html +0 -116
- package/coverage/lcov-report/builtins/regex/index.ts.html +0 -373
- package/coverage/lcov-report/builtins/sci/config.ts.html +0 -205
- package/coverage/lcov-report/builtins/sci/index.html +0 -116
- package/coverage/lcov-report/builtins/sci/index.ts.html +0 -325
- package/coverage/lcov-report/builtins/sci-embodied/index.html +0 -116
- package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +0 -478
- package/coverage/lcov-report/builtins/shell/index.html +0 -116
- package/coverage/lcov-report/builtins/shell/index.ts.html +0 -280
- package/coverage/lcov-report/builtins/subtract/index.html +0 -116
- package/coverage/lcov-report/builtins/subtract/index.ts.html +0 -379
- package/coverage/lcov-report/builtins/sum/index.html +0 -116
- package/coverage/lcov-report/builtins/sum/index.ts.html +0 -334
- package/coverage/lcov-report/builtins/time-sync.ts.html +0 -1462
- package/coverage/lcov-report/common/config/index.html +0 -131
- package/coverage/lcov-report/common/config/index.ts.html +0 -88
- package/coverage/lcov-report/common/config/strings.ts.html +0 -121
- package/coverage/lcov-report/common/lib/index.html +0 -116
- package/coverage/lcov-report/common/lib/load.ts.html +0 -139
- package/coverage/lcov-report/common/util/debug-logger.ts.html +0 -514
- package/coverage/lcov-report/common/util/fs.ts.html +0 -289
- package/coverage/lcov-report/common/util/helpers.ts.html +0 -355
- package/coverage/lcov-report/common/util/index.html +0 -191
- package/coverage/lcov-report/common/util/logger.ts.html +0 -151
- package/coverage/lcov-report/common/util/validations.ts.html +0 -628
- package/coverage/lcov-report/common/util/yaml.ts.html +0 -226
- package/coverage/lcov-report/config/config.ts.html +0 -463
- package/coverage/lcov-report/config/index.html +0 -161
- package/coverage/lcov-report/config/index.ts.html +0 -94
- package/coverage/lcov-report/config/params.ts.html +0 -697
- package/coverage/lcov-report/config/strings.ts.html +0 -490
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/if-check/config/config.ts.html +0 -184
- package/coverage/lcov-report/if-check/config/index.html +0 -146
- package/coverage/lcov-report/if-check/config/index.ts.html +0 -91
- package/coverage/lcov-report/if-check/config/strings.ts.html +0 -142
- package/coverage/lcov-report/if-check/util/args.ts.html +0 -310
- package/coverage/lcov-report/if-check/util/helpers.ts.html +0 -136
- package/coverage/lcov-report/if-check/util/index.html +0 -146
- package/coverage/lcov-report/if-check/util/npm.ts.html +0 -376
- package/coverage/lcov-report/if-csv/util/args.ts.html +0 -256
- package/coverage/lcov-report/if-csv/util/helpers.ts.html +0 -346
- package/coverage/lcov-report/if-csv/util/index.html +0 -131
- package/coverage/lcov-report/if-diff/config/config.ts.html +0 -184
- package/coverage/lcov-report/if-diff/config/index.html +0 -146
- package/coverage/lcov-report/if-diff/config/index.ts.html +0 -91
- package/coverage/lcov-report/if-diff/config/strings.ts.html +0 -100
- package/coverage/lcov-report/if-diff/lib/compare.ts.html +0 -286
- package/coverage/lcov-report/if-diff/lib/index.html +0 -131
- package/coverage/lcov-report/if-diff/lib/load.ts.html +0 -199
- package/coverage/lcov-report/if-diff/util/args.ts.html +0 -274
- package/coverage/lcov-report/if-diff/util/helpers.ts.html +0 -337
- package/coverage/lcov-report/if-diff/util/index.html +0 -131
- package/coverage/lcov-report/if-env/config/config.ts.html +0 -211
- package/coverage/lcov-report/if-env/config/index.html +0 -146
- package/coverage/lcov-report/if-env/config/index.ts.html +0 -91
- package/coverage/lcov-report/if-env/config/strings.ts.html +0 -109
- package/coverage/lcov-report/if-env/util/args.ts.html +0 -256
- package/coverage/lcov-report/if-env/util/index.html +0 -131
- package/coverage/lcov-report/if-env/util/npm.ts.html +0 -526
- package/coverage/lcov-report/if-merge/util/args.ts.html +0 -301
- package/coverage/lcov-report/if-merge/util/helpers.ts.html +0 -313
- package/coverage/lcov-report/if-merge/util/index.html +0 -131
- package/coverage/lcov-report/if-run/builtins/coefficient/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/coefficient/index.ts.html +0 -286
- package/coverage/lcov-report/if-run/builtins/copy-param/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/copy-param/index.ts.html +0 -301
- package/coverage/lcov-report/if-run/builtins/csv-import/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/csv-import/index.ts.html +0 -364
- package/coverage/lcov-report/if-run/builtins/csv-lookup/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/csv-lookup/index.ts.html +0 -478
- package/coverage/lcov-report/if-run/builtins/divide/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/divide/index.ts.html +0 -346
- package/coverage/lcov-report/if-run/builtins/exponent/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/exponent/index.ts.html +0 -319
- package/coverage/lcov-report/if-run/builtins/export-csv-raw.ts.html +0 -553
- package/coverage/lcov-report/if-run/builtins/export-csv.ts.html +0 -436
- package/coverage/lcov-report/if-run/builtins/export-log.ts.html +0 -148
- package/coverage/lcov-report/if-run/builtins/export-yaml.ts.html +0 -193
- package/coverage/lcov-report/if-run/builtins/group-by.ts.html +0 -370
- package/coverage/lcov-report/if-run/builtins/index.html +0 -146
- package/coverage/lcov-report/if-run/builtins/index.ts.html +0 -136
- package/coverage/lcov-report/if-run/builtins/interpolation/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/interpolation/index.ts.html +0 -643
- package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/common-generator.ts.html +0 -184
- package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/index.html +0 -131
- package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -289
- package/coverage/lcov-report/if-run/builtins/mock-observations/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/mock-observations/index.ts.html +0 -607
- package/coverage/lcov-report/if-run/builtins/multiply/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/multiply/index.ts.html +0 -289
- package/coverage/lcov-report/if-run/builtins/regex/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/regex/index.ts.html +0 -298
- package/coverage/lcov-report/if-run/builtins/sci/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/sci/index.ts.html +0 -418
- package/coverage/lcov-report/if-run/builtins/sci-embodied/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/sci-embodied/index.ts.html +0 -664
- package/coverage/lcov-report/if-run/builtins/shell/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/shell/index.ts.html +0 -256
- package/coverage/lcov-report/if-run/builtins/subtract/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/subtract/index.ts.html +0 -298
- package/coverage/lcov-report/if-run/builtins/sum/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/sum/index.ts.html +0 -238
- package/coverage/lcov-report/if-run/builtins/time-converter/config.ts.html +0 -205
- package/coverage/lcov-report/if-run/builtins/time-converter/index.html +0 -131
- package/coverage/lcov-report/if-run/builtins/time-converter/index.ts.html +0 -328
- package/coverage/lcov-report/if-run/builtins/time-sync/index.html +0 -116
- package/coverage/lcov-report/if-run/builtins/time-sync/index.ts.html +0 -1804
- package/coverage/lcov-report/if-run/builtins/time-sync.ts.html +0 -1462
- package/coverage/lcov-report/if-run/builtins/util/csv-helpers.ts.html +0 -376
- package/coverage/lcov-report/if-run/builtins/util/index.html +0 -116
- package/coverage/lcov-report/if-run/config/config.ts.html +0 -271
- package/coverage/lcov-report/if-run/config/index.html +0 -161
- package/coverage/lcov-report/if-run/config/index.ts.html +0 -94
- package/coverage/lcov-report/if-run/config/params.ts.html +0 -679
- package/coverage/lcov-report/if-run/config/strings.ts.html +0 -460
- package/coverage/lcov-report/if-run/lib/aggregate.ts.html +0 -577
- package/coverage/lcov-report/if-run/lib/compute.ts.html +0 -733
- package/coverage/lcov-report/if-run/lib/environment.ts.html +0 -373
- package/coverage/lcov-report/if-run/lib/exhaust.ts.html +0 -193
- package/coverage/lcov-report/if-run/lib/explain.ts.html +0 -484
- package/coverage/lcov-report/if-run/lib/index.html +0 -206
- package/coverage/lcov-report/if-run/lib/initialize.ts.html +0 -490
- package/coverage/lcov-report/if-run/lib/parameterize.ts.html +0 -322
- package/coverage/lcov-report/if-run/lib/regroup.ts.html +0 -349
- package/coverage/lcov-report/if-run/lib/time-sync.ts.html +0 -1510
- package/coverage/lcov-report/if-run/types/aggregation.ts.html +0 -94
- package/coverage/lcov-report/if-run/types/index.html +0 -146
- package/coverage/lcov-report/if-run/types/interface.ts.html +0 -112
- package/coverage/lcov-report/if-run/types/parameters.ts.html +0 -106
- package/coverage/lcov-report/if-run/util/aggregation-helper.ts.html +0 -277
- package/coverage/lcov-report/if-run/util/args.ts.html +0 -325
- package/coverage/lcov-report/if-run/util/helpers.ts.html +0 -208
- package/coverage/lcov-report/if-run/util/index.html +0 -191
- package/coverage/lcov-report/if-run/util/json.ts.html +0 -115
- package/coverage/lcov-report/if-run/util/log-memoize.ts.html +0 -145
- package/coverage/lcov-report/if-run/util/os-checker.ts.html +0 -421
- package/coverage/lcov-report/if-run/util/plugin-storage.ts.html +0 -202
- package/coverage/lcov-report/index.html +0 -551
- package/coverage/lcov-report/lib/aggregate.ts.html +0 -358
- package/coverage/lcov-report/lib/compare.ts.html +0 -286
- package/coverage/lcov-report/lib/compute.ts.html +0 -436
- package/coverage/lcov-report/lib/environment.ts.html +0 -376
- package/coverage/lcov-report/lib/exhaust.ts.html +0 -289
- package/coverage/lcov-report/lib/index.html +0 -221
- package/coverage/lcov-report/lib/initialize.ts.html +0 -430
- package/coverage/lcov-report/lib/load.ts.html +0 -268
- package/coverage/lcov-report/lib/parameterize.ts.html +0 -316
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/types/aggregation.ts.html +0 -94
- package/coverage/lcov-report/types/index.html +0 -146
- package/coverage/lcov-report/types/interface.ts.html +0 -112
- package/coverage/lcov-report/types/parameters.ts.html +0 -106
- package/coverage/lcov-report/util/aggregation-helper.ts.html +0 -289
- package/coverage/lcov-report/util/args.ts.html +0 -649
- package/coverage/lcov-report/util/debug-logger.ts.html +0 -481
- package/coverage/lcov-report/util/errors.ts.html +0 -232
- package/coverage/lcov-report/util/fs.ts.html +0 -124
- package/coverage/lcov-report/util/helpers.ts.html +0 -895
- package/coverage/lcov-report/util/index.html +0 -296
- package/coverage/lcov-report/util/json.ts.html +0 -115
- package/coverage/lcov-report/util/log-memoize.ts.html +0 -145
- package/coverage/lcov-report/util/logger.ts.html +0 -151
- package/coverage/lcov-report/util/npm.ts.html +0 -499
- package/coverage/lcov-report/util/os-checker.ts.html +0 -421
- package/coverage/lcov-report/util/plugin-storage.ts.html +0 -202
- package/coverage/lcov-report/util/validations.ts.html +0 -544
- package/coverage/lcov-report/util/yaml.ts.html +0 -193
- package/coverage/lcov.info +0 -3548
- package/manifests/outputs/builtins/interpolation/interpolation.yaml +0 -81
- package/manifests/outputs/features/failure-invalid-regroup.yaml +0 -87
- package/manifests/outputs/features/failure-missing-cloud-instance-type.yaml +0 -86
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* Configuration for if-api.
|
|
8
|
+
*/
|
|
9
|
+
exports.CONFIG = {
|
|
10
|
+
ARGS: {
|
|
11
|
+
debug: {
|
|
12
|
+
type: Boolean,
|
|
13
|
+
alias: 'd',
|
|
14
|
+
description: 'Print debug logs to the console',
|
|
15
|
+
defaultValue: false,
|
|
16
|
+
},
|
|
17
|
+
disableExternalPluginWarning: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
alias: 'w',
|
|
20
|
+
description: 'Disable external plugin warning',
|
|
21
|
+
defaultValue: false,
|
|
22
|
+
},
|
|
23
|
+
disabledPlugins: {
|
|
24
|
+
type: String,
|
|
25
|
+
alias: 'f',
|
|
26
|
+
description: 'Filename that contains plugin names to be disabled',
|
|
27
|
+
optional: true,
|
|
28
|
+
},
|
|
29
|
+
port: {
|
|
30
|
+
type: String,
|
|
31
|
+
alias: 'p',
|
|
32
|
+
description: 'Port to listen on',
|
|
33
|
+
defaultValue: process.env.PORT ?? '3000',
|
|
34
|
+
},
|
|
35
|
+
host: {
|
|
36
|
+
type: String,
|
|
37
|
+
alias: 'b',
|
|
38
|
+
description: 'Host to listen on',
|
|
39
|
+
defaultValue: process.env.HOST ?? 'localhost',
|
|
40
|
+
},
|
|
41
|
+
help: {
|
|
42
|
+
type: Boolean,
|
|
43
|
+
alias: 'h',
|
|
44
|
+
description: 'Show help',
|
|
45
|
+
optional: true,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
HELP: {
|
|
49
|
+
helpArg: 'help',
|
|
50
|
+
headerContentSections: [
|
|
51
|
+
{ header: 'Impact Framework', content: 'Helpful keywords:' },
|
|
52
|
+
],
|
|
53
|
+
footerContentSections: [
|
|
54
|
+
{ header: 'Green Software Foundation', content: DISCLAIMER_MESSAGE },
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWFwaS9jb25maWcvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUE0QztBQUk1QyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsR0FBRyxnQkFBTyxDQUFDO0FBRXJDOztHQUVHO0FBQ1UsUUFBQSxNQUFNLEdBQUc7SUFDcEIsSUFBSSxFQUFFO1FBQ0osS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSxpQ0FBaUM7WUFDOUMsWUFBWSxFQUFFLEtBQUs7U0FDcEI7UUFDRCw0QkFBNEIsRUFBRTtZQUM1QixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLGlDQUFpQztZQUM5QyxZQUFZLEVBQUUsS0FBSztTQUNwQjtRQUNELGVBQWUsRUFBRTtZQUNmLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEdBQUc7WUFDVixXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLFFBQVEsRUFBRSxJQUFJO1NBQ2Y7UUFDRCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxHQUFHO1lBQ1YsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksTUFBTTtTQUN6QztRQUNELElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEdBQUc7WUFDVixXQUFXLEVBQUUsbUJBQW1CO1lBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxXQUFXO1NBQzlDO1FBQ0QsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsR0FBRztZQUNWLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFFBQVEsRUFBRSxJQUFJO1NBQ2Y7S0FDMkI7SUFDOUIsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLE1BQU07UUFDZixxQkFBcUIsRUFBRTtZQUNyQixFQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUM7U0FDM0Q7UUFDRCxxQkFBcUIsRUFBRTtZQUNyQixFQUFDLE1BQU0sRUFBRSwyQkFBMkIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUM7U0FDbkU7S0FDeUI7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtBcmd1bWVudENvbmZpZywgUGFyc2VPcHRpb25zfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vLi4vY29tbW9uL2NvbmZpZyc7XG5cbmltcG9ydCB0eXBlIHtJZkFwaUFyZ3N9IGZyb20gJy4uL3R5cGVzL3Byb2Nlc3MtYXJncyc7XG5cbmNvbnN0IHtESVNDTEFJTUVSX01FU1NBR0V9ID0gU1RSSU5HUztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBpZi1hcGkuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05GSUcgPSB7XG4gIEFSR1M6IHtcbiAgICBkZWJ1Zzoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGFsaWFzOiAnZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1ByaW50IGRlYnVnIGxvZ3MgdG8gdGhlIGNvbnNvbGUnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICB9LFxuICAgIGRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmc6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBhbGlhczogJ3cnLFxuICAgICAgZGVzY3JpcHRpb246ICdEaXNhYmxlIGV4dGVybmFsIHBsdWdpbiB3YXJuaW5nJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgfSxcbiAgICBkaXNhYmxlZFBsdWdpbnM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGFsaWFzOiAnZicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbGVuYW1lIHRoYXQgY29udGFpbnMgcGx1Z2luIG5hbWVzIHRvIGJlIGRpc2FibGVkJyxcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gICAgcG9ydDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgYWxpYXM6ICdwJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUG9ydCB0byBsaXN0ZW4gb24nLFxuICAgICAgZGVmYXVsdFZhbHVlOiBwcm9jZXNzLmVudi5QT1JUID8/ICczMDAwJyxcbiAgICB9LFxuICAgIGhvc3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGFsaWFzOiAnYicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0hvc3QgdG8gbGlzdGVuIG9uJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcHJvY2Vzcy5lbnYuSE9TVCA/PyAnbG9jYWxob3N0JyxcbiAgICB9LFxuICAgIGhlbHA6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBhbGlhczogJ2gnLFxuICAgICAgZGVzY3JpcHRpb246ICdTaG93IGhlbHAnLFxuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSxcbiAgfSBhcyBBcmd1bWVudENvbmZpZzxJZkFwaUFyZ3M+LFxuICBIRUxQOiB7XG4gICAgaGVscEFyZzogJ2hlbHAnLFxuICAgIGhlYWRlckNvbnRlbnRTZWN0aW9uczogW1xuICAgICAge2hlYWRlcjogJ0ltcGFjdCBGcmFtZXdvcmsnLCBjb250ZW50OiAnSGVscGZ1bCBrZXl3b3JkczonfSxcbiAgICBdLFxuICAgIGZvb3RlckNvbnRlbnRTZWN0aW9uczogW1xuICAgICAge2hlYWRlcjogJ0dyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb24nLCBjb250ZW50OiBESVNDTEFJTUVSX01FU1NBR0V9LFxuICAgIF0sXG4gIH0gYXMgUGFyc2VPcHRpb25zPElmQXBpQXJncz4sXG59IGFzIGNvbnN0O1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWYtYXBpL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFBeEIsZ0dBQUEsTUFBTSxPQUFBO0FBQ2QscUNBQWtDO0FBQTFCLGtHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7Q09ORklHfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQge1NUUklOR1N9IGZyb20gJy4vc3RyaW5ncyc7XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strings for if-api.
|
|
3
|
+
*/
|
|
4
|
+
export declare const STRINGS: {
|
|
5
|
+
readonly SERVER_STARTED: (addr: string) => string;
|
|
6
|
+
readonly SERVER_START_FAILED: (err: Error) => string;
|
|
7
|
+
readonly PROCESSING_REQUEST: "Processing request";
|
|
8
|
+
readonly INTERNAL_SERVER_ERROR: "Internal Server Error";
|
|
9
|
+
readonly INVALID_JSON: "Invalid JSON format";
|
|
10
|
+
readonly INVALID_YAML: "Invalid YAML format";
|
|
11
|
+
readonly MISSING_MANIFEST: "Missing manifest in request body";
|
|
12
|
+
readonly UNSUPPORTED_CONTENT_TYPE: "Unsupported content type. Supported types are: application/json, application/yaml";
|
|
13
|
+
readonly DISCLAIMER_MESSAGE: "Impact Framework API - Green Software Foundation";
|
|
14
|
+
readonly INVALID_DISABLED_PLUGINS: (line: string) => string;
|
|
15
|
+
readonly INVALID_PORT_NUMBER: (port: string) => string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STRINGS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Strings for if-api.
|
|
6
|
+
*/
|
|
7
|
+
exports.STRINGS = {
|
|
8
|
+
SERVER_STARTED: (addr) => `Server started on ${addr}`,
|
|
9
|
+
SERVER_START_FAILED: (err) => `Failed to start server: ${err}`,
|
|
10
|
+
PROCESSING_REQUEST: 'Processing request',
|
|
11
|
+
INTERNAL_SERVER_ERROR: 'Internal Server Error',
|
|
12
|
+
INVALID_JSON: 'Invalid JSON format',
|
|
13
|
+
INVALID_YAML: 'Invalid YAML format',
|
|
14
|
+
MISSING_MANIFEST: 'Missing manifest in request body',
|
|
15
|
+
UNSUPPORTED_CONTENT_TYPE: 'Unsupported content type. Supported types are: application/json, application/yaml',
|
|
16
|
+
DISCLAIMER_MESSAGE: 'Impact Framework API - Green Software Foundation',
|
|
17
|
+
INVALID_DISABLED_PLUGINS: (line) => `Invalid DisabledPlugins settings:${line}`,
|
|
18
|
+
INVALID_PORT_NUMBER: (port) => `Invalid port number \`${port}\`. The port number should be a number between 0 and 65535.`,
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1hcGkvY29uZmlnL3N0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDVSxRQUFBLE9BQU8sR0FBRztJQUNyQixjQUFjLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixJQUFJLEVBQUU7SUFDN0QsbUJBQW1CLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixHQUFHLEVBQUU7SUFDckUsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxZQUFZLEVBQUUscUJBQXFCO0lBQ25DLFlBQVksRUFBRSxxQkFBcUI7SUFDbkMsZ0JBQWdCLEVBQUUsa0NBQWtDO0lBQ3BELHdCQUF3QixFQUN0QixtRkFBbUY7SUFDckYsa0JBQWtCLEVBQUUsa0RBQWtEO0lBQ3RFLHdCQUF3QixFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDekMsb0NBQW9DLElBQUksRUFBRTtJQUM1QyxtQkFBbUIsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQ3BDLHlCQUF5QixJQUFJLDZEQUE2RDtDQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJpbmdzIGZvciBpZi1hcGkuXG4gKi9cbmV4cG9ydCBjb25zdCBTVFJJTkdTID0ge1xuICBTRVJWRVJfU1RBUlRFRDogKGFkZHI6IHN0cmluZykgPT4gYFNlcnZlciBzdGFydGVkIG9uICR7YWRkcn1gLFxuICBTRVJWRVJfU1RBUlRfRkFJTEVEOiAoZXJyOiBFcnJvcikgPT4gYEZhaWxlZCB0byBzdGFydCBzZXJ2ZXI6ICR7ZXJyfWAsXG4gIFBST0NFU1NJTkdfUkVRVUVTVDogJ1Byb2Nlc3NpbmcgcmVxdWVzdCcsXG4gIElOVEVSTkFMX1NFUlZFUl9FUlJPUjogJ0ludGVybmFsIFNlcnZlciBFcnJvcicsXG4gIElOVkFMSURfSlNPTjogJ0ludmFsaWQgSlNPTiBmb3JtYXQnLFxuICBJTlZBTElEX1lBTUw6ICdJbnZhbGlkIFlBTUwgZm9ybWF0JyxcbiAgTUlTU0lOR19NQU5JRkVTVDogJ01pc3NpbmcgbWFuaWZlc3QgaW4gcmVxdWVzdCBib2R5JyxcbiAgVU5TVVBQT1JURURfQ09OVEVOVF9UWVBFOlxuICAgICdVbnN1cHBvcnRlZCBjb250ZW50IHR5cGUuIFN1cHBvcnRlZCB0eXBlcyBhcmU6IGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL3lhbWwnLFxuICBESVNDTEFJTUVSX01FU1NBR0U6ICdJbXBhY3QgRnJhbWV3b3JrIEFQSSAtIEdyZWVuIFNvZnR3YXJlIEZvdW5kYXRpb24nLFxuICBJTlZBTElEX0RJU0FCTEVEX1BMVUdJTlM6IChsaW5lOiBzdHJpbmcpID0+XG4gICAgYEludmFsaWQgRGlzYWJsZWRQbHVnaW5zIHNldHRpbmdzOiR7bGluZX1gLFxuICBJTlZBTElEX1BPUlRfTlVNQkVSOiAocG9ydDogc3RyaW5nKSA9PlxuICAgIGBJbnZhbGlkIHBvcnQgbnVtYmVyIFxcYCR7cG9ydH1cXGAuIFRoZSBwb3J0IG51bWJlciBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA2NTUzNS5gLFxufSBhcyBjb25zdDtcbiJdfQ==
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const promises_1 = require("fs/promises");
|
|
8
|
+
const express_1 = __importDefault(require("express"));
|
|
9
|
+
const js_yaml_1 = require("js-yaml");
|
|
10
|
+
const utils_1 = require("@grnsft/if-core/utils");
|
|
11
|
+
const debug_logger_1 = require("../common/util/debug-logger");
|
|
12
|
+
const logger_1 = require("../common/util/logger");
|
|
13
|
+
const storage_1 = require("../common/util/storage");
|
|
14
|
+
const validations_1 = require("../common/util/validations");
|
|
15
|
+
const aggregate_1 = require("../if-run/lib/aggregate");
|
|
16
|
+
const environment_1 = require("../if-run/lib/environment");
|
|
17
|
+
const initialize_1 = require("../if-run/lib/initialize");
|
|
18
|
+
const compute_1 = require("../if-run/lib/compute");
|
|
19
|
+
const explain_1 = require("../if-run/lib/explain");
|
|
20
|
+
const config_1 = require("./config");
|
|
21
|
+
const args_1 = require("./util/args");
|
|
22
|
+
const { DISCLAIMER_MESSAGE, INTERNAL_SERVER_ERROR, INVALID_DISABLED_PLUGINS, INVALID_JSON, INVALID_YAML, MISSING_MANIFEST, PROCESSING_REQUEST, SERVER_STARTED, SERVER_START_FAILED, UNSUPPORTED_CONTENT_TYPE, } = config_1.STRINGS;
|
|
23
|
+
const CT_YAML = 'application/yaml';
|
|
24
|
+
const CT_JSON = 'application/json';
|
|
25
|
+
const CT_VALID = [CT_YAML, CT_JSON];
|
|
26
|
+
const ERROR_LIST = Object.values(utils_1.ERRORS);
|
|
27
|
+
/**
|
|
28
|
+
* Determine response type.
|
|
29
|
+
*/
|
|
30
|
+
const determineResponseType = (req) => {
|
|
31
|
+
const acceptHeader = req.get('Accept');
|
|
32
|
+
if (acceptHeader && acceptHeader !== '*/*') {
|
|
33
|
+
// Determine based on request Accept header
|
|
34
|
+
const responseType = req.accepts(CT_VALID);
|
|
35
|
+
if (responseType) {
|
|
36
|
+
return responseType;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Determine based on request Content-Type
|
|
40
|
+
return req.get('Content-Type');
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Send the response in the appropriate format.
|
|
44
|
+
*/
|
|
45
|
+
const sendResponse = (req, res, manifest, status) => {
|
|
46
|
+
const responseType = determineResponseType(req);
|
|
47
|
+
if (responseType === CT_YAML) {
|
|
48
|
+
const yamlData = (0, js_yaml_1.dump)(manifest, { noRefs: true });
|
|
49
|
+
res.set('Content-Type', responseType);
|
|
50
|
+
res.status(status).send(yamlData);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
res.set('Content-Type', responseType);
|
|
54
|
+
res.status(status).json(manifest);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Parse disabled plugins file
|
|
59
|
+
* @param filename Filename that contains plugin names to be disabled
|
|
60
|
+
* @returns Set of disabledPlugins
|
|
61
|
+
*/
|
|
62
|
+
const parseDisabledPlugins = async (filename) => {
|
|
63
|
+
// If no filename is specified, disable builtin:Shell, builtin:CSVImport, builtin:CSVLookup by default.
|
|
64
|
+
if (!filename) {
|
|
65
|
+
return new Set([
|
|
66
|
+
'builtin:Shell',
|
|
67
|
+
'builtin:CSVImport',
|
|
68
|
+
'builtin:CSVLookup',
|
|
69
|
+
]);
|
|
70
|
+
}
|
|
71
|
+
const disabledPlugins = new Set();
|
|
72
|
+
const file = await (0, promises_1.open)(filename);
|
|
73
|
+
try {
|
|
74
|
+
for await (const line of file.readLines()) {
|
|
75
|
+
const words = line.split(/ *: */);
|
|
76
|
+
switch (words.length) {
|
|
77
|
+
case 1:
|
|
78
|
+
disabledPlugins.add(`builtin:${words[0]}`);
|
|
79
|
+
break;
|
|
80
|
+
case 2:
|
|
81
|
+
disabledPlugins.add(`${words[0]}:${words[1]}`);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
throw new Error(INVALID_DISABLED_PLUGINS(line));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
await file.close();
|
|
90
|
+
}
|
|
91
|
+
return disabledPlugins;
|
|
92
|
+
};
|
|
93
|
+
const formatAddr = (addr) => {
|
|
94
|
+
if (typeof addr === 'string') {
|
|
95
|
+
return addr;
|
|
96
|
+
}
|
|
97
|
+
else if (addr === null) {
|
|
98
|
+
return 'unknown';
|
|
99
|
+
}
|
|
100
|
+
else if (addr.family === 'IPv6') {
|
|
101
|
+
return `[${addr.address}]:${addr.port}`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return `${addr.address}:${addr.port}`;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Start the API server.
|
|
109
|
+
*/
|
|
110
|
+
const startServer = async () => {
|
|
111
|
+
const options = (0, args_1.parseIfApiProcessArgs)();
|
|
112
|
+
debug_logger_1.debugLogger.overrideConsoleMethods(options.debug);
|
|
113
|
+
logger_1.logger.info(DISCLAIMER_MESSAGE);
|
|
114
|
+
(0, initialize_1.setExternalPluginWarning)(!options.disableExternalPluginWarning);
|
|
115
|
+
const disabledPlugins = await parseDisabledPlugins(options.disabledPlugins);
|
|
116
|
+
(0, initialize_1.setDisabledPlugins)(disabledPlugins);
|
|
117
|
+
// Get execution information (command, environment).
|
|
118
|
+
const execution = await (0, environment_1.getExecution)();
|
|
119
|
+
const app = (0, express_1.default)();
|
|
120
|
+
// Middleware for JSON requests
|
|
121
|
+
app.use(express_1.default.json({ type: CT_JSON }));
|
|
122
|
+
// Custom middleware for YAML requests
|
|
123
|
+
app.use(express_1.default.text({ type: CT_YAML }), (req, res, next) => {
|
|
124
|
+
if (req.is(CT_YAML)) {
|
|
125
|
+
try {
|
|
126
|
+
req.body = (0, js_yaml_1.load)(req.body);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
res.status(400).json({
|
|
130
|
+
error: INVALID_YAML,
|
|
131
|
+
detail: err.message,
|
|
132
|
+
});
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
next();
|
|
137
|
+
});
|
|
138
|
+
// Add request context storage
|
|
139
|
+
app.use((_req, _res, next) => (0, storage_1.executeWithContext)(next));
|
|
140
|
+
// Health check endpoint
|
|
141
|
+
app.get('/health', (_req, res) => {
|
|
142
|
+
res.status(200).send('OK');
|
|
143
|
+
});
|
|
144
|
+
// Process manifest endpoint
|
|
145
|
+
app.post('/v1/run', async (req, res) => {
|
|
146
|
+
logger_1.logger.info(PROCESSING_REQUEST);
|
|
147
|
+
// Check if request body exists
|
|
148
|
+
if (!req.body) {
|
|
149
|
+
res.status(400).json({ error: MISSING_MANIFEST });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
// Check request Content-Type
|
|
153
|
+
if (!req.is(CT_VALID)) {
|
|
154
|
+
res.status(415).json({ error: UNSUPPORTED_CONTENT_TYPE });
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Create manifest with execution information
|
|
158
|
+
const envManifest = {
|
|
159
|
+
...req.body,
|
|
160
|
+
execution: {
|
|
161
|
+
command: execution.command,
|
|
162
|
+
environment: {
|
|
163
|
+
...execution.environment,
|
|
164
|
+
'date-time': `${new Date().toISOString()} (UTC)`,
|
|
165
|
+
},
|
|
166
|
+
status: execution.status,
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
try {
|
|
170
|
+
const { tree, ...context } = (0, validations_1.validateManifest)(envManifest);
|
|
171
|
+
const pluginStorage = await (0, initialize_1.initialize)(context);
|
|
172
|
+
const computedTree = await (0, compute_1.compute)(tree, {
|
|
173
|
+
context,
|
|
174
|
+
pluginStorage,
|
|
175
|
+
observe: req.query.observe === 'true',
|
|
176
|
+
regroup: req.query.regroup === 'true',
|
|
177
|
+
compute: req.query.compute === 'true',
|
|
178
|
+
append: false,
|
|
179
|
+
});
|
|
180
|
+
const aggregatedTree = (0, aggregate_1.aggregate)(computedTree, context.aggregation);
|
|
181
|
+
envManifest.explainer && (context.explain = (0, explain_1.explain)());
|
|
182
|
+
// Prepare response data
|
|
183
|
+
const responseData = { tree: aggregatedTree, ...context };
|
|
184
|
+
// Return response in the determined format
|
|
185
|
+
sendResponse(req, res, responseData, 200);
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
// If it's one of the errors in ERRORS, terminate with status code 400
|
|
189
|
+
if (ERROR_LIST.some(val => err instanceof val)) {
|
|
190
|
+
/** Execution block exists because manifest is already processed. Set's status to `fail`. */
|
|
191
|
+
envManifest.execution.status = 'fail';
|
|
192
|
+
envManifest.execution.error = err.toString();
|
|
193
|
+
// Return response in the determined format
|
|
194
|
+
sendResponse(req, res, envManifest, 400);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// Set Content-Type to application/json
|
|
198
|
+
res.set('Content-Type', CT_JSON);
|
|
199
|
+
// For all other cases, terminate with status code 500
|
|
200
|
+
if (err instanceof Error) {
|
|
201
|
+
res.status(500).json({
|
|
202
|
+
error: INTERNAL_SERVER_ERROR,
|
|
203
|
+
detail: err.message,
|
|
204
|
+
});
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
res.status(500).json({ error: INTERNAL_SERVER_ERROR });
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
// Set up custom error handler
|
|
211
|
+
app.use(
|
|
212
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
213
|
+
(err, _req, res, _next) => {
|
|
214
|
+
// Set Content-Type to application/json
|
|
215
|
+
res.set('Content-Type', CT_JSON);
|
|
216
|
+
// If SyntaxError (JSON parse error), terminate with status code 400
|
|
217
|
+
if (err.status === 400 && err instanceof SyntaxError && 'body' in err) {
|
|
218
|
+
res.status(400).json({
|
|
219
|
+
error: INVALID_JSON,
|
|
220
|
+
detail: err.message,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
else if (err instanceof Error) {
|
|
224
|
+
if ('status' in err) {
|
|
225
|
+
res.status(err.status).json({
|
|
226
|
+
error: err.message,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
res.status(500).json({
|
|
231
|
+
error: INTERNAL_SERVER_ERROR,
|
|
232
|
+
detail: err.message,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
res.status(500).json({
|
|
238
|
+
error: INTERNAL_SERVER_ERROR,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
// Start the server
|
|
243
|
+
const { port, host } = options;
|
|
244
|
+
const server = app.listen(port, host, (err) => {
|
|
245
|
+
if (err) {
|
|
246
|
+
logger_1.logger.error(SERVER_START_FAILED(err));
|
|
247
|
+
// eslint-disable-next-line no-process-exit
|
|
248
|
+
process.exit(2);
|
|
249
|
+
}
|
|
250
|
+
logger_1.logger.info(SERVER_STARTED(formatAddr(server.address())));
|
|
251
|
+
});
|
|
252
|
+
// Handle Signal
|
|
253
|
+
const handler = (err) => {
|
|
254
|
+
logger_1.logger.debug(`${err} signal received: closing HTTP server`);
|
|
255
|
+
server.close(() => {
|
|
256
|
+
logger_1.logger.debug('HTTP server closed');
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
process.once('SIGTERM', handler);
|
|
260
|
+
process.once('SIGINT', handler);
|
|
261
|
+
};
|
|
262
|
+
// Start the server
|
|
263
|
+
startServer().catch(err => {
|
|
264
|
+
logger_1.logger.error(SERVER_START_FAILED(err));
|
|
265
|
+
// eslint-disable-next-line no-process-exit
|
|
266
|
+
process.exit(2);
|
|
267
|
+
});
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDBDQUFpQztBQUdqQyxzREFBOEI7QUFFOUIscUNBQW1DO0FBQ25DLGlEQUE2QztBQUc3Qyw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBQzdDLG9EQUEwRDtBQUMxRCw0REFBNEQ7QUFFNUQsdURBQWtEO0FBQ2xELDJEQUF1RDtBQUN2RCx5REFJa0M7QUFDbEMsbURBQThDO0FBQzlDLG1EQUE4QztBQUU5QyxxQ0FBaUM7QUFDakMsc0NBQWtEO0FBRWxELE1BQU0sRUFDSixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osWUFBWSxFQUNaLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsR0FBRyxnQkFBTyxDQUFDO0FBRVosTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDbkMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFcEMsTUFBTSxVQUFVLEdBQWdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBTSxDQUFDLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBb0IsRUFBRSxFQUFFO0lBQ3JELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsSUFBSSxZQUFZLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRTtRQUMxQywyQ0FBMkM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLFlBQVksRUFBRTtZQUNoQixPQUFPLFlBQVksQ0FBQztT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QWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQWdCO0lBQ2hCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBbUIsRUFBRSxFQUFFO1FBQ3RDLGVBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLHVDQUF1QyxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDaEIsZUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBRUYsbUJBQW1CO0FBQ25CLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUN4QixlQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkMsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQge29wZW59IGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCB0eXBlIHtBZGRyZXNzSW5mb30gZnJvbSAnbmV0JztcblxuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7TmV4dEZ1bmN0aW9uLCBSZXF1ZXN0LCBSZXNwb25zZX0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQge2R1bXAsIGxvYWR9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHtFUlJPUlN9IGZyb20gJ0Bncm5zZnQvaWYtY29yZS91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtNYW5pZmVzdH0gZnJvbSAnLi4vY29tbW9uL3R5cGVzL21hbmlmZXN0JztcbmltcG9ydCB7ZGVidWdMb2dnZXJ9IGZyb20gJy4uL2NvbW1vbi91dGlsL2RlYnVnLWxvZ2dlcic7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcbmltcG9ydCB7ZXhlY3V0ZVdpdGhDb250ZXh0fSBmcm9tICcuLi9jb21tb24vdXRpbC9zdG9yYWdlJztcbmltcG9ydCB7dmFsaWRhdGVNYW5pZmVzdH0gZnJvbSAnLi4vY29tbW9uL3V0aWwvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQge2FnZ3JlZ2F0ZX0gZnJvbSAnLi4vaWYtcnVuL2xpYi9hZ2dyZWdhdGUnO1xuaW1wb3J0IHtnZXRFeGVjdXRpb259IGZyb20gJy4uL2lmLXJ1bi9saWIvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtcbiAgaW5pdGlhbGl6ZSxcbiAgc2V0RXh0ZXJuYWxQbHVnaW5XYXJuaW5nLFxuICBzZXREaXNhYmxlZFBsdWdpbnMsXG59IGZyb20gJy4uL2lmLXJ1bi9saWIvaW5pdGlhbGl6ZSc7XG5pbXBvcnQge2NvbXB1dGV9IGZyb20gJy4uL2lmLXJ1bi9saWIvY29tcHV0ZSc7XG5pbXBvcnQge2V4cGxhaW59IGZyb20gJy4uL2lmLXJ1bi9saWIvZXhwbGFpbic7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtwYXJzZUlmQXBpUHJvY2Vzc0FyZ3N9IGZyb20gJy4vdXRpbC9hcmdzJztcblxuY29uc3Qge1xuICBESVNDTEFJTUVSX01FU1NBR0UsXG4gIElOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgSU5WQUxJRF9ESVNBQkxFRF9QTFVHSU5TLFxuICBJTlZBTElEX0pTT04sXG4gIElOVkFMSURfWUFNTCxcbiAgTUlTU0lOR19NQU5JRkVTVCxcbiAgUFJPQ0VTU0lOR19SRVFVRVNULFxuICBTRVJWRVJfU1RBUlRFRCxcbiAgU0VSVkVSX1NUQVJUX0ZBSUxFRCxcbiAgVU5TVVBQT1JURURfQ09OVEVOVF9UWVBFLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IENUX1lBTUwgPSAnYXBwbGljYXRpb24veWFtbCc7XG5jb25zdCBDVF9KU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuY29uc3QgQ1RfVkFMSUQgPSBbQ1RfWUFNTCwgQ1RfSlNPTl07XG5cbmNvbnN0IEVSUk9SX0xJU1Q6IHJlYWRvbmx5IEVycm9yQ29uc3RydWN0b3JbXSA9IE9iamVjdC52YWx1ZXMoRVJST1JTKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgcmVzcG9uc2UgdHlwZS5cbiAqL1xuY29uc3QgZGV0ZXJtaW5lUmVzcG9uc2VUeXBlID0gKHJlcTogZXhwcmVzcy5SZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IGFjY2VwdEhlYWRlciA9IHJlcS5nZXQoJ0FjY2VwdCcpO1xuICBpZiAoYWNjZXB0SGVhZGVyICYmIGFjY2VwdEhlYWRlciAhPT0gJyovKicpIHtcbiAgICAvLyBEZXRlcm1pbmUgYmFzZWQgb24gcmVxdWVzdCBBY2NlcHQgaGVhZGVyXG4gICAgY29uc3QgcmVzcG9uc2VUeXBlID0gcmVxLmFjY2VwdHMoQ1RfVkFMSUQpO1xuICAgIGlmIChyZXNwb25zZVR5cGUpIHtcbiAgICAgIHJldHVybiByZXNwb25zZVR5cGU7XG4gICAgfVxuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIGJhc2VkIG9uIHJlcXVlc3QgQ29udGVudC1UeXBlXG4gIHJldHVybiByZXEuZ2V0KCdDb250ZW50LVR5cGUnKTtcbn07XG5cbi8qKlxuICogU2VuZCB0aGUgcmVzcG9uc2UgaW4gdGhlIGFwcHJvcHJpYXRlIGZvcm1hdC5cbiAqL1xuY29uc3Qgc2VuZFJlc3BvbnNlID0gKFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIG1hbmlmZXN0OiBNYW5pZmVzdCxcbiAgc3RhdHVzOiBudW1iZXJcbikgPT4ge1xuICBjb25zdCByZXNwb25zZVR5cGUgPSBkZXRlcm1pbmVSZXNwb25zZVR5cGUocmVxKTtcbiAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gQ1RfWUFNTCkge1xuICAgIGNvbnN0IHlhbWxEYXRhID0gZHVtcChtYW5pZmVzdCwge25vUmVmczogdHJ1ZX0pO1xuICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIHJlc3BvbnNlVHlwZSk7XG4gICAgcmVzLnN0YXR1cyhzdGF0dXMpLnNlbmQoeWFtbERhdGEpO1xuICB9IGVsc2Uge1xuICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIHJlc3BvbnNlVHlwZSk7XG4gICAgcmVzLnN0YXR1cyhzdGF0dXMpLmpzb24obWFuaWZlc3QpO1xuICB9XG59O1xuXG4vKipcbiAqIFBhcnNlIGRpc2FibGVkIHBsdWdpbnMgZmlsZVxuICogQHBhcmFtIGZpbGVuYW1lIEZpbGVuYW1lIHRoYXQgY29udGFpbnMgcGx1Z2luIG5hbWVzIHRvIGJlIGRpc2FibGVkXG4gKiBAcmV0dXJucyBTZXQgb2YgZGlzYWJsZWRQbHVnaW5zXG4gKi9cbmNvbnN0IHBhcnNlRGlzYWJsZWRQbHVnaW5zID0gYXN5bmMgKGZpbGVuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgLy8gSWYgbm8gZmlsZW5hbWUgaXMgc3BlY2lmaWVkLCBkaXNhYmxlIGJ1aWx0aW46U2hlbGwsIGJ1aWx0aW46Q1NWSW1wb3J0LCBidWlsdGluOkNTVkxvb2t1cCBieSBkZWZhdWx0LlxuICBpZiAoIWZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgICAnYnVpbHRpbjpTaGVsbCcsXG4gICAgICAnYnVpbHRpbjpDU1ZJbXBvcnQnLFxuICAgICAgJ2J1aWx0aW46Q1NWTG9va3VwJyxcbiAgICBdKTtcbiAgfVxuXG4gIGNvbnN0IGRpc2FibGVkUGx1Z2lucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBmaWxlID0gYXdhaXQgb3BlbihmaWxlbmFtZSk7XG4gIHRyeSB7XG4gICAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGZpbGUucmVhZExpbmVzKCkpIHtcbiAgICAgIGNvbnN0IHdvcmRzID0gbGluZS5zcGxpdCgvICo6ICovKTtcbiAgICAgIHN3aXRjaCAod29yZHMubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBkaXNhYmxlZFBsdWdpbnMuYWRkKGBidWlsdGluOiR7d29yZHNbMF19YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBkaXNhYmxlZFBsdWdpbnMuYWRkKGAke3dvcmRzWzBdfToke3dvcmRzWzFdfWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RJU0FCTEVEX1BMVUdJTlMobGluZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmaWxlLmNsb3NlKCk7XG4gIH1cbiAgcmV0dXJuIGRpc2FibGVkUGx1Z2lucztcbn07XG5cbmNvbnN0IGZvcm1hdEFkZHIgPSAoYWRkcjogc3RyaW5nIHwgQWRkcmVzc0luZm8gfCBudWxsKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBhZGRyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhZGRyO1xuICB9IGVsc2UgaWYgKGFkZHIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9IGVsc2UgaWYgKGFkZHIuZmFtaWx5ID09PSAnSVB2NicpIHtcbiAgICByZXR1cm4gYFske2FkZHIuYWRkcmVzc31dOiR7YWRkci5wb3J0fWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGAke2FkZHIuYWRkcmVzc306JHthZGRyLnBvcnR9YDtcbiAgfVxufTtcblxuLyoqXG4gKiBTdGFydCB0aGUgQVBJIHNlcnZlci5cbiAqL1xuY29uc3Qgc3RhcnRTZXJ2ZXIgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUlmQXBpUHJvY2Vzc0FyZ3MoKTtcblxuICBkZWJ1Z0xvZ2dlci5vdmVycmlkZUNvbnNvbGVNZXRob2RzKG9wdGlvbnMuZGVidWcpO1xuXG4gIGxvZ2dlci5pbmZvKERJU0NMQUlNRVJfTUVTU0FHRSk7XG5cbiAgc2V0RXh0ZXJuYWxQbHVnaW5XYXJuaW5nKCFvcHRpb25zLmRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmcpO1xuXG4gIGNvbnN0IGRpc2FibGVkUGx1Z2lucyA9IGF3YWl0IHBhcnNlRGlzYWJsZWRQbHVnaW5zKG9wdGlvbnMuZGlzYWJsZWRQbHVnaW5zKTtcbiAgc2V0RGlzYWJsZWRQbHVnaW5zKGRpc2FibGVkUGx1Z2lucyk7XG5cbiAgLy8gR2V0IGV4ZWN1dGlvbiBpbmZvcm1hdGlvbiAoY29tbWFuZCwgZW52aXJvbm1lbnQpLlxuICBjb25zdCBleGVjdXRpb24gPSBhd2FpdCBnZXRFeGVjdXRpb24oKTtcblxuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG5cbiAgLy8gTWlkZGxld2FyZSBmb3IgSlNPTiByZXF1ZXN0c1xuICBhcHAudXNlKGV4cHJlc3MuanNvbih7dHlwZTogQ1RfSlNPTn0pKTtcblxuICAvLyBDdXN0b20gbWlkZGxld2FyZSBmb3IgWUFNTCByZXF1ZXN0c1xuICBhcHAudXNlKFxuICAgIGV4cHJlc3MudGV4dCh7dHlwZTogQ1RfWUFNTH0pLFxuICAgIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKHJlcS5pcyhDVF9ZQU1MKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcS5ib2R5ID0gbG9hZChyZXEuYm9keSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg0MDApLmpzb24oe1xuICAgICAgICAgICAgZXJyb3I6IElOVkFMSURfWUFNTCxcbiAgICAgICAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICApO1xuXG4gIC8vIEFkZCByZXF1ZXN0IGNvbnRleHQgc3RvcmFnZVxuICBhcHAudXNlKChfcmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PlxuICAgIGV4ZWN1dGVXaXRoQ29udGV4dChuZXh0KVxuICApO1xuXG4gIC8vIEhlYWx0aCBjaGVjayBlbmRwb2ludFxuICBhcHAuZ2V0KCcvaGVhbHRoJywgKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiB2b2lkID0+IHtcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCgnT0snKTtcbiAgfSk7XG5cbiAgLy8gUHJvY2VzcyBtYW5pZmVzdCBlbmRwb2ludFxuICBhcHAucG9zdCgnL3YxL3J1bicsIGFzeW5jIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBsb2dnZXIuaW5mbyhQUk9DRVNTSU5HX1JFUVVFU1QpO1xuXG4gICAgLy8gQ2hlY2sgaWYgcmVxdWVzdCBib2R5IGV4aXN0c1xuICAgIGlmICghcmVxLmJvZHkpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtlcnJvcjogTUlTU0lOR19NQU5JRkVTVH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIHJlcXVlc3QgQ29udGVudC1UeXBlXG4gICAgaWYgKCFyZXEuaXMoQ1RfVkFMSUQpKSB7XG4gICAgICByZXMuc3RhdHVzKDQxNSkuanNvbih7ZXJyb3I6IFVOU1VQUE9SVEVEX0NPTlRFTlRfVFlQRX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBtYW5pZmVzdCB3aXRoIGV4ZWN1dGlvbiBpbmZvcm1hdGlvblxuICAgIGNvbnN0IGVudk1hbmlmZXN0OiBNYW5pZmVzdCA9IHtcbiAgICAgIC4uLnJlcS5ib2R5LFxuICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgIGNvbW1hbmQ6IGV4ZWN1dGlvbi5jb21tYW5kLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIC4uLmV4ZWN1dGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgICAnZGF0ZS10aW1lJzogYCR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSAoVVRDKWAsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogZXhlY3V0aW9uLnN0YXR1cyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7dHJlZSwgLi4uY29udGV4dH0gPSB2YWxpZGF0ZU1hbmlmZXN0KGVudk1hbmlmZXN0KTtcblxuICAgICAgY29uc3QgcGx1Z2luU3RvcmFnZSA9IGF3YWl0IGluaXRpYWxpemUoY29udGV4dCk7XG5cbiAgICAgIGNvbnN0IGNvbXB1dGVkVHJlZSA9IGF3YWl0IGNvbXB1dGUodHJlZSwge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBwbHVnaW5TdG9yYWdlLFxuICAgICAgICBvYnNlcnZlOiByZXEucXVlcnkub2JzZXJ2ZSA9PT0gJ3RydWUnLFxuICAgICAgICByZWdyb3VwOiByZXEucXVlcnkucmVncm91cCA9PT0gJ3RydWUnLFxuICAgICAgICBjb21wdXRlOiByZXEucXVlcnkuY29tcHV0ZSA9PT0gJ3RydWUnLFxuICAgICAgICBhcHBlbmQ6IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWRUcmVlID0gYWdncmVnYXRlKGNvbXB1dGVkVHJlZSwgY29udGV4dC5hZ2dyZWdhdGlvbik7XG5cbiAgICAgIGVudk1hbmlmZXN0LmV4cGxhaW5lciAmJiAoY29udGV4dC5leHBsYWluID0gZXhwbGFpbigpKTtcblxuICAgICAgLy8gUHJlcGFyZSByZXNwb25zZSBkYXRhXG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSB7dHJlZTogYWdncmVnYXRlZFRyZWUsIC4uLmNvbnRleHR9O1xuXG4gICAgICAvLyBSZXR1cm4gcmVzcG9uc2UgaW4gdGhlIGRldGVybWluZWQgZm9ybWF0XG4gICAgICBzZW5kUmVzcG9uc2UocmVxLCByZXMsIHJlc3BvbnNlRGF0YSwgMjAwKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIElmIGl0J3Mgb25lIG9mIHRoZSBlcnJvcnMgaW4gRVJST1JTLCB0ZXJtaW5hdGUgd2l0aCBzdGF0dXMgY29kZSA0MDBcbiAgICAgIGlmIChFUlJPUl9MSVNULnNvbWUodmFsID0+IGVyciBpbnN0YW5jZW9mIHZhbCkpIHtcbiAgICAgICAgLyoqIEV4ZWN1dGlvbiBibG9jayBleGlzdHMgYmVjYXVzZSBtYW5pZmVzdCBpcyBhbHJlYWR5IHByb2Nlc3NlZC4gU2V0J3Mgc3RhdHVzIHRvIGBmYWlsYC4gKi9cbiAgICAgICAgZW52TWFuaWZlc3QuZXhlY3V0aW9uIS5zdGF0dXMgPSAnZmFpbCc7XG4gICAgICAgIGVudk1hbmlmZXN0LmV4ZWN1dGlvbiEuZXJyb3IgPSAoZXJyIGFzIEVycm9yKS50b1N0cmluZygpO1xuXG4gICAgICAgIC8vIFJldHVybiByZXNwb25zZSBpbiB0aGUgZGV0ZXJtaW5lZCBmb3JtYXRcbiAgICAgICAgc2VuZFJlc3BvbnNlKHJlcSwgcmVzLCBlbnZNYW5pZmVzdCwgNDAwKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgQ29udGVudC1UeXBlIHRvIGFwcGxpY2F0aW9uL2pzb25cbiAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIENUX0pTT04pO1xuICAgICAgLy8gRm9yIGFsbCBvdGhlciBjYXNlcywgdGVybWluYXRlIHdpdGggc3RhdHVzIGNvZGUgNTAwXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgICAgIGVycm9yOiBJTlRFUk5BTF9TRVJWRVJfRVJST1IsXG4gICAgICAgICAgZGV0YWlsOiBlcnIubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtlcnJvcjogSU5URVJOQUxfU0VSVkVSX0VSUk9SfSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBTZXQgdXAgY3VzdG9tIGVycm9yIGhhbmRsZXJcbiAgYXBwLnVzZShcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgKGVycjogYW55LCBfcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBfbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAvLyBTZXQgQ29udGVudC1UeXBlIHRvIGFwcGxpY2F0aW9uL2pzb25cbiAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIENUX0pTT04pO1xuXG4gICAgICAvLyBJZiBTeW50YXhFcnJvciAoSlNPTiBwYXJzZSBlcnJvciksIHRlcm1pbmF0ZSB3aXRoIHN0YXR1cyBjb2RlIDQwMFxuICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMCAmJiBlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvciAmJiAnYm9keScgaW4gZXJyKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtcbiAgICAgICAgICBlcnJvcjogSU5WQUxJRF9KU09OLFxuICAgICAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBpZiAoJ3N0YXR1cycgaW4gZXJyKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzIGFzIG51bWJlcikuanNvbih7XG4gICAgICAgICAgICBlcnJvcjogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe1xuICAgICAgICAgICAgZXJyb3I6IElOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgICAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgICAgICBlcnJvcjogSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgLy8gU3RhcnQgdGhlIHNlcnZlclxuICBjb25zdCB7cG9ydCwgaG9zdH0gPSBvcHRpb25zO1xuICBjb25zdCBzZXJ2ZXIgPSBhcHAubGlzdGVuKHBvcnQsIGhvc3QsIChlcnI/OiBFcnJvcikgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihTRVJWRVJfU1RBUlRfRkFJTEVEKGVycikpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZXhpdFxuICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgIH1cbiAgICBsb2dnZXIuaW5mbyhTRVJWRVJfU1RBUlRFRChmb3JtYXRBZGRyKHNlcnZlci5hZGRyZXNzKCkpKSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTaWduYWxcbiAgY29uc3QgaGFuZGxlciA9IChlcnI6IE5vZGVKUy5TaWduYWxzKSA9PiB7XG4gICAgbG9nZ2VyLmRlYnVnKGAke2Vycn0gc2lnbmFsIHJlY2VpdmVkOiBjbG9zaW5nIEhUVFAgc2VydmVyYCk7XG4gICAgc2VydmVyLmNsb3NlKCgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnSFRUUCBzZXJ2ZXIgY2xvc2VkJyk7XG4gICAgfSk7XG4gIH07XG4gIHByb2Nlc3Mub25jZSgnU0lHVEVSTScsIGhhbmRsZXIpO1xuICBwcm9jZXNzLm9uY2UoJ1NJR0lOVCcsIGhhbmRsZXIpO1xufTtcblxuLy8gU3RhcnQgdGhlIHNlcnZlclxuc3RhcnRTZXJ2ZXIoKS5jYXRjaChlcnIgPT4ge1xuICBsb2dnZXIuZXJyb3IoU0VSVkVSX1NUQVJUX0ZBSUxFRChlcnIpKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZXhpdFxuICBwcm9jZXNzLmV4aXQoMik7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for if-api process arguments.
|
|
3
|
+
*/
|
|
4
|
+
export interface IfApiArgs {
|
|
5
|
+
debug: boolean;
|
|
6
|
+
disableExternalPluginWarning: boolean;
|
|
7
|
+
disabledPlugins?: string;
|
|
8
|
+
port: string;
|
|
9
|
+
host: string;
|
|
10
|
+
help?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface IfApiOptions {
|
|
13
|
+
debug: boolean;
|
|
14
|
+
disableExternalPluginWarning: boolean;
|
|
15
|
+
disabledPlugins: string | undefined;
|
|
16
|
+
port: number;
|
|
17
|
+
host: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1hcmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lmLWFwaS90eXBlcy9wcm9jZXNzLWFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZXJmYWNlIGZvciBpZi1hcGkgcHJvY2VzcyBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWZBcGlBcmdzIHtcbiAgZGVidWc6IGJvb2xlYW47XG4gIGRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmc6IGJvb2xlYW47XG4gIGRpc2FibGVkUGx1Z2lucz86IHN0cmluZztcbiAgcG9ydDogc3RyaW5nO1xuICBob3N0OiBzdHJpbmc7XG4gIGhlbHA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElmQXBpT3B0aW9ucyB7XG4gIGRlYnVnOiBib29sZWFuO1xuICBkaXNhYmxlRXh0ZXJuYWxQbHVnaW5XYXJuaW5nOiBib29sZWFuO1xuICBkaXNhYmxlZFBsdWdpbnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcG9ydDogbnVtYmVyO1xuICBob3N0OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseIfApiProcessArgs = void 0;
|
|
4
|
+
const ts_command_line_args_1 = require("ts-command-line-args");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const { ARGS, HELP } = config_1.CONFIG;
|
|
7
|
+
const { INVALID_PORT_NUMBER } = config_1.STRINGS;
|
|
8
|
+
/**
|
|
9
|
+
* Validates `if-api` process arguments.
|
|
10
|
+
*/
|
|
11
|
+
const validateAndParseProcessArgs = () => {
|
|
12
|
+
try {
|
|
13
|
+
return (0, ts_command_line_args_1.parse)(ARGS, HELP);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof Error) {
|
|
17
|
+
console.log(error.message);
|
|
18
|
+
console.log('Here are the supported flags for the `if-api` command:');
|
|
19
|
+
(0, ts_command_line_args_1.parse)(ARGS, { ...HELP, argv: ['--help'], processExitCode: 1 });
|
|
20
|
+
}
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Parse command line arguments for `if-api`.
|
|
26
|
+
*/
|
|
27
|
+
const parseIfApiProcessArgs = () => {
|
|
28
|
+
const options = validateAndParseProcessArgs();
|
|
29
|
+
const port = parseInt(options.port, 10);
|
|
30
|
+
if (Number.isNaN(port) || port < 0 || port > 65535) {
|
|
31
|
+
throw new Error(INVALID_PORT_NUMBER(options.port));
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
debug: options.debug,
|
|
35
|
+
disableExternalPluginWarning: options.disableExternalPluginWarning,
|
|
36
|
+
disabledPlugins: options.disabledPlugins,
|
|
37
|
+
port,
|
|
38
|
+
host: options.host,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.parseIfApiProcessArgs = parseIfApiProcessArgs;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1hcGkvdXRpbC9hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUEyQztBQUUzQyxzQ0FBMEM7QUFHMUMsTUFBTSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFDNUIsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sMkJBQTJCLEdBQUcsR0FBYyxFQUFFO0lBQ2xELElBQUk7UUFDRixPQUFPLElBQUEsNEJBQUssRUFBWSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDdEUsSUFBQSw0QkFBSyxFQUFZLElBQUksRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQ0QsTUFBTSxLQUFLLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxxQkFBcUIsR0FBRyxHQUFpQixFQUFFO0lBQ3RELE1BQU0sT0FBTyxHQUFHLDJCQUEyQixFQUFFLENBQUM7SUFDOUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRTtRQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsT0FBTztRQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQiw0QkFBNEIsRUFBRSxPQUFPLENBQUMsNEJBQTRCO1FBQ2xFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4QyxJQUFJO1FBQ0osSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUM7QUFDSixDQUFDLENBQUM7QUFkVyxRQUFBLHFCQUFxQix5QkFjaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlfSBmcm9tICd0cy1jb21tYW5kLWxpbmUtYXJncyc7XG5cbmltcG9ydCB7Q09ORklHLCBTVFJJTkdTfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHR5cGUge0lmQXBpQXJncywgSWZBcGlPcHRpb25zfSBmcm9tICcuLi90eXBlcy9wcm9jZXNzLWFyZ3MnO1xuXG5jb25zdCB7QVJHUywgSEVMUH0gPSBDT05GSUc7XG5jb25zdCB7SU5WQUxJRF9QT1JUX05VTUJFUn0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBgaWYtYXBpYCBwcm9jZXNzIGFyZ3VtZW50cy5cbiAqL1xuY29uc3QgdmFsaWRhdGVBbmRQYXJzZVByb2Nlc3NBcmdzID0gKCk6IElmQXBpQXJncyA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlPElmQXBpQXJncz4oQVJHUywgSEVMUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgY29uc29sZS5sb2coJ0hlcmUgYXJlIHRoZSBzdXBwb3J0ZWQgZmxhZ3MgZm9yIHRoZSBgaWYtYXBpYCBjb21tYW5kOicpO1xuICAgICAgcGFyc2U8SWZBcGlBcmdzPihBUkdTLCB7Li4uSEVMUCwgYXJndjogWyctLWhlbHAnXSwgcHJvY2Vzc0V4aXRDb2RlOiAxfSk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG4vKipcbiAqIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZm9yIGBpZi1hcGlgLlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VJZkFwaVByb2Nlc3NBcmdzID0gKCk6IElmQXBpT3B0aW9ucyA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB2YWxpZGF0ZUFuZFBhcnNlUHJvY2Vzc0FyZ3MoKTtcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KG9wdGlvbnMucG9ydCwgMTApO1xuICBpZiAoTnVtYmVyLmlzTmFOKHBvcnQpIHx8IHBvcnQgPCAwIHx8IHBvcnQgPiA2NTUzNSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX1BPUlRfTlVNQkVSKG9wdGlvbnMucG9ydCkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWJ1Zzogb3B0aW9ucy5kZWJ1ZyxcbiAgICBkaXNhYmxlRXh0ZXJuYWxQbHVnaW5XYXJuaW5nOiBvcHRpb25zLmRpc2FibGVFeHRlcm5hbFBsdWdpbldhcm5pbmcsXG4gICAgZGlzYWJsZWRQbHVnaW5zOiBvcHRpb25zLmRpc2FibGVkUGx1Z2lucyxcbiAgICBwb3J0LFxuICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCxcbiAgfTtcbn07XG4iXX0=
|
package/build/if-check/index.js
CHANGED
|
@@ -46,13 +46,7 @@ const IfCheck = async () => {
|
|
|
46
46
|
}
|
|
47
47
|
catch (error) {
|
|
48
48
|
const fileName = path.basename(manifest);
|
|
49
|
-
const executedFile = manifest
|
|
50
|
-
.replace(fileName, `re-${fileName}`)
|
|
51
|
-
.replace('yml', 'yaml');
|
|
52
|
-
const manifestDirPath = path.dirname(manifest);
|
|
53
49
|
(0, helpers_1.logStdoutFailMessage)(error, fileName);
|
|
54
|
-
await (0, fs_1.removeFileIfExists)(`${manifestDirPath}/package.json`);
|
|
55
|
-
await (0, fs_1.removeFileIfExists)(executedFile);
|
|
56
50
|
}
|
|
57
51
|
}
|
|
58
52
|
else {
|
|
@@ -71,13 +65,9 @@ const IfCheck = async () => {
|
|
|
71
65
|
}
|
|
72
66
|
catch (error) {
|
|
73
67
|
const fileName = path.basename(file);
|
|
74
|
-
const executedFile = file
|
|
75
|
-
.replace(fileName, `re-${fileName}`)
|
|
76
|
-
.replace('yml', 'yaml');
|
|
77
68
|
const failedFilesLog = (0, helpers_1.logStdoutFailMessage)(error, fileName);
|
|
78
69
|
failedLogs.message = failedLogs.message.concat(failedFilesLog);
|
|
79
70
|
failedLogs.count++;
|
|
80
|
-
await (0, fs_1.removeFileIfExists)(executedFile);
|
|
81
71
|
}
|
|
82
72
|
}
|
|
83
73
|
if (failedLogs.count > 0) {
|
|
@@ -95,4 +85,4 @@ IfCheck().catch(error => {
|
|
|
95
85
|
process.exit(2);
|
|
96
86
|
}
|
|
97
87
|
});
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWYtY2hlY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvQ0FBb0M7QUFDcEMsMkNBQTZCO0FBRTdCLDBDQUErQztBQUMvQyw4REFBd0Q7QUFDeEQsa0RBQTZDO0FBRTdDLDRDQUFvRDtBQUNwRCxzQ0FBNkM7QUFDN0Msb0NBQTJDO0FBRTNDLHFDQUFpQztBQUVqQyxNQUFNLEVBQ0osUUFBUSxFQUNSLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixHQUFHLGdCQUFPLENBQUM7QUFFWixNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRTtJQUN6Qix5RUFBeUU7SUFDekUsMEJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsdUJBQWdCLEdBQUUsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUU3QixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDeEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUV0QyxJQUFJO1lBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsUUFBUSxDQUFDLENBQUM7U0FDakM7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLElBQUEsOEJBQW9CLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sVUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsaUJBQVksRUFBQyxTQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUN4QyxJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBRWxELElBQUk7Z0JBQ0YsTUFBTSxJQUFBLHFCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7WUFBQyxPQUFPLEtBQVUsRUFBRTtnQkFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxjQUFjLEdBQUcsSUFBQSw4QkFBb0IsRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdELFVBQVUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNwQjtTQUNGO1FBRUQsSUFBSSxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN4QixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUV6RCxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO0tBQ0Y7QUFDSCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDdEIsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1FBQzFCLGVBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvY2Vzcy1leGl0ICovXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge2dldFlhbWxGaWxlc30gZnJvbSAnLi4vY29tbW9uL3V0aWwvZnMnO1xuaW1wb3J0IHtkZWJ1Z0xvZ2dlcn0gZnJvbSAnLi4vY29tbW9uL3V0aWwvZGVidWctbG9nZ2VyJztcbmltcG9ydCB7bG9nZ2VyfSBmcm9tICcuLi9jb21tb24vdXRpbC9sb2dnZXInO1xuXG5pbXBvcnQge2xvZ1N0ZG91dEZhaWxNZXNzYWdlfSBmcm9tICcuL3V0aWwvaGVscGVycyc7XG5pbXBvcnQge3BhcnNlSWZDaGVja0FyZ3N9IGZyb20gJy4vdXRpbC9hcmdzJztcbmltcG9ydCB7ZXhlY3V0ZUNvbW1hbmRzfSBmcm9tICcuL3V0aWwvbnBtJztcblxuaW1wb3J0IHtTVFJJTkdTfSBmcm9tICcuL2NvbmZpZyc7XG5cbmNvbnN0IHtcbiAgQ0hFQ0tJTkcsXG4gIERJUkVDVE9SWV9ZQU1MX0ZJTEVTX05PVF9GT1VORCxcbiAgSUZfQ0hFQ0tfVkVSSUZJQ0FUSU9OX0ZBSUxVUkVTLFxuICBJRl9DSEVDS19TVU1NQVJZX0xPRyxcbiAgSUZfQ0hFQ0tfRVhFQ1VUSU5HLFxufSA9IFNUUklOR1M7XG5cbmNvbnN0IElmQ2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIC8vIENhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIGZhbHNlIHBhcmFtZXRlciB0byBwcmV2ZW50IGxvZyBkZWJ1ZyBtZXNzYWdlcy5cbiAgZGVidWdMb2dnZXIub3ZlcnJpZGVDb25zb2xlTWV0aG9kcyhmYWxzZSk7XG5cbiAgY29uc3QgY29tbWFuZEFyZ3MgPSBhd2FpdCBwYXJzZUlmQ2hlY2tBcmdzKCk7XG5cbiAgY29uc29sZS5sb2coYCR7Q0hFQ0tJTkd9XFxuYCk7XG5cbiAgaWYgKGNvbW1hbmRBcmdzLm1hbmlmZXN0KSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBjb21tYW5kQXJncy5tYW5pZmVzdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjdXRlQ29tbWFuZHMobWFuaWZlc3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShtYW5pZmVzdCk7XG4gICAgICBsb2dTdGRvdXRGYWlsTWVzc2FnZShlcnJvciwgZmlsZU5hbWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmYWlsZWRMb2dzID0ge2NvdW50OiAwLCBtZXNzYWdlOiAnJ307XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gY29tbWFuZEFyZ3MuZGlyZWN0b3J5O1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2V0WWFtbEZpbGVzKGRpcmVjdG9yeSEpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coRElSRUNUT1JZX1lBTUxfRklMRVNfTk9UX0ZPVU5EKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVSZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKFxuICAgICAgICBwcm9jZXNzLmVudi5DVVJSRU5UX0RJUiB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBmaWxlXG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coSUZfQ0hFQ0tfRVhFQ1VUSU5HKGZpbGVSZWxhdGl2ZVBhdGgpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZXhlY3V0ZUNvbW1hbmRzKGZpbGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZSk7XG4gICAgICAgIGNvbnN0IGZhaWxlZEZpbGVzTG9nID0gbG9nU3Rkb3V0RmFpbE1lc3NhZ2UoZXJyb3IsIGZpbGVOYW1lKTtcbiAgICAgICAgZmFpbGVkTG9ncy5tZXNzYWdlID0gZmFpbGVkTG9ncy5tZXNzYWdlLmNvbmNhdChmYWlsZWRGaWxlc0xvZyk7XG4gICAgICAgIGZhaWxlZExvZ3MuY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmFpbGVkTG9ncy5jb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHBhc3NlZEZpbGVzQ291bnQgPSBmaWxlcy5sZW5ndGggLSBmYWlsZWRMb2dzLmNvdW50O1xuXG4gICAgICBjb25zb2xlLmxvZyhJRl9DSEVDS19WRVJJRklDQVRJT05fRkFJTFVSRVMpO1xuICAgICAgY29uc29sZS5sb2coZmFpbGVkTG9ncy5tZXNzYWdlKTtcbiAgICAgIGNvbnNvbGUubG9nKElGX0NIRUNLX1NVTU1BUllfTE9HKHBhc3NlZEZpbGVzQ291bnQsIGZpbGVzLmxlbmd0aCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufTtcblxuSWZDaGVjaygpLmNhdGNoKGVycm9yID0+IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgfVxufSk7XG4iXX0=
|