@aws-amplify/data-schema 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{lib-esm/src → dist/cjs}/Authorization.js +149 -31
- package/dist/cjs/Authorization.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/ClientSchema.js +3 -1
- package/dist/cjs/ClientSchema.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/CombineSchema.js +3 -2
- package/dist/cjs/CombineSchema.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/CustomOperation.js +7 -3
- package/dist/cjs/CustomOperation.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/CustomType.js +3 -1
- package/dist/cjs/CustomType.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/EnumType.js +3 -1
- package/dist/cjs/EnumType.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/Handler.js +3 -1
- package/dist/cjs/Handler.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/MappedTypes/CustomOperations.js +3 -1
- package/dist/cjs/MappedTypes/CustomOperations.js.map +1 -0
- package/dist/cjs/MappedTypes/ExtractNonModelTypes.js +4 -0
- package/dist/cjs/MappedTypes/ExtractNonModelTypes.js.map +1 -0
- package/dist/cjs/MappedTypes/ImplicitFieldInjector.js +4 -0
- package/dist/cjs/MappedTypes/ImplicitFieldInjector.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/MappedTypes/MapSecondaryIndexes.js +3 -1
- package/dist/cjs/MappedTypes/MapSecondaryIndexes.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/MappedTypes/ModelMetadata.js +3 -1
- package/dist/cjs/MappedTypes/ModelMetadata.js.map +1 -0
- package/dist/cjs/MappedTypes/ResolveFieldProperties.js +4 -0
- package/dist/cjs/MappedTypes/ResolveFieldProperties.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/MappedTypes/ResolveSchema.js +3 -1
- package/dist/cjs/MappedTypes/ResolveSchema.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/ModelField.js +8 -3
- package/dist/cjs/ModelField.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/ModelIndex.js +3 -1
- package/dist/cjs/ModelIndex.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/ModelRelationalField.js +7 -10
- package/dist/cjs/ModelRelationalField.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/ModelSchema.js +10 -5
- package/dist/cjs/ModelSchema.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/ModelType.js +8 -3
- package/dist/cjs/ModelType.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/RefType.js +8 -5
- package/dist/cjs/RefType.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/SchemaProcessor.js +15 -61
- package/dist/cjs/SchemaProcessor.js.map +1 -0
- package/{lib-esm/src/index.js → dist/cjs/a.js} +4 -4
- package/dist/cjs/a.js.map +1 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/internals/index.js +3 -1
- package/dist/cjs/internals/index.js.map +1 -0
- package/dist/cjs/runtime/addSchemaToClient.js +17 -0
- package/dist/cjs/runtime/addSchemaToClient.js.map +1 -0
- package/dist/cjs/runtime/addSchemaToClientWithInstance.js +22 -0
- package/dist/cjs/runtime/addSchemaToClientWithInstance.js.map +1 -0
- package/dist/cjs/runtime/bridge-types.js +15 -0
- package/dist/cjs/runtime/bridge-types.js.map +1 -0
- package/dist/cjs/runtime/client/index.js +17 -0
- package/dist/cjs/runtime/client/index.js.map +1 -0
- package/dist/cjs/runtime/client/index.v3.js +7 -0
- package/dist/cjs/runtime/client/index.v3.js.map +1 -0
- package/dist/cjs/runtime/index.js +13 -0
- package/dist/cjs/runtime/index.js.map +1 -0
- package/dist/cjs/runtime/index.v3.js +13 -0
- package/dist/cjs/runtime/index.v3.js.map +1 -0
- package/dist/cjs/runtime/internals/APIClient.js +740 -0
- package/dist/cjs/runtime/internals/APIClient.js.map +1 -0
- package/dist/cjs/runtime/internals/clientUtils.js +29 -0
- package/dist/cjs/runtime/internals/clientUtils.js.map +1 -0
- package/dist/cjs/runtime/internals/generateCustomOperationsProperty.js +49 -0
- package/dist/cjs/runtime/internals/generateCustomOperationsProperty.js.map +1 -0
- package/dist/cjs/runtime/internals/index.js +21 -0
- package/dist/cjs/runtime/internals/index.js.map +1 -0
- package/dist/cjs/runtime/internals/operations/custom.js +356 -0
- package/dist/cjs/runtime/internals/operations/custom.js.map +1 -0
- package/dist/cjs/runtime/internals/operations/get.js +62 -0
- package/dist/cjs/runtime/internals/operations/get.js.map +1 -0
- package/dist/cjs/runtime/internals/operations/indexQuery.js +75 -0
- package/dist/cjs/runtime/internals/operations/indexQuery.js.map +1 -0
- package/dist/cjs/runtime/internals/operations/list.js +74 -0
- package/dist/cjs/runtime/internals/operations/list.js.map +1 -0
- package/dist/cjs/runtime/internals/operations/observeQuery.js +121 -0
- package/dist/cjs/runtime/internals/operations/observeQuery.js.map +1 -0
- package/dist/cjs/runtime/internals/operations/subscription.js +31 -0
- package/dist/cjs/runtime/internals/operations/subscription.js.map +1 -0
- package/dist/cjs/runtime/internals/server/generateModelsProperty.js +53 -0
- package/dist/cjs/runtime/internals/server/generateModelsProperty.js.map +1 -0
- package/dist/cjs/runtime/internals/server/index.js +8 -0
- package/dist/cjs/runtime/internals/server/index.js.map +1 -0
- package/dist/cjs/runtime/internals/utils/clientProperties/generateEnumsProperty.js +21 -0
- package/dist/cjs/runtime/internals/utils/clientProperties/generateEnumsProperty.js.map +1 -0
- package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js +45 -0
- package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js.map +1 -0
- package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.js +11 -0
- package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.js.map +1 -0
- package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.js +11 -0
- package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.js.map +1 -0
- package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.js +15 -0
- package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.js.map +1 -0
- package/dist/cjs/runtime/utils/findIndexByFields.js +25 -0
- package/dist/cjs/runtime/utils/findIndexByFields.js.map +1 -0
- package/dist/cjs/runtime/utils/index.js +11 -0
- package/dist/cjs/runtime/utils/index.js.map +1 -0
- package/dist/cjs/runtime/utils/resolveOwnerFields.js +48 -0
- package/dist/cjs/runtime/utils/resolveOwnerFields.js.map +1 -0
- package/dist/cjs/runtime/utils/resolvePKFields.js +17 -0
- package/dist/cjs/runtime/utils/resolvePKFields.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/util/Brand.js +3 -1
- package/dist/cjs/util/Brand.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/util/IndexLimit.js +3 -1
- package/dist/cjs/util/IndexLimit.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/util/SpreadTuple.js +3 -1
- package/dist/cjs/util/SpreadTuple.js.map +1 -0
- package/{lib-esm/src → dist/cjs}/util/index.js +3 -1
- package/dist/cjs/util/index.js.map +1 -0
- package/{lib-esm/src → dist/esm}/Authorization.d.ts +105 -31
- package/dist/esm/Authorization.mjs +446 -0
- package/dist/esm/Authorization.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/ClientSchema.d.ts +1 -2
- package/dist/esm/ClientSchema.mjs +2 -0
- package/dist/esm/ClientSchema.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/CombineSchema.d.ts +0 -1
- package/dist/esm/CombineSchema.mjs +39 -0
- package/dist/esm/CombineSchema.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/CustomOperation.d.ts +2 -3
- package/dist/esm/CustomOperation.mjs +67 -0
- package/dist/esm/CustomOperation.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/CustomType.d.ts +0 -1
- package/dist/esm/CustomType.mjs +13 -0
- package/dist/esm/CustomType.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/EnumType.d.ts +0 -1
- package/dist/esm/EnumType.mjs +16 -0
- package/dist/esm/EnumType.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/Handler.d.ts +0 -1
- package/dist/esm/Handler.mjs +48 -0
- package/dist/esm/Handler.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/CustomOperations.d.ts +0 -1
- package/dist/esm/MappedTypes/CustomOperations.mjs +2 -0
- package/dist/esm/MappedTypes/CustomOperations.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/ExtractNonModelTypes.d.ts +0 -1
- package/dist/esm/MappedTypes/ExtractNonModelTypes.mjs +2 -0
- package/dist/esm/MappedTypes/ExtractNonModelTypes.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/ImplicitFieldInjector.d.ts +0 -1
- package/dist/esm/MappedTypes/ImplicitFieldInjector.mjs +2 -0
- package/dist/esm/MappedTypes/ImplicitFieldInjector.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/MapSecondaryIndexes.d.ts +0 -1
- package/dist/esm/MappedTypes/MapSecondaryIndexes.mjs +2 -0
- package/dist/esm/MappedTypes/MapSecondaryIndexes.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/ModelMetadata.d.ts +0 -1
- package/dist/esm/MappedTypes/ModelMetadata.mjs +2 -0
- package/dist/esm/MappedTypes/ModelMetadata.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/ResolveFieldProperties.d.ts +0 -1
- package/dist/esm/MappedTypes/ResolveFieldProperties.mjs +2 -0
- package/dist/esm/MappedTypes/ResolveFieldProperties.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/MappedTypes/ResolveSchema.d.ts +0 -1
- package/dist/esm/MappedTypes/ResolveSchema.mjs +2 -0
- package/dist/esm/MappedTypes/ResolveSchema.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/ModelField.d.ts +2 -3
- package/dist/esm/ModelField.mjs +199 -0
- package/dist/esm/ModelField.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/ModelIndex.d.ts +0 -1
- package/dist/esm/ModelIndex.mjs +33 -0
- package/dist/esm/ModelIndex.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/ModelRelationalField.d.ts +3 -4
- package/dist/esm/ModelRelationalField.mjs +88 -0
- package/dist/esm/ModelRelationalField.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/ModelSchema.d.ts +3 -4
- package/dist/esm/ModelSchema.mjs +163 -0
- package/dist/esm/ModelSchema.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/ModelType.d.ts +2 -3
- package/dist/esm/ModelType.mjs +66 -0
- package/dist/esm/ModelType.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/RefType.d.ts +2 -3
- package/dist/esm/RefType.mjs +48 -0
- package/dist/esm/RefType.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/SchemaProcessor.d.ts +0 -1
- package/dist/esm/SchemaProcessor.mjs +926 -0
- package/dist/esm/SchemaProcessor.mjs.map +1 -0
- package/{lib-esm/src/index.d.ts → dist/esm/a.d.ts} +1 -3
- package/dist/esm/a.mjs +11 -0
- package/dist/esm/a.mjs.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/internals/index.d.ts +2 -0
- package/dist/esm/internals/index.mjs +2 -0
- package/dist/esm/internals/index.mjs.map +1 -0
- package/dist/esm/runtime/addSchemaToClient.d.ts +3 -0
- package/dist/esm/runtime/addSchemaToClient.mjs +17 -0
- package/dist/esm/runtime/addSchemaToClient.mjs.map +1 -0
- package/dist/esm/runtime/addSchemaToClientWithInstance.d.ts +3 -0
- package/dist/esm/runtime/addSchemaToClientWithInstance.mjs +22 -0
- package/dist/esm/runtime/addSchemaToClientWithInstance.mjs.map +1 -0
- package/dist/esm/runtime/bridge-types.d.ts +281 -0
- package/dist/esm/runtime/bridge-types.mjs +13 -0
- package/dist/esm/runtime/bridge-types.mjs.map +1 -0
- package/dist/esm/runtime/client/index.d.ts +571 -0
- package/dist/esm/runtime/client/index.mjs +2 -0
- package/dist/esm/runtime/client/index.mjs.map +1 -0
- package/dist/esm/runtime/client/index.v3.d.ts +15 -0
- package/dist/esm/runtime/client/index.v3.mjs +2 -0
- package/dist/esm/runtime/client/index.v3.mjs.map +1 -0
- package/dist/esm/runtime/index.d.ts +4 -0
- package/dist/esm/runtime/index.mjs +4 -0
- package/dist/esm/runtime/index.mjs.map +1 -0
- package/dist/esm/runtime/index.v3.d.ts +4 -0
- package/dist/esm/runtime/index.v3.mjs +4 -0
- package/dist/esm/runtime/index.v3.mjs.map +1 -0
- package/dist/esm/runtime/internals/APIClient.d.ts +125 -0
- package/dist/esm/runtime/internals/APIClient.mjs +728 -0
- package/dist/esm/runtime/internals/APIClient.mjs.map +1 -0
- package/dist/esm/runtime/internals/clientUtils.d.ts +6 -0
- package/dist/esm/runtime/internals/clientUtils.mjs +26 -0
- package/dist/esm/runtime/internals/clientUtils.mjs.map +1 -0
- package/dist/esm/runtime/internals/generateCustomOperationsProperty.d.ts +8 -0
- package/dist/esm/runtime/internals/generateCustomOperationsProperty.mjs +44 -0
- package/dist/esm/runtime/internals/generateCustomOperationsProperty.mjs.map +1 -0
- package/dist/esm/runtime/internals/index.d.ts +6 -0
- package/dist/esm/runtime/internals/index.mjs +7 -0
- package/dist/esm/runtime/internals/index.mjs.map +1 -0
- package/dist/esm/runtime/internals/operations/custom.d.ts +61 -0
- package/dist/esm/runtime/internals/operations/custom.mjs +354 -0
- package/dist/esm/runtime/internals/operations/custom.mjs.map +1 -0
- package/dist/esm/runtime/internals/operations/get.d.ts +3 -0
- package/dist/esm/runtime/internals/operations/get.mjs +60 -0
- package/dist/esm/runtime/internals/operations/get.mjs.map +1 -0
- package/dist/esm/runtime/internals/operations/indexQuery.d.ts +7 -0
- package/dist/esm/runtime/internals/operations/indexQuery.mjs +73 -0
- package/dist/esm/runtime/internals/operations/indexQuery.mjs.map +1 -0
- package/dist/esm/runtime/internals/operations/list.d.ts +2 -0
- package/dist/esm/runtime/internals/operations/list.mjs +72 -0
- package/dist/esm/runtime/internals/operations/list.mjs.map +1 -0
- package/dist/esm/runtime/internals/operations/observeQuery.d.ts +3 -0
- package/dist/esm/runtime/internals/operations/observeQuery.mjs +120 -0
- package/dist/esm/runtime/internals/operations/observeQuery.mjs.map +1 -0
- package/dist/esm/runtime/internals/operations/subscription.d.ts +3 -0
- package/dist/esm/runtime/internals/operations/subscription.mjs +29 -0
- package/dist/esm/runtime/internals/operations/subscription.mjs.map +1 -0
- package/dist/esm/runtime/internals/server/generateModelsProperty.d.ts +3 -0
- package/dist/esm/runtime/internals/server/generateModelsProperty.mjs +51 -0
- package/dist/esm/runtime/internals/server/generateModelsProperty.mjs.map +1 -0
- package/dist/esm/runtime/internals/server/index.d.ts +1 -0
- package/dist/esm/runtime/internals/server/index.mjs +2 -0
- package/dist/esm/runtime/internals/server/index.mjs.map +1 -0
- package/dist/esm/runtime/internals/utils/clientProperties/generateEnumsProperty.d.ts +3 -0
- package/dist/esm/runtime/internals/utils/clientProperties/generateEnumsProperty.mjs +18 -0
- package/dist/esm/runtime/internals/utils/clientProperties/generateEnumsProperty.mjs.map +1 -0
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.d.ts +3 -0
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs +43 -0
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs.map +1 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.d.ts +2 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.mjs +8 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.mjs.map +1 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.d.ts +8 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.mjs +8 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.mjs.map +1 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.d.ts +2 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.mjs +12 -0
- package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.mjs.map +1 -0
- package/dist/esm/runtime/utils/findIndexByFields.d.ts +9 -0
- package/dist/esm/runtime/utils/findIndexByFields.mjs +22 -0
- package/dist/esm/runtime/utils/findIndexByFields.mjs.map +1 -0
- package/dist/esm/runtime/utils/index.d.ts +2 -0
- package/dist/esm/runtime/utils/index.mjs +3 -0
- package/dist/esm/runtime/utils/index.mjs.map +1 -0
- package/dist/esm/runtime/utils/resolveOwnerFields.d.ts +12 -0
- package/dist/esm/runtime/utils/resolveOwnerFields.mjs +45 -0
- package/dist/esm/runtime/utils/resolveOwnerFields.mjs.map +1 -0
- package/dist/esm/runtime/utils/resolvePKFields.d.ts +13 -0
- package/dist/esm/runtime/utils/resolvePKFields.mjs +14 -0
- package/dist/esm/runtime/utils/resolvePKFields.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/util/Brand.d.ts +0 -1
- package/dist/esm/util/Brand.mjs +30 -0
- package/dist/esm/util/Brand.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/util/IndexLimit.d.ts +0 -1
- package/dist/esm/util/IndexLimit.mjs +2 -0
- package/dist/esm/util/IndexLimit.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/util/SpreadTuple.d.ts +0 -1
- package/dist/esm/util/SpreadTuple.mjs +2 -0
- package/dist/esm/util/SpreadTuple.mjs.map +1 -0
- package/{lib-esm/src → dist/esm}/util/index.d.ts +0 -1
- package/dist/esm/util/index.mjs +2 -0
- package/dist/esm/util/index.mjs.map +1 -0
- package/dist/meta/cjs.tsbuildinfo +1 -0
- package/internals/package.json +7 -5
- package/package.json +31 -14
- package/runtime/package.json +8 -0
- package/src/Authorization.ts +684 -0
- package/src/ClientSchema.ts +118 -0
- package/src/CombineSchema.ts +58 -0
- package/src/CustomOperation.ts +286 -0
- package/src/CustomType.ts +67 -0
- package/src/EnumType.ts +36 -0
- package/src/Handler.ts +127 -0
- package/src/MappedTypes/CustomOperations.ts +256 -0
- package/src/MappedTypes/ExtractNonModelTypes.ts +154 -0
- package/src/MappedTypes/ImplicitFieldInjector.ts +69 -0
- package/src/MappedTypes/MapSecondaryIndexes.ts +100 -0
- package/src/MappedTypes/ModelMetadata.ts +87 -0
- package/src/MappedTypes/ResolveFieldProperties.ts +254 -0
- package/src/MappedTypes/ResolveSchema.ts +148 -0
- package/src/ModelField.ts +304 -0
- package/src/ModelIndex.ts +91 -0
- package/src/ModelRelationalField.ts +263 -0
- package/src/ModelSchema.ts +437 -0
- package/src/ModelType.ts +345 -0
- package/src/RefType.ts +139 -0
- package/src/SchemaProcessor.ts +1516 -0
- package/src/a.ts +58 -0
- package/src/index.ts +6 -0
- package/src/internals/index.ts +2 -0
- package/src/runtime/addSchemaToClient.ts +45 -0
- package/src/runtime/addSchemaToClientWithInstance.ts +46 -0
- package/src/runtime/bridge-types.ts +382 -0
- package/src/runtime/client/index.ts +923 -0
- package/src/runtime/client/index.v3.ts +52 -0
- package/src/runtime/index.ts +7 -0
- package/src/runtime/index.v3.ts +7 -0
- package/src/runtime/internals/APIClient.ts +1082 -0
- package/src/runtime/internals/clientUtils.ts +37 -0
- package/src/runtime/internals/generateCustomOperationsProperty.ts +116 -0
- package/src/runtime/internals/index.ts +12 -0
- package/src/runtime/internals/operations/custom.ts +497 -0
- package/src/runtime/internals/operations/get.ts +150 -0
- package/src/runtime/internals/operations/indexQuery.ts +178 -0
- package/src/runtime/internals/operations/list.ts +143 -0
- package/src/runtime/internals/operations/observeQuery.ts +146 -0
- package/src/runtime/internals/operations/subscription.ts +78 -0
- package/src/runtime/internals/server/generateModelsProperty.ts +94 -0
- package/src/runtime/internals/server/index.ts +4 -0
- package/src/runtime/internals/utils/clientProperties/generateEnumsProperty.ts +34 -0
- package/src/runtime/internals/utils/clientProperties/generateModelsProperty.ts +88 -0
- package/src/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.ts +10 -0
- package/src/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.ts +13 -0
- package/src/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.ts +15 -0
- package/src/runtime/utils/findIndexByFields.ts +31 -0
- package/src/runtime/utils/index.ts +5 -0
- package/src/runtime/utils/resolveOwnerFields.ts +77 -0
- package/src/runtime/utils/resolvePKFields.ts +23 -0
- package/src/util/Brand.ts +45 -0
- package/src/util/IndexLimit.ts +12 -0
- package/src/util/SpreadTuple.ts +10 -0
- package/src/util/index.ts +3 -0
- package/lib-esm/index.d.ts +0 -5
- package/lib-esm/index.d.ts.map +0 -1
- package/lib-esm/index.js +0 -28
- package/lib-esm/src/Authorization.d.ts.map +0 -1
- package/lib-esm/src/ClientSchema.d.ts.map +0 -1
- package/lib-esm/src/CombineSchema.d.ts.map +0 -1
- package/lib-esm/src/CustomOperation.d.ts.map +0 -1
- package/lib-esm/src/CustomType.d.ts.map +0 -1
- package/lib-esm/src/EnumType.d.ts.map +0 -1
- package/lib-esm/src/Handler.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/CustomOperations.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/ExtractNonModelTypes.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/ExtractNonModelTypes.js +0 -2
- package/lib-esm/src/MappedTypes/ImplicitFieldInjector.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/ImplicitFieldInjector.js +0 -2
- package/lib-esm/src/MappedTypes/MapSecondaryIndexes.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/ModelMetadata.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/ResolveFieldProperties.d.ts.map +0 -1
- package/lib-esm/src/MappedTypes/ResolveFieldProperties.js +0 -2
- package/lib-esm/src/MappedTypes/ResolveSchema.d.ts.map +0 -1
- package/lib-esm/src/ModelField.d.ts.map +0 -1
- package/lib-esm/src/ModelIndex.d.ts.map +0 -1
- package/lib-esm/src/ModelRelationalField.d.ts.map +0 -1
- package/lib-esm/src/ModelSchema.d.ts.map +0 -1
- package/lib-esm/src/ModelType.d.ts.map +0 -1
- package/lib-esm/src/RefType.d.ts.map +0 -1
- package/lib-esm/src/SchemaProcessor.d.ts.map +0 -1
- package/lib-esm/src/index.d.ts.map +0 -1
- package/lib-esm/src/internals/index.d.ts +0 -2
- package/lib-esm/src/internals/index.d.ts.map +0 -1
- package/lib-esm/src/util/Brand.d.ts.map +0 -1
- package/lib-esm/src/util/IndexLimit.d.ts.map +0 -1
- package/lib-esm/src/util/SpreadTuple.d.ts.map +0 -1
- package/lib-esm/src/util/index.d.ts.map +0 -1
- package/lib-esm/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { __modelMeta__ } from './runtime/client';
|
|
2
|
+
import type { GenericModelSchema, RDSModelSchema } from './ModelSchema';
|
|
3
|
+
|
|
4
|
+
// MappedTypes
|
|
5
|
+
import type { ResolveSchema, SchemaTypes } from './MappedTypes/ResolveSchema';
|
|
6
|
+
import type {
|
|
7
|
+
ResolveFieldProperties,
|
|
8
|
+
ResolveStaticFieldProperties,
|
|
9
|
+
} from './MappedTypes/ResolveFieldProperties';
|
|
10
|
+
import type {
|
|
11
|
+
ModelIdentifier,
|
|
12
|
+
ModelSecondaryIndexes,
|
|
13
|
+
RelationalMetadata,
|
|
14
|
+
} from './MappedTypes/ModelMetadata';
|
|
15
|
+
import type {
|
|
16
|
+
ExtractNonModelTypes,
|
|
17
|
+
NonModelTypesShape,
|
|
18
|
+
} from './MappedTypes/ExtractNonModelTypes';
|
|
19
|
+
import type {
|
|
20
|
+
ResolveCustomOperations,
|
|
21
|
+
CustomOperationHandlerTypes,
|
|
22
|
+
} from './MappedTypes/CustomOperations';
|
|
23
|
+
import type {
|
|
24
|
+
CombinedModelSchema,
|
|
25
|
+
CombinedSchemaIndexesUnion,
|
|
26
|
+
} from './CombineSchema';
|
|
27
|
+
import type { SpreadTuple } from './util';
|
|
28
|
+
|
|
29
|
+
export type ClientSchema<
|
|
30
|
+
Schema extends GenericModelSchema<any> | CombinedModelSchema<any>,
|
|
31
|
+
> =
|
|
32
|
+
Schema extends GenericModelSchema<any>
|
|
33
|
+
? InternalClientSchema<Schema>
|
|
34
|
+
: Schema extends CombinedModelSchema<any>
|
|
35
|
+
? InternalCombinedSchema<Schema>
|
|
36
|
+
: never;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Types for unwrapping generic type args into client-consumable types
|
|
40
|
+
*
|
|
41
|
+
* @typeParam Schema - Data schema builder model type
|
|
42
|
+
*
|
|
43
|
+
* The following params are used solely as variables in order to simplify mapped type usage.
|
|
44
|
+
* They should not receive external type args.
|
|
45
|
+
*
|
|
46
|
+
* @internal @typeParam NonModelTypes - Custom Types, Enums, and Custom Operations
|
|
47
|
+
* @internal @typeParam ResolvedSchema - Resolve the schema types used by other generics
|
|
48
|
+
* @internal @typeParam ResolvedFields - Resolved client-facing types used for CRUDL response shapes
|
|
49
|
+
* @internal @typeParam IdentifierMeta - Resolve the identifier fields for all models
|
|
50
|
+
* @internal @typeParam SecondaryIndexes - Map of model secondary index metadata
|
|
51
|
+
*/
|
|
52
|
+
type InternalClientSchema<
|
|
53
|
+
Schema extends GenericModelSchema<any>,
|
|
54
|
+
NonModelTypes extends NonModelTypesShape = ExtractNonModelTypes<Schema>,
|
|
55
|
+
ResolvedSchema = ResolveSchema<Schema>,
|
|
56
|
+
ResolvedFields extends Record<
|
|
57
|
+
string,
|
|
58
|
+
unknown
|
|
59
|
+
> = Schema extends RDSModelSchema<any, any>
|
|
60
|
+
? ResolveStaticFieldProperties<Schema, NonModelTypes, object>
|
|
61
|
+
: ResolveFieldProperties<Schema, NonModelTypes>,
|
|
62
|
+
IdentifierMeta extends Record<string, any> = ModelIdentifier<
|
|
63
|
+
SchemaTypes<Schema>
|
|
64
|
+
>,
|
|
65
|
+
SecondaryIndexes extends Record<string, any> = Schema extends RDSModelSchema<
|
|
66
|
+
any,
|
|
67
|
+
any
|
|
68
|
+
>
|
|
69
|
+
? object
|
|
70
|
+
: ModelSecondaryIndexes<SchemaTypes<Schema>>,
|
|
71
|
+
> = CustomOperationHandlerTypes<
|
|
72
|
+
ResolveCustomOperations<
|
|
73
|
+
Schema,
|
|
74
|
+
ResolvedFields,
|
|
75
|
+
NonModelTypes
|
|
76
|
+
>['customOperations']
|
|
77
|
+
> &
|
|
78
|
+
ResolvedFields & {
|
|
79
|
+
[__modelMeta__]: IdentifierMeta &
|
|
80
|
+
SecondaryIndexes &
|
|
81
|
+
RelationalMetadata<ResolvedSchema, ResolvedFields, IdentifierMeta> &
|
|
82
|
+
NonModelTypes &
|
|
83
|
+
ResolveCustomOperations<Schema, ResolvedFields, NonModelTypes>;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
type GetInternalClientSchema<Schema> =
|
|
87
|
+
Schema extends GenericModelSchema<any> ? InternalClientSchema<Schema> : never;
|
|
88
|
+
|
|
89
|
+
type CombinedClientSchemas<
|
|
90
|
+
Schemas extends CombinedModelSchema<any>['schemas'],
|
|
91
|
+
> = {
|
|
92
|
+
[Index in keyof Schemas]: Index extends CombinedSchemaIndexesUnion
|
|
93
|
+
? GetInternalClientSchema<Schemas[Index]>
|
|
94
|
+
: never;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Types for unwrapping and combining generic type args into client-consumable types
|
|
99
|
+
* for multiple schemas
|
|
100
|
+
*
|
|
101
|
+
* @typeParam Combined - A container of multiple schemas
|
|
102
|
+
*
|
|
103
|
+
* @internal @typeParam ClientSchemas - The tuple of client schemas to combine
|
|
104
|
+
*/
|
|
105
|
+
type InternalCombinedSchema<
|
|
106
|
+
Combined extends CombinedModelSchema<any>,
|
|
107
|
+
ClientSchemas extends [...any] = CombinedClientSchemas<Combined['schemas']>,
|
|
108
|
+
> = SpreadTuple<{
|
|
109
|
+
[I in keyof ClientSchemas]: I extends CombinedSchemaIndexesUnion
|
|
110
|
+
? Omit<ClientSchemas[I], typeof __modelMeta__>
|
|
111
|
+
: never;
|
|
112
|
+
}> & {
|
|
113
|
+
[__modelMeta__]: SpreadTuple<{
|
|
114
|
+
[I in keyof ClientSchemas]: I extends CombinedSchemaIndexesUnion
|
|
115
|
+
? ClientSchemas[I][typeof __modelMeta__]
|
|
116
|
+
: never;
|
|
117
|
+
}>;
|
|
118
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { GenericModelSchema } from './ModelSchema';
|
|
2
|
+
import { brand, Brand, IndexLimitUnion } from './util';
|
|
3
|
+
|
|
4
|
+
const COMBINED_SCHEMA_LIMIT = 50;
|
|
5
|
+
|
|
6
|
+
export type CombinedSchemaIndexesUnion = IndexLimitUnion<
|
|
7
|
+
typeof COMBINED_SCHEMA_LIMIT
|
|
8
|
+
>[number];
|
|
9
|
+
|
|
10
|
+
const CombinedSchemaBrandName = 'CombinedSchema';
|
|
11
|
+
export const combinedSchemaBrand = brand(CombinedSchemaBrandName);
|
|
12
|
+
export type CombinedSchemaBrand = Brand<typeof CombinedSchemaBrandName>;
|
|
13
|
+
|
|
14
|
+
export type CombinedModelSchema<Schemas extends GenericModelSchema<any>[]> =
|
|
15
|
+
CombinedSchemaBrand & { schemas: [...Schemas] };
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The interface for merging up to 50 schemas into a single API.
|
|
19
|
+
* @param schemas The schemas to combine into a single API
|
|
20
|
+
* @returns An API and data model definition to be deployed with Amplify (Gen 2) experience (`processSchema(...)`)
|
|
21
|
+
* or with the Amplify Data CDK construct (`@aws-amplify/data-construct`)
|
|
22
|
+
*/
|
|
23
|
+
export function combine<Schema extends GenericModelSchema<any>[]>(
|
|
24
|
+
schemas: [...Schema],
|
|
25
|
+
): CombinedModelSchema<Schema> {
|
|
26
|
+
return internalCombine(schemas);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function internalCombine<
|
|
30
|
+
Schema extends GenericModelSchema<any>[],
|
|
31
|
+
SchemasTuple extends [...Schema],
|
|
32
|
+
>(schemas: SchemasTuple): CombinedModelSchema<Schema> {
|
|
33
|
+
validateDuplicateTypeNames(schemas);
|
|
34
|
+
return {
|
|
35
|
+
...combinedSchemaBrand,
|
|
36
|
+
schemas: schemas,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function validateDuplicateTypeNames<Schema extends GenericModelSchema<any>[]>(
|
|
41
|
+
schemas: [...Schema],
|
|
42
|
+
) {
|
|
43
|
+
const allSchemaKeys = schemas.flatMap((s) => Object.keys(s.data.types));
|
|
44
|
+
const keySet = new Set<string>();
|
|
45
|
+
const duplicateKeySet = new Set<string>();
|
|
46
|
+
allSchemaKeys.forEach((key) => {
|
|
47
|
+
if (keySet.has(key)) {
|
|
48
|
+
duplicateKeySet.add(key);
|
|
49
|
+
} else {
|
|
50
|
+
keySet.add(key);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (duplicateKeySet.size > 0) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`The schemas you are attempting to combine have a name collision. Please remove or rename ${Array.from(duplicateKeySet).join(', ')}.`,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { SetTypeSubArg } from '@aws-amplify/data-schema-types';
|
|
2
|
+
import { Brand, brand } from './util';
|
|
3
|
+
|
|
4
|
+
import { ModelField, InternalField } from './ModelField';
|
|
5
|
+
import {
|
|
6
|
+
AllowModifierForCustomOperation,
|
|
7
|
+
Authorization,
|
|
8
|
+
allowForCustomOperations,
|
|
9
|
+
} from './Authorization';
|
|
10
|
+
import { RefType, InternalRef } from './RefType';
|
|
11
|
+
import { EnumType, EnumTypeParamShape } from './EnumType';
|
|
12
|
+
import { CustomType } from './CustomType';
|
|
13
|
+
import type {
|
|
14
|
+
CustomHandler,
|
|
15
|
+
FunctionHandler,
|
|
16
|
+
HandlerType as Handler,
|
|
17
|
+
} from './Handler';
|
|
18
|
+
|
|
19
|
+
const queryBrand = 'queryCustomOperation';
|
|
20
|
+
const mutationBrand = 'mutationCustomOperation';
|
|
21
|
+
const subscriptionBrand = 'subscriptionCustomOperation';
|
|
22
|
+
|
|
23
|
+
type CustomOperationBrand =
|
|
24
|
+
| typeof queryBrand
|
|
25
|
+
| typeof mutationBrand
|
|
26
|
+
| typeof subscriptionBrand;
|
|
27
|
+
|
|
28
|
+
type CustomArguments = Record<
|
|
29
|
+
string,
|
|
30
|
+
ModelField<any, any> | EnumType<EnumTypeParamShape>
|
|
31
|
+
>;
|
|
32
|
+
|
|
33
|
+
type SubscriptionSource = RefType<any, any>;
|
|
34
|
+
type InternalSubscriptionSource = InternalRef;
|
|
35
|
+
|
|
36
|
+
type CustomReturnType = RefType<any> | CustomType<any>;
|
|
37
|
+
type CustomFunctionRefType = string; // extend to include reference
|
|
38
|
+
|
|
39
|
+
type InternalCustomArguments = Record<string, InternalField>;
|
|
40
|
+
type InternalCustomReturnType = InternalRef;
|
|
41
|
+
type HandlerInputType = FunctionHandler[] | CustomHandler[] | Handler;
|
|
42
|
+
|
|
43
|
+
export const CustomOperationNames = [
|
|
44
|
+
'Query',
|
|
45
|
+
'Mutation',
|
|
46
|
+
'Subscription',
|
|
47
|
+
] as const;
|
|
48
|
+
type CustomOperationName = (typeof CustomOperationNames)[number];
|
|
49
|
+
|
|
50
|
+
type CustomData = {
|
|
51
|
+
arguments: CustomArguments;
|
|
52
|
+
returnType: CustomReturnType | null;
|
|
53
|
+
functionRef: string | null; // extend to include reference
|
|
54
|
+
authorization: Authorization<any, any, any>[];
|
|
55
|
+
typeName: CustomOperationName;
|
|
56
|
+
handlers: Handler[] | null;
|
|
57
|
+
subscriptionSource: SubscriptionSource[];
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
type InternalCustomData = CustomData & {
|
|
61
|
+
arguments: InternalCustomArguments;
|
|
62
|
+
returnType: InternalCustomReturnType;
|
|
63
|
+
functionRef: string | null;
|
|
64
|
+
subscriptionSource: InternalSubscriptionSource[];
|
|
65
|
+
authorization: Authorization<any, any, any>[];
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export type CustomOperationParamShape = {
|
|
69
|
+
arguments: CustomArguments | null;
|
|
70
|
+
returnType: CustomReturnType | null;
|
|
71
|
+
functionRef: string | null;
|
|
72
|
+
authorization: Authorization<any, any, any>[];
|
|
73
|
+
typeName: CustomOperationName;
|
|
74
|
+
handlers: Handler | null;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export type CustomOperation<
|
|
78
|
+
T extends CustomOperationParamShape,
|
|
79
|
+
K extends keyof CustomOperation<T> = never,
|
|
80
|
+
B extends CustomOperationBrand = CustomOperationBrand,
|
|
81
|
+
> = Omit<
|
|
82
|
+
{
|
|
83
|
+
arguments<Arguments extends CustomArguments>(
|
|
84
|
+
args: Arguments,
|
|
85
|
+
): CustomOperation<
|
|
86
|
+
SetTypeSubArg<T, 'arguments', Arguments>,
|
|
87
|
+
K | 'arguments',
|
|
88
|
+
B
|
|
89
|
+
>;
|
|
90
|
+
returns<ReturnType extends CustomReturnType>(
|
|
91
|
+
returnType: ReturnType,
|
|
92
|
+
): CustomOperation<
|
|
93
|
+
SetTypeSubArg<T, 'returnType', ReturnType>,
|
|
94
|
+
K | 'returns',
|
|
95
|
+
B
|
|
96
|
+
>;
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @deprecated
|
|
100
|
+
* `.function` should no longer be used and will be removed
|
|
101
|
+
* in the next minor version of this package.
|
|
102
|
+
*
|
|
103
|
+
* Use `.handler(a.handler.function())` instead
|
|
104
|
+
*/
|
|
105
|
+
function<FunctionRef extends CustomFunctionRefType>(
|
|
106
|
+
functionRefOrName: FunctionRef,
|
|
107
|
+
): CustomOperation<
|
|
108
|
+
SetTypeSubArg<T, 'functionRef', FunctionRef>,
|
|
109
|
+
K | 'function',
|
|
110
|
+
B
|
|
111
|
+
>;
|
|
112
|
+
authorization<AuthRuleType extends Authorization<any, any, any>>(
|
|
113
|
+
callback: (
|
|
114
|
+
allow: AllowModifierForCustomOperation,
|
|
115
|
+
) => AuthRuleType | AuthRuleType[],
|
|
116
|
+
): CustomOperation<
|
|
117
|
+
SetTypeSubArg<T, 'authorization', AuthRuleType[]>,
|
|
118
|
+
K | 'authorization',
|
|
119
|
+
B
|
|
120
|
+
>;
|
|
121
|
+
handler<H extends HandlerInputType>(
|
|
122
|
+
handlers: H,
|
|
123
|
+
): CustomOperation<T, K | 'handler', B>;
|
|
124
|
+
for<Source extends SubscriptionSource>(
|
|
125
|
+
source: Source | Source[],
|
|
126
|
+
): CustomOperation<
|
|
127
|
+
T['typeName'] extends 'Subscription'
|
|
128
|
+
? SetTypeSubArg<
|
|
129
|
+
T,
|
|
130
|
+
'returnType',
|
|
131
|
+
// the array contained types are validated in the SchemaProcessor to have the
|
|
132
|
+
// same return type, so we can safely use Source[number] here as the source
|
|
133
|
+
// to extra the return type in `packages/data-schema/src/MappedTypes/CustomOperations.ts`
|
|
134
|
+
Source extends SubscriptionSource[] ? Source[number] : Source
|
|
135
|
+
>
|
|
136
|
+
: T,
|
|
137
|
+
K | 'for',
|
|
138
|
+
B
|
|
139
|
+
>;
|
|
140
|
+
},
|
|
141
|
+
K
|
|
142
|
+
> &
|
|
143
|
+
Brand<B>;
|
|
144
|
+
|
|
145
|
+
function brandedBuilder<T extends CustomOperationParamShape>(
|
|
146
|
+
builder: Record<keyof CustomOperation<T> & string, any>,
|
|
147
|
+
brandValue: CustomOperationBrand,
|
|
148
|
+
): CustomOperation<T, never, typeof brandValue> {
|
|
149
|
+
return { ...builder, ...brand(brandValue) };
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Internal representation of Custom Type that exposes the `data` property.
|
|
154
|
+
* Used at buildtime.
|
|
155
|
+
*/
|
|
156
|
+
export type InternalCustom<B extends CustomOperationBrand = any> =
|
|
157
|
+
CustomOperation<any, never, B> & {
|
|
158
|
+
data: InternalCustomData;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
function _custom<
|
|
162
|
+
T extends CustomOperationParamShape,
|
|
163
|
+
B extends CustomOperationBrand,
|
|
164
|
+
>(typeName: CustomOperationName, brand: B) {
|
|
165
|
+
const data: CustomData = {
|
|
166
|
+
arguments: {},
|
|
167
|
+
returnType: null,
|
|
168
|
+
functionRef: null,
|
|
169
|
+
authorization: [],
|
|
170
|
+
typeName: typeName,
|
|
171
|
+
handlers: null,
|
|
172
|
+
subscriptionSource: [],
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
const builder = brandedBuilder<T>(
|
|
176
|
+
{
|
|
177
|
+
arguments(args: CustomArguments) {
|
|
178
|
+
data.arguments = args;
|
|
179
|
+
|
|
180
|
+
return this;
|
|
181
|
+
},
|
|
182
|
+
returns(returnType: CustomReturnType) {
|
|
183
|
+
data.returnType = returnType;
|
|
184
|
+
|
|
185
|
+
return this;
|
|
186
|
+
},
|
|
187
|
+
function(functionRefOrName: CustomFunctionRefType) {
|
|
188
|
+
data.functionRef = functionRefOrName;
|
|
189
|
+
|
|
190
|
+
return this;
|
|
191
|
+
},
|
|
192
|
+
authorization<AuthRuleType extends Authorization<any, any, any>>(
|
|
193
|
+
callback: (
|
|
194
|
+
allow: AllowModifierForCustomOperation,
|
|
195
|
+
) => AuthRuleType | AuthRuleType[],
|
|
196
|
+
) {
|
|
197
|
+
const rules = callback(allowForCustomOperations);
|
|
198
|
+
data.authorization = Array.isArray(rules) ? rules : [rules];
|
|
199
|
+
|
|
200
|
+
return this;
|
|
201
|
+
},
|
|
202
|
+
handler(handlers: HandlerInputType) {
|
|
203
|
+
data.handlers = Array.isArray(handlers)
|
|
204
|
+
? handlers
|
|
205
|
+
: ([handlers] as Handler[]);
|
|
206
|
+
|
|
207
|
+
return this;
|
|
208
|
+
},
|
|
209
|
+
for(source: SubscriptionSource | SubscriptionSource[]) {
|
|
210
|
+
data.subscriptionSource = Array.isArray(source) ? source : [source];
|
|
211
|
+
|
|
212
|
+
return this;
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
brand,
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
return { ...builder, data } as InternalCustom<B> as CustomOperation<
|
|
219
|
+
T,
|
|
220
|
+
never,
|
|
221
|
+
B
|
|
222
|
+
>;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export type QueryCustomOperation = CustomOperation<
|
|
226
|
+
CustomOperationParamShape,
|
|
227
|
+
any,
|
|
228
|
+
typeof queryBrand
|
|
229
|
+
>;
|
|
230
|
+
|
|
231
|
+
export function query(): CustomOperation<
|
|
232
|
+
{
|
|
233
|
+
arguments: null;
|
|
234
|
+
returnType: null;
|
|
235
|
+
functionRef: null;
|
|
236
|
+
authorization: [];
|
|
237
|
+
typeName: 'Query';
|
|
238
|
+
handlers: null;
|
|
239
|
+
},
|
|
240
|
+
never,
|
|
241
|
+
typeof queryBrand
|
|
242
|
+
> {
|
|
243
|
+
return _custom('Query', queryBrand);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export type MutationCustomOperation = CustomOperation<
|
|
247
|
+
CustomOperationParamShape,
|
|
248
|
+
any,
|
|
249
|
+
typeof mutationBrand
|
|
250
|
+
>;
|
|
251
|
+
|
|
252
|
+
export function mutation(): CustomOperation<
|
|
253
|
+
{
|
|
254
|
+
arguments: null;
|
|
255
|
+
returnType: null;
|
|
256
|
+
functionRef: null;
|
|
257
|
+
authorization: [];
|
|
258
|
+
typeName: 'Mutation';
|
|
259
|
+
handlers: null;
|
|
260
|
+
},
|
|
261
|
+
never,
|
|
262
|
+
typeof mutationBrand
|
|
263
|
+
> {
|
|
264
|
+
return _custom('Mutation', mutationBrand);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export type SubscriptionCustomOperation = CustomOperation<
|
|
268
|
+
CustomOperationParamShape,
|
|
269
|
+
any,
|
|
270
|
+
typeof subscriptionBrand
|
|
271
|
+
>;
|
|
272
|
+
|
|
273
|
+
export function subscription(): CustomOperation<
|
|
274
|
+
{
|
|
275
|
+
arguments: null;
|
|
276
|
+
returnType: null;
|
|
277
|
+
functionRef: null;
|
|
278
|
+
authorization: [];
|
|
279
|
+
typeName: 'Subscription';
|
|
280
|
+
handlers: null;
|
|
281
|
+
},
|
|
282
|
+
'returns',
|
|
283
|
+
typeof subscriptionBrand
|
|
284
|
+
> {
|
|
285
|
+
return _custom('Subscription', subscriptionBrand);
|
|
286
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { Brand } from './util';
|
|
2
|
+
import type {
|
|
3
|
+
ModelField,
|
|
4
|
+
InternalField,
|
|
5
|
+
ModelFieldTypeParamOuter,
|
|
6
|
+
} from './ModelField';
|
|
7
|
+
import type { RefType } from './RefType';
|
|
8
|
+
import type { EnumType, EnumTypeParamShape } from './EnumType';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Custom Types
|
|
12
|
+
*
|
|
13
|
+
* can be defined in-line to strongly type object types
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
// `.default()` is not allowed on a Custom Type field
|
|
18
|
+
export type CustomTypeAllowedModifiers = 'authorization' | 'array' | 'required';
|
|
19
|
+
|
|
20
|
+
type CustomTypeFields = Record<
|
|
21
|
+
string,
|
|
22
|
+
| ModelField<ModelFieldTypeParamOuter, CustomTypeAllowedModifiers, any>
|
|
23
|
+
| RefType<any, any, any>
|
|
24
|
+
| EnumType<EnumTypeParamShape>
|
|
25
|
+
| CustomType<CustomTypeParamShape>
|
|
26
|
+
>;
|
|
27
|
+
|
|
28
|
+
type InternalModelFields = Record<string, InternalField>;
|
|
29
|
+
|
|
30
|
+
type CustomTypeData = {
|
|
31
|
+
fields: CustomTypeFields;
|
|
32
|
+
type: 'customType';
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
type InternalCustomTypeData = CustomTypeData & {
|
|
36
|
+
fields: InternalModelFields;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export type CustomTypeParamShape = {
|
|
40
|
+
fields: CustomTypeFields;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export type CustomType<T extends CustomTypeParamShape> = T &
|
|
44
|
+
Brand<'customType'>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Internal representation of CustomType that exposes the `data` property.
|
|
48
|
+
* Used at buildtime.
|
|
49
|
+
*/
|
|
50
|
+
export type InternalCustomType = CustomType<any> & {
|
|
51
|
+
data: InternalCustomTypeData;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
function _customType<T extends CustomTypeParamShape>(fields: T['fields']) {
|
|
55
|
+
const data: CustomTypeData = {
|
|
56
|
+
fields,
|
|
57
|
+
type: 'customType',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
return { data } as InternalCustomType as CustomType<T>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function customType<T extends CustomTypeFields>(
|
|
64
|
+
fields: T,
|
|
65
|
+
): CustomType<{ fields: T }> {
|
|
66
|
+
return _customType(fields);
|
|
67
|
+
}
|
package/src/EnumType.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Brand } from './util';
|
|
2
|
+
|
|
3
|
+
type EnumTypeData = {
|
|
4
|
+
type: 'enum';
|
|
5
|
+
values: readonly string[];
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type EnumTypeParamShape = {
|
|
9
|
+
type: 'enum';
|
|
10
|
+
values: readonly string[];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type EnumType<T extends EnumTypeParamShape> = T & Brand<'enum'>;
|
|
14
|
+
|
|
15
|
+
function _enum<T extends EnumTypeParamShape>(values: T['values']) {
|
|
16
|
+
const data: EnumTypeData = {
|
|
17
|
+
type: 'enum',
|
|
18
|
+
values,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data as EnumType<T>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type EnumTypeArgFactory<Values extends readonly string[]> = {
|
|
25
|
+
type: 'enum';
|
|
26
|
+
values: Values;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* this type param pattern allows us to infer literal type values from the array without using the `as const` suffix
|
|
31
|
+
*/
|
|
32
|
+
export function enumType<Value extends string, T extends readonly Value[]>(
|
|
33
|
+
values: T,
|
|
34
|
+
) {
|
|
35
|
+
return _enum<EnumTypeArgFactory<T>>(values);
|
|
36
|
+
}
|
package/src/Handler.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { DefineFunction } from '@aws-amplify/data-schema-types';
|
|
2
|
+
import { Brand, brand } from './util';
|
|
3
|
+
import { RefType } from './RefType';
|
|
4
|
+
|
|
5
|
+
export type HandlerType =
|
|
6
|
+
| InlineSqlHandler
|
|
7
|
+
| SqlReferenceHandler
|
|
8
|
+
| CustomHandler
|
|
9
|
+
| FunctionHandler;
|
|
10
|
+
|
|
11
|
+
const dataSymbol = Symbol('Data');
|
|
12
|
+
|
|
13
|
+
function buildHandler<B extends string>(brandName: B): Brand<B> {
|
|
14
|
+
return brand(brandName);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
type AllHandlers =
|
|
18
|
+
| InlineSqlHandler
|
|
19
|
+
| SqlReferenceHandler
|
|
20
|
+
| CustomHandler
|
|
21
|
+
| FunctionHandler;
|
|
22
|
+
|
|
23
|
+
export function getHandlerData<H extends AllHandlers>(
|
|
24
|
+
handler: H,
|
|
25
|
+
): H[typeof dataSymbol] {
|
|
26
|
+
return handler[dataSymbol];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#region handler.inlineSql
|
|
30
|
+
|
|
31
|
+
const inlineSqlBrand = 'inlineSql';
|
|
32
|
+
|
|
33
|
+
export type InlineSqlHandler = { [dataSymbol]: string } & Brand<
|
|
34
|
+
typeof inlineSqlBrand
|
|
35
|
+
>;
|
|
36
|
+
|
|
37
|
+
function inlineSql(sql: string): InlineSqlHandler {
|
|
38
|
+
return { [dataSymbol]: sql, ...buildHandler(inlineSqlBrand) };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
|
|
43
|
+
//#region handler.sqlReference
|
|
44
|
+
|
|
45
|
+
const sqlReferenceBrand = 'sqlReference';
|
|
46
|
+
|
|
47
|
+
export type SqlReferenceHandlerData = {
|
|
48
|
+
entry: string;
|
|
49
|
+
stack: string | undefined;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type SqlReferenceHandler = {
|
|
53
|
+
[dataSymbol]: SqlReferenceHandlerData;
|
|
54
|
+
} & Brand<typeof sqlReferenceBrand>;
|
|
55
|
+
|
|
56
|
+
function sqlReference(sqlFilePath: string): SqlReferenceHandler {
|
|
57
|
+
// used to determine caller directory in order to resolve relative path downstream
|
|
58
|
+
const stack = new Error().stack;
|
|
59
|
+
return {
|
|
60
|
+
[dataSymbol]: { stack, entry: sqlFilePath },
|
|
61
|
+
...buildHandler(sqlReferenceBrand),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
|
|
67
|
+
//#region handler.custom
|
|
68
|
+
|
|
69
|
+
type CustomHandlerInput = {
|
|
70
|
+
/**
|
|
71
|
+
* The data source used by the function.
|
|
72
|
+
* Can reference a model in the schema with a.ref('ModelName') or any string data source name configured in your API
|
|
73
|
+
*
|
|
74
|
+
* Defaults to 'NONE_DS'
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
77
|
+
dataSource?: string | RefType<any>;
|
|
78
|
+
/**
|
|
79
|
+
* The path to the file that contains the function entry point.
|
|
80
|
+
* If this is a relative path, it is computed relative to the file where this handler is defined
|
|
81
|
+
*/
|
|
82
|
+
entry: string;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export type CustomHandlerData = CustomHandlerInput & {
|
|
86
|
+
stack: string | undefined;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const customHandlerBrand = 'customHandler';
|
|
90
|
+
|
|
91
|
+
export type CustomHandler = { [dataSymbol]: CustomHandlerData } & Brand<
|
|
92
|
+
typeof customHandlerBrand
|
|
93
|
+
>;
|
|
94
|
+
|
|
95
|
+
function custom(customHandler: CustomHandlerInput): CustomHandler {
|
|
96
|
+
// used to determine caller directory in order to resolve relative path downstream
|
|
97
|
+
const stack = new Error().stack;
|
|
98
|
+
return {
|
|
99
|
+
[dataSymbol]: { ...customHandler, stack },
|
|
100
|
+
...buildHandler(customHandlerBrand),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
|
|
106
|
+
//#region handler.function
|
|
107
|
+
|
|
108
|
+
export type FunctionHandlerData = DefineFunction | string;
|
|
109
|
+
|
|
110
|
+
const functionHandlerBrand = 'functionHandler';
|
|
111
|
+
|
|
112
|
+
export type FunctionHandler = {
|
|
113
|
+
[dataSymbol]: FunctionHandlerData;
|
|
114
|
+
} & Brand<typeof functionHandlerBrand>;
|
|
115
|
+
|
|
116
|
+
function fcn(fn: FunctionHandlerData): FunctionHandler {
|
|
117
|
+
return { [dataSymbol]: fn, ...buildHandler(functionHandlerBrand) };
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
|
|
122
|
+
export const handler = {
|
|
123
|
+
inlineSql,
|
|
124
|
+
sqlReference,
|
|
125
|
+
custom,
|
|
126
|
+
function: fcn,
|
|
127
|
+
};
|