A tiny ~150-byte polyfill for Promise.prototype.finally.
Useful for browsers that support Promise but not the .finally() method.
npm install finally-polyfill
| import { AnyZodObject, z } from 'zod' | |
| import { Metadata, ResolvingMetadata } from 'next' | |
| type InferParams<Params> = Params extends readonly string[] | |
| ? { | |
| [K in Params[number]]: string | |
| } | |
| : Params extends AnyZodObject | |
| ? z.infer<Params> | |
| : unknown |
| import { useCallback, useEffect, useState } from "react"; | |
| type FetchState<T> = { | |
| data: T | null; | |
| isLoading: boolean; | |
| error: Error | null; | |
| isCached: boolean; | |
| refetch: () => void; | |
| }; |
| import z from "zod"; | |
| export async function safeFetch<T>( | |
| schema: z.Schema<T>, | |
| input: RequestInfo, | |
| init?: RequestInit | |
| ): Promise<T> { | |
| const response = await fetch(input, init); | |
| if (!response.ok) { |
| import type {SanityClient} from '@sanity/client' | |
| import {v5 as uuidv5} from 'uuid' | |
| import {buildCollectionDocumentId, commitCollectionDocument} from './sanityOps' | |
| import type {ShopifyDocumentCollection} from './storageTypes' | |
| import {SHOPIFY_COLLECTION_DOCUMENT_TYPE, UUID_NAMESPACE_COLLECTIONS} from './constants' | |
| import {DataSinkCollection} from './requestTypes' | |
| import {idFromGid} from './requestHelpers' |
| (function (context, trackingId, options) { | |
| const history = context.history; | |
| const doc = document; | |
| const nav = navigator || {}; | |
| const storage = localStorage; | |
| const encode = encodeURIComponent; | |
| const pushState = history.pushState; | |
| const typeException = 'exception'; | |
| const generateId = () => Math.random().toString(36); | |
| const getId = () => { |
| /** | |
| * This code is licensed under the terms of the MIT license | |
| * | |
| * Deep diff between two object, using lodash | |
| * @param {Object} object Object compared | |
| * @param {Object} base Object to compare with | |
| * @return {Object} Return a new object who represent the diff | |
| */ | |
| function difference(object, base) { | |
| function changes(object, base) { |