canopycms 0.0.61-int.74 → 0.0.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/handler.js +1 -1
- package/dist/ai/handler.js.map +1 -1
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/assets.js +36 -4
- package/dist/api/assets.js.map +1 -1
- package/dist/api/branch-status.d.ts.map +1 -1
- package/dist/api/branch-status.js +56 -0
- package/dist/api/branch-status.js.map +1 -1
- package/dist/api/branch-withdraw.d.ts.map +1 -1
- package/dist/api/branch-withdraw.js +14 -3
- package/dist/api/branch-withdraw.js.map +1 -1
- package/dist/api/branch.d.ts +31 -2
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +252 -13
- package/dist/api/branch.js.map +1 -1
- package/dist/api/content.d.ts.map +1 -1
- package/dist/api/content.js +12 -4
- package/dist/api/content.js.map +1 -1
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +11 -9
- package/dist/api/entries.js.map +1 -1
- package/dist/api/guards.d.ts.map +1 -1
- package/dist/api/guards.js +12 -5
- package/dist/api/guards.js.map +1 -1
- package/dist/api/permissions.d.ts +2 -2
- package/dist/api/permissions.d.ts.map +1 -1
- package/dist/api/permissions.js +51 -3
- package/dist/api/permissions.js.map +1 -1
- package/dist/api/reference-options.d.ts.map +1 -1
- package/dist/api/reference-options.js +10 -17
- package/dist/api/reference-options.js.map +1 -1
- package/dist/api/resolve-references.d.ts.map +1 -1
- package/dist/api/resolve-references.js +3 -1
- package/dist/api/resolve-references.js.map +1 -1
- package/dist/api/schema.d.ts.map +1 -1
- package/dist/api/schema.js +3 -2
- package/dist/api/schema.js.map +1 -1
- package/dist/api/settings-helpers.d.ts.map +1 -1
- package/dist/api/settings-helpers.js +6 -5
- package/dist/api/settings-helpers.js.map +1 -1
- package/dist/assets/pipeline.d.ts +11 -2
- package/dist/assets/pipeline.d.ts.map +1 -1
- package/dist/assets/pipeline.js +114 -2
- package/dist/assets/pipeline.js.map +1 -1
- package/dist/assets/transform-directives.d.ts +18 -0
- package/dist/assets/transform-directives.d.ts.map +1 -1
- package/dist/assets/transform-directives.js +18 -0
- package/dist/assets/transform-directives.js.map +1 -1
- package/dist/assets/transform.d.ts.map +1 -1
- package/dist/assets/transform.js +1 -10
- package/dist/assets/transform.js.map +1 -1
- package/dist/auth/types.d.ts +29 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +1 -1
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/protected-branch.d.ts +75 -0
- package/dist/authorization/protected-branch.d.ts.map +1 -1
- package/dist/authorization/protected-branch.js +39 -0
- package/dist/authorization/protected-branch.js.map +1 -1
- package/dist/branch-registry.d.ts.map +1 -1
- package/dist/branch-registry.js +5 -1
- package/dist/branch-registry.js.map +1 -1
- package/dist/branch-schema-cache.d.ts.map +1 -1
- package/dist/branch-schema-cache.js +9 -0
- package/dist/branch-schema-cache.js.map +1 -1
- package/dist/build/generate-ai-content.js +1 -1
- package/dist/build/generate-ai-content.js.map +1 -1
- package/dist/cli/cli.js +1442 -828
- package/dist/cli/generate-ai-content.js +404 -136
- package/dist/cli/init.d.ts +8 -2
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +440 -151
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/project-detect.d.ts +89 -0
- package/dist/cli/project-detect.d.ts.map +1 -0
- package/dist/cli/project-detect.js +240 -0
- package/dist/cli/project-detect.js.map +1 -0
- package/dist/cli/template-files/Dockerfile.cms.template +11 -6
- package/dist/cli/template-files/cdk-app.ts.template +82 -0
- package/dist/cli/template-files/cdk.json.template +9 -0
- package/dist/cli/template-files/cms-stack.ts.template +124 -0
- package/dist/cli/template-files/deploy-cms.yml.template +125 -13
- package/dist/cli/template-files/dockerignore.template +2 -1
- package/dist/cli/templates.d.ts +26 -2
- package/dist/cli/templates.d.ts.map +1 -1
- package/dist/cli/templates.js +36 -4
- package/dist/cli/templates.js.map +1 -1
- package/dist/config/schemas/config.d.ts +2 -3
- package/dist/config/schemas/config.d.ts.map +1 -1
- package/dist/config/schemas/config.js +21 -1
- package/dist/config/schemas/config.js.map +1 -1
- package/dist/config/validation.d.ts +9 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +22 -12
- package/dist/config/validation.js.map +1 -1
- package/dist/content-reader.js +1 -1
- package/dist/content-reader.js.map +1 -1
- package/dist/content-store.d.ts +11 -0
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +2 -1
- package/dist/content-store.js.map +1 -1
- package/dist/dev-content-watcher.d.ts.map +1 -1
- package/dist/dev-content-watcher.js +4 -1
- package/dist/dev-content-watcher.js.map +1 -1
- package/dist/editor/BranchManager.d.ts +15 -0
- package/dist/editor/BranchManager.d.ts.map +1 -1
- package/dist/editor/BranchManager.js +43 -9
- package/dist/editor/BranchManager.js.map +1 -1
- package/dist/editor/CanopyEditor.d.ts.map +1 -1
- package/dist/editor/CanopyEditor.js +2 -2
- package/dist/editor/CanopyEditor.js.map +1 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +110 -48
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.js +9 -8
- package/dist/editor/admin/SystemHealthPanel.js.map +1 -1
- package/dist/editor/components/EditorHeader.d.ts +6 -0
- package/dist/editor/components/EditorHeader.d.ts.map +1 -1
- package/dist/editor/components/EditorHeader.js +76 -23
- package/dist/editor/components/EditorHeader.js.map +1 -1
- package/dist/editor/components/EntryCreateModal.d.ts.map +1 -1
- package/dist/editor/components/EntryCreateModal.js +21 -6
- package/dist/editor/components/EntryCreateModal.js.map +1 -1
- package/dist/editor/context/SWRProvider.d.ts +31 -0
- package/dist/editor/context/SWRProvider.d.ts.map +1 -0
- package/dist/editor/context/SWRProvider.js +12 -0
- package/dist/editor/context/SWRProvider.js.map +1 -0
- package/dist/editor/context/index.d.ts +3 -0
- package/dist/editor/context/index.d.ts.map +1 -1
- package/dist/editor/context/index.js +3 -0
- package/dist/editor/context/index.js.map +1 -1
- package/dist/editor/editor-utils.d.ts.map +1 -1
- package/dist/editor/editor-utils.js +8 -2
- package/dist/editor/editor-utils.js.map +1 -1
- package/dist/editor/fields/ImageField.d.ts.map +1 -1
- package/dist/editor/fields/ImageField.js +27 -3
- package/dist/editor/fields/ImageField.js.map +1 -1
- package/dist/editor/fields/ReferenceField.d.ts.map +1 -1
- package/dist/editor/fields/ReferenceField.js +52 -31
- package/dist/editor/fields/ReferenceField.js.map +1 -1
- package/dist/editor/hooks/__test__/test-utils.d.ts +38 -3
- package/dist/editor/hooks/__test__/test-utils.d.ts.map +1 -1
- package/dist/editor/hooks/__test__/test-utils.js +50 -4
- package/dist/editor/hooks/__test__/test-utils.js.map +1 -1
- package/dist/editor/hooks/index.d.ts +4 -1
- package/dist/editor/hooks/index.d.ts.map +1 -1
- package/dist/editor/hooks/index.js +4 -1
- package/dist/editor/hooks/index.js.map +1 -1
- package/dist/editor/hooks/useBranchManager.d.ts +21 -1
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchManager.js +68 -32
- package/dist/editor/hooks/useBranchManager.js.map +1 -1
- package/dist/editor/hooks/useBranchesData.d.ts +57 -0
- package/dist/editor/hooks/useBranchesData.d.ts.map +1 -0
- package/dist/editor/hooks/useBranchesData.js +69 -0
- package/dist/editor/hooks/useBranchesData.js.map +1 -0
- package/dist/editor/hooks/useCommentSystem.d.ts.map +1 -1
- package/dist/editor/hooks/useCommentSystem.js +24 -22
- package/dist/editor/hooks/useCommentSystem.js.map +1 -1
- package/dist/editor/hooks/useCommentsData.d.ts +29 -0
- package/dist/editor/hooks/useCommentsData.d.ts.map +1 -0
- package/dist/editor/hooks/useCommentsData.js +40 -0
- package/dist/editor/hooks/useCommentsData.js.map +1 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +32 -18
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useEntriesData.d.ts +35 -0
- package/dist/editor/hooks/useEntriesData.d.ts.map +1 -0
- package/dist/editor/hooks/useEntriesData.js +96 -0
- package/dist/editor/hooks/useEntriesData.js.map +1 -0
- package/dist/editor/hooks/useEntryManager.d.ts +8 -15
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +259 -117
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/editor/hooks/usePermissionManager.d.ts +2 -2
- package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -1
- package/dist/editor/hooks/usePermissionManager.js +11 -9
- package/dist/editor/hooks/usePermissionManager.js.map +1 -1
- package/dist/editor/hooks/useReferenceResolution.d.ts.map +1 -1
- package/dist/editor/hooks/useReferenceResolution.js +24 -1
- package/dist/editor/hooks/useReferenceResolution.js.map +1 -1
- package/dist/editor/media/MediaLibraryBody.d.ts.map +1 -1
- package/dist/editor/media/MediaLibraryBody.js +12 -2
- package/dist/editor/media/MediaLibraryBody.js.map +1 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts.map +1 -1
- package/dist/editor/permission-manager/GroupSelector.js +7 -2
- package/dist/editor/permission-manager/GroupSelector.js.map +1 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +3 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +1 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +1 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +1 -1
- package/dist/editor/permission-manager/types.d.ts +6 -4
- package/dist/editor/permission-manager/types.d.ts.map +1 -1
- package/dist/editor/test-setup.js +8 -0
- package/dist/editor/test-setup.js.map +1 -1
- package/dist/git-manager.d.ts +126 -9
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +251 -27
- package/dist/git-manager.js.map +1 -1
- package/dist/github-service.d.ts.map +1 -1
- package/dist/github-service.js +13 -7
- package/dist/github-service.js.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/handler.js +8 -2
- package/dist/http/handler.js.map +1 -1
- package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -1
- package/dist/operating-mode/client-unsafe-strategy.js +7 -8
- package/dist/operating-mode/client-unsafe-strategy.js.map +1 -1
- package/dist/operating-mode/deployment-name.d.ts +28 -0
- package/dist/operating-mode/deployment-name.d.ts.map +1 -0
- package/dist/operating-mode/deployment-name.js +78 -0
- package/dist/operating-mode/deployment-name.js.map +1 -0
- package/dist/operating-mode/index.d.ts +5 -1
- package/dist/operating-mode/index.d.ts.map +1 -1
- package/dist/operating-mode/index.js +7 -1
- package/dist/operating-mode/index.js.map +1 -1
- package/dist/operating-mode/types.d.ts +13 -3
- package/dist/operating-mode/types.d.ts.map +1 -1
- package/dist/paths/branch-name.d.ts +38 -0
- package/dist/paths/branch-name.d.ts.map +1 -1
- package/dist/paths/branch-name.js +46 -0
- package/dist/paths/branch-name.js.map +1 -1
- package/dist/paths/index.d.ts +1 -1
- package/dist/paths/index.d.ts.map +1 -1
- package/dist/paths/index.js +1 -1
- package/dist/paths/index.js.map +1 -1
- package/dist/reference-resolver.d.ts +6 -2
- package/dist/reference-resolver.d.ts.map +1 -1
- package/dist/reference-resolver.js +8 -1
- package/dist/reference-resolver.js.map +1 -1
- package/dist/schema/meta-loader.d.ts.map +1 -1
- package/dist/schema/meta-loader.js +10 -2
- package/dist/schema/meta-loader.js.map +1 -1
- package/dist/schema/schema-store.d.ts +11 -2
- package/dist/schema/schema-store.d.ts.map +1 -1
- package/dist/schema/schema-store.js +23 -11
- package/dist/schema/schema-store.js.map +1 -1
- package/dist/settings-workspace.d.ts +0 -15
- package/dist/settings-workspace.d.ts.map +1 -1
- package/dist/settings-workspace.js +97 -1
- package/dist/settings-workspace.js.map +1 -1
- package/dist/types.d.ts +63 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/debug.d.ts +11 -0
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +12 -1
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/git.d.ts +38 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +69 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/logger.d.ts +71 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +85 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/validation/entry-type-reference-validator.d.ts +33 -0
- package/dist/validation/entry-type-reference-validator.d.ts.map +1 -0
- package/dist/validation/entry-type-reference-validator.js +110 -0
- package/dist/validation/entry-type-reference-validator.js.map +1 -0
- package/dist/worker/cms-worker.d.ts +232 -3
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +856 -87
- package/dist/worker/cms-worker.js.map +1 -1
- package/dist/worker/log.d.ts +61 -0
- package/dist/worker/log.d.ts.map +1 -0
- package/dist/worker/log.js +74 -0
- package/dist/worker/log.js.map +1 -0
- package/package.json +3 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { CollectionItem } from '../../api/entries';
|
|
2
1
|
import type { EditorEntry, EditorCollection } from '../Editor';
|
|
3
2
|
import type { LogicalPath } from '../../paths/types';
|
|
4
3
|
import type { FormValue } from '../FormRenderer';
|
|
5
4
|
import type { EntryFieldError } from '../../validation/entry-validator';
|
|
6
|
-
|
|
5
|
+
export { listAllEntries } from './useEntriesData';
|
|
7
6
|
/**
|
|
8
7
|
* Thrown by saveEntry when the API returns a non-200 response. Carries the
|
|
9
8
|
* HTTP status so callers can distinguish conflict (409) and validation
|
|
@@ -15,19 +14,6 @@ export declare class SaveApiError extends Error {
|
|
|
15
14
|
readonly fieldErrors?: EntryFieldError[] | undefined;
|
|
16
15
|
constructor(status: number, serverMessage?: string, fieldErrors?: EntryFieldError[] | undefined);
|
|
17
16
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Fetch every entry on a branch by following the list endpoint's pagination
|
|
20
|
-
* cursor. Deduped by logicalPath: the cursor is offset-based, so an item can
|
|
21
|
-
* repeat across pages if content changes between requests.
|
|
22
|
-
*
|
|
23
|
-
* Exported for direct unit testing.
|
|
24
|
-
*/
|
|
25
|
-
export declare function listAllEntries(apiClient: {
|
|
26
|
-
entries: Pick<ApiClient['entries'], 'list'>;
|
|
27
|
-
}, branch: string): Promise<{
|
|
28
|
-
entries: CollectionItem[];
|
|
29
|
-
truncated: boolean;
|
|
30
|
-
}>;
|
|
31
17
|
export interface UseEntryManagerOptions {
|
|
32
18
|
initialEntries: EditorEntry[];
|
|
33
19
|
initialSelectedId?: string;
|
|
@@ -45,6 +31,13 @@ export interface UseEntryManagerReturn {
|
|
|
45
31
|
setEntries: (entries: EditorEntry[]) => void;
|
|
46
32
|
collections: EditorCollection[];
|
|
47
33
|
currentEntry: EditorEntry | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Entry-type schema names available on this branch, from the same schema
|
|
36
|
+
* fetch that builds `collections`/`entries`. Exposed here so Editor.tsx's
|
|
37
|
+
* schema-editor "available schemas" list doesn't need its own separate
|
|
38
|
+
* fetch of the same schema endpoint.
|
|
39
|
+
*/
|
|
40
|
+
availableSchemas: string[];
|
|
48
41
|
/** True while the first entry load for the current branch is in flight (initial load, per branch). */
|
|
49
42
|
entriesInitializing: boolean;
|
|
50
43
|
navigatorOpen: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntryManager.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/useEntryManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEntryManager.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/useEntryManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import useSWR, { useSWRConfig } from 'swr';
|
|
2
3
|
import { notifications } from '@mantine/notifications';
|
|
3
|
-
import {
|
|
4
|
-
import { buildEntriesFromListResponse, buildWritePayload, normalizeContentPayload, } from '../editor-utils.js';
|
|
4
|
+
import { buildWritePayload, normalizeContentPayload } from '../editor-utils.js';
|
|
5
5
|
import { isDataOnlyFormat } from '../../utils/format.js';
|
|
6
|
+
import { getErrorMessage } from '../../utils/error.js';
|
|
6
7
|
import { useApiClient } from '../context/index.js';
|
|
8
|
+
import { entriesKey, fetchEntriesAndSchema } from './useEntriesData.js';
|
|
9
|
+
// Re-exported so existing imports of `listAllEntries` from this module keep
|
|
10
|
+
// working -- the implementation lives in useEntriesData.ts alongside the
|
|
11
|
+
// other fetch/key/type pieces useEntryManager shares with the SWR layer.
|
|
12
|
+
export { listAllEntries } from './useEntriesData.js';
|
|
7
13
|
/**
|
|
8
14
|
* Thrown by saveEntry when the API returns a non-200 response. Carries the
|
|
9
15
|
* HTTP status so callers can distinguish conflict (409) and validation
|
|
@@ -18,38 +24,13 @@ export class SaveApiError extends Error {
|
|
|
18
24
|
this.name = 'SaveApiError';
|
|
19
25
|
}
|
|
20
26
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* repeat across pages if content changes between requests.
|
|
29
|
-
*
|
|
30
|
-
* Exported for direct unit testing.
|
|
31
|
-
*/
|
|
32
|
-
export async function listAllEntries(apiClient, branch) {
|
|
33
|
-
const byPath = new Map();
|
|
34
|
-
let cursor;
|
|
35
|
-
for (let page = 0; page < MAX_ENTRY_PAGES; page++) {
|
|
36
|
-
const result = await apiClient.entries.list({
|
|
37
|
-
branch,
|
|
38
|
-
limit: String(ENTRIES_PAGE_LIMIT),
|
|
39
|
-
...(cursor !== undefined ? { cursor } : {}),
|
|
40
|
-
});
|
|
41
|
-
if (!result.ok || !result.data)
|
|
42
|
-
throw new Error(`Refresh failed: ${result.status}`);
|
|
43
|
-
const data = result.data;
|
|
44
|
-
for (const entry of data.entries)
|
|
45
|
-
byPath.set(entry.logicalPath, entry);
|
|
46
|
-
if (!data.pagination?.hasMore || !data.pagination.cursor) {
|
|
47
|
-
return { entries: [...byPath.values()], truncated: false };
|
|
48
|
-
}
|
|
49
|
-
cursor = data.pagination.cursor;
|
|
50
|
-
}
|
|
51
|
-
return { entries: [...byPath.values()], truncated: true };
|
|
52
|
-
}
|
|
27
|
+
// Module-level singletons for the derived-empty fallbacks. These must be
|
|
28
|
+
// referentially stable: `collectionByPath` and `currentEntry` memoize on them,
|
|
29
|
+
// and a fresh `[]` each render would invalidate both on every render while a
|
|
30
|
+
// branch's data is in flight. Never mutate them.
|
|
31
|
+
const EMPTY_ENTRIES = [];
|
|
32
|
+
const EMPTY_COLLECTIONS = [];
|
|
33
|
+
const EMPTY_SCHEMAS = [];
|
|
53
34
|
/**
|
|
54
35
|
* Custom hook for managing editor entries (CRUD operations).
|
|
55
36
|
*
|
|
@@ -81,15 +62,43 @@ export async function listAllEntries(apiClient, branch) {
|
|
|
81
62
|
*/
|
|
82
63
|
export function useEntryManager(options) {
|
|
83
64
|
const apiClient = useApiClient();
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
|
|
65
|
+
const { mutate: globalMutate } = useSWRConfig();
|
|
66
|
+
// The fetched view of ONE branch, committed as a single record stamped with
|
|
67
|
+
// the branch it came from. Everything below derives from it and falls back to
|
|
68
|
+
// empty whenever the stamp doesn't match the branch currently being shown, so
|
|
69
|
+
// another branch's content is unrenderable by construction.
|
|
70
|
+
//
|
|
71
|
+
// This replaced three independent mirrors (entries/collections/
|
|
72
|
+
// availableSchemas), which were only ever reset by a SUCCESSFUL commit. Every
|
|
73
|
+
// early return in the commit effect below therefore left the previous
|
|
74
|
+
// branch's data on screen: no cached data yet for the new branch (the common
|
|
75
|
+
// case -- any first visit to a branch, for the whole duration of its fetch),
|
|
76
|
+
// or a stale SWR slot. The editor then auto-selected one of those stale
|
|
77
|
+
// entries (see the selection effect below), and a save could file its OCC
|
|
78
|
+
// token under one contentId and look it up under another, silently skipping
|
|
79
|
+
// conflict detection -- `content-store.ts` only compares mtimes when
|
|
80
|
+
// `expectedVersion !== undefined`, so the write became a blind overwrite.
|
|
81
|
+
// Deriving from a stamped record fixes that structurally instead of relying
|
|
82
|
+
// on every code path remembering to clear.
|
|
83
|
+
const [view, setView] = useState(() => ({
|
|
84
|
+
branch: options.branchName,
|
|
85
|
+
entries: options.initialEntries,
|
|
86
|
+
collections: options.collections ?? [],
|
|
87
|
+
availableSchemas: [],
|
|
88
|
+
}));
|
|
89
|
+
const isCurrentBranchView = view.branch === options.branchName;
|
|
90
|
+
const entriesState = isCurrentBranchView ? view.entries : EMPTY_ENTRIES;
|
|
91
|
+
const collectionsState = isCurrentBranchView ? view.collections : EMPTY_COLLECTIONS;
|
|
92
|
+
const availableSchemas = isCurrentBranchView ? view.availableSchemas : EMPTY_SCHEMAS;
|
|
93
|
+
// Exposed as `setEntries` (see the return value). Merges rather than
|
|
94
|
+
// replaces -- a bare record write would wipe `collections`/
|
|
95
|
+
// `availableSchemas` -- and never grafts another branch's collections under
|
|
96
|
+
// the current branch's stamp.
|
|
97
|
+
const setEntries = (entries) => {
|
|
98
|
+
setView((prev) => prev.branch === options.branchName
|
|
99
|
+
? { ...prev, entries }
|
|
100
|
+
: { branch: options.branchName, entries, collections: [], availableSchemas: [] });
|
|
101
|
+
};
|
|
93
102
|
// Initialize with prop value or empty (URL sync happens in effect after mount)
|
|
94
103
|
const [selectedPath, setSelectedPath] = useState(options.initialSelectedId ?? '');
|
|
95
104
|
const [navigatorOpen, setNavigatorOpen] = useState(false);
|
|
@@ -104,11 +113,71 @@ export function useEntryManager(options) {
|
|
|
104
113
|
// ("modified by another editor") on save-after-switch, proven by e2e trace.
|
|
105
114
|
const entryVersionsRef = useRef(new Map());
|
|
106
115
|
const versionKey = (branch, contentId) => `${branch}:${contentId}`;
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
|
|
116
|
+
// PER-BRANCH monotonic tokens guarding every commit of the fetched
|
|
117
|
+
// `BranchView` record above, shared by BOTH the automatic SWR-backed load
|
|
118
|
+
// (below) and explicit `refreshEntries()` calls. Two maps, keyed by branch:
|
|
119
|
+
//
|
|
120
|
+
// - `claimed`: bumped the moment an attempt's request starts; the value is
|
|
121
|
+
// baked into that attempt's result tag.
|
|
122
|
+
// - `committed`: the tag seq currently REFLECTED IN STATE for that branch.
|
|
123
|
+
//
|
|
124
|
+
// The commit rule is `tag.seq >= committed(tag.branch)` -- "never move a
|
|
125
|
+
// branch's view backwards" -- NOT `tag.seq === claimed(tag.branch)`
|
|
126
|
+
// ("newest attempt wins"). The difference matters twice:
|
|
127
|
+
//
|
|
128
|
+
// 1. SWR replays a branch's CACHED tagged result when the user switches
|
|
129
|
+
// back to it, and the cached tag necessarily carries the seq claimed
|
|
130
|
+
// when that data was originally fetched. Under a newest-attempt rule
|
|
131
|
+
// (or a single GLOBAL counter, as originally shipped), any newer claim
|
|
132
|
+
// -- another branch's load with a global counter, or the switch-back's
|
|
133
|
+
// own revalidation with a per-branch one -- made the replayed,
|
|
134
|
+
// perfectly valid cache hit fail the check and never commit; when the
|
|
135
|
+
// switch back also landed inside SWR's dedupingInterval, no
|
|
136
|
+
// revalidation followed either, so the editor kept showing the
|
|
137
|
+
// PREVIOUS branch's entries under the new branch indefinitely. A
|
|
138
|
+
// replayed tag always passes the committed-seq rule (it was committed
|
|
139
|
+
// before, or is newer than what was).
|
|
140
|
+
// 2. On remount these refs reset to empty maps while SWR's cache (owned by
|
|
141
|
+
// the provider above this component) survives, so a replayed tag can
|
|
142
|
+
// carry a seq higher than anything this instance ever claimed -- still
|
|
143
|
+
// the newest data known for that branch, and still committable. Note the
|
|
144
|
+
// cache now belongs to `SWRProvider`'s own `provider` Map rather than
|
|
145
|
+
// SWR's module global, so "survives" means across remounts BELOW
|
|
146
|
+
// `CanopyEditor`; remounting `CanopyEditor` itself starts a fresh cache,
|
|
147
|
+
// which is the same empty-cache path as a first load.
|
|
148
|
+
//
|
|
149
|
+
// What the committed-seq rule gives up: when two same-branch attempts race
|
|
150
|
+
// and the OLDER response arrives second while the newer is still in
|
|
151
|
+
// flight, the older commits transiently and the newer overwrites it on
|
|
152
|
+
// settle (a sub-second flash of slightly-stale data, converging to the
|
|
153
|
+
// newest). A response older than what's already displayed is still
|
|
154
|
+
// rejected outright. Cross-branch bleed is prevented separately: every
|
|
155
|
+
// commit site checks the tag's branch against options.branchName at
|
|
156
|
+
// settle time.
|
|
157
|
+
const refreshSeqRef = useRef({
|
|
158
|
+
claimed: new Map(),
|
|
159
|
+
committed: new Map(),
|
|
160
|
+
});
|
|
161
|
+
const claimRefreshSeq = (branch) => {
|
|
162
|
+
const next = (refreshSeqRef.current.claimed.get(branch) ?? 0) + 1;
|
|
163
|
+
refreshSeqRef.current.claimed.set(branch, next);
|
|
164
|
+
return next;
|
|
165
|
+
};
|
|
166
|
+
const committedRefreshSeq = (branch) => refreshSeqRef.current.committed.get(branch) ?? 0;
|
|
167
|
+
// The branch currently shown, readable at SETTLE time from async closures
|
|
168
|
+
// that captured an older render's `options` (refreshEntries below runs
|
|
169
|
+
// across renders; its captured options.branchName goes stale the moment
|
|
170
|
+
// the user switches mid-flight, which is exactly when the check matters).
|
|
171
|
+
const currentBranchRef = useRef(options.branchName);
|
|
172
|
+
currentBranchRef.current = options.branchName;
|
|
173
|
+
const recordCommittedRefreshSeq = (branch, seq) => {
|
|
174
|
+
refreshSeqRef.current.committed.set(branch, seq);
|
|
175
|
+
// A commit also implies any future claim must outrank this tag, so a
|
|
176
|
+
// replayed high-seq tag (remount case above) keeps ordering coherent.
|
|
177
|
+
if ((refreshSeqRef.current.claimed.get(branch) ?? 0) < seq) {
|
|
178
|
+
refreshSeqRef.current.claimed.set(branch, seq);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
112
181
|
// Entry create modal state
|
|
113
182
|
const [createModalOpen, setCreateModalOpen] = useState(false);
|
|
114
183
|
const [createModalCollection, setCreateModalCollection] = useState(null);
|
|
@@ -204,49 +273,35 @@ export function useEntryManager(options) {
|
|
|
204
273
|
}
|
|
205
274
|
return normalizeContentPayload(result.data);
|
|
206
275
|
};
|
|
276
|
+
// Explicit reload: always issues a fresh, independent fetch (never
|
|
277
|
+
// deduped/coalesced against an in-flight automatic load) so callers that
|
|
278
|
+
// just mutated content (save, create, rename, schema change) are
|
|
279
|
+
// guaranteed to see their own write reflected. Seq-guarded per the
|
|
280
|
+
// refreshSeqRef doc comment above; also warms the SWR cache for `branch`
|
|
281
|
+
// so a later automatic re-fetch of the same key (e.g. switching away and
|
|
282
|
+
// back) can reuse it instead of refetching.
|
|
207
283
|
const refreshEntries = async (branch = options.branchName) => {
|
|
208
284
|
if (!branch)
|
|
209
285
|
return [];
|
|
210
|
-
const seq =
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
throw new Error(`Schema fetch failed: ${schemaResult.status}`);
|
|
215
|
-
}
|
|
216
|
-
// Hydrate wire flatSchema: resolve schemaRef → schema from entrySchemas dict
|
|
217
|
-
const { entrySchemas } = schemaResult.data;
|
|
218
|
-
const hydratedFlatSchema = schemaResult.data.flatSchema.map((item) => item.type === 'entry-type' ? { ...item, schema: entrySchemas[item.schemaRef] ?? [] } : item);
|
|
219
|
-
// Build editor collections from hydrated flatSchema
|
|
220
|
-
// Dynamic import: lazy-load heavier editor config; only needed after API data arrives
|
|
221
|
-
const { buildEditorCollections } = await import('../editor-config.js');
|
|
222
|
-
const collections = buildEditorCollections(hydratedFlatSchema);
|
|
223
|
-
// Fetch ALL entries, following the pagination cursor
|
|
224
|
-
const { entries: allEntries, truncated } = await listAllEntries(apiClient, branch);
|
|
225
|
-
if (truncated) {
|
|
226
|
-
console.warn(`Entry list truncated at ${MAX_ENTRY_PAGES * ENTRIES_PAGE_LIMIT} entries for branch "${branch}"`);
|
|
227
|
-
notifications.show({
|
|
228
|
-
title: 'Entry list truncated',
|
|
229
|
-
message: `Showing the first ${(MAX_ENTRY_PAGES * ENTRIES_PAGE_LIMIT).toLocaleString()} entries.`,
|
|
230
|
-
color: 'yellow',
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
// Build entries with resolved schemas from flatSchema
|
|
234
|
-
const refreshed = buildEntriesFromListResponse({
|
|
235
|
-
response: {
|
|
236
|
-
entries: allEntries,
|
|
237
|
-
pagination: { hasMore: false, limit: ENTRIES_PAGE_LIMIT },
|
|
238
|
-
},
|
|
239
|
-
branchName: branch,
|
|
240
|
-
resolvePreviewSrc: (entry) => options.resolvePreviewSrc(entry) ?? '',
|
|
241
|
-
contentRoot: options.contentRoot || 'content',
|
|
242
|
-
flatSchema: hydratedFlatSchema,
|
|
286
|
+
const seq = claimRefreshSeq(branch);
|
|
287
|
+
const fetched = await fetchEntriesAndSchema(apiClient, branch, {
|
|
288
|
+
resolvePreviewSrc: options.resolvePreviewSrc,
|
|
289
|
+
contentRoot: options.contentRoot,
|
|
243
290
|
});
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
291
|
+
if (seq >= committedRefreshSeq(branch)) {
|
|
292
|
+
// Warm the SWR cache for this branch (it's this branch's own slot, so
|
|
293
|
+
// a later switch back can replay it), but only commit component state
|
|
294
|
+
// when the user is still ON this branch at settle time -- with
|
|
295
|
+
// per-branch seqs, a branch switch no longer advances the old
|
|
296
|
+
// branch's counter, so this check is what stops a late refresh of the
|
|
297
|
+
// switched-away branch from overwriting the new branch's view.
|
|
298
|
+
void globalMutate(entriesKey(branch), { fetched, seq, branch }, { revalidate: false });
|
|
299
|
+
if (branch === currentBranchRef.current) {
|
|
300
|
+
recordCommittedRefreshSeq(branch, seq);
|
|
301
|
+
setView({ branch, ...fetched });
|
|
302
|
+
}
|
|
248
303
|
}
|
|
249
|
-
return
|
|
304
|
+
return fetched.entries;
|
|
250
305
|
};
|
|
251
306
|
/**
|
|
252
307
|
* Open the create entry modal for the specified collection
|
|
@@ -355,39 +410,125 @@ export function useEntryManager(options) {
|
|
|
355
410
|
options.setBusy(false);
|
|
356
411
|
}
|
|
357
412
|
};
|
|
358
|
-
// Clear selection
|
|
413
|
+
// Clear selection when branch changes (reactive pattern). Data loading
|
|
414
|
+
// itself is handled below by the SWR-backed fetch -- this effect only
|
|
415
|
+
// owns the "clear stale selection" side effect.
|
|
359
416
|
useEffect(() => {
|
|
360
|
-
if (options.branchName)
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
// Refresh entries for new branch. Guard the cleanup with a per-branch-load
|
|
375
|
-
// token: on a rapid A→B switch where A resolves after B starts, A's `.finally`
|
|
376
|
-
// must not clear the loading flags while B is still in flight (which would
|
|
377
|
-
// reintroduce the very flash entriesInitializing exists to prevent).
|
|
378
|
-
const loadSeq = ++branchLoadSeqRef.current;
|
|
379
|
-
options.setBusy(true);
|
|
380
|
-
setEntriesInitializing(true);
|
|
381
|
-
refreshEntries(options.branchName)
|
|
382
|
-
.catch(console.error)
|
|
383
|
-
.finally(() => {
|
|
384
|
-
if (loadSeq !== branchLoadSeqRef.current)
|
|
385
|
-
return;
|
|
386
|
-
options.setBusy(false);
|
|
387
|
-
setEntriesInitializing(false);
|
|
388
|
-
});
|
|
417
|
+
if (!options.branchName)
|
|
418
|
+
return;
|
|
419
|
+
// On initial mount, preserve the initial selection from URL
|
|
420
|
+
// On subsequent branch changes, clear selection
|
|
421
|
+
if (isInitialMount.current) {
|
|
422
|
+
isInitialMount.current = false;
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
setSelectedPath('');
|
|
426
|
+
// Bound version-map growth across switches. Correctness no longer
|
|
427
|
+
// depends on this clear: tokens are keyed by `${branch}:${contentId}`
|
|
428
|
+
// (see entryVersionsRef), so a late response from the previous branch
|
|
429
|
+
// can't poison the new branch's saves even if it lands after this.
|
|
430
|
+
entryVersionsRef.current.clear();
|
|
389
431
|
}
|
|
390
432
|
}, [options.branchName]);
|
|
433
|
+
// Automatic schema + entries load, keyed per branch. SWR dedupes
|
|
434
|
+
// concurrent mounts of the same key (e.g. React Strict Mode's double
|
|
435
|
+
// effect invoke) into a single request. `entriesSwrKey` is null when
|
|
436
|
+
// there's no branch yet, which pauses fetching entirely.
|
|
437
|
+
//
|
|
438
|
+
// The fetcher tags its result with a `refreshSeqRef` token the moment the
|
|
439
|
+
// underlying request actually starts, so this automatic load and any
|
|
440
|
+
// explicit `refreshEntries()` call race-guard against EACH OTHER through
|
|
441
|
+
// the same shared counter (see the doc comment on refreshSeqRef above) --
|
|
442
|
+
// not just against other automatic loads.
|
|
443
|
+
const entriesSwrKey = options.branchName ? entriesKey(options.branchName) : null;
|
|
444
|
+
const { data: taggedEntries, error: entriesError, isLoading: entriesIsLoading, isValidating: entriesIsValidating, } = useSWR(entriesSwrKey, () => {
|
|
445
|
+
// Claim the seq token synchronously, the instant the underlying request
|
|
446
|
+
// actually starts -- matching how the explicit refreshEntries() path
|
|
447
|
+
// claims it (before its first await) -- so races between the two are
|
|
448
|
+
// ordered by when each attempt STARTED, not by unrelated differences in
|
|
449
|
+
// how many microtask hops SWR's own dispatch machinery adds before the
|
|
450
|
+
// fetcher body runs.
|
|
451
|
+
const branch = options.branchName;
|
|
452
|
+
const seq = claimRefreshSeq(branch);
|
|
453
|
+
return fetchEntriesAndSchema(apiClient, branch, {
|
|
454
|
+
resolvePreviewSrc: options.resolvePreviewSrc,
|
|
455
|
+
contentRoot: options.contentRoot,
|
|
456
|
+
}).then((fetched) => ({ fetched, seq, branch }));
|
|
457
|
+
});
|
|
458
|
+
// Commit the current branch's tagged data -- both fresh settles AND SWR
|
|
459
|
+
// cache replays on a switch back to a previously visited branch (the
|
|
460
|
+
// effect re-runs on options.branchName so the replayed tag, whose object
|
|
461
|
+
// identity didn't change, still gets (re)committed). The seq comparison is
|
|
462
|
+
// the per-branch committed-seq rule -- see refreshSeqRef's doc comment for
|
|
463
|
+
// why it is not "newest claim wins" and why a global counter broke cached
|
|
464
|
+
// replays. The branch check keeps a tag from ever committing under a
|
|
465
|
+
// different branch's view.
|
|
466
|
+
useEffect(() => {
|
|
467
|
+
if (!taggedEntries)
|
|
468
|
+
return;
|
|
469
|
+
if (taggedEntries.branch !== options.branchName)
|
|
470
|
+
return;
|
|
471
|
+
if (taggedEntries.seq < committedRefreshSeq(taggedEntries.branch)) {
|
|
472
|
+
// The cached tag for the CURRENT branch is older than what this
|
|
473
|
+
// instance already displayed for it (e.g. a slow automatic load's
|
|
474
|
+
// settle overwrote the SWR slot after a newer explicit refresh
|
|
475
|
+
// committed). State already shows newer data, so don't regress it --
|
|
476
|
+
// but the SWR slot is stale now, so ask for a revalidation; inside
|
|
477
|
+
// the dedupingInterval nothing else would refresh this key.
|
|
478
|
+
void globalMutate(entriesKey(taggedEntries.branch));
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
recordCommittedRefreshSeq(taggedEntries.branch, taggedEntries.seq);
|
|
482
|
+
setView({ branch: taggedEntries.branch, ...taggedEntries.fetched });
|
|
483
|
+
// Deps: only the tag and the current branch matter; the seq helpers and
|
|
484
|
+
// globalMutate are stable. (This file is plain .ts, so the
|
|
485
|
+
// react-hooks/exhaustive-deps rule isn't active here anyway -- same note
|
|
486
|
+
// as useCommentSystem.ts.)
|
|
487
|
+
}, [taggedEntries, options.branchName]);
|
|
488
|
+
// Mirrors the automatic load's in-flight state onto the shared busy flag.
|
|
489
|
+
// Explicit refreshEntries() calls intentionally do NOT toggle this (they
|
|
490
|
+
// never did, pre-SWR) -- callers that need a busy indicator around an
|
|
491
|
+
// explicit refresh (e.g. renameEntry) already bracket setBusy themselves.
|
|
492
|
+
useEffect(() => {
|
|
493
|
+
options.setBusy(entriesIsValidating);
|
|
494
|
+
}, [entriesIsValidating, options.setBusy]);
|
|
495
|
+
// True while the current branch's entries are not yet on screen. Lets the empty editor pane
|
|
496
|
+
// show "Loading…" instead of briefly flashing "Select an item…". Each branch has its own SWR
|
|
497
|
+
// cache slot, so this is naturally per-branch.
|
|
498
|
+
//
|
|
499
|
+
// `!isCurrentBranchView` is part of the condition, not just `isLoading`: SWR reports
|
|
500
|
+
// `isLoading: false` whenever ANY cached data exists for the key, and the committed record
|
|
501
|
+
// can also lag a settled fetch by a render. Without it there would be a window that is
|
|
502
|
+
// simultaneously "showing nothing" and "not loading".
|
|
503
|
+
//
|
|
504
|
+
// `!entriesError` is what keeps that window from becoming permanent. The provider sets
|
|
505
|
+
// `shouldRetryOnError: false`, so a failed load never resolves on its own: the stamp would
|
|
506
|
+
// never match, and the pane would sit at "Loading content…" forever with no retry
|
|
507
|
+
// affordance. On error we fall through to the normal empty state, and the effect below
|
|
508
|
+
// says what happened.
|
|
509
|
+
const entriesInitializing = Boolean(options.branchName) && !entriesError && (entriesIsLoading || !isCurrentBranchView);
|
|
510
|
+
// Surface a failed automatic load. The pre-SWR code showed a notification and logged once
|
|
511
|
+
// per failure; the SWR migration dropped that, and since `shouldRetryOnError` is false the
|
|
512
|
+
// failure is terminal until something else revalidates the key -- so without this the editor
|
|
513
|
+
// would just show an empty content tree with no explanation. Keyed by branch (switching
|
|
514
|
+
// branches can report a fresh failure) and cleared whenever there's no error, so returning
|
|
515
|
+
// to a branch that fails again still reports.
|
|
516
|
+
const notifiedErrorBranchRef = useRef(null);
|
|
517
|
+
useEffect(() => {
|
|
518
|
+
if (!entriesError || !options.branchName) {
|
|
519
|
+
notifiedErrorBranchRef.current = null;
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
if (notifiedErrorBranchRef.current === options.branchName)
|
|
523
|
+
return;
|
|
524
|
+
notifiedErrorBranchRef.current = options.branchName;
|
|
525
|
+
console.error(entriesError);
|
|
526
|
+
notifications.show({
|
|
527
|
+
title: 'Could not load content',
|
|
528
|
+
message: getErrorMessage(entriesError),
|
|
529
|
+
color: 'red',
|
|
530
|
+
});
|
|
531
|
+
}, [entriesError, options.branchName]);
|
|
391
532
|
// Validate selected entry when entries change
|
|
392
533
|
useEffect(() => {
|
|
393
534
|
// Skip validation if entries haven't loaded yet
|
|
@@ -428,9 +569,10 @@ export function useEntryManager(options) {
|
|
|
428
569
|
selectedPath,
|
|
429
570
|
setSelectedPath,
|
|
430
571
|
entries: entriesState,
|
|
431
|
-
setEntries
|
|
572
|
+
setEntries,
|
|
432
573
|
collections: collectionsState,
|
|
433
574
|
currentEntry,
|
|
575
|
+
availableSchemas,
|
|
434
576
|
entriesInitializing,
|
|
435
577
|
navigatorOpen,
|
|
436
578
|
setNavigatorOpen,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEntryManager.js","sourceRoot":"","sources":["../../../src/editor/hooks/useEntryManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useEntryManager.js","sourceRoot":"","sources":["../../../src/editor/hooks/useEntryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC5D,OAAO,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAKtD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAEpE,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YACkB,MAAc,EAC9B,aAAsB,EACN,WAA+B;QAE/C,KAAK,CAAC,aAAa,IAAI,gBAAgB,MAAM,EAAE,CAAC,CAAA;QAJhC,WAAM,GAAN,MAAM,CAAQ;QAEd,gBAAW,GAAX,WAAW,CAAoB;QAG/C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AA0DD,yEAAyE;AACzE,+EAA+E;AAC/E,6EAA6E;AAC7E,iDAAiD;AACjD,MAAM,aAAa,GAAkB,EAAE,CAAA;AACvC,MAAM,iBAAiB,GAAuB,EAAE,CAAA;AAChD,MAAM,aAAa,GAAa,EAAE,CAAA;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,eAAe,CAAC,OAA+B;IAC7D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAAA;IAC/C,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,4DAA4D;IAC5D,EAAE;IACF,gEAAgE;IAChE,8EAA8E;IAC9E,sEAAsE;IACtE,6EAA6E;IAC7E,6EAA6E;IAC7E,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,qEAAqE;IACrE,0EAA0E;IAC1E,4EAA4E;IAC5E,2CAA2C;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAa,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM,EAAE,OAAO,CAAC,UAAU;QAC1B,OAAO,EAAE,OAAO,CAAC,cAAc;QAC/B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,gBAAgB,EAAE,EAAE;KACrB,CAAC,CAAC,CAAA;IACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU,CAAA;IAC9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAA;IACvE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAA;IACnF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAA;IAEpF,qEAAqE;IACrE,4DAA4D;IAC5D,4EAA4E;IAC5E,8BAA8B;IAC9B,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAE,EAAE;QAC5C,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU;YAChC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;YACtB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CACnF,CAAA;IACH,CAAC,CAAA;IAED,+EAA+E;IAC/E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAS,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;IACzF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACtC,gEAAgE;IAChE,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,gBAAgB,GAAG,MAAM,CAAsB,IAAI,GAAG,EAAE,CAAC,CAAA;IAC/D,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAA;IAClF,mEAAmE;IACnE,0EAA0E;IAC1E,4EAA4E;IAC5E,EAAE;IACF,2EAA2E;IAC3E,0CAA0C;IAC1C,2EAA2E;IAC3E,EAAE;IACF,yEAAyE;IACzE,oEAAoE;IACpE,yDAAyD;IACzD,EAAE;IACF,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,0EAA0E;IAC1E,kEAAkE;IAClE,yEAAyE;IACzE,+DAA+D;IAC/D,kEAAkE;IAClE,oEAAoE;IACpE,yEAAyE;IACzE,yCAAyC;IACzC,2EAA2E;IAC3E,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,oEAAoE;IACpE,4EAA4E;IAC5E,yDAAyD;IACzD,EAAE;IACF,2EAA2E;IAC3E,oEAAoE;IACpE,uEAAuE;IACvE,uEAAuE;IACvE,mEAAmE;IACnE,uEAAuE;IACvE,oEAAoE;IACpE,eAAe;IACf,MAAM,aAAa,GAAG,MAAM,CAAmE;QAC7F,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,SAAS,EAAE,IAAI,GAAG,EAAE;KACrB,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;QACjD,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACjE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IACD,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAU,EAAE,CACrD,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClD,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACnD,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAA;IAC7C,MAAM,yBAAyB,GAAG,CAAC,MAAc,EAAE,GAAW,EAAQ,EAAE;QACtE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAChD,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAC3D,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC;IACH,CAAC,CAAA;IAED,2BAA2B;IAC3B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAA;IACjG,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAC7E,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErE,yEAAyE;IACzE,MAAM,eAAe,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IACnD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC1D,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiC,CAAA;QACpD,MAAM,IAAI,GAAG,CAAC,WAA+B,EAAE,EAAE;YAC/C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAClB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACf,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QACD,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACtB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEtB,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EACvD,CAAC,YAAY,EAAE,YAAY,CAAC,CAC7B,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EAAE,KAAkB,EAAE,EAAE;QAC7C,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QACD,qEAAqE;QACrE,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAA;QACxC,uEAAuE;QACvE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAA;QACxF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;YAC1C,MAAM,EAAE,aAAa;YACrB,IAAI;SACL,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,0CAA0C;QAC1C,IAAI,KAAK,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/F,CAAC;QACD,OAAO,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EAAE,KAAkB,EAAE,KAAgB,EAAE,EAAE;QAC/D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC/C,sEAAsE;QACtE,uEAAuE;QACvE,oBAAoB;QACpB,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAA;QACxC,uEAAuE;QACvE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAA;QACxF,MAAM,WAAW,GAAyD;YACxE,MAAM,EAAE,aAAa;YACrB,IAAI;SACL,CAAA;QACD,IAAI,KAAK,CAAC,SAAS;YAAE,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QAC5D,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS;YACrC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1E,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,SAAS,GAAqB;YAClC,GAAI,OAAuC;YAC3C,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACpE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;QACvF,kDAAkD;QAClD,IAAI,KAAK,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/F,CAAC;QACD,sFAAsF;QACtF,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAA;QAC1D,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,aAAa,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,qBAAqB;gBAC5B,0EAA0E;gBAC1E,wEAAwE;gBACxE,OAAO,EAAE,kBAAkB;qBACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CACzE;qBACA,IAAI,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,KAAK;gBAChB,eAAe,EAAE,IAAI;aACtB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,mEAAmE;IACnE,yEAAyE;IACzE,iEAAiE;IACjE,mEAAmE;IACnE,yEAAyE;IACzE,yEAAyE;IACzE,4CAA4C;IAC5C,MAAM,cAAc,GAAG,KAAK,EAAE,SAAiB,OAAO,CAAC,UAAU,EAA0B,EAAE;QAC3F,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QACtB,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE;YAC7D,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAA;QACF,IAAI,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,sEAAsE;YACtE,sEAAsE;YACtE,+DAA+D;YAC/D,8DAA8D;YAC9D,sEAAsE;YACtE,+DAA+D;YAC/D,KAAK,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;YACtF,IAAI,MAAM,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBACxC,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACtC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAA;IACxB,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,iBAAiB,GAAG,KAAK,EAAE,cAA2B,EAAE,CAAU,EAAE,EAAE;QAC1E,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,OAAM;QACR,CAAC;QAED,wBAAwB,CAAC,GAAG,CAAC,CAAA;QAC7B,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACzB,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,uBAAuB,GAAG,KAAK,EAAE,IAAY,EAAE,aAAqB,EAAE,EAAE;QAC5E,IAAI,CAAC,qBAAqB;YAAE,OAAM;QAElC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC5B,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAEzB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;YAC9F,MAAM,MAAM,GAAG,YAAY,EAAE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAA;YAEnE,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;gBACtC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAyB,EAAE,IAAI,EAAE,EAAE,EAAE;gBACjD,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;YAElC,uEAAuE;YACvE,MAAM,IAAI,GAAG,GAAG,qBAAqB,CAAC,IAAI,IAAI,IAAI,EAAE,CAAA;YACpD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAC1C;gBACE,MAAM,EAAE,OAAO,CAAC,UAAU;gBAC1B,IAAI;gBACJ,SAAS,EAAE,aAAa;aACzB,EACD,OAAsC,CACvC,CAAA;YAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,MAAM,EAAE,CAAA;gBACrF,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC3B,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,cAAc,EAAE,CAAA;YACxC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAEpE,kDAAkD;YAClD,2EAA2E;YAC3E,2EAA2E;YAC3E,kEAAkE;YAClE,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,qBAAqB,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAC1E,CAAA;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CACV,+DAA+D;oBAC7D,cAAc,qBAAqB,CAAC,IAAI,SAAS,IAAI,EAAE,CAC1D,CAAA;YACH,CAAC;YACD,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACzB,wBAAwB,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;YACzE,mBAAmB,CAAC,YAAY,CAAC,CAAA;QACnC,CAAC;gBAAS,CAAC;YACT,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACzB,wBAAwB,CAAC,IAAI,CAAC,CAAA;QAC9B,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACzB,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,OAAe,EAAiB,EAAE;QACzE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,CAChD;gBACE,MAAM,EAAE,OAAO,CAAC,UAAU;gBAC1B,IAAI;aACL,EACD,EAAE,OAAO,EAAE,CACZ,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,MAAM,EAAE,CAAA;gBACrF,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC3B,CAAC;YAED,sEAAsE;YACtE,IAAI,YAAY,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtC,CAAC;YAED,uCAAuC;YACvC,MAAM,cAAc,EAAE,CAAA;YACtB,aAAa,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,4BAA4B;gBACrC,KAAK,EAAE,OAAO;aACf,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;YACzE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;YAC3D,MAAM,GAAG,CAAA;QACX,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;IAED,uEAAuE;IACvE,sEAAsE;IACtE,gDAAgD;IAChD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAM;QAC/B,4DAA4D;QAC5D,gDAAgD;QAChD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,cAAc,CAAC,OAAO,GAAG,KAAK,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,EAAE,CAAC,CAAA;YACnB,kEAAkE;YAClE,sEAAsE;YACtE,sEAAsE;YACtE,mEAAmE;YACnE,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QAClC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;IAExB,iEAAiE;IACjE,qEAAqE;IACrE,qEAAqE;IACrE,yDAAyD;IACzD,EAAE;IACF,0EAA0E;IAC1E,qEAAqE;IACrE,yEAAyE;IACzE,0EAA0E;IAC1E,0CAA0C;IAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAChF,MAAM,EACJ,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,mBAAmB,GAClC,GAAG,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE;QAC7B,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,wEAAwE;QACxE,uEAAuE;QACvE,qBAAqB;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAA;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE;YAC9C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,wEAAwE;IACxE,qEAAqE;IACrE,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,qEAAqE;IACrE,2BAA2B;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa;YAAE,OAAM;QAC1B,IAAI,aAAa,CAAC,MAAM,KAAK,OAAO,CAAC,UAAU;YAAE,OAAM;QACvD,IAAI,aAAa,CAAC,GAAG,GAAG,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,gEAAgE;YAChE,kEAAkE;YAClE,+DAA+D;YAC/D,qEAAqE;YACrE,mEAAmE;YACnE,4DAA4D;YAC5D,KAAK,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QACD,yBAAyB,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;QAClE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACnE,wEAAwE;QACxE,2DAA2D;QAC3D,yEAAyE;QACzE,2BAA2B;IAC7B,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;IAEvC,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAE1C,4FAA4F;IAC5F,6FAA6F;IAC7F,+CAA+C;IAC/C,EAAE;IACF,qFAAqF;IACrF,2FAA2F;IAC3F,uFAAuF;IACvF,sDAAsD;IACtD,EAAE;IACF,uFAAuF;IACvF,2FAA2F;IAC3F,kFAAkF;IAClF,uFAAuF;IACvF,sBAAsB;IACtB,MAAM,mBAAmB,GACvB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAE5F,0FAA0F;IAC1F,2FAA2F;IAC3F,6FAA6F;IAC7F,wFAAwF;IACxF,2FAA2F;IAC3F,8CAA8C;IAC9C,MAAM,sBAAsB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACzC,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAA;YACrC,OAAM;QACR,CAAC;QACD,IAAI,sBAAsB,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU;YAAE,OAAM;QACjE,sBAAsB,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAA;QACnD,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC3B,aAAa,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC;YACtC,KAAK,EAAE,KAAK;SACb,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;IAEtC,8CAA8C;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,gDAAgD;QAChD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAErC,kEAAkE;QAClE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAA;YAC/B,mEAAmE;YACnE,IAAI,eAAe,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5F,eAAe,CAAC,eAAe,CAAC,OAAQ,CAAC,CAAA;gBACzC,OAAM;YACR,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;YAAE,OAAM;QAE7D,2BAA2B;QAC3B,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhC,uEAAuE;IACvE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAM;QACzC,oDAAoD;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO;YAAE,OAAM;QACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,OAAO;QACL,YAAY;QACZ,eAAe;QACf,OAAO,EAAE,YAAY;QACrB,UAAU;QACV,WAAW,EAAE,gBAAgB;QAC7B,YAAY;QACZ,gBAAgB;QAChB,mBAAmB;QACnB,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,iBAAiB;QACjB,WAAW;QACX,SAAS;QACT,SAAS;QACT,gBAAgB,EAAE,gBAAgB;QAClC,eAAe;QACf,qBAAqB;QACrB,gBAAgB;QAChB,mBAAmB;QACnB,uBAAuB;QACvB,gBAAgB;KACjB,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PathPermission } from '../../config';
|
|
2
|
-
import type {
|
|
2
|
+
import type { PermissionGroupOption } from '../../auth/types';
|
|
3
3
|
export interface UsePermissionManagerOptions {
|
|
4
4
|
/**
|
|
5
5
|
* Whether the permission manager is currently open.
|
|
@@ -11,7 +11,7 @@ export interface UsePermissionManagerReturn {
|
|
|
11
11
|
permissionsData: PathPermission[];
|
|
12
12
|
permissionsLoading: boolean;
|
|
13
13
|
handleSavePermissions: (permissions: PathPermission[]) => Promise<void>;
|
|
14
|
-
handleListGroups: () => Promise<
|
|
14
|
+
handleListGroups: () => Promise<PermissionGroupOption[]>;
|
|
15
15
|
loadPermissions: () => Promise<void>;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePermissionManager.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/usePermissionManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"usePermissionManager.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/usePermissionManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAG7D,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,qBAAqB,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,gBAAgB,EAAE,MAAM,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAA;IACxD,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAiF5B"}
|
|
@@ -76,17 +76,19 @@ export function usePermissionManager(options) {
|
|
|
76
76
|
throw err;
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
|
+
// Propagates failures instead of returning [] (matching loadPermissions and
|
|
80
|
+
// handleSavePermissions above). The generated client RESOLVES with the error
|
|
81
|
+
// envelope rather than throwing, so swallowing `!result.ok` into an empty
|
|
82
|
+
// array left useGroupsAndUsers' .catch unfired and groupLoadError null --
|
|
83
|
+
// an unreadable groups.json rendered as a silently empty picker with no
|
|
84
|
+
// warning, which is the same failure class listGroupsHandler's deliberate
|
|
85
|
+
// 500 exists to prevent.
|
|
79
86
|
const handleListGroups = async () => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return [];
|
|
84
|
-
return result.data?.groups ?? [];
|
|
85
|
-
}
|
|
86
|
-
catch (err) {
|
|
87
|
-
console.error('Group list failed:', err);
|
|
88
|
-
return [];
|
|
87
|
+
const result = await apiClient.permissions.listGroups();
|
|
88
|
+
if (!result.ok) {
|
|
89
|
+
throw new Error(result.error || 'Failed to load groups');
|
|
89
90
|
}
|
|
91
|
+
return result.data?.groups ?? [];
|
|
90
92
|
};
|
|
91
93
|
// Load permissions when permission manager opens
|
|
92
94
|
useEffect(() => {
|