@everysk/apps-sdk 0.2.0 → 0.3.0-beta-20261016180126
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/README.md +298 -12
- package/dist/EveryskApp.d.ts +34 -2
- package/dist/EveryskApp.d.ts.map +1 -1
- package/dist/EveryskApp.js +35 -2
- package/dist/EveryskApp.js.map +1 -1
- package/dist/agGrid/handleRowsScrollEnd.d.ts +53 -0
- package/dist/agGrid/handleRowsScrollEnd.d.ts.map +1 -0
- package/dist/agGrid/handleRowsScrollEnd.js +47 -0
- package/dist/agGrid/handleRowsScrollEnd.js.map +1 -0
- package/dist/agGrid/index.d.ts +2 -0
- package/dist/agGrid/index.d.ts.map +1 -1
- package/dist/agGrid/index.js +2 -1
- package/dist/api/datastore.d.ts +10 -8
- package/dist/api/datastore.d.ts.map +1 -1
- package/dist/api/datastore.js +24 -55
- package/dist/api/datastore.js.map +1 -1
- package/dist/api/entityQuery.d.ts +46 -41
- package/dist/api/entityQuery.d.ts.map +1 -1
- package/dist/api/entityQuery.js +55 -14
- package/dist/api/entityQuery.js.map +1 -1
- package/dist/api/file.d.ts +26 -9
- package/dist/api/file.d.ts.map +1 -1
- package/dist/api/file.js +45 -55
- package/dist/api/file.js.map +1 -1
- package/dist/api/portfolio.d.ts +11 -8
- package/dist/api/portfolio.d.ts.map +1 -1
- package/dist/api/portfolio.js +24 -55
- package/dist/api/portfolio.js.map +1 -1
- package/dist/api/profile.d.ts +3 -2
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +4 -9
- package/dist/api/profile.js.map +1 -1
- package/dist/api/request.d.ts +106 -0
- package/dist/api/request.d.ts.map +1 -0
- package/dist/api/request.js +132 -0
- package/dist/api/request.js.map +1 -0
- package/dist/api/websocketsConfig.d.ts +7 -2
- package/dist/api/websocketsConfig.d.ts.map +1 -1
- package/dist/api/websocketsConfig.js +2 -10
- package/dist/api/websocketsConfig.js.map +1 -1
- package/dist/api/workflow.d.ts +84 -89
- package/dist/api/workflow.d.ts.map +1 -1
- package/dist/api/workflow.js +121 -208
- package/dist/api/workflow.js.map +1 -1
- package/dist/api/workspace.d.ts +18 -8
- package/dist/api/workspace.d.ts.map +1 -1
- package/dist/api/workspace.js +21 -26
- package/dist/api/workspace.js.map +1 -1
- package/dist/components/ui/Footer/index.d.ts.map +1 -1
- package/dist/components/ui/Footer/index.js.map +1 -1
- package/dist/components/ui/GlobalLoading/index.d.ts.map +1 -1
- package/dist/components/ui/GlobalLoading/index.js.map +1 -1
- package/dist/components/ui/PageContainer/index.d.ts +1 -1
- package/dist/components/ui/PageContainer/index.d.ts.map +1 -1
- package/dist/components/ui/PageContainer/index.js.map +1 -1
- package/dist/components/ui/Toolbar/index.d.ts +40 -3
- package/dist/components/ui/Toolbar/index.d.ts.map +1 -1
- package/dist/components/ui/Toolbar/index.js +42 -15
- package/dist/components/ui/Toolbar/index.js.map +1 -1
- package/dist/contexts/appAlertContext/provider.js.map +1 -1
- package/dist/contexts/appAlertContext/types.d.ts.map +1 -1
- package/dist/contexts/appConfigContext/index.d.ts.map +1 -1
- package/dist/contexts/appConfigContext/index.js.map +1 -1
- package/dist/contexts/appConfigContext/provider.d.ts.map +1 -1
- package/dist/contexts/appConfigContext/provider.js.map +1 -1
- package/dist/contexts/webSocketContext/handler.d.ts +3 -2
- package/dist/contexts/webSocketContext/handler.d.ts.map +1 -1
- package/dist/contexts/webSocketContext/handler.js.map +1 -1
- package/dist/contexts/webSocketContext/hooks/useWebSocket/index.d.ts +1 -1
- package/dist/contexts/webSocketContext/hooks/useWebSocket/index.js +1 -1
- package/dist/contexts/webSocketContext/hooks/useWebSocket/index.js.map +1 -1
- package/dist/contexts/webSocketContext/provider.d.ts +6 -3
- package/dist/contexts/webSocketContext/provider.d.ts.map +1 -1
- package/dist/contexts/webSocketContext/provider.js +42 -7
- package/dist/contexts/webSocketContext/provider.js.map +1 -1
- package/dist/contexts/webSocketContext/types.d.ts +7 -5
- package/dist/contexts/webSocketContext/types.d.ts.map +1 -1
- package/dist/file/index.d.ts +2 -0
- package/dist/file/index.d.ts.map +1 -1
- package/dist/hooks/datastore/useDatastoreMutations.d.ts +4 -4
- package/dist/hooks/datastore/useDatastoreMutations.d.ts.map +1 -1
- package/dist/hooks/datastore/useDatastoreMutations.js +17 -55
- package/dist/hooks/datastore/useDatastoreMutations.js.map +1 -1
- package/dist/hooks/datastore/useFetchDatastore.d.ts +30 -41
- package/dist/hooks/datastore/useFetchDatastore.d.ts.map +1 -1
- package/dist/hooks/datastore/useFetchDatastore.js +25 -59
- package/dist/hooks/datastore/useFetchDatastore.js.map +1 -1
- package/dist/hooks/datastore/useFetchDatastores.d.ts +47 -52
- package/dist/hooks/datastore/useFetchDatastores.d.ts.map +1 -1
- package/dist/hooks/datastore/useFetchDatastores.js +55 -70
- package/dist/hooks/datastore/useFetchDatastores.js.map +1 -1
- package/dist/hooks/file/fileData.d.ts +17 -0
- package/dist/hooks/file/fileData.d.ts.map +1 -0
- package/dist/hooks/file/fileData.js +10 -0
- package/dist/hooks/file/fileData.js.map +1 -0
- package/dist/hooks/file/useFetchFile.d.ts +38 -58
- package/dist/hooks/file/useFetchFile.d.ts.map +1 -1
- package/dist/hooks/file/useFetchFile.js +26 -66
- package/dist/hooks/file/useFetchFile.js.map +1 -1
- package/dist/hooks/file/useFetchFiles.d.ts +18 -52
- package/dist/hooks/file/useFetchFiles.d.ts.map +1 -1
- package/dist/hooks/file/useFetchFiles.js +53 -69
- package/dist/hooks/file/useFetchFiles.js.map +1 -1
- package/dist/hooks/file/useFileMutations.d.ts +9 -8
- package/dist/hooks/file/useFileMutations.d.ts.map +1 -1
- package/dist/hooks/file/useFileMutations.js +23 -60
- package/dist/hooks/file/useFileMutations.js.map +1 -1
- package/dist/hooks/portfolio/useFetchPortfolio.d.ts +16 -50
- package/dist/hooks/portfolio/useFetchPortfolio.d.ts.map +1 -1
- package/dist/hooks/portfolio/useFetchPortfolio.js +15 -63
- package/dist/hooks/portfolio/useFetchPortfolio.js.map +1 -1
- package/dist/hooks/portfolio/useFetchPortfolios.d.ts +13 -52
- package/dist/hooks/portfolio/useFetchPortfolios.d.ts.map +1 -1
- package/dist/hooks/portfolio/useFetchPortfolios.js +29 -71
- package/dist/hooks/portfolio/useFetchPortfolios.js.map +1 -1
- package/dist/hooks/portfolio/usePortfolioMutations.d.ts +8 -8
- package/dist/hooks/portfolio/usePortfolioMutations.d.ts.map +1 -1
- package/dist/hooks/portfolio/usePortfolioMutations.js +20 -58
- package/dist/hooks/portfolio/usePortfolioMutations.js.map +1 -1
- package/dist/hooks/profile/useFetchProfile.d.ts +18 -44
- package/dist/hooks/profile/useFetchProfile.d.ts.map +1 -1
- package/dist/hooks/profile/useFetchProfile.js +16 -48
- package/dist/hooks/profile/useFetchProfile.js.map +1 -1
- package/dist/hooks/useAxios.js.map +1 -1
- package/dist/hooks/useEntityInfiniteQuery.d.ts +88 -0
- package/dist/hooks/useEntityInfiniteQuery.d.ts.map +1 -0
- package/dist/hooks/useEntityInfiniteQuery.js +111 -0
- package/dist/hooks/useEntityInfiniteQuery.js.map +1 -0
- package/dist/hooks/useEntityMutation.d.ts +47 -0
- package/dist/hooks/useEntityMutation.d.ts.map +1 -0
- package/dist/hooks/useEntityMutation.js +58 -0
- package/dist/hooks/useEntityMutation.js.map +1 -0
- package/dist/hooks/useEntityQuery.d.ts +68 -0
- package/dist/hooks/useEntityQuery.d.ts.map +1 -0
- package/dist/hooks/useEntityQuery.js +75 -0
- package/dist/hooks/useEntityQuery.js.map +1 -0
- package/dist/hooks/workflow/useFetchWorkerExecution.d.ts +17 -34
- package/dist/hooks/workflow/useFetchWorkerExecution.d.ts.map +1 -1
- package/dist/hooks/workflow/useFetchWorkerExecution.js +16 -46
- package/dist/hooks/workflow/useFetchWorkerExecution.js.map +1 -1
- package/dist/hooks/workflow/useFetchWorkerExecutions.d.ts +179 -41
- package/dist/hooks/workflow/useFetchWorkerExecutions.d.ts.map +1 -1
- package/dist/hooks/workflow/useFetchWorkerExecutions.js +29 -62
- package/dist/hooks/workflow/useFetchWorkerExecutions.js.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflow.d.ts +16 -35
- package/dist/hooks/workflow/useFetchWorkflow.d.ts.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflow.js +15 -48
- package/dist/hooks/workflow/useFetchWorkflow.js.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflowExecution.d.ts +17 -34
- package/dist/hooks/workflow/useFetchWorkflowExecution.d.ts.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflowExecution.js +16 -46
- package/dist/hooks/workflow/useFetchWorkflowExecution.js.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflowExecutions.d.ts +22 -36
- package/dist/hooks/workflow/useFetchWorkflowExecutions.d.ts.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflowExecutions.js +43 -56
- package/dist/hooks/workflow/useFetchWorkflowExecutions.js.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflows.d.ts +20 -37
- package/dist/hooks/workflow/useFetchWorkflows.d.ts.map +1 -1
- package/dist/hooks/workflow/useFetchWorkflows.js +32 -47
- package/dist/hooks/workflow/useFetchWorkflows.js.map +1 -1
- package/dist/hooks/workflow/useRunWorkflow.d.ts +21 -16
- package/dist/hooks/workflow/useRunWorkflow.d.ts.map +1 -1
- package/dist/hooks/workflow/useRunWorkflow.js +66 -29
- package/dist/hooks/workflow/useRunWorkflow.js.map +1 -1
- package/dist/hooks/workflow/useTriggerWorkflow.d.ts +20 -0
- package/dist/hooks/workflow/useTriggerWorkflow.d.ts.map +1 -0
- package/dist/hooks/workflow/useTriggerWorkflow.js +32 -0
- package/dist/hooks/workflow/useTriggerWorkflow.js.map +1 -0
- package/dist/hooks/workspace/useFetchWorkspace.d.ts +19 -34
- package/dist/hooks/workspace/useFetchWorkspace.d.ts.map +1 -1
- package/dist/hooks/workspace/useFetchWorkspace.js +16 -46
- package/dist/hooks/workspace/useFetchWorkspace.js.map +1 -1
- package/dist/hooks/workspace/useFetchWorkspaces.d.ts +17 -37
- package/dist/hooks/workspace/useFetchWorkspaces.d.ts.map +1 -1
- package/dist/hooks/workspace/useFetchWorkspaces.js +25 -47
- package/dist/hooks/workspace/useFetchWorkspaces.js.map +1 -1
- package/dist/index.d.ts +13 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -11
- package/dist/lib/abort.d.ts +58 -0
- package/dist/lib/abort.d.ts.map +1 -0
- package/dist/lib/abort.js +112 -0
- package/dist/lib/abort.js.map +1 -0
- package/dist/lib/datastoreTable.d.ts +59 -54
- package/dist/lib/datastoreTable.d.ts.map +1 -1
- package/dist/lib/datastoreTable.js +58 -62
- package/dist/lib/datastoreTable.js.map +1 -1
- package/dist/lib/file.d.ts +34 -0
- package/dist/lib/file.d.ts.map +1 -0
- package/dist/lib/file.js +63 -0
- package/dist/lib/file.js.map +1 -0
- package/dist/lib/queryClient.d.ts.map +1 -1
- package/dist/lib/queryClient.js.map +1 -1
- package/dist/lib/workflowRun.d.ts +91 -0
- package/dist/lib/workflowRun.d.ts.map +1 -0
- package/dist/lib/workflowRun.js +224 -0
- package/dist/lib/workflowRun.js.map +1 -0
- package/dist/socket/index.d.ts +1 -3
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +3 -5
- package/dist/test/mocks/index.d.ts +1 -1
- package/dist/test/mocks/index.d.ts.map +1 -1
- package/dist/test/renderWithProviders.d.ts +2 -2
- package/dist/test/renderWithProviders.d.ts.map +1 -1
- package/dist/test/renderWithProviders.js.map +1 -1
- package/dist/test/setup.js.map +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/overrides/index.d.ts +4 -2
- package/dist/theme/overrides/index.d.ts.map +1 -1
- package/dist/theme/overrides/index.js +5 -3
- package/dist/theme/overrides/index.js.map +1 -1
- package/dist/theme/overrides/muiButton.d.ts +2 -2
- package/dist/theme/overrides/muiButton.js.map +1 -1
- package/dist/theme/overrides/muiCssBaseline.d.ts.map +1 -1
- package/dist/theme/overrides/muiCssBaseline.js.map +1 -1
- package/dist/theme/overrides/muiDatePicker.js.map +1 -1
- package/dist/theme/overrides/muiFormControl.js.map +1 -1
- package/dist/theme/overrides/muiIconButton.d.ts +2 -2
- package/dist/theme/overrides/muiIconButton.js.map +1 -1
- package/dist/theme/overrides/muiSelect.d.ts.map +1 -1
- package/dist/theme/overrides/muiSelect.js.map +1 -1
- package/dist/theme/overrides/muiSvgIcon.d.ts.map +1 -1
- package/dist/theme/overrides/muiSvgIcon.js.map +1 -1
- package/dist/theme/overrides/muiTextField.js.map +1 -1
- package/dist/theme/overrides/muiToggleButton.d.ts +2 -2
- package/dist/theme/overrides/muiToggleButton.js.map +1 -1
- package/dist/theme/overrides/muiToggleButtonGroup.d.ts +2 -2
- package/dist/theme/overrides/muiToggleButtonGroup.js.map +1 -1
- package/dist/theme/themes/DefaultDark.js +2 -2
- package/dist/theme/themes/DefaultDark.js.map +1 -1
- package/dist/theme/themes/DefaultLight.js +2 -2
- package/dist/theme/themes/DefaultLight.js.map +1 -1
- package/dist/theme/themes/EveryskDark.js +2 -2
- package/dist/theme/themes/EveryskDark.js.map +1 -1
- package/dist/theme/themes/EveryskLight.js +2 -2
- package/dist/theme/themes/EveryskLight.js.map +1 -1
- package/dist/theme/themes/MidnightEmber.js +2 -2
- package/dist/theme/themes/MidnightEmber.js.map +1 -1
- package/dist/types/anyRecord.d.ts.map +1 -1
- package/dist/types/datastore.d.ts +35 -5
- package/dist/types/datastore.d.ts.map +1 -1
- package/dist/types/datastoreDataFormat.d.ts +13 -0
- package/dist/types/datastoreDataFormat.d.ts.map +1 -0
- package/dist/types/entityQuery.d.ts +86 -16
- package/dist/types/entityQuery.d.ts.map +1 -1
- package/dist/types/file.d.ts +7 -3
- package/dist/types/file.d.ts.map +1 -1
- package/dist/types/portfolio.d.ts +1 -3
- package/dist/types/portfolio.d.ts.map +1 -1
- package/dist/types/profile.d.ts +0 -10
- package/dist/types/profile.d.ts.map +1 -1
- package/dist/types/workflow.d.ts +35 -6
- package/dist/types/workflow.d.ts.map +1 -1
- package/dist/types/workspace.d.ts +1 -2
- package/dist/types/workspace.d.ts.map +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/EveryskApp.tsx +53 -2
- package/src/agGrid/handleRowsScrollEnd.ts +71 -0
- package/src/agGrid/index.ts +5 -1
- package/src/api/datastore.ts +79 -107
- package/src/api/entityQuery.ts +86 -17
- package/src/api/file.ts +110 -103
- package/src/api/portfolio.ts +82 -125
- package/src/api/profile.ts +25 -18
- package/src/api/request.ts +168 -0
- package/src/api/websocketsConfig.ts +11 -19
- package/src/api/workflow.ts +232 -334
- package/src/api/workspace.ts +43 -43
- package/src/components/ui/Footer/index.tsx +8 -7
- package/src/components/ui/GlobalLoading/index.tsx +13 -3
- package/src/components/ui/PageContainer/index.tsx +9 -2
- package/src/components/ui/Toolbar/index.tsx +105 -30
- package/src/contexts/appAlertContext/provider.tsx +1 -1
- package/src/contexts/appAlertContext/types.ts +3 -3
- package/src/contexts/appConfigContext/index.tsx +1 -1
- package/src/contexts/appConfigContext/provider.tsx +1 -5
- package/src/contexts/webSocketContext/handler.ts +8 -2
- package/src/contexts/webSocketContext/hooks/useWebSocket/index.ts +1 -1
- package/src/contexts/webSocketContext/provider.tsx +64 -14
- package/src/contexts/webSocketContext/types.ts +7 -6
- package/src/file/index.ts +2 -0
- package/src/hooks/datastore/useDatastoreMutations.ts +19 -60
- package/src/hooks/datastore/useFetchDatastore.ts +45 -73
- package/src/hooks/datastore/useFetchDatastores.ts +106 -131
- package/src/hooks/file/fileData.ts +19 -0
- package/src/hooks/file/useFetchFile.ts +41 -76
- package/src/hooks/file/useFetchFiles.ts +92 -87
- package/src/hooks/file/useFileMutations.ts +23 -73
- package/src/hooks/portfolio/useFetchPortfolio.ts +26 -78
- package/src/hooks/portfolio/useFetchPortfolios.ts +50 -93
- package/src/hooks/portfolio/usePortfolioMutations.ts +22 -72
- package/src/hooks/profile/useFetchProfile.ts +24 -65
- package/src/hooks/useAxios.ts +5 -5
- package/src/hooks/useEntityInfiniteQuery.ts +193 -0
- package/src/hooks/useEntityMutation.ts +70 -0
- package/src/hooks/useEntityQuery.ts +117 -0
- package/src/hooks/workflow/useFetchWorkerExecution.ts +27 -56
- package/src/hooks/workflow/useFetchWorkerExecutions.ts +54 -79
- package/src/hooks/workflow/useFetchWorkflow.ts +24 -58
- package/src/hooks/workflow/useFetchWorkflowExecution.ts +27 -57
- package/src/hooks/workflow/useFetchWorkflowExecutions.ts +64 -73
- package/src/hooks/workflow/useFetchWorkflows.ts +48 -64
- package/src/hooks/workflow/useRunWorkflow.ts +82 -36
- package/src/hooks/workflow/useTriggerWorkflow.ts +36 -0
- package/src/hooks/workspace/useFetchWorkspace.ts +25 -58
- package/src/hooks/workspace/useFetchWorkspaces.ts +38 -69
- package/src/index.ts +34 -19
- package/src/lib/abort.ts +131 -0
- package/src/lib/datastoreTable.ts +127 -74
- package/src/lib/file.ts +67 -0
- package/src/lib/queryClient.ts +11 -13
- package/src/lib/workflowRun.ts +329 -0
- package/src/socket/index.ts +1 -3
- package/src/test/mocks/index.ts +1 -5
- package/src/test/renderWithProviders.tsx +8 -3
- package/src/test/setup.ts +16 -16
- package/src/theme/index.ts +1 -1
- package/src/theme/overrides/index.ts +5 -3
- package/src/theme/overrides/muiButton.ts +3 -3
- package/src/theme/overrides/muiCssBaseline.ts +11 -12
- package/src/theme/overrides/muiDatePicker.ts +2 -2
- package/src/theme/overrides/muiFormControl.ts +2 -2
- package/src/theme/overrides/muiIconButton.ts +3 -3
- package/src/theme/overrides/muiSelect.ts +2 -2
- package/src/theme/overrides/muiSvgIcon.ts +2 -2
- package/src/theme/overrides/muiTextField.ts +1 -1
- package/src/theme/overrides/muiToggleButton.ts +4 -4
- package/src/theme/overrides/muiToggleButtonGroup.ts +4 -4
- package/src/theme/themes/DefaultDark.ts +2 -2
- package/src/theme/themes/DefaultLight.ts +2 -2
- package/src/theme/themes/EveryskDark.ts +2 -2
- package/src/theme/themes/EveryskLight.ts +2 -2
- package/src/theme/themes/MidnightEmber.ts +15 -15
- package/src/types/anyRecord.ts +2 -2
- package/src/types/datastore.ts +56 -22
- package/src/types/datastoreDataFormat.ts +12 -0
- package/src/types/entityQuery.ts +122 -38
- package/src/types/file.ts +8 -6
- package/src/types/portfolio.ts +70 -74
- package/src/types/profile.ts +0 -11
- package/src/types/workflow.ts +38 -9
- package/src/types/workspace.ts +2 -4
- package/src/ui/index.ts +1 -1
- package/src/workflow/index.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchWorkspace.js","names":[],"sources":["../../../src/hooks/workspace/useFetchWorkspace.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useFetchWorkspace.js","names":[],"sources":["../../../src/hooks/workspace/useFetchWorkspace.ts"],"sourcesContent":["import { useAxios } from \"@/hooks/useAxios\";\nimport { useEntityQuery } from \"@/hooks/useEntityQuery\";\nimport { getWorkspace } from \"@/api/workspace\";\nimport type { Workspace } from \"@/types/workspace\";\nimport type { FetchEntityProps } from \"@/types/entityQuery\";\n\nexport type FetchWorkspaceProps<TData = Workspace, TSelected = TData> = FetchEntityProps<\n TData,\n TSelected\n> & {\n name: string;\n};\n\n/**\n * useFetchWorkspace\n *\n * Fetches one workspace by name; `data` is the workspace, or whatever `select` makes of it.\n *\n * A workspace is identified by its name — the API's `GET /workspaces/:id` takes the name, its\n * UID — so `name` is this hook's id, and like the other hooks' id it usually comes from a\n * selection the user has not made yet: while it is empty the hook stays idle, rather than fail\n * as a misconfigured app. A failure is shown as an error alert.\n *\n * @param {FetchWorkspaceProps} props - `name`, `select` and TanStack `queryOptions`.\n * @returns {object} The `useQuery` result, plus `queryKey`.\n */\nexport const useFetchWorkspace = <TSelected = Workspace>({\n name,\n select,\n queryOptions,\n}: FetchWorkspaceProps<Workspace, TSelected>) => {\n const { api } = useAxios();\n\n const queryKey = [\"workspace\", name];\n\n const query = useEntityQuery<Workspace, TSelected>({\n queryKey,\n fetchEntity: (signal) => getWorkspace(api, name, signal),\n select,\n enabled: Boolean(name),\n queryOptions,\n });\n\n return { ...query, queryKey };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AA0BA,IAAa,qBAA4C,EACrD,MACA,QACA,mBAC6C;CAC7C,MAAM,EAAE,QAAQ,SAAS;CAEzB,MAAM,WAAW,CAAC,aAAa,IAAI;CAUnC,OAAO;EAAE,GARK,eAAqC;GAC/C;GACA,cAAc,WAAW,aAAa,KAAK,MAAM,MAAM;GACvD;GACA,SAAS,QAAQ,IAAI;GACrB;EACJ,CAEY;EAAO;CAAS;AAChC"}
|
|
@@ -1,46 +1,26 @@
|
|
|
1
|
-
import { type UseInfiniteQueryOptions, type QueryKey } from "@tanstack/react-query";
|
|
2
1
|
import type { Workspace, WorkspaceListResponse } from "../../types/workspace.d.ts";
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
export type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import type { FetchEntitiesProps, ListCache } from "../../types/entityQuery.d.ts";
|
|
3
|
+
/** The query cache of `useFetchWorkspaces`, for typing `setQueryData`. */
|
|
4
|
+
export type WorkspacesCache = ListCache<WorkspaceListResponse>;
|
|
5
|
+
export type FetchWorkspacesProps<TData = Workspace[]> = FetchEntitiesProps<Workspace, TData, WorkspaceListResponse> & {
|
|
6
|
+
/** A name prefix. */
|
|
7
|
+
search?: string;
|
|
9
8
|
};
|
|
10
9
|
/**
|
|
11
10
|
* useFetchWorkspaces
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Lists workspaces with cursor pagination; `query.data` is every loaded page merged, or
|
|
13
|
+
* whatever `select` makes of it. `select` and `fetchAllPages` behave as in
|
|
14
|
+
* `useFetchDatastores`. This endpoint lists the account's workspaces: it takes a name `search`,
|
|
15
|
+
* and no workspace — the docs exempt it, and the endpoint ignores one, which this hook used to
|
|
16
|
+
* send.
|
|
15
17
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* Important notes:
|
|
20
|
-
* - `query.data` returns a flat `Workspace[]` (all pages merged).
|
|
21
|
-
* - `workspace` is required by some API configurations to avoid being blocked.
|
|
22
|
-
*
|
|
23
|
-
* @param props - FetchInfiniteWorkspaceProps
|
|
24
|
-
* - `workspace`: Current workspace name sent as a query param.
|
|
25
|
-
* - `pageSize`: Number of workspaces to fetch per page.
|
|
26
|
-
* - `queryOptions`: TanStack Query options passed through to `useInfiniteQuery`.
|
|
27
|
-
*
|
|
28
|
-
* Returns:
|
|
29
|
-
* @returns {object}
|
|
30
|
-
* - `query`: the full `useInfiniteQuery` result (data, isLoading, hasNextPage, fetchNextPage, etc.)
|
|
31
|
-
* - `queryKey`: the cache key used by React Query
|
|
32
|
-
*
|
|
33
|
-
* Example:
|
|
34
|
-
* ```ts
|
|
35
|
-
* const { query } = useFetchWorkspaces({ workspace: "main", pageSize: 20 });
|
|
36
|
-
*
|
|
37
|
-
* // Flat list of all fetched workspaces
|
|
38
|
-
* const workspaces = query.data ?? [];
|
|
39
|
-
* ```
|
|
18
|
+
* @param {FetchWorkspacesProps} props - Search, page size, `select`, `fetchAllPages` and
|
|
19
|
+
* TanStack `queryOptions`.
|
|
20
|
+
* @returns {object} `query` (the `useInfiniteQuery` result) and `queryKey`.
|
|
40
21
|
*/
|
|
41
|
-
export declare function useFetchWorkspaces({
|
|
42
|
-
query: import("@tanstack/react-query").UseInfiniteQueryResult<
|
|
43
|
-
queryKey:
|
|
22
|
+
export declare function useFetchWorkspaces<TData = Workspace[]>({ search, pageSize, select, fetchAllPages, queryOptions, }: FetchWorkspacesProps<TData>): {
|
|
23
|
+
query: import("@tanstack/react-query").UseInfiniteQueryResult<TData, Error>;
|
|
24
|
+
queryKey: unknown[];
|
|
44
25
|
};
|
|
45
|
-
export {};
|
|
46
26
|
//# sourceMappingURL=useFetchWorkspaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchWorkspaces.d.ts","sourceRoot":"","sources":["../../../src/hooks/workspace/useFetchWorkspaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFetchWorkspaces.d.ts","sourceRoot":"","sources":["../../../src/hooks/workspace/useFetchWorkspaces.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEzE,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;AAE/D,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,SAAS,EAAE,IAAI,kBAAkB,CACtE,SAAS,EACT,KAAK,EACL,qBAAqB,CACxB,GAAG;IACA,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,GAAG,SAAS,EAAE,EAAE,EACpD,MAAM,EACN,QAAa,EACb,MAAM,EACN,aAAqB,EACrB,YAAY,GACf,EAAE,oBAAoB,CAAC,KAAK,CAAC;;;EAgB7B"}
|
|
@@ -1,61 +1,39 @@
|
|
|
1
1
|
import { useAxios } from "../useAxios.js";
|
|
2
|
+
import { useEntityInfiniteQuery } from "../useEntityInfiniteQuery.js";
|
|
3
|
+
import { buildQueryKey } from "../../api/entityQuery.js";
|
|
2
4
|
import { listWorkspaces } from "../../api/workspace.js";
|
|
3
|
-
import { useMemo } from "react";
|
|
4
|
-
import { useInfiniteQuery } from "@tanstack/react-query";
|
|
5
5
|
//#region src/hooks/workspace/useFetchWorkspaces.ts
|
|
6
|
-
var defaultQueryOptions = {
|
|
7
|
-
refetchOnMount: "always",
|
|
8
|
-
staleTime: 0,
|
|
9
|
-
gcTime: 0
|
|
10
|
-
};
|
|
11
6
|
/**
|
|
12
7
|
* useFetchWorkspaces
|
|
13
8
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
9
|
+
* Lists workspaces with cursor pagination; `query.data` is every loaded page merged, or
|
|
10
|
+
* whatever `select` makes of it. `select` and `fetchAllPages` behave as in
|
|
11
|
+
* `useFetchDatastores`. This endpoint lists the account's workspaces: it takes a name `search`,
|
|
12
|
+
* and no workspace — the docs exempt it, and the endpoint ignores one, which this hook used to
|
|
13
|
+
* send.
|
|
16
14
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* Important notes:
|
|
21
|
-
* - `query.data` returns a flat `Workspace[]` (all pages merged).
|
|
22
|
-
* - `workspace` is required by some API configurations to avoid being blocked.
|
|
23
|
-
*
|
|
24
|
-
* @param props - FetchInfiniteWorkspaceProps
|
|
25
|
-
* - `workspace`: Current workspace name sent as a query param.
|
|
26
|
-
* - `pageSize`: Number of workspaces to fetch per page.
|
|
27
|
-
* - `queryOptions`: TanStack Query options passed through to `useInfiniteQuery`.
|
|
28
|
-
*
|
|
29
|
-
* Returns:
|
|
30
|
-
* @returns {object}
|
|
31
|
-
* - `query`: the full `useInfiniteQuery` result (data, isLoading, hasNextPage, fetchNextPage, etc.)
|
|
32
|
-
* - `queryKey`: the cache key used by React Query
|
|
33
|
-
*
|
|
34
|
-
* Example:
|
|
35
|
-
* ```ts
|
|
36
|
-
* const { query } = useFetchWorkspaces({ workspace: "main", pageSize: 20 });
|
|
37
|
-
*
|
|
38
|
-
* // Flat list of all fetched workspaces
|
|
39
|
-
* const workspaces = query.data ?? [];
|
|
40
|
-
* ```
|
|
15
|
+
* @param {FetchWorkspacesProps} props - Search, page size, `select`, `fetchAllPages` and
|
|
16
|
+
* TanStack `queryOptions`.
|
|
17
|
+
* @returns {object} `query` (the `useInfiniteQuery` result) and `queryKey`.
|
|
41
18
|
*/
|
|
42
|
-
function useFetchWorkspaces({
|
|
19
|
+
function useFetchWorkspaces({ search, pageSize = 10, select, fetchAllPages = false, queryOptions }) {
|
|
43
20
|
const { api } = useAxios();
|
|
44
|
-
const queryKey = ["workspaces",
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}), [queryOptions]);
|
|
21
|
+
const queryKey = buildQueryKey(["workspaces", search ?? null], [], {
|
|
22
|
+
pageSize,
|
|
23
|
+
fetchAllPages
|
|
24
|
+
});
|
|
49
25
|
return {
|
|
50
|
-
query:
|
|
26
|
+
query: useEntityInfiniteQuery({
|
|
51
27
|
queryKey,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
28
|
+
itemsKey: "workspaces",
|
|
29
|
+
fetchPage: (pageToken, signal) => listWorkspaces(api, {
|
|
30
|
+
search,
|
|
31
|
+
pageSize,
|
|
32
|
+
pageToken: pageToken ?? void 0
|
|
33
|
+
}, signal),
|
|
34
|
+
select,
|
|
35
|
+
fetchAllPages,
|
|
36
|
+
queryOptions
|
|
59
37
|
}),
|
|
60
38
|
queryKey
|
|
61
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchWorkspaces.js","names":[],"sources":["../../../src/hooks/workspace/useFetchWorkspaces.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useFetchWorkspaces.js","names":[],"sources":["../../../src/hooks/workspace/useFetchWorkspaces.ts"],"sourcesContent":["import { useAxios } from \"@/hooks/useAxios\";\nimport { useEntityInfiniteQuery } from \"@/hooks/useEntityInfiniteQuery\";\nimport { listWorkspaces } from \"@/api/workspace\";\nimport { buildQueryKey } from \"@/api/entityQuery\";\nimport type { Workspace, WorkspaceListResponse } from \"@/types/workspace\";\nimport type { FetchEntitiesProps, ListCache } from \"@/types/entityQuery\";\n\n/** The query cache of `useFetchWorkspaces`, for typing `setQueryData`. */\nexport type WorkspacesCache = ListCache<WorkspaceListResponse>;\n\nexport type FetchWorkspacesProps<TData = Workspace[]> = FetchEntitiesProps<\n Workspace,\n TData,\n WorkspaceListResponse\n> & {\n /** A name prefix. */\n search?: string;\n};\n\n/**\n * useFetchWorkspaces\n *\n * Lists workspaces with cursor pagination; `query.data` is every loaded page merged, or\n * whatever `select` makes of it. `select` and `fetchAllPages` behave as in\n * `useFetchDatastores`. This endpoint lists the account's workspaces: it takes a name `search`,\n * and no workspace — the docs exempt it, and the endpoint ignores one, which this hook used to\n * send.\n *\n * @param {FetchWorkspacesProps} props - Search, page size, `select`, `fetchAllPages` and\n * TanStack `queryOptions`.\n * @returns {object} `query` (the `useInfiniteQuery` result) and `queryKey`.\n */\nexport function useFetchWorkspaces<TData = Workspace[]>({\n search,\n pageSize = 10,\n select,\n fetchAllPages = false,\n queryOptions,\n}: FetchWorkspacesProps<TData>) {\n const { api } = useAxios();\n\n const queryKey = buildQueryKey([\"workspaces\", search ?? null], [], { pageSize, fetchAllPages });\n\n const query = useEntityInfiniteQuery<WorkspaceListResponse, \"workspaces\", TData>({\n queryKey,\n itemsKey: \"workspaces\",\n fetchPage: (pageToken, signal) =>\n listWorkspaces(api, { search, pageSize, pageToken: pageToken ?? undefined }, signal),\n select,\n fetchAllPages,\n queryOptions,\n });\n\n return { query, queryKey };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgCA,SAAgB,mBAAwC,EACpD,QACA,WAAW,IACX,QACA,gBAAgB,OAChB,gBAC4B;CAC5B,MAAM,EAAE,QAAQ,SAAS;CAEzB,MAAM,WAAW,cAAc,CAAC,cAAc,UAAU,IAAI,GAAG,CAAC,GAAG;EAAE;EAAU;CAAc,CAAC;CAY9F,OAAO;EAAE,OAVK,uBAAmE;GAC7E;GACA,UAAU;GACV,YAAY,WAAW,WACnB,eAAe,KAAK;IAAE;IAAQ;IAAU,WAAW,aAAa,KAAA;GAAU,GAAG,MAAM;GACvF;GACA;GACA;EACJ,CAES;EAAO;CAAS;AAC7B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
export { EveryskApp } from "./EveryskApp";
|
|
2
|
-
export type { EveryskAppProps, ProviderComponent } from "./EveryskApp";
|
|
3
|
-
export { AppConfigContext } from "./contexts/appConfigContext";
|
|
4
|
-
export { AppConfigProvider } from "./contexts/appConfigContext/provider";
|
|
1
|
+
export { EveryskApp, withProps } from "./EveryskApp";
|
|
2
|
+
export type { ConfiguredProvider, EveryskAppProps, ProviderComponent, ProviderEntry, } from "./EveryskApp";
|
|
5
3
|
export { useAppConfig } from "./contexts/appConfigContext/useAppConfig";
|
|
6
|
-
export type { AppConfigContextType
|
|
7
|
-
export { AppAlertContext } from "./contexts/appAlertContext";
|
|
8
|
-
export { AppAlertProvider } from "./contexts/appAlertContext/provider";
|
|
4
|
+
export type { AppConfigContextType } from "./contexts/appConfigContext/types";
|
|
9
5
|
export { useAppAlert } from "./contexts/appAlertContext/useAppAlert";
|
|
10
6
|
export type { AppAlertContextType, AppAlertState, ShowAlertOptions, } from "./contexts/appAlertContext/types";
|
|
11
7
|
export { useAxios } from "./hooks/useAxios";
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
8
|
+
export { useEntityQuery } from "./hooks/useEntityQuery";
|
|
9
|
+
export type { EntityQueryProps } from "./hooks/useEntityQuery";
|
|
10
|
+
export { useEntityMutation } from "./hooks/useEntityMutation";
|
|
11
|
+
export type { EntityMutationProps } from "./hooks/useEntityMutation";
|
|
12
|
+
export { useEntityInfiniteQuery, FETCH_ALL_PAGES_LIMIT } from "./hooks/useEntityInfiniteQuery";
|
|
13
|
+
export type { EntityInfiniteQueryProps, ItemOf } from "./hooks/useEntityInfiniteQuery";
|
|
14
|
+
export { buildQueryObject, buildQueryKey, hasWorkspaceFilter, missingWorkspaceError, } from "./api/entityQuery";
|
|
15
|
+
export type { QueryKeyParams } from "./api/entityQuery";
|
|
16
|
+
export { createQueryClient } from "./lib/queryClient";
|
|
14
17
|
export type { AnyRecord } from "./types/anyRecord";
|
|
15
|
-
export type {
|
|
18
|
+
export type { DeletedEntity, DeleteEntityResponse, EntityInfiniteQueryOptions, EntityListResponse, EntityQueryOptions, EntityQueryParams, EntitySingleResponse, FetchEntitiesProps, FetchEntityByIdProps, FetchEntityProps, FilterClause, FilterExpression, FilterOperator, ListCache, ListQueryProps, PagedResponse, PageToken, QueryObject, } from "./types/entityQuery";
|
|
16
19
|
export * from "./portfolio";
|
|
17
20
|
export * from "./datastore";
|
|
18
21
|
export * from "./file";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EACR,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,GAChB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,YAAY,EACR,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACnB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,YAAY,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAGvF,OAAO,EACH,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,qBAAqB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACR,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,SAAS,EACT,WAAW,GACd,MAAM,qBAAqB,CAAC;AAI7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { componentOverrides } from "./theme/overrides/index.js";
|
|
2
2
|
import { DefaultLightTheme } from "./theme/themes/DefaultLight.js";
|
|
3
3
|
import { DefaultDarkTheme } from "./theme/themes/DefaultDark.js";
|
|
4
4
|
import { EveryskLightTheme } from "./theme/themes/EveryskLight.js";
|
|
@@ -6,39 +6,41 @@ import { EveryskDarkTheme } from "./theme/themes/EveryskDark.js";
|
|
|
6
6
|
import { MidnightEmberTheme } from "./theme/themes/MidnightEmber.js";
|
|
7
7
|
import { getBrandTheme, getDefaultTheme, getTheme } from "./theme/themes/index.js";
|
|
8
8
|
import { ThemeProvider } from "./theme/ThemeProvider.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { AppAlertContext } from "./contexts/appAlertContext/index.js";
|
|
12
|
-
import { AppAlertProvider } from "./contexts/appAlertContext/provider.js";
|
|
13
|
-
import { createQueryClient, getQueryFn } from "./lib/queryClient.js";
|
|
14
|
-
import { EveryskApp } from "./EveryskApp.js";
|
|
9
|
+
import { createQueryClient } from "./lib/queryClient.js";
|
|
10
|
+
import { EveryskApp, withProps } from "./EveryskApp.js";
|
|
15
11
|
import { useAppConfig } from "./contexts/appConfigContext/useAppConfig.js";
|
|
16
12
|
import { useAppAlert } from "./contexts/appAlertContext/useAppAlert.js";
|
|
17
13
|
import { useAxios } from "./hooks/useAxios.js";
|
|
18
|
-
import {
|
|
14
|
+
import { FETCH_ALL_PAGES_LIMIT, useEntityInfiniteQuery } from "./hooks/useEntityInfiniteQuery.js";
|
|
15
|
+
import { useEntityQuery } from "./hooks/useEntityQuery.js";
|
|
16
|
+
import { useEntityMutation } from "./hooks/useEntityMutation.js";
|
|
17
|
+
import { buildQueryKey, buildQueryObject, hasWorkspaceFilter, missingWorkspaceError } from "./api/entityQuery.js";
|
|
19
18
|
import { createPortfolio, deletePortfolio, getPortfolio, listPortfolios, updatePortfolio } from "./api/portfolio.js";
|
|
20
19
|
import { useFetchPortfolio } from "./hooks/portfolio/useFetchPortfolio.js";
|
|
21
20
|
import { useFetchPortfolios } from "./hooks/portfolio/useFetchPortfolios.js";
|
|
22
21
|
import { usePortfolioMutations } from "./hooks/portfolio/usePortfolioMutations.js";
|
|
23
22
|
import { createDatastore, deleteDatastore, getDatastore, listDatastores, updateDatastore } from "./api/datastore.js";
|
|
24
23
|
import { useDatastoreMutations } from "./hooks/datastore/useDatastoreMutations.js";
|
|
25
|
-
import {
|
|
24
|
+
import { isTableDatastore, matrixToObjects, objectsToMatrix, parseDatastore, toDatastoreMatrix } from "./lib/datastoreTable.js";
|
|
26
25
|
import { useFetchDatastore } from "./hooks/datastore/useFetchDatastore.js";
|
|
27
26
|
import { useFetchDatastores } from "./hooks/datastore/useFetchDatastores.js";
|
|
28
27
|
import { createFile, deleteFile, getFile, listFiles, updateFile } from "./api/file.js";
|
|
29
28
|
import { useFetchFile } from "./hooks/file/useFetchFile.js";
|
|
30
29
|
import { useFetchFiles } from "./hooks/file/useFetchFiles.js";
|
|
31
30
|
import { useFileMutations } from "./hooks/file/useFileMutations.js";
|
|
31
|
+
import { base64ToBlob, fileToBase64 } from "./lib/file.js";
|
|
32
32
|
import { DEV_PROFILE, getProfile } from "./api/profile.js";
|
|
33
33
|
import { useFetchProfile } from "./hooks/profile/useFetchProfile.js";
|
|
34
|
-
import { TERMINAL_RUN_STATUSES, getWorkerExecution, getWorkflow, getWorkflowExecution, listWorkerExecutions, listWorkflowExecutions, listWorkflows,
|
|
34
|
+
import { TERMINAL_RUN_STATUSES, getWorkerExecution, getWorkflow, getWorkflowExecution, isTerminalRunStatus, listWorkerExecutions, listWorkflowExecutions, listWorkflows, runWorkflow, terminalRunStatusOf } from "./api/workflow.js";
|
|
35
35
|
import { useFetchWorkerExecution } from "./hooks/workflow/useFetchWorkerExecution.js";
|
|
36
36
|
import { useFetchWorkerExecutions } from "./hooks/workflow/useFetchWorkerExecutions.js";
|
|
37
37
|
import { useFetchWorkflow } from "./hooks/workflow/useFetchWorkflow.js";
|
|
38
38
|
import { useFetchWorkflowExecution } from "./hooks/workflow/useFetchWorkflowExecution.js";
|
|
39
39
|
import { useFetchWorkflowExecutions } from "./hooks/workflow/useFetchWorkflowExecutions.js";
|
|
40
40
|
import { useFetchWorkflows } from "./hooks/workflow/useFetchWorkflows.js";
|
|
41
|
+
import { WorkflowRunAbortedError } from "./lib/workflowRun.js";
|
|
41
42
|
import { useRunWorkflow } from "./hooks/workflow/useRunWorkflow.js";
|
|
43
|
+
import { useTriggerWorkflow } from "./hooks/workflow/useTriggerWorkflow.js";
|
|
42
44
|
import { getWorkspace, listWorkspaces } from "./api/workspace.js";
|
|
43
45
|
import { useFetchWorkspace } from "./hooks/workspace/useFetchWorkspace.js";
|
|
44
46
|
import { useFetchWorkspaces } from "./hooks/workspace/useFetchWorkspaces.js";
|
|
@@ -47,4 +49,4 @@ import { Footer } from "./components/ui/Footer/index.js";
|
|
|
47
49
|
import { GlobalLoading } from "./components/ui/GlobalLoading/index.js";
|
|
48
50
|
import { PageContainer } from "./components/ui/PageContainer/index.js";
|
|
49
51
|
import { Toolbar } from "./components/ui/Toolbar/index.js";
|
|
50
|
-
export {
|
|
52
|
+
export { DEV_PROFILE, DefaultDarkTheme, DefaultLightTheme, EveryskApp, EveryskDarkTheme, EveryskIcon, EveryskLightTheme, FETCH_ALL_PAGES_LIMIT, Footer, GlobalLoading, MidnightEmberTheme, PageContainer, TERMINAL_RUN_STATUSES, ThemeProvider, Toolbar, WorkflowRunAbortedError, base64ToBlob, buildQueryKey, buildQueryObject, componentOverrides, createDatastore, createFile, createPortfolio, createQueryClient, deleteDatastore, deleteFile, deletePortfolio, fileToBase64, getBrandTheme, getDatastore, getDefaultTheme, getFile, getPortfolio, getProfile, getTheme, getWorkerExecution, getWorkflow, getWorkflowExecution, getWorkspace, hasWorkspaceFilter, isTableDatastore, isTerminalRunStatus, listDatastores, listFiles, listPortfolios, listWorkerExecutions, listWorkflowExecutions, listWorkflows, listWorkspaces, matrixToObjects, missingWorkspaceError, objectsToMatrix, parseDatastore, runWorkflow, terminalRunStatusOf, toDatastoreMatrix, updateDatastore, updateFile, updatePortfolio, useAppAlert, useAppConfig, useAxios, useDatastoreMutations, useEntityInfiniteQuery, useEntityMutation, useEntityQuery, useFetchDatastore, useFetchDatastores, useFetchFile, useFetchFiles, useFetchPortfolio, useFetchPortfolios, useFetchProfile, useFetchWorkerExecution, useFetchWorkerExecutions, useFetchWorkflow, useFetchWorkflowExecution, useFetchWorkflowExecutions, useFetchWorkflows, useFetchWorkspace, useFetchWorkspaces, useFileMutations, usePortfolioMutations, useRunWorkflow, useTriggerWorkflow, withProps };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* abortable
|
|
3
|
+
*
|
|
4
|
+
* The one shape every abortable wait here takes: a promise that `start` settles, or that rejects
|
|
5
|
+
* with the signal's reason as soon as it aborts. `start` returns its cleanup, which runs either
|
|
6
|
+
* way, so a timer or a listener never outlives the promise.
|
|
7
|
+
*
|
|
8
|
+
* @param signal - Aborts the wait.
|
|
9
|
+
* @param start - Begins the work and returns what undoes it.
|
|
10
|
+
* @returns The work's result, unless the signal aborts first.
|
|
11
|
+
*/
|
|
12
|
+
export declare const abortable: <T>(signal: AbortSignal, start: (resolve: (value: T) => void, reject: (error: unknown) => void) => () => void) => Promise<T>;
|
|
13
|
+
/**
|
|
14
|
+
* Settles as `promise` does, or rejects with the signal's reason once it aborts first — for work
|
|
15
|
+
* that may not honour the signal itself.
|
|
16
|
+
*/
|
|
17
|
+
export declare const unlessAborted: <T>(promise: Promise<T>, signal: AbortSignal) => Promise<T>;
|
|
18
|
+
/**
|
|
19
|
+
* createDeadline
|
|
20
|
+
*
|
|
21
|
+
* A signal that aborts after `timeoutMs`, or as soon as `signal` does, each with its own error.
|
|
22
|
+
* `dispose` stops the timer and the listener once the work is done.
|
|
23
|
+
*
|
|
24
|
+
* @param options - The timeout, the outer signal, and the error each abort carries. The errors
|
|
25
|
+
* are built when the abort happens, so they can describe the state at that moment.
|
|
26
|
+
* @returns The signal, and `dispose`.
|
|
27
|
+
*/
|
|
28
|
+
export declare const createDeadline: ({ timeoutMs, signal, timeoutError, abortError, }: {
|
|
29
|
+
timeoutMs: number;
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
timeoutError: () => Error;
|
|
32
|
+
abortError: () => Error;
|
|
33
|
+
}) => {
|
|
34
|
+
signal: AbortSignal;
|
|
35
|
+
dispose(): void;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* anySignal
|
|
39
|
+
*
|
|
40
|
+
* A signal that aborts as soon as any of `signals` does, with that one's reason. It is
|
|
41
|
+
* `AbortSignal.any`, written out because that arrived in Chrome 116, Firefox 124 and Safari 17.4,
|
|
42
|
+
* after the browsers a Vite 8 app targets by default (Chrome 111, Firefox 114, Safari 16.4).
|
|
43
|
+
* What it uses instead — `abort(reason)`, `signal.reason` and `addEventListener`'s `once` —
|
|
44
|
+
* predates them all. Source: MDN browser-compat-data, `api/AbortSignal.json` and
|
|
45
|
+
* `api/AbortController.json` (2026-10-14).
|
|
46
|
+
*
|
|
47
|
+
* Missing signals are skipped, so an optional one can be passed as is. It stops listening to the
|
|
48
|
+
* others once one aborts, or when `dispose` is called: a run that ends normally aborts nothing,
|
|
49
|
+
* and a long-lived signal would otherwise keep one listener per run.
|
|
50
|
+
*
|
|
51
|
+
* @param signals - The signals to follow; `undefined` entries are ignored.
|
|
52
|
+
* @returns The signal that aborts with the first of them, and `dispose`.
|
|
53
|
+
*/
|
|
54
|
+
export declare const anySignal: (signals: (AbortSignal | undefined)[]) => {
|
|
55
|
+
signal: AbortSignal;
|
|
56
|
+
dispose: () => void;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=abort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/lib/abort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACvB,QAAQ,WAAW,EACnB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,KACrF,OAAO,CAAC,CAAC,CAyBN,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,WAAW,KAAG,OAAO,CAAC,CAAC,CAI/E,CAAC;AAEP;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,kDAK5B;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,KAAK,CAAC;IAC1B,UAAU,EAAE,MAAM,KAAK,CAAC;CAC3B;;;CAeA,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,GAClB,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,KACrC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAuB5C,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
//#region src/lib/abort.ts
|
|
2
|
+
/**
|
|
3
|
+
* abortable
|
|
4
|
+
*
|
|
5
|
+
* The one shape every abortable wait here takes: a promise that `start` settles, or that rejects
|
|
6
|
+
* with the signal's reason as soon as it aborts. `start` returns its cleanup, which runs either
|
|
7
|
+
* way, so a timer or a listener never outlives the promise.
|
|
8
|
+
*
|
|
9
|
+
* @param signal - Aborts the wait.
|
|
10
|
+
* @param start - Begins the work and returns what undoes it.
|
|
11
|
+
* @returns The work's result, unless the signal aborts first.
|
|
12
|
+
*/
|
|
13
|
+
var abortable = (signal, start) => new Promise((resolve, reject) => {
|
|
14
|
+
if (signal.aborted) return reject(signal.reason);
|
|
15
|
+
let cleanup = () => {};
|
|
16
|
+
const finish = () => {
|
|
17
|
+
cleanup();
|
|
18
|
+
signal.removeEventListener("abort", onAbort);
|
|
19
|
+
};
|
|
20
|
+
const onAbort = () => {
|
|
21
|
+
finish();
|
|
22
|
+
reject(signal.reason);
|
|
23
|
+
};
|
|
24
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
25
|
+
cleanup = start((value) => {
|
|
26
|
+
finish();
|
|
27
|
+
resolve(value);
|
|
28
|
+
}, (error) => {
|
|
29
|
+
finish();
|
|
30
|
+
reject(error);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Settles as `promise` does, or rejects with the signal's reason once it aborts first — for work
|
|
35
|
+
* that may not honour the signal itself.
|
|
36
|
+
*/
|
|
37
|
+
var unlessAborted = (promise, signal) => abortable(signal, (resolve, reject) => {
|
|
38
|
+
promise.then(resolve, reject);
|
|
39
|
+
return () => {};
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* createDeadline
|
|
43
|
+
*
|
|
44
|
+
* A signal that aborts after `timeoutMs`, or as soon as `signal` does, each with its own error.
|
|
45
|
+
* `dispose` stops the timer and the listener once the work is done.
|
|
46
|
+
*
|
|
47
|
+
* @param options - The timeout, the outer signal, and the error each abort carries. The errors
|
|
48
|
+
* are built when the abort happens, so they can describe the state at that moment.
|
|
49
|
+
* @returns The signal, and `dispose`.
|
|
50
|
+
*/
|
|
51
|
+
var createDeadline = ({ timeoutMs, signal, timeoutError, abortError }) => {
|
|
52
|
+
const controller = new AbortController();
|
|
53
|
+
const timer = setTimeout(() => controller.abort(timeoutError()), timeoutMs);
|
|
54
|
+
const abort = () => controller.abort(abortError());
|
|
55
|
+
if (signal?.aborted) abort();
|
|
56
|
+
else signal?.addEventListener("abort", abort, { once: true });
|
|
57
|
+
return {
|
|
58
|
+
signal: controller.signal,
|
|
59
|
+
dispose() {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
signal?.removeEventListener("abort", abort);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* anySignal
|
|
67
|
+
*
|
|
68
|
+
* A signal that aborts as soon as any of `signals` does, with that one's reason. It is
|
|
69
|
+
* `AbortSignal.any`, written out because that arrived in Chrome 116, Firefox 124 and Safari 17.4,
|
|
70
|
+
* after the browsers a Vite 8 app targets by default (Chrome 111, Firefox 114, Safari 16.4).
|
|
71
|
+
* What it uses instead — `abort(reason)`, `signal.reason` and `addEventListener`'s `once` —
|
|
72
|
+
* predates them all. Source: MDN browser-compat-data, `api/AbortSignal.json` and
|
|
73
|
+
* `api/AbortController.json` (2026-10-14).
|
|
74
|
+
*
|
|
75
|
+
* Missing signals are skipped, so an optional one can be passed as is. It stops listening to the
|
|
76
|
+
* others once one aborts, or when `dispose` is called: a run that ends normally aborts nothing,
|
|
77
|
+
* and a long-lived signal would otherwise keep one listener per run.
|
|
78
|
+
*
|
|
79
|
+
* @param signals - The signals to follow; `undefined` entries are ignored.
|
|
80
|
+
* @returns The signal that aborts with the first of them, and `dispose`.
|
|
81
|
+
*/
|
|
82
|
+
var anySignal = (signals) => {
|
|
83
|
+
const controller = new AbortController();
|
|
84
|
+
const present = signals.filter((signal) => signal !== void 0);
|
|
85
|
+
const already = present.find((signal) => signal.aborted);
|
|
86
|
+
if (already) {
|
|
87
|
+
controller.abort(already.reason);
|
|
88
|
+
return {
|
|
89
|
+
signal: controller.signal,
|
|
90
|
+
dispose: () => {}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const dispose = () => {
|
|
94
|
+
for (const [signal, listener] of listeners) signal.removeEventListener("abort", listener);
|
|
95
|
+
};
|
|
96
|
+
const listeners = present.map((signal) => {
|
|
97
|
+
const listener = () => {
|
|
98
|
+
dispose();
|
|
99
|
+
controller.abort(signal.reason);
|
|
100
|
+
};
|
|
101
|
+
signal.addEventListener("abort", listener, { once: true });
|
|
102
|
+
return [signal, listener];
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
signal: controller.signal,
|
|
106
|
+
dispose
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
//#endregion
|
|
110
|
+
export { abortable, anySignal, createDeadline, unlessAborted };
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=abort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.js","names":[],"sources":["../../src/lib/abort.ts"],"sourcesContent":["/**\n * abortable\n *\n * The one shape every abortable wait here takes: a promise that `start` settles, or that rejects\n * with the signal's reason as soon as it aborts. `start` returns its cleanup, which runs either\n * way, so a timer or a listener never outlives the promise.\n *\n * @param signal - Aborts the wait.\n * @param start - Begins the work and returns what undoes it.\n * @returns The work's result, unless the signal aborts first.\n */\nexport const abortable = <T>(\n signal: AbortSignal,\n start: (resolve: (value: T) => void, reject: (error: unknown) => void) => () => void,\n): Promise<T> =>\n new Promise<T>((resolve, reject) => {\n if (signal.aborted) return reject(signal.reason);\n\n let cleanup = () => {};\n const finish = () => {\n cleanup();\n signal.removeEventListener(\"abort\", onAbort);\n };\n const onAbort = () => {\n finish();\n reject(signal.reason);\n };\n\n signal.addEventListener(\"abort\", onAbort, { once: true });\n cleanup = start(\n (value) => {\n finish();\n resolve(value);\n },\n (error) => {\n finish();\n reject(error);\n },\n );\n });\n\n/**\n * Settles as `promise` does, or rejects with the signal's reason once it aborts first — for work\n * that may not honour the signal itself.\n */\nexport const unlessAborted = <T>(promise: Promise<T>, signal: AbortSignal): Promise<T> =>\n abortable(signal, (resolve, reject) => {\n promise.then(resolve, reject);\n return () => {};\n });\n\n/**\n * createDeadline\n *\n * A signal that aborts after `timeoutMs`, or as soon as `signal` does, each with its own error.\n * `dispose` stops the timer and the listener once the work is done.\n *\n * @param options - The timeout, the outer signal, and the error each abort carries. The errors\n * are built when the abort happens, so they can describe the state at that moment.\n * @returns The signal, and `dispose`.\n */\nexport const createDeadline = ({\n timeoutMs,\n signal,\n timeoutError,\n abortError,\n}: {\n timeoutMs: number;\n signal?: AbortSignal;\n timeoutError: () => Error;\n abortError: () => Error;\n}) => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(timeoutError()), timeoutMs);\n const abort = () => controller.abort(abortError());\n\n if (signal?.aborted) abort();\n else signal?.addEventListener(\"abort\", abort, { once: true });\n\n return {\n signal: controller.signal,\n dispose() {\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", abort);\n },\n };\n};\n\n/**\n * anySignal\n *\n * A signal that aborts as soon as any of `signals` does, with that one's reason. It is\n * `AbortSignal.any`, written out because that arrived in Chrome 116, Firefox 124 and Safari 17.4,\n * after the browsers a Vite 8 app targets by default (Chrome 111, Firefox 114, Safari 16.4).\n * What it uses instead — `abort(reason)`, `signal.reason` and `addEventListener`'s `once` —\n * predates them all. Source: MDN browser-compat-data, `api/AbortSignal.json` and\n * `api/AbortController.json` (2026-10-14).\n *\n * Missing signals are skipped, so an optional one can be passed as is. It stops listening to the\n * others once one aborts, or when `dispose` is called: a run that ends normally aborts nothing,\n * and a long-lived signal would otherwise keep one listener per run.\n *\n * @param signals - The signals to follow; `undefined` entries are ignored.\n * @returns The signal that aborts with the first of them, and `dispose`.\n */\nexport const anySignal = (\n signals: (AbortSignal | undefined)[],\n): { signal: AbortSignal; dispose: () => void } => {\n const controller = new AbortController();\n const present = signals.filter((signal): signal is AbortSignal => signal !== undefined);\n\n const already = present.find((signal) => signal.aborted);\n if (already) {\n controller.abort(already.reason);\n return { signal: controller.signal, dispose: () => {} };\n }\n\n const dispose = () => {\n for (const [signal, listener] of listeners) signal.removeEventListener(\"abort\", listener);\n };\n const listeners = present.map((signal) => {\n const listener = () => {\n dispose();\n controller.abort(signal.reason);\n };\n signal.addEventListener(\"abort\", listener, { once: true });\n return [signal, listener] as const;\n });\n\n return { signal: controller.signal, dispose };\n};\n"],"mappings":";;;;;;;;;;;;AAWA,IAAa,aACT,QACA,UAEA,IAAI,SAAY,SAAS,WAAW;CAChC,IAAI,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM;CAE/C,IAAI,gBAAgB,CAAC;CACrB,MAAM,eAAe;EACjB,QAAQ;EACR,OAAO,oBAAoB,SAAS,OAAO;CAC/C;CACA,MAAM,gBAAgB;EAClB,OAAO;EACP,OAAO,OAAO,MAAM;CACxB;CAEA,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;CACxD,UAAU,OACL,UAAU;EACP,OAAO;EACP,QAAQ,KAAK;CACjB,IACC,UAAU;EACP,OAAO;EACP,OAAO,KAAK;CAChB,CACJ;AACJ,CAAC;;;;;AAML,IAAa,iBAAoB,SAAqB,WAClD,UAAU,SAAS,SAAS,WAAW;CACnC,QAAQ,KAAK,SAAS,MAAM;CAC5B,aAAa,CAAC;AAClB,CAAC;;;;;;;;;;;AAYL,IAAa,kBAAkB,EAC3B,WACA,QACA,cACA,iBAME;CACF,MAAM,aAAa,IAAI,gBAAgB;CACvC,MAAM,QAAQ,iBAAiB,WAAW,MAAM,aAAa,CAAC,GAAG,SAAS;CAC1E,MAAM,cAAc,WAAW,MAAM,WAAW,CAAC;CAEjD,IAAI,QAAQ,SAAS,MAAM;MACtB,QAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;CAE5D,OAAO;EACH,QAAQ,WAAW;EACnB,UAAU;GACN,aAAa,KAAK;GAClB,QAAQ,oBAAoB,SAAS,KAAK;EAC9C;CACJ;AACJ;;;;;;;;;;;;;;;;;;AAmBA,IAAa,aACT,YAC+C;CAC/C,MAAM,aAAa,IAAI,gBAAgB;CACvC,MAAM,UAAU,QAAQ,QAAQ,WAAkC,WAAW,KAAA,CAAS;CAEtF,MAAM,UAAU,QAAQ,MAAM,WAAW,OAAO,OAAO;CACvD,IAAI,SAAS;EACT,WAAW,MAAM,QAAQ,MAAM;EAC/B,OAAO;GAAE,QAAQ,WAAW;GAAQ,eAAe,CAAC;EAAE;CAC1D;CAEA,MAAM,gBAAgB;EAClB,KAAK,MAAM,CAAC,QAAQ,aAAa,WAAW,OAAO,oBAAoB,SAAS,QAAQ;CAC5F;CACA,MAAM,YAAY,QAAQ,KAAK,WAAW;EACtC,MAAM,iBAAiB;GACnB,QAAQ;GACR,WAAW,MAAM,OAAO,MAAM;EAClC;EACA,OAAO,iBAAiB,SAAS,UAAU,EAAE,MAAM,KAAK,CAAC;EACzD,OAAO,CAAC,QAAQ,QAAQ;CAC5B,CAAC;CAED,OAAO;EAAE,QAAQ,WAAW;EAAQ;CAAQ;AAChD"}
|