@revojs/cloudflare 0.2.43 → 0.2.44

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/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DurableObjectNamespace, Workflow } from "@cloudflare/workers-types";
1
+ import type { DurableObjectNamespace, SecretsStoreSecret, Workflow } from "@cloudflare/workers-types";
2
2
  import { type Scope } from "revojs";
3
3
  import type { Awaitable } from "revojs/shared";
4
4
  export type ScreamingSnake<Value extends string> = Value extends `${infer Head}${infer Next}${infer Tail}` ? `${Uppercase<Head>}${Head extends Lowercase<Head> ? (Next extends Lowercase<Next> ? "" : "_") : ""}${ScreamingSnake<`${Next}${Tail}`>}` : Uppercase<Value>;
@@ -10,6 +10,8 @@ export type Workflows = {
10
10
  };
11
11
  export declare function useDurableObjects(scope: Scope): DurableObjects;
12
12
  export declare function useWorkflows(scope: Scope): Workflows;
13
+ export declare function resolveSecrets<T extends object>(variables: T): Promise<T>;
14
+ export declare function isSecretsStoreSecret(value: unknown): value is SecretsStoreSecret;
13
15
  export interface ReceivedEmail {
14
16
  from: string;
15
17
  to: string;
@@ -19,3 +21,8 @@ export interface ReceivedEmail {
19
21
  reject: (reason: string) => void;
20
22
  }
21
23
  export declare const EMAIL_RECEIVED_HOOK: import("revojs").Descriptor<import("revojs").Hook<ReceivedEmail, Awaitable<void>>>;
24
+ export declare const SECRETS: {
25
+ binding: string;
26
+ store_id: string;
27
+ secret_name: string;
28
+ }[];
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import config from "#config/cloudflare";
1
2
  import { defineHook, useVariables } from "revojs";
2
3
  //#region src/index.ts
3
4
  function useDurableObjects(scope) {
@@ -6,6 +7,18 @@ function useDurableObjects(scope) {
6
7
  function useWorkflows(scope) {
7
8
  return useVariables(scope);
8
9
  }
10
+ async function resolveSecrets(variables) {
11
+ const resolved = { ...variables };
12
+ for (const { binding } of SECRETS) {
13
+ const secret = resolved[binding];
14
+ if (isSecretsStoreSecret(secret)) resolved[binding] = await secret.get().catch(() => void 0);
15
+ }
16
+ return resolved;
17
+ }
18
+ function isSecretsStoreSecret(value) {
19
+ return typeof value === "object" && value !== null && typeof value.get === "function";
20
+ }
9
21
  var EMAIL_RECEIVED_HOOK = defineHook("EMAIL_RECEIVED_HOOK");
22
+ var SECRETS = (typeof config.config === "object" ? config.config.secrets_store_secrets : void 0) ?? [];
10
23
  //#endregion
11
- export { EMAIL_RECEIVED_HOOK, useDurableObjects, useWorkflows };
24
+ export { EMAIL_RECEIVED_HOOK, SECRETS, isSecretsStoreSecret, resolveSecrets, useDurableObjects, useWorkflows };
package/dist/package.js CHANGED
@@ -1,6 +1,6 @@
1
1
  //#region package.json
2
2
  var name = "@revojs/cloudflare";
3
- var version = "0.2.43";
3
+ var version = "0.2.44";
4
4
  var repository = {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/tellua/revojs.git"
@@ -1,4 +1,4 @@
1
- import { EMAIL_RECEIVED_HOOK } from "../index.js";
1
+ import { EMAIL_RECEIVED_HOOK, resolveSecrets } from "../index.js";
2
2
  import { VARIABLE_CONTEXT, createScope, dispatchHook } from "revojs";
3
3
  import "@cloudflare/workers-types";
4
4
  import { SCHEDULE_CONTEXT, createServerScope, invokeWebSocket, isResponse, isWebSocket, sendResponse } from "@revojs/server";
@@ -9,7 +9,7 @@ export * from "#workflows";
9
9
  var server_default = {
10
10
  async fetch(request, variables) {
11
11
  const server = await import("#server").then((module) => module.default);
12
- const scope = await createServerScope(request, variables);
12
+ const scope = await createServerScope(request, await resolveSecrets(variables));
13
13
  const result = await server.fetch(scope);
14
14
  if (isResponse(result)) return result;
15
15
  if (isWebSocket(result)) {
@@ -43,12 +43,12 @@ var server_default = {
43
43
  },
44
44
  async scheduled(event, variables) {
45
45
  await (await import("#server").then((module) => module.default)).schedule(await createScope({ context: {
46
- [VARIABLE_CONTEXT]: variables,
46
+ [VARIABLE_CONTEXT]: await resolveSecrets(variables),
47
47
  [SCHEDULE_CONTEXT]: { when: event.cron }
48
48
  } }));
49
49
  },
50
50
  async email(message, variables) {
51
- await dispatchHook(await createScope({ context: { [VARIABLE_CONTEXT]: variables } }), EMAIL_RECEIVED_HOOK, {
51
+ await dispatchHook(await createScope({ context: { [VARIABLE_CONTEXT]: await resolveSecrets(variables) } }), EMAIL_RECEIVED_HOOK, {
52
52
  from: message.from,
53
53
  to: message.to,
54
54
  headers: message.headers,
@@ -1,3 +1,10 @@
1
+ declare module "#config/cloudflare" {
2
+ import type { CloudflareConfig } from "@revojs/cloudflare/module";
3
+
4
+ const config: CloudflareConfig;
5
+ export default config;
6
+ }
7
+
1
8
  declare module "#durable-objects" {
2
9
  import type { DurableObject } from "cloudflare:workers";
3
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revojs/cloudflare",
3
- "version": "0.2.43",
3
+ "version": "0.2.44",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",