@noya-app/noya-api-client-react 0.1.47 → 0.1.48
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/.turbo/turbo-build.log +17 -18
- package/CHANGELOG.md +8 -0
- package/dist/index.d.mts +44 -1
- package/dist/index.d.ts +44 -1
- package/dist/index.js +112 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +109 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/react/hooks.ts +166 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[34mCLI[39m
|
|
4
|
-
[34mCLI[39m
|
|
5
|
-
[34mCLI[39m
|
|
6
|
-
[
|
|
7
|
-
[
|
|
8
|
-
[
|
|
9
|
-
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[32mESM[39m
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
DTS dist/index.d.mts 16.31 KB
|
|
1
|
+
$ tsup src/index.ts --format cjs,esm --dts --sourcemap
|
|
2
|
+
[34mCLI[39m Building entry: src/index.ts
|
|
3
|
+
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
4
|
+
[34mCLI[39m tsup v8.3.5
|
|
5
|
+
[34mCLI[39m Target: esnext
|
|
6
|
+
[34mCJS[39m Build start
|
|
7
|
+
[34mESM[39m Build start
|
|
8
|
+
[34mDTS[39m Build start
|
|
9
|
+
[32mCJS[39m [1mdist/index.js [22m[32m540.31 KB[39m
|
|
10
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m1.43 MB[39m
|
|
11
|
+
[32mCJS[39m ⚡️ Build success in 6095ms
|
|
12
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m531.64 KB[39m
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m1.43 MB[39m
|
|
14
|
+
[32mESM[39m ⚡️ Build success in 6096ms
|
|
15
|
+
[32mDTS[39m ⚡️ Build success in 75545ms
|
|
16
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m17.73 KB[39m
|
|
17
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m17.73 KB[39m
|
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -396,6 +396,9 @@ declare function useNoyaWorkspaces(): {
|
|
|
396
396
|
};
|
|
397
397
|
role: "OWNER" | "ADMIN" | "MEMBER";
|
|
398
398
|
}[];
|
|
399
|
+
settings?: {
|
|
400
|
+
defaultFileWorkspaceAccess: "private" | "read" | "write";
|
|
401
|
+
} | null | undefined;
|
|
399
402
|
}[];
|
|
400
403
|
loading: boolean;
|
|
401
404
|
};
|
|
@@ -478,6 +481,46 @@ declare function useNoyaTemplates(): {
|
|
|
478
481
|
}[];
|
|
479
482
|
loading: boolean;
|
|
480
483
|
};
|
|
484
|
+
type WorkspaceRole = "OWNER" | "ADMIN" | "MEMBER";
|
|
485
|
+
type WorkspaceAccessInfo = {
|
|
486
|
+
isMember: boolean;
|
|
487
|
+
role: WorkspaceRole | null;
|
|
488
|
+
isOwner: boolean;
|
|
489
|
+
isAdmin: boolean;
|
|
490
|
+
workspaceId: string;
|
|
491
|
+
loading: boolean;
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* Get workspace membership and role information for the current user.
|
|
495
|
+
* Returns workspace access details including membership status and role.
|
|
496
|
+
*/
|
|
497
|
+
declare function useWorkspaceAccess(workspaceId: string): WorkspaceAccessInfo;
|
|
498
|
+
type FileAccessSource = "owner" | "workspace" | "public" | "none";
|
|
499
|
+
type FileAccessInfo = {
|
|
500
|
+
isOwner: boolean;
|
|
501
|
+
canView: boolean;
|
|
502
|
+
canEdit: boolean;
|
|
503
|
+
accessSource: FileAccessSource;
|
|
504
|
+
loading: boolean;
|
|
505
|
+
};
|
|
506
|
+
type FileWithAccess = {
|
|
507
|
+
user?: {
|
|
508
|
+
id: string;
|
|
509
|
+
} | null;
|
|
510
|
+
access?: NoyaAPI.FileAccess;
|
|
511
|
+
workspaceAccess?: NoyaAPI.FileAccess;
|
|
512
|
+
workspaceId?: string;
|
|
513
|
+
};
|
|
514
|
+
/**
|
|
515
|
+
* Get file access permissions for the current user.
|
|
516
|
+
* Considers ownership, workspace membership, and public access settings.
|
|
517
|
+
*/
|
|
518
|
+
declare function useFileAccess(file: FileWithAccess | null | undefined): FileAccessInfo;
|
|
519
|
+
declare function useIsFileOwner(file: {
|
|
520
|
+
user?: {
|
|
521
|
+
id: string;
|
|
522
|
+
} | null;
|
|
523
|
+
} | null | undefined): boolean;
|
|
481
524
|
|
|
482
525
|
type GetRowType<TTable extends Table<EntitySchema>> = Static<TTable["schema"]>;
|
|
483
526
|
type GetSelectConfig<TTable extends Table<EntitySchema>> = SelectConfig<GetRowType<TTable>[]>;
|
|
@@ -534,4 +577,4 @@ declare function useActivityEventsList<Config extends SelectConfig<ActivityEvent
|
|
|
534
577
|
}, config?: Config) => void;
|
|
535
578
|
};
|
|
536
579
|
|
|
537
|
-
export { NoyaAPIProvider, type WorkspaceMemberInfo, useActivityEventsList, useFileList, useFileListItem, useIsBeta, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaAssetsByFileVersionId, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaDeployments, useNoyaEmailLists, useNoyaMultiplayerRoomToken, useNoyaOwnedFileVersions, useNoyaPersonalAccessTokens, useNoyaSecrets, useNoyaSession, useNoyaSite, useNoyaSites, useNoyaTags, useNoyaTemplates, useNoyaTools, useNoyaUserData, useNoyaWorkspaceBilling, useNoyaWorkspaceInvitations, useNoyaWorkspaceMembers, useNoyaWorkspaces, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useResourcesList, useTable, useUser };
|
|
580
|
+
export { type FileAccessInfo, type FileAccessSource, NoyaAPIProvider, type WorkspaceAccessInfo, type WorkspaceMemberInfo, type WorkspaceRole, useActivityEventsList, useFileAccess, useFileList, useFileListItem, useIsBeta, useIsFileOwner, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaAssetsByFileVersionId, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaDeployments, useNoyaEmailLists, useNoyaMultiplayerRoomToken, useNoyaOwnedFileVersions, useNoyaPersonalAccessTokens, useNoyaSecrets, useNoyaSession, useNoyaSite, useNoyaSites, useNoyaTags, useNoyaTemplates, useNoyaTools, useNoyaUserData, useNoyaWorkspaceBilling, useNoyaWorkspaceInvitations, useNoyaWorkspaceMembers, useNoyaWorkspaces, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useResourcesList, useTable, useUser, useWorkspaceAccess };
|
package/dist/index.d.ts
CHANGED
|
@@ -396,6 +396,9 @@ declare function useNoyaWorkspaces(): {
|
|
|
396
396
|
};
|
|
397
397
|
role: "OWNER" | "ADMIN" | "MEMBER";
|
|
398
398
|
}[];
|
|
399
|
+
settings?: {
|
|
400
|
+
defaultFileWorkspaceAccess: "private" | "read" | "write";
|
|
401
|
+
} | null | undefined;
|
|
399
402
|
}[];
|
|
400
403
|
loading: boolean;
|
|
401
404
|
};
|
|
@@ -478,6 +481,46 @@ declare function useNoyaTemplates(): {
|
|
|
478
481
|
}[];
|
|
479
482
|
loading: boolean;
|
|
480
483
|
};
|
|
484
|
+
type WorkspaceRole = "OWNER" | "ADMIN" | "MEMBER";
|
|
485
|
+
type WorkspaceAccessInfo = {
|
|
486
|
+
isMember: boolean;
|
|
487
|
+
role: WorkspaceRole | null;
|
|
488
|
+
isOwner: boolean;
|
|
489
|
+
isAdmin: boolean;
|
|
490
|
+
workspaceId: string;
|
|
491
|
+
loading: boolean;
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* Get workspace membership and role information for the current user.
|
|
495
|
+
* Returns workspace access details including membership status and role.
|
|
496
|
+
*/
|
|
497
|
+
declare function useWorkspaceAccess(workspaceId: string): WorkspaceAccessInfo;
|
|
498
|
+
type FileAccessSource = "owner" | "workspace" | "public" | "none";
|
|
499
|
+
type FileAccessInfo = {
|
|
500
|
+
isOwner: boolean;
|
|
501
|
+
canView: boolean;
|
|
502
|
+
canEdit: boolean;
|
|
503
|
+
accessSource: FileAccessSource;
|
|
504
|
+
loading: boolean;
|
|
505
|
+
};
|
|
506
|
+
type FileWithAccess = {
|
|
507
|
+
user?: {
|
|
508
|
+
id: string;
|
|
509
|
+
} | null;
|
|
510
|
+
access?: NoyaAPI.FileAccess;
|
|
511
|
+
workspaceAccess?: NoyaAPI.FileAccess;
|
|
512
|
+
workspaceId?: string;
|
|
513
|
+
};
|
|
514
|
+
/**
|
|
515
|
+
* Get file access permissions for the current user.
|
|
516
|
+
* Considers ownership, workspace membership, and public access settings.
|
|
517
|
+
*/
|
|
518
|
+
declare function useFileAccess(file: FileWithAccess | null | undefined): FileAccessInfo;
|
|
519
|
+
declare function useIsFileOwner(file: {
|
|
520
|
+
user?: {
|
|
521
|
+
id: string;
|
|
522
|
+
} | null;
|
|
523
|
+
} | null | undefined): boolean;
|
|
481
524
|
|
|
482
525
|
type GetRowType<TTable extends Table<EntitySchema>> = Static<TTable["schema"]>;
|
|
483
526
|
type GetSelectConfig<TTable extends Table<EntitySchema>> = SelectConfig<GetRowType<TTable>[]>;
|
|
@@ -534,4 +577,4 @@ declare function useActivityEventsList<Config extends SelectConfig<ActivityEvent
|
|
|
534
577
|
}, config?: Config) => void;
|
|
535
578
|
};
|
|
536
579
|
|
|
537
|
-
export { NoyaAPIProvider, type WorkspaceMemberInfo, useActivityEventsList, useFileList, useFileListItem, useIsBeta, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaAssetsByFileVersionId, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaDeployments, useNoyaEmailLists, useNoyaMultiplayerRoomToken, useNoyaOwnedFileVersions, useNoyaPersonalAccessTokens, useNoyaSecrets, useNoyaSession, useNoyaSite, useNoyaSites, useNoyaTags, useNoyaTemplates, useNoyaTools, useNoyaUserData, useNoyaWorkspaceBilling, useNoyaWorkspaceInvitations, useNoyaWorkspaceMembers, useNoyaWorkspaces, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useResourcesList, useTable, useUser };
|
|
580
|
+
export { type FileAccessInfo, type FileAccessSource, NoyaAPIProvider, type WorkspaceAccessInfo, type WorkspaceMemberInfo, type WorkspaceRole, useActivityEventsList, useFileAccess, useFileList, useFileListItem, useIsBeta, useIsFileOwner, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaAssetsByFileVersionId, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaDeployments, useNoyaEmailLists, useNoyaMultiplayerRoomToken, useNoyaOwnedFileVersions, useNoyaPersonalAccessTokens, useNoyaSecrets, useNoyaSession, useNoyaSite, useNoyaSites, useNoyaTags, useNoyaTemplates, useNoyaTools, useNoyaUserData, useNoyaWorkspaceBilling, useNoyaWorkspaceInvitations, useNoyaWorkspaceMembers, useNoyaWorkspaces, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useResourcesList, useTable, useUser, useWorkspaceAccess };
|
package/dist/index.js
CHANGED
|
@@ -2266,9 +2266,11 @@ var src_exports = {};
|
|
|
2266
2266
|
__export(src_exports, {
|
|
2267
2267
|
NoyaAPIProvider: () => NoyaAPIProvider,
|
|
2268
2268
|
useActivityEventsList: () => useActivityEventsList,
|
|
2269
|
+
useFileAccess: () => useFileAccess,
|
|
2269
2270
|
useFileList: () => useFileList,
|
|
2270
2271
|
useFileListItem: () => useFileListItem,
|
|
2271
2272
|
useIsBeta: () => useIsBeta,
|
|
2273
|
+
useIsFileOwner: () => useIsFileOwner,
|
|
2272
2274
|
useMetadata: () => useMetadata,
|
|
2273
2275
|
useNetworkRequests: () => useNetworkRequests,
|
|
2274
2276
|
useNoyaAssets: () => useNoyaAssets,
|
|
@@ -2302,7 +2304,8 @@ __export(src_exports, {
|
|
|
2302
2304
|
useOptionalNoyaUserData: () => useOptionalNoyaUserData,
|
|
2303
2305
|
useResourcesList: () => useResourcesList,
|
|
2304
2306
|
useTable: () => useTable,
|
|
2305
|
-
useUser: () => useUser
|
|
2307
|
+
useUser: () => useUser,
|
|
2308
|
+
useWorkspaceAccess: () => useWorkspaceAccess
|
|
2306
2309
|
});
|
|
2307
2310
|
module.exports = __toCommonJS(src_exports);
|
|
2308
2311
|
__reExport(src_exports, require("@noya-app/noya-api"), module.exports);
|
|
@@ -2585,6 +2588,111 @@ function useNoyaTemplates() {
|
|
|
2585
2588
|
loading: loading === "fetching"
|
|
2586
2589
|
};
|
|
2587
2590
|
}
|
|
2591
|
+
function useWorkspaceAccess(workspaceId) {
|
|
2592
|
+
const session = useNoyaSession();
|
|
2593
|
+
const { workspaces, loading } = useNoyaWorkspaces();
|
|
2594
|
+
return (0, import_react3.useMemo)(() => {
|
|
2595
|
+
const userId = session?.user?.id;
|
|
2596
|
+
const workspace = workspaces.find((w) => w.id === workspaceId);
|
|
2597
|
+
if (!workspace || !userId) {
|
|
2598
|
+
return {
|
|
2599
|
+
isMember: false,
|
|
2600
|
+
role: null,
|
|
2601
|
+
isOwner: false,
|
|
2602
|
+
isAdmin: false,
|
|
2603
|
+
workspaceId,
|
|
2604
|
+
loading
|
|
2605
|
+
};
|
|
2606
|
+
}
|
|
2607
|
+
const member = workspace.members.find((m) => m.userId === userId);
|
|
2608
|
+
const role = member?.role ?? null;
|
|
2609
|
+
return {
|
|
2610
|
+
isMember: !!member,
|
|
2611
|
+
role,
|
|
2612
|
+
isOwner: role === "OWNER",
|
|
2613
|
+
isAdmin: role === "OWNER" || role === "ADMIN",
|
|
2614
|
+
workspaceId,
|
|
2615
|
+
loading
|
|
2616
|
+
};
|
|
2617
|
+
}, [session?.user?.id, workspaces, workspaceId, loading]);
|
|
2618
|
+
}
|
|
2619
|
+
function useFileAccess(file) {
|
|
2620
|
+
const session = useNoyaSession();
|
|
2621
|
+
const { workspaces, loading: workspacesLoading } = useNoyaWorkspaces();
|
|
2622
|
+
return (0, import_react3.useMemo)(() => {
|
|
2623
|
+
const userId = session?.user?.id;
|
|
2624
|
+
const noAccess = {
|
|
2625
|
+
isOwner: false,
|
|
2626
|
+
canView: false,
|
|
2627
|
+
canEdit: false,
|
|
2628
|
+
accessSource: "none",
|
|
2629
|
+
loading: workspacesLoading
|
|
2630
|
+
};
|
|
2631
|
+
if (!file) return noAccess;
|
|
2632
|
+
const isOwner = !!(userId && file.user?.id === userId);
|
|
2633
|
+
if (isOwner) {
|
|
2634
|
+
return {
|
|
2635
|
+
isOwner: true,
|
|
2636
|
+
canView: true,
|
|
2637
|
+
canEdit: true,
|
|
2638
|
+
accessSource: "owner",
|
|
2639
|
+
loading: false
|
|
2640
|
+
};
|
|
2641
|
+
}
|
|
2642
|
+
if (file.workspaceId && userId) {
|
|
2643
|
+
const workspace = workspaces.find((w) => w.id === file.workspaceId);
|
|
2644
|
+
const isMember = workspace?.members.some((m) => m.userId === userId);
|
|
2645
|
+
if (isMember) {
|
|
2646
|
+
const workspaceAccess = file.workspaceAccess ?? "private";
|
|
2647
|
+
if (workspaceAccess === "write") {
|
|
2648
|
+
return {
|
|
2649
|
+
isOwner: false,
|
|
2650
|
+
canView: true,
|
|
2651
|
+
canEdit: true,
|
|
2652
|
+
accessSource: "workspace",
|
|
2653
|
+
loading: false
|
|
2654
|
+
};
|
|
2655
|
+
}
|
|
2656
|
+
if (workspaceAccess === "read") {
|
|
2657
|
+
return {
|
|
2658
|
+
isOwner: false,
|
|
2659
|
+
canView: true,
|
|
2660
|
+
canEdit: false,
|
|
2661
|
+
accessSource: "workspace",
|
|
2662
|
+
loading: false
|
|
2663
|
+
};
|
|
2664
|
+
}
|
|
2665
|
+
}
|
|
2666
|
+
}
|
|
2667
|
+
const publicAccess = file.access ?? "private";
|
|
2668
|
+
if (publicAccess === "write") {
|
|
2669
|
+
return {
|
|
2670
|
+
isOwner: false,
|
|
2671
|
+
canView: true,
|
|
2672
|
+
canEdit: true,
|
|
2673
|
+
accessSource: "public",
|
|
2674
|
+
loading: false
|
|
2675
|
+
};
|
|
2676
|
+
}
|
|
2677
|
+
if (publicAccess === "read") {
|
|
2678
|
+
return {
|
|
2679
|
+
isOwner: false,
|
|
2680
|
+
canView: true,
|
|
2681
|
+
canEdit: false,
|
|
2682
|
+
accessSource: "public",
|
|
2683
|
+
loading: false
|
|
2684
|
+
};
|
|
2685
|
+
}
|
|
2686
|
+
return noAccess;
|
|
2687
|
+
}, [session?.user?.id, file, workspaces, workspacesLoading]);
|
|
2688
|
+
}
|
|
2689
|
+
function useIsFileOwner(file) {
|
|
2690
|
+
const session = useNoyaSession();
|
|
2691
|
+
return (0, import_react3.useMemo)(() => {
|
|
2692
|
+
if (!file || !session?.user?.id) return false;
|
|
2693
|
+
return file.user?.id === session.user.id;
|
|
2694
|
+
}, [file, session?.user?.id]);
|
|
2695
|
+
}
|
|
2588
2696
|
|
|
2589
2697
|
// ../../node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs
|
|
2590
2698
|
var value_exports = {};
|
|
@@ -15281,9 +15389,11 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
15281
15389
|
0 && (module.exports = {
|
|
15282
15390
|
NoyaAPIProvider,
|
|
15283
15391
|
useActivityEventsList,
|
|
15392
|
+
useFileAccess,
|
|
15284
15393
|
useFileList,
|
|
15285
15394
|
useFileListItem,
|
|
15286
15395
|
useIsBeta,
|
|
15396
|
+
useIsFileOwner,
|
|
15287
15397
|
useMetadata,
|
|
15288
15398
|
useNetworkRequests,
|
|
15289
15399
|
useNoyaAssets,
|
|
@@ -15318,6 +15428,7 @@ function useActivityEventsList(fileId, select, options = {}) {
|
|
|
15318
15428
|
useResourcesList,
|
|
15319
15429
|
useTable,
|
|
15320
15430
|
useUser,
|
|
15431
|
+
useWorkspaceAccess,
|
|
15321
15432
|
...require("@noya-app/noya-api")
|
|
15322
15433
|
});
|
|
15323
15434
|
//# sourceMappingURL=index.js.map
|