2import { getValEndpointFromName } from "https://esm.town/v/postpostscript/meta";
34export default function(req: Request) {
5const { author, name } = extractValInfo(import.meta.url);
6const blogEndpoint = getValEndpointFromName(`@${author}/blog`);
4import { getValEndpointFromName } from "https://esm.town/v/postpostscript/meta";
56export default function(req: Request) {
7const { author, name } = extractValInfo(import.meta.url);
8const blogEndpoint = getValEndpointFromName(`@${author}/blog`);
twitterAlertmain.tsx1 match
4const query = "\"val.town\" OR \"val town\" -_ValTown_";
56export async function twitterAlert({ lastRunAt }: Interval) {
7const results = await twitterSearch({
8query,
54export default app.fetch;
5556async function createPage(c: Context<HonoEnvOptional>) {
57const auth = c.get("auth");
58
1import { email as sendEmail } from "https://esm.town/v/std/email?v=11";
23export default async function(email: Email) {
4await sendEmail({
5subject: email.subject,
authMiddlewaremain.tsx12 matches
25};
2627async function normalizeOption<T>(value: MaybeMethod<T>, req: Request, payload: JWTPayload): Promise<T> {
28return value instanceof Function
29? await value(req, payload)
30: value;
31}
3233export function getRequestContextRequest(context: ImplementsRequestContext) {
34return "raw" in context.req
35? context.req.raw
47}
4849export function authWrapperCookie(
50handler: (req: Request, context: ImplementsRequestContext) => MaybePromise<Response>,
51options: AuthMiddlewareOptions<ImplementsRequestContext> & {
79}
8081export function authWrapperToken(
82handler: (req: Request, context: ImplementsRequestContext) => MaybePromise<Response>,
83options: AuthMiddlewareOptions<ImplementsRequestContext> & {
109}
110111export function authMiddlewareToken<Context extends ImplementsRequestContext>(
112options: Omit<AuthMiddlewareOptions<Context>, "requestScope"> & {
113createResponse?: (context: Context, content: unknown, init?: ResponseInit) => MaybePromise<Response>;
161}
162163export function authMiddlewareTokenQS<Context extends ImplementsRequestContext>(
164options: Omit<AuthMiddlewareOptions<Context>, "requestScope"> & {
165createResponse?: (context: Context, content: unknown, init?: ResponseInit) => MaybePromise<Response>;
213}
214215export function authMiddlewareCookie<Context extends ImplementsRequestContext>(
216options: AuthMiddlewareOptions<Context> & {
217rootPath?: string;
261};
262263function verifyAuthToken(token: string, req: Request) {
264return verifyThirdParty(token, {
265issuer: `@${handle}/authId`,
371};
372373newPayload.requestScope = requestScope instanceof Function
374? await requestScope(req, name)
375: requestScope;
451};
452453export function userDisplay(payload: JWTPayload) {
454return payload.sub.replace(/\/.*/, "");
455}
456457export function userActionsDisplay(
458payload: JWTPayload,
459{
3334const ENDPOINT = getValEndpointFromUrl(import.meta.url);
35export function api(path: string, token: string, init: RequestInit = {}) {
36return fetch(`${ENDPOINT}/${path.replace(/^\/+/, "")}`, {
37...init,
playgroundREADME.md1 match
8- only script vals supported
910everything else should be fully functional.
1112you can prefill the editor with
authMiddlewaremain.tsx12 matches
25};
2627async function normalizeOption<T>(value: MaybeMethod<T>, req: Request, payload: JWTPayload): Promise<T> {
28return value instanceof Function
29? await value(req, payload)
30: value;
31}
3233export function getRequestContextRequest(context: ImplementsRequestContext) {
34return "raw" in context.req
35? context.req.raw
47}
4849export function authWrapperCookie(
50handler: (req: Request, context: ImplementsRequestContext) => MaybePromise<Response>,
51options: AuthMiddlewareOptions<ImplementsRequestContext> & {
79}
8081export function authWrapperToken(
82handler: (req: Request, context: ImplementsRequestContext) => MaybePromise<Response>,
83options: AuthMiddlewareOptions<ImplementsRequestContext> & {
109}
110111export function authMiddlewareToken<Context extends ImplementsRequestContext>(
112options: Omit<AuthMiddlewareOptions<Context>, "requestScope"> & {
113createResponse?: (context: Context, content: unknown, init?: ResponseInit) => MaybePromise<Response>;
161}
162163export function authMiddlewareTokenQS<Context extends ImplementsRequestContext>(
164options: Omit<AuthMiddlewareOptions<Context>, "requestScope"> & {
165createResponse?: (context: Context, content: unknown, init?: ResponseInit) => MaybePromise<Response>;
213}
214215export function authMiddlewareCookie<Context extends ImplementsRequestContext>(
216options: AuthMiddlewareOptions<Context> & {
217rootPath?: string;
261};
262263function verifyAuthToken(token: string, req: Request) {
264return verifyThirdParty(token, {
265issuer: `@${handle}/authId`,
371};
372373newPayload.requestScope = requestScope instanceof Function
374? await requestScope(req, name)
375: requestScope;
451};
452453export function userDisplay(payload: JWTPayload) {
454return payload.sub.replace(/\/.*/, "");
455}
456457export function userActionsDisplay(
458payload: JWTPayload,
459{
14export type JWTCustomClaimVerifier = (payload: jose.JWTPayload, claim: unknown) => MaybePromise<boolean>;
1516export function createVerifyMethod(keys: () => MaybePromise<jose.JWK[]>) {
17return async function verify(
18token: string,
19options: JWTVerifyOptions,
22const { payload } = await jose.jwtVerify(token, publicKey, options);
23const customClaims = options.custom && (
24options.custom instanceof Function
25? await options.custom(payload)
26: options.custom
31}
3233export function createGenerateMethod(keys: () => MaybePromise<jose.JWK[]>) {
34return async function generate(payload: any, exp?: string | number | Date) {
35const _keys = await keys();
36const privateKey = await jose.importJWK(_keys[0]);
51}
5253export async function verifyThirdParty(
54token: string,
55options: JWTVerifyOptions = {},
72}
7374export function decode(token: string) {
75return jose.decodeJwt(token);
76}
116}
117118export async function verifyCustomClaims(
119payload,
120customClaims: Record<string, unknown>,