hydrogen-sanity
Version:
Sanity.io toolkit for Hydrogen
1 lines • 2.34 kB
Source Map (JSON)
{"version":3,"file":"utils.cjs","sources":["../../src/utils.ts"],"sourcesContent":["import type {HydrogenSession} from '@shopify/hydrogen'\n\nimport type {QueryParams, QueryWithoutParams} from './client'\n\n/**\n * Create an SHA-256 hash as a hex string\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string\n */\nexport async function sha256(message: string): Promise<string> {\n // encode as UTF-8\n const messageBuffer = await new TextEncoder().encode(message)\n // hash the message\n const hashBuffer = await crypto.subtle.digest('SHA-256', messageBuffer)\n // convert bytes to hex string\n return Array.from(new Uint8Array(hashBuffer))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n}\n\n/**\n * Hash query and its parameters for use as cache key\n * NOTE: Oxygen deployment will break if the cache key is long or contains `\\n`\n */\nexport function hashQuery(\n query: string,\n params: QueryParams | QueryWithoutParams,\n): Promise<string> {\n let hash = query\n\n if (params) {\n hash += JSON.stringify(params)\n }\n\n return sha256(hash)\n}\n\nexport function assertSession(session: unknown): session is HydrogenSession {\n return (\n !!session &&\n typeof session === 'object' &&\n 'get' in session &&\n typeof session.get === 'function' &&\n 'set' in session &&\n typeof session.set === 'function' &&\n 'unset' in session &&\n typeof session.unset === 'function' &&\n 'commit' in session &&\n typeof session.commit === 'function'\n )\n}\n"],"names":["exports","a","session","get","set","unset","commit","h","query","params","hash","JSON","stringify","async","message","messageBuffer","TextEncoder","encode","hashBuffer","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","join","sha256"],"mappings":"aAiDAA,QAAAC,EAbO,SAAuBC,GAC5B,QACIA,GACiB,iBAAZA,GACP,QAASA,GACc,mBAAhBA,EAAQC,KACf,QAASD,GACc,mBAAhBA,EAAQE,KACf,UAAWF,GACc,mBAAlBA,EAAQG,OACf,WAAYH,GACc,mBAAnBA,EAAQI,MAEnB,EAAAN,QAAAO,EA1BgB,SACdC,EACAC,GAEA,IAAIC,EAAOF,EAEX,OAAIC,IACFC,GAAQC,KAAKC,UAAUH,IAtB3BI,eAA6BC,GAE3B,MAAMC,QAAsB,IAAIC,aAAcC,OAAOH,GAE/CI,QAAmBC,OAAOC,OAAOC,OAAO,UAAWN,GAElD,OAAAO,MAAMC,KAAK,IAAIC,WAAWN,IAC9BO,KAAKC,GAAMA,EAAEC,SAAS,IAAIC,SAAS,EAAG,OACtCC,KAAK,GACV,CAgBSC,CAAOpB,EAChB"}