{"version":3,"file":"APIClient.mjs","sources":["../../../../src/runtime/internals/APIClient.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nimport { resolveOwnerFields, capitalize, selfAwareAsync } from '../utils';\nimport { extendCancellability } from './cancellation';\nconst connectionType = {\n    HAS_ONE: 'HAS_ONE',\n    HAS_MANY: 'HAS_MANY',\n    BELONGS_TO: 'BELONGS_TO',\n};\n// When generating an SK's KeyConditionInput name, string-like types map to String\nconst skGraphQlFieldTypeMap = {\n    ID: 'ID',\n    String: 'String',\n    AWSDate: 'String',\n    AWSTime: 'String',\n    AWSDateTime: 'String',\n    AWSTimestamp: 'Int',\n    AWSEmail: 'String',\n    AWSPhone: 'String',\n    AWSURL: 'String',\n    AWSIPAddress: 'String',\n    AWSJSON: 'String',\n    Boolean: 'Boolean',\n    Int: 'Int',\n    Float: 'Float',\n};\n// move to util\nconst resolvedSkName = (sk) => {\n    if (sk.length === 1) {\n        return sk[0];\n    }\n    else {\n        return sk.reduce((acc, curr, idx) => {\n            if (idx === 0) {\n                return curr;\n            }\n            else {\n                return acc + capitalize(curr);\n            }\n        }, '');\n    }\n};\n/**\n * Crawls a model tree, starting with a given **individual** model instance record, looking\n * for related hasMany children to extract from their `items` containers.\n *\n * E.g., if we have a record like this:\n *\n * ```js\n * {\n *   id: 'some-id',\n *   children: {\n *     items: [\n *       { name: 'a' }\n *       { name: 'b' }\n *       { name: 'c' }\n *     ]\n *   }\n * }\n * ```\n *\n * And if `children` refers to *an array of another model* (as opposed to a custom type),\n * the `items` will be extracted. We do this because `items` is just the mechanism for nesting\n * child records -- we don't want customers to have to dig the items out in application code.\n * Ultimately, we return this \"flattened\" structure:\n *\n * ```js\n * {\n *   id: 'some-id',\n *   children: [\n *     { name: 'a' }\n *     { name: 'b' }\n *     { name: 'c' }\n *   ]\n * }\n * ```\n *\n * Notably, an identical record could be the result of a nested custom type that contains an\n * `items` property. This will *not* be flattened, because in that case the `items` property is\n * actually part of the customer's schema. Similarly if a model contains an explicit `items` field.\n *\n * @param modelIntrospection Top-level model introspection schema.\n * @param modelName The name of the model. Can be `undefined`. E.g., for customOperation return types.\n * @param modelRecord The individual \"model instance record\" to normalize.\n */\nexport const flattenItems = (modelIntrospection, modelName, modelRecord) => {\n    if (!modelRecord)\n        return null;\n    const mapped = {};\n    for (const [fieldName, value] of Object.entries(modelRecord)) {\n        const fieldDef = modelName\n            ? modelIntrospection.models[modelName]?.fields[fieldName]\n            : undefined;\n        const dvPair = { fieldDef, value };\n        if (isRelatedModelItemsArrayPair(dvPair)) {\n            mapped[fieldName] = dvPair.value.items.map((itemValue) => flattenItems(modelIntrospection, dvPair.fieldDef.type.model, itemValue));\n        }\n        else if (isRelatedModelProperty(fieldDef)) {\n            mapped[fieldName] = flattenItems(modelIntrospection, fieldDef.type.model, value);\n        }\n        else {\n            mapped[fieldName] = value;\n        }\n    }\n    return mapped;\n};\n/**\n * Determines whether the given field definition and associated result value\n * represent a related model array from a HasMany-type relationship.\n *\n * @param dv Pair of field definition and associated result value\n * @returns\n */\nfunction isRelatedModelItemsArrayPair(dv) {\n    return (typeof dv.fieldDef?.type === 'object' &&\n        'model' in dv.fieldDef.type &&\n        typeof dv.fieldDef.type.model === 'string' &&\n        dv.fieldDef.isArray &&\n        Array.isArray(dv.value?.items));\n}\n/**\n * Determines whether the given field definition represents a relationship\n * to another model.\n *\n * @param fieldDef\n * @returns\n */\nfunction isRelatedModelProperty(fieldDef) {\n    return (typeof fieldDef?.type === 'object' &&\n        'model' in fieldDef.type &&\n        typeof fieldDef.type.model === 'string');\n}\n// TODO: this should accept single result to support CRUD methods; create helper for array/list\nexport function initializeModel(client, modelName, result, modelIntrospection, authMode, authToken, context = false) {\n    const introModel = modelIntrospection.models[modelName];\n    const introModelFields = introModel.fields;\n    const modelFields = Object.entries(introModelFields)\n        .filter(([_, field]) => field?.type?.model !== undefined)\n        .map(([fieldName]) => fieldName);\n    return result.map((record) => {\n        if (record === null || record === undefined) {\n            return record;\n        }\n        const initializedRelationshipFields = {};\n        for (const fieldName of modelFields) {\n            const modelField = introModelFields[fieldName];\n            const modelFieldType = modelField?.type;\n            const relatedModelName = modelFieldType.model;\n            const relatedModel = modelIntrospection.models[relatedModelName];\n            const relatedModelPKFieldName = relatedModel.primaryKeyInfo.primaryKeyFieldName;\n            const relatedModelSKFieldNames = relatedModel.primaryKeyInfo.sortKeyFieldNames;\n            const relationType = modelField.association?.connectionType;\n            let connectionFields = [];\n            if (modelField.association &&\n                'associatedWith' in modelField.association) {\n                connectionFields = modelField.association.associatedWith;\n            }\n            const targetNames = [];\n            if (modelField.association && 'targetNames' in modelField.association) {\n                targetNames.push(...modelField.association.targetNames);\n            }\n            switch (relationType) {\n                case connectionType.BELONGS_TO: {\n                    const sortKeyValues = relatedModelSKFieldNames.reduce(\n                    // TODO(Eslint): is this implementation correct?\n                    (acc, curVal) => {\n                        if (record[curVal]) {\n                            acc[curVal] = record[curVal];\n                        }\n                        return acc;\n                    }, {});\n                    // if get is disabled on the related model\n                    if (client.models[relatedModelName]?.get === undefined) {\n                        break;\n                    }\n                    if (context) {\n                        initializedRelationshipFields[fieldName] = (contextSpec, options) => {\n                            if (record[targetNames[0]]) {\n                                return client.models[relatedModelName].get(contextSpec, {\n                                    [relatedModelPKFieldName]: record[targetNames[0]],\n                                    ...sortKeyValues,\n                                }, {\n                                    authMode: options?.authMode || authMode,\n                                    authToken: options?.authToken || authToken,\n                                });\n                            }\n                            return { data: null };\n                        };\n                    }\n                    else {\n                        initializedRelationshipFields[fieldName] = (options) => {\n                            if (record[targetNames[0]]) {\n                                return client.models[relatedModelName].get({\n                                    [relatedModelPKFieldName]: record[targetNames[0]],\n                                    ...sortKeyValues,\n                                }, {\n                                    authMode: options?.authMode || authMode,\n                                    authToken: options?.authToken || authToken,\n                                });\n                            }\n                            return { data: null };\n                        };\n                    }\n                    break;\n                }\n                case connectionType.HAS_ONE:\n                case connectionType.HAS_MANY: {\n                    /**\n                     * If the loader is a HAS_ONE, we just need to attempt to grab the first item\n                     * from the result.\n                     */\n                    const mapResult = relationType === connectionType.HAS_ONE\n                        ? (result) => {\n                            return {\n                                data: result?.data.shift() || null,\n                                errors: result.errors,\n                                extensions: result.extensions,\n                            };\n                        }\n                        : (result) => result;\n                    const parentPk = introModel.primaryKeyInfo.primaryKeyFieldName;\n                    const parentSK = introModel.primaryKeyInfo.sortKeyFieldNames;\n                    // M:N check - TODO: refactor\n                    const relatedModelField = relatedModel.fields[connectionFields[0]];\n                    const relatedModelFieldType = relatedModelField.type;\n                    if (relatedModelFieldType.model) {\n                        let relatedTargetNames = [];\n                        if (relatedModelField.association &&\n                            'targetNames' in relatedModelField.association) {\n                            relatedTargetNames = relatedModelField.association?.targetNames;\n                        }\n                        const hasManyFilter = relatedTargetNames.map((field, idx) => {\n                            if (idx === 0) {\n                                return { [field]: { eq: record[parentPk] } };\n                            }\n                            return { [field]: { eq: record[parentSK[idx - 1]] } };\n                        });\n                        // if list is disabled on the related model\n                        if (client.models[relatedModelName]?.list === undefined) {\n                            break;\n                        }\n                        if (context) {\n                            initializedRelationshipFields[fieldName] = (contextSpec, options) => {\n                                if (record[parentPk]) {\n                                    return selfAwareAsync(async (resultPromise) => {\n                                        const basePromise = client.models[relatedModelName].list(contextSpec, {\n                                            filter: { and: hasManyFilter },\n                                            limit: options?.limit,\n                                            nextToken: options?.nextToken,\n                                            authMode: options?.authMode || authMode,\n                                            authToken: options?.authToken || authToken,\n                                        });\n                                        const extendedBase = extendCancellability(basePromise, resultPromise);\n                                        return mapResult((await extendedBase));\n                                    });\n                                }\n                                return [];\n                            };\n                        }\n                        else {\n                            initializedRelationshipFields[fieldName] = (options) => {\n                                if (record[parentPk]) {\n                                    return selfAwareAsync(async (resultPromise) => {\n                                        const basePromise = client.models[relatedModelName].list({\n                                            filter: { and: hasManyFilter },\n                                            limit: options?.limit,\n                                            nextToken: options?.nextToken,\n                                            authMode: options?.authMode || authMode,\n                                            authToken: options?.authToken || authToken,\n                                        });\n                                        const extendedBase = extendCancellability(basePromise, resultPromise);\n                                        return mapResult((await extendedBase));\n                                    });\n                                }\n                                return [];\n                            };\n                        }\n                        break;\n                    }\n                    const hasManyFilter = connectionFields.map((field, idx) => {\n                        if (idx === 0) {\n                            return { [field]: { eq: record[parentPk] } };\n                        }\n                        return { [field]: { eq: record[parentSK[idx - 1]] } };\n                    });\n                    // if list is disabled on the related model\n                    if (client.models[relatedModelName]?.list === undefined) {\n                        break;\n                    }\n                    if (context) {\n                        initializedRelationshipFields[fieldName] = (contextSpec, options) => {\n                            if (record[parentPk]) {\n                                return selfAwareAsync(async (resultPromise) => {\n                                    const basePromise = client.models[relatedModelName].list(contextSpec, {\n                                        filter: { and: hasManyFilter },\n                                        limit: options?.limit,\n                                        nextToken: options?.nextToken,\n                                        authMode: options?.authMode || authMode,\n                                        authToken: options?.authToken || authToken,\n                                    });\n                                    const extendedBase = extendCancellability(basePromise, resultPromise);\n                                    return mapResult((await extendedBase));\n                                });\n                            }\n                            return [];\n                        };\n                    }\n                    else {\n                        initializedRelationshipFields[fieldName] = (options) => {\n                            if (record[parentPk]) {\n                                return selfAwareAsync(async (resultPromise) => {\n                                    const basePromise = client.models[relatedModelName].list({\n                                        filter: { and: hasManyFilter },\n                                        limit: options?.limit,\n                                        nextToken: options?.nextToken,\n                                        authMode: options?.authMode || authMode,\n                                        authToken: options?.authToken || authToken,\n                                    });\n                                    const extendedBase = extendCancellability(basePromise, resultPromise);\n                                    return mapResult((await extendedBase));\n                                });\n                            }\n                            return [];\n                        };\n                    }\n                    break;\n                }\n                default:\n                    break;\n            }\n        }\n        return { ...record, ...initializedRelationshipFields };\n    });\n}\nexport const graphQLOperationsInfo = {\n    CREATE: { operationPrefix: 'create', usePlural: false },\n    GET: { operationPrefix: 'get', usePlural: false },\n    UPDATE: { operationPrefix: 'update', usePlural: false },\n    DELETE: { operationPrefix: 'delete', usePlural: false },\n    LIST: { operationPrefix: 'list', usePlural: true },\n    INDEX_QUERY: { operationPrefix: '', usePlural: false },\n    ONCREATE: { operationPrefix: 'onCreate', usePlural: false },\n    ONUPDATE: { operationPrefix: 'onUpdate', usePlural: false },\n    ONDELETE: { operationPrefix: 'onDelete', usePlural: false },\n    OBSERVEQUERY: { operationPrefix: 'observeQuery', usePlural: false },\n};\nconst SELECTION_SET_WILDCARD = '*';\nexport const getDefaultSelectionSetForNonModelWithIR = (nonModelDefinition, modelIntrospection) => {\n    const { fields } = nonModelDefinition;\n    const mappedFields = Object.values(fields)\n        .map(({ type, name }) => {\n        if (typeof type.enum === 'string') {\n            return [name, FIELD_IR];\n        }\n        if (typeof type.nonModel === 'string') {\n            return [\n                name,\n                getDefaultSelectionSetForNonModelWithIR(modelIntrospection.nonModels[type.nonModel], modelIntrospection),\n            ];\n        }\n        if (typeof type === 'string') {\n            return [name, FIELD_IR];\n        }\n        return undefined;\n    })\n        .filter((pair) => pair !== undefined);\n    return Object.fromEntries(mappedFields);\n};\nconst getDefaultSelectionSetForModelWithIR = (modelDefinition, modelIntrospection) => {\n    const { fields } = modelDefinition;\n    const mappedFields = Object.values(fields)\n        .map(({ type, name }) => {\n        if (typeof type.enum === 'string' ||\n            typeof type === 'string') {\n            return [name, FIELD_IR];\n        }\n        if (typeof type.nonModel === 'string') {\n            return [\n                name,\n                getDefaultSelectionSetForNonModelWithIR(modelIntrospection.nonModels[type.nonModel], modelIntrospection),\n            ];\n        }\n        return undefined;\n    })\n        .filter((pair) => pair !== undefined);\n    const ownerFields = resolveOwnerFields(modelDefinition).map((field) => [\n        field,\n        FIELD_IR,\n    ]);\n    return Object.fromEntries(mappedFields.concat(ownerFields));\n};\nfunction defaultSelectionSetForModel(modelDefinition) {\n    // fields that are explicitly part of the graphql schema; not\n    // inferred from owner auth rules.\n    const { fields } = modelDefinition;\n    const explicitFields = Object.values(fields)\n        // Default selection set omits model fields\n        .map(({ type, name }) => {\n        if (typeof type === 'string')\n            return name;\n        if (typeof type === 'object') {\n            if (typeof type?.enum === 'string') {\n                return name;\n            }\n            else if (typeof type?.nonModel === 'string') {\n                return `${name}.${SELECTION_SET_WILDCARD}`;\n            }\n        }\n        return undefined;\n    })\n        .filter(Boolean);\n    // fields used for owner auth rules that may or may not also\n    // be explicit on the model.\n    const ownerFields = resolveOwnerFields(modelDefinition);\n    return Array.from(new Set(explicitFields.concat(ownerFields)));\n}\nconst FIELD_IR = '';\n/**\n * Generates nested Custom Selection Set IR from path\n *\n * @param modelDefinitions\n * @param modelName\n * @param selectionSet - array of object paths\n * @example\n * ### Given\n * `selectionSet = ['id', 'comments.post.id']`\n * ### Returns\n * ```ts\n * {\n *   id: '',\n *   comments: {\n *     items: { post: { id: '' } }\n *   }\n * }\n * ```\n */\nexport function customSelectionSetToIR(modelIntrospection, modelName, selectionSet) {\n    const dotNotationToObject = (path, modelOrNonModelName) => {\n        const [fieldName, ...rest] = path.split('.');\n        const nested = rest[0];\n        const modelOrNonModelDefinition = modelIntrospection.models[modelOrNonModelName] ??\n            modelIntrospection.nonModels[modelOrNonModelName];\n        const modelOrNonModelFields = modelOrNonModelDefinition?.fields;\n        const relatedModel = modelOrNonModelFields?.[fieldName]?.type?.model;\n        const relatedModelDefinition = modelIntrospection.models[relatedModel];\n        const relatedNonModel = modelOrNonModelFields?.[fieldName]?.type?.nonModel;\n        const relatedNonModelDefinition = modelIntrospection.nonModels[relatedNonModel];\n        const isModelOrNonModelOrFieldType = relatedModelDefinition\n            ? 'model'\n            : relatedNonModelDefinition\n                ? 'nonModel'\n                : 'field';\n        if (isModelOrNonModelOrFieldType === 'nonModel') {\n            let result = {};\n            if (!nested) {\n                throw Error(`${fieldName} must declare a wildcard (*) or a field of custom type ${relatedNonModel}`);\n            }\n            if (nested === SELECTION_SET_WILDCARD) {\n                result = {\n                    [fieldName]: getDefaultSelectionSetForNonModelWithIR(relatedNonModelDefinition, modelIntrospection),\n                };\n            }\n            else {\n                result = {\n                    [fieldName]: dotNotationToObject(rest.join('.'), relatedNonModel),\n                };\n            }\n            return result;\n        }\n        else if (isModelOrNonModelOrFieldType === 'model') {\n            let result = {};\n            if (!nested) {\n                throw Error(`${fieldName} must declare a wildcard (*) or a field of model ${relatedModel}`);\n            }\n            if (nested === SELECTION_SET_WILDCARD) {\n                const nestedRelatedModelDefinition = modelIntrospection.models[relatedModel];\n                result = {\n                    [fieldName]: getDefaultSelectionSetForModelWithIR(nestedRelatedModelDefinition, modelIntrospection),\n                };\n            }\n            else {\n                result = {\n                    [fieldName]: dotNotationToObject(rest.join('.'), relatedModel),\n                };\n            }\n            if (modelOrNonModelFields[fieldName]?.isArray) {\n                result = {\n                    [fieldName]: {\n                        items: result[fieldName],\n                    },\n                };\n            }\n            return result;\n        }\n        else {\n            const modelField = modelOrNonModelFields?.[fieldName];\n            const nonModelDefinition = modelIntrospection.nonModels[modelOrNonModelName];\n            const nonModelField = nonModelDefinition?.fields?.[fieldName];\n            if (!nonModelDefinition) {\n                const isOwnerField = resolveOwnerFields(modelOrNonModelDefinition).includes(fieldName);\n                if (!modelField && !isOwnerField) {\n                    throw Error(`${fieldName} is not a field of model ${modelOrNonModelName}`);\n                }\n            }\n            else {\n                if (!nonModelField) {\n                    throw Error(`${fieldName} is not a field of custom type ${modelOrNonModelName}`);\n                }\n            }\n            return { [fieldName]: FIELD_IR };\n        }\n    };\n    return selectionSet.reduce((resultObj, path) => deepMergeSelectionSetObjects(dotNotationToObject(path, modelName), resultObj), {});\n}\n/**\n * Stringifies selection set IR\n * * @example\n * ### Given\n * ```ts\n * {\n *   id: '',\n *   comments: {\n *     items: { post: { id: '' } }\n *   }\n * }\n * ```\n * ### Returns\n * `'id comments { items { post { id } } }'`\n */\nexport function selectionSetIRToString(obj) {\n    const res = [];\n    Object.entries(obj).forEach(([fieldName, value]) => {\n        if (value === FIELD_IR) {\n            res.push(fieldName);\n        }\n        else if (typeof value === 'object' && value !== null) {\n            if (value?.items) {\n                res.push(fieldName, '{', 'items', '{', selectionSetIRToString(value.items), '}', '}');\n            }\n            else {\n                res.push(fieldName, '{', selectionSetIRToString(value), '}');\n            }\n        }\n    });\n    return res.join(' ');\n}\n/**\n * Recursively merges selection set objects from `source` onto `target`.\n *\n * `target` will be updated. `source` will be left alone.\n *\n * @param source The object to merge into target.\n * @param target The object to be mutated.\n */\nfunction deepMergeSelectionSetObjects(source, target) {\n    const isObject = (obj) => obj && typeof obj === 'object';\n    for (const key in source) {\n        // This verification avoids 'Prototype Pollution' issue\n        if (!Object.prototype.hasOwnProperty.call(source, key))\n            continue;\n        if (Object.prototype.hasOwnProperty.call(target, key) &&\n            isObject(target[key])) {\n            deepMergeSelectionSetObjects(source[key], target[key]);\n        }\n        else {\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nexport function generateSelectionSet(modelIntrospection, modelName, selectionSet) {\n    const modelDefinition = modelIntrospection.models[modelName];\n    const selSetIr = customSelectionSetToIR(modelIntrospection, modelName, selectionSet ?? defaultSelectionSetForModel(modelDefinition));\n    const selSetString = selectionSetIRToString(selSetIr);\n    return selSetString;\n}\nexport function generateGraphQLDocument(modelIntrospection, modelDefinition, modelOperation, listArgs, indexMeta) {\n    const { name, pluralName, fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, attributes, } = modelDefinition;\n    // Use pascal case of the model name to generate the operations and the arguments.\n    // This is required to be in sync with the resources generated by the GraphQL transformers.\n    const namePascalCase = name.charAt(0).toUpperCase() + name.slice(1);\n    const pluralNamePascalCase = pluralName.charAt(0).toUpperCase() + pluralName.slice(1);\n    const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation];\n    const { selectionSet } = listArgs || {};\n    let graphQLFieldName;\n    let indexQueryArgs;\n    if (operationPrefix) {\n        graphQLFieldName = `${operationPrefix}${usePlural ? pluralNamePascalCase : namePascalCase}`;\n    }\n    else if (indexMeta) {\n        const { queryField, pk, sk = [] } = indexMeta;\n        graphQLFieldName = queryField;\n        /**\n         * **a. Single field SK** -> single arg where name is the field name and the type is `Model${gqlFieldType}KeyConditionInput` (nullable)\n         *  Note: string-like data types e.g.,  AWSDateTime, AWSEmail, AWSPhone, etc. should map to String. See `skGraphQlFieldTypeMap` above\n         * @example\n         * ```\n         * sk1: ModelStringKeyConditionInput\n         * ```\n         *\n         * **b. Composite SK** -> single arg where the name is camelCase concatenation of all the field names that comprise the SK\n         *  and the type is `Model${modelName}${keyAttributeName}CompositeKeyConditionInput` (nullable)\n         * @example\n         * ```\n         * sk1Sk2: ModelMyModelMyModelByPkAndSk1AndSk2CompositeKeyConditionInput\n         */\n        let skQueryArgs = {};\n        if (sk.length === 1) {\n            const [skField] = sk;\n            const type = (typeof fields[skField].type === 'string'\n                ? fields[skField].type\n                : 'String');\n            const normalizedType = skGraphQlFieldTypeMap[type];\n            skQueryArgs = {\n                [skField]: `Model${normalizedType}KeyConditionInput`,\n            };\n        }\n        else if (sk.length > 1) {\n            const compositeSkArgName = resolvedSkName(sk);\n            const keyName = attributes?.find((attr) => attr?.properties?.queryField === queryField)?.properties?.name;\n            skQueryArgs = {\n                [compositeSkArgName]: `Model${capitalize(name)}${capitalize(keyName)}CompositeKeyConditionInput`,\n            };\n        }\n        indexQueryArgs = {\n            [pk]: `${Object.prototype.hasOwnProperty.call(fields[pk].type, 'enum')\n                ? fields[pk].type.enum // AppSync schema sets enum type as the type of the enum fields that's used as PK\n                : fields[pk].type}!`,\n            ...skQueryArgs,\n        };\n    }\n    else {\n        throw new Error('Error generating GraphQL Document - invalid operation name');\n    }\n    let graphQLOperationType;\n    let graphQLSelectionSet;\n    let graphQLArguments;\n    const selectionSetFields = generateSelectionSet(modelIntrospection, name, selectionSet);\n    // default PK args for get and list operations\n    // modified below for CPK\n    const getPkArgs = {\n        [primaryKeyFieldName]: `${fields[primaryKeyFieldName].type}!`,\n    };\n    const listPkArgs = {};\n    /**\n     * Generate query field args for the SK if it's defined\n     *\n     * **1. Get queries** require each SK field to be present as a separate arg where the type is the field's GraphQL scalar type (non-nullable)\n     * @example\n     * ```\n     * sk1: String!, sk2: Int!\n     * ```\n     *\n     * **2. List queries**\n     *\n     * **a. Single field SK** -> single arg where name is the field name and the type is `Model${gqlFieldType}KeyConditionInput` (nullable)\n     *      Note: string-like data types e.g.,  AWSDateTime, AWSEmail, AWSPhone, etc. should map to String. See `skGraphQlFieldTypeMap` above\n     * @example\n     * ```\n     * sk1: ModelStringKeyConditionInput\n     * ```\n     *\n     * **b. Composite SK** -> single arg where the name is camelCase concatenation of all the field names that comprise the SK\n     *  and the type is `Model${modelName}PrimaryCompositeKeyConditionInput` (nullable)\n     * @example\n     * ```\n     * sk1Sk2: ModelMyModelPrimaryCompositeKeyConditionInput\n     * ```\n     */\n    const generateSkArgs = (op) => {\n        if (sortKeyFieldNames.length === 0)\n            return {};\n        if (op === 'get') {\n            return sortKeyFieldNames.reduce((acc, fieldName) => {\n                const fieldType = fields[fieldName].type;\n                if (op === 'get') {\n                    acc[fieldName] = `${fieldType}!`; // ! - SK args are non-nullable in Get queries\n                }\n                return acc;\n            }, {});\n        }\n        else {\n            // list SK\n            if (sortKeyFieldNames.length === 1) {\n                // Single SK\n                const [sk] = sortKeyFieldNames;\n                const type = (typeof fields[sk].type === 'string' ? fields[sk].type : 'String');\n                const normalizedType = skGraphQlFieldTypeMap[type];\n                return {\n                    [sk]: `Model${normalizedType}KeyConditionInput`,\n                };\n            }\n            else {\n                // Composite SK\n                const compositeSkArgName = resolvedSkName(sortKeyFieldNames);\n                return {\n                    [compositeSkArgName]: `Model${capitalize(name)}PrimaryCompositeKeyConditionInput`,\n                };\n            }\n        }\n    };\n    if (isCustomPrimaryKey) {\n        Object.assign(getPkArgs, generateSkArgs('get'));\n        Object.assign(listPkArgs, {\n            // PK is only included in list query field args in the generated GQL\n            // when explicitly specifying PK with .identifier(['fieldName']) or @primaryKey in the schema definition\n            [primaryKeyFieldName]: `${fields[primaryKeyFieldName].type}`, // PK is always a nullable arg for list (no `!` after the type)\n            sortDirection: 'ModelSortDirection',\n        }, generateSkArgs('list'));\n    }\n    switch (modelOperation) {\n        case 'CREATE':\n        case 'UPDATE':\n        case 'DELETE':\n            graphQLArguments ??\n                (graphQLArguments = {\n                    input: `${operationPrefix.charAt(0).toLocaleUpperCase() +\n                        operationPrefix.slice(1)}${namePascalCase}Input!`,\n                });\n            graphQLOperationType ?? (graphQLOperationType = 'mutation');\n        // TODO(Eslint): this this case clause correct without the break statement?\n        case 'GET':\n            graphQLArguments ?? (graphQLArguments = getPkArgs);\n            graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);\n        // TODO(Eslint): this this case clause correct without the break statement?\n        case 'LIST':\n            graphQLArguments ??\n                (graphQLArguments = {\n                    ...listPkArgs,\n                    // eslint doesn't like the ts-ignore, because it thinks it's unnecessary.\n                    // But TS doesn't like the `filter: ...` because it think it will always be\n                    // overwritten. (it won't be.) so, we need to ignore the TS error and then\n                    // ignore the eslint error on the ts-ignore.\n                    // eslint-disable-next-line\n                    // @ts-ignore\n                    filter: `Model${namePascalCase}FilterInput`,\n                    limit: 'Int',\n                    nextToken: 'String',\n                });\n            graphQLOperationType ?? (graphQLOperationType = 'query');\n            graphQLSelectionSet ??\n                (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`);\n        // TODO(Eslint): this this case clause correct without the break statement?\n        case 'INDEX_QUERY':\n            graphQLArguments ??\n                (graphQLArguments = {\n                    ...indexQueryArgs,\n                    filter: `Model${namePascalCase}FilterInput`,\n                    sortDirection: 'ModelSortDirection',\n                    limit: 'Int',\n                    nextToken: 'String',\n                });\n            graphQLOperationType ?? (graphQLOperationType = 'query');\n            graphQLSelectionSet ??\n                (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`);\n        // TODO(Eslint): this this case clause correct without the break statement?\n        case 'ONCREATE':\n        case 'ONUPDATE':\n        case 'ONDELETE':\n            graphQLArguments ??\n                (graphQLArguments = {\n                    filter: `ModelSubscription${namePascalCase}FilterInput`,\n                });\n            graphQLOperationType ?? (graphQLOperationType = 'subscription');\n            graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);\n            break;\n        case 'OBSERVEQUERY':\n        default:\n            throw new Error('Internal error: Attempted to generate graphql document for observeQuery. Please report this error.');\n    }\n    const graphQLDocument = `${graphQLOperationType}${graphQLArguments\n        ? `(${Object.entries(graphQLArguments).map(([fieldName, type]) => `$${fieldName}: ${type}`)})`\n        : ''} { ${graphQLFieldName}${graphQLArguments\n        ? `(${Object.keys(graphQLArguments).map((fieldName) => `${fieldName}: $${fieldName}`)})`\n        : ''} { ${graphQLSelectionSet} } }`;\n    return graphQLDocument;\n}\nexport function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospection, indexMeta) {\n    const { fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;\n    const skName = sortKeyFieldNames?.length && resolvedSkName(sortKeyFieldNames);\n    let variables = {};\n    // TODO: process input\n    switch (operation) {\n        case 'CREATE':\n            variables = {\n                input: arg\n                    ? normalizeMutationInput(arg, modelDefinition, modelIntrospection)\n                    : {},\n            };\n            break;\n        case 'UPDATE':\n            // readonly fields are not  updated\n            variables = {\n                input: arg\n                    ? Object.fromEntries(Object.entries(normalizeMutationInput(arg, modelDefinition, modelIntrospection)).filter(([fieldName]) => {\n                        // omit field from update input\n                        // if exists in fields and marked read only\n                        // if does not exist in fields but implicitly added to schema via ownership\n                        return fields[fieldName]\n                            ? !fields[fieldName].isReadOnly\n                            : !resolveOwnerFields(modelDefinition).includes(fieldName);\n                    }))\n                    : {},\n            };\n            break;\n        case 'GET':\n        case 'DELETE':\n            // only identifiers are sent\n            if (arg) {\n                variables = isCustomPrimaryKey\n                    ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {\n                        acc[fieldName] = arg[fieldName];\n                        return acc;\n                    }, {})\n                    : { [primaryKeyFieldName]: arg[primaryKeyFieldName] };\n            }\n            if (operation === 'DELETE') {\n                variables = { input: variables };\n            }\n            break;\n        case 'LIST':\n            if (arg?.filter) {\n                variables.filter = arg.filter;\n            }\n            if (arg?.sortDirection) {\n                variables.sortDirection = arg.sortDirection;\n            }\n            if (arg && arg[primaryKeyFieldName]) {\n                variables[primaryKeyFieldName] = arg[primaryKeyFieldName];\n            }\n            if (skName && arg && arg[skName]) {\n                variables[skName] = arg[skName];\n            }\n            if (arg?.nextToken) {\n                variables.nextToken = arg.nextToken;\n            }\n            if (arg?.limit) {\n                variables.limit = arg.limit;\n            }\n            break;\n        case 'INDEX_QUERY': {\n            const { pk, sk = [] } = indexMeta;\n            const indexQuerySkName = sk?.length && resolvedSkName(sk);\n            variables[pk] = arg[pk];\n            if (indexQuerySkName && arg && arg[indexQuerySkName]) {\n                variables[indexQuerySkName] = arg[indexQuerySkName];\n            }\n            if (arg?.filter) {\n                variables.filter = arg.filter;\n            }\n            if (arg?.sortDirection) {\n                variables.sortDirection = arg.sortDirection;\n            }\n            if (arg?.nextToken) {\n                variables.nextToken = arg.nextToken;\n            }\n            if (arg?.limit) {\n                variables.limit = arg.limit;\n            }\n            break;\n        }\n        case 'ONCREATE':\n        case 'ONUPDATE':\n        case 'ONDELETE':\n            if (arg?.filter) {\n                variables = { filter: arg.filter };\n            }\n            break;\n        case 'OBSERVEQUERY':\n            throw new Error('Internal error: Attempted to build variables for observeQuery. Please report this error.');\n        default: {\n            const exhaustiveCheck = operation;\n            throw new Error(`Unhandled operation case: ${exhaustiveCheck}`);\n        }\n    }\n    return variables;\n}\n/**\n * Iterates over mutation input values and resolves any model inputs to their corresponding join fields/values\n *\n * @example\n * ### Usage\n * ```ts\n * const result = normalizeMutationInput({ post: post }, model, modelDefinition);\n * ```\n * ### Result\n * ```ts\n * { postId: \"abc123\" }\n * ```\n *\n */\nexport function normalizeMutationInput(mutationInput, model, modelIntrospection) {\n    const { fields } = model;\n    const normalized = {};\n    Object.entries(mutationInput).forEach(([inputFieldName, inputValue]) => {\n        const fieldType = fields[inputFieldName]?.type;\n        const relatedModelName = fieldType?.model;\n        if (relatedModelName) {\n            const association = fields[inputFieldName]?.association;\n            const relatedModelDef = modelIntrospection.models[relatedModelName];\n            const relatedModelPkInfo = relatedModelDef.primaryKeyInfo;\n            if (association?.connectionType === connectionType.HAS_ONE) {\n                const associationHasOne = association;\n                associationHasOne.targetNames.forEach((targetName, idx) => {\n                    const associatedFieldName = associationHasOne.associatedWith[idx];\n                    normalized[targetName] = inputValue[associatedFieldName];\n                });\n            }\n            if (association?.connectionType === connectionType.BELONGS_TO) {\n                const associationBelongsTo = association;\n                associationBelongsTo.targetNames.forEach((targetName, idx) => {\n                    if (idx === 0) {\n                        const associatedFieldName = relatedModelPkInfo.primaryKeyFieldName;\n                        normalized[targetName] = inputValue[associatedFieldName];\n                    }\n                    else {\n                        const associatedFieldName = relatedModelPkInfo.sortKeyFieldNames[idx - 1];\n                        normalized[targetName] = inputValue[associatedFieldName];\n                    }\n                });\n            }\n        }\n        else {\n            normalized[inputFieldName] = inputValue;\n        }\n    });\n    return normalized;\n}\n/**\n * Produces a parameter object that can contains auth mode/token overrides\n * only if present in either `options` (first) or configured on the `client`\n * as a fallback.\n *\n * @param client Configured client from `generateClient`\n * @param options Args/Options object from call site.\n * @returns\n */\nexport function authModeParams(client, getInternals, options = {}) {\n    const internals = getInternals(client);\n    return {\n        authMode: options.authMode || internals.authMode,\n        authToken: options.authToken || internals.authToken,\n    };\n}\n/**\n * Retrieves custom headers from either the client or request options.\n * @param client V6Client | V6ClientSSRRequest | V6ClientSSRCookies - for extracting client headers\n * @param requestHeaders {@link CustomHeaders} - request headers\n * @returns custom headers as {@link CustomHeaders}\n */\nexport function getCustomHeaders(client, getInternals, requestHeaders) {\n    let headers = getInternals(client).headers || {};\n    // Individual request headers will take precedence over client headers.\n    // We intentionally do *not* merge client and request headers.\n    if (requestHeaders) {\n        headers = requestHeaders;\n    }\n    return headers;\n}\n"],"names":[],"mappings":"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"}