wcz-test 6.25.0 → 6.27.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/DialogsHooks-DzqOb2Zx.js +233 -0
- package/dist/DialogsHooks-DzqOb2Zx.js.map +1 -0
- package/dist/FileHooks-C8Akmy_o.js +2694 -0
- package/dist/FileHooks-C8Akmy_o.js.map +1 -0
- package/dist/RouterListItemButton-Spme9i4b.js +661 -0
- package/dist/RouterListItemButton-Spme9i4b.js.map +1 -0
- package/dist/_commonjsHelpers-DaMA6jEr.js +9 -0
- package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
- package/dist/components.js +2666 -518
- package/dist/components.js.map +1 -1
- package/dist/hooks.js +908 -354
- package/dist/hooks.js.map +1 -1
- package/dist/index-Biz5inV2.js +268 -0
- package/dist/index-Biz5inV2.js.map +1 -0
- package/dist/index.d.ts +0 -3
- package/dist/index.js +746 -1448
- package/dist/index.js.map +1 -1
- package/dist/queries.js +111 -113
- package/dist/queries.js.map +1 -1
- package/dist/utils-IWcYo8tM.js +106 -0
- package/dist/utils-IWcYo8tM.js.map +1 -0
- package/dist/utils.js +5 -5
- package/dist/vite.js +11 -11
- package/dist/vite.js.map +1 -1
- package/package.json +8 -15
- package/dist/DialogsHooks-DWkC9zAf.js +0 -114
- package/dist/DialogsHooks-DWkC9zAf.js.map +0 -1
- package/dist/FileHooks-CltSzAf8.js +0 -300
- package/dist/FileHooks-CltSzAf8.js.map +0 -1
- package/dist/RouterListItemButton-C_SG0uka.js +0 -18
- package/dist/RouterListItemButton-C_SG0uka.js.map +0 -1
- package/dist/env-4ZoUrNqp.js +0 -28
- package/dist/env-4ZoUrNqp.js.map +0 -1
- package/dist/queryClient--EvGPhnh.js +0 -6
- package/dist/queryClient--EvGPhnh.js.map +0 -1
- package/dist/server.d.ts +0 -11
- package/dist/server.js +0 -70
- package/dist/server.js.map +0 -1
- package/dist/session-7yb0BETM.js +0 -76
- package/dist/session-7yb0BETM.js.map +0 -1
- package/dist/utils-CZraUjBd.js +0 -82
- package/dist/utils-CZraUjBd.js.map +0 -1
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import { c as d } from "react/compiler-runtime";
|
|
2
|
-
import { useQuery as T, useMutation as N, useQueryClient as _ } from "@tanstack/react-query";
|
|
3
|
-
import g from "file-saver";
|
|
4
|
-
import { useState as I } from "react";
|
|
5
|
-
import { Upload as P } from "tus-js-client";
|
|
6
|
-
import { uuidv7 as w } from "uuidv7";
|
|
7
|
-
import h from "zod";
|
|
8
|
-
import { F as U } from "./FileMeta-Bzeo3ie9.js";
|
|
9
|
-
import { t as R, h as p } from "./utils-CZraUjBd.js";
|
|
10
|
-
import { c as v } from "./env-4ZoUrNqp.js";
|
|
11
|
-
const l = "file", $ = 1e3 * 60 * 60, m = R(v.VITE_APP_TITLE);
|
|
12
|
-
h.object({
|
|
13
|
-
appName: h.string().min(1).max(255).default(m).optional(),
|
|
14
|
-
subId: h.uuid()
|
|
15
|
-
});
|
|
16
|
-
const se = (t, n) => {
|
|
17
|
-
const e = d(12);
|
|
18
|
-
let a;
|
|
19
|
-
e[0] !== t.appName || e[1] !== t.subId ? (a = new URLSearchParams(), a.append("appName", t.appName ?? m), a.append("subId", t.subId), e[0] = t.appName, e[1] = t.subId, e[2] = a) : a = e[2];
|
|
20
|
-
const u = t.appName ?? m;
|
|
21
|
-
let i;
|
|
22
|
-
e[3] !== t.subId || e[4] !== u ? (i = [l, "meta", u, t.subId], e[3] = t.subId, e[4] = u, e[5] = i) : i = e[5];
|
|
23
|
-
let r;
|
|
24
|
-
e[6] !== a ? (r = (c) => {
|
|
25
|
-
const {
|
|
26
|
-
signal: o
|
|
27
|
-
} = c;
|
|
28
|
-
return p.request({
|
|
29
|
-
url: `/${l}/v1/meta?${a.toString()}`,
|
|
30
|
-
method: "GET",
|
|
31
|
-
signal: o
|
|
32
|
-
}).then(L);
|
|
33
|
-
}, e[6] = a, e[7] = r) : r = e[7];
|
|
34
|
-
let s;
|
|
35
|
-
return e[8] !== n || e[9] !== i || e[10] !== r ? (s = {
|
|
36
|
-
...n,
|
|
37
|
-
queryKey: i,
|
|
38
|
-
queryFn: r,
|
|
39
|
-
staleTime: $,
|
|
40
|
-
gcTime: $,
|
|
41
|
-
refetchOnWindowFocus: !1
|
|
42
|
-
}, e[8] = n, e[9] = i, e[10] = r, e[11] = s) : s = e[11], T(s);
|
|
43
|
-
};
|
|
44
|
-
h.object({
|
|
45
|
-
appName: h.string().min(1).max(255).default(m).optional(),
|
|
46
|
-
meta: U.nullish()
|
|
47
|
-
});
|
|
48
|
-
const ie = (t, n) => {
|
|
49
|
-
const e = d(13);
|
|
50
|
-
let a;
|
|
51
|
-
e[0] !== t.appName || e[1] !== t.meta?.id ? (a = new URLSearchParams(), a.append("appName", t.appName ?? m), a.append("id", t.meta?.id ?? ""), e[0] = t.appName, e[1] = t.meta?.id, e[2] = a) : a = e[2];
|
|
52
|
-
const u = t.appName ?? m, i = t.meta?.id;
|
|
53
|
-
let r;
|
|
54
|
-
e[3] !== u || e[4] !== i ? (r = [l, "thumbnail", u, i], e[3] = u, e[4] = i, e[5] = r) : r = e[5];
|
|
55
|
-
let s;
|
|
56
|
-
e[6] !== a ? (s = (f) => {
|
|
57
|
-
const {
|
|
58
|
-
signal: b
|
|
59
|
-
} = f;
|
|
60
|
-
return p.request({
|
|
61
|
-
url: `/${l}/v1/thumbnail?${a.toString()}`,
|
|
62
|
-
method: "GET",
|
|
63
|
-
signal: b,
|
|
64
|
-
responseType: "blob"
|
|
65
|
-
}).then(x);
|
|
66
|
-
}, e[6] = a, e[7] = s) : s = e[7];
|
|
67
|
-
const c = !!t.meta && n?.enabled !== !1;
|
|
68
|
-
let o;
|
|
69
|
-
return e[8] !== n || e[9] !== r || e[10] !== s || e[11] !== c ? (o = {
|
|
70
|
-
...n,
|
|
71
|
-
queryKey: r,
|
|
72
|
-
queryFn: s,
|
|
73
|
-
select: K,
|
|
74
|
-
staleTime: $,
|
|
75
|
-
gcTime: $,
|
|
76
|
-
refetchOnWindowFocus: !1,
|
|
77
|
-
enabled: c
|
|
78
|
-
}, e[8] = n, e[9] = r, e[10] = s, e[11] = c, e[12] = o) : o = e[12], T(o);
|
|
79
|
-
};
|
|
80
|
-
h.object({
|
|
81
|
-
appName: h.string().min(1).max(255).default(m).optional(),
|
|
82
|
-
meta: U.nullish()
|
|
83
|
-
});
|
|
84
|
-
const le = (t, n) => {
|
|
85
|
-
const e = d(13);
|
|
86
|
-
let a;
|
|
87
|
-
e[0] !== t.appName || e[1] !== t.meta?.id ? (a = new URLSearchParams(), a.append("appName", t.appName ?? m), a.append("id", t.meta?.id ?? ""), e[0] = t.appName, e[1] = t.meta?.id, e[2] = a) : a = e[2];
|
|
88
|
-
const u = t.appName ?? m, i = t.meta?.id;
|
|
89
|
-
let r;
|
|
90
|
-
e[3] !== u || e[4] !== i ? (r = [l, u, i], e[3] = u, e[4] = i, e[5] = r) : r = e[5];
|
|
91
|
-
let s;
|
|
92
|
-
e[6] !== a ? (s = (f) => {
|
|
93
|
-
const {
|
|
94
|
-
signal: b
|
|
95
|
-
} = f;
|
|
96
|
-
return p.request({
|
|
97
|
-
url: `/${l}/v1?${a.toString()}`,
|
|
98
|
-
method: "GET",
|
|
99
|
-
signal: b,
|
|
100
|
-
responseType: "blob"
|
|
101
|
-
}).then(O);
|
|
102
|
-
}, e[6] = a, e[7] = s) : s = e[7];
|
|
103
|
-
const c = !!t.meta && n?.enabled !== !1;
|
|
104
|
-
let o;
|
|
105
|
-
return e[8] !== n || e[9] !== r || e[10] !== s || e[11] !== c ? (o = {
|
|
106
|
-
...n,
|
|
107
|
-
queryKey: r,
|
|
108
|
-
queryFn: s,
|
|
109
|
-
select: C,
|
|
110
|
-
staleTime: $,
|
|
111
|
-
gcTime: $,
|
|
112
|
-
refetchOnWindowFocus: !1,
|
|
113
|
-
enabled: c
|
|
114
|
-
}, e[8] = n, e[9] = r, e[10] = s, e[11] = c, e[12] = o) : o = e[12], T(o);
|
|
115
|
-
}, oe = (t) => {
|
|
116
|
-
const n = d(2);
|
|
117
|
-
let e;
|
|
118
|
-
return n[0] !== t ? (e = {
|
|
119
|
-
...t,
|
|
120
|
-
mutationFn: A,
|
|
121
|
-
onSuccess: Q
|
|
122
|
-
}, n[0] = t, n[1] = e) : e = n[1], N(e);
|
|
123
|
-
}, me = (t) => {
|
|
124
|
-
const n = d(2);
|
|
125
|
-
let e;
|
|
126
|
-
return n[0] !== t ? (e = {
|
|
127
|
-
...t,
|
|
128
|
-
mutationFn: D,
|
|
129
|
-
onSuccess: M
|
|
130
|
-
}, n[0] = t, n[1] = e) : e = n[1], N(e);
|
|
131
|
-
}, ce = (t) => {
|
|
132
|
-
const n = d(5), e = _();
|
|
133
|
-
let a;
|
|
134
|
-
n[0] !== e ? (a = () => e.invalidateQueries({
|
|
135
|
-
queryKey: [l, "meta"],
|
|
136
|
-
exact: !1
|
|
137
|
-
}), n[0] = e, n[1] = a) : a = n[1];
|
|
138
|
-
let u;
|
|
139
|
-
return n[2] !== t || n[3] !== a ? (u = {
|
|
140
|
-
...t,
|
|
141
|
-
mutationFn: W,
|
|
142
|
-
onSettled: a
|
|
143
|
-
}, n[2] = t, n[3] = a, n[4] = u) : u = n[4], N(u);
|
|
144
|
-
}, de = (t) => {
|
|
145
|
-
const n = d(5), e = _();
|
|
146
|
-
let a;
|
|
147
|
-
n[0] !== e ? (a = () => e.invalidateQueries({
|
|
148
|
-
queryKey: [l, "meta"],
|
|
149
|
-
exact: !1
|
|
150
|
-
}), n[0] = e, n[1] = a) : a = n[1];
|
|
151
|
-
let u;
|
|
152
|
-
return n[2] !== t || n[3] !== a ? (u = {
|
|
153
|
-
...t,
|
|
154
|
-
mutationFn: H,
|
|
155
|
-
onSettled: a
|
|
156
|
-
}, n[2] = t, n[3] = a, n[4] = u) : u = n[4], N(u);
|
|
157
|
-
}, fe = (t) => {
|
|
158
|
-
const n = d(5), e = _();
|
|
159
|
-
let a;
|
|
160
|
-
n[0] !== e ? (a = () => e.invalidateQueries({
|
|
161
|
-
queryKey: [l, "meta"],
|
|
162
|
-
exact: !1
|
|
163
|
-
}), n[0] = e, n[1] = a) : a = n[1];
|
|
164
|
-
let u;
|
|
165
|
-
return n[2] !== t || n[3] !== a ? (u = {
|
|
166
|
-
...t,
|
|
167
|
-
mutationFn: k,
|
|
168
|
-
onSettled: a
|
|
169
|
-
}, n[2] = t, n[3] = a, n[4] = u) : u = n[4], N(u);
|
|
170
|
-
}, pe = (t) => {
|
|
171
|
-
const n = d(8), {
|
|
172
|
-
subId: e,
|
|
173
|
-
onSuccess: a,
|
|
174
|
-
onError: u
|
|
175
|
-
} = t, [i, r] = I(0), s = _();
|
|
176
|
-
let c;
|
|
177
|
-
n[0] !== u || n[1] !== a || n[2] !== s || n[3] !== e ? (c = async (b) => {
|
|
178
|
-
if (!e)
|
|
179
|
-
throw new Error("subId is required for file upload");
|
|
180
|
-
const y = {
|
|
181
|
-
id: w(),
|
|
182
|
-
appName: m,
|
|
183
|
-
subId: e,
|
|
184
|
-
fileName: b.name
|
|
185
|
-
}, E = new P(b, {
|
|
186
|
-
endpoint: `${v.VITE_API_URL}/${l}/v1/upload`,
|
|
187
|
-
chunkSize: 1048576,
|
|
188
|
-
metadata: {
|
|
189
|
-
id: y.id,
|
|
190
|
-
appName: y.appName,
|
|
191
|
-
subId: y.subId,
|
|
192
|
-
fileName: y.fileName,
|
|
193
|
-
fileExtension: b.type
|
|
194
|
-
},
|
|
195
|
-
headers: {
|
|
196
|
-
Authorization: "Bearer YOUR_ACCESS_TOKEN_HERE"
|
|
197
|
-
},
|
|
198
|
-
onError: (q) => {
|
|
199
|
-
r(0), u?.(q);
|
|
200
|
-
},
|
|
201
|
-
onProgress: (q, S) => {
|
|
202
|
-
r(q / S * 100);
|
|
203
|
-
},
|
|
204
|
-
onSuccess: () => {
|
|
205
|
-
r(0), s.invalidateQueries({
|
|
206
|
-
queryKey: [l, "meta", e],
|
|
207
|
-
exact: !1
|
|
208
|
-
}), a?.(y);
|
|
209
|
-
}
|
|
210
|
-
}), F = await E.findPreviousUploads();
|
|
211
|
-
F.length > 0 && E.resumeFromPreviousUpload(F[0]), E.start();
|
|
212
|
-
}, n[0] = u, n[1] = a, n[2] = s, n[3] = e, n[4] = c) : c = n[4];
|
|
213
|
-
const o = c;
|
|
214
|
-
let f;
|
|
215
|
-
return n[5] !== o || n[6] !== i ? (f = {
|
|
216
|
-
mutate: o,
|
|
217
|
-
progress: i
|
|
218
|
-
}, n[5] = o, n[6] = i, n[7] = f) : f = n[7], f;
|
|
219
|
-
};
|
|
220
|
-
function L(t) {
|
|
221
|
-
return t.data;
|
|
222
|
-
}
|
|
223
|
-
function x(t) {
|
|
224
|
-
return t.data;
|
|
225
|
-
}
|
|
226
|
-
function K(t) {
|
|
227
|
-
return URL.createObjectURL(t);
|
|
228
|
-
}
|
|
229
|
-
function O(t) {
|
|
230
|
-
return t.data;
|
|
231
|
-
}
|
|
232
|
-
function C(t) {
|
|
233
|
-
return URL.createObjectURL(t);
|
|
234
|
-
}
|
|
235
|
-
function G(t) {
|
|
236
|
-
return t.data;
|
|
237
|
-
}
|
|
238
|
-
function A(t) {
|
|
239
|
-
return p.request({
|
|
240
|
-
url: `/${l}/v1/download?appName=${m}&id=${t.id}`,
|
|
241
|
-
method: "GET",
|
|
242
|
-
responseType: "blob"
|
|
243
|
-
}).then(G);
|
|
244
|
-
}
|
|
245
|
-
function Q(t, n) {
|
|
246
|
-
return g(t, `${n.fileName}.${n.fileExtension}`);
|
|
247
|
-
}
|
|
248
|
-
function j(t) {
|
|
249
|
-
return t.data;
|
|
250
|
-
}
|
|
251
|
-
function D(t) {
|
|
252
|
-
return p.request({
|
|
253
|
-
url: `/${l}/v1?appName=${m}&id=${t.id}`,
|
|
254
|
-
method: "GET",
|
|
255
|
-
responseType: "blob"
|
|
256
|
-
}).then(j);
|
|
257
|
-
}
|
|
258
|
-
function M(t) {
|
|
259
|
-
window.open(URL.createObjectURL(t));
|
|
260
|
-
}
|
|
261
|
-
function z(t) {
|
|
262
|
-
return t.data;
|
|
263
|
-
}
|
|
264
|
-
function W(t) {
|
|
265
|
-
return p.request({
|
|
266
|
-
url: `/${l}/v1/meta?appName=${m}&id=${t.id}`,
|
|
267
|
-
method: "PUT",
|
|
268
|
-
data: t
|
|
269
|
-
}).then(z);
|
|
270
|
-
}
|
|
271
|
-
function Y(t) {
|
|
272
|
-
return t.data;
|
|
273
|
-
}
|
|
274
|
-
function H(t) {
|
|
275
|
-
return p.request({
|
|
276
|
-
url: `/${l}/v1?appName=${m}&id=${t.id}`,
|
|
277
|
-
method: "DELETE"
|
|
278
|
-
}).then(Y);
|
|
279
|
-
}
|
|
280
|
-
function V(t) {
|
|
281
|
-
return t.data;
|
|
282
|
-
}
|
|
283
|
-
function k(t) {
|
|
284
|
-
return p.request({
|
|
285
|
-
url: `/${l}/v1?appName=${m}&subId=${t}`,
|
|
286
|
-
method: "DELETE"
|
|
287
|
-
}).then(V);
|
|
288
|
-
}
|
|
289
|
-
export {
|
|
290
|
-
ie as a,
|
|
291
|
-
le as b,
|
|
292
|
-
oe as c,
|
|
293
|
-
me as d,
|
|
294
|
-
ce as e,
|
|
295
|
-
de as f,
|
|
296
|
-
fe as g,
|
|
297
|
-
pe as h,
|
|
298
|
-
se as u
|
|
299
|
-
};
|
|
300
|
-
//# sourceMappingURL=FileHooks-CltSzAf8.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileHooks-CltSzAf8.js","sources":["../src/queries/FileHooks.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport saveAs from \"file-saver\";\r\nimport { useState } from \"react\";\r\nimport { Upload as TusUpload } from \"tus-js-client\";\r\nimport { uuidv7 } from \"uuidv7\";\r\nimport z from \"zod\";\r\nimport type { DetailedError } from \"tus-js-client\";\r\nimport type { DefinedInitialDataOptions, UseMutationOptions } from \"@tanstack/react-query\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\r\nimport { httpClient, toKebabCase } from \"~/lib/utils\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nconst QUERY_KEY = \"file\";\r\nconst HOUR = 1000 * 60 * 60;\r\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\r\n\r\ntype OptionalId = string | undefined | null;\r\n\r\ntype BaseFileMetaArrayQueryOptions = Omit<DefinedInitialDataOptions<Array<FileMeta>>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseBlobQueryOptions = Omit<DefinedInitialDataOptions<Blob, Error, string>, \"queryKey\" | \"queryFn\" | \"select\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseFileMetaMutationOptions = Omit<UseMutationOptions<FileMeta, Error, FileMeta>, \"mutationFn\" | \"onSettled\">;\r\ntype BaseBlobMutationOptions = Omit<UseMutationOptions<Blob, Error, FileMeta>, \"mutationFn\" | \"onSuccess\">;\r\ntype BaseStringMutationOptions = Omit<UseMutationOptions<string, Error, string>, \"mutationFn\" | \"onSettled\">;\r\n\r\nexport const GetFileMetasParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n subId: z.uuid(),\r\n});\r\n\r\nexport type GetFileMetasParams = z.infer<typeof GetFileMetasParamsSchema>;\r\n\r\nexport const useGetFileMetas = (params: GetFileMetasParams, options?: BaseFileMetaArrayQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"subId\", params.subId);\r\n\r\n return useQuery<Array<FileMeta>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"meta\", params.appName ?? APP_NAME, params.subId],\r\n queryFn: ({ signal }) => httpClient.request<Array<FileMeta>>({\r\n url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const GetFileThumbnailParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema.nullish(),\r\n});\r\n\r\nexport type GetFileThumbnailParams = z.infer<typeof GetFileThumbnailParamsSchema>;\r\n\r\nexport const useGetFileThumbnail = (params: GetFileThumbnailParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta?.id ?? \"\");\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName ?? APP_NAME, params.meta?.id],\r\n queryFn: ({ signal }) => httpClient.request<Blob>({\r\n url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }).then(request => request.data),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n enabled: !!params.meta && options?.enabled !== false,\r\n });\r\n};\r\n\r\nexport const GetFileParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema.nullish(),\r\n});\r\n\r\nexport type GetFileParams = z.infer<typeof GetFileParamsSchema>;\r\n\r\nexport const useGetFile = (params: GetFileParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta?.id ?? \"\");\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta?.id],\r\n queryFn: ({ signal }) => httpClient.request<Blob>({\r\n url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }).then(request => request.data),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n enabled: !!params.meta && options?.enabled !== false,\r\n });\r\n};\r\n\r\nexport const useDownloadFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request<Blob>({\r\n url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(request => request.data),\r\n onSuccess: (data, variables) => saveAs(data, `${variables.fileName}.${variables.fileExtension}`)\r\n });\r\n};\r\n\r\nexport const useOpenFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request<Blob>({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(request => request.data),\r\n onSuccess: data => { window.open(URL.createObjectURL(data)); }\r\n });\r\n};\r\n\r\nexport const useUpdateFileMeta = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request<FileMeta>({\r\n url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"PUT\",\r\n data: meta\r\n }).then(request => request.data),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\nexport const useDeleteFile = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request<FileMeta>({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"DELETE\"\r\n }).then(request => request.data),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n};\r\n\r\nexport const useDeleteFiles = (options?: BaseStringMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<string, Error, string>({\r\n ...options,\r\n mutationFn: subId => httpClient.request<string>({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,\r\n method: \"DELETE\"\r\n }).then(request => request.data),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\ninterface UseUploadFileProps {\r\n subId: OptionalId;\r\n onSuccess?: (meta: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\">) => void;\r\n onError?: (error: Error | DetailedError) => void;\r\n}\r\n\r\nexport const useUploadFile = ({ subId, onSuccess, onError }: UseUploadFileProps) => {\r\n const [progress, setProgress] = useState<number>(0);\r\n const queryClient = useQueryClient();\r\n\r\n const mutate = async (file: File) => {\r\n if (!subId) throw new Error(\"subId is required for file upload\");\r\n\r\n const metadata: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\"> = {\r\n id: uuidv7(),\r\n appName: APP_NAME,\r\n subId: subId,\r\n fileName: file.name,\r\n };\r\n\r\n const accessToken = \"YOUR_ACCESS_TOKEN_HERE\"; // Replace with actual token retrieval logic\r\n\r\n const upload = new TusUpload(file, {\r\n endpoint: `${clientEnv.VITE_API_URL}/${QUERY_KEY}/v1/upload`,\r\n chunkSize: 1_048_576, // 1 MB\r\n metadata: {\r\n id: metadata.id,\r\n appName: metadata.appName,\r\n subId: metadata.subId,\r\n fileName: metadata.fileName,\r\n fileExtension: file.type\r\n },\r\n headers: { \"Authorization\": `Bearer ${accessToken}` },\r\n onError: (error) => {\r\n setProgress(0);\r\n onError?.(error);\r\n },\r\n onProgress: (bytesUploaded, bytesTotal) => {\r\n setProgress((bytesUploaded / bytesTotal) * 100);\r\n },\r\n onSuccess: () => {\r\n setProgress(0);\r\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\", subId], exact: false });\r\n onSuccess?.(metadata);\r\n },\r\n });\r\n\r\n const previousUploads = await upload.findPreviousUploads();\r\n if (previousUploads.length > 0) {\r\n upload.resumeFromPreviousUpload(previousUploads[0]);\r\n }\r\n\r\n upload.start();\r\n };\r\n\r\n return { mutate, progress };\r\n};\r\n"],"names":["QUERY_KEY","HOUR","APP_NAME","toKebabCase","clientEnv","VITE_APP_TITLE","z","object","appName","string","min","max","default","optional","subId","uuid","useGetFileMetas","params","options","$","_c","queryParams","URLSearchParams","append","t0","t1","t2","t3","signal","httpClient","request","url","toString","method","then","_temp","queryKey","queryFn","staleTime","gcTime","refetchOnWindowFocus","useQuery","meta","FileMetaSchema","nullish","useGetFileThumbnail","id","t4","responseType","_temp2","enabled","t5","select","_temp3","useGetFile","_temp4","_temp5","useDownloadFile","mutationFn","_temp7","onSuccess","_temp8","useMutation","useOpenFile","_temp0","_temp1","useUpdateFileMeta","queryClient","useQueryClient","invalidateQueries","exact","_temp11","onSettled","useDeleteFile","_temp13","useDeleteFiles","_temp15","useUploadFile","onError","progress","setProgress","useState","file","Error","metadata","uuidv7","fileName","name","upload","TusUpload","endpoint","VITE_API_URL","chunkSize","fileExtension","type","headers","error","onProgress","bytesUploaded","bytesTotal","previousUploads","findPreviousUploads","length","resumeFromPreviousUpload","start","mutate","data","URL","createObjectURL","_temp6","variables","saveAs","_temp9","window","open","_temp10","_temp12","_temp14"],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { c as i } from "react/compiler-runtime";
|
|
3
|
-
import { ListItemButton as f } from "@mui/material";
|
|
4
|
-
import { createLink as c } from "@tanstack/react-router";
|
|
5
|
-
import u from "react";
|
|
6
|
-
const a = u.forwardRef(function(t, o) {
|
|
7
|
-
const n = i(3);
|
|
8
|
-
let m;
|
|
9
|
-
return n[0] !== t || n[1] !== o ? (m = /* @__PURE__ */ r(f, { ref: o, component: "a", ...t }), n[0] = t, n[1] = o, n[2] = m) : m = n[2], m;
|
|
10
|
-
}), s = c(a), L = (e) => {
|
|
11
|
-
const t = i(2);
|
|
12
|
-
let o;
|
|
13
|
-
return t[0] !== e ? (o = /* @__PURE__ */ r(s, { ...e }), t[0] = e, t[1] = o) : o = t[1], o;
|
|
14
|
-
};
|
|
15
|
-
export {
|
|
16
|
-
L as R
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=RouterListItemButton-C_SG0uka.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouterListItemButton-C_SG0uka.js","sources":["../src/components/router/RouterListItemButton.tsx"],"sourcesContent":["import { ListItemButton } from \"@mui/material\";\nimport { createLink } from \"@tanstack/react-router\";\nimport React from \"react\";\nimport type { ListItemButtonProps } from \"@mui/material\";\nimport type { LinkComponent } from \"@tanstack/react-router\";\n\nconst Component = React.forwardRef<HTMLAnchorElement, ListItemButtonProps<\"a\">>(function ButtonComponent(props, reference) {\n return <ListItemButton ref={reference} component=\"a\" {...props} />;\n});\n\nconst CreatedComponent = createLink(Component);\n\nexport const RouterListItemButton: LinkComponent<typeof Component> = (props) => {\n return <CreatedComponent {...props} />;\n};\n"],"names":["Component","React","forwardRef","props","reference","$","_c","t0","ListItemButton","CreatedComponent","createLink","RouterListItemButton","jsx"],"mappings":";;;;;AAMA,MAAMA,IAAYC,EAAMC,WAAwD,SAAAC,GAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,SAAAF,EAAA,CAAA,MAAAF,KAAAE,SAAAD,KACrEG,sBAACC,GAAA,EAAoBJ,KAAAA,GAAqB,WAAA,KAAG,GAAKD,GAAK,GAAIE,OAAAF,GAAAE,OAAAD,GAAAC,OAAAE,KAAAA,IAAAF,EAAA,CAAA,GAA3DE;AAA2D,CACrE,GAEKE,IAAmBC,EAAWV,CAAS,GAEhCW,IAAwDR,CAAAA,MAAA;AAAA,QAAAE,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,SAAAF,SAAAF,KAC1DI,IAAA,gBAAAK,EAACH,GAAA,EAAgB,GAAKN,EAAAA,CAAK,GAAIE,OAAAF,GAAAE,OAAAE,KAAAA,IAAAF,EAAA,CAAA,GAA/BE;AAA+B;"}
|
package/dist/env-4ZoUrNqp.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { createEnv as I } from "@t3-oss/env-core";
|
|
2
|
-
import { z as E } from "zod";
|
|
3
|
-
const t = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1, VITE_API_URL: "http://localhost:3000", VITE_APP_TITLE: "WCZ Layout", VITE_DYNAMSOFT_LICENSE_KEY: "DLS2eyJoYW5kc2hha2VDb2RlIjoiMTAxMjU2MzQ5LTEwMTI4MDIzNyIsIm1haW5TZXJ2ZXJVUkwiOiJodHRwczovL21sdHMuZHluYW1zb2Z0LmNvbS8iLCJvcmdhbml6YXRpb25JRCI6IjEwMTI1NjM0OSIsInN0YW5kYnlTZXJ2ZXJVUkwiOiJodHRwczovL3NsdHMuZHluYW1zb2Z0LmNvbS8iLCJjaGVja0NvZGUiOi0yMjMwMzAzMjZ9", VITE_MUI_LICENSE_KEY: "d7aeb74913a4918a319bf4c253aa1a49Tz0xMjIzOTYsRT0xNzk1ODIzOTk5MDAwLFM9cHJlbWl1bSxMTT1zdWJzY3JpcHRpb24sUFY9aW5pdGlhbCxLVj0y" }, _ = I({
|
|
4
|
-
clientPrefix: "VITE_",
|
|
5
|
-
client: {
|
|
6
|
-
VITE_APP_TITLE: E.string(),
|
|
7
|
-
VITE_MUI_LICENSE_KEY: E.string(),
|
|
8
|
-
VITE_API_URL: E.url()
|
|
9
|
-
},
|
|
10
|
-
runtimeEnv: t,
|
|
11
|
-
emptyStringAsUndefined: !0
|
|
12
|
-
}), n = I({
|
|
13
|
-
server: {
|
|
14
|
-
NODE_ENV: E.enum(["development", "testing", "staging", "production"]),
|
|
15
|
-
MICROSOFT_TENANT_ID: E.string(),
|
|
16
|
-
MICROSOFT_CLIENT_ID: E.string(),
|
|
17
|
-
MICROSOFT_CLIENT_SECRET: E.string(),
|
|
18
|
-
MICROSOFT_REDIRECT_URI: E.url(),
|
|
19
|
-
SESSION_SECRET: E.string()
|
|
20
|
-
},
|
|
21
|
-
runtimeEnv: process.env,
|
|
22
|
-
emptyStringAsUndefined: !0
|
|
23
|
-
});
|
|
24
|
-
export {
|
|
25
|
-
_ as c,
|
|
26
|
-
n as s
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=env-4ZoUrNqp.js.map
|
package/dist/env-4ZoUrNqp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-4ZoUrNqp.js","sources":["../src/env.ts"],"sourcesContent":["import { createEnv } from \"@t3-oss/env-core\";\r\nimport { z } from \"zod\";\r\n\r\nexport const clientEnv = createEnv({\r\n clientPrefix: \"VITE_\",\r\n client: {\r\n VITE_APP_TITLE: z.string(),\r\n VITE_MUI_LICENSE_KEY: z.string(),\r\n VITE_API_URL: z.url(),\r\n },\r\n runtimeEnv: import.meta.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n\r\nexport const serverEnv = createEnv({\r\n server: {\r\n NODE_ENV: z.enum([\"development\", \"testing\", \"staging\", \"production\"]),\r\n MICROSOFT_TENANT_ID: z.string(),\r\n MICROSOFT_CLIENT_ID: z.string(),\r\n MICROSOFT_CLIENT_SECRET: z.string(),\r\n MICROSOFT_REDIRECT_URI: z.url(),\r\n SESSION_SECRET: z.string(),\r\n },\r\n runtimeEnv: process.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n"],"names":["clientEnv","createEnv","clientPrefix","client","VITE_APP_TITLE","z","string","VITE_MUI_LICENSE_KEY","VITE_API_URL","url","runtimeEnv","import","emptyStringAsUndefined","serverEnv","server","NODE_ENV","enum","MICROSOFT_TENANT_ID","MICROSOFT_CLIENT_ID","MICROSOFT_CLIENT_SECRET","MICROSOFT_REDIRECT_URI","SESSION_SECRET","process","env"],"mappings":";;gkBAGaA,IAAYC,EAAU;AAAA,EAC/BC,cAAc;AAAA,EACdC,QAAQ;AAAA,IACJC,gBAAgBC,EAAEC,OAAAA;AAAAA,IAClBC,sBAAsBF,EAAEC,OAAAA;AAAAA,IACxBE,cAAcH,EAAEI,IAAAA;AAAAA,EAAI;AAAA,EAExBC,YAAYC;AAAAA,EACZC,wBAAwB;AAC5B,CAAC,GAEYC,IAAYZ,EAAU;AAAA,EAC/Ba,QAAQ;AAAA,IACJC,UAAUV,EAAEW,KAAK,CAAC,eAAe,WAAW,WAAW,YAAY,CAAC;AAAA,IACpEC,qBAAqBZ,EAAEC,OAAAA;AAAAA,IACvBY,qBAAqBb,EAAEC,OAAAA;AAAAA,IACvBa,yBAAyBd,EAAEC,OAAAA;AAAAA,IAC3Bc,wBAAwBf,EAAEI,IAAAA;AAAAA,IAC1BY,gBAAgBhB,EAAEC,OAAAA;AAAAA,EAAO;AAAA,EAE7BI,YAAYY,QAAQC;AAAAA,EACpBX,wBAAwB;AAC5B,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queryClient--EvGPhnh.js","sources":["../src/lib/queryClient.ts"],"sourcesContent":["import { QueryClient } from \"@tanstack/react-query\";\r\n\r\nexport const queryClient = new QueryClient();\r\n"],"names":["queryClient","QueryClient"],"mappings":";AAEO,MAAMA,IAAc,IAAIC,EAAAA;"}
|
package/dist/server.d.ts
DELETED
package/dist/server.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { setCookie as u, getCookie as d, deleteCookie as l } from "@tanstack/react-start/server";
|
|
2
|
-
import { generateState as m, generateCodeVerifier as f, decodeIdToken as k } from "arctic";
|
|
3
|
-
import { s as p } from "./env-4ZoUrNqp.js";
|
|
4
|
-
import { e as h, s as g, a as w } from "./session-7yb0BETM.js";
|
|
5
|
-
const C = async (e) => {
|
|
6
|
-
const o = new URL(e.url).searchParams.get("redirect_uri") || "/", r = m(), s = f(), a = ["openid", "profile", "offline_access", "User.Read"], n = h.createAuthorizationURL(r, s, a);
|
|
7
|
-
return u("entra_oauth_state", r, {
|
|
8
|
-
secure: p.NODE_ENV === "production",
|
|
9
|
-
path: "/",
|
|
10
|
-
httpOnly: !0,
|
|
11
|
-
sameSite: "lax",
|
|
12
|
-
maxAge: 600
|
|
13
|
-
// 10 minutes
|
|
14
|
-
}), u("entra_code_verifier", s, {
|
|
15
|
-
secure: p.NODE_ENV === "production",
|
|
16
|
-
path: "/",
|
|
17
|
-
httpOnly: !0,
|
|
18
|
-
sameSite: "lax",
|
|
19
|
-
maxAge: 600
|
|
20
|
-
// 10 minutes,
|
|
21
|
-
}), u("entra_redirect_uri", o, {
|
|
22
|
-
secure: p.NODE_ENV === "production",
|
|
23
|
-
path: "/",
|
|
24
|
-
httpOnly: !0,
|
|
25
|
-
sameSite: "lax",
|
|
26
|
-
maxAge: 600
|
|
27
|
-
// 10 minutes,
|
|
28
|
-
}), Response.redirect(n.href);
|
|
29
|
-
}, E = async (e) => {
|
|
30
|
-
const t = new URL(e.url), o = t.searchParams.get("code");
|
|
31
|
-
if (!o) return new Response("Missing code", {
|
|
32
|
-
status: 400
|
|
33
|
-
});
|
|
34
|
-
const r = t.searchParams.get("state"), s = d("entra_oauth_state") ?? null, a = d("entra_code_verifier") ?? null, n = d("entra_redirect_uri") ?? "/";
|
|
35
|
-
if (!r || !s || !a || !n) throw new Response("Missing entra oauth data in cookies", {
|
|
36
|
-
status: 400
|
|
37
|
-
});
|
|
38
|
-
if (r !== s) return new Response("Invalid oauth state", {
|
|
39
|
-
status: 400
|
|
40
|
-
});
|
|
41
|
-
l("entra_oauth_state"), l("entra_code_verifier"), l("entra_redirect_uri");
|
|
42
|
-
const i = await h.validateAuthorizationCode(o, a), _ = i.idToken(), c = k(_);
|
|
43
|
-
return await g({
|
|
44
|
-
refreshToken: i.refreshToken(),
|
|
45
|
-
user: {
|
|
46
|
-
id: c.oid,
|
|
47
|
-
name: c.name.split("/")[0],
|
|
48
|
-
email: c.preferred_username
|
|
49
|
-
}
|
|
50
|
-
}), await w(i.accessToken()), new Response(null, {
|
|
51
|
-
status: 302,
|
|
52
|
-
headers: {
|
|
53
|
-
Location: n
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}, L = async (e) => {
|
|
57
|
-
const t = new URL(e.url);
|
|
58
|
-
return new Response(null, {
|
|
59
|
-
status: 302,
|
|
60
|
-
headers: {
|
|
61
|
-
Location: t.href
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
export {
|
|
66
|
-
E as callback,
|
|
67
|
-
C as login,
|
|
68
|
-
L as logout
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sources":["../src/lib/auth/api.ts"],"sourcesContent":["import { deleteCookie, getCookie, setCookie } from \"@tanstack/react-start/server\";\r\nimport { decodeIdToken, generateCodeVerifier, generateState } from \"arctic\";\r\nimport type jwt from \"jsonwebtoken\";\r\nimport { serverEnv } from \"~/env\";\r\nimport { entraId } from \"~/lib/auth/entra\";\r\nimport { setSessionAccessTokenCookie, setSessionCookie } from \"~/lib/auth/session\";\r\n\r\nexport const login = async (request: Request): Promise<Response> => {\r\n const url = new URL(request.url);\r\n const redirectUri = url.searchParams.get(\"redirect_uri\") || \"/\";\r\n\r\n const state = generateState();\r\n const codeVerifier = generateCodeVerifier();\r\n const scopes = [\"openid\", \"profile\", \"offline_access\", \"User.Read\"];\r\n const authorizationURL = entraId.createAuthorizationURL(state, codeVerifier, scopes);\r\n\r\n setCookie(\"entra_oauth_state\", state, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 60 * 10 // 10 minutes\r\n });\r\n\r\n setCookie(\"entra_code_verifier\", codeVerifier, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 60 * 10 // 10 minutes,\r\n });\r\n\r\n setCookie(\"entra_redirect_uri\", redirectUri, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 60 * 10 // 10 minutes,\r\n });\r\n\r\n return Response.redirect(authorizationURL.href);\r\n};\r\n\r\nexport const callback = async (request: Request): Promise<Response> => {\r\n const url = new URL(request.url);\r\n const code = url.searchParams.get(\"code\");\r\n if (!code) return new Response(\"Missing code\", { status: 400 });\r\n const state = url.searchParams.get(\"state\");\r\n const storedState = getCookie(\"entra_oauth_state\") ?? null;\r\n const codeVerifier = getCookie(\"entra_code_verifier\") ?? null;\r\n const redirectUri = getCookie(\"entra_redirect_uri\") ?? \"/\";\r\n\r\n if (!state || !storedState || !codeVerifier || !redirectUri) throw new Response(\"Missing entra oauth data in cookies\", { status: 400 });\r\n if (state !== storedState) return new Response(\"Invalid oauth state\", { status: 400 });\r\n\r\n deleteCookie(\"entra_oauth_state\");\r\n deleteCookie(\"entra_code_verifier\");\r\n deleteCookie(\"entra_redirect_uri\");\r\n\r\n const tokens = await entraId.validateAuthorizationCode(code, codeVerifier);\r\n\r\n const idToken = tokens.idToken();\r\n const claims = decodeIdToken(idToken) as jwt.JwtPayload;\r\n\r\n await setSessionCookie({\r\n refreshToken: tokens.refreshToken(),\r\n user: {\r\n id: claims.oid,\r\n name: claims.name.split(\"/\")[0],\r\n email: claims.preferred_username,\r\n }\r\n });\r\n\r\n await setSessionAccessTokenCookie(tokens.accessToken());\r\n\r\n return new Response(null, {\r\n status: 302,\r\n headers: { Location: redirectUri },\r\n });\r\n};\r\n\r\nexport const logout = async (request: Request): Promise<Response> => {\r\n const url = new URL(request.url);\r\n\r\n // const { session } = await validateRequest();\r\n // if (!session) {\r\n // return new Response(null, { status: 302, headers: { Location: \"/\" } });\r\n // }\r\n // setCookie(SESSION_COOKIE_NAME, \"\", {\r\n // httpOnly: true,\r\n // sameSite: \"lax\",\r\n // secure: serverEnv.NODE_ENV === \"production\",\r\n // maxAge: 0,\r\n // path: \"/\",\r\n // });\r\n\r\n return new Response(null, { status: 302, headers: { Location: url.href } });\r\n};\r\n"],"names":["login","request","redirectUri","URL","url","searchParams","get","state","generateState","codeVerifier","generateCodeVerifier","scopes","authorizationURL","entraId","createAuthorizationURL","setCookie","secure","serverEnv","NODE_ENV","path","httpOnly","sameSite","maxAge","Response","redirect","href","callback","code","status","storedState","getCookie","deleteCookie","tokens","validateAuthorizationCode","idToken","claims","decodeIdToken","setSessionCookie","refreshToken","user","id","oid","name","split","email","preferred_username","setSessionAccessTokenCookie","accessToken","headers","Location","logout"],"mappings":";;;;AAOO,MAAMA,IAAQ,OAAOC,MAAwC;AAEhE,QAAMC,IADM,IAAIC,IAAIF,EAAQG,GAAG,EACPC,aAAaC,IAAI,cAAc,KAAK,KAEtDC,IAAQC,EAAAA,GACRC,IAAeC,EAAAA,GACfC,IAAS,CAAC,UAAU,WAAW,kBAAkB,WAAW,GAC5DC,IAAmBC,EAAQC,uBAAuBP,GAAOE,GAAcE,CAAM;AAEnFI,SAAAA,EAAU,qBAAqBR,GAAO;AAAA,IAClCS,QAAQC,EAAUC,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ;AAAA;AAAA,EAAK,CAChB,GAEDP,EAAU,uBAAuBN,GAAc;AAAA,IAC3CO,QAAQC,EAAUC,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ;AAAA;AAAA,EAAK,CAChB,GAEDP,EAAU,sBAAsBb,GAAa;AAAA,IACzCc,QAAQC,EAAUC,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ;AAAA;AAAA,EAAK,CAChB,GAEMC,SAASC,SAASZ,EAAiBa,IAAI;AAClD,GAEaC,IAAW,OAAOzB,MAAwC;AACnE,QAAMG,IAAM,IAAID,IAAIF,EAAQG,GAAG,GACzBuB,IAAOvB,EAAIC,aAAaC,IAAI,MAAM;AACxC,MAAI,CAACqB,EAAM,QAAO,IAAIJ,SAAS,gBAAgB;AAAA,IAAEK,QAAQ;AAAA,EAAA,CAAK;AAC9D,QAAMrB,IAAQH,EAAIC,aAAaC,IAAI,OAAO,GACpCuB,IAAcC,EAAU,mBAAmB,KAAK,MAChDrB,IAAeqB,EAAU,qBAAqB,KAAK,MACnD5B,IAAc4B,EAAU,oBAAoB,KAAK;AAEvD,MAAI,CAACvB,KAAS,CAACsB,KAAe,CAACpB,KAAgB,CAACP,EAAa,OAAM,IAAIqB,SAAS,uCAAuC;AAAA,IAAEK,QAAQ;AAAA,EAAA,CAAK;AACtI,MAAIrB,MAAUsB,EAAa,QAAO,IAAIN,SAAS,uBAAuB;AAAA,IAAEK,QAAQ;AAAA,EAAA,CAAK;AAErFG,EAAAA,EAAa,mBAAmB,GAChCA,EAAa,qBAAqB,GAClCA,EAAa,oBAAoB;AAEjC,QAAMC,IAAS,MAAMnB,EAAQoB,0BAA0BN,GAAMlB,CAAY,GAEnEyB,IAAUF,EAAOE,QAAAA,GACjBC,IAASC,EAAcF,CAAO;AAEpC,eAAMG,EAAiB;AAAA,IACnBC,cAAcN,EAAOM,aAAAA;AAAAA,IACrBC,MAAM;AAAA,MACFC,IAAIL,EAAOM;AAAAA,MACXC,MAAMP,EAAOO,KAAKC,MAAM,GAAG,EAAE,CAAC;AAAA,MAC9BC,OAAOT,EAAOU;AAAAA,IAAAA;AAAAA,EAClB,CACH,GAED,MAAMC,EAA4Bd,EAAOe,aAAa,GAE/C,IAAIxB,SAAS,MAAM;AAAA,IACtBK,QAAQ;AAAA,IACRoB,SAAS;AAAA,MAAEC,UAAU/C;AAAAA,IAAAA;AAAAA,EAAY,CACpC;AACL,GAEagD,IAAS,OAAOjD,MAAwC;AACjE,QAAMG,IAAM,IAAID,IAAIF,EAAQG,GAAG;AAc/B,SAAO,IAAImB,SAAS,MAAM;AAAA,IAAEK,QAAQ;AAAA,IAAKoB,SAAS;AAAA,MAAEC,UAAU7C,EAAIqB;AAAAA,IAAAA;AAAAA,EAAK,CAAG;AAC9E;"}
|
package/dist/session-7yb0BETM.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { redirect as a } from "@tanstack/react-router";
|
|
2
|
-
import { getCookie as E, deleteCookie as _, setCookie as S } from "@tanstack/react-start/server";
|
|
3
|
-
import T from "jsonwebtoken";
|
|
4
|
-
import * as e from "zod";
|
|
5
|
-
import c from "zod";
|
|
6
|
-
import "jwks-rsa";
|
|
7
|
-
import { MicrosoftEntraId as C } from "arctic";
|
|
8
|
-
import { s as o } from "./env-4ZoUrNqp.js";
|
|
9
|
-
const f = new C(o.MICROSOFT_TENANT_ID, o.MICROSOFT_CLIENT_ID, o.MICROSOFT_CLIENT_SECRET, o.MICROSOFT_REDIRECT_URI), u = e.object({
|
|
10
|
-
id: e.string(),
|
|
11
|
-
name: e.string(),
|
|
12
|
-
email: e.email(),
|
|
13
|
-
groups: e.array(e.string())
|
|
14
|
-
});
|
|
15
|
-
e.object({
|
|
16
|
-
id: e.string(),
|
|
17
|
-
displayName: e.string(),
|
|
18
|
-
jobTitle: e.string(),
|
|
19
|
-
mail: e.email(),
|
|
20
|
-
mobilePhone: e.string()
|
|
21
|
-
});
|
|
22
|
-
const r = "session", p = "access_token", m = "/", I = c.object({
|
|
23
|
-
refreshToken: c.string(),
|
|
24
|
-
user: u.omit({
|
|
25
|
-
groups: !0
|
|
26
|
-
})
|
|
27
|
-
}), O = async (s) => {
|
|
28
|
-
const t = E(r);
|
|
29
|
-
if (!t)
|
|
30
|
-
throw a({
|
|
31
|
-
href: `/api/auth/login?redirect_uri=${encodeURIComponent(s ?? m)}`
|
|
32
|
-
});
|
|
33
|
-
const n = T.verify(t, o.SESSION_SECRET), i = I.safeParse(n);
|
|
34
|
-
if (!i.success)
|
|
35
|
-
throw _(r), a({
|
|
36
|
-
href: `/api/auth/login?redirect_uri=${encodeURIComponent(s ?? m)}`
|
|
37
|
-
});
|
|
38
|
-
return i.data;
|
|
39
|
-
}, A = async () => {
|
|
40
|
-
const s = E(p);
|
|
41
|
-
if (s) return s;
|
|
42
|
-
const t = await O(), n = await f.refreshAccessToken(t.refreshToken, []);
|
|
43
|
-
return await k({
|
|
44
|
-
...t,
|
|
45
|
-
refreshToken: n.refreshToken()
|
|
46
|
-
}), await g(n.accessToken()), n.accessToken();
|
|
47
|
-
}, k = async (s) => {
|
|
48
|
-
const t = T.sign(s, o.SESSION_SECRET, {
|
|
49
|
-
expiresIn: "7d"
|
|
50
|
-
});
|
|
51
|
-
S(r, t, {
|
|
52
|
-
secure: o.NODE_ENV === "production",
|
|
53
|
-
path: "/",
|
|
54
|
-
httpOnly: !0,
|
|
55
|
-
sameSite: "lax",
|
|
56
|
-
maxAge: 10080 * 60
|
|
57
|
-
// 7 days
|
|
58
|
-
});
|
|
59
|
-
}, g = async (s) => {
|
|
60
|
-
S(p, s, {
|
|
61
|
-
secure: o.NODE_ENV === "production",
|
|
62
|
-
path: "/",
|
|
63
|
-
httpOnly: !0,
|
|
64
|
-
sameSite: "lax",
|
|
65
|
-
maxAge: 300
|
|
66
|
-
// 5 minutes
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
|
-
export {
|
|
70
|
-
g as a,
|
|
71
|
-
f as e,
|
|
72
|
-
A as g,
|
|
73
|
-
O as r,
|
|
74
|
-
k as s
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=session-7yb0BETM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-7yb0BETM.js","sources":["../src/lib/auth/entra.ts","../src/models/User.ts","../src/lib/auth/session.ts"],"sourcesContent":["import { MicrosoftEntraId } from \"arctic\";\r\nimport { serverEnv } from \"~/env\";\r\n\r\nexport const entraId = new MicrosoftEntraId(\r\n serverEnv.MICROSOFT_TENANT_ID,\r\n serverEnv.MICROSOFT_CLIENT_ID,\r\n serverEnv.MICROSOFT_CLIENT_SECRET,\r\n serverEnv.MICROSOFT_REDIRECT_URI,\r\n);\r\n","import * as z from \"zod\";\r\n\r\nexport const UserSchema = z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n email: z.email(),\r\n groups: z.array(z.string()),\r\n});\r\n\r\nexport type User = z.infer<typeof UserSchema>;\r\n\r\nexport const GraphUserSchema = z.object({\r\n id: z.string(),\r\n displayName: z.string(),\r\n jobTitle: z.string(),\r\n mail: z.email(),\r\n mobilePhone: z.string(),\r\n});\r\n\r\nexport type GraphUser = z.infer<typeof GraphUserSchema>;\r\n","import { redirect } from \"@tanstack/react-router\";\r\nimport { deleteCookie, getCookie, setCookie } from \"@tanstack/react-start/server\";\r\nimport jwt from \"jsonwebtoken\";\r\nimport z from \"zod\";\r\nimport jwksRsa from \"jwks-rsa\";\r\nimport { entraId } from \"./entra\";\r\nimport { serverEnv } from \"~/env\";\r\nimport { UserSchema } from \"~/models/User\";\r\n\r\nconst SESSION_COOKIE_NAME = \"session\";\r\nconst ACCESS_TOKEN_COOKIE_NAME = \"access_token\";\r\nconst AFTER_LOGIN_URL = \"/\";\r\n\r\nconst SessionSchema = z.object({\r\n refreshToken: z.string(),\r\n user: UserSchema.omit({ groups: true }),\r\n});\r\n\r\ntype Session = z.infer<typeof SessionSchema>;\r\n\r\nexport const requireSession = async (redirectUri?: string) => {\r\n const sessionCookie = getCookie(SESSION_COOKIE_NAME);\r\n if (!sessionCookie) {\r\n throw redirect({ href: `/api/auth/login?redirect_uri=${encodeURIComponent(redirectUri ?? AFTER_LOGIN_URL)}` });\r\n }\r\n\r\n const payloadRaw = jwt.verify(sessionCookie, serverEnv.SESSION_SECRET);\r\n const sessionResult = SessionSchema.safeParse(payloadRaw);\r\n if (!sessionResult.success) {\r\n deleteCookie(SESSION_COOKIE_NAME);\r\n throw redirect({ href: `/api/auth/login?redirect_uri=${encodeURIComponent(redirectUri ?? AFTER_LOGIN_URL)}` });\r\n }\r\n\r\n return sessionResult.data;\r\n};\r\n\r\nexport const getAccessToken = async () => {\r\n const accessTokenCookie = getCookie(ACCESS_TOKEN_COOKIE_NAME);\r\n if (accessTokenCookie) return accessTokenCookie;\r\n\r\n const session = await requireSession();\r\n\r\n const tokens = await entraId.refreshAccessToken(session.refreshToken, []);\r\n\r\n await setSessionCookie({\r\n ...session,\r\n refreshToken: tokens.refreshToken()\r\n });\r\n\r\n await setSessionAccessTokenCookie(tokens.accessToken());\r\n\r\n return tokens.accessToken();\r\n};\r\n\r\nexport const validateAccessToken = async (token: string): Promise<jwt.JwtPayload> => {\r\n const client = jwksRsa({\r\n cache: true,\r\n rateLimit: true,\r\n jwksRequestsPerMinute: 5,\r\n jwksUri: \"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\r\n });\r\n\r\n const decodedHeader = jwt.decode(token, { complete: true });\r\n if (!decodedHeader?.header.kid) throw new Error(\"Invalid token: Missing kid\");\r\n\r\n const key = await client.getSigningKey(decodedHeader.header.kid);\r\n const signingKey = key.getPublicKey();\r\n\r\n const payload = jwt.verify(token, signingKey) as jwt.JwtPayload;\r\n\r\n if (typeof payload.iss !== \"string\" || !payload.iss.startsWith(\"https://login.microsoftonline.com/\"))\r\n throw new Error(\"Invalid issuer\");\r\n\r\n return payload;\r\n};\r\n\r\nexport const setSessionCookie = async (session: Session) => {\r\n const sessionJwt = jwt.sign(session, serverEnv.SESSION_SECRET, { expiresIn: \"7d\" });\r\n\r\n setCookie(SESSION_COOKIE_NAME, sessionJwt, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 7 * 24 * 60 * 60, // 7 days\r\n });\r\n};\r\n\r\nexport const setSessionAccessTokenCookie = async (accessToken: string) => {\r\n setCookie(ACCESS_TOKEN_COOKIE_NAME, accessToken, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 5 * 60, // 5 minutes\r\n });\r\n};\r\n"],"names":["entraId","MicrosoftEntraId","serverEnv","MICROSOFT_TENANT_ID","MICROSOFT_CLIENT_ID","MICROSOFT_CLIENT_SECRET","MICROSOFT_REDIRECT_URI","UserSchema","z","object","id","string","name","email","groups","array","displayName","jobTitle","mail","mobilePhone","SESSION_COOKIE_NAME","ACCESS_TOKEN_COOKIE_NAME","AFTER_LOGIN_URL","SessionSchema","refreshToken","user","omit","requireSession","redirectUri","sessionCookie","getCookie","redirect","href","encodeURIComponent","payloadRaw","jwt","verify","SESSION_SECRET","sessionResult","safeParse","success","deleteCookie","data","getAccessToken","accessTokenCookie","session","tokens","refreshAccessToken","setSessionCookie","setSessionAccessTokenCookie","accessToken","sessionJwt","sign","expiresIn","setCookie","secure","NODE_ENV","path","httpOnly","sameSite","maxAge"],"mappings":";;;;;;;;AAGO,MAAMA,IAAU,IAAIC,EACvBC,EAAUC,qBACVD,EAAUE,qBACVF,EAAUG,yBACVH,EAAUI,sBACd,GCNaC,IAAaC,EAAEC,OAAO;AAAA,EAC/BC,IAAIF,EAAEG,OAAAA;AAAAA,EACNC,MAAMJ,EAAEG,OAAAA;AAAAA,EACRE,OAAOL,EAAEK,MAAAA;AAAAA,EACTC,QAAQN,EAAEO,MAAMP,EAAEG,QAAQ;AAC9B,CAAC;AAI8BH,EAAEC,OAAO;AAAA,EACpCC,IAAIF,EAAEG,OAAAA;AAAAA,EACNK,aAAaR,EAAEG,OAAAA;AAAAA,EACfM,UAAUT,EAAEG,OAAAA;AAAAA,EACZO,MAAMV,EAAEK,MAAAA;AAAAA,EACRM,aAAaX,EAAEG,OAAAA;AACnB,CAAC;ACRD,MAAMS,IAAsB,WACtBC,IAA2B,gBAC3BC,IAAkB,KAElBC,IAAgBf,EAAEC,OAAO;AAAA,EAC3Be,cAAchB,EAAEG,OAAAA;AAAAA,EAChBc,MAAMlB,EAAWmB,KAAK;AAAA,IAAEZ,QAAQ;AAAA,EAAA,CAAM;AAC1C,CAAC,GAIYa,IAAiB,OAAOC,MAAyB;AAC1D,QAAMC,IAAgBC,EAAUV,CAAmB;AACnD,MAAI,CAACS;AACD,UAAME,EAAS;AAAA,MAAEC,MAAM,gCAAgCC,mBAAmBL,KAAeN,CAAe,CAAC;AAAA,IAAA,CAAI;AAGjH,QAAMY,IAAaC,EAAIC,OAAOP,GAAe3B,EAAUmC,cAAc,GAC/DC,IAAgBf,EAAcgB,UAAUL,CAAU;AACxD,MAAI,CAACI,EAAcE;AACfC,UAAAA,EAAarB,CAAmB,GAC1BW,EAAS;AAAA,MAAEC,MAAM,gCAAgCC,mBAAmBL,KAAeN,CAAe,CAAC;AAAA,IAAA,CAAI;AAGjH,SAAOgB,EAAcI;AACzB,GAEaC,IAAiB,YAAY;AACtC,QAAMC,IAAoBd,EAAUT,CAAwB;AAC5D,MAAIuB,EAAmB,QAAOA;AAE9B,QAAMC,IAAU,MAAMlB,EAAAA,GAEhBmB,IAAS,MAAM9C,EAAQ+C,mBAAmBF,EAAQrB,cAAc,EAAE;AAExE,eAAMwB,EAAiB;AAAA,IACnB,GAAGH;AAAAA,IACHrB,cAAcsB,EAAOtB,aAAAA;AAAAA,EAAa,CACrC,GAED,MAAMyB,EAA4BH,EAAOI,aAAa,GAE/CJ,EAAOI,YAAAA;AAClB,GAwBaF,IAAmB,OAAOH,MAAqB;AACxD,QAAMM,IAAahB,EAAIiB,KAAKP,GAAS3C,EAAUmC,gBAAgB;AAAA,IAAEgB,WAAW;AAAA,EAAA,CAAM;AAElFC,EAAAA,EAAUlC,GAAqB+B,GAAY;AAAA,IACvCI,QAAQrD,EAAUsD,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ,QAAc;AAAA;AAAA,EAAA,CACzB;AACL,GAEaX,IAA8B,OAAOC,MAAwB;AACtEI,EAAAA,EAAUjC,GAA0B6B,GAAa;AAAA,IAC7CK,QAAQrD,EAAUsD,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ;AAAA;AAAA,EAAI,CACf;AACL;"}
|