diff options
| author | Frank <[email protected]> | 2025-11-23 15:21:47 -0500 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-11-23 15:21:47 -0500 |
| commit | bbc9142fc54fef532039f2a91c63ac2f2873af41 (patch) | |
| tree | 67b6d266cdab71cc094c92a6474fc4f44dd4ad7e /packages/console/resource | |
| parent | 7413c2715c208a92d1ca3c4f31988a4449b877a0 (diff) | |
| download | opencode-bbc9142fc54fef532039f2a91c63ac2f2873af41.tar.gz opencode-bbc9142fc54fef532039f2a91c63ac2f2873af41.zip | |
wip: zen
Diffstat (limited to 'packages/console/resource')
| -rw-r--r-- | packages/console/resource/resource.cloudflare.ts | 1 | ||||
| -rw-r--r-- | packages/console/resource/resource.node.ts | 90 | ||||
| -rw-r--r-- | packages/console/resource/sst-env.d.ts | 218 |
3 files changed, 166 insertions, 143 deletions
diff --git a/packages/console/resource/resource.cloudflare.ts b/packages/console/resource/resource.cloudflare.ts index a56b1e417..745212ca9 100644 --- a/packages/console/resource/resource.cloudflare.ts +++ b/packages/console/resource/resource.cloudflare.ts @@ -1,4 +1,5 @@ import { env } from "cloudflare:workers" +export { waitUntil } from "cloudflare:workers" export const Resource = new Proxy( {}, diff --git a/packages/console/resource/resource.node.ts b/packages/console/resource/resource.node.ts index f63d7bada..46b9629ed 100644 --- a/packages/console/resource/resource.node.ts +++ b/packages/console/resource/resource.node.ts @@ -2,54 +2,66 @@ import type { KVNamespaceListOptions, KVNamespaceListResult, KVNamespacePutOptio import { Resource as ResourceBase } from "sst" import Cloudflare from "cloudflare" +export const waitUntil = async (fn: () => Promise<void>) => { + await fn() +} + export const Resource = new Proxy( {}, { get(_target, prop: keyof typeof ResourceBase) { const value = ResourceBase[prop] - // @ts-ignore - if ("type" in value && value.type === "sst.cloudflare.Kv") { - const client = new Cloudflare({ - apiToken: ResourceBase.CLOUDFLARE_API_TOKEN.value, - }) + if ("type" in value) { + // @ts-ignore + if (value.type === "sst.cloudflare.Bucket") { + return { + put: async () => {}, + } + } // @ts-ignore - const namespaceId = value.namespaceId - const accountId = ResourceBase.CLOUDFLARE_DEFAULT_ACCOUNT_ID.value - return { - get: (k: string | string[]) => { - const isMulti = Array.isArray(k) - return client.kv.namespaces - .bulkGet(namespaceId, { - keys: Array.isArray(k) ? k : [k], + if (value.type === "sst.cloudflare.Kv") { + const client = new Cloudflare({ + apiToken: ResourceBase.CLOUDFLARE_API_TOKEN.value, + }) + // @ts-ignore + const namespaceId = value.namespaceId + const accountId = ResourceBase.CLOUDFLARE_DEFAULT_ACCOUNT_ID.value + return { + get: (k: string | string[]) => { + const isMulti = Array.isArray(k) + return client.kv.namespaces + .bulkGet(namespaceId, { + keys: Array.isArray(k) ? k : [k], + account_id: accountId, + }) + .then((result) => (isMulti ? new Map(Object.entries(result?.values ?? {})) : result?.values?.[k])) + }, + put: (k: string, v: string, opts?: KVNamespacePutOptions) => + client.kv.namespaces.values.update(namespaceId, k, { account_id: accountId, - }) - .then((result) => (isMulti ? new Map(Object.entries(result?.values ?? {})) : result?.values?.[k])) - }, - put: (k: string, v: string, opts?: KVNamespacePutOptions) => - client.kv.namespaces.values.update(namespaceId, k, { - account_id: accountId, - value: v, - expiration: opts?.expiration, - expiration_ttl: opts?.expirationTtl, - metadata: opts?.metadata, - }), - delete: (k: string) => - client.kv.namespaces.values.delete(namespaceId, k, { - account_id: accountId, - }), - list: (opts?: KVNamespaceListOptions): Promise<KVNamespaceListResult<unknown, string>> => - client.kv.namespaces.keys - .list(namespaceId, { + value: v, + expiration: opts?.expiration, + expiration_ttl: opts?.expirationTtl, + metadata: opts?.metadata, + }), + delete: (k: string) => + client.kv.namespaces.values.delete(namespaceId, k, { account_id: accountId, - prefix: opts?.prefix ?? undefined, - }) - .then((result) => { - return { - keys: result.result, - list_complete: true, - cacheStatus: null, - } }), + list: (opts?: KVNamespaceListOptions): Promise<KVNamespaceListResult<unknown, string>> => + client.kv.namespaces.keys + .list(namespaceId, { + account_id: accountId, + prefix: opts?.prefix ?? undefined, + }) + .then((result) => { + return { + keys: result.result, + list_complete: true, + cacheStatus: null, + } + }), + } } } return value diff --git a/packages/console/resource/sst-env.d.ts b/packages/console/resource/sst-env.d.ts index 0862ae4e3..8e38d3825 100644 --- a/packages/console/resource/sst-env.d.ts +++ b/packages/console/resource/sst-env.d.ts @@ -6,116 +6,126 @@ import "sst" declare module "sst" { export interface Resource { - ADMIN_SECRET: { - type: "sst.sst.Secret" - value: string - } - AUTH_API_URL: { - type: "sst.sst.Linkable" - value: string - } - AWS_SES_ACCESS_KEY_ID: { - type: "sst.sst.Secret" - value: string - } - AWS_SES_SECRET_ACCESS_KEY: { - type: "sst.sst.Secret" - value: string - } - CLOUDFLARE_API_TOKEN: { - type: "sst.sst.Secret" - value: string - } - CLOUDFLARE_DEFAULT_ACCOUNT_ID: { - type: "sst.sst.Secret" - value: string - } - Console: { - type: "sst.cloudflare.SolidStart" - url: string - } - Database: { - database: string - host: string - password: string - port: number - type: "sst.sst.Linkable" - username: string - } - Desktop: { - type: "sst.cloudflare.StaticSite" - url: string - } - EMAILOCTOPUS_API_KEY: { - type: "sst.sst.Secret" - value: string - } - GITHUB_APP_ID: { - type: "sst.sst.Secret" - value: string - } - GITHUB_APP_PRIVATE_KEY: { - type: "sst.sst.Secret" - value: string - } - GITHUB_CLIENT_ID_CONSOLE: { - type: "sst.sst.Secret" - value: string - } - GITHUB_CLIENT_SECRET_CONSOLE: { - type: "sst.sst.Secret" - value: string - } - GOOGLE_CLIENT_ID: { - type: "sst.sst.Secret" - value: string - } - HONEYCOMB_API_KEY: { - type: "sst.sst.Secret" - value: string - } - STRIPE_SECRET_KEY: { - type: "sst.sst.Secret" - value: string - } - STRIPE_WEBHOOK_SECRET: { - type: "sst.sst.Linkable" - value: string - } - Web: { - type: "sst.cloudflare.Astro" - url: string - } - ZEN_MODELS1: { - type: "sst.sst.Secret" - value: string - } - ZEN_MODELS2: { - type: "sst.sst.Secret" - value: string - } - ZEN_MODELS3: { - type: "sst.sst.Secret" - value: string - } - ZEN_MODELS4: { - type: "sst.sst.Secret" - value: string + "ADMIN_SECRET": { + "type": "sst.sst.Secret" + "value": string + } + "AUTH_API_URL": { + "type": "sst.sst.Linkable" + "value": string + } + "AWS_SES_ACCESS_KEY_ID": { + "type": "sst.sst.Secret" + "value": string + } + "AWS_SES_SECRET_ACCESS_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "CLOUDFLARE_API_TOKEN": { + "type": "sst.sst.Secret" + "value": string + } + "CLOUDFLARE_DEFAULT_ACCOUNT_ID": { + "type": "sst.sst.Secret" + "value": string + } + "Console": { + "type": "sst.cloudflare.SolidStart" + "url": string + } + "Database": { + "database": string + "host": string + "password": string + "port": number + "type": "sst.sst.Linkable" + "username": string + } + "Desktop": { + "type": "sst.cloudflare.StaticSite" + "url": string + } + "EMAILOCTOPUS_API_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_APP_ID": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_APP_PRIVATE_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_CLIENT_ID_CONSOLE": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_CLIENT_SECRET_CONSOLE": { + "type": "sst.sst.Secret" + "value": string + } + "GOOGLE_CLIENT_ID": { + "type": "sst.sst.Secret" + "value": string + } + "HONEYCOMB_API_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "R2AccessKey": { + "type": "sst.sst.Secret" + "value": string + } + "R2SecretKey": { + "type": "sst.sst.Secret" + "value": string + } + "STRIPE_SECRET_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "STRIPE_WEBHOOK_SECRET": { + "type": "sst.sst.Linkable" + "value": string + } + "Web": { + "type": "sst.cloudflare.Astro" + "url": string + } + "ZEN_MODELS1": { + "type": "sst.sst.Secret" + "value": string + } + "ZEN_MODELS2": { + "type": "sst.sst.Secret" + "value": string + } + "ZEN_MODELS3": { + "type": "sst.sst.Secret" + "value": string + } + "ZEN_MODELS4": { + "type": "sst.sst.Secret" + "value": string } } } -// cloudflare -import * as cloudflare from "@cloudflare/workers-types" +// cloudflare +import * as cloudflare from "@cloudflare/workers-types"; declare module "sst" { export interface Resource { - Api: cloudflare.Service - AuthApi: cloudflare.Service - AuthStorage: cloudflare.KVNamespace - Bucket: cloudflare.R2Bucket - GatewayKv: cloudflare.KVNamespace - LogProcessor: cloudflare.Service + "Api": cloudflare.Service + "AuthApi": cloudflare.Service + "AuthStorage": cloudflare.KVNamespace + "Bucket": cloudflare.R2Bucket + "ConsoleData": cloudflare.R2Bucket + "EnterpriseStorage": cloudflare.R2Bucket + "GatewayKv": cloudflare.KVNamespace + "LogProcessor": cloudflare.Service } } import "sst" -export {} +export {}
\ No newline at end of file |
