@m5kdev/frontend 0.21.9 → 0.25.0
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/_virtual/_rolldown/runtime.js +23 -0
- package/dist/src/index.d.mts +3 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.mjs +3 -1
- package/dist/src/modules/app/components/AppConfigProvider.d.mts +4 -0
- package/dist/src/modules/app/components/AppConfigProvider.d.mts.map +1 -1
- package/dist/src/modules/app/components/AppConfigProvider.d.ts +4 -0
- package/dist/src/modules/app/components/AppConfigProvider.d.ts.map +1 -1
- package/dist/src/modules/app/components/AppConfigProvider.js +1 -0
- package/dist/src/modules/app/components/AppConfigProvider.js.map +1 -1
- package/dist/src/modules/app/components/AppConfigProvider.mjs.map +1 -1
- package/dist/src/modules/app/components/AppTrpcQueryProvider.js +1 -0
- package/dist/src/modules/app/components/AppTrpcQueryProvider.js.map +1 -1
- package/dist/src/modules/app/hooks/useAppConfig.d.mts +5 -0
- package/dist/src/modules/app/hooks/useAppConfig.d.mts.map +1 -1
- package/dist/src/modules/app/hooks/useAppConfig.d.ts +5 -0
- package/dist/src/modules/app/hooks/useAppConfig.d.ts.map +1 -1
- package/dist/src/modules/app/hooks/useAppConfig.js +1 -0
- package/dist/src/modules/app/hooks/useAppConfig.js.map +1 -1
- package/dist/src/modules/app/hooks/useAppRoles.d.mts +8 -0
- package/dist/src/modules/app/hooks/useAppRoles.d.mts.map +1 -0
- package/dist/src/modules/app/hooks/useAppRoles.d.ts +8 -0
- package/dist/src/modules/app/hooks/useAppRoles.d.ts.map +1 -0
- package/dist/src/modules/app/hooks/useAppRoles.js +16 -0
- package/dist/src/modules/app/hooks/useAppRoles.js.map +1 -0
- package/dist/src/modules/app/hooks/useAppRoles.mjs +14 -0
- package/dist/src/modules/app/hooks/useAppRoles.mjs.map +1 -0
- package/dist/src/modules/app/hooks/useRoleLabel.d.mts +7 -0
- package/dist/src/modules/app/hooks/useRoleLabel.d.mts.map +1 -0
- package/dist/src/modules/app/hooks/useRoleLabel.d.ts +7 -0
- package/dist/src/modules/app/hooks/useRoleLabel.d.ts.map +1 -0
- package/dist/src/modules/app/hooks/useRoleLabel.js +23 -0
- package/dist/src/modules/app/hooks/useRoleLabel.js.map +1 -0
- package/dist/src/modules/app/hooks/useRoleLabel.mjs +21 -0
- package/dist/src/modules/app/hooks/useRoleLabel.mjs.map +1 -0
- package/dist/src/modules/app/utils/locale.d.mts +8 -0
- package/dist/src/modules/app/utils/locale.d.mts.map +1 -0
- package/dist/src/modules/app/utils/locale.d.ts +8 -0
- package/dist/src/modules/app/utils/locale.d.ts.map +1 -0
- package/dist/src/modules/app/utils/locale.js +20 -0
- package/dist/src/modules/app/utils/locale.js.map +1 -0
- package/dist/src/modules/app/utils/locale.mjs +16 -0
- package/dist/src/modules/app/utils/locale.mjs.map +1 -0
- package/dist/src/modules/auth/auth.client.d.mts +1643 -102
- package/dist/src/modules/auth/auth.client.d.mts.map +1 -1
- package/dist/src/modules/auth/auth.client.d.ts +1643 -102
- package/dist/src/modules/auth/auth.client.d.ts.map +1 -1
- package/dist/src/modules/auth/auth.client.js +7 -3
- package/dist/src/modules/auth/auth.client.js.map +1 -1
- package/dist/src/modules/auth/auth.client.mjs +6 -3
- package/dist/src/modules/auth/auth.client.mjs.map +1 -1
- package/dist/src/modules/auth/auth.context.js +1 -0
- package/dist/src/modules/auth/auth.context.js.map +1 -1
- package/dist/src/modules/auth/auth.lib.d.mts +4 -2103
- package/dist/src/modules/auth/auth.lib.d.mts.map +1 -1
- package/dist/src/modules/auth/auth.lib.d.ts +4 -2103
- package/dist/src/modules/auth/auth.lib.d.ts.map +1 -1
- package/dist/src/modules/auth/auth.lib.js.map +1 -1
- package/dist/src/modules/auth/auth.lib.mjs.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.d.mts +1 -1
- package/dist/src/modules/auth/components/AuthProvider.d.mts.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.d.ts +1 -1
- package/dist/src/modules/auth/components/AuthProvider.d.ts.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.js +4 -0
- package/dist/src/modules/auth/components/AuthProvider.js.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.mjs +3 -0
- package/dist/src/modules/auth/components/AuthProvider.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useAuth.js +1 -0
- package/dist/src/modules/auth/hooks/useAuth.js.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.mts +10 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.mts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.ts +10 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.ts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.js +1 -0
- package/dist/src/modules/auth/hooks/useAuthAdmin.js.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthClient.d.mts +2 -702
- package/dist/src/modules/auth/hooks/useAuthClient.d.mts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthClient.d.ts +2 -702
- package/dist/src/modules/auth/hooks/useAuthClient.d.ts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthClient.js +1 -0
- package/dist/src/modules/auth/hooks/useAuthClient.js.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthClient.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthLocale.d.mts +23 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.d.mts.map +1 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.d.ts +23 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.d.ts.map +1 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.js +25 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.js.map +1 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.mjs +23 -0
- package/dist/src/modules/auth/hooks/useAuthLocale.mjs.map +1 -0
- package/dist/src/modules/auth/hooks/useMemberInvite.js +2 -5
- package/dist/src/modules/auth/hooks/useMemberInvite.js.map +1 -1
- package/dist/src/modules/auth/hooks/useMemberInvite.mjs +1 -5
- package/dist/src/modules/auth/hooks/useMemberInvite.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useOrganizationAccess.d.mts +4 -3
- package/dist/src/modules/auth/hooks/useOrganizationAccess.d.mts.map +1 -1
- package/dist/src/modules/auth/hooks/useOrganizationAccess.d.ts +4 -3
- package/dist/src/modules/auth/hooks/useOrganizationAccess.d.ts.map +1 -1
- package/dist/src/modules/auth/hooks/useOrganizationAccess.js +8 -2
- package/dist/src/modules/auth/hooks/useOrganizationAccess.js.map +1 -1
- package/dist/src/modules/auth/hooks/useOrganizationAccess.mjs +7 -2
- package/dist/src/modules/auth/hooks/useOrganizationAccess.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useSession.js +1 -0
- package/dist/src/modules/auth/hooks/useSession.js.map +1 -1
- package/dist/src/modules/auth/hooks/useUserOrganizations.d.mts +2 -1
- package/dist/src/modules/auth/hooks/useUserOrganizations.d.ts +2 -1
- package/dist/src/modules/auth/hooks/useUserOrganizations.js +1 -0
- package/dist/src/modules/auth/hooks/useUserOrganizations.js.map +1 -1
- package/dist/src/modules/billing/components/BillingProvider.d.mts +1 -1
- package/dist/src/modules/billing/components/BillingProvider.d.mts.map +1 -1
- package/dist/src/modules/billing/components/BillingProvider.d.ts +1 -1
- package/dist/src/modules/billing/components/BillingProvider.d.ts.map +1 -1
- package/dist/src/modules/billing/components/BillingProvider.js +1 -0
- package/dist/src/modules/billing/components/BillingProvider.js.map +1 -1
- package/dist/src/modules/billing/hooks/useSubscription.js +1 -0
- package/dist/src/modules/billing/hooks/useSubscription.js.map +1 -1
- package/dist/src/modules/file/hooks/useS3DownloadUrl.js +1 -0
- package/dist/src/modules/file/hooks/useS3DownloadUrl.js.map +1 -1
- package/dist/src/modules/file/hooks/useS3Upload.js +1 -0
- package/dist/src/modules/file/hooks/useS3Upload.js.map +1 -1
- package/dist/src/modules/file/hooks/useUpload.js +1 -0
- package/dist/src/modules/file/hooks/useUpload.js.map +1 -1
- package/dist/src/modules/table/hooks/useQueryWithParams.js +1 -0
- package/dist/src/modules/table/hooks/useQueryWithParams.js.map +1 -1
- package/dist/src/modules/table/hooks/useTableQueryParams.js +1 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.js.map +1 -1
- package/dist/src/modules/table/queryParams.js +1 -0
- package/dist/src/modules/table/queryParams.js.map +1 -1
- package/dist/src/utils/date.js +1 -0
- package/dist/src/utils/date.js.map +1 -1
- package/package.json +19 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthClient.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAuthClient.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"mappings":";;;iBAKgB,aAAA,CAAA,GAAiB,aAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_auth_auth_lib = require("../auth.lib.js");
|
|
3
4
|
const require_src_modules_auth_auth_context = require("../auth.context.js");
|
|
4
5
|
let react = require("react");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthClient.js","names":["authProviderContext","getAuthClient"],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../auth.context\";\r\nimport { getAuthClient } from \"../auth.lib\";\r\n\r\nexport function useAuthClient() {\r\n return useContext(authProviderContext).authClient ?? getAuthClient();\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAuthClient.js","names":["authProviderContext","getAuthClient"],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../auth.context\";\r\nimport type { M5KAuthClient } from \"../auth.client\";\r\nimport { getAuthClient } from \"../auth.lib\";\r\n\r\nexport function useAuthClient(): M5KAuthClient {\r\n return useContext(authProviderContext).authClient ?? getAuthClient();\r\n}\r\n"],"mappings":";;;;;;AAKA,SAAgB,gBAA+B;AAC7C,SAAA,GAAA,MAAA,YAAkBA,sCAAAA,oBAAoB,CAAC,cAAcC,kCAAAA,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthClient.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../auth.context\";\r\nimport { getAuthClient } from \"../auth.lib\";\r\n\r\nexport function useAuthClient() {\r\n return useContext(authProviderContext).authClient ?? getAuthClient();\r\n}\r\n"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"useAuthClient.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../auth.context\";\r\nimport type { M5KAuthClient } from \"../auth.client\";\r\nimport { getAuthClient } from \"../auth.lib\";\r\n\r\nexport function useAuthClient(): M5KAuthClient {\r\n return useContext(authProviderContext).authClient ?? getAuthClient();\r\n}\r\n"],"mappings":";;;;AAKA,SAAgB,gBAA+B;AAC7C,QAAO,WAAW,oBAAoB,CAAC,cAAc,eAAe"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as _$_tanstack_react_query0 from "@tanstack/react-query";
|
|
2
|
+
import * as _$_trpc_client0 from "@trpc/client";
|
|
3
|
+
import * as _$_trpc_server0 from "@trpc/server";
|
|
4
|
+
|
|
5
|
+
//#region src/modules/auth/hooks/useAuthLocale.d.ts
|
|
6
|
+
declare function useAuthLocale(): {
|
|
7
|
+
locale: string | undefined;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
setLocale: _$_tanstack_react_query0.UseMutateFunction<string, _$_trpc_client0.TRPCClientErrorLike<{
|
|
10
|
+
input: {
|
|
11
|
+
locale: string;
|
|
12
|
+
};
|
|
13
|
+
output: string;
|
|
14
|
+
transformer: true;
|
|
15
|
+
errorShape: _$_trpc_server0.TRPCDefaultErrorShape;
|
|
16
|
+
}>, {
|
|
17
|
+
locale: string;
|
|
18
|
+
}, undefined>;
|
|
19
|
+
isSettingLocale: boolean;
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { useAuthLocale };
|
|
23
|
+
//# sourceMappingURL=useAuthLocale.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthLocale.d.mts","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthLocale.ts"],"mappings":";;;;;iBAKgB,aAAA,CAAA;;;;;;;;;gBAAa,eAAA,CAAA,qBAAA;EAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as _$_tanstack_react_query0 from "@tanstack/react-query";
|
|
2
|
+
import * as _$_trpc_client0 from "@trpc/client";
|
|
3
|
+
import * as _$_trpc_server0 from "@trpc/server";
|
|
4
|
+
|
|
5
|
+
//#region src/modules/auth/hooks/useAuthLocale.d.ts
|
|
6
|
+
declare function useAuthLocale(): {
|
|
7
|
+
locale: string | undefined;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
setLocale: _$_tanstack_react_query0.UseMutateFunction<string, _$_trpc_client0.TRPCClientErrorLike<{
|
|
10
|
+
input: {
|
|
11
|
+
locale: string;
|
|
12
|
+
};
|
|
13
|
+
output: string;
|
|
14
|
+
transformer: true;
|
|
15
|
+
errorShape: _$_trpc_server0.TRPCDefaultErrorShape;
|
|
16
|
+
}>, {
|
|
17
|
+
locale: string;
|
|
18
|
+
}, undefined>;
|
|
19
|
+
isSettingLocale: boolean;
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { useAuthLocale };
|
|
23
|
+
//# sourceMappingURL=useAuthLocale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthLocale.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthLocale.ts"],"mappings":";;;;;iBAKgB,aAAA,CAAA;;;;;;;;;gBAAa,eAAA,CAAA,qBAAA;EAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
3
|
+
const require_src_modules_app_hooks_useAppTrpc = require("../../app/hooks/useAppTrpc.js");
|
|
4
|
+
const require_src_modules_app_utils_locale = require("../../app/utils/locale.js");
|
|
5
|
+
let _tanstack_react_query = require("@tanstack/react-query");
|
|
6
|
+
//#region src/modules/auth/hooks/useAuthLocale.ts
|
|
7
|
+
function useAuthLocale() {
|
|
8
|
+
const trpc = require_src_modules_app_hooks_useAppTrpc.useAppTRPC();
|
|
9
|
+
const queryClient = (0, _tanstack_react_query.useQueryClient)();
|
|
10
|
+
const localeQuery = (0, _tanstack_react_query.useQuery)(trpc.auth.getLocale.queryOptions());
|
|
11
|
+
const setLocaleMutation = (0, _tanstack_react_query.useMutation)(trpc.auth.setLocale.mutationOptions({ onSuccess: async (locale) => {
|
|
12
|
+
await require_src_modules_app_utils_locale.syncI18nLocale(locale);
|
|
13
|
+
await queryClient.invalidateQueries({ queryKey: trpc.auth.getLocale.queryKey() });
|
|
14
|
+
} }));
|
|
15
|
+
return {
|
|
16
|
+
locale: localeQuery.data,
|
|
17
|
+
isLoading: localeQuery.isLoading,
|
|
18
|
+
setLocale: setLocaleMutation.mutate,
|
|
19
|
+
isSettingLocale: setLocaleMutation.isPending
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.useAuthLocale = useAuthLocale;
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=useAuthLocale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthLocale.js","names":["useAppTRPC","syncI18nLocale"],"sources":["../../../../../src/modules/auth/hooks/useAuthLocale.ts"],"sourcesContent":["import type { BackendTRPCRouter } from \"@m5kdev/backend/types\";\r\nimport { useAppTRPC } from \"../../app/hooks/useAppTrpc\";\r\nimport { syncI18nLocale } from \"../../app/utils/locale\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\n\r\nexport function useAuthLocale() {\r\n const trpc = useAppTRPC<BackendTRPCRouter>();\r\n const queryClient = useQueryClient();\r\n\r\n const localeQuery = useQuery(trpc.auth.getLocale.queryOptions());\r\n const setLocaleMutation = useMutation(\r\n trpc.auth.setLocale.mutationOptions({\r\n onSuccess: async (locale) => {\r\n await syncI18nLocale(locale);\r\n await queryClient.invalidateQueries({\r\n queryKey: trpc.auth.getLocale.queryKey(),\r\n });\r\n },\r\n })\r\n );\r\n\r\n return {\r\n locale: localeQuery.data,\r\n isLoading: localeQuery.isLoading,\r\n setLocale: setLocaleMutation.mutate,\r\n isSettingLocale: setLocaleMutation.isPending,\r\n };\r\n}\r\n"],"mappings":";;;;;;AAKA,SAAgB,gBAAgB;CAC9B,MAAM,OAAOA,yCAAAA,YAA+B;CAC5C,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CAEpC,MAAM,eAAA,GAAA,sBAAA,UAAuB,KAAK,KAAK,UAAU,cAAc,CAAC;CAChE,MAAM,qBAAA,GAAA,sBAAA,aACJ,KAAK,KAAK,UAAU,gBAAgB,EAClC,WAAW,OAAO,WAAW;AAC3B,QAAMC,qCAAAA,eAAe,OAAO;AAC5B,QAAM,YAAY,kBAAkB,EAClC,UAAU,KAAK,KAAK,UAAU,UAAU,EACzC,CAAC;IAEL,CAAC,CACH;AAED,QAAO;EACL,QAAQ,YAAY;EACpB,WAAW,YAAY;EACvB,WAAW,kBAAkB;EAC7B,iBAAiB,kBAAkB;EACpC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useAppTRPC } from "../../app/hooks/useAppTrpc.mjs";
|
|
2
|
+
import { syncI18nLocale } from "../../app/utils/locale.mjs";
|
|
3
|
+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
//#region src/modules/auth/hooks/useAuthLocale.ts
|
|
5
|
+
function useAuthLocale() {
|
|
6
|
+
const trpc = useAppTRPC();
|
|
7
|
+
const queryClient = useQueryClient();
|
|
8
|
+
const localeQuery = useQuery(trpc.auth.getLocale.queryOptions());
|
|
9
|
+
const setLocaleMutation = useMutation(trpc.auth.setLocale.mutationOptions({ onSuccess: async (locale) => {
|
|
10
|
+
await syncI18nLocale(locale);
|
|
11
|
+
await queryClient.invalidateQueries({ queryKey: trpc.auth.getLocale.queryKey() });
|
|
12
|
+
} }));
|
|
13
|
+
return {
|
|
14
|
+
locale: localeQuery.data,
|
|
15
|
+
isLoading: localeQuery.isLoading,
|
|
16
|
+
setLocale: setLocaleMutation.mutate,
|
|
17
|
+
isSettingLocale: setLocaleMutation.isPending
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { useAuthLocale };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=useAuthLocale.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthLocale.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthLocale.ts"],"sourcesContent":["import type { BackendTRPCRouter } from \"@m5kdev/backend/types\";\r\nimport { useAppTRPC } from \"../../app/hooks/useAppTrpc\";\r\nimport { syncI18nLocale } from \"../../app/utils/locale\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\n\r\nexport function useAuthLocale() {\r\n const trpc = useAppTRPC<BackendTRPCRouter>();\r\n const queryClient = useQueryClient();\r\n\r\n const localeQuery = useQuery(trpc.auth.getLocale.queryOptions());\r\n const setLocaleMutation = useMutation(\r\n trpc.auth.setLocale.mutationOptions({\r\n onSuccess: async (locale) => {\r\n await syncI18nLocale(locale);\r\n await queryClient.invalidateQueries({\r\n queryKey: trpc.auth.getLocale.queryKey(),\r\n });\r\n },\r\n })\r\n );\r\n\r\n return {\r\n locale: localeQuery.data,\r\n isLoading: localeQuery.isLoading,\r\n setLocale: setLocaleMutation.mutate,\r\n isSettingLocale: setLocaleMutation.isPending,\r\n };\r\n}\r\n"],"mappings":";;;;AAKA,SAAgB,gBAAgB;CAC9B,MAAM,OAAO,YAA+B;CAC5C,MAAM,cAAc,gBAAgB;CAEpC,MAAM,cAAc,SAAS,KAAK,KAAK,UAAU,cAAc,CAAC;CAChE,MAAM,oBAAoB,YACxB,KAAK,KAAK,UAAU,gBAAgB,EAClC,WAAW,OAAO,WAAW;AAC3B,QAAM,eAAe,OAAO;AAC5B,QAAM,YAAY,kBAAkB,EAClC,UAAU,KAAK,KAAK,UAAU,UAAU,EACzC,CAAC;IAEL,CAAC,CACH;AAED,QAAO;EACL,QAAQ,YAAY;EACpB,WAAW,YAAY;EACvB,WAAW,kBAAkB;EAC7B,iBAAiB,kBAAkB;EACpC"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_auth_hooks_useAuthClient = require("./useAuthClient.js");
|
|
3
4
|
const require_src_modules_auth_hooks_useOrganizationAccess = require("./useOrganizationAccess.js");
|
|
4
5
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
5
6
|
//#region src/modules/auth/hooks/useMemberInvite.ts
|
|
6
7
|
function useAuthMemberInvite(options, props) {
|
|
7
|
-
const { managerRoles = ["admin", "owner"], onInvalidateScopedQueries } = props ?? {};
|
|
8
8
|
const { onSuccess, ...rest } = options;
|
|
9
9
|
const authClient = require_src_modules_auth_hooks_useAuthClient.useAuthClient();
|
|
10
|
-
const { refreshOrganizationQueries, activeOrganizationId } = require_src_modules_auth_hooks_useOrganizationAccess.useOrganizationAccess({
|
|
11
|
-
managerRoles,
|
|
12
|
-
onInvalidateScopedQueries
|
|
13
|
-
});
|
|
10
|
+
const { refreshOrganizationQueries, activeOrganizationId } = require_src_modules_auth_hooks_useOrganizationAccess.useOrganizationAccess(props ?? {});
|
|
14
11
|
return (0, _tanstack_react_query.useMutation)({
|
|
15
12
|
mutationFn: async ({ email, role }) => {
|
|
16
13
|
const { error } = await authClient.organization.inviteMember({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemberInvite.js","names":["useAuthClient","useOrganizationAccess"],"sources":["../../../../../src/modules/auth/hooks/useMemberInvite.ts"],"sourcesContent":["import { type UseMutationOptions, useMutation } from \"@tanstack/react-query\";\r\nimport { useAuthClient } from \"./useAuthClient\";\r\nimport {\r\n type AuthOrganizationRole,\r\n type UseOrganizationAccessProps,\r\n useOrganizationAccess,\r\n} from \"./useOrganizationAccess\";\r\n\r\ntype Variables = { email: string; role: AuthOrganizationRole };\r\n\r\nexport function useAuthMemberInvite(\r\n options: Omit<UseMutationOptions<void, Error, Variables, unknown>, \"mutationFn\">,\r\n props?: UseOrganizationAccessProps\r\n): ReturnType<typeof useMutation<void, Error, Variables, unknown>> {\r\n const {
|
|
1
|
+
{"version":3,"file":"useMemberInvite.js","names":["useAuthClient","useOrganizationAccess"],"sources":["../../../../../src/modules/auth/hooks/useMemberInvite.ts"],"sourcesContent":["import { type UseMutationOptions, useMutation } from \"@tanstack/react-query\";\r\nimport { useAuthClient } from \"./useAuthClient\";\r\nimport {\r\n type AuthOrganizationRole,\r\n type UseOrganizationAccessProps,\r\n useOrganizationAccess,\r\n} from \"./useOrganizationAccess\";\r\n\r\ntype Variables = { email: string; role: AuthOrganizationRole };\r\n\r\nexport function useAuthMemberInvite(\r\n options: Omit<UseMutationOptions<void, Error, Variables, unknown>, \"mutationFn\">,\r\n props?: UseOrganizationAccessProps\r\n): ReturnType<typeof useMutation<void, Error, Variables, unknown>> {\r\n const { onSuccess, ...rest } = options;\r\n const authClient = useAuthClient();\r\n const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess(props ?? {});\r\n return useMutation({\r\n mutationFn: async ({ email, role }: { email: string; role: AuthOrganizationRole }) => {\r\n const { error } = await authClient.organization.inviteMember({\r\n organizationId: activeOrganizationId,\r\n email: email.trim(),\r\n role,\r\n } as Parameters<typeof authClient.organization.inviteMember>[0]);\r\n if (error) throw new Error(error.message);\r\n },\r\n\r\n onSuccess: async (data, variables, context) => {\r\n await refreshOrganizationQueries();\r\n await onSuccess?.(data, variables, context);\r\n },\r\n ...rest,\r\n });\r\n}\r\n"],"mappings":";;;;;;AAUA,SAAgB,oBACd,SACA,OACiE;CACjE,MAAM,EAAE,WAAW,GAAG,SAAS;CAC/B,MAAM,aAAaA,6CAAAA,eAAe;CAClC,MAAM,EAAE,4BAA4B,yBAAyBC,qDAAAA,sBAAsB,SAAS,EAAE,CAAC;AAC/F,SAAA,GAAA,sBAAA,aAAmB;EACjB,YAAY,OAAO,EAAE,OAAO,WAA0D;GACpF,MAAM,EAAE,UAAU,MAAM,WAAW,aAAa,aAAa;IAC3D,gBAAgB;IAChB,OAAO,MAAM,MAAM;IACnB;IACD,CAA+D;AAChE,OAAI,MAAO,OAAM,IAAI,MAAM,MAAM,QAAQ;;EAG3C,WAAW,OAAO,MAAM,WAAW,YAAY;AAC7C,SAAM,4BAA4B;AAClC,SAAM,YAAY,MAAM,WAAW,QAAQ;;EAE7C,GAAG;EACJ,CAAC"}
|
|
@@ -3,13 +3,9 @@ import { useOrganizationAccess } from "./useOrganizationAccess.mjs";
|
|
|
3
3
|
import { useMutation } from "@tanstack/react-query";
|
|
4
4
|
//#region src/modules/auth/hooks/useMemberInvite.ts
|
|
5
5
|
function useAuthMemberInvite(options, props) {
|
|
6
|
-
const { managerRoles = ["admin", "owner"], onInvalidateScopedQueries } = props ?? {};
|
|
7
6
|
const { onSuccess, ...rest } = options;
|
|
8
7
|
const authClient = useAuthClient();
|
|
9
|
-
const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess({
|
|
10
|
-
managerRoles,
|
|
11
|
-
onInvalidateScopedQueries
|
|
12
|
-
});
|
|
8
|
+
const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess(props ?? {});
|
|
13
9
|
return useMutation({
|
|
14
10
|
mutationFn: async ({ email, role }) => {
|
|
15
11
|
const { error } = await authClient.organization.inviteMember({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemberInvite.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useMemberInvite.ts"],"sourcesContent":["import { type UseMutationOptions, useMutation } from \"@tanstack/react-query\";\r\nimport { useAuthClient } from \"./useAuthClient\";\r\nimport {\r\n type AuthOrganizationRole,\r\n type UseOrganizationAccessProps,\r\n useOrganizationAccess,\r\n} from \"./useOrganizationAccess\";\r\n\r\ntype Variables = { email: string; role: AuthOrganizationRole };\r\n\r\nexport function useAuthMemberInvite(\r\n options: Omit<UseMutationOptions<void, Error, Variables, unknown>, \"mutationFn\">,\r\n props?: UseOrganizationAccessProps\r\n): ReturnType<typeof useMutation<void, Error, Variables, unknown>> {\r\n const {
|
|
1
|
+
{"version":3,"file":"useMemberInvite.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useMemberInvite.ts"],"sourcesContent":["import { type UseMutationOptions, useMutation } from \"@tanstack/react-query\";\r\nimport { useAuthClient } from \"./useAuthClient\";\r\nimport {\r\n type AuthOrganizationRole,\r\n type UseOrganizationAccessProps,\r\n useOrganizationAccess,\r\n} from \"./useOrganizationAccess\";\r\n\r\ntype Variables = { email: string; role: AuthOrganizationRole };\r\n\r\nexport function useAuthMemberInvite(\r\n options: Omit<UseMutationOptions<void, Error, Variables, unknown>, \"mutationFn\">,\r\n props?: UseOrganizationAccessProps\r\n): ReturnType<typeof useMutation<void, Error, Variables, unknown>> {\r\n const { onSuccess, ...rest } = options;\r\n const authClient = useAuthClient();\r\n const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess(props ?? {});\r\n return useMutation({\r\n mutationFn: async ({ email, role }: { email: string; role: AuthOrganizationRole }) => {\r\n const { error } = await authClient.organization.inviteMember({\r\n organizationId: activeOrganizationId,\r\n email: email.trim(),\r\n role,\r\n } as Parameters<typeof authClient.organization.inviteMember>[0]);\r\n if (error) throw new Error(error.message);\r\n },\r\n\r\n onSuccess: async (data, variables, context) => {\r\n await refreshOrganizationQueries();\r\n await onSuccess?.(data, variables, context);\r\n },\r\n ...rest,\r\n });\r\n}\r\n"],"mappings":";;;;AAUA,SAAgB,oBACd,SACA,OACiE;CACjE,MAAM,EAAE,WAAW,GAAG,SAAS;CAC/B,MAAM,aAAa,eAAe;CAClC,MAAM,EAAE,4BAA4B,yBAAyB,sBAAsB,SAAS,EAAE,CAAC;AAC/F,QAAO,YAAY;EACjB,YAAY,OAAO,EAAE,OAAO,WAA0D;GACpF,MAAM,EAAE,UAAU,MAAM,WAAW,aAAa,aAAa;IAC3D,gBAAgB;IAChB,OAAO,MAAM,MAAM;IACnB;IACD,CAA+D;AAChE,OAAI,MAAO,OAAM,IAAI,MAAM,MAAM,QAAQ;;EAG3C,WAAW,OAAO,MAAM,WAAW,YAAY;AAC7C,SAAM,4BAA4B;AAClC,SAAM,YAAY,MAAM,WAAW,QAAQ;;EAE7C,GAAG;EACJ,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
//#region src/modules/auth/hooks/useOrganizationAccess.d.ts
|
|
2
|
-
|
|
3
|
-
type AuthOrganizationRole = (typeof ORGANIZATION_ROLES)[number];
|
|
2
|
+
type AuthOrganizationRole = string;
|
|
4
3
|
interface UseOrganizationAccessProps {
|
|
5
4
|
managerRoles?: string[];
|
|
6
5
|
onInvalidateScopedQueries?: () => void | Promise<void>;
|
|
@@ -9,10 +8,12 @@ declare function useOrganizationAccess({
|
|
|
9
8
|
managerRoles,
|
|
10
9
|
onInvalidateScopedQueries
|
|
11
10
|
}: UseOrganizationAccessProps): {
|
|
12
|
-
activeOrganizationId:
|
|
11
|
+
activeOrganizationId: string;
|
|
13
12
|
activeOrganizationRole: string;
|
|
14
13
|
canManageOrganization: boolean;
|
|
15
14
|
refreshOrganizationQueries: () => Promise<void>;
|
|
15
|
+
assignableRoles: readonly string[];
|
|
16
|
+
organizationRoles: readonly string[];
|
|
16
17
|
};
|
|
17
18
|
//#endregion
|
|
18
19
|
export { AuthOrganizationRole, UseOrganizationAccessProps, useOrganizationAccess };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrganizationAccess.d.mts","names":[],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useOrganizationAccess.d.mts","names":[],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"mappings":";KAKY,oBAAA;AAAA,UAEK,0BAAA;EACf,YAAA;EACA,yBAAA,gBAAyC,OAAA;AAAA;AAAA,iBAG3B,qBAAA,CAAA;EACd,YAAA;EACA;AAAA,GACC,0BAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
//#region src/modules/auth/hooks/useOrganizationAccess.d.ts
|
|
2
|
-
|
|
3
|
-
type AuthOrganizationRole = (typeof ORGANIZATION_ROLES)[number];
|
|
2
|
+
type AuthOrganizationRole = string;
|
|
4
3
|
interface UseOrganizationAccessProps {
|
|
5
4
|
managerRoles?: string[];
|
|
6
5
|
onInvalidateScopedQueries?: () => void | Promise<void>;
|
|
@@ -9,10 +8,12 @@ declare function useOrganizationAccess({
|
|
|
9
8
|
managerRoles,
|
|
10
9
|
onInvalidateScopedQueries
|
|
11
10
|
}: UseOrganizationAccessProps): {
|
|
12
|
-
activeOrganizationId:
|
|
11
|
+
activeOrganizationId: string;
|
|
13
12
|
activeOrganizationRole: string;
|
|
14
13
|
canManageOrganization: boolean;
|
|
15
14
|
refreshOrganizationQueries: () => Promise<void>;
|
|
15
|
+
assignableRoles: readonly string[];
|
|
16
|
+
organizationRoles: readonly string[];
|
|
16
17
|
};
|
|
17
18
|
//#endregion
|
|
18
19
|
export { AuthOrganizationRole, UseOrganizationAccessProps, useOrganizationAccess };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrganizationAccess.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useOrganizationAccess.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"mappings":";KAKY,oBAAA;AAAA,UAEK,0BAAA;EACf,YAAA;EACA,yBAAA,gBAAyC,OAAA;AAAA;AAAA,iBAG3B,qBAAA,CAAA;EACd,YAAA;EACA;AAAA,GACC,0BAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
3
|
+
const require_src_modules_app_hooks_useAppRoles = require("../../app/hooks/useAppRoles.js");
|
|
2
4
|
const require_src_modules_auth_hooks_useSession = require("./useSession.js");
|
|
3
5
|
let react = require("react");
|
|
4
6
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
@@ -6,12 +8,14 @@ let _tanstack_react_query = require("@tanstack/react-query");
|
|
|
6
8
|
function useOrganizationAccess({ managerRoles, onInvalidateScopedQueries }) {
|
|
7
9
|
const { data: session, registerSession } = require_src_modules_auth_hooks_useSession.useSession();
|
|
8
10
|
const queryClient = (0, _tanstack_react_query.useQueryClient)();
|
|
11
|
+
const organizationRoles = require_src_modules_app_hooks_useAppRoles.useAppRoles("organization");
|
|
9
12
|
const activeOrganizationId = session?.session.activeOrganizationId ?? "";
|
|
10
13
|
const activeOrganizationRole = (session?.session)?.activeOrganizationRole ?? "";
|
|
14
|
+
const resolvedManagerRoles = managerRoles ?? organizationRoles.managerRoles;
|
|
11
15
|
return {
|
|
12
16
|
activeOrganizationId,
|
|
13
17
|
activeOrganizationRole,
|
|
14
|
-
canManageOrganization: (0, react.useMemo)(() => new Set(
|
|
18
|
+
canManageOrganization: (0, react.useMemo)(() => new Set(resolvedManagerRoles), [resolvedManagerRoles]).has(activeOrganizationRole),
|
|
15
19
|
refreshOrganizationQueries: (0, react.useCallback)(async () => {
|
|
16
20
|
await Promise.allSettled([
|
|
17
21
|
queryClient.invalidateQueries({ queryKey: ["auth-organization-list"] }),
|
|
@@ -27,7 +31,9 @@ function useOrganizationAccess({ managerRoles, onInvalidateScopedQueries }) {
|
|
|
27
31
|
onInvalidateScopedQueries,
|
|
28
32
|
queryClient,
|
|
29
33
|
registerSession
|
|
30
|
-
])
|
|
34
|
+
]),
|
|
35
|
+
assignableRoles: organizationRoles.assignableRoles,
|
|
36
|
+
organizationRoles: organizationRoles.roles
|
|
31
37
|
};
|
|
32
38
|
}
|
|
33
39
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrganizationAccess.js","names":["useSession"],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"sourcesContent":["import { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport {
|
|
1
|
+
{"version":3,"file":"useOrganizationAccess.js","names":["useSession","useAppRoles"],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"sourcesContent":["import { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { useAppRoles } from \"../../app/hooks/useAppRoles\";\r\nimport { useSession } from \"./useSession\";\r\n\r\nexport type AuthOrganizationRole = string;\r\n\r\nexport interface UseOrganizationAccessProps {\r\n managerRoles?: string[];\r\n onInvalidateScopedQueries?: () => void | Promise<void>;\r\n}\r\n\r\nexport function useOrganizationAccess({\r\n managerRoles,\r\n onInvalidateScopedQueries,\r\n}: UseOrganizationAccessProps) {\r\n const { data: session, registerSession } = useSession();\r\n const queryClient = useQueryClient();\r\n const organizationRoles = useAppRoles(\"organization\");\r\n\r\n const activeOrganizationId = session?.session.activeOrganizationId ?? \"\";\r\n const activeOrganizationRole =\r\n (session?.session as { activeOrganizationRole?: string } | undefined)?.activeOrganizationRole ??\r\n \"\";\r\n const resolvedManagerRoles = managerRoles ?? organizationRoles.managerRoles;\r\n const managerRoleSet = useMemo(() => new Set(resolvedManagerRoles), [resolvedManagerRoles]);\r\n const canManageOrganization = managerRoleSet.has(activeOrganizationRole);\r\n\r\n const refreshOrganizationQueries = useCallback(async () => {\r\n await Promise.allSettled([\r\n queryClient.invalidateQueries({ queryKey: [\"auth-organization-list\"] }),\r\n queryClient.invalidateQueries({\r\n queryKey: [\"auth-organization-details\", activeOrganizationId],\r\n }),\r\n queryClient.invalidateQueries({\r\n queryKey: [\"auth-organization-members\", activeOrganizationId],\r\n }),\r\n queryClient.invalidateQueries({\r\n queryKey: [\"auth-organization-invitations\", activeOrganizationId],\r\n }),\r\n ]);\r\n\r\n registerSession(() => {\r\n void onInvalidateScopedQueries?.();\r\n });\r\n }, [activeOrganizationId, onInvalidateScopedQueries, queryClient, registerSession]);\r\n\r\n return {\r\n activeOrganizationId,\r\n activeOrganizationRole,\r\n canManageOrganization,\r\n refreshOrganizationQueries,\r\n assignableRoles: organizationRoles.assignableRoles,\r\n organizationRoles: organizationRoles.roles,\r\n };\r\n}\r\n"],"mappings":";;;;;;;AAYA,SAAgB,sBAAsB,EACpC,cACA,6BAC6B;CAC7B,MAAM,EAAE,MAAM,SAAS,oBAAoBA,0CAAAA,YAAY;CACvD,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CACpC,MAAM,oBAAoBC,0CAAAA,YAAY,eAAe;CAErD,MAAM,uBAAuB,SAAS,QAAQ,wBAAwB;CACtE,MAAM,0BACH,SAAS,UAA6D,0BACvE;CACF,MAAM,uBAAuB,gBAAgB,kBAAkB;AAuB/D,QAAO;EACL;EACA;EACA,wBAAA,GAAA,MAAA,eAzBmC,IAAI,IAAI,qBAAqB,EAAE,CAAC,qBAAqB,CAAC,CAC9C,IAAI,uBAAuB;EAyBtE,6BAAA,GAAA,MAAA,aAvB6C,YAAY;AACzD,SAAM,QAAQ,WAAW;IACvB,YAAY,kBAAkB,EAAE,UAAU,CAAC,yBAAyB,EAAE,CAAC;IACvE,YAAY,kBAAkB,EAC5B,UAAU,CAAC,6BAA6B,qBAAqB,EAC9D,CAAC;IACF,YAAY,kBAAkB,EAC5B,UAAU,CAAC,6BAA6B,qBAAqB,EAC9D,CAAC;IACF,YAAY,kBAAkB,EAC5B,UAAU,CAAC,iCAAiC,qBAAqB,EAClE,CAAC;IACH,CAAC;AAEF,yBAAsB;AACf,iCAA6B;KAClC;KACD;GAAC;GAAsB;GAA2B;GAAa;GAAgB,CAAC;EAOjF,iBAAiB,kBAAkB;EACnC,mBAAmB,kBAAkB;EACtC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useAppRoles } from "../../app/hooks/useAppRoles.mjs";
|
|
1
2
|
import { useSession } from "./useSession.mjs";
|
|
2
3
|
import { useCallback, useMemo } from "react";
|
|
3
4
|
import { useQueryClient } from "@tanstack/react-query";
|
|
@@ -5,12 +6,14 @@ import { useQueryClient } from "@tanstack/react-query";
|
|
|
5
6
|
function useOrganizationAccess({ managerRoles, onInvalidateScopedQueries }) {
|
|
6
7
|
const { data: session, registerSession } = useSession();
|
|
7
8
|
const queryClient = useQueryClient();
|
|
9
|
+
const organizationRoles = useAppRoles("organization");
|
|
8
10
|
const activeOrganizationId = session?.session.activeOrganizationId ?? "";
|
|
9
11
|
const activeOrganizationRole = (session?.session)?.activeOrganizationRole ?? "";
|
|
12
|
+
const resolvedManagerRoles = managerRoles ?? organizationRoles.managerRoles;
|
|
10
13
|
return {
|
|
11
14
|
activeOrganizationId,
|
|
12
15
|
activeOrganizationRole,
|
|
13
|
-
canManageOrganization: useMemo(() => new Set(
|
|
16
|
+
canManageOrganization: useMemo(() => new Set(resolvedManagerRoles), [resolvedManagerRoles]).has(activeOrganizationRole),
|
|
14
17
|
refreshOrganizationQueries: useCallback(async () => {
|
|
15
18
|
await Promise.allSettled([
|
|
16
19
|
queryClient.invalidateQueries({ queryKey: ["auth-organization-list"] }),
|
|
@@ -26,7 +29,9 @@ function useOrganizationAccess({ managerRoles, onInvalidateScopedQueries }) {
|
|
|
26
29
|
onInvalidateScopedQueries,
|
|
27
30
|
queryClient,
|
|
28
31
|
registerSession
|
|
29
|
-
])
|
|
32
|
+
]),
|
|
33
|
+
assignableRoles: organizationRoles.assignableRoles,
|
|
34
|
+
organizationRoles: organizationRoles.roles
|
|
30
35
|
};
|
|
31
36
|
}
|
|
32
37
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrganizationAccess.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"sourcesContent":["import { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport {
|
|
1
|
+
{"version":3,"file":"useOrganizationAccess.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useOrganizationAccess.ts"],"sourcesContent":["import { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { useAppRoles } from \"../../app/hooks/useAppRoles\";\r\nimport { useSession } from \"./useSession\";\r\n\r\nexport type AuthOrganizationRole = string;\r\n\r\nexport interface UseOrganizationAccessProps {\r\n managerRoles?: string[];\r\n onInvalidateScopedQueries?: () => void | Promise<void>;\r\n}\r\n\r\nexport function useOrganizationAccess({\r\n managerRoles,\r\n onInvalidateScopedQueries,\r\n}: UseOrganizationAccessProps) {\r\n const { data: session, registerSession } = useSession();\r\n const queryClient = useQueryClient();\r\n const organizationRoles = useAppRoles(\"organization\");\r\n\r\n const activeOrganizationId = session?.session.activeOrganizationId ?? \"\";\r\n const activeOrganizationRole =\r\n (session?.session as { activeOrganizationRole?: string } | undefined)?.activeOrganizationRole ??\r\n \"\";\r\n const resolvedManagerRoles = managerRoles ?? organizationRoles.managerRoles;\r\n const managerRoleSet = useMemo(() => new Set(resolvedManagerRoles), [resolvedManagerRoles]);\r\n const canManageOrganization = managerRoleSet.has(activeOrganizationRole);\r\n\r\n const refreshOrganizationQueries = useCallback(async () => {\r\n await Promise.allSettled([\r\n queryClient.invalidateQueries({ queryKey: [\"auth-organization-list\"] }),\r\n queryClient.invalidateQueries({\r\n queryKey: [\"auth-organization-details\", activeOrganizationId],\r\n }),\r\n queryClient.invalidateQueries({\r\n queryKey: [\"auth-organization-members\", activeOrganizationId],\r\n }),\r\n queryClient.invalidateQueries({\r\n queryKey: [\"auth-organization-invitations\", activeOrganizationId],\r\n }),\r\n ]);\r\n\r\n registerSession(() => {\r\n void onInvalidateScopedQueries?.();\r\n });\r\n }, [activeOrganizationId, onInvalidateScopedQueries, queryClient, registerSession]);\r\n\r\n return {\r\n activeOrganizationId,\r\n activeOrganizationRole,\r\n canManageOrganization,\r\n refreshOrganizationQueries,\r\n assignableRoles: organizationRoles.assignableRoles,\r\n organizationRoles: organizationRoles.roles,\r\n };\r\n}\r\n"],"mappings":";;;;;AAYA,SAAgB,sBAAsB,EACpC,cACA,6BAC6B;CAC7B,MAAM,EAAE,MAAM,SAAS,oBAAoB,YAAY;CACvD,MAAM,cAAc,gBAAgB;CACpC,MAAM,oBAAoB,YAAY,eAAe;CAErD,MAAM,uBAAuB,SAAS,QAAQ,wBAAwB;CACtE,MAAM,0BACH,SAAS,UAA6D,0BACvE;CACF,MAAM,uBAAuB,gBAAgB,kBAAkB;AAuB/D,QAAO;EACL;EACA;EACA,uBAzBqB,cAAc,IAAI,IAAI,qBAAqB,EAAE,CAAC,qBAAqB,CAAC,CAC9C,IAAI,uBAAuB;EAyBtE,4BAvBiC,YAAY,YAAY;AACzD,SAAM,QAAQ,WAAW;IACvB,YAAY,kBAAkB,EAAE,UAAU,CAAC,yBAAyB,EAAE,CAAC;IACvE,YAAY,kBAAkB,EAC5B,UAAU,CAAC,6BAA6B,qBAAqB,EAC9D,CAAC;IACF,YAAY,kBAAkB,EAC5B,UAAU,CAAC,6BAA6B,qBAAqB,EAC9D,CAAC;IACF,YAAY,kBAAkB,EAC5B,UAAU,CAAC,iCAAiC,qBAAqB,EAClE,CAAC;IACH,CAAC;AAEF,yBAAsB;AACf,iCAA6B;KAClC;KACD;GAAC;GAAsB;GAA2B;GAAa;GAAgB,CAAC;EAOjF,iBAAiB,kBAAkB;EACnC,mBAAmB,kBAAkB;EACtC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_auth_auth_context = require("../auth.context.js");
|
|
3
4
|
let react = require("react");
|
|
4
5
|
//#region src/modules/auth/hooks/useSession.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.js","names":["authProviderContext"],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../auth.context\";\r\n\r\nexport function useSession() {\r\n const { authClient: _authClient, ...session } = useContext(authProviderContext);\r\n return session;\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSession.js","names":["authProviderContext"],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../auth.context\";\r\n\r\nexport function useSession() {\r\n const { authClient: _authClient, ...session } = useContext(authProviderContext);\r\n return session;\r\n}\r\n"],"mappings":";;;;;AAGA,SAAgB,aAAa;CAC3B,MAAM,EAAE,YAAY,aAAa,GAAG,aAAA,GAAA,MAAA,YAAuBA,sCAAAA,oBAAoB;AAC/E,QAAO"}
|
|
@@ -6,9 +6,10 @@ import * as _$_trpc_server0 from "@trpc/server";
|
|
|
6
6
|
declare const useUserOrganizations: () => _$_tanstack_react_query0.UseQueryResult<{
|
|
7
7
|
id: string;
|
|
8
8
|
name: string;
|
|
9
|
+
type: string | null;
|
|
9
10
|
createdAt: Date;
|
|
10
11
|
onboarding: number | null;
|
|
11
|
-
|
|
12
|
+
locale: string | null;
|
|
12
13
|
slug: string | null;
|
|
13
14
|
logo: string | null;
|
|
14
15
|
parentId: string | null;
|
|
@@ -6,9 +6,10 @@ import * as _$_trpc_server0 from "@trpc/server";
|
|
|
6
6
|
declare const useUserOrganizations: () => _$_tanstack_react_query0.UseQueryResult<{
|
|
7
7
|
id: string;
|
|
8
8
|
name: string;
|
|
9
|
+
type: string | null;
|
|
9
10
|
createdAt: Date;
|
|
10
11
|
onboarding: number | null;
|
|
11
|
-
|
|
12
|
+
locale: string | null;
|
|
12
13
|
slug: string | null;
|
|
13
14
|
logo: string | null;
|
|
14
15
|
parentId: string | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_app_hooks_useAppTrpc = require("../../app/hooks/useAppTrpc.js");
|
|
3
4
|
const require_src_modules_auth_hooks_useSession = require("./useSession.js");
|
|
4
5
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserOrganizations.js","names":["useAppTRPC","useSession"],"sources":["../../../../../src/modules/auth/hooks/useUserOrganizations.ts"],"sourcesContent":["import type { BackendTRPCRouter } from \"@m5kdev/backend/types\";\r\nimport { useSession } from \"./useSession\";\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport { useAppTRPC } from \"../../app/hooks/useAppTrpc\";\r\n\r\nexport const useUserOrganizations = () => {\r\n const trpc = useAppTRPC<BackendTRPCRouter>();\r\n const { data, isLoading } = useSession();\r\n return useQuery(\r\n trpc.auth.listUserOrganizations.queryOptions(undefined, {\r\n enabled: !isLoading && Boolean(data?.session.userId),\r\n })\r\n );\r\n};\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUserOrganizations.js","names":["useAppTRPC","useSession"],"sources":["../../../../../src/modules/auth/hooks/useUserOrganizations.ts"],"sourcesContent":["import type { BackendTRPCRouter } from \"@m5kdev/backend/types\";\r\nimport { useSession } from \"./useSession\";\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport { useAppTRPC } from \"../../app/hooks/useAppTrpc\";\r\n\r\nexport const useUserOrganizations = () => {\r\n const trpc = useAppTRPC<BackendTRPCRouter>();\r\n const { data, isLoading } = useSession();\r\n return useQuery(\r\n trpc.auth.listUserOrganizations.queryOptions(undefined, {\r\n enabled: !isLoading && Boolean(data?.session.userId),\r\n })\r\n );\r\n};\r\n"],"mappings":";;;;;;AAKA,MAAa,6BAA6B;CACxC,MAAM,OAAOA,yCAAAA,YAA+B;CAC5C,MAAM,EAAE,MAAM,cAAcC,0CAAAA,YAAY;AACxC,SAAA,GAAA,sBAAA,UACE,KAAK,KAAK,sBAAsB,aAAa,KAAA,GAAW,EACtD,SAAS,CAAC,aAAa,QAAQ,MAAM,QAAQ,OAAO,EACrD,CAAC,CACH"}
|
|
@@ -17,7 +17,7 @@ declare function BillingProvider({
|
|
|
17
17
|
loader?: React.ReactNode;
|
|
18
18
|
planPage: React.ReactNode;
|
|
19
19
|
skipPlanCheck?: boolean;
|
|
20
|
-
}): string | number | bigint | boolean |
|
|
20
|
+
}): string | number | bigint | boolean | Iterable<_$react.ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<_$react.ReactNode> | null | undefined> | _$react_jsx_runtime0.JSX.Element | null | undefined;
|
|
21
21
|
//#endregion
|
|
22
22
|
export { BillingProvider, billingProviderContext };
|
|
23
23
|
//# sourceMappingURL=BillingProvider.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BillingProvider.d.mts","names":[],"sources":["../../../../../src/modules/billing/components/BillingProvider.tsx"],"mappings":";;;;;cAMa,sBAAA,EAEQ,OAAA,CAFc,OAAA;;QAE3B,aAAA;AAAA;AAAA,iBAMQ,eAAA,CAAA;EACd,QAAA;EACA,MAAA;EACA,QAAA;EACA;AAAA;EAEA,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,aAAA;AAAA,yCACD,
|
|
1
|
+
{"version":3,"file":"BillingProvider.d.mts","names":[],"sources":["../../../../../src/modules/billing/components/BillingProvider.tsx"],"mappings":";;;;;cAMa,sBAAA,EAEQ,OAAA,CAFc,OAAA;;QAE3B,aAAA;AAAA;AAAA,iBAMQ,eAAA,CAAA;EACd,QAAA;EACA,MAAA;EACA,QAAA;EACA;AAAA;EAEA,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,aAAA;AAAA,yCACD,QAAA,CAF0B,OAAA,CAE1B,SAAA,IAAA,OAAA,sCAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,OAAA,CAAA,SAAA,wBAAA,oBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -17,7 +17,7 @@ declare function BillingProvider({
|
|
|
17
17
|
loader?: React.ReactNode;
|
|
18
18
|
planPage: React.ReactNode;
|
|
19
19
|
skipPlanCheck?: boolean;
|
|
20
|
-
}): string | number | bigint | boolean |
|
|
20
|
+
}): string | number | bigint | boolean | Iterable<_$react.ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<_$react.ReactNode> | null | undefined> | _$react_jsx_runtime0.JSX.Element | null | undefined;
|
|
21
21
|
//#endregion
|
|
22
22
|
export { BillingProvider, billingProviderContext };
|
|
23
23
|
//# sourceMappingURL=BillingProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BillingProvider.d.ts","names":[],"sources":["../../../../../src/modules/billing/components/BillingProvider.tsx"],"mappings":";;;;;cAMa,sBAAA,EAEQ,OAAA,CAFc,OAAA;;QAE3B,aAAA;AAAA;AAAA,iBAMQ,eAAA,CAAA;EACd,QAAA;EACA,MAAA;EACA,QAAA;EACA;AAAA;EAEA,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,aAAA;AAAA,yCACD,
|
|
1
|
+
{"version":3,"file":"BillingProvider.d.ts","names":[],"sources":["../../../../../src/modules/billing/components/BillingProvider.tsx"],"mappings":";;;;;cAMa,sBAAA,EAEQ,OAAA,CAFc,OAAA;;QAE3B,aAAA;AAAA;AAAA,iBAMQ,eAAA,CAAA;EACd,QAAA;EACA,MAAA;EACA,QAAA;EACA;AAAA;EAEA,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,MAAA,GAAS,KAAA,CAAM,SAAA;EACf,QAAA,EAAU,KAAA,CAAM,SAAA;EAChB,aAAA;AAAA,yCACD,QAAA,CAF0B,OAAA,CAE1B,SAAA,IAAA,OAAA,sCAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,mBAAA,OAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,OAAA,CAAA,SAAA,wBAAA,oBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_app_hooks_useAppTrpc = require("../../app/hooks/useAppTrpc.js");
|
|
3
4
|
let react = require("react");
|
|
4
5
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BillingProvider.js","names":["useAppTRPC"],"sources":["../../../../../src/modules/billing/components/BillingProvider.tsx"],"sourcesContent":["import type { BackendTRPCRouter } from \"@m5kdev/backend/types\";\r\nimport type { BillingSchema } from \"@m5kdev/commons/modules/billing/billing.schema\";\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport { createContext } from \"react\";\r\nimport { useAppTRPC } from \"../../app/hooks/useAppTrpc\";\r\n\r\nexport const billingProviderContext = createContext<{\r\n isLoading: boolean;\r\n data: BillingSchema | null;\r\n}>({\r\n isLoading: true,\r\n data: null,\r\n});\r\n\r\nexport function BillingProvider({\r\n children,\r\n loader,\r\n planPage,\r\n skipPlanCheck = false,\r\n}: {\r\n children: React.ReactNode;\r\n loader?: React.ReactNode;\r\n planPage: React.ReactNode;\r\n skipPlanCheck?: boolean;\r\n}) {\r\n const trpc = useAppTRPC<BackendTRPCRouter>();\r\n\r\n const { data: activeSubscription, isLoading } = useQuery(\r\n trpc.billing.getActiveSubscription.queryOptions(undefined, {\r\n staleTime: 1000 * 60 * 60 * 4, // 4 hours\r\n enabled: !skipPlanCheck,\r\n })\r\n );\r\n\r\n if (skipPlanCheck) {\r\n return (\r\n <billingProviderContext.Provider value={{ isLoading: false, data: null }}>\r\n {children}\r\n </billingProviderContext.Provider>\r\n );\r\n }\r\n\r\n // Show loading screen while checking subscription status\r\n if (isLoading) {\r\n return loader ? loader : \"Loading...\";\r\n }\r\n\r\n if (!activeSubscription) {\r\n return planPage;\r\n }\r\n\r\n return (\r\n <billingProviderContext.Provider value={{ isLoading, data: activeSubscription ?? null }}>\r\n {children}\r\n </billingProviderContext.Provider>\r\n );\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BillingProvider.js","names":["useAppTRPC"],"sources":["../../../../../src/modules/billing/components/BillingProvider.tsx"],"sourcesContent":["import type { BackendTRPCRouter } from \"@m5kdev/backend/types\";\r\nimport type { BillingSchema } from \"@m5kdev/commons/modules/billing/billing.schema\";\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport { createContext } from \"react\";\r\nimport { useAppTRPC } from \"../../app/hooks/useAppTrpc\";\r\n\r\nexport const billingProviderContext = createContext<{\r\n isLoading: boolean;\r\n data: BillingSchema | null;\r\n}>({\r\n isLoading: true,\r\n data: null,\r\n});\r\n\r\nexport function BillingProvider({\r\n children,\r\n loader,\r\n planPage,\r\n skipPlanCheck = false,\r\n}: {\r\n children: React.ReactNode;\r\n loader?: React.ReactNode;\r\n planPage: React.ReactNode;\r\n skipPlanCheck?: boolean;\r\n}) {\r\n const trpc = useAppTRPC<BackendTRPCRouter>();\r\n\r\n const { data: activeSubscription, isLoading } = useQuery(\r\n trpc.billing.getActiveSubscription.queryOptions(undefined, {\r\n staleTime: 1000 * 60 * 60 * 4, // 4 hours\r\n enabled: !skipPlanCheck,\r\n })\r\n );\r\n\r\n if (skipPlanCheck) {\r\n return (\r\n <billingProviderContext.Provider value={{ isLoading: false, data: null }}>\r\n {children}\r\n </billingProviderContext.Provider>\r\n );\r\n }\r\n\r\n // Show loading screen while checking subscription status\r\n if (isLoading) {\r\n return loader ? loader : \"Loading...\";\r\n }\r\n\r\n if (!activeSubscription) {\r\n return planPage;\r\n }\r\n\r\n return (\r\n <billingProviderContext.Provider value={{ isLoading, data: activeSubscription ?? null }}>\r\n {children}\r\n </billingProviderContext.Provider>\r\n );\r\n}\r\n"],"mappings":";;;;;;;AAMA,MAAa,0BAAA,GAAA,MAAA,eAGV;CACD,WAAW;CACX,MAAM;CACP,CAAC;AAEF,SAAgB,gBAAgB,EAC9B,UACA,QACA,UACA,gBAAgB,SAMf;CAGD,MAAM,EAAE,MAAM,oBAAoB,eAAA,GAAA,sBAAA,UAFrBA,yCAAAA,YAA+B,CAGrC,QAAQ,sBAAsB,aAAa,KAAA,GAAW;EACzD,WAAW,MAAO,KAAK,KAAK;EAC5B,SAAS,CAAC;EACX,CAAC,CACH;AAED,KAAI,cACF,QACE,iBAAA,GAAA,kBAAA,KAAC,uBAAuB,UAAxB;EAAiC,OAAO;GAAE,WAAW;GAAO,MAAM;GAAM;EACrE;EAC+B,CAAA;AAKtC,KAAI,UACF,QAAO,SAAS,SAAS;AAG3B,KAAI,CAAC,mBACH,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,KAAC,uBAAuB,UAAxB;EAAiC,OAAO;GAAE;GAAW,MAAM,sBAAsB;GAAM;EACpF;EAC+B,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_billing_components_BillingProvider = require("../components/BillingProvider.js");
|
|
3
4
|
let react = require("react");
|
|
4
5
|
//#region src/modules/billing/hooks/useSubscription.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubscription.js","names":["billingProviderContext"],"sources":["../../../../../src/modules/billing/hooks/useSubscription.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { billingProviderContext } from \"../components/BillingProvider\";\r\n\r\nexport function useSubscription() {\r\n return useContext(billingProviderContext);\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSubscription.js","names":["billingProviderContext"],"sources":["../../../../../src/modules/billing/hooks/useSubscription.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { billingProviderContext } from \"../components/BillingProvider\";\r\n\r\nexport function useSubscription() {\r\n return useContext(billingProviderContext);\r\n}\r\n"],"mappings":";;;;;AAGA,SAAgB,kBAAkB;AAChC,SAAA,GAAA,MAAA,YAAkBA,uDAAAA,uBAAuB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_app_hooks_useAppConfig = require("../../app/hooks/useAppConfig.js");
|
|
3
4
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
4
5
|
//#region src/modules/file/hooks/useS3DownloadUrl.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useS3DownloadUrl.js","names":["useAppConfig"],"sources":["../../../../../src/modules/file/hooks/useS3DownloadUrl.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\r\nimport { useAppConfig } from \"../../app/hooks/useAppConfig\";\r\n\r\nexport async function fetchS3DownloadUrl(filePath: string, serverUrl?: string) {\r\n if (!serverUrl) {\r\n throw new Error(\"fetchS3DownloadUrl requires a serverUrl. In React, use useS3DownloadUrl.\");\r\n }\r\n\r\n const res = await fetch(`${serverUrl}/upload/files/${filePath}`);\r\n if (!res.ok) throw new Error(\"Failed to get download URL\");\r\n return (await res.json()).url as string;\r\n}\r\n\r\nexport function useS3DownloadUrl(filePath: string, serverUrlOverride?: string) {\r\n const { serverUrl } = useAppConfig();\r\n const resolvedServerUrl = serverUrlOverride ?? serverUrl;\r\n\r\n return useQuery<string, Error>({\r\n queryKey: [\"s3DownloadUrl\", resolvedServerUrl, filePath],\r\n queryFn: () => fetchS3DownloadUrl(filePath, resolvedServerUrl),\r\n enabled: Boolean(filePath),\r\n });\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useS3DownloadUrl.js","names":["useAppConfig"],"sources":["../../../../../src/modules/file/hooks/useS3DownloadUrl.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\r\nimport { useAppConfig } from \"../../app/hooks/useAppConfig\";\r\n\r\nexport async function fetchS3DownloadUrl(filePath: string, serverUrl?: string) {\r\n if (!serverUrl) {\r\n throw new Error(\"fetchS3DownloadUrl requires a serverUrl. In React, use useS3DownloadUrl.\");\r\n }\r\n\r\n const res = await fetch(`${serverUrl}/upload/files/${filePath}`);\r\n if (!res.ok) throw new Error(\"Failed to get download URL\");\r\n return (await res.json()).url as string;\r\n}\r\n\r\nexport function useS3DownloadUrl(filePath: string, serverUrlOverride?: string) {\r\n const { serverUrl } = useAppConfig();\r\n const resolvedServerUrl = serverUrlOverride ?? serverUrl;\r\n\r\n return useQuery<string, Error>({\r\n queryKey: [\"s3DownloadUrl\", resolvedServerUrl, filePath],\r\n queryFn: () => fetchS3DownloadUrl(filePath, resolvedServerUrl),\r\n enabled: Boolean(filePath),\r\n });\r\n}\r\n"],"mappings":";;;;;AAGA,eAAsB,mBAAmB,UAAkB,WAAoB;AAC7E,KAAI,CAAC,UACH,OAAM,IAAI,MAAM,2EAA2E;CAG7F,MAAM,MAAM,MAAM,MAAM,GAAG,UAAU,gBAAgB,WAAW;AAChE,KAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,6BAA6B;AAC1D,SAAQ,MAAM,IAAI,MAAM,EAAE;;AAG5B,SAAgB,iBAAiB,UAAkB,mBAA4B;CAC7E,MAAM,EAAE,cAAcA,2CAAAA,cAAc;CACpC,MAAM,oBAAoB,qBAAqB;AAE/C,SAAA,GAAA,sBAAA,UAA+B;EAC7B,UAAU;GAAC;GAAiB;GAAmB;GAAS;EACxD,eAAe,mBAAmB,UAAU,kBAAkB;EAC9D,SAAS,QAAQ,SAAS;EAC3B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_app_hooks_useAppConfig = require("../../app/hooks/useAppConfig.js");
|
|
3
4
|
let react = require("react");
|
|
4
5
|
//#region src/modules/file/hooks/useS3Upload.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useS3Upload.js","names":["useAppConfig"],"sources":["../../../../../src/modules/file/hooks/useS3Upload.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\r\nimport { useAppConfig } from \"../../app/hooks/useAppConfig\";\r\n\r\nexport type S3UploadStatus = \"idle\" | \"uploading\" | \"success\" | \"error\";\r\n\r\nexport type UploadBlobInput =\r\n | Blob\r\n | {\r\n uri: string;\r\n name?: string;\r\n type?: string;\r\n size?: number;\r\n };\r\n\r\nexport type ResolvedUploadBlob = {\r\n blob: Blob;\r\n name: string;\r\n type: string;\r\n size: number;\r\n};\r\n\r\nasync function getPresignedUrl(\r\n filename: string,\r\n filetype: string,\r\n serverUrl: string\r\n): Promise<string> {\r\n const res = await fetch(`${serverUrl}/upload/s3-presigned-url`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ filename, filetype }),\r\n });\r\n if (!res.ok) throw new Error(\"Failed to get presigned URL\");\r\n const data = (await res.json()) as { url: string };\r\n return data.url;\r\n}\r\n\r\nfunction isBlobInput(file: UploadBlobInput): file is Blob {\r\n return typeof Blob !== \"undefined\" && file instanceof Blob;\r\n}\r\n\r\nfunction getInputName(file: UploadBlobInput) {\r\n if (!isBlobInput(file)) {\r\n return file.name ?? `upload-${Date.now()}`;\r\n }\r\n\r\n return \"name\" in file && typeof file.name === \"string\" ? file.name : `upload-${Date.now()}`;\r\n}\r\n\r\nfunction getInputType(file: UploadBlobInput, blob: Blob) {\r\n if (!isBlobInput(file)) {\r\n return file.type ?? blob.type ?? \"application/octet-stream\";\r\n }\r\n\r\n return file.type || \"application/octet-stream\";\r\n}\r\n\r\nexport async function resolveUploadBlob(file: UploadBlobInput): Promise<ResolvedUploadBlob> {\r\n const blob = isBlobInput(file) ? file : await fetch(file.uri).then((response) => response.blob());\r\n return {\r\n blob,\r\n name: getInputName(file),\r\n type: getInputType(file, blob),\r\n size: \"size\" in file && typeof file.size === \"number\" ? file.size : blob.size,\r\n };\r\n}\r\n\r\nfunction createUploadId() {\r\n return globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2, 11);\r\n}\r\n\r\nexport function useS3Upload(serverUrlOverride?: string) {\r\n const { serverUrl } = useAppConfig();\r\n const resolvedServerUrl = serverUrlOverride ?? serverUrl;\r\n const [progress, setProgress] = useState<number>(0);\r\n const [status, setStatus] = useState<S3UploadStatus>(\"idle\");\r\n const [error, setError] = useState<string | null>(null);\r\n const [uploadedUrl, setUploadedUrl] = useState<string | null>(null);\r\n\r\n const upload = useCallback(\r\n async (file: UploadBlobInput, prefix?: string) => {\r\n setProgress(0);\r\n setStatus(\"uploading\");\r\n setError(null);\r\n setUploadedUrl(null);\r\n try {\r\n const resolvedFile = await resolveUploadBlob(file);\r\n const originalFilename = resolvedFile.name;\r\n const extension = originalFilename.split(\".\").pop() || \"\";\r\n const uuid = createUploadId();\r\n const filename = prefix\r\n ? `${prefix}/${uuid}${extension ? `.${extension}` : \"\"}`\r\n : `${uuid}${extension ? `.${extension}` : \"\"}`;\r\n const filetype = resolvedFile.type;\r\n const presignedUrl = await getPresignedUrl(filename, filetype, resolvedServerUrl);\r\n\r\n return await new Promise<string>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(\"PUT\", presignedUrl);\r\n xhr.setRequestHeader(\"Content-Type\", filetype);\r\n\r\n xhr.upload.onprogress = (event) => {\r\n if (event.lengthComputable) {\r\n setProgress(Math.round((event.loaded * 100) / event.total));\r\n }\r\n };\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n setProgress(100);\r\n setStatus(\"success\");\r\n // Remove query params to get the public URL\r\n setUploadedUrl(presignedUrl.split(\"?\")[0]);\r\n resolve(filename);\r\n } else {\r\n setStatus(\"error\");\r\n setError(`Upload failed with status ${xhr.status}`);\r\n reject(new Error(`Upload failed with status ${xhr.status}`));\r\n }\r\n };\r\n\r\n xhr.onerror = () => {\r\n setStatus(\"error\");\r\n setError(\"Network error during upload\");\r\n reject(new Error(\"Network error during upload\"));\r\n };\r\n\r\n xhr.send(resolvedFile.blob);\r\n });\r\n } catch (err: unknown) {\r\n setStatus(\"error\");\r\n setError(err instanceof Error ? err.message : \"Unknown error\");\r\n return Promise.reject(err);\r\n }\r\n },\r\n [resolvedServerUrl]\r\n );\r\n\r\n const reset = useCallback(() => {\r\n setProgress(0);\r\n setStatus(\"idle\");\r\n setError(null);\r\n setUploadedUrl(null);\r\n }, []);\r\n\r\n return { upload, progress, status, error, uploadedUrl, reset };\r\n}\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useS3Upload.js","names":["useAppConfig"],"sources":["../../../../../src/modules/file/hooks/useS3Upload.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\r\nimport { useAppConfig } from \"../../app/hooks/useAppConfig\";\r\n\r\nexport type S3UploadStatus = \"idle\" | \"uploading\" | \"success\" | \"error\";\r\n\r\nexport type UploadBlobInput =\r\n | Blob\r\n | {\r\n uri: string;\r\n name?: string;\r\n type?: string;\r\n size?: number;\r\n };\r\n\r\nexport type ResolvedUploadBlob = {\r\n blob: Blob;\r\n name: string;\r\n type: string;\r\n size: number;\r\n};\r\n\r\nasync function getPresignedUrl(\r\n filename: string,\r\n filetype: string,\r\n serverUrl: string\r\n): Promise<string> {\r\n const res = await fetch(`${serverUrl}/upload/s3-presigned-url`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ filename, filetype }),\r\n });\r\n if (!res.ok) throw new Error(\"Failed to get presigned URL\");\r\n const data = (await res.json()) as { url: string };\r\n return data.url;\r\n}\r\n\r\nfunction isBlobInput(file: UploadBlobInput): file is Blob {\r\n return typeof Blob !== \"undefined\" && file instanceof Blob;\r\n}\r\n\r\nfunction getInputName(file: UploadBlobInput) {\r\n if (!isBlobInput(file)) {\r\n return file.name ?? `upload-${Date.now()}`;\r\n }\r\n\r\n return \"name\" in file && typeof file.name === \"string\" ? file.name : `upload-${Date.now()}`;\r\n}\r\n\r\nfunction getInputType(file: UploadBlobInput, blob: Blob) {\r\n if (!isBlobInput(file)) {\r\n return file.type ?? blob.type ?? \"application/octet-stream\";\r\n }\r\n\r\n return file.type || \"application/octet-stream\";\r\n}\r\n\r\nexport async function resolveUploadBlob(file: UploadBlobInput): Promise<ResolvedUploadBlob> {\r\n const blob = isBlobInput(file) ? file : await fetch(file.uri).then((response) => response.blob());\r\n return {\r\n blob,\r\n name: getInputName(file),\r\n type: getInputType(file, blob),\r\n size: \"size\" in file && typeof file.size === \"number\" ? file.size : blob.size,\r\n };\r\n}\r\n\r\nfunction createUploadId() {\r\n return globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2, 11);\r\n}\r\n\r\nexport function useS3Upload(serverUrlOverride?: string) {\r\n const { serverUrl } = useAppConfig();\r\n const resolvedServerUrl = serverUrlOverride ?? serverUrl;\r\n const [progress, setProgress] = useState<number>(0);\r\n const [status, setStatus] = useState<S3UploadStatus>(\"idle\");\r\n const [error, setError] = useState<string | null>(null);\r\n const [uploadedUrl, setUploadedUrl] = useState<string | null>(null);\r\n\r\n const upload = useCallback(\r\n async (file: UploadBlobInput, prefix?: string) => {\r\n setProgress(0);\r\n setStatus(\"uploading\");\r\n setError(null);\r\n setUploadedUrl(null);\r\n try {\r\n const resolvedFile = await resolveUploadBlob(file);\r\n const originalFilename = resolvedFile.name;\r\n const extension = originalFilename.split(\".\").pop() || \"\";\r\n const uuid = createUploadId();\r\n const filename = prefix\r\n ? `${prefix}/${uuid}${extension ? `.${extension}` : \"\"}`\r\n : `${uuid}${extension ? `.${extension}` : \"\"}`;\r\n const filetype = resolvedFile.type;\r\n const presignedUrl = await getPresignedUrl(filename, filetype, resolvedServerUrl);\r\n\r\n return await new Promise<string>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(\"PUT\", presignedUrl);\r\n xhr.setRequestHeader(\"Content-Type\", filetype);\r\n\r\n xhr.upload.onprogress = (event) => {\r\n if (event.lengthComputable) {\r\n setProgress(Math.round((event.loaded * 100) / event.total));\r\n }\r\n };\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n setProgress(100);\r\n setStatus(\"success\");\r\n // Remove query params to get the public URL\r\n setUploadedUrl(presignedUrl.split(\"?\")[0]);\r\n resolve(filename);\r\n } else {\r\n setStatus(\"error\");\r\n setError(`Upload failed with status ${xhr.status}`);\r\n reject(new Error(`Upload failed with status ${xhr.status}`));\r\n }\r\n };\r\n\r\n xhr.onerror = () => {\r\n setStatus(\"error\");\r\n setError(\"Network error during upload\");\r\n reject(new Error(\"Network error during upload\"));\r\n };\r\n\r\n xhr.send(resolvedFile.blob);\r\n });\r\n } catch (err: unknown) {\r\n setStatus(\"error\");\r\n setError(err instanceof Error ? err.message : \"Unknown error\");\r\n return Promise.reject(err);\r\n }\r\n },\r\n [resolvedServerUrl]\r\n );\r\n\r\n const reset = useCallback(() => {\r\n setProgress(0);\r\n setStatus(\"idle\");\r\n setError(null);\r\n setUploadedUrl(null);\r\n }, []);\r\n\r\n return { upload, progress, status, error, uploadedUrl, reset };\r\n}\r\n"],"mappings":";;;;;AAqBA,eAAe,gBACb,UACA,UACA,WACiB;CACjB,MAAM,MAAM,MAAM,MAAM,GAAG,UAAU,2BAA2B;EAC9D,QAAQ;EACR,SAAS,EAAE,gBAAgB,oBAAoB;EAC/C,MAAM,KAAK,UAAU;GAAE;GAAU;GAAU,CAAC;EAC7C,CAAC;AACF,KAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,8BAA8B;AAE3D,SADc,MAAM,IAAI,MAAM,EAClB;;AAGd,SAAS,YAAY,MAAqC;AACxD,QAAO,OAAO,SAAS,eAAe,gBAAgB;;AAGxD,SAAS,aAAa,MAAuB;AAC3C,KAAI,CAAC,YAAY,KAAK,CACpB,QAAO,KAAK,QAAQ,UAAU,KAAK,KAAK;AAG1C,QAAO,UAAU,QAAQ,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO,UAAU,KAAK,KAAK;;AAG3F,SAAS,aAAa,MAAuB,MAAY;AACvD,KAAI,CAAC,YAAY,KAAK,CACpB,QAAO,KAAK,QAAQ,KAAK,QAAQ;AAGnC,QAAO,KAAK,QAAQ;;AAGtB,eAAsB,kBAAkB,MAAoD;CAC1F,MAAM,OAAO,YAAY,KAAK,GAAG,OAAO,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,aAAa,SAAS,MAAM,CAAC;AACjG,QAAO;EACL;EACA,MAAM,aAAa,KAAK;EACxB,MAAM,aAAa,MAAM,KAAK;EAC9B,MAAM,UAAU,QAAQ,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO,KAAK;EAC1E;;AAGH,SAAS,iBAAiB;AACxB,QAAO,WAAW,QAAQ,cAAc,IAAI,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG;;AAGrF,SAAgB,YAAY,mBAA4B;CACtD,MAAM,EAAE,cAAcA,2CAAAA,cAAc;CACpC,MAAM,oBAAoB,qBAAqB;CAC/C,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAgC,EAAE;CACnD,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsC,OAAO;CAC5D,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAoC,KAAK;CACvD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA0C,KAAK;AAoEnE,QAAO;EAAE,SAAA,GAAA,MAAA,aAjEP,OAAO,MAAuB,WAAoB;AAChD,eAAY,EAAE;AACd,aAAU,YAAY;AACtB,YAAS,KAAK;AACd,kBAAe,KAAK;AACpB,OAAI;IACF,MAAM,eAAe,MAAM,kBAAkB,KAAK;IAElD,MAAM,YADmB,aAAa,KACH,MAAM,IAAI,CAAC,KAAK,IAAI;IACvD,MAAM,OAAO,gBAAgB;IAC7B,MAAM,WAAW,SACb,GAAG,OAAO,GAAG,OAAO,YAAY,IAAI,cAAc,OAClD,GAAG,OAAO,YAAY,IAAI,cAAc;IAC5C,MAAM,WAAW,aAAa;IAC9B,MAAM,eAAe,MAAM,gBAAgB,UAAU,UAAU,kBAAkB;AAEjF,WAAO,MAAM,IAAI,SAAiB,SAAS,WAAW;KACpD,MAAM,MAAM,IAAI,gBAAgB;AAChC,SAAI,KAAK,OAAO,aAAa;AAC7B,SAAI,iBAAiB,gBAAgB,SAAS;AAE9C,SAAI,OAAO,cAAc,UAAU;AACjC,UAAI,MAAM,iBACR,aAAY,KAAK,MAAO,MAAM,SAAS,MAAO,MAAM,MAAM,CAAC;;AAI/D,SAAI,eAAe;AACjB,UAAI,IAAI,UAAU,OAAO,IAAI,SAAS,KAAK;AACzC,mBAAY,IAAI;AAChB,iBAAU,UAAU;AAEpB,sBAAe,aAAa,MAAM,IAAI,CAAC,GAAG;AAC1C,eAAQ,SAAS;aACZ;AACL,iBAAU,QAAQ;AAClB,gBAAS,6BAA6B,IAAI,SAAS;AACnD,8BAAO,IAAI,MAAM,6BAA6B,IAAI,SAAS,CAAC;;;AAIhE,SAAI,gBAAgB;AAClB,gBAAU,QAAQ;AAClB,eAAS,8BAA8B;AACvC,6BAAO,IAAI,MAAM,8BAA8B,CAAC;;AAGlD,SAAI,KAAK,aAAa,KAAK;MAC3B;YACK,KAAc;AACrB,cAAU,QAAQ;AAClB,aAAS,eAAe,QAAQ,IAAI,UAAU,gBAAgB;AAC9D,WAAO,QAAQ,OAAO,IAAI;;KAG9B,CAAC,kBAAkB,CACpB;EASgB;EAAU;EAAQ;EAAO;EAAa,QAAA,GAAA,MAAA,mBAPvB;AAC9B,eAAY,EAAE;AACd,aAAU,OAAO;AACjB,YAAS,KAAK;AACd,kBAAe,KAAK;KACnB,EAAE,CAAC;EAEwD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
3
|
const require_src_modules_app_hooks_useAppConfig = require("../../app/hooks/useAppConfig.js");
|
|
3
4
|
const require_src_modules_file_hooks_useS3Upload = require("./useS3Upload.js");
|
|
4
5
|
let react = require("react");
|