@resistdesign/voltra 3.0.0-alpha.2 → 3.0.0-alpha.21
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 +327 -7
- 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 +169 -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 +210 -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 +143 -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 +166 -0
- package/api/Indexing/structured/StructuredDdbBackend.d.ts +109 -0
- package/api/Indexing/structured/StructuredInMemoryBackend.d.ts +34 -0
- package/api/Indexing/structured/StructuredInMemoryIndex.d.ts +58 -0
- package/api/Indexing/structured/StructuredStringLike.d.ts +25 -0
- package/api/Indexing/structured/StructuredWriter.d.ts +61 -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 +555 -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/{src/api → api}/ORM/drivers/S3FileItemDBDriver.d.ts +27 -0
- package/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +36 -0
- package/{src/api → api}/ORM/drivers/common/Types.d.ts +120 -0
- package/api/ORM/drivers/index.d.ts +7 -0
- package/api/ORM/index.d.ts +7 -0
- package/api/ORM/indexing/criteriaToStructuredWhere.d.ts +17 -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/{src/api → api}/Router/Types.d.ts +70 -4
- package/api/Router/index.d.ts +89 -0
- package/api/index.d.ts +68 -0
- package/api/index.js +9204 -0
- package/app/forms/Engine.d.ts +20 -0
- package/app/forms/core/createAutoField.d.ts +35 -0
- package/app/forms/core/createFormRenderer.d.ts +24 -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 +22 -0
- package/app/forms/core/resolveSuite.d.ts +14 -0
- package/app/forms/core/types.d.ts +153 -0
- package/app/forms/index.d.ts +9 -0
- package/app/forms/types.d.ts +156 -0
- package/app/helpers/styled.d.ts +3 -0
- package/app/index.d.ts +98 -0
- package/app/index.js +1386 -0
- package/{src/app → app}/utils/ApplicationState.d.ts +115 -0
- package/{src/app → app}/utils/ApplicationStateLoader.d.ts +40 -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 +148 -0
- package/app/utils/Route.d.ts +129 -0
- package/app/utils/RouteHistory.d.ts +26 -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/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 +23 -0
- package/{src/common/TypeParsing → build}/TypeMapping.d.ts +8 -0
- package/build/TypeParsing.d.ts +10 -0
- package/build/index.d.ts +15 -0
- package/build/index.js +579 -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/{src/common → common}/ItemRelationshipInfoTypes.d.ts +19 -1
- package/common/ItemRelationships/ItemRelationshipValidation.d.ts +21 -0
- package/common/Logging/Utils.d.ts +19 -0
- package/common/Routing.d.ts +67 -0
- package/common/SearchTypes.d.ts +248 -0
- package/common/SearchUtils.d.ts +55 -0
- package/{src/common → common}/SearchValidation.d.ts +10 -0
- package/{src/common → common}/StringTransformers.d.ts +11 -0
- package/common/Testing/CLI.d.ts +6 -0
- package/common/Testing/CLI.js +432 -0
- package/{src/common → common}/Testing/Types.d.ts +103 -4
- package/{src/common → common}/Testing/Utils.d.ts +65 -1
- package/common/Testing/index.d.ts +8 -0
- package/common/TypeInfoDataItemUtils.d.ts +39 -0
- package/common/TypeInfoORM/Types.d.ts +342 -0
- package/common/TypeParsing/Constants.d.ts +4 -0
- package/{src/common → common}/TypeParsing/ParsingUtils/Constants.d.ts +3 -0
- package/{src/common → common}/TypeParsing/ParsingUtils/checkType.d.ts +6 -0
- package/{src/common → common}/TypeParsing/ParsingUtils/checkUnionType.d.ts +6 -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/{src/common → common}/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +6 -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/{src/common → common}/TypeParsing/TypeInfo.d.ts +61 -1
- package/{src/common → common}/TypeParsing/Utils.d.ts +26 -0
- package/{src/common → common}/TypeParsing/Validation.d.ts +105 -0
- package/common/TypeParsing/index.d.ts +8 -0
- package/common/index.d.ts +50 -0
- package/common/index.js +413 -0
- package/{src/iac → iac}/SimpleCFT.d.ts +46 -2
- package/iac/index.d.ts +40 -0
- package/iac/index.js +258 -0
- package/iac/packs/auth/user-management.d.ts +80 -0
- package/iac/packs/auth.d.ts +86 -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/{src/iac → iac}/packs/database.d.ts +4 -1
- package/{src/iac → iac}/packs/dns.d.ts +22 -1
- package/iac/packs/file-storage.d.ts +46 -0
- package/iac/packs/gateway.d.ts +79 -0
- package/iac/packs/index.d.ts +60 -0
- package/iac/packs/index.js +1622 -0
- package/iac/packs/repo.d.ts +28 -0
- package/iac/packs/ssl-certificate.d.ts +28 -0
- package/{src/iac → iac}/types/Constants.d.ts +15 -0
- 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/{src/iac → iac}/utils/index.d.ts +56 -5
- package/iac/utils/patch-utils.d.ts +66 -0
- package/native/forms/createNativeFormRenderer.d.ts +21 -0
- package/native/forms/index.d.ts +8 -0
- package/native/forms/primitives/index.d.ts +48 -0
- package/native/forms/suite.d.ts +15 -0
- package/native/index.d.ts +15 -0
- package/native/index.js +1323 -0
- package/native/utils/EasyLayout.d.ts +88 -0
- package/native/utils/History.d.ts +113 -0
- package/native/utils/NativeRoute.d.ts +44 -0
- package/native/utils/Route.d.ts +50 -0
- package/native/utils/index.d.ts +11 -0
- package/package.json +87 -42
- package/web/forms/UI.d.ts +67 -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 +1297 -0
- package/web/utils/EasyLayout.d.ts +47 -0
- package/web/utils/Route.d.ts +20 -0
- package/web/utils/index.d.ts +7 -0
- package/src/api/DataAccessControl.d.ts +0 -85
- package/src/api/DataAccessControl.js +0 -159
- package/src/api/ORM/DACUtils.d.ts +0 -60
- package/src/api/ORM/DACUtils.js +0 -197
- package/src/api/ORM/ListItemUtils.d.ts +0 -7
- package/src/api/ORM/ListItemUtils.js +0 -22
- package/src/api/ORM/ORMRouteMap.d.ts +0 -19
- package/src/api/ORM/ORMRouteMap.js +0 -82
- package/src/api/ORM/TypeInfoORMService.d.ts +0 -103
- package/src/api/ORM/TypeInfoORMService.js +0 -581
- package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +0 -63
- package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.js +0 -2
- package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +0 -36
- package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.js +0 -282
- package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +0 -90
- package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.js +0 -2
- package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +0 -45
- package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.js +0 -127
- package/src/api/ORM/drivers/S3FileItemDBDriver.js +0 -182
- package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +0 -12
- package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.js +0 -20
- package/src/api/ORM/drivers/common/Types.js +0 -14
- package/src/api/ORM/drivers/common/index.js +0 -18
- package/src/api/ORM/drivers/index.d.ts +0 -3
- package/src/api/ORM/drivers/index.js +0 -19
- package/src/api/ORM/index.d.ts +0 -4
- package/src/api/ORM/index.js +0 -43
- package/src/api/Router/AWS.d.ts +0 -26
- package/src/api/Router/AWS.js +0 -76
- package/src/api/Router/Auth.d.ts +0 -2
- package/src/api/Router/Auth.js +0 -9
- package/src/api/Router/CORS.d.ts +0 -6
- package/src/api/Router/CORS.js +0 -27
- package/src/api/Router/Types.js +0 -2
- package/src/api/Router/index.d.ts +0 -18
- package/src/api/Router/index.js +0 -145
- package/src/api/index.d.ts +0 -3
- package/src/api/index.js +0 -39
- package/src/app/index.d.ts +0 -1
- package/src/app/index.js +0 -37
- package/src/app/utils/ApplicationState.js +0 -86
- package/src/app/utils/ApplicationStateLoader.js +0 -57
- package/src/app/utils/Controller.d.ts +0 -4
- package/src/app/utils/Controller.js +0 -47
- package/src/app/utils/Debug.d.ts +0 -4
- package/src/app/utils/Debug.js +0 -30
- package/src/app/utils/EasyLayout.d.ts +0 -49
- package/src/app/utils/EasyLayout.js +0 -122
- package/src/app/utils/Route.d.ts +0 -28
- package/src/app/utils/Route.js +0 -102
- package/src/app/utils/Service.d.ts +0 -12
- package/src/app/utils/Service.js +0 -34
- package/src/app/utils/TypeInfoORMAPIUtils.d.ts +0 -20
- package/src/app/utils/TypeInfoORMAPIUtils.js +0 -62
- package/src/app/utils/TypeInfoORMClient.d.ts +0 -24
- package/src/app/utils/TypeInfoORMClient.js +0 -69
- package/src/app/utils/index.d.ts +0 -8
- package/src/app/utils/index.js +0 -24
- package/src/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +0 -1
- package/src/common/CommandLine/collectRequiredEnvironmentVariables.js +0 -16
- package/src/common/HelperTypes.d.ts +0 -3
- package/src/common/HelperTypes.js +0 -2
- package/src/common/IdGeneration/getSimpleId.d.ts +0 -4
- package/src/common/IdGeneration/getSimpleId.js +0 -16
- package/src/common/IdGeneration/index.js +0 -17
- package/src/common/ItemRelationshipInfoTypes.js +0 -20
- package/src/common/ItemRelationships/ItemRelationshipValidation.d.ts +0 -10
- package/src/common/ItemRelationships/ItemRelationshipValidation.js +0 -43
- package/src/common/ItemRelationships/index.js +0 -17
- package/src/common/Logging/Utils.d.ts +0 -10
- package/src/common/Logging/Utils.js +0 -33
- package/src/common/Logging/index.js +0 -17
- package/src/common/Routing.d.ts +0 -25
- package/src/common/Routing.js +0 -102
- package/src/common/SearchTypes.d.ts +0 -98
- package/src/common/SearchTypes.js +0 -39
- package/src/common/SearchUtils.d.ts +0 -22
- package/src/common/SearchUtils.js +0 -134
- package/src/common/SearchValidation.js +0 -90
- package/src/common/Storyboarding/Types.d.ts +0 -25
- package/src/common/Storyboarding/Types.js +0 -2
- package/src/common/StringTransformers.js +0 -36
- package/src/common/Testing/CLI.d.ts +0 -2
- package/src/common/Testing/CLI.js +0 -56
- package/src/common/Testing/Types.js +0 -19
- package/src/common/Testing/Utils.js +0 -334
- package/src/common/Testing/index.d.ts +0 -2
- package/src/common/Testing/index.js +0 -18
- package/src/common/TypeInfoDataItemUtils.d.ts +0 -10
- package/src/common/TypeInfoDataItemUtils.js +0 -55
- package/src/common/TypeInfoORM/Types.d.ts +0 -76
- package/src/common/TypeInfoORM/Types.js +0 -55
- package/src/common/TypeInfoORM/index.js +0 -17
- package/src/common/TypeParsing/Constants.d.ts +0 -1
- package/src/common/TypeParsing/Constants.js +0 -4
- package/src/common/TypeParsing/ParsingUtils/Constants.js +0 -8
- package/src/common/TypeParsing/ParsingUtils/checkType.js +0 -46
- package/src/common/TypeParsing/ParsingUtils/checkUnionType.js +0 -15
- package/src/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +0 -2
- package/src/common/TypeParsing/ParsingUtils/extractCommentTags.js +0 -105
- package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +0 -6
- package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.js +0 -42
- package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +0 -8
- package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.js +0 -14
- package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +0 -5
- package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.js +0 -27
- package/src/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +0 -3
- package/src/common/TypeParsing/ParsingUtils/getTypeInfo.js +0 -27
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.js +0 -44
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +0 -4
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.js +0 -28
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +0 -4
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.js +0 -105
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +0 -4
- package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.js +0 -20
- package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +0 -3
- package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.js +0 -17
- package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +0 -4
- package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.js +0 -49
- package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +0 -2
- package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.js +0 -24
- package/src/common/TypeParsing/TypeInfo.js +0 -13
- package/src/common/TypeParsing/TypeMapping.js +0 -32
- package/src/common/TypeParsing/TypeParsing.d.ts +0 -5
- package/src/common/TypeParsing/TypeParsing.js +0 -39
- package/src/common/TypeParsing/Utils.js +0 -94
- package/src/common/TypeParsing/Validation.js +0 -340
- package/src/common/TypeParsing/index.d.ts +0 -5
- package/src/common/TypeParsing/index.js +0 -44
- package/src/common/index.d.ts +0 -11
- package/src/common/index.js +0 -47
- package/src/iac/SimpleCFT.js +0 -82
- package/src/iac/index.d.ts +0 -9
- package/src/iac/index.js +0 -48
- package/src/iac/packs/auth/user-management.d.ts +0 -14
- package/src/iac/packs/auth/user-management.js +0 -302
- package/src/iac/packs/auth.d.ts +0 -19
- package/src/iac/packs/auth.js +0 -47
- package/src/iac/packs/build/utils.d.ts +0 -100
- package/src/iac/packs/build/utils.js +0 -23
- package/src/iac/packs/build.d.ts +0 -29
- package/src/iac/packs/build.js +0 -217
- package/src/iac/packs/cdn.d.ts +0 -12
- package/src/iac/packs/cdn.js +0 -113
- package/src/iac/packs/cloud-function.d.ts +0 -17
- package/src/iac/packs/cloud-function.js +0 -69
- package/src/iac/packs/database.js +0 -27
- package/src/iac/packs/dns.js +0 -26
- package/src/iac/packs/file-storage.d.ts +0 -14
- package/src/iac/packs/file-storage.js +0 -71
- package/src/iac/packs/gateway.d.ts +0 -27
- package/src/iac/packs/gateway.js +0 -342
- package/src/iac/packs/index.d.ts +0 -11
- package/src/iac/packs/index.js +0 -27
- package/src/iac/packs/repo.d.ts +0 -10
- package/src/iac/packs/repo.js +0 -34
- package/src/iac/packs/ssl-certificate.d.ts +0 -10
- package/src/iac/packs/ssl-certificate.js +0 -36
- package/src/iac/types/Constants.js +0 -20
- package/src/iac/types/IaCTypes.js +0 -14
- package/src/iac/types/Renderers.d.ts +0 -12
- package/src/iac/types/Renderers.js +0 -112
- package/src/iac/types/Types.d.ts +0 -37
- package/src/iac/types/Types.js +0 -2
- package/src/iac/types/Utils.d.ts +0 -2
- package/src/iac/types/Utils.js +0 -60
- package/src/iac/types/generate.js +0 -31
- package/src/iac/utils/index.js +0 -105
- package/src/iac/utils/patch-utils.d.ts +0 -15
- package/src/iac/utils/patch-utils.js +0 -62
- package/src/index.d.ts +0 -178
- package/src/index.js +0 -214
- /package/{src/api → api}/ORM/drivers/common/index.d.ts +0 -0
- /package/{src/common → common}/IdGeneration/index.d.ts +0 -0
- /package/{src/common → common}/ItemRelationships/index.d.ts +0 -0
- /package/{src/common → common}/Logging/index.d.ts +0 -0
- /package/{src/common → common}/TypeInfoORM/index.d.ts +0 -0
- /package/{src/iac → iac}/types/CloudFormationResourceSpecification.d.ts +0 -0
- /package/{src/iac → iac}/types/IaCTypes.d.ts +0 -0
- /package/{src/iac → iac}/types/generate.d.ts +0 -0
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { promises } from 'fs';
|
|
3
|
+
import Path from 'path';
|
|
4
|
+
import { pathToFileURL } from 'url';
|
|
5
|
+
import fastGlob from 'fast-glob';
|
|
6
|
+
import picocolors from 'picocolors';
|
|
7
|
+
|
|
8
|
+
var importModule = async (modulePath) => {
|
|
9
|
+
const moduleUrl = pathToFileURL(modulePath);
|
|
10
|
+
return import(moduleUrl.href);
|
|
11
|
+
};
|
|
12
|
+
var stringifyOutput = (value) => JSON.stringify(
|
|
13
|
+
value,
|
|
14
|
+
function(_key, value2) {
|
|
15
|
+
return typeof value2 === "function" ? "[Function]" : value2;
|
|
16
|
+
},
|
|
17
|
+
2
|
|
18
|
+
);
|
|
19
|
+
var OPERATIONS = {
|
|
20
|
+
["===" /* EQUALS */]: (a, b) => a === b,
|
|
21
|
+
["!==" /* NOT_EQUALS */]: (a, b) => a !== b,
|
|
22
|
+
["IN" /* IN */]: (a, b) => Array.isArray(b) && b.includes(a),
|
|
23
|
+
["BETWEEN" /* BETWEEN */]: (a, b) => {
|
|
24
|
+
if (Array.isArray(b) && b.length === 2 && typeof b[0] === "number" && typeof b[1] === "number") {
|
|
25
|
+
return typeof a === "number" && a >= b[0] && a <= b[1];
|
|
26
|
+
}
|
|
27
|
+
throw new Error("BETWEEN requires an array of two numbers as expectation.");
|
|
28
|
+
},
|
|
29
|
+
["CONTAINS" /* CONTAINS */]: (a, b) => typeof a === "string" && typeof b === "string" && a.includes(b),
|
|
30
|
+
["REGEX" /* REGEX */]: (a, b) => {
|
|
31
|
+
if (typeof b === "object" && b !== null && "pattern" in b) {
|
|
32
|
+
const { pattern, flags } = b;
|
|
33
|
+
try {
|
|
34
|
+
const regex = new RegExp(pattern, flags);
|
|
35
|
+
return typeof a === "string" && regex.test(a);
|
|
36
|
+
} catch (err) {
|
|
37
|
+
throw new Error(`Invalid REGEX: ${err.message}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
throw new Error(
|
|
41
|
+
"REGEX requires an expectation with 'pattern' and optional 'flags'."
|
|
42
|
+
);
|
|
43
|
+
},
|
|
44
|
+
["EXT_REGEX" /* EXT_REGEX */]: (a, b) => {
|
|
45
|
+
if (typeof b === "object" && b !== null && "pattern" in b) {
|
|
46
|
+
const { pattern, flags } = b;
|
|
47
|
+
const buildRegexFromPattern = (pattern2, flags2 = "") => {
|
|
48
|
+
if (!Array.isArray(pattern2)) {
|
|
49
|
+
throw new Error("EXT_REGEX pattern must be an array of objects.");
|
|
50
|
+
}
|
|
51
|
+
const regexBody = pattern2.map(({ value, escaped }) => {
|
|
52
|
+
if (typeof value !== "string") {
|
|
53
|
+
throw new Error(
|
|
54
|
+
"Each pattern element must have a string 'value'."
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
return escaped ? value.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&") : value;
|
|
58
|
+
}).join("");
|
|
59
|
+
return new RegExp(regexBody, flags2);
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
const regex = buildRegexFromPattern(pattern, flags);
|
|
63
|
+
return typeof a === "string" && regex.test(a);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
throw new Error(`Invalid EXT_REGEX: ${err.message}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
throw new Error(
|
|
69
|
+
"EXT_REGEX requires an expectation with 'pattern' as an array of PatternElement and optional 'flags'."
|
|
70
|
+
);
|
|
71
|
+
},
|
|
72
|
+
["DEEP_EQUALS" /* DEEP_EQUALS */]: (a, b) => {
|
|
73
|
+
if (typeof a === "object" && typeof b === "object" && a !== null && b !== null) {
|
|
74
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
},
|
|
78
|
+
["ARRAY_CONTAINS" /* ARRAY_CONTAINS */]: (a, b) => {
|
|
79
|
+
if (Array.isArray(a)) {
|
|
80
|
+
return a.includes(b);
|
|
81
|
+
}
|
|
82
|
+
throw new Error("ARRAY_CONTAINS requires an array as the first argument.");
|
|
83
|
+
},
|
|
84
|
+
["ARRAY_EQUALS" /* ARRAY_EQUALS */]: (a, b) => {
|
|
85
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
86
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
87
|
+
}
|
|
88
|
+
throw new Error("ARRAY_EQUALS requires two arrays as arguments.");
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
var compare = (result, expectation, operation = "===" /* EQUALS */) => {
|
|
92
|
+
const op = OPERATIONS[operation];
|
|
93
|
+
if (!op) {
|
|
94
|
+
throw new Error(`Unsupported operation: ${operation}`);
|
|
95
|
+
}
|
|
96
|
+
return op(result, expectation);
|
|
97
|
+
};
|
|
98
|
+
var getResolvedConditions = async (testFilePath, targetTestIndex, targetTestExport, conditions, isSetup = false) => {
|
|
99
|
+
if (Array.isArray(conditions)) {
|
|
100
|
+
return conditions;
|
|
101
|
+
} else if (typeof conditions === "object" && conditions !== null) {
|
|
102
|
+
const { file, export: targetConditionExport } = conditions;
|
|
103
|
+
const modulePath = Path.resolve(Path.dirname(testFilePath), file);
|
|
104
|
+
const targetModule = await importModule(modulePath);
|
|
105
|
+
const conditionArray = targetModule[targetConditionExport];
|
|
106
|
+
if (Array.isArray(conditionArray)) {
|
|
107
|
+
return conditionArray;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
throw new Error(
|
|
111
|
+
`Invalid conditions for TEST${isSetup ? " SETUP" : ""} ${targetTestIndex + 1} (${targetTestExport}) in ${testFilePath}`
|
|
112
|
+
);
|
|
113
|
+
};
|
|
114
|
+
var getSetupInstance = async (testFilePath, targetTestIndex, targetTestExport, test, module) => {
|
|
115
|
+
const { setup } = test;
|
|
116
|
+
if (!setup) return module;
|
|
117
|
+
const { conditions: baseConditions, export: targetSetupExport } = setup;
|
|
118
|
+
const setupFunction = module[targetSetupExport];
|
|
119
|
+
const conditions = await getResolvedConditions(
|
|
120
|
+
testFilePath,
|
|
121
|
+
targetTestIndex,
|
|
122
|
+
targetTestExport,
|
|
123
|
+
baseConditions,
|
|
124
|
+
true
|
|
125
|
+
);
|
|
126
|
+
if (typeof setupFunction !== "function") {
|
|
127
|
+
throw new Error(`Setup export "${setup.export}" is not a function.`);
|
|
128
|
+
}
|
|
129
|
+
return setup.instantiate ? new setupFunction(...conditions) : await setupFunction(...conditions);
|
|
130
|
+
};
|
|
131
|
+
var getTestFunction = async (testFilePath, file, targetTestIndex, test, targetModule) => {
|
|
132
|
+
const { export: targetExport } = test;
|
|
133
|
+
if (!targetExport) {
|
|
134
|
+
throw new Error(
|
|
135
|
+
`Invalid test export (${targetExport}) for TEST ${targetTestIndex + 1} in ${testFilePath}`
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
const instance = await getSetupInstance(
|
|
139
|
+
testFilePath,
|
|
140
|
+
targetTestIndex,
|
|
141
|
+
targetExport,
|
|
142
|
+
test,
|
|
143
|
+
targetModule
|
|
144
|
+
);
|
|
145
|
+
const testFunction = instance[targetExport];
|
|
146
|
+
if (typeof testFunction !== "function") {
|
|
147
|
+
throw new Error(
|
|
148
|
+
`Export "${targetExport}" from "${file}", declared in TEST ${targetTestIndex + 1}, is not a function.`
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
return testFunction;
|
|
152
|
+
};
|
|
153
|
+
var getTestConfig = async (testFilePath) => {
|
|
154
|
+
const testConfig = JSON.parse(
|
|
155
|
+
await promises.readFile(testFilePath, "utf8")
|
|
156
|
+
);
|
|
157
|
+
return testConfig;
|
|
158
|
+
};
|
|
159
|
+
var getResolvedTestConfig = async (testFilePath) => {
|
|
160
|
+
const { file, tests } = await getTestConfig(testFilePath);
|
|
161
|
+
if (!file) {
|
|
162
|
+
throw new Error(`Invalid test configuration in ${testFilePath}`);
|
|
163
|
+
}
|
|
164
|
+
const modulePath = Path.resolve(Path.dirname(testFilePath), file);
|
|
165
|
+
const targetModule = await importModule(modulePath);
|
|
166
|
+
return {
|
|
167
|
+
file,
|
|
168
|
+
targetModule,
|
|
169
|
+
tests
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
var mergeTestResults = (...results) => results.reduce(
|
|
173
|
+
({
|
|
174
|
+
messages: accMessages = [],
|
|
175
|
+
generated: accGenerated = [],
|
|
176
|
+
passes: accPasses = [],
|
|
177
|
+
failures: accFailures = [],
|
|
178
|
+
errors: accErrors = []
|
|
179
|
+
}, {
|
|
180
|
+
messages = [],
|
|
181
|
+
generated = [],
|
|
182
|
+
passes = [],
|
|
183
|
+
failures = [],
|
|
184
|
+
errors = []
|
|
185
|
+
}) => ({
|
|
186
|
+
messages: [...accMessages, ...messages],
|
|
187
|
+
generated: [...accGenerated, ...generated],
|
|
188
|
+
passes: [...accPasses, ...passes],
|
|
189
|
+
failures: [...accFailures, ...failures],
|
|
190
|
+
errors: [...accErrors, ...errors]
|
|
191
|
+
}),
|
|
192
|
+
{ messages: [], passes: [], failures: [], errors: [] }
|
|
193
|
+
);
|
|
194
|
+
var runTest = async (testFilePath, testFunction, test, index, targetExport, report) => {
|
|
195
|
+
const {
|
|
196
|
+
conditions: baseConditions,
|
|
197
|
+
expectation,
|
|
198
|
+
operation,
|
|
199
|
+
expectUndefined
|
|
200
|
+
} = test;
|
|
201
|
+
const conditions = await getResolvedConditions(
|
|
202
|
+
testFilePath,
|
|
203
|
+
index,
|
|
204
|
+
targetExport,
|
|
205
|
+
baseConditions
|
|
206
|
+
);
|
|
207
|
+
try {
|
|
208
|
+
const result = await testFunction(...conditions);
|
|
209
|
+
const passed = expectUndefined || compare(result, expectation, operation);
|
|
210
|
+
if (passed) {
|
|
211
|
+
report({
|
|
212
|
+
passes: [`Test ${index + 1} (${targetExport})`]
|
|
213
|
+
});
|
|
214
|
+
} else {
|
|
215
|
+
report({
|
|
216
|
+
failures: [
|
|
217
|
+
`Test ${index + 1} (${targetExport}):
|
|
218
|
+
|
|
219
|
+
Result:
|
|
220
|
+
|
|
221
|
+
${stringifyOutput(result)}`
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
} catch (err) {
|
|
226
|
+
report({
|
|
227
|
+
errors: [
|
|
228
|
+
`Test ${index + 1} (${targetExport}):
|
|
229
|
+
|
|
230
|
+
Error:
|
|
231
|
+
|
|
232
|
+
${err.message}`
|
|
233
|
+
]
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
var generateTestsForFile = async (testFilePath, report) => {
|
|
238
|
+
try {
|
|
239
|
+
const { file, targetModule, tests } = await getResolvedTestConfig(testFilePath);
|
|
240
|
+
report({
|
|
241
|
+
messages: [`Generating expectations for tests in ${testFilePath}`]
|
|
242
|
+
});
|
|
243
|
+
const generatedTests = [];
|
|
244
|
+
let hasNewExpectations = false;
|
|
245
|
+
for (let i = 0; i < tests.length; i++) {
|
|
246
|
+
const test = tests[i];
|
|
247
|
+
const {
|
|
248
|
+
export: targetExport,
|
|
249
|
+
conditions: baseConditions,
|
|
250
|
+
expectation,
|
|
251
|
+
operation,
|
|
252
|
+
expectUndefined
|
|
253
|
+
} = test;
|
|
254
|
+
const conditions = await getResolvedConditions(
|
|
255
|
+
testFilePath,
|
|
256
|
+
i,
|
|
257
|
+
targetExport,
|
|
258
|
+
baseConditions
|
|
259
|
+
);
|
|
260
|
+
if (expectation !== void 0 || expectUndefined) {
|
|
261
|
+
generatedTests.push(test);
|
|
262
|
+
} else {
|
|
263
|
+
const testFunction = await getTestFunction(
|
|
264
|
+
testFilePath,
|
|
265
|
+
file,
|
|
266
|
+
i,
|
|
267
|
+
test,
|
|
268
|
+
targetModule
|
|
269
|
+
);
|
|
270
|
+
const result = await testFunction(...conditions);
|
|
271
|
+
report({
|
|
272
|
+
generated: [
|
|
273
|
+
`Expectation for TEST ${i + 1} (${targetExport}):
|
|
274
|
+
|
|
275
|
+
${stringifyOutput(result)}`
|
|
276
|
+
]
|
|
277
|
+
});
|
|
278
|
+
generatedTests.push({
|
|
279
|
+
...test,
|
|
280
|
+
expectation: result,
|
|
281
|
+
operation: operation || "===" /* EQUALS */
|
|
282
|
+
});
|
|
283
|
+
hasNewExpectations = true;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (hasNewExpectations) {
|
|
287
|
+
const updatedTestConfig = { file, tests: generatedTests };
|
|
288
|
+
await promises.writeFile(
|
|
289
|
+
testFilePath,
|
|
290
|
+
JSON.stringify(updatedTestConfig, null, 2)
|
|
291
|
+
);
|
|
292
|
+
report({ messages: [`Updated test file saved to ${testFilePath}`] });
|
|
293
|
+
} else {
|
|
294
|
+
report({
|
|
295
|
+
messages: [`No new expectations were generated for ${testFilePath}`]
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
} catch (err) {
|
|
299
|
+
report({
|
|
300
|
+
errors: [`Error processing test file ${testFilePath}:
|
|
301
|
+
|
|
302
|
+
${err.message}`]
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
var runTestsForFile = async (testFilePath, report) => {
|
|
307
|
+
try {
|
|
308
|
+
const { file, targetModule, tests } = await getResolvedTestConfig(testFilePath);
|
|
309
|
+
report({
|
|
310
|
+
messages: [`Running tests from ${testFilePath}`]
|
|
311
|
+
});
|
|
312
|
+
for (const [index, test] of tests.entries()) {
|
|
313
|
+
const { export: targetExport } = test;
|
|
314
|
+
const testFunction = await getTestFunction(
|
|
315
|
+
testFilePath,
|
|
316
|
+
file,
|
|
317
|
+
index,
|
|
318
|
+
test,
|
|
319
|
+
targetModule
|
|
320
|
+
);
|
|
321
|
+
await runTest(
|
|
322
|
+
testFilePath,
|
|
323
|
+
testFunction,
|
|
324
|
+
test,
|
|
325
|
+
index,
|
|
326
|
+
targetExport,
|
|
327
|
+
report
|
|
328
|
+
);
|
|
329
|
+
}
|
|
330
|
+
} catch (err) {
|
|
331
|
+
report({
|
|
332
|
+
errors: [`Error processing test file ${testFilePath}: ${err.message}`]
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
var executeTestingCommand = async (testFiles, generateMode = false, report) => {
|
|
337
|
+
const completeMessage = generateMode ? "Test generation complete." : "Testing complete.";
|
|
338
|
+
try {
|
|
339
|
+
for (const testFile of testFiles) {
|
|
340
|
+
const resolvedTestFile = Path.resolve(testFile);
|
|
341
|
+
if (generateMode) {
|
|
342
|
+
await generateTestsForFile(resolvedTestFile, report);
|
|
343
|
+
} else {
|
|
344
|
+
await runTestsForFile(resolvedTestFile, report);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
report({
|
|
348
|
+
messages: [completeMessage]
|
|
349
|
+
});
|
|
350
|
+
} catch (err) {
|
|
351
|
+
report({ errors: [`Error running tests:
|
|
352
|
+
|
|
353
|
+
${err.message}`] });
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
var main = async () => {
|
|
357
|
+
const args = process.argv.slice(2);
|
|
358
|
+
const generateMode = args.includes("--generate");
|
|
359
|
+
const testPaths = args.filter((arg) => arg !== "--generate");
|
|
360
|
+
console.log(`${picocolors.bgMagenta(picocolors.whiteBright(" VEST "))}
|
|
361
|
+
`);
|
|
362
|
+
if (testPaths.length === 0) {
|
|
363
|
+
console.error("Usage: vest [--generate] <test-directory-path>");
|
|
364
|
+
process.exit(1);
|
|
365
|
+
}
|
|
366
|
+
const testFiles = await fastGlob(testPaths);
|
|
367
|
+
if (testFiles.length === 0) {
|
|
368
|
+
console.warn(`No test files found in ${testPaths.join(", ")}`);
|
|
369
|
+
process.exit(0);
|
|
370
|
+
}
|
|
371
|
+
let results = {
|
|
372
|
+
messages: [],
|
|
373
|
+
passes: [],
|
|
374
|
+
failures: [],
|
|
375
|
+
errors: []
|
|
376
|
+
};
|
|
377
|
+
await executeTestingCommand(
|
|
378
|
+
testFiles,
|
|
379
|
+
generateMode,
|
|
380
|
+
(latestResults) => {
|
|
381
|
+
const {
|
|
382
|
+
messages = [],
|
|
383
|
+
generated: generated2 = [],
|
|
384
|
+
passes: passes2 = [],
|
|
385
|
+
failures: failures2 = [],
|
|
386
|
+
errors: errors2 = []
|
|
387
|
+
} = latestResults;
|
|
388
|
+
results = mergeTestResults(results, latestResults);
|
|
389
|
+
messages.forEach(
|
|
390
|
+
(message) => console.log(`${picocolors.blueBright("MESSAGE:")} ${message}
|
|
391
|
+
`)
|
|
392
|
+
);
|
|
393
|
+
generated2.forEach(
|
|
394
|
+
(generated3) => console.log(`${picocolors.greenBright("GENERATED:")} ${generated3}
|
|
395
|
+
`)
|
|
396
|
+
);
|
|
397
|
+
passes2.forEach(
|
|
398
|
+
(pass) => console.log(`${picocolors.greenBright("PASSED:")} ${pass}
|
|
399
|
+
`)
|
|
400
|
+
);
|
|
401
|
+
failures2.forEach(
|
|
402
|
+
(failure) => console.error(`${picocolors.redBright("FAILED:")} ${failure}
|
|
403
|
+
`)
|
|
404
|
+
);
|
|
405
|
+
errors2.forEach(
|
|
406
|
+
(error) => console.error(
|
|
407
|
+
`${picocolors.redBright(picocolors.italic("ERROR:"))} ${error}
|
|
408
|
+
`
|
|
409
|
+
)
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
);
|
|
413
|
+
const { generated = [], passes = [], failures = [], errors = [] } = results;
|
|
414
|
+
const exitValue = failures.length + errors.length;
|
|
415
|
+
if (generateMode) {
|
|
416
|
+
console.log(`${picocolors.greenBright("GENERATED:")} ${generated.length}
|
|
417
|
+
${picocolors.redBright(picocolors.italic("ERRORS:"))} ${errors.length}
|
|
418
|
+
`);
|
|
419
|
+
} else {
|
|
420
|
+
console.log(`${picocolors.greenBright("PASSES:")} ${passes.length}
|
|
421
|
+
${picocolors.redBright("FAILURES:")} ${failures.length}
|
|
422
|
+
${picocolors.redBright(picocolors.italic("ERRORS:"))} ${errors.length}
|
|
423
|
+
`);
|
|
424
|
+
}
|
|
425
|
+
process.exit(exitValue);
|
|
426
|
+
};
|
|
427
|
+
main().catch((error) => {
|
|
428
|
+
console.error(error);
|
|
429
|
+
process.exit(1);
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
export { main };
|
|
@@ -1,23 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Operations used for comparison
|
|
3
|
-
|
|
2
|
+
* Operations used for comparison during tests.
|
|
3
|
+
*/
|
|
4
4
|
export declare enum TestComparisonOperation {
|
|
5
|
+
/**
|
|
6
|
+
* Strict equality comparison.
|
|
7
|
+
* */
|
|
5
8
|
EQUALS = "===",
|
|
9
|
+
/**
|
|
10
|
+
* Strict inequality comparison.
|
|
11
|
+
* */
|
|
6
12
|
NOT_EQUALS = "!==",
|
|
13
|
+
/**
|
|
14
|
+
* Value is contained in expectation array.
|
|
15
|
+
* */
|
|
7
16
|
IN = "IN",
|
|
17
|
+
/**
|
|
18
|
+
* Array contains the expectation value.
|
|
19
|
+
* */
|
|
8
20
|
ARRAY_CONTAINS = "ARRAY_CONTAINS",
|
|
21
|
+
/**
|
|
22
|
+
* Numeric value is between two bounds.
|
|
23
|
+
* */
|
|
9
24
|
BETWEEN = "BETWEEN",
|
|
25
|
+
/**
|
|
26
|
+
* String contains another string.
|
|
27
|
+
* */
|
|
10
28
|
CONTAINS = "CONTAINS",
|
|
29
|
+
/**
|
|
30
|
+
* Regex match against a pattern.
|
|
31
|
+
* */
|
|
11
32
|
REGEX = "REGEX",
|
|
33
|
+
/**
|
|
34
|
+
* Extended regex match with explicit pattern elements.
|
|
35
|
+
* */
|
|
12
36
|
EXT_REGEX = "EXT_REGEX",
|
|
37
|
+
/**
|
|
38
|
+
* Deep equality using JSON stringification.
|
|
39
|
+
* */
|
|
13
40
|
DEEP_EQUALS = "DEEP_EQUALS",
|
|
41
|
+
/**
|
|
42
|
+
* Array equality using JSON stringification.
|
|
43
|
+
* */
|
|
14
44
|
ARRAY_EQUALS = "ARRAY_EQUALS"
|
|
15
45
|
}
|
|
16
46
|
/**
|
|
17
47
|
* A pattern definition object for use with extended regex expectations.
|
|
18
48
|
* */
|
|
19
49
|
export type PatternElement = {
|
|
50
|
+
/**
|
|
51
|
+
* Literal pattern segment value.
|
|
52
|
+
* */
|
|
20
53
|
value: string;
|
|
54
|
+
/**
|
|
55
|
+
* Whether to escape regex characters in the value.
|
|
56
|
+
* */
|
|
21
57
|
escaped?: boolean;
|
|
22
58
|
};
|
|
23
59
|
/**
|
|
@@ -28,7 +64,13 @@ export type PatternElement = {
|
|
|
28
64
|
* Used when a `TestCondition` `operation` is `TestComparisonOperation.EXT_REGEX`.
|
|
29
65
|
* */
|
|
30
66
|
export type EXTRegexExpectation = {
|
|
67
|
+
/**
|
|
68
|
+
* Pattern elements to build the regex.
|
|
69
|
+
* */
|
|
31
70
|
pattern: PatternElement[];
|
|
71
|
+
/**
|
|
72
|
+
* Regex flags to apply.
|
|
73
|
+
* */
|
|
32
74
|
flags?: string;
|
|
33
75
|
};
|
|
34
76
|
/**
|
|
@@ -37,31 +79,64 @@ export type EXTRegexExpectation = {
|
|
|
37
79
|
* Used when a `TestCondition` `operation` is `TestComparisonOperation.REGEX`.
|
|
38
80
|
* */
|
|
39
81
|
export type RegexExpectation = {
|
|
82
|
+
/**
|
|
83
|
+
* Regex pattern string.
|
|
84
|
+
* */
|
|
40
85
|
pattern: string;
|
|
86
|
+
/**
|
|
87
|
+
* Regex flags to apply.
|
|
88
|
+
* */
|
|
41
89
|
flags?: string;
|
|
42
90
|
};
|
|
43
91
|
/**
|
|
44
92
|
* A configuration used to acquire conditions from code instead of a JSON array.
|
|
45
93
|
* */
|
|
46
94
|
export type ConditionConfig = {
|
|
95
|
+
/**
|
|
96
|
+
* Relative file path containing the conditions export.
|
|
97
|
+
* */
|
|
47
98
|
file: string;
|
|
99
|
+
/**
|
|
100
|
+
* Export name that contains the conditions array.
|
|
101
|
+
* */
|
|
48
102
|
export: string;
|
|
49
103
|
};
|
|
50
104
|
/**
|
|
51
105
|
* Preparation for a test when some setup is required or a class needs to be instantiated.
|
|
52
106
|
* */
|
|
53
107
|
export type TestSetup = {
|
|
108
|
+
/**
|
|
109
|
+
* Conditions to use for the setup function or constructor.
|
|
110
|
+
* */
|
|
54
111
|
conditions: unknown[] | ConditionConfig;
|
|
112
|
+
/**
|
|
113
|
+
* Export name to call or instantiate for setup.
|
|
114
|
+
* */
|
|
55
115
|
export: string;
|
|
116
|
+
/**
|
|
117
|
+
* Whether to use `new` with the setup export.
|
|
118
|
+
* */
|
|
56
119
|
instantiate?: boolean;
|
|
57
120
|
};
|
|
58
121
|
/**
|
|
59
122
|
* The basis for a test.
|
|
60
123
|
* */
|
|
61
124
|
export type BaseTest = {
|
|
125
|
+
/**
|
|
126
|
+
* Export name for the test function.
|
|
127
|
+
* */
|
|
62
128
|
export: string;
|
|
129
|
+
/**
|
|
130
|
+
* Optional setup configuration.
|
|
131
|
+
* */
|
|
63
132
|
setup?: TestSetup;
|
|
133
|
+
/**
|
|
134
|
+
* Conditions to pass to the test function.
|
|
135
|
+
* */
|
|
64
136
|
conditions: unknown[] | ConditionConfig;
|
|
137
|
+
/**
|
|
138
|
+
* Allow missing expectation and treat undefined as pass.
|
|
139
|
+
* */
|
|
65
140
|
expectUndefined?: boolean;
|
|
66
141
|
};
|
|
67
142
|
/**
|
|
@@ -93,25 +168,49 @@ export type Test = BaseTest & ({
|
|
|
93
168
|
expectation: unknown[];
|
|
94
169
|
});
|
|
95
170
|
/**
|
|
96
|
-
* A configuration for a test. Designed to be used in JSON
|
|
97
|
-
|
|
171
|
+
* A configuration for a test. Designed to be used in JSON spec files.
|
|
172
|
+
*/
|
|
98
173
|
export type TestConfig = {
|
|
174
|
+
/**
|
|
175
|
+
* Relative module path containing test exports.
|
|
176
|
+
* */
|
|
99
177
|
file: string;
|
|
178
|
+
/**
|
|
179
|
+
* Tests to execute for the module.
|
|
180
|
+
* */
|
|
100
181
|
tests: Test[];
|
|
101
182
|
};
|
|
102
183
|
/**
|
|
103
184
|
* A resolved test configuration with the module and tests.
|
|
104
185
|
* */
|
|
105
186
|
export type ResolvedTestConfig = {
|
|
187
|
+
/**
|
|
188
|
+
* Required module with test exports.
|
|
189
|
+
* */
|
|
106
190
|
targetModule: any;
|
|
107
191
|
} & TestConfig;
|
|
108
192
|
/**
|
|
109
193
|
* The results from running one or more tests.
|
|
110
194
|
* */
|
|
111
195
|
export type TestResults = {
|
|
196
|
+
/**
|
|
197
|
+
* Informational messages.
|
|
198
|
+
* */
|
|
112
199
|
messages?: string[];
|
|
200
|
+
/**
|
|
201
|
+
* Generated expectation messages.
|
|
202
|
+
* */
|
|
113
203
|
generated?: string[];
|
|
204
|
+
/**
|
|
205
|
+
* Passed test messages.
|
|
206
|
+
* */
|
|
114
207
|
passes?: string[];
|
|
208
|
+
/**
|
|
209
|
+
* Failed test messages.
|
|
210
|
+
* */
|
|
115
211
|
failures?: string[];
|
|
212
|
+
/**
|
|
213
|
+
* Error messages.
|
|
214
|
+
* */
|
|
116
215
|
errors?: string[];
|
|
117
216
|
};
|