@plasmicapp/data-sources 0.1.109 → 0.1.111
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/data-sources.cjs.development.js +53 -2
- package/dist/data-sources.cjs.development.js.map +1 -1
- package/dist/data-sources.cjs.production.min.js +1 -1
- package/dist/data-sources.cjs.production.min.js.map +1 -1
- package/dist/data-sources.esm.js +53 -2
- package/dist/data-sources.esm.js.map +1 -1
- package/package.json +3 -3
|
@@ -507,6 +507,18 @@ function mkUndefinedDataProxy(promiseRef, fetchAndUpdateCache) {
|
|
|
507
507
|
});
|
|
508
508
|
}
|
|
509
509
|
var reactMajorVersion = + /*#__PURE__*/React.version.split('.')[0];
|
|
510
|
+
/**
|
|
511
|
+
* Fetches can be kicked off two ways -- normally, by useSWR(), or by some
|
|
512
|
+
* expression accessing the `$queries.*` proxy when not ready yet. We need
|
|
513
|
+
* a global cache for proxy-invoked caches, so that different components
|
|
514
|
+
* with the same key can share the same fetch.
|
|
515
|
+
*
|
|
516
|
+
* The life cycle for this cache is short -- only the duration of a
|
|
517
|
+
* proxy-invoked fetch, and once the fetch is done. That's because we really
|
|
518
|
+
* just want SWR to be managing the cache, not us! Once the data is in SWR,
|
|
519
|
+
* we will use SWR for getting data.
|
|
520
|
+
*/
|
|
521
|
+
var PRE_FETCHES = /*#__PURE__*/new Map();
|
|
510
522
|
function usePlasmicDataOp(dataOp, opts) {
|
|
511
523
|
var _ph$useDataEnv;
|
|
512
524
|
var ctx = dataSourcesContext.usePlasmicDataSourceContext();
|
|
@@ -526,9 +538,19 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
526
538
|
}, [key]);
|
|
527
539
|
var fetcher = React.useMemo(function () {
|
|
528
540
|
return function () {
|
|
541
|
+
// If we are in this function, that means SWR cache missed.
|
|
529
542
|
if (fetchingData.fetchingPromise) {
|
|
543
|
+
// Fetch is already underway from this hook
|
|
530
544
|
return fetchingData.fetchingPromise;
|
|
531
545
|
}
|
|
546
|
+
if (key && PRE_FETCHES.has(key)) {
|
|
547
|
+
// Some other usePlasmicDataOp() hook elsewhere has already
|
|
548
|
+
// started this fetch as well; re-use it here.
|
|
549
|
+
var existing = PRE_FETCHES.get(key);
|
|
550
|
+
fetchingData.fetchingPromise = existing;
|
|
551
|
+
return existing;
|
|
552
|
+
}
|
|
553
|
+
// Else we really need to kick off this fetch now...
|
|
532
554
|
var fetcherFn = function fetcherFn() {
|
|
533
555
|
return (
|
|
534
556
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -541,15 +563,44 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
541
563
|
};
|
|
542
564
|
var fetcherPromise = fetcherFn();
|
|
543
565
|
fetchingData.fetchingPromise = fetcherPromise;
|
|
566
|
+
if (key) {
|
|
567
|
+
PRE_FETCHES.set(key, fetcherPromise);
|
|
568
|
+
// Once we have a result, we rely on swr to perform the caching,
|
|
569
|
+
// so remove from our cache as quickly as possible.
|
|
570
|
+
fetcherPromise.then(function () {
|
|
571
|
+
PRE_FETCHES["delete"](key);
|
|
572
|
+
}, function () {
|
|
573
|
+
PRE_FETCHES["delete"](key);
|
|
574
|
+
});
|
|
575
|
+
}
|
|
544
576
|
return fetcherPromise;
|
|
545
577
|
};
|
|
546
578
|
}, [key, fetchingData]);
|
|
547
579
|
var fetchAndUpdateCache = React.useMemo(function () {
|
|
548
580
|
return function () {
|
|
581
|
+
// This function is called when the undefined data proxy is invoked.
|
|
582
|
+
// USUALLY, this means the data is not available in SWR yet, and
|
|
583
|
+
// we need to kick off a fetch.
|
|
549
584
|
if (fetchingData.fetchingPromise) {
|
|
550
585
|
// No need to update cache as the exist promise call site will do it
|
|
551
586
|
return fetchingData.fetchingPromise;
|
|
552
587
|
}
|
|
588
|
+
// SOMETIMES, SWR actually _does_ have the cache, but we still end up
|
|
589
|
+
// here. That's because of how we update $queries, which takes two
|
|
590
|
+
// cycles; each time we render, we build a `new$Queries`, and
|
|
591
|
+
// `set$Queries(new$Queries)`. So once the data is ready, at the
|
|
592
|
+
// first render, we will have data in `new$Queries` but not `$queries`,
|
|
593
|
+
// but we will still finish rendering that pass, which means any `$queries`
|
|
594
|
+
// access will still end up here. So we look into the SWR cache and
|
|
595
|
+
// return any data that's here.
|
|
596
|
+
var cached = cache.get(key);
|
|
597
|
+
if (cached) {
|
|
598
|
+
return Promise.resolve(cached);
|
|
599
|
+
}
|
|
600
|
+
var cachedError = cache.get("$swr$" + key);
|
|
601
|
+
if (cachedError) {
|
|
602
|
+
return Promise.reject(cachedError.error);
|
|
603
|
+
}
|
|
553
604
|
var fetcherPromise = fetcher();
|
|
554
605
|
fetcherPromise.then(function (data) {
|
|
555
606
|
return mutate(key, data);
|
|
@@ -561,7 +612,7 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
561
612
|
error: err
|
|
562
613
|
}));
|
|
563
614
|
});
|
|
564
|
-
return
|
|
615
|
+
return fetchingData.fetchingPromise;
|
|
565
616
|
};
|
|
566
617
|
}, [fetcher, fetchingData, cache, key]);
|
|
567
618
|
var res = query.useMutablePlasmicQueryData(key, fetcher, {
|
|
@@ -577,7 +628,7 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
577
628
|
}
|
|
578
629
|
return React.useMemo(function () {
|
|
579
630
|
var result = _extends({}, data != null ? data : {}, pick(res, 'isLoading', 'error'));
|
|
580
|
-
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp) && result.data === undefined && result.schema === undefined) {
|
|
631
|
+
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp) && result.data === undefined && result.schema === undefined && result.error === undefined) {
|
|
581
632
|
result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
582
633
|
result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
583
634
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-sources.cjs.development.js","sources":["../src/executor.tsx","../src/utils.ts","../src/hooks/usePlasmicDataOp.tsx","../src/components/Fetcher.tsx","../src/hooks/useDependencyAwareQuery.tsx","../src/helpers.ts"],"sourcesContent":["import { PlasmicDataSourceContextValue } from '@plasmicapp/data-sources-context';\nimport fetch from '@plasmicapp/isomorphic-unfetch';\nimport { wrapLoadingFetcher } from '@plasmicapp/query';\nimport stringify from 'fast-stringify';\nimport { ManyRowsResult, Pagination, SingleRowResult } from './types';\n\nconst DEFAULT_HOST = 'https://data.plasmic.app';\n\nexport interface DataOp {\n sourceId: string;\n opId: string;\n userArgs?: Record<string, any>;\n cacheKey?: string;\n invalidatedKeys?: string[] | null;\n roleId?: string | null;\n}\n\ninterface ExecuteOpts {\n userAuthToken?: string;\n user?: PlasmicDataSourceContextValue['user'];\n paginate?: Pagination;\n}\n\nconst UNAUTHORIZED_MESSAGE =\n 'You do not have permission to perform this operation. Login to get access or contact the app owner to get access.';\n\nexport async function executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n const func = getConfig(\n '__PLASMIC_EXECUTE_DATA_OP',\n _executePlasmicDataOp\n ) as typeof _executePlasmicDataOp;\n const res = await wrapLoadingFetcher(func)(op, opts);\n return res as T;\n}\n\nasync function _executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n if (op.roleId) {\n if (!opts?.user || !opts.user.roleIds.includes(op.roleId)) {\n console.error(UNAUTHORIZED_MESSAGE);\n throw new Error(UNAUTHORIZED_MESSAGE);\n }\n }\n\n const host = getConfig('__PLASMIC_DATA_HOST', DEFAULT_HOST);\n\n const url = `${host}/api/v1/server-data/sources/${op.sourceId}/execute`;\n const resp = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(opts?.userAuthToken && {\n 'x-plasmic-data-user-auth-token': opts.userAuthToken,\n }),\n },\n body: stringify({\n opId: op.opId,\n userArgs: op.userArgs ?? {},\n paginate: opts?.paginate,\n }),\n });\n if (resp.status !== 200) {\n const text = await resp.text();\n throw new Error(text);\n }\n return (await resp.json()) as T;\n}\n\nfunction getConfig<T>(key: string, defaultValue: T) {\n if (typeof globalThis === 'undefined') {\n return defaultValue;\n } else {\n return (globalThis as any)[key] ?? defaultValue;\n }\n}\n","export function swallow<T>(f: () => T): T | undefined {\n try {\n return f();\n } catch {\n return undefined;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Pick<T, K> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res;\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error('Expected non-null or non-undefined value');\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) return undefined;\n return f(x);\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === 'string'\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | '' | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n","import { usePlasmicDataSourceContext } from '@plasmicapp/data-sources-context';\nimport * as ph from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp, executePlasmicDataOp } from '../executor';\nimport { ManyRowsResult, Pagination, SingleRowResult } from '../types';\nimport { pick } from '../utils';\nimport {\n useMutablePlasmicQueryData,\n usePlasmicDataConfig,\n} from '@plasmicapp/query';\n\nexport function makeCacheKey(\n dataOp: DataOp,\n opts?: { paginate?: Pagination; userAuthToken?: string | null }\n) {\n const queryDependencies = JSON.stringify({\n sourceId: dataOp.sourceId,\n opId: dataOp.opId,\n args: dataOp.userArgs,\n userAuthToken: opts?.userAuthToken,\n paginate: opts?.paginate,\n });\n return dataOp.cacheKey\n ? `${dataOp.cacheKey}${queryDependencies}`\n : queryDependencies;\n}\n\nconst enableLoadingBoundaryKey = 'plasmicInternalEnableLoadingBoundary';\n\nfunction mkUndefinedDataProxy(\n promiseRef: { fetchingPromise: Promise<any> | undefined },\n fetchAndUpdateCache: () => Promise<any>\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n const promise = promiseRef.fetchingPromise || fetchAndUpdateCache();\n (promise as any).plasmicType = 'PlasmicUndefinedDataError';\n (promise as any).message = `Cannot read property ${String(\n prop\n )} - data is still loading`;\n throw promise;\n },\n }\n ) as any;\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\nexport function usePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult,\n E = any\n>(\n dataOp: DataOp | undefined,\n opts?: {\n paginate?: Pagination;\n noUndefinedDataProxy?: boolean;\n }\n): Partial<T> & {\n error?: E;\n isLoading?: boolean;\n} {\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n const isNullDataOp = !dataOp;\n const key = isNullDataOp\n ? null\n : makeCacheKey(dataOp!, {\n paginate: opts?.paginate,\n userAuthToken: ctx?.userAuthToken,\n });\n const fetchingData = React.useMemo(\n () => ({\n fetchingPromise: undefined as Promise<T> | undefined,\n }),\n [key]\n );\n const fetcher = React.useMemo(\n () => () => {\n if (fetchingData.fetchingPromise) {\n return fetchingData.fetchingPromise;\n }\n const fetcherFn = () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n executePlasmicDataOp<T>(dataOp!, {\n userAuthToken: ctx?.userAuthToken || undefined,\n user: ctx?.user,\n paginate: opts?.paginate,\n });\n const fetcherPromise = fetcherFn();\n fetchingData.fetchingPromise = fetcherPromise;\n return fetcherPromise;\n },\n [key, fetchingData]\n );\n const fetchAndUpdateCache = React.useMemo(\n () => () => {\n if (fetchingData.fetchingPromise) {\n // No need to update cache as the exist promise call site will do it\n return fetchingData.fetchingPromise;\n }\n const fetcherPromise = fetcher();\n fetcherPromise\n .then((data) => mutate(key, data))\n .catch((err) => {\n // Cache the error here to avoid infinite loop\n const keyInfo = key ? '$swr$' + key : '';\n cache.set(keyInfo, { ...(cache.get(keyInfo) ?? {}), error: err });\n });\n return fetcherPromise;\n },\n [fetcher, fetchingData, cache, key]\n );\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n });\n const { data, error, isLoading } = res;\n if (fetchingData.fetchingPromise != null && data !== undefined) {\n // Clear the fetching promise as the actual data is now used (so\n // revalidation is possible)\n fetchingData.fetchingPromise = undefined;\n }\n return React.useMemo(() => {\n const result = {\n ...(data ?? ({} as Partial<T>)),\n ...pick(res, 'isLoading', 'error'),\n };\n if (\n !opts?.noUndefinedDataProxy &&\n reactMajorVersion >= 18 &&\n enableLoadingBoundary &&\n (isLoading || isNullDataOp) &&\n result.data === undefined &&\n result.schema === undefined\n ) {\n result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n }\n return result;\n }, [\n isNullDataOp,\n data,\n error,\n isLoading,\n opts?.noUndefinedDataProxy,\n enableLoadingBoundary,\n fetchingData,\n fetchAndUpdateCache,\n ]);\n}\n\nexport function usePlasmicDataMutationOp<\n T extends SingleRowResult | ManyRowsResult\n>(dataOp: DataOp | undefined) {\n const { sourceId, opId, userArgs } = dataOp ?? {};\n const ctx = usePlasmicDataSourceContext();\n const userToken = ctx?.userAuthToken;\n return React.useCallback(async () => {\n if (!sourceId || !opId) {\n return undefined;\n }\n return executePlasmicDataOp<T>(\n { sourceId, opId, userArgs },\n {\n userAuthToken: userToken || undefined,\n user: ctx?.user,\n }\n );\n }, [sourceId, opId, userArgs, userToken]);\n}\n","import { ComponentMeta } from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp } from '../executor';\nimport { usePlasmicDataOp } from '../hooks/usePlasmicDataOp';\n\nexport interface DataOpConfig {\n name?: string;\n pageIndex?: number;\n pageSize?: number;\n}\n\nexport interface FetcherProps extends DataOpConfig {\n dataOp?: DataOp;\n children?: ($queries: Record<string, any>) => React.ReactElement | null;\n queries?: Record<string, any>;\n}\n\nexport function Fetcher(props: FetcherProps): React.ReactElement | null {\n const { dataOp, children, name, pageIndex, pageSize } = props;\n const data = usePlasmicDataOp(dataOp, {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n\n const $queries = React.useMemo(\n () => ({ ...props.queries, [name ?? 'data']: data }),\n [props.queries, name, data]\n );\n\n return children?.($queries) ?? null;\n}\n\nexport const FetcherMeta: ComponentMeta<FetcherProps> = {\n name: 'plasmic-data-source-fetcher',\n displayName: 'Data Fetcher',\n props: {\n dataOp: {\n type: 'dataSourceOp' as any,\n displayName: 'Data',\n },\n name: {\n type: 'string',\n displayName: 'Variable name',\n },\n children: {\n type: 'slot',\n renderPropParams: ['$queries'],\n },\n pageSize: {\n type: 'number',\n advanced: true,\n displayName: 'Page size',\n description: 'Only fetch in batches of this size; for pagination',\n },\n pageIndex: {\n type: 'number',\n advanced: true,\n displayName: 'Page index',\n description: '0-based index of the paginated page to fetch',\n },\n },\n importPath: '@plasmicapp/react-web/lib/data-sources',\n importName: 'Fetcher',\n alwaysAutoName: true,\n styleSections: false,\n};\n","import React from 'react';\nimport { DataOpConfig } from '../components/Fetcher';\nimport { DataOp } from '../executor';\nimport { swallow } from '../utils';\nimport { usePlasmicDataOp } from './usePlasmicDataOp';\n\nfunction usePrevious<T>(value: T | undefined): T | undefined {\n const prevValue = React.useRef<T | undefined>(undefined);\n\n React.useEffect(() => {\n prevValue.current = value;\n\n return () => {\n prevValue.current = undefined;\n };\n });\n\n return prevValue.current;\n}\n\nexport interface DependencyAwareQueryConfig extends DataOpConfig {\n $queries: Record<string, any>;\n setDollarQueries: ($queries: Record<string, any>) => void;\n getDataOp: () => DataOp;\n}\n\n/**\n * @deprecated Prefer using `usePlasmicDataOp` directly instead.\n */\nexport function useDependencyAwareQuery({\n $queries,\n getDataOp,\n setDollarQueries,\n name,\n pageIndex,\n pageSize,\n}: DependencyAwareQueryConfig) {\n const data = usePlasmicDataOp(swallow(getDataOp), {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n const finalName = name ?? 'data';\n const prevName = usePrevious(finalName);\n React.useEffect(() => {\n if (!(finalName in $queries) || $queries[finalName] !== data) {\n const $queries2 = {\n ...$queries,\n [finalName]: data,\n };\n if (prevName && finalName !== prevName && prevName in $queries) {\n delete $queries2[prevName];\n }\n setDollarQueries($queries2);\n }\n }, [finalName, prevName, data, $queries, setDollarQueries]);\n}\n","import {\n ManyRowsResult,\n TableFieldSchema,\n TableFieldType,\n TableSchema,\n} from './types';\nimport { mkIdMap, withoutNils } from './utils';\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface NormalizedData {\n data: Record<string, unknown>[];\n schema?: TableSchema;\n}\n\nexport function normalizeData(rawData: unknown): NormalizedData | undefined {\n if (!rawData) {\n return undefined;\n }\n\n const dataArray = tryGetDataArray(rawData);\n if (!dataArray) {\n return undefined;\n }\n const schema = (rawData as any).schema ?? tryGetSchema(dataArray);\n if (!schema) {\n return undefined;\n }\n return { data: dataArray, schema };\n}\n\nfunction tryGetDataArray(rawData: unknown): any[] | undefined {\n if (rawData == null || typeof rawData !== 'object') {\n return undefined;\n }\n\n if (Array.isArray(rawData)) {\n if (isArrayOfObjects(rawData)) {\n return rawData;\n } else {\n // TODO: array of primitives? Maybe we can wrap this?\n return undefined;\n }\n }\n\n if (rawData == null) {\n return undefined;\n }\n\n if ('data' in rawData && typeof (rawData as any).data === 'object') {\n if (\n Array.isArray((rawData as any).data) &&\n isArrayOfObjects((rawData as any).data)\n ) {\n return (rawData as any).data;\n } else if ((rawData as any).data != null) {\n return [(rawData as any).data];\n } else {\n return undefined;\n }\n }\n if ('isLoading' in rawData || 'error' in rawData) {\n return undefined;\n }\n\n // Maybe a singleton record?\n return [rawData];\n}\n\nfunction isArrayOfObjects(arr: unknown[]) {\n return arr.every((x) => typeof x === 'object' && !Array.isArray(x));\n}\n\nfunction tryGetSchema(data: any[]): TableSchema | undefined {\n const fieldMap: Record<string, TableFieldType> = {};\n data.forEach((entry: any) => {\n if (entry && typeof entry === 'object') {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === 'string'\n ? 'string'\n : typeof v === 'boolean'\n ? 'boolean'\n : typeof v === 'number'\n ? 'number'\n : 'unknown';\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = 'unknown';\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: 'inferred',\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport type BaseFieldConfig = {\n key?: string;\n fieldId?: string;\n};\n\nconst mkShortId = () => `${Math.random()}`;\n\nexport function deriveFieldConfigs<T extends BaseFieldConfig>(\n specifiedFieldsPartial: Partial<T>[],\n schema: TableSchema | undefined,\n makeDefaultConfig: (field: TableFieldSchema | undefined) => T\n): {\n mergedFields: T[];\n minimalFullLengthFields: Partial<T>[];\n} {\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap((f): T[] => {\n if (!f.fieldId) {\n return [\n { key: mkShortId(), ...makeDefaultConfig(undefined), ...f },\n ] as T[];\n }\n const field = fieldById.get(f.fieldId as string);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n key: mkShortId(),\n ...makeDefaultConfig(field),\n ...f,\n },\n ] as T[];\n });\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): T => ({\n key: mkShortId(),\n ...makeDefaultConfig(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: Partial<T>[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ] as Partial<T>[];\n return { mergedFields, minimalFullLengthFields };\n}\n"],"names":["DEFAULT_HOST","UNAUTHORIZED_MESSAGE","executePlasmicDataOp","_x","_x2","_executePlasmicDataOp2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","op","opts","func","res","wrap","_callee$","_context","prev","next","getConfig","_executePlasmicDataOp","wrapLoadingFetcher","sent","abrupt","stop","apply","arguments","_x3","_x4","_executePlasmicDataOp3","_callee2","_op$userArgs","host","url","resp","text","_callee2$","_context2","roleId","user","roleIds","includes","console","error","Error","sourceId","fetch","method","headers","_extends","userAuthToken","body","stringify","opId","userArgs","paginate","status","json","key","defaultValue","globalThis","_globalThis$key","swallow","f","_unused","undefined","pick","obj","_len","length","keys","Array","_key","_i","_keys","tuple","_len2","args","_key2","mkIdMap","xs","Map","map","x","id","withoutNils","filter","makeCacheKey","dataOp","queryDependencies","JSON","cacheKey","enableLoadingBoundaryKey","mkUndefinedDataProxy","promiseRef","fetchAndUpdateCache","Proxy","get","_target","prop","promise","fetchingPromise","plasmicType","message","String","reactMajorVersion","React","version","split","usePlasmicDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","fetchingData","useMemo","fetcher","fetcherFn","fetcherPromise","then","data","err","keyInfo","set","_cache$get","useMutablePlasmicQueryData","shouldRetryOnError","isLoading","result","noUndefinedDataProxy","schema","usePlasmicDataMutationOp","_ref","userToken","useCallback","Fetcher","props","children","name","pageIndex","pageSize","$queries","_extends2","queries","_children","FetcherMeta","displayName","type","renderPropParams","advanced","description","importPath","importName","alwaysAutoName","styleSections","usePrevious","value","prevValue","useRef","useEffect","current","useDependencyAwareQuery","getDataOp","setDollarQueries","finalName","prevName","$queries2","normalizeData","rawData","dataArray","tryGetDataArray","_rawData$schema","tryGetSchema","isArray","isArrayOfObjects","arr","every","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","fields","_ref2","t","readOnly","mkShortId","Math","random","deriveFieldConfigs","specifiedFieldsPartial","makeDefaultConfig","schemaFields","_schema$fields","fieldById","specifiedFieldIds","Set","fieldId","keptSpecifiedFields","flatMap","field","newVirtualFields","has","mergedFields","concat","minimalFullLengthFields"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-sources.cjs.development.js","sources":["../src/executor.tsx","../src/utils.ts","../src/hooks/usePlasmicDataOp.tsx","../src/components/Fetcher.tsx","../src/hooks/useDependencyAwareQuery.tsx","../src/helpers.ts"],"sourcesContent":["import { PlasmicDataSourceContextValue } from '@plasmicapp/data-sources-context';\nimport fetch from '@plasmicapp/isomorphic-unfetch';\nimport { wrapLoadingFetcher } from '@plasmicapp/query';\nimport stringify from 'fast-stringify';\nimport { ManyRowsResult, Pagination, SingleRowResult } from './types';\n\nconst DEFAULT_HOST = 'https://data.plasmic.app';\n\nexport interface DataOp {\n sourceId: string;\n opId: string;\n userArgs?: Record<string, any>;\n cacheKey?: string;\n invalidatedKeys?: string[] | null;\n roleId?: string | null;\n}\n\ninterface ExecuteOpts {\n userAuthToken?: string;\n user?: PlasmicDataSourceContextValue['user'];\n paginate?: Pagination;\n}\n\nconst UNAUTHORIZED_MESSAGE =\n 'You do not have permission to perform this operation. Login to get access or contact the app owner to get access.';\n\nexport async function executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n const func = getConfig(\n '__PLASMIC_EXECUTE_DATA_OP',\n _executePlasmicDataOp\n ) as typeof _executePlasmicDataOp;\n const res = await wrapLoadingFetcher(func)(op, opts);\n return res as T;\n}\n\nasync function _executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n if (op.roleId) {\n if (!opts?.user || !opts.user.roleIds.includes(op.roleId)) {\n console.error(UNAUTHORIZED_MESSAGE);\n throw new Error(UNAUTHORIZED_MESSAGE);\n }\n }\n\n const host = getConfig('__PLASMIC_DATA_HOST', DEFAULT_HOST);\n\n const url = `${host}/api/v1/server-data/sources/${op.sourceId}/execute`;\n const resp = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(opts?.userAuthToken && {\n 'x-plasmic-data-user-auth-token': opts.userAuthToken,\n }),\n },\n body: stringify({\n opId: op.opId,\n userArgs: op.userArgs ?? {},\n paginate: opts?.paginate,\n }),\n });\n if (resp.status !== 200) {\n const text = await resp.text();\n throw new Error(text);\n }\n return (await resp.json()) as T;\n}\n\nfunction getConfig<T>(key: string, defaultValue: T) {\n if (typeof globalThis === 'undefined') {\n return defaultValue;\n } else {\n return (globalThis as any)[key] ?? defaultValue;\n }\n}\n","export function swallow<T>(f: () => T): T | undefined {\n try {\n return f();\n } catch {\n return undefined;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Pick<T, K> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res;\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error('Expected non-null or non-undefined value');\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) return undefined;\n return f(x);\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === 'string'\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | '' | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n","import { usePlasmicDataSourceContext } from '@plasmicapp/data-sources-context';\n// eslint-disable-next-line no-restricted-imports\nimport * as ph from '@plasmicapp/host';\nimport {\n useMutablePlasmicQueryData,\n usePlasmicDataConfig,\n} from '@plasmicapp/query';\nimport React from 'react';\nimport { DataOp, executePlasmicDataOp } from '../executor';\nimport { ManyRowsResult, Pagination, SingleRowResult } from '../types';\nimport { pick } from '../utils';\n\nexport function makeCacheKey(\n dataOp: DataOp,\n opts?: { paginate?: Pagination; userAuthToken?: string | null }\n) {\n const queryDependencies = JSON.stringify({\n sourceId: dataOp.sourceId,\n opId: dataOp.opId,\n args: dataOp.userArgs,\n userAuthToken: opts?.userAuthToken,\n paginate: opts?.paginate,\n });\n return dataOp.cacheKey\n ? `${dataOp.cacheKey}${queryDependencies}`\n : queryDependencies;\n}\n\nconst enableLoadingBoundaryKey = 'plasmicInternalEnableLoadingBoundary';\n\nfunction mkUndefinedDataProxy(\n promiseRef: { fetchingPromise: Promise<any> | undefined },\n fetchAndUpdateCache: () => Promise<any>\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n const promise = promiseRef.fetchingPromise || fetchAndUpdateCache();\n (promise as any).plasmicType = 'PlasmicUndefinedDataError';\n (promise as any).message = `Cannot read property ${String(\n prop\n )} - data is still loading`;\n throw promise;\n },\n }\n ) as any;\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\n/**\n * Fetches can be kicked off two ways -- normally, by useSWR(), or by some\n * expression accessing the `$queries.*` proxy when not ready yet. We need\n * a global cache for proxy-invoked caches, so that different components\n * with the same key can share the same fetch.\n *\n * The life cycle for this cache is short -- only the duration of a\n * proxy-invoked fetch, and once the fetch is done. That's because we really\n * just want SWR to be managing the cache, not us! Once the data is in SWR,\n * we will use SWR for getting data.\n */\nconst PRE_FETCHES = new Map<string, Promise<any>>();\n\nexport function usePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult,\n E = any\n>(\n dataOp: DataOp | undefined,\n opts?: {\n paginate?: Pagination;\n noUndefinedDataProxy?: boolean;\n }\n): Partial<T> & {\n error?: E;\n isLoading?: boolean;\n} {\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n const isNullDataOp = !dataOp;\n const key = isNullDataOp\n ? null\n : makeCacheKey(dataOp!, {\n paginate: opts?.paginate,\n userAuthToken: ctx?.userAuthToken,\n });\n const fetchingData = React.useMemo(\n () => ({\n fetchingPromise: undefined as Promise<T> | undefined,\n }),\n [key]\n );\n const fetcher = React.useMemo(\n () => () => {\n // If we are in this function, that means SWR cache missed.\n\n if (fetchingData.fetchingPromise) {\n // Fetch is already underway from this hook\n return fetchingData.fetchingPromise;\n }\n\n if (key && PRE_FETCHES.has(key)) {\n // Some other usePlasmicDataOp() hook elsewhere has already\n // started this fetch as well; re-use it here.\n const existing = PRE_FETCHES.get(key) as Promise<T>;\n fetchingData.fetchingPromise = existing;\n return existing;\n }\n\n // Else we really need to kick off this fetch now...\n const fetcherFn = () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n executePlasmicDataOp<T>(dataOp!, {\n userAuthToken: ctx?.userAuthToken || undefined,\n user: ctx?.user,\n paginate: opts?.paginate,\n });\n const fetcherPromise = fetcherFn();\n fetchingData.fetchingPromise = fetcherPromise;\n if (key) {\n PRE_FETCHES.set(key, fetcherPromise);\n // Once we have a result, we rely on swr to perform the caching,\n // so remove from our cache as quickly as possible.\n fetcherPromise.then(\n () => {\n PRE_FETCHES.delete(key);\n },\n () => {\n PRE_FETCHES.delete(key);\n }\n );\n }\n return fetcherPromise;\n },\n [key, fetchingData]\n );\n const fetchAndUpdateCache = React.useMemo(\n () => () => {\n // This function is called when the undefined data proxy is invoked.\n // USUALLY, this means the data is not available in SWR yet, and\n // we need to kick off a fetch.\n if (fetchingData.fetchingPromise) {\n // No need to update cache as the exist promise call site will do it\n return fetchingData.fetchingPromise;\n }\n\n // SOMETIMES, SWR actually _does_ have the cache, but we still end up\n // here. That's because of how we update $queries, which takes two\n // cycles; each time we render, we build a `new$Queries`, and\n // `set$Queries(new$Queries)`. So once the data is ready, at the\n // first render, we will have data in `new$Queries` but not `$queries`,\n // but we will still finish rendering that pass, which means any `$queries`\n // access will still end up here. So we look into the SWR cache and\n // return any data that's here.\n const cached = cache.get(key);\n if (cached) {\n return Promise.resolve(cached);\n }\n const cachedError = cache.get(`$swr$${key}`);\n if (cachedError) {\n return Promise.reject(cachedError.error);\n }\n const fetcherPromise = fetcher();\n fetcherPromise\n .then((data) => mutate(key, data))\n .catch((err) => {\n // Cache the error here to avoid infinite loop\n const keyInfo = key ? '$swr$' + key : '';\n cache.set(keyInfo, { ...(cache.get(keyInfo) ?? {}), error: err });\n });\n return fetchingData.fetchingPromise!;\n },\n [fetcher, fetchingData, cache, key]\n );\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n });\n const { data, error, isLoading } = res;\n if (fetchingData.fetchingPromise != null && data !== undefined) {\n // Clear the fetching promise as the actual data is now used (so\n // revalidation is possible)\n fetchingData.fetchingPromise = undefined;\n }\n return React.useMemo(() => {\n const result = {\n ...(data ?? ({} as Partial<T>)),\n ...pick(res, 'isLoading', 'error'),\n };\n if (\n !opts?.noUndefinedDataProxy &&\n reactMajorVersion >= 18 &&\n enableLoadingBoundary &&\n (isLoading || isNullDataOp) &&\n result.data === undefined &&\n result.schema === undefined &&\n result.error === undefined\n ) {\n result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n }\n return result;\n }, [\n isNullDataOp,\n data,\n error,\n isLoading,\n opts?.noUndefinedDataProxy,\n enableLoadingBoundary,\n fetchingData,\n fetchAndUpdateCache,\n ]);\n}\n\nexport function usePlasmicDataMutationOp<\n T extends SingleRowResult | ManyRowsResult\n>(dataOp: DataOp | undefined) {\n const { sourceId, opId, userArgs } = dataOp ?? {};\n const ctx = usePlasmicDataSourceContext();\n const userToken = ctx?.userAuthToken;\n return React.useCallback(async () => {\n if (!sourceId || !opId) {\n return undefined;\n }\n return executePlasmicDataOp<T>(\n { sourceId, opId, userArgs },\n {\n userAuthToken: userToken || undefined,\n user: ctx?.user,\n }\n );\n }, [sourceId, opId, userArgs, userToken]);\n}\n","import { ComponentMeta } from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp } from '../executor';\nimport { usePlasmicDataOp } from '../hooks/usePlasmicDataOp';\n\nexport interface DataOpConfig {\n name?: string;\n pageIndex?: number;\n pageSize?: number;\n}\n\nexport interface FetcherProps extends DataOpConfig {\n dataOp?: DataOp;\n children?: ($queries: Record<string, any>) => React.ReactElement | null;\n queries?: Record<string, any>;\n}\n\nexport function Fetcher(props: FetcherProps): React.ReactElement | null {\n const { dataOp, children, name, pageIndex, pageSize } = props;\n const data = usePlasmicDataOp(dataOp, {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n\n const $queries = React.useMemo(\n () => ({ ...props.queries, [name ?? 'data']: data }),\n [props.queries, name, data]\n );\n\n return children?.($queries) ?? null;\n}\n\nexport const FetcherMeta: ComponentMeta<FetcherProps> = {\n name: 'plasmic-data-source-fetcher',\n displayName: 'Data Fetcher',\n props: {\n dataOp: {\n type: 'dataSourceOp' as any,\n displayName: 'Data',\n },\n name: {\n type: 'string',\n displayName: 'Variable name',\n },\n children: {\n type: 'slot',\n renderPropParams: ['$queries'],\n },\n pageSize: {\n type: 'number',\n advanced: true,\n displayName: 'Page size',\n description: 'Only fetch in batches of this size; for pagination',\n },\n pageIndex: {\n type: 'number',\n advanced: true,\n displayName: 'Page index',\n description: '0-based index of the paginated page to fetch',\n },\n },\n importPath: '@plasmicapp/react-web/lib/data-sources',\n importName: 'Fetcher',\n alwaysAutoName: true,\n styleSections: false,\n};\n","import React from 'react';\nimport { DataOpConfig } from '../components/Fetcher';\nimport { DataOp } from '../executor';\nimport { swallow } from '../utils';\nimport { usePlasmicDataOp } from './usePlasmicDataOp';\n\nfunction usePrevious<T>(value: T | undefined): T | undefined {\n const prevValue = React.useRef<T | undefined>(undefined);\n\n React.useEffect(() => {\n prevValue.current = value;\n\n return () => {\n prevValue.current = undefined;\n };\n });\n\n return prevValue.current;\n}\n\nexport interface DependencyAwareQueryConfig extends DataOpConfig {\n $queries: Record<string, any>;\n setDollarQueries: ($queries: Record<string, any>) => void;\n getDataOp: () => DataOp;\n}\n\n/**\n * @deprecated Prefer using `usePlasmicDataOp` directly instead.\n */\nexport function useDependencyAwareQuery({\n $queries,\n getDataOp,\n setDollarQueries,\n name,\n pageIndex,\n pageSize,\n}: DependencyAwareQueryConfig) {\n const data = usePlasmicDataOp(swallow(getDataOp), {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n const finalName = name ?? 'data';\n const prevName = usePrevious(finalName);\n React.useEffect(() => {\n if (!(finalName in $queries) || $queries[finalName] !== data) {\n const $queries2 = {\n ...$queries,\n [finalName]: data,\n };\n if (prevName && finalName !== prevName && prevName in $queries) {\n delete $queries2[prevName];\n }\n setDollarQueries($queries2);\n }\n }, [finalName, prevName, data, $queries, setDollarQueries]);\n}\n","import {\n ManyRowsResult,\n TableFieldSchema,\n TableFieldType,\n TableSchema,\n} from './types';\nimport { mkIdMap, withoutNils } from './utils';\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface NormalizedData {\n data: Record<string, unknown>[];\n schema?: TableSchema;\n}\n\nexport function normalizeData(rawData: unknown): NormalizedData | undefined {\n if (!rawData) {\n return undefined;\n }\n\n const dataArray = tryGetDataArray(rawData);\n if (!dataArray) {\n return undefined;\n }\n const schema = (rawData as any).schema ?? tryGetSchema(dataArray);\n if (!schema) {\n return undefined;\n }\n return { data: dataArray, schema };\n}\n\nfunction tryGetDataArray(rawData: unknown): any[] | undefined {\n if (rawData == null || typeof rawData !== 'object') {\n return undefined;\n }\n\n if (Array.isArray(rawData)) {\n if (isArrayOfObjects(rawData)) {\n return rawData;\n } else {\n // TODO: array of primitives? Maybe we can wrap this?\n return undefined;\n }\n }\n\n if (rawData == null) {\n return undefined;\n }\n\n if ('data' in rawData && typeof (rawData as any).data === 'object') {\n if (\n Array.isArray((rawData as any).data) &&\n isArrayOfObjects((rawData as any).data)\n ) {\n return (rawData as any).data;\n } else if ((rawData as any).data != null) {\n return [(rawData as any).data];\n } else {\n return undefined;\n }\n }\n if ('isLoading' in rawData || 'error' in rawData) {\n return undefined;\n }\n\n // Maybe a singleton record?\n return [rawData];\n}\n\nfunction isArrayOfObjects(arr: unknown[]) {\n return arr.every((x) => typeof x === 'object' && !Array.isArray(x));\n}\n\nfunction tryGetSchema(data: any[]): TableSchema | undefined {\n const fieldMap: Record<string, TableFieldType> = {};\n data.forEach((entry: any) => {\n if (entry && typeof entry === 'object') {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === 'string'\n ? 'string'\n : typeof v === 'boolean'\n ? 'boolean'\n : typeof v === 'number'\n ? 'number'\n : 'unknown';\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = 'unknown';\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: 'inferred',\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport type BaseFieldConfig = {\n key?: string;\n fieldId?: string;\n};\n\nconst mkShortId = () => `${Math.random()}`;\n\nexport function deriveFieldConfigs<T extends BaseFieldConfig>(\n specifiedFieldsPartial: Partial<T>[],\n schema: TableSchema | undefined,\n makeDefaultConfig: (field: TableFieldSchema | undefined) => T\n): {\n mergedFields: T[];\n minimalFullLengthFields: Partial<T>[];\n} {\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap((f): T[] => {\n if (!f.fieldId) {\n return [\n { key: mkShortId(), ...makeDefaultConfig(undefined), ...f },\n ] as T[];\n }\n const field = fieldById.get(f.fieldId as string);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n key: mkShortId(),\n ...makeDefaultConfig(field),\n ...f,\n },\n ] as T[];\n });\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): T => ({\n key: mkShortId(),\n ...makeDefaultConfig(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: Partial<T>[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ] as Partial<T>[];\n return { mergedFields, minimalFullLengthFields };\n}\n"],"names":["DEFAULT_HOST","UNAUTHORIZED_MESSAGE","executePlasmicDataOp","_x","_x2","_executePlasmicDataOp2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","op","opts","func","res","wrap","_callee$","_context","prev","next","getConfig","_executePlasmicDataOp","wrapLoadingFetcher","sent","abrupt","stop","apply","arguments","_x3","_x4","_executePlasmicDataOp3","_callee2","_op$userArgs","host","url","resp","text","_callee2$","_context2","roleId","user","roleIds","includes","console","error","Error","sourceId","fetch","method","headers","_extends","userAuthToken","body","stringify","opId","userArgs","paginate","status","json","key","defaultValue","globalThis","_globalThis$key","swallow","f","_unused","undefined","pick","obj","_len","length","keys","Array","_key","_i","_keys","tuple","_len2","args","_key2","mkIdMap","xs","Map","map","x","id","withoutNils","filter","makeCacheKey","dataOp","queryDependencies","JSON","cacheKey","enableLoadingBoundaryKey","mkUndefinedDataProxy","promiseRef","fetchAndUpdateCache","Proxy","get","_target","prop","promise","fetchingPromise","plasmicType","message","String","reactMajorVersion","React","version","split","PRE_FETCHES","usePlasmicDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","fetchingData","useMemo","fetcher","has","existing","fetcherFn","fetcherPromise","set","then","cached","Promise","resolve","cachedError","reject","data","err","keyInfo","_cache$get","useMutablePlasmicQueryData","shouldRetryOnError","isLoading","result","noUndefinedDataProxy","schema","usePlasmicDataMutationOp","_ref","userToken","useCallback","Fetcher","props","children","name","pageIndex","pageSize","$queries","_extends2","queries","_children","FetcherMeta","displayName","type","renderPropParams","advanced","description","importPath","importName","alwaysAutoName","styleSections","usePrevious","value","prevValue","useRef","useEffect","current","useDependencyAwareQuery","getDataOp","setDollarQueries","finalName","prevName","$queries2","normalizeData","rawData","dataArray","tryGetDataArray","_rawData$schema","tryGetSchema","isArray","isArrayOfObjects","arr","every","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","fields","_ref2","t","readOnly","mkShortId","Math","random","deriveFieldConfigs","specifiedFieldsPartial","makeDefaultConfig","schemaFields","_schema$fields","fieldById","specifiedFieldIds","Set","fieldId","keptSpecifiedFields","flatMap","field","newVirtualFields","mergedFields","concat","minimalFullLengthFields"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,r,n=require("@plasmicapp/query"),o=e(require("react")),a=require("@plasmicapp/data-sources-context"),i=require("@plasmicapp/host"),u=e(require("@plasmicapp/isomorphic-unfetch")),c=e(require("fast-stringify"));function s(){s=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var a=Object.create((t&&t.prototype instanceof g?t:g).prototype),i=new _(n||[]);return o(a,"_invoke",{value:k(e,r,i)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var h="suspendedStart",d="executing",v="completed",y={};function g(){}function m(){}function w(){}var b={};l(b,i,(function(){return this}));var x=Object.getPrototypeOf,P=x&&x(x(T([])));P&&P!==r&&n.call(P,i)&&(b=P);var E=w.prototype=g.prototype=Object.create(b);function L(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function O(e,t){function r(o,a,i,u){var c=p(e[o],e,a);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,i,u)}),(function(e){r("throw",e,i,u)})):t.resolve(l).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return a=a?a.then(o,o):o()}})}function k(t,r,n){var o=h;return function(a,i){if(o===d)throw new Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:e,done:!0}}for(n.method=a,n.arg=i;;){var u=n.delegate;if(u){var c=A(u,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var s=p(t,r,n);if("normal"===s.type){if(o=n.done?v:"suspendedYield",s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function A(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=p(o,t.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,y;var i=a.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function I(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(I,this),this.reset(!0)}function T(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return a.next=a}}throw new TypeError(typeof t+" is not iterable")}return m.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:m,configurable:!0}),m.displayName=l(w,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,l(e,c,"GeneratorFunction")),e.prototype=Object.create(E),e},t.awrap=function(e){return{__await:e}},L(O.prototype),l(O.prototype,u,(function(){return this})),t.AsyncIterator=O,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new O(f(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},L(E),l(E,c,"Generator"),l(E,i,(function(){return this})),l(E,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=T,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function o(n,o){return u.type="throw",u.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:T(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function l(e,t,r,n,o,a,i){try{var u=e[a](i),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function f(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){l(a,n,o,i,u,"next",e)}function u(e){l(a,n,o,i,u,"throw",e)}i(void 0)}))}}function p(){return(p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var h="You do not have permission to perform this operation. Login to get access or contact the app owner to get access.";function d(e,r){return(t=t||f(s().mark((function e(t,r){var o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=y("__PLASMIC_EXECUTE_DATA_OP",v),e.next=3,n.wrapLoadingFetcher(o)(t,r);case 3:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function v(e,t){return(r=r||f(s().mark((function e(t,r){var n,o,a,i;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.roleId){e.next=4;break}if(null!=r&&r.user&&r.user.roleIds.includes(t.roleId)){e.next=4;break}throw console.error(h),new Error(h);case 4:return o=y("__PLASMIC_DATA_HOST","https://data.plasmic.app"),a=o+"/api/v1/server-data/sources/"+t.sourceId+"/execute",e.next=8,u(a,{method:"POST",headers:p({"Content-Type":"application/json"},(null==r?void 0:r.userAuthToken)&&{"x-plasmic-data-user-auth-token":r.userAuthToken}),body:c({opId:t.opId,userArgs:null!=(n=t.userArgs)?n:{},paginate:null==r?void 0:r.paginate})});case 8:if(200===(i=e.sent).status){e.next=14;break}return e.next=12,i.text();case 12:throw new Error(e.sent);case 14:return e.next=16,i.json();case 16:return e.abrupt("return",e.sent);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function y(e,t){return"undefined"==typeof globalThis?t:null!=(r=globalThis[e])?r:t;var r}function g(e,t){var r=JSON.stringify({sourceId:e.sourceId,opId:e.opId,args:e.userArgs,userAuthToken:null==t?void 0:t.userAuthToken,paginate:null==t?void 0:t.paginate});return e.cacheKey?""+e.cacheKey+r:r}function m(e,t){return new Proxy({},{get:function(r,n){if("isPlasmicUndefinedDataProxy"===n)return!0;var o=e.fetchingPromise||t();throw o.plasmicType="PlasmicUndefinedDataError",o.message="Cannot read property "+String(n)+" - data is still loading",o}})}var w=+o.version.split(".")[0];function b(e,t){var r,u=a.usePlasmicDataSourceContext(),c=!(null==i.useDataEnv||null==(r=i.useDataEnv())||!r.plasmicInternalEnableLoadingBoundary),s=n.usePlasmicDataConfig(),l=s.mutate,f=s.cache,h=!e,v=h?null:g(e,{paginate:null==t?void 0:t.paginate,userAuthToken:null==u?void 0:u.userAuthToken}),y=o.useMemo((function(){return{fetchingPromise:void 0}}),[v]),b=o.useMemo((function(){return function(){if(y.fetchingPromise)return y.fetchingPromise;var r=d(e,{userAuthToken:(null==u?void 0:u.userAuthToken)||void 0,user:null==u?void 0:u.user,paginate:null==t?void 0:t.paginate});return y.fetchingPromise=r,r}}),[v,y]),x=o.useMemo((function(){return function(){if(y.fetchingPromise)return y.fetchingPromise;var e=b();return e.then((function(e){return l(v,e)})).catch((function(e){var t,r=v?"$swr$"+v:"";f.set(r,p({},null!=(t=f.get(r))?t:{},{error:e}))})),e}}),[b,y,f,v]),P=n.useMutablePlasmicQueryData(v,b,{shouldRetryOnError:!1}),E=P.data,L=P.error,O=P.isLoading;return null!=y.fetchingPromise&&void 0!==E&&(y.fetchingPromise=void 0),o.useMemo((function(){var e=p({},null!=E?E:{},function(e){for(var t={},r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];for(var a=0,i=n;a<i.length;a++){var u=i[a];u in e&&(t[u]=e[u])}return t}(P,"isLoading","error"));return(null==t||!t.noUndefinedDataProxy)&&w>=18&&c&&(O||h)&&void 0===e.data&&void 0===e.schema&&(e.data=m(y,x),e.schema=m(y,x)),e}),[h,E,L,O,null==t?void 0:t.noUndefinedDataProxy,c,y,x])}function x(e){return e.every((function(e){return"object"==typeof e&&!Array.isArray(e)}))}var P=function(){return""+Math.random()};Object.defineProperty(exports,"usePlasmicDataConfig",{enumerable:!0,get:function(){return n.usePlasmicDataConfig}}),exports.Fetcher=function(e){var t,r=e.children,n=e.name,a=e.pageIndex,i=e.pageSize,u=b(e.dataOp,p({},!!a&&!!i&&{paginate:{pageIndex:a,pageSize:i}})),c=o.useMemo((function(){var t;return p({},e.queries,((t={})[null!=n?n:"data"]=u,t))}),[e.queries,n,u]);return null!=(t=null==r?void 0:r(c))?t:null},exports.FetcherMeta={name:"plasmic-data-source-fetcher",displayName:"Data Fetcher",props:{dataOp:{type:"dataSourceOp",displayName:"Data"},name:{type:"string",displayName:"Variable name"},children:{type:"slot",renderPropParams:["$queries"]},pageSize:{type:"number",advanced:!0,displayName:"Page size",description:"Only fetch in batches of this size; for pagination"},pageIndex:{type:"number",advanced:!0,displayName:"Page index",description:"0-based index of the paginated page to fetch"}},importPath:"@plasmicapp/react-web/lib/data-sources",importName:"Fetcher",alwaysAutoName:!0,styleSections:!1},exports.deriveFieldConfigs=function(e,t,r){var n,o=null!=(n=null==t?void 0:t.fields)?n:[],a=new Map(o.map((function(e){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t}(e.id,e)}))),i=new Set(e.map((function(e){return e.fieldId})).filter((function(e){return null!=e}))),u=e.flatMap((function(e){if(!e.fieldId)return[p({key:P()},r(void 0),e)];var t=a.get(e.fieldId);return t?[p({key:P()},r(t),e)]:[]})),c=o.filter((function(e){return!i.has(e.id)})).map((function(e){return p({key:P()},r(e))}));return{mergedFields:[].concat(u,c),minimalFullLengthFields:[].concat(e,c.map((function(e){return{key:e.key,fieldId:e.fieldId}})))}},exports.executePlasmicDataOp=d,exports.makeCacheKey=g,exports.normalizeData=function(e){var t;if(e){var r=function(e){if(null!=e&&"object"==typeof e){if(Array.isArray(e))return x(e)?e:void 0;if(null!=e){if("data"in e&&"object"==typeof e.data)return Array.isArray(e.data)&&x(e.data)?e.data:null!=e.data?[e.data]:void 0;if(!("isLoading"in e)&&!("error"in e))return[e]}}}(e);if(r){var n,o=null!=(t=e.schema)?t:(n={},r.forEach((function(e){e&&"object"==typeof e&&Array.from(Object.entries(e)).forEach((function(e){var t=e[0],r=e[1],o="string"==typeof r?"string":"boolean"==typeof r?"boolean":"number"==typeof r?"number":"unknown";n[t]=n[t]&&n[t]!==o?"unknown":o}))})),{id:"inferred",fields:Object.entries(n).map((function(e){return{id:e[0],type:e[1],readOnly:!1}}))});if(o)return{data:r,schema:o}}}},exports.useDependencyAwareQuery=function(e){var t,r,n=e.$queries,a=e.setDollarQueries,i=e.name,u=e.pageIndex,c=e.pageSize,s=b(function(e){try{return e()}catch(e){return}}(e.getDataOp),p({},!!u&&!!c&&{paginate:{pageIndex:u,pageSize:c}})),l=null!=i?i:"data",f=(t=l,r=o.useRef(void 0),o.useEffect((function(){return r.current=t,function(){r.current=void 0}})),r.current);o.useEffect((function(){if(!(l in n)||n[l]!==s){var e,t=p({},n,((e={})[l]=s,e));f&&l!==f&&f in n&&delete t[f],a(t)}}),[l,f,s,n,a])},exports.usePlasmicDataMutationOp=function(e){var t=null!=e?e:{},r=t.sourceId,n=t.opId,i=t.userArgs,u=a.usePlasmicDataSourceContext(),c=null==u?void 0:u.userAuthToken;return o.useCallback(f(s().mark((function e(){return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r&&n){e.next=2;break}return e.abrupt("return",void 0);case 2:return e.abrupt("return",d({sourceId:r,opId:n,userArgs:i},{userAuthToken:c||void 0,user:null==u?void 0:u.user}));case 3:case"end":return e.stop()}}),e)}))),[r,n,i,c])},exports.usePlasmicDataOp=b;
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,r,n=require("@plasmicapp/query"),o=e(require("react")),a=require("@plasmicapp/data-sources-context"),i=require("@plasmicapp/host"),u=e(require("@plasmicapp/isomorphic-unfetch")),c=e(require("fast-stringify"));function s(){s=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var a=Object.create((t&&t.prototype instanceof g?t:g).prototype),i=new _(n||[]);return o(a,"_invoke",{value:k(e,r,i)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var h="suspendedStart",d="executing",v="completed",y={};function g(){}function m(){}function w(){}var b={};l(b,i,(function(){return this}));var x=Object.getPrototypeOf,P=x&&x(x(T([])));P&&P!==r&&n.call(P,i)&&(b=P);var E=w.prototype=g.prototype=Object.create(b);function L(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function O(e,t){function r(o,a,i,u){var c=p(e[o],e,a);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,i,u)}),(function(e){r("throw",e,i,u)})):t.resolve(l).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return a=a?a.then(o,o):o()}})}function k(t,r,n){var o=h;return function(a,i){if(o===d)throw new Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:e,done:!0}}for(n.method=a,n.arg=i;;){var u=n.delegate;if(u){var c=A(u,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var s=p(t,r,n);if("normal"===s.type){if(o=n.done?v:"suspendedYield",s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function A(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=p(o,t.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,y;var i=a.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function I(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(I,this),this.reset(!0)}function T(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return a.next=a}}throw new TypeError(typeof t+" is not iterable")}return m.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:m,configurable:!0}),m.displayName=l(w,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,l(e,c,"GeneratorFunction")),e.prototype=Object.create(E),e},t.awrap=function(e){return{__await:e}},L(O.prototype),l(O.prototype,u,(function(){return this})),t.AsyncIterator=O,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new O(f(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},L(E),l(E,c,"Generator"),l(E,i,(function(){return this})),l(E,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=T,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(j),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function o(n,o){return u.type="throw",u.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:T(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function l(e,t,r,n,o,a,i){try{var u=e[a](i),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function f(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){l(a,n,o,i,u,"next",e)}function u(e){l(a,n,o,i,u,"throw",e)}i(void 0)}))}}function p(){return(p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var h="You do not have permission to perform this operation. Login to get access or contact the app owner to get access.";function d(e,r){return(t=t||f(s().mark((function e(t,r){var o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=y("__PLASMIC_EXECUTE_DATA_OP",v),e.next=3,n.wrapLoadingFetcher(o)(t,r);case 3:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function v(e,t){return(r=r||f(s().mark((function e(t,r){var n,o,a,i;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.roleId){e.next=4;break}if(null!=r&&r.user&&r.user.roleIds.includes(t.roleId)){e.next=4;break}throw console.error(h),new Error(h);case 4:return o=y("__PLASMIC_DATA_HOST","https://data.plasmic.app"),a=o+"/api/v1/server-data/sources/"+t.sourceId+"/execute",e.next=8,u(a,{method:"POST",headers:p({"Content-Type":"application/json"},(null==r?void 0:r.userAuthToken)&&{"x-plasmic-data-user-auth-token":r.userAuthToken}),body:c({opId:t.opId,userArgs:null!=(n=t.userArgs)?n:{},paginate:null==r?void 0:r.paginate})});case 8:if(200===(i=e.sent).status){e.next=14;break}return e.next=12,i.text();case 12:throw new Error(e.sent);case 14:return e.next=16,i.json();case 16:return e.abrupt("return",e.sent);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function y(e,t){return"undefined"==typeof globalThis?t:null!=(r=globalThis[e])?r:t;var r}function g(e,t){var r=JSON.stringify({sourceId:e.sourceId,opId:e.opId,args:e.userArgs,userAuthToken:null==t?void 0:t.userAuthToken,paginate:null==t?void 0:t.paginate});return e.cacheKey?""+e.cacheKey+r:r}function m(e,t){return new Proxy({},{get:function(r,n){if("isPlasmicUndefinedDataProxy"===n)return!0;var o=e.fetchingPromise||t();throw o.plasmicType="PlasmicUndefinedDataError",o.message="Cannot read property "+String(n)+" - data is still loading",o}})}var w=+o.version.split(".")[0],b=new Map;function x(e,t){var r,u=a.usePlasmicDataSourceContext(),c=!(null==i.useDataEnv||null==(r=i.useDataEnv())||!r.plasmicInternalEnableLoadingBoundary),s=n.usePlasmicDataConfig(),l=s.mutate,f=s.cache,h=!e,v=h?null:g(e,{paginate:null==t?void 0:t.paginate,userAuthToken:null==u?void 0:u.userAuthToken}),y=o.useMemo((function(){return{fetchingPromise:void 0}}),[v]),x=o.useMemo((function(){return function(){if(y.fetchingPromise)return y.fetchingPromise;if(v&&b.has(v)){var r=b.get(v);return y.fetchingPromise=r,r}var n=d(e,{userAuthToken:(null==u?void 0:u.userAuthToken)||void 0,user:null==u?void 0:u.user,paginate:null==t?void 0:t.paginate});return y.fetchingPromise=n,v&&(b.set(v,n),n.then((function(){b.delete(v)}),(function(){b.delete(v)}))),n}}),[v,y]),P=o.useMemo((function(){return function(){if(y.fetchingPromise)return y.fetchingPromise;var e=f.get(v);if(e)return Promise.resolve(e);var t=f.get("$swr$"+v);return t?Promise.reject(t.error):(x().then((function(e){return l(v,e)})).catch((function(e){var t,r=v?"$swr$"+v:"";f.set(r,p({},null!=(t=f.get(r))?t:{},{error:e}))})),y.fetchingPromise)}}),[x,y,f,v]),E=n.useMutablePlasmicQueryData(v,x,{shouldRetryOnError:!1}),L=E.data,O=E.error,k=E.isLoading;return null!=y.fetchingPromise&&void 0!==L&&(y.fetchingPromise=void 0),o.useMemo((function(){var e=p({},null!=L?L:{},function(e){for(var t={},r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];for(var a=0,i=n;a<i.length;a++){var u=i[a];u in e&&(t[u]=e[u])}return t}(E,"isLoading","error"));return(null==t||!t.noUndefinedDataProxy)&&w>=18&&c&&(k||h)&&void 0===e.data&&void 0===e.schema&&void 0===e.error&&(e.data=m(y,P),e.schema=m(y,P)),e}),[h,L,O,k,null==t?void 0:t.noUndefinedDataProxy,c,y,P])}function P(e){return e.every((function(e){return"object"==typeof e&&!Array.isArray(e)}))}var E=function(){return""+Math.random()};Object.defineProperty(exports,"usePlasmicDataConfig",{enumerable:!0,get:function(){return n.usePlasmicDataConfig}}),exports.Fetcher=function(e){var t,r=e.children,n=e.name,a=e.pageIndex,i=e.pageSize,u=x(e.dataOp,p({},!!a&&!!i&&{paginate:{pageIndex:a,pageSize:i}})),c=o.useMemo((function(){var t;return p({},e.queries,((t={})[null!=n?n:"data"]=u,t))}),[e.queries,n,u]);return null!=(t=null==r?void 0:r(c))?t:null},exports.FetcherMeta={name:"plasmic-data-source-fetcher",displayName:"Data Fetcher",props:{dataOp:{type:"dataSourceOp",displayName:"Data"},name:{type:"string",displayName:"Variable name"},children:{type:"slot",renderPropParams:["$queries"]},pageSize:{type:"number",advanced:!0,displayName:"Page size",description:"Only fetch in batches of this size; for pagination"},pageIndex:{type:"number",advanced:!0,displayName:"Page index",description:"0-based index of the paginated page to fetch"}},importPath:"@plasmicapp/react-web/lib/data-sources",importName:"Fetcher",alwaysAutoName:!0,styleSections:!1},exports.deriveFieldConfigs=function(e,t,r){var n,o=null!=(n=null==t?void 0:t.fields)?n:[],a=new Map(o.map((function(e){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t}(e.id,e)}))),i=new Set(e.map((function(e){return e.fieldId})).filter((function(e){return null!=e}))),u=e.flatMap((function(e){if(!e.fieldId)return[p({key:E()},r(void 0),e)];var t=a.get(e.fieldId);return t?[p({key:E()},r(t),e)]:[]})),c=o.filter((function(e){return!i.has(e.id)})).map((function(e){return p({key:E()},r(e))}));return{mergedFields:[].concat(u,c),minimalFullLengthFields:[].concat(e,c.map((function(e){return{key:e.key,fieldId:e.fieldId}})))}},exports.executePlasmicDataOp=d,exports.makeCacheKey=g,exports.normalizeData=function(e){var t;if(e){var r=function(e){if(null!=e&&"object"==typeof e){if(Array.isArray(e))return P(e)?e:void 0;if(null!=e){if("data"in e&&"object"==typeof e.data)return Array.isArray(e.data)&&P(e.data)?e.data:null!=e.data?[e.data]:void 0;if(!("isLoading"in e)&&!("error"in e))return[e]}}}(e);if(r){var n,o=null!=(t=e.schema)?t:(n={},r.forEach((function(e){e&&"object"==typeof e&&Array.from(Object.entries(e)).forEach((function(e){var t=e[0],r=e[1],o="string"==typeof r?"string":"boolean"==typeof r?"boolean":"number"==typeof r?"number":"unknown";n[t]=n[t]&&n[t]!==o?"unknown":o}))})),{id:"inferred",fields:Object.entries(n).map((function(e){return{id:e[0],type:e[1],readOnly:!1}}))});if(o)return{data:r,schema:o}}}},exports.useDependencyAwareQuery=function(e){var t,r,n=e.$queries,a=e.setDollarQueries,i=e.name,u=e.pageIndex,c=e.pageSize,s=x(function(e){try{return e()}catch(e){return}}(e.getDataOp),p({},!!u&&!!c&&{paginate:{pageIndex:u,pageSize:c}})),l=null!=i?i:"data",f=(t=l,r=o.useRef(void 0),o.useEffect((function(){return r.current=t,function(){r.current=void 0}})),r.current);o.useEffect((function(){if(!(l in n)||n[l]!==s){var e,t=p({},n,((e={})[l]=s,e));f&&l!==f&&f in n&&delete t[f],a(t)}}),[l,f,s,n,a])},exports.usePlasmicDataMutationOp=function(e){var t=null!=e?e:{},r=t.sourceId,n=t.opId,i=t.userArgs,u=a.usePlasmicDataSourceContext(),c=null==u?void 0:u.userAuthToken;return o.useCallback(f(s().mark((function e(){return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r&&n){e.next=2;break}return e.abrupt("return",void 0);case 2:return e.abrupt("return",d({sourceId:r,opId:n,userArgs:i},{userAuthToken:c||void 0,user:null==u?void 0:u.user}));case 3:case"end":return e.stop()}}),e)}))),[r,n,i,c])},exports.usePlasmicDataOp=x;
|
|
2
2
|
//# sourceMappingURL=data-sources.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-sources.cjs.production.min.js","sources":["../src/executor.tsx","../src/hooks/usePlasmicDataOp.tsx","../src/utils.ts","../src/helpers.ts","../src/components/Fetcher.tsx","../src/hooks/useDependencyAwareQuery.tsx"],"sourcesContent":["import { PlasmicDataSourceContextValue } from '@plasmicapp/data-sources-context';\nimport fetch from '@plasmicapp/isomorphic-unfetch';\nimport { wrapLoadingFetcher } from '@plasmicapp/query';\nimport stringify from 'fast-stringify';\nimport { ManyRowsResult, Pagination, SingleRowResult } from './types';\n\nconst DEFAULT_HOST = 'https://data.plasmic.app';\n\nexport interface DataOp {\n sourceId: string;\n opId: string;\n userArgs?: Record<string, any>;\n cacheKey?: string;\n invalidatedKeys?: string[] | null;\n roleId?: string | null;\n}\n\ninterface ExecuteOpts {\n userAuthToken?: string;\n user?: PlasmicDataSourceContextValue['user'];\n paginate?: Pagination;\n}\n\nconst UNAUTHORIZED_MESSAGE =\n 'You do not have permission to perform this operation. Login to get access or contact the app owner to get access.';\n\nexport async function executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n const func = getConfig(\n '__PLASMIC_EXECUTE_DATA_OP',\n _executePlasmicDataOp\n ) as typeof _executePlasmicDataOp;\n const res = await wrapLoadingFetcher(func)(op, opts);\n return res as T;\n}\n\nasync function _executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n if (op.roleId) {\n if (!opts?.user || !opts.user.roleIds.includes(op.roleId)) {\n console.error(UNAUTHORIZED_MESSAGE);\n throw new Error(UNAUTHORIZED_MESSAGE);\n }\n }\n\n const host = getConfig('__PLASMIC_DATA_HOST', DEFAULT_HOST);\n\n const url = `${host}/api/v1/server-data/sources/${op.sourceId}/execute`;\n const resp = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(opts?.userAuthToken && {\n 'x-plasmic-data-user-auth-token': opts.userAuthToken,\n }),\n },\n body: stringify({\n opId: op.opId,\n userArgs: op.userArgs ?? {},\n paginate: opts?.paginate,\n }),\n });\n if (resp.status !== 200) {\n const text = await resp.text();\n throw new Error(text);\n }\n return (await resp.json()) as T;\n}\n\nfunction getConfig<T>(key: string, defaultValue: T) {\n if (typeof globalThis === 'undefined') {\n return defaultValue;\n } else {\n return (globalThis as any)[key] ?? defaultValue;\n }\n}\n","import { usePlasmicDataSourceContext } from '@plasmicapp/data-sources-context';\nimport * as ph from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp, executePlasmicDataOp } from '../executor';\nimport { ManyRowsResult, Pagination, SingleRowResult } from '../types';\nimport { pick } from '../utils';\nimport {\n useMutablePlasmicQueryData,\n usePlasmicDataConfig,\n} from '@plasmicapp/query';\n\nexport function makeCacheKey(\n dataOp: DataOp,\n opts?: { paginate?: Pagination; userAuthToken?: string | null }\n) {\n const queryDependencies = JSON.stringify({\n sourceId: dataOp.sourceId,\n opId: dataOp.opId,\n args: dataOp.userArgs,\n userAuthToken: opts?.userAuthToken,\n paginate: opts?.paginate,\n });\n return dataOp.cacheKey\n ? `${dataOp.cacheKey}${queryDependencies}`\n : queryDependencies;\n}\n\nconst enableLoadingBoundaryKey = 'plasmicInternalEnableLoadingBoundary';\n\nfunction mkUndefinedDataProxy(\n promiseRef: { fetchingPromise: Promise<any> | undefined },\n fetchAndUpdateCache: () => Promise<any>\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n const promise = promiseRef.fetchingPromise || fetchAndUpdateCache();\n (promise as any).plasmicType = 'PlasmicUndefinedDataError';\n (promise as any).message = `Cannot read property ${String(\n prop\n )} - data is still loading`;\n throw promise;\n },\n }\n ) as any;\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\nexport function usePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult,\n E = any\n>(\n dataOp: DataOp | undefined,\n opts?: {\n paginate?: Pagination;\n noUndefinedDataProxy?: boolean;\n }\n): Partial<T> & {\n error?: E;\n isLoading?: boolean;\n} {\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n const isNullDataOp = !dataOp;\n const key = isNullDataOp\n ? null\n : makeCacheKey(dataOp!, {\n paginate: opts?.paginate,\n userAuthToken: ctx?.userAuthToken,\n });\n const fetchingData = React.useMemo(\n () => ({\n fetchingPromise: undefined as Promise<T> | undefined,\n }),\n [key]\n );\n const fetcher = React.useMemo(\n () => () => {\n if (fetchingData.fetchingPromise) {\n return fetchingData.fetchingPromise;\n }\n const fetcherFn = () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n executePlasmicDataOp<T>(dataOp!, {\n userAuthToken: ctx?.userAuthToken || undefined,\n user: ctx?.user,\n paginate: opts?.paginate,\n });\n const fetcherPromise = fetcherFn();\n fetchingData.fetchingPromise = fetcherPromise;\n return fetcherPromise;\n },\n [key, fetchingData]\n );\n const fetchAndUpdateCache = React.useMemo(\n () => () => {\n if (fetchingData.fetchingPromise) {\n // No need to update cache as the exist promise call site will do it\n return fetchingData.fetchingPromise;\n }\n const fetcherPromise = fetcher();\n fetcherPromise\n .then((data) => mutate(key, data))\n .catch((err) => {\n // Cache the error here to avoid infinite loop\n const keyInfo = key ? '$swr$' + key : '';\n cache.set(keyInfo, { ...(cache.get(keyInfo) ?? {}), error: err });\n });\n return fetcherPromise;\n },\n [fetcher, fetchingData, cache, key]\n );\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n });\n const { data, error, isLoading } = res;\n if (fetchingData.fetchingPromise != null && data !== undefined) {\n // Clear the fetching promise as the actual data is now used (so\n // revalidation is possible)\n fetchingData.fetchingPromise = undefined;\n }\n return React.useMemo(() => {\n const result = {\n ...(data ?? ({} as Partial<T>)),\n ...pick(res, 'isLoading', 'error'),\n };\n if (\n !opts?.noUndefinedDataProxy &&\n reactMajorVersion >= 18 &&\n enableLoadingBoundary &&\n (isLoading || isNullDataOp) &&\n result.data === undefined &&\n result.schema === undefined\n ) {\n result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n }\n return result;\n }, [\n isNullDataOp,\n data,\n error,\n isLoading,\n opts?.noUndefinedDataProxy,\n enableLoadingBoundary,\n fetchingData,\n fetchAndUpdateCache,\n ]);\n}\n\nexport function usePlasmicDataMutationOp<\n T extends SingleRowResult | ManyRowsResult\n>(dataOp: DataOp | undefined) {\n const { sourceId, opId, userArgs } = dataOp ?? {};\n const ctx = usePlasmicDataSourceContext();\n const userToken = ctx?.userAuthToken;\n return React.useCallback(async () => {\n if (!sourceId || !opId) {\n return undefined;\n }\n return executePlasmicDataOp<T>(\n { sourceId, opId, userArgs },\n {\n userAuthToken: userToken || undefined,\n user: ctx?.user,\n }\n );\n }, [sourceId, opId, userArgs, userToken]);\n}\n","export function swallow<T>(f: () => T): T | undefined {\n try {\n return f();\n } catch {\n return undefined;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Pick<T, K> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res;\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error('Expected non-null or non-undefined value');\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) return undefined;\n return f(x);\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === 'string'\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | '' | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n","import {\n ManyRowsResult,\n TableFieldSchema,\n TableFieldType,\n TableSchema,\n} from './types';\nimport { mkIdMap, withoutNils } from './utils';\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface NormalizedData {\n data: Record<string, unknown>[];\n schema?: TableSchema;\n}\n\nexport function normalizeData(rawData: unknown): NormalizedData | undefined {\n if (!rawData) {\n return undefined;\n }\n\n const dataArray = tryGetDataArray(rawData);\n if (!dataArray) {\n return undefined;\n }\n const schema = (rawData as any).schema ?? tryGetSchema(dataArray);\n if (!schema) {\n return undefined;\n }\n return { data: dataArray, schema };\n}\n\nfunction tryGetDataArray(rawData: unknown): any[] | undefined {\n if (rawData == null || typeof rawData !== 'object') {\n return undefined;\n }\n\n if (Array.isArray(rawData)) {\n if (isArrayOfObjects(rawData)) {\n return rawData;\n } else {\n // TODO: array of primitives? Maybe we can wrap this?\n return undefined;\n }\n }\n\n if (rawData == null) {\n return undefined;\n }\n\n if ('data' in rawData && typeof (rawData as any).data === 'object') {\n if (\n Array.isArray((rawData as any).data) &&\n isArrayOfObjects((rawData as any).data)\n ) {\n return (rawData as any).data;\n } else if ((rawData as any).data != null) {\n return [(rawData as any).data];\n } else {\n return undefined;\n }\n }\n if ('isLoading' in rawData || 'error' in rawData) {\n return undefined;\n }\n\n // Maybe a singleton record?\n return [rawData];\n}\n\nfunction isArrayOfObjects(arr: unknown[]) {\n return arr.every((x) => typeof x === 'object' && !Array.isArray(x));\n}\n\nfunction tryGetSchema(data: any[]): TableSchema | undefined {\n const fieldMap: Record<string, TableFieldType> = {};\n data.forEach((entry: any) => {\n if (entry && typeof entry === 'object') {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === 'string'\n ? 'string'\n : typeof v === 'boolean'\n ? 'boolean'\n : typeof v === 'number'\n ? 'number'\n : 'unknown';\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = 'unknown';\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: 'inferred',\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport type BaseFieldConfig = {\n key?: string;\n fieldId?: string;\n};\n\nconst mkShortId = () => `${Math.random()}`;\n\nexport function deriveFieldConfigs<T extends BaseFieldConfig>(\n specifiedFieldsPartial: Partial<T>[],\n schema: TableSchema | undefined,\n makeDefaultConfig: (field: TableFieldSchema | undefined) => T\n): {\n mergedFields: T[];\n minimalFullLengthFields: Partial<T>[];\n} {\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap((f): T[] => {\n if (!f.fieldId) {\n return [\n { key: mkShortId(), ...makeDefaultConfig(undefined), ...f },\n ] as T[];\n }\n const field = fieldById.get(f.fieldId as string);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n key: mkShortId(),\n ...makeDefaultConfig(field),\n ...f,\n },\n ] as T[];\n });\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): T => ({\n key: mkShortId(),\n ...makeDefaultConfig(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: Partial<T>[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ] as Partial<T>[];\n return { mergedFields, minimalFullLengthFields };\n}\n","import { ComponentMeta } from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp } from '../executor';\nimport { usePlasmicDataOp } from '../hooks/usePlasmicDataOp';\n\nexport interface DataOpConfig {\n name?: string;\n pageIndex?: number;\n pageSize?: number;\n}\n\nexport interface FetcherProps extends DataOpConfig {\n dataOp?: DataOp;\n children?: ($queries: Record<string, any>) => React.ReactElement | null;\n queries?: Record<string, any>;\n}\n\nexport function Fetcher(props: FetcherProps): React.ReactElement | null {\n const { dataOp, children, name, pageIndex, pageSize } = props;\n const data = usePlasmicDataOp(dataOp, {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n\n const $queries = React.useMemo(\n () => ({ ...props.queries, [name ?? 'data']: data }),\n [props.queries, name, data]\n );\n\n return children?.($queries) ?? null;\n}\n\nexport const FetcherMeta: ComponentMeta<FetcherProps> = {\n name: 'plasmic-data-source-fetcher',\n displayName: 'Data Fetcher',\n props: {\n dataOp: {\n type: 'dataSourceOp' as any,\n displayName: 'Data',\n },\n name: {\n type: 'string',\n displayName: 'Variable name',\n },\n children: {\n type: 'slot',\n renderPropParams: ['$queries'],\n },\n pageSize: {\n type: 'number',\n advanced: true,\n displayName: 'Page size',\n description: 'Only fetch in batches of this size; for pagination',\n },\n pageIndex: {\n type: 'number',\n advanced: true,\n displayName: 'Page index',\n description: '0-based index of the paginated page to fetch',\n },\n },\n importPath: '@plasmicapp/react-web/lib/data-sources',\n importName: 'Fetcher',\n alwaysAutoName: true,\n styleSections: false,\n};\n","import React from 'react';\nimport { DataOpConfig } from '../components/Fetcher';\nimport { DataOp } from '../executor';\nimport { swallow } from '../utils';\nimport { usePlasmicDataOp } from './usePlasmicDataOp';\n\nfunction usePrevious<T>(value: T | undefined): T | undefined {\n const prevValue = React.useRef<T | undefined>(undefined);\n\n React.useEffect(() => {\n prevValue.current = value;\n\n return () => {\n prevValue.current = undefined;\n };\n });\n\n return prevValue.current;\n}\n\nexport interface DependencyAwareQueryConfig extends DataOpConfig {\n $queries: Record<string, any>;\n setDollarQueries: ($queries: Record<string, any>) => void;\n getDataOp: () => DataOp;\n}\n\n/**\n * @deprecated Prefer using `usePlasmicDataOp` directly instead.\n */\nexport function useDependencyAwareQuery({\n $queries,\n getDataOp,\n setDollarQueries,\n name,\n pageIndex,\n pageSize,\n}: DependencyAwareQueryConfig) {\n const data = usePlasmicDataOp(swallow(getDataOp), {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n const finalName = name ?? 'data';\n const prevName = usePrevious(finalName);\n React.useEffect(() => {\n if (!(finalName in $queries) || $queries[finalName] !== data) {\n const $queries2 = {\n ...$queries,\n [finalName]: data,\n };\n if (prevName && finalName !== prevName && prevName in $queries) {\n delete $queries2[prevName];\n }\n setDollarQueries($queries2);\n }\n }, [finalName, prevName, data, $queries, setDollarQueries]);\n}\n"],"names":["UNAUTHORIZED_MESSAGE","executePlasmicDataOp","_x","_x2","_executePlasmicDataOp2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","op","opts","func","wrap","_context","prev","next","getConfig","_executePlasmicDataOp","wrapLoadingFetcher","abrupt","sent","stop","apply","arguments","_x3","_x4","_executePlasmicDataOp3","_callee2","_op$userArgs","host","url","resp","_context2","roleId","user","roleIds","includes","console","error","Error","sourceId","fetch","method","headers","_extends","Content-Type","userAuthToken","x-plasmic-data-user-auth-token","body","stringify","opId","userArgs","paginate","status","text","json","key","defaultValue","globalThis","_globalThis$key","makeCacheKey","dataOp","queryDependencies","JSON","args","cacheKey","mkUndefinedDataProxy","promiseRef","fetchAndUpdateCache","Proxy","get","_target","prop","promise","fetchingPromise","plasmicType","message","String","reactMajorVersion","React","version","split","usePlasmicDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","fetchingData","useMemo","undefined","fetcher","fetcherPromise","then","data","err","keyInfo","set","_cache$get","res","useMutablePlasmicQueryData","shouldRetryOnError","isLoading","result","obj","_len","length","keys","Array","_key","_i","_keys","pick","noUndefinedDataProxy","schema","isArrayOfObjects","arr","every","x","isArray","mkShortId","Math","random","props","children","name","pageIndex","pageSize","$queries","_extends2","queries","_children","displayName","type","renderPropParams","advanced","description","importPath","importName","alwaysAutoName","styleSections","specifiedFieldsPartial","makeDefaultConfig","schemaFields","_schema$fields","fields","fieldById","Map","map","_len2","_key2","tuple","id","specifiedFieldIds","Set","f","fieldId","filter","keptSpecifiedFields","flatMap","field","newVirtualFields","has","mergedFields","concat","minimalFullLengthFields","rawData","dataArray","tryGetDataArray","fieldMap","_rawData$schema","forEach","entry","from","Object","entries","_ref","k","v","inferredType","_ref2","readOnly","value","prevValue","setDollarQueries","_unused","swallow","getDataOp","finalName","prevName","useRef","useEffect","current","$queries2","userToken","useCallback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-sources.cjs.production.min.js","sources":["../src/executor.tsx","../src/hooks/usePlasmicDataOp.tsx","../src/utils.ts","../src/helpers.ts","../src/components/Fetcher.tsx","../src/hooks/useDependencyAwareQuery.tsx"],"sourcesContent":["import { PlasmicDataSourceContextValue } from '@plasmicapp/data-sources-context';\nimport fetch from '@plasmicapp/isomorphic-unfetch';\nimport { wrapLoadingFetcher } from '@plasmicapp/query';\nimport stringify from 'fast-stringify';\nimport { ManyRowsResult, Pagination, SingleRowResult } from './types';\n\nconst DEFAULT_HOST = 'https://data.plasmic.app';\n\nexport interface DataOp {\n sourceId: string;\n opId: string;\n userArgs?: Record<string, any>;\n cacheKey?: string;\n invalidatedKeys?: string[] | null;\n roleId?: string | null;\n}\n\ninterface ExecuteOpts {\n userAuthToken?: string;\n user?: PlasmicDataSourceContextValue['user'];\n paginate?: Pagination;\n}\n\nconst UNAUTHORIZED_MESSAGE =\n 'You do not have permission to perform this operation. Login to get access or contact the app owner to get access.';\n\nexport async function executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n const func = getConfig(\n '__PLASMIC_EXECUTE_DATA_OP',\n _executePlasmicDataOp\n ) as typeof _executePlasmicDataOp;\n const res = await wrapLoadingFetcher(func)(op, opts);\n return res as T;\n}\n\nasync function _executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n if (op.roleId) {\n if (!opts?.user || !opts.user.roleIds.includes(op.roleId)) {\n console.error(UNAUTHORIZED_MESSAGE);\n throw new Error(UNAUTHORIZED_MESSAGE);\n }\n }\n\n const host = getConfig('__PLASMIC_DATA_HOST', DEFAULT_HOST);\n\n const url = `${host}/api/v1/server-data/sources/${op.sourceId}/execute`;\n const resp = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(opts?.userAuthToken && {\n 'x-plasmic-data-user-auth-token': opts.userAuthToken,\n }),\n },\n body: stringify({\n opId: op.opId,\n userArgs: op.userArgs ?? {},\n paginate: opts?.paginate,\n }),\n });\n if (resp.status !== 200) {\n const text = await resp.text();\n throw new Error(text);\n }\n return (await resp.json()) as T;\n}\n\nfunction getConfig<T>(key: string, defaultValue: T) {\n if (typeof globalThis === 'undefined') {\n return defaultValue;\n } else {\n return (globalThis as any)[key] ?? defaultValue;\n }\n}\n","import { usePlasmicDataSourceContext } from '@plasmicapp/data-sources-context';\n// eslint-disable-next-line no-restricted-imports\nimport * as ph from '@plasmicapp/host';\nimport {\n useMutablePlasmicQueryData,\n usePlasmicDataConfig,\n} from '@plasmicapp/query';\nimport React from 'react';\nimport { DataOp, executePlasmicDataOp } from '../executor';\nimport { ManyRowsResult, Pagination, SingleRowResult } from '../types';\nimport { pick } from '../utils';\n\nexport function makeCacheKey(\n dataOp: DataOp,\n opts?: { paginate?: Pagination; userAuthToken?: string | null }\n) {\n const queryDependencies = JSON.stringify({\n sourceId: dataOp.sourceId,\n opId: dataOp.opId,\n args: dataOp.userArgs,\n userAuthToken: opts?.userAuthToken,\n paginate: opts?.paginate,\n });\n return dataOp.cacheKey\n ? `${dataOp.cacheKey}${queryDependencies}`\n : queryDependencies;\n}\n\nconst enableLoadingBoundaryKey = 'plasmicInternalEnableLoadingBoundary';\n\nfunction mkUndefinedDataProxy(\n promiseRef: { fetchingPromise: Promise<any> | undefined },\n fetchAndUpdateCache: () => Promise<any>\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n const promise = promiseRef.fetchingPromise || fetchAndUpdateCache();\n (promise as any).plasmicType = 'PlasmicUndefinedDataError';\n (promise as any).message = `Cannot read property ${String(\n prop\n )} - data is still loading`;\n throw promise;\n },\n }\n ) as any;\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\n/**\n * Fetches can be kicked off two ways -- normally, by useSWR(), or by some\n * expression accessing the `$queries.*` proxy when not ready yet. We need\n * a global cache for proxy-invoked caches, so that different components\n * with the same key can share the same fetch.\n *\n * The life cycle for this cache is short -- only the duration of a\n * proxy-invoked fetch, and once the fetch is done. That's because we really\n * just want SWR to be managing the cache, not us! Once the data is in SWR,\n * we will use SWR for getting data.\n */\nconst PRE_FETCHES = new Map<string, Promise<any>>();\n\nexport function usePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult,\n E = any\n>(\n dataOp: DataOp | undefined,\n opts?: {\n paginate?: Pagination;\n noUndefinedDataProxy?: boolean;\n }\n): Partial<T> & {\n error?: E;\n isLoading?: boolean;\n} {\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n const isNullDataOp = !dataOp;\n const key = isNullDataOp\n ? null\n : makeCacheKey(dataOp!, {\n paginate: opts?.paginate,\n userAuthToken: ctx?.userAuthToken,\n });\n const fetchingData = React.useMemo(\n () => ({\n fetchingPromise: undefined as Promise<T> | undefined,\n }),\n [key]\n );\n const fetcher = React.useMemo(\n () => () => {\n // If we are in this function, that means SWR cache missed.\n\n if (fetchingData.fetchingPromise) {\n // Fetch is already underway from this hook\n return fetchingData.fetchingPromise;\n }\n\n if (key && PRE_FETCHES.has(key)) {\n // Some other usePlasmicDataOp() hook elsewhere has already\n // started this fetch as well; re-use it here.\n const existing = PRE_FETCHES.get(key) as Promise<T>;\n fetchingData.fetchingPromise = existing;\n return existing;\n }\n\n // Else we really need to kick off this fetch now...\n const fetcherFn = () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n executePlasmicDataOp<T>(dataOp!, {\n userAuthToken: ctx?.userAuthToken || undefined,\n user: ctx?.user,\n paginate: opts?.paginate,\n });\n const fetcherPromise = fetcherFn();\n fetchingData.fetchingPromise = fetcherPromise;\n if (key) {\n PRE_FETCHES.set(key, fetcherPromise);\n // Once we have a result, we rely on swr to perform the caching,\n // so remove from our cache as quickly as possible.\n fetcherPromise.then(\n () => {\n PRE_FETCHES.delete(key);\n },\n () => {\n PRE_FETCHES.delete(key);\n }\n );\n }\n return fetcherPromise;\n },\n [key, fetchingData]\n );\n const fetchAndUpdateCache = React.useMemo(\n () => () => {\n // This function is called when the undefined data proxy is invoked.\n // USUALLY, this means the data is not available in SWR yet, and\n // we need to kick off a fetch.\n if (fetchingData.fetchingPromise) {\n // No need to update cache as the exist promise call site will do it\n return fetchingData.fetchingPromise;\n }\n\n // SOMETIMES, SWR actually _does_ have the cache, but we still end up\n // here. That's because of how we update $queries, which takes two\n // cycles; each time we render, we build a `new$Queries`, and\n // `set$Queries(new$Queries)`. So once the data is ready, at the\n // first render, we will have data in `new$Queries` but not `$queries`,\n // but we will still finish rendering that pass, which means any `$queries`\n // access will still end up here. So we look into the SWR cache and\n // return any data that's here.\n const cached = cache.get(key);\n if (cached) {\n return Promise.resolve(cached);\n }\n const cachedError = cache.get(`$swr$${key}`);\n if (cachedError) {\n return Promise.reject(cachedError.error);\n }\n const fetcherPromise = fetcher();\n fetcherPromise\n .then((data) => mutate(key, data))\n .catch((err) => {\n // Cache the error here to avoid infinite loop\n const keyInfo = key ? '$swr$' + key : '';\n cache.set(keyInfo, { ...(cache.get(keyInfo) ?? {}), error: err });\n });\n return fetchingData.fetchingPromise!;\n },\n [fetcher, fetchingData, cache, key]\n );\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n });\n const { data, error, isLoading } = res;\n if (fetchingData.fetchingPromise != null && data !== undefined) {\n // Clear the fetching promise as the actual data is now used (so\n // revalidation is possible)\n fetchingData.fetchingPromise = undefined;\n }\n return React.useMemo(() => {\n const result = {\n ...(data ?? ({} as Partial<T>)),\n ...pick(res, 'isLoading', 'error'),\n };\n if (\n !opts?.noUndefinedDataProxy &&\n reactMajorVersion >= 18 &&\n enableLoadingBoundary &&\n (isLoading || isNullDataOp) &&\n result.data === undefined &&\n result.schema === undefined &&\n result.error === undefined\n ) {\n result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n }\n return result;\n }, [\n isNullDataOp,\n data,\n error,\n isLoading,\n opts?.noUndefinedDataProxy,\n enableLoadingBoundary,\n fetchingData,\n fetchAndUpdateCache,\n ]);\n}\n\nexport function usePlasmicDataMutationOp<\n T extends SingleRowResult | ManyRowsResult\n>(dataOp: DataOp | undefined) {\n const { sourceId, opId, userArgs } = dataOp ?? {};\n const ctx = usePlasmicDataSourceContext();\n const userToken = ctx?.userAuthToken;\n return React.useCallback(async () => {\n if (!sourceId || !opId) {\n return undefined;\n }\n return executePlasmicDataOp<T>(\n { sourceId, opId, userArgs },\n {\n userAuthToken: userToken || undefined,\n user: ctx?.user,\n }\n );\n }, [sourceId, opId, userArgs, userToken]);\n}\n","export function swallow<T>(f: () => T): T | undefined {\n try {\n return f();\n } catch {\n return undefined;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Pick<T, K> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res;\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error('Expected non-null or non-undefined value');\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) return undefined;\n return f(x);\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === 'string'\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | '' | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n","import {\n ManyRowsResult,\n TableFieldSchema,\n TableFieldType,\n TableSchema,\n} from './types';\nimport { mkIdMap, withoutNils } from './utils';\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface NormalizedData {\n data: Record<string, unknown>[];\n schema?: TableSchema;\n}\n\nexport function normalizeData(rawData: unknown): NormalizedData | undefined {\n if (!rawData) {\n return undefined;\n }\n\n const dataArray = tryGetDataArray(rawData);\n if (!dataArray) {\n return undefined;\n }\n const schema = (rawData as any).schema ?? tryGetSchema(dataArray);\n if (!schema) {\n return undefined;\n }\n return { data: dataArray, schema };\n}\n\nfunction tryGetDataArray(rawData: unknown): any[] | undefined {\n if (rawData == null || typeof rawData !== 'object') {\n return undefined;\n }\n\n if (Array.isArray(rawData)) {\n if (isArrayOfObjects(rawData)) {\n return rawData;\n } else {\n // TODO: array of primitives? Maybe we can wrap this?\n return undefined;\n }\n }\n\n if (rawData == null) {\n return undefined;\n }\n\n if ('data' in rawData && typeof (rawData as any).data === 'object') {\n if (\n Array.isArray((rawData as any).data) &&\n isArrayOfObjects((rawData as any).data)\n ) {\n return (rawData as any).data;\n } else if ((rawData as any).data != null) {\n return [(rawData as any).data];\n } else {\n return undefined;\n }\n }\n if ('isLoading' in rawData || 'error' in rawData) {\n return undefined;\n }\n\n // Maybe a singleton record?\n return [rawData];\n}\n\nfunction isArrayOfObjects(arr: unknown[]) {\n return arr.every((x) => typeof x === 'object' && !Array.isArray(x));\n}\n\nfunction tryGetSchema(data: any[]): TableSchema | undefined {\n const fieldMap: Record<string, TableFieldType> = {};\n data.forEach((entry: any) => {\n if (entry && typeof entry === 'object') {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === 'string'\n ? 'string'\n : typeof v === 'boolean'\n ? 'boolean'\n : typeof v === 'number'\n ? 'number'\n : 'unknown';\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = 'unknown';\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: 'inferred',\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport type BaseFieldConfig = {\n key?: string;\n fieldId?: string;\n};\n\nconst mkShortId = () => `${Math.random()}`;\n\nexport function deriveFieldConfigs<T extends BaseFieldConfig>(\n specifiedFieldsPartial: Partial<T>[],\n schema: TableSchema | undefined,\n makeDefaultConfig: (field: TableFieldSchema | undefined) => T\n): {\n mergedFields: T[];\n minimalFullLengthFields: Partial<T>[];\n} {\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap((f): T[] => {\n if (!f.fieldId) {\n return [\n { key: mkShortId(), ...makeDefaultConfig(undefined), ...f },\n ] as T[];\n }\n const field = fieldById.get(f.fieldId as string);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n key: mkShortId(),\n ...makeDefaultConfig(field),\n ...f,\n },\n ] as T[];\n });\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): T => ({\n key: mkShortId(),\n ...makeDefaultConfig(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: Partial<T>[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ] as Partial<T>[];\n return { mergedFields, minimalFullLengthFields };\n}\n","import { ComponentMeta } from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp } from '../executor';\nimport { usePlasmicDataOp } from '../hooks/usePlasmicDataOp';\n\nexport interface DataOpConfig {\n name?: string;\n pageIndex?: number;\n pageSize?: number;\n}\n\nexport interface FetcherProps extends DataOpConfig {\n dataOp?: DataOp;\n children?: ($queries: Record<string, any>) => React.ReactElement | null;\n queries?: Record<string, any>;\n}\n\nexport function Fetcher(props: FetcherProps): React.ReactElement | null {\n const { dataOp, children, name, pageIndex, pageSize } = props;\n const data = usePlasmicDataOp(dataOp, {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n\n const $queries = React.useMemo(\n () => ({ ...props.queries, [name ?? 'data']: data }),\n [props.queries, name, data]\n );\n\n return children?.($queries) ?? null;\n}\n\nexport const FetcherMeta: ComponentMeta<FetcherProps> = {\n name: 'plasmic-data-source-fetcher',\n displayName: 'Data Fetcher',\n props: {\n dataOp: {\n type: 'dataSourceOp' as any,\n displayName: 'Data',\n },\n name: {\n type: 'string',\n displayName: 'Variable name',\n },\n children: {\n type: 'slot',\n renderPropParams: ['$queries'],\n },\n pageSize: {\n type: 'number',\n advanced: true,\n displayName: 'Page size',\n description: 'Only fetch in batches of this size; for pagination',\n },\n pageIndex: {\n type: 'number',\n advanced: true,\n displayName: 'Page index',\n description: '0-based index of the paginated page to fetch',\n },\n },\n importPath: '@plasmicapp/react-web/lib/data-sources',\n importName: 'Fetcher',\n alwaysAutoName: true,\n styleSections: false,\n};\n","import React from 'react';\nimport { DataOpConfig } from '../components/Fetcher';\nimport { DataOp } from '../executor';\nimport { swallow } from '../utils';\nimport { usePlasmicDataOp } from './usePlasmicDataOp';\n\nfunction usePrevious<T>(value: T | undefined): T | undefined {\n const prevValue = React.useRef<T | undefined>(undefined);\n\n React.useEffect(() => {\n prevValue.current = value;\n\n return () => {\n prevValue.current = undefined;\n };\n });\n\n return prevValue.current;\n}\n\nexport interface DependencyAwareQueryConfig extends DataOpConfig {\n $queries: Record<string, any>;\n setDollarQueries: ($queries: Record<string, any>) => void;\n getDataOp: () => DataOp;\n}\n\n/**\n * @deprecated Prefer using `usePlasmicDataOp` directly instead.\n */\nexport function useDependencyAwareQuery({\n $queries,\n getDataOp,\n setDollarQueries,\n name,\n pageIndex,\n pageSize,\n}: DependencyAwareQueryConfig) {\n const data = usePlasmicDataOp(swallow(getDataOp), {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n const finalName = name ?? 'data';\n const prevName = usePrevious(finalName);\n React.useEffect(() => {\n if (!(finalName in $queries) || $queries[finalName] !== data) {\n const $queries2 = {\n ...$queries,\n [finalName]: data,\n };\n if (prevName && finalName !== prevName && prevName in $queries) {\n delete $queries2[prevName];\n }\n setDollarQueries($queries2);\n }\n }, [finalName, prevName, data, $queries, setDollarQueries]);\n}\n"],"names":["UNAUTHORIZED_MESSAGE","executePlasmicDataOp","_x","_x2","_executePlasmicDataOp2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","op","opts","func","wrap","_context","prev","next","getConfig","_executePlasmicDataOp","wrapLoadingFetcher","abrupt","sent","stop","apply","arguments","_x3","_x4","_executePlasmicDataOp3","_callee2","_op$userArgs","host","url","resp","_context2","roleId","user","roleIds","includes","console","error","Error","sourceId","fetch","method","headers","_extends","Content-Type","userAuthToken","x-plasmic-data-user-auth-token","body","stringify","opId","userArgs","paginate","status","text","json","key","defaultValue","globalThis","_globalThis$key","makeCacheKey","dataOp","queryDependencies","JSON","args","cacheKey","mkUndefinedDataProxy","promiseRef","fetchAndUpdateCache","Proxy","get","_target","prop","promise","fetchingPromise","plasmicType","message","String","reactMajorVersion","React","version","split","PRE_FETCHES","Map","usePlasmicDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","fetchingData","useMemo","undefined","fetcher","has","existing","fetcherPromise","set","then","cached","Promise","resolve","cachedError","reject","data","err","keyInfo","_cache$get","res","useMutablePlasmicQueryData","shouldRetryOnError","isLoading","result","obj","_len","length","keys","Array","_key","_i","_keys","pick","noUndefinedDataProxy","schema","isArrayOfObjects","arr","every","x","isArray","mkShortId","Math","random","props","children","name","pageIndex","pageSize","$queries","_extends2","queries","_children","displayName","type","renderPropParams","advanced","description","importPath","importName","alwaysAutoName","styleSections","specifiedFieldsPartial","makeDefaultConfig","schemaFields","_schema$fields","fields","fieldById","map","_len2","_key2","tuple","id","specifiedFieldIds","Set","f","fieldId","filter","keptSpecifiedFields","flatMap","field","newVirtualFields","mergedFields","concat","minimalFullLengthFields","rawData","dataArray","tryGetDataArray","fieldMap","_rawData$schema","forEach","entry","from","Object","entries","_ref","k","v","inferredType","_ref2","readOnly","value","prevValue","setDollarQueries","_unused","swallow","getDataOp","finalName","prevName","useRef","useEffect","current","$queries2","userToken","useCallback"],"mappings":"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"}
|
package/dist/data-sources.esm.js
CHANGED
|
@@ -502,6 +502,18 @@ function mkUndefinedDataProxy(promiseRef, fetchAndUpdateCache) {
|
|
|
502
502
|
});
|
|
503
503
|
}
|
|
504
504
|
var reactMajorVersion = + /*#__PURE__*/React.version.split('.')[0];
|
|
505
|
+
/**
|
|
506
|
+
* Fetches can be kicked off two ways -- normally, by useSWR(), or by some
|
|
507
|
+
* expression accessing the `$queries.*` proxy when not ready yet. We need
|
|
508
|
+
* a global cache for proxy-invoked caches, so that different components
|
|
509
|
+
* with the same key can share the same fetch.
|
|
510
|
+
*
|
|
511
|
+
* The life cycle for this cache is short -- only the duration of a
|
|
512
|
+
* proxy-invoked fetch, and once the fetch is done. That's because we really
|
|
513
|
+
* just want SWR to be managing the cache, not us! Once the data is in SWR,
|
|
514
|
+
* we will use SWR for getting data.
|
|
515
|
+
*/
|
|
516
|
+
var PRE_FETCHES = /*#__PURE__*/new Map();
|
|
505
517
|
function usePlasmicDataOp(dataOp, opts) {
|
|
506
518
|
var _ph$useDataEnv;
|
|
507
519
|
var ctx = usePlasmicDataSourceContext();
|
|
@@ -521,9 +533,19 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
521
533
|
}, [key]);
|
|
522
534
|
var fetcher = React.useMemo(function () {
|
|
523
535
|
return function () {
|
|
536
|
+
// If we are in this function, that means SWR cache missed.
|
|
524
537
|
if (fetchingData.fetchingPromise) {
|
|
538
|
+
// Fetch is already underway from this hook
|
|
525
539
|
return fetchingData.fetchingPromise;
|
|
526
540
|
}
|
|
541
|
+
if (key && PRE_FETCHES.has(key)) {
|
|
542
|
+
// Some other usePlasmicDataOp() hook elsewhere has already
|
|
543
|
+
// started this fetch as well; re-use it here.
|
|
544
|
+
var existing = PRE_FETCHES.get(key);
|
|
545
|
+
fetchingData.fetchingPromise = existing;
|
|
546
|
+
return existing;
|
|
547
|
+
}
|
|
548
|
+
// Else we really need to kick off this fetch now...
|
|
527
549
|
var fetcherFn = function fetcherFn() {
|
|
528
550
|
return (
|
|
529
551
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -536,15 +558,44 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
536
558
|
};
|
|
537
559
|
var fetcherPromise = fetcherFn();
|
|
538
560
|
fetchingData.fetchingPromise = fetcherPromise;
|
|
561
|
+
if (key) {
|
|
562
|
+
PRE_FETCHES.set(key, fetcherPromise);
|
|
563
|
+
// Once we have a result, we rely on swr to perform the caching,
|
|
564
|
+
// so remove from our cache as quickly as possible.
|
|
565
|
+
fetcherPromise.then(function () {
|
|
566
|
+
PRE_FETCHES["delete"](key);
|
|
567
|
+
}, function () {
|
|
568
|
+
PRE_FETCHES["delete"](key);
|
|
569
|
+
});
|
|
570
|
+
}
|
|
539
571
|
return fetcherPromise;
|
|
540
572
|
};
|
|
541
573
|
}, [key, fetchingData]);
|
|
542
574
|
var fetchAndUpdateCache = React.useMemo(function () {
|
|
543
575
|
return function () {
|
|
576
|
+
// This function is called when the undefined data proxy is invoked.
|
|
577
|
+
// USUALLY, this means the data is not available in SWR yet, and
|
|
578
|
+
// we need to kick off a fetch.
|
|
544
579
|
if (fetchingData.fetchingPromise) {
|
|
545
580
|
// No need to update cache as the exist promise call site will do it
|
|
546
581
|
return fetchingData.fetchingPromise;
|
|
547
582
|
}
|
|
583
|
+
// SOMETIMES, SWR actually _does_ have the cache, but we still end up
|
|
584
|
+
// here. That's because of how we update $queries, which takes two
|
|
585
|
+
// cycles; each time we render, we build a `new$Queries`, and
|
|
586
|
+
// `set$Queries(new$Queries)`. So once the data is ready, at the
|
|
587
|
+
// first render, we will have data in `new$Queries` but not `$queries`,
|
|
588
|
+
// but we will still finish rendering that pass, which means any `$queries`
|
|
589
|
+
// access will still end up here. So we look into the SWR cache and
|
|
590
|
+
// return any data that's here.
|
|
591
|
+
var cached = cache.get(key);
|
|
592
|
+
if (cached) {
|
|
593
|
+
return Promise.resolve(cached);
|
|
594
|
+
}
|
|
595
|
+
var cachedError = cache.get("$swr$" + key);
|
|
596
|
+
if (cachedError) {
|
|
597
|
+
return Promise.reject(cachedError.error);
|
|
598
|
+
}
|
|
548
599
|
var fetcherPromise = fetcher();
|
|
549
600
|
fetcherPromise.then(function (data) {
|
|
550
601
|
return mutate(key, data);
|
|
@@ -556,7 +607,7 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
556
607
|
error: err
|
|
557
608
|
}));
|
|
558
609
|
});
|
|
559
|
-
return
|
|
610
|
+
return fetchingData.fetchingPromise;
|
|
560
611
|
};
|
|
561
612
|
}, [fetcher, fetchingData, cache, key]);
|
|
562
613
|
var res = useMutablePlasmicQueryData(key, fetcher, {
|
|
@@ -572,7 +623,7 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
572
623
|
}
|
|
573
624
|
return React.useMemo(function () {
|
|
574
625
|
var result = _extends({}, data != null ? data : {}, pick(res, 'isLoading', 'error'));
|
|
575
|
-
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp) && result.data === undefined && result.schema === undefined) {
|
|
626
|
+
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp) && result.data === undefined && result.schema === undefined && result.error === undefined) {
|
|
576
627
|
result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
577
628
|
result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
578
629
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-sources.esm.js","sources":["../src/executor.tsx","../src/utils.ts","../src/hooks/usePlasmicDataOp.tsx","../src/components/Fetcher.tsx","../src/hooks/useDependencyAwareQuery.tsx","../src/helpers.ts"],"sourcesContent":["import { PlasmicDataSourceContextValue } from '@plasmicapp/data-sources-context';\nimport fetch from '@plasmicapp/isomorphic-unfetch';\nimport { wrapLoadingFetcher } from '@plasmicapp/query';\nimport stringify from 'fast-stringify';\nimport { ManyRowsResult, Pagination, SingleRowResult } from './types';\n\nconst DEFAULT_HOST = 'https://data.plasmic.app';\n\nexport interface DataOp {\n sourceId: string;\n opId: string;\n userArgs?: Record<string, any>;\n cacheKey?: string;\n invalidatedKeys?: string[] | null;\n roleId?: string | null;\n}\n\ninterface ExecuteOpts {\n userAuthToken?: string;\n user?: PlasmicDataSourceContextValue['user'];\n paginate?: Pagination;\n}\n\nconst UNAUTHORIZED_MESSAGE =\n 'You do not have permission to perform this operation. Login to get access or contact the app owner to get access.';\n\nexport async function executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n const func = getConfig(\n '__PLASMIC_EXECUTE_DATA_OP',\n _executePlasmicDataOp\n ) as typeof _executePlasmicDataOp;\n const res = await wrapLoadingFetcher(func)(op, opts);\n return res as T;\n}\n\nasync function _executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n if (op.roleId) {\n if (!opts?.user || !opts.user.roleIds.includes(op.roleId)) {\n console.error(UNAUTHORIZED_MESSAGE);\n throw new Error(UNAUTHORIZED_MESSAGE);\n }\n }\n\n const host = getConfig('__PLASMIC_DATA_HOST', DEFAULT_HOST);\n\n const url = `${host}/api/v1/server-data/sources/${op.sourceId}/execute`;\n const resp = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(opts?.userAuthToken && {\n 'x-plasmic-data-user-auth-token': opts.userAuthToken,\n }),\n },\n body: stringify({\n opId: op.opId,\n userArgs: op.userArgs ?? {},\n paginate: opts?.paginate,\n }),\n });\n if (resp.status !== 200) {\n const text = await resp.text();\n throw new Error(text);\n }\n return (await resp.json()) as T;\n}\n\nfunction getConfig<T>(key: string, defaultValue: T) {\n if (typeof globalThis === 'undefined') {\n return defaultValue;\n } else {\n return (globalThis as any)[key] ?? defaultValue;\n }\n}\n","export function swallow<T>(f: () => T): T | undefined {\n try {\n return f();\n } catch {\n return undefined;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Pick<T, K> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res;\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error('Expected non-null or non-undefined value');\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) return undefined;\n return f(x);\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === 'string'\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | '' | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n","import { usePlasmicDataSourceContext } from '@plasmicapp/data-sources-context';\nimport * as ph from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp, executePlasmicDataOp } from '../executor';\nimport { ManyRowsResult, Pagination, SingleRowResult } from '../types';\nimport { pick } from '../utils';\nimport {\n useMutablePlasmicQueryData,\n usePlasmicDataConfig,\n} from '@plasmicapp/query';\n\nexport function makeCacheKey(\n dataOp: DataOp,\n opts?: { paginate?: Pagination; userAuthToken?: string | null }\n) {\n const queryDependencies = JSON.stringify({\n sourceId: dataOp.sourceId,\n opId: dataOp.opId,\n args: dataOp.userArgs,\n userAuthToken: opts?.userAuthToken,\n paginate: opts?.paginate,\n });\n return dataOp.cacheKey\n ? `${dataOp.cacheKey}${queryDependencies}`\n : queryDependencies;\n}\n\nconst enableLoadingBoundaryKey = 'plasmicInternalEnableLoadingBoundary';\n\nfunction mkUndefinedDataProxy(\n promiseRef: { fetchingPromise: Promise<any> | undefined },\n fetchAndUpdateCache: () => Promise<any>\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n const promise = promiseRef.fetchingPromise || fetchAndUpdateCache();\n (promise as any).plasmicType = 'PlasmicUndefinedDataError';\n (promise as any).message = `Cannot read property ${String(\n prop\n )} - data is still loading`;\n throw promise;\n },\n }\n ) as any;\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\nexport function usePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult,\n E = any\n>(\n dataOp: DataOp | undefined,\n opts?: {\n paginate?: Pagination;\n noUndefinedDataProxy?: boolean;\n }\n): Partial<T> & {\n error?: E;\n isLoading?: boolean;\n} {\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n const isNullDataOp = !dataOp;\n const key = isNullDataOp\n ? null\n : makeCacheKey(dataOp!, {\n paginate: opts?.paginate,\n userAuthToken: ctx?.userAuthToken,\n });\n const fetchingData = React.useMemo(\n () => ({\n fetchingPromise: undefined as Promise<T> | undefined,\n }),\n [key]\n );\n const fetcher = React.useMemo(\n () => () => {\n if (fetchingData.fetchingPromise) {\n return fetchingData.fetchingPromise;\n }\n const fetcherFn = () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n executePlasmicDataOp<T>(dataOp!, {\n userAuthToken: ctx?.userAuthToken || undefined,\n user: ctx?.user,\n paginate: opts?.paginate,\n });\n const fetcherPromise = fetcherFn();\n fetchingData.fetchingPromise = fetcherPromise;\n return fetcherPromise;\n },\n [key, fetchingData]\n );\n const fetchAndUpdateCache = React.useMemo(\n () => () => {\n if (fetchingData.fetchingPromise) {\n // No need to update cache as the exist promise call site will do it\n return fetchingData.fetchingPromise;\n }\n const fetcherPromise = fetcher();\n fetcherPromise\n .then((data) => mutate(key, data))\n .catch((err) => {\n // Cache the error here to avoid infinite loop\n const keyInfo = key ? '$swr$' + key : '';\n cache.set(keyInfo, { ...(cache.get(keyInfo) ?? {}), error: err });\n });\n return fetcherPromise;\n },\n [fetcher, fetchingData, cache, key]\n );\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n });\n const { data, error, isLoading } = res;\n if (fetchingData.fetchingPromise != null && data !== undefined) {\n // Clear the fetching promise as the actual data is now used (so\n // revalidation is possible)\n fetchingData.fetchingPromise = undefined;\n }\n return React.useMemo(() => {\n const result = {\n ...(data ?? ({} as Partial<T>)),\n ...pick(res, 'isLoading', 'error'),\n };\n if (\n !opts?.noUndefinedDataProxy &&\n reactMajorVersion >= 18 &&\n enableLoadingBoundary &&\n (isLoading || isNullDataOp) &&\n result.data === undefined &&\n result.schema === undefined\n ) {\n result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n }\n return result;\n }, [\n isNullDataOp,\n data,\n error,\n isLoading,\n opts?.noUndefinedDataProxy,\n enableLoadingBoundary,\n fetchingData,\n fetchAndUpdateCache,\n ]);\n}\n\nexport function usePlasmicDataMutationOp<\n T extends SingleRowResult | ManyRowsResult\n>(dataOp: DataOp | undefined) {\n const { sourceId, opId, userArgs } = dataOp ?? {};\n const ctx = usePlasmicDataSourceContext();\n const userToken = ctx?.userAuthToken;\n return React.useCallback(async () => {\n if (!sourceId || !opId) {\n return undefined;\n }\n return executePlasmicDataOp<T>(\n { sourceId, opId, userArgs },\n {\n userAuthToken: userToken || undefined,\n user: ctx?.user,\n }\n );\n }, [sourceId, opId, userArgs, userToken]);\n}\n","import { ComponentMeta } from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp } from '../executor';\nimport { usePlasmicDataOp } from '../hooks/usePlasmicDataOp';\n\nexport interface DataOpConfig {\n name?: string;\n pageIndex?: number;\n pageSize?: number;\n}\n\nexport interface FetcherProps extends DataOpConfig {\n dataOp?: DataOp;\n children?: ($queries: Record<string, any>) => React.ReactElement | null;\n queries?: Record<string, any>;\n}\n\nexport function Fetcher(props: FetcherProps): React.ReactElement | null {\n const { dataOp, children, name, pageIndex, pageSize } = props;\n const data = usePlasmicDataOp(dataOp, {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n\n const $queries = React.useMemo(\n () => ({ ...props.queries, [name ?? 'data']: data }),\n [props.queries, name, data]\n );\n\n return children?.($queries) ?? null;\n}\n\nexport const FetcherMeta: ComponentMeta<FetcherProps> = {\n name: 'plasmic-data-source-fetcher',\n displayName: 'Data Fetcher',\n props: {\n dataOp: {\n type: 'dataSourceOp' as any,\n displayName: 'Data',\n },\n name: {\n type: 'string',\n displayName: 'Variable name',\n },\n children: {\n type: 'slot',\n renderPropParams: ['$queries'],\n },\n pageSize: {\n type: 'number',\n advanced: true,\n displayName: 'Page size',\n description: 'Only fetch in batches of this size; for pagination',\n },\n pageIndex: {\n type: 'number',\n advanced: true,\n displayName: 'Page index',\n description: '0-based index of the paginated page to fetch',\n },\n },\n importPath: '@plasmicapp/react-web/lib/data-sources',\n importName: 'Fetcher',\n alwaysAutoName: true,\n styleSections: false,\n};\n","import React from 'react';\nimport { DataOpConfig } from '../components/Fetcher';\nimport { DataOp } from '../executor';\nimport { swallow } from '../utils';\nimport { usePlasmicDataOp } from './usePlasmicDataOp';\n\nfunction usePrevious<T>(value: T | undefined): T | undefined {\n const prevValue = React.useRef<T | undefined>(undefined);\n\n React.useEffect(() => {\n prevValue.current = value;\n\n return () => {\n prevValue.current = undefined;\n };\n });\n\n return prevValue.current;\n}\n\nexport interface DependencyAwareQueryConfig extends DataOpConfig {\n $queries: Record<string, any>;\n setDollarQueries: ($queries: Record<string, any>) => void;\n getDataOp: () => DataOp;\n}\n\n/**\n * @deprecated Prefer using `usePlasmicDataOp` directly instead.\n */\nexport function useDependencyAwareQuery({\n $queries,\n getDataOp,\n setDollarQueries,\n name,\n pageIndex,\n pageSize,\n}: DependencyAwareQueryConfig) {\n const data = usePlasmicDataOp(swallow(getDataOp), {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n const finalName = name ?? 'data';\n const prevName = usePrevious(finalName);\n React.useEffect(() => {\n if (!(finalName in $queries) || $queries[finalName] !== data) {\n const $queries2 = {\n ...$queries,\n [finalName]: data,\n };\n if (prevName && finalName !== prevName && prevName in $queries) {\n delete $queries2[prevName];\n }\n setDollarQueries($queries2);\n }\n }, [finalName, prevName, data, $queries, setDollarQueries]);\n}\n","import {\n ManyRowsResult,\n TableFieldSchema,\n TableFieldType,\n TableSchema,\n} from './types';\nimport { mkIdMap, withoutNils } from './utils';\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface NormalizedData {\n data: Record<string, unknown>[];\n schema?: TableSchema;\n}\n\nexport function normalizeData(rawData: unknown): NormalizedData | undefined {\n if (!rawData) {\n return undefined;\n }\n\n const dataArray = tryGetDataArray(rawData);\n if (!dataArray) {\n return undefined;\n }\n const schema = (rawData as any).schema ?? tryGetSchema(dataArray);\n if (!schema) {\n return undefined;\n }\n return { data: dataArray, schema };\n}\n\nfunction tryGetDataArray(rawData: unknown): any[] | undefined {\n if (rawData == null || typeof rawData !== 'object') {\n return undefined;\n }\n\n if (Array.isArray(rawData)) {\n if (isArrayOfObjects(rawData)) {\n return rawData;\n } else {\n // TODO: array of primitives? Maybe we can wrap this?\n return undefined;\n }\n }\n\n if (rawData == null) {\n return undefined;\n }\n\n if ('data' in rawData && typeof (rawData as any).data === 'object') {\n if (\n Array.isArray((rawData as any).data) &&\n isArrayOfObjects((rawData as any).data)\n ) {\n return (rawData as any).data;\n } else if ((rawData as any).data != null) {\n return [(rawData as any).data];\n } else {\n return undefined;\n }\n }\n if ('isLoading' in rawData || 'error' in rawData) {\n return undefined;\n }\n\n // Maybe a singleton record?\n return [rawData];\n}\n\nfunction isArrayOfObjects(arr: unknown[]) {\n return arr.every((x) => typeof x === 'object' && !Array.isArray(x));\n}\n\nfunction tryGetSchema(data: any[]): TableSchema | undefined {\n const fieldMap: Record<string, TableFieldType> = {};\n data.forEach((entry: any) => {\n if (entry && typeof entry === 'object') {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === 'string'\n ? 'string'\n : typeof v === 'boolean'\n ? 'boolean'\n : typeof v === 'number'\n ? 'number'\n : 'unknown';\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = 'unknown';\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: 'inferred',\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport type BaseFieldConfig = {\n key?: string;\n fieldId?: string;\n};\n\nconst mkShortId = () => `${Math.random()}`;\n\nexport function deriveFieldConfigs<T extends BaseFieldConfig>(\n specifiedFieldsPartial: Partial<T>[],\n schema: TableSchema | undefined,\n makeDefaultConfig: (field: TableFieldSchema | undefined) => T\n): {\n mergedFields: T[];\n minimalFullLengthFields: Partial<T>[];\n} {\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap((f): T[] => {\n if (!f.fieldId) {\n return [\n { key: mkShortId(), ...makeDefaultConfig(undefined), ...f },\n ] as T[];\n }\n const field = fieldById.get(f.fieldId as string);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n key: mkShortId(),\n ...makeDefaultConfig(field),\n ...f,\n },\n ] as T[];\n });\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): T => ({\n key: mkShortId(),\n ...makeDefaultConfig(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: Partial<T>[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ] as Partial<T>[];\n return { mergedFields, minimalFullLengthFields };\n}\n"],"names":["DEFAULT_HOST","UNAUTHORIZED_MESSAGE","executePlasmicDataOp","_x","_x2","_executePlasmicDataOp2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","op","opts","func","res","wrap","_callee$","_context","prev","next","getConfig","_executePlasmicDataOp","wrapLoadingFetcher","sent","abrupt","stop","apply","arguments","_x3","_x4","_executePlasmicDataOp3","_callee2","_op$userArgs","host","url","resp","text","_callee2$","_context2","roleId","user","roleIds","includes","console","error","Error","sourceId","fetch","method","headers","_extends","userAuthToken","body","stringify","opId","userArgs","paginate","status","json","key","defaultValue","globalThis","_globalThis$key","swallow","f","_unused","undefined","pick","obj","_len","length","keys","Array","_key","_i","_keys","tuple","_len2","args","_key2","mkIdMap","xs","Map","map","x","id","withoutNils","filter","makeCacheKey","dataOp","queryDependencies","JSON","cacheKey","enableLoadingBoundaryKey","mkUndefinedDataProxy","promiseRef","fetchAndUpdateCache","Proxy","get","_target","prop","promise","fetchingPromise","plasmicType","message","String","reactMajorVersion","React","version","split","usePlasmicDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","fetchingData","useMemo","fetcher","fetcherFn","fetcherPromise","then","data","err","keyInfo","set","_cache$get","useMutablePlasmicQueryData","shouldRetryOnError","isLoading","result","noUndefinedDataProxy","schema","usePlasmicDataMutationOp","_ref","userToken","useCallback","Fetcher","props","children","name","pageIndex","pageSize","$queries","_extends2","queries","_children","FetcherMeta","displayName","type","renderPropParams","advanced","description","importPath","importName","alwaysAutoName","styleSections","usePrevious","value","prevValue","useRef","useEffect","current","useDependencyAwareQuery","getDataOp","setDollarQueries","finalName","prevName","$queries2","normalizeData","rawData","dataArray","tryGetDataArray","_rawData$schema","tryGetSchema","isArray","isArrayOfObjects","arr","every","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","fields","_ref2","t","readOnly","mkShortId","Math","random","deriveFieldConfigs","specifiedFieldsPartial","makeDefaultConfig","schemaFields","_schema$fields","fieldById","specifiedFieldIds","Set","fieldId","keptSpecifiedFields","flatMap","field","newVirtualFields","has","mergedFields","concat","minimalFullLengthFields"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-sources.esm.js","sources":["../src/executor.tsx","../src/utils.ts","../src/hooks/usePlasmicDataOp.tsx","../src/components/Fetcher.tsx","../src/hooks/useDependencyAwareQuery.tsx","../src/helpers.ts"],"sourcesContent":["import { PlasmicDataSourceContextValue } from '@plasmicapp/data-sources-context';\nimport fetch from '@plasmicapp/isomorphic-unfetch';\nimport { wrapLoadingFetcher } from '@plasmicapp/query';\nimport stringify from 'fast-stringify';\nimport { ManyRowsResult, Pagination, SingleRowResult } from './types';\n\nconst DEFAULT_HOST = 'https://data.plasmic.app';\n\nexport interface DataOp {\n sourceId: string;\n opId: string;\n userArgs?: Record<string, any>;\n cacheKey?: string;\n invalidatedKeys?: string[] | null;\n roleId?: string | null;\n}\n\ninterface ExecuteOpts {\n userAuthToken?: string;\n user?: PlasmicDataSourceContextValue['user'];\n paginate?: Pagination;\n}\n\nconst UNAUTHORIZED_MESSAGE =\n 'You do not have permission to perform this operation. Login to get access or contact the app owner to get access.';\n\nexport async function executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n const func = getConfig(\n '__PLASMIC_EXECUTE_DATA_OP',\n _executePlasmicDataOp\n ) as typeof _executePlasmicDataOp;\n const res = await wrapLoadingFetcher(func)(op, opts);\n return res as T;\n}\n\nasync function _executePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult\n>(op: DataOp, opts?: ExecuteOpts) {\n if (op.roleId) {\n if (!opts?.user || !opts.user.roleIds.includes(op.roleId)) {\n console.error(UNAUTHORIZED_MESSAGE);\n throw new Error(UNAUTHORIZED_MESSAGE);\n }\n }\n\n const host = getConfig('__PLASMIC_DATA_HOST', DEFAULT_HOST);\n\n const url = `${host}/api/v1/server-data/sources/${op.sourceId}/execute`;\n const resp = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(opts?.userAuthToken && {\n 'x-plasmic-data-user-auth-token': opts.userAuthToken,\n }),\n },\n body: stringify({\n opId: op.opId,\n userArgs: op.userArgs ?? {},\n paginate: opts?.paginate,\n }),\n });\n if (resp.status !== 200) {\n const text = await resp.text();\n throw new Error(text);\n }\n return (await resp.json()) as T;\n}\n\nfunction getConfig<T>(key: string, defaultValue: T) {\n if (typeof globalThis === 'undefined') {\n return defaultValue;\n } else {\n return (globalThis as any)[key] ?? defaultValue;\n }\n}\n","export function swallow<T>(f: () => T): T | undefined {\n try {\n return f();\n } catch {\n return undefined;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Pick<T, K> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res;\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n\nexport function ensureNumber(x: number | string): number {\n return x as number;\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n throw new Error('Expected non-null or non-undefined value');\n }\n return x;\n}\n\nexport function isOneOf<T, U extends T>(elem: T, arr: readonly U[]): elem is U {\n return arr.includes(elem as any);\n}\n\nexport function maybe<T, U>(\n x: T | undefined | null,\n f: (y: T) => U\n): U | undefined {\n if (x === undefined || x === null) return undefined;\n return f(x);\n}\n\nexport function isLikeImage(value: unknown) {\n return typeof value === 'string'\n ? value.match(/\\.(png|jpg|jpeg|gif|svg|webp|avif|ico|bmp|tiff)$/i)\n : false;\n}\n\nexport function ensureArray<T>(xs: T | T[]): T[] {\n return Array.isArray(xs) ? xs : [xs];\n}\n\nexport const tuple = <T extends any[]>(...args: T): T => args;\n\nexport interface HasId {\n id: string;\n}\n\nexport function mkIdMap<T extends HasId>(xs: ReadonlyArray<T>): Map<string, T> {\n return new Map(xs.map((x) => tuple(x.id, x) as [string, T]));\n}\n\nexport const mkShortId = () => `${Math.random()}`;\n\nexport function withoutNils<T>(xs: Array<T | undefined | null>): T[] {\n return xs.filter((x): x is T => x != null);\n}\n\nexport type Falsey = null | undefined | false | '' | 0 | 0n;\nexport type Truthy<T> = T extends Falsey ? never : T;\n\nexport function withoutFalsey<T>(xs: Array<T | Falsey>): T[] {\n return xs.filter((x): x is T => !!x);\n}\n","import { usePlasmicDataSourceContext } from '@plasmicapp/data-sources-context';\n// eslint-disable-next-line no-restricted-imports\nimport * as ph from '@plasmicapp/host';\nimport {\n useMutablePlasmicQueryData,\n usePlasmicDataConfig,\n} from '@plasmicapp/query';\nimport React from 'react';\nimport { DataOp, executePlasmicDataOp } from '../executor';\nimport { ManyRowsResult, Pagination, SingleRowResult } from '../types';\nimport { pick } from '../utils';\n\nexport function makeCacheKey(\n dataOp: DataOp,\n opts?: { paginate?: Pagination; userAuthToken?: string | null }\n) {\n const queryDependencies = JSON.stringify({\n sourceId: dataOp.sourceId,\n opId: dataOp.opId,\n args: dataOp.userArgs,\n userAuthToken: opts?.userAuthToken,\n paginate: opts?.paginate,\n });\n return dataOp.cacheKey\n ? `${dataOp.cacheKey}${queryDependencies}`\n : queryDependencies;\n}\n\nconst enableLoadingBoundaryKey = 'plasmicInternalEnableLoadingBoundary';\n\nfunction mkUndefinedDataProxy(\n promiseRef: { fetchingPromise: Promise<any> | undefined },\n fetchAndUpdateCache: () => Promise<any>\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n const promise = promiseRef.fetchingPromise || fetchAndUpdateCache();\n (promise as any).plasmicType = 'PlasmicUndefinedDataError';\n (promise as any).message = `Cannot read property ${String(\n prop\n )} - data is still loading`;\n throw promise;\n },\n }\n ) as any;\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\n/**\n * Fetches can be kicked off two ways -- normally, by useSWR(), or by some\n * expression accessing the `$queries.*` proxy when not ready yet. We need\n * a global cache for proxy-invoked caches, so that different components\n * with the same key can share the same fetch.\n *\n * The life cycle for this cache is short -- only the duration of a\n * proxy-invoked fetch, and once the fetch is done. That's because we really\n * just want SWR to be managing the cache, not us! Once the data is in SWR,\n * we will use SWR for getting data.\n */\nconst PRE_FETCHES = new Map<string, Promise<any>>();\n\nexport function usePlasmicDataOp<\n T extends SingleRowResult | ManyRowsResult,\n E = any\n>(\n dataOp: DataOp | undefined,\n opts?: {\n paginate?: Pagination;\n noUndefinedDataProxy?: boolean;\n }\n): Partial<T> & {\n error?: E;\n isLoading?: boolean;\n} {\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n const isNullDataOp = !dataOp;\n const key = isNullDataOp\n ? null\n : makeCacheKey(dataOp!, {\n paginate: opts?.paginate,\n userAuthToken: ctx?.userAuthToken,\n });\n const fetchingData = React.useMemo(\n () => ({\n fetchingPromise: undefined as Promise<T> | undefined,\n }),\n [key]\n );\n const fetcher = React.useMemo(\n () => () => {\n // If we are in this function, that means SWR cache missed.\n\n if (fetchingData.fetchingPromise) {\n // Fetch is already underway from this hook\n return fetchingData.fetchingPromise;\n }\n\n if (key && PRE_FETCHES.has(key)) {\n // Some other usePlasmicDataOp() hook elsewhere has already\n // started this fetch as well; re-use it here.\n const existing = PRE_FETCHES.get(key) as Promise<T>;\n fetchingData.fetchingPromise = existing;\n return existing;\n }\n\n // Else we really need to kick off this fetch now...\n const fetcherFn = () =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n executePlasmicDataOp<T>(dataOp!, {\n userAuthToken: ctx?.userAuthToken || undefined,\n user: ctx?.user,\n paginate: opts?.paginate,\n });\n const fetcherPromise = fetcherFn();\n fetchingData.fetchingPromise = fetcherPromise;\n if (key) {\n PRE_FETCHES.set(key, fetcherPromise);\n // Once we have a result, we rely on swr to perform the caching,\n // so remove from our cache as quickly as possible.\n fetcherPromise.then(\n () => {\n PRE_FETCHES.delete(key);\n },\n () => {\n PRE_FETCHES.delete(key);\n }\n );\n }\n return fetcherPromise;\n },\n [key, fetchingData]\n );\n const fetchAndUpdateCache = React.useMemo(\n () => () => {\n // This function is called when the undefined data proxy is invoked.\n // USUALLY, this means the data is not available in SWR yet, and\n // we need to kick off a fetch.\n if (fetchingData.fetchingPromise) {\n // No need to update cache as the exist promise call site will do it\n return fetchingData.fetchingPromise;\n }\n\n // SOMETIMES, SWR actually _does_ have the cache, but we still end up\n // here. That's because of how we update $queries, which takes two\n // cycles; each time we render, we build a `new$Queries`, and\n // `set$Queries(new$Queries)`. So once the data is ready, at the\n // first render, we will have data in `new$Queries` but not `$queries`,\n // but we will still finish rendering that pass, which means any `$queries`\n // access will still end up here. So we look into the SWR cache and\n // return any data that's here.\n const cached = cache.get(key);\n if (cached) {\n return Promise.resolve(cached);\n }\n const cachedError = cache.get(`$swr$${key}`);\n if (cachedError) {\n return Promise.reject(cachedError.error);\n }\n const fetcherPromise = fetcher();\n fetcherPromise\n .then((data) => mutate(key, data))\n .catch((err) => {\n // Cache the error here to avoid infinite loop\n const keyInfo = key ? '$swr$' + key : '';\n cache.set(keyInfo, { ...(cache.get(keyInfo) ?? {}), error: err });\n });\n return fetchingData.fetchingPromise!;\n },\n [fetcher, fetchingData, cache, key]\n );\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n });\n const { data, error, isLoading } = res;\n if (fetchingData.fetchingPromise != null && data !== undefined) {\n // Clear the fetching promise as the actual data is now used (so\n // revalidation is possible)\n fetchingData.fetchingPromise = undefined;\n }\n return React.useMemo(() => {\n const result = {\n ...(data ?? ({} as Partial<T>)),\n ...pick(res, 'isLoading', 'error'),\n };\n if (\n !opts?.noUndefinedDataProxy &&\n reactMajorVersion >= 18 &&\n enableLoadingBoundary &&\n (isLoading || isNullDataOp) &&\n result.data === undefined &&\n result.schema === undefined &&\n result.error === undefined\n ) {\n result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);\n }\n return result;\n }, [\n isNullDataOp,\n data,\n error,\n isLoading,\n opts?.noUndefinedDataProxy,\n enableLoadingBoundary,\n fetchingData,\n fetchAndUpdateCache,\n ]);\n}\n\nexport function usePlasmicDataMutationOp<\n T extends SingleRowResult | ManyRowsResult\n>(dataOp: DataOp | undefined) {\n const { sourceId, opId, userArgs } = dataOp ?? {};\n const ctx = usePlasmicDataSourceContext();\n const userToken = ctx?.userAuthToken;\n return React.useCallback(async () => {\n if (!sourceId || !opId) {\n return undefined;\n }\n return executePlasmicDataOp<T>(\n { sourceId, opId, userArgs },\n {\n userAuthToken: userToken || undefined,\n user: ctx?.user,\n }\n );\n }, [sourceId, opId, userArgs, userToken]);\n}\n","import { ComponentMeta } from '@plasmicapp/host';\nimport React from 'react';\nimport { DataOp } from '../executor';\nimport { usePlasmicDataOp } from '../hooks/usePlasmicDataOp';\n\nexport interface DataOpConfig {\n name?: string;\n pageIndex?: number;\n pageSize?: number;\n}\n\nexport interface FetcherProps extends DataOpConfig {\n dataOp?: DataOp;\n children?: ($queries: Record<string, any>) => React.ReactElement | null;\n queries?: Record<string, any>;\n}\n\nexport function Fetcher(props: FetcherProps): React.ReactElement | null {\n const { dataOp, children, name, pageIndex, pageSize } = props;\n const data = usePlasmicDataOp(dataOp, {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n\n const $queries = React.useMemo(\n () => ({ ...props.queries, [name ?? 'data']: data }),\n [props.queries, name, data]\n );\n\n return children?.($queries) ?? null;\n}\n\nexport const FetcherMeta: ComponentMeta<FetcherProps> = {\n name: 'plasmic-data-source-fetcher',\n displayName: 'Data Fetcher',\n props: {\n dataOp: {\n type: 'dataSourceOp' as any,\n displayName: 'Data',\n },\n name: {\n type: 'string',\n displayName: 'Variable name',\n },\n children: {\n type: 'slot',\n renderPropParams: ['$queries'],\n },\n pageSize: {\n type: 'number',\n advanced: true,\n displayName: 'Page size',\n description: 'Only fetch in batches of this size; for pagination',\n },\n pageIndex: {\n type: 'number',\n advanced: true,\n displayName: 'Page index',\n description: '0-based index of the paginated page to fetch',\n },\n },\n importPath: '@plasmicapp/react-web/lib/data-sources',\n importName: 'Fetcher',\n alwaysAutoName: true,\n styleSections: false,\n};\n","import React from 'react';\nimport { DataOpConfig } from '../components/Fetcher';\nimport { DataOp } from '../executor';\nimport { swallow } from '../utils';\nimport { usePlasmicDataOp } from './usePlasmicDataOp';\n\nfunction usePrevious<T>(value: T | undefined): T | undefined {\n const prevValue = React.useRef<T | undefined>(undefined);\n\n React.useEffect(() => {\n prevValue.current = value;\n\n return () => {\n prevValue.current = undefined;\n };\n });\n\n return prevValue.current;\n}\n\nexport interface DependencyAwareQueryConfig extends DataOpConfig {\n $queries: Record<string, any>;\n setDollarQueries: ($queries: Record<string, any>) => void;\n getDataOp: () => DataOp;\n}\n\n/**\n * @deprecated Prefer using `usePlasmicDataOp` directly instead.\n */\nexport function useDependencyAwareQuery({\n $queries,\n getDataOp,\n setDollarQueries,\n name,\n pageIndex,\n pageSize,\n}: DependencyAwareQueryConfig) {\n const data = usePlasmicDataOp(swallow(getDataOp), {\n ...(!!pageIndex &&\n !!pageSize && {\n paginate: { pageIndex, pageSize },\n }),\n });\n const finalName = name ?? 'data';\n const prevName = usePrevious(finalName);\n React.useEffect(() => {\n if (!(finalName in $queries) || $queries[finalName] !== data) {\n const $queries2 = {\n ...$queries,\n [finalName]: data,\n };\n if (prevName && finalName !== prevName && prevName in $queries) {\n delete $queries2[prevName];\n }\n setDollarQueries($queries2);\n }\n }, [finalName, prevName, data, $queries, setDollarQueries]);\n}\n","import {\n ManyRowsResult,\n TableFieldSchema,\n TableFieldType,\n TableSchema,\n} from './types';\nimport { mkIdMap, withoutNils } from './utils';\n\nexport type QueryResult = Partial<ManyRowsResult<any>> & {\n error?: any;\n isLoading?: boolean;\n};\n\nexport interface NormalizedData {\n data: Record<string, unknown>[];\n schema?: TableSchema;\n}\n\nexport function normalizeData(rawData: unknown): NormalizedData | undefined {\n if (!rawData) {\n return undefined;\n }\n\n const dataArray = tryGetDataArray(rawData);\n if (!dataArray) {\n return undefined;\n }\n const schema = (rawData as any).schema ?? tryGetSchema(dataArray);\n if (!schema) {\n return undefined;\n }\n return { data: dataArray, schema };\n}\n\nfunction tryGetDataArray(rawData: unknown): any[] | undefined {\n if (rawData == null || typeof rawData !== 'object') {\n return undefined;\n }\n\n if (Array.isArray(rawData)) {\n if (isArrayOfObjects(rawData)) {\n return rawData;\n } else {\n // TODO: array of primitives? Maybe we can wrap this?\n return undefined;\n }\n }\n\n if (rawData == null) {\n return undefined;\n }\n\n if ('data' in rawData && typeof (rawData as any).data === 'object') {\n if (\n Array.isArray((rawData as any).data) &&\n isArrayOfObjects((rawData as any).data)\n ) {\n return (rawData as any).data;\n } else if ((rawData as any).data != null) {\n return [(rawData as any).data];\n } else {\n return undefined;\n }\n }\n if ('isLoading' in rawData || 'error' in rawData) {\n return undefined;\n }\n\n // Maybe a singleton record?\n return [rawData];\n}\n\nfunction isArrayOfObjects(arr: unknown[]) {\n return arr.every((x) => typeof x === 'object' && !Array.isArray(x));\n}\n\nfunction tryGetSchema(data: any[]): TableSchema | undefined {\n const fieldMap: Record<string, TableFieldType> = {};\n data.forEach((entry: any) => {\n if (entry && typeof entry === 'object') {\n Array.from(Object.entries(entry)).forEach(([k, v]) => {\n const inferredType: TableFieldType =\n typeof v === 'string'\n ? 'string'\n : typeof v === 'boolean'\n ? 'boolean'\n : typeof v === 'number'\n ? 'number'\n : 'unknown';\n if (fieldMap[k] && fieldMap[k] !== inferredType) {\n fieldMap[k] = 'unknown';\n } else {\n fieldMap[k] = inferredType;\n }\n });\n }\n });\n return {\n id: 'inferred',\n fields: Object.entries(fieldMap).map(([f, t]) => ({\n id: f,\n type: t,\n readOnly: false,\n })),\n };\n}\n\nexport type BaseFieldConfig = {\n key?: string;\n fieldId?: string;\n};\n\nconst mkShortId = () => `${Math.random()}`;\n\nexport function deriveFieldConfigs<T extends BaseFieldConfig>(\n specifiedFieldsPartial: Partial<T>[],\n schema: TableSchema | undefined,\n makeDefaultConfig: (field: TableFieldSchema | undefined) => T\n): {\n mergedFields: T[];\n minimalFullLengthFields: Partial<T>[];\n} {\n const schemaFields = schema?.fields ?? [];\n const fieldById = mkIdMap(schemaFields);\n const specifiedFieldIds = new Set(\n withoutNils(specifiedFieldsPartial.map((f) => f.fieldId))\n );\n const keptSpecifiedFields = specifiedFieldsPartial.flatMap((f): T[] => {\n if (!f.fieldId) {\n return [\n { key: mkShortId(), ...makeDefaultConfig(undefined), ...f },\n ] as T[];\n }\n const field = fieldById.get(f.fieldId as string);\n\n // Drop configs with fieldIds no longer in the data.\n if (!field) {\n return [];\n }\n\n return [\n {\n key: mkShortId(),\n ...makeDefaultConfig(field),\n ...f,\n },\n ] as T[];\n });\n const newVirtualFields = schemaFields\n .filter((f) => !specifiedFieldIds.has(f.id))\n .map(\n (f): T => ({\n key: mkShortId(),\n ...makeDefaultConfig(f),\n })\n );\n const mergedFields = [...keptSpecifiedFields, ...newVirtualFields];\n const minimalFullLengthFields: Partial<T>[] = [\n ...specifiedFieldsPartial,\n ...newVirtualFields.map((f) => ({ key: f.key, fieldId: f.fieldId })),\n ] as Partial<T>[];\n return { mergedFields, minimalFullLengthFields };\n}\n"],"names":["DEFAULT_HOST","UNAUTHORIZED_MESSAGE","executePlasmicDataOp","_x","_x2","_executePlasmicDataOp2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","op","opts","func","res","wrap","_callee$","_context","prev","next","getConfig","_executePlasmicDataOp","wrapLoadingFetcher","sent","abrupt","stop","apply","arguments","_x3","_x4","_executePlasmicDataOp3","_callee2","_op$userArgs","host","url","resp","text","_callee2$","_context2","roleId","user","roleIds","includes","console","error","Error","sourceId","fetch","method","headers","_extends","userAuthToken","body","stringify","opId","userArgs","paginate","status","json","key","defaultValue","globalThis","_globalThis$key","swallow","f","_unused","undefined","pick","obj","_len","length","keys","Array","_key","_i","_keys","tuple","_len2","args","_key2","mkIdMap","xs","Map","map","x","id","withoutNils","filter","makeCacheKey","dataOp","queryDependencies","JSON","cacheKey","enableLoadingBoundaryKey","mkUndefinedDataProxy","promiseRef","fetchAndUpdateCache","Proxy","get","_target","prop","promise","fetchingPromise","plasmicType","message","String","reactMajorVersion","React","version","split","PRE_FETCHES","usePlasmicDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","fetchingData","useMemo","fetcher","has","existing","fetcherFn","fetcherPromise","set","then","cached","Promise","resolve","cachedError","reject","data","err","keyInfo","_cache$get","useMutablePlasmicQueryData","shouldRetryOnError","isLoading","result","noUndefinedDataProxy","schema","usePlasmicDataMutationOp","_ref","userToken","useCallback","Fetcher","props","children","name","pageIndex","pageSize","$queries","_extends2","queries","_children","FetcherMeta","displayName","type","renderPropParams","advanced","description","importPath","importName","alwaysAutoName","styleSections","usePrevious","value","prevValue","useRef","useEffect","current","useDependencyAwareQuery","getDataOp","setDollarQueries","finalName","prevName","$queries2","normalizeData","rawData","dataArray","tryGetDataArray","_rawData$schema","tryGetSchema","isArray","isArrayOfObjects","arr","every","fieldMap","forEach","entry","from","Object","entries","k","v","inferredType","fields","_ref2","t","readOnly","mkShortId","Math","random","deriveFieldConfigs","specifiedFieldsPartial","makeDefaultConfig","schemaFields","_schema$fields","fieldById","specifiedFieldIds","Set","fieldId","keptSpecifiedFields","flatMap","field","newVirtualFields","mergedFields","concat","minimalFullLengthFields"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.111",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@plasmicapp/data-sources-context": "0.1.11",
|
|
61
|
-
"@plasmicapp/host": "1.0.
|
|
61
|
+
"@plasmicapp/host": "1.0.164",
|
|
62
62
|
"@plasmicapp/isomorphic-unfetch": "^1.0.1",
|
|
63
63
|
"@plasmicapp/query": "0.1.68",
|
|
64
64
|
"fast-stringify": "^2.0.0"
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"publishConfig": {
|
|
67
67
|
"access": "public"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "83b92a98990acc021cc904ef919c6176e88a3238"
|
|
70
70
|
}
|