@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.
@@ -1,18 +1,17 @@
1
-
2
- $ tsup src/index.ts --format cjs,esm --dts --sourcemap
3
- CLI Building entry: src/index.ts
4
- CLI Using tsconfig: tsconfig.json
5
- CLI tsup v8.3.5
6
- CLI Target: esnext
7
- CJS Build start
8
- ESM Build start
9
- DTS Build start
10
- ESM dist/index.mjs 528.72 KB
11
- ESM dist/index.mjs.map 1.43 MB
12
- ESM ⚡️ Build success in 1034ms
13
- CJS dist/index.js 537.21 KB
14
- CJS dist/index.js.map 1.43 MB
15
- CJS ⚡️ Build success in 1034ms
16
- DTS ⚡️ Build success in 9889ms
17
- DTS dist/index.d.ts 16.31 KB
18
- DTS dist/index.d.mts 16.31 KB
1
+ $ tsup src/index.ts --format cjs,esm --dts --sourcemap
2
+ CLI Building entry: src/index.ts
3
+ CLI Using tsconfig: tsconfig.json
4
+ CLI tsup v8.3.5
5
+ CLI Target: esnext
6
+ CJS Build start
7
+ ESM Build start
8
+ DTS Build start
9
+ CJS dist/index.js 540.31 KB
10
+ CJS dist/index.js.map 1.43 MB
11
+ CJS ⚡️ Build success in 6095ms
12
+ ESM dist/index.mjs 531.64 KB
13
+ ESM dist/index.mjs.map 1.43 MB
14
+ ESM ⚡️ Build success in 6096ms
15
+ DTS ⚡️ Build success in 75545ms
16
+ DTS dist/index.d.ts 17.73 KB
17
+ DTS dist/index.d.mts 17.73 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @noya-app/noya-api-client-react
2
2
 
3
+ ## 0.1.48
4
+
5
+ ### Patch Changes
6
+
7
+ - ef15878: Update packages
8
+ - Updated dependencies [ef15878]
9
+ - @noya-app/noya-api@0.1.48
10
+
3
11
  ## 0.1.47
4
12
 
5
13
  ### Patch Changes
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