@osdk/react 0.10.0-beta.6 → 0.10.0-beta.7
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/CHANGELOG.md +18 -0
- package/build/browser/new/useObjectSet.js +36 -15
- package/build/browser/new/useObjectSet.js.map +1 -1
- package/build/cjs/public/experimental.cjs +36 -15
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.d.cts +9 -9
- package/build/esm/new/useObjectSet.js +36 -15
- package/build/esm/new/useObjectSet.js.map +1 -1
- package/build/types/new/useObjectSet.d.ts +4 -4
- package/build/types/new/useObjectSet.d.ts.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @osdkkit/react
|
|
2
2
|
|
|
3
|
+
## 0.10.0-beta.7
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9156827: Preserve object set data between loads
|
|
8
|
+
- 35f2f1a: Add Media inputs/outputs for Queries
|
|
9
|
+
- 71e28ef: Allow interface object sets in useObjectSet
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [e64bf0b]
|
|
14
|
+
- Updated dependencies [baba327]
|
|
15
|
+
- Updated dependencies [d1ad4d1]
|
|
16
|
+
- Updated dependencies [35f2f1a]
|
|
17
|
+
- Updated dependencies [71e28ef]
|
|
18
|
+
- @osdk/client@2.8.0-beta.14
|
|
19
|
+
- @osdk/api@2.8.0-beta.14
|
|
20
|
+
|
|
3
21
|
## 0.10.0-beta.6
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
|
@@ -43,10 +43,11 @@ export function useObjectSet(baseObjectSet, options = {}) {
|
|
|
43
43
|
// Track object type to detect when we switch to a different object type
|
|
44
44
|
const objectTypeKey = enabled ? baseObjectSet.$objectSetInternals.def.apiName : OBJECT_TYPE_PLACEHOLDER;
|
|
45
45
|
const previousObjectTypeRef = React.useRef(objectTypeKey);
|
|
46
|
-
const
|
|
46
|
+
const previousCompletedPayloadRef = React.useRef();
|
|
47
47
|
const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;
|
|
48
48
|
if (objectTypeChanged) {
|
|
49
49
|
previousObjectTypeRef.current = objectTypeKey;
|
|
50
|
+
previousCompletedPayloadRef.current = undefined;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
// Compute a stable cache key for the ObjectSet and options
|
|
@@ -70,7 +71,7 @@ export function useObjectSet(baseObjectSet, options = {}) {
|
|
|
70
71
|
unsubscribe: () => {}
|
|
71
72
|
}), process.env.NODE_ENV !== "production" ? `objectSet ${stableKey} [DISABLED]` : void 0);
|
|
72
73
|
}
|
|
73
|
-
const initialValue = objectTypeChanged ? undefined :
|
|
74
|
+
const initialValue = objectTypeChanged ? undefined : previousCompletedPayloadRef.current;
|
|
74
75
|
return makeExternalStore(observer => {
|
|
75
76
|
const subscription = observableClient.observeObjectSet(baseObjectSet, {
|
|
76
77
|
where: otherOptions.where,
|
|
@@ -89,18 +90,38 @@ export function useObjectSet(baseObjectSet, options = {}) {
|
|
|
89
90
|
}, process.env.NODE_ENV !== "production" ? `objectSet ${stableKey}` : void 0, initialValue);
|
|
90
91
|
}, [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged]);
|
|
91
92
|
const payload = React.useSyncExternalStore(subscribe, getSnapShot);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
93
|
+
if (payload && isPayloadCompleted(payload)) {
|
|
94
|
+
previousCompletedPayloadRef.current = payload;
|
|
95
|
+
}
|
|
96
|
+
return React.useMemo(() => {
|
|
97
|
+
const lastLoaded = isPayloadCompleted(payload) ? payload : previousCompletedPayloadRef.current;
|
|
98
|
+
return {
|
|
99
|
+
data: lastLoaded?.resolvedList,
|
|
100
|
+
isLoading: !isPayloadCompleted(payload),
|
|
101
|
+
error: lastLoaded && "error" in lastLoaded ? lastLoaded.error : undefined,
|
|
102
|
+
fetchMore: payload?.hasMore ? payload.fetchMore : undefined,
|
|
103
|
+
objectSet: payload?.objectSet || baseObjectSet,
|
|
104
|
+
totalCount: lastLoaded?.totalCount
|
|
105
|
+
};
|
|
106
|
+
}, [payload, baseObjectSet]);
|
|
107
|
+
}
|
|
108
|
+
function isPayloadCompleted(payload) {
|
|
109
|
+
if (payload != null && "error" in payload) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (payload?.status == null) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
switch (payload.status) {
|
|
116
|
+
case "loaded":
|
|
117
|
+
case "error":
|
|
118
|
+
return true;
|
|
119
|
+
case "loading":
|
|
120
|
+
case "init":
|
|
121
|
+
return false;
|
|
122
|
+
default:
|
|
123
|
+
payload.status;
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
105
126
|
}
|
|
106
127
|
//# sourceMappingURL=useObjectSet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObjectSet.js","names":["computeObjectSetCacheKey","React","makeExternalStore","OsdkContext2","OBJECT_TYPE_PLACEHOLDER","useObjectSet","baseObjectSet","options","observableClient","useContext","enabled","streamUpdates","otherOptions","objectTypeKey","$objectSetInternals","def","apiName","previousObjectTypeRef","useRef","previousPayloadRef","objectTypeChanged","current","stableKey","where","withProperties","union","intersect","subtract","pivotTo","pageSize","orderBy","subscribe","getSnapShot","useMemo","unsubscribe","process","env","NODE_ENV","initialValue","undefined","observer","subscription","observeObjectSet","dedupeInterval","dedupeIntervalMs","autoFetchMore","payload","useSyncExternalStore","useEffect","data","resolvedList","isLoading","status","error","fetchMore","hasMore","objectSet","totalCount"],"sources":["useObjectSet.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\n\nimport {\n computeObjectSetCacheKey,\n type ObserveObjectSetArgs,\n} from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore, type Snapshot } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n\nexport interface UseObjectSetOptions<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Where clause for filtering\n */\n where?: WhereClause<Q, RDPs>;\n\n /**\n * Derived properties to add to the object set\n */\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n\n /**\n * Object sets to union with\n */\n union?: ObjectSet<Q>[];\n\n /**\n * Object sets to intersect with\n */\n intersect?: ObjectSet<Q>[];\n\n /**\n * Object sets to subtract from\n */\n subtract?: ObjectSet<Q>[];\n\n /**\n * Link to pivot to (changes the type)\n */\n pivotTo?: LinkNames<Q>;\n\n /**\n * The preferred page size for the list\n */\n pageSize?: number;\n\n /**\n * Sort order for the results\n */\n orderBy?: {\n [K in PropertyKeys<Q>]?: \"asc\" | \"desc\";\n };\n\n /**\n * Minimum time between fetch requests in milliseconds (defaults to 2000ms)\n */\n dedupeIntervalMs?: number;\n\n /**\n * Automatically fetch additional pages on initial load.\n *\n * - `true`: Fetch all available pages automatically\n * - `number`: Fetch pages until at least this many items are loaded\n * - `undefined` (default): Only fetch the first page, user must call fetchMore()\n */\n autoFetchMore?: boolean | number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the object set will automatically update when matching objects are\n * added, updated, or removed.\n *\n * @default false\n */\n streamUpdates?: boolean;\n\n /**\n * Enable or disable the query.\n *\n * When `false`, the query will not automatically execute. It will still\n * return any cached data, but will not fetch from the server.\n *\n * This is useful for:\n * - Lazy/on-demand queries that should wait for user interaction\n * - Dependent queries that need data from another query first\n * - Conditional queries based on component state\n *\n * @default true\n * @example\n * // Dependent query - wait for filter selection\n * const { data: filteredObjects } = useObjectSet(MyObject.all(), {\n * where: { status: selectedStatus },\n * enabled: !!selectedStatus\n * });\n */\n enabled?: boolean;\n}\n\nexport interface UseObjectSetResult<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * The fetched data with derived properties\n */\n data:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined;\n\n /**\n * Whether data is currently being loaded\n */\n isLoading: boolean;\n\n /**\n * Any error that occurred during fetching\n */\n error: Error | undefined;\n\n /**\n * Function to fetch more pages (undefined if no more pages)\n */\n fetchMore: (() => Promise<void>) | undefined;\n\n /**\n * The final ObjectSet after all transformations\n */\n objectSet: ObjectSet<Q, RDPs>;\n\n /**\n * The total count of objects matching the query (if available from the API)\n */\n totalCount?: string;\n}\n\ndeclare const process: {\n env: {\n NODE_ENV: \"development\" | \"production\";\n };\n};\n\nconst OBJECT_TYPE_PLACEHOLDER = \"$__OBJECT__TYPE__PLACEHOLDER\";\n/**\n * React hook for observing and interacting with OSDK object sets.\n *\n * @typeParam Q - The object type definition\n * @typeParam BaseRDPs - Derived properties that already exist on the input ObjectSet\n * @typeParam RDPs - New derived properties to be added via options.withProperties\n *\n * @param baseObjectSet - The ObjectSet to observe (may already have derived properties)\n * @param options - Options for filtering, sorting, and adding new derived properties\n * @returns Object set data with both existing and new derived properties\n */\nexport function useObjectSet<\n Q extends ObjectTypeDefinition,\n BaseRDPs extends Record<string, SimplePropertyDef> = never,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n baseObjectSet: ObjectSet<Q, BaseRDPs>,\n options: UseObjectSetOptions<Q, RDPs> = {},\n): UseObjectSetResult<Q, RDPs> {\n const { observableClient } = React.useContext(OsdkContext2);\n\n const { enabled = true, streamUpdates, ...otherOptions } = options;\n\n // Track object type to detect when we switch to a different object type\n const objectTypeKey = enabled\n ? baseObjectSet.$objectSetInternals.def.apiName\n : OBJECT_TYPE_PLACEHOLDER;\n\n const previousObjectTypeRef = React.useRef<string>(objectTypeKey);\n const previousPayloadRef = React.useRef<\n Snapshot<ObserveObjectSetArgs<Q, RDPs>> | undefined\n >();\n\n const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;\n if (objectTypeChanged) {\n previousObjectTypeRef.current = objectTypeKey;\n }\n\n // Compute a stable cache key for the ObjectSet and options\n // dedupeIntervalMs and enabled are excluded as they don't affect the data\n const stableKey = computeObjectSetCacheKey(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n });\n\n const { subscribe, getSnapShot } = React.useMemo(\n () => {\n if (!enabled) {\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n () => ({ unsubscribe: () => {} }),\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey} [DISABLED]`\n : void 0,\n );\n }\n\n const initialValue = objectTypeChanged\n ? undefined\n : previousPayloadRef.current;\n\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n (observer) => {\n const subscription = observableClient.observeObjectSet(\n baseObjectSet as ObjectSet<Q>,\n {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000,\n autoFetchMore: otherOptions.autoFetchMore,\n streamUpdates,\n },\n observer,\n );\n return subscription;\n },\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey}`\n : void 0,\n initialValue,\n );\n },\n [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged],\n );\n\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n React.useEffect(() => {\n if (payload) {\n previousPayloadRef.current = payload;\n }\n }, [payload]);\n\n return React.useMemo(() => ({\n data: payload?.resolvedList as Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n >[],\n isLoading: payload?.status === \"loading\" || (!payload && true) || false,\n error: payload && \"error\" in payload\n ? payload.error\n : undefined,\n fetchMore: payload?.hasMore ? payload.fetchMore : undefined,\n objectSet: payload?.objectSet as ObjectSet<Q, RDPs> || baseObjectSet,\n totalCount: payload?.totalCount,\n }), [payload, baseObjectSet]);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useObjectSet.js","names":["computeObjectSetCacheKey","React","makeExternalStore","OsdkContext2","OBJECT_TYPE_PLACEHOLDER","useObjectSet","baseObjectSet","options","observableClient","useContext","enabled","streamUpdates","otherOptions","objectTypeKey","$objectSetInternals","def","apiName","previousObjectTypeRef","useRef","previousCompletedPayloadRef","objectTypeChanged","current","undefined","stableKey","where","withProperties","union","intersect","subtract","pivotTo","pageSize","orderBy","subscribe","getSnapShot","useMemo","unsubscribe","process","env","NODE_ENV","initialValue","observer","subscription","observeObjectSet","dedupeInterval","dedupeIntervalMs","autoFetchMore","payload","useSyncExternalStore","isPayloadCompleted","lastLoaded","data","resolvedList","isLoading","error","fetchMore","hasMore","objectSet","totalCount","status"],"sources":["useObjectSet.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n LinkNames,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n Osdk,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\n\nimport {\n computeObjectSetCacheKey,\n type ObserveObjectSetArgs,\n} from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore, type Snapshot } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n\nexport interface UseObjectSetOptions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Where clause for filtering\n */\n where?: WhereClause<Q, RDPs>;\n\n /**\n * Derived properties to add to the object set\n */\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n\n /**\n * Object sets to union with\n */\n union?: ObjectSet<Q>[];\n\n /**\n * Object sets to intersect with\n */\n intersect?: ObjectSet<Q>[];\n\n /**\n * Object sets to subtract from\n */\n subtract?: ObjectSet<Q>[];\n\n /**\n * Link to pivot to (changes the type)\n */\n pivotTo?: LinkNames<Q>;\n\n /**\n * The preferred page size for the list\n */\n pageSize?: number;\n\n /**\n * Sort order for the results\n */\n orderBy?: {\n [K in PropertyKeys<Q>]?: \"asc\" | \"desc\";\n };\n\n /**\n * Minimum time between fetch requests in milliseconds (defaults to 2000ms)\n */\n dedupeIntervalMs?: number;\n\n /**\n * Automatically fetch additional pages on initial load.\n *\n * - `true`: Fetch all available pages automatically\n * - `number`: Fetch pages until at least this many items are loaded\n * - `undefined` (default): Only fetch the first page, user must call fetchMore()\n */\n autoFetchMore?: boolean | number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the object set will automatically update when matching objects are\n * added, updated, or removed.\n *\n * @default false\n */\n streamUpdates?: boolean;\n\n /**\n * Enable or disable the query.\n *\n * When `false`, the query will not automatically execute. It will still\n * return any cached data, but will not fetch from the server.\n *\n * This is useful for:\n * - Lazy/on-demand queries that should wait for user interaction\n * - Dependent queries that need data from another query first\n * - Conditional queries based on component state\n *\n * @default true\n * @example\n * // Dependent query - wait for filter selection\n * const { data: filteredObjects } = useObjectSet(MyObject.all(), {\n * where: { status: selectedStatus },\n * enabled: !!selectedStatus\n * });\n */\n enabled?: boolean;\n}\n\nexport interface UseObjectSetResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * The fetched data with derived properties\n */\n data:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined;\n\n /**\n * Whether data is currently being loaded\n */\n isLoading: boolean;\n\n /**\n * Any error that occurred during fetching\n */\n error: Error | undefined;\n\n /**\n * Function to fetch more pages (undefined if no more pages)\n */\n fetchMore: (() => Promise<void>) | undefined;\n\n /**\n * The final ObjectSet after all transformations\n */\n objectSet: ObjectSet<Q, RDPs>;\n\n /**\n * The total count of objects matching the query (if available from the API)\n */\n totalCount?: string;\n}\n\ndeclare const process: {\n env: {\n NODE_ENV: \"development\" | \"production\";\n };\n};\n\nconst OBJECT_TYPE_PLACEHOLDER = \"$__OBJECT__TYPE__PLACEHOLDER\";\n/**\n * React hook for observing and interacting with OSDK object sets.\n *\n * @typeParam Q - The object type definition\n * @typeParam BaseRDPs - Derived properties that already exist on the input ObjectSet\n * @typeParam RDPs - New derived properties to be added via options.withProperties\n *\n * @param baseObjectSet - The ObjectSet to observe (may already have derived properties)\n * @param options - Options for filtering, sorting, and adding new derived properties\n * @returns Object set data with both existing and new derived properties\n */\nexport function useObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n BaseRDPs extends Record<string, SimplePropertyDef> = never,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n baseObjectSet: ObjectSet<Q, BaseRDPs>,\n options: UseObjectSetOptions<Q, RDPs> = {},\n): UseObjectSetResult<Q, RDPs> {\n const { observableClient } = React.useContext(OsdkContext2);\n\n const { enabled = true, streamUpdates, ...otherOptions } = options;\n\n // Track object type to detect when we switch to a different object type\n const objectTypeKey = enabled\n ? baseObjectSet.$objectSetInternals.def.apiName\n : OBJECT_TYPE_PLACEHOLDER;\n\n const previousObjectTypeRef = React.useRef<string>(objectTypeKey);\n const previousCompletedPayloadRef = React.useRef<\n Snapshot<ObserveObjectSetArgs<Q, RDPs>> | undefined\n >();\n\n const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;\n if (objectTypeChanged) {\n previousObjectTypeRef.current = objectTypeKey;\n previousCompletedPayloadRef.current = undefined;\n }\n\n // Compute a stable cache key for the ObjectSet and options\n // dedupeIntervalMs and enabled are excluded as they don't affect the data\n const stableKey = computeObjectSetCacheKey(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n });\n\n const { subscribe, getSnapShot } = React.useMemo(\n () => {\n if (!enabled) {\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n () => ({ unsubscribe: () => {} }),\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey} [DISABLED]`\n : void 0,\n );\n }\n\n const initialValue = objectTypeChanged\n ? undefined\n : previousCompletedPayloadRef.current;\n\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n (observer) => {\n const subscription = observableClient.observeObjectSet(\n baseObjectSet as ObjectSet<Q>,\n {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000,\n autoFetchMore: otherOptions.autoFetchMore,\n streamUpdates,\n },\n observer,\n );\n return subscription;\n },\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey}`\n : void 0,\n initialValue,\n );\n },\n [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged],\n );\n\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n if (payload && isPayloadCompleted(payload)) {\n previousCompletedPayloadRef.current = payload;\n }\n\n return React.useMemo(() => {\n const lastLoaded = isPayloadCompleted(payload)\n ? payload\n : previousCompletedPayloadRef.current;\n return {\n data: lastLoaded?.resolvedList as Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n >[],\n isLoading: !isPayloadCompleted(payload),\n error: lastLoaded && \"error\" in lastLoaded ? lastLoaded.error : undefined,\n fetchMore: payload?.hasMore ? payload.fetchMore : undefined,\n objectSet: payload?.objectSet as ObjectSet<Q, RDPs> || baseObjectSet,\n totalCount: lastLoaded?.totalCount,\n };\n }, [payload, baseObjectSet]);\n}\n\nfunction isPayloadCompleted<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n>(\n payload: Snapshot<ObserveObjectSetArgs<Q, RDPs>>,\n): boolean {\n if (payload != null && \"error\" in payload) {\n return true;\n }\n\n if (payload?.status == null) {\n return false;\n }\n\n switch (payload.status) {\n case \"loaded\":\n case \"error\":\n return true;\n case \"loading\":\n case \"init\":\n return false;\n default:\n payload.status satisfies never;\n return false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -317,10 +317,11 @@ function useObjectSet(baseObjectSet, options = {}) {
|
|
|
317
317
|
} = options;
|
|
318
318
|
const objectTypeKey = enabled ? baseObjectSet.$objectSetInternals.def.apiName : OBJECT_TYPE_PLACEHOLDER;
|
|
319
319
|
const previousObjectTypeRef = React9__default.default.useRef(objectTypeKey);
|
|
320
|
-
const
|
|
320
|
+
const previousCompletedPayloadRef = React9__default.default.useRef();
|
|
321
321
|
const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;
|
|
322
322
|
if (objectTypeChanged) {
|
|
323
323
|
previousObjectTypeRef.current = objectTypeKey;
|
|
324
|
+
previousCompletedPayloadRef.current = void 0;
|
|
324
325
|
}
|
|
325
326
|
const stableKey = unstableDoNotUse.computeObjectSetCacheKey(baseObjectSet, {
|
|
326
327
|
where: otherOptions.where,
|
|
@@ -342,7 +343,7 @@ function useObjectSet(baseObjectSet, options = {}) {
|
|
|
342
343
|
}
|
|
343
344
|
}), process.env.NODE_ENV !== "production" ? `objectSet ${stableKey} [DISABLED]` : void 0);
|
|
344
345
|
}
|
|
345
|
-
const initialValue = objectTypeChanged ? void 0 :
|
|
346
|
+
const initialValue = objectTypeChanged ? void 0 : previousCompletedPayloadRef.current;
|
|
346
347
|
return makeExternalStore((observer) => {
|
|
347
348
|
const subscription = observableClient.observeObjectSet(baseObjectSet, {
|
|
348
349
|
where: otherOptions.where,
|
|
@@ -361,19 +362,39 @@ function useObjectSet(baseObjectSet, options = {}) {
|
|
|
361
362
|
}, process.env.NODE_ENV !== "production" ? `objectSet ${stableKey}` : void 0, initialValue);
|
|
362
363
|
}, [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged]);
|
|
363
364
|
const payload = React9__default.default.useSyncExternalStore(subscribe, getSnapShot);
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
365
|
+
if (payload && isPayloadCompleted(payload)) {
|
|
366
|
+
previousCompletedPayloadRef.current = payload;
|
|
367
|
+
}
|
|
368
|
+
return React9__default.default.useMemo(() => {
|
|
369
|
+
const lastLoaded = isPayloadCompleted(payload) ? payload : previousCompletedPayloadRef.current;
|
|
370
|
+
return {
|
|
371
|
+
data: lastLoaded?.resolvedList,
|
|
372
|
+
isLoading: !isPayloadCompleted(payload),
|
|
373
|
+
error: lastLoaded && "error" in lastLoaded ? lastLoaded.error : void 0,
|
|
374
|
+
fetchMore: payload?.hasMore ? payload.fetchMore : void 0,
|
|
375
|
+
objectSet: payload?.objectSet || baseObjectSet,
|
|
376
|
+
totalCount: lastLoaded?.totalCount
|
|
377
|
+
};
|
|
378
|
+
}, [payload, baseObjectSet]);
|
|
379
|
+
}
|
|
380
|
+
function isPayloadCompleted(payload) {
|
|
381
|
+
if (payload != null && "error" in payload) {
|
|
382
|
+
return true;
|
|
383
|
+
}
|
|
384
|
+
if (payload?.status == null) {
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
switch (payload.status) {
|
|
388
|
+
case "loaded":
|
|
389
|
+
case "error":
|
|
390
|
+
return true;
|
|
391
|
+
case "loading":
|
|
392
|
+
case "init":
|
|
393
|
+
return false;
|
|
394
|
+
default:
|
|
395
|
+
payload.status;
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
377
398
|
}
|
|
378
399
|
function useOsdkAction(actionDef) {
|
|
379
400
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/new/OsdkContext2.ts","../../../src/new/OsdkProvider2.tsx","../../../src/new/makeExternalStore.ts","../../../src/utils/usePlatformQuery.ts","../../../src/new/platform-apis/admin/useCurrentFoundryUser.ts","../../../src/new/platform-apis/admin/useFoundryUser.ts","../../../src/new/platform-apis/admin/useFoundryUsersList.ts","../../../src/new/useLinks.ts","../../../src/new/useObjectSet.tsx","../../../src/new/useOsdkAction.ts","../../../src/new/useOsdkAggregation.ts","../../../src/new/useOsdkFunction.ts","../../../src/new/useOsdkObject.ts","../../../src/new/useOsdkObjects.ts","../../../src/utils/useDebouncedCallback.ts"],"names":["useMemo","createObservableClient","React","OsdkContext","Users","computeObjectSetCacheKey","applyAction","args","ActionValidationError","validateAction","getWireObjectSet","EMPTY_WHERE"],"mappings":"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","file":"experimental.cjs","sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nfunction fakeClientFn(..._args) {\n throw new Error(\"This is not a real client. Did you forget to <OsdkContext.Provider>?\");\n}\nconst fakeClient = Object.assign(fakeClientFn, {\n fetchMetadata: fakeClientFn\n});\nexport const OsdkContext2 = /*#__PURE__*/React.createContext({\n client: fakeClient,\n observableClient: undefined\n});","/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createObservableClient } from \"@osdk/client/unstable-do-not-use\";\nimport React, { useMemo } from \"react\";\nimport { OsdkContext } from \"../OsdkContext.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nexport function OsdkProvider2({\n children,\n client,\n observableClient\n}) {\n observableClient = useMemo(() => observableClient ?? createObservableClient(client), [client, observableClient]);\n return /*#__PURE__*/React.createElement(OsdkContext2.Provider, {\n value: {\n client,\n observableClient\n }\n }, /*#__PURE__*/React.createElement(OsdkContext.Provider, {\n value: {\n client\n }\n }, children));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function makeExternalStore(createObservation, _name, initialValue) {\n let lastResult = initialValue;\n function getSnapShot() {\n return lastResult;\n }\n function subscribe(notifyUpdate) {\n const obs = createObservation({\n next: payload => {\n lastResult = payload;\n notifyUpdate();\n },\n error: error => {\n lastResult = {\n ...(lastResult ?? {}),\n error: error instanceof Error ? error : new Error(String(error))\n };\n notifyUpdate();\n },\n complete: () => {}\n });\n return () => {\n obs.unsubscribe();\n };\n }\n return {\n subscribe,\n getSnapShot\n };\n}\n\n/**\n * Like makeExternalStore but for async subscription creation.\n *\n * Uses an isActive flag to handle race conditions:\n * If cleanup runs before promise resolves, the stale subscription is\n * immediately unsubscribed when it eventually resolves\n */\nexport function makeExternalStoreAsync(createObservation, _name, initialValue) {\n let lastResult = initialValue;\n function getSnapShot() {\n return lastResult;\n }\n function subscribe(notifyUpdate) {\n let isActive = true;\n let currentSubscription;\n const subscriptionPromise = createObservation({\n next: payload => {\n if (isActive) {\n lastResult = payload;\n notifyUpdate();\n }\n },\n error: error => {\n if (isActive) {\n lastResult = {\n ...(lastResult ?? {}),\n error: error instanceof Error ? error : new Error(String(error))\n };\n notifyUpdate();\n }\n },\n complete: () => {}\n });\n subscriptionPromise.then(sub => {\n if (isActive) {\n currentSubscription = sub;\n } else {\n sub.unsubscribe();\n }\n }).catch(error => {\n if (isActive) {\n lastResult = {\n ...(lastResult ?? {}),\n error: error instanceof Error ? error : new Error(String(error))\n };\n notifyUpdate();\n }\n });\n return () => {\n isActive = false;\n if (currentSubscription) {\n currentSubscription.unsubscribe();\n }\n };\n }\n return {\n subscribe,\n getSnapShot\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"../new/makeExternalStore.js\";\nexport function usePlatformQuery({\n query,\n queryName,\n enabled = true\n}) {\n const observerRef = React.useRef();\n const handleQuery = React.useCallback(() => {\n const observer = observerRef.current;\n if (observer == null) return;\n observer.next({\n status: \"loading\",\n data: undefined\n });\n query().then(data => {\n observer.next({\n status: \"success\",\n data\n });\n }).catch(err => {\n observer.error(err);\n });\n }, [query]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `${queryName} Query [DISABLED]` : undefined);\n }\n return makeExternalStore(observer => {\n observerRef.current = observer;\n handleQuery();\n return {\n unsubscribe: () => {\n observerRef.current = undefined;\n }\n };\n }, queryName);\n }, [enabled, queryName, handleQuery]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n let error;\n if (payload && \"error\" in payload && payload.error != null) {\n error = payload.error;\n } else if (payload?.status === \"error\") {\n error = new Error(`Failed to query platform API: ${queryName}`);\n }\n return {\n data: payload?.data,\n isLoading: enabled ? payload?.status === \"loading\" || !payload : false,\n error,\n refetch: handleQuery\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Users } from \"@osdk/foundry.admin\";\nimport React from \"react\";\nimport { usePlatformQuery } from \"../../../utils/usePlatformQuery.js\";\nimport { OsdkContext2 } from \"../../OsdkContext2.js\";\n/**\n * Get the currently signed in User.\n * @param options Options to control the query.\n */\nexport function useCurrentFoundryUser({\n enabled = true\n} = {}) {\n const {\n client\n } = React.useContext(OsdkContext2);\n const handleQuery = React.useCallback(() => Users.getCurrent(client), [client]);\n const query = usePlatformQuery({\n query: handleQuery,\n enabled,\n queryName: \"foundry-current-user\"\n });\n return {\n currentUser: query.data,\n isLoading: query.isLoading,\n error: query.error,\n refetch: query.refetch\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Users } from \"@osdk/foundry.admin\";\nimport React from \"react\";\nimport { usePlatformQuery } from \"../../../utils/usePlatformQuery.js\";\nimport { OsdkContext2 } from \"../../OsdkContext2.js\";\n/**\n * Get the User with the specified id.\n * @param userId A Foundry User ID.\n * @param options Options to control the query.\n */\nexport function useFoundryUser(userId, {\n enabled = true,\n status = \"ACTIVE\"\n} = {}) {\n const {\n client\n } = React.useContext(OsdkContext2);\n const handleQuery = React.useCallback(() => {\n return Users.get(client, userId, {\n status\n });\n }, [client, userId, status]);\n const query = usePlatformQuery({\n query: handleQuery,\n enabled,\n queryName: \"foundry-user\"\n });\n return {\n user: query.data,\n isLoading: query.isLoading,\n error: query.error,\n refetch: query.refetch\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Users } from \"@osdk/foundry.admin\";\nimport React from \"react\";\nimport { usePlatformQuery } from \"../../../utils/usePlatformQuery.js\";\nimport { OsdkContext2 } from \"../../OsdkContext2.js\";\n/**\n * Lists all Users. This is a paged endpoint. Each page may be smaller or larger than the requested page size.\n * @param options Options to control the query.\n */\nexport function useFoundryUsersList({\n enabled = true,\n include = \"ACTIVE\",\n pageSize = 1000,\n pageToken\n} = {}) {\n const {\n client\n } = React.useContext(OsdkContext2);\n const handleQuery = React.useCallback(() => {\n return Users.list(client, {\n include,\n pageSize,\n pageToken\n });\n }, [client, include, pageSize, pageToken]);\n const query = usePlatformQuery({\n query: handleQuery,\n enabled,\n queryName: \"foundry-users-list\"\n });\n return {\n users: query.data?.data,\n nextPageToken: query.data?.nextPageToken,\n isLoading: query.isLoading,\n error: query.error,\n refetch: query.refetch\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst emptyArray = Object.freeze([]);\n\n/**\n * Hook to observe links from an object or array of objects.\n *\n * @param objects The source object(s) to observe links from\n * @param linkName The name of the link to observe\n * @param options Optional configuration for the link query\n * @returns UseLinksResult with links data and metadata\n */\nexport function useLinks(objects, linkName, options = {}) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n enabled = true,\n ...otherOptions\n } = options;\n const stableWhere = React.useMemo(() => otherOptions.where, [JSON.stringify(otherOptions.where)]);\n const stableOrderBy = React.useMemo(() => otherOptions.orderBy, [JSON.stringify(otherOptions.orderBy)]);\n const objectsKey = React.useMemo(() => {\n if (objects === undefined) return \"\";\n const arr = Array.isArray(objects) ? objects : [objects];\n return arr.map(obj => `${obj.$apiName}:${obj.$primaryKey}`).join(\",\");\n }, [objects]);\n\n // Convert single object to array for consistent handling\n const objectsArray = React.useMemo(() => {\n return objects === undefined ? emptyArray : Array.isArray(objects) ? objects : [objects];\n }, [objectsKey, objects]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), `links ${linkName} for ${objectsKey} [DISABLED]`);\n }\n return makeExternalStore(observer => observableClient.observeLinks(objectsArray, linkName, {\n linkName,\n where: stableWhere,\n pageSize: otherOptions.pageSize,\n orderBy: stableOrderBy,\n mode: otherOptions.mode,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000\n }, observer), `links ${linkName} for ${objectsKey}`);\n }, [enabled, observableClient, objectsArray, objectsKey, linkName, stableWhere, otherOptions.pageSize, stableOrderBy, otherOptions.mode, otherOptions.dedupeIntervalMs]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n return React.useMemo(() => ({\n links: payload?.resolvedList,\n isLoading: enabled ? payload?.status === \"loading\" || payload?.status === \"init\" || !payload : false,\n isOptimistic: payload?.isOptimistic ?? false,\n error: payload?.error,\n fetchMore: payload?.hasMore ? payload?.fetchMore : undefined,\n hasMore: payload?.hasMore ?? false\n }), [payload, enabled]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { computeObjectSetCacheKey } from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst OBJECT_TYPE_PLACEHOLDER = \"$__OBJECT__TYPE__PLACEHOLDER\";\n/**\n * React hook for observing and interacting with OSDK object sets.\n *\n * @typeParam Q - The object type definition\n * @typeParam BaseRDPs - Derived properties that already exist on the input ObjectSet\n * @typeParam RDPs - New derived properties to be added via options.withProperties\n *\n * @param baseObjectSet - The ObjectSet to observe (may already have derived properties)\n * @param options - Options for filtering, sorting, and adding new derived properties\n * @returns Object set data with both existing and new derived properties\n */\nexport function useObjectSet(baseObjectSet, options = {}) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n enabled = true,\n streamUpdates,\n ...otherOptions\n } = options;\n\n // Track object type to detect when we switch to a different object type\n const objectTypeKey = enabled ? baseObjectSet.$objectSetInternals.def.apiName : OBJECT_TYPE_PLACEHOLDER;\n const previousObjectTypeRef = React.useRef(objectTypeKey);\n const previousPayloadRef = React.useRef();\n const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;\n if (objectTypeChanged) {\n previousObjectTypeRef.current = objectTypeKey;\n }\n\n // Compute a stable cache key for the ObjectSet and options\n // dedupeIntervalMs and enabled are excluded as they don't affect the data\n const stableKey = computeObjectSetCacheKey(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy\n });\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `objectSet ${stableKey} [DISABLED]` : void 0);\n }\n const initialValue = objectTypeChanged ? undefined : previousPayloadRef.current;\n return makeExternalStore(observer => {\n const subscription = observableClient.observeObjectSet(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000,\n autoFetchMore: otherOptions.autoFetchMore,\n streamUpdates\n }, observer);\n return subscription;\n }, process.env.NODE_ENV !== \"production\" ? `objectSet ${stableKey}` : void 0, initialValue);\n }, [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n React.useEffect(() => {\n if (payload) {\n previousPayloadRef.current = payload;\n }\n }, [payload]);\n return React.useMemo(() => ({\n data: payload?.resolvedList,\n isLoading: payload?.status === \"loading\" || !payload && true || false,\n error: payload && \"error\" in payload ? payload.error : undefined,\n fetchMore: payload?.hasMore ? payload.fetchMore : undefined,\n objectSet: payload?.objectSet || baseObjectSet,\n totalCount: payload?.totalCount\n }), [payload, baseObjectSet]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionValidationError } from \"@osdk/client\";\nimport React from \"react\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nexport function useOsdkAction(actionDef) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const [error, setError] = React.useState();\n const [data, setData] = React.useState();\n const [isPending, setPending] = React.useState(false);\n const [isValidating, setValidating] = React.useState(false);\n const [validationResult, setValidationResult] = React.useState();\n const abortControllerRef = React.useRef(null);\n const applyAction = React.useCallback(async function applyAction(hookArgs) {\n try {\n // If validation is in progress, abort it\n if (isValidating && abortControllerRef.current) {\n abortControllerRef.current.abort();\n setValidating(false);\n }\n setPending(true);\n setError(undefined);\n if (Array.isArray(hookArgs)) {\n const updates = [];\n const args = hookArgs.map(a => {\n const {\n $optimisticUpdate,\n ...args\n } = a;\n if ($optimisticUpdate) {\n updates.push($optimisticUpdate);\n }\n return args;\n });\n const r = await observableClient.applyAction(actionDef, args, {\n optimisticUpdate: ctx => {\n for (const update of updates) {\n update?.(ctx);\n }\n }\n });\n setData(r);\n return r;\n } else {\n const {\n $optimisticUpdate,\n ...args\n } = hookArgs;\n const r = await observableClient.applyAction(actionDef, args, {\n optimisticUpdate: $optimisticUpdate\n });\n setData(r);\n return r;\n }\n } catch (e) {\n if (e instanceof ActionValidationError) {\n setError({\n actionValidation: e\n });\n } else {\n setError({\n unknown: e\n });\n }\n } finally {\n setPending(false);\n }\n }, [observableClient, actionDef, isValidating]);\n const validateAction = React.useCallback(async function validateAction(args) {\n try {\n // Check if action is being applied\n if (isPending) {\n return undefined;\n }\n\n // Abort any existing validation\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // Create new AbortController\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n setValidating(true);\n setError(undefined);\n const result = await observableClient.validateAction(actionDef, args);\n\n // Check if aborted\n if (abortController.signal.aborted) {\n return undefined;\n }\n setValidationResult(result);\n return result;\n } catch (e) {\n // Check if it was aborted\n if (e instanceof Error && e.name === \"AbortError\") {\n return undefined;\n }\n if (e instanceof ActionValidationError) {\n setError({\n actionValidation: e\n });\n } else {\n setError({\n unknown: e\n });\n }\n throw e;\n } finally {\n setValidating(false);\n }\n }, [observableClient, actionDef, isPending]);\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, []);\n return React.useMemo(() => ({\n applyAction,\n validateAction,\n error,\n data,\n isPending,\n isValidating,\n validationResult\n }), [applyAction, validateAction, error, data, isPending, isValidating, validationResult]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { computeObjectSetCacheKey } from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore, makeExternalStoreAsync } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst EMPTY_WHERE = {};\n\n/**\n * React hook for performing aggregations on OSDK object sets.\n *\n * Executes server-side aggregations with groupBy and metric calculations on filtered object sets.\n * Supports runtime derived properties and where clauses.\n *\n * @param type - The object or interface type to aggregate\n * @param options - Aggregation configuration including where clause, aggregation spec, and optional derived properties\n * @returns Object containing aggregation results, loading state, error state, and refetch function\n *\n * @example\n * ```tsx\n * // Basic aggregation without ObjectSet\n * const { data, isLoading, error } = useOsdkAggregation(Employee, {\n * where: { department: \"Engineering\" },\n * aggregate: {\n * groupBy: { department: \"exact\" },\n * select: {\n * avgSalary: { $avg: \"salary\" },\n * count: { $count: {} }\n * }\n * }\n * });\n *\n * // With a pivoted ObjectSet\n * const pivotedSet = useMemo(() => $(Employee).pivotTo(\"primaryOffice\"), []);\n * const { data } = useOsdkAggregation(Office, {\n * objectSet: pivotedSet,\n * aggregate: { $select: { $count: \"unordered\" } }\n * });\n * ```\n */\n\nexport function useOsdkAggregation(type, options) {\n const {\n where = EMPTY_WHERE,\n withProperties,\n intersectWith,\n aggregate,\n dedupeIntervalMs\n } = options;\n const objectSet = \"objectSet\" in options ? options.objectSet : undefined;\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const canonWhere = observableClient.canonicalizeWhereClause(where);\n const stableCanonWhere = React.useMemo(() => canonWhere, [JSON.stringify(canonWhere)]);\n const objectSetRef = React.useRef(objectSet);\n objectSetRef.current = objectSet;\n const objectSetKeyString = objectSet ? computeObjectSetCacheKey(objectSet) : undefined;\n const stableWithProperties = React.useMemo(() => withProperties, [JSON.stringify(withProperties)]);\n const stableAggregate = React.useMemo(() => aggregate, [JSON.stringify(aggregate)]);\n const stableIntersectWith = React.useMemo(() => intersectWith, [JSON.stringify(intersectWith)]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (objectSetKeyString && objectSetRef.current) {\n return makeExternalStoreAsync(observer => observableClient.observeAggregation({\n type: type,\n objectSet: objectSetRef.current,\n where: stableCanonWhere,\n withProperties: stableWithProperties,\n intersectWith: stableIntersectWith,\n aggregate: stableAggregate,\n dedupeInterval: dedupeIntervalMs ?? 2_000\n }, observer), process.env.NODE_ENV !== \"production\" ? `aggregation ${type.apiName} ${objectSetKeyString} ${JSON.stringify(stableCanonWhere)}` : void 0);\n }\n return makeExternalStore(observer =>\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n observableClient.observeAggregation({\n type: type,\n where: stableCanonWhere,\n withProperties: stableWithProperties,\n intersectWith: stableIntersectWith,\n aggregate: stableAggregate,\n dedupeInterval: dedupeIntervalMs ?? 2_000\n }, observer), process.env.NODE_ENV !== \"production\" ? `aggregation ${type.apiName} ${JSON.stringify(stableCanonWhere)}` : void 0);\n }, [observableClient, type.apiName, type.type, objectSetKeyString, stableCanonWhere, stableWithProperties, stableIntersectWith, stableAggregate, dedupeIntervalMs]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n const refetch = React.useCallback(async () => {\n await observableClient.invalidateObjectType(type.apiName);\n }, [observableClient, type.apiName]);\n return React.useMemo(() => {\n let error;\n if (payload && \"error\" in payload && payload.error) {\n error = payload.error;\n } else if (payload?.status === \"error\") {\n error = new Error(\"Failed to execute aggregation\");\n }\n return {\n data: payload?.result,\n isLoading: payload?.status === \"loading\" || payload?.status === \"init\" || !payload,\n error,\n refetch\n };\n }, [payload, refetch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getWireObjectSet } from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n/**\n * React hook for executing and observing OSDK functions.\n *\n * Provides automatic caching, deduplication, and reactive updates for function calls.\n * Functions are automatically re-fetched when dependencies change (configured via options).\n *\n * @param queryDef - The QueryDefinition to execute\n * @param options - Configuration options for the function call\n * @returns Object containing result, loading state, error, and refetch function\n *\n * @example Basic usage\n * ```tsx\n * const { data, isLoading, error } = useOsdkFunction(getEmployeeStats, {\n * params: { departmentId: \"engineering\" }\n * });\n * ```\n *\n * @example With dependency tracking\n * ```tsx\n * const { data, refetch } = useOsdkFunction(calculateMetrics, {\n * params: { startDate, endDate },\n * dependsOn: [Employee, Project],\n * });\n * ```\n *\n * @example With specific object dependencies\n * ```tsx\n * const { data } = useOsdkFunction(getEmployeeReport, {\n * params: { employeeId: employee.$primaryKey },\n * dependsOnObjects: [employee],\n * });\n * ```\n */\nexport function useOsdkFunction(queryDef, options = {}) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n params,\n dependsOn,\n dependsOnObjects,\n dedupeIntervalMs,\n enabled = true\n } = options;\n const stableParams = React.useMemo(() => params, [JSON.stringify(params)]);\n const stableDependsOn = React.useMemo(() => dependsOn, [JSON.stringify(dependsOn?.map(d => typeof d === \"string\" ? d : d.apiName))]);\n const stableDependsOnObjects = React.useMemo(() => dependsOnObjects, [JSON.stringify(dependsOnObjects?.map(item => \"$apiName\" in item ? {\n $apiName: item.$apiName,\n $primaryKey: item.$primaryKey\n } : {\n __objectSet: getWireObjectSet(item)\n }))]);\n\n // Record<string, unknown> required as typing is figured out at runtime\n const paramsForApi = stableParams;\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `function ${queryDef.apiName} ${JSON.stringify(stableParams)} [DISABLED]` : void 0);\n }\n return makeExternalStore(observer => observableClient.observeFunction(queryDef, paramsForApi, {\n dependsOn: stableDependsOn,\n dependsOnObjects: stableDependsOnObjects,\n dedupeInterval: dedupeIntervalMs ?? 2_000\n }, observer), process.env.NODE_ENV !== \"production\" ? `function ${queryDef.apiName} ${JSON.stringify(stableParams)}` : void 0);\n }, [observableClient, queryDef.apiName, queryDef.version, paramsForApi, stableDependsOn, stableDependsOnObjects, dedupeIntervalMs, enabled]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n const refetch = React.useCallback(() => {\n void observableClient.invalidateFunction(queryDef, paramsForApi);\n }, [observableClient, queryDef, paramsForApi]);\n return React.useMemo(() => {\n const error = payload?.error ?? (payload?.status === \"error\" ? new Error(\"Failed to execute function\") : undefined);\n return {\n data: payload?.result,\n isLoading: payload?.status === \"loading\",\n error,\n lastUpdated: payload?.lastUpdated ?? 0,\n refetch\n };\n }, [payload, refetch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n\n/**\n * @param obj an existing `Osdk.Instance` object to get metadata for.\n * @param enabled Enable or disable the query (defaults to true)\n */\n\n/**\n * Loads an object or interface instance by type and primary key.\n *\n * @param type The object type or interface definition\n * @param primaryKey The primary key of the object\n * @param enabled Enable or disable the query (defaults to true)\n */\n\n/*\n Implementation of useOsdkObject\n */\nexport function useOsdkObject(...args) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n\n // Check if first arg is an instance to discriminate signatures\n // TypeScript cannot narrow rest parameter unions with optional parameters,\n // so we must use type assertions after runtime discrimination\n const isInstanceSignature = \"$objectType\" in args[0];\n\n // Extract enabled flag - 2nd param for instance signature, 3rd for type signature\n const enabled = isInstanceSignature ? typeof args[1] === \"boolean\" ? args[1] : true : typeof args[2] === \"boolean\" ? args[2] : true;\n const mode = isInstanceSignature ? \"offline\" : undefined;\n const typeOrApiName = isInstanceSignature ? args[0].$objectType : args[0];\n const primaryKey = isInstanceSignature ? args[0].$primaryKey : args[1];\n const apiNameString = typeof typeOrApiName === \"string\" ? typeOrApiName : typeOrApiName.apiName;\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), `object ${apiNameString} ${primaryKey} [DISABLED]`);\n }\n return makeExternalStore(observer => observableClient.observeObject(typeOrApiName, primaryKey, {\n mode\n }, observer), `object ${apiNameString} ${primaryKey}`);\n }, [enabled, observableClient, typeOrApiName, apiNameString, primaryKey, mode]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n const forceUpdate = React.useCallback(() => {\n throw new Error(\"not implemented\");\n }, []);\n return React.useMemo(() => {\n let error;\n if (payload && \"error\" in payload && payload.error) {\n error = payload.error;\n } else if (payload?.status === \"error\") {\n error = new Error(\"Failed to load object\");\n }\n return {\n object: payload?.object,\n isLoading: enabled ? payload?.status === \"loading\" || payload?.status === \"init\" || !payload : false,\n isOptimistic: !!payload?.isOptimistic,\n error,\n forceUpdate\n };\n }, [payload, enabled, forceUpdate]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst EMPTY_WHERE = {};\nexport function useOsdkObjects(type, options) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n pageSize,\n dedupeIntervalMs,\n withProperties,\n enabled = true,\n rids,\n where,\n orderBy,\n streamUpdates,\n autoFetchMore,\n intersectWith,\n pivotTo\n } = options ?? {};\n const canonWhere = observableClient.canonicalizeWhereClause(where ?? EMPTY_WHERE);\n const stableCanonWhere = React.useMemo(() => canonWhere, [JSON.stringify(canonWhere)]);\n const stableRids = React.useMemo(() => rids, [JSON.stringify(rids)]);\n const stableWithProperties = React.useMemo(() => withProperties, [JSON.stringify(withProperties)]);\n const stableIntersectWith = React.useMemo(() => intersectWith, [JSON.stringify(intersectWith)]);\n const stableOrderBy = React.useMemo(() => orderBy, [JSON.stringify(orderBy)]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `list ${type.apiName} [DISABLED]` : void 0);\n }\n return makeExternalStore(observer => observableClient.observeList({\n type,\n rids: stableRids,\n where: stableCanonWhere,\n dedupeInterval: dedupeIntervalMs ?? 2_000,\n pageSize,\n orderBy: stableOrderBy,\n streamUpdates,\n withProperties: stableWithProperties,\n autoFetchMore,\n ...(stableIntersectWith ? {\n intersectWith: stableIntersectWith\n } : {}),\n ...(pivotTo ? {\n pivotTo\n } : {})\n }, observer), process.env.NODE_ENV !== \"production\" ? `list ${type.apiName} ${stableRids ? `[${stableRids.length} rids]` : \"\"} ${JSON.stringify(stableCanonWhere)}` : void 0);\n }, [enabled, observableClient, type.apiName, type.type, stableRids, stableCanonWhere, dedupeIntervalMs, pageSize, stableOrderBy, streamUpdates, stableWithProperties, autoFetchMore, stableIntersectWith, pivotTo]);\n const listPayload = React.useSyncExternalStore(subscribe, getSnapShot);\n return React.useMemo(() => {\n let error;\n if (listPayload && \"error\" in listPayload && listPayload.error) {\n error = listPayload.error;\n } else if (listPayload?.status === \"error\") {\n error = new Error(\"Failed to load objects\");\n }\n return {\n fetchMore: listPayload?.hasMore ? listPayload.fetchMore : undefined,\n error,\n data: listPayload?.resolvedList,\n isLoading: enabled ? listPayload?.status === \"loading\" || listPayload?.status === \"init\" || !listPayload : false,\n isOptimistic: listPayload?.isOptimistic ?? false,\n totalCount: listPayload?.totalCount\n };\n }, [listPayload, enabled]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\n/**\n * Creates a debounced version of a callback function.\n *\n * @param callback The function to debounce\n * @param delay The delay in milliseconds\n * @returns A debounced function with cancel() and flush() methods\n *\n * @example\n * ```tsx\n * const { applyAction } = useOsdkAction(editOffice);\n *\n * const debouncedSave = useDebouncedCallback(\n * async (name: string) => {\n * await applyAction({\n * Office: office,\n * name,\n * location: office.location!,\n * $optimisticUpdate: (ctx) => {\n * ctx.updateObject(office.$clone({ name }));\n * },\n * });\n * },\n * 1000\n * );\n *\n * <input onChange={(e) => debouncedSave(e.target.value)} />\n * ```\n */\nexport function useDebouncedCallback(callback, delay) {\n const timeoutRef = React.useRef();\n const callbackRef = React.useRef(callback);\n const lastArgsRef = React.useRef();\n callbackRef.current = callback;\n const cancel = React.useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n const flush = React.useCallback(() => {\n if (timeoutRef.current && lastArgsRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n void callbackRef.current(...lastArgsRef.current);\n }\n }, []);\n const debouncedCallback = React.useCallback((...args) => {\n lastArgsRef.current = args;\n cancel();\n timeoutRef.current = setTimeout(() => {\n void callbackRef.current(...args);\n }, delay);\n }, [delay, cancel]);\n React.useEffect(() => {\n return () => {\n cancel();\n };\n }, [cancel]);\n return Object.assign(debouncedCallback, {\n cancel,\n flush\n });\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/new/OsdkContext2.ts","../../../src/new/OsdkProvider2.tsx","../../../src/new/makeExternalStore.ts","../../../src/utils/usePlatformQuery.ts","../../../src/new/platform-apis/admin/useCurrentFoundryUser.ts","../../../src/new/platform-apis/admin/useFoundryUser.ts","../../../src/new/platform-apis/admin/useFoundryUsersList.ts","../../../src/new/useLinks.ts","../../../src/new/useObjectSet.tsx","../../../src/new/useOsdkAction.ts","../../../src/new/useOsdkAggregation.ts","../../../src/new/useOsdkFunction.ts","../../../src/new/useOsdkObject.ts","../../../src/new/useOsdkObjects.ts","../../../src/utils/useDebouncedCallback.ts"],"names":["useMemo","createObservableClient","React","OsdkContext","Users","computeObjectSetCacheKey","applyAction","args","ActionValidationError","validateAction","getWireObjectSet","EMPTY_WHERE"],"mappings":"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","file":"experimental.cjs","sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nfunction fakeClientFn(..._args) {\n throw new Error(\"This is not a real client. Did you forget to <OsdkContext.Provider>?\");\n}\nconst fakeClient = Object.assign(fakeClientFn, {\n fetchMetadata: fakeClientFn\n});\nexport const OsdkContext2 = /*#__PURE__*/React.createContext({\n client: fakeClient,\n observableClient: undefined\n});","/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createObservableClient } from \"@osdk/client/unstable-do-not-use\";\nimport React, { useMemo } from \"react\";\nimport { OsdkContext } from \"../OsdkContext.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nexport function OsdkProvider2({\n children,\n client,\n observableClient\n}) {\n observableClient = useMemo(() => observableClient ?? createObservableClient(client), [client, observableClient]);\n return /*#__PURE__*/React.createElement(OsdkContext2.Provider, {\n value: {\n client,\n observableClient\n }\n }, /*#__PURE__*/React.createElement(OsdkContext.Provider, {\n value: {\n client\n }\n }, children));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function makeExternalStore(createObservation, _name, initialValue) {\n let lastResult = initialValue;\n function getSnapShot() {\n return lastResult;\n }\n function subscribe(notifyUpdate) {\n const obs = createObservation({\n next: payload => {\n lastResult = payload;\n notifyUpdate();\n },\n error: error => {\n lastResult = {\n ...(lastResult ?? {}),\n error: error instanceof Error ? error : new Error(String(error))\n };\n notifyUpdate();\n },\n complete: () => {}\n });\n return () => {\n obs.unsubscribe();\n };\n }\n return {\n subscribe,\n getSnapShot\n };\n}\n\n/**\n * Like makeExternalStore but for async subscription creation.\n *\n * Uses an isActive flag to handle race conditions:\n * If cleanup runs before promise resolves, the stale subscription is\n * immediately unsubscribed when it eventually resolves\n */\nexport function makeExternalStoreAsync(createObservation, _name, initialValue) {\n let lastResult = initialValue;\n function getSnapShot() {\n return lastResult;\n }\n function subscribe(notifyUpdate) {\n let isActive = true;\n let currentSubscription;\n const subscriptionPromise = createObservation({\n next: payload => {\n if (isActive) {\n lastResult = payload;\n notifyUpdate();\n }\n },\n error: error => {\n if (isActive) {\n lastResult = {\n ...(lastResult ?? {}),\n error: error instanceof Error ? error : new Error(String(error))\n };\n notifyUpdate();\n }\n },\n complete: () => {}\n });\n subscriptionPromise.then(sub => {\n if (isActive) {\n currentSubscription = sub;\n } else {\n sub.unsubscribe();\n }\n }).catch(error => {\n if (isActive) {\n lastResult = {\n ...(lastResult ?? {}),\n error: error instanceof Error ? error : new Error(String(error))\n };\n notifyUpdate();\n }\n });\n return () => {\n isActive = false;\n if (currentSubscription) {\n currentSubscription.unsubscribe();\n }\n };\n }\n return {\n subscribe,\n getSnapShot\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"../new/makeExternalStore.js\";\nexport function usePlatformQuery({\n query,\n queryName,\n enabled = true\n}) {\n const observerRef = React.useRef();\n const handleQuery = React.useCallback(() => {\n const observer = observerRef.current;\n if (observer == null) return;\n observer.next({\n status: \"loading\",\n data: undefined\n });\n query().then(data => {\n observer.next({\n status: \"success\",\n data\n });\n }).catch(err => {\n observer.error(err);\n });\n }, [query]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `${queryName} Query [DISABLED]` : undefined);\n }\n return makeExternalStore(observer => {\n observerRef.current = observer;\n handleQuery();\n return {\n unsubscribe: () => {\n observerRef.current = undefined;\n }\n };\n }, queryName);\n }, [enabled, queryName, handleQuery]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n let error;\n if (payload && \"error\" in payload && payload.error != null) {\n error = payload.error;\n } else if (payload?.status === \"error\") {\n error = new Error(`Failed to query platform API: ${queryName}`);\n }\n return {\n data: payload?.data,\n isLoading: enabled ? payload?.status === \"loading\" || !payload : false,\n error,\n refetch: handleQuery\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Users } from \"@osdk/foundry.admin\";\nimport React from \"react\";\nimport { usePlatformQuery } from \"../../../utils/usePlatformQuery.js\";\nimport { OsdkContext2 } from \"../../OsdkContext2.js\";\n/**\n * Get the currently signed in User.\n * @param options Options to control the query.\n */\nexport function useCurrentFoundryUser({\n enabled = true\n} = {}) {\n const {\n client\n } = React.useContext(OsdkContext2);\n const handleQuery = React.useCallback(() => Users.getCurrent(client), [client]);\n const query = usePlatformQuery({\n query: handleQuery,\n enabled,\n queryName: \"foundry-current-user\"\n });\n return {\n currentUser: query.data,\n isLoading: query.isLoading,\n error: query.error,\n refetch: query.refetch\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Users } from \"@osdk/foundry.admin\";\nimport React from \"react\";\nimport { usePlatformQuery } from \"../../../utils/usePlatformQuery.js\";\nimport { OsdkContext2 } from \"../../OsdkContext2.js\";\n/**\n * Get the User with the specified id.\n * @param userId A Foundry User ID.\n * @param options Options to control the query.\n */\nexport function useFoundryUser(userId, {\n enabled = true,\n status = \"ACTIVE\"\n} = {}) {\n const {\n client\n } = React.useContext(OsdkContext2);\n const handleQuery = React.useCallback(() => {\n return Users.get(client, userId, {\n status\n });\n }, [client, userId, status]);\n const query = usePlatformQuery({\n query: handleQuery,\n enabled,\n queryName: \"foundry-user\"\n });\n return {\n user: query.data,\n isLoading: query.isLoading,\n error: query.error,\n refetch: query.refetch\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Users } from \"@osdk/foundry.admin\";\nimport React from \"react\";\nimport { usePlatformQuery } from \"../../../utils/usePlatformQuery.js\";\nimport { OsdkContext2 } from \"../../OsdkContext2.js\";\n/**\n * Lists all Users. This is a paged endpoint. Each page may be smaller or larger than the requested page size.\n * @param options Options to control the query.\n */\nexport function useFoundryUsersList({\n enabled = true,\n include = \"ACTIVE\",\n pageSize = 1000,\n pageToken\n} = {}) {\n const {\n client\n } = React.useContext(OsdkContext2);\n const handleQuery = React.useCallback(() => {\n return Users.list(client, {\n include,\n pageSize,\n pageToken\n });\n }, [client, include, pageSize, pageToken]);\n const query = usePlatformQuery({\n query: handleQuery,\n enabled,\n queryName: \"foundry-users-list\"\n });\n return {\n users: query.data?.data,\n nextPageToken: query.data?.nextPageToken,\n isLoading: query.isLoading,\n error: query.error,\n refetch: query.refetch\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst emptyArray = Object.freeze([]);\n\n/**\n * Hook to observe links from an object or array of objects.\n *\n * @param objects The source object(s) to observe links from\n * @param linkName The name of the link to observe\n * @param options Optional configuration for the link query\n * @returns UseLinksResult with links data and metadata\n */\nexport function useLinks(objects, linkName, options = {}) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n enabled = true,\n ...otherOptions\n } = options;\n const stableWhere = React.useMemo(() => otherOptions.where, [JSON.stringify(otherOptions.where)]);\n const stableOrderBy = React.useMemo(() => otherOptions.orderBy, [JSON.stringify(otherOptions.orderBy)]);\n const objectsKey = React.useMemo(() => {\n if (objects === undefined) return \"\";\n const arr = Array.isArray(objects) ? objects : [objects];\n return arr.map(obj => `${obj.$apiName}:${obj.$primaryKey}`).join(\",\");\n }, [objects]);\n\n // Convert single object to array for consistent handling\n const objectsArray = React.useMemo(() => {\n return objects === undefined ? emptyArray : Array.isArray(objects) ? objects : [objects];\n }, [objectsKey, objects]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), `links ${linkName} for ${objectsKey} [DISABLED]`);\n }\n return makeExternalStore(observer => observableClient.observeLinks(objectsArray, linkName, {\n linkName,\n where: stableWhere,\n pageSize: otherOptions.pageSize,\n orderBy: stableOrderBy,\n mode: otherOptions.mode,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000\n }, observer), `links ${linkName} for ${objectsKey}`);\n }, [enabled, observableClient, objectsArray, objectsKey, linkName, stableWhere, otherOptions.pageSize, stableOrderBy, otherOptions.mode, otherOptions.dedupeIntervalMs]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n return React.useMemo(() => ({\n links: payload?.resolvedList,\n isLoading: enabled ? payload?.status === \"loading\" || payload?.status === \"init\" || !payload : false,\n isOptimistic: payload?.isOptimistic ?? false,\n error: payload?.error,\n fetchMore: payload?.hasMore ? payload?.fetchMore : undefined,\n hasMore: payload?.hasMore ?? false\n }), [payload, enabled]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { computeObjectSetCacheKey } from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst OBJECT_TYPE_PLACEHOLDER = \"$__OBJECT__TYPE__PLACEHOLDER\";\n/**\n * React hook for observing and interacting with OSDK object sets.\n *\n * @typeParam Q - The object type definition\n * @typeParam BaseRDPs - Derived properties that already exist on the input ObjectSet\n * @typeParam RDPs - New derived properties to be added via options.withProperties\n *\n * @param baseObjectSet - The ObjectSet to observe (may already have derived properties)\n * @param options - Options for filtering, sorting, and adding new derived properties\n * @returns Object set data with both existing and new derived properties\n */\nexport function useObjectSet(baseObjectSet, options = {}) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n enabled = true,\n streamUpdates,\n ...otherOptions\n } = options;\n\n // Track object type to detect when we switch to a different object type\n const objectTypeKey = enabled ? baseObjectSet.$objectSetInternals.def.apiName : OBJECT_TYPE_PLACEHOLDER;\n const previousObjectTypeRef = React.useRef(objectTypeKey);\n const previousCompletedPayloadRef = React.useRef();\n const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;\n if (objectTypeChanged) {\n previousObjectTypeRef.current = objectTypeKey;\n previousCompletedPayloadRef.current = undefined;\n }\n\n // Compute a stable cache key for the ObjectSet and options\n // dedupeIntervalMs and enabled are excluded as they don't affect the data\n const stableKey = computeObjectSetCacheKey(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy\n });\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `objectSet ${stableKey} [DISABLED]` : void 0);\n }\n const initialValue = objectTypeChanged ? undefined : previousCompletedPayloadRef.current;\n return makeExternalStore(observer => {\n const subscription = observableClient.observeObjectSet(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000,\n autoFetchMore: otherOptions.autoFetchMore,\n streamUpdates\n }, observer);\n return subscription;\n }, process.env.NODE_ENV !== \"production\" ? `objectSet ${stableKey}` : void 0, initialValue);\n }, [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n if (payload && isPayloadCompleted(payload)) {\n previousCompletedPayloadRef.current = payload;\n }\n return React.useMemo(() => {\n const lastLoaded = isPayloadCompleted(payload) ? payload : previousCompletedPayloadRef.current;\n return {\n data: lastLoaded?.resolvedList,\n isLoading: !isPayloadCompleted(payload),\n error: lastLoaded && \"error\" in lastLoaded ? lastLoaded.error : undefined,\n fetchMore: payload?.hasMore ? payload.fetchMore : undefined,\n objectSet: payload?.objectSet || baseObjectSet,\n totalCount: lastLoaded?.totalCount\n };\n }, [payload, baseObjectSet]);\n}\nfunction isPayloadCompleted(payload) {\n if (payload != null && \"error\" in payload) {\n return true;\n }\n if (payload?.status == null) {\n return false;\n }\n switch (payload.status) {\n case \"loaded\":\n case \"error\":\n return true;\n case \"loading\":\n case \"init\":\n return false;\n default:\n payload.status;\n return false;\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionValidationError } from \"@osdk/client\";\nimport React from \"react\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nexport function useOsdkAction(actionDef) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const [error, setError] = React.useState();\n const [data, setData] = React.useState();\n const [isPending, setPending] = React.useState(false);\n const [isValidating, setValidating] = React.useState(false);\n const [validationResult, setValidationResult] = React.useState();\n const abortControllerRef = React.useRef(null);\n const applyAction = React.useCallback(async function applyAction(hookArgs) {\n try {\n // If validation is in progress, abort it\n if (isValidating && abortControllerRef.current) {\n abortControllerRef.current.abort();\n setValidating(false);\n }\n setPending(true);\n setError(undefined);\n if (Array.isArray(hookArgs)) {\n const updates = [];\n const args = hookArgs.map(a => {\n const {\n $optimisticUpdate,\n ...args\n } = a;\n if ($optimisticUpdate) {\n updates.push($optimisticUpdate);\n }\n return args;\n });\n const r = await observableClient.applyAction(actionDef, args, {\n optimisticUpdate: ctx => {\n for (const update of updates) {\n update?.(ctx);\n }\n }\n });\n setData(r);\n return r;\n } else {\n const {\n $optimisticUpdate,\n ...args\n } = hookArgs;\n const r = await observableClient.applyAction(actionDef, args, {\n optimisticUpdate: $optimisticUpdate\n });\n setData(r);\n return r;\n }\n } catch (e) {\n if (e instanceof ActionValidationError) {\n setError({\n actionValidation: e\n });\n } else {\n setError({\n unknown: e\n });\n }\n } finally {\n setPending(false);\n }\n }, [observableClient, actionDef, isValidating]);\n const validateAction = React.useCallback(async function validateAction(args) {\n try {\n // Check if action is being applied\n if (isPending) {\n return undefined;\n }\n\n // Abort any existing validation\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // Create new AbortController\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n setValidating(true);\n setError(undefined);\n const result = await observableClient.validateAction(actionDef, args);\n\n // Check if aborted\n if (abortController.signal.aborted) {\n return undefined;\n }\n setValidationResult(result);\n return result;\n } catch (e) {\n // Check if it was aborted\n if (e instanceof Error && e.name === \"AbortError\") {\n return undefined;\n }\n if (e instanceof ActionValidationError) {\n setError({\n actionValidation: e\n });\n } else {\n setError({\n unknown: e\n });\n }\n throw e;\n } finally {\n setValidating(false);\n }\n }, [observableClient, actionDef, isPending]);\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n };\n }, []);\n return React.useMemo(() => ({\n applyAction,\n validateAction,\n error,\n data,\n isPending,\n isValidating,\n validationResult\n }), [applyAction, validateAction, error, data, isPending, isValidating, validationResult]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { computeObjectSetCacheKey } from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore, makeExternalStoreAsync } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst EMPTY_WHERE = {};\n\n/**\n * React hook for performing aggregations on OSDK object sets.\n *\n * Executes server-side aggregations with groupBy and metric calculations on filtered object sets.\n * Supports runtime derived properties and where clauses.\n *\n * @param type - The object or interface type to aggregate\n * @param options - Aggregation configuration including where clause, aggregation spec, and optional derived properties\n * @returns Object containing aggregation results, loading state, error state, and refetch function\n *\n * @example\n * ```tsx\n * // Basic aggregation without ObjectSet\n * const { data, isLoading, error } = useOsdkAggregation(Employee, {\n * where: { department: \"Engineering\" },\n * aggregate: {\n * groupBy: { department: \"exact\" },\n * select: {\n * avgSalary: { $avg: \"salary\" },\n * count: { $count: {} }\n * }\n * }\n * });\n *\n * // With a pivoted ObjectSet\n * const pivotedSet = useMemo(() => $(Employee).pivotTo(\"primaryOffice\"), []);\n * const { data } = useOsdkAggregation(Office, {\n * objectSet: pivotedSet,\n * aggregate: { $select: { $count: \"unordered\" } }\n * });\n * ```\n */\n\nexport function useOsdkAggregation(type, options) {\n const {\n where = EMPTY_WHERE,\n withProperties,\n intersectWith,\n aggregate,\n dedupeIntervalMs\n } = options;\n const objectSet = \"objectSet\" in options ? options.objectSet : undefined;\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const canonWhere = observableClient.canonicalizeWhereClause(where);\n const stableCanonWhere = React.useMemo(() => canonWhere, [JSON.stringify(canonWhere)]);\n const objectSetRef = React.useRef(objectSet);\n objectSetRef.current = objectSet;\n const objectSetKeyString = objectSet ? computeObjectSetCacheKey(objectSet) : undefined;\n const stableWithProperties = React.useMemo(() => withProperties, [JSON.stringify(withProperties)]);\n const stableAggregate = React.useMemo(() => aggregate, [JSON.stringify(aggregate)]);\n const stableIntersectWith = React.useMemo(() => intersectWith, [JSON.stringify(intersectWith)]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (objectSetKeyString && objectSetRef.current) {\n return makeExternalStoreAsync(observer => observableClient.observeAggregation({\n type: type,\n objectSet: objectSetRef.current,\n where: stableCanonWhere,\n withProperties: stableWithProperties,\n intersectWith: stableIntersectWith,\n aggregate: stableAggregate,\n dedupeInterval: dedupeIntervalMs ?? 2_000\n }, observer), process.env.NODE_ENV !== \"production\" ? `aggregation ${type.apiName} ${objectSetKeyString} ${JSON.stringify(stableCanonWhere)}` : void 0);\n }\n return makeExternalStore(observer =>\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n observableClient.observeAggregation({\n type: type,\n where: stableCanonWhere,\n withProperties: stableWithProperties,\n intersectWith: stableIntersectWith,\n aggregate: stableAggregate,\n dedupeInterval: dedupeIntervalMs ?? 2_000\n }, observer), process.env.NODE_ENV !== \"production\" ? `aggregation ${type.apiName} ${JSON.stringify(stableCanonWhere)}` : void 0);\n }, [observableClient, type.apiName, type.type, objectSetKeyString, stableCanonWhere, stableWithProperties, stableIntersectWith, stableAggregate, dedupeIntervalMs]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n const refetch = React.useCallback(async () => {\n await observableClient.invalidateObjectType(type.apiName);\n }, [observableClient, type.apiName]);\n return React.useMemo(() => {\n let error;\n if (payload && \"error\" in payload && payload.error) {\n error = payload.error;\n } else if (payload?.status === \"error\") {\n error = new Error(\"Failed to execute aggregation\");\n }\n return {\n data: payload?.result,\n isLoading: payload?.status === \"loading\" || payload?.status === \"init\" || !payload,\n error,\n refetch\n };\n }, [payload, refetch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getWireObjectSet } from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n/**\n * React hook for executing and observing OSDK functions.\n *\n * Provides automatic caching, deduplication, and reactive updates for function calls.\n * Functions are automatically re-fetched when dependencies change (configured via options).\n *\n * @param queryDef - The QueryDefinition to execute\n * @param options - Configuration options for the function call\n * @returns Object containing result, loading state, error, and refetch function\n *\n * @example Basic usage\n * ```tsx\n * const { data, isLoading, error } = useOsdkFunction(getEmployeeStats, {\n * params: { departmentId: \"engineering\" }\n * });\n * ```\n *\n * @example With dependency tracking\n * ```tsx\n * const { data, refetch } = useOsdkFunction(calculateMetrics, {\n * params: { startDate, endDate },\n * dependsOn: [Employee, Project],\n * });\n * ```\n *\n * @example With specific object dependencies\n * ```tsx\n * const { data } = useOsdkFunction(getEmployeeReport, {\n * params: { employeeId: employee.$primaryKey },\n * dependsOnObjects: [employee],\n * });\n * ```\n */\nexport function useOsdkFunction(queryDef, options = {}) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n params,\n dependsOn,\n dependsOnObjects,\n dedupeIntervalMs,\n enabled = true\n } = options;\n const stableParams = React.useMemo(() => params, [JSON.stringify(params)]);\n const stableDependsOn = React.useMemo(() => dependsOn, [JSON.stringify(dependsOn?.map(d => typeof d === \"string\" ? d : d.apiName))]);\n const stableDependsOnObjects = React.useMemo(() => dependsOnObjects, [JSON.stringify(dependsOnObjects?.map(item => \"$apiName\" in item ? {\n $apiName: item.$apiName,\n $primaryKey: item.$primaryKey\n } : {\n __objectSet: getWireObjectSet(item)\n }))]);\n\n // Record<string, unknown> required as typing is figured out at runtime\n const paramsForApi = stableParams;\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `function ${queryDef.apiName} ${JSON.stringify(stableParams)} [DISABLED]` : void 0);\n }\n return makeExternalStore(observer => observableClient.observeFunction(queryDef, paramsForApi, {\n dependsOn: stableDependsOn,\n dependsOnObjects: stableDependsOnObjects,\n dedupeInterval: dedupeIntervalMs ?? 2_000\n }, observer), process.env.NODE_ENV !== \"production\" ? `function ${queryDef.apiName} ${JSON.stringify(stableParams)}` : void 0);\n }, [observableClient, queryDef.apiName, queryDef.version, paramsForApi, stableDependsOn, stableDependsOnObjects, dedupeIntervalMs, enabled]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n const refetch = React.useCallback(() => {\n void observableClient.invalidateFunction(queryDef, paramsForApi);\n }, [observableClient, queryDef, paramsForApi]);\n return React.useMemo(() => {\n const error = payload?.error ?? (payload?.status === \"error\" ? new Error(\"Failed to execute function\") : undefined);\n return {\n data: payload?.result,\n isLoading: payload?.status === \"loading\",\n error,\n lastUpdated: payload?.lastUpdated ?? 0,\n refetch\n };\n }, [payload, refetch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n\n/**\n * @param obj an existing `Osdk.Instance` object to get metadata for.\n * @param enabled Enable or disable the query (defaults to true)\n */\n\n/**\n * Loads an object or interface instance by type and primary key.\n *\n * @param type The object type or interface definition\n * @param primaryKey The primary key of the object\n * @param enabled Enable or disable the query (defaults to true)\n */\n\n/*\n Implementation of useOsdkObject\n */\nexport function useOsdkObject(...args) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n\n // Check if first arg is an instance to discriminate signatures\n // TypeScript cannot narrow rest parameter unions with optional parameters,\n // so we must use type assertions after runtime discrimination\n const isInstanceSignature = \"$objectType\" in args[0];\n\n // Extract enabled flag - 2nd param for instance signature, 3rd for type signature\n const enabled = isInstanceSignature ? typeof args[1] === \"boolean\" ? args[1] : true : typeof args[2] === \"boolean\" ? args[2] : true;\n const mode = isInstanceSignature ? \"offline\" : undefined;\n const typeOrApiName = isInstanceSignature ? args[0].$objectType : args[0];\n const primaryKey = isInstanceSignature ? args[0].$primaryKey : args[1];\n const apiNameString = typeof typeOrApiName === \"string\" ? typeOrApiName : typeOrApiName.apiName;\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), `object ${apiNameString} ${primaryKey} [DISABLED]`);\n }\n return makeExternalStore(observer => observableClient.observeObject(typeOrApiName, primaryKey, {\n mode\n }, observer), `object ${apiNameString} ${primaryKey}`);\n }, [enabled, observableClient, typeOrApiName, apiNameString, primaryKey, mode]);\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n const forceUpdate = React.useCallback(() => {\n throw new Error(\"not implemented\");\n }, []);\n return React.useMemo(() => {\n let error;\n if (payload && \"error\" in payload && payload.error) {\n error = payload.error;\n } else if (payload?.status === \"error\") {\n error = new Error(\"Failed to load object\");\n }\n return {\n object: payload?.object,\n isLoading: enabled ? payload?.status === \"loading\" || payload?.status === \"init\" || !payload : false,\n isOptimistic: !!payload?.isOptimistic,\n error,\n forceUpdate\n };\n }, [payload, enabled, forceUpdate]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { makeExternalStore } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\nconst EMPTY_WHERE = {};\nexport function useOsdkObjects(type, options) {\n const {\n observableClient\n } = React.useContext(OsdkContext2);\n const {\n pageSize,\n dedupeIntervalMs,\n withProperties,\n enabled = true,\n rids,\n where,\n orderBy,\n streamUpdates,\n autoFetchMore,\n intersectWith,\n pivotTo\n } = options ?? {};\n const canonWhere = observableClient.canonicalizeWhereClause(where ?? EMPTY_WHERE);\n const stableCanonWhere = React.useMemo(() => canonWhere, [JSON.stringify(canonWhere)]);\n const stableRids = React.useMemo(() => rids, [JSON.stringify(rids)]);\n const stableWithProperties = React.useMemo(() => withProperties, [JSON.stringify(withProperties)]);\n const stableIntersectWith = React.useMemo(() => intersectWith, [JSON.stringify(intersectWith)]);\n const stableOrderBy = React.useMemo(() => orderBy, [JSON.stringify(orderBy)]);\n const {\n subscribe,\n getSnapShot\n } = React.useMemo(() => {\n if (!enabled) {\n return makeExternalStore(() => ({\n unsubscribe: () => {}\n }), process.env.NODE_ENV !== \"production\" ? `list ${type.apiName} [DISABLED]` : void 0);\n }\n return makeExternalStore(observer => observableClient.observeList({\n type,\n rids: stableRids,\n where: stableCanonWhere,\n dedupeInterval: dedupeIntervalMs ?? 2_000,\n pageSize,\n orderBy: stableOrderBy,\n streamUpdates,\n withProperties: stableWithProperties,\n autoFetchMore,\n ...(stableIntersectWith ? {\n intersectWith: stableIntersectWith\n } : {}),\n ...(pivotTo ? {\n pivotTo\n } : {})\n }, observer), process.env.NODE_ENV !== \"production\" ? `list ${type.apiName} ${stableRids ? `[${stableRids.length} rids]` : \"\"} ${JSON.stringify(stableCanonWhere)}` : void 0);\n }, [enabled, observableClient, type.apiName, type.type, stableRids, stableCanonWhere, dedupeIntervalMs, pageSize, stableOrderBy, streamUpdates, stableWithProperties, autoFetchMore, stableIntersectWith, pivotTo]);\n const listPayload = React.useSyncExternalStore(subscribe, getSnapShot);\n return React.useMemo(() => {\n let error;\n if (listPayload && \"error\" in listPayload && listPayload.error) {\n error = listPayload.error;\n } else if (listPayload?.status === \"error\") {\n error = new Error(\"Failed to load objects\");\n }\n return {\n fetchMore: listPayload?.hasMore ? listPayload.fetchMore : undefined,\n error,\n data: listPayload?.resolvedList,\n isLoading: enabled ? listPayload?.status === \"loading\" || listPayload?.status === \"init\" || !listPayload : false,\n isOptimistic: listPayload?.isOptimistic ?? false,\n totalCount: listPayload?.totalCount\n };\n }, [listPayload, enabled]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\n/**\n * Creates a debounced version of a callback function.\n *\n * @param callback The function to debounce\n * @param delay The delay in milliseconds\n * @returns A debounced function with cancel() and flush() methods\n *\n * @example\n * ```tsx\n * const { applyAction } = useOsdkAction(editOffice);\n *\n * const debouncedSave = useDebouncedCallback(\n * async (name: string) => {\n * await applyAction({\n * Office: office,\n * name,\n * location: office.location!,\n * $optimisticUpdate: (ctx) => {\n * ctx.updateObject(office.$clone({ name }));\n * },\n * });\n * },\n * 1000\n * );\n *\n * <input onChange={(e) => debouncedSave(e.target.value)} />\n * ```\n */\nexport function useDebouncedCallback(callback, delay) {\n const timeoutRef = React.useRef();\n const callbackRef = React.useRef(callback);\n const lastArgsRef = React.useRef();\n callbackRef.current = callback;\n const cancel = React.useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n const flush = React.useCallback(() => {\n if (timeoutRef.current && lastArgsRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n void callbackRef.current(...lastArgsRef.current);\n }\n }, []);\n const debouncedCallback = React.useCallback((...args) => {\n lastArgsRef.current = args;\n cancel();\n timeoutRef.current = setTimeout(() => {\n void callbackRef.current(...args);\n }, delay);\n }, [delay, cancel]);\n React.useEffect(() => {\n return () => {\n cancel();\n };\n }, [cancel]);\n return Object.assign(debouncedCallback, {\n cancel,\n flush\n });\n}"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Client, Osdk, WhereClause, PropertyKeys, ActionDefinition, ActionEditResponse, ActionValidationError, ActionValidationResponse, ObjectTypeDefinition
|
|
1
|
+
import { Client, Osdk, WhereClause, PropertyKeys, ActionDefinition, ActionEditResponse, ActionValidationError, ActionValidationResponse, ObjectTypeDefinition } from '@osdk/client';
|
|
2
2
|
import { ObservableClient, ActionSignatureFromDef, QueryParameterType } from '@osdk/client/unstable-do-not-use';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { User, ListUsersResponse } from '@osdk/foundry.admin';
|
|
5
5
|
import { UserStatus } from '@osdk/foundry.core';
|
|
6
|
-
import { ObjectOrInterfaceDefinition, LinkNames, LinkedType,
|
|
6
|
+
import { ObjectOrInterfaceDefinition, LinkNames, LinkedType, SimplePropertyDef, ObjectSet, WhereClause as WhereClause$1, DerivedProperty, PropertyKeys as PropertyKeys$1, Osdk as Osdk$1, AggregateOpts, AggregationsResults, QueryDefinition, CompileTimeMetadata, ObjectTypeDefinition as ObjectTypeDefinition$1, PrimaryKeyType } from '@osdk/api';
|
|
7
7
|
export { U as UseOsdkMetadataResult, u as useOsdkClient, a as useOsdkMetadata } from '../useOsdkMetadata-DFZhnhGZ.cjs';
|
|
8
8
|
|
|
9
9
|
interface OsdkProviderOptions {
|
|
@@ -202,7 +202,7 @@ interface UseLinksResult<Q extends ObjectOrInterfaceDefinition> {
|
|
|
202
202
|
*/
|
|
203
203
|
declare function useLinks<T extends ObjectOrInterfaceDefinition, L extends LinkNames<T>>(objects: Osdk.Instance<T> | Array<Osdk.Instance<T>> | undefined, linkName: L, options?: UseLinksOptions<LinkedType<T, L>>): UseLinksResult<LinkedType<T, L>>;
|
|
204
204
|
|
|
205
|
-
interface UseObjectSetOptions<Q extends
|
|
205
|
+
interface UseObjectSetOptions<Q extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> {
|
|
206
206
|
/**
|
|
207
207
|
* Where clause for filtering
|
|
208
208
|
*/
|
|
@@ -280,7 +280,7 @@ interface UseObjectSetOptions<Q extends ObjectTypeDefinition, RDPs extends Recor
|
|
|
280
280
|
*/
|
|
281
281
|
enabled?: boolean;
|
|
282
282
|
}
|
|
283
|
-
interface UseObjectSetResult<Q extends
|
|
283
|
+
interface UseObjectSetResult<Q extends ObjectOrInterfaceDefinition, RDPs extends Record<string, SimplePropertyDef> = {}> {
|
|
284
284
|
/**
|
|
285
285
|
* The fetched data with derived properties
|
|
286
286
|
*/
|
|
@@ -317,7 +317,7 @@ interface UseObjectSetResult<Q extends ObjectTypeDefinition, RDPs extends Record
|
|
|
317
317
|
* @param options - Options for filtering, sorting, and adding new derived properties
|
|
318
318
|
* @returns Object set data with both existing and new derived properties
|
|
319
319
|
*/
|
|
320
|
-
declare function useObjectSet<Q extends
|
|
320
|
+
declare function useObjectSet<Q extends ObjectOrInterfaceDefinition, BaseRDPs extends Record<string, SimplePropertyDef> = never, RDPs extends Record<string, SimplePropertyDef> = {}>(baseObjectSet: ObjectSet<Q, BaseRDPs>, options?: UseObjectSetOptions<Q, RDPs>): UseObjectSetResult<Q, RDPs>;
|
|
321
321
|
|
|
322
322
|
type ApplyActionParams<Q extends ActionDefinition<any>> = Parameters<ActionSignatureFromDef<Q>["applyAction"]>[0] & {
|
|
323
323
|
[K in keyof ObservableClient.ApplyActionOptions as `$${K}`]: ObservableClient.ApplyActionOptions[K];
|
|
@@ -377,7 +377,7 @@ interface UseOsdkAggregationBaseOptions<T extends ObjectOrInterfaceDefinition, A
|
|
|
377
377
|
}
|
|
378
378
|
interface UseOsdkAggregationOptions<T extends ObjectOrInterfaceDefinition, A extends AggregateOpts<T>, RDPs extends Record<string, SimplePropertyDef> = {}> extends UseOsdkAggregationBaseOptions<T, A, RDPs> {
|
|
379
379
|
}
|
|
380
|
-
interface UseOsdkAggregationOptionsWithObjectSet<T extends ObjectTypeDefinition
|
|
380
|
+
interface UseOsdkAggregationOptionsWithObjectSet<T extends ObjectTypeDefinition, A extends AggregateOpts<T>, RDPs extends Record<string, SimplePropertyDef> = {}> extends UseOsdkAggregationBaseOptions<T, A, RDPs> {
|
|
381
381
|
/**
|
|
382
382
|
* The ObjectSet to aggregate on. Enables aggregation on pivoted, filtered, or composed ObjectSets.
|
|
383
383
|
*/
|
|
@@ -422,7 +422,7 @@ interface UseOsdkAggregationResult<T extends ObjectOrInterfaceDefinition, A exte
|
|
|
422
422
|
* ```
|
|
423
423
|
*/
|
|
424
424
|
declare function useOsdkAggregation<Q extends ObjectOrInterfaceDefinition, const A extends AggregateOpts<Q>, RDPs extends Record<string, SimplePropertyDef> = {}>(type: Q, options: UseOsdkAggregationOptions<Q, A, RDPs>): UseOsdkAggregationResult<Q, A>;
|
|
425
|
-
declare function useOsdkAggregation<Q extends ObjectTypeDefinition
|
|
425
|
+
declare function useOsdkAggregation<Q extends ObjectTypeDefinition, const A extends AggregateOpts<Q>, RDPs extends Record<string, SimplePropertyDef> = {}>(type: Q, options: UseOsdkAggregationOptionsWithObjectSet<Q, A, RDPs>): UseOsdkAggregationResult<Q, A>;
|
|
426
426
|
|
|
427
427
|
interface UseOsdkFunctionOptions<Q extends QueryDefinition<unknown>> {
|
|
428
428
|
/**
|
|
@@ -440,7 +440,7 @@ interface UseOsdkFunctionOptions<Q extends QueryDefinition<unknown>> {
|
|
|
440
440
|
* { dependsOn: [Employee] }
|
|
441
441
|
* ```
|
|
442
442
|
*/
|
|
443
|
-
dependsOn?: Array<ObjectTypeDefinition | string>;
|
|
443
|
+
dependsOn?: Array<ObjectTypeDefinition$1 | string>;
|
|
444
444
|
/**
|
|
445
445
|
* Specific object instances or ObjectSets this function depends on.
|
|
446
446
|
* When any of these specific objects change, the function will refetch.
|
|
@@ -458,7 +458,7 @@ interface UseOsdkFunctionOptions<Q extends QueryDefinition<unknown>> {
|
|
|
458
458
|
* { dependsOnObjects: [employeeObjectSet] }
|
|
459
459
|
* ```
|
|
460
460
|
*/
|
|
461
|
-
dependsOnObjects?: Array<Osdk$1.Instance<ObjectTypeDefinition> | ObjectSet<ObjectTypeDefinition>>;
|
|
461
|
+
dependsOnObjects?: Array<Osdk$1.Instance<ObjectTypeDefinition$1> | ObjectSet<ObjectTypeDefinition$1>>;
|
|
462
462
|
/**
|
|
463
463
|
* The number of milliseconds to dedupe identical function calls.
|
|
464
464
|
* Two calls with the same function and params will share results
|
|
@@ -43,10 +43,11 @@ export function useObjectSet(baseObjectSet, options = {}) {
|
|
|
43
43
|
// Track object type to detect when we switch to a different object type
|
|
44
44
|
const objectTypeKey = enabled ? baseObjectSet.$objectSetInternals.def.apiName : OBJECT_TYPE_PLACEHOLDER;
|
|
45
45
|
const previousObjectTypeRef = React.useRef(objectTypeKey);
|
|
46
|
-
const
|
|
46
|
+
const previousCompletedPayloadRef = React.useRef();
|
|
47
47
|
const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;
|
|
48
48
|
if (objectTypeChanged) {
|
|
49
49
|
previousObjectTypeRef.current = objectTypeKey;
|
|
50
|
+
previousCompletedPayloadRef.current = undefined;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
// Compute a stable cache key for the ObjectSet and options
|
|
@@ -70,7 +71,7 @@ export function useObjectSet(baseObjectSet, options = {}) {
|
|
|
70
71
|
unsubscribe: () => {}
|
|
71
72
|
}), process.env.NODE_ENV !== "production" ? `objectSet ${stableKey} [DISABLED]` : void 0);
|
|
72
73
|
}
|
|
73
|
-
const initialValue = objectTypeChanged ? undefined :
|
|
74
|
+
const initialValue = objectTypeChanged ? undefined : previousCompletedPayloadRef.current;
|
|
74
75
|
return makeExternalStore(observer => {
|
|
75
76
|
const subscription = observableClient.observeObjectSet(baseObjectSet, {
|
|
76
77
|
where: otherOptions.where,
|
|
@@ -89,18 +90,38 @@ export function useObjectSet(baseObjectSet, options = {}) {
|
|
|
89
90
|
}, process.env.NODE_ENV !== "production" ? `objectSet ${stableKey}` : void 0, initialValue);
|
|
90
91
|
}, [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged]);
|
|
91
92
|
const payload = React.useSyncExternalStore(subscribe, getSnapShot);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
93
|
+
if (payload && isPayloadCompleted(payload)) {
|
|
94
|
+
previousCompletedPayloadRef.current = payload;
|
|
95
|
+
}
|
|
96
|
+
return React.useMemo(() => {
|
|
97
|
+
const lastLoaded = isPayloadCompleted(payload) ? payload : previousCompletedPayloadRef.current;
|
|
98
|
+
return {
|
|
99
|
+
data: lastLoaded?.resolvedList,
|
|
100
|
+
isLoading: !isPayloadCompleted(payload),
|
|
101
|
+
error: lastLoaded && "error" in lastLoaded ? lastLoaded.error : undefined,
|
|
102
|
+
fetchMore: payload?.hasMore ? payload.fetchMore : undefined,
|
|
103
|
+
objectSet: payload?.objectSet || baseObjectSet,
|
|
104
|
+
totalCount: lastLoaded?.totalCount
|
|
105
|
+
};
|
|
106
|
+
}, [payload, baseObjectSet]);
|
|
107
|
+
}
|
|
108
|
+
function isPayloadCompleted(payload) {
|
|
109
|
+
if (payload != null && "error" in payload) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (payload?.status == null) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
switch (payload.status) {
|
|
116
|
+
case "loaded":
|
|
117
|
+
case "error":
|
|
118
|
+
return true;
|
|
119
|
+
case "loading":
|
|
120
|
+
case "init":
|
|
121
|
+
return false;
|
|
122
|
+
default:
|
|
123
|
+
payload.status;
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
105
126
|
}
|
|
106
127
|
//# sourceMappingURL=useObjectSet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObjectSet.js","names":["computeObjectSetCacheKey","React","makeExternalStore","OsdkContext2","OBJECT_TYPE_PLACEHOLDER","useObjectSet","baseObjectSet","options","observableClient","useContext","enabled","streamUpdates","otherOptions","objectTypeKey","$objectSetInternals","def","apiName","previousObjectTypeRef","useRef","previousPayloadRef","objectTypeChanged","current","stableKey","where","withProperties","union","intersect","subtract","pivotTo","pageSize","orderBy","subscribe","getSnapShot","useMemo","unsubscribe","process","env","NODE_ENV","initialValue","undefined","observer","subscription","observeObjectSet","dedupeInterval","dedupeIntervalMs","autoFetchMore","payload","useSyncExternalStore","useEffect","data","resolvedList","isLoading","status","error","fetchMore","hasMore","objectSet","totalCount"],"sources":["useObjectSet.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\n\nimport {\n computeObjectSetCacheKey,\n type ObserveObjectSetArgs,\n} from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore, type Snapshot } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n\nexport interface UseObjectSetOptions<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Where clause for filtering\n */\n where?: WhereClause<Q, RDPs>;\n\n /**\n * Derived properties to add to the object set\n */\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n\n /**\n * Object sets to union with\n */\n union?: ObjectSet<Q>[];\n\n /**\n * Object sets to intersect with\n */\n intersect?: ObjectSet<Q>[];\n\n /**\n * Object sets to subtract from\n */\n subtract?: ObjectSet<Q>[];\n\n /**\n * Link to pivot to (changes the type)\n */\n pivotTo?: LinkNames<Q>;\n\n /**\n * The preferred page size for the list\n */\n pageSize?: number;\n\n /**\n * Sort order for the results\n */\n orderBy?: {\n [K in PropertyKeys<Q>]?: \"asc\" | \"desc\";\n };\n\n /**\n * Minimum time between fetch requests in milliseconds (defaults to 2000ms)\n */\n dedupeIntervalMs?: number;\n\n /**\n * Automatically fetch additional pages on initial load.\n *\n * - `true`: Fetch all available pages automatically\n * - `number`: Fetch pages until at least this many items are loaded\n * - `undefined` (default): Only fetch the first page, user must call fetchMore()\n */\n autoFetchMore?: boolean | number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the object set will automatically update when matching objects are\n * added, updated, or removed.\n *\n * @default false\n */\n streamUpdates?: boolean;\n\n /**\n * Enable or disable the query.\n *\n * When `false`, the query will not automatically execute. It will still\n * return any cached data, but will not fetch from the server.\n *\n * This is useful for:\n * - Lazy/on-demand queries that should wait for user interaction\n * - Dependent queries that need data from another query first\n * - Conditional queries based on component state\n *\n * @default true\n * @example\n * // Dependent query - wait for filter selection\n * const { data: filteredObjects } = useObjectSet(MyObject.all(), {\n * where: { status: selectedStatus },\n * enabled: !!selectedStatus\n * });\n */\n enabled?: boolean;\n}\n\nexport interface UseObjectSetResult<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * The fetched data with derived properties\n */\n data:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined;\n\n /**\n * Whether data is currently being loaded\n */\n isLoading: boolean;\n\n /**\n * Any error that occurred during fetching\n */\n error: Error | undefined;\n\n /**\n * Function to fetch more pages (undefined if no more pages)\n */\n fetchMore: (() => Promise<void>) | undefined;\n\n /**\n * The final ObjectSet after all transformations\n */\n objectSet: ObjectSet<Q, RDPs>;\n\n /**\n * The total count of objects matching the query (if available from the API)\n */\n totalCount?: string;\n}\n\ndeclare const process: {\n env: {\n NODE_ENV: \"development\" | \"production\";\n };\n};\n\nconst OBJECT_TYPE_PLACEHOLDER = \"$__OBJECT__TYPE__PLACEHOLDER\";\n/**\n * React hook for observing and interacting with OSDK object sets.\n *\n * @typeParam Q - The object type definition\n * @typeParam BaseRDPs - Derived properties that already exist on the input ObjectSet\n * @typeParam RDPs - New derived properties to be added via options.withProperties\n *\n * @param baseObjectSet - The ObjectSet to observe (may already have derived properties)\n * @param options - Options for filtering, sorting, and adding new derived properties\n * @returns Object set data with both existing and new derived properties\n */\nexport function useObjectSet<\n Q extends ObjectTypeDefinition,\n BaseRDPs extends Record<string, SimplePropertyDef> = never,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n baseObjectSet: ObjectSet<Q, BaseRDPs>,\n options: UseObjectSetOptions<Q, RDPs> = {},\n): UseObjectSetResult<Q, RDPs> {\n const { observableClient } = React.useContext(OsdkContext2);\n\n const { enabled = true, streamUpdates, ...otherOptions } = options;\n\n // Track object type to detect when we switch to a different object type\n const objectTypeKey = enabled\n ? baseObjectSet.$objectSetInternals.def.apiName\n : OBJECT_TYPE_PLACEHOLDER;\n\n const previousObjectTypeRef = React.useRef<string>(objectTypeKey);\n const previousPayloadRef = React.useRef<\n Snapshot<ObserveObjectSetArgs<Q, RDPs>> | undefined\n >();\n\n const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;\n if (objectTypeChanged) {\n previousObjectTypeRef.current = objectTypeKey;\n }\n\n // Compute a stable cache key for the ObjectSet and options\n // dedupeIntervalMs and enabled are excluded as they don't affect the data\n const stableKey = computeObjectSetCacheKey(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n });\n\n const { subscribe, getSnapShot } = React.useMemo(\n () => {\n if (!enabled) {\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n () => ({ unsubscribe: () => {} }),\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey} [DISABLED]`\n : void 0,\n );\n }\n\n const initialValue = objectTypeChanged\n ? undefined\n : previousPayloadRef.current;\n\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n (observer) => {\n const subscription = observableClient.observeObjectSet(\n baseObjectSet as ObjectSet<Q>,\n {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000,\n autoFetchMore: otherOptions.autoFetchMore,\n streamUpdates,\n },\n observer,\n );\n return subscription;\n },\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey}`\n : void 0,\n initialValue,\n );\n },\n [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged],\n );\n\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n React.useEffect(() => {\n if (payload) {\n previousPayloadRef.current = payload;\n }\n }, [payload]);\n\n return React.useMemo(() => ({\n data: payload?.resolvedList as Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n >[],\n isLoading: payload?.status === \"loading\" || (!payload && true) || false,\n error: payload && \"error\" in payload\n ? payload.error\n : undefined,\n fetchMore: payload?.hasMore ? payload.fetchMore : undefined,\n objectSet: payload?.objectSet as ObjectSet<Q, RDPs> || baseObjectSet,\n totalCount: payload?.totalCount,\n }), [payload, baseObjectSet]);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useObjectSet.js","names":["computeObjectSetCacheKey","React","makeExternalStore","OsdkContext2","OBJECT_TYPE_PLACEHOLDER","useObjectSet","baseObjectSet","options","observableClient","useContext","enabled","streamUpdates","otherOptions","objectTypeKey","$objectSetInternals","def","apiName","previousObjectTypeRef","useRef","previousCompletedPayloadRef","objectTypeChanged","current","undefined","stableKey","where","withProperties","union","intersect","subtract","pivotTo","pageSize","orderBy","subscribe","getSnapShot","useMemo","unsubscribe","process","env","NODE_ENV","initialValue","observer","subscription","observeObjectSet","dedupeInterval","dedupeIntervalMs","autoFetchMore","payload","useSyncExternalStore","isPayloadCompleted","lastLoaded","data","resolvedList","isLoading","error","fetchMore","hasMore","objectSet","totalCount","status"],"sources":["useObjectSet.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n LinkNames,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n Osdk,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\n\nimport {\n computeObjectSetCacheKey,\n type ObserveObjectSetArgs,\n} from \"@osdk/client/unstable-do-not-use\";\nimport React from \"react\";\nimport { makeExternalStore, type Snapshot } from \"./makeExternalStore.js\";\nimport { OsdkContext2 } from \"./OsdkContext2.js\";\n\nexport interface UseObjectSetOptions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * Where clause for filtering\n */\n where?: WhereClause<Q, RDPs>;\n\n /**\n * Derived properties to add to the object set\n */\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n\n /**\n * Object sets to union with\n */\n union?: ObjectSet<Q>[];\n\n /**\n * Object sets to intersect with\n */\n intersect?: ObjectSet<Q>[];\n\n /**\n * Object sets to subtract from\n */\n subtract?: ObjectSet<Q>[];\n\n /**\n * Link to pivot to (changes the type)\n */\n pivotTo?: LinkNames<Q>;\n\n /**\n * The preferred page size for the list\n */\n pageSize?: number;\n\n /**\n * Sort order for the results\n */\n orderBy?: {\n [K in PropertyKeys<Q>]?: \"asc\" | \"desc\";\n };\n\n /**\n * Minimum time between fetch requests in milliseconds (defaults to 2000ms)\n */\n dedupeIntervalMs?: number;\n\n /**\n * Automatically fetch additional pages on initial load.\n *\n * - `true`: Fetch all available pages automatically\n * - `number`: Fetch pages until at least this many items are loaded\n * - `undefined` (default): Only fetch the first page, user must call fetchMore()\n */\n autoFetchMore?: boolean | number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the object set will automatically update when matching objects are\n * added, updated, or removed.\n *\n * @default false\n */\n streamUpdates?: boolean;\n\n /**\n * Enable or disable the query.\n *\n * When `false`, the query will not automatically execute. It will still\n * return any cached data, but will not fetch from the server.\n *\n * This is useful for:\n * - Lazy/on-demand queries that should wait for user interaction\n * - Dependent queries that need data from another query first\n * - Conditional queries based on component state\n *\n * @default true\n * @example\n * // Dependent query - wait for filter selection\n * const { data: filteredObjects } = useObjectSet(MyObject.all(), {\n * where: { status: selectedStatus },\n * enabled: !!selectedStatus\n * });\n */\n enabled?: boolean;\n}\n\nexport interface UseObjectSetResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n> {\n /**\n * The fetched data with derived properties\n */\n data:\n | Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>[]\n | undefined;\n\n /**\n * Whether data is currently being loaded\n */\n isLoading: boolean;\n\n /**\n * Any error that occurred during fetching\n */\n error: Error | undefined;\n\n /**\n * Function to fetch more pages (undefined if no more pages)\n */\n fetchMore: (() => Promise<void>) | undefined;\n\n /**\n * The final ObjectSet after all transformations\n */\n objectSet: ObjectSet<Q, RDPs>;\n\n /**\n * The total count of objects matching the query (if available from the API)\n */\n totalCount?: string;\n}\n\ndeclare const process: {\n env: {\n NODE_ENV: \"development\" | \"production\";\n };\n};\n\nconst OBJECT_TYPE_PLACEHOLDER = \"$__OBJECT__TYPE__PLACEHOLDER\";\n/**\n * React hook for observing and interacting with OSDK object sets.\n *\n * @typeParam Q - The object type definition\n * @typeParam BaseRDPs - Derived properties that already exist on the input ObjectSet\n * @typeParam RDPs - New derived properties to be added via options.withProperties\n *\n * @param baseObjectSet - The ObjectSet to observe (may already have derived properties)\n * @param options - Options for filtering, sorting, and adding new derived properties\n * @returns Object set data with both existing and new derived properties\n */\nexport function useObjectSet<\n Q extends ObjectOrInterfaceDefinition,\n BaseRDPs extends Record<string, SimplePropertyDef> = never,\n RDPs extends Record<string, SimplePropertyDef> = {},\n>(\n baseObjectSet: ObjectSet<Q, BaseRDPs>,\n options: UseObjectSetOptions<Q, RDPs> = {},\n): UseObjectSetResult<Q, RDPs> {\n const { observableClient } = React.useContext(OsdkContext2);\n\n const { enabled = true, streamUpdates, ...otherOptions } = options;\n\n // Track object type to detect when we switch to a different object type\n const objectTypeKey = enabled\n ? baseObjectSet.$objectSetInternals.def.apiName\n : OBJECT_TYPE_PLACEHOLDER;\n\n const previousObjectTypeRef = React.useRef<string>(objectTypeKey);\n const previousCompletedPayloadRef = React.useRef<\n Snapshot<ObserveObjectSetArgs<Q, RDPs>> | undefined\n >();\n\n const objectTypeChanged = previousObjectTypeRef.current !== objectTypeKey;\n if (objectTypeChanged) {\n previousObjectTypeRef.current = objectTypeKey;\n previousCompletedPayloadRef.current = undefined;\n }\n\n // Compute a stable cache key for the ObjectSet and options\n // dedupeIntervalMs and enabled are excluded as they don't affect the data\n const stableKey = computeObjectSetCacheKey(baseObjectSet, {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n });\n\n const { subscribe, getSnapShot } = React.useMemo(\n () => {\n if (!enabled) {\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n () => ({ unsubscribe: () => {} }),\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey} [DISABLED]`\n : void 0,\n );\n }\n\n const initialValue = objectTypeChanged\n ? undefined\n : previousCompletedPayloadRef.current;\n\n return makeExternalStore<ObserveObjectSetArgs<Q, RDPs>>(\n (observer) => {\n const subscription = observableClient.observeObjectSet(\n baseObjectSet as ObjectSet<Q>,\n {\n where: otherOptions.where,\n withProperties: otherOptions.withProperties,\n union: otherOptions.union,\n intersect: otherOptions.intersect,\n subtract: otherOptions.subtract,\n pivotTo: otherOptions.pivotTo,\n pageSize: otherOptions.pageSize,\n orderBy: otherOptions.orderBy,\n dedupeInterval: otherOptions.dedupeIntervalMs ?? 2_000,\n autoFetchMore: otherOptions.autoFetchMore,\n streamUpdates,\n },\n observer,\n );\n return subscription;\n },\n process.env.NODE_ENV !== \"production\"\n ? `objectSet ${stableKey}`\n : void 0,\n initialValue,\n );\n },\n [enabled, observableClient, stableKey, streamUpdates, objectTypeChanged],\n );\n\n const payload = React.useSyncExternalStore(subscribe, getSnapShot);\n if (payload && isPayloadCompleted(payload)) {\n previousCompletedPayloadRef.current = payload;\n }\n\n return React.useMemo(() => {\n const lastLoaded = isPayloadCompleted(payload)\n ? payload\n : previousCompletedPayloadRef.current;\n return {\n data: lastLoaded?.resolvedList as Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n >[],\n isLoading: !isPayloadCompleted(payload),\n error: lastLoaded && \"error\" in lastLoaded ? lastLoaded.error : undefined,\n fetchMore: payload?.hasMore ? payload.fetchMore : undefined,\n objectSet: payload?.objectSet as ObjectSet<Q, RDPs> || baseObjectSet,\n totalCount: lastLoaded?.totalCount,\n };\n }, [payload, baseObjectSet]);\n}\n\nfunction isPayloadCompleted<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef>,\n>(\n payload: Snapshot<ObserveObjectSetArgs<Q, RDPs>>,\n): boolean {\n if (payload != null && \"error\" in payload) {\n return true;\n }\n\n if (payload?.status == null) {\n return false;\n }\n\n switch (payload.status) {\n case \"loaded\":\n case \"error\":\n return true;\n case \"loading\":\n case \"init\":\n return false;\n default:\n payload.status satisfies never;\n return false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { DerivedProperty, LinkNames,
|
|
1
|
+
import type { DerivedProperty, LinkNames, ObjectOrInterfaceDefinition, ObjectSet, Osdk, PropertyKeys, SimplePropertyDef, WhereClause } from "@osdk/api";
|
|
2
2
|
export interface UseObjectSetOptions<
|
|
3
|
-
Q extends
|
|
3
|
+
Q extends ObjectOrInterfaceDefinition,
|
|
4
4
|
RDPs extends Record<string, SimplePropertyDef> = {}
|
|
5
5
|
> {
|
|
6
6
|
/**
|
|
@@ -77,7 +77,7 @@ export interface UseObjectSetOptions<
|
|
|
77
77
|
enabled?: boolean;
|
|
78
78
|
}
|
|
79
79
|
export interface UseObjectSetResult<
|
|
80
|
-
Q extends
|
|
80
|
+
Q extends ObjectOrInterfaceDefinition,
|
|
81
81
|
RDPs extends Record<string, SimplePropertyDef> = {}
|
|
82
82
|
> {
|
|
83
83
|
/**
|
|
@@ -117,7 +117,7 @@ export interface UseObjectSetResult<
|
|
|
117
117
|
* @returns Object set data with both existing and new derived properties
|
|
118
118
|
*/
|
|
119
119
|
export declare function useObjectSet<
|
|
120
|
-
Q extends
|
|
120
|
+
Q extends ObjectOrInterfaceDefinition,
|
|
121
121
|
BaseRDPs extends Record<string, SimplePropertyDef> = never,
|
|
122
122
|
RDPs extends Record<string, SimplePropertyDef> = {}
|
|
123
123
|
>(baseObjectSet: ObjectSet<Q, BaseRDPs>, options?: UseObjectSetOptions<Q, RDPs>): UseObjectSetResult<Q, RDPs>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cACE,iBACA,WACA,WACA,
|
|
1
|
+
{"mappings":"AAgBA,cACE,iBACA,WACA,6BACA,WACA,MACA,cACA,mBACA,mBACK,WAAY;AAUnB,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB,CAAE;EACnD;;;;CAIA,QAAQ,YAAY,GAAG;;;;CAKvB,oBAAoB,WAAW,QAAO,gBAAgB,QAAQ,GAAG,KAAK;;;;CAKtE,QAAQ,UAAU;;;;CAKlB,YAAY,UAAU;;;;CAKtB,WAAW,UAAU;;;;CAKrB,UAAU,UAAU;;;;CAKpB;;;;CAKA,aACG,KAAK,aAAa,OAAM,QAAQ;;;;CAMnC;;;;;;;;CASA;;;;;;;;CASA;;;;;;;;;;;;;;;;;;;;CAqBA;AACD;AAED,iBAAiB;CACf,UAAU;CACV,aAAa,eAAe,qBAAqB,CAAE;EACnD;;;;CAIA,MACI,KAAK,SAAS,GAAG,sBAAsB,aAAa,IAAI;;;;CAM5D;;;;CAKA,OAAO;;;;CAKP,kBAAkB;;;;CAKlB,WAAW,UAAU,GAAG;;;;CAKxB;AACD;;;;;;;;;;;;AAoBD,OAAO,iBAAS;CACd,UAAU;CACV,iBAAiB,eAAe;CAChC,aAAa,eAAe,qBAAqB,CAAE;EAEnDA,eAAe,UAAU,GAAG,WAC5BC,UAAS,oBAAoB,GAAG,QAC/B,mBAAmB,GAAG","names":["baseObjectSet: ObjectSet<Q, BaseRDPs>","options: UseObjectSetOptions<Q, RDPs>"],"sources":["../../../src/new/useObjectSet.tsx"],"version":3,"file":"useObjectSet.d.ts"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osdk/react",
|
|
3
|
-
"version": "0.10.0-beta.
|
|
3
|
+
"version": "0.10.0-beta.7",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@osdk/foundry.admin": "2.
|
|
57
|
-
"@osdk/foundry.core": "2.
|
|
56
|
+
"@osdk/foundry.admin": "2.50.0",
|
|
57
|
+
"@osdk/foundry.core": "2.50.0",
|
|
58
58
|
"@testing-library/react": "^16.3.0",
|
|
59
59
|
"@types/react": "^18.3.24",
|
|
60
60
|
"find-up": "^8.0.0",
|
|
@@ -67,11 +67,11 @@
|
|
|
67
67
|
"react": "^18.3.1",
|
|
68
68
|
"tiny-invariant": "^1.3.3",
|
|
69
69
|
"typescript": "~5.5.4",
|
|
70
|
-
"@osdk/
|
|
70
|
+
"@osdk/client.test.ontology": "2.8.0-beta.14",
|
|
71
|
+
"@osdk/monorepo.tsconfig": "~0.7.0-beta.1",
|
|
71
72
|
"@osdk/monorepo.api-extractor": "~0.7.0-beta.1",
|
|
72
|
-
"@osdk/
|
|
73
|
-
"@osdk/client
|
|
74
|
-
"@osdk/monorepo.tsconfig": "~0.7.0-beta.1"
|
|
73
|
+
"@osdk/api": "2.8.0-beta.14",
|
|
74
|
+
"@osdk/client": "2.8.0-beta.14"
|
|
75
75
|
},
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|