@aws-amplify/ui-react 2.10.3 → 2.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.css.map +1 -1
- package/dist/esm/index.js +1310 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal.js +1 -1
- package/dist/esm/internal.js.map +1 -1
- package/dist/esm/styles.css.map +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +3941 -14
- package/dist/index.js +1310 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +2 -2
package/dist/esm/internal.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var F=Object.defineProperty,ct=Object.defineProperties;var At=Object.getOwnPropertyDescriptors;var w=Object.getOwnPropertySymbols;var pt=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable;var Y=(t,e,r)=>e in t?F(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,T=(t,e)=>{for(var r in e||(e={}))pt.call(e,r)&&Y(t,r,e[r]);if(w)for(var r of w(e))dt.call(e,r)&&Y(t,r,e[r]);return t},M=(t,e)=>ct(t,At(e));var n=(t,e)=>F(t,"name",{value:e,configurable:!0});import*as l from"react";import*as R from"react";import ut from"@aws-amplify/auth";import{Hub as k}from"@aws-amplify/core";var Qt=n(()=>{let[t,e]=R.useState({error:void 0,isLoading:!0,user:void 0}),r=n(({payload:a})=>{switch(a.event){case"signIn":return e({user:a.data,isLoading:!1});case"signOut":return e({isLoading:!1});default:break}},"handleAuth"),o=n(()=>(e({isLoading:!0}),ut.currentAuthenticatedUser().then(a=>e({user:a,isLoading:!1})).catch(a=>e({error:a,isLoading:!1})),k.listen("auth",r),()=>k.remove("auth",r)),"fetch");return R.useEffect(o,[]),M(T({},t),{fetch:o})},"useAuth");import*as E from"react";import{DataStore as G}from"@aws-amplify/datastore";var Tt=n(({model:t,criteria:e,pagination:r})=>{let[o,a]=E.useState({items:[],isLoading:!1,error:void 0});return E.useEffect(n(()=>{a({isLoading:!0,items:[]});let i=G.observeQuery(t,e,r).subscribe(p=>a({items:p.items,isLoading:!1}),p=>a({items:[],error:p,isLoading:!1}));if(i)return()=>i.unsubscribe()},"fetch"),[]),o},"useDataStoreCollection"),lt=n(({model:t,id:e})=>{let[r,o]=E.useState(),[a,s]=E.useState(!1),[i,p]=E.useState();return E.useEffect(n(()=>{s(!0),G.query(t,e).then(o).catch(p).finally(()=>s(!1))},"fetch"),[]),{error:i,item:r,isLoading:a}},"useDataStoreItem");function Xt(t){return t.type==="record"?lt(t):Tt(t)}n(Xt,"useDataStoreBinding");import*as x from"react";import{Storage as j}from"@aws-amplify/storage";var re=n((t,e)=>{let[r,o]=x.useState({isLoading:!0}),a=JSON.stringify(e),s=n(()=>{o({isLoading:!0});let i=j.get(t,e);return i.then(p=>o({url:p,isLoading:!1})).catch(p=>o({error:p,isLoading:!1})),()=>j.cancel(i)},"fetch");return x.useEffect(s,[t,e,a]),M(T({},r),{fetch:s})},"useStorageURL");import{Auth as xt,Hub as H}from"aws-amplify";var c="ui",h="actions",Et="auth",St="datastore",Ot="core",_t="signout",mt="navigate",ft="create",gt="delete",Dt="update",Nt="statemutation",O="started",_="finished",It=`${h}:${Et}`,m=`${It}:${_t}`,B=`${m}:${O}`,P=`${m}:${_}`,W=`${h}:${Ot}`,N=`${W}:${Nt}`,q=`${N}:${O}`,Q=`${N}:${_}`,I=`${W}:${mt}`,J=`${I}:${O}`,z=`${I}:${_}`,y=`${h}:${St}`,f=`${y}:${ft}`,K=`${f}:${O}`,U=`${f}:${_}`,g=`${y}:${gt}`,X=`${g}:${O}`,L=`${g}:${_}`,D=`${y}:${Dt}`,Z=`${D}:${O}`,v=`${D}:${_}`,tt="Error querying datastore item by id";var Mt=n(t=>typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string","isErrorWithMessage"),Rt=n(t=>{if(Mt(t))return t;try{return new Error(JSON.stringify(t))}catch{return new Error(String(t))}},"toErrorWithMessage"),S=n(t=>Rt(t).message,"getErrorMessage");var A=typeof Symbol!="undefined"&&typeof Symbol.for=="function"?Symbol.for("amplify_default"):"@@amplify_default";var Ct=n(t=>async()=>{try{H.dispatch(c,{event:B,data:{options:t}},m,A),await xt.signOut(t),H.dispatch(c,{event:P,data:{options:t}},m,A)}catch(e){H.dispatch(c,{event:P,data:{options:t,errorMessage:S(e)}},m,A)}},"useAuthSignOutAction");import*as et from"react";import{Hub as rt}from"aws-amplify";var ht="noopener noreferrer",Pt="_self",yt=n(t=>{let{type:e,url:r,anchor:o,target:a}=t,s=et.useMemo(()=>{switch(e){case"url":return()=>{window.open(r,a||Pt,ht)};case"anchor":return()=>{window.location.hash=o};case"reload":return()=>{window.location.reload()};default:return()=>{console.warn('Please provide a valid navigate type. Available types are "url", "anchor" and "reload".')}}},[o,a,e,r]);return n(()=>{rt.dispatch(c,{event:J,data:t},I,A),s(),rt.dispatch(c,{event:z,data:t},I,A)},"navigateAction")},"useNavigateAction");import*as C from"react";import{Hub as ot}from"aws-amplify";var Ut=n(t=>{let[e,r]=C.useState(t),o=C.useCallback(a=>{let s=e;ot.dispatch(c,{event:q,data:{prevState:s,newState:a}},N,A),r(a),ot.dispatch(c,{event:Q,data:{prevState:s,newState:a}},N,A)},[e]);return[e,o]},"useStateMutationAction");import{DataStore as Lt,Hub as $}from"aws-amplify";var vt=n(({model:t,fields:e})=>async()=>{try{$.dispatch(c,{event:K,data:{fields:e}},f,A);let r=await Lt.save(new t(e));$.dispatch(c,{event:U,data:{fields:e,item:r}},f,A)}catch(r){$.dispatch(c,{event:U,data:{fields:e,errorMessage:S(r)}},f,A)}},"useDataStoreCreateAction");import{DataStore as Ht,Hub as b}from"aws-amplify";var $t=n(({model:t,id:e})=>async()=>{try{b.dispatch(c,{event:X,data:{id:e}},g,A),await Ht.delete(t,e),b.dispatch(c,{event:L,data:{id:e}},g,A)}catch(r){b.dispatch(c,{event:L,data:{id:e,errorMessage:S(r)}},g,A)}},"useDataStoreDeleteAction");import{DataStore as nt,Hub as V}from"aws-amplify";var bt=n(({model:t,id:e,fields:r})=>async()=>{try{V.dispatch(c,{event:Z,data:{fields:r,id:e}},D,A);let o=await nt.query(t,e);if(!o)throw new Error(`${tt}: ${e}`);let a=await nt.save(t.copyOf(o,s=>{Object.assign(s,r)}));V.dispatch(c,{event:v,data:{fields:r,id:e,item:a}},D,A)}catch(o){V.dispatch(c,{event:v,data:{fields:r,id:e,errorMessage:S(o)}},D,A)}},"useDataStoreUpdateAction");var st=n(t=>typeof t=="function","isFunction");var Vt=n((t,e)=>{if(!t)return null;let r=Object.entries(t).filter(o=>o[0].startsWith(e));return Object.assign({},...Array.from(r,([o,a])=>({[o.replace(e,"")]:a})))},"findChildOverrides"),Ft=n((t,e)=>{if(!t)return null;let r=Object.entries(t).filter(([o])=>o===e).flatMap(([,o])=>Object.entries(o)).filter(o=>o==null?void 0:o[0]);return Object.fromEntries(r)},"getOverrideProps");function wt(t,e){let r=[...new Set(t.flatMap(s=>Object.keys(s.variantValues)))],o=Object.keys(e).filter(s=>r.includes(s)&&e[s]).reduce((s,i)=>(s[i]=e[i],s),{});return t.filter(({variantValues:s})=>Object.keys(s).length===Object.keys(o).length&&Object.entries(s).every(([i,p])=>o[i]===p)).reduce((s,i)=>T(T({},s),i.overrides),{})}n(wt,"getOverridesFromVariants");var Yt=n((t,e)=>{if(!t&&!e)return null;if(!e)return t;if(!t)return e;let r=new Set(Object.keys(e)),o=Object.keys(t).filter(s=>r.has(s)),a=Object.fromEntries(o.map(s=>[s,T(T({},t[s]),e[s])]));return T(T(T({},t),e),a)},"mergeVariantsAndOverrides");var at=n(t=>t.reduce((e,r)=>o=>r(e(o)),e=>e),"mergePredicates"),it=n(t=>{let{and:e,or:r,field:o,operator:a,operand:s}=t;if(Array.isArray(e)){let i=e.map(p=>it(p));return p=>p.and(at(i))}else if(Array.isArray(r)){let i=r.map(p=>it(p));return p=>p.or(at(i))}return i=>st(i[o])?i[o].call(i,a,s):i},"createDataStorePredicate");export{it as createDataStorePredicate,Vt as findChildOverrides,Ft as getOverrideProps,wt as getOverridesFromVariants,Yt as mergeVariantsAndOverrides,Qt as useAuth,Ct as useAuthSignOutAction,Xt as useDataStoreBinding,Tt as useDataStoreCollection,vt as useDataStoreCreateAction,$t as useDataStoreDeleteAction,lt as useDataStoreItem,bt as useDataStoreUpdateAction,yt as useNavigateAction,Ut as useStateMutationAction,re as useStorageURL};
|
|
2
2
|
//# sourceMappingURL=internal.js.map
|
package/dist/esm/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react-shim.js","../../src/hooks/useAuth.ts","../../src/hooks/useDataStore.tsx","../../src/hooks/useStorageURL.ts","../../src/hooks/actions/useAuthSignOutAction.ts","../../src/hooks/actions/constants.ts","../../src/helpers/utils.ts","../../src/helpers/constants.ts","../../src/hooks/actions/useNavigateAction.ts","../../src/hooks/actions/useStateMutationAction.ts","../../src/hooks/actions/useDataStoreCreateAction.ts","../../src/hooks/actions/useDataStoreDeleteAction.ts","../../src/hooks/actions/useDataStoreUpdateAction.ts","../../src/primitives/shared/utils.ts","../../src/primitives/shared/datastore.ts"],"sourcesContent":["/**\n * This shim exists for `esbuild` to `inject` into every .tsx file.\n * Otherwise, `import * as React from 'react'` would need to be added manually\n *\n * See: https://esbuild.github.io/content-types/#auto-import-for-jsx\n * See: https://github.com/egoist/tsup/issues/390\n */\n\nimport * as React from 'react';\nexport { React };\n","import * as React from 'react';\n\nimport Auth, { CognitoUser } from '@aws-amplify/auth';\nimport { Hub } from '@aws-amplify/core';\n\n// Exposes relevant CognitoUser properties\ninterface AuthUser extends CognitoUser {\n username: string;\n attributes: Record<string, string>;\n}\n\nexport interface UseAuthResult {\n user?: AuthUser;\n isLoading: boolean;\n error?: Error;\n fetch?: () => void;\n}\n\n/**\n * Amplify Auth React hook\n * @internal\n */\nexport const useAuth = (): UseAuthResult => {\n const [result, setResult] = React.useState<UseAuthResult>({\n error: undefined,\n isLoading: true,\n user: undefined,\n });\n\n const handleAuth = ({ payload }) => {\n switch (payload.event) {\n case 'signIn':\n return setResult({ user: payload.data, isLoading: false });\n case 'signOut':\n return setResult({ isLoading: false });\n default:\n break;\n }\n };\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n Auth.currentAuthenticatedUser()\n .then((user) => setResult({ user, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Handle Hub Auth events\n Hub.listen('auth', handleAuth);\n\n // Stop listening events on unmount\n return () => Hub.remove('auth', handleAuth);\n };\n\n React.useEffect(fetch, []);\n\n return { ...result, fetch };\n};\n","import * as React from 'react';\n\nimport { DataStore, PersistentModel } from '@aws-amplify/datastore';\n\nimport {\n DataStoreBindingProps,\n DataStoreCollectionProps,\n DataStoreCollectionResult,\n DataStoreItemProps,\n DataStoreItemResult,\n} from '../primitives/types/datastore';\n\n/**\n * Perform a collection query against a DataStore model\n * @internal\n */\nexport const useDataStoreCollection = <M extends PersistentModel>({\n model,\n criteria,\n pagination,\n}: DataStoreCollectionProps<M>): DataStoreCollectionResult<M> => {\n const [result, setResult] = React.useState<DataStoreCollectionResult<M>>({\n items: [],\n isLoading: false,\n error: undefined,\n });\n\n const fetch = () => {\n setResult({ isLoading: true, items: [] });\n\n const subscription = DataStore.observeQuery(\n model,\n criteria,\n pagination\n ).subscribe(\n (snapshot) => setResult({ items: snapshot.items, isLoading: false }),\n (error) => setResult({ items: [], error, isLoading: false })\n );\n\n // Unsubscribe from query updates on unmount\n if (subscription) {\n return () => subscription.unsubscribe();\n }\n };\n\n // Fetch on next render cycle\n // useEffect should only run once here\n // Ignore exhaustive dependencies rule here by design\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(fetch, []);\n\n return result;\n};\n\n/**\n * Perform a single record query against a DataStore model\n * @internal\n */\nexport const useDataStoreItem = <M extends PersistentModel>({\n model,\n id,\n}: DataStoreItemProps<M>): DataStoreItemResult<M> => {\n const [item, setItem] = React.useState<M>();\n const [isLoading, setLoading] = React.useState<boolean>(false);\n const [error, setError] = React.useState<Error>();\n\n const fetch = () => {\n setLoading(true);\n\n DataStore.query(model, id)\n .then(setItem)\n .catch(setError)\n .finally(() => setLoading(false));\n };\n\n // Fetch on next render cycle\n // useEffect should only run once here\n // Ignore exhaustive dependencies rule here by design\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(fetch, []);\n\n return {\n error,\n item,\n isLoading,\n };\n};\n\n/**\n * Perform a query against a DataStore model\n * @internal\n */\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'record'>\n): DataStoreItemResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'collection'>\n): DataStoreCollectionResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props:\n | DataStoreBindingProps<Model, 'record'>\n | DataStoreBindingProps<Model, 'collection'>\n): DataStoreItemResult<Model> | DataStoreCollectionResult<Model> {\n return props.type === 'record'\n ? // eslint-disable-next-line react-hooks/rules-of-hooks\n useDataStoreItem(props)\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useDataStoreCollection(props);\n}\n","import * as React from 'react';\n\nimport { S3ProviderGetConfig, Storage } from '@aws-amplify/storage';\n\nexport interface UseStorageURLResult {\n url?: string;\n error?: Error;\n isLoading: boolean;\n}\n\n/**\n * Computes a public URL for an Amplify Storage file\n * @internal\n */\nexport const useStorageURL = (key: string, options?: S3ProviderGetConfig) => {\n const [result, setResult] = React.useState<UseStorageURLResult>({\n isLoading: true,\n });\n\n // Used to prevent an infinite loop on useEffect, because `options`\n // will have a different reference on every render\n const serializedOptions = JSON.stringify(options);\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n const promise = Storage.get(key, options);\n\n // Attempt to fetch storage object url\n promise\n .then((url) => setResult({ url, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Cancel current promise on unmount\n return () => Storage.cancel(promise);\n };\n\n React.useEffect(fetch, [key, options, serializedOptions]);\n\n return { ...result, fetch };\n};\n","import { Auth, Hub } from 'aws-amplify';\nimport { SignOutOpts } from '@aws-amplify/auth/lib-esm/types/Auth';\n\nimport {\n UI_CHANNEL,\n ACTION_AUTH_SIGNOUT_FINISHED,\n ACTION_AUTH_SIGNOUT_STARTED,\n EVENT_ACTION_AUTH_SIGNOUT,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseAuthSignOutAction {\n (options?: SignOutOpts): () => Promise<void>;\n}\n\n/**\n * Action to Signout of Authenticated session\n * @internal\n */\nexport const useAuthSignOutAction: UseAuthSignOutAction =\n (options) => async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_AUTH_SIGNOUT_STARTED,\n data: { options },\n },\n EVENT_ACTION_AUTH_SIGNOUT,\n AMPLIFY_SYMBOL\n );\n\n await Auth.signOut(options);\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_AUTH_SIGNOUT_FINISHED,\n data: { options },\n },\n EVENT_ACTION_AUTH_SIGNOUT,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_AUTH_SIGNOUT_FINISHED,\n data: { options, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_AUTH_SIGNOUT,\n AMPLIFY_SYMBOL\n );\n }\n };\n","/**\n * UI Actions use the `ui` channel\n * Format for `ui` channel events is EVENT_TYPE:CATEGORY:NAME:STATUS\n */\nexport const UI_CHANNEL = 'ui';\nexport const UI_EVENT_TYPE_ACTIONS = 'actions';\nexport const CATEGORY_AUTH = 'auth';\nexport const CATEGORY_DATASTORE = 'datastore';\nexport const CATEGORY_CORE = 'core';\nexport const ACTION_AUTH_SIGNOUT = 'signout';\nexport const ACTION_NAVIGATE = 'navigate';\nexport const ACTION_DATASTORE_CREATE = 'create';\nexport const ACTION_DATASTORE_DELETE = 'delete';\nexport const ACTION_DATASTORE_UPDATE = 'update';\nexport const ACTION_STATE_MUTATION = 'statemutation';\nexport const STATUS_STARTED = 'started';\nexport const STATUS_FINISHED = 'finished';\n\n// actions:auth:signout\nexport const EVENT_ACTION_AUTH = `${UI_EVENT_TYPE_ACTIONS}:${CATEGORY_AUTH}`;\nexport const EVENT_ACTION_AUTH_SIGNOUT = `${EVENT_ACTION_AUTH}:${ACTION_AUTH_SIGNOUT}`;\nexport const ACTION_AUTH_SIGNOUT_STARTED = `${EVENT_ACTION_AUTH_SIGNOUT}:${STATUS_STARTED}`;\nexport const ACTION_AUTH_SIGNOUT_FINISHED = `${EVENT_ACTION_AUTH_SIGNOUT}:${STATUS_FINISHED}`;\n\n// actions:core\nexport const EVENT_ACTION_CORE = `${UI_EVENT_TYPE_ACTIONS}:${CATEGORY_CORE}`;\n// actions:core:statemutation\nexport const EVENT_ACTION_CORE_STATE_MUTATION = `${EVENT_ACTION_CORE}:${ACTION_STATE_MUTATION}`;\nexport const ACTION_STATE_MUTATION_STARTED = `${EVENT_ACTION_CORE_STATE_MUTATION}:${STATUS_STARTED}`;\nexport const ACTION_STATE_MUTATION_FINISHED = `${EVENT_ACTION_CORE_STATE_MUTATION}:${STATUS_FINISHED}`;\n// actions:core:navigate\nexport const EVENT_ACTION_CORE_NAVIGATE = `${EVENT_ACTION_CORE}:${ACTION_NAVIGATE}`;\nexport const ACTION_NAVIGATE_STARTED = `${EVENT_ACTION_CORE_NAVIGATE}:${STATUS_STARTED}`;\nexport const ACTION_NAVIGATE_FINISHED = `${EVENT_ACTION_CORE_NAVIGATE}:${STATUS_FINISHED}`;\n\n// actions:datastore\nexport const EVENT_ACTION_DATASTORE = `${UI_EVENT_TYPE_ACTIONS}:${CATEGORY_DATASTORE}`;\n// actions:datastore:create\nexport const EVENT_ACTION_DATASTORE_CREATE = `${EVENT_ACTION_DATASTORE}:${ACTION_DATASTORE_CREATE}`;\nexport const ACTION_DATASTORE_CREATE_STARTED = `${EVENT_ACTION_DATASTORE_CREATE}:${STATUS_STARTED}`;\nexport const ACTION_DATASTORE_CREATE_FINISHED = `${EVENT_ACTION_DATASTORE_CREATE}:${STATUS_FINISHED}`;\n// actions:datastore:delete\nexport const EVENT_ACTION_DATASTORE_DELETE = `${EVENT_ACTION_DATASTORE}:${ACTION_DATASTORE_DELETE}`;\nexport const ACTION_DATASTORE_DELETE_STARTED = `${EVENT_ACTION_DATASTORE_DELETE}:${STATUS_STARTED}`;\nexport const ACTION_DATASTORE_DELETE_FINISHED = `${EVENT_ACTION_DATASTORE_DELETE}:${STATUS_FINISHED}`;\n// actions:datastore:update\nexport const EVENT_ACTION_DATASTORE_UPDATE = `${EVENT_ACTION_DATASTORE}:${ACTION_DATASTORE_UPDATE}`;\nexport const ACTION_DATASTORE_UPDATE_STARTED = `${EVENT_ACTION_DATASTORE_UPDATE}:${STATUS_STARTED}`;\nexport const ACTION_DATASTORE_UPDATE_FINISHED = `${EVENT_ACTION_DATASTORE_UPDATE}:${STATUS_FINISHED}`;\n\nexport const DATASTORE_QUERY_BY_ID_ERROR =\n 'Error querying datastore item by id';\n","export const isDevelopment = () => process.env.NODE_ENV !== 'production';\n\nexport const isInputOrSelectElement = (\n target: unknown\n): target is HTMLInputElement | HTMLSelectElement => {\n return isInputElement(target) || isSelectElement(target);\n};\n\nexport const isInputElement = (target: unknown): target is HTMLInputElement => {\n return (target as HTMLElement)?.nodeName === 'INPUT';\n};\n\nexport const isSelectElement = (\n target: unknown\n): target is HTMLInputElement => {\n return (target as HTMLElement)?.nodeName === 'SELECT';\n};\n\nexport const areArraysEqual = (arr1: Array<any>, arr2: Array<any>) => {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((value, index) => value === arr2[index]);\n};\n\n// Error message handling source:\n// https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\ntype ErrorWithMessage = {\n message: string;\n};\n\nexport const isErrorWithMessage = (\n error: unknown\n): error is ErrorWithMessage => {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof (error as Record<string, unknown>).message === 'string'\n );\n};\n\nexport const toErrorWithMessage = (maybeError: unknown): ErrorWithMessage => {\n if (isErrorWithMessage(maybeError)) return maybeError;\n\n try {\n return new Error(JSON.stringify(maybeError));\n } catch {\n // fallback in case there's an error stringifying the maybeError\n // like with circular references for example.\n return new Error(String(maybeError));\n }\n};\n\nexport const getErrorMessage = (error: unknown) => {\n return toErrorWithMessage(error).message;\n};\n\nexport const getFormDataFromEvent = (\n event: React.FormEvent<HTMLFormElement>\n) => {\n const formData = new FormData(event.target as HTMLFormElement);\n return Object.fromEntries(formData);\n};\n","export const AMPLIFY_SYMBOL = (\n typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default'\n) as Symbol;\n","import * as React from 'react';\nimport { Hub } from 'aws-amplify';\n\nimport {\n ACTION_NAVIGATE_FINISHED,\n ACTION_NAVIGATE_STARTED,\n EVENT_ACTION_CORE_NAVIGATE,\n UI_CHANNEL,\n} from './constants';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport type NavigateType = 'url' | 'anchor' | 'reload';\n\ntype NavigateRun = () => void;\n\nexport interface UseNavigateActionOptions {\n type: NavigateType;\n\n url?: string;\n\n anchor?: string;\n\n target?: React.HTMLAttributeAnchorTarget;\n}\n\nexport const windowFeatures = 'noopener noreferrer';\nexport const defaultTarget = '_self';\n\n/**\n * Action to instruct user’s browser to change current location\n * @internal\n */\nexport const useNavigateAction = (options: UseNavigateActionOptions) => {\n const { type, url, anchor, target } = options;\n const run: NavigateRun = React.useMemo(() => {\n switch (type) {\n case 'url':\n return () => {\n window.open(url, target ? target : defaultTarget, windowFeatures);\n };\n case 'anchor':\n return () => {\n window.location.hash = anchor;\n };\n case 'reload':\n return () => {\n window.location.reload();\n };\n default:\n return () => {\n console.warn(\n 'Please provide a valid navigate type. Available types are \"url\", \"anchor\" and \"reload\".'\n );\n };\n }\n }, [anchor, target, type, url]);\n\n const navigateAction = () => {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_NAVIGATE_STARTED,\n data: options,\n },\n EVENT_ACTION_CORE_NAVIGATE,\n AMPLIFY_SYMBOL\n );\n run();\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_NAVIGATE_FINISHED,\n data: options,\n },\n EVENT_ACTION_CORE_NAVIGATE,\n AMPLIFY_SYMBOL\n );\n };\n\n return navigateAction;\n};\n","import * as React from 'react';\nimport { Hub } from 'aws-amplify';\n\nimport {\n ACTION_STATE_MUTATION_FINISHED,\n ACTION_STATE_MUTATION_STARTED,\n EVENT_ACTION_CORE_STATE_MUTATION,\n UI_CHANNEL,\n} from './constants';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\ntype UseStateMutationAction<StateType> = [\n StateType,\n (newState: StateType) => void\n];\n\n/**\n * Action to wrap React.useState with Hub events\n * @internal\n */\nexport const useStateMutationAction = <StateType>(\n initialState: StateType\n): UseStateMutationAction<StateType> => {\n const [state, setState] = React.useState(initialState);\n\n const setNewState = React.useCallback(\n (newState: StateType) => {\n const prevState = state;\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_STATE_MUTATION_STARTED,\n data: { prevState, newState },\n },\n EVENT_ACTION_CORE_STATE_MUTATION,\n AMPLIFY_SYMBOL\n );\n\n setState(newState);\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_STATE_MUTATION_FINISHED,\n data: { prevState, newState },\n },\n EVENT_ACTION_CORE_STATE_MUTATION,\n AMPLIFY_SYMBOL\n );\n },\n [state]\n );\n\n return [state, setNewState];\n};\n","import {\n ModelInit,\n PersistentModel,\n PersistentModelConstructor,\n} from '@aws-amplify/datastore';\nimport { DataStore, Hub } from 'aws-amplify';\n\nimport {\n ACTION_DATASTORE_CREATE_FINISHED,\n ACTION_DATASTORE_CREATE_STARTED,\n EVENT_ACTION_DATASTORE_CREATE,\n UI_CHANNEL,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseDataStoreCreateActionOptions<\n Model extends PersistentModel\n> {\n model: PersistentModelConstructor<Model>;\n fields: ModelInit<Model, { readOnlyFields: 'createdAt' | 'updatedAt' }>;\n}\n\n/**\n * Action to Create DataStore item\n * @internal\n */\nexport const useDataStoreCreateAction =\n <Model extends PersistentModel>({\n model,\n fields,\n }: UseDataStoreCreateActionOptions<Model>) =>\n async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_CREATE_STARTED,\n data: { fields },\n },\n EVENT_ACTION_DATASTORE_CREATE,\n AMPLIFY_SYMBOL\n );\n\n const item = await DataStore.save(new model(fields));\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_CREATE_FINISHED,\n data: { fields, item },\n },\n EVENT_ACTION_DATASTORE_CREATE,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_CREATE_FINISHED,\n data: { fields, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_DATASTORE_CREATE,\n AMPLIFY_SYMBOL\n );\n }\n };\n","import {\n PersistentModel,\n PersistentModelConstructor,\n} from '@aws-amplify/datastore';\nimport { DataStore, Hub } from 'aws-amplify';\n\nimport {\n ACTION_DATASTORE_DELETE_FINISHED,\n ACTION_DATASTORE_DELETE_STARTED,\n EVENT_ACTION_DATASTORE_DELETE,\n UI_CHANNEL,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseDataStoreDeleteActionOptions<\n Model extends PersistentModel\n> {\n model: PersistentModelConstructor<Model>;\n id: string;\n}\n\n/**\n * Action to Delete DataStore item\n * @internal\n */\nexport const useDataStoreDeleteAction =\n <Model extends PersistentModel>({\n model,\n id,\n }: UseDataStoreDeleteActionOptions<Model>) =>\n async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_DELETE_STARTED,\n data: { id },\n },\n EVENT_ACTION_DATASTORE_DELETE,\n AMPLIFY_SYMBOL\n );\n\n await DataStore.delete(model, id);\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_DELETE_FINISHED,\n data: { id },\n },\n EVENT_ACTION_DATASTORE_DELETE,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_DELETE_FINISHED,\n data: { id, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_DATASTORE_DELETE,\n AMPLIFY_SYMBOL\n );\n }\n };\n","import {\n ModelInit,\n PersistentModel,\n PersistentModelConstructor,\n} from '@aws-amplify/datastore';\nimport { DataStore, Hub } from 'aws-amplify';\n\nimport {\n ACTION_DATASTORE_UPDATE_FINISHED,\n ACTION_DATASTORE_UPDATE_STARTED,\n DATASTORE_QUERY_BY_ID_ERROR,\n EVENT_ACTION_DATASTORE_UPDATE,\n UI_CHANNEL,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseDataStoreUpdateActionOptions<\n Model extends PersistentModel\n> {\n model: PersistentModelConstructor<Model>;\n id: string;\n fields: ModelInit<Model, { readOnlyFields: 'createdAt' | 'updatedAt' }>;\n}\n\n/**\n * Action to Update DataStore item\n * @internal\n */\nexport const useDataStoreUpdateAction =\n <Model extends PersistentModel>({\n model,\n id,\n fields,\n }: UseDataStoreUpdateActionOptions<Model>) =>\n async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_UPDATE_STARTED,\n data: { fields, id },\n },\n EVENT_ACTION_DATASTORE_UPDATE,\n AMPLIFY_SYMBOL\n );\n\n const original = await DataStore.query(model, id);\n // If query by id doesn't return an item,\n // original will be undefined\n // so we'll log a helpful message.\n if (!original) {\n throw new Error(`${DATASTORE_QUERY_BY_ID_ERROR}: ${id}`);\n }\n\n const item = await DataStore.save(\n model.copyOf(original, (updated: any) => {\n Object.assign(updated, fields);\n })\n );\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_UPDATE_FINISHED,\n data: { fields, id, item },\n },\n EVENT_ACTION_DATASTORE_UPDATE,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_UPDATE_FINISHED,\n data: { fields, id, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_DATASTORE_UPDATE,\n AMPLIFY_SYMBOL\n );\n }\n };\n","export const strHasLength = (str: unknown): str is string =>\n typeof str === 'string' && str.length > 0;\n\nexport const isFunction = (fn: unknown): fn is Function =>\n typeof fn === 'function';\n\nexport const isEmptyString = (value: unknown) =>\n typeof value === 'string' && value.length === 0;\n\nexport const isNullOrEmptyString = (value: unknown) =>\n value == null || isEmptyString(value);\n/**\n * Create a consecutive integer array from start value to end value.\n * @param start start value\n * @param end end value\n * @returns an integer array with elements from start to end consecutively\n */\nexport const getConsecutiveIntArray = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\n/**\n * This method is used to parse through all of the overrides and\n * only pass the relevant child overrides for a given component.\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns overrides only for specified element\n */\nexport const findChildOverrides = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const filteredOverrides = Object.entries(overrides).filter((m) =>\n m[0].startsWith(elementHierarchy)\n );\n\n return Object.assign(\n {},\n ...Array.from(filteredOverrides, ([k, v]) => ({\n [k.replace(elementHierarchy, '')]: v,\n }))\n );\n};\n\n/**\n * This helper method is used to get the overrides\n * that will be applied to a component\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns component overrides\n */\nexport const getOverrideProps = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const componentOverrides = Object.entries(overrides)\n .filter(([key]) => key === elementHierarchy)\n .flatMap(([, value]) => Object.entries(value))\n .filter((m) => m?.[0]);\n\n return Object.fromEntries(componentOverrides);\n};\n\nexport type EscapeHatchProps = {\n [elementHierarchy: string]: Record<string, string>;\n};\n\ntype VariantValues = { [key: string]: string };\nexport type Variant = {\n variantValues: VariantValues;\n overrides: EscapeHatchProps;\n};\n\n/**\n * Given a list of style variants, select a given one based on input props\n * @internal\n * @param variants list of style variants to select from\n * @param props variant values to select from the list, may include additional props, to tidy up usage upstream\n */\nexport function getOverridesFromVariants(\n variants: Variant[],\n props: { [key: string]: any }\n) {\n // Get unique keys from the provided variants\n const variantValueKeys = [\n ...new Set(\n variants.flatMap((variant) => Object.keys(variant.variantValues))\n ),\n ];\n\n // Get variant value object from provided props, dropping keys that aren't in variantValueKeys, or whose vals are falsey\n const variantValuesFromProps: VariantValues = Object.keys(props)\n .filter((i) => variantValueKeys.includes(i) && props[i])\n .reduce((acc, key) => {\n acc[key] = props[key];\n return acc;\n }, {});\n\n const matchedVariants = variants.filter(({ variantValues }) => {\n return (\n Object.keys(variantValues).length ===\n Object.keys(variantValuesFromProps).length &&\n Object.entries(variantValues).every(\n ([key, value]) => variantValuesFromProps[key] === value\n )\n );\n });\n\n return matchedVariants.reduce((overrides, variant) => {\n return { ...overrides, ...variant.overrides };\n }, {});\n}\n\n/**\n * This helper method is used to merge\n * variants with overrides\n * @internal\n * @param variants\n * @param overrides\n * @returns merged variants with overrides\n */\nexport const mergeVariantsAndOverrides = (\n variants: EscapeHatchProps,\n overrides: EscapeHatchProps\n): EscapeHatchProps => {\n if (!variants && !overrides) {\n return null;\n }\n if (!overrides) {\n return variants;\n }\n if (!variants) {\n return overrides;\n }\n const overrideKeys = new Set(Object.keys(overrides));\n const sharedKeys = Object.keys(variants).filter((variantKey) =>\n overrideKeys.has(variantKey)\n );\n const merged = Object.fromEntries(\n sharedKeys.map((sharedKey) => [\n sharedKey,\n { ...variants[sharedKey], ...overrides[sharedKey] },\n ])\n );\n return {\n ...variants,\n ...overrides,\n ...merged,\n };\n};\n","import {\n ModelPredicate,\n PersistentModel,\n ProducerModelPredicate,\n} from '@aws-amplify/datastore';\nimport { DataStorePredicateObject } from '../types/datastore';\nimport { isFunction } from './utils';\n\n/**\n * Given an array of predicates, compose them in sequential order\n */\nconst mergePredicates = <Model extends PersistentModel>(\n predicates: ProducerModelPredicate<Model>[]\n): ProducerModelPredicate<Model> =>\n predicates.reduce(\n (previous, current) => (predicate) => current(previous(predicate)),\n (predicate) => predicate\n );\n\n/**\n * Creates a DataStore compatible predicate function from an object representation\n * @internal\n */\nexport const createDataStorePredicate = <Model extends PersistentModel>(\n predicateObject: DataStorePredicateObject\n): ProducerModelPredicate<Model> => {\n const {\n and: groupAnd,\n or: groupOr,\n field,\n operator,\n operand,\n } = predicateObject;\n\n if (Array.isArray(groupAnd)) {\n const predicates = groupAnd.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.and(mergePredicates(predicates));\n } else if (Array.isArray(groupOr)) {\n const predicates = groupOr.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.or(mergePredicates(predicates));\n }\n\n return (predicate: ModelPredicate<Model>) => {\n if (isFunction(predicate[field])) {\n return predicate[field].call(predicate, operator, operand);\n }\n\n return predicate;\n };\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/react-shim.js","../../src/hooks/useAuth.ts","../../src/hooks/useDataStore.tsx","../../src/hooks/useStorageURL.ts","../../src/hooks/actions/useAuthSignOutAction.ts","../../src/hooks/actions/constants.ts","../../src/helpers/utils.ts","../../src/helpers/constants.ts","../../src/hooks/actions/useNavigateAction.ts","../../src/hooks/actions/useStateMutationAction.ts","../../src/hooks/actions/useDataStoreCreateAction.ts","../../src/hooks/actions/useDataStoreDeleteAction.ts","../../src/hooks/actions/useDataStoreUpdateAction.ts","../../src/primitives/shared/utils.ts","../../src/primitives/shared/datastore.ts"],"sourcesContent":["/**\n * This shim exists for `esbuild` to `inject` into every .tsx file.\n * Otherwise, `import * as React from 'react'` would need to be added manually\n *\n * See: https://esbuild.github.io/content-types/#auto-import-for-jsx\n * See: https://github.com/egoist/tsup/issues/390\n */\n\nimport * as React from 'react';\nexport { React };\n","import * as React from 'react';\n\nimport Auth, { CognitoUser } from '@aws-amplify/auth';\nimport { Hub } from '@aws-amplify/core';\n\n// Exposes relevant CognitoUser properties\ninterface AuthUser extends CognitoUser {\n username: string;\n attributes: Record<string, string>;\n}\n\nexport interface UseAuthResult {\n user?: AuthUser;\n isLoading: boolean;\n error?: Error;\n fetch?: () => void;\n}\n\n/**\n * Amplify Auth React hook\n * @internal\n */\nexport const useAuth = (): UseAuthResult => {\n const [result, setResult] = React.useState<UseAuthResult>({\n error: undefined,\n isLoading: true,\n user: undefined,\n });\n\n const handleAuth = ({ payload }) => {\n switch (payload.event) {\n case 'signIn':\n return setResult({ user: payload.data, isLoading: false });\n case 'signOut':\n return setResult({ isLoading: false });\n default:\n break;\n }\n };\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n Auth.currentAuthenticatedUser()\n .then((user) => setResult({ user, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Handle Hub Auth events\n Hub.listen('auth', handleAuth);\n\n // Stop listening events on unmount\n return () => Hub.remove('auth', handleAuth);\n };\n\n React.useEffect(fetch, []);\n\n return { ...result, fetch };\n};\n","import * as React from 'react';\n\nimport { DataStore, PersistentModel } from '@aws-amplify/datastore';\n\nimport {\n DataStoreBindingProps,\n DataStoreCollectionProps,\n DataStoreCollectionResult,\n DataStoreItemProps,\n DataStoreItemResult,\n} from '../primitives/types/datastore';\n\n/**\n * Perform a collection query against a DataStore model\n * @internal\n */\nexport const useDataStoreCollection = <M extends PersistentModel>({\n model,\n criteria,\n pagination,\n}: DataStoreCollectionProps<M>): DataStoreCollectionResult<M> => {\n const [result, setResult] = React.useState<DataStoreCollectionResult<M>>({\n items: [],\n isLoading: false,\n error: undefined,\n });\n\n const fetch = () => {\n setResult({ isLoading: true, items: [] });\n\n const subscription = DataStore.observeQuery(\n model,\n criteria,\n pagination\n ).subscribe(\n (snapshot) => setResult({ items: snapshot.items, isLoading: false }),\n (error) => setResult({ items: [], error, isLoading: false })\n );\n\n // Unsubscribe from query updates on unmount\n if (subscription) {\n return () => subscription.unsubscribe();\n }\n };\n\n // Fetch on next render cycle\n // useEffect should only run once here\n // Ignore exhaustive dependencies rule here by design\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(fetch, []);\n\n return result;\n};\n\n/**\n * Perform a single record query against a DataStore model\n * @internal\n */\nexport const useDataStoreItem = <M extends PersistentModel>({\n model,\n id,\n}: DataStoreItemProps<M>): DataStoreItemResult<M> => {\n const [item, setItem] = React.useState<M>();\n const [isLoading, setLoading] = React.useState<boolean>(false);\n const [error, setError] = React.useState<Error>();\n\n const fetch = () => {\n setLoading(true);\n\n DataStore.query(model, id)\n .then(setItem)\n .catch(setError)\n .finally(() => setLoading(false));\n };\n\n // Fetch on next render cycle\n // useEffect should only run once here\n // Ignore exhaustive dependencies rule here by design\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(fetch, []);\n\n return {\n error,\n item,\n isLoading,\n };\n};\n\n/**\n * Perform a query against a DataStore model\n * @internal\n */\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'record'>\n): DataStoreItemResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props: DataStoreBindingProps<Model, 'collection'>\n): DataStoreCollectionResult<Model>;\nexport function useDataStoreBinding<Model extends PersistentModel>(\n props:\n | DataStoreBindingProps<Model, 'record'>\n | DataStoreBindingProps<Model, 'collection'>\n): DataStoreItemResult<Model> | DataStoreCollectionResult<Model> {\n return props.type === 'record'\n ? // eslint-disable-next-line react-hooks/rules-of-hooks\n useDataStoreItem(props)\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useDataStoreCollection(props);\n}\n","import * as React from 'react';\n\nimport { S3ProviderGetConfig, Storage } from '@aws-amplify/storage';\n\nexport interface UseStorageURLResult {\n url?: string;\n error?: Error;\n isLoading: boolean;\n}\n\n/**\n * Computes a public URL for an Amplify Storage file\n * @internal\n */\nexport const useStorageURL = (key: string, options?: S3ProviderGetConfig) => {\n const [result, setResult] = React.useState<UseStorageURLResult>({\n isLoading: true,\n });\n\n // Used to prevent an infinite loop on useEffect, because `options`\n // will have a different reference on every render\n const serializedOptions = JSON.stringify(options);\n\n const fetch = () => {\n setResult({ isLoading: true });\n\n const promise = Storage.get(key, options);\n\n // Attempt to fetch storage object url\n promise\n .then((url) => setResult({ url, isLoading: false }))\n .catch((error) => setResult({ error, isLoading: false }));\n\n // Cancel current promise on unmount\n return () => Storage.cancel(promise);\n };\n\n React.useEffect(fetch, [key, options, serializedOptions]);\n\n return { ...result, fetch };\n};\n","import { Auth, Hub } from 'aws-amplify';\nimport { SignOutOpts } from '@aws-amplify/auth/lib-esm/types/Auth';\n\nimport {\n UI_CHANNEL,\n ACTION_AUTH_SIGNOUT_FINISHED,\n ACTION_AUTH_SIGNOUT_STARTED,\n EVENT_ACTION_AUTH_SIGNOUT,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseAuthSignOutAction {\n (options?: SignOutOpts): () => Promise<void>;\n}\n\n/**\n * Action to Signout of Authenticated session\n * @internal\n */\nexport const useAuthSignOutAction: UseAuthSignOutAction =\n (options) => async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_AUTH_SIGNOUT_STARTED,\n data: { options },\n },\n EVENT_ACTION_AUTH_SIGNOUT,\n AMPLIFY_SYMBOL\n );\n\n await Auth.signOut(options);\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_AUTH_SIGNOUT_FINISHED,\n data: { options },\n },\n EVENT_ACTION_AUTH_SIGNOUT,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_AUTH_SIGNOUT_FINISHED,\n data: { options, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_AUTH_SIGNOUT,\n AMPLIFY_SYMBOL\n );\n }\n };\n","/**\n * UI Actions use the `ui` channel\n * Format for `ui` channel events is EVENT_TYPE:CATEGORY:NAME:STATUS\n */\nexport const UI_CHANNEL = 'ui';\nexport const UI_EVENT_TYPE_ACTIONS = 'actions';\nexport const CATEGORY_AUTH = 'auth';\nexport const CATEGORY_DATASTORE = 'datastore';\nexport const CATEGORY_CORE = 'core';\nexport const ACTION_AUTH_SIGNOUT = 'signout';\nexport const ACTION_NAVIGATE = 'navigate';\nexport const ACTION_DATASTORE_CREATE = 'create';\nexport const ACTION_DATASTORE_DELETE = 'delete';\nexport const ACTION_DATASTORE_UPDATE = 'update';\nexport const ACTION_STATE_MUTATION = 'statemutation';\nexport const STATUS_STARTED = 'started';\nexport const STATUS_FINISHED = 'finished';\n\n// actions:auth:signout\nexport const EVENT_ACTION_AUTH = `${UI_EVENT_TYPE_ACTIONS}:${CATEGORY_AUTH}`;\nexport const EVENT_ACTION_AUTH_SIGNOUT = `${EVENT_ACTION_AUTH}:${ACTION_AUTH_SIGNOUT}`;\nexport const ACTION_AUTH_SIGNOUT_STARTED = `${EVENT_ACTION_AUTH_SIGNOUT}:${STATUS_STARTED}`;\nexport const ACTION_AUTH_SIGNOUT_FINISHED = `${EVENT_ACTION_AUTH_SIGNOUT}:${STATUS_FINISHED}`;\n\n// actions:core\nexport const EVENT_ACTION_CORE = `${UI_EVENT_TYPE_ACTIONS}:${CATEGORY_CORE}`;\n// actions:core:statemutation\nexport const EVENT_ACTION_CORE_STATE_MUTATION = `${EVENT_ACTION_CORE}:${ACTION_STATE_MUTATION}`;\nexport const ACTION_STATE_MUTATION_STARTED = `${EVENT_ACTION_CORE_STATE_MUTATION}:${STATUS_STARTED}`;\nexport const ACTION_STATE_MUTATION_FINISHED = `${EVENT_ACTION_CORE_STATE_MUTATION}:${STATUS_FINISHED}`;\n// actions:core:navigate\nexport const EVENT_ACTION_CORE_NAVIGATE = `${EVENT_ACTION_CORE}:${ACTION_NAVIGATE}`;\nexport const ACTION_NAVIGATE_STARTED = `${EVENT_ACTION_CORE_NAVIGATE}:${STATUS_STARTED}`;\nexport const ACTION_NAVIGATE_FINISHED = `${EVENT_ACTION_CORE_NAVIGATE}:${STATUS_FINISHED}`;\n\n// actions:datastore\nexport const EVENT_ACTION_DATASTORE = `${UI_EVENT_TYPE_ACTIONS}:${CATEGORY_DATASTORE}`;\n// actions:datastore:create\nexport const EVENT_ACTION_DATASTORE_CREATE = `${EVENT_ACTION_DATASTORE}:${ACTION_DATASTORE_CREATE}`;\nexport const ACTION_DATASTORE_CREATE_STARTED = `${EVENT_ACTION_DATASTORE_CREATE}:${STATUS_STARTED}`;\nexport const ACTION_DATASTORE_CREATE_FINISHED = `${EVENT_ACTION_DATASTORE_CREATE}:${STATUS_FINISHED}`;\n// actions:datastore:delete\nexport const EVENT_ACTION_DATASTORE_DELETE = `${EVENT_ACTION_DATASTORE}:${ACTION_DATASTORE_DELETE}`;\nexport const ACTION_DATASTORE_DELETE_STARTED = `${EVENT_ACTION_DATASTORE_DELETE}:${STATUS_STARTED}`;\nexport const ACTION_DATASTORE_DELETE_FINISHED = `${EVENT_ACTION_DATASTORE_DELETE}:${STATUS_FINISHED}`;\n// actions:datastore:update\nexport const EVENT_ACTION_DATASTORE_UPDATE = `${EVENT_ACTION_DATASTORE}:${ACTION_DATASTORE_UPDATE}`;\nexport const ACTION_DATASTORE_UPDATE_STARTED = `${EVENT_ACTION_DATASTORE_UPDATE}:${STATUS_STARTED}`;\nexport const ACTION_DATASTORE_UPDATE_FINISHED = `${EVENT_ACTION_DATASTORE_UPDATE}:${STATUS_FINISHED}`;\n\nexport const DATASTORE_QUERY_BY_ID_ERROR =\n 'Error querying datastore item by id';\n","export const isDevelopment = () => process.env.NODE_ENV !== 'production';\n\nexport const areArraysEqual = (arr1: Array<any>, arr2: Array<any>) => {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((value, index) => value === arr2[index]);\n};\n\n// Error message handling source:\n// https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\ntype ErrorWithMessage = {\n message: string;\n};\n\nexport const isErrorWithMessage = (\n error: unknown\n): error is ErrorWithMessage => {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof (error as Record<string, unknown>).message === 'string'\n );\n};\n\nexport const toErrorWithMessage = (maybeError: unknown): ErrorWithMessage => {\n if (isErrorWithMessage(maybeError)) return maybeError;\n\n try {\n return new Error(JSON.stringify(maybeError));\n } catch {\n // fallback in case there's an error stringifying the maybeError\n // like with circular references for example.\n return new Error(String(maybeError));\n }\n};\n\nexport const getErrorMessage = (error: unknown) => {\n return toErrorWithMessage(error).message;\n};\n\nexport const getFormDataFromEvent = (\n event: React.FormEvent<HTMLFormElement>\n) => {\n const formData = new FormData(event.target as HTMLFormElement);\n return Object.fromEntries(formData);\n};\n","export const AMPLIFY_SYMBOL = (\n typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default'\n) as Symbol;\n","import * as React from 'react';\nimport { Hub } from 'aws-amplify';\n\nimport {\n ACTION_NAVIGATE_FINISHED,\n ACTION_NAVIGATE_STARTED,\n EVENT_ACTION_CORE_NAVIGATE,\n UI_CHANNEL,\n} from './constants';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport type NavigateType = 'url' | 'anchor' | 'reload';\n\ntype NavigateRun = () => void;\n\nexport interface UseNavigateActionOptions {\n type: NavigateType;\n\n url?: string;\n\n anchor?: string;\n\n target?: React.HTMLAttributeAnchorTarget;\n}\n\nexport const windowFeatures = 'noopener noreferrer';\nexport const defaultTarget = '_self';\n\n/**\n * Action to instruct user’s browser to change current location\n * @internal\n */\nexport const useNavigateAction = (options: UseNavigateActionOptions) => {\n const { type, url, anchor, target } = options;\n const run: NavigateRun = React.useMemo(() => {\n switch (type) {\n case 'url':\n return () => {\n window.open(url, target ? target : defaultTarget, windowFeatures);\n };\n case 'anchor':\n return () => {\n window.location.hash = anchor;\n };\n case 'reload':\n return () => {\n window.location.reload();\n };\n default:\n return () => {\n console.warn(\n 'Please provide a valid navigate type. Available types are \"url\", \"anchor\" and \"reload\".'\n );\n };\n }\n }, [anchor, target, type, url]);\n\n const navigateAction = () => {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_NAVIGATE_STARTED,\n data: options,\n },\n EVENT_ACTION_CORE_NAVIGATE,\n AMPLIFY_SYMBOL\n );\n run();\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_NAVIGATE_FINISHED,\n data: options,\n },\n EVENT_ACTION_CORE_NAVIGATE,\n AMPLIFY_SYMBOL\n );\n };\n\n return navigateAction;\n};\n","import * as React from 'react';\nimport { Hub } from 'aws-amplify';\n\nimport {\n ACTION_STATE_MUTATION_FINISHED,\n ACTION_STATE_MUTATION_STARTED,\n EVENT_ACTION_CORE_STATE_MUTATION,\n UI_CHANNEL,\n} from './constants';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\ntype UseStateMutationAction<StateType> = [\n StateType,\n (newState: StateType) => void\n];\n\n/**\n * Action to wrap React.useState with Hub events\n * @internal\n */\nexport const useStateMutationAction = <StateType>(\n initialState: StateType\n): UseStateMutationAction<StateType> => {\n const [state, setState] = React.useState(initialState);\n\n const setNewState = React.useCallback(\n (newState: StateType) => {\n const prevState = state;\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_STATE_MUTATION_STARTED,\n data: { prevState, newState },\n },\n EVENT_ACTION_CORE_STATE_MUTATION,\n AMPLIFY_SYMBOL\n );\n\n setState(newState);\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_STATE_MUTATION_FINISHED,\n data: { prevState, newState },\n },\n EVENT_ACTION_CORE_STATE_MUTATION,\n AMPLIFY_SYMBOL\n );\n },\n [state]\n );\n\n return [state, setNewState];\n};\n","import {\n ModelInit,\n PersistentModel,\n PersistentModelConstructor,\n} from '@aws-amplify/datastore';\nimport { DataStore, Hub } from 'aws-amplify';\n\nimport {\n ACTION_DATASTORE_CREATE_FINISHED,\n ACTION_DATASTORE_CREATE_STARTED,\n EVENT_ACTION_DATASTORE_CREATE,\n UI_CHANNEL,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseDataStoreCreateActionOptions<\n Model extends PersistentModel\n> {\n model: PersistentModelConstructor<Model>;\n fields: ModelInit<Model, { readOnlyFields: 'createdAt' | 'updatedAt' }>;\n}\n\n/**\n * Action to Create DataStore item\n * @internal\n */\nexport const useDataStoreCreateAction =\n <Model extends PersistentModel>({\n model,\n fields,\n }: UseDataStoreCreateActionOptions<Model>) =>\n async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_CREATE_STARTED,\n data: { fields },\n },\n EVENT_ACTION_DATASTORE_CREATE,\n AMPLIFY_SYMBOL\n );\n\n const item = await DataStore.save(new model(fields));\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_CREATE_FINISHED,\n data: { fields, item },\n },\n EVENT_ACTION_DATASTORE_CREATE,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_CREATE_FINISHED,\n data: { fields, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_DATASTORE_CREATE,\n AMPLIFY_SYMBOL\n );\n }\n };\n","import {\n PersistentModel,\n PersistentModelConstructor,\n} from '@aws-amplify/datastore';\nimport { DataStore, Hub } from 'aws-amplify';\n\nimport {\n ACTION_DATASTORE_DELETE_FINISHED,\n ACTION_DATASTORE_DELETE_STARTED,\n EVENT_ACTION_DATASTORE_DELETE,\n UI_CHANNEL,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseDataStoreDeleteActionOptions<\n Model extends PersistentModel\n> {\n model: PersistentModelConstructor<Model>;\n id: string;\n}\n\n/**\n * Action to Delete DataStore item\n * @internal\n */\nexport const useDataStoreDeleteAction =\n <Model extends PersistentModel>({\n model,\n id,\n }: UseDataStoreDeleteActionOptions<Model>) =>\n async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_DELETE_STARTED,\n data: { id },\n },\n EVENT_ACTION_DATASTORE_DELETE,\n AMPLIFY_SYMBOL\n );\n\n await DataStore.delete(model, id);\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_DELETE_FINISHED,\n data: { id },\n },\n EVENT_ACTION_DATASTORE_DELETE,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_DELETE_FINISHED,\n data: { id, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_DATASTORE_DELETE,\n AMPLIFY_SYMBOL\n );\n }\n };\n","import {\n ModelInit,\n PersistentModel,\n PersistentModelConstructor,\n} from '@aws-amplify/datastore';\nimport { DataStore, Hub } from 'aws-amplify';\n\nimport {\n ACTION_DATASTORE_UPDATE_FINISHED,\n ACTION_DATASTORE_UPDATE_STARTED,\n DATASTORE_QUERY_BY_ID_ERROR,\n EVENT_ACTION_DATASTORE_UPDATE,\n UI_CHANNEL,\n} from './constants';\nimport { getErrorMessage } from '../../helpers/utils';\nimport { AMPLIFY_SYMBOL } from '../../helpers/constants';\n\nexport interface UseDataStoreUpdateActionOptions<\n Model extends PersistentModel\n> {\n model: PersistentModelConstructor<Model>;\n id: string;\n fields: ModelInit<Model, { readOnlyFields: 'createdAt' | 'updatedAt' }>;\n}\n\n/**\n * Action to Update DataStore item\n * @internal\n */\nexport const useDataStoreUpdateAction =\n <Model extends PersistentModel>({\n model,\n id,\n fields,\n }: UseDataStoreUpdateActionOptions<Model>) =>\n async () => {\n try {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_UPDATE_STARTED,\n data: { fields, id },\n },\n EVENT_ACTION_DATASTORE_UPDATE,\n AMPLIFY_SYMBOL\n );\n\n const original = await DataStore.query(model, id);\n // If query by id doesn't return an item,\n // original will be undefined\n // so we'll log a helpful message.\n if (!original) {\n throw new Error(`${DATASTORE_QUERY_BY_ID_ERROR}: ${id}`);\n }\n\n const item = await DataStore.save(\n model.copyOf(original, (updated: any) => {\n Object.assign(updated, fields);\n })\n );\n\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_UPDATE_FINISHED,\n data: { fields, id, item },\n },\n EVENT_ACTION_DATASTORE_UPDATE,\n AMPLIFY_SYMBOL\n );\n } catch (error) {\n Hub.dispatch(\n UI_CHANNEL,\n {\n event: ACTION_DATASTORE_UPDATE_FINISHED,\n data: { fields, id, errorMessage: getErrorMessage(error) },\n },\n EVENT_ACTION_DATASTORE_UPDATE,\n AMPLIFY_SYMBOL\n );\n }\n };\n","export const strHasLength = (str: unknown): str is string =>\n typeof str === 'string' && str.length > 0;\n\nexport const isFunction = (fn: unknown): fn is Function =>\n typeof fn === 'function';\n\nexport const isEmptyString = (value: unknown) =>\n typeof value === 'string' && value.length === 0;\n\nexport const isNullOrEmptyString = (value: unknown) =>\n value == null || isEmptyString(value);\n/**\n * Create a consecutive integer array from start value to end value.\n * @param start start value\n * @param end end value\n * @returns an integer array with elements from start to end consecutively\n */\nexport const getConsecutiveIntArray = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\n/**\n * This method is used to parse through all of the overrides and\n * only pass the relevant child overrides for a given component.\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns overrides only for specified element\n */\nexport const findChildOverrides = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const filteredOverrides = Object.entries(overrides).filter((m) =>\n m[0].startsWith(elementHierarchy)\n );\n\n return Object.assign(\n {},\n ...Array.from(filteredOverrides, ([k, v]) => ({\n [k.replace(elementHierarchy, '')]: v,\n }))\n );\n};\n\n/**\n * This helper method is used to get the overrides\n * that will be applied to a component\n * @internal\n * @param overrides escape hatch props\n * @param elementHierarchy\n * @returns component overrides\n */\nexport const getOverrideProps = (\n overrides: EscapeHatchProps | null | undefined,\n elementHierarchy: string\n) => {\n if (!overrides) {\n return null;\n }\n\n const componentOverrides = Object.entries(overrides)\n .filter(([key]) => key === elementHierarchy)\n .flatMap(([, value]) => Object.entries(value))\n .filter((m) => m?.[0]);\n\n return Object.fromEntries(componentOverrides);\n};\n\nexport type EscapeHatchProps = {\n [elementHierarchy: string]: Record<string, string>;\n};\n\ntype VariantValues = { [key: string]: string };\nexport type Variant = {\n variantValues: VariantValues;\n overrides: EscapeHatchProps;\n};\n\n/**\n * Given a list of style variants, select a given one based on input props\n * @internal\n * @param variants list of style variants to select from\n * @param props variant values to select from the list, may include additional props, to tidy up usage upstream\n */\nexport function getOverridesFromVariants(\n variants: Variant[],\n props: { [key: string]: any }\n) {\n // Get unique keys from the provided variants\n const variantValueKeys = [\n ...new Set(\n variants.flatMap((variant) => Object.keys(variant.variantValues))\n ),\n ];\n\n // Get variant value object from provided props, dropping keys that aren't in variantValueKeys, or whose vals are falsey\n const variantValuesFromProps: VariantValues = Object.keys(props)\n .filter((i) => variantValueKeys.includes(i) && props[i])\n .reduce((acc, key) => {\n acc[key] = props[key];\n return acc;\n }, {});\n\n const matchedVariants = variants.filter(({ variantValues }) => {\n return (\n Object.keys(variantValues).length ===\n Object.keys(variantValuesFromProps).length &&\n Object.entries(variantValues).every(\n ([key, value]) => variantValuesFromProps[key] === value\n )\n );\n });\n\n return matchedVariants.reduce((overrides, variant) => {\n return { ...overrides, ...variant.overrides };\n }, {});\n}\n\n/**\n * This helper method is used to merge\n * variants with overrides\n * @internal\n * @param variants\n * @param overrides\n * @returns merged variants with overrides\n */\nexport const mergeVariantsAndOverrides = (\n variants: EscapeHatchProps,\n overrides: EscapeHatchProps\n): EscapeHatchProps => {\n if (!variants && !overrides) {\n return null;\n }\n if (!overrides) {\n return variants;\n }\n if (!variants) {\n return overrides;\n }\n const overrideKeys = new Set(Object.keys(overrides));\n const sharedKeys = Object.keys(variants).filter((variantKey) =>\n overrideKeys.has(variantKey)\n );\n const merged = Object.fromEntries(\n sharedKeys.map((sharedKey) => [\n sharedKey,\n { ...variants[sharedKey], ...overrides[sharedKey] },\n ])\n );\n return {\n ...variants,\n ...overrides,\n ...merged,\n };\n};\n","import {\n ModelPredicate,\n PersistentModel,\n ProducerModelPredicate,\n} from '@aws-amplify/datastore';\nimport { DataStorePredicateObject } from '../types/datastore';\nimport { isFunction } from './utils';\n\n/**\n * Given an array of predicates, compose them in sequential order\n */\nconst mergePredicates = <Model extends PersistentModel>(\n predicates: ProducerModelPredicate<Model>[]\n): ProducerModelPredicate<Model> =>\n predicates.reduce(\n (previous, current) => (predicate) => current(previous(predicate)),\n (predicate) => predicate\n );\n\n/**\n * Creates a DataStore compatible predicate function from an object representation\n * @internal\n */\nexport const createDataStorePredicate = <Model extends PersistentModel>(\n predicateObject: DataStorePredicateObject\n): ProducerModelPredicate<Model> => {\n const {\n and: groupAnd,\n or: groupOr,\n field,\n operator,\n operand,\n } = predicateObject;\n\n if (Array.isArray(groupAnd)) {\n const predicates = groupAnd.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.and(mergePredicates(predicates));\n } else if (Array.isArray(groupOr)) {\n const predicates = groupOr.map((condition) =>\n createDataStorePredicate<Model>(condition)\n );\n\n return (p: ModelPredicate<Model>) => p.or(mergePredicates(predicates));\n }\n\n return (predicate: ModelPredicate<Model>) => {\n if (isFunction(predicate[field])) {\n return predicate[field].call(predicate, operator, operand);\n }\n\n return predicate;\n };\n};\n"],"mappings":"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","names":[]}
|