@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
package/src/ModelType.ts
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
SetTypeSubArg,
|
|
3
|
+
SecondaryIndexIrShape,
|
|
4
|
+
} from '@aws-amplify/data-schema-types';
|
|
5
|
+
import { Brand, brand } from './util';
|
|
6
|
+
import { ModelField, InternalField } from './ModelField';
|
|
7
|
+
import type {
|
|
8
|
+
ModelRelationalField,
|
|
9
|
+
InternalRelationalField,
|
|
10
|
+
ModelRelationalFieldParamShape,
|
|
11
|
+
} from './ModelRelationalField';
|
|
12
|
+
import { AllowModifier, Authorization, allow } from './Authorization';
|
|
13
|
+
import { RefType } from './RefType';
|
|
14
|
+
import { EnumType, EnumTypeParamShape } from './EnumType';
|
|
15
|
+
import { CustomType, CustomTypeParamShape } from './CustomType';
|
|
16
|
+
import {
|
|
17
|
+
ModelIndexType,
|
|
18
|
+
InternalModelIndexType,
|
|
19
|
+
modelIndex,
|
|
20
|
+
} from './ModelIndex';
|
|
21
|
+
import { SecondaryIndexToIR } from './MappedTypes/MapSecondaryIndexes';
|
|
22
|
+
|
|
23
|
+
const brandName = 'modelType';
|
|
24
|
+
|
|
25
|
+
type ModelFields = Record<
|
|
26
|
+
string,
|
|
27
|
+
| ModelField<any, any, any>
|
|
28
|
+
| ModelRelationalField<any, string, any, any>
|
|
29
|
+
| RefType<any, any, any>
|
|
30
|
+
| EnumType<EnumTypeParamShape>
|
|
31
|
+
| CustomType<CustomTypeParamShape>
|
|
32
|
+
>;
|
|
33
|
+
|
|
34
|
+
type InternalModelFields = Record<
|
|
35
|
+
string,
|
|
36
|
+
InternalField | InternalRelationalField
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
type ModelData = {
|
|
40
|
+
fields: ModelFields;
|
|
41
|
+
identifier: string[];
|
|
42
|
+
secondaryIndexes: ReadonlyArray<ModelIndexType<any, any, any, any, any>>;
|
|
43
|
+
authorization: Authorization<any, any, any>[];
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
type InternalModelData = ModelData & {
|
|
47
|
+
fields: InternalModelFields;
|
|
48
|
+
identifier: string[];
|
|
49
|
+
secondaryIndexes: ReadonlyArray<InternalModelIndexType>;
|
|
50
|
+
authorization: Authorization<any, any, any>[];
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export type ModelTypeParamShape = {
|
|
54
|
+
fields: ModelFields;
|
|
55
|
+
identifier: string[];
|
|
56
|
+
secondaryIndexes: ReadonlyArray<SecondaryIndexIrShape>;
|
|
57
|
+
authorization: Authorization<any, any, any>[];
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Extract field names that can be used to define a secondary index PK or SK
|
|
61
|
+
// i.e., nullable string or nullable number fields
|
|
62
|
+
type SecondaryIndexFields<T extends Record<string, unknown>> = keyof {
|
|
63
|
+
[Field in keyof T as NonNullable<T[Field]> extends string | number
|
|
64
|
+
? Field
|
|
65
|
+
: never]: T[Field];
|
|
66
|
+
} &
|
|
67
|
+
string;
|
|
68
|
+
|
|
69
|
+
type ExtractType<T extends ModelTypeParamShape> = {
|
|
70
|
+
[FieldProp in keyof T['fields'] as T['fields'][FieldProp] extends ModelField<
|
|
71
|
+
any,
|
|
72
|
+
any,
|
|
73
|
+
any
|
|
74
|
+
>
|
|
75
|
+
? FieldProp
|
|
76
|
+
: never]: T['fields'][FieldProp] extends ModelField<infer R, any, any>
|
|
77
|
+
? R
|
|
78
|
+
: never;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
type GetRequiredFields<T> = {
|
|
82
|
+
[FieldProp in keyof T as T[FieldProp] extends NonNullable<T[FieldProp]>
|
|
83
|
+
? FieldProp
|
|
84
|
+
: never]: T[FieldProp];
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
type IdentifierMap<T extends ModelTypeParamShape> = GetRequiredFields<
|
|
88
|
+
ExtractType<T>
|
|
89
|
+
>;
|
|
90
|
+
|
|
91
|
+
// extracts model fields that CAN BE used as identifiers (scalar, non-nullable fields)
|
|
92
|
+
// TODO: make this also filter out all non-scalars e.g., model fields and custom types
|
|
93
|
+
type IdentifierFields<T extends ModelTypeParamShape> = keyof IdentifierMap<T> &
|
|
94
|
+
string;
|
|
95
|
+
|
|
96
|
+
type IdentifierType<
|
|
97
|
+
T extends ModelTypeParamShape,
|
|
98
|
+
Fields extends string = IdentifierFields<T>,
|
|
99
|
+
> = Array<Fields>;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* For a given ModelTypeParamShape, produces a map of Authorization rules
|
|
103
|
+
* that would *conflict* with the given type.
|
|
104
|
+
*
|
|
105
|
+
* E.g.,
|
|
106
|
+
*
|
|
107
|
+
* ```
|
|
108
|
+
* const test = {
|
|
109
|
+
* fields: {
|
|
110
|
+
* title: fields.string(),
|
|
111
|
+
* otherfield: fields.string().array(),
|
|
112
|
+
* numfield: fields.integer(),
|
|
113
|
+
* },
|
|
114
|
+
* identifier: [],
|
|
115
|
+
* authorization: [],
|
|
116
|
+
* };
|
|
117
|
+
*
|
|
118
|
+
* ConflictingAuthRulesMap<typeof test> === {
|
|
119
|
+
* title: Authorization<"title", true>;
|
|
120
|
+
* otherfield: Authorization<"otherfield", false>;
|
|
121
|
+
* numfield: Authorization<"numfield", true> | Authorization<"numfield", false>;
|
|
122
|
+
* }
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
type ConflictingAuthRulesMap<T extends ModelTypeParamShape> = {
|
|
126
|
+
[K in keyof ExtractType<T>]: K extends string
|
|
127
|
+
? string extends ExtractType<T>[K]
|
|
128
|
+
? Authorization<any, K, true>
|
|
129
|
+
: string[] extends ExtractType<T>[K]
|
|
130
|
+
? Authorization<any, K, false>
|
|
131
|
+
: Authorization<any, K, true> | Authorization<any, K, false>
|
|
132
|
+
: never;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export type AddRelationshipFieldsToModelTypeFields<
|
|
136
|
+
Model,
|
|
137
|
+
RelationshipFields extends Record<
|
|
138
|
+
string,
|
|
139
|
+
ModelRelationalField<ModelRelationalFieldParamShape, string, any, any>
|
|
140
|
+
>,
|
|
141
|
+
> =
|
|
142
|
+
Model extends ModelType<
|
|
143
|
+
infer ModelParam extends ModelTypeParamShape,
|
|
144
|
+
infer HiddenKeys
|
|
145
|
+
>
|
|
146
|
+
? ModelType<
|
|
147
|
+
SetTypeSubArg<
|
|
148
|
+
ModelParam,
|
|
149
|
+
'fields',
|
|
150
|
+
ModelParam['fields'] & RelationshipFields
|
|
151
|
+
>,
|
|
152
|
+
HiddenKeys
|
|
153
|
+
>
|
|
154
|
+
: never;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* For a given ModelTypeParamShape, produces a union of Authorization rules
|
|
158
|
+
* that would *conflict* with the given type.
|
|
159
|
+
*
|
|
160
|
+
* E.g.,
|
|
161
|
+
*
|
|
162
|
+
* ```
|
|
163
|
+
* const test = {
|
|
164
|
+
* fields: {
|
|
165
|
+
* title: fields.string(),
|
|
166
|
+
* otherfield: fields.string().array(),
|
|
167
|
+
* numfield: fields.integer(),
|
|
168
|
+
* },
|
|
169
|
+
* identifier: [],
|
|
170
|
+
* authorization: [],
|
|
171
|
+
* };
|
|
172
|
+
*
|
|
173
|
+
* ConflictingAuthRules<typeof test> ===
|
|
174
|
+
* Authorization<"title", true>
|
|
175
|
+
* | Authorization<"otherfield", false>
|
|
176
|
+
* | Authorization<"numfield", true> | Authorization<"numfield", false>
|
|
177
|
+
* ;
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
type _ConflictingAuthRules<T extends ModelTypeParamShape> =
|
|
181
|
+
ConflictingAuthRulesMap<T>[keyof ConflictingAuthRulesMap<T>];
|
|
182
|
+
|
|
183
|
+
export type ModelType<
|
|
184
|
+
T extends ModelTypeParamShape,
|
|
185
|
+
K extends keyof ModelType<T> = never,
|
|
186
|
+
> = Omit<
|
|
187
|
+
{
|
|
188
|
+
identifier<ID extends IdentifierType<T> = []>(
|
|
189
|
+
identifier: ID,
|
|
190
|
+
): ModelType<SetTypeSubArg<T, 'identifier', ID>, K | 'identifier'>;
|
|
191
|
+
secondaryIndexes<
|
|
192
|
+
const SecondaryIndexPKPool extends string = SecondaryIndexFields<
|
|
193
|
+
ExtractType<T>
|
|
194
|
+
>,
|
|
195
|
+
const Indexes extends readonly ModelIndexType<
|
|
196
|
+
string,
|
|
197
|
+
string,
|
|
198
|
+
unknown,
|
|
199
|
+
readonly [],
|
|
200
|
+
any
|
|
201
|
+
>[] = readonly [],
|
|
202
|
+
const IndexesIR extends readonly any[] = SecondaryIndexToIR<
|
|
203
|
+
Indexes,
|
|
204
|
+
ExtractType<T>
|
|
205
|
+
>,
|
|
206
|
+
>(
|
|
207
|
+
callback: (
|
|
208
|
+
index: <PK extends SecondaryIndexPKPool>(
|
|
209
|
+
pk: PK,
|
|
210
|
+
) => ModelIndexType<
|
|
211
|
+
SecondaryIndexPKPool,
|
|
212
|
+
PK,
|
|
213
|
+
ReadonlyArray<Exclude<SecondaryIndexPKPool, PK>>
|
|
214
|
+
>,
|
|
215
|
+
) => Indexes,
|
|
216
|
+
): ModelType<
|
|
217
|
+
SetTypeSubArg<T, 'secondaryIndexes', IndexesIR>,
|
|
218
|
+
K | 'secondaryIndexes'
|
|
219
|
+
>;
|
|
220
|
+
authorization<AuthRuleType extends Authorization<any, any, any>>(
|
|
221
|
+
callback: (allow: Omit<AllowModifier, 'resource'>) => AuthRuleType | AuthRuleType[],
|
|
222
|
+
): ModelType<
|
|
223
|
+
SetTypeSubArg<T, 'authorization', AuthRuleType[]>,
|
|
224
|
+
K | 'authorization'
|
|
225
|
+
>;
|
|
226
|
+
},
|
|
227
|
+
K
|
|
228
|
+
> &
|
|
229
|
+
Brand<typeof brandName>;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* External representation of Model Type that exposes the `addRelationships` modifier.
|
|
233
|
+
* Used on the complete schema object.
|
|
234
|
+
*/
|
|
235
|
+
export type SchemaModelType<
|
|
236
|
+
T extends ModelType<ModelTypeParamShape, never | 'identifier'> = ModelType<
|
|
237
|
+
ModelTypeParamShape,
|
|
238
|
+
never | 'identifier'
|
|
239
|
+
>,
|
|
240
|
+
ModelName extends string = string,
|
|
241
|
+
IsRDS extends boolean = false,
|
|
242
|
+
> = IsRDS extends true
|
|
243
|
+
? T & {
|
|
244
|
+
addRelationships<
|
|
245
|
+
Param extends Record<
|
|
246
|
+
string,
|
|
247
|
+
ModelRelationalField<any, string, any, any>
|
|
248
|
+
> = Record<never, never>,
|
|
249
|
+
>(
|
|
250
|
+
relationships: Param,
|
|
251
|
+
): Record<ModelName, Param>;
|
|
252
|
+
fields: T extends ModelType<infer R extends ModelTypeParamShape, any>
|
|
253
|
+
? R['fields']
|
|
254
|
+
: never;
|
|
255
|
+
}
|
|
256
|
+
: T;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Internal representation of Model Type that exposes the `data` property.
|
|
260
|
+
* Used at buildtime.
|
|
261
|
+
*/
|
|
262
|
+
export type InternalModel = SchemaModelType<
|
|
263
|
+
ModelType<ModelTypeParamShape>,
|
|
264
|
+
string,
|
|
265
|
+
true
|
|
266
|
+
> & {
|
|
267
|
+
data: InternalModelData;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
function _model<T extends ModelTypeParamShape>(fields: T['fields']) {
|
|
271
|
+
const data: ModelData = {
|
|
272
|
+
fields,
|
|
273
|
+
identifier: ['id'],
|
|
274
|
+
secondaryIndexes: [],
|
|
275
|
+
authorization: [],
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const builder = {
|
|
279
|
+
identifier(identifier) {
|
|
280
|
+
data.identifier = identifier;
|
|
281
|
+
|
|
282
|
+
return this;
|
|
283
|
+
},
|
|
284
|
+
secondaryIndexes(callback) {
|
|
285
|
+
data.secondaryIndexes = callback(modelIndex);
|
|
286
|
+
|
|
287
|
+
return this;
|
|
288
|
+
},
|
|
289
|
+
authorization(callback) {
|
|
290
|
+
const { resource: _, ...rest } = allow;
|
|
291
|
+
const rules = callback(rest);
|
|
292
|
+
data.authorization = Array.isArray(rules) ? rules : [rules];
|
|
293
|
+
|
|
294
|
+
return this;
|
|
295
|
+
},
|
|
296
|
+
...brand(brandName),
|
|
297
|
+
} as ModelType<T>;
|
|
298
|
+
|
|
299
|
+
return {
|
|
300
|
+
...builder,
|
|
301
|
+
data,
|
|
302
|
+
addRelationships(relationships) {
|
|
303
|
+
data.fields = { ...data.fields, ...relationships };
|
|
304
|
+
},
|
|
305
|
+
fields: data.fields,
|
|
306
|
+
} as InternalModel as ModelType<T>;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Model Type type guard
|
|
311
|
+
* @param modelType - api-next ModelType
|
|
312
|
+
* @returns true if the given value is a ModelSchema
|
|
313
|
+
*/
|
|
314
|
+
export const isSchemaModelType = (
|
|
315
|
+
modelType: any | SchemaModelType,
|
|
316
|
+
): modelType is SchemaModelType => {
|
|
317
|
+
const internalType = modelType as InternalModel;
|
|
318
|
+
return (
|
|
319
|
+
typeof internalType === 'object' &&
|
|
320
|
+
internalType.data !== undefined &&
|
|
321
|
+
internalType.data.fields !== undefined &&
|
|
322
|
+
internalType.data.authorization !== undefined &&
|
|
323
|
+
internalType.data.identifier !== undefined &&
|
|
324
|
+
internalType.data.secondaryIndexes !== undefined &&
|
|
325
|
+
typeof internalType.addRelationships === 'function'
|
|
326
|
+
);
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* A data model that creates a matching Amazon DynamoDB table and provides create, read (list and get), update,
|
|
331
|
+
* delete, and subscription APIs.
|
|
332
|
+
*
|
|
333
|
+
* @param fields database table fields. Supports scalar types and relationship types.
|
|
334
|
+
* @returns a data model definition
|
|
335
|
+
*/
|
|
336
|
+
export function model<T extends ModelFields>(
|
|
337
|
+
fields: T,
|
|
338
|
+
): ModelType<{
|
|
339
|
+
fields: T;
|
|
340
|
+
identifier: Array<'id'>;
|
|
341
|
+
secondaryIndexes: [];
|
|
342
|
+
authorization: [];
|
|
343
|
+
}> {
|
|
344
|
+
return _model(fields);
|
|
345
|
+
}
|
package/src/RefType.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { SetTypeSubArg } from '@aws-amplify/data-schema-types';
|
|
2
|
+
import { Brand } from './util';
|
|
3
|
+
import { AllowModifier, Authorization, allow } from './Authorization';
|
|
4
|
+
import { __auth } from './ModelField';
|
|
5
|
+
|
|
6
|
+
const brandName = 'ref';
|
|
7
|
+
|
|
8
|
+
type RefTypeData = {
|
|
9
|
+
type: 'ref';
|
|
10
|
+
link: string;
|
|
11
|
+
valueRequired: boolean;
|
|
12
|
+
array: boolean;
|
|
13
|
+
arrayRequired: boolean;
|
|
14
|
+
mutationOperations: MutationOperations[];
|
|
15
|
+
authorization: Authorization<any, any, any>[];
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export type RefTypeParamShape = {
|
|
19
|
+
type: 'ref';
|
|
20
|
+
link: string;
|
|
21
|
+
valueRequired: boolean;
|
|
22
|
+
array: boolean;
|
|
23
|
+
arrayRequired: boolean;
|
|
24
|
+
authorization: Authorization<any, any, any>[];
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
type MutationOperations = 'create' | 'update' | 'delete';
|
|
28
|
+
|
|
29
|
+
export type RefType<
|
|
30
|
+
T extends RefTypeParamShape,
|
|
31
|
+
K extends keyof RefType<T> = never,
|
|
32
|
+
Auth = undefined,
|
|
33
|
+
// Branding the exported type allows us to detect it
|
|
34
|
+
// nominally in our mapped types, ignoring structural overlap with other types
|
|
35
|
+
> = Omit<
|
|
36
|
+
{
|
|
37
|
+
/**
|
|
38
|
+
* Marks a field as required.
|
|
39
|
+
*/
|
|
40
|
+
required(): RefType<
|
|
41
|
+
SetTypeSubArg<
|
|
42
|
+
T,
|
|
43
|
+
T['array'] extends true ? 'arrayRequired' : 'valueRequired',
|
|
44
|
+
true
|
|
45
|
+
>,
|
|
46
|
+
K | 'required'
|
|
47
|
+
>;
|
|
48
|
+
/**
|
|
49
|
+
* Marks a field as an array of the specified ref type.
|
|
50
|
+
*/
|
|
51
|
+
array(): RefType<
|
|
52
|
+
SetTypeSubArg<T, 'array', true>,
|
|
53
|
+
Exclude<K, 'required'> | 'array'
|
|
54
|
+
>;
|
|
55
|
+
/**
|
|
56
|
+
* Configures field-level authorization rules. Pass in an array of authorizations `(a.allow.____)` to mix and match
|
|
57
|
+
* multiple authorization rules for this field.
|
|
58
|
+
*/
|
|
59
|
+
authorization<AuthRuleType extends Authorization<any, any, any>>(
|
|
60
|
+
callback: (allow: AllowModifier) => AuthRuleType | AuthRuleType[],
|
|
61
|
+
): RefType<T, K | 'authorization', AuthRuleType>;
|
|
62
|
+
|
|
63
|
+
mutations(operations: MutationOperations[]): RefType<T, K | 'mutations'>;
|
|
64
|
+
},
|
|
65
|
+
K
|
|
66
|
+
> & {
|
|
67
|
+
// This is a lie. This property is never set at runtime. It's just used to smuggle auth types through.
|
|
68
|
+
[__auth]?: Auth;
|
|
69
|
+
} & Brand<typeof brandName>;
|
|
70
|
+
|
|
71
|
+
function brandedBuilder<T extends RefTypeParamShape>(
|
|
72
|
+
builder: Record<keyof RefType<T> & string, any>,
|
|
73
|
+
): RefType<T> {
|
|
74
|
+
return builder as RefType<T>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Internal representation of Ref that exposes the `data` property.
|
|
79
|
+
* Used at buildtime.
|
|
80
|
+
*/
|
|
81
|
+
export type InternalRef = RefType<RefTypeParamShape> & {
|
|
82
|
+
data: RefTypeData;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
function _ref<T extends RefTypeParamShape>(link: T['link']) {
|
|
86
|
+
const data: RefTypeData = {
|
|
87
|
+
type: 'ref',
|
|
88
|
+
link,
|
|
89
|
+
valueRequired: false,
|
|
90
|
+
array: false,
|
|
91
|
+
arrayRequired: false,
|
|
92
|
+
mutationOperations: [],
|
|
93
|
+
authorization: [],
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const builder: RefType<T> = brandedBuilder({
|
|
97
|
+
required() {
|
|
98
|
+
if (data.array) {
|
|
99
|
+
data.arrayRequired = true;
|
|
100
|
+
} else {
|
|
101
|
+
data.valueRequired = true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return this;
|
|
105
|
+
},
|
|
106
|
+
array() {
|
|
107
|
+
data.array = true;
|
|
108
|
+
|
|
109
|
+
return this;
|
|
110
|
+
},
|
|
111
|
+
authorization<AuthRuleType extends Authorization<any, any, any>>(
|
|
112
|
+
callback: (allow: AllowModifier) => AuthRuleType | AuthRuleType[],
|
|
113
|
+
) {
|
|
114
|
+
const rules = callback(allow);
|
|
115
|
+
data.authorization = Array.isArray(rules) ? rules : [rules];
|
|
116
|
+
|
|
117
|
+
return this;
|
|
118
|
+
},
|
|
119
|
+
mutations(operations: MutationOperations[]) {
|
|
120
|
+
data.mutationOperations = operations;
|
|
121
|
+
return this;
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
return { ...builder, data } as InternalRef as RefType<T>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
type RefTypeArgFactory<Link extends string> = {
|
|
129
|
+
type: 'ref';
|
|
130
|
+
link: Link;
|
|
131
|
+
valueRequired: false;
|
|
132
|
+
array: false;
|
|
133
|
+
arrayRequired: false;
|
|
134
|
+
authorization: [];
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export function ref<Value extends string, T extends Value>(link: T) {
|
|
138
|
+
return _ref<RefTypeArgFactory<T>>(link);
|
|
139
|
+
}
|