@resistdesign/voltra 3.0.0-alpha.4 → 3.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +379 -14
- package/api/DBX/DBXAsserts.d.ts +95 -0
- package/api/DBX/DBXRequest.d.ts +5 -0
- package/api/DBX/DBXRuntime.d.ts +5 -0
- package/api/DBX/DBXScenarioConfig.d.ts +9 -0
- package/api/DBX/DBXSeed.d.ts +124 -0
- package/api/DBX/DBXTypes.d.ts +176 -0
- package/api/DBX/index.d.ts +8 -0
- package/api/DataAccessControl.d.ts +220 -0
- package/api/Indexing/API.d.ts +224 -0
- package/api/Indexing/Cursor.d.ts +101 -0
- package/api/Indexing/Handler/Config.d.ts +39 -0
- package/api/Indexing/Handler.d.ts +166 -0
- package/api/Indexing/Trace.d.ts +54 -0
- package/api/Indexing/Types.d.ts +204 -0
- package/api/Indexing/ddb/AwsSdkV3Adapter.d.ts +8 -0
- package/api/Indexing/ddb/Types.d.ts +209 -0
- package/api/Indexing/docId.d.ts +27 -0
- package/api/Indexing/exact/ExactDdb.d.ts +58 -0
- package/api/Indexing/exact/ExactIndex.d.ts +90 -0
- package/api/Indexing/exact/ExactS3.d.ts +41 -0
- package/api/Indexing/fieldQualification.d.ts +12 -0
- package/api/Indexing/fulltext/FullTextDdbBackend.d.ts +212 -0
- package/api/Indexing/fulltext/FullTextMemoryBackend.d.ts +93 -0
- package/api/Indexing/fulltext/Schema.d.ts +164 -0
- package/api/Indexing/hashUniversal.d.ts +13 -0
- package/api/Indexing/index.d.ts +45 -0
- package/api/Indexing/lossy/LossyDdb.d.ts +43 -0
- package/api/Indexing/lossy/LossyIndex.d.ts +72 -0
- package/api/Indexing/lossy/LossyS3.d.ts +40 -0
- package/api/Indexing/rel/Cursor.d.ts +25 -0
- package/api/Indexing/rel/Handlers.d.ts +144 -0
- package/api/Indexing/rel/RelationalDdb.d.ts +169 -0
- package/api/Indexing/rel/RelationalInMemoryBackend.d.ts +38 -0
- package/api/Indexing/rel/Types.d.ts +69 -0
- package/api/Indexing/structured/Cursor.d.ts +26 -0
- package/api/Indexing/structured/Handlers.d.ts +128 -0
- package/api/Indexing/structured/SearchStructured.d.ts +44 -0
- package/api/Indexing/structured/StructuredDdb.d.ts +184 -0
- package/api/Indexing/structured/StructuredDdbBackend.d.ts +112 -0
- package/api/Indexing/structured/StructuredInMemoryBackend.d.ts +40 -0
- package/api/Indexing/structured/StructuredInMemoryIndex.d.ts +61 -0
- package/api/Indexing/structured/StructuredStringLike.d.ts +54 -0
- package/api/Indexing/structured/StructuredWriter.d.ts +74 -0
- package/api/Indexing/structured/Types.d.ts +126 -0
- package/api/Indexing/structured/index.d.ts +9 -0
- package/api/Indexing/tokenize.d.ts +31 -0
- package/api/ORM/DACUtils.d.ts +270 -0
- package/api/ORM/ListItemUtils.d.ts +40 -0
- package/api/ORM/ORMRouteMap.d.ts +55 -0
- package/api/ORM/TypeInfoORMService.d.ts +740 -0
- package/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +229 -0
- package/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +89 -0
- package/api/ORM/drivers/InMemoryDataItemDBDriver/ConfigTypes.d.ts +4 -0
- package/api/ORM/drivers/InMemoryDataItemDBDriver.d.ts +55 -0
- package/api/ORM/drivers/InMemoryFileItemDBDriver/ConfigTypes.d.ts +13 -0
- package/api/ORM/drivers/InMemoryFileItemDBDriver.d.ts +98 -0
- package/api/ORM/drivers/InMemoryItemRelationshipDBDriver.d.ts +16 -0
- package/api/ORM/drivers/IndexingRelationshipDriver.d.ts +123 -0
- package/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +322 -0
- package/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +118 -0
- package/api/ORM/drivers/S3FileItemDBDriver.d.ts +71 -0
- package/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +36 -0
- package/api/ORM/drivers/common/Types.d.ts +197 -0
- package/api/ORM/drivers/common/index.d.ts +2 -0
- package/api/ORM/drivers/index.d.ts +8 -0
- package/api/ORM/index.d.ts +9 -0
- package/api/ORM/indexing/criteriaToStructuredWhere.d.ts +22 -0
- package/api/Router/AWS.d.ts +80 -0
- package/api/Router/Auth.d.ts +14 -0
- package/api/Router/CORS.d.ts +66 -0
- package/api/Router/Types.d.ts +138 -0
- package/api/Router/index.d.ts +89 -0
- package/api/index.d.ts +72 -6
- package/api/index.js +3291 -1954
- package/app/forms/Engine.d.ts +23 -0
- package/app/forms/UI.d.ts +83 -0
- package/app/forms/core/createAutoField.d.ts +43 -0
- package/app/forms/core/createFormRenderer.d.ts +25 -0
- package/app/forms/core/getFieldKind.d.ts +14 -0
- package/app/forms/core/index.d.ts +11 -0
- package/app/forms/core/mergeSuites.d.ts +23 -0
- package/app/forms/core/resolveSuite.d.ts +15 -0
- package/app/forms/core/types.d.ts +180 -0
- package/app/forms/index.d.ts +9 -0
- package/app/forms/types.d.ts +137 -0
- package/app/helpers/styled.d.ts +3 -0
- package/app/index.d.ts +102 -5
- package/app/index.js +98 -327
- package/app/utils/ApplicationState.d.ts +167 -0
- package/app/utils/ApplicationStateLoader.d.ts +86 -0
- package/app/utils/Controller.d.ts +10 -0
- package/app/utils/Debug.d.ts +14 -0
- package/app/utils/EasyLayout.d.ts +89 -0
- package/app/utils/History.d.ts +165 -0
- package/app/utils/Route.d.ts +173 -0
- package/app/utils/RouteHistory.d.ts +27 -0
- package/app/utils/Service.d.ts +45 -0
- package/app/utils/TypeInfoORMAPIUtils.d.ts +94 -0
- package/app/utils/TypeInfoORMClient.d.ts +103 -0
- package/app/utils/UniversalRouteAdapter.d.ts +73 -0
- package/app/utils/easy-layout/computeAreaBounds.d.ts +5 -0
- package/app/utils/easy-layout/computeTracks.d.ts +16 -0
- package/app/utils/easy-layout/index.d.ts +5 -0
- package/app/utils/easy-layout/parseTemplate.d.ts +12 -0
- package/app/utils/easy-layout/types.d.ts +52 -0
- package/app/utils/easy-layout/validateAreas.d.ts +5 -0
- package/app/utils/index.d.ts +24 -0
- package/build/TypeMapping.d.ts +17 -0
- package/build/TypeParsing.d.ts +10 -0
- package/build/index.d.ts +15 -0
- package/build/index.js +569 -0
- package/chunk-2MOLWZMQ.js +71 -0
- package/chunk-7AMEFPPP.js +78 -0
- package/chunk-ATO2455Q.js +258 -0
- package/chunk-DT6WWJUI.js +1185 -0
- package/chunk-I2KLQ2HA.js +19 -0
- package/chunk-TJFTWPXQ.js +39 -0
- package/chunk-WNFRDIBW.js +121 -0
- package/chunk-YCTVEW2I.js +546 -0
- package/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +9 -0
- package/common/CommandLine/index.d.ts +6 -0
- package/common/HelperTypes.d.ts +9 -0
- package/common/IdGeneration/getSimpleId.d.ts +8 -0
- package/common/IdGeneration/index.d.ts +1 -0
- package/common/ItemRelationshipInfoTypes.d.ts +64 -0
- package/common/ItemRelationships/ItemRelationshipValidation.d.ts +21 -0
- package/common/ItemRelationships/index.d.ts +2 -0
- package/common/Logging/Utils.d.ts +10 -0
- package/common/Logging/index.d.ts +1 -0
- package/common/Routing.d.ts +81 -0
- package/common/SearchTypes.d.ts +227 -0
- package/common/SearchUtils.d.ts +55 -0
- package/common/SearchValidation.d.ts +27 -0
- package/common/StringTransformers.d.ts +28 -0
- package/common/Testing/CLI.d.ts +6 -0
- package/common/Testing/Types.d.ts +216 -0
- package/common/Testing/Utils.d.ts +112 -0
- package/common/Testing/index.d.ts +8 -0
- package/common/TypeInfoDataItemUtils.d.ts +39 -0
- package/{Types-C7XjUjoF.d.ts → common/TypeInfoORM/Types.d.ts} +117 -15
- package/common/TypeInfoORM/index.d.ts +3 -0
- package/common/TypeParsing/Constants.d.ts +4 -0
- package/common/TypeParsing/ParsingUtils/Constants.d.ts +8 -0
- package/common/TypeParsing/ParsingUtils/checkType.d.ts +14 -0
- package/common/TypeParsing/ParsingUtils/checkUnionType.d.ts +12 -0
- package/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +8 -0
- package/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +12 -0
- package/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +14 -0
- package/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +18 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +9 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +9 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +11 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +12 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +11 -0
- package/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +9 -0
- package/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +11 -0
- package/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +8 -0
- package/common/TypeParsing/TypeInfo.d.ts +222 -0
- package/common/TypeParsing/Utils.d.ts +47 -0
- package/common/TypeParsing/Validation.d.ts +327 -0
- package/common/TypeParsing/index.d.ts +8 -0
- package/common/index.d.ts +40 -4
- package/common/index.js +25 -1737
- package/{index-BkFZlfit.d.ts → iac/SimpleCFT.d.ts} +5 -25
- package/iac/index.d.ts +40 -2
- package/iac/index.js +2 -1661
- package/iac/packs/auth.d.ts +131 -0
- package/iac/packs/build/utils.d.ts +289 -0
- package/iac/packs/build.d.ts +92 -0
- package/iac/packs/cdn.d.ts +33 -0
- package/iac/packs/cloud-function.d.ts +67 -0
- package/iac/packs/database.d.ts +32 -0
- package/iac/packs/dns.d.ts +34 -0
- package/iac/packs/file-storage.d.ts +46 -0
- package/iac/packs/gateway.d.ts +82 -0
- package/iac/packs/index.d.ts +60 -1
- package/iac/packs/index.js +311 -566
- package/iac/packs/repo.d.ts +28 -0
- package/iac/packs/ssl-certificate.d.ts +28 -0
- package/iac/types/Constants.d.ts +24 -0
- package/{index-DcvJOZ_c.d.ts → iac/types/IaCTypes.d.ts} +23 -1018
- package/iac/types/Renderers.d.ts +96 -0
- package/iac/types/Types.d.ts +131 -0
- package/iac/types/Utils.d.ts +9 -0
- package/iac/types/generate.d.ts +1 -0
- package/iac/utils/index.d.ts +87 -0
- package/iac/utils/patch-utils.d.ts +66 -0
- package/iac-packs/index.d.ts +6 -0
- package/native/forms/UI.d.ts +73 -0
- package/native/forms/createNativeFormRenderer.d.ts +21 -0
- package/native/forms/index.d.ts +25 -0
- package/native/forms/primitives/index.d.ts +38 -0
- package/native/forms/suite.d.ts +15 -0
- package/native/index.d.ts +19 -0
- package/native/index.js +748 -0
- package/native/testing/react-native.d.ts +46 -0
- package/native/utils/EasyLayout.d.ts +88 -0
- package/native/utils/History.d.ts +102 -0
- package/native/utils/Route.d.ts +80 -0
- package/native/utils/index.d.ts +20 -0
- package/package.json +54 -21
- package/web/forms/UI.d.ts +74 -0
- package/web/forms/createWebFormRenderer.d.ts +21 -0
- package/web/forms/index.d.ts +9 -0
- package/web/forms/primitives/index.d.ts +21 -0
- package/web/forms/suite.d.ts +15 -0
- package/web/index.d.ts +15 -0
- package/web/index.js +668 -0
- package/web/utils/EasyLayout.d.ts +47 -0
- package/web/utils/Route.d.ts +16 -0
- package/web/utils/index.d.ts +7 -0
- package/SearchTypes-DjN6YQzE.d.ts +0 -577
- package/Validation-CFP59oIP.d.ts +0 -226
- package/index-C3-iD9Mh.d.ts +0 -690
- package/index-DZ2BB4iX.d.ts +0 -5357
- package/index-IokxSNxm.d.ts +0 -745
- package/index.d.ts +0 -13
- package/index.js +0 -10973
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// src/common/SearchTypes.ts
|
|
2
|
+
var LogicalOperators = /* @__PURE__ */ ((LogicalOperators2) => {
|
|
3
|
+
LogicalOperators2["AND"] = "AND";
|
|
4
|
+
LogicalOperators2["OR"] = "OR";
|
|
5
|
+
return LogicalOperators2;
|
|
6
|
+
})(LogicalOperators || {});
|
|
7
|
+
var ComparisonOperators = /* @__PURE__ */ ((ComparisonOperators2) => {
|
|
8
|
+
ComparisonOperators2["EQUALS"] = "EQUALS";
|
|
9
|
+
ComparisonOperators2["NOT_EQUALS"] = "NOT_EQUALS";
|
|
10
|
+
ComparisonOperators2["GREATER_THAN"] = "GREATER_THAN";
|
|
11
|
+
ComparisonOperators2["GREATER_THAN_OR_EQUAL"] = "GREATER_THAN_OR_EQUAL";
|
|
12
|
+
ComparisonOperators2["LESS_THAN"] = "LESS_THAN";
|
|
13
|
+
ComparisonOperators2["LESS_THAN_OR_EQUAL"] = "LESS_THAN_OR_EQUAL";
|
|
14
|
+
ComparisonOperators2["IN"] = "IN";
|
|
15
|
+
ComparisonOperators2["NOT_IN"] = "NOT_IN";
|
|
16
|
+
ComparisonOperators2["LIKE"] = "LIKE";
|
|
17
|
+
ComparisonOperators2["NOT_LIKE"] = "NOT_LIKE";
|
|
18
|
+
ComparisonOperators2["EXISTS"] = "EXISTS";
|
|
19
|
+
ComparisonOperators2["NOT_EXISTS"] = "NOT_EXISTS";
|
|
20
|
+
ComparisonOperators2["IS_NOT_EMPTY"] = "IS_NOT_EMPTY";
|
|
21
|
+
ComparisonOperators2["IS_EMPTY"] = "IS_EMPTY";
|
|
22
|
+
ComparisonOperators2["BETWEEN"] = "BETWEEN";
|
|
23
|
+
ComparisonOperators2["NOT_BETWEEN"] = "NOT_BETWEEN";
|
|
24
|
+
ComparisonOperators2["CONTAINS"] = "CONTAINS";
|
|
25
|
+
ComparisonOperators2["NOT_CONTAINS"] = "NOT_CONTAINS";
|
|
26
|
+
ComparisonOperators2["STARTS_WITH"] = "STARTS_WITH";
|
|
27
|
+
ComparisonOperators2["ENDS_WITH"] = "ENDS_WITH";
|
|
28
|
+
ComparisonOperators2["DOES_NOT_START_WITH"] = "DOES_NOT_START_WITH";
|
|
29
|
+
ComparisonOperators2["DOES_NOT_END_WITH"] = "DOES_NOT_END_WITH";
|
|
30
|
+
return ComparisonOperators2;
|
|
31
|
+
})(ComparisonOperators || {});
|
|
32
|
+
|
|
33
|
+
// src/common/TypeInfoORM/Types.ts
|
|
34
|
+
var ITEM_RELATIONSHIP_DAC_RESOURCE_NAME = "TYPE_INFO_ORM_ITEM_RELATIONSHIP";
|
|
35
|
+
var RelationshipOperation = /* @__PURE__ */ ((RelationshipOperation2) => {
|
|
36
|
+
RelationshipOperation2["GET"] = "GET";
|
|
37
|
+
RelationshipOperation2["SET"] = "SET";
|
|
38
|
+
RelationshipOperation2["UNSET"] = "UNSET";
|
|
39
|
+
return RelationshipOperation2;
|
|
40
|
+
})(RelationshipOperation || {});
|
|
41
|
+
var OperationGroup = /* @__PURE__ */ ((OperationGroup2) => {
|
|
42
|
+
OperationGroup2["ALL_OPERATIONS"] = "ALL_OPERATIONS";
|
|
43
|
+
OperationGroup2["ALL_ITEM_OPERATIONS"] = "ALL_ITEM_OPERATIONS";
|
|
44
|
+
OperationGroup2["ALL_RELATIONSHIP_OPERATIONS"] = "ALL_RELATIONSHIP_OPERATIONS";
|
|
45
|
+
return OperationGroup2;
|
|
46
|
+
})(OperationGroup || {});
|
|
47
|
+
var TypeInfoORMServiceError = /* @__PURE__ */ ((TypeInfoORMServiceError2) => {
|
|
48
|
+
TypeInfoORMServiceError2["NO_DRIVERS_SUPPLIED"] = "NO_DRIVERS_SUPPLIED";
|
|
49
|
+
TypeInfoORMServiceError2["NO_RELATIONSHIP_DRIVERS_SUPPLIED"] = "NO_RELATIONSHIP_DRIVERS_SUPPLIED";
|
|
50
|
+
TypeInfoORMServiceError2["NO_PRIMARY_FIELD_VALUE_SUPPLIED"] = "NO_PRIMARY_FIELD_VALUE_SUPPLIED";
|
|
51
|
+
TypeInfoORMServiceError2["INVALID_DRIVER"] = "INVALID_DRIVER";
|
|
52
|
+
TypeInfoORMServiceError2["INVALID_RELATIONSHIP_DRIVER"] = "INVALID_RELATIONSHIP_DRIVER";
|
|
53
|
+
TypeInfoORMServiceError2["INVALID_TYPE_INFO"] = "INVALID_TYPE_INFO";
|
|
54
|
+
TypeInfoORMServiceError2["TYPE_INFO_MISSING_PRIMARY_FIELD"] = "TYPE_INFO_MISSING_PRIMARY_FIELD";
|
|
55
|
+
TypeInfoORMServiceError2["INVALID_RELATIONSHIP"] = "INVALID_RELATIONSHIP";
|
|
56
|
+
TypeInfoORMServiceError2["INVALID_OPERATION"] = "INVALID_OPERATION";
|
|
57
|
+
TypeInfoORMServiceError2["MISSING_ACCESSING_ROLE"] = "MISSING_ACCESSING_ROLE";
|
|
58
|
+
TypeInfoORMServiceError2["INDEXING_UNSUPPORTED_CRITERIA"] = "INDEXING_UNSUPPORTED_CRITERIA";
|
|
59
|
+
TypeInfoORMServiceError2["INDEXING_UNSUPPORTED_COMBINATION"] = "INDEXING_UNSUPPORTED_COMBINATION";
|
|
60
|
+
TypeInfoORMServiceError2["INDEXING_MISSING_INDEX_FIELD"] = "INDEXING_MISSING_INDEX_FIELD";
|
|
61
|
+
TypeInfoORMServiceError2["INDEXING_MISSING_BACKEND"] = "INDEXING_MISSING_BACKEND";
|
|
62
|
+
TypeInfoORMServiceError2["INDEXING_REQUIRES_CRITERIA"] = "INDEXING_REQUIRES_CRITERIA";
|
|
63
|
+
return TypeInfoORMServiceError2;
|
|
64
|
+
})(TypeInfoORMServiceError || {});
|
|
65
|
+
var TypeInfoORMAPIRoutePaths = /* @__PURE__ */ ((TypeInfoORMAPIRoutePaths2) => {
|
|
66
|
+
TypeInfoORMAPIRoutePaths2["CREATE"] = "create";
|
|
67
|
+
TypeInfoORMAPIRoutePaths2["READ"] = "read";
|
|
68
|
+
TypeInfoORMAPIRoutePaths2["UPDATE"] = "update";
|
|
69
|
+
TypeInfoORMAPIRoutePaths2["DELETE"] = "delete";
|
|
70
|
+
TypeInfoORMAPIRoutePaths2["LIST"] = "list";
|
|
71
|
+
TypeInfoORMAPIRoutePaths2["CREATE_RELATIONSHIP"] = "create-relationship";
|
|
72
|
+
TypeInfoORMAPIRoutePaths2["DELETE_RELATIONSHIP"] = "delete-relationship";
|
|
73
|
+
TypeInfoORMAPIRoutePaths2["LIST_RELATIONSHIPS"] = "list-relationships";
|
|
74
|
+
TypeInfoORMAPIRoutePaths2["LIST_RELATED_ITEMS"] = "list-related-items";
|
|
75
|
+
return TypeInfoORMAPIRoutePaths2;
|
|
76
|
+
})(TypeInfoORMAPIRoutePaths || {});
|
|
77
|
+
|
|
78
|
+
export { ComparisonOperators, ITEM_RELATIONSHIP_DAC_RESOURCE_NAME, LogicalOperators, OperationGroup, RelationshipOperation, TypeInfoORMAPIRoutePaths, TypeInfoORMServiceError };
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import YAML from 'yaml';
|
|
2
|
+
|
|
3
|
+
// src/iac/utils/patch-utils.ts
|
|
4
|
+
var DEFAULT_MERGE_STRATEGY = "transpose";
|
|
5
|
+
var getValuePathString = (valuePathArray = []) => valuePathArray.map((p) => encodeURIComponent(p)).join("/");
|
|
6
|
+
var getValuePathArray = (valuePathString = "") => valuePathString.split("/").map((p) => decodeURIComponent(p));
|
|
7
|
+
var isConstructedFrom = (value, constructorReference) => value !== null && typeof value === "object" && "constructor" in value && value.constructor === constructorReference;
|
|
8
|
+
var mergeValues = (valuePathArray = [], existingValue, newValue, mergeStrategyMap = {}) => {
|
|
9
|
+
const valuePathString = getValuePathString(valuePathArray);
|
|
10
|
+
const arrayIndexWildcardValuePathString = getValuePathString(
|
|
11
|
+
valuePathArray.map((p) => typeof p === "number" ? "#" : p)
|
|
12
|
+
);
|
|
13
|
+
const {
|
|
14
|
+
[valuePathString]: {
|
|
15
|
+
strategy: specificKeyMergeStrategy = DEFAULT_MERGE_STRATEGY,
|
|
16
|
+
data: specificKeyMergeStrategyData = void 0
|
|
17
|
+
} = {},
|
|
18
|
+
[arrayIndexWildcardValuePathString]: {
|
|
19
|
+
strategy: arrayIndexWildcardMergeStrategy = DEFAULT_MERGE_STRATEGY,
|
|
20
|
+
data: arrayIndexWildcardMergeStrategyData = void 0
|
|
21
|
+
} = {}
|
|
22
|
+
} = mergeStrategyMap;
|
|
23
|
+
const mergeStrategy = valuePathString in mergeStrategyMap ? specificKeyMergeStrategy : arrayIndexWildcardMergeStrategy;
|
|
24
|
+
const mergeStrategyData = valuePathString in mergeStrategyMap ? specificKeyMergeStrategyData : arrayIndexWildcardMergeStrategyData;
|
|
25
|
+
let mergedValue = typeof newValue !== "undefined" ? newValue : existingValue;
|
|
26
|
+
if (mergeStrategy !== "replace") {
|
|
27
|
+
if (isConstructedFrom(existingValue, Array) && isConstructedFrom(newValue, Array)) {
|
|
28
|
+
if (mergeStrategy === "accumulate") {
|
|
29
|
+
mergedValue = [...existingValue, ...newValue];
|
|
30
|
+
} else if (mergeStrategy === "accumulate-unique") {
|
|
31
|
+
mergedValue = [
|
|
32
|
+
...existingValue,
|
|
33
|
+
...newValue.filter((item) => existingValue.indexOf(item) === -1)
|
|
34
|
+
];
|
|
35
|
+
} else if (mergeStrategy === "accumulate-unique-by") {
|
|
36
|
+
const existingItemMap = {};
|
|
37
|
+
const newItemMap = {};
|
|
38
|
+
for (let i = 0; i < existingValue.length; i++) {
|
|
39
|
+
const existingItem = existingValue[i];
|
|
40
|
+
if (existingItem && typeof existingItem === "object") {
|
|
41
|
+
const identifier = mergeStrategyData instanceof Function ? mergeStrategyData(existingItem) : existingItem[mergeStrategyData];
|
|
42
|
+
existingItemMap[identifier] = existingItem;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (let j = 0; j < newValue.length; j++) {
|
|
46
|
+
const newItem = newValue[j];
|
|
47
|
+
if (newItem && typeof newItem === "object") {
|
|
48
|
+
const identifier = mergeStrategyData instanceof Function ? mergeStrategyData(newItem) : newItem[mergeStrategyData];
|
|
49
|
+
newItemMap[identifier] = newItem;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
mergedValue = Object.keys({
|
|
53
|
+
...existingItemMap,
|
|
54
|
+
...newItemMap
|
|
55
|
+
}).map(
|
|
56
|
+
(id, index) => mergeValues(
|
|
57
|
+
[...valuePathArray, index],
|
|
58
|
+
existingItemMap[id],
|
|
59
|
+
newItemMap[id],
|
|
60
|
+
mergeStrategyMap
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
} else if (mergeStrategy === "transpose") {
|
|
64
|
+
const fullLength = Math.max(existingValue.length, newValue.length);
|
|
65
|
+
mergedValue = [...new Array(fullLength)].map(
|
|
66
|
+
(_empty, index) => mergeValues(
|
|
67
|
+
[...valuePathArray, index],
|
|
68
|
+
existingValue[index],
|
|
69
|
+
newValue[index],
|
|
70
|
+
mergeStrategyMap
|
|
71
|
+
)
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
} else if (isConstructedFrom(existingValue, Object) && isConstructedFrom(newValue, Object)) {
|
|
75
|
+
mergedValue = Object.keys({ ...existingValue, ...newValue }).reduce(
|
|
76
|
+
(acc, k) => ({
|
|
77
|
+
...acc,
|
|
78
|
+
[k]: mergeValues(
|
|
79
|
+
[...valuePathArray, k],
|
|
80
|
+
existingValue[k],
|
|
81
|
+
newValue[k],
|
|
82
|
+
mergeStrategyMap
|
|
83
|
+
)
|
|
84
|
+
}),
|
|
85
|
+
{}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return mergedValue;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// src/iac/utils/index.ts
|
|
93
|
+
var addParameter = (parameterInfo, template) => {
|
|
94
|
+
const { ParameterId, Parameter, Label, Group } = parameterInfo;
|
|
95
|
+
const {
|
|
96
|
+
Parameters,
|
|
97
|
+
Metadata: {
|
|
98
|
+
"AWS::CloudFormation::Interface": {
|
|
99
|
+
ParameterGroups = [],
|
|
100
|
+
ParameterLabels = {}
|
|
101
|
+
} = {}
|
|
102
|
+
} = {}
|
|
103
|
+
} = template;
|
|
104
|
+
let NewParameterGroups = ParameterGroups;
|
|
105
|
+
if (Group) {
|
|
106
|
+
const GroupObject = ParameterGroups.filter(
|
|
107
|
+
(g) => g.Label?.default === Group
|
|
108
|
+
)[0];
|
|
109
|
+
NewParameterGroups = GroupObject ? ParameterGroups.map(
|
|
110
|
+
(g) => g.Label?.default === Group ? {
|
|
111
|
+
...g,
|
|
112
|
+
Parameters: [...g.Parameters || [], ParameterId]
|
|
113
|
+
} : g
|
|
114
|
+
) : [
|
|
115
|
+
...ParameterGroups,
|
|
116
|
+
{
|
|
117
|
+
Label: {
|
|
118
|
+
default: Group
|
|
119
|
+
},
|
|
120
|
+
Parameters: [ParameterId]
|
|
121
|
+
}
|
|
122
|
+
];
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
...template,
|
|
126
|
+
Parameters: {
|
|
127
|
+
...Parameters,
|
|
128
|
+
[ParameterId]: Parameter
|
|
129
|
+
},
|
|
130
|
+
Metadata: {
|
|
131
|
+
...template.Metadata,
|
|
132
|
+
"AWS::CloudFormation::Interface": {
|
|
133
|
+
...template?.Metadata?.["AWS::CloudFormation::Interface"],
|
|
134
|
+
ParameterGroups: NewParameterGroups,
|
|
135
|
+
ParameterLabels: {
|
|
136
|
+
...ParameterLabels,
|
|
137
|
+
[ParameterId]: {
|
|
138
|
+
default: Label
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
var addParameters = (parameters, template) => parameters.reduce((acc, p) => addParameter(p, acc), template);
|
|
146
|
+
var patchTemplate = (patch, template) => mergeValues([], template, patch, {
|
|
147
|
+
[getValuePathString([
|
|
148
|
+
// Parameter Groups
|
|
149
|
+
"Metadata",
|
|
150
|
+
"AWS::CloudFormation::Interface",
|
|
151
|
+
"ParameterGroups"
|
|
152
|
+
])]: {
|
|
153
|
+
strategy: "accumulate-unique-by",
|
|
154
|
+
data: (pG) => pG?.Label?.default
|
|
155
|
+
},
|
|
156
|
+
[getValuePathString([
|
|
157
|
+
// Parameter Group Parameter Ids
|
|
158
|
+
"Metadata",
|
|
159
|
+
"AWS::CloudFormation::Interface",
|
|
160
|
+
"ParameterGroups",
|
|
161
|
+
"#",
|
|
162
|
+
"Parameters"
|
|
163
|
+
])]: {
|
|
164
|
+
strategy: "accumulate-unique"
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
var createResourcePack = (creator) => (params, template) => {
|
|
168
|
+
const patch = creator(params);
|
|
169
|
+
return patchTemplate(patch, template);
|
|
170
|
+
};
|
|
171
|
+
var SimpleCFT = class {
|
|
172
|
+
/**
|
|
173
|
+
* Create a SimpleCFT template wrapper.
|
|
174
|
+
*
|
|
175
|
+
* @param template - Initial CloudFormation template.
|
|
176
|
+
*/
|
|
177
|
+
constructor(template = {
|
|
178
|
+
AWSTemplateFormatVersion: "2010-09-09"
|
|
179
|
+
}) {
|
|
180
|
+
this.template = template;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Apply a pack with configuration to the stack template.
|
|
184
|
+
* @see `@resistdesign/voltra/iac` and `@resistdesign/voltra/iac/packs` for examples.
|
|
185
|
+
* */
|
|
186
|
+
applyPack = (pack, params) => {
|
|
187
|
+
this.template = pack(params, this.template);
|
|
188
|
+
return this;
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Apply a patch to the stack template.
|
|
192
|
+
*
|
|
193
|
+
* @param patch - Template patch to merge.
|
|
194
|
+
* */
|
|
195
|
+
patch = (patch) => {
|
|
196
|
+
this.template = patchTemplate(patch, this.template);
|
|
197
|
+
return this;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Add a stack parameter including its descriptive info and an optional parameter group.
|
|
201
|
+
*
|
|
202
|
+
* @param parameter - Parameter definition and metadata.
|
|
203
|
+
* */
|
|
204
|
+
addParameter = (parameter) => {
|
|
205
|
+
this.template = addParameter(parameter, this.template);
|
|
206
|
+
return this;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Add a group of stack parameters including their descriptive info and an optional parameter group.
|
|
210
|
+
*
|
|
211
|
+
* @param group - Parameter group definition.
|
|
212
|
+
* */
|
|
213
|
+
addParameterGroup = ({ Label: Group, Parameters }) => {
|
|
214
|
+
const parameterIds = Object.keys(Parameters);
|
|
215
|
+
const parameterList = parameterIds.map((ParameterId) => {
|
|
216
|
+
const { Label, ...Parameter } = Parameters[ParameterId];
|
|
217
|
+
return {
|
|
218
|
+
Group,
|
|
219
|
+
ParameterId,
|
|
220
|
+
Label,
|
|
221
|
+
Parameter
|
|
222
|
+
};
|
|
223
|
+
});
|
|
224
|
+
this.template = addParameters(parameterList, this.template);
|
|
225
|
+
return this;
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Use a modification to dynamically apply various changes at once.
|
|
229
|
+
*
|
|
230
|
+
* @param modification - Modification callback to apply.
|
|
231
|
+
* */
|
|
232
|
+
modify = (modification) => {
|
|
233
|
+
modification(this);
|
|
234
|
+
return this;
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* Convert the stack template to a string.
|
|
238
|
+
*
|
|
239
|
+
* @returns JSON string representation of the template.
|
|
240
|
+
* */
|
|
241
|
+
toString = () => JSON.stringify(this.template, null, 2);
|
|
242
|
+
/**
|
|
243
|
+
* Convert the stack template to a JSON object.
|
|
244
|
+
*
|
|
245
|
+
* @returns Template JSON object.
|
|
246
|
+
* */
|
|
247
|
+
toJSON = () => this.template;
|
|
248
|
+
/**
|
|
249
|
+
* Convert the stack template to a YAML string.
|
|
250
|
+
*
|
|
251
|
+
* @returns YAML string representation of the template.
|
|
252
|
+
* */
|
|
253
|
+
toYAML = () => YAML.stringify(this.template, {
|
|
254
|
+
aliasDuplicateObjects: false
|
|
255
|
+
});
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
export { DEFAULT_MERGE_STRATEGY, SimpleCFT, addParameter, addParameters, createResourcePack, getValuePathArray, getValuePathString, isConstructedFrom, mergeValues, patchTemplate };
|