@quadnix/octo 0.0.2 → 0.0.3
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/package.json +6 -1
- package/.eslintrc.cjs +0 -26
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/src/app.type.ts +0 -56
- package/src/decorators/action.decorator.spec.ts +0 -43
- package/src/decorators/action.decorator.ts +0 -24
- package/src/decorators/anchor.decorator.ts +0 -10
- package/src/decorators/container.spec.ts +0 -104
- package/src/decorators/container.ts +0 -133
- package/src/decorators/factory.decorator.ts +0 -13
- package/src/decorators/model.decorator.ts +0 -10
- package/src/decorators/module.decorator.ts +0 -13
- package/src/decorators/overlay.decorator.ts +0 -10
- package/src/decorators/resource.decorator.ts +0 -10
- package/src/decorators/test-container.spec.ts +0 -50
- package/src/decorators/test-container.ts +0 -56
- package/src/functions/dependency/dependency.model.spec.ts +0 -43
- package/src/functions/dependency/dependency.model.ts +0 -178
- package/src/functions/diff/diff-metadata.model.ts +0 -51
- package/src/functions/diff/diff.model.ts +0 -33
- package/src/functions/diff/diff.utility.ts +0 -163
- package/src/functions/module/module.abstract.ts +0 -59
- package/src/functions/module/module.interface.ts +0 -5
- package/src/index.ts +0 -62
- package/src/models/action.interface.ts +0 -35
- package/src/models/app/app.interface.ts +0 -5
- package/src/models/app/app.model.ts +0 -111
- package/src/models/deployment/deployment.interface.ts +0 -5
- package/src/models/deployment/deployment.model.ts +0 -35
- package/src/models/environment/environment.interface.ts +0 -6
- package/src/models/environment/environment.model.spec.ts +0 -125
- package/src/models/environment/environment.model.ts +0 -55
- package/src/models/execution/execution.interface.ts +0 -8
- package/src/models/execution/execution.model.spec.ts +0 -62
- package/src/models/execution/execution.model.ts +0 -89
- package/src/models/image/image.interface.ts +0 -8
- package/src/models/image/image.model.ts +0 -62
- package/src/models/model.abstract.ts +0 -324
- package/src/models/model.interface.ts +0 -42
- package/src/models/pipeline/pipeline.interface.ts +0 -6
- package/src/models/pipeline/pipeline.model.ts +0 -47
- package/src/models/region/region.interface.ts +0 -5
- package/src/models/region/region.model.spec.ts +0 -162
- package/src/models/region/region.model.ts +0 -48
- package/src/models/server/server.interface.ts +0 -7
- package/src/models/server/server.model.ts +0 -56
- package/src/models/service/service.interface.ts +0 -5
- package/src/models/service/service.model.ts +0 -25
- package/src/models/support/support.interface.ts +0 -6
- package/src/models/support/support.model.spec.ts +0 -78
- package/src/models/support/support.model.ts +0 -52
- package/src/overlays/anchor.abstract.ts +0 -41
- package/src/overlays/anchor.interface.ts +0 -7
- package/src/overlays/anchor.spec.ts +0 -41
- package/src/overlays/overlay-data.repository.ts +0 -76
- package/src/overlays/overlay.abstract.ts +0 -64
- package/src/overlays/overlay.interface.ts +0 -9
- package/src/overlays/overlay.service.ts +0 -38
- package/src/overlays/overlay.spec.ts +0 -86
- package/src/resources/resource-action.interface.ts +0 -9
- package/src/resources/resource-data.repository.spec.ts +0 -133
- package/src/resources/resource-data.repository.ts +0 -92
- package/src/resources/resource.abstract.ts +0 -108
- package/src/resources/resource.interface.ts +0 -7
- package/src/resources/resource.spec.ts +0 -60
- package/src/resources/shared-resource.abstract.ts +0 -53
- package/src/resources/shared-resource.spec.ts +0 -133
- package/src/services/serialization/model/__snapshots__/model-serialization.service.spec.ts.snap +0 -656
- package/src/services/serialization/model/model-serialization.service.spec.ts +0 -195
- package/src/services/serialization/model/model-serialization.service.ts +0 -172
- package/src/services/serialization/resource/__snapshots__/resource-serialization.service.spec.ts.snap +0 -284
- package/src/services/serialization/resource/resource-serialization.service.spec.ts +0 -311
- package/src/services/serialization/resource/resource-serialization.service.ts +0 -166
- package/src/services/state-management/local.state-provider.spec.ts +0 -42
- package/src/services/state-management/local.state-provider.ts +0 -23
- package/src/services/state-management/state-management.service.ts +0 -43
- package/src/services/state-management/state-provider.interface.ts +0 -5
- package/src/services/transaction/__snapshots__/transaction.service.spec.ts.snap +0 -284
- package/src/services/transaction/transaction.service.spec.ts +0 -823
- package/src/services/transaction/transaction.service.ts +0 -386
- package/test/app.e2e-spec.ts +0 -104
- package/test/helpers/test-classes.ts +0 -31
- package/test/models/__snapshots__/model.e2e-spec.ts.snap +0 -451
- package/test/models/model.e2e-spec.ts +0 -366
- package/tsconfig.build.json +0 -4
- package/tsconfig.json +0 -9
package/package.json
CHANGED
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"node": ">=16"
|
|
7
7
|
},
|
|
8
8
|
"exports": "./dist/index.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"!dist/tsconfig.build.tsbuildinfo",
|
|
12
|
+
"package.json"
|
|
13
|
+
],
|
|
9
14
|
"jest": {
|
|
10
15
|
"coverageDirectory": "./coverage",
|
|
11
16
|
"extensionsToTreatAsEsm": [
|
|
@@ -53,5 +58,5 @@
|
|
|
53
58
|
},
|
|
54
59
|
"type": "module",
|
|
55
60
|
"types": "./dist/index.d.ts",
|
|
56
|
-
"version": "0.0.
|
|
61
|
+
"version": "0.0.3"
|
|
57
62
|
}
|
package/.eslintrc.cjs
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
extends: ['../../.eslintrc.cjs'],
|
|
3
|
-
ignorePatterns: ['coverage', 'dist', 'node_modules'],
|
|
4
|
-
parserOptions: {
|
|
5
|
-
ecmaVersion: '2022',
|
|
6
|
-
extraFileExtensions: ['.json'],
|
|
7
|
-
project: 'tsconfig.json',
|
|
8
|
-
sourceType: 'module',
|
|
9
|
-
tsconfigRootDir: __dirname,
|
|
10
|
-
},
|
|
11
|
-
root: true,
|
|
12
|
-
rules: {
|
|
13
|
-
'@nx/enforce-module-boundaries': [
|
|
14
|
-
'error',
|
|
15
|
-
{
|
|
16
|
-
allow: [],
|
|
17
|
-
depConstraints: [
|
|
18
|
-
{
|
|
19
|
-
onlyDependOnLibsWithTags: ['scope:octo'],
|
|
20
|
-
sourceTag: 'scope:octo',
|
|
21
|
-
},
|
|
22
|
-
],
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
},
|
|
26
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../src/functions/diff/diff.model.ts","../src/functions/dependency/dependency.model.ts","../src/models/model.interface.ts","../src/functions/module/module.interface.ts","../src/overlays/anchor.abstract.ts","../src/overlays/anchor.interface.ts","../src/functions/diff/diff.utility.ts","../src/models/model.abstract.ts","../src/overlays/overlay.interface.ts","../src/overlays/overlay.abstract.ts","../src/resources/resource.interface.ts","../src/resources/shared-resource.abstract.ts","../src/resources/resource.abstract.ts","../src/app.type.ts","../src/decorators/container.ts","../src/decorators/factory.decorator.ts","../src/functions/module/module.abstract.ts","../src/overlays/overlay-data.repository.ts","../src/services/serialization/model/model-serialization.service.ts","../src/decorators/anchor.decorator.ts","../src/models/action.interface.ts","../src/resources/resource-action.interface.ts","../src/functions/diff/diff-metadata.model.ts","../src/resources/resource-data.repository.ts","../src/services/transaction/transaction.service.ts","../src/decorators/action.decorator.ts","../src/decorators/model.decorator.ts","../src/decorators/module.decorator.ts","../src/decorators/overlay.decorator.ts","../src/services/serialization/resource/resource-serialization.service.ts","../src/decorators/resource.decorator.ts","../src/decorators/test-container.ts","../src/models/image/image.interface.ts","../src/models/image/image.model.ts","../src/models/pipeline/pipeline.interface.ts","../src/models/pipeline/pipeline.model.ts","../src/models/environment/environment.interface.ts","../src/models/environment/environment.model.ts","../src/models/region/region.interface.ts","../src/models/region/region.model.ts","../src/models/deployment/deployment.interface.ts","../src/models/deployment/deployment.model.ts","../src/models/server/server.interface.ts","../src/models/server/server.model.ts","../src/models/service/service.interface.ts","../src/models/service/service.model.ts","../src/models/support/support.interface.ts","../src/models/support/support.model.ts","../src/models/app/app.interface.ts","../src/models/app/app.model.ts","../src/models/execution/execution.interface.ts","../src/models/execution/execution.model.ts","../src/overlays/overlay.service.ts","../src/services/state-management/state-provider.interface.ts","../src/services/state-management/local.state-provider.ts","../src/services/state-management/state-management.service.ts","../src/index.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/acorn/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/bonjour/index.d.ts","../../../node_modules/mime/dist/src/mime.d.ts","../../../node_modules/mime/dist/src/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/connect-history-api-fallback/index.d.ts","../../../node_modules/@types/d3-time/index.d.ts","../../../node_modules/@types/d3-scale/index.d.ts","../../../node_modules/@types/d3-scale-chromatic/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/eslint-scope/index.d.ts","../../../node_modules/@types/estree-jsx/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/gtag.js/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/history/domutils.d.ts","../../../node_modules/@types/history/createbrowserhistory.d.ts","../../../node_modules/@types/history/createhashhistory.d.ts","../../../node_modules/@types/history/creatememoryhistory.d.ts","../../../node_modules/@types/history/locationutils.d.ts","../../../node_modules/@types/history/pathutils.d.ts","../../../node_modules/@types/history/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/http-proxy/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/js-yaml/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mdx/types.d.ts","../../../node_modules/@types/mdx/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/node-forge/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prismjs/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/ts5.0/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/ts5.0/index.d.ts","../../../node_modules/@types/react-router/index.d.ts","../../../node_modules/@types/react-router-config/index.d.ts","../../../node_modules/@types/react-router-dom/index.d.ts","../../../node_modules/@types/retry/index.d.ts","../../../node_modules/@types/sax/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/serve-index/index.d.ts","../../../node_modules/@types/sockjs/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"6a6b471e7e43e15ef6f8fe617a22ce4ecb0e34efa6c3dfcfe7cebd392bcca9d2","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","impliedFormat":1},{"version":"27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"fcd3ecc9f764f06f4d5c467677f4f117f6abf49dee6716283aa204ff1162498b","affectsGlobalScope":true,"impliedFormat":1},{"version":"9a60b92bca4c1257db03b349d58e63e4868cfc0d1c8d0ba60c2dbc63f4e6c9f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true,"impliedFormat":1},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5114a95689b63f96b957e00216bc04baf9e1a1782aa4d8ee7e5e9acbf768e301","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true,"impliedFormat":1},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true,"impliedFormat":1},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true,"impliedFormat":1},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true,"impliedFormat":1},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true,"impliedFormat":1},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true,"impliedFormat":1},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7feb7967c6c6003e11f49efa8f5de989484e0a6ba2e5a6c41b55f8b8bd85dba","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true,"impliedFormat":1},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true,"impliedFormat":1},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"1df2366de6650547b3dc1d7c4147355c0f6b4729c964e3839636fa418982d131","impliedFormat":1},{"version":"a7e91349838ed923f8afe2a1aec98836367374098f9c03875f97ef4a70b20e2f","signature":"c090d6e4db96f6c0a19c16c21928f2e4a5a8bb209d8ed3934b9c502172d3ce1a","impliedFormat":99},{"version":"dbf1da1ef61750317d61a905b9d9de9827c9963647695f128e8b12b3ec21097d","signature":"cb3475c663158a0a0081c4ec80ef97e8f598e52ecfdf9b7e40316476af2b85d7","impliedFormat":99},{"version":"63e1d775ad46002600364e95905ff4f09fa7e8a57352c7c485a428731660c44c","signature":"55454fd4f814c4eb1b0061155b729c17f4d93d48e96a02106138df2e60e7f287","impliedFormat":99},{"version":"fe109dd037ee42a92011f34ee11e536e3e2df4c75aaaf187501d07cbdc38d754","signature":"9a6f23d7acb699c3c88d724bb5f3b1255ffba20b40a52caebf8bcee724d630e5","impliedFormat":99},{"version":"a71b36576d4a3475bfdc56673d2a588aeeae03fbcea0835c4d2d762ed0c156f0","signature":"08681f10afd4843c95666d18900815858ca83ec71838a34563c10068d0c1b9f4","impliedFormat":99},{"version":"6e4ed2755e96a09ae0f60f2503e0a699f363fde5525fdb79fb31edafc0644e62","signature":"dc8b333cb6e513b8bc857460f72fbd2e0cf43cd0970b6272f013abce56cdb4b6","impliedFormat":99},{"version":"65bbaec38351dd980a0f0fe2c210dc258ec8b7d78fbfe9b8a3174507027ca247","signature":"7bd68a17755c8f9cbbd31823bcf1d7435598ee01f051d35598afb517c182d646","impliedFormat":99},{"version":"b164c2b05226e50b40406a8d3b10e538514bad72d6dfb1a180deed0c2daff98d","signature":"a69bcb1e05c292edbb7378466f26905d8eeed7c69bb85a36dff70c700d672b54","impliedFormat":99},{"version":"b84cf4174fd57042656b7520b75dc5aa3c74e67320a695215e0b2d5e606cf792","signature":"5638aee67262f1abd3b3bed4320e49dcf3c2bad22db1d93ab9853f44befe79c9","impliedFormat":99},{"version":"e98e45d46f3e4137ba61bac406b81fbeef516fc8f6e9c01d82f5b33e36b945d5","signature":"5feb81d9ba7c885d1e19e103d802d672632997ebe3a877bd2527331304ef8a0d","impliedFormat":99},{"version":"ff8caefb0b21f535abbedf6b2c9162fd149db5447f58a9a9b33027ad7c10b564","signature":"2c9ccd095db46827290a57b23bb04bd70172d71b3ea980f27005fa52a11bc0f2","impliedFormat":99},{"version":"f614f49f8074076b21229d3b789f5279eba98d09b699b16d81cc1426dcde2e0b","signature":"8700b4b1a58b8b94881f62fb6852509534670235f62797c5befd911833b21ae2","impliedFormat":99},{"version":"6a176a7e82470c3897f9c48800331dd304040809d241c0b1bc8d9e4e96898df7","signature":"34c4c43d0a6f903cc739fa3d4895a7fffe7789ed695753a6f1558bcc59567034","impliedFormat":99},{"version":"00ba12d4e4a6a8bd78628944fd73e6b64b163ea2b4e5384a73343695a45d3efe","signature":"e5d0620964f79e05db8241244d483ae2a09ae3a7b5e614f3ed34d90647b53553","impliedFormat":99},{"version":"3a852c4852a84235707b0cac9ea197783dcb68e46356d7cb1a19c1b3bc00be15","signature":"426bd370a777278dd936bea9b69d62e652a15120d1768789647fcb47fcc213bb","impliedFormat":99},{"version":"7578ba121588f3e8d39217c755098f68ee4d493d1b8585eb05bc563fa2da1147","signature":"0121748e33a4116659a55403c0f05642409a2d31ddb1b594fc7362b9363e1a64","impliedFormat":99},{"version":"b309986ea63ed4fc28f67c524fe739261a7c80a6e193cbebacbed5bae10860c4","signature":"f80fc321e114488bf873b89bdd13e80c47eedaa4fcbbaf527f202df725007d01","impliedFormat":99},{"version":"da7e5e8b3daa9b1192251958ec978a00154546163429fd0b22ccf04a1f380e10","signature":"c0c4ba650ec0ac095ca0dd17a155746ec13491d034594b23da6435076aeede49","impliedFormat":99},{"version":"c3c30447de7427fdb1bc098a2b13ff11220b6ddd99993fe62d60f67ec1e36d22","signature":"901df14b2442bc94289c27d5499f6190841fcaf5f794be97e00a1d8f9258c872","impliedFormat":99},{"version":"8ba63e3ee483bd2e8a6b4530e34806d06dccae6074dbf4bca880b707649c3079","signature":"e376ada3d16b33eb500c6616c76cf9976631edcea8e7038beb7421fbee1decf9","impliedFormat":99},{"version":"7c6ccb7f0dafd0d79421836ec9642e5a5b6b3d05883dbbd187e277dd8ba251f0","signature":"a10fa98ee0431990b2cab63d22cd3c0125777129399ddc6d8dfd6e750ea88c48","impliedFormat":99},{"version":"53891e9ccbd21b43fcf4fbcff6a6324c5ab415734d8a9dc05028f81ea3a109dc","signature":"76a5d339714382f300d51bd7efac50b4ba34c8003b755833ddcf1b8995ce9ee5","impliedFormat":99},{"version":"57988ffc7c79988f5a1d3e8048a1110e692a6f918d9cf8e6df1624cfe0c9db2c","signature":"b30dc951627861eb3da2159e1da5bf524222a787ff2dd13add5868c0e4c09cb0","impliedFormat":99},{"version":"ebdb951eed311868c4d0b31c6e14e54b77701cb3cff0cb6ae2aaa7f3449b8696","signature":"10ac1e4a820d912696d514eeb3df58aea5537fcff36417ef7de41fdc117c95be","impliedFormat":99},{"version":"8e23438f294c06d6e6f2b7520439194c149ab9a12067e3559203e97bf1f5f5f3","signature":"485eea37dd4c851a3a874ca972919c2e6b0056ed47c27e024764ca05cbd3c746","impliedFormat":99},{"version":"73f9d4f560174e65f46b18903b6913b322596d4a4ddc9e609e15a2a5c050782d","signature":"a52c6de4694beae9e97e91903d56c9ae737d6b17d04a8262835e249212a62345","impliedFormat":99},{"version":"2df868f776f2e7a2639bcaf818bc4071b31d5b6415cc182e2635c70d5b894ae9","signature":"d06b44439bebd82a60178e619cfeaaa877f32f90c7a996c50f0f0ac00083219f","impliedFormat":99},{"version":"7202be49db180478e1cf948a500bffa06cfe6efe7a5b6585997c3862547315ff","signature":"dc49cb9793c8f4ae914675a4ae9a71995f9f64074cda63cdeecd9d8678205d2b","impliedFormat":99},{"version":"5f3cf9b746ca37d5534e55eb1ccc1e34c98760ae247a6942b78fb2479357c822","signature":"104d655d2bc021e5fd313a7fab1a5ddaeeac1065316e5472b05be9b3ac987eff","impliedFormat":99},{"version":"d5b95b8442f6bf3358e7e1c6bd75e03eec765ea824cb503f337fe8fe77c6279a","signature":"5de3b5d2f23332542450949f00331b06f089d0c84e15883ecdc965667fc688a4","impliedFormat":99},{"version":"4d2f61c1147162e87bbb76a156d5ef5eb0d5673181dee96af2e0363afbd2289e","signature":"fe2496664d2e416ce8dd2da630e4cebfd398699bbaa0e33040a82ef09975001b","impliedFormat":99},{"version":"101e360fc17968cc7932e4ae8a76cf1d5d6d0c4033e9769a6067acfb55605a50","signature":"8da209bc46023825eb698f06828ad9e30c304476e2569651e6fec7e31c92a70f","impliedFormat":99},{"version":"271160bf89de624ecf502d9a218e26b1c78c360a23d31e89d487e9c9ce02da70","signature":"e03ebedf4d775051dfb948f59d2a01f8f261678f5f522bb624f6642d4bcf81ac","impliedFormat":99},{"version":"6b04109ef506ac88cf39f924722780921217333a42451a3db617cdd2e5731b90","signature":"e40190c7a82c1b864a056154e4e9c64848442210a823fa38801f65171e98ac5d","impliedFormat":99},{"version":"49c7140b4127a6112381637b8723563af1d90424fc30c54c37f8ddb52a43a404","signature":"936faae9c0c4a5bf58500ea1b212f17732259b39a512bc37ef4fe099455306ca","impliedFormat":99},{"version":"7b72ee6a65fc8f2336752d15c7eaa5c483bcd612b06cffd366d8beaba8dcb15d","signature":"0548a699928bf3e12fc779992962ecaa68e4a5f5c2d108722736582bcc4b99ee","impliedFormat":99},{"version":"791095c1e568e938e64aa15237317a91ec7e86b8ad749f46b4e3c7fcc2600803","signature":"2ec74a782757f9c065ef28bc8175b17ff0350ca1583ff1d36aa173932978fc54","impliedFormat":99},{"version":"1f5f33c63542d0f564f98732742cf226ffb807bbacdf503c8a0534f9dab31ea9","signature":"cced649572dfe89aaa738ad4c6831ad296e7931d62b0abc7dae1809e8109f3fd","impliedFormat":99},{"version":"f3d7876ba2b61764e3bebb660a4ec092336dfee32f0fb603dc7e90f7354b15d4","signature":"7807297925bc1cc699ad88dd6637bcea9f227e7c1c7c2728f975e02d725586cf","impliedFormat":99},{"version":"da7bf16b1177bcfdaea871248f80e573323cf4d33594a8e7d50de99718866ea5","signature":"260f7078886172c51d1d56f6b13d2794f741fb05d82d21b2d4e98011da503eb3","impliedFormat":99},{"version":"1411afc10c09c7f708408e27e212b321e00c5dc8763958e3444c4dc615d6971f","signature":"0556e2334adacac799d9bce80b6dda8cb738a5b1273c17f2cf3dc8c849ffa5a5","impliedFormat":99},{"version":"eedf0208a201087eea84779d847388c373cef90f23a624dbc7e598a1ce2dfd59","signature":"2c038aaf46930ecdcb5625f3e8b0a05d44c55cbd49cb23051f452ee794d7a883","impliedFormat":99},{"version":"46863ee874740fc179409d08c67ac9aa6dca8542fa8573b69a3388546248b2f8","signature":"f85ce943786498b017d3b07b0d6f63ff8151d9838196059718c0086bfc0f863d","impliedFormat":99},{"version":"8f63ea04526f8884d9123a0280e8ab791ab95048fd0a5ac9d56015c562af0947","signature":"d823d3d4d6d94419da34bca236322bae141556a66cacbc72d9863d4942568e09","impliedFormat":99},{"version":"5f5d9683126fc74bb15f2a9ca8880fbdcbe39f0716db73ea82796e71ddf4ff83","signature":"ec7b07640e6cf8355f29a01b0164e4b2a2e9e275335c623b2c8bea7312ae8631","impliedFormat":99},{"version":"06437b44a06a52caad27f64dcc8c08dc813ca5b596fb334a44c57bfd53bb2f8a","signature":"7e096317367a98b9b3a30ed233c0b89f1daf26e715290f74c3ec7d69cffe59aa","impliedFormat":99},{"version":"5d41451b3433e437f6b19089fb60b03db6c9234aeef121b16f250a34a82fbc64","signature":"ebc54ec50733a8b6bb35e643c739a3d8480bf05460e422379163c96305a7e01c","impliedFormat":99},{"version":"994bfa5825fb17af3de04b37690220a2607eae0619ca085ecd7ae3e74622a3fd","signature":"eb0df7fd32e72bf2d50c22c7ec475e27260f3b9d02b69196fe8a5bedbf5cbed3","impliedFormat":99},{"version":"aae5fb03d9510b8e00271fae1ee3956b00bb7f02aeac2a3240435c5dbbfc0bc5","signature":"828c86965879f92696997036473f0c7e630c7ee66255f8a8af6918a82826f477","impliedFormat":99},{"version":"6f2a73ff1316a049ca206424b1d1de5b70617011f73d9cc1b0ef2cd7e0924efd","signature":"7854419eaa30b438536eaea56db8d4afe13a5eb2ad1b2fa3d309e1d79a2ad3d2","impliedFormat":99},{"version":"4cf0d187afaa052f21e17743fe6f1816122cb5d5e75becbcba7585b8338996ad","signature":"ea3e7b0ab34241880c6d7b48958c5dd4e64f33064a7b9a1e3e72494c3ba37158","impliedFormat":99},{"version":"d20f93415e15f51ab0437c9e3cae12c51d1080981769a27bf8b3c39bb415a8b9","signature":"cca746832abbe78cc5d48d44693670e178d45851c0dc98898b9d6b8d8f32c65b","impliedFormat":99},{"version":"dd8359351d32a58913c1c9b0f14c8715a23cdbee9eba39a9acd6552303fab4e3","signature":"5b2418c9f0398621590ecbe6f3d4a13a170397b7656b2bce29670191e45f9ddd","impliedFormat":99},{"version":"3e65bb55100094f4e9892b871455bd7bf77fa6dbd0a43ffae2fa1b17e3bf595f","signature":"2c18e51f9364e56c49e8742c561d030c2d84765c8f348d54df7e77932fd85c53","impliedFormat":99},{"version":"99c2c955c52f7b48d24184fb7d8bb40741b4735a22b2428ff35f13a1e97de433","signature":"ea52d725c16631804e8fdad0d1e9c1a211471f92cbdfc1df69155306997d05ca","impliedFormat":99},{"version":"056237cc4698a718e9ff129d494d7756ccc92e6ca4ee9654387359c2fe6ab17c","signature":"9d9212aca28da4cf4dc08947fe9fec7581aeb9758e429885b8edd4285b2bec34","impliedFormat":99},{"version":"c86a19534230171a367119814c90ac7c1d49a7b398b2441d1246559b86e8876a","signature":"ff3eea5402478a1df3acd835ed4bdf9988276b1613a4dba356be0f6abcc409c2","impliedFormat":99},{"version":"bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","impliedFormat":1},{"version":"3777eb752cef9aa8dd35bb997145413310008aa54ec44766de81a7ad891526cd","impliedFormat":1},{"version":"923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","impliedFormat":1},{"version":"dfefd34e8ab60f41d0c130527d5092d6ce662dc9fa85bc8c97682baf65830b51","impliedFormat":1},{"version":"96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","impliedFormat":1},{"version":"b0f4dd1a825912da8f12fd3388d839ef4aa51165ea0e60e4869b50b7ccb4f6fc","impliedFormat":1},{"version":"9cb7c5f710dc84d2e9500831a3e9a27afd3c3710f5a1b8744a50473e565b41fc","impliedFormat":1},{"version":"cf6b2edde490f303918809bfab1da8b6d059b50c160bec72005ff4c248bdd079","impliedFormat":1},{"version":"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","impliedFormat":1},{"version":"a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a","impliedFormat":1},{"version":"8d81612302e009aacd595b125ae1530b6342f690eb83da7788503617d1362185","affectsGlobalScope":true,"impliedFormat":1},{"version":"11e2d554398d2bd460e7d06b2fa5827a297c8acfbe00b4f894a224ac0862857f","impliedFormat":1},{"version":"e193e634a99c9c1d71f1c6e4e1567a4a73584328d21ea02dd5cddbaad6693f61","affectsGlobalScope":true,"impliedFormat":1},{"version":"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","impliedFormat":1},{"version":"5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713","impliedFormat":1},{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","impliedFormat":1},{"version":"e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","impliedFormat":1},{"version":"bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","impliedFormat":1},{"version":"1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","impliedFormat":1},{"version":"216717f17c095cde1dc19375e1ab3af0a4a485355860c077a4f9d6ea59fab5b5","impliedFormat":1},{"version":"14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","impliedFormat":1},{"version":"5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea","impliedFormat":1},{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true,"impliedFormat":1},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true,"impliedFormat":1},{"version":"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","impliedFormat":1},{"version":"1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","impliedFormat":1},{"version":"e6c86d83bd526c8bdb5d0bf935b8e72ce983763d600743f74d812fdf4abf4df6","impliedFormat":1},{"version":"a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","impliedFormat":1},{"version":"8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","impliedFormat":1},{"version":"2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58","impliedFormat":1},{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true,"impliedFormat":1},{"version":"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","impliedFormat":1},{"version":"7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","impliedFormat":1},{"version":"b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30","impliedFormat":1},{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","impliedFormat":1},{"version":"210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","impliedFormat":1},{"version":"36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","impliedFormat":1},{"version":"0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","impliedFormat":1},{"version":"25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","impliedFormat":1},{"version":"4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","impliedFormat":1},{"version":"1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","impliedFormat":1},{"version":"69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","impliedFormat":1},{"version":"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","impliedFormat":1},{"version":"23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","impliedFormat":1},{"version":"f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7","impliedFormat":1},{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","impliedFormat":1},{"version":"c4577fb855ca259bdbf3ea663ca73988ce5f84251a92b4aef80a1f4122b6f98e","impliedFormat":1},{"version":"3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","impliedFormat":1},{"version":"5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2","impliedFormat":1},{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true,"impliedFormat":1},{"version":"ff07a9a03c65732ccc59b3c65bc584173da093bd563a6565411c01f5703bd3cb","affectsGlobalScope":true,"impliedFormat":1},{"version":"6de4a219df57d2b27274d59b67708f13c2cbf7ed211abe57d8f9ab8b25cde776","impliedFormat":1},{"version":"0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","impliedFormat":1},{"version":"e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","impliedFormat":1},{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d8d555f3d607ecaa18d55de6995ea8f206342ecc93305919eac945c7c78c78c6","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"f9e22729fa06ed20f8b1fe60670b7c74933fdfd44d869ddfb1919c15a5cf12fb","impliedFormat":1},{"version":"0ae65c3e977c81f6e46ae9028ae97fc75c78c70f4d6d5f961a8af60301145af6","impliedFormat":99},{"version":"b1a6683b821c624d63d887dbdd9f34aebb9de586acf87bbf50cb16f5ec2c36c7","impliedFormat":99},{"version":"b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","impliedFormat":1},{"version":"dcc9081d68c2ade5c51ac7bf5f37cce630359408e713999269b77f611a30d871","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"50072f976cfa86af1a3044f55cd729d992abe39222d2f6cdf929266c77a42b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"689be50b735f145624c6f391042155ae2ff6b90a93bac11ca5712bc866f6010c","impliedFormat":1},{"version":"432a61971738da04b67e04e08390ac124cc543479083709896b2071d0a790066","impliedFormat":1},{"version":"1ba55e9efbea1dcf7a6563969ff406de1a9a865cbbdaea2714f090fff163e2b5","impliedFormat":1},{"version":"309715f2bcee4af51e6425b264deaa2f5f0bda74f86099a2112b596c8697e888","impliedFormat":1},{"version":"68cc8d6fcc2f270d7108f02f3ebc59480a54615be3e09a47e14527f349e9d53e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","impliedFormat":1},{"version":"dea2650c477f53d503a27f78ed17b13d7184c2f922eb4d3367ccf52634765467","impliedFormat":1},{"version":"e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","impliedFormat":1},{"version":"446b5dbbcbd8b9b1676f0ed77cb6bcd0d3adec82feddfd2f9d99ce9174126bd3","impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","impliedFormat":1},{"version":"5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04","impliedFormat":1},{"version":"6adaa01cba6e7bae17d8291089e9e38bfc3fffcd522e2161214cbaccab4c1b2b","impliedFormat":1},{"version":"fab7e642480027e174565250294ba8eeeacbf7faa31c565472384bbad2deba01","affectsGlobalScope":true,"impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"271cde49dfd9b398ccc91bb3aaa43854cf76f4d14e10fed91cbac649aa6cbc63","affectsGlobalScope":true,"impliedFormat":1},{"version":"2bcecd31f1b4281710c666843fc55133a0ee25b143e59f35f49c62e168123f4b","impliedFormat":1},{"version":"a6273756fa05f794b64fe1aff45f4371d444f51ed0257f9364a8b25f3501915d","impliedFormat":1},{"version":"9c4e644fe9bf08d93c93bd892705842189fe345163f8896849d5964d21b56b78","impliedFormat":1},{"version":"25d91fb9ed77a828cc6c7a863236fb712dafcd52f816eec481bd0c1f589f4404","impliedFormat":1},{"version":"4cd14cea22eed1bfb0dc76183e56989f897ac5b14c0e2a819e5162eafdcfe243","impliedFormat":1},{"version":"8d32432f68ca4ce93ad717823976f2db2add94c70c19602bf87ee67fe51df48b","impliedFormat":1},{"version":"ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","impliedFormat":1},{"version":"d7dbe0ad36bdca8a6ecf143422a48e72cc8927bab7b23a1a2485c2f78a7022c6","impliedFormat":1},{"version":"8b32d4ac53ebe9c98c51593282052b2d9ad589788b254d573ed357faec6c8b5a","impliedFormat":1},{"version":"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","impliedFormat":1},{"version":"7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","impliedFormat":1},{"version":"f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"c8950367d1812758e9e354c695c60c3e6311bf2cd98b9f9eb469a19df8a9a486","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"1af1f2c02132bafa25c4c4b7c415e0a59ba959d6db6bd1800a43fb5d943e3f77","impliedFormat":1},{"version":"45b6a651b5e502cdfa93dc2f23779752def4ada323ebcfc34e4a4d22e9589971","impliedFormat":1},{"version":"54f1d17f9f484650cd49b53d9a6ba75593955a9ead093628888a37407b6ecd51","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"42049a4daa9bc17200feddc68a5e645def244514f93c1832ceea5390df5cba6d","impliedFormat":1},{"version":"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","impliedFormat":1},{"version":"c271193e426325d9acab2f99997bb9f5f2dff850ec8c7c011c5abafe5af83b5f","impliedFormat":1},{"version":"9ed09d4538e25fc79cefc5e7b5bfbae0464f06d2984f19da009f85d13656c211","impliedFormat":1},{"version":"0bd5e7096c7bc02bf70b2cc017fc45ef489cb19bd2f32a71af39ff5787f1b56a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"b1bf87add0ccfb88472cd4c6013853d823a7efb791c10bb7a11679526be91eda","impliedFormat":1},{"version":"5a897a91daad4b3f0868d651c5321e62c3c1c03cd3d55682ec08618f4cfe162c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1d4bc73751d6ec6285331d1ca378904f55d9e5e8aeaa69bc45b675c3df83e778","impliedFormat":1},{"version":"1cfafc077fd4b420e5e1c5f3e0e6b086f6ea424bf96a6c7af0d6d2ef2b008a81","impliedFormat":1},{"version":"8017277c3843df85296d8730f9edf097d68d7d5f9bc9d8124fcacf17ecfd487e","impliedFormat":1},{"version":"199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","impliedFormat":1},{"version":"c73834a2aee5e08dea83bd8d347f131bc52f9ec5b06959165c55ef7a544cae82","impliedFormat":1},{"version":"4ef960df4f672e93b479f88211ed8b5cfa8a598b97aafa3396cacdc3341e3504","impliedFormat":1},{"version":"2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","impliedFormat":1},{"version":"2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","impliedFormat":1},{"version":"42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","impliedFormat":1},{"version":"d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","impliedFormat":1},{"version":"b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","impliedFormat":1},{"version":"7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","impliedFormat":1},{"version":"906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","impliedFormat":1},{"version":"5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","impliedFormat":1},{"version":"c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","impliedFormat":1},{"version":"e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","impliedFormat":1},{"version":"e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","impliedFormat":1},{"version":"9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","impliedFormat":1},{"version":"0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","impliedFormat":1},{"version":"71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","impliedFormat":1},{"version":"c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","impliedFormat":1},{"version":"2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","impliedFormat":1},{"version":"479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","impliedFormat":1},{"version":"ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","impliedFormat":1},{"version":"f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","impliedFormat":1},{"version":"86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","impliedFormat":1},{"version":"2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","impliedFormat":1},{"version":"a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","impliedFormat":1},{"version":"b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","impliedFormat":1},{"version":"61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","impliedFormat":1},{"version":"6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","impliedFormat":1},{"version":"c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","impliedFormat":1},{"version":"38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","impliedFormat":1},{"version":"d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","impliedFormat":1},{"version":"3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","impliedFormat":1},{"version":"b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","impliedFormat":1},{"version":"f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","impliedFormat":1},{"version":"843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","impliedFormat":1},{"version":"f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","impliedFormat":1},{"version":"6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","impliedFormat":1},{"version":"e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","impliedFormat":1},{"version":"a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","impliedFormat":1},{"version":"a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","impliedFormat":1},{"version":"da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","impliedFormat":1},{"version":"ddef25f825320de051dcb0e62ffce621b41c67712b5b4105740c32fd83f4c449","impliedFormat":1},{"version":"1b3dffaa4ca8e38ac434856843505af767a614d187fb3a5ef4fcebb023c355aa","impliedFormat":1},{"version":"b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","impliedFormat":1},{"version":"f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8","impliedFormat":1},{"version":"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","impliedFormat":1},{"version":"610960e660271e158ba1656254569c3d72ff172a5eae5999f8970fadab3f86e5","impliedFormat":1}],"root":[[62,118]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"experimentalDecorators":true,"module":100,"noFallthroughCasesInSwitch":true,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":9},"fileIdsList":[[121,173],[173],[173,223],[119,173,200],[121,122,123,124,125,173],[121,123,173],[146,173,180,181],[137,173,180],[172,173,180,189],[146,173,180],[173,191],[173,194],[119,173,198,200],[119,173,196,197,200],[143,146,173,180,186,187,188],[173,182,187,189,202],[144,173,180],[173,206],[173,208,214],[173,209,210,211,212,213],[173,214],[143,146,148,151,161,172,173,180],[173,218],[173,219],[173,225,228],[173,233,234],[173,180],[127,173],[130,173],[131,136,164,173],[132,143,144,151,161,172,173],[132,133,143,151,173],[134,173],[135,136,144,152,173],[136,161,169,173],[137,139,143,151,173],[138,173],[139,140,173],[143,173],[141,143,173],[143,144,145,161,172,173],[143,144,145,158,161,164,173],[173,177],[139,146,151,161,172,173],[143,144,146,147,151,161,169,172,173],[146,148,161,169,172,173],[127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],[143,149,173],[150,172,173],[139,143,151,161,173],[152,173],[153,173],[130,154,173],[155,171,173,177],[156,173],[157,173],[143,158,159,173],[158,160,173,175],[131,143,161,162,163,164,173],[131,161,163,173],[161,162,173],[164,173],[165,173],[143,167,168,173],[167,168,173],[136,151,161,169,173],[170,173],[151,171,173],[131,146,157,172,173],[136,173],[161,173,174],[173,175],[173,176],[131,136,143,145,154,161,172,173,175,177],[161,173,178],[173,214,243,244],[173,214,243],[173,239,240,241,242],[161,173,180],[173,250,289],[173,250,274,289],[173,289],[173,250],[173,250,275,289],[173,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288],[173,275,289],[144,161,173,180,185],[144,173,203],[146,173,180,185,201],[143,146,148,161,169,172,173,178,180],[173,294],[173,221,227],[173,225],[173,222,226],[173,184],[173,224],[63,64,65,67,69,70,71,72,73,74,173],[75,76,82,83,86,173],[76,80,173],[75,173],[75,76,173],[76,78,80,173],[76,91,173],[68,75,76,173],[62,75,173],[62,75,82,83,173],[65,75,173],[64,173],[62,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,173],[111,173],[69,75,88,95,97,101,105,107,109,110,173],[103,173],[69,75,88,102,173],[99,173],[62,68,69,75,88,98,173],[62,68,69,75,88,95,99,103,112,173],[95,173],[69,75,88,94,153,173],[62,63,64,66,68,75,173],[97,173],[62,68,69,75,88,96,173],[101,173],[69,75,88,99,100,173],[64,105,173],[69,75,88,95,103,104,173],[107,173],[69,88,106,173],[109,173],[69,75,88,103,108,173],[67,75,173],[64,66,173],[62,70,75,77,173],[62,66,69,70,75,173],[67,173],[75,76,77,79,173],[62,173],[62,72,75,77,173],[62,68,69,72,73,75,173],[62,74,75,173],[63,65,67,70,75,76,77,78,79,173],[63,75,76,77,85,173],[115,144,153,173],[77,115,173],[62,75,76,77,79,82,83,84,85,173],[63,64,65,67,69,70,71,72,73,74],[75],[62,75],[62,75,82,83],[65,75],[64],[62,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117],[111],[69,75,95,97,101,105,107,109,110],[103],[69,75,102],[99],[62,69,75,98],[62,69,75,95,99,103,112],[95],[69,75,94],[62,63,64,66,75],[97],[62,69,75,96],[101],[69,75,99,100],[64,105],[69,75,95,103,104],[107],[69,106],[109],[69,75,103,108],[67,75],[64,66],[62,70,75],[62,66,69,70,75],[67],[62],[62,72,75],[62,69,72,73,75],[62,74,75],[75,78],[115],[62,75,82,83,84]],"referencedMap":[[123,1],[121,2],[221,2],[224,3],[223,2],[120,4],[126,5],[122,1],[124,6],[125,1],[182,7],[183,8],[190,9],[181,10],[193,2],[192,11],[191,2],[195,12],[199,13],[196,2],[198,14],[200,4],[119,2],[189,15],[203,16],[204,17],[205,2],[207,18],[209,19],[210,19],[211,19],[208,2],[214,20],[212,21],[213,21],[215,2],[216,2],[201,2],[217,22],[218,2],[219,23],[220,24],[229,25],[230,2],[197,2],[231,2],[232,18],[234,26],[233,2],[235,2],[194,2],[236,27],[127,28],[128,28],[130,29],[131,30],[132,31],[133,32],[134,33],[135,34],[136,35],[137,36],[138,37],[139,38],[140,38],[142,39],[141,40],[143,39],[144,41],[145,42],[129,43],[179,2],[146,44],[147,45],[148,46],[180,47],[149,48],[150,49],[151,50],[152,51],[153,52],[154,53],[155,54],[156,55],[157,56],[158,57],[159,57],[160,58],[161,59],[163,60],[162,61],[164,62],[165,63],[166,2],[167,64],[168,65],[169,66],[170,67],[171,68],[172,69],[173,70],[174,71],[175,72],[176,73],[177,74],[178,75],[237,2],[238,2],[239,2],[187,2],[188,2],[245,76],[246,76],[244,77],[240,2],[243,78],[247,2],[248,79],[249,2],[242,2],[274,80],[275,81],[250,82],[253,82],[272,80],[273,80],[263,80],[262,83],[260,80],[255,80],[268,80],[266,80],[270,80],[254,80],[267,80],[271,80],[256,80],[257,80],[269,80],[251,80],[258,80],[259,80],[261,80],[265,80],[276,84],[264,80],[252,80],[289,85],[288,2],[283,84],[285,86],[284,84],[277,84],[278,84],[280,84],[282,84],[286,86],[287,86],[279,86],[281,86],[186,87],[290,88],[202,89],[291,10],[292,2],[206,2],[293,90],[294,2],[295,91],[222,2],[241,2],[228,92],[226,93],[227,94],[185,95],[184,2],[225,96],[59,2],[60,2],[10,2],[11,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[27,2],[24,2],[25,2],[26,2],[28,2],[29,2],[30,2],[5,2],[31,2],[32,2],[33,2],[34,2],[6,2],[38,2],[35,2],[36,2],[37,2],[39,2],[7,2],[40,2],[45,2],[46,2],[41,2],[42,2],[43,2],[44,2],[8,2],[50,2],[47,2],[48,2],[49,2],[51,2],[9,2],[52,2],[61,2],[53,2],[54,2],[57,2],[55,2],[56,2],[1,2],[58,2],[13,2],[12,2],[75,97],[87,98],[81,99],[76,100],[77,101],[88,99],[89,102],[90,99],[92,103],[93,104],[63,105],[84,106],[62,100],[68,105],[78,107],[65,108],[118,109],[82,105],[110,110],[111,111],[102,112],[103,113],[98,114],[99,115],[112,108],[113,116],[94,117],[95,118],[69,119],[64,105],[96,120],[97,121],[100,122],[101,123],[104,124],[105,125],[106,126],[107,127],[108,128],[109,129],[66,130],[67,131],[79,132],[71,133],[70,134],[114,135],[83,136],[85,137],[74,138],[72,2],[73,139],[80,140],[91,141],[116,142],[117,143],[115,2],[86,144]],"exportedModulesMap":[[123,1],[121,2],[221,2],[224,3],[223,2],[120,4],[126,5],[122,1],[124,6],[125,1],[182,7],[183,8],[190,9],[181,10],[193,2],[192,11],[191,2],[195,12],[199,13],[196,2],[198,14],[200,4],[119,2],[189,15],[203,16],[204,17],[205,2],[207,18],[209,19],[210,19],[211,19],[208,2],[214,20],[212,21],[213,21],[215,2],[216,2],[201,2],[217,22],[218,2],[219,23],[220,24],[229,25],[230,2],[197,2],[231,2],[232,18],[234,26],[233,2],[235,2],[194,2],[236,27],[127,28],[128,28],[130,29],[131,30],[132,31],[133,32],[134,33],[135,34],[136,35],[137,36],[138,37],[139,38],[140,38],[142,39],[141,40],[143,39],[144,41],[145,42],[129,43],[179,2],[146,44],[147,45],[148,46],[180,47],[149,48],[150,49],[151,50],[152,51],[153,52],[154,53],[155,54],[156,55],[157,56],[158,57],[159,57],[160,58],[161,59],[163,60],[162,61],[164,62],[165,63],[166,2],[167,64],[168,65],[169,66],[170,67],[171,68],[172,69],[173,70],[174,71],[175,72],[176,73],[177,74],[178,75],[237,2],[238,2],[239,2],[187,2],[188,2],[245,76],[246,76],[244,77],[240,2],[243,78],[247,2],[248,79],[249,2],[242,2],[274,80],[275,81],[250,82],[253,82],[272,80],[273,80],[263,80],[262,83],[260,80],[255,80],[268,80],[266,80],[270,80],[254,80],[267,80],[271,80],[256,80],[257,80],[269,80],[251,80],[258,80],[259,80],[261,80],[265,80],[276,84],[264,80],[252,80],[289,85],[288,2],[283,84],[285,86],[284,84],[277,84],[278,84],[280,84],[282,84],[286,86],[287,86],[279,86],[281,86],[186,87],[290,88],[202,89],[291,10],[292,2],[206,2],[293,90],[294,2],[295,91],[222,2],[241,2],[228,92],[226,93],[227,94],[185,95],[184,2],[225,96],[59,2],[60,2],[10,2],[11,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[27,2],[24,2],[25,2],[26,2],[28,2],[29,2],[30,2],[5,2],[31,2],[32,2],[33,2],[34,2],[6,2],[38,2],[35,2],[36,2],[37,2],[39,2],[7,2],[40,2],[45,2],[46,2],[41,2],[42,2],[43,2],[44,2],[8,2],[50,2],[47,2],[48,2],[49,2],[51,2],[9,2],[52,2],[61,2],[53,2],[54,2],[57,2],[55,2],[56,2],[1,2],[58,2],[13,2],[12,2],[75,145],[87,146],[76,146],[77,146],[93,146],[63,147],[84,148],[62,146],[68,147],[78,149],[65,150],[118,151],[82,147],[110,152],[111,153],[102,154],[103,155],[98,156],[99,157],[112,150],[113,158],[94,159],[95,160],[69,161],[64,147],[96,162],[97,163],[100,164],[101,165],[104,166],[105,167],[106,168],[107,169],[108,170],[109,171],[66,172],[67,173],[79,174],[71,175],[70,176],[114,146],[83,177],[85,178],[74,179],[73,180],[80,181],[91,146],[116,182],[117,182],[86,183]],"semanticDiagnosticsPerFile":[123,121,221,224,223,120,126,122,124,125,182,183,190,181,193,192,191,195,199,196,198,200,119,189,203,204,205,207,209,210,211,208,214,212,213,215,216,201,217,218,219,220,229,230,197,231,232,234,233,235,194,236,127,128,130,131,132,133,134,135,136,137,138,139,140,142,141,143,144,145,129,179,146,147,148,180,149,150,151,152,153,154,155,156,157,158,159,160,161,163,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,237,238,239,187,188,245,246,244,240,243,247,248,249,242,274,275,250,253,272,273,263,262,260,255,268,266,270,254,267,271,256,257,269,251,258,259,261,265,276,264,252,289,288,283,285,284,277,278,280,282,286,287,279,281,186,290,202,291,292,206,293,294,295,222,241,228,226,227,185,184,225,59,60,10,11,15,14,2,16,17,18,19,20,21,22,23,3,4,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,61,53,54,57,55,56,1,58,13,12,75,87,81,76,77,88,89,90,92,93,63,84,62,68,78,65,118,82,110,111,102,103,98,99,112,113,94,95,69,64,96,97,100,101,104,105,106,107,108,109,66,67,79,71,70,114,83,85,74,72,73,80,91,116,117,115,86]},"version":"5.0.4"}
|
package/src/app.type.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { IDependency } from './functions/dependency/dependency.model.js';
|
|
2
|
-
import { IModule } from './functions/module/module.interface.js';
|
|
3
|
-
import { IAnchor } from './overlays/anchor.interface.js';
|
|
4
|
-
import { AOverlay } from './overlays/overlay.abstract.js';
|
|
5
|
-
import { AModel } from './models/model.abstract.js';
|
|
6
|
-
import { IModel } from './models/model.interface.js';
|
|
7
|
-
import { IOverlay } from './overlays/overlay.interface.js';
|
|
8
|
-
import { AResource } from './resources/resource.abstract.js';
|
|
9
|
-
import { IResource } from './resources/resource.interface.js';
|
|
10
|
-
import { ASharedResource } from './resources/shared-resource.abstract.js';
|
|
11
|
-
|
|
12
|
-
export enum ModelType {
|
|
13
|
-
MODEL = 'model',
|
|
14
|
-
OVERLAY = 'overlay',
|
|
15
|
-
RESOURCE = 'resource',
|
|
16
|
-
SHARED_RESOURCE = 'shared-resource',
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type ActionInputs = { [key: string]: string | UnknownResource };
|
|
20
|
-
|
|
21
|
-
export type ActionOutputs = { [key: string]: UnknownResource };
|
|
22
|
-
|
|
23
|
-
export type Constructable<T> = new (...args: any[]) => T;
|
|
24
|
-
|
|
25
|
-
export type ModelSerializedOutput = {
|
|
26
|
-
anchors: (IAnchor & { className: string })[];
|
|
27
|
-
dependencies: IDependency[];
|
|
28
|
-
models: { [p: string]: { className: string; model: IUnknownModel } };
|
|
29
|
-
modules: { className: string; module: IModule }[];
|
|
30
|
-
overlays: { className: string; overlay: IOverlay }[];
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export type ResourceSerializedOutput = {
|
|
34
|
-
dependencies: IDependency[];
|
|
35
|
-
resources: { [p: string]: { className: string; resource: IResource } };
|
|
36
|
-
sharedResources: { [p: string]: { className: string; resource: IResource } };
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export type SupportApplicationType = 'nginx';
|
|
40
|
-
|
|
41
|
-
export type TransactionOptions = {
|
|
42
|
-
yieldModelTransaction?: boolean;
|
|
43
|
-
yieldNewResources?: boolean;
|
|
44
|
-
yieldResourceDiffs?: boolean;
|
|
45
|
-
yieldResourceTransaction?: boolean;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export type IUnknownModel = IModel<unknown, unknown>;
|
|
49
|
-
|
|
50
|
-
export type UnknownModel = AModel<unknown, unknown>;
|
|
51
|
-
|
|
52
|
-
export type UnknownOverlay = AOverlay<unknown>;
|
|
53
|
-
|
|
54
|
-
export type UnknownResource = AResource<unknown>;
|
|
55
|
-
|
|
56
|
-
export type UnknownSharedResource = ASharedResource<unknown>;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { jest } from '@jest/globals';
|
|
2
|
-
import { ModelType } from '../app.type.js';
|
|
3
|
-
import { TransactionService } from '../services/transaction/transaction.service.js';
|
|
4
|
-
import { Action } from './action.decorator.js';
|
|
5
|
-
import { Container } from './container.js';
|
|
6
|
-
import { Factory } from './factory.decorator.js';
|
|
7
|
-
|
|
8
|
-
@Factory<TransactionService>(TransactionService, { metadata: { test: 'true ' } })
|
|
9
|
-
class TestTransactionServiceFactory {
|
|
10
|
-
static instance = {
|
|
11
|
-
registerModelActions: jest.fn(),
|
|
12
|
-
} as unknown as TransactionService;
|
|
13
|
-
|
|
14
|
-
static async create(): Promise<TransactionService> {
|
|
15
|
-
return this.instance;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@Action(ModelType.MODEL)
|
|
20
|
-
class TestAction {}
|
|
21
|
-
|
|
22
|
-
@Factory<TestAction>(TestAction)
|
|
23
|
-
class TestActionFactory {
|
|
24
|
-
static async create(): Promise<TestAction> {
|
|
25
|
-
return new TestAction();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
describe('Action UT', () => {
|
|
30
|
-
beforeAll(() => {
|
|
31
|
-
Container.setDefault(TransactionService, TestTransactionServiceFactory);
|
|
32
|
-
Container.setDefault(TestAction, TestActionFactory);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
afterAll(() => {
|
|
36
|
-
Container.reset();
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('should register action', () => {
|
|
40
|
-
const registerModelActionsMock = jest.spyOn(TestTransactionServiceFactory.instance, 'registerModelActions');
|
|
41
|
-
expect(registerModelActionsMock).toHaveBeenCalledTimes(1);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ActionInputs, ActionOutputs, ModelType } from '../app.type.js';
|
|
2
|
-
import { IAction } from '../models/action.interface.js';
|
|
3
|
-
import { IResourceAction } from '../resources/resource-action.interface.js';
|
|
4
|
-
import { TransactionService } from '../services/transaction/transaction.service.js';
|
|
5
|
-
import { Container } from './container.js';
|
|
6
|
-
|
|
7
|
-
export function Action(type: ModelType): (constructor: any) => void {
|
|
8
|
-
return function (constructor: any) {
|
|
9
|
-
Container.get(TransactionService).then(async (transactionService) => {
|
|
10
|
-
if (type === ModelType.MODEL) {
|
|
11
|
-
const modelAction = await Container.get<IAction<ActionInputs, ActionOutputs>>(constructor.name);
|
|
12
|
-
transactionService.registerModelActions([modelAction]);
|
|
13
|
-
} else if (type === ModelType.OVERLAY) {
|
|
14
|
-
const modelAction = await Container.get<IAction<ActionInputs, ActionOutputs>>(constructor.name);
|
|
15
|
-
transactionService.registerOverlayActions([modelAction]);
|
|
16
|
-
} else if (type === ModelType.RESOURCE) {
|
|
17
|
-
const resourceAction = await Container.get<IResourceAction>(constructor.name);
|
|
18
|
-
transactionService.registerResourceActions([resourceAction]);
|
|
19
|
-
} else {
|
|
20
|
-
throw new Error('ModelType not recognized in @Action decorator!');
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ModelSerializationService } from '../services/serialization/model/model-serialization.service.js';
|
|
2
|
-
import { Container } from './container.js';
|
|
3
|
-
|
|
4
|
-
export function Anchor(): (constructor: any) => void {
|
|
5
|
-
return function (constructor: any) {
|
|
6
|
-
Container.get(ModelSerializationService).then((modelSerializationService) => {
|
|
7
|
-
modelSerializationService.registerClass(constructor.name, constructor);
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Container } from './container.js';
|
|
2
|
-
|
|
3
|
-
interface ITest {
|
|
4
|
-
property: string;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
class Test implements ITest {
|
|
8
|
-
readonly property: string;
|
|
9
|
-
|
|
10
|
-
constructor(property: string) {
|
|
11
|
-
this.property = property;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
class TestFactory {
|
|
16
|
-
static async create(): Promise<Test> {
|
|
17
|
-
return new Test('value');
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
class TestFactoryWithMetadata {
|
|
22
|
-
static async create(): Promise<Test> {
|
|
23
|
-
return new Test('valueWithMetadata');
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
describe('Container UT', () => {
|
|
28
|
-
afterEach(() => {
|
|
29
|
-
Container.reset();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('should be able to register factory of a class', async () => {
|
|
33
|
-
Container.registerFactory(Test, TestFactory);
|
|
34
|
-
|
|
35
|
-
const test = await Container.get(Test, { metadata: {} });
|
|
36
|
-
expect(test.property).toBe('value');
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('should not throw error when attempting to register same factory multiple times', async () => {
|
|
40
|
-
expect(() => {
|
|
41
|
-
Container.registerFactory(Test, TestFactory);
|
|
42
|
-
Container.registerFactory(Test, TestFactory);
|
|
43
|
-
}).not.toThrowError();
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('should be able to register factory of an interface', async () => {
|
|
47
|
-
Container.registerFactory('ITest', TestFactory);
|
|
48
|
-
|
|
49
|
-
const test = await Container.get<Test>('ITest', { metadata: {} });
|
|
50
|
-
expect(test.property).toBe('value');
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('should be able to register factory with a metadata', async () => {
|
|
54
|
-
Container.registerFactory(Test, TestFactory);
|
|
55
|
-
Container.registerFactory(Test, TestFactoryWithMetadata, { metadata: { type: 'metadata' } });
|
|
56
|
-
|
|
57
|
-
const test1 = await Container.get(Test, { metadata: {} });
|
|
58
|
-
expect(test1.property).toBe('value');
|
|
59
|
-
|
|
60
|
-
const test2 = await Container.get(Test, { metadata: { type: 'metadata' } });
|
|
61
|
-
expect(test2.property).toBe('valueWithMetadata');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('should be able to get a default factory', async () => {
|
|
65
|
-
Container.registerFactory(Test, TestFactory);
|
|
66
|
-
Container.registerFactory(Test, TestFactoryWithMetadata, { metadata: { type: 'metadata' } });
|
|
67
|
-
|
|
68
|
-
const test1 = await Container.get(Test);
|
|
69
|
-
expect(test1.property).toBe('valueWithMetadata');
|
|
70
|
-
|
|
71
|
-
Container.setDefault(Test, TestFactory);
|
|
72
|
-
|
|
73
|
-
const test2 = await Container.get(Test);
|
|
74
|
-
expect(test2.property).toBe('value');
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it('should wait for factory to be created when factory does not exist', async () => {
|
|
78
|
-
const promiseToGetTest = Container.get(Test);
|
|
79
|
-
Container.registerFactory(Test, TestFactory);
|
|
80
|
-
|
|
81
|
-
const test = await promiseToGetTest;
|
|
82
|
-
expect(test.property).toBe('value');
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('should wait multiple times on same promise for factory to be created when factory does not exist', async () => {
|
|
86
|
-
const promiseToGetTest1 = Container.get(Test, { metadata: {} });
|
|
87
|
-
const promiseToGetTest2 = Container.get(Test, { metadata: {} });
|
|
88
|
-
Container.registerFactory(Test, TestFactory);
|
|
89
|
-
|
|
90
|
-
const test1 = await promiseToGetTest1;
|
|
91
|
-
expect(test1.property).toBe('value');
|
|
92
|
-
|
|
93
|
-
const test2 = await promiseToGetTest2;
|
|
94
|
-
expect(test2.property).toBe('value');
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('should timeout waiting for factory to be created when factory does not exist', async () => {
|
|
98
|
-
Container.setFactoryTimeout(50);
|
|
99
|
-
|
|
100
|
-
await expect(async () => {
|
|
101
|
-
await Container.get(Test);
|
|
102
|
-
}).rejects.toMatchInlineSnapshot(`[Error: Timed out waiting for factory Test to resolve!]`);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { Constructable } from '../app.type.js';
|
|
2
|
-
|
|
3
|
-
type Factory<T> = { create: (...args: unknown[]) => Promise<T> };
|
|
4
|
-
type FactoryValue<T> = Factory<T> | [Promise<Factory<T>>, (factory: Factory<T>) => void];
|
|
5
|
-
|
|
6
|
-
export class Container {
|
|
7
|
-
private static FACTORY_TIMEOUT_IN_MS = 5000;
|
|
8
|
-
|
|
9
|
-
private static readonly factories: {
|
|
10
|
-
[key: string]: {
|
|
11
|
-
default: boolean;
|
|
12
|
-
factory: FactoryValue<any>;
|
|
13
|
-
metadata: { [key: string]: string };
|
|
14
|
-
}[];
|
|
15
|
-
} = {};
|
|
16
|
-
|
|
17
|
-
static async get<T>(
|
|
18
|
-
type: Constructable<T> | string,
|
|
19
|
-
options?: {
|
|
20
|
-
args?: unknown[];
|
|
21
|
-
metadata?: { [key: string]: string };
|
|
22
|
-
},
|
|
23
|
-
): Promise<T> {
|
|
24
|
-
const args = options?.args || [];
|
|
25
|
-
const metadata = options?.metadata;
|
|
26
|
-
const name = typeof type === 'string' ? type : type.name;
|
|
27
|
-
|
|
28
|
-
if (!(name in this.factories)) {
|
|
29
|
-
this.factories[name] = [];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
let factoryContainer: (typeof Container.factories)[keyof typeof Container.factories][0] | undefined;
|
|
33
|
-
if (!metadata) {
|
|
34
|
-
factoryContainer = this.factories[name].find((f) => f.default);
|
|
35
|
-
} else {
|
|
36
|
-
const filters: { key: string; value: string }[] = [];
|
|
37
|
-
for (const key in metadata) {
|
|
38
|
-
filters.push({ key, value: metadata[key] });
|
|
39
|
-
}
|
|
40
|
-
factoryContainer = this.factories[name].find((f) => filters.every((c) => f.metadata[c.key] === c.value));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (factoryContainer?.factory) {
|
|
44
|
-
if (!Array.isArray(factoryContainer.factory)) {
|
|
45
|
-
return (factoryContainer.factory as Factory<T>).create(...args);
|
|
46
|
-
} else {
|
|
47
|
-
const factory = await (factoryContainer.factory[0] as Promise<Factory<T>>);
|
|
48
|
-
return factory.create(...args);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const newFactoryContainer = {
|
|
53
|
-
default: false,
|
|
54
|
-
metadata,
|
|
55
|
-
} as (typeof Container.factories)[keyof typeof Container.factories][0];
|
|
56
|
-
this.factories[name].push(newFactoryContainer);
|
|
57
|
-
|
|
58
|
-
let promiseResolver;
|
|
59
|
-
let promiseTimeout;
|
|
60
|
-
const promise = new Promise<Factory<T>>((resolve, reject) => {
|
|
61
|
-
promiseTimeout = setTimeout(() => {
|
|
62
|
-
reject(new Error(`Timed out waiting for factory ${name} to resolve!`));
|
|
63
|
-
}, this.FACTORY_TIMEOUT_IN_MS);
|
|
64
|
-
promiseResolver = resolve;
|
|
65
|
-
});
|
|
66
|
-
newFactoryContainer.factory = [promise, promiseResolver];
|
|
67
|
-
|
|
68
|
-
const factory = await promise;
|
|
69
|
-
if (promiseTimeout) {
|
|
70
|
-
clearTimeout(promiseTimeout);
|
|
71
|
-
}
|
|
72
|
-
return factory.create(...args);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
static registerFactory<T>(
|
|
76
|
-
type: Constructable<T> | string,
|
|
77
|
-
factory: Factory<T>,
|
|
78
|
-
options?: {
|
|
79
|
-
metadata?: { [key: string]: string };
|
|
80
|
-
},
|
|
81
|
-
): void {
|
|
82
|
-
const metadata = options?.metadata || {};
|
|
83
|
-
const name = typeof type === 'string' ? type : type.name;
|
|
84
|
-
|
|
85
|
-
if (!(name in this.factories)) {
|
|
86
|
-
this.factories[name] = [];
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const filters: { key: string; value: string }[] = [];
|
|
90
|
-
for (const key in metadata) {
|
|
91
|
-
filters.push({ key, value: metadata[key] });
|
|
92
|
-
}
|
|
93
|
-
const factoryContainer = this.factories[name].find((f) => filters.every((c) => f.metadata[c.key] === c.value));
|
|
94
|
-
|
|
95
|
-
if (factoryContainer?.factory) {
|
|
96
|
-
// If factory is not a promise set by get() above, it has already been registered.
|
|
97
|
-
if (!Array.isArray(factoryContainer.factory)) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
factoryContainer.metadata = metadata;
|
|
102
|
-
const resolve = factoryContainer.factory[1] as (factory: Factory<T>) => void;
|
|
103
|
-
resolve(factory);
|
|
104
|
-
factoryContainer.factory = factory;
|
|
105
|
-
this.setDefault(type, factory);
|
|
106
|
-
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
this.factories[name].push({ default: false, factory, metadata });
|
|
111
|
-
this.setDefault(type, factory);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
static reset(): void {
|
|
115
|
-
this.FACTORY_TIMEOUT_IN_MS = 5000;
|
|
116
|
-
|
|
117
|
-
for (const name in this.factories) {
|
|
118
|
-
delete this.factories[name];
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
static setDefault<T>(type: Constructable<T> | string, factory: Factory<T>): void {
|
|
123
|
-
const name = typeof type === 'string' ? type : type.name;
|
|
124
|
-
|
|
125
|
-
this.factories[name]?.forEach((f) => {
|
|
126
|
-
f.default = (f.factory as unknown as Constructable<T>).name === (factory as unknown as Constructable<T>).name;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
static setFactoryTimeout(timeoutInMs: number): void {
|
|
131
|
-
this.FACTORY_TIMEOUT_IN_MS = timeoutInMs;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Constructable } from '../app.type.js';
|
|
2
|
-
import { Container } from './container.js';
|
|
3
|
-
|
|
4
|
-
export function Factory<T>(
|
|
5
|
-
type: Constructable<T> | string,
|
|
6
|
-
options?: {
|
|
7
|
-
metadata?: { [key: string]: string };
|
|
8
|
-
},
|
|
9
|
-
): (constructor: { create: (...args: unknown[]) => Promise<T> }) => void {
|
|
10
|
-
return function (constructor: { create: (...args: unknown[]) => Promise<T> }) {
|
|
11
|
-
Container.registerFactory<T>(type, constructor, options);
|
|
12
|
-
};
|
|
13
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ModelSerializationService } from '../services/serialization/model/model-serialization.service.js';
|
|
2
|
-
import { Container } from './container.js';
|
|
3
|
-
|
|
4
|
-
export function Model(): (constructor: any) => void {
|
|
5
|
-
return function (constructor: any) {
|
|
6
|
-
Container.get(ModelSerializationService).then((modelSerializationService) => {
|
|
7
|
-
modelSerializationService.registerClass(constructor.name, constructor);
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { AModule } from '../functions/module/module.abstract.js';
|
|
2
|
-
import { ModelSerializationService } from '../services/serialization/model/model-serialization.service.js';
|
|
3
|
-
import { Container } from './container.js';
|
|
4
|
-
|
|
5
|
-
export function Module(): (constructor: any) => void {
|
|
6
|
-
return function (constructor: any) {
|
|
7
|
-
Container.get(ModelSerializationService).then((modelSerializationService) => {
|
|
8
|
-
Container.get<AModule>(constructor.name).then((module) => {
|
|
9
|
-
modelSerializationService.registerModule(module);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
}
|