@m5kdev/frontend 0.20.49 → 0.21.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/src/index.d.mts +25 -0
- package/dist/src/index.d.ts +25 -0
- package/dist/src/index.js +83 -0
- package/dist/src/index.mjs +25 -0
- package/dist/src/modules/auth/auth.client.d.mts +708 -0
- package/dist/src/modules/auth/auth.client.d.mts.map +1 -0
- package/dist/src/modules/auth/auth.client.d.ts +708 -0
- package/dist/src/modules/auth/auth.client.d.ts.map +1 -0
- package/dist/src/modules/auth/auth.client.js +72 -0
- package/dist/src/modules/auth/auth.client.js.map +1 -0
- package/dist/src/modules/auth/auth.client.mjs +71 -0
- package/dist/src/modules/auth/auth.client.mjs.map +1 -0
- package/dist/src/modules/auth/auth.context.d.mts +15 -0
- package/dist/src/modules/auth/auth.context.d.mts.map +1 -0
- package/dist/src/modules/auth/auth.context.d.ts +15 -0
- package/dist/src/modules/auth/auth.context.d.ts.map +1 -0
- package/dist/src/modules/auth/auth.context.js +13 -0
- package/dist/src/modules/auth/auth.context.js.map +1 -0
- package/dist/src/modules/auth/auth.context.mjs +13 -0
- package/dist/src/modules/auth/auth.context.mjs.map +1 -0
- package/dist/src/modules/auth/auth.lib.d.mts +1251 -1380
- package/dist/src/modules/auth/auth.lib.d.mts.map +1 -1
- package/dist/src/modules/auth/auth.lib.d.ts +1251 -1380
- package/dist/src/modules/auth/auth.lib.d.ts.map +1 -1
- package/dist/src/modules/auth/auth.lib.js +18 -63
- package/dist/src/modules/auth/auth.lib.js.map +1 -1
- package/dist/src/modules/auth/auth.lib.mjs +10 -64
- package/dist/src/modules/auth/auth.lib.mjs.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.d.mts +9 -10
- package/dist/src/modules/auth/components/AuthProvider.d.mts.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.d.ts +9 -10
- package/dist/src/modules/auth/components/AuthProvider.d.ts.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.js +20 -42
- package/dist/src/modules/auth/components/AuthProvider.js.map +1 -1
- package/dist/src/modules/auth/components/AuthProvider.mjs +22 -43
- package/dist/src/modules/auth/components/AuthProvider.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useAuth.d.mts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuth.d.ts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuth.js +5 -3
- package/dist/src/modules/auth/hooks/useAuth.js.map +1 -1
- package/dist/src/modules/auth/hooks/useAuth.mjs +3 -1
- package/dist/src/modules/auth/hooks/useAuth.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.mts +10 -19
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.mts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.ts +10 -19
- package/dist/src/modules/auth/hooks/useAuthAdmin.d.ts.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.js +20 -12
- package/dist/src/modules/auth/hooks/useAuthAdmin.js.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthAdmin.mjs +14 -6
- package/dist/src/modules/auth/hooks/useAuthAdmin.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useAuthClient.d.mts +707 -0
- package/dist/src/modules/auth/hooks/useAuthClient.d.mts.map +1 -0
- package/dist/src/modules/auth/hooks/useAuthClient.d.ts +707 -0
- package/dist/src/modules/auth/hooks/useAuthClient.d.ts.map +1 -0
- package/dist/src/modules/auth/hooks/useAuthClient.js +12 -0
- package/dist/src/modules/auth/hooks/useAuthClient.js.map +1 -0
- package/dist/src/modules/auth/hooks/useAuthClient.mjs +11 -0
- package/dist/src/modules/auth/hooks/useAuthClient.mjs.map +1 -0
- package/dist/src/modules/auth/hooks/useMemberInvite.js +3 -2
- package/dist/src/modules/auth/hooks/useMemberInvite.js.map +1 -1
- package/dist/src/modules/auth/hooks/useMemberInvite.mjs +2 -1
- package/dist/src/modules/auth/hooks/useMemberInvite.mjs.map +1 -1
- package/dist/src/modules/auth/hooks/useOrganizationAccess.d.mts +1 -1
- package/dist/src/modules/auth/hooks/useOrganizationAccess.d.ts +1 -1
- package/dist/src/modules/auth/hooks/useSession.d.mts +4 -37
- package/dist/src/modules/auth/hooks/useSession.d.mts.map +1 -1
- package/dist/src/modules/auth/hooks/useSession.d.ts +4 -37
- package/dist/src/modules/auth/hooks/useSession.d.ts.map +1 -1
- package/dist/src/modules/auth/hooks/useSession.js +3 -2
- package/dist/src/modules/auth/hooks/useSession.js.map +1 -1
- package/dist/src/modules/auth/hooks/useSession.mjs +3 -2
- package/dist/src/modules/auth/hooks/useSession.mjs.map +1 -1
- package/dist/src/modules/file/hooks/useS3Upload.d.mts +15 -2
- package/dist/src/modules/file/hooks/useS3Upload.d.mts.map +1 -1
- package/dist/src/modules/file/hooks/useS3Upload.d.ts +15 -2
- package/dist/src/modules/file/hooks/useS3Upload.d.ts.map +1 -1
- package/dist/src/modules/file/hooks/useS3Upload.js +29 -4
- package/dist/src/modules/file/hooks/useS3Upload.js.map +1 -1
- package/dist/src/modules/file/hooks/useS3Upload.mjs +29 -5
- package/dist/src/modules/file/hooks/useS3Upload.mjs.map +1 -1
- package/dist/src/modules/file/hooks/useUpload.d.mts +6 -4
- package/dist/src/modules/file/hooks/useUpload.d.mts.map +1 -1
- package/dist/src/modules/file/hooks/useUpload.d.ts +6 -4
- package/dist/src/modules/file/hooks/useUpload.d.ts.map +1 -1
- package/dist/src/modules/file/hooks/useUpload.js +10 -7
- package/dist/src/modules/file/hooks/useUpload.js.map +1 -1
- package/dist/src/modules/file/hooks/useUpload.mjs +10 -7
- package/dist/src/modules/file/hooks/useUpload.mjs.map +1 -1
- package/dist/src/modules/table/hooks/useQueryWithParams.d.mts +2 -2
- package/dist/src/modules/table/hooks/useQueryWithParams.d.mts.map +1 -1
- package/dist/src/modules/table/hooks/useQueryWithParams.d.ts +2 -2
- package/dist/src/modules/table/hooks/useQueryWithParams.d.ts.map +1 -1
- package/dist/src/modules/table/hooks/useQueryWithParams.js.map +1 -1
- package/dist/src/modules/table/hooks/useQueryWithParams.mjs.map +1 -1
- package/dist/src/modules/table/hooks/useTableQueryParams.d.mts +7 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.d.mts.map +1 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.d.ts +7 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.d.ts.map +1 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.js +95 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.js.map +1 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.mjs +94 -0
- package/dist/src/modules/table/hooks/useTableQueryParams.mjs.map +1 -0
- package/dist/src/modules/table/queryParams.d.mts +34 -0
- package/dist/src/modules/table/queryParams.d.mts.map +1 -0
- package/dist/src/modules/table/queryParams.d.ts +34 -0
- package/dist/src/modules/table/queryParams.d.ts.map +1 -0
- package/dist/src/modules/table/{hooks/useNuqsQueryParams.js → queryParams.js} +14 -130
- package/dist/src/modules/table/queryParams.js.map +1 -0
- package/dist/src/modules/table/{hooks/useNuqsQueryParams.mjs → queryParams.mjs} +10 -130
- package/dist/src/modules/table/queryParams.mjs.map +1 -0
- package/dist/src/utils/date.d.mts +1 -1
- package/package.json +24 -6
- package/dist/src/modules/table/hooks/useDateRangeFilter.d.mts +0 -34
- package/dist/src/modules/table/hooks/useDateRangeFilter.d.mts.map +0 -1
- package/dist/src/modules/table/hooks/useDateRangeFilter.d.ts +0 -34
- package/dist/src/modules/table/hooks/useDateRangeFilter.d.ts.map +0 -1
- package/dist/src/modules/table/hooks/useDateRangeFilter.js +0 -30
- package/dist/src/modules/table/hooks/useDateRangeFilter.js.map +0 -1
- package/dist/src/modules/table/hooks/useDateRangeFilter.mjs +0 -29
- package/dist/src/modules/table/hooks/useDateRangeFilter.mjs.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsQueryParams.d.mts +0 -34
- package/dist/src/modules/table/hooks/useNuqsQueryParams.d.mts.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsQueryParams.d.ts +0 -34
- package/dist/src/modules/table/hooks/useNuqsQueryParams.d.ts.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsQueryParams.js.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsQueryParams.mjs.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsTable.d.mts +0 -46
- package/dist/src/modules/table/hooks/useNuqsTable.d.mts.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsTable.d.ts +0 -46
- package/dist/src/modules/table/hooks/useNuqsTable.d.ts.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsTable.js +0 -58
- package/dist/src/modules/table/hooks/useNuqsTable.js.map +0 -1
- package/dist/src/modules/table/hooks/useNuqsTable.mjs +0 -58
- package/dist/src/modules/table/hooks/useNuqsTable.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthClient.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useAuthClient.ts"],"mappings":";;;;iBAIgB,aAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAGimD,kBAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;UAA+wG,qBAAA,CAAA,WAAA;;;;;;;;;;;;;;;;;YAAx5D,YAAA;;;eAA2F,WAAA,IAAA,WAAA;;;;;eAA+U,eAAA;kBAA+C,kBAAA;;;WAAwG,WAAA;eAAwC,eAAA;;qBAAqF,cAAA;cAAyC,WAAA;gBAAgD,QAAA,EAAhD,qBAAA,CAAgD,eAAA,KAAA,OAAA;;;;;qBAAA,qBAAA,CAAA,UAAA;;;;;;;;;;;;;;;;;;;;kCAA27B,YAAA;;cAAA,qBAAA,CAAmG,gBAAA,UAAA,IAAA,UAAA,IAAA;kBAAA,qBAAA,CAAmG,gBAAA;;;;;uBAAuM,IAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_src_modules_auth_auth_lib = require("../auth.lib.js");
|
|
3
|
+
const require_src_modules_auth_auth_context = require("../auth.context.js");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
//#region src/modules/auth/hooks/useAuthClient.ts
|
|
6
|
+
function useAuthClient() {
|
|
7
|
+
return (0, react.useContext)(require_src_modules_auth_auth_context.authProviderContext).authClient ?? require_src_modules_auth_auth_lib.getAuthClient();
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
exports.useAuthClient = useAuthClient;
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=useAuthClient.js.map
|
|
@@ -0,0 +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":";;;;;AAIA,SAAgB,gBAAgB;AAC9B,SAAA,GAAA,MAAA,YAAkBA,sCAAAA,oBAAoB,CAAC,cAAcC,kCAAAA,eAAe"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getAuthClient } from "../auth.lib.mjs";
|
|
2
|
+
import { authProviderContext } from "../auth.context.mjs";
|
|
3
|
+
import { useContext } from "react";
|
|
4
|
+
//#region src/modules/auth/hooks/useAuthClient.ts
|
|
5
|
+
function useAuthClient() {
|
|
6
|
+
return useContext(authProviderContext).authClient ?? getAuthClient();
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { useAuthClient };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=useAuthClient.mjs.map
|
|
@@ -0,0 +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":";;;;AAIA,SAAgB,gBAAgB;AAC9B,QAAO,WAAW,oBAAoB,CAAC,cAAc,eAAe"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_src_modules_auth_hooks_useAuthClient = require("./useAuthClient.js");
|
|
3
3
|
const require_src_modules_auth_hooks_useOrganizationAccess = require("./useOrganizationAccess.js");
|
|
4
4
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
5
5
|
//#region src/modules/auth/hooks/useMemberInvite.ts
|
|
6
6
|
function useAuthMemberInvite(options, props) {
|
|
7
7
|
const { managerRoles = ["admin", "owner"], onInvalidateScopedQueries } = props ?? {};
|
|
8
8
|
const { onSuccess, ...rest } = options;
|
|
9
|
+
const authClient = require_src_modules_auth_hooks_useAuthClient.useAuthClient();
|
|
9
10
|
const { refreshOrganizationQueries, activeOrganizationId } = require_src_modules_auth_hooks_useOrganizationAccess.useOrganizationAccess({
|
|
10
11
|
managerRoles,
|
|
11
12
|
onInvalidateScopedQueries
|
|
12
13
|
});
|
|
13
14
|
return (0, _tanstack_react_query.useMutation)({
|
|
14
15
|
mutationFn: async ({ email, role }) => {
|
|
15
|
-
const { error } = await
|
|
16
|
+
const { error } = await authClient.organization.inviteMember({
|
|
16
17
|
organizationId: activeOrganizationId,
|
|
17
18
|
email: email.trim(),
|
|
18
19
|
role
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMemberInvite.js","names":["
|
|
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 { managerRoles = [\"admin\", \"owner\"], onInvalidateScopedQueries } = props ?? {};\r\n const { onSuccess, ...rest } = options;\r\n const authClient = useAuthClient();\r\n const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess({\r\n managerRoles,\r\n onInvalidateScopedQueries,\r\n });\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 });\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,eAAe,CAAC,SAAS,QAAQ,EAAE,8BAA8B,SAAS,EAAE;CACpF,MAAM,EAAE,WAAW,GAAG,SAAS;CAC/B,MAAM,aAAaA,6CAAAA,eAAe;CAClC,MAAM,EAAE,4BAA4B,yBAAyBC,qDAAAA,sBAAsB;EACjF;EACA;EACD,CAAC;AACF,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,CAAC;AACF,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,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useAuthClient } from "./useAuthClient.mjs";
|
|
2
2
|
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
6
|
const { managerRoles = ["admin", "owner"], onInvalidateScopedQueries } = props ?? {};
|
|
7
7
|
const { onSuccess, ...rest } = options;
|
|
8
|
+
const authClient = useAuthClient();
|
|
8
9
|
const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess({
|
|
9
10
|
managerRoles,
|
|
10
11
|
onInvalidateScopedQueries
|
|
@@ -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 {
|
|
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 { managerRoles = [\"admin\", \"owner\"], onInvalidateScopedQueries } = props ?? {};\r\n const { onSuccess, ...rest } = options;\r\n const authClient = useAuthClient();\r\n const { refreshOrganizationQueries, activeOrganizationId } = useOrganizationAccess({\r\n managerRoles,\r\n onInvalidateScopedQueries,\r\n });\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 });\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,eAAe,CAAC,SAAS,QAAQ,EAAE,8BAA8B,SAAS,EAAE;CACpF,MAAM,EAAE,WAAW,GAAG,SAAS;CAC/B,MAAM,aAAa,eAAe;CAClC,MAAM,EAAE,4BAA4B,yBAAyB,sBAAsB;EACjF;EACA;EACD,CAAC;AACF,QAAO,YAAY;EACjB,YAAY,OAAO,EAAE,OAAO,WAA0D;GACpF,MAAM,EAAE,UAAU,MAAM,WAAW,aAAa,aAAa;IAC3D,gBAAgB;IAChB,OAAO,MAAM,MAAM;IACnB;IACD,CAAC;AACF,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"}
|
|
@@ -9,7 +9,7 @@ declare function useOrganizationAccess({
|
|
|
9
9
|
managerRoles,
|
|
10
10
|
onInvalidateScopedQueries
|
|
11
11
|
}: UseOrganizationAccessProps): {
|
|
12
|
-
activeOrganizationId:
|
|
12
|
+
activeOrganizationId: any;
|
|
13
13
|
activeOrganizationRole: string;
|
|
14
14
|
canManageOrganization: boolean;
|
|
15
15
|
refreshOrganizationQueries: () => Promise<void>;
|
|
@@ -9,7 +9,7 @@ declare function useOrganizationAccess({
|
|
|
9
9
|
managerRoles,
|
|
10
10
|
onInvalidateScopedQueries
|
|
11
11
|
}: UseOrganizationAccessProps): {
|
|
12
|
-
activeOrganizationId:
|
|
12
|
+
activeOrganizationId: any;
|
|
13
13
|
activeOrganizationRole: string;
|
|
14
14
|
canManageOrganization: boolean;
|
|
15
15
|
refreshOrganizationQueries: () => Promise<void>;
|
|
@@ -1,44 +1,11 @@
|
|
|
1
|
+
import { AuthSession } from "../auth.context.mjs";
|
|
2
|
+
|
|
1
3
|
//#region src/modules/auth/hooks/useSession.d.ts
|
|
2
4
|
declare function useSession(): {
|
|
3
5
|
isLoading: boolean;
|
|
4
|
-
data:
|
|
5
|
-
user: {
|
|
6
|
-
id: string;
|
|
7
|
-
createdAt: Date;
|
|
8
|
-
updatedAt: Date;
|
|
9
|
-
email: string;
|
|
10
|
-
emailVerified: boolean;
|
|
11
|
-
name: string;
|
|
12
|
-
image?: string | null | undefined;
|
|
13
|
-
banned: boolean | null | undefined;
|
|
14
|
-
role?: string | null | undefined;
|
|
15
|
-
banReason?: string | null | undefined;
|
|
16
|
-
banExpires?: Date | null | undefined;
|
|
17
|
-
metadata?: string | null | undefined;
|
|
18
|
-
onboarding?: number | null | undefined;
|
|
19
|
-
preferences?: string | null | undefined;
|
|
20
|
-
flags?: string | null | undefined;
|
|
21
|
-
stripeCustomerId?: string | null | undefined;
|
|
22
|
-
};
|
|
23
|
-
session: {
|
|
24
|
-
id: string;
|
|
25
|
-
createdAt: Date;
|
|
26
|
-
updatedAt: Date;
|
|
27
|
-
userId: string;
|
|
28
|
-
expiresAt: Date;
|
|
29
|
-
token: string;
|
|
30
|
-
ipAddress?: string | null | undefined;
|
|
31
|
-
userAgent?: string | null | undefined;
|
|
32
|
-
activeOrganizationId?: string | null | undefined;
|
|
33
|
-
activeTeamId?: string | null | undefined;
|
|
34
|
-
impersonatedBy?: string | null | undefined;
|
|
35
|
-
activeTeamRole?: string | null | undefined;
|
|
36
|
-
activeOrganizationRole?: string | null | undefined;
|
|
37
|
-
activeOrganizationType?: string | null | undefined;
|
|
38
|
-
};
|
|
39
|
-
} | null) | null;
|
|
6
|
+
data: AuthSession | null;
|
|
40
7
|
signOut: () => void;
|
|
41
|
-
registerSession: (onSuccess
|
|
8
|
+
registerSession: (onSuccess?: () => void) => void;
|
|
42
9
|
};
|
|
43
10
|
//#endregion
|
|
44
11
|
export { useSession };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.d.mts","names":[],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSession.d.mts","names":[],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"mappings":";;;iBAGgB,UAAA,CAAA;;QAAU,WAAA"}
|
|
@@ -1,44 +1,11 @@
|
|
|
1
|
+
import { AuthSession } from "../auth.context.js";
|
|
2
|
+
|
|
1
3
|
//#region src/modules/auth/hooks/useSession.d.ts
|
|
2
4
|
declare function useSession(): {
|
|
3
5
|
isLoading: boolean;
|
|
4
|
-
data:
|
|
5
|
-
user: {
|
|
6
|
-
id: string;
|
|
7
|
-
createdAt: Date;
|
|
8
|
-
updatedAt: Date;
|
|
9
|
-
email: string;
|
|
10
|
-
emailVerified: boolean;
|
|
11
|
-
name: string;
|
|
12
|
-
image?: string | null | undefined;
|
|
13
|
-
banned: boolean | null | undefined;
|
|
14
|
-
role?: string | null | undefined;
|
|
15
|
-
banReason?: string | null | undefined;
|
|
16
|
-
banExpires?: Date | null | undefined;
|
|
17
|
-
metadata?: string | null | undefined;
|
|
18
|
-
onboarding?: number | null | undefined;
|
|
19
|
-
preferences?: string | null | undefined;
|
|
20
|
-
flags?: string | null | undefined;
|
|
21
|
-
stripeCustomerId?: string | null | undefined;
|
|
22
|
-
};
|
|
23
|
-
session: {
|
|
24
|
-
id: string;
|
|
25
|
-
createdAt: Date;
|
|
26
|
-
updatedAt: Date;
|
|
27
|
-
userId: string;
|
|
28
|
-
expiresAt: Date;
|
|
29
|
-
token: string;
|
|
30
|
-
ipAddress?: string | null | undefined;
|
|
31
|
-
userAgent?: string | null | undefined;
|
|
32
|
-
activeOrganizationId?: string | null | undefined;
|
|
33
|
-
activeTeamId?: string | null | undefined;
|
|
34
|
-
impersonatedBy?: string | null | undefined;
|
|
35
|
-
activeTeamRole?: string | null | undefined;
|
|
36
|
-
activeOrganizationRole?: string | null | undefined;
|
|
37
|
-
activeOrganizationType?: string | null | undefined;
|
|
38
|
-
};
|
|
39
|
-
} | null) | null;
|
|
6
|
+
data: AuthSession | null;
|
|
40
7
|
signOut: () => void;
|
|
41
|
-
registerSession: (onSuccess
|
|
8
|
+
registerSession: (onSuccess?: () => void) => void;
|
|
42
9
|
};
|
|
43
10
|
//#endregion
|
|
44
11
|
export { useSession };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSession.d.ts","names":[],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"mappings":";;;iBAGgB,UAAA,CAAA;;QAAU,WAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_src_modules_auth_auth_context = require("../auth.context.js");
|
|
3
3
|
let react = require("react");
|
|
4
4
|
//#region src/modules/auth/hooks/useSession.ts
|
|
5
5
|
function useSession() {
|
|
6
|
-
|
|
6
|
+
const { authClient: _authClient, ...session } = (0, react.useContext)(require_src_modules_auth_auth_context.authProviderContext);
|
|
7
|
+
return session;
|
|
7
8
|
}
|
|
8
9
|
//#endregion
|
|
9
10
|
exports.useSession = useSession;
|
|
@@ -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 \"../
|
|
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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { authProviderContext } from "../
|
|
1
|
+
import { authProviderContext } from "../auth.context.mjs";
|
|
2
2
|
import { useContext } from "react";
|
|
3
3
|
//#region src/modules/auth/hooks/useSession.ts
|
|
4
4
|
function useSession() {
|
|
5
|
-
|
|
5
|
+
const { authClient: _authClient, ...session } = useContext(authProviderContext);
|
|
6
|
+
return session;
|
|
6
7
|
}
|
|
7
8
|
//#endregion
|
|
8
9
|
export { useSession };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.mjs","names":[],"sources":["../../../../../src/modules/auth/hooks/useSession.ts"],"sourcesContent":["import { useContext } from \"react\";\r\nimport { authProviderContext } from \"../
|
|
1
|
+
{"version":3,"file":"useSession.mjs","names":[],"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,YAAY,WAAW,oBAAoB;AAC/E,QAAO"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
//#region src/modules/file/hooks/useS3Upload.d.ts
|
|
2
2
|
type S3UploadStatus = "idle" | "uploading" | "success" | "error";
|
|
3
|
+
type UploadBlobInput = Blob | {
|
|
4
|
+
uri: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
type?: string;
|
|
7
|
+
size?: number;
|
|
8
|
+
};
|
|
9
|
+
type ResolvedUploadBlob = {
|
|
10
|
+
blob: Blob;
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
size: number;
|
|
14
|
+
};
|
|
15
|
+
declare function resolveUploadBlob(file: UploadBlobInput): Promise<ResolvedUploadBlob>;
|
|
3
16
|
declare function useS3Upload(serverUrlOverride?: string): {
|
|
4
|
-
upload: (file:
|
|
17
|
+
upload: (file: UploadBlobInput, prefix?: string) => Promise<string>;
|
|
5
18
|
progress: number;
|
|
6
19
|
status: S3UploadStatus;
|
|
7
20
|
error: string | null;
|
|
@@ -9,5 +22,5 @@ declare function useS3Upload(serverUrlOverride?: string): {
|
|
|
9
22
|
reset: () => void;
|
|
10
23
|
};
|
|
11
24
|
//#endregion
|
|
12
|
-
export { S3UploadStatus, useS3Upload };
|
|
25
|
+
export { ResolvedUploadBlob, S3UploadStatus, UploadBlobInput, resolveUploadBlob, useS3Upload };
|
|
13
26
|
//# sourceMappingURL=useS3Upload.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useS3Upload.d.mts","names":[],"sources":["../../../../../src/modules/file/hooks/useS3Upload.ts"],"mappings":";KAGY,cAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"useS3Upload.d.mts","names":[],"sources":["../../../../../src/modules/file/hooks/useS3Upload.ts"],"mappings":";KAGY,cAAA;AAAA,KAEA,eAAA,GACR,IAAA;EAEE,GAAA;EACA,IAAA;EACA,IAAA;EACA,IAAA;AAAA;AAAA,KAGM,kBAAA;EACV,IAAA,EAAM,IAAA;EACN,IAAA;EACA,IAAA;EACA,IAAA;AAAA;AAAA,iBAsCoB,iBAAA,CAAkB,IAAA,EAAM,eAAA,GAAkB,OAAA,CAAQ,kBAAA;AAAA,iBAcxD,WAAA,CAAY,iBAAA;iBASX,eAAA,EAAe,MAAA,cAAiB,OAAA"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
//#region src/modules/file/hooks/useS3Upload.d.ts
|
|
2
2
|
type S3UploadStatus = "idle" | "uploading" | "success" | "error";
|
|
3
|
+
type UploadBlobInput = Blob | {
|
|
4
|
+
uri: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
type?: string;
|
|
7
|
+
size?: number;
|
|
8
|
+
};
|
|
9
|
+
type ResolvedUploadBlob = {
|
|
10
|
+
blob: Blob;
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
size: number;
|
|
14
|
+
};
|
|
15
|
+
declare function resolveUploadBlob(file: UploadBlobInput): Promise<ResolvedUploadBlob>;
|
|
3
16
|
declare function useS3Upload(serverUrlOverride?: string): {
|
|
4
|
-
upload: (file:
|
|
17
|
+
upload: (file: UploadBlobInput, prefix?: string) => Promise<string>;
|
|
5
18
|
progress: number;
|
|
6
19
|
status: S3UploadStatus;
|
|
7
20
|
error: string | null;
|
|
@@ -9,5 +22,5 @@ declare function useS3Upload(serverUrlOverride?: string): {
|
|
|
9
22
|
reset: () => void;
|
|
10
23
|
};
|
|
11
24
|
//#endregion
|
|
12
|
-
export { S3UploadStatus, useS3Upload };
|
|
25
|
+
export { ResolvedUploadBlob, S3UploadStatus, UploadBlobInput, resolveUploadBlob, useS3Upload };
|
|
13
26
|
//# sourceMappingURL=useS3Upload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useS3Upload.d.ts","names":[],"sources":["../../../../../src/modules/file/hooks/useS3Upload.ts"],"mappings":";KAGY,cAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"useS3Upload.d.ts","names":[],"sources":["../../../../../src/modules/file/hooks/useS3Upload.ts"],"mappings":";KAGY,cAAA;AAAA,KAEA,eAAA,GACR,IAAA;EAEE,GAAA;EACA,IAAA;EACA,IAAA;EACA,IAAA;AAAA;AAAA,KAGM,kBAAA;EACV,IAAA,EAAM,IAAA;EACN,IAAA;EACA,IAAA;EACA,IAAA;AAAA;AAAA,iBAsCoB,iBAAA,CAAkB,IAAA,EAAM,eAAA,GAAkB,OAAA,CAAQ,kBAAA;AAAA,iBAcxD,WAAA,CAAY,iBAAA;iBASX,eAAA,EAAe,MAAA,cAAiB,OAAA"}
|
|
@@ -14,6 +14,29 @@ async function getPresignedUrl(filename, filetype, serverUrl) {
|
|
|
14
14
|
if (!res.ok) throw new Error("Failed to get presigned URL");
|
|
15
15
|
return (await res.json()).url;
|
|
16
16
|
}
|
|
17
|
+
function isBlobInput(file) {
|
|
18
|
+
return typeof Blob !== "undefined" && file instanceof Blob;
|
|
19
|
+
}
|
|
20
|
+
function getInputName(file) {
|
|
21
|
+
if (!isBlobInput(file)) return file.name ?? `upload-${Date.now()}`;
|
|
22
|
+
return "name" in file && typeof file.name === "string" ? file.name : `upload-${Date.now()}`;
|
|
23
|
+
}
|
|
24
|
+
function getInputType(file, blob) {
|
|
25
|
+
if (!isBlobInput(file)) return file.type ?? blob.type ?? "application/octet-stream";
|
|
26
|
+
return file.type || "application/octet-stream";
|
|
27
|
+
}
|
|
28
|
+
async function resolveUploadBlob(file) {
|
|
29
|
+
const blob = isBlobInput(file) ? file : await fetch(file.uri).then((response) => response.blob());
|
|
30
|
+
return {
|
|
31
|
+
blob,
|
|
32
|
+
name: getInputName(file),
|
|
33
|
+
type: getInputType(file, blob),
|
|
34
|
+
size: "size" in file && typeof file.size === "number" ? file.size : blob.size
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function createUploadId() {
|
|
38
|
+
return globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2, 11);
|
|
39
|
+
}
|
|
17
40
|
function useS3Upload(serverUrlOverride) {
|
|
18
41
|
const { serverUrl } = require_src_modules_app_hooks_useAppConfig.useAppConfig();
|
|
19
42
|
const resolvedServerUrl = serverUrlOverride ?? serverUrl;
|
|
@@ -28,10 +51,11 @@ function useS3Upload(serverUrlOverride) {
|
|
|
28
51
|
setError(null);
|
|
29
52
|
setUploadedUrl(null);
|
|
30
53
|
try {
|
|
31
|
-
const
|
|
32
|
-
const
|
|
54
|
+
const resolvedFile = await resolveUploadBlob(file);
|
|
55
|
+
const extension = resolvedFile.name.split(".").pop() || "";
|
|
56
|
+
const uuid = createUploadId();
|
|
33
57
|
const filename = prefix ? `${prefix}/${uuid}${extension ? `.${extension}` : ""}` : `${uuid}${extension ? `.${extension}` : ""}`;
|
|
34
|
-
const filetype =
|
|
58
|
+
const filetype = resolvedFile.type;
|
|
35
59
|
const presignedUrl = await getPresignedUrl(filename, filetype, resolvedServerUrl);
|
|
36
60
|
return await new Promise((resolve, reject) => {
|
|
37
61
|
const xhr = new XMLHttpRequest();
|
|
@@ -57,7 +81,7 @@ function useS3Upload(serverUrlOverride) {
|
|
|
57
81
|
setError("Network error during upload");
|
|
58
82
|
reject(/* @__PURE__ */ new Error("Network error during upload"));
|
|
59
83
|
};
|
|
60
|
-
xhr.send(
|
|
84
|
+
xhr.send(resolvedFile.blob);
|
|
61
85
|
});
|
|
62
86
|
} catch (err) {
|
|
63
87
|
setStatus("error");
|
|
@@ -78,6 +102,7 @@ function useS3Upload(serverUrlOverride) {
|
|
|
78
102
|
};
|
|
79
103
|
}
|
|
80
104
|
//#endregion
|
|
105
|
+
exports.resolveUploadBlob = resolveUploadBlob;
|
|
81
106
|
exports.useS3Upload = useS3Upload;
|
|
82
107
|
|
|
83
108
|
//# sourceMappingURL=useS3Upload.js.map
|
|
@@ -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\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\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:
|
|
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":"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"}
|
|
@@ -13,6 +13,29 @@ async function getPresignedUrl(filename, filetype, serverUrl) {
|
|
|
13
13
|
if (!res.ok) throw new Error("Failed to get presigned URL");
|
|
14
14
|
return (await res.json()).url;
|
|
15
15
|
}
|
|
16
|
+
function isBlobInput(file) {
|
|
17
|
+
return typeof Blob !== "undefined" && file instanceof Blob;
|
|
18
|
+
}
|
|
19
|
+
function getInputName(file) {
|
|
20
|
+
if (!isBlobInput(file)) return file.name ?? `upload-${Date.now()}`;
|
|
21
|
+
return "name" in file && typeof file.name === "string" ? file.name : `upload-${Date.now()}`;
|
|
22
|
+
}
|
|
23
|
+
function getInputType(file, blob) {
|
|
24
|
+
if (!isBlobInput(file)) return file.type ?? blob.type ?? "application/octet-stream";
|
|
25
|
+
return file.type || "application/octet-stream";
|
|
26
|
+
}
|
|
27
|
+
async function resolveUploadBlob(file) {
|
|
28
|
+
const blob = isBlobInput(file) ? file : await fetch(file.uri).then((response) => response.blob());
|
|
29
|
+
return {
|
|
30
|
+
blob,
|
|
31
|
+
name: getInputName(file),
|
|
32
|
+
type: getInputType(file, blob),
|
|
33
|
+
size: "size" in file && typeof file.size === "number" ? file.size : blob.size
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function createUploadId() {
|
|
37
|
+
return globalThis.crypto?.randomUUID?.() ?? Math.random().toString(36).slice(2, 11);
|
|
38
|
+
}
|
|
16
39
|
function useS3Upload(serverUrlOverride) {
|
|
17
40
|
const { serverUrl } = useAppConfig();
|
|
18
41
|
const resolvedServerUrl = serverUrlOverride ?? serverUrl;
|
|
@@ -27,10 +50,11 @@ function useS3Upload(serverUrlOverride) {
|
|
|
27
50
|
setError(null);
|
|
28
51
|
setUploadedUrl(null);
|
|
29
52
|
try {
|
|
30
|
-
const
|
|
31
|
-
const
|
|
53
|
+
const resolvedFile = await resolveUploadBlob(file);
|
|
54
|
+
const extension = resolvedFile.name.split(".").pop() || "";
|
|
55
|
+
const uuid = createUploadId();
|
|
32
56
|
const filename = prefix ? `${prefix}/${uuid}${extension ? `.${extension}` : ""}` : `${uuid}${extension ? `.${extension}` : ""}`;
|
|
33
|
-
const filetype =
|
|
57
|
+
const filetype = resolvedFile.type;
|
|
34
58
|
const presignedUrl = await getPresignedUrl(filename, filetype, resolvedServerUrl);
|
|
35
59
|
return await new Promise((resolve, reject) => {
|
|
36
60
|
const xhr = new XMLHttpRequest();
|
|
@@ -56,7 +80,7 @@ function useS3Upload(serverUrlOverride) {
|
|
|
56
80
|
setError("Network error during upload");
|
|
57
81
|
reject(/* @__PURE__ */ new Error("Network error during upload"));
|
|
58
82
|
};
|
|
59
|
-
xhr.send(
|
|
83
|
+
xhr.send(resolvedFile.blob);
|
|
60
84
|
});
|
|
61
85
|
} catch (err) {
|
|
62
86
|
setStatus("error");
|
|
@@ -77,6 +101,6 @@ function useS3Upload(serverUrlOverride) {
|
|
|
77
101
|
};
|
|
78
102
|
}
|
|
79
103
|
//#endregion
|
|
80
|
-
export { useS3Upload };
|
|
104
|
+
export { resolveUploadBlob, useS3Upload };
|
|
81
105
|
|
|
82
106
|
//# sourceMappingURL=useS3Upload.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useS3Upload.mjs","names":[],"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\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\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:
|
|
1
|
+
{"version":3,"file":"useS3Upload.mjs","names":[],"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":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { UploadBlobInput } from "./useS3Upload.mjs";
|
|
2
|
+
|
|
1
3
|
//#region src/modules/file/hooks/useUpload.d.ts
|
|
2
4
|
type UploadStatus = "pending" | "uploading" | "completed" | "error";
|
|
3
5
|
interface UploadFileTask {
|
|
4
6
|
id: string;
|
|
5
|
-
file:
|
|
7
|
+
file: UploadBlobInput;
|
|
6
8
|
progress: number;
|
|
7
9
|
status: UploadStatus;
|
|
8
10
|
errorMessage?: string;
|
|
@@ -10,10 +12,10 @@ interface UploadFileTask {
|
|
|
10
12
|
totalBytes: number;
|
|
11
13
|
}
|
|
12
14
|
declare function useFileUpload(): {
|
|
13
|
-
upload: <T>(type: string, file:
|
|
15
|
+
upload: <T>(type: string, file: UploadBlobInput) => Promise<T>;
|
|
14
16
|
reset: () => void;
|
|
15
17
|
id?: string | undefined;
|
|
16
|
-
file?:
|
|
18
|
+
file?: UploadBlobInput | undefined;
|
|
17
19
|
progress?: number | undefined;
|
|
18
20
|
status?: UploadStatus | undefined;
|
|
19
21
|
errorMessage?: string;
|
|
@@ -23,7 +25,7 @@ declare function useFileUpload(): {
|
|
|
23
25
|
declare function useMultipartUpload(): {
|
|
24
26
|
uploadQueue: UploadFileTask[];
|
|
25
27
|
overallProgress: number;
|
|
26
|
-
uploadFiles: (type: string, files:
|
|
28
|
+
uploadFiles: (type: string, files: UploadBlobInput[]) => Promise<void>;
|
|
27
29
|
reset: () => void;
|
|
28
30
|
getTotalBytes: () => number;
|
|
29
31
|
getTotalBytesUploaded: () => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUpload.d.mts","names":[],"sources":["../../../../../src/modules/file/hooks/useUpload.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUpload.d.mts","names":[],"sources":["../../../../../src/modules/file/hooks/useUpload.ts"],"mappings":";;;KAIY,YAAA;AAAA,UAEK,cAAA;EACf,EAAA;EACA,IAAA,EAAM,eAAA;EACN,QAAA;EACA,MAAA,EAAQ,YAAA;EACR,YAAA;EACA,aAAA;EACA,UAAA;AAAA;AAAA,iBAyEc,aAAA,CAAA;cAKJ,IAAA,UAAc,IAAA,EAAQ,eAAA,KAAkB,OAAA,CAAQ,CAAA;;;;;;;;;;iBAmD5C,kBAAA,CAAA;;;8BA8DO,KAAA,EAAS,eAAA,OAAiB,OAAA"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { UploadBlobInput } from "./useS3Upload.js";
|
|
2
|
+
|
|
1
3
|
//#region src/modules/file/hooks/useUpload.d.ts
|
|
2
4
|
type UploadStatus = "pending" | "uploading" | "completed" | "error";
|
|
3
5
|
interface UploadFileTask {
|
|
4
6
|
id: string;
|
|
5
|
-
file:
|
|
7
|
+
file: UploadBlobInput;
|
|
6
8
|
progress: number;
|
|
7
9
|
status: UploadStatus;
|
|
8
10
|
errorMessage?: string;
|
|
@@ -10,10 +12,10 @@ interface UploadFileTask {
|
|
|
10
12
|
totalBytes: number;
|
|
11
13
|
}
|
|
12
14
|
declare function useFileUpload(): {
|
|
13
|
-
upload: <T>(type: string, file:
|
|
15
|
+
upload: <T>(type: string, file: UploadBlobInput) => Promise<T>;
|
|
14
16
|
reset: () => void;
|
|
15
17
|
id?: string | undefined;
|
|
16
|
-
file?:
|
|
18
|
+
file?: UploadBlobInput | undefined;
|
|
17
19
|
progress?: number | undefined;
|
|
18
20
|
status?: UploadStatus | undefined;
|
|
19
21
|
errorMessage?: string;
|
|
@@ -23,7 +25,7 @@ declare function useFileUpload(): {
|
|
|
23
25
|
declare function useMultipartUpload(): {
|
|
24
26
|
uploadQueue: UploadFileTask[];
|
|
25
27
|
overallProgress: number;
|
|
26
|
-
uploadFiles: (type: string, files:
|
|
28
|
+
uploadFiles: (type: string, files: UploadBlobInput[]) => Promise<void>;
|
|
27
29
|
reset: () => void;
|
|
28
30
|
getTotalBytes: () => number;
|
|
29
31
|
getTotalBytesUploaded: () => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUpload.d.ts","names":[],"sources":["../../../../../src/modules/file/hooks/useUpload.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUpload.d.ts","names":[],"sources":["../../../../../src/modules/file/hooks/useUpload.ts"],"mappings":";;;KAIY,YAAA;AAAA,UAEK,cAAA;EACf,EAAA;EACA,IAAA,EAAM,eAAA;EACN,QAAA;EACA,MAAA,EAAQ,YAAA;EACR,YAAA;EACA,aAAA;EACA,UAAA;AAAA;AAAA,iBAyEc,aAAA,CAAA;cAKJ,IAAA,UAAc,IAAA,EAAQ,eAAA,KAAkB,OAAA,CAAQ,CAAA;;;;;;;;;;iBAmD5C,kBAAA,CAAA;;;8BA8DO,KAAA,EAAS,eAAA,OAAiB,OAAA"}
|