UNPKG

@qundus/qstate

Version:
1 lines 7.68 kB
{"version":3,"sources":["../../../src/integrations/astro/const.ts","../../../src/checks/is-server-side.ts","../../../src/integrations/astro/methods.ts","../../../src/integrations/astro/actions.ts","../../../src/integrations/astro/middleware.ts"],"names":["ACTIONS_KEY","is_server_side_default","methods_default","ctx","key","data","initialData","_a","result","form","button","clickEvent","e","qStateAstroActions","defineAction","z","input","middleware","next","res","allTasks","middleware_default"],"mappings":"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","file":"index.cjs","sourcesContent":["export const ACTIONS_KEY = \"QSTATE\";\n","export default function () {\n\tif (typeof document === \"undefined\") {\n\t\treturn true;\n\t}\n\treturn false;\n}\n","/// <reference types=\"astro/client\" />\nimport type { ActionAPIContext } from \"astro:actions\";\nimport type { APIContext } from \"astro\";\nimport { ActionError } from \"astro/actions/runtime/virtual/shared.js\";\nimport isServerSide from \"../../checks/is-server-side\";\n\nexport default {\n\tsetLocal: (ctx: APIContext | ActionAPIContext, key: string, data: any) => {\n\t\tctx.cookies.set(key, data, { path: \"/\" });\n\t\t// @ts-ignore\n\t\tctx.locals[key] = data;\n\t\t// locale.$store.set(result);\n\t\treturn { key, data };\n\t},\n\tgetLocal: (ctx: APIContext | ActionAPIContext, key: string, initialData: any) => {\n\t\tlet result = ctx.cookies.get(key)?.json();\n\t\t// console.log('inside getLocale :: ', result);\n\t\tif (result == null) {\n\t\t\tresult = initialData;\n\t\t\tctx.cookies.set(key, result, { path: \"/\" });\n\t\t}\n\t\t// @ts-ignore\n\t\tctx.locals[key] = result;\n\t\t// locale.$store.set(result);\n\t\treturn { key, data: result };\n\t},\n\trefreshServerContent() {\n\t\tif (isServerSide()) {\n\t\t\tconsole.warn(\"qstate: you're trying to set state with astroSetAddon on server, aborting!\");\n\t\t\treturn;\n\t\t}\n\t\t// 1. Create a hidden form (identical to your original)\n\t\tconst form = document.createElement(\"form\");\n\t\tform.method = \"POST\";\n\t\tform.action = window.location.pathname;\n\t\t// form.action = Astro.url.pathname;\n\t\tform.style.display = \"none\";\n\n\t\t// 2. Create and append a submit button\n\t\tconst button = document.createElement(\"button\");\n\t\tbutton.type = \"submit\";\n\t\tform.appendChild(button);\n\n\t\t// 3. Add to DOM (required for submission)\n\t\tdocument.body.appendChild(form);\n\n\t\t// 4. Create and dispatch a perfect click event\n\t\tconst clickEvent = new MouseEvent(\"click\", {\n\t\t\tbubbles: true,\n\t\t\tcancelable: true,\n\t\t\tview: window,\n\t\t});\n\n\t\t// 5. Clean up (but delay slightly for submission to complete)\n\t\tform.addEventListener(\"\", (e) => {\n\t\t\t// if (form.parentNode) {\n\t\t\t// \tdocument.body.removeChild(form);\n\t\t\t// }\n\t\t});\n\n\t\t// 6. Trigger the click AND let default form handling occur\n\t\tbutton.dispatchEvent(clickEvent);\n\t},\n};\n","/// <reference types=\"astro/client\" />\nimport type { defineAction } from \"astro:actions\";\nimport { z } from \"zod\";\nimport { ACTIONS_KEY } from \"./const\";\nimport methods from \"./methods\";\n\n// export type AstroActions<L extends AstroActions> =\nexport default function qStateAstroActions<A extends typeof defineAction>(defineAction: A) {\n\treturn {\n\t\t[ACTIONS_KEY]: {\n\t\t\tsetLocal: defineAction({\n\t\t\t\tinput: z.object({ key: z.string(), data: z.any() }),\n\t\t\t\t// input: z.enum(locale.setup.langs),\n\t\t\t\tasync handler(input, ctx) {\n\t\t\t\t\tconst result = methods.setLocal(ctx, input.key, input.data);\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tctx.locals[result.key] = result.data;\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t}),\n\t\t\tgetLocal: defineAction({\n\t\t\t\tinput: z.object({ key: z.string(), initial: z.any() }),\n\t\t\t\tasync handler(input, ctx) {\n\t\t\t\t\tconst result = methods.getLocal(ctx, input.key, input.initial);\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t} as any;\n}\n","import type { MiddlewareHandler } from \"astro\";\nimport { allTasks } from \"nanostores\";\nimport { ACTIONS_KEY } from \"./const\";\n\nconst middleware: MiddlewareHandler = async (ctx, next) => {\n\t// maintain order\n\t// ctx.locals.user = \"yeah\";\n\t// slowing calls for no reason, let user add middlewares manually\n\t// try {\n\t// \tconst { getActionContext } = await import(\"astro:actions\");\n\t// \tconst { action } = getActionContext(ctx);\n\t// \tif (action != null) {\n\t// \t\tconst idx = action?.name.indexOf(ACTIONS_KEY) ?? -1;\n\t// \t\tif (idx >= 0) {\n\t// \t\t\t// If so, check for a user session token\n\t// \t\t\t// if (!context.cookies.has(\"user-session\")) {\n\t// \t\t\t// \treturn new Response(\"Forbidden\", { status: 403 });\n\t// \t\t\t// }\n\t// \t\t\tconst funcName = action.name.replace(ACTIONS_KEY + \".\", \"\");\n\n\t// \t\t\tconsole.log(\"middleware actions :: \", funcName);\n\t// \t\t\tif (funcName.startsWith(\"setLocal\")) {\n\t// \t\t\t\tconst { key, data } = (await action.handler()) as any;\n\t// \t\t\t\t// @ts-ignore\n\t// \t\t\t\tctx.locals[key] = data;\n\t// \t\t\t}\n\t// \t\t}\n\t// \t}\n\t// } catch (err) {\n\t// \tconsole.error(\"qstate: FATAL!!, qstate cannot set locals\");\n\t// }\n\tconst res = await next();\n\tawait allTasks();\n\treturn res;\n};\n\n// any because we don't want to ship astro by mistake\nexport default middleware as any;\n"]}