@okam/directus-next 0.1.0 → 0.2.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/draft/env.js +6 -0
- package/draft/env.mjs +6 -0
- package/draft/route.js +141 -0
- package/draft/route.mjs +141 -0
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/index.mjs +10 -1407
- package/lib/directusRouteRouter.d.ts +15 -0
- package/lib/directusRouteRouter.js +92 -0
- package/lib/directusRouteRouter.mjs +92 -0
- package/package.json +5 -5
- package/response.js +14 -0
- package/response.mjs +14 -0
- package/server.d.ts +2 -0
- package/server.js +4 -0
- package/server.mjs +4 -0
- package/types/directusRouteConfig.d.ts +12 -0
package/draft/env.js
ADDED
package/draft/env.mjs
ADDED
package/draft/route.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const headers = require("next/headers");
|
|
4
|
+
const navigation = require("next/navigation");
|
|
5
|
+
const radash = require("radash");
|
|
6
|
+
const response = require("../response.js");
|
|
7
|
+
const env = require("./env.js");
|
|
8
|
+
function parseParams(url) {
|
|
9
|
+
const { searchParams } = new URL(url);
|
|
10
|
+
const secret = searchParams.get("secret") || "";
|
|
11
|
+
const languagesParam = searchParams.get("languages");
|
|
12
|
+
const pathsParam = searchParams.get("urls");
|
|
13
|
+
const routesParam = searchParams.get("routes");
|
|
14
|
+
const pkParam = searchParams.get("pk");
|
|
15
|
+
const versionParam = searchParams.get("version");
|
|
16
|
+
const emptyReturn = {
|
|
17
|
+
secret: "",
|
|
18
|
+
languages: [],
|
|
19
|
+
paths: [],
|
|
20
|
+
routes: [],
|
|
21
|
+
type: "",
|
|
22
|
+
pk: "",
|
|
23
|
+
version: ""
|
|
24
|
+
};
|
|
25
|
+
if (!secret || !languagesParam || !(pathsParam || routesParam)) {
|
|
26
|
+
return emptyReturn;
|
|
27
|
+
}
|
|
28
|
+
const pk = typeof pkParam === "string" ? pkParam : "";
|
|
29
|
+
const version = typeof versionParam === "string" ? versionParam : "";
|
|
30
|
+
try {
|
|
31
|
+
const languages = JSON.parse(languagesParam);
|
|
32
|
+
if (routesParam) {
|
|
33
|
+
const routes = JSON.parse(routesParam);
|
|
34
|
+
return {
|
|
35
|
+
secret,
|
|
36
|
+
languages,
|
|
37
|
+
paths: [],
|
|
38
|
+
routes,
|
|
39
|
+
type: "route",
|
|
40
|
+
pk,
|
|
41
|
+
version
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!pathsParam) {
|
|
45
|
+
return emptyReturn;
|
|
46
|
+
}
|
|
47
|
+
const paths = JSON.parse(pathsParam);
|
|
48
|
+
return {
|
|
49
|
+
secret,
|
|
50
|
+
languages,
|
|
51
|
+
paths,
|
|
52
|
+
routes: [],
|
|
53
|
+
type: "path",
|
|
54
|
+
pk,
|
|
55
|
+
version
|
|
56
|
+
};
|
|
57
|
+
} catch (e) {
|
|
58
|
+
return emptyReturn;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function getPathFromRoute(routeUrl, url, index = 0) {
|
|
62
|
+
const { searchParams } = new URL(url);
|
|
63
|
+
const matches = [...routeUrl.matchAll(/\{\{([a-z]+)\}\}/gi)];
|
|
64
|
+
const map = {};
|
|
65
|
+
matches.forEach((match) => {
|
|
66
|
+
const key = match[1] || "";
|
|
67
|
+
if (!key) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const listkey = `${key}s`;
|
|
71
|
+
const listParam = searchParams.get(listkey);
|
|
72
|
+
if (listParam) {
|
|
73
|
+
try {
|
|
74
|
+
const list = JSON.parse(listParam);
|
|
75
|
+
map[key] = list[index] || "";
|
|
76
|
+
} catch (e) {
|
|
77
|
+
map[key] = "";
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
const param = searchParams.get(key);
|
|
81
|
+
map[key] = param || "";
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return radash.template(routeUrl, map);
|
|
85
|
+
}
|
|
86
|
+
function handleDraftRoute({
|
|
87
|
+
url,
|
|
88
|
+
getDirectusLanguage,
|
|
89
|
+
getDraftSecret,
|
|
90
|
+
getJsonError
|
|
91
|
+
}) {
|
|
92
|
+
const getSecretFunction = getDraftSecret || env.getDraftSecretDefault;
|
|
93
|
+
const getJsonErrorResponseFunction = getJsonError || response.getJsonErrorResponse;
|
|
94
|
+
const { secret, languages, paths, routes, type, version } = parseParams(url);
|
|
95
|
+
if (secret !== getSecretFunction()) {
|
|
96
|
+
return getJsonErrorResponseFunction({ error: "Invalid argument" }, 401);
|
|
97
|
+
}
|
|
98
|
+
if (type === "") {
|
|
99
|
+
return getJsonErrorResponseFunction({ error: "Invalid argument" }, 400);
|
|
100
|
+
}
|
|
101
|
+
if (!Array.isArray(languages) || languages.length <= 0) {
|
|
102
|
+
return getJsonErrorResponseFunction({ error: "Invalid languages argument" }, 400);
|
|
103
|
+
}
|
|
104
|
+
if (type === "path" && (!Array.isArray(paths) || paths.length <= 0)) {
|
|
105
|
+
return getJsonErrorResponseFunction({ error: "Invalid paths argument" }, 400);
|
|
106
|
+
}
|
|
107
|
+
if (type === "route" && (!Array.isArray(routes) || routes.length <= 0)) {
|
|
108
|
+
return getJsonErrorResponseFunction({ error: "Invalid routes argument" }, 400);
|
|
109
|
+
}
|
|
110
|
+
const directusLang = getDirectusLanguage();
|
|
111
|
+
const indexDefault = languages.indexOf(directusLang);
|
|
112
|
+
const index = indexDefault !== -1 ? indexDefault : 0;
|
|
113
|
+
let redirectUrl = "";
|
|
114
|
+
if (type === "path") {
|
|
115
|
+
const path = paths[index] || "";
|
|
116
|
+
if (!path) {
|
|
117
|
+
return response.getJsonErrorResponse({ error: "Invalid path" }, 400);
|
|
118
|
+
}
|
|
119
|
+
redirectUrl = path;
|
|
120
|
+
} else if (type === "route") {
|
|
121
|
+
const route = routes[index] || "";
|
|
122
|
+
if (!route) {
|
|
123
|
+
return response.getJsonErrorResponse({ error: "Invalid route" }, 400);
|
|
124
|
+
}
|
|
125
|
+
const pathFromRoute = getPathFromRoute(route, url, index);
|
|
126
|
+
if (!pathFromRoute) {
|
|
127
|
+
return response.getJsonErrorResponse({ error: "Invalid route" }, 400);
|
|
128
|
+
}
|
|
129
|
+
redirectUrl = pathFromRoute;
|
|
130
|
+
}
|
|
131
|
+
if (redirectUrl && version) {
|
|
132
|
+
const withParams = redirectUrl.indexOf("?") !== -1;
|
|
133
|
+
redirectUrl = `${redirectUrl}${withParams ? "&" : "?"}version=${encodeURIComponent(version)}`;
|
|
134
|
+
}
|
|
135
|
+
headers.draftMode().enable();
|
|
136
|
+
navigation.redirect(redirectUrl);
|
|
137
|
+
return void 0;
|
|
138
|
+
}
|
|
139
|
+
exports.default = handleDraftRoute;
|
|
140
|
+
exports.getPathFromRoute = getPathFromRoute;
|
|
141
|
+
exports.parseParams = parseParams;
|
package/draft/route.mjs
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { draftMode } from "next/headers";
|
|
2
|
+
import { redirect } from "next/navigation";
|
|
3
|
+
import { template } from "radash";
|
|
4
|
+
import { getJsonErrorResponse } from "../response.mjs";
|
|
5
|
+
import { getDraftSecretDefault } from "./env.mjs";
|
|
6
|
+
function parseParams(url) {
|
|
7
|
+
const { searchParams } = new URL(url);
|
|
8
|
+
const secret = searchParams.get("secret") || "";
|
|
9
|
+
const languagesParam = searchParams.get("languages");
|
|
10
|
+
const pathsParam = searchParams.get("urls");
|
|
11
|
+
const routesParam = searchParams.get("routes");
|
|
12
|
+
const pkParam = searchParams.get("pk");
|
|
13
|
+
const versionParam = searchParams.get("version");
|
|
14
|
+
const emptyReturn = {
|
|
15
|
+
secret: "",
|
|
16
|
+
languages: [],
|
|
17
|
+
paths: [],
|
|
18
|
+
routes: [],
|
|
19
|
+
type: "",
|
|
20
|
+
pk: "",
|
|
21
|
+
version: ""
|
|
22
|
+
};
|
|
23
|
+
if (!secret || !languagesParam || !(pathsParam || routesParam)) {
|
|
24
|
+
return emptyReturn;
|
|
25
|
+
}
|
|
26
|
+
const pk = typeof pkParam === "string" ? pkParam : "";
|
|
27
|
+
const version = typeof versionParam === "string" ? versionParam : "";
|
|
28
|
+
try {
|
|
29
|
+
const languages = JSON.parse(languagesParam);
|
|
30
|
+
if (routesParam) {
|
|
31
|
+
const routes = JSON.parse(routesParam);
|
|
32
|
+
return {
|
|
33
|
+
secret,
|
|
34
|
+
languages,
|
|
35
|
+
paths: [],
|
|
36
|
+
routes,
|
|
37
|
+
type: "route",
|
|
38
|
+
pk,
|
|
39
|
+
version
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (!pathsParam) {
|
|
43
|
+
return emptyReturn;
|
|
44
|
+
}
|
|
45
|
+
const paths = JSON.parse(pathsParam);
|
|
46
|
+
return {
|
|
47
|
+
secret,
|
|
48
|
+
languages,
|
|
49
|
+
paths,
|
|
50
|
+
routes: [],
|
|
51
|
+
type: "path",
|
|
52
|
+
pk,
|
|
53
|
+
version
|
|
54
|
+
};
|
|
55
|
+
} catch (e) {
|
|
56
|
+
return emptyReturn;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function getPathFromRoute(routeUrl, url, index = 0) {
|
|
60
|
+
const { searchParams } = new URL(url);
|
|
61
|
+
const matches = [...routeUrl.matchAll(/\{\{([a-z]+)\}\}/gi)];
|
|
62
|
+
const map = {};
|
|
63
|
+
matches.forEach((match) => {
|
|
64
|
+
const key = match[1] || "";
|
|
65
|
+
if (!key) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const listkey = `${key}s`;
|
|
69
|
+
const listParam = searchParams.get(listkey);
|
|
70
|
+
if (listParam) {
|
|
71
|
+
try {
|
|
72
|
+
const list = JSON.parse(listParam);
|
|
73
|
+
map[key] = list[index] || "";
|
|
74
|
+
} catch (e) {
|
|
75
|
+
map[key] = "";
|
|
76
|
+
}
|
|
77
|
+
} else {
|
|
78
|
+
const param = searchParams.get(key);
|
|
79
|
+
map[key] = param || "";
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return template(routeUrl, map);
|
|
83
|
+
}
|
|
84
|
+
function handleDraftRoute({
|
|
85
|
+
url,
|
|
86
|
+
getDirectusLanguage,
|
|
87
|
+
getDraftSecret,
|
|
88
|
+
getJsonError
|
|
89
|
+
}) {
|
|
90
|
+
const getSecretFunction = getDraftSecret || getDraftSecretDefault;
|
|
91
|
+
const getJsonErrorResponseFunction = getJsonError || getJsonErrorResponse;
|
|
92
|
+
const { secret, languages, paths, routes, type, version } = parseParams(url);
|
|
93
|
+
if (secret !== getSecretFunction()) {
|
|
94
|
+
return getJsonErrorResponseFunction({ error: "Invalid argument" }, 401);
|
|
95
|
+
}
|
|
96
|
+
if (type === "") {
|
|
97
|
+
return getJsonErrorResponseFunction({ error: "Invalid argument" }, 400);
|
|
98
|
+
}
|
|
99
|
+
if (!Array.isArray(languages) || languages.length <= 0) {
|
|
100
|
+
return getJsonErrorResponseFunction({ error: "Invalid languages argument" }, 400);
|
|
101
|
+
}
|
|
102
|
+
if (type === "path" && (!Array.isArray(paths) || paths.length <= 0)) {
|
|
103
|
+
return getJsonErrorResponseFunction({ error: "Invalid paths argument" }, 400);
|
|
104
|
+
}
|
|
105
|
+
if (type === "route" && (!Array.isArray(routes) || routes.length <= 0)) {
|
|
106
|
+
return getJsonErrorResponseFunction({ error: "Invalid routes argument" }, 400);
|
|
107
|
+
}
|
|
108
|
+
const directusLang = getDirectusLanguage();
|
|
109
|
+
const indexDefault = languages.indexOf(directusLang);
|
|
110
|
+
const index = indexDefault !== -1 ? indexDefault : 0;
|
|
111
|
+
let redirectUrl = "";
|
|
112
|
+
if (type === "path") {
|
|
113
|
+
const path = paths[index] || "";
|
|
114
|
+
if (!path) {
|
|
115
|
+
return getJsonErrorResponse({ error: "Invalid path" }, 400);
|
|
116
|
+
}
|
|
117
|
+
redirectUrl = path;
|
|
118
|
+
} else if (type === "route") {
|
|
119
|
+
const route = routes[index] || "";
|
|
120
|
+
if (!route) {
|
|
121
|
+
return getJsonErrorResponse({ error: "Invalid route" }, 400);
|
|
122
|
+
}
|
|
123
|
+
const pathFromRoute = getPathFromRoute(route, url, index);
|
|
124
|
+
if (!pathFromRoute) {
|
|
125
|
+
return getJsonErrorResponse({ error: "Invalid route" }, 400);
|
|
126
|
+
}
|
|
127
|
+
redirectUrl = pathFromRoute;
|
|
128
|
+
}
|
|
129
|
+
if (redirectUrl && version) {
|
|
130
|
+
const withParams = redirectUrl.indexOf("?") !== -1;
|
|
131
|
+
redirectUrl = `${redirectUrl}${withParams ? "&" : "?"}version=${encodeURIComponent(version)}`;
|
|
132
|
+
}
|
|
133
|
+
draftMode().enable();
|
|
134
|
+
redirect(redirectUrl);
|
|
135
|
+
return void 0;
|
|
136
|
+
}
|
|
137
|
+
export {
|
|
138
|
+
handleDraftRoute as default,
|
|
139
|
+
getPathFromRoute,
|
|
140
|
+
parseParams
|
|
141
|
+
};
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("react"),Ce=require("radash");var q={exports:{}},ae={},Q={},Z=Object.defineProperty,Re=Object.getOwnPropertyDescriptor,Oe=Object.getOwnPropertyNames,Ee=Object.prototype.hasOwnProperty,Ae=(t,e)=>{for(var r in e)Z(t,r,{get:e[r],enumerable:!0})},Pe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Ee.call(t,i)&&i!==r&&Z(t,i,{get:()=>e[i],enumerable:!(n=Re(e,i))||n.enumerable});return t},we=t=>Pe(Z({},"__esModule",{value:!0}),t),ue={};Ae(ue,{RequestCookies:()=>Ne,ResponseCookies:()=>qe,parseCookie:()=>ee,parseSetCookie:()=>se,stringifyCookie:()=>w});var je=we(ue);function w(t){var e;const r=["path"in t&&t.path&&`Path=${t.path}`,"expires"in t&&(t.expires||t.expires===0)&&`Expires=${(typeof t.expires=="number"?new Date(t.expires):t.expires).toUTCString()}`,"maxAge"in t&&typeof t.maxAge=="number"&&`Max-Age=${t.maxAge}`,"domain"in t&&t.domain&&`Domain=${t.domain}`,"secure"in t&&t.secure&&"Secure","httpOnly"in t&&t.httpOnly&&"HttpOnly","sameSite"in t&&t.sameSite&&`SameSite=${t.sameSite}`,"priority"in t&&t.priority&&`Priority=${t.priority}`].filter(Boolean);return`${t.name}=${encodeURIComponent((e=t.value)!=null?e:"")}; ${r.join("; ")}`}function ee(t){const e=new Map;for(const r of t.split(/; */)){if(!r)continue;const n=r.indexOf("=");if(n===-1){e.set(r,"true");continue}const[i,a]=[r.slice(0,n),r.slice(n+1)];try{e.set(i,decodeURIComponent(a??"true"))}catch{}}return e}function se(t){if(!t)return;const[[e,r],...n]=ee(t),{domain:i,expires:a,httponly:o,maxage:u,path:s,samesite:y,secure:c,priority:l}=Object.fromEntries(n.map(([d,_])=>[d.toLowerCase(),_])),g={name:e,value:decodeURIComponent(r),domain:i,...a&&{expires:new Date(a)},...o&&{httpOnly:!0},...typeof u=="string"&&{maxAge:Number(u)},path:s,...y&&{sameSite:Te(y)},...c&&{secure:!0},...l&&{priority:Le(l)}};return Me(g)}function Me(t){const e={};for(const r in t)t[r]&&(e[r]=t[r]);return e}var ke=["strict","lax","none"];function Te(t){return t=t.toLowerCase(),ke.includes(t)?t:void 0}var xe=["low","medium","high"];function Le(t){return t=t.toLowerCase(),xe.includes(t)?t:void 0}function Ie(t){if(!t)return[];var e=[],r=0,n,i,a,o,u;function s(){for(;r<t.length&&/\s/.test(t.charAt(r));)r+=1;return r<t.length}function y(){return i=t.charAt(r),i!=="="&&i!==";"&&i!==","}for(;r<t.length;){for(n=r,u=!1;s();)if(i=t.charAt(r),i===","){for(a=r,r+=1,s(),o=r;r<t.length&&y();)r+=1;r<t.length&&t.charAt(r)==="="?(u=!0,r=o,e.push(t.substring(n,a)),n=r):r=a+1}else r+=1;(!u||r>=t.length)&&e.push(t.substring(n,t.length))}return e}var Ne=class{constructor(t){this._parsed=new Map,this._headers=t;const e=t.get("cookie");if(e){const r=ee(e);for(const[n,i]of r)this._parsed.set(n,{name:n,value:i})}}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...t){const e=typeof t[0]=="string"?t[0]:t[0].name;return this._parsed.get(e)}getAll(...t){var e;const r=Array.from(this._parsed);if(!t.length)return r.map(([i,a])=>a);const n=typeof t[0]=="string"?t[0]:(e=t[0])==null?void 0:e.name;return r.filter(([i])=>i===n).map(([i,a])=>a)}has(t){return this._parsed.has(t)}set(...t){const[e,r]=t.length===1?[t[0].name,t[0].value]:t,n=this._parsed;return n.set(e,{name:e,value:r}),this._headers.set("cookie",Array.from(n).map(([i,a])=>w(a)).join("; ")),this}delete(t){const e=this._parsed,r=Array.isArray(t)?t.map(n=>e.delete(n)):e.delete(t);return this._headers.set("cookie",Array.from(e).map(([n,i])=>w(i)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(t=>`${t.name}=${encodeURIComponent(t.value)}`).join("; ")}},qe=class{constructor(t){this._parsed=new Map;var e,r,n;this._headers=t;const i=(n=(r=(e=t.getSetCookie)==null?void 0:e.call(t))!=null?r:t.get("set-cookie"))!=null?n:[],a=Array.isArray(i)?i:Ie(i);for(const o of a){const u=se(o);u&&this._parsed.set(u.name,u)}}get(...t){const e=typeof t[0]=="string"?t[0]:t[0].name;return this._parsed.get(e)}getAll(...t){var e;const r=Array.from(this._parsed.values());if(!t.length)return r;const n=typeof t[0]=="string"?t[0]:(e=t[0])==null?void 0:e.name;return r.filter(i=>i.name===n)}has(t){return this._parsed.has(t)}set(...t){const[e,r,n]=t.length===1?[t[0].name,t[0].value,t[0]]:t,i=this._parsed;return i.set(e,Ge({name:e,value:r,...n})),De(i,this._headers),this}delete(...t){const[e,r,n]=typeof t[0]=="string"?[t[0]]:[t[0].name,t[0].path,t[0].domain];return this.set({name:e,path:r,domain:n,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(w).join("; ")}};function De(t,e){e.delete("set-cookie");for(const[,r]of t){const n=w(r);e.append("set-cookie",n)}}function Ge(t={name:"",value:""}){return typeof t.expires=="number"&&(t.expires=new Date(t.expires)),t.maxAge&&(t.expires=new Date(Date.now()+t.maxAge*1e3)),(t.path===null||t.path===void 0)&&(t.path="/"),t}(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(n,i){for(var a in i)Object.defineProperty(n,a,{enumerable:!0,get:i[a]})}e(t,{RequestCookies:function(){return r.RequestCookies},ResponseCookies:function(){return r.ResponseCookies}});const r=je})(Q);var te={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return e}});class e{static get(n,i,a){const o=Reflect.get(n,i,a);return typeof o=="function"?o.bind(n):o}static set(n,i,a,o){return Reflect.set(n,i,a,o)}static has(n,i){return Reflect.has(n,i)}static deleteProperty(n,i){return Reflect.deleteProperty(n,i)}}})(te);(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(c,l){for(var g in l)Object.defineProperty(c,g,{enumerable:!0,get:l[g]})}e(t,{ReadonlyRequestCookiesError:function(){return i},RequestCookiesAdapter:function(){return a},getModifiedCookieValues:function(){return u},appendMutableCookies:function(){return s},MutableRequestCookiesAdapter:function(){return y}});const r=Q,n=te;class i extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options")}static callable(){throw new i}}class a{static seal(l){return new Proxy(l,{get(g,d,_){switch(d){case"clear":case"delete":case"set":return i.callable;default:return n.ReflectAdapter.get(g,d,_)}}})}}const o=Symbol.for("next.mutated.cookies");function u(c){const l=c[o];return!l||!Array.isArray(l)||l.length===0?[]:l}function s(c,l){const g=u(l);if(g.length===0)return!1;const d=new r.ResponseCookies(c),_=d.getAll();for(const f of g)d.set(f);for(const f of _)d.set(f);return!0}class y{static wrap(l,g){const d=new r.ResponseCookies(new Headers);for(const v of l.getAll())d.set(v);let _=[];const f=new Set,h=()=>{var v;const C=fetch.__nextGetStaticStore==null||(v=fetch.__nextGetStaticStore.call(fetch))==null?void 0:v.getStore();if(C&&(C.pathWasRevalidated=!0),_=d.getAll().filter(b=>f.has(b.name)),g){const b=[];for(const M of _){const k=new r.ResponseCookies(new Headers);k.set(M),b.push(k.toString())}g(b)}};return new Proxy(d,{get(v,C,O){switch(C){case o:return _;case"delete":return function(...b){f.add(typeof b[0]=="string"?b[0]:b[0].name);try{v.delete(...b)}finally{h()}};case"set":return function(...b){f.add(typeof b[0]=="string"?b[0]:b[0].name);try{return v.set(...b)}finally{h()}};default:return n.ReflectAdapter.get(v,C,O)}}})}}})(ae);var ce={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(a,o){for(var u in o)Object.defineProperty(a,u,{enumerable:!0,get:o[u]})}e(t,{ReadonlyHeadersError:function(){return n},HeadersAdapter:function(){return i}});const r=te;class n extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new n}}class i extends Headers{constructor(o){super(),this.headers=new Proxy(o,{get(u,s,y){if(typeof s=="symbol")return r.ReflectAdapter.get(u,s,y);const c=s.toLowerCase(),l=Object.keys(o).find(g=>g.toLowerCase()===c);if(!(typeof l>"u"))return r.ReflectAdapter.get(u,l,y)},set(u,s,y,c){if(typeof s=="symbol")return r.ReflectAdapter.set(u,s,y,c);const l=s.toLowerCase(),g=Object.keys(o).find(d=>d.toLowerCase()===l);return r.ReflectAdapter.set(u,g??s,y,c)},has(u,s){if(typeof s=="symbol")return r.ReflectAdapter.has(u,s);const y=s.toLowerCase(),c=Object.keys(o).find(l=>l.toLowerCase()===y);return typeof c>"u"?!1:r.ReflectAdapter.has(u,c)},deleteProperty(u,s){if(typeof s=="symbol")return r.ReflectAdapter.deleteProperty(u,s);const y=s.toLowerCase(),c=Object.keys(o).find(l=>l.toLowerCase()===y);return typeof c>"u"?!0:r.ReflectAdapter.deleteProperty(u,c)}})}static seal(o){return new Proxy(o,{get(u,s,y){switch(s){case"append":case"delete":case"set":return n.callable;default:return r.ReflectAdapter.get(u,s,y)}}})}merge(o){return Array.isArray(o)?o.join(", "):o}static from(o){return o instanceof Headers?o:new i(o)}append(o,u){const s=this.headers[o];typeof s=="string"?this.headers[o]=[s,u]:Array.isArray(s)?s.push(u):this.headers[o]=u}delete(o){delete this.headers[o]}get(o){const u=this.headers[o];return typeof u<"u"?this.merge(u):null}has(o){return typeof this.headers[o]<"u"}set(o,u){this.headers[o]=u}forEach(o,u){for(const[s,y]of this.entries())o.call(u,y,s,this)}*entries(){for(const o of Object.keys(this.headers)){const u=o.toLowerCase(),s=this.get(u);yield[u,s]}}*keys(){for(const o of Object.keys(this.headers))yield o.toLowerCase()}*values(){for(const o of Object.keys(this.headers))yield this.get(o)}[Symbol.iterator](){return this.entries()}}})(ce);var D={exports:{}},G={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"createAsyncLocalStorage",{enumerable:!0,get:function(){return a}});const r=new Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class n{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}}const i=globalThis.AsyncLocalStorage;function a(){return i?new i:new n}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(G,G.exports);var re=G.exports;(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"requestAsyncStorage",{enumerable:!0,get:function(){return n}});const n=(0,re.createAsyncLocalStorage)();(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(D,D.exports);var le=D.exports,F={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"actionAsyncStorage",{enumerable:!0,get:function(){return n}});const n=(0,re.createAsyncLocalStorage)();(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(F,F.exports);var fe=F.exports,H={exports:{}},B={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});function r(o,u){for(var s in u)Object.defineProperty(o,s,{enumerable:!0,get:u[s]})}r(e,{DynamicServerError:function(){return i},isDynamicServerError:function(){return a}});const n="DYNAMIC_SERVER_USAGE";class i extends Error{constructor(u){super("Dynamic server usage: "+u),this.description=u,this.digest=n}}function a(o){return typeof o!="object"||o===null||!("digest"in o)||typeof o.digest!="string"?!1:o.digest===n}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(B,B.exports);var Fe=B.exports,U={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"staticGenerationAsyncStorage",{enumerable:!0,get:function(){return n}});const n=(0,re.createAsyncLocalStorage)();(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(U,U.exports);var de=U.exports;(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});function r(c,l){for(var g in l)Object.defineProperty(c,g,{enumerable:!0,get:l[g]})}r(e,{isStaticGenBailoutError:function(){return u},staticGenerationBailout:function(){return y}});const n=Fe,i=de,a="NEXT_STATIC_GEN_BAILOUT";class o extends Error{constructor(...l){super(...l),this.code=a}}function u(c){return typeof c!="object"||c===null||!("code"in c)?!1:c.code===a}function s(c,l){const{dynamic:g,link:d}=l||{},_=d?" See more info here: "+d:"";return"Page"+(g?' with `dynamic = "'+g+'"`':"")+" couldn't be rendered statically because it used `"+c+"`."+_}const y=(c,l)=>{let{dynamic:g,link:d}=l===void 0?{}:l;const _=i.staticGenerationAsyncStorage.getStore();if(!_)return!1;if(_.forceStatic)return!0;if(_.dynamicShouldError)throw new o(s(c,{link:d,dynamic:g??"error"}));const f=s(c,{dynamic:g,link:"https://nextjs.org/docs/messages/dynamic-server-error"});if(_.postpone==null||_.postpone.call(_,c),_.revalidate=0,_.isStaticGeneration){const h=new n.DynamicServerError(f);throw _.dynamicUsageDescription=c,_.dynamicUsageStack=h.stack,h}return!1};(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(H,H.exports);var pe=H.exports,$={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraftMode",{enumerable:!0,get:function(){return n}});const r=pe;class n{get isEnabled(){return this._provider.isEnabled}enable(){if(!(0,r.staticGenerationBailout)("draftMode().enable()"))return this._provider.enable()}disable(){if(!(0,r.staticGenerationBailout)("draftMode().disable()"))return this._provider.disable()}constructor(a){this._provider=a}}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})($,$.exports);var He=$.exports;(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});function r(d,_){for(var f in _)Object.defineProperty(d,f,{enumerable:!0,get:_[f]})}r(e,{headers:function(){return c},cookies:function(){return l},draftMode:function(){return g}});const n=ae,i=ce,a=Q,o=le,u=fe,s=pe,y=He;function c(){if((0,s.staticGenerationBailout)("headers",{link:"https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering"}))return i.HeadersAdapter.seal(new Headers({}));const d=o.requestAsyncStorage.getStore();if(!d)throw new Error("Invariant: headers() expects to have requestAsyncStorage, none available.");return d.headers}function l(){if((0,s.staticGenerationBailout)("cookies",{link:"https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering"}))return n.RequestCookiesAdapter.seal(new a.RequestCookies(new Headers({})));const d=o.requestAsyncStorage.getStore();if(!d)throw new Error("Invariant: cookies() expects to have requestAsyncStorage, none available.");const _=u.actionAsyncStorage.getStore();return _&&(_.isAction||_.isAppRoute)?d.mutableCookies:d.cookies}function g(){const d=o.requestAsyncStorage.getStore();if(!d)throw new Error("Invariant: draftMode() expects to have requestAsyncStorage, none available.");return new y.DraftMode(d.draftMode)}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(q,q.exports);var Be=q.exports,Ue=Be,V={exports:{}},ye={},I={};I._=I._interop_require_default=$e;function $e(t){return t&&t.__esModule?t:{default:t}}(function(t){"use client";Object.defineProperty(t,"__esModule",{value:!0});function e(y,c){for(var l in c)Object.defineProperty(y,l,{enumerable:!0,get:c[l]})}e(t,{AppRouterContext:function(){return i},LayoutRouterContext:function(){return a},GlobalLayoutRouterContext:function(){return o},TemplateContext:function(){return u},MissingSlotContext:function(){return s}});const n=I._(j),i=n.default.createContext(null),a=n.default.createContext(null),o=n.default.createContext(null),u=n.default.createContext(null);process.env.NODE_ENV!=="production"&&(i.displayName="AppRouterContext",a.displayName="LayoutRouterContext",o.displayName="GlobalLayoutRouterContext",u.displayName="TemplateContext");const s=n.default.createContext(new Set)})(ye);var _e={};(function(t){"use client";Object.defineProperty(t,"__esModule",{value:!0});function e(o,u){for(var s in u)Object.defineProperty(o,s,{enumerable:!0,get:u[s]})}e(t,{SearchParamsContext:function(){return n},PathnameContext:function(){return i},PathParamsContext:function(){return a}});const r=j,n=(0,r.createContext)(null),i=(0,r.createContext)(null),a=(0,r.createContext)(null);process.env.NODE_ENV!=="production"&&(n.displayName="SearchParamsContext",i.displayName="PathnameContext",a.displayName="PathParamsContext")})(_e);var J={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"clientHookInServerComponentError",{enumerable:!0,get:function(){return i}});const n=I._(j);function i(a){if(process.env.NODE_ENV!=="production"&&!n.default.useState)throw new Error(""+a+' only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/react-client-hook-in-server-component')}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(J,J.exports);var Ve=J.exports,Y={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"getSegmentValue",{enumerable:!0,get:function(){return r}});function r(n){return Array.isArray(n)?n[1]:n}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(Y,Y.exports);var Je=Y.exports,ge={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(a,o){for(var u in o)Object.defineProperty(a,u,{enumerable:!0,get:o[u]})}e(t,{isGroupSegment:function(){return r},PAGE_SEGMENT_KEY:function(){return n},DEFAULT_SEGMENT_KEY:function(){return i}});function r(a){return a[0]==="("&&a.endsWith(")")}const n="__PAGE__",i="__DEFAULT__"})(ge);var he={},W={};function ve(t){if(typeof WeakMap!="function")return null;var e=new WeakMap,r=new WeakMap;return(ve=function(n){return n?r:e})(t)}W._=W._interop_require_wildcard=Ye;function Ye(t,e){if(!e&&t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var r=ve(e);if(r&&r.has(t))return r.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(a!=="default"&&Object.prototype.hasOwnProperty.call(t,a)){var o=i?Object.getOwnPropertyDescriptor(t,a):null;o&&(o.get||o.set)?Object.defineProperty(n,a,o):n[a]=t[a]}return n.default=t,r&&r.set(t,n),n}(function(t){"use client";Object.defineProperty(t,"__esModule",{value:!0});function e(o,u){for(var s in u)Object.defineProperty(o,s,{enumerable:!0,get:u[s]})}e(t,{ServerInsertedHTMLContext:function(){return i},useServerInsertedHTML:function(){return a}});const n=W._(j),i=n.default.createContext(null);function a(o){const u=(0,n.useContext)(i);u&&u(o)}})(he);var z={exports:{}},X={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"RedirectStatusCode",{enumerable:!0,get:function(){return r}});var r;(function(n){n[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect"})(r||(r={})),(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(X,X.exports);var We=X.exports;(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});function r(f,h){for(var v in h)Object.defineProperty(f,v,{enumerable:!0,get:h[v]})}r(e,{RedirectType:function(){return u},getRedirectError:function(){return s},redirect:function(){return y},permanentRedirect:function(){return c},isRedirectError:function(){return l},getURLFromRedirectError:function(){return g},getRedirectTypeFromError:function(){return d},getRedirectStatusCodeFromError:function(){return _}});const n=le,i=fe,a=We,o="NEXT_REDIRECT";var u;(function(f){f.push="push",f.replace="replace"})(u||(u={}));function s(f,h,v){v===void 0&&(v=a.RedirectStatusCode.TemporaryRedirect);const C=new Error(o);C.digest=o+";"+h+";"+f+";"+v+";";const O=n.requestAsyncStorage.getStore();return O&&(C.mutableCookies=O.mutableCookies),C}function y(f,h){h===void 0&&(h="replace");const v=i.actionAsyncStorage.getStore();throw s(f,h,v!=null&&v.isAction?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.TemporaryRedirect)}function c(f,h){h===void 0&&(h="replace");const v=i.actionAsyncStorage.getStore();throw s(f,h,v!=null&&v.isAction?a.RedirectStatusCode.SeeOther:a.RedirectStatusCode.PermanentRedirect)}function l(f){if(typeof f!="object"||f===null||!("digest"in f)||typeof f.digest!="string")return!1;const[h,v,C,O]=f.digest.split(";",4),b=Number(O);return h===o&&(v==="replace"||v==="push")&&typeof C=="string"&&!isNaN(b)&&b in a.RedirectStatusCode}function g(f){return l(f)?f.digest.split(";",3)[2]:null}function d(f){if(!l(f))throw new Error("Not a redirect error");return f.digest.split(";",2)[1]}function _(f){if(!l(f))throw new Error("Not a redirect error");return Number(f.digest.split(";",4)[3])}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(z,z.exports);var ze=z.exports,K={exports:{}};(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});function r(o,u){for(var s in u)Object.defineProperty(o,s,{enumerable:!0,get:u[s]})}r(e,{notFound:function(){return i},isNotFoundError:function(){return a}});const n="NEXT_NOT_FOUND";function i(){const o=new Error(n);throw o.digest=n,o}function a(o){return typeof o!="object"||o===null||!("digest"in o)?!1:o.digest===n}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(K,K.exports);var Xe=K.exports,L={exports:{}},N={},oe;function Ke(){return oe||(oe=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(a,o){for(var u in o)Object.defineProperty(a,u,{enumerable:!0,get:o[u]})}e(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return i}});const r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(o){super("Bail out to client-side rendering: "+o),this.reason=o,this.digest=r}}function i(a){return typeof a!="object"||a===null||!("digest"in a)?!1:a.digest===r}}(N)),N}var ie;function Qe(){return ie||(ie=1,function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"bailoutToClientRendering",{enumerable:!0,get:function(){return i}});const r=Ke(),n=de;function i(a){const o=n.staticGenerationAsyncStorage.getStore();if(!(o!=null&&o.forceStatic)&&o!=null&&o.isStaticGeneration)throw new r.BailoutToCSRError(a)}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)}(L,L.exports)),L.exports}(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});function r(m,p){for(var R in p)Object.defineProperty(m,R,{enumerable:!0,get:p[R]})}r(e,{ReadonlyURLSearchParams:function(){return _},useSearchParams:function(){return f},usePathname:function(){return h},ServerInsertedHTMLContext:function(){return y.ServerInsertedHTMLContext},useServerInsertedHTML:function(){return y.useServerInsertedHTML},useRouter:function(){return v},useParams:function(){return O},useSelectedLayoutSegments:function(){return M},useSelectedLayoutSegment:function(){return k},redirect:function(){return c.redirect},permanentRedirect:function(){return c.permanentRedirect},RedirectType:function(){return c.RedirectType},notFound:function(){return l.notFound}});const n=j,i=ye,a=_e,o=Ve,u=Je,s=ge,y=he,c=ze,l=Xe,g=Symbol("internal for urlsearchparams readonly");function d(){return new Error("ReadonlyURLSearchParams cannot be modified")}class _{[Symbol.iterator](){return this[g][Symbol.iterator]()}append(){throw d()}delete(){throw d()}set(){throw d()}sort(){throw d()}constructor(p){this[g]=p,this.entries=p.entries.bind(p),this.forEach=p.forEach.bind(p),this.get=p.get.bind(p),this.getAll=p.getAll.bind(p),this.has=p.has.bind(p),this.keys=p.keys.bind(p),this.values=p.values.bind(p),this.toString=p.toString.bind(p),this.size=p.size}}function f(){(0,o.clientHookInServerComponentError)("useSearchParams");const m=(0,n.useContext)(a.SearchParamsContext),p=(0,n.useMemo)(()=>m?new _(m):null,[m]);if(typeof window>"u"){const{bailoutToClientRendering:R}=Qe();R("useSearchParams()")}return p}function h(){return(0,o.clientHookInServerComponentError)("usePathname"),(0,n.useContext)(a.PathnameContext)}function v(){(0,o.clientHookInServerComponentError)("useRouter");const m=(0,n.useContext)(i.AppRouterContext);if(m===null)throw new Error("invariant expected app router to be mounted");return m}function C(m,p){p===void 0&&(p={});const R=m[1];for(const E of Object.values(R)){const S=E[0],A=Array.isArray(S),T=A?S[1]:S;if(!T||T.startsWith(s.PAGE_SEGMENT_KEY))continue;A&&(S[2]==="c"||S[2]==="oc")?p[S[0]]=S[1].split("/"):A&&(p[S[0]]=S[1]),p=C(E,p)}return p}function O(){(0,o.clientHookInServerComponentError)("useParams");const m=(0,n.useContext)(i.GlobalLayoutRouterContext),p=(0,n.useContext)(a.PathParamsContext);return(0,n.useMemo)(()=>m!=null&&m.tree?C(m.tree):p,[m==null?void 0:m.tree,p])}function b(m,p,R,E){R===void 0&&(R=!0),E===void 0&&(E=[]);let S;if(R)S=m[1][p];else{const ne=m[1];var A;S=(A=ne.children)!=null?A:Object.values(ne)[0]}if(!S)return E;const T=S[0],x=(0,u.getSegmentValue)(T);return!x||x.startsWith(s.PAGE_SEGMENT_KEY)?E:(E.push(x),b(S,p,!1,E))}function M(m){m===void 0&&(m="children"),(0,o.clientHookInServerComponentError)("useSelectedLayoutSegments");const{tree:p}=(0,n.useContext)(i.LayoutRouterContext);return b(p,m)}function k(m){m===void 0&&(m="children"),(0,o.clientHookInServerComponentError)("useSelectedLayoutSegment");const p=M(m);return p.length===0?null:p[0]}(typeof e.default=="function"||typeof e.default=="object"&&e.default!==null)&&typeof e.default.__esModule>"u"&&(Object.defineProperty(e.default,"__esModule",{value:!0}),Object.assign(e.default,e),t.exports=e.default)})(V,V.exports);var Ze=V.exports,et=Ze;function P(t,e){const r={"Content-Type":"text/json; charset=UTF-8"},n=JSON.stringify(t);return new Response(n,{status:e,headers:r})}function me(){return process.env.NEXT_API_DRAFT_SECRET||""}function be(t){const{searchParams:e}=new URL(t),r=e.get("secret")||"",n=e.get("languages"),i=e.get("urls"),a=e.get("routes"),o=e.get("pk"),u=e.get("version"),s={secret:"",languages:[],paths:[],routes:[],type:"",pk:"",version:""};if(!r||!n||!(i||a))return s;const y=typeof o=="string"?o:"",c=typeof u=="string"?u:"";try{const l=JSON.parse(n);if(a){const d=JSON.parse(a);return{secret:r,languages:l,paths:[],routes:d,type:"route",pk:y,version:c}}if(!i)return s;const g=JSON.parse(i);return{secret:r,languages:l,paths:g,routes:[],type:"path",pk:y,version:c}}catch{return s}}function Se(t,e,r=0){const{searchParams:n}=new URL(e),i=[...t.matchAll(/\{\{([a-z]+)\}\}/gi)],a={};return i.forEach(o=>{const u=o[1]||"";if(!u)return;const s=`${u}s`,y=n.get(s);if(y)try{const c=JSON.parse(y);a[u]=c[r]||""}catch{a[u]=""}else{const c=n.get(u);a[u]=c||""}}),Ce.template(t,a)}function tt({url:t,getDirectusLanguage:e,getDraftSecret:r,getJsonError:n}){const i=r||me,a=n||P,{secret:o,languages:u,paths:s,routes:y,type:c,version:l}=be(t);if(o!==i())return a({error:"Invalid argument"},401);if(c==="")return a({error:"Invalid argument"},400);if(!Array.isArray(u)||u.length<=0)return a({error:"Invalid languages argument"},400);if(c==="path"&&(!Array.isArray(s)||s.length<=0))return a({error:"Invalid paths argument"},400);if(c==="route"&&(!Array.isArray(y)||y.length<=0))return a({error:"Invalid routes argument"},400);const g=e(),d=u.indexOf(g),_=d!==-1?d:0;let f="";if(c==="path"){const h=s[_]||"";if(!h)return P({error:"Invalid path"},400);f=h}else if(c==="route"){const h=y[_]||"";if(!h)return P({error:"Invalid route"},400);const v=Se(h,t,_);if(!v)return P({error:"Invalid route"},400);f=v}if(f&&l){const h=f.indexOf("?")!==-1;f=`${f}${h?"&":"?"}version=${encodeURIComponent(l)}`}Ue.draftMode().enable(),et.redirect(f)}exports.getDraftSecretDefault=me;exports.getJsonErrorResponse=P;exports.getPathFromRoute=Se;exports.handleDraftRoute=tt;exports.parseParams=be;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const route = require("./draft/route.js");
|
|
4
|
+
const env = require("./draft/env.js");
|
|
5
|
+
const directusRouteRouter = require("./lib/directusRouteRouter.js");
|
|
6
|
+
const response = require("./response.js");
|
|
7
|
+
exports.getPathFromRoute = route.getPathFromRoute;
|
|
8
|
+
exports.handleDraftRoute = route.default;
|
|
9
|
+
exports.parseParams = route.parseParams;
|
|
10
|
+
exports.getDraftSecretDefault = env.getDraftSecretDefault;
|
|
11
|
+
exports.directusRouteRouter = directusRouteRouter.directusRouteRouter;
|
|
12
|
+
exports.getJsonErrorResponse = response.getJsonErrorResponse;
|