@aws-amplify/datastore
Version:
AppSyncLocal support for aws-amplify
1 lines • 18.5 kB
Source Map (JSON)
{"version":3,"file":"types.mjs","sources":["../../src/types.ts"],"sourcesContent":["import { extractPrimaryKeyFieldNames, isAWSDate, isAWSDateTime, isAWSEmail, isAWSIPAddress, isAWSJSON, isAWSPhone, isAWSTime, isAWSTimestamp, isAWSURL, } from './util';\n/**\n * @private\n * @param obj\n * @returns `true` if the given object likely represents a model in a schema.\n */\nexport function isSchemaModel(obj) {\n return obj && obj.pluralName !== undefined;\n}\n/**\n * @private\n * @param m\n * @returns `true` if the given schema entry defines Schema Model attributes.\n */\nexport function isSchemaModelWithAttributes(m) {\n return isSchemaModel(m) && m.attributes !== undefined;\n}\n/**\n * @private\n * @param obj\n * @returns `true` if the object is an `AssociatedWith` definition.\n */\nexport function isAssociatedWith(obj) {\n return obj && obj.associatedWith;\n}\n/**\n * @private\n * @param obj\n * @returns `true` if the given object specifies either `targetName` or `targetNames`.\n */\nexport function isTargetNameAssociation(obj) {\n return obj?.targetName || obj?.targetNames;\n}\n/**\n * @private\n * @param obj\n * @param fieldName\n * @returns Truthy if the object has a `FieldAssociation` for the given `fieldName`.\n */\nexport function isFieldAssociation(obj, fieldName) {\n return obj?.fields[fieldName]?.association?.connectionType;\n}\n/**\n * @private\n * @param attr\n * @returns `true` if the given attribute is an auth attribute with rules.\n */\nexport function isModelAttributeAuth(attr) {\n return (attr.type === 'auth' &&\n attr.properties &&\n attr.properties.rules &&\n attr.properties.rules.length > 0);\n}\n/**\n * @private\n * @param attr\n * @returns `true` if the given attribute is a key field.\n */\nexport function isModelAttributeKey(attr) {\n return (attr.type === 'key' &&\n attr.properties &&\n attr.properties.fields &&\n attr.properties.fields.length > 0);\n}\n/**\n * @private\n * @param attr\n * @returns `true` if the given attribute is a primary key, indicated by the key being unnamed.\n */\nexport function isModelAttributePrimaryKey(attr) {\n return isModelAttributeKey(attr) && attr.properties.name === undefined;\n}\n/**\n * @private\n * @param attr\n * @returns `true` if the given attribute represents a composite key with multiple fields.\n */\nexport function isModelAttributeCompositeKey(attr) {\n return (isModelAttributeKey(attr) &&\n attr.properties.name !== undefined &&\n attr.properties.fields.length > 2);\n}\nexport var ModelAttributeAuthAllow;\n(function (ModelAttributeAuthAllow) {\n ModelAttributeAuthAllow[\"CUSTOM\"] = \"custom\";\n ModelAttributeAuthAllow[\"OWNER\"] = \"owner\";\n ModelAttributeAuthAllow[\"GROUPS\"] = \"groups\";\n ModelAttributeAuthAllow[\"PRIVATE\"] = \"private\";\n ModelAttributeAuthAllow[\"PUBLIC\"] = \"public\";\n})(ModelAttributeAuthAllow || (ModelAttributeAuthAllow = {}));\nexport var ModelAttributeAuthProvider;\n(function (ModelAttributeAuthProvider) {\n ModelAttributeAuthProvider[\"FUNCTION\"] = \"function\";\n ModelAttributeAuthProvider[\"USER_POOLS\"] = \"userPools\";\n ModelAttributeAuthProvider[\"OIDC\"] = \"oidc\";\n ModelAttributeAuthProvider[\"IAM\"] = \"iam\";\n ModelAttributeAuthProvider[\"API_KEY\"] = \"apiKey\";\n})(ModelAttributeAuthProvider || (ModelAttributeAuthProvider = {}));\nexport var GraphQLScalarType;\n(function (GraphQLScalarType) {\n GraphQLScalarType[GraphQLScalarType[\"ID\"] = 0] = \"ID\";\n GraphQLScalarType[GraphQLScalarType[\"String\"] = 1] = \"String\";\n GraphQLScalarType[GraphQLScalarType[\"Int\"] = 2] = \"Int\";\n GraphQLScalarType[GraphQLScalarType[\"Float\"] = 3] = \"Float\";\n GraphQLScalarType[GraphQLScalarType[\"Boolean\"] = 4] = \"Boolean\";\n GraphQLScalarType[GraphQLScalarType[\"AWSDate\"] = 5] = \"AWSDate\";\n GraphQLScalarType[GraphQLScalarType[\"AWSTime\"] = 6] = \"AWSTime\";\n GraphQLScalarType[GraphQLScalarType[\"AWSDateTime\"] = 7] = \"AWSDateTime\";\n GraphQLScalarType[GraphQLScalarType[\"AWSTimestamp\"] = 8] = \"AWSTimestamp\";\n GraphQLScalarType[GraphQLScalarType[\"AWSEmail\"] = 9] = \"AWSEmail\";\n GraphQLScalarType[GraphQLScalarType[\"AWSJSON\"] = 10] = \"AWSJSON\";\n GraphQLScalarType[GraphQLScalarType[\"AWSURL\"] = 11] = \"AWSURL\";\n GraphQLScalarType[GraphQLScalarType[\"AWSPhone\"] = 12] = \"AWSPhone\";\n GraphQLScalarType[GraphQLScalarType[\"AWSIPAddress\"] = 13] = \"AWSIPAddress\";\n})(GraphQLScalarType || (GraphQLScalarType = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace\n(function (GraphQLScalarType) {\n function getJSType(scalar) {\n switch (scalar) {\n case 'Boolean':\n return 'boolean';\n case 'ID':\n case 'String':\n case 'AWSDate':\n case 'AWSTime':\n case 'AWSDateTime':\n case 'AWSEmail':\n case 'AWSURL':\n case 'AWSPhone':\n case 'AWSIPAddress':\n return 'string';\n case 'Int':\n case 'Float':\n case 'AWSTimestamp':\n return 'number';\n case 'AWSJSON':\n return 'object';\n default:\n throw new Error('Invalid scalar type');\n }\n }\n GraphQLScalarType.getJSType = getJSType;\n function getValidationFunction(scalar) {\n switch (scalar) {\n case 'AWSDate':\n return isAWSDate;\n case 'AWSTime':\n return isAWSTime;\n case 'AWSDateTime':\n return isAWSDateTime;\n case 'AWSTimestamp':\n return isAWSTimestamp;\n case 'AWSEmail':\n return isAWSEmail;\n case 'AWSJSON':\n return isAWSJSON;\n case 'AWSURL':\n return isAWSURL;\n case 'AWSPhone':\n return isAWSPhone;\n case 'AWSIPAddress':\n return isAWSIPAddress;\n default:\n return undefined;\n }\n }\n GraphQLScalarType.getValidationFunction = getValidationFunction;\n})(GraphQLScalarType || (GraphQLScalarType = {}));\n/**\n * @private\n * @returns `true` if the given field specifies a scalar type.\n */\nexport function isGraphQLScalarType(obj) {\n return obj && GraphQLScalarType[obj] !== undefined;\n}\n/**\n * @private\n * @param obj\n * @returns `true` if the given field specifies a Model.\n */\nexport function isModelFieldType(obj) {\n const modelField = 'model';\n if (obj && obj[modelField])\n return true;\n return false;\n}\n/**\n * @private\n * @param obj\n * @returns `true` if the given field specifies a custom non-model type.\n */\nexport function isNonModelFieldType(obj) {\n const typeField = 'nonModel';\n if (obj && obj[typeField])\n return true;\n return false;\n}\n/**\n * @private\n * @param obj\n * @returns `true` if the object is an `EnumFieldType`.\n */\nexport function isEnumFieldType(obj) {\n const modelField = 'enum';\n if (obj && obj[modelField])\n return true;\n return false;\n}\n/**\n * @private\n * @param obj\n * @param modelDefinition\n * @returns `true` if the given item is an object that has all identifier fields populated.\n */\nexport function isIdentifierObject(obj, modelDefinition) {\n const keys = extractPrimaryKeyFieldNames(modelDefinition);\n return (typeof obj === 'object' && obj && keys.every(k => obj[k] !== undefined));\n}\n// #endregion\n// #region Subscription messages\nexport var OpType;\n(function (OpType) {\n OpType[\"INSERT\"] = \"INSERT\";\n OpType[\"UPDATE\"] = \"UPDATE\";\n OpType[\"DELETE\"] = \"DELETE\";\n})(OpType || (OpType = {}));\n/**\n * @private\n * @param obj\n * @returns `true` if the given predicate field object, specifying an [in-]equality test against a field.\n */\nexport function isPredicateObj(obj) {\n return obj && obj.field !== undefined;\n}\n/**\n * @private\n * @param obj\n * @returns `true` if the given predicate object is a \"group\" like \"and\", \"or\", or \"not\".\n */\nexport function isPredicateGroup(obj) {\n return obj && obj.type !== undefined;\n}\nexport var QueryOne;\n(function (QueryOne) {\n QueryOne[QueryOne[\"FIRST\"] = 0] = \"FIRST\";\n QueryOne[QueryOne[\"LAST\"] = 1] = \"LAST\";\n})(QueryOne || (QueryOne = {}));\nexport var SortDirection;\n(function (SortDirection) {\n SortDirection[\"ASCENDING\"] = \"ASCENDING\";\n SortDirection[\"DESCENDING\"] = \"DESCENDING\";\n})(SortDirection || (SortDirection = {}));\nexport var AuthModeStrategyType;\n(function (AuthModeStrategyType) {\n AuthModeStrategyType[\"DEFAULT\"] = \"DEFAULT\";\n AuthModeStrategyType[\"MULTI_AUTH\"] = \"MULTI_AUTH\";\n})(AuthModeStrategyType || (AuthModeStrategyType = {}));\nexport var ModelOperation;\n(function (ModelOperation) {\n ModelOperation[\"CREATE\"] = \"CREATE\";\n ModelOperation[\"READ\"] = \"READ\";\n ModelOperation[\"UPDATE\"] = \"UPDATE\";\n ModelOperation[\"DELETE\"] = \"DELETE\";\n})(ModelOperation || (ModelOperation = {}));\n/**\n * Build an expression that can be used to filter which items of a given Model\n * are synchronized down from the GraphQL service. E.g.,\n *\n * ```ts\n * import { DataStore, syncExpression } from 'aws-amplify/datastore';\n * import { Post, Comment } from './models';\n *\n *\n * DataStore.configure({\n * \tsyncExpressions: [\n * \t\tsyncExpression(Post, () => {\n * \t\t\treturn (post) => post.rating.gt(5);\n * \t\t}),\n * \t\tsyncExpression(Comment, () => {\n * \t\t\treturn (comment) => comment.status.eq('active');\n * \t\t})\n * \t]\n * });\n * ```\n *\n * When DataStore starts syncing, only Posts with `rating > 5` and Comments with\n * `status === 'active'` will be synced down to the user's local store.\n *\n * @param modelConstructor The Model from the schema.\n * @param conditionProducer A function that builds a condition object that can describe how to filter the model.\n * @returns An sync expression object that can be attached to the DataStore `syncExpressions` configuration property.\n */\nexport async function syncExpression(modelConstructor, conditionProducer) {\n return {\n modelConstructor,\n conditionProducer,\n };\n}\nexport var ProcessName;\n(function (ProcessName) {\n ProcessName[\"sync\"] = \"sync\";\n ProcessName[\"mutate\"] = \"mutate\";\n ProcessName[\"subscribe\"] = \"subscribe\";\n})(ProcessName || (ProcessName = {}));\nexport const DISCARD = Symbol('DISCARD');\nexport var LimitTimerRaceResolvedValues;\n(function (LimitTimerRaceResolvedValues) {\n LimitTimerRaceResolvedValues[\"LIMIT\"] = \"LIMIT\";\n LimitTimerRaceResolvedValues[\"TIMER\"] = \"TIMER\";\n})(LimitTimerRaceResolvedValues || (LimitTimerRaceResolvedValues = {}));\n/**\n * A pointer used by DataStore internally to lookup predicate details\n * that should not be exposed on public customer interfaces.\n */\nexport class PredicateInternalsKey {\n constructor() {\n this.__isPredicateInternalsKeySentinel = true;\n }\n}\n// #endregion\n"],"names":[],"mappings":"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"}