@farcaster/snap-hono 1.2.1 → 1.3.1

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.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { cors } from "hono/cors";
2
- import { MEDIA_TYPE } from "@farcaster/snap";
2
+ import { createDefaultDataStore, MEDIA_TYPE, ACTION_TYPE_GET, } from "@farcaster/snap";
3
3
  import { parseRequest } from "@farcaster/snap/server";
4
4
  import { brandedFallbackHtml } from "./fallback.js";
5
5
  import { payloadToResponse, snapHeaders } from "./payloadToResponse.js";
6
6
  import { renderSnapPage } from "./renderSnapPage.js";
7
7
  import { renderSnapPageToPng, renderWithDedup, etagForPage, } from "./og-image.js";
8
+ const defaultData = createDefaultDataStore();
8
9
  /**
9
10
  * Register GET and POST snap handlers on `app` at `options.path` (default `/`).
10
11
  *
@@ -29,8 +30,9 @@ export function registerSnapHandler(app, snapFn, options = {}) {
29
30
  const key = resourcePath;
30
31
  const renderFn = async () => {
31
32
  const snap = await snapFn({
32
- action: { type: "get" },
33
+ action: { type: ACTION_TYPE_GET },
33
34
  request: stripAuthHeaders(c.req.raw),
35
+ data: defaultData,
34
36
  });
35
37
  const snapJson = JSON.stringify(snap);
36
38
  const etag = etagForPage(snapJson);
@@ -103,8 +105,9 @@ export function registerSnapHandler(app, snapFn, options = {}) {
103
105
  });
104
106
  }
105
107
  const response = await snapFn({
106
- action: { type: "get" },
108
+ action: { type: ACTION_TYPE_GET },
107
109
  request: c.req.raw,
110
+ data: defaultData,
108
111
  });
109
112
  return payloadToResponse(response, {
110
113
  resourcePath,
@@ -136,7 +139,11 @@ export function registerSnapHandler(app, snapFn, options = {}) {
136
139
  }
137
140
  }
138
141
  }
139
- const response = await snapFn({ action: parsed.action, request: raw });
142
+ const response = await snapFn({
143
+ action: parsed.action,
144
+ request: raw,
145
+ data: defaultData,
146
+ });
140
147
  return payloadToResponse(response, {
141
148
  resourcePath: resourcePathFromRequest(raw.url),
142
149
  mediaTypes: [MEDIA_TYPE, "text/html"],
@@ -177,8 +184,9 @@ async function getFallbackHtml(request, snapFn, ogImageUrl) {
177
184
  const resourcePath = resourcePathFromRequest(request.url);
178
185
  try {
179
186
  const snap = await snapFn({
180
- action: { type: "get" },
187
+ action: { type: ACTION_TYPE_GET },
181
188
  request: stripAuthHeaders(request),
189
+ data: defaultData,
182
190
  });
183
191
  return renderSnapPage(snap, origin, { ogImageUrl, resourcePath, siteName });
184
192
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farcaster/snap-hono",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "Hono integration for Farcaster Snap servers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  "dependencies": {
29
29
  "@resvg/resvg-wasm": "^2.6.2",
30
30
  "satori": "^0.10.0",
31
- "@farcaster/snap": "1.4.1"
31
+ "@farcaster/snap": "1.5.1"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "hono": ">=4.0.0"
package/src/index.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import type { Hono } from "hono";
2
2
  import { cors } from "hono/cors";
3
- import { MEDIA_TYPE, type SnapFunction } from "@farcaster/snap";
3
+ import {
4
+ createDefaultDataStore,
5
+ MEDIA_TYPE,
6
+ type SnapFunction,
7
+ ACTION_TYPE_GET,
8
+ } from "@farcaster/snap";
4
9
  import { parseRequest } from "@farcaster/snap/server";
5
10
  import { brandedFallbackHtml } from "./fallback";
6
11
  import { payloadToResponse, snapHeaders } from "./payloadToResponse";
@@ -12,6 +17,8 @@ import {
12
17
  type OgOptions,
13
18
  } from "./og-image";
14
19
 
20
+ const defaultData = createDefaultDataStore();
21
+
15
22
  export type SnapHandlerOptions = {
16
23
  /**
17
24
  * Route path to register GET and POST handlers on.
@@ -72,8 +79,9 @@ export function registerSnapHandler(
72
79
 
73
80
  const renderFn = async (): Promise<{ png: Uint8Array; etag: string }> => {
74
81
  const snap = await snapFn({
75
- action: { type: "get" },
82
+ action: { type: ACTION_TYPE_GET },
76
83
  request: stripAuthHeaders(c.req.raw),
84
+ data: defaultData,
77
85
  });
78
86
  const snapJson = JSON.stringify(snap);
79
87
  const etag = etagForPage(snapJson);
@@ -159,8 +167,9 @@ export function registerSnapHandler(
159
167
  }
160
168
 
161
169
  const response = await snapFn({
162
- action: { type: "get" },
170
+ action: { type: ACTION_TYPE_GET },
163
171
  request: c.req.raw,
172
+ data: defaultData,
164
173
  });
165
174
 
166
175
  return payloadToResponse(response, {
@@ -201,7 +210,11 @@ export function registerSnapHandler(
201
210
  }
202
211
  }
203
212
 
204
- const response = await snapFn({ action: parsed.action, request: raw });
213
+ const response = await snapFn({
214
+ action: parsed.action,
215
+ request: raw,
216
+ data: defaultData,
217
+ });
205
218
 
206
219
  return payloadToResponse(response, {
207
220
  resourcePath: resourcePathFromRequest(raw.url),
@@ -258,8 +271,9 @@ async function getFallbackHtml(
258
271
 
259
272
  try {
260
273
  const snap = await snapFn({
261
- action: { type: "get" },
274
+ action: { type: ACTION_TYPE_GET },
262
275
  request: stripAuthHeaders(request),
276
+ data: defaultData,
263
277
  });
264
278
  return renderSnapPage(snap, origin, { ogImageUrl, resourcePath, siteName });
265
279
  } catch {