{"version":3,"file":"datastore.mjs","sources":["../../../src/datastore/datastore.ts"],"sourcesContent":["/* eslint-disable no-console */\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { InternalAPI } from '@aws-amplify/api/internals';\nimport { Amplify, Cache, ConsoleLogger, Hub } from '@aws-amplify/core';\nimport { enablePatches, immerable, produce, setAutoFreeze, } from 'immer';\nimport { BackgroundProcessManager, amplifyUuid, } from '@aws-amplify/core/internals/utils';\nimport { Observable, filter } from 'rxjs';\nimport { defaultAuthStrategy, multiAuthStrategy } from '../authModeStrategies';\nimport { ModelPredicateCreator, ModelSortPredicateCreator, isPredicatesAll, } from '../predicates';\nimport { ExclusiveStorage as Storage } from '../storage/storage';\nimport { ModelRelationship } from '../storage/relationship';\nimport { ControlMessage, SyncEngine } from '../sync';\nimport { AuthModeStrategyType, GraphQLScalarType, isGraphQLScalarType, isIdentifierObject, isModelFieldType, isNonModelFieldType, isSchemaModelWithAttributes, } from '../types';\nimport { DATASTORE, DeferredCallbackResolver, STORAGE, SYNC, USER, errorMessages, establishRelationAndKeys, extractPrimaryKeyFieldNames, extractPrimaryKeysAndValues, getTimestampFields, inMemoryPagination, isIdManaged, isIdOptionallyManaged, isModelConstructor, isNullOrUndefined, mergePatches, monotonicUlidFactory, registerNonModelClass, sortCompareFunction, } from '../util';\nimport { internals, predicateFor, recursivePredicateFor, } from '../predicates/next';\nimport { getIdentifierValue } from '../sync/utils';\nimport { isNode } from './utils';\nsetAutoFreeze(true);\nenablePatches();\nconst logger = new ConsoleLogger('DataStore');\nconst ulid = monotonicUlidFactory(Date.now());\nconst SETTING_SCHEMA_VERSION = 'schemaVersion';\nlet schema;\nconst modelNamespaceMap = new WeakMap();\n/**\n * Stores data for crafting the correct update mutation input for a model.\n *\n * - `Patch[]` - array of changed fields and metadata.\n * - `PersistentModel` - the source model, used for diffing object-type fields.\n */\nconst modelPatchesMap = new WeakMap();\nconst getModelDefinition = (modelConstructor) => {\n    const namespace = modelNamespaceMap.get(modelConstructor);\n    const definition = namespace\n        ? schema.namespaces[namespace].models[modelConstructor.name]\n        : undefined;\n    return definition;\n};\n/**\n * Determines whether the given object is a Model Constructor that DataStore can\n * safely use to construct objects and discover related metadata.\n *\n * @param obj The object to test.\n */\nconst isValidModelConstructor = (obj) => {\n    return isModelConstructor(obj) && modelNamespaceMap.has(obj);\n};\nconst namespaceResolver = modelConstructor => {\n    const resolver = modelNamespaceMap.get(modelConstructor);\n    if (!resolver) {\n        throw new Error(`Namespace Resolver for '${modelConstructor.name}' not found! This is probably a bug in '@amplify-js/datastore'.`);\n    }\n    return resolver;\n};\n/**\n * Creates a predicate without any conditions that can be passed to customer\n * code to have conditions added to it.\n *\n * For example, in this query:\n *\n * ```ts\n * await DataStore.query(\n * \tModel,\n * \titem => item.field.eq('value')\n * );\n * ```\n *\n * `buildSeedPredicate(Model)` is used to create `item`, which is passed to the\n * predicate function, which in turn uses that \"seed\" predicate (`item`) to build\n * a predicate tree.\n *\n * @param modelConstructor The model the predicate will query.\n */\nconst buildSeedPredicate = (modelConstructor) => {\n    if (!modelConstructor)\n        throw new Error('Missing modelConstructor');\n    const modelSchema = getModelDefinition(modelConstructor);\n    if (!modelSchema)\n        throw new Error('Missing modelSchema');\n    const pks = extractPrimaryKeyFieldNames(modelSchema);\n    if (!pks)\n        throw new Error('Could not determine PK');\n    return recursivePredicateFor({\n        builder: modelConstructor,\n        schema: modelSchema,\n        pkField: pks,\n    });\n};\n// exporting syncClasses for testing outbox.test.ts\n// TODO(eslint): refactor not to export non-constant\n// eslint-disable-next-line import/no-mutable-exports\nexport let syncClasses;\nlet userClasses;\nlet dataStoreClasses;\nlet storageClasses;\n/**\n * Maps a model to its related models for memoization/immutability.\n */\nconst modelInstanceAssociationsMap = new WeakMap();\n/**\n * Describes whether and to what a model is attached for lazy loading purposes.\n */\nvar ModelAttachment;\n(function (ModelAttachment) {\n    /**\n     * Model doesn't lazy load from any data source.\n     *\n     * Related entity properties provided at instantiation are returned\n     * via the respective lazy interfaces when their properties are invoked.\n     */\n    ModelAttachment[\"Detached\"] = \"Detached\";\n    /**\n     * Model lazy loads from the global DataStore.\n     */\n    ModelAttachment[\"DataStore\"] = \"DataStore\";\n    /**\n     * Demonstrative. Not yet implemented.\n     */\n    ModelAttachment[\"API\"] = \"API\";\n})(ModelAttachment || (ModelAttachment = {}));\n/**\n * Tells us which data source a model is attached to (lazy loads from).\n *\n * If `Deatched`, the model's lazy properties will only ever return properties\n * from memory provided at construction time.\n */\nconst attachedModelInstances = new WeakMap();\n/**\n * Registers a model instance against a data source (DataStore, API, or\n * Detached/None).\n *\n * The API option is demonstrative. Lazy loading against API is not yet\n * implemented.\n *\n * @param result A model instance or array of instances\n * @param attachment A ModelAttachment data source\n * @returns passes the `result` back through after attachment\n */\nexport function attached(result, attachment) {\n    if (Array.isArray(result)) {\n        result.map(record => attached(record, attachment));\n    }\n    else {\n        result && attachedModelInstances.set(result, attachment);\n    }\n    return result;\n}\n/**\n * Determines what source a model instance should lazy load from.\n *\n * If the instace was never explicitly registered, it is detached by default.\n *\n * @param instance A model instance\n */\nexport const getAttachment = (instance) => {\n    return attachedModelInstances.has(instance)\n        ? attachedModelInstances.get(instance)\n        : ModelAttachment.Detached;\n};\nconst initSchema = (userSchema) => {\n    if (schema !== undefined) {\n        console.warn('The schema has already been initialized');\n        return userClasses;\n    }\n    logger.log('validating schema', { schema: userSchema });\n    checkSchemaCodegenVersion(userSchema.codegenVersion);\n    const internalUserNamespace = {\n        name: USER,\n        ...userSchema,\n    };\n    logger.log('DataStore', 'Init models');\n    userClasses = createTypeClasses(internalUserNamespace);\n    logger.log('DataStore', 'Models initialized');\n    const dataStoreNamespace = getNamespace();\n    const storageNamespace = Storage.getNamespace();\n    const syncNamespace = SyncEngine.getNamespace();\n    dataStoreClasses = createTypeClasses(dataStoreNamespace);\n    storageClasses = createTypeClasses(storageNamespace);\n    syncClasses = createTypeClasses(syncNamespace);\n    schema = {\n        namespaces: {\n            [dataStoreNamespace.name]: dataStoreNamespace,\n            [internalUserNamespace.name]: internalUserNamespace,\n            [storageNamespace.name]: storageNamespace,\n            [syncNamespace.name]: syncNamespace,\n        },\n        version: userSchema.version,\n        codegenVersion: userSchema.codegenVersion,\n    };\n    Object.keys(schema.namespaces).forEach(namespace => {\n        const [relations, keys] = establishRelationAndKeys(schema.namespaces[namespace]);\n        schema.namespaces[namespace].relationships = relations;\n        schema.namespaces[namespace].keys = keys;\n        const modelAssociations = new Map();\n        Object.values(schema.namespaces[namespace].models).forEach(model => {\n            const connectedModels = [];\n            Object.values(model.fields)\n                .filter(field => field.association &&\n                field.association.connectionType === 'BELONGS_TO' &&\n                field.type.model !== model.name)\n                .forEach(field => connectedModels.push(field.type.model));\n            modelAssociations.set(model.name, connectedModels);\n            // Precompute model info (such as pk fields) so that downstream schema consumers\n            // (such as predicate builders) don't have to reach back into \"DataStore\" space\n            // to go looking for it.\n            Object.values(model.fields).forEach(field => {\n                const relatedModel = userClasses[field.type.model];\n                if (isModelConstructor(relatedModel)) {\n                    Object.defineProperty(field.type, 'modelConstructor', {\n                        get: () => {\n                            const relatedModelDefinition = getModelDefinition(relatedModel);\n                            if (!relatedModelDefinition)\n                                throw new Error(`Could not find model definition for ${relatedModel.name}`);\n                            return {\n                                builder: relatedModel,\n                                schema: relatedModelDefinition,\n                                pkField: extractPrimaryKeyFieldNames(relatedModelDefinition),\n                            };\n                        },\n                    });\n                }\n            });\n            // compatibility with legacy/pre-PK codegen for lazy loading to inject\n            // index fields into the model definition.\n            // definition.cloudFields = { ...definition.fields };\n            const { indexes } = schema.namespaces[namespace].relationships[model.name];\n            const indexFields = new Set();\n            for (const index of indexes) {\n                for (const indexField of index[1]) {\n                    indexFields.add(indexField);\n                }\n            }\n            model.allFields = {\n                ...Object.fromEntries([...indexFields.values()].map(name => [\n                    name,\n                    {\n                        name,\n                        type: 'ID',\n                        isArray: false,\n                    },\n                ])),\n                ...model.fields,\n            };\n        });\n        const result = new Map();\n        let count = 1000;\n        // eslint-disable-next-line no-constant-binary-expression\n        while (true && count > 0) {\n            if (modelAssociations.size === 0) {\n                break;\n            }\n            count--;\n            if (count === 0) {\n                throw new Error('Models are not topologically sortable. Please verify your schema.');\n            }\n            for (const modelName of Array.from(modelAssociations.keys())) {\n                const parents = modelAssociations.get(modelName);\n                if (parents?.every(x => result.has(x))) {\n                    result.set(modelName, parents);\n                }\n            }\n            Array.from(result.keys()).forEach(x => modelAssociations.delete(x));\n        }\n        schema.namespaces[namespace].modelTopologicalOrdering = result;\n    });\n    return userClasses;\n};\n/**\n * Throws an exception if the schema has *not* been initialized\n * by `initSchema()`.\n *\n * **To be called before trying to access schema.**\n *\n * Currently this only needs to be called in `start()` and `clear()` because\n * all other functions will call start first.\n */\nconst checkSchemaInitialized = () => {\n    if (schema === undefined) {\n        const message = 'Schema is not initialized. DataStore will not function as expected. This could happen if you have multiple versions of DataStore installed. Please see https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js/#check-for-duplicate-versions';\n        logger.error(message);\n        throw new Error(message);\n    }\n};\n/**\n * Throws an exception if the schema is using a codegen version that is not supported.\n *\n * Set the supported version by setting majorVersion and minorVersion\n * This functions similar to ^ version range.\n * The tested codegenVersion major version must exactly match the set majorVersion\n * The tested codegenVersion minor version must be gt or equal to the set minorVersion\n * Example: For a min supported version of 5.4.0 set majorVersion = 5 and minorVersion = 4\n *\n * This regex will not work when setting a supported range with minor version\n * of 2 or more digits.\n * i.e. minorVersion = 10 will not work\n * The regex will work for testing a codegenVersion with multi digit minor\n * versions as long as the minimum minorVersion is single digit.\n * i.e. codegenVersion = 5.30.1, majorVersion = 5, minorVersion = 4 PASSES\n *\n * @param codegenVersion schema codegenVersion\n */\nconst checkSchemaCodegenVersion = (codegenVersion) => {\n    const majorVersion = 3;\n    const minorVersion = 2;\n    let isValid = false;\n    try {\n        const versionParts = codegenVersion.split('.');\n        const [major, minor] = versionParts;\n        isValid = Number(major) === majorVersion && Number(minor) >= minorVersion;\n    }\n    catch (err) {\n        console.log(`Error parsing codegen version: ${codegenVersion}\\n${err}`);\n    }\n    if (!isValid) {\n        const message = `Models were generated with an unsupported version of codegen. Codegen artifacts are from ${codegenVersion || 'an unknown version'}, whereas ^${majorVersion}.${minorVersion}.0 is required. ` +\n            \"Update to the latest CLI and run 'amplify codegen models'.\";\n        logger.error(message);\n        throw new Error(message);\n    }\n};\nconst createTypeClasses = namespace => {\n    const classes = {};\n    Object.entries(namespace.models).forEach(([modelName, modelDefinition]) => {\n        const clazz = createModelClass(modelDefinition);\n        classes[modelName] = clazz;\n        modelNamespaceMap.set(clazz, namespace.name);\n    });\n    Object.entries(namespace.nonModels || {}).forEach(([typeName, typeDefinition]) => {\n        const clazz = createNonModelClass(typeDefinition);\n        classes[typeName] = clazz;\n    });\n    return classes;\n};\n/**\n * Collection of instantiated models to allow storage of metadata apart from\n * the model visible to the consuming app -- in case the app doesn't have\n * metadata fields (_version, _deleted, etc.) exposed on the model itself.\n */\nconst instancesMetadata = new WeakSet();\nfunction modelInstanceCreator(ModelConstructor, init) {\n    instancesMetadata.add(init);\n    return new ModelConstructor(init);\n}\nconst validateModelFields = (modelDefinition) => (k, v) => {\n    const fieldDefinition = modelDefinition.fields[k];\n    if (fieldDefinition !== undefined) {\n        const { type, isRequired, isArrayNullable, name, isArray } = fieldDefinition;\n        const timestamps = isSchemaModelWithAttributes(modelDefinition)\n            ? getTimestampFields(modelDefinition)\n            : {};\n        const isTimestampField = !!timestamps[name];\n        if (((!isArray && isRequired) || (isArray && !isArrayNullable)) &&\n            !isTimestampField &&\n            (v === null || v === undefined)) {\n            throw new Error(`Field ${name} is required`);\n        }\n        if (isSchemaModelWithAttributes(modelDefinition) &&\n            !isIdManaged(modelDefinition)) {\n            const keys = extractPrimaryKeyFieldNames(modelDefinition);\n            if (keys.includes(k) && v === '') {\n                logger.error(errorMessages.idEmptyString, { k, value: v });\n                throw new Error(errorMessages.idEmptyString);\n            }\n        }\n        if (isGraphQLScalarType(type)) {\n            const jsType = GraphQLScalarType.getJSType(type);\n            const validateScalar = GraphQLScalarType.getValidationFunction(type);\n            if (type === 'AWSJSON') {\n                if (typeof v === jsType) {\n                    return;\n                }\n                if (typeof v === 'string') {\n                    try {\n                        JSON.parse(v);\n                        return;\n                    }\n                    catch (error) {\n                        throw new Error(`Field ${name} is an invalid JSON object. ${v}`);\n                    }\n                }\n            }\n            if (isArray) {\n                let errorTypeText = jsType;\n                if (!isRequired) {\n                    errorTypeText = `${jsType} | null | undefined`;\n                }\n                if (!Array.isArray(v) && !isArrayNullable) {\n                    throw new Error(`Field ${name} should be of type [${errorTypeText}], ${typeof v} received. ${v}`);\n                }\n                if (!isNullOrUndefined(v) &&\n                    v.some(e => isNullOrUndefined(e) ? isRequired : typeof e !== jsType)) {\n                    const elemTypes = v\n                        .map(e => (e === null ? 'null' : typeof e))\n                        .join(',');\n                    throw new Error(`All elements in the ${name} array should be of type ${errorTypeText}, [${elemTypes}] received. ${v}`);\n                }\n                if (validateScalar && !isNullOrUndefined(v)) {\n                    const validationStatus = v.map(e => {\n                        if (!isNullOrUndefined(e)) {\n                            return validateScalar(e);\n                        }\n                        else if (isNullOrUndefined(e) && !isRequired) {\n                            return true;\n                        }\n                        else {\n                            return false;\n                        }\n                    });\n                    if (!validationStatus.every(s => s)) {\n                        throw new Error(`All elements in the ${name} array should be of type ${type}, validation failed for one or more elements. ${v}`);\n                    }\n                }\n            }\n            else if (!isRequired && v === undefined) {\n                // no-op for this branch but still to filter this branch out\n            }\n            else if (typeof v !== jsType && v !== null) {\n                throw new Error(`Field ${name} should be of type ${jsType}, ${typeof v} received. ${v}`);\n            }\n            else if (!isNullOrUndefined(v) &&\n                validateScalar &&\n                !validateScalar(v) // TODO: why never, TS ... why ...\n            ) {\n                throw new Error(`Field ${name} should be of type ${type}, validation failed. ${v}`);\n            }\n        }\n        else if (isNonModelFieldType(type)) {\n            // do not check non model fields if undefined or null\n            if (!isNullOrUndefined(v)) {\n                const subNonModelDefinition = schema.namespaces.user.nonModels[type.nonModel];\n                const modelValidator = validateModelFields(subNonModelDefinition);\n                if (isArray) {\n                    let errorTypeText = type.nonModel;\n                    if (!isRequired) {\n                        errorTypeText = `${type.nonModel} | null | undefined`;\n                    }\n                    if (!Array.isArray(v)) {\n                        throw new Error(`Field ${name} should be of type [${errorTypeText}], ${typeof v} received. ${v}`);\n                    }\n                    v.forEach(item => {\n                        if ((isNullOrUndefined(item) && isRequired) ||\n                            (typeof item !== 'object' && typeof item !== 'undefined')) {\n                            throw new Error(`All elements in the ${name} array should be of type ${type.nonModel}, [${typeof item}] received. ${item}`);\n                        }\n                        if (!isNullOrUndefined(item)) {\n                            Object.keys(subNonModelDefinition.fields).forEach(subKey => {\n                                modelValidator(subKey, item[subKey]);\n                            });\n                        }\n                    });\n                }\n                else {\n                    if (typeof v !== 'object') {\n                        throw new Error(`Field ${name} should be of type ${type.nonModel}, ${typeof v} recieved. ${v}`);\n                    }\n                    Object.keys(subNonModelDefinition.fields).forEach(subKey => {\n                        modelValidator(subKey, v[subKey]);\n                    });\n                }\n            }\n        }\n    }\n};\nconst castInstanceType = (modelDefinition, k, v) => {\n    const { isArray, type } = modelDefinition.fields[k] || {};\n    // attempt to parse stringified JSON\n    if (typeof v === 'string' &&\n        (isArray ||\n            type === 'AWSJSON' ||\n            isNonModelFieldType(type) ||\n            isModelFieldType(type))) {\n        try {\n            return JSON.parse(v);\n        }\n        catch {\n            // if JSON is invalid, don't throw and let modelValidator handle it\n        }\n    }\n    // cast from numeric representation of boolean to JS boolean\n    if (typeof v === 'number' && type === 'Boolean') {\n        return Boolean(v);\n    }\n    return v;\n};\n/**\n * Records the patches (as if against an empty object) used to initialize\n * an instance of a Model. This can be used for determining which fields to\n * send to the cloud durnig a CREATE mutation.\n */\nconst initPatches = new WeakMap();\n/**\n * Attempts to apply type-aware, casted field values from a given `init`\n * object to the given `draft`.\n *\n * @param init The initialization object to extract field values from.\n * @param modelDefinition The definition describing the target object shape.\n * @param draft The draft to apply field values to.\n */\nconst initializeInstance = (init, modelDefinition, draft) => {\n    const modelValidator = validateModelFields(modelDefinition);\n    Object.entries(init).forEach(([k, v]) => {\n        const parsedValue = castInstanceType(modelDefinition, k, v);\n        modelValidator(k, parsedValue);\n        draft[k] = parsedValue;\n    });\n};\n/**\n * Updates a draft to standardize its customer-defined fields so that they are\n * consistent with the data as it would look after having been synchronized from\n * Cloud storage.\n *\n * The exceptions to this are:\n *\n * 1. Non-schema/Internal [sync] metadata fields.\n * 2. Cloud-managed fields, which are `null` until set by cloud storage.\n *\n * This function should be expanded if/when deviations between canonical Cloud\n * storage data and locally managed data are found. For now, the known areas\n * that require normalization are:\n *\n * 1. Ensuring all non-metadata fields are *defined*. (I.e., turn `undefined` -> `null`.)\n *\n * @param modelDefinition Definition for the draft. Used to discover all fields.\n * @param draft The instance draft to apply normalizations to.\n */\nconst normalize = (modelDefinition, draft) => {\n    for (const k of Object.keys(modelDefinition.fields)) {\n        if (draft[k] === undefined)\n            draft[k] = null;\n    }\n};\nconst createModelClass = (modelDefinition) => {\n    const clazz = class Model {\n        constructor(init) {\n            // we create a base instance first so we can distinguish which fields were explicitly\n            // set by customer code versus those set by normalization. only those fields\n            // which are explicitly set by customers should be part of create mutations.\n            let patches = [];\n            const baseInstance = produce(this, (draft) => {\n                initializeInstance(init, modelDefinition, draft);\n                // model is initialized inside a DataStore component (e.g. by Sync Engine, Storage Engine, etc.)\n                const isInternallyInitialized = instancesMetadata.has(init);\n                const modelInstanceMetadata = isInternallyInitialized\n                    ? init\n                    : {};\n                const { id: _id } = modelInstanceMetadata;\n                if (isIdManaged(modelDefinition)) {\n                    const isInternalModel = _id !== null && _id !== undefined;\n                    const id = isInternalModel\n                        ? _id\n                        : modelDefinition.syncable\n                            ? amplifyUuid()\n                            : ulid();\n                    draft.id = id;\n                }\n                else if (isIdOptionallyManaged(modelDefinition)) {\n                    // only auto-populate if the id was not provided\n                    draft.id =\n                        draft.id || amplifyUuid();\n                }\n                if (!isInternallyInitialized) {\n                    checkReadOnlyPropertyOnCreate(draft, modelDefinition);\n                }\n                const { _version, _lastChangedAt, _deleted } = modelInstanceMetadata;\n                if (modelDefinition.syncable) {\n                    draft._version = _version;\n                    draft._lastChangedAt = _lastChangedAt;\n                    draft._deleted = _deleted;\n                }\n            }, p => (patches = p));\n            // now that we have a list of patches that encapsulate the explicit, customer-provided\n            // fields, we can normalize. patches from normalization are ignored, because the changes\n            // are only create to provide a consistent view of the data for fields pre/post sync\n            // where possible. (not all fields can be normalized pre-sync, because they're generally\n            // \"cloud managed\" fields, like createdAt and updatedAt.)\n            const normalized = produce(baseInstance, (draft) => {\n                normalize(modelDefinition, draft);\n            });\n            initPatches.set(normalized, patches);\n            return normalized;\n        }\n        static copyOf(source, fn) {\n            const modelConstructor = Object.getPrototypeOf(source || {}).constructor;\n            if (!isValidModelConstructor(modelConstructor)) {\n                const msg = 'The source object is not a valid model';\n                logger.error(msg, { source });\n                throw new Error(msg);\n            }\n            let patches = [];\n            const model = produce(source, draft => {\n                fn(draft);\n                const keyNames = extractPrimaryKeyFieldNames(modelDefinition);\n                // Keys are immutable\n                keyNames.forEach(key => {\n                    if (draft[key] !== source[key]) {\n                        logger.warn(`copyOf() does not update PK fields. The '${key}' update is being ignored.`, { source });\n                    }\n                    draft[key] = source[key];\n                });\n                const modelValidator = validateModelFields(modelDefinition);\n                Object.entries(draft).forEach(([k, v]) => {\n                    const parsedValue = castInstanceType(modelDefinition, k, v);\n                    modelValidator(k, parsedValue);\n                });\n                normalize(modelDefinition, draft);\n            }, p => (patches = p));\n            const hasExistingPatches = modelPatchesMap.has(source);\n            if (patches.length || hasExistingPatches) {\n                if (hasExistingPatches) {\n                    const [existingPatches, existingSource] = modelPatchesMap.get(source);\n                    const mergedPatches = mergePatches(existingSource, existingPatches, patches);\n                    modelPatchesMap.set(model, [mergedPatches, existingSource]);\n                    checkReadOnlyPropertyOnUpdate(mergedPatches, modelDefinition);\n                }\n                else {\n                    modelPatchesMap.set(model, [patches, source]);\n                    checkReadOnlyPropertyOnUpdate(patches, modelDefinition);\n                }\n            }\n            else {\n                // always register patches when performing a copyOf, even if the\n                // patches list is empty. this allows `save()` to recognize when an\n                // instance is the result of a `copyOf()`. without more significant\n                // refactoring, this is the only way for `save()` to know which\n                // diffs (patches) are relevant for `storage` to use in building\n                // the list of \"changed\" fields for mutations.\n                modelPatchesMap.set(model, [[], source]);\n            }\n            return attached(model, ModelAttachment.DataStore);\n        }\n        // \"private\" method (that's hidden via `Setting`) for `withSSRContext` to use\n        // to gain access to `modelInstanceCreator` and `clazz` for persisting IDs from server to client.\n        static fromJSON(json) {\n            if (Array.isArray(json)) {\n                return json.map(init => this.fromJSON(init));\n            }\n            const instance = modelInstanceCreator(clazz, json);\n            const modelValidator = validateModelFields(modelDefinition);\n            Object.entries(instance).forEach(([k, v]) => {\n                modelValidator(k, v);\n            });\n            return attached(instance, ModelAttachment.DataStore);\n        }\n    };\n    clazz[immerable] = true;\n    Object.defineProperty(clazz, 'name', { value: modelDefinition.name });\n    // Add getters/setters for relationship fields.\n    //  getter - for lazy loading\n    //  setter - for FK management\n    const allModelRelationships = ModelRelationship.allFrom({\n        builder: clazz,\n        schema: modelDefinition,\n        pkField: extractPrimaryKeyFieldNames(modelDefinition),\n    });\n    for (const relationship of allModelRelationships) {\n        const { field } = relationship;\n        Object.defineProperty(clazz.prototype, modelDefinition.fields[field].name, {\n            set(model) {\n                if (!(typeof model === 'object' || typeof model === 'undefined'))\n                    return;\n                // if model is undefined or null, the connection should be removed\n                if (model) {\n                    // Avoid validation error when processing AppSync response with nested\n                    // selection set. Nested entitites lack version field and can not be validated\n                    // TODO: explore a more reliable method to solve this\n                    if (Object.prototype.hasOwnProperty.call(model, '_version')) {\n                        const modelConstructor = Object.getPrototypeOf(model || {})\n                            .constructor;\n                        if (!isValidModelConstructor(modelConstructor)) {\n                            const msg = `Value passed to ${modelDefinition.name}.${field} is not a valid instance of a model`;\n                            logger.error(msg, { model });\n                            throw new Error(msg);\n                        }\n                        if (modelConstructor.name.toLowerCase() !==\n                            relationship.remoteModelConstructor.name.toLowerCase()) {\n                            const msg = `Value passed to ${modelDefinition.name}.${field} is not an instance of ${relationship.remoteModelConstructor.name}`;\n                            logger.error(msg, { model });\n                            throw new Error(msg);\n                        }\n                    }\n                }\n                // if the relationship can be managed automagically, set the FK's\n                if (relationship.isComplete) {\n                    for (let i = 0; i < relationship.localJoinFields.length; i++) {\n                        this[relationship.localJoinFields[i]] =\n                            model?.[relationship.remoteJoinFields[i]];\n                    }\n                    const instanceMemos = modelInstanceAssociationsMap.has(this)\n                        ? modelInstanceAssociationsMap.get(this)\n                        : modelInstanceAssociationsMap.set(this, {}).get(this);\n                    instanceMemos[field] = model || undefined;\n                }\n            },\n            get() {\n                /**\n                 * Bucket for holding related models instances specific to `this` instance.\n                 */\n                const instanceMemos = modelInstanceAssociationsMap.has(this)\n                    ? modelInstanceAssociationsMap.get(this)\n                    : modelInstanceAssociationsMap.set(this, {}).get(this);\n                // if the memos already has a result for this field, we'll use it.\n                // there is no \"cache\" invalidation of any kind; memos are permanent to\n                // keep an immutable perception of the instance.\n                if (!Object.prototype.hasOwnProperty.call(instanceMemos, field)) {\n                    // before we populate the memo, we need to know where to look for relatives.\n                    // today, this only supports DataStore. Models aren't managed elsewhere in Amplify.\n                    if (getAttachment(this) === ModelAttachment.DataStore) {\n                        // when we fetch the results using a query constructed under the guidance\n                        // of the relationship metadata, we DO NOT AWAIT resolution. we want to\n                        // drop the promise into the memo's synchronously, eliminating the chance\n                        // for a race.\n                        const resultPromise = instance.query(relationship.remoteModelConstructor, base => base.and(q => {\n                            return relationship.remoteJoinFields.map((joinField, index) => {\n                                // TODO: anything we can use instead of `any` here?\n                                return q[joinField].eq(this[relationship.localJoinFields[index]]);\n                            });\n                        }));\n                        // results in hand, how we return them to the caller depends on the relationship type.\n                        if (relationship.type === 'HAS_MANY') {\n                            // collections should support async iteration, even though we don't\n                            // leverage it fully [yet].\n                            instanceMemos[field] = new AsyncCollection(resultPromise);\n                        }\n                        else {\n                            // non-collections should only ever return 1 value *or nothing*.\n                            // if we have more than 1 record, something's amiss. it's not our job\n                            // pick a result for the customer. it's our job to say \"something's wrong.\"\n                            instanceMemos[field] = resultPromise.then(rows => {\n                                if (rows.length > 1) {\n                                    // should never happen for a HAS_ONE or BELONGS_TO.\n                                    const err = new Error(`\n\t\t\t\t\t\t\t\t\tData integrity error.\n\t\t\t\t\t\t\t\t\tToo many records found for a HAS_ONE/BELONGS_TO field '${modelDefinition.name}.${field}'\n\t\t\t\t\t\t\t\t`);\n                                    console.error(err);\n                                    throw err;\n                                }\n                                else {\n                                    return rows[0];\n                                }\n                            });\n                        }\n                    }\n                    else if (getAttachment(this) === ModelAttachment.API) {\n                        throw new Error('Lazy loading from API is not yet supported!');\n                    }\n                    else {\n                        if (relationship.type === 'HAS_MANY') {\n                            return new AsyncCollection([]);\n                        }\n                        else {\n                            return Promise.resolve(undefined);\n                        }\n                    }\n                }\n                return instanceMemos[field];\n            },\n        });\n    }\n    return clazz;\n};\n/**\n * An eventually loaded related model instance.\n */\nexport class AsyncItem extends Promise {\n}\n/**\n * A collection of related model instances.\n *\n * This collection can be async-iterated or turned directly into an array using `toArray()`.\n */\nexport class AsyncCollection {\n    constructor(values) {\n        this.values = values;\n    }\n    /**\n     * Facilitates async iteration.\n     *\n     * ```ts\n     * for await (const item of collection) {\n     *   handle(item)\n     * }\n     * ```\n     *\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of\n     */\n    [Symbol.asyncIterator]() {\n        let values;\n        let index = 0;\n        return {\n            next: async () => {\n                if (!values)\n                    values = await this.values;\n                if (index < values.length) {\n                    const result = {\n                        value: values[index],\n                        done: false,\n                    };\n                    index++;\n                    return result;\n                }\n                return {\n                    value: null,\n                    done: true,\n                };\n            },\n        };\n    }\n    /**\n     * Turns the collection into an array, up to the amount specified in `max` param.\n     *\n     * ```ts\n     * const all = await collection.toArray();\n     * const first100 = await collection.toArray({max: 100});\n     * ```\n     */\n    async toArray({ max = Number.MAX_SAFE_INTEGER, } = {}) {\n        const output = [];\n        let i = 0;\n        for await (const element of this) {\n            if (i < max) {\n                output.push(element);\n                i++;\n            }\n            else {\n                break;\n            }\n        }\n        return output;\n    }\n}\nconst checkReadOnlyPropertyOnCreate = (draft, modelDefinition) => {\n    const modelKeys = Object.keys(draft);\n    const { fields } = modelDefinition;\n    modelKeys.forEach(key => {\n        if (fields[key] && fields[key].isReadOnly) {\n            throw new Error(`${key} is read-only.`);\n        }\n    });\n};\nconst checkReadOnlyPropertyOnUpdate = (patches, modelDefinition) => {\n    const patchArray = patches.map(p => [p.path[0], p.value]);\n    const { fields } = modelDefinition;\n    patchArray.forEach(([key, val]) => {\n        if (!val || !fields[key])\n            return;\n        if (fields[key].isReadOnly) {\n            throw new Error(`${key} is read-only.`);\n        }\n    });\n};\nconst createNonModelClass = (typeDefinition) => {\n    const clazz = class Model {\n        constructor(init) {\n            const instance = produce(this, (draft) => {\n                initializeInstance(init, typeDefinition, draft);\n            });\n            return instance;\n        }\n    };\n    clazz[immerable] = true;\n    Object.defineProperty(clazz, 'name', { value: typeDefinition.name });\n    registerNonModelClass(clazz);\n    return clazz;\n};\nfunction isQueryOne(obj) {\n    return typeof obj === 'string';\n}\nfunction defaultConflictHandler(conflictData) {\n    const { localModel, modelConstructor, remoteModel } = conflictData;\n    const { _version } = remoteModel;\n    return modelInstanceCreator(modelConstructor, { ...localModel, _version });\n}\nfunction defaultErrorHandler(error) {\n    logger.warn(error);\n}\nfunction getModelConstructorByModelName(namespaceName, modelName) {\n    let result;\n    switch (namespaceName) {\n        case DATASTORE:\n            result = dataStoreClasses[modelName];\n            break;\n        case USER:\n            result = userClasses[modelName];\n            break;\n        case SYNC:\n            result = syncClasses[modelName];\n            break;\n        case STORAGE:\n            result = storageClasses[modelName];\n            break;\n        default:\n            throw new Error(`Invalid namespace: ${namespaceName}`);\n    }\n    if (isValidModelConstructor(result)) {\n        return result;\n    }\n    else {\n        const msg = `Model name is not valid for namespace. modelName: ${modelName}, namespace: ${namespaceName}`;\n        logger.error(msg);\n        throw new Error(msg);\n    }\n}\n/**\n * Queries the DataStore metadata tables to see if they are the expected\n * version. If not, clobbers the whole DB. If so, leaves them alone.\n * Otherwise, simply writes the schema version.\n *\n * SIDE EFFECT:\n * 1. Creates a transaction\n * 1. Updates data.\n *\n * @param storage Storage adapter containing the metadata.\n * @param version The expected schema version.\n */\nasync function checkSchemaVersion(storage, version) {\n    const SettingCtor = dataStoreClasses.Setting;\n    const modelDefinition = schema.namespaces[DATASTORE].models.Setting;\n    await storage.runExclusive(async (s) => {\n        const [schemaVersionSetting] = await s.query(SettingCtor, ModelPredicateCreator.createFromAST(modelDefinition, {\n            and: { key: { eq: SETTING_SCHEMA_VERSION } },\n        }), { page: 0, limit: 1 });\n        if (schemaVersionSetting !== undefined &&\n            schemaVersionSetting.value !== undefined) {\n            const storedValue = JSON.parse(schemaVersionSetting.value);\n            if (storedValue !== version) {\n                await s.clear(false);\n            }\n        }\n        else {\n            await s.save(modelInstanceCreator(SettingCtor, {\n                key: SETTING_SCHEMA_VERSION,\n                value: JSON.stringify(version),\n            }));\n        }\n    });\n}\nlet syncSubscription;\nfunction getNamespace() {\n    const namespace = {\n        name: DATASTORE,\n        relationships: {},\n        enums: {},\n        nonModels: {},\n        models: {\n            Setting: {\n                name: 'Setting',\n                pluralName: 'Settings',\n                syncable: false,\n                fields: {\n                    id: {\n                        name: 'id',\n                        type: 'ID',\n                        isRequired: true,\n                        isArray: false,\n                    },\n                    key: {\n                        name: 'key',\n                        type: 'String',\n                        isRequired: true,\n                        isArray: false,\n                    },\n                    value: {\n                        name: 'value',\n                        type: 'String',\n                        isRequired: true,\n                        isArray: false,\n                    },\n                },\n            },\n        },\n    };\n    return namespace;\n}\nvar DataStoreState;\n(function (DataStoreState) {\n    DataStoreState[\"NotRunning\"] = \"Not Running\";\n    DataStoreState[\"Starting\"] = \"Starting\";\n    DataStoreState[\"Running\"] = \"Running\";\n    DataStoreState[\"Stopping\"] = \"Stopping\";\n    DataStoreState[\"Clearing\"] = \"Clearing\";\n})(DataStoreState || (DataStoreState = {}));\n// TODO: How can we get rid of the non-null assertions?\n// https://github.com/aws-amplify/amplify-js/pull/10477/files#r1007363485\nclass DataStore {\n    constructor() {\n        // reference to configured category instances. Used for preserving SSR context\n        this.InternalAPI = InternalAPI;\n        this.Cache = Cache;\n        // Non-null assertions (bang operator) have been added to most of these properties\n        // to make TS happy. These properties are all expected to be set immediately after\n        // construction.\n        // TODO: Refactor to use proper DI if possible. If not possible, change these to\n        // optionals and implement conditional checks throughout. Rinse/repeat on all\n        // sync engine processors, storage engine, adapters, etc..\n        this.amplifyConfig = {};\n        this.syncPredicates = new WeakMap();\n        // object that gets passed to descendent classes. Allows us to pass these down by reference\n        this.amplifyContext = {\n            InternalAPI: this.InternalAPI,\n        };\n        /**\n         * **IMPORTANT!**\n         *\n         * Accumulator for background things that can **and MUST** be called when\n         * DataStore stops.\n         *\n         * These jobs **MUST** be *idempotent promises* that resolve ONLY\n         * once the intended jobs are completely finished and/or otherwise destroyed\n         * and cleaned up with ZERO outstanding:\n         *\n         * 1. side effects (e.g., state changes)\n         * 1. callbacks\n         * 1. subscriptions\n         * 1. calls to storage\n         * 1. *etc.*\n         *\n         * Methods that create pending promises, subscriptions, callbacks, or any\n         * type of side effect **MUST** be registered with the manager. And, a new\n         * manager must be created after each `exit()`.\n         *\n         * Failure to comply will put DataStore into a highly unpredictable state\n         * when it needs to stop or clear -- which occurs when restarting with new\n         * sync expressions, during testing, and potentially during app code\n         * recovery handling, etc..\n         *\n         * It is up to the discretion of each disposer whether to wait for job\n         * completion or to cancel operations and issue failures *as long as the\n         * disposer returns in a reasonable amount of time.*\n         *\n         * (Reasonable = *seconds*, not minutes.)\n         */\n        this.runningProcesses = new BackgroundProcessManager();\n        /**\n         * Indicates what state DataStore is in.\n         *\n         * Not [yet?] used for actual state management; but for messaging\n         * when errors occur, to help troubleshoot.\n         */\n        this.state = DataStoreState.NotRunning;\n        /**\n         * If not already done:\n         * 1. Attaches and initializes storage.\n         * 2. Loads the schema and records metadata.\n         * 3. If `this.amplifyConfig.aws_appsync_graphqlEndpoint` contains a URL,\n         * attaches a sync engine, starts it, and subscribes.\n         */\n        this.start = async () => {\n            return this.runningProcesses\n                .add(async () => {\n                this.state = DataStoreState.Starting;\n                if (this.initialized === undefined) {\n                    logger.debug('Starting DataStore');\n                    this.initialized = new Promise((resolve, reject) => {\n                        this.initResolve = resolve;\n                        this.initReject = reject;\n                    });\n                }\n                else {\n                    await this.initialized;\n                    return;\n                }\n                this.storage = new Storage(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, this.storageAdapter, this.sessionId);\n                await this.storage.init();\n                checkSchemaInitialized();\n                await checkSchemaVersion(this.storage, schema.version);\n                const { aws_appsync_graphqlEndpoint } = this.amplifyConfig;\n                if (aws_appsync_graphqlEndpoint) {\n                    logger.debug('GraphQL endpoint available', aws_appsync_graphqlEndpoint);\n                    this.syncPredicates = await this.processSyncExpressions();\n                    this.sync = new SyncEngine(schema, namespaceResolver, syncClasses, userClasses, this.storage, modelInstanceCreator, this.conflictHandler, this.errorHandler, this.syncPredicates, this.amplifyConfig, this.authModeStrategy, this.amplifyContext, this.connectivityMonitor);\n                    const fullSyncIntervalInMilliseconds = this.fullSyncInterval * 1000 * 60; // fullSyncInterval from param is in minutes\n                    syncSubscription = this.sync\n                        .start({ fullSyncInterval: fullSyncIntervalInMilliseconds })\n                        .subscribe({\n                        next: ({ type, data }) => {\n                            /**\n                             * In Node, we need to wait for queries to be synced to prevent returning empty arrays.\n                             * In non-Node environments (the browser or React Native), we can begin returning data\n                             * once subscriptions are in place.\n                             */\n                            const readyType = isNode()\n                                ? ControlMessage.SYNC_ENGINE_SYNC_QUERIES_READY\n                                : ControlMessage.SYNC_ENGINE_STORAGE_SUBSCRIBED;\n                            if (type === readyType) {\n                                this.initResolve();\n                            }\n                            Hub.dispatch('datastore', {\n                                event: type,\n                                data,\n                            });\n                        },\n                        error: err => {\n                            logger.warn('Sync error', err);\n                            this.initReject();\n                        },\n                    });\n                }\n                else {\n                    logger.warn(\"Data won't be synchronized. No GraphQL endpoint configured. Did you forget `Amplify.configure(awsconfig)`?\", {\n                        config: this.amplifyConfig,\n                    });\n                    this.initResolve();\n                }\n                await this.initialized;\n                this.state = DataStoreState.Running;\n            }, 'datastore start')\n                .catch(this.handleAddProcError('DataStore.start()'));\n        };\n        this.query = async (modelConstructor, identifierOrCriteria, paginationProducer) => {\n            return this.runningProcesses\n                .add(async () => {\n                await this.start();\n                let result;\n                if (!this.storage) {\n                    throw new Error('No storage to query');\n                }\n                // #region Input validation\n                if (!isValidModelConstructor(modelConstructor)) {\n                    const msg = 'Constructor is not for a valid model';\n                    logger.error(msg, { modelConstructor });\n                    throw new Error(msg);\n                }\n                if (typeof identifierOrCriteria === 'string') {\n                    if (paginationProducer !== undefined) {\n                        logger.warn('Pagination is ignored when querying by id');\n                    }\n                }\n                const modelDefinition = getModelDefinition(modelConstructor);\n                if (!modelDefinition) {\n                    throw new Error('Invalid model definition provided!');\n                }\n                const pagination = this.processPagination(modelDefinition, paginationProducer);\n                const keyFields = extractPrimaryKeyFieldNames(modelDefinition);\n                if (isQueryOne(identifierOrCriteria)) {\n                    if (keyFields.length > 1) {\n                        const msg = errorMessages.queryByPkWithCompositeKeyPresent;\n                        logger.error(msg, { keyFields });\n                        throw new Error(msg);\n                    }\n                    const predicate = ModelPredicateCreator.createFromFlatEqualities(modelDefinition, { [keyFields[0]]: identifierOrCriteria });\n                    result = await this.storage.query(modelConstructor, predicate, pagination);\n                }\n                else {\n                    // Object is being queried using object literal syntax\n                    if (isIdentifierObject(identifierOrCriteria, modelDefinition)) {\n                        const predicate = ModelPredicateCreator.createForPk(modelDefinition, identifierOrCriteria);\n                        result = await this.storage.query(modelConstructor, predicate, pagination);\n                    }\n                    else if (!identifierOrCriteria ||\n                        isPredicatesAll(identifierOrCriteria)) {\n                        result = await this.storage?.query(modelConstructor, undefined, pagination);\n                    }\n                    else {\n                        const seedPredicate = recursivePredicateFor({\n                            builder: modelConstructor,\n                            schema: modelDefinition,\n                            pkField: extractPrimaryKeyFieldNames(modelDefinition),\n                        });\n                        const predicate = internals(identifierOrCriteria(seedPredicate));\n                        result = (await predicate.fetch(this.storage));\n                        result = inMemoryPagination(result, pagination);\n                    }\n                }\n                // #endregion\n                const returnOne = isQueryOne(identifierOrCriteria) ||\n                    isIdentifierObject(identifierOrCriteria, modelDefinition);\n                return attached(returnOne ? result[0] : result, ModelAttachment.DataStore);\n            }, 'datastore query')\n                .catch(this.handleAddProcError('DataStore.query()'));\n        };\n        this.save = async (model, condition) => {\n            return this.runningProcesses\n                .add(async () => {\n                await this.start();\n                if (!this.storage) {\n                    throw new Error('No storage to save to');\n                }\n                // Immer patches for constructing a correct update mutation input\n                // Allows us to only include changed fields for updates\n                const updatedPatchesTuple = modelPatchesMap.get(model);\n                // Immer patches for initial object construction. These are used if\n                // there are no `update` patches under the assumption we're performing\n                // a CREATE and wish to send only explicitly specified fields to the cloud.\n                const initPatchesTuple = initPatches.has(model)\n                    ? [initPatches.get(model), {}]\n                    : undefined;\n                // favor update patches over init/create patches, because init patches\n                // are ALWAYS present, whereas update patches are only present if copyOf\n                // was used to create the instance.\n                const patchesTuple = updatedPatchesTuple || initPatchesTuple;\n                const modelConstructor = model\n                    ? model.constructor\n                    : undefined;\n                if (!isValidModelConstructor(modelConstructor)) {\n                    const msg = 'Object is not an instance of a valid model';\n                    logger.error(msg, { model });\n                    throw new Error(msg);\n                }\n                const modelDefinition = getModelDefinition(modelConstructor);\n                if (!modelDefinition) {\n                    throw new Error('Model Definition could not be found for model');\n                }\n                const modelMeta = {\n                    builder: modelConstructor,\n                    schema: modelDefinition,\n                    pkField: extractPrimaryKeyFieldNames(modelDefinition),\n                };\n                await this.storage.runExclusive(async (s) => {\n                    // no enforcement for HAS_MANY on save, because the ~related~ entities\n                    // hold the FK in that case.\n                    const nonHasManyRelationships = ModelRelationship.allFrom(modelMeta).filter(r => r.type === 'BELONGS_TO');\n                    for (const relationship of nonHasManyRelationships) {\n                        const queryObject = relationship.createRemoteQueryObject(model);\n                        if (queryObject !== null) {\n                            const related = await s.query(relationship.remoteModelConstructor, ModelPredicateCreator.createFromFlatEqualities(relationship.remoteDefinition, queryObject));\n                            if (related.length === 0) {\n                                throw new Error([\n                                    `Data integrity error. You tried to save a ${modelDefinition.name} (${JSON.stringify(model)})`,\n                                    `but the instance assigned to the \"${relationship.field}\" property`,\n                                    `does not exist in the local database. If you're trying to create the related`,\n                                    `\"${relationship.remoteDefinition?.name}\", you must save it independently first.`,\n                                ].join(' '));\n                            }\n                        }\n                    }\n                });\n                const producedCondition = condition\n                    ? internals(condition(predicateFor(modelMeta))).toStoragePredicate()\n                    : undefined;\n                const [savedModel] = await this.storage.runExclusive(async (s) => {\n                    await s.save(model, producedCondition, undefined, patchesTuple);\n                    return s.query(modelConstructor, ModelPredicateCreator.createForPk(modelDefinition, model));\n                });\n                return attached(savedModel, ModelAttachment.DataStore);\n            }, 'datastore save')\n                .catch(this.handleAddProcError('DataStore.save()'));\n        };\n        this.setConflictHandler = (config) => {\n            const { DataStore: configDataStore } = config;\n            const conflictHandlerIsDefault = () => this.conflictHandler === defaultConflictHandler;\n            if (configDataStore && configDataStore.conflictHandler) {\n                return configDataStore.conflictHandler;\n            }\n            if (conflictHandlerIsDefault() && config.conflictHandler) {\n                return config.conflictHandler;\n            }\n            return this.conflictHandler || defaultConflictHandler;\n        };\n        this.setErrorHandler = (config) => {\n            const { DataStore: configDataStore } = config;\n            const errorHandlerIsDefault = () => this.errorHandler === defaultErrorHandler;\n            if (configDataStore && configDataStore.errorHandler) {\n                return configDataStore.errorHandler;\n            }\n            if (errorHandlerIsDefault() && config.errorHandler) {\n                return config.errorHandler;\n            }\n            return this.errorHandler || defaultErrorHandler;\n        };\n        this.delete = async (modelOrConstructor, identifierOrCriteria) => {\n            return this.runningProcesses\n                .add(async () => {\n                await this.start();\n                if (!this.storage) {\n                    throw new Error('No storage to delete from');\n                }\n                let condition;\n                if (!modelOrConstructor) {\n                    const msg = 'Model or Model Constructor required';\n                    logger.error(msg, { modelOrConstructor });\n                    throw new Error(msg);\n                }\n                if (isValidModelConstructor(modelOrConstructor)) {\n                    const modelConstructor = modelOrConstructor;\n                    if (!identifierOrCriteria) {\n                        const msg = 'Id to delete or criteria required. Do you want to delete all? Pass Predicates.ALL';\n                        logger.error(msg, { identifierOrCriteria });\n                        throw new Error(msg);\n                    }\n                    const modelDefinition = getModelDefinition(modelConstructor);\n                    if (!modelDefinition) {\n                        throw new Error('Could not find model definition for modelConstructor.');\n                    }\n                    if (typeof identifierOrCriteria === 'string') {\n                        const keyFields = extractPrimaryKeyFieldNames(modelDefinition);\n                        if (keyFields.length > 1) {\n                            const msg = errorMessages.deleteByPkWithCompositeKeyPresent;\n                            logger.error(msg, { keyFields });\n                            throw new Error(msg);\n                        }\n                        condition = ModelPredicateCreator.createFromFlatEqualities(modelDefinition, { [keyFields[0]]: identifierOrCriteria });\n                    }\n                    else {\n                        if (isIdentifierObject(identifierOrCriteria, modelDefinition)) {\n                            condition = ModelPredicateCreator.createForPk(modelDefinition, identifierOrCriteria);\n                        }\n                        else {\n                            condition = internals(identifierOrCriteria(predicateFor({\n                                builder: modelConstructor,\n                                schema: modelDefinition,\n                                pkField: extractPrimaryKeyFieldNames(modelDefinition),\n                            }))).toStoragePredicate();\n                        }\n                        if (!condition ||\n                            !ModelPredicateCreator.isValidPredicate(condition)) {\n                            const msg = 'Criteria required. Do you want to delete all? Pass Predicates.ALL';\n                            logger.error(msg, { condition });\n                            throw new Error(msg);\n                        }\n                    }\n                    const [deleted] = await this.storage.delete(modelConstructor, condition);\n                    return attached(deleted, ModelAttachment.DataStore);\n                }\n                else {\n                    const model = modelOrConstructor;\n                    const modelConstructor = Object.getPrototypeOf(model || {})\n                        .constructor;\n                    if (!isValidModelConstructor(modelConstructor)) {\n                        const msg = 'Object is not an instance of a valid model';\n                        logger.error(msg, { model });\n                        throw new Error(msg);\n                    }\n                    const modelDefinition = getModelDefinition(modelConstructor);\n                    if (!modelDefinition) {\n                        throw new Error('Could not find model definition for modelConstructor.');\n                    }\n                    const pkPredicate = ModelPredicateCreator.createForPk(modelDefinition, model);\n                    if (identifierOrCriteria) {\n                        if (typeof identifierOrCriteria !== 'function') {\n                            const msg = 'Invalid criteria';\n                            logger.error(msg, { identifierOrCriteria });\n                            throw new Error(msg);\n                        }\n                        condition = internals(identifierOrCriteria(predicateFor({\n                            builder: modelConstructor,\n                            schema: modelDefinition,\n                            pkField: extractPrimaryKeyFieldNames(modelDefinition),\n                        }))).toStoragePredicate();\n                    }\n                    else {\n                        condition = pkPredicate;\n                    }\n                    const [[deleted]] = await this.storage.delete(model, condition);\n                    return attached(deleted, ModelAttachment.DataStore);\n                }\n            }, 'datastore delete')\n                .catch(this.handleAddProcError('DataStore.delete()'));\n        };\n        this.observe = (modelOrConstructor, identifierOrCriteria) => {\n            let executivePredicate;\n            const modelConstructor = modelOrConstructor && isValidModelConstructor(modelOrConstructor)\n                ? modelOrConstructor\n                : undefined;\n            if (modelOrConstructor && modelConstructor === undefined) {\n                const model = modelOrConstructor;\n                const resolvedModelConstructor = model && Object.getPrototypeOf(model).constructor;\n                if (isValidModelConstructor(resolvedModelConstructor)) {\n                    if (identifierOrCriteria) {\n                        logger.warn('idOrCriteria is ignored when using a model instance', {\n                            model,\n                            identifierOrCriteria,\n                        });\n                    }\n                    return this.observe(resolvedModelConstructor, model.id);\n                }\n                else {\n                    const msg = 'The model is not an instance of a PersistentModelConstructor';\n                    logger.error(msg, { model });\n                    throw new Error(msg);\n                }\n            }\n            // observe should not accept object literal syntax\n            if (identifierOrCriteria &&\n                modelConstructor &&\n                isIdentifierObject(identifierOrCriteria, getModelDefinition(modelConstructor))) {\n                const msg = errorMessages.observeWithObjectLiteral;\n                logger.error(msg, { objectLiteral: identifierOrCriteria });\n                throw new Error(msg);\n            }\n            if (identifierOrCriteria !== undefined && modelConstructor === undefined) {\n                const msg = 'Cannot provide criteria without a modelConstructor';\n                logger.error(msg, identifierOrCriteria);\n                throw new Error(msg);\n            }\n            if (modelConstructor && !isValidModelConstructor(modelConstructor)) {\n                const msg = 'Constructor is not for a valid model';\n                logger.error(msg, { modelConstructor });\n                throw new Error(msg);\n            }\n            if (modelConstructor && typeof identifierOrCriteria === 'string') {\n                const buildIdPredicate = seed => seed.id.eq(identifierOrCriteria);\n                executivePredicate = internals(buildIdPredicate(buildSeedPredicate(modelConstructor)));\n            }\n            else if (modelConstructor && typeof identifierOrCriteria === 'function') {\n                executivePredicate = internals(identifierOrCriteria(buildSeedPredicate(modelConstructor)));\n            }\n            return new Observable(observer => {\n                let source;\n                this.runningProcesses\n                    .add(async () => {\n                    await this.start();\n                    // Filter the events returned by Storage according to namespace,\n                    // append original element data, and subscribe to the observable\n                    source = this.storage.observe(modelConstructor)\n                        .pipe(filter(({ model }) => namespaceResolver(model) === USER))\n                        .subscribe({\n                        next: item => this.runningProcesses.isOpen &&\n                            this.runningProcesses.add(async () => {\n                                // the `element` doesn't necessarily contain all item details or\n                                // have related records attached consistently with that of a query()\n                                // result item. for consistency, we attach them here.\n                                let message = item;\n                                // as long as we're not dealing with a DELETE, we need to fetch a fresh\n                                // item from storage to ensure it's fully populated.\n                                if (item.opType !== 'DELETE') {\n                                    const modelDefinition = getModelDefinition(item.model);\n                                    const keyFields = extractPrimaryKeyFieldNames(modelDefinition);\n                                    const primaryKeysAndValues = extractPrimaryKeysAndValues(item.element, keyFields);\n                                    const freshElement = await this.query(item.model, primaryKeysAndValues);\n                                    message = {\n                                        ...message,\n                                        element: freshElement,\n                                    };\n                                }\n                                if (!executivePredicate ||\n                                    (await executivePredicate.matches(message.element))) {\n                                    observer.next(message);\n                                }\n                            }, 'datastore observe message handler'),\n                        error: err => {\n                            observer.error(err);\n                        },\n                        complete: () => {\n                            observer.complete();\n                        },\n                    });\n                }, 'datastore observe observable initialization')\n                    .catch(this.handleAddProcError('DataStore.observe()'))\n                    .catch(error => {\n                    observer.error(error);\n                });\n                // better than no cleaner, but if the subscriber is handling the\n                // complete() message async and not registering with the context,\n                // this will still be problematic.\n                return this.runningProcesses.addCleaner(async () => {\n                    if (source) {\n                        source.unsubscribe();\n                    }\n                }, 'DataStore.observe() cleanup');\n            });\n        };\n        this.observeQuery = (model, criteria, options) => {\n            return new Observable(observer => {\n                const items = new Map();\n                const itemsChanged = new Map();\n                let deletedItemIds = [];\n                let handle;\n                // let predicate: ModelPredicate<T> | undefined;\n                let executivePredicate;\n                /**\n                 * As the name suggests, this geneates a snapshot in the form of\n                 * \t`{items: T[], isSynced: boolean}`\n                 * and sends it to the observer.\n                 *\n                 * SIDE EFFECT: The underlying generation and emission methods may touch:\n                 * `items`, `itemsChanged`, and `deletedItemIds`.\n                 *\n                 * Refer to `generateSnapshot` and `emitSnapshot` for more details.\n                 */\n                const generateAndEmitSnapshot = () => {\n                    const snapshot = generateSnapshot();\n                    emitSnapshot(snapshot);\n                };\n                // a mechanism to return data after X amount of seconds OR after the\n                // \"limit\" (itemsChanged >= this.syncPageSize) has been reached, whichever comes first\n                const limitTimerRace = new DeferredCallbackResolver({\n                    callback: generateAndEmitSnapshot,\n                    errorHandler: observer.error,\n                    maxInterval: 2000,\n                });\n                const { sort } = options || {};\n                const sortOptions = sort ? { sort } : undefined;\n                const modelDefinition = getModelDefinition(model);\n                if (!modelDefinition) {\n                    throw new Error('Could not find model definition.');\n                }\n                if (model && typeof criteria === 'function') {\n                    executivePredicate = internals(criteria(buildSeedPredicate(model)));\n                }\n                else if (isPredicatesAll(criteria)) {\n                    executivePredicate = undefined;\n                }\n                this.runningProcesses\n                    .add(async () => {\n                    try {\n                        // first, query and return any locally-available records\n                        (await this.query(model, criteria, sortOptions)).forEach(item => {\n                            const itemModelDefinition = getModelDefinition(model);\n                            const idOrPk = getIdentifierValue(itemModelDefinition, item);\n                            items.set(idOrPk, item);\n                        });\n                        // Observe the model and send a stream of updates (debounced).\n                        // We need to post-filter results instead of passing criteria through\n                        // to have visibility into items that move from in-set to out-of-set.\n                        // We need to explicitly remove those items from the existing snapshot.\n                        handle = this.observe(model).subscribe(({ element, model: observedModel, opType }) => this.runningProcesses.isOpen &&\n                            this.runningProcesses.add(async () => {\n                                const itemModelDefinition = getModelDefinition(observedModel);\n                                const idOrPk = getIdentifierValue(itemModelDefinition, element);\n                                if (executivePredicate &&\n                                    !(await executivePredicate.matches(element))) {\n                                    if (opType === 'UPDATE' &&\n                                        (items.has(idOrPk) || itemsChanged.has(idOrPk))) {\n                                        // tracking as a \"deleted item\" will include the item in\n                                        // page limit calculations and ensure it is removed from the\n                                        // final items collection, regardless of which collection(s)\n                                        // it is currently in. (I mean, it could be in both, right!?)\n                                        deletedItemIds.push(idOrPk);\n                                    }\n                                    else {\n                                        // ignore updates for irrelevant/filtered items.\n                                        return;\n                                    }\n                                }\n                                // Flag items which have been recently deleted\n                                // NOTE: Merging of separate operations to the same model instance is handled upstream\n                                // in the `mergePage` method within src/sync/merger.ts. The final state of a model instance\n                                // depends on the LATEST record (for a given id).\n                                if (opType === 'DELETE') {\n                                    deletedItemIds.push(idOrPk);\n                                }\n                                else {\n                                    itemsChanged.set(idOrPk, element);\n                                }\n                                const isSynced = this.sync?.getModelSyncedStatus(observedModel) ?? false;\n                                const limit = itemsChanged.size - deletedItemIds.length >=\n                                    this.syncPageSize;\n                                if (limit || isSynced) {\n                                    limitTimerRace.resolve();\n                                }\n                                // kicks off every subsequent race as results sync down\n                                limitTimerRace.start();\n                            }, 'handle observeQuery observed event'));\n                        // returns a set of initial/locally-available results\n                        generateAndEmitSnapshot();\n                    }\n                    catch (err) {\n                        observer.error(err);\n                    }\n                }, 'datastore observequery startup')\n                    .catch(this.handleAddProcError('DataStore.observeQuery()'))\n                    .catch(error => {\n                    observer.error(error);\n                });\n                /**\n                 * Combines the `items`, `itemsChanged`, and `deletedItemIds` collections into\n                 * a snapshot in the form of `{ items: T[], isSynced: boolean}`.\n                 *\n                 * SIDE EFFECT: The shared `items` collection is recreated.\n                 */\n                const generateSnapshot = () => {\n                    const isSynced = this.sync?.getModelSyncedStatus(model) ?? false;\n                    const itemsArray = [\n                        ...Array.from(items.values()),\n                        ...Array.from(itemsChanged.values()),\n                    ];\n                    items.clear();\n                    itemsArray.forEach(item => {\n                        const itemModelDefinition = getModelDefinition(model);\n                        const idOrPk = getIdentifierValue(itemModelDefinition, item);\n                        items.set(idOrPk, item);\n                    });\n                    // remove deleted items from the final result set\n                    deletedItemIds.forEach(idOrPk => items.delete(idOrPk));\n                    const snapshot = Array.from(items.values());\n                    // we sort after we merge the snapshots (items, itemsChanged)\n                    // otherwise, the merge may not\n                    if (options?.sort) {\n                        sortItems(snapshot);\n                    }\n                    return {\n                        items: snapshot,\n                        isSynced,\n                    };\n                };\n                /**\n                 * Emits the list of items to the observer.\n                 *\n                 * SIDE EFFECT: `itemsChanged` and `deletedItemIds` are cleared to prepare\n                 * for the next snapshot.\n                 *\n                 * @param snapshot The generated items data to emit.\n                 */\n                const emitSnapshot = (snapshot) => {\n                    // send the generated snapshot to the primary subscription.\n                    // NOTE: This observer's handler *could* be async ...\n                    observer.next(snapshot);\n                    // reset the changed items sets\n                    itemsChanged.clear();\n                    deletedItemIds = [];\n                };\n                /**\n                 * Sorts an `Array` of `T` according to the sort instructions given in the\n                 * original  `observeQuery()` call.\n                 *\n                 * @param itemsToSort A array of model type.\n                 */\n                const sortItems = (itemsToSort) => {\n                    const sortingModelDefinition = getModelDefinition(model);\n                    const pagination = this.processPagination(sortingModelDefinition, options);\n                    const sortPredicates = ModelSortPredicateCreator.getPredicates(pagination.sort);\n                    if (sortPredicates.length) {\n                        const compareFn = sortCompareFunction(sortPredicates);\n                        itemsToSort.sort(compareFn);\n                    }\n                };\n                /**\n                 * Force one last snapshot when the model is fully synced.\n                 *\n                 * This reduces latency for that last snapshot, which will otherwise\n                 * wait for the configured timeout.\n                 *\n                 * @param payload The payload from the Hub event.\n                 */\n                const hubCallback = ({ payload }) => {\n                    const { event, data } = payload;\n                    if (event === ControlMessage.SYNC_ENGINE_MODEL_SYNCED &&\n                        data?.model?.name === model.name) {\n                        generateAndEmitSnapshot();\n                        hubRemove();\n                    }\n                };\n                const hubRemove = Hub.listen('datastore', hubCallback);\n                return this.runningProcesses.addCleaner(async () => {\n                    if (handle) {\n                        handle.unsubscribe();\n                    }\n                }, 'datastore observequery cleaner');\n            });\n        };\n        this.configure = (config = {}) => {\n            this.amplifyContext.InternalAPI = this.InternalAPI;\n            const { DataStore: configDataStore, authModeStrategyType: configAuthModeStrategyType, maxRecordsToSync: configMaxRecordsToSync, syncPageSize: configSyncPageSize, fullSyncInterval: configFullSyncInterval, syncExpressions: configSyncExpressions, authProviders: configAuthProviders, storageAdapter: configStorageAdapter, ...configFromAmplify } = config;\n            const currentAppSyncConfig = Amplify.getConfig().API?.GraphQL;\n            const appSyncConfig = {\n                aws_appsync_graphqlEndpoint: currentAppSyncConfig?.endpoint,\n                aws_appsync_authenticationType: currentAppSyncConfig?.defaultAuthMode,\n                aws_appsync_region: currentAppSyncConfig?.region,\n                aws_appsync_apiKey: currentAppSyncConfig?.apiKey,\n            };\n            this.amplifyConfig = {\n                ...this.amplifyConfig,\n                ...configFromAmplify,\n                ...(currentAppSyncConfig && appSyncConfig),\n            };\n            this.conflictHandler = this.setConflictHandler(config);\n            this.errorHandler = this.setErrorHandler(config);\n            const authModeStrategyType = (configDataStore && configDataStore.authModeStrategyType) ||\n                configAuthModeStrategyType ||\n                AuthModeStrategyType.DEFAULT;\n            switch (authModeStrategyType) {\n                case AuthModeStrategyType.MULTI_AUTH:\n                    this.authModeStrategy = multiAuthStrategy(this.amplifyContext);\n                    break;\n                case AuthModeStrategyType.DEFAULT:\n                    this.authModeStrategy = defaultAuthStrategy;\n                    break;\n                default:\n                    this.authModeStrategy = defaultAuthStrategy;\n                    break;\n            }\n            // store on config object, so that Sync, Subscription, and Mutation processors can have access\n            this.amplifyConfig.authProviders =\n                (configDataStore && configDataStore.authProviders) || configAuthProviders;\n            this.syncExpressions =\n                (configDataStore && configDataStore.syncExpressions) ||\n                    configSyncExpressions ||\n                    this.syncExpressions;\n            this.maxRecordsToSync =\n                (configDataStore && configDataStore.maxRecordsToSync) ||\n                    configMaxRecordsToSync ||\n                    this.maxRecordsToSync ||\n                    10000;\n            // store on config object, so that Sync, Subscription, and Mutation processors can have access\n            this.amplifyConfig.maxRecordsToSync = this.maxRecordsToSync;\n            this.syncPageSize =\n                (configDataStore && configDataStore.syncPageSize) ||\n                    configSyncPageSize ||\n                    this.syncPageSize ||\n                    1000;\n            // store on config object, so that Sync, Subscription, and Mutation processors can have access\n            this.amplifyConfig.syncPageSize = this.syncPageSize;\n            this.fullSyncInterval =\n                (configDataStore && configDataStore.fullSyncInterval) ||\n                    configFullSyncInterval ||\n                    this.fullSyncInterval ||\n                    24 * 60; // 1 day\n            this.storageAdapter =\n                (configDataStore && configDataStore.storageAdapter) ||\n                    configStorageAdapter ||\n                    this.storageAdapter ||\n                    undefined;\n            this.sessionId = this.retrieveSessionId();\n        };\n    }\n    getModuleName() {\n        return 'DataStore';\n    }\n    /**\n     * Builds a function to capture `BackgroundManagerNotOpenError`'s to produce friendlier,\n     * more instructive errors for customers.\n     *\n     * @param operation The name of the operation (usually a Datastore method) the customer\n     * tried to call.\n     */\n    handleAddProcError(operation) {\n        /**\n         * If the tested error is a `BackgroundManagerNotOpenError`, it will be captured\n         * and replaced with a friendlier message that instructs the App Developer.\n         *\n         * @param err An error to test.\n         */\n        const handler = (err) => {\n            if (err.message.startsWith('BackgroundManagerNotOpenError')) {\n                throw new Error([\n                    `DataStoreStateError: Tried to execute \\`${operation}\\` while DataStore was \"${this.state}\".`,\n                    `This can only be done while DataStore is \"Started\" or \"Stopped\". To remedy:`,\n                    'Ensure all calls to `stop()` and `clear()` have completed first.',\n                    'If this is not possible, retry the operation until it succeeds.',\n                ].join('\\n'));\n            }\n            else {\n                throw err;\n            }\n        };\n        return handler;\n    }\n    /**\n     * Clears all data from storage and removes all data, schema info, other\n     * initialization details, and then stops DataStore.\n     *\n     * That said, reinitialization is required after clearing. This can be done\n     * by explicitiliy calling `start()` or any method that implicitly starts\n     * DataStore, such as `query()`, `save()`, or `delete()`.\n     */\n    async clear() {\n        checkSchemaInitialized();\n        this.state = DataStoreState.Clearing;\n        await this.runningProcesses.close();\n        if (this.storage === undefined) {\n            // connect to storage so that it can be cleared without fully starting DataStore\n            this.storage = new Storage(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, this.storageAdapter, this.sessionId);\n            await this.storage.init();\n        }\n        if (syncSubscription && !syncSubscription.closed) {\n            syncSubscription.unsubscribe();\n        }\n        if (this.sync) {\n            await this.sync.stop();\n        }\n        await this.storage.clear();\n        this.initialized = undefined; // Should re-initialize when start() is called.\n        this.storage = undefined;\n        this.sync = undefined;\n        this.syncPredicates = new WeakMap();\n        await this.runningProcesses.open();\n        this.state = DataStoreState.NotRunning;\n    }\n    /**\n     * Stops all DataStore sync activities.\n     *\n     * TODO: \"Waits for graceful termination of\n     * running queries and terminates subscriptions.\"\n     */\n    async stop() {\n        this.state = DataStoreState.Stopping;\n        await this.runningProcesses.close();\n        if (syncSubscription && !syncSubscription.closed) {\n            syncSubscription.unsubscribe();\n        }\n        if (this.sync) {\n            await this.sync.stop();\n        }\n        this.initialized = undefined; // Should re-initialize when start() is called.\n        this.sync = undefined;\n        await this.runningProcesses.open();\n        this.state = DataStoreState.NotRunning;\n    }\n    /**\n     * Validates given pagination input from a query and creates a pagination\n     * argument for use against the storage layer.\n     *\n     * @param modelDefinition\n     * @param paginationProducer\n     */\n    processPagination(modelDefinition, paginationProducer) {\n        let sortPredicate;\n        const { limit, page, sort } = paginationProducer || {};\n        if (limit === undefined && page === undefined && sort === undefined) {\n            return undefined;\n        }\n        if (page !== undefined && limit === undefined) {\n            throw new Error('Limit is required when requesting a page');\n        }\n        if (page !== undefined) {\n            if (typeof page !== 'number') {\n                throw new Error('Page should be a number');\n            }\n            if (page < 0) {\n                throw new Error(\"Page can't be negative\");\n            }\n        }\n        if (limit !== undefined) {\n            if (typeof limit !== 'number') {\n                throw new Error('Limit should be a number');\n            }\n            if (limit < 0) {\n                throw new Error(\"Limit can't be negative\");\n            }\n        }\n        if (sort) {\n            sortPredicate = ModelSortPredicateCreator.createFromExisting(modelDefinition, sort);\n        }\n        return {\n            limit,\n            page,\n            sort: sortPredicate,\n        };\n    }\n    /**\n     * Examines the configured `syncExpressions` and produces a WeakMap of\n     * SchemaModel -> predicate to use during sync.\n     */\n    async processSyncExpressions() {\n        if (!this.syncExpressions || !this.syncExpressions.length) {\n            return new WeakMap();\n        }\n        const syncPredicates = await Promise.all(this.syncExpressions.map(async (syncExpression) => {\n            const { modelConstructor, conditionProducer } = await syncExpression;\n            const modelDefinition = getModelDefinition(modelConstructor);\n            // conditionProducer is either a predicate, e.g. (c) => c.field.eq(1)\n            // OR a function/promise that returns a predicate\n            const condition = await this.unwrapPromise(conditionProducer);\n            if (isPredicatesAll(condition)) {\n                return [modelDefinition, null];\n            }\n            const predicate = internals(condition(predicateFor({\n                builder: modelConstructor,\n                schema: modelDefinition,\n                pkField: extractPrimaryKeyFieldNames(modelDefinition),\n            }))).toStoragePredicate();\n            return [modelDefinition, predicate];\n        }));\n        return this.weakMapFromEntries(syncPredicates);\n    }\n    async unwrapPromise(conditionProducer) {\n        try {\n            const condition = await conditionProducer();\n            return condition || conditionProducer;\n        }\n        catch (error) {\n            if (error instanceof TypeError) {\n                return conditionProducer;\n            }\n            throw error;\n        }\n    }\n    weakMapFromEntries(entries) {\n        return entries.reduce((map, [modelDefinition, predicate]) => {\n            if (map.has(modelDefinition)) {\n                const { name } = modelDefinition;\n                logger.warn(`You can only utilize one Sync Expression per model.\n          Subsequent sync expressions for the ${name} model will be ignored.`);\n                return map;\n            }\n            if (predicate) {\n                map.set(modelDefinition, predicate);\n            }\n            return map;\n        }, new WeakMap());\n    }\n    /**\n     * A session ID to allow CMS to open databases against multiple apps.\n     * This session ID is only expected be set by AWS Amplify Studio.\n     */\n    retrieveSessionId() {\n        try {\n            const sessionId = sessionStorage.getItem('datastoreSessionId');\n            if (sessionId) {\n                const { aws_appsync_graphqlEndpoint } = this.amplifyConfig;\n                const appSyncUrl = aws_appsync_graphqlEndpoint.split('/')[2];\n                const [appSyncId] = appSyncUrl.split('.');\n                return `${sessionId}-${appSyncId}`;\n            }\n        }\n        catch { }\n        return undefined;\n    }\n}\nconst instance = new DataStore();\ninstance.configure({});\nHub.listen('core', capsule => {\n    if (capsule.payload.event === 'configure') {\n        instance.configure({});\n    }\n});\nexport { DataStore as DataStoreClass, initSchema, instance as DataStore };\n"],"names":["Storage"],"mappings":"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"}