@farcaster/snap-hono 1.2.1 → 1.3.0
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 +13 -5
- package/package.json +2 -2
- package/src/index.ts +19 -5
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:
|
|
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:
|
|
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({
|
|
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:
|
|
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.
|
|
3
|
+
"version": "1.3.0",
|
|
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.
|
|
31
|
+
"@farcaster/snap": "1.5.0"
|
|
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 {
|
|
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:
|
|
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:
|
|
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({
|
|
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:
|
|
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 {
|