@plasmicapp/data-sources 0.1.110 → 0.1.112
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 +115 -20
- 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 +115 -20
- package/dist/data-sources.esm.js.map +1 -1
- package/package.json +3 -3
|
@@ -499,14 +499,51 @@ function mkUndefinedDataProxy(promiseRef, fetchAndUpdateCache) {
|
|
|
499
499
|
if (prop === 'isPlasmicUndefinedDataProxy') {
|
|
500
500
|
return true;
|
|
501
501
|
}
|
|
502
|
-
|
|
502
|
+
if (!fetchAndUpdateCache) {
|
|
503
|
+
// There's no key so no fetch to kick off yet; when computing key,
|
|
504
|
+
// we encountered some thrown exception (that's not an undefined data promise),
|
|
505
|
+
// and so we can't fetch yet. This might be dependent on a $state or $prop value
|
|
506
|
+
// that's currently undefined, etc. We will act like an undefined data object,
|
|
507
|
+
// and trigger the usual fallback behavior
|
|
508
|
+
return undefined;
|
|
509
|
+
}
|
|
510
|
+
var promise =
|
|
511
|
+
// existing fetch
|
|
512
|
+
promiseRef.fetchingPromise ||
|
|
513
|
+
// No existing fetch, so kick off a fetch
|
|
514
|
+
fetchAndUpdateCache();
|
|
503
515
|
promise.plasmicType = 'PlasmicUndefinedDataError';
|
|
504
516
|
promise.message = "Cannot read property " + String(prop) + " - data is still loading";
|
|
505
517
|
throw promise;
|
|
506
518
|
}
|
|
507
519
|
});
|
|
508
520
|
}
|
|
521
|
+
function isPlasmicUndefinedDataErrorPromise(x) {
|
|
522
|
+
return !!x && typeof x === 'object' && x.plasmicType === 'PlasmicUndefinedDataError';
|
|
523
|
+
}
|
|
509
524
|
var reactMajorVersion = + /*#__PURE__*/React.version.split('.')[0];
|
|
525
|
+
/**
|
|
526
|
+
* This returns either:
|
|
527
|
+
* * DataOp to perform
|
|
528
|
+
* * undefined/null, if no data op can be performed
|
|
529
|
+
* * PlasmicUndefinedDataErrorPromise, if when trying to evaluate the DataOp to perform,
|
|
530
|
+
* we encounter a PlasmicUndefinedDataErrorPromise, so this operation cannot be
|
|
531
|
+
* performed until that promise is resolved.
|
|
532
|
+
*/
|
|
533
|
+
function resolveDataOp(dataOp) {
|
|
534
|
+
if (typeof dataOp === 'function') {
|
|
535
|
+
try {
|
|
536
|
+
return dataOp();
|
|
537
|
+
} catch (err) {
|
|
538
|
+
if (isPlasmicUndefinedDataErrorPromise(err)) {
|
|
539
|
+
return err;
|
|
540
|
+
}
|
|
541
|
+
return null;
|
|
542
|
+
}
|
|
543
|
+
} else {
|
|
544
|
+
return dataOp;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
510
547
|
/**
|
|
511
548
|
* Fetches can be kicked off two ways -- normally, by useSWR(), or by some
|
|
512
549
|
* expression accessing the `$queries.*` proxy when not ready yet. We need
|
|
@@ -521,13 +558,17 @@ var reactMajorVersion = + /*#__PURE__*/React.version.split('.')[0];
|
|
|
521
558
|
var PRE_FETCHES = /*#__PURE__*/new Map();
|
|
522
559
|
function usePlasmicDataOp(dataOp, opts) {
|
|
523
560
|
var _ph$useDataEnv;
|
|
561
|
+
var resolvedDataOp = resolveDataOp(dataOp);
|
|
524
562
|
var ctx = dataSourcesContext.usePlasmicDataSourceContext();
|
|
525
563
|
var enableLoadingBoundary = !!(ph.useDataEnv != null && (_ph$useDataEnv = ph.useDataEnv()) != null && _ph$useDataEnv[enableLoadingBoundaryKey]);
|
|
526
564
|
var _usePlasmicDataConfig = query.usePlasmicDataConfig(),
|
|
527
565
|
mutate = _usePlasmicDataConfig.mutate,
|
|
528
566
|
cache = _usePlasmicDataConfig.cache;
|
|
529
|
-
|
|
530
|
-
var
|
|
567
|
+
// Cannot perform this operation
|
|
568
|
+
var isNullDataOp = !resolvedDataOp;
|
|
569
|
+
// This operation depends on another data query to resolve first
|
|
570
|
+
var isWaitingOnDependentQuery = isPlasmicUndefinedDataErrorPromise(resolvedDataOp);
|
|
571
|
+
var key = !resolvedDataOp || isPlasmicUndefinedDataErrorPromise(resolvedDataOp) ? null : makeCacheKey(resolvedDataOp, {
|
|
531
572
|
paginate: opts == null ? void 0 : opts.paginate,
|
|
532
573
|
userAuthToken: ctx == null ? void 0 : ctx.userAuthToken
|
|
533
574
|
});
|
|
@@ -539,6 +580,10 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
539
580
|
var fetcher = React.useMemo(function () {
|
|
540
581
|
return function () {
|
|
541
582
|
// If we are in this function, that means SWR cache missed.
|
|
583
|
+
if (!key) {
|
|
584
|
+
throw new Error("Fetcher should never be called without a proper key");
|
|
585
|
+
}
|
|
586
|
+
// dataOp is guaranteed to be a DataOp, and not an undefined promise or null
|
|
542
587
|
if (fetchingData.fetchingPromise) {
|
|
543
588
|
// Fetch is already underway from this hook
|
|
544
589
|
return fetchingData.fetchingPromise;
|
|
@@ -552,29 +597,34 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
552
597
|
}
|
|
553
598
|
// Else we really need to kick off this fetch now...
|
|
554
599
|
var fetcherFn = function fetcherFn() {
|
|
555
|
-
return (
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
paginate: opts == null ? void 0 : opts.paginate
|
|
561
|
-
})
|
|
562
|
-
);
|
|
600
|
+
return executePlasmicDataOp(resolvedDataOp, {
|
|
601
|
+
userAuthToken: (ctx == null ? void 0 : ctx.userAuthToken) || undefined,
|
|
602
|
+
user: ctx == null ? void 0 : ctx.user,
|
|
603
|
+
paginate: opts == null ? void 0 : opts.paginate
|
|
604
|
+
});
|
|
563
605
|
};
|
|
564
606
|
var fetcherPromise = fetcherFn();
|
|
565
607
|
fetchingData.fetchingPromise = fetcherPromise;
|
|
566
608
|
if (key) {
|
|
567
609
|
PRE_FETCHES.set(key, fetcherPromise);
|
|
610
|
+
// Once we have a result, we rely on swr to perform the caching,
|
|
611
|
+
// so remove from our cache as quickly as possible.
|
|
568
612
|
fetcherPromise.then(function () {
|
|
569
|
-
|
|
570
|
-
|
|
613
|
+
PRE_FETCHES["delete"](key);
|
|
614
|
+
}, function () {
|
|
571
615
|
PRE_FETCHES["delete"](key);
|
|
572
616
|
});
|
|
573
617
|
}
|
|
574
618
|
return fetcherPromise;
|
|
575
619
|
};
|
|
576
620
|
}, [key, fetchingData]);
|
|
621
|
+
var dependentKeyDataErrorPromise = isPlasmicUndefinedDataErrorPromise(resolvedDataOp) ? resolvedDataOp : undefined;
|
|
577
622
|
var fetchAndUpdateCache = React.useMemo(function () {
|
|
623
|
+
if (!key && !dependentKeyDataErrorPromise) {
|
|
624
|
+
// If there's no key, and no data query we're waiting for, then there's
|
|
625
|
+
// no way to perform a fetch
|
|
626
|
+
return undefined;
|
|
627
|
+
}
|
|
578
628
|
return function () {
|
|
579
629
|
// This function is called when the undefined data proxy is invoked.
|
|
580
630
|
// USUALLY, this means the data is not available in SWR yet, and
|
|
@@ -583,6 +633,16 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
583
633
|
// No need to update cache as the exist promise call site will do it
|
|
584
634
|
return fetchingData.fetchingPromise;
|
|
585
635
|
}
|
|
636
|
+
if (dependentKeyDataErrorPromise) {
|
|
637
|
+
// We can't actually fetch yet, because we couldn't even evaluate the dataOp
|
|
638
|
+
// to fetch for, because we depend on unfetched data. Once _that_
|
|
639
|
+
// dataOp we depend on is finished, then we can try again. So we
|
|
640
|
+
// will throw and wait for _that_ promise to be resolved instead.
|
|
641
|
+
return dependentKeyDataErrorPromise;
|
|
642
|
+
}
|
|
643
|
+
if (!key) {
|
|
644
|
+
throw new Error("Expected key to be non-null");
|
|
645
|
+
}
|
|
586
646
|
// SOMETIMES, SWR actually _does_ have the cache, but we still end up
|
|
587
647
|
// here. That's because of how we update $queries, which takes two
|
|
588
648
|
// cycles; each time we render, we build a `new$Queries`, and
|
|
@@ -595,9 +655,37 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
595
655
|
if (cached) {
|
|
596
656
|
return Promise.resolve(cached);
|
|
597
657
|
}
|
|
598
|
-
var
|
|
658
|
+
var cachedError = cache.get("$swr$" + key);
|
|
659
|
+
if (cachedError) {
|
|
660
|
+
return Promise.reject(cachedError.error);
|
|
661
|
+
}
|
|
662
|
+
// Now, upon this proxy.get() miss, we want to kick off the fetch. We can't
|
|
663
|
+
// wait for useSWR() to kick off the fetch, because upon data miss we are
|
|
664
|
+
// throwing a promise, and useSWR() won't kick off the fetch till the effect,
|
|
665
|
+
// so it will never get a chance to fetch. Instead, we fetch, and then we
|
|
666
|
+
// put the fetched data into the SWR cache, so that next time useSWR() is called,
|
|
667
|
+
// it will just find it in the cache.
|
|
668
|
+
//
|
|
669
|
+
// However, we don't want to fetch SYNCHRONOUSLY RIGHT NOW, becase we are in
|
|
670
|
+
// the rendering phase (presumably, we're here because some component is trying
|
|
671
|
+
// to read fetched data while rendering). Doing a fetch right now would invoke
|
|
672
|
+
// the fetcher, which is wrapped by @plasmicapp/query to tracking loading state,
|
|
673
|
+
// and upon loading state toggled to true, it will fire loading event listeners,
|
|
674
|
+
// and for example, our antd's <GlobalLoadingIndicator /> will listen to this
|
|
675
|
+
// event and immediately ask antd to show the loading indicator, which mutates
|
|
676
|
+
// antd component's state. It is NOT LEGAL to call setState() on some other
|
|
677
|
+
// component's state during rendering phase!
|
|
678
|
+
//
|
|
679
|
+
// We therefore will delay kicking off the fetch by a tick, so that we will safely
|
|
680
|
+
// start the fetch outside of React rendering phase.
|
|
681
|
+
var fetcherPromise = new Promise(function (resolve, reject) {
|
|
682
|
+
setTimeout(function () {
|
|
683
|
+
fetcher().then(resolve, reject);
|
|
684
|
+
}, 1);
|
|
685
|
+
});
|
|
599
686
|
fetcherPromise.then(function (data) {
|
|
600
|
-
|
|
687
|
+
// Insert the fetched data into the SWR cache
|
|
688
|
+
mutate(key, data);
|
|
601
689
|
})["catch"](function (err) {
|
|
602
690
|
var _cache$get;
|
|
603
691
|
// Cache the error here to avoid infinite loop
|
|
@@ -606,11 +694,18 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
606
694
|
error: err
|
|
607
695
|
}));
|
|
608
696
|
});
|
|
609
|
-
return
|
|
697
|
+
return fetcherPromise;
|
|
610
698
|
};
|
|
611
|
-
}, [fetcher, fetchingData, cache, key]);
|
|
699
|
+
}, [fetcher, fetchingData, cache, key, dependentKeyDataErrorPromise]);
|
|
612
700
|
var res = query.useMutablePlasmicQueryData(key, fetcher, {
|
|
613
|
-
shouldRetryOnError: false
|
|
701
|
+
shouldRetryOnError: false,
|
|
702
|
+
// If revalidateIfStale is true, then if there's a cache entry with a key,
|
|
703
|
+
// but no mounted hook with that key yet, and when the hook mounts with the key,
|
|
704
|
+
// swr will revalidate. This may be reasonable behavior, but for us, this
|
|
705
|
+
// happens all the time -- we prepopulate the cache with proxy-invoked fetch,
|
|
706
|
+
// sometimes before swr had a chance to run the effect. So we turn off
|
|
707
|
+
// revalidateIfStale here, and just let the user manage invalidation.
|
|
708
|
+
revalidateIfStale: false
|
|
614
709
|
});
|
|
615
710
|
var data = res.data,
|
|
616
711
|
error = res.error,
|
|
@@ -622,12 +717,12 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
622
717
|
}
|
|
623
718
|
return React.useMemo(function () {
|
|
624
719
|
var result = _extends({}, data != null ? data : {}, pick(res, 'isLoading', 'error'));
|
|
625
|
-
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp) && result.data === undefined && result.schema === undefined) {
|
|
720
|
+
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp || isWaitingOnDependentQuery) && result.data === undefined && result.schema === undefined && result.error === undefined) {
|
|
626
721
|
result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
627
722
|
result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
628
723
|
}
|
|
629
724
|
return result;
|
|
630
|
-
}, [isNullDataOp, data, error, isLoading, opts == null ? void 0 : opts.noUndefinedDataProxy, enableLoadingBoundary, fetchingData, fetchAndUpdateCache]);
|
|
725
|
+
}, [isNullDataOp, isWaitingOnDependentQuery, data, error, isLoading, opts == null ? void 0 : opts.noUndefinedDataProxy, enableLoadingBoundary, fetchingData, fetchAndUpdateCache]);
|
|
631
726
|
}
|
|
632
727
|
function usePlasmicDataMutationOp(dataOp) {
|
|
633
728
|
var _ref = dataOp != null ? dataOp : {},
|
|
@@ -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 {\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 fetcherPromise.then(() => {\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 PRE_FETCHES.delete(key);\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 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 ) {\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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,YAAY,GAAG,0BAA0B;AAiB/C,IAAMC,oBAAoB,GACxB,mHAAmH;SAE/FC,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA;EAAA,QAAAC,sBAAA,GAAAA,sBAAA,IAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAnC,SAAAC,QAELC,EAAU,EAAEC,IAAkB;IAAA,IAAAC,IAAA,EAAAC,GAAA;IAAA,OAAAN,mBAAA,GAAAO,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACxBN,IAAI,GAAGO,SAAS,CACpB,2BAA2B,EAC3BC,qBAAqB,CACU;UAAAJ,QAAA,CAAAE,IAAA;UAAA,OACfG,wBAAkB,CAACT,IAAI,CAAC,CAACF,EAAE,EAAEC,IAAI,CAAC;QAAA;UAA9CE,GAAG,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WACFV,GAAQ;QAAA;QAAA;UAAA,OAAAG,QAAA,CAAAQ,IAAA;;OAAAf,OAAA;GAChB,IAAAgB,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEcN,qBAAqBA,CAAAO,GAAA,EAAAC,GAAA;EAAA,QAAAC,sBAAA,GAAAA,sBAAA,IAAAvB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAApC,SAAAsB,SAEEpB,EAAU,EAAEC,IAAkB;IAAA,IAAAoB,YAAA;IAAA,IAAAC,IAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA;IAAA,OAAA5B,mBAAA,GAAAO,IAAA,UAAAsB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAApB,IAAA,GAAAoB,SAAA,CAAAnB,IAAA;QAAA;UAAA,KAC1BR,EAAE,CAAC4B,MAAM;YAAAD,SAAA,CAAAnB,IAAA;YAAA;;UAAA,MACP,EAACP,IAAI,YAAJA,IAAI,CAAE4B,IAAI,KAAI,CAAC5B,IAAI,CAAC4B,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC/B,EAAE,CAAC4B,MAAM,CAAC;YAAAD,SAAA,CAAAnB,IAAA;YAAA;;UACvDwB,OAAO,CAACC,KAAK,CAAC1C,oBAAoB,CAAC;UAAC,MAC9B,IAAI2C,KAAK,CAAC3C,oBAAoB,CAAC;QAAA;UAInC+B,IAAI,GAAGb,SAAS,CAAC,qBAAqB,EAAEnB,YAAY,CAAC;UAErDiC,GAAG,GAAMD,IAAI,oCAA+BtB,EAAE,CAACmC,QAAQ;UAAAR,SAAA,CAAAnB,IAAA;UAAA,OAC1C4B,KAAK,CAACb,GAAG,EAAE;YAC5Bc,MAAM,EAAE,MAAM;YACdC,OAAO,EAAAC,QAAA;cACL,cAAc,EAAE;eACZ,CAAAtC,IAAI,oBAAJA,IAAI,CAAEuC,aAAa,KAAI;cACzB,gCAAgC,EAAEvC,IAAI,CAACuC;aACxC,CACF;YACDC,IAAI,EAAEC,SAAS,CAAC;cACdC,IAAI,EAAE3C,EAAE,CAAC2C,IAAI;cACbC,QAAQ,GAAAvB,YAAA,GAAErB,EAAE,CAAC4C,QAAQ,YAAAvB,YAAA,GAAI,EAAE;cAC3BwB,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C;aACjB;WACF,CAAC;QAAA;UAbIrB,IAAI,GAAAG,SAAA,CAAAf,IAAA;UAAA,MAcNY,IAAI,CAACsB,MAAM,KAAK,GAAG;YAAAnB,SAAA,CAAAnB,IAAA;YAAA;;UAAAmB,SAAA,CAAAnB,IAAA;UAAA,OACFgB,IAAI,CAACC,IAAI,EAAE;QAAA;UAAxBA,IAAI,GAAAE,SAAA,CAAAf,IAAA;UAAA,MACJ,IAAIsB,KAAK,CAACT,IAAI,CAAC;QAAA;UAAAE,SAAA,CAAAnB,IAAA;UAAA,OAETgB,IAAI,CAACuB,IAAI,EAAE;QAAA;UAAA,OAAApB,SAAA,CAAAd,MAAA,WAAAc,SAAA,CAAAf,IAAA;QAAA;QAAA;UAAA,OAAAe,SAAA,CAAAb,IAAA;;OAAAM,QAAA;GAC1B,IAAAL,KAAA,OAAAC,SAAA;AAAA;AAED,SAASP,SAASA,CAAIuC,GAAW,EAAEC,YAAe;EAChD,IAAI,OAAOC,UAAU,KAAK,WAAW,EAAE;IACrC,OAAOD,YAAY;GACpB,MAAM;IAAA,IAAAE,eAAA;IACL,QAAAA,eAAA,GAAQD,UAAkB,CAACF,GAAG,CAAC,YAAAG,eAAA,GAAIF,YAAY;;AAEnD;;SC7EgBG,OAAOA,CAAIC,CAAU;EACnC,IAAI;IACF,OAAOA,CAAC,EAAE;GACX,CAAC,OAAAC,OAAA,EAAM;IACN,OAAOC,SAAS;;AAEpB;AAEA,SAAgBC,IAAIA,CAClBC,GAAM;EAGN,IAAMtD,GAAG,GAAQ,EAAE;EAAC,SAAAuD,IAAA,GAAA1C,SAAA,CAAA2C,MAAA,EAFjBC,IAAS,OAAAC,KAAA,CAAAH,IAAA,OAAAA,IAAA,WAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;IAATF,IAAS,CAAAE,IAAA,QAAA9C,SAAA,CAAA8C,IAAA;;EAGZ,SAAAC,EAAA,MAAAC,KAAA,GAAkBJ,IAAI,EAAAG,EAAA,GAAAC,KAAA,CAAAL,MAAA,EAAAI,EAAA,IAAE;IAAnB,IAAMf,GAAG,GAAAgB,KAAA,CAAAD,EAAA;IACZ,IAAIf,GAAG,IAAIS,GAAG,EAAE;MACdtD,GAAG,CAAC6C,GAAG,CAAC,GAAGS,GAAG,CAACT,GAAc,CAAC;;;EAGlC,OAAO7C,GAAG;AACZ;AAYA,AA+DO,IAAM8D,KAAK,GAAG,SAARA,KAAKA;EAAA,SAAAC,KAAA,GAAAlD,SAAA,CAAA2C,MAAA,EAAwBQ,IAAO,OAAAN,KAAA,CAAAK,KAAA,GAAAE,KAAA,MAAAA,KAAA,GAAAF,KAAA,EAAAE,KAAA;IAAPD,IAAO,CAAAC,KAAA,IAAApD,SAAA,CAAAoD,KAAA;;EAAA,OAAQD,IAAI;AAAA;AAM7D,SAAgBE,OAAOA,CAAkBC,EAAoB;EAC3D,OAAO,IAAIC,GAAG,CAACD,EAAE,CAACE,GAAG,CAAC,UAACC,CAAC;IAAA,OAAKR,KAAK,CAACQ,CAAC,CAACC,EAAE,EAAED,CAAC,CAAgB;IAAC,CAAC;AAC9D;AAEA,SAEgBE,WAAWA,CAAIL,EAA+B;EAC5D,OAAOA,EAAE,CAACM,MAAM,CAAC,UAACH,CAAC;IAAA,OAAaA,CAAC,IAAI,IAAI;IAAC;AAC5C;;SCjGgBI,YAAYA,CAC1BC,MAAc,EACd7E,IAA+D;EAE/D,IAAM8E,iBAAiB,GAAGC,IAAI,CAACtC,SAAS,CAAC;IACvCP,QAAQ,EAAE2C,MAAM,CAAC3C,QAAQ;IACzBQ,IAAI,EAAEmC,MAAM,CAACnC,IAAI;IACjBwB,IAAI,EAAEW,MAAM,CAAClC,QAAQ;IACrBJ,aAAa,EAAEvC,IAAI,oBAAJA,IAAI,CAAEuC,aAAa;IAClCK,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C;GACjB,CAAC;EACF,OAAOiC,MAAM,CAACG,QAAQ,QACfH,MAAM,CAACG,QAAQ,GAAGF,iBAAiB,GACtCA,iBAAiB;AACvB;AAEA,IAAMG,wBAAwB,GAAG,sCAAsC;AAEvE,SAASC,oBAAoBA,CAC3BC,UAAyD,EACzDC,mBAAuC;EAEvC,OAAO,IAAIC,KAAK,CACd,EAAE,EACF;IACEC,GAAG,EAAE,SAAAA,IAACC,OAAO,EAAEC,IAAI;MACjB,IAAIA,IAAI,KAAK,6BAA6B,EAAE;QAC1C,OAAO,IAAI;;MAEb,IAAMC,OAAO,GAAGN,UAAU,CAACO,eAAe,IAAIN,mBAAmB,EAAE;MAClEK,OAAe,CAACE,WAAW,GAAG,2BAA2B;MACzDF,OAAe,CAACG,OAAO,6BAA2BC,MAAM,CACvDL,IAAI,CACL,6BAA0B;MAC3B,MAAMC,OAAO;;GAEhB,CACK;AACV;AAEA,IAAMK,iBAAiB,GAAG,eAACC,KAAK,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEtD;;;;;;;;;;;AAWA,IAAMC,WAAW,gBAAG,IAAI5B,GAAG,EAAwB;AAEnD,SAAgB6B,gBAAgBA,CAI9BtB,MAA0B,EAC1B7E,IAGC;;EAKD,IAAMoG,GAAG,GAAGC,8CAA2B,EAAE;EACzC,IAAMC,qBAAqB,GAAG,CAAC,EAACC,aAAa,aAAAC,cAAA,GAAbD,aAAa,EAAI,aAAjBC,cAAA,CAAoBvB,wBAAwB,CAAC;EAC7E,IAAAwB,qBAAA,GAA0BC,0BAAoB,EAAE;IAAxCC,MAAM,GAAAF,qBAAA,CAANE,MAAM;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;EACrB,IAAMC,YAAY,GAAG,CAAChC,MAAM;EAC5B,IAAM9B,GAAG,GAAG8D,YAAY,GACpB,IAAI,GACJjC,YAAY,CAACC,MAAO,EAAE;IACpBjC,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C,QAAQ;IACxBL,aAAa,EAAE6D,GAAG,oBAAHA,GAAG,CAAE7D;GACrB,CAAC;EACN,IAAMuE,YAAY,GAAGf,KAAK,CAACgB,OAAO,CAChC;IAAA,OAAO;MACLrB,eAAe,EAAEpC;KAClB;GAAC,EACF,CAACP,GAAG,CAAC,CACN;EACD,IAAMiE,OAAO,GAAGjB,KAAK,CAACgB,OAAO,CAC3B;IAAA,OAAM;;MAGJ,IAAID,YAAY,CAACpB,eAAe,EAAE;;QAEhC,OAAOoB,YAAY,CAACpB,eAAe;;MAGrC,IAAI3C,GAAG,IAAImD,WAAW,CAACe,GAAG,CAAClE,GAAG,CAAC,EAAE;;;QAG/B,IAAMmE,QAAQ,GAAGhB,WAAW,CAACZ,GAAG,CAACvC,GAAG,CAAe;QACnD+D,YAAY,CAACpB,eAAe,GAAGwB,QAAQ;QACvC,OAAOA,QAAQ;;;MAIjB,IAAMC,SAAS,GAAG,SAAZA,SAASA;QAAA;;UAEb5H,oBAAoB,CAAIsF,MAAO,EAAE;YAC/BtC,aAAa,EAAE,CAAA6D,GAAG,oBAAHA,GAAG,CAAE7D,aAAa,KAAIe,SAAS;YAC9C1B,IAAI,EAAEwE,GAAG,oBAAHA,GAAG,CAAExE,IAAI;YACfgB,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C;WACjB;;;MACH,IAAMwE,cAAc,GAAGD,SAAS,EAAE;MAClCL,YAAY,CAACpB,eAAe,GAAG0B,cAAc;MAC7C,IAAIrE,GAAG,EAAE;QACPmD,WAAW,CAACmB,GAAG,CAACtE,GAAG,EAAEqE,cAAc,CAAC;QACpCA,cAAc,CAACE,IAAI,CAAC;;;UAGlBpB,WAAW,UAAO,CAACnD,GAAG,CAAC;SACxB,CAAC;;MAEJ,OAAOqE,cAAc;KACtB;KACD,CAACrE,GAAG,EAAE+D,YAAY,CAAC,CACpB;EACD,IAAM1B,mBAAmB,GAAGW,KAAK,CAACgB,OAAO,CACvC;IAAA,OAAM;;;;MAIJ,IAAID,YAAY,CAACpB,eAAe,EAAE;;QAEhC,OAAOoB,YAAY,CAACpB,eAAe;;;;;;;;;;MAWrC,IAAM6B,MAAM,GAAGX,KAAK,CAACtB,GAAG,CAACvC,GAAG,CAAC;MAC7B,IAAIwE,MAAM,EAAE;QACV,OAAOC,OAAO,CAACC,OAAO,CAACF,MAAM,CAAC;;MAEhC,IAAMH,cAAc,GAAGJ,OAAO,EAAE;MAChCI,cAAc,CACXE,IAAI,CAAC,UAACI,IAAI;QAAA,OAAKf,MAAM,CAAC5D,GAAG,EAAE2E,IAAI,CAAC;QAAC,SAC5B,CAAC,UAACC,GAAG;;;QAET,IAAMC,OAAO,GAAG7E,GAAG,GAAG,OAAO,GAAGA,GAAG,GAAG,EAAE;QACxC6D,KAAK,CAACS,GAAG,CAACO,OAAO,EAAAtF,QAAA,MAAAuF,UAAA,GAAQjB,KAAK,CAACtB,GAAG,CAACsC,OAAO,CAAC,YAAAC,UAAA,GAAI,EAAE;UAAG7F,KAAK,EAAE2F;UAAK,CAAC;OAClE,CAAC;MACJ,OAAOb,YAAY,CAACpB,eAAgB;KACrC;KACD,CAACsB,OAAO,EAAEF,YAAY,EAAEF,KAAK,EAAE7D,GAAG,CAAC,CACpC;EACD,IAAM7C,GAAG,GAAG4H,gCAA0B,CAAO/E,GAAG,EAAEiE,OAAO,EAAE;IACzDe,kBAAkB,EAAE;GACrB,CAAC;EACF,IAAQL,IAAI,GAAuBxH,GAAG,CAA9BwH,IAAI;IAAE1F,KAAK,GAAgB9B,GAAG,CAAxB8B,KAAK;IAAEgG,SAAS,GAAK9H,GAAG,CAAjB8H,SAAS;EAC9B,IAAIlB,YAAY,CAACpB,eAAe,IAAI,IAAI,IAAIgC,IAAI,KAAKpE,SAAS,EAAE;;;IAG9DwD,YAAY,CAACpB,eAAe,GAAGpC,SAAS;;EAE1C,OAAOyC,KAAK,CAACgB,OAAO,CAAC;IACnB,IAAMkB,MAAM,GAAA3F,QAAA,KACNoF,IAAI,WAAJA,IAAI,GAAK,EAAiB,EAC3BnE,IAAI,CAACrD,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CACnC;IACD,IACE,EAACF,IAAI,YAAJA,IAAI,CAAEkI,oBAAoB,KAC3BpC,iBAAiB,IAAI,EAAE,IACvBQ,qBAAqB,KACpB0B,SAAS,IAAInB,YAAY,CAAC,IAC3BoB,MAAM,CAACP,IAAI,KAAKpE,SAAS,IACzB2E,MAAM,CAACE,MAAM,KAAK7E,SAAS,EAC3B;MACA2E,MAAM,CAACP,IAAI,GAAGxC,oBAAoB,CAAC4B,YAAY,EAAE1B,mBAAmB,CAAC;MACrE6C,MAAM,CAACE,MAAM,GAAGjD,oBAAoB,CAAC4B,YAAY,EAAE1B,mBAAmB,CAAC;;IAEzE,OAAO6C,MAAM;GACd,EAAE,CACDpB,YAAY,EACZa,IAAI,EACJ1F,KAAK,EACLgG,SAAS,EACThI,IAAI,oBAAJA,IAAI,CAAEkI,oBAAoB,EAC1B5B,qBAAqB,EACrBQ,YAAY,EACZ1B,mBAAmB,CACpB,CAAC;AACJ;AAEA,SAAgBgD,wBAAwBA,CAEtCvD,MAA0B;EAC1B,IAAAwD,IAAA,GAAqCxD,MAAM,WAANA,MAAM,GAAI,EAAE;IAAzC3C,QAAQ,GAAAmG,IAAA,CAARnG,QAAQ;IAAEQ,IAAI,GAAA2F,IAAA,CAAJ3F,IAAI;IAAEC,QAAQ,GAAA0F,IAAA,CAAR1F,QAAQ;EAChC,IAAMyD,GAAG,GAAGC,8CAA2B,EAAE;EACzC,IAAMiC,SAAS,GAAGlC,GAAG,oBAAHA,GAAG,CAAE7D,aAAa;EACpC,OAAOwD,KAAK,CAACwC,WAAW,eAAA5I,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAC;IAAA,OAAAF,mBAAA,GAAAO,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,MACnB,CAAC2B,QAAQ,IAAI,CAACQ,IAAI;YAAArC,QAAA,CAAAE,IAAA;YAAA;;UAAA,OAAAF,QAAA,CAAAO,MAAA,WACb0C,SAAS;QAAA;UAAA,OAAAjD,QAAA,CAAAO,MAAA,WAEXrB,oBAAoB,CACzB;YAAE2C,QAAQ,EAARA,QAAQ;YAAEQ,IAAI,EAAJA,IAAI;YAAEC,QAAQ,EAARA;WAAU,EAC5B;YACEJ,aAAa,EAAE+F,SAAS,IAAIhF,SAAS;YACrC1B,IAAI,EAAEwE,GAAG,oBAAHA,GAAG,CAAExE;WACZ,CACF;QAAA;QAAA;UAAA,OAAAvB,QAAA,CAAAQ,IAAA;;OAAAf,OAAA;GACF,IAAE,CAACoC,QAAQ,EAAEQ,IAAI,EAAEC,QAAQ,EAAE2F,SAAS,CAAC,CAAC;AAC3C;;SC/MgBE,OAAOA,CAACC,KAAmB;;EACzC,IAAQ5D,MAAM,GAA0C4D,KAAK,CAArD5D,MAAM;IAAE6D,QAAQ,GAAgCD,KAAK,CAA7CC,QAAQ;IAAEC,IAAI,GAA0BF,KAAK,CAAnCE,IAAI;IAAEC,SAAS,GAAeH,KAAK,CAA7BG,SAAS;IAAEC,QAAQ,GAAKJ,KAAK,CAAlBI,QAAQ;EACnD,IAAMnB,IAAI,GAAGvB,gBAAgB,CAACtB,MAAM,EAAAvC,QAAA,KAC9B,CAAC,CAACsG,SAAS,IACb,CAAC,CAACC,QAAQ,IAAI;IACZjG,QAAQ,EAAE;MAAEgG,SAAS,EAATA,SAAS;MAAEC,QAAQ,EAARA;;GACxB,CACJ,CAAC;EAEF,IAAMC,QAAQ,GAAG/C,KAAK,CAACgB,OAAO,CAC5B;IAAA,IAAAgC,SAAA;IAAA,OAAAzG,QAAA,KAAYmG,KAAK,CAACO,OAAO,GAAAD,SAAA,OAAAA,SAAA,CAAGJ,IAAI,WAAJA,IAAI,GAAI,MAAM,IAAGjB,IAAI,EAAAqB,SAAA;GAAG,EACpD,CAACN,KAAK,CAACO,OAAO,EAAEL,IAAI,EAAEjB,IAAI,CAAC,CAC5B;EAED,QAAAuB,SAAA,GAAOP,QAAQ,oBAARA,QAAQ,CAAGI,QAAQ,CAAC,YAAAG,SAAA,GAAI,IAAI;AACrC;AAEA,IAAaC,WAAW,GAAgC;EACtDP,IAAI,EAAE,6BAA6B;EACnCQ,WAAW,EAAE,cAAc;EAC3BV,KAAK,EAAE;IACL5D,MAAM,EAAE;MACNuE,IAAI,EAAE,cAAqB;MAC3BD,WAAW,EAAE;KACd;IACDR,IAAI,EAAE;MACJS,IAAI,EAAE,QAAQ;MACdD,WAAW,EAAE;KACd;IACDT,QAAQ,EAAE;MACRU,IAAI,EAAE,MAAM;MACZC,gBAAgB,EAAE,CAAC,UAAU;KAC9B;IACDR,QAAQ,EAAE;MACRO,IAAI,EAAE,QAAQ;MACdE,QAAQ,EAAE,IAAI;MACdH,WAAW,EAAE,WAAW;MACxBI,WAAW,EAAE;KACd;IACDX,SAAS,EAAE;MACTQ,IAAI,EAAE,QAAQ;MACdE,QAAQ,EAAE,IAAI;MACdH,WAAW,EAAE,YAAY;MACzBI,WAAW,EAAE;;GAEhB;EACDC,UAAU,EAAE,wCAAwC;EACpDC,UAAU,EAAE,SAAS;EACrBC,cAAc,EAAE,IAAI;EACpBC,aAAa,EAAE;CAChB;;AC7DD,SAASC,WAAWA,CAAIC,KAAoB;EAC1C,IAAMC,SAAS,GAAG/D,KAAK,CAACgE,MAAM,CAAgBzG,SAAS,CAAC;EAExDyC,KAAK,CAACiE,SAAS,CAAC;IACdF,SAAS,CAACG,OAAO,GAAGJ,KAAK;IAEzB,OAAO;MACLC,SAAS,CAACG,OAAO,GAAG3G,SAAS;KAC9B;GACF,CAAC;EAEF,OAAOwG,SAAS,CAACG,OAAO;AAC1B;AAQA;;;AAGA,SAAgBC,uBAAuBA,CAAA7B,IAAA;MACrCS,QAAQ,GAAAT,IAAA,CAARS,QAAQ;IACRqB,SAAS,GAAA9B,IAAA,CAAT8B,SAAS;IACTC,gBAAgB,GAAA/B,IAAA,CAAhB+B,gBAAgB;IAChBzB,IAAI,GAAAN,IAAA,CAAJM,IAAI;IACJC,SAAS,GAAAP,IAAA,CAATO,SAAS;IACTC,QAAQ,GAAAR,IAAA,CAARQ,QAAQ;EAER,IAAMnB,IAAI,GAAGvB,gBAAgB,CAAChD,OAAO,CAACgH,SAAS,CAAC,EAAA7H,QAAA,KAC1C,CAAC,CAACsG,SAAS,IACb,CAAC,CAACC,QAAQ,IAAI;IACZjG,QAAQ,EAAE;MAAEgG,SAAS,EAATA,SAAS;MAAEC,QAAQ,EAARA;;GACxB,CACJ,CAAC;EACF,IAAMwB,SAAS,GAAG1B,IAAI,WAAJA,IAAI,GAAI,MAAM;EAChC,IAAM2B,QAAQ,GAAGV,WAAW,CAACS,SAAS,CAAC;EACvCtE,KAAK,CAACiE,SAAS,CAAC;IACd,IAAI,EAAEK,SAAS,IAAIvB,QAAQ,CAAC,IAAIA,QAAQ,CAACuB,SAAS,CAAC,KAAK3C,IAAI,EAAE;MAAA,IAAAqB,SAAA;MAC5D,IAAMwB,SAAS,GAAAjI,QAAA,KACVwG,QAAQ,GAAAC,SAAA,OAAAA,SAAA,CACVsB,SAAS,IAAG3C,IAAI,EAAAqB,SAAA,EAClB;MACD,IAAIuB,QAAQ,IAAID,SAAS,KAAKC,QAAQ,IAAIA,QAAQ,IAAIxB,QAAQ,EAAE;QAC9D,OAAOyB,SAAS,CAACD,QAAQ,CAAC;;MAE5BF,gBAAgB,CAACG,SAAS,CAAC;;GAE9B,EAAE,CAACF,SAAS,EAAEC,QAAQ,EAAE5C,IAAI,EAAEoB,QAAQ,EAAEsB,gBAAgB,CAAC,CAAC;AAC7D;;SCvCgBI,aAAaA,CAACC,OAAgB;;EAC5C,IAAI,CAACA,OAAO,EAAE;IACZ,OAAOnH,SAAS;;EAGlB,IAAMoH,SAAS,GAAGC,eAAe,CAACF,OAAO,CAAC;EAC1C,IAAI,CAACC,SAAS,EAAE;IACd,OAAOpH,SAAS;;EAElB,IAAM6E,MAAM,IAAAyC,eAAA,GAAIH,OAAe,CAACtC,MAAM,YAAAyC,eAAA,GAAIC,YAAY,CAACH,SAAS,CAAC;EACjE,IAAI,CAACvC,MAAM,EAAE;IACX,OAAO7E,SAAS;;EAElB,OAAO;IAAEoE,IAAI,EAAEgD,SAAS;IAAEvC,MAAM,EAANA;GAAQ;AACpC;AAEA,SAASwC,eAAeA,CAACF,OAAgB;EACvC,IAAIA,OAAO,IAAI,IAAI,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAClD,OAAOnH,SAAS;;EAGlB,IAAIM,KAAK,CAACkH,OAAO,CAACL,OAAO,CAAC,EAAE;IAC1B,IAAIM,gBAAgB,CAACN,OAAO,CAAC,EAAE;MAC7B,OAAOA,OAAO;KACf,MAAM;;MAEL,OAAOnH,SAAS;;;EAIpB,IAAImH,OAAO,IAAI,IAAI,EAAE;IACnB,OAAOnH,SAAS;;EAGlB,IAAI,MAAM,IAAImH,OAAO,IAAI,OAAQA,OAAe,CAAC/C,IAAI,KAAK,QAAQ,EAAE;IAClE,IACE9D,KAAK,CAACkH,OAAO,CAAEL,OAAe,CAAC/C,IAAI,CAAC,IACpCqD,gBAAgB,CAAEN,OAAe,CAAC/C,IAAI,CAAC,EACvC;MACA,OAAQ+C,OAAe,CAAC/C,IAAI;KAC7B,MAAM,IAAK+C,OAAe,CAAC/C,IAAI,IAAI,IAAI,EAAE;MACxC,OAAO,CAAE+C,OAAe,CAAC/C,IAAI,CAAC;KAC/B,MAAM;MACL,OAAOpE,SAAS;;;EAGpB,IAAI,WAAW,IAAImH,OAAO,IAAI,OAAO,IAAIA,OAAO,EAAE;IAChD,OAAOnH,SAAS;;;EAIlB,OAAO,CAACmH,OAAO,CAAC;AAClB;AAEA,SAASM,gBAAgBA,CAACC,GAAc;EACtC,OAAOA,GAAG,CAACC,KAAK,CAAC,UAACzG,CAAC;IAAA,OAAK,OAAOA,CAAC,KAAK,QAAQ,IAAI,CAACZ,KAAK,CAACkH,OAAO,CAACtG,CAAC,CAAC;IAAC;AACrE;AAEA,SAASqG,YAAYA,CAACnD,IAAW;EAC/B,IAAMwD,QAAQ,GAAmC,EAAE;EACnDxD,IAAI,CAACyD,OAAO,CAAC,UAACC,KAAU;IACtB,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtCxH,KAAK,CAACyH,IAAI,CAACC,MAAM,CAACC,OAAO,CAACH,KAAK,CAAC,CAAC,CAACD,OAAO,CAAC,UAAA9C,IAAA;YAAEmD,CAAC,GAAAnD,IAAA;UAAEoD,CAAC,GAAApD,IAAA;QAC9C,IAAMqD,YAAY,GAChB,OAAOD,CAAC,KAAK,QAAQ,GACjB,QAAQ,GACR,OAAOA,CAAC,KAAK,SAAS,GACtB,SAAS,GACT,OAAOA,CAAC,KAAK,QAAQ,GACrB,QAAQ,GACR,SAAS;QACf,IAAIP,QAAQ,CAACM,CAAC,CAAC,IAAIN,QAAQ,CAACM,CAAC,CAAC,KAAKE,YAAY,EAAE;UAC/CR,QAAQ,CAACM,CAAC,CAAC,GAAG,SAAS;SACxB,MAAM;UACLN,QAAQ,CAACM,CAAC,CAAC,GAAGE,YAAY;;OAE7B,CAAC;;GAEL,CAAC;EACF,OAAO;IACLjH,EAAE,EAAE,UAAU;IACdkH,MAAM,EAAEL,MAAM,CAACC,OAAO,CAACL,QAAQ,CAAC,CAAC3G,GAAG,CAAC,UAAAqH,KAAA;MAAA,IAAExI,CAAC,GAAAwI,KAAA;QAAEC,CAAC,GAAAD,KAAA;MAAA,OAAO;QAChDnH,EAAE,EAAErB,CAAC;QACLgG,IAAI,EAAEyC,CAAC;QACPC,QAAQ,EAAE;OACX;KAAC;GACH;AACH;AAOA,IAAMC,SAAS,GAAG,SAAZA,SAASA;EAAA,YAAYC,IAAI,CAACC,MAAM,EAAE;AAAA,CAAE;AAE1C,SAAgBC,kBAAkBA,CAChCC,sBAAoC,EACpChE,MAA+B,EAC/BiE,iBAA6D;;EAK7D,IAAMC,YAAY,IAAAC,cAAA,GAAGnE,MAAM,oBAANA,MAAM,CAAEwD,MAAM,YAAAW,cAAA,GAAI,EAAE;EACzC,IAAMC,SAAS,GAAGnI,OAAO,CAACiI,YAAY,CAAC;EACvC,IAAMG,iBAAiB,GAAG,IAAIC,GAAG,CAC/B/H,WAAW,CAACyH,sBAAsB,CAAC5H,GAAG,CAAC,UAACnB,CAAC;IAAA,OAAKA,CAAC,CAACsJ,OAAO;IAAC,CAAC,CAC1D;EACD,IAAMC,mBAAmB,GAAGR,sBAAsB,CAACS,OAAO,CAAC,UAACxJ,CAAC;IAC3D,IAAI,CAACA,CAAC,CAACsJ,OAAO,EAAE;MACd,OAAO,CAAApK,QAAA;QACHS,GAAG,EAAEgJ,SAAS;SAAOK,iBAAiB,CAAC9I,SAAS,CAAC,EAAKF,CAAC,EACnD;;IAEV,IAAMyJ,KAAK,GAAGN,SAAS,CAACjH,GAAG,CAAClC,CAAC,CAACsJ,OAAiB,CAAC;;IAGhD,IAAI,CAACG,KAAK,EAAE;MACV,OAAO,EAAE;;IAGX,OAAO,CAAAvK,QAAA;MAEHS,GAAG,EAAEgJ,SAAS;OACXK,iBAAiB,CAACS,KAAK,CAAC,EACxBzJ,CAAC,EAEA;GACT,CAAC;EACF,IAAM0J,gBAAgB,GAAGT,YAAY,CAClC1H,MAAM,CAAC,UAACvB,CAAC;IAAA,OAAK,CAACoJ,iBAAiB,CAACvF,GAAG,CAAC7D,CAAC,CAACqB,EAAE,CAAC;IAAC,CAC3CF,GAAG,CACF,UAACnB,CAAC;IAAA,OAAAd,QAAA;MACAS,GAAG,EAAEgJ,SAAS;OACXK,iBAAiB,CAAChJ,CAAC,CAAC;GACvB,CACH;EACH,IAAM2J,YAAY,MAAAC,MAAA,CAAOL,mBAAmB,EAAKG,gBAAgB,CAAC;EAClE,IAAMG,uBAAuB,MAAAD,MAAA,CACxBb,sBAAsB,EACtBW,gBAAgB,CAACvI,GAAG,CAAC,UAACnB,CAAC;IAAA,OAAM;MAAEL,GAAG,EAAEK,CAAC,CAACL,GAAG;MAAE2J,OAAO,EAAEtJ,CAAC,CAACsJ;KAAS;GAAC,CAAC,CACrD;EACjB,OAAO;IAAEK,YAAY,EAAZA,YAAY;IAAEE,uBAAuB,EAAvBA;GAAyB;AAClD;;;;;;;;;;;;;;;;;;"}
|
|
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>) | undefined\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n\n if (!fetchAndUpdateCache) {\n // There's no key so no fetch to kick off yet; when computing key,\n // we encountered some thrown exception (that's not an undefined data promise),\n // and so we can't fetch yet. This might be dependent on a $state or $prop value\n // that's currently undefined, etc. We will act like an undefined data object,\n // and trigger the usual fallback behavior\n return undefined;\n }\n\n const promise =\n // existing fetch\n promiseRef.fetchingPromise ||\n // No existing fetch, so kick off a fetch\n 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\ninterface PlasmicUndefinedDataErrorPromise extends Promise<any> {\n plasmicType: 'PlasmicUndefinedDataError';\n message: string;\n}\n\nfunction isPlasmicUndefinedDataErrorPromise(\n x: any\n): x is PlasmicUndefinedDataErrorPromise {\n return (\n !!x &&\n typeof x === 'object' &&\n (x as any).plasmicType === 'PlasmicUndefinedDataError'\n );\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\n/**\n * This returns either:\n * * DataOp to perform\n * * undefined/null, if no data op can be performed\n * * PlasmicUndefinedDataErrorPromise, if when trying to evaluate the DataOp to perform,\n * we encounter a PlasmicUndefinedDataErrorPromise, so this operation cannot be\n * performed until that promise is resolved.\n */\nfunction resolveDataOp(\n dataOp: DataOp | undefined | null | (() => DataOp | undefined | null)\n) {\n if (typeof dataOp === 'function') {\n try {\n return dataOp();\n } catch (err) {\n if (isPlasmicUndefinedDataErrorPromise(err)) {\n return err;\n }\n return null;\n }\n } else {\n return dataOp;\n }\n}\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 resolvedDataOp = resolveDataOp(dataOp);\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n // Cannot perform this operation\n const isNullDataOp = !resolvedDataOp;\n // This operation depends on another data query to resolve first\n const isWaitingOnDependentQuery =\n isPlasmicUndefinedDataErrorPromise(resolvedDataOp);\n const key =\n !resolvedDataOp || isPlasmicUndefinedDataErrorPromise(resolvedDataOp)\n ? null\n : makeCacheKey(resolvedDataOp, {\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 if (!key) {\n throw new Error(`Fetcher should never be called without a proper key`);\n }\n\n // dataOp is guaranteed to be a DataOp, and not an undefined promise or null\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 executePlasmicDataOp<T>(resolvedDataOp as 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\n const dependentKeyDataErrorPromise = isPlasmicUndefinedDataErrorPromise(\n resolvedDataOp\n )\n ? resolvedDataOp\n : undefined;\n const fetchAndUpdateCache = React.useMemo(() => {\n if (!key && !dependentKeyDataErrorPromise) {\n // If there's no key, and no data query we're waiting for, then there's\n // no way to perform a fetch\n return undefined;\n }\n return () => {\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\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 if (dependentKeyDataErrorPromise) {\n // We can't actually fetch yet, because we couldn't even evaluate the dataOp\n // to fetch for, because we depend on unfetched data. Once _that_\n // dataOp we depend on is finished, then we can try again. So we\n // will throw and wait for _that_ promise to be resolved instead.\n return dependentKeyDataErrorPromise;\n }\n\n if (!key) {\n throw new Error(`Expected key to be non-null`);\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\n // Now, upon this proxy.get() miss, we want to kick off the fetch. We can't\n // wait for useSWR() to kick off the fetch, because upon data miss we are\n // throwing a promise, and useSWR() won't kick off the fetch till the effect,\n // so it will never get a chance to fetch. Instead, we fetch, and then we\n // put the fetched data into the SWR cache, so that next time useSWR() is called,\n // it will just find it in the cache.\n //\n // However, we don't want to fetch SYNCHRONOUSLY RIGHT NOW, becase we are in\n // the rendering phase (presumably, we're here because some component is trying\n // to read fetched data while rendering). Doing a fetch right now would invoke\n // the fetcher, which is wrapped by @plasmicapp/query to tracking loading state,\n // and upon loading state toggled to true, it will fire loading event listeners,\n // and for example, our antd's <GlobalLoadingIndicator /> will listen to this\n // event and immediately ask antd to show the loading indicator, which mutates\n // antd component's state. It is NOT LEGAL to call setState() on some other\n // component's state during rendering phase!\n //\n // We therefore will delay kicking off the fetch by a tick, so that we will safely\n // start the fetch outside of React rendering phase.\n const fetcherPromise = new Promise((resolve, reject) => {\n setTimeout(() => {\n fetcher().then(resolve, reject);\n }, 1);\n });\n fetcherPromise\n .then((data) => {\n // Insert the fetched data into the SWR cache\n mutate(key, data);\n })\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, dependentKeyDataErrorPromise]);\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n\n // If revalidateIfStale is true, then if there's a cache entry with a key,\n // but no mounted hook with that key yet, and when the hook mounts with the key,\n // swr will revalidate. This may be reasonable behavior, but for us, this\n // happens all the time -- we prepopulate the cache with proxy-invoked fetch,\n // sometimes before swr had a chance to run the effect. So we turn off\n // revalidateIfStale here, and just let the user manage invalidation.\n revalidateIfStale: 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 || isWaitingOnDependentQuery) &&\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 isWaitingOnDependentQuery,\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","isPlasmicUndefinedDataErrorPromise","reactMajorVersion","React","version","split","resolveDataOp","err","PRE_FETCHES","usePlasmicDataOp","resolvedDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","isWaitingOnDependentQuery","fetchingData","useMemo","fetcher","has","existing","fetcherFn","fetcherPromise","set","then","dependentKeyDataErrorPromise","cached","Promise","resolve","cachedError","reject","setTimeout","data","keyInfo","_cache$get","useMutablePlasmicQueryData","shouldRetryOnError","revalidateIfStale","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],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)}))),n}}),[v,y]),P=o.useMemo((function(){return function(){if(y.fetchingPromise)return y.fetchingPromise;var e=f.get(v);return e?Promise.resolve(e):(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&&(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;
|
|
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 T(n||[]);return o(a,"_invoke",{value:O(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(_([])));P&&P!==r&&n.call(P,i)&&(b=P);var E=w.prototype=g.prototype=Object.create(b);function k(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function L(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 O(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 T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(I,this),this.reset(!0)}function _(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}},k(L.prototype),l(L.prototype,u,(function(){return this})),t.AsyncIterator=L,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new L(f(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},k(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:T,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),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;if(t){var o=e.fetchingPromise||t();throw o.plasmicType="PlasmicUndefinedDataError",o.message="Cannot read property "+String(n)+" - data is still loading",o}}})}function w(e){return!!e&&"object"==typeof e&&"PlasmicUndefinedDataError"===e.plasmicType}var b=+o.version.split(".")[0],x=new Map;function P(e,t){var r,u=function(e){if("function"!=typeof e)return e;try{return e()}catch(e){return w(e)?e:null}}(e),c=a.usePlasmicDataSourceContext(),s=!(null==i.useDataEnv||null==(r=i.useDataEnv())||!r.plasmicInternalEnableLoadingBoundary),l=n.usePlasmicDataConfig(),f=l.mutate,h=l.cache,v=!u,y=w(u),P=!u||w(u)?null:g(u,{paginate:null==t?void 0:t.paginate,userAuthToken:null==c?void 0:c.userAuthToken}),E=o.useMemo((function(){return{fetchingPromise:void 0}}),[P]),k=o.useMemo((function(){return function(){if(!P)throw new Error("Fetcher should never be called without a proper key");if(E.fetchingPromise)return E.fetchingPromise;if(P&&x.has(P)){var e=x.get(P);return E.fetchingPromise=e,e}var r=d(u,{userAuthToken:(null==c?void 0:c.userAuthToken)||void 0,user:null==c?void 0:c.user,paginate:null==t?void 0:t.paginate});return E.fetchingPromise=r,P&&(x.set(P,r),r.then((function(){x.delete(P)}),(function(){x.delete(P)}))),r}}),[P,E]),L=w(u)?u:void 0,O=o.useMemo((function(){if(P||L)return function(){if(E.fetchingPromise)return E.fetchingPromise;if(L)return L;if(!P)throw new Error("Expected key to be non-null");var e=h.get(P);if(e)return Promise.resolve(e);var t=h.get("$swr$"+P);if(t)return Promise.reject(t.error);var r=new Promise((function(e,t){setTimeout((function(){k().then(e,t)}),1)}));return r.then((function(e){f(P,e)})).catch((function(e){var t,r=P?"$swr$"+P:"";h.set(r,p({},null!=(t=h.get(r))?t:{},{error:e}))})),r}}),[k,E,h,P,L]),A=n.useMutablePlasmicQueryData(P,k,{shouldRetryOnError:!1,revalidateIfStale:!1}),I=A.data,j=A.error,T=A.isLoading;return null!=E.fetchingPromise&&void 0!==I&&(E.fetchingPromise=void 0),o.useMemo((function(){var e=p({},null!=I?I:{},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}(A,"isLoading","error"));return(null==t||!t.noUndefinedDataProxy)&&b>=18&&s&&(T||v||y)&&void 0===e.data&&void 0===e.schema&&void 0===e.error&&(e.data=m(E,O),e.schema=m(E,O)),e}),[v,y,I,j,T,null==t?void 0:t.noUndefinedDataProxy,s,E,O])}function E(e){return e.every((function(e){return"object"==typeof e&&!Array.isArray(e)}))}var k=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=P(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:k()},r(void 0),e)];var t=a.get(e.fieldId);return t?[p({key:k()},r(t),e)]:[]})),c=o.filter((function(e){return!i.has(e.id)})).map((function(e){return p({key:k()},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 E(e)?e:void 0;if(null!=e){if("data"in e&&"object"==typeof e.data)return Array.isArray(e.data)&&E(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=P(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=P;
|
|
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 {\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 fetcherPromise.then(() => {\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 PRE_FETCHES.delete(key);\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 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 ) {\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","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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"}
|
|
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>) | undefined\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n\n if (!fetchAndUpdateCache) {\n // There's no key so no fetch to kick off yet; when computing key,\n // we encountered some thrown exception (that's not an undefined data promise),\n // and so we can't fetch yet. This might be dependent on a $state or $prop value\n // that's currently undefined, etc. We will act like an undefined data object,\n // and trigger the usual fallback behavior\n return undefined;\n }\n\n const promise =\n // existing fetch\n promiseRef.fetchingPromise ||\n // No existing fetch, so kick off a fetch\n 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\ninterface PlasmicUndefinedDataErrorPromise extends Promise<any> {\n plasmicType: 'PlasmicUndefinedDataError';\n message: string;\n}\n\nfunction isPlasmicUndefinedDataErrorPromise(\n x: any\n): x is PlasmicUndefinedDataErrorPromise {\n return (\n !!x &&\n typeof x === 'object' &&\n (x as any).plasmicType === 'PlasmicUndefinedDataError'\n );\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\n/**\n * This returns either:\n * * DataOp to perform\n * * undefined/null, if no data op can be performed\n * * PlasmicUndefinedDataErrorPromise, if when trying to evaluate the DataOp to perform,\n * we encounter a PlasmicUndefinedDataErrorPromise, so this operation cannot be\n * performed until that promise is resolved.\n */\nfunction resolveDataOp(\n dataOp: DataOp | undefined | null | (() => DataOp | undefined | null)\n) {\n if (typeof dataOp === 'function') {\n try {\n return dataOp();\n } catch (err) {\n if (isPlasmicUndefinedDataErrorPromise(err)) {\n return err;\n }\n return null;\n }\n } else {\n return dataOp;\n }\n}\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 resolvedDataOp = resolveDataOp(dataOp);\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n // Cannot perform this operation\n const isNullDataOp = !resolvedDataOp;\n // This operation depends on another data query to resolve first\n const isWaitingOnDependentQuery =\n isPlasmicUndefinedDataErrorPromise(resolvedDataOp);\n const key =\n !resolvedDataOp || isPlasmicUndefinedDataErrorPromise(resolvedDataOp)\n ? null\n : makeCacheKey(resolvedDataOp, {\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 if (!key) {\n throw new Error(`Fetcher should never be called without a proper key`);\n }\n\n // dataOp is guaranteed to be a DataOp, and not an undefined promise or null\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 executePlasmicDataOp<T>(resolvedDataOp as 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\n const dependentKeyDataErrorPromise = isPlasmicUndefinedDataErrorPromise(\n resolvedDataOp\n )\n ? resolvedDataOp\n : undefined;\n const fetchAndUpdateCache = React.useMemo(() => {\n if (!key && !dependentKeyDataErrorPromise) {\n // If there's no key, and no data query we're waiting for, then there's\n // no way to perform a fetch\n return undefined;\n }\n return () => {\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\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 if (dependentKeyDataErrorPromise) {\n // We can't actually fetch yet, because we couldn't even evaluate the dataOp\n // to fetch for, because we depend on unfetched data. Once _that_\n // dataOp we depend on is finished, then we can try again. So we\n // will throw and wait for _that_ promise to be resolved instead.\n return dependentKeyDataErrorPromise;\n }\n\n if (!key) {\n throw new Error(`Expected key to be non-null`);\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\n // Now, upon this proxy.get() miss, we want to kick off the fetch. We can't\n // wait for useSWR() to kick off the fetch, because upon data miss we are\n // throwing a promise, and useSWR() won't kick off the fetch till the effect,\n // so it will never get a chance to fetch. Instead, we fetch, and then we\n // put the fetched data into the SWR cache, so that next time useSWR() is called,\n // it will just find it in the cache.\n //\n // However, we don't want to fetch SYNCHRONOUSLY RIGHT NOW, becase we are in\n // the rendering phase (presumably, we're here because some component is trying\n // to read fetched data while rendering). Doing a fetch right now would invoke\n // the fetcher, which is wrapped by @plasmicapp/query to tracking loading state,\n // and upon loading state toggled to true, it will fire loading event listeners,\n // and for example, our antd's <GlobalLoadingIndicator /> will listen to this\n // event and immediately ask antd to show the loading indicator, which mutates\n // antd component's state. It is NOT LEGAL to call setState() on some other\n // component's state during rendering phase!\n //\n // We therefore will delay kicking off the fetch by a tick, so that we will safely\n // start the fetch outside of React rendering phase.\n const fetcherPromise = new Promise((resolve, reject) => {\n setTimeout(() => {\n fetcher().then(resolve, reject);\n }, 1);\n });\n fetcherPromise\n .then((data) => {\n // Insert the fetched data into the SWR cache\n mutate(key, data);\n })\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, dependentKeyDataErrorPromise]);\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n\n // If revalidateIfStale is true, then if there's a cache entry with a key,\n // but no mounted hook with that key yet, and when the hook mounts with the key,\n // swr will revalidate. This may be reasonable behavior, but for us, this\n // happens all the time -- we prepopulate the cache with proxy-invoked fetch,\n // sometimes before swr had a chance to run the effect. So we turn off\n // revalidateIfStale here, and just let the user manage invalidation.\n revalidateIfStale: 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 || isWaitingOnDependentQuery) &&\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 isWaitingOnDependentQuery,\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","isPlasmicUndefinedDataErrorPromise","x","reactMajorVersion","React","version","split","PRE_FETCHES","Map","usePlasmicDataOp","resolvedDataOp","err","resolveDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","isWaitingOnDependentQuery","fetchingData","useMemo","undefined","fetcher","has","existing","fetcherPromise","set","then","dependentKeyDataErrorPromise","cached","Promise","resolve","cachedError","reject","setTimeout","data","keyInfo","_cache$get","res","useMutablePlasmicQueryData","shouldRetryOnError","revalidateIfStale","isLoading","result","obj","_len","length","keys","Array","_key","_i","_keys","pick","noUndefinedDataProxy","schema","isArrayOfObjects","arr","every","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
|
@@ -494,14 +494,51 @@ function mkUndefinedDataProxy(promiseRef, fetchAndUpdateCache) {
|
|
|
494
494
|
if (prop === 'isPlasmicUndefinedDataProxy') {
|
|
495
495
|
return true;
|
|
496
496
|
}
|
|
497
|
-
|
|
497
|
+
if (!fetchAndUpdateCache) {
|
|
498
|
+
// There's no key so no fetch to kick off yet; when computing key,
|
|
499
|
+
// we encountered some thrown exception (that's not an undefined data promise),
|
|
500
|
+
// and so we can't fetch yet. This might be dependent on a $state or $prop value
|
|
501
|
+
// that's currently undefined, etc. We will act like an undefined data object,
|
|
502
|
+
// and trigger the usual fallback behavior
|
|
503
|
+
return undefined;
|
|
504
|
+
}
|
|
505
|
+
var promise =
|
|
506
|
+
// existing fetch
|
|
507
|
+
promiseRef.fetchingPromise ||
|
|
508
|
+
// No existing fetch, so kick off a fetch
|
|
509
|
+
fetchAndUpdateCache();
|
|
498
510
|
promise.plasmicType = 'PlasmicUndefinedDataError';
|
|
499
511
|
promise.message = "Cannot read property " + String(prop) + " - data is still loading";
|
|
500
512
|
throw promise;
|
|
501
513
|
}
|
|
502
514
|
});
|
|
503
515
|
}
|
|
516
|
+
function isPlasmicUndefinedDataErrorPromise(x) {
|
|
517
|
+
return !!x && typeof x === 'object' && x.plasmicType === 'PlasmicUndefinedDataError';
|
|
518
|
+
}
|
|
504
519
|
var reactMajorVersion = + /*#__PURE__*/React.version.split('.')[0];
|
|
520
|
+
/**
|
|
521
|
+
* This returns either:
|
|
522
|
+
* * DataOp to perform
|
|
523
|
+
* * undefined/null, if no data op can be performed
|
|
524
|
+
* * PlasmicUndefinedDataErrorPromise, if when trying to evaluate the DataOp to perform,
|
|
525
|
+
* we encounter a PlasmicUndefinedDataErrorPromise, so this operation cannot be
|
|
526
|
+
* performed until that promise is resolved.
|
|
527
|
+
*/
|
|
528
|
+
function resolveDataOp(dataOp) {
|
|
529
|
+
if (typeof dataOp === 'function') {
|
|
530
|
+
try {
|
|
531
|
+
return dataOp();
|
|
532
|
+
} catch (err) {
|
|
533
|
+
if (isPlasmicUndefinedDataErrorPromise(err)) {
|
|
534
|
+
return err;
|
|
535
|
+
}
|
|
536
|
+
return null;
|
|
537
|
+
}
|
|
538
|
+
} else {
|
|
539
|
+
return dataOp;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
505
542
|
/**
|
|
506
543
|
* Fetches can be kicked off two ways -- normally, by useSWR(), or by some
|
|
507
544
|
* expression accessing the `$queries.*` proxy when not ready yet. We need
|
|
@@ -516,13 +553,17 @@ var reactMajorVersion = + /*#__PURE__*/React.version.split('.')[0];
|
|
|
516
553
|
var PRE_FETCHES = /*#__PURE__*/new Map();
|
|
517
554
|
function usePlasmicDataOp(dataOp, opts) {
|
|
518
555
|
var _ph$useDataEnv;
|
|
556
|
+
var resolvedDataOp = resolveDataOp(dataOp);
|
|
519
557
|
var ctx = usePlasmicDataSourceContext();
|
|
520
558
|
var enableLoadingBoundary = !!(useDataEnv != null && (_ph$useDataEnv = useDataEnv()) != null && _ph$useDataEnv[enableLoadingBoundaryKey]);
|
|
521
559
|
var _usePlasmicDataConfig = usePlasmicDataConfig(),
|
|
522
560
|
mutate = _usePlasmicDataConfig.mutate,
|
|
523
561
|
cache = _usePlasmicDataConfig.cache;
|
|
524
|
-
|
|
525
|
-
var
|
|
562
|
+
// Cannot perform this operation
|
|
563
|
+
var isNullDataOp = !resolvedDataOp;
|
|
564
|
+
// This operation depends on another data query to resolve first
|
|
565
|
+
var isWaitingOnDependentQuery = isPlasmicUndefinedDataErrorPromise(resolvedDataOp);
|
|
566
|
+
var key = !resolvedDataOp || isPlasmicUndefinedDataErrorPromise(resolvedDataOp) ? null : makeCacheKey(resolvedDataOp, {
|
|
526
567
|
paginate: opts == null ? void 0 : opts.paginate,
|
|
527
568
|
userAuthToken: ctx == null ? void 0 : ctx.userAuthToken
|
|
528
569
|
});
|
|
@@ -534,6 +575,10 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
534
575
|
var fetcher = React.useMemo(function () {
|
|
535
576
|
return function () {
|
|
536
577
|
// If we are in this function, that means SWR cache missed.
|
|
578
|
+
if (!key) {
|
|
579
|
+
throw new Error("Fetcher should never be called without a proper key");
|
|
580
|
+
}
|
|
581
|
+
// dataOp is guaranteed to be a DataOp, and not an undefined promise or null
|
|
537
582
|
if (fetchingData.fetchingPromise) {
|
|
538
583
|
// Fetch is already underway from this hook
|
|
539
584
|
return fetchingData.fetchingPromise;
|
|
@@ -547,29 +592,34 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
547
592
|
}
|
|
548
593
|
// Else we really need to kick off this fetch now...
|
|
549
594
|
var fetcherFn = function fetcherFn() {
|
|
550
|
-
return (
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
paginate: opts == null ? void 0 : opts.paginate
|
|
556
|
-
})
|
|
557
|
-
);
|
|
595
|
+
return executePlasmicDataOp(resolvedDataOp, {
|
|
596
|
+
userAuthToken: (ctx == null ? void 0 : ctx.userAuthToken) || undefined,
|
|
597
|
+
user: ctx == null ? void 0 : ctx.user,
|
|
598
|
+
paginate: opts == null ? void 0 : opts.paginate
|
|
599
|
+
});
|
|
558
600
|
};
|
|
559
601
|
var fetcherPromise = fetcherFn();
|
|
560
602
|
fetchingData.fetchingPromise = fetcherPromise;
|
|
561
603
|
if (key) {
|
|
562
604
|
PRE_FETCHES.set(key, fetcherPromise);
|
|
605
|
+
// Once we have a result, we rely on swr to perform the caching,
|
|
606
|
+
// so remove from our cache as quickly as possible.
|
|
563
607
|
fetcherPromise.then(function () {
|
|
564
|
-
|
|
565
|
-
|
|
608
|
+
PRE_FETCHES["delete"](key);
|
|
609
|
+
}, function () {
|
|
566
610
|
PRE_FETCHES["delete"](key);
|
|
567
611
|
});
|
|
568
612
|
}
|
|
569
613
|
return fetcherPromise;
|
|
570
614
|
};
|
|
571
615
|
}, [key, fetchingData]);
|
|
616
|
+
var dependentKeyDataErrorPromise = isPlasmicUndefinedDataErrorPromise(resolvedDataOp) ? resolvedDataOp : undefined;
|
|
572
617
|
var fetchAndUpdateCache = React.useMemo(function () {
|
|
618
|
+
if (!key && !dependentKeyDataErrorPromise) {
|
|
619
|
+
// If there's no key, and no data query we're waiting for, then there's
|
|
620
|
+
// no way to perform a fetch
|
|
621
|
+
return undefined;
|
|
622
|
+
}
|
|
573
623
|
return function () {
|
|
574
624
|
// This function is called when the undefined data proxy is invoked.
|
|
575
625
|
// USUALLY, this means the data is not available in SWR yet, and
|
|
@@ -578,6 +628,16 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
578
628
|
// No need to update cache as the exist promise call site will do it
|
|
579
629
|
return fetchingData.fetchingPromise;
|
|
580
630
|
}
|
|
631
|
+
if (dependentKeyDataErrorPromise) {
|
|
632
|
+
// We can't actually fetch yet, because we couldn't even evaluate the dataOp
|
|
633
|
+
// to fetch for, because we depend on unfetched data. Once _that_
|
|
634
|
+
// dataOp we depend on is finished, then we can try again. So we
|
|
635
|
+
// will throw and wait for _that_ promise to be resolved instead.
|
|
636
|
+
return dependentKeyDataErrorPromise;
|
|
637
|
+
}
|
|
638
|
+
if (!key) {
|
|
639
|
+
throw new Error("Expected key to be non-null");
|
|
640
|
+
}
|
|
581
641
|
// SOMETIMES, SWR actually _does_ have the cache, but we still end up
|
|
582
642
|
// here. That's because of how we update $queries, which takes two
|
|
583
643
|
// cycles; each time we render, we build a `new$Queries`, and
|
|
@@ -590,9 +650,37 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
590
650
|
if (cached) {
|
|
591
651
|
return Promise.resolve(cached);
|
|
592
652
|
}
|
|
593
|
-
var
|
|
653
|
+
var cachedError = cache.get("$swr$" + key);
|
|
654
|
+
if (cachedError) {
|
|
655
|
+
return Promise.reject(cachedError.error);
|
|
656
|
+
}
|
|
657
|
+
// Now, upon this proxy.get() miss, we want to kick off the fetch. We can't
|
|
658
|
+
// wait for useSWR() to kick off the fetch, because upon data miss we are
|
|
659
|
+
// throwing a promise, and useSWR() won't kick off the fetch till the effect,
|
|
660
|
+
// so it will never get a chance to fetch. Instead, we fetch, and then we
|
|
661
|
+
// put the fetched data into the SWR cache, so that next time useSWR() is called,
|
|
662
|
+
// it will just find it in the cache.
|
|
663
|
+
//
|
|
664
|
+
// However, we don't want to fetch SYNCHRONOUSLY RIGHT NOW, becase we are in
|
|
665
|
+
// the rendering phase (presumably, we're here because some component is trying
|
|
666
|
+
// to read fetched data while rendering). Doing a fetch right now would invoke
|
|
667
|
+
// the fetcher, which is wrapped by @plasmicapp/query to tracking loading state,
|
|
668
|
+
// and upon loading state toggled to true, it will fire loading event listeners,
|
|
669
|
+
// and for example, our antd's <GlobalLoadingIndicator /> will listen to this
|
|
670
|
+
// event and immediately ask antd to show the loading indicator, which mutates
|
|
671
|
+
// antd component's state. It is NOT LEGAL to call setState() on some other
|
|
672
|
+
// component's state during rendering phase!
|
|
673
|
+
//
|
|
674
|
+
// We therefore will delay kicking off the fetch by a tick, so that we will safely
|
|
675
|
+
// start the fetch outside of React rendering phase.
|
|
676
|
+
var fetcherPromise = new Promise(function (resolve, reject) {
|
|
677
|
+
setTimeout(function () {
|
|
678
|
+
fetcher().then(resolve, reject);
|
|
679
|
+
}, 1);
|
|
680
|
+
});
|
|
594
681
|
fetcherPromise.then(function (data) {
|
|
595
|
-
|
|
682
|
+
// Insert the fetched data into the SWR cache
|
|
683
|
+
mutate(key, data);
|
|
596
684
|
})["catch"](function (err) {
|
|
597
685
|
var _cache$get;
|
|
598
686
|
// Cache the error here to avoid infinite loop
|
|
@@ -601,11 +689,18 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
601
689
|
error: err
|
|
602
690
|
}));
|
|
603
691
|
});
|
|
604
|
-
return
|
|
692
|
+
return fetcherPromise;
|
|
605
693
|
};
|
|
606
|
-
}, [fetcher, fetchingData, cache, key]);
|
|
694
|
+
}, [fetcher, fetchingData, cache, key, dependentKeyDataErrorPromise]);
|
|
607
695
|
var res = useMutablePlasmicQueryData(key, fetcher, {
|
|
608
|
-
shouldRetryOnError: false
|
|
696
|
+
shouldRetryOnError: false,
|
|
697
|
+
// If revalidateIfStale is true, then if there's a cache entry with a key,
|
|
698
|
+
// but no mounted hook with that key yet, and when the hook mounts with the key,
|
|
699
|
+
// swr will revalidate. This may be reasonable behavior, but for us, this
|
|
700
|
+
// happens all the time -- we prepopulate the cache with proxy-invoked fetch,
|
|
701
|
+
// sometimes before swr had a chance to run the effect. So we turn off
|
|
702
|
+
// revalidateIfStale here, and just let the user manage invalidation.
|
|
703
|
+
revalidateIfStale: false
|
|
609
704
|
});
|
|
610
705
|
var data = res.data,
|
|
611
706
|
error = res.error,
|
|
@@ -617,12 +712,12 @@ function usePlasmicDataOp(dataOp, opts) {
|
|
|
617
712
|
}
|
|
618
713
|
return React.useMemo(function () {
|
|
619
714
|
var result = _extends({}, data != null ? data : {}, pick(res, 'isLoading', 'error'));
|
|
620
|
-
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp) && result.data === undefined && result.schema === undefined) {
|
|
715
|
+
if (!(opts != null && opts.noUndefinedDataProxy) && reactMajorVersion >= 18 && enableLoadingBoundary && (isLoading || isNullDataOp || isWaitingOnDependentQuery) && result.data === undefined && result.schema === undefined && result.error === undefined) {
|
|
621
716
|
result.data = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
622
717
|
result.schema = mkUndefinedDataProxy(fetchingData, fetchAndUpdateCache);
|
|
623
718
|
}
|
|
624
719
|
return result;
|
|
625
|
-
}, [isNullDataOp, data, error, isLoading, opts == null ? void 0 : opts.noUndefinedDataProxy, enableLoadingBoundary, fetchingData, fetchAndUpdateCache]);
|
|
720
|
+
}, [isNullDataOp, isWaitingOnDependentQuery, data, error, isLoading, opts == null ? void 0 : opts.noUndefinedDataProxy, enableLoadingBoundary, fetchingData, fetchAndUpdateCache]);
|
|
626
721
|
}
|
|
627
722
|
function usePlasmicDataMutationOp(dataOp) {
|
|
628
723
|
var _ref = dataOp != null ? dataOp : {},
|
|
@@ -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 {\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 fetcherPromise.then(() => {\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 PRE_FETCHES.delete(key);\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 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 ) {\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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,YAAY,GAAG,0BAA0B;AAiB/C,IAAMC,oBAAoB,GACxB,mHAAmH;SAE/FC,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA;EAAA,QAAAC,sBAAA,GAAAA,sBAAA,IAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAnC,SAAAC,QAELC,EAAU,EAAEC,IAAkB;IAAA,IAAAC,IAAA,EAAAC,GAAA;IAAA,OAAAN,mBAAA,GAAAO,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACxBN,IAAI,GAAGO,SAAS,CACpB,2BAA2B,EAC3BC,qBAAqB,CACU;UAAAJ,QAAA,CAAAE,IAAA;UAAA,OACfG,kBAAkB,CAACT,IAAI,CAAC,CAACF,EAAE,EAAEC,IAAI,CAAC;QAAA;UAA9CE,GAAG,GAAAG,QAAA,CAAAM,IAAA;UAAA,OAAAN,QAAA,CAAAO,MAAA,WACFV,GAAQ;QAAA;QAAA;UAAA,OAAAG,QAAA,CAAAQ,IAAA;;OAAAf,OAAA;GAChB,IAAAgB,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEcN,qBAAqBA,CAAAO,GAAA,EAAAC,GAAA;EAAA,QAAAC,sBAAA,GAAAA,sBAAA,IAAAvB,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAApC,SAAAsB,SAEEpB,EAAU,EAAEC,IAAkB;IAAA,IAAAoB,YAAA;IAAA,IAAAC,IAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA;IAAA,OAAA5B,mBAAA,GAAAO,IAAA,UAAAsB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAApB,IAAA,GAAAoB,SAAA,CAAAnB,IAAA;QAAA;UAAA,KAC1BR,EAAE,CAAC4B,MAAM;YAAAD,SAAA,CAAAnB,IAAA;YAAA;;UAAA,MACP,EAACP,IAAI,YAAJA,IAAI,CAAE4B,IAAI,KAAI,CAAC5B,IAAI,CAAC4B,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC/B,EAAE,CAAC4B,MAAM,CAAC;YAAAD,SAAA,CAAAnB,IAAA;YAAA;;UACvDwB,OAAO,CAACC,KAAK,CAAC1C,oBAAoB,CAAC;UAAC,MAC9B,IAAI2C,KAAK,CAAC3C,oBAAoB,CAAC;QAAA;UAInC+B,IAAI,GAAGb,SAAS,CAAC,qBAAqB,EAAEnB,YAAY,CAAC;UAErDiC,GAAG,GAAMD,IAAI,oCAA+BtB,EAAE,CAACmC,QAAQ;UAAAR,SAAA,CAAAnB,IAAA;UAAA,OAC1C4B,KAAK,CAACb,GAAG,EAAE;YAC5Bc,MAAM,EAAE,MAAM;YACdC,OAAO,EAAAC,QAAA;cACL,cAAc,EAAE;eACZ,CAAAtC,IAAI,oBAAJA,IAAI,CAAEuC,aAAa,KAAI;cACzB,gCAAgC,EAAEvC,IAAI,CAACuC;aACxC,CACF;YACDC,IAAI,EAAEC,SAAS,CAAC;cACdC,IAAI,EAAE3C,EAAE,CAAC2C,IAAI;cACbC,QAAQ,GAAAvB,YAAA,GAAErB,EAAE,CAAC4C,QAAQ,YAAAvB,YAAA,GAAI,EAAE;cAC3BwB,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C;aACjB;WACF,CAAC;QAAA;UAbIrB,IAAI,GAAAG,SAAA,CAAAf,IAAA;UAAA,MAcNY,IAAI,CAACsB,MAAM,KAAK,GAAG;YAAAnB,SAAA,CAAAnB,IAAA;YAAA;;UAAAmB,SAAA,CAAAnB,IAAA;UAAA,OACFgB,IAAI,CAACC,IAAI,EAAE;QAAA;UAAxBA,IAAI,GAAAE,SAAA,CAAAf,IAAA;UAAA,MACJ,IAAIsB,KAAK,CAACT,IAAI,CAAC;QAAA;UAAAE,SAAA,CAAAnB,IAAA;UAAA,OAETgB,IAAI,CAACuB,IAAI,EAAE;QAAA;UAAA,OAAApB,SAAA,CAAAd,MAAA,WAAAc,SAAA,CAAAf,IAAA;QAAA;QAAA;UAAA,OAAAe,SAAA,CAAAb,IAAA;;OAAAM,QAAA;GAC1B,IAAAL,KAAA,OAAAC,SAAA;AAAA;AAED,SAASP,SAASA,CAAIuC,GAAW,EAAEC,YAAe;EAChD,IAAI,OAAOC,UAAU,KAAK,WAAW,EAAE;IACrC,OAAOD,YAAY;GACpB,MAAM;IAAA,IAAAE,eAAA;IACL,QAAAA,eAAA,GAAQD,UAAkB,CAACF,GAAG,CAAC,YAAAG,eAAA,GAAIF,YAAY;;AAEnD;;SC7EgBG,OAAOA,CAAIC,CAAU;EACnC,IAAI;IACF,OAAOA,CAAC,EAAE;GACX,CAAC,OAAAC,OAAA,EAAM;IACN,OAAOC,SAAS;;AAEpB;AAEA,SAAgBC,IAAIA,CAClBC,GAAM;EAGN,IAAMtD,GAAG,GAAQ,EAAE;EAAC,SAAAuD,IAAA,GAAA1C,SAAA,CAAA2C,MAAA,EAFjBC,IAAS,OAAAC,KAAA,CAAAH,IAAA,OAAAA,IAAA,WAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;IAATF,IAAS,CAAAE,IAAA,QAAA9C,SAAA,CAAA8C,IAAA;;EAGZ,SAAAC,EAAA,MAAAC,KAAA,GAAkBJ,IAAI,EAAAG,EAAA,GAAAC,KAAA,CAAAL,MAAA,EAAAI,EAAA,IAAE;IAAnB,IAAMf,GAAG,GAAAgB,KAAA,CAAAD,EAAA;IACZ,IAAIf,GAAG,IAAIS,GAAG,EAAE;MACdtD,GAAG,CAAC6C,GAAG,CAAC,GAAGS,GAAG,CAACT,GAAc,CAAC;;;EAGlC,OAAO7C,GAAG;AACZ;AAYA,AA+DO,IAAM8D,KAAK,GAAG,SAARA,KAAKA;EAAA,SAAAC,KAAA,GAAAlD,SAAA,CAAA2C,MAAA,EAAwBQ,IAAO,OAAAN,KAAA,CAAAK,KAAA,GAAAE,KAAA,MAAAA,KAAA,GAAAF,KAAA,EAAAE,KAAA;IAAPD,IAAO,CAAAC,KAAA,IAAApD,SAAA,CAAAoD,KAAA;;EAAA,OAAQD,IAAI;AAAA;AAM7D,SAAgBE,OAAOA,CAAkBC,EAAoB;EAC3D,OAAO,IAAIC,GAAG,CAACD,EAAE,CAACE,GAAG,CAAC,UAACC,CAAC;IAAA,OAAKR,KAAK,CAACQ,CAAC,CAACC,EAAE,EAAED,CAAC,CAAgB;IAAC,CAAC;AAC9D;AAEA,SAEgBE,WAAWA,CAAIL,EAA+B;EAC5D,OAAOA,EAAE,CAACM,MAAM,CAAC,UAACH,CAAC;IAAA,OAAaA,CAAC,IAAI,IAAI;IAAC;AAC5C;;SCjGgBI,YAAYA,CAC1BC,MAAc,EACd7E,IAA+D;EAE/D,IAAM8E,iBAAiB,GAAGC,IAAI,CAACtC,SAAS,CAAC;IACvCP,QAAQ,EAAE2C,MAAM,CAAC3C,QAAQ;IACzBQ,IAAI,EAAEmC,MAAM,CAACnC,IAAI;IACjBwB,IAAI,EAAEW,MAAM,CAAClC,QAAQ;IACrBJ,aAAa,EAAEvC,IAAI,oBAAJA,IAAI,CAAEuC,aAAa;IAClCK,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C;GACjB,CAAC;EACF,OAAOiC,MAAM,CAACG,QAAQ,QACfH,MAAM,CAACG,QAAQ,GAAGF,iBAAiB,GACtCA,iBAAiB;AACvB;AAEA,IAAMG,wBAAwB,GAAG,sCAAsC;AAEvE,SAASC,oBAAoBA,CAC3BC,UAAyD,EACzDC,mBAAuC;EAEvC,OAAO,IAAIC,KAAK,CACd,EAAE,EACF;IACEC,GAAG,EAAE,SAAAA,IAACC,OAAO,EAAEC,IAAI;MACjB,IAAIA,IAAI,KAAK,6BAA6B,EAAE;QAC1C,OAAO,IAAI;;MAEb,IAAMC,OAAO,GAAGN,UAAU,CAACO,eAAe,IAAIN,mBAAmB,EAAE;MAClEK,OAAe,CAACE,WAAW,GAAG,2BAA2B;MACzDF,OAAe,CAACG,OAAO,6BAA2BC,MAAM,CACvDL,IAAI,CACL,6BAA0B;MAC3B,MAAMC,OAAO;;GAEhB,CACK;AACV;AAEA,IAAMK,iBAAiB,GAAG,eAACC,KAAK,CAACC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEtD;;;;;;;;;;;AAWA,IAAMC,WAAW,gBAAG,IAAI5B,GAAG,EAAwB;AAEnD,SAAgB6B,gBAAgBA,CAI9BtB,MAA0B,EAC1B7E,IAGC;;EAKD,IAAMoG,GAAG,GAAGC,2BAA2B,EAAE;EACzC,IAAMC,qBAAqB,GAAG,CAAC,EAACC,UAAa,aAAAC,cAAA,GAAbD,UAAa,EAAI,aAAjBC,cAAA,CAAoBvB,wBAAwB,CAAC;EAC7E,IAAAwB,qBAAA,GAA0BC,oBAAoB,EAAE;IAAxCC,MAAM,GAAAF,qBAAA,CAANE,MAAM;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;EACrB,IAAMC,YAAY,GAAG,CAAChC,MAAM;EAC5B,IAAM9B,GAAG,GAAG8D,YAAY,GACpB,IAAI,GACJjC,YAAY,CAACC,MAAO,EAAE;IACpBjC,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C,QAAQ;IACxBL,aAAa,EAAE6D,GAAG,oBAAHA,GAAG,CAAE7D;GACrB,CAAC;EACN,IAAMuE,YAAY,GAAGf,KAAK,CAACgB,OAAO,CAChC;IAAA,OAAO;MACLrB,eAAe,EAAEpC;KAClB;GAAC,EACF,CAACP,GAAG,CAAC,CACN;EACD,IAAMiE,OAAO,GAAGjB,KAAK,CAACgB,OAAO,CAC3B;IAAA,OAAM;;MAGJ,IAAID,YAAY,CAACpB,eAAe,EAAE;;QAEhC,OAAOoB,YAAY,CAACpB,eAAe;;MAGrC,IAAI3C,GAAG,IAAImD,WAAW,CAACe,GAAG,CAAClE,GAAG,CAAC,EAAE;;;QAG/B,IAAMmE,QAAQ,GAAGhB,WAAW,CAACZ,GAAG,CAACvC,GAAG,CAAe;QACnD+D,YAAY,CAACpB,eAAe,GAAGwB,QAAQ;QACvC,OAAOA,QAAQ;;;MAIjB,IAAMC,SAAS,GAAG,SAAZA,SAASA;QAAA;;UAEb5H,oBAAoB,CAAIsF,MAAO,EAAE;YAC/BtC,aAAa,EAAE,CAAA6D,GAAG,oBAAHA,GAAG,CAAE7D,aAAa,KAAIe,SAAS;YAC9C1B,IAAI,EAAEwE,GAAG,oBAAHA,GAAG,CAAExE,IAAI;YACfgB,QAAQ,EAAE5C,IAAI,oBAAJA,IAAI,CAAE4C;WACjB;;;MACH,IAAMwE,cAAc,GAAGD,SAAS,EAAE;MAClCL,YAAY,CAACpB,eAAe,GAAG0B,cAAc;MAC7C,IAAIrE,GAAG,EAAE;QACPmD,WAAW,CAACmB,GAAG,CAACtE,GAAG,EAAEqE,cAAc,CAAC;QACpCA,cAAc,CAACE,IAAI,CAAC;;;UAGlBpB,WAAW,UAAO,CAACnD,GAAG,CAAC;SACxB,CAAC;;MAEJ,OAAOqE,cAAc;KACtB;KACD,CAACrE,GAAG,EAAE+D,YAAY,CAAC,CACpB;EACD,IAAM1B,mBAAmB,GAAGW,KAAK,CAACgB,OAAO,CACvC;IAAA,OAAM;;;;MAIJ,IAAID,YAAY,CAACpB,eAAe,EAAE;;QAEhC,OAAOoB,YAAY,CAACpB,eAAe;;;;;;;;;;MAWrC,IAAM6B,MAAM,GAAGX,KAAK,CAACtB,GAAG,CAACvC,GAAG,CAAC;MAC7B,IAAIwE,MAAM,EAAE;QACV,OAAOC,OAAO,CAACC,OAAO,CAACF,MAAM,CAAC;;MAEhC,IAAMH,cAAc,GAAGJ,OAAO,EAAE;MAChCI,cAAc,CACXE,IAAI,CAAC,UAACI,IAAI;QAAA,OAAKf,MAAM,CAAC5D,GAAG,EAAE2E,IAAI,CAAC;QAAC,SAC5B,CAAC,UAACC,GAAG;;;QAET,IAAMC,OAAO,GAAG7E,GAAG,GAAG,OAAO,GAAGA,GAAG,GAAG,EAAE;QACxC6D,KAAK,CAACS,GAAG,CAACO,OAAO,EAAAtF,QAAA,MAAAuF,UAAA,GAAQjB,KAAK,CAACtB,GAAG,CAACsC,OAAO,CAAC,YAAAC,UAAA,GAAI,EAAE;UAAG7F,KAAK,EAAE2F;UAAK,CAAC;OAClE,CAAC;MACJ,OAAOb,YAAY,CAACpB,eAAgB;KACrC;KACD,CAACsB,OAAO,EAAEF,YAAY,EAAEF,KAAK,EAAE7D,GAAG,CAAC,CACpC;EACD,IAAM7C,GAAG,GAAG4H,0BAA0B,CAAO/E,GAAG,EAAEiE,OAAO,EAAE;IACzDe,kBAAkB,EAAE;GACrB,CAAC;EACF,IAAQL,IAAI,GAAuBxH,GAAG,CAA9BwH,IAAI;IAAE1F,KAAK,GAAgB9B,GAAG,CAAxB8B,KAAK;IAAEgG,SAAS,GAAK9H,GAAG,CAAjB8H,SAAS;EAC9B,IAAIlB,YAAY,CAACpB,eAAe,IAAI,IAAI,IAAIgC,IAAI,KAAKpE,SAAS,EAAE;;;IAG9DwD,YAAY,CAACpB,eAAe,GAAGpC,SAAS;;EAE1C,OAAOyC,KAAK,CAACgB,OAAO,CAAC;IACnB,IAAMkB,MAAM,GAAA3F,QAAA,KACNoF,IAAI,WAAJA,IAAI,GAAK,EAAiB,EAC3BnE,IAAI,CAACrD,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CACnC;IACD,IACE,EAACF,IAAI,YAAJA,IAAI,CAAEkI,oBAAoB,KAC3BpC,iBAAiB,IAAI,EAAE,IACvBQ,qBAAqB,KACpB0B,SAAS,IAAInB,YAAY,CAAC,IAC3BoB,MAAM,CAACP,IAAI,KAAKpE,SAAS,IACzB2E,MAAM,CAACE,MAAM,KAAK7E,SAAS,EAC3B;MACA2E,MAAM,CAACP,IAAI,GAAGxC,oBAAoB,CAAC4B,YAAY,EAAE1B,mBAAmB,CAAC;MACrE6C,MAAM,CAACE,MAAM,GAAGjD,oBAAoB,CAAC4B,YAAY,EAAE1B,mBAAmB,CAAC;;IAEzE,OAAO6C,MAAM;GACd,EAAE,CACDpB,YAAY,EACZa,IAAI,EACJ1F,KAAK,EACLgG,SAAS,EACThI,IAAI,oBAAJA,IAAI,CAAEkI,oBAAoB,EAC1B5B,qBAAqB,EACrBQ,YAAY,EACZ1B,mBAAmB,CACpB,CAAC;AACJ;AAEA,SAAgBgD,wBAAwBA,CAEtCvD,MAA0B;EAC1B,IAAAwD,IAAA,GAAqCxD,MAAM,WAANA,MAAM,GAAI,EAAE;IAAzC3C,QAAQ,GAAAmG,IAAA,CAARnG,QAAQ;IAAEQ,IAAI,GAAA2F,IAAA,CAAJ3F,IAAI;IAAEC,QAAQ,GAAA0F,IAAA,CAAR1F,QAAQ;EAChC,IAAMyD,GAAG,GAAGC,2BAA2B,EAAE;EACzC,IAAMiC,SAAS,GAAGlC,GAAG,oBAAHA,GAAG,CAAE7D,aAAa;EACpC,OAAOwD,KAAK,CAACwC,WAAW,eAAA5I,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAC;IAAA,OAAAF,mBAAA,GAAAO,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,MACnB,CAAC2B,QAAQ,IAAI,CAACQ,IAAI;YAAArC,QAAA,CAAAE,IAAA;YAAA;;UAAA,OAAAF,QAAA,CAAAO,MAAA,WACb0C,SAAS;QAAA;UAAA,OAAAjD,QAAA,CAAAO,MAAA,WAEXrB,oBAAoB,CACzB;YAAE2C,QAAQ,EAARA,QAAQ;YAAEQ,IAAI,EAAJA,IAAI;YAAEC,QAAQ,EAARA;WAAU,EAC5B;YACEJ,aAAa,EAAE+F,SAAS,IAAIhF,SAAS;YACrC1B,IAAI,EAAEwE,GAAG,oBAAHA,GAAG,CAAExE;WACZ,CACF;QAAA;QAAA;UAAA,OAAAvB,QAAA,CAAAQ,IAAA;;OAAAf,OAAA;GACF,IAAE,CAACoC,QAAQ,EAAEQ,IAAI,EAAEC,QAAQ,EAAE2F,SAAS,CAAC,CAAC;AAC3C;;SC/MgBE,OAAOA,CAACC,KAAmB;;EACzC,IAAQ5D,MAAM,GAA0C4D,KAAK,CAArD5D,MAAM;IAAE6D,QAAQ,GAAgCD,KAAK,CAA7CC,QAAQ;IAAEC,IAAI,GAA0BF,KAAK,CAAnCE,IAAI;IAAEC,SAAS,GAAeH,KAAK,CAA7BG,SAAS;IAAEC,QAAQ,GAAKJ,KAAK,CAAlBI,QAAQ;EACnD,IAAMnB,IAAI,GAAGvB,gBAAgB,CAACtB,MAAM,EAAAvC,QAAA,KAC9B,CAAC,CAACsG,SAAS,IACb,CAAC,CAACC,QAAQ,IAAI;IACZjG,QAAQ,EAAE;MAAEgG,SAAS,EAATA,SAAS;MAAEC,QAAQ,EAARA;;GACxB,CACJ,CAAC;EAEF,IAAMC,QAAQ,GAAG/C,KAAK,CAACgB,OAAO,CAC5B;IAAA,IAAAgC,SAAA;IAAA,OAAAzG,QAAA,KAAYmG,KAAK,CAACO,OAAO,GAAAD,SAAA,OAAAA,SAAA,CAAGJ,IAAI,WAAJA,IAAI,GAAI,MAAM,IAAGjB,IAAI,EAAAqB,SAAA;GAAG,EACpD,CAACN,KAAK,CAACO,OAAO,EAAEL,IAAI,EAAEjB,IAAI,CAAC,CAC5B;EAED,QAAAuB,SAAA,GAAOP,QAAQ,oBAARA,QAAQ,CAAGI,QAAQ,CAAC,YAAAG,SAAA,GAAI,IAAI;AACrC;AAEA,IAAaC,WAAW,GAAgC;EACtDP,IAAI,EAAE,6BAA6B;EACnCQ,WAAW,EAAE,cAAc;EAC3BV,KAAK,EAAE;IACL5D,MAAM,EAAE;MACNuE,IAAI,EAAE,cAAqB;MAC3BD,WAAW,EAAE;KACd;IACDR,IAAI,EAAE;MACJS,IAAI,EAAE,QAAQ;MACdD,WAAW,EAAE;KACd;IACDT,QAAQ,EAAE;MACRU,IAAI,EAAE,MAAM;MACZC,gBAAgB,EAAE,CAAC,UAAU;KAC9B;IACDR,QAAQ,EAAE;MACRO,IAAI,EAAE,QAAQ;MACdE,QAAQ,EAAE,IAAI;MACdH,WAAW,EAAE,WAAW;MACxBI,WAAW,EAAE;KACd;IACDX,SAAS,EAAE;MACTQ,IAAI,EAAE,QAAQ;MACdE,QAAQ,EAAE,IAAI;MACdH,WAAW,EAAE,YAAY;MACzBI,WAAW,EAAE;;GAEhB;EACDC,UAAU,EAAE,wCAAwC;EACpDC,UAAU,EAAE,SAAS;EACrBC,cAAc,EAAE,IAAI;EACpBC,aAAa,EAAE;CAChB;;AC7DD,SAASC,WAAWA,CAAIC,KAAoB;EAC1C,IAAMC,SAAS,GAAG/D,KAAK,CAACgE,MAAM,CAAgBzG,SAAS,CAAC;EAExDyC,KAAK,CAACiE,SAAS,CAAC;IACdF,SAAS,CAACG,OAAO,GAAGJ,KAAK;IAEzB,OAAO;MACLC,SAAS,CAACG,OAAO,GAAG3G,SAAS;KAC9B;GACF,CAAC;EAEF,OAAOwG,SAAS,CAACG,OAAO;AAC1B;AAQA;;;AAGA,SAAgBC,uBAAuBA,CAAA7B,IAAA;MACrCS,QAAQ,GAAAT,IAAA,CAARS,QAAQ;IACRqB,SAAS,GAAA9B,IAAA,CAAT8B,SAAS;IACTC,gBAAgB,GAAA/B,IAAA,CAAhB+B,gBAAgB;IAChBzB,IAAI,GAAAN,IAAA,CAAJM,IAAI;IACJC,SAAS,GAAAP,IAAA,CAATO,SAAS;IACTC,QAAQ,GAAAR,IAAA,CAARQ,QAAQ;EAER,IAAMnB,IAAI,GAAGvB,gBAAgB,CAAChD,OAAO,CAACgH,SAAS,CAAC,EAAA7H,QAAA,KAC1C,CAAC,CAACsG,SAAS,IACb,CAAC,CAACC,QAAQ,IAAI;IACZjG,QAAQ,EAAE;MAAEgG,SAAS,EAATA,SAAS;MAAEC,QAAQ,EAARA;;GACxB,CACJ,CAAC;EACF,IAAMwB,SAAS,GAAG1B,IAAI,WAAJA,IAAI,GAAI,MAAM;EAChC,IAAM2B,QAAQ,GAAGV,WAAW,CAACS,SAAS,CAAC;EACvCtE,KAAK,CAACiE,SAAS,CAAC;IACd,IAAI,EAAEK,SAAS,IAAIvB,QAAQ,CAAC,IAAIA,QAAQ,CAACuB,SAAS,CAAC,KAAK3C,IAAI,EAAE;MAAA,IAAAqB,SAAA;MAC5D,IAAMwB,SAAS,GAAAjI,QAAA,KACVwG,QAAQ,GAAAC,SAAA,OAAAA,SAAA,CACVsB,SAAS,IAAG3C,IAAI,EAAAqB,SAAA,EAClB;MACD,IAAIuB,QAAQ,IAAID,SAAS,KAAKC,QAAQ,IAAIA,QAAQ,IAAIxB,QAAQ,EAAE;QAC9D,OAAOyB,SAAS,CAACD,QAAQ,CAAC;;MAE5BF,gBAAgB,CAACG,SAAS,CAAC;;GAE9B,EAAE,CAACF,SAAS,EAAEC,QAAQ,EAAE5C,IAAI,EAAEoB,QAAQ,EAAEsB,gBAAgB,CAAC,CAAC;AAC7D;;SCvCgBI,aAAaA,CAACC,OAAgB;;EAC5C,IAAI,CAACA,OAAO,EAAE;IACZ,OAAOnH,SAAS;;EAGlB,IAAMoH,SAAS,GAAGC,eAAe,CAACF,OAAO,CAAC;EAC1C,IAAI,CAACC,SAAS,EAAE;IACd,OAAOpH,SAAS;;EAElB,IAAM6E,MAAM,IAAAyC,eAAA,GAAIH,OAAe,CAACtC,MAAM,YAAAyC,eAAA,GAAIC,YAAY,CAACH,SAAS,CAAC;EACjE,IAAI,CAACvC,MAAM,EAAE;IACX,OAAO7E,SAAS;;EAElB,OAAO;IAAEoE,IAAI,EAAEgD,SAAS;IAAEvC,MAAM,EAANA;GAAQ;AACpC;AAEA,SAASwC,eAAeA,CAACF,OAAgB;EACvC,IAAIA,OAAO,IAAI,IAAI,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;IAClD,OAAOnH,SAAS;;EAGlB,IAAIM,KAAK,CAACkH,OAAO,CAACL,OAAO,CAAC,EAAE;IAC1B,IAAIM,gBAAgB,CAACN,OAAO,CAAC,EAAE;MAC7B,OAAOA,OAAO;KACf,MAAM;;MAEL,OAAOnH,SAAS;;;EAIpB,IAAImH,OAAO,IAAI,IAAI,EAAE;IACnB,OAAOnH,SAAS;;EAGlB,IAAI,MAAM,IAAImH,OAAO,IAAI,OAAQA,OAAe,CAAC/C,IAAI,KAAK,QAAQ,EAAE;IAClE,IACE9D,KAAK,CAACkH,OAAO,CAAEL,OAAe,CAAC/C,IAAI,CAAC,IACpCqD,gBAAgB,CAAEN,OAAe,CAAC/C,IAAI,CAAC,EACvC;MACA,OAAQ+C,OAAe,CAAC/C,IAAI;KAC7B,MAAM,IAAK+C,OAAe,CAAC/C,IAAI,IAAI,IAAI,EAAE;MACxC,OAAO,CAAE+C,OAAe,CAAC/C,IAAI,CAAC;KAC/B,MAAM;MACL,OAAOpE,SAAS;;;EAGpB,IAAI,WAAW,IAAImH,OAAO,IAAI,OAAO,IAAIA,OAAO,EAAE;IAChD,OAAOnH,SAAS;;;EAIlB,OAAO,CAACmH,OAAO,CAAC;AAClB;AAEA,SAASM,gBAAgBA,CAACC,GAAc;EACtC,OAAOA,GAAG,CAACC,KAAK,CAAC,UAACzG,CAAC;IAAA,OAAK,OAAOA,CAAC,KAAK,QAAQ,IAAI,CAACZ,KAAK,CAACkH,OAAO,CAACtG,CAAC,CAAC;IAAC;AACrE;AAEA,SAASqG,YAAYA,CAACnD,IAAW;EAC/B,IAAMwD,QAAQ,GAAmC,EAAE;EACnDxD,IAAI,CAACyD,OAAO,CAAC,UAACC,KAAU;IACtB,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtCxH,KAAK,CAACyH,IAAI,CAACC,MAAM,CAACC,OAAO,CAACH,KAAK,CAAC,CAAC,CAACD,OAAO,CAAC,UAAA9C,IAAA;YAAEmD,CAAC,GAAAnD,IAAA;UAAEoD,CAAC,GAAApD,IAAA;QAC9C,IAAMqD,YAAY,GAChB,OAAOD,CAAC,KAAK,QAAQ,GACjB,QAAQ,GACR,OAAOA,CAAC,KAAK,SAAS,GACtB,SAAS,GACT,OAAOA,CAAC,KAAK,QAAQ,GACrB,QAAQ,GACR,SAAS;QACf,IAAIP,QAAQ,CAACM,CAAC,CAAC,IAAIN,QAAQ,CAACM,CAAC,CAAC,KAAKE,YAAY,EAAE;UAC/CR,QAAQ,CAACM,CAAC,CAAC,GAAG,SAAS;SACxB,MAAM;UACLN,QAAQ,CAACM,CAAC,CAAC,GAAGE,YAAY;;OAE7B,CAAC;;GAEL,CAAC;EACF,OAAO;IACLjH,EAAE,EAAE,UAAU;IACdkH,MAAM,EAAEL,MAAM,CAACC,OAAO,CAACL,QAAQ,CAAC,CAAC3G,GAAG,CAAC,UAAAqH,KAAA;MAAA,IAAExI,CAAC,GAAAwI,KAAA;QAAEC,CAAC,GAAAD,KAAA;MAAA,OAAO;QAChDnH,EAAE,EAAErB,CAAC;QACLgG,IAAI,EAAEyC,CAAC;QACPC,QAAQ,EAAE;OACX;KAAC;GACH;AACH;AAOA,IAAMC,SAAS,GAAG,SAAZA,SAASA;EAAA,YAAYC,IAAI,CAACC,MAAM,EAAE;AAAA,CAAE;AAE1C,SAAgBC,kBAAkBA,CAChCC,sBAAoC,EACpChE,MAA+B,EAC/BiE,iBAA6D;;EAK7D,IAAMC,YAAY,IAAAC,cAAA,GAAGnE,MAAM,oBAANA,MAAM,CAAEwD,MAAM,YAAAW,cAAA,GAAI,EAAE;EACzC,IAAMC,SAAS,GAAGnI,OAAO,CAACiI,YAAY,CAAC;EACvC,IAAMG,iBAAiB,GAAG,IAAIC,GAAG,CAC/B/H,WAAW,CAACyH,sBAAsB,CAAC5H,GAAG,CAAC,UAACnB,CAAC;IAAA,OAAKA,CAAC,CAACsJ,OAAO;IAAC,CAAC,CAC1D;EACD,IAAMC,mBAAmB,GAAGR,sBAAsB,CAACS,OAAO,CAAC,UAACxJ,CAAC;IAC3D,IAAI,CAACA,CAAC,CAACsJ,OAAO,EAAE;MACd,OAAO,CAAApK,QAAA;QACHS,GAAG,EAAEgJ,SAAS;SAAOK,iBAAiB,CAAC9I,SAAS,CAAC,EAAKF,CAAC,EACnD;;IAEV,IAAMyJ,KAAK,GAAGN,SAAS,CAACjH,GAAG,CAAClC,CAAC,CAACsJ,OAAiB,CAAC;;IAGhD,IAAI,CAACG,KAAK,EAAE;MACV,OAAO,EAAE;;IAGX,OAAO,CAAAvK,QAAA;MAEHS,GAAG,EAAEgJ,SAAS;OACXK,iBAAiB,CAACS,KAAK,CAAC,EACxBzJ,CAAC,EAEA;GACT,CAAC;EACF,IAAM0J,gBAAgB,GAAGT,YAAY,CAClC1H,MAAM,CAAC,UAACvB,CAAC;IAAA,OAAK,CAACoJ,iBAAiB,CAACvF,GAAG,CAAC7D,CAAC,CAACqB,EAAE,CAAC;IAAC,CAC3CF,GAAG,CACF,UAACnB,CAAC;IAAA,OAAAd,QAAA;MACAS,GAAG,EAAEgJ,SAAS;OACXK,iBAAiB,CAAChJ,CAAC,CAAC;GACvB,CACH;EACH,IAAM2J,YAAY,MAAAC,MAAA,CAAOL,mBAAmB,EAAKG,gBAAgB,CAAC;EAClE,IAAMG,uBAAuB,MAAAD,MAAA,CACxBb,sBAAsB,EACtBW,gBAAgB,CAACvI,GAAG,CAAC,UAACnB,CAAC;IAAA,OAAM;MAAEL,GAAG,EAAEK,CAAC,CAACL,GAAG;MAAE2J,OAAO,EAAEtJ,CAAC,CAACsJ;KAAS;GAAC,CAAC,CACrD;EACjB,OAAO;IAAEK,YAAY,EAAZA,YAAY;IAAEE,uBAAuB,EAAvBA;GAAyB;AAClD;;;;"}
|
|
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>) | undefined\n) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n if (prop === 'isPlasmicUndefinedDataProxy') {\n return true;\n }\n\n if (!fetchAndUpdateCache) {\n // There's no key so no fetch to kick off yet; when computing key,\n // we encountered some thrown exception (that's not an undefined data promise),\n // and so we can't fetch yet. This might be dependent on a $state or $prop value\n // that's currently undefined, etc. We will act like an undefined data object,\n // and trigger the usual fallback behavior\n return undefined;\n }\n\n const promise =\n // existing fetch\n promiseRef.fetchingPromise ||\n // No existing fetch, so kick off a fetch\n 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\ninterface PlasmicUndefinedDataErrorPromise extends Promise<any> {\n plasmicType: 'PlasmicUndefinedDataError';\n message: string;\n}\n\nfunction isPlasmicUndefinedDataErrorPromise(\n x: any\n): x is PlasmicUndefinedDataErrorPromise {\n return (\n !!x &&\n typeof x === 'object' &&\n (x as any).plasmicType === 'PlasmicUndefinedDataError'\n );\n}\n\nconst reactMajorVersion = +React.version.split('.')[0];\n\n/**\n * This returns either:\n * * DataOp to perform\n * * undefined/null, if no data op can be performed\n * * PlasmicUndefinedDataErrorPromise, if when trying to evaluate the DataOp to perform,\n * we encounter a PlasmicUndefinedDataErrorPromise, so this operation cannot be\n * performed until that promise is resolved.\n */\nfunction resolveDataOp(\n dataOp: DataOp | undefined | null | (() => DataOp | undefined | null)\n) {\n if (typeof dataOp === 'function') {\n try {\n return dataOp();\n } catch (err) {\n if (isPlasmicUndefinedDataErrorPromise(err)) {\n return err;\n }\n return null;\n }\n } else {\n return dataOp;\n }\n}\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 resolvedDataOp = resolveDataOp(dataOp);\n const ctx = usePlasmicDataSourceContext();\n const enableLoadingBoundary = !!ph.useDataEnv?.()?.[enableLoadingBoundaryKey];\n const { mutate, cache } = usePlasmicDataConfig();\n // Cannot perform this operation\n const isNullDataOp = !resolvedDataOp;\n // This operation depends on another data query to resolve first\n const isWaitingOnDependentQuery =\n isPlasmicUndefinedDataErrorPromise(resolvedDataOp);\n const key =\n !resolvedDataOp || isPlasmicUndefinedDataErrorPromise(resolvedDataOp)\n ? null\n : makeCacheKey(resolvedDataOp, {\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 if (!key) {\n throw new Error(`Fetcher should never be called without a proper key`);\n }\n\n // dataOp is guaranteed to be a DataOp, and not an undefined promise or null\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 executePlasmicDataOp<T>(resolvedDataOp as 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\n const dependentKeyDataErrorPromise = isPlasmicUndefinedDataErrorPromise(\n resolvedDataOp\n )\n ? resolvedDataOp\n : undefined;\n const fetchAndUpdateCache = React.useMemo(() => {\n if (!key && !dependentKeyDataErrorPromise) {\n // If there's no key, and no data query we're waiting for, then there's\n // no way to perform a fetch\n return undefined;\n }\n return () => {\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\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 if (dependentKeyDataErrorPromise) {\n // We can't actually fetch yet, because we couldn't even evaluate the dataOp\n // to fetch for, because we depend on unfetched data. Once _that_\n // dataOp we depend on is finished, then we can try again. So we\n // will throw and wait for _that_ promise to be resolved instead.\n return dependentKeyDataErrorPromise;\n }\n\n if (!key) {\n throw new Error(`Expected key to be non-null`);\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\n // Now, upon this proxy.get() miss, we want to kick off the fetch. We can't\n // wait for useSWR() to kick off the fetch, because upon data miss we are\n // throwing a promise, and useSWR() won't kick off the fetch till the effect,\n // so it will never get a chance to fetch. Instead, we fetch, and then we\n // put the fetched data into the SWR cache, so that next time useSWR() is called,\n // it will just find it in the cache.\n //\n // However, we don't want to fetch SYNCHRONOUSLY RIGHT NOW, becase we are in\n // the rendering phase (presumably, we're here because some component is trying\n // to read fetched data while rendering). Doing a fetch right now would invoke\n // the fetcher, which is wrapped by @plasmicapp/query to tracking loading state,\n // and upon loading state toggled to true, it will fire loading event listeners,\n // and for example, our antd's <GlobalLoadingIndicator /> will listen to this\n // event and immediately ask antd to show the loading indicator, which mutates\n // antd component's state. It is NOT LEGAL to call setState() on some other\n // component's state during rendering phase!\n //\n // We therefore will delay kicking off the fetch by a tick, so that we will safely\n // start the fetch outside of React rendering phase.\n const fetcherPromise = new Promise((resolve, reject) => {\n setTimeout(() => {\n fetcher().then(resolve, reject);\n }, 1);\n });\n fetcherPromise\n .then((data) => {\n // Insert the fetched data into the SWR cache\n mutate(key, data);\n })\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, dependentKeyDataErrorPromise]);\n const res = useMutablePlasmicQueryData<T, E>(key, fetcher, {\n shouldRetryOnError: false,\n\n // If revalidateIfStale is true, then if there's a cache entry with a key,\n // but no mounted hook with that key yet, and when the hook mounts with the key,\n // swr will revalidate. This may be reasonable behavior, but for us, this\n // happens all the time -- we prepopulate the cache with proxy-invoked fetch,\n // sometimes before swr had a chance to run the effect. So we turn off\n // revalidateIfStale here, and just let the user manage invalidation.\n revalidateIfStale: 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 || isWaitingOnDependentQuery) &&\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 isWaitingOnDependentQuery,\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","isPlasmicUndefinedDataErrorPromise","reactMajorVersion","React","version","split","resolveDataOp","err","PRE_FETCHES","usePlasmicDataOp","resolvedDataOp","ctx","usePlasmicDataSourceContext","enableLoadingBoundary","ph","_ph$useDataEnv","_usePlasmicDataConfig","usePlasmicDataConfig","mutate","cache","isNullDataOp","isWaitingOnDependentQuery","fetchingData","useMemo","fetcher","has","existing","fetcherFn","fetcherPromise","set","then","dependentKeyDataErrorPromise","cached","Promise","resolve","cachedError","reject","setTimeout","data","keyInfo","_cache$get","useMutablePlasmicQueryData","shouldRetryOnError","revalidateIfStale","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.112",
|
|
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": "116f33d5c0dde995a62accd6caae8276038ecf96"
|
|
70
70
|
}
|