@growth-labs/push 0.4.3 → 0.4.7
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/README.md +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +17 -94
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +18 -5
- package/dist/options.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +2 -0
- package/src/options.ts +18 -5
package/README.md
CHANGED
|
@@ -13,7 +13,6 @@ import push from '@growth-labs/push'
|
|
|
13
13
|
|
|
14
14
|
push({
|
|
15
15
|
vapidPublicKey: 'BDd8...', // URL-safe base64
|
|
16
|
-
vapidPrivateKey: '...', // JWK JSON string (via Cloudflare Secrets)
|
|
17
16
|
vapidSubject: 'mailto:admin@fedweek.com',
|
|
18
17
|
d1Binding: 'SITE_DB',
|
|
19
18
|
queueBinding: 'PUSH_QUEUE',
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,cAAc,CAAA;AAYlE,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,cAAc,CAAA;AAYlE,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,CA4DnE"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,9 @@ export default function push(options) {
|
|
|
11
11
|
const resolved = pushOptionsSchema.parse(options);
|
|
12
12
|
const virtualConfig = {
|
|
13
13
|
vapidPublicKey: resolved.vapidPublicKey,
|
|
14
|
+
siteId: resolved.siteId,
|
|
14
15
|
d1Binding: resolved.d1Binding,
|
|
16
|
+
subscriptionsD1Binding: resolved.subscriptionsD1Binding,
|
|
15
17
|
queueBinding: resolved.queueBinding,
|
|
16
18
|
defaults: resolved.defaults,
|
|
17
19
|
queue: resolved.queue,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAoB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAElE,SAAS,kBAAkB;IAC1B,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAEjE,SAAS,iBAAiB,CAAC,IAAY;IACtC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,oBAAoB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAoB;IAChD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEjD,MAAM,aAAa,GAAG;QACrB,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;KACzB,CAAA;IAED,MAAM,eAAe,GAAG,iCAAiC,CAAA;IACzD,MAAM,uBAAuB,GAAG,KAAK,eAAe,EAAE,CAAA;IAEtD,OAAO;QACN,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE;YACN,oBAAoB,EAAE,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE;gBACtE,YAAY,CAAC;oBACZ,IAAI,EAAE;wBACL,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,yBAAyB;gCAC/B,SAAS,CAAC,EAAE;oCACX,IAAI,EAAE,KAAK,eAAe;wCAAE,OAAO,uBAAuB,CAAA;gCAC3D,CAAC;gCACD,IAAI,CAAC,EAAE;oCACN,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;wCACpC,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAA;oCACzD,CAAC;gCACF,CAAC;6BACD;yBACD;qBACD;iBACD,CAAC,CAAA;gBAEF,aAAa,CAAC;oBACb,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,CAAC;oBAClD,KAAK,EAAE,KAAK;iBACZ,CAAC,CAAA;gBAEF,WAAW,CAAC;oBACX,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;oBAClC,UAAU,EAAE,iBAAiB,CAAC,oBAAoB,CAAC;oBACnD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBAEF,WAAW,CAAC;oBACX,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;oBACpC,UAAU,EAAE,iBAAiB,CAAC,sBAAsB,CAAC;oBACrD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;YACH,CAAC;SACD;KACD,CAAA;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAoB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAElE,SAAS,kBAAkB;IAC1B,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAEjE,SAAS,iBAAiB,CAAC,IAAY;IACtC,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,oBAAoB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAoB;IAChD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEjD,MAAM,aAAa,GAAG;QACrB,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB;QACvD,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;KACzB,CAAA;IAED,MAAM,eAAe,GAAG,iCAAiC,CAAA;IACzD,MAAM,uBAAuB,GAAG,KAAK,eAAe,EAAE,CAAA;IAEtD,OAAO;QACN,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE;YACN,oBAAoB,EAAE,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE;gBACtE,YAAY,CAAC;oBACZ,IAAI,EAAE;wBACL,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,yBAAyB;gCAC/B,SAAS,CAAC,EAAE;oCACX,IAAI,EAAE,KAAK,eAAe;wCAAE,OAAO,uBAAuB,CAAA;gCAC3D,CAAC;gCACD,IAAI,CAAC,EAAE;oCACN,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;wCACpC,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAA;oCACzD,CAAC;gCACF,CAAC;6BACD;yBACD;qBACD;iBACD,CAAC,CAAA;gBAEF,aAAa,CAAC;oBACb,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,CAAC;oBAClD,KAAK,EAAE,KAAK;iBACZ,CAAC,CAAA;gBAEF,WAAW,CAAC;oBACX,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;oBAClC,UAAU,EAAE,iBAAiB,CAAC,oBAAoB,CAAC;oBACnD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;gBAEF,WAAW,CAAC;oBACX,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;oBACpC,UAAU,EAAE,iBAAiB,CAAC,sBAAsB,CAAC;oBACrD,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;YACH,CAAC;SACD;KACD,CAAA;AACF,CAAC"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,114 +1,37 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const pushOptionsSchema: z.ZodObject<{
|
|
3
3
|
vapidPublicKey: z.ZodString;
|
|
4
|
-
vapidPrivateKey: z.ZodString
|
|
4
|
+
vapidPrivateKey: z.ZodOptional<z.ZodString>;
|
|
5
5
|
vapidSubject: z.ZodString;
|
|
6
6
|
siteId: z.ZodString;
|
|
7
7
|
d1Binding: z.ZodDefault<z.ZodString>;
|
|
8
8
|
subscriptionsD1Binding: z.ZodOptional<z.ZodString>;
|
|
9
9
|
queueBinding: z.ZodDefault<z.ZodString>;
|
|
10
|
-
defaults: z.
|
|
10
|
+
defaults: z.ZodPrefault<z.ZodObject<{
|
|
11
11
|
icon: z.ZodOptional<z.ZodString>;
|
|
12
12
|
ttl: z.ZodDefault<z.ZodNumber>;
|
|
13
|
-
urgency: z.ZodDefault<z.ZodEnum<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
urgency?: "very-low" | "low" | "normal" | "high" | undefined;
|
|
22
|
-
}>>;
|
|
23
|
-
queue: z.ZodDefault<z.ZodObject<{
|
|
13
|
+
urgency: z.ZodDefault<z.ZodEnum<{
|
|
14
|
+
"very-low": "very-low";
|
|
15
|
+
low: "low";
|
|
16
|
+
normal: "normal";
|
|
17
|
+
high: "high";
|
|
18
|
+
}>>;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
queue: z.ZodPrefault<z.ZodObject<{
|
|
24
21
|
batchSize: z.ZodDefault<z.ZodNumber>;
|
|
25
22
|
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
26
|
-
},
|
|
27
|
-
batchSize: number;
|
|
28
|
-
maxRetries: number;
|
|
29
|
-
}, {
|
|
30
|
-
batchSize?: number | undefined;
|
|
31
|
-
maxRetries?: number | undefined;
|
|
32
|
-
}>>;
|
|
23
|
+
}, z.core.$strip>>;
|
|
33
24
|
turnstile: z.ZodObject<{
|
|
34
25
|
secretKey: z.ZodString;
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
}, {
|
|
38
|
-
secretKey: string;
|
|
39
|
-
}>;
|
|
40
|
-
routes: z.ZodDefault<z.ZodObject<{
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
routes: z.ZodPrefault<z.ZodObject<{
|
|
41
28
|
subscribe: z.ZodDefault<z.ZodString>;
|
|
42
29
|
unsubscribe: z.ZodDefault<z.ZodString>;
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
unsubscribe: string;
|
|
46
|
-
}, {
|
|
47
|
-
subscribe?: string | undefined;
|
|
48
|
-
unsubscribe?: string | undefined;
|
|
49
|
-
}>>;
|
|
50
|
-
cleanup: z.ZodDefault<z.ZodObject<{
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
cleanup: z.ZodPrefault<z.ZodObject<{
|
|
51
32
|
staleAfterDays: z.ZodDefault<z.ZodNumber>;
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
}, {
|
|
55
|
-
staleAfterDays?: number | undefined;
|
|
56
|
-
}>>;
|
|
57
|
-
}, "strip", z.ZodTypeAny, {
|
|
58
|
-
vapidPublicKey: string;
|
|
59
|
-
vapidPrivateKey: string;
|
|
60
|
-
vapidSubject: string;
|
|
61
|
-
siteId: string;
|
|
62
|
-
d1Binding: string;
|
|
63
|
-
queueBinding: string;
|
|
64
|
-
defaults: {
|
|
65
|
-
ttl: number;
|
|
66
|
-
urgency: "very-low" | "low" | "normal" | "high";
|
|
67
|
-
icon?: string | undefined;
|
|
68
|
-
};
|
|
69
|
-
queue: {
|
|
70
|
-
batchSize: number;
|
|
71
|
-
maxRetries: number;
|
|
72
|
-
};
|
|
73
|
-
turnstile: {
|
|
74
|
-
secretKey: string;
|
|
75
|
-
};
|
|
76
|
-
routes: {
|
|
77
|
-
subscribe: string;
|
|
78
|
-
unsubscribe: string;
|
|
79
|
-
};
|
|
80
|
-
cleanup: {
|
|
81
|
-
staleAfterDays: number;
|
|
82
|
-
};
|
|
83
|
-
subscriptionsD1Binding?: string | undefined;
|
|
84
|
-
}, {
|
|
85
|
-
vapidPublicKey: string;
|
|
86
|
-
vapidPrivateKey: string;
|
|
87
|
-
vapidSubject: string;
|
|
88
|
-
siteId: string;
|
|
89
|
-
turnstile: {
|
|
90
|
-
secretKey: string;
|
|
91
|
-
};
|
|
92
|
-
d1Binding?: string | undefined;
|
|
93
|
-
subscriptionsD1Binding?: string | undefined;
|
|
94
|
-
queueBinding?: string | undefined;
|
|
95
|
-
defaults?: {
|
|
96
|
-
icon?: string | undefined;
|
|
97
|
-
ttl?: number | undefined;
|
|
98
|
-
urgency?: "very-low" | "low" | "normal" | "high" | undefined;
|
|
99
|
-
} | undefined;
|
|
100
|
-
queue?: {
|
|
101
|
-
batchSize?: number | undefined;
|
|
102
|
-
maxRetries?: number | undefined;
|
|
103
|
-
} | undefined;
|
|
104
|
-
routes?: {
|
|
105
|
-
subscribe?: string | undefined;
|
|
106
|
-
unsubscribe?: string | undefined;
|
|
107
|
-
} | undefined;
|
|
108
|
-
cleanup?: {
|
|
109
|
-
staleAfterDays?: number | undefined;
|
|
110
|
-
} | undefined;
|
|
111
|
-
}>;
|
|
33
|
+
}, z.core.$strip>>;
|
|
34
|
+
}, z.core.$strip>;
|
|
112
35
|
export type PushOptions = z.input<typeof pushOptionsSchema>;
|
|
113
36
|
export type ResolvedPushOptions = z.output<typeof pushOptionsSchema>;
|
|
114
37
|
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2D5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC3D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
|
package/dist/options.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export const pushOptionsSchema = z.object({
|
|
3
3
|
vapidPublicKey: z.string().min(1),
|
|
4
|
-
|
|
4
|
+
// Legacy callers may supply this, but the integration never consumes it.
|
|
5
|
+
// Signing credentials belong to the runtime consumer, not the build.
|
|
6
|
+
vapidPrivateKey: z.string().min(1).optional(),
|
|
5
7
|
vapidSubject: z.string().min(1),
|
|
6
8
|
siteId: z.string().min(1),
|
|
7
9
|
d1Binding: z.string().default('SITE_DB'),
|
|
@@ -11,19 +13,30 @@ export const pushOptionsSchema = z.object({
|
|
|
11
13
|
// consumer's status writeback and the site's subscribe/produce share one DB.
|
|
12
14
|
subscriptionsD1Binding: z.string().optional(),
|
|
13
15
|
queueBinding: z.string().default('PUSH_QUEUE'),
|
|
16
|
+
// NOTE: nested defaulted objects use `.prefault({})`, not `.default({})`.
|
|
17
|
+
// Under zod v3 (and the `.default()` docs' intuitive reading), defaulting
|
|
18
|
+
// an object schema to `{}` still ran that `{}` through the object schema,
|
|
19
|
+
// so its own field-level `.default(...)` values were filled in. zod v4
|
|
20
|
+
// changed `.default()` to substitute the default value verbatim without
|
|
21
|
+
// re-parsing it, which silently dropped every nested default (e.g.
|
|
22
|
+
// `routes.subscribe` resolved to `undefined` instead of
|
|
23
|
+
// `/api/push/subscribe` — caught by the packages#196 zod-bump test
|
|
24
|
+
// suite). `.prefault()` is zod v4's opt-in for the old "apply default,
|
|
25
|
+
// then still parse/default the result" behavior. See
|
|
26
|
+
// https://zod.dev/v4/changelog (defaults section).
|
|
14
27
|
defaults: z
|
|
15
28
|
.object({
|
|
16
29
|
icon: z.string().optional(),
|
|
17
30
|
ttl: z.number().int().positive().default(86400),
|
|
18
31
|
urgency: z.enum(['very-low', 'low', 'normal', 'high']).default('normal'),
|
|
19
32
|
})
|
|
20
|
-
.
|
|
33
|
+
.prefault({}),
|
|
21
34
|
queue: z
|
|
22
35
|
.object({
|
|
23
36
|
batchSize: z.number().int().positive().default(100),
|
|
24
37
|
maxRetries: z.number().int().nonnegative().default(3),
|
|
25
38
|
})
|
|
26
|
-
.
|
|
39
|
+
.prefault({}),
|
|
27
40
|
turnstile: z.object({
|
|
28
41
|
secretKey: z.string().min(1),
|
|
29
42
|
}),
|
|
@@ -32,11 +45,11 @@ export const pushOptionsSchema = z.object({
|
|
|
32
45
|
subscribe: z.string().default('/api/push/subscribe'),
|
|
33
46
|
unsubscribe: z.string().default('/api/push/unsubscribe'),
|
|
34
47
|
})
|
|
35
|
-
.
|
|
48
|
+
.prefault({}),
|
|
36
49
|
cleanup: z
|
|
37
50
|
.object({
|
|
38
51
|
staleAfterDays: z.number().int().positive().default(90),
|
|
39
52
|
})
|
|
40
|
-
.
|
|
53
|
+
.prefault({}),
|
|
41
54
|
});
|
|
42
55
|
//# sourceMappingURL=options.js.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,yEAAyE;IACzE,qEAAqE;IACrE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAE9C,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,mEAAmE;IACnE,wDAAwD;IACxD,mEAAmE;IACnE,uEAAuE;IACvE,qDAAqD;IACrD,mDAAmD;IACnD,QAAQ,EAAE,CAAC;SACT,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;KACxE,CAAC;SACD,QAAQ,CAAC,EAAE,CAAC;IAEd,KAAK,EAAE,CAAC;SACN,MAAM,CAAC;QACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACrD,CAAC;SACD,QAAQ,CAAC,EAAE,CAAC;IAEd,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC;IAEF,MAAM,EAAE,CAAC;SACP,MAAM,CAAC;QACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACpD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;KACxD,CAAC;SACD,QAAQ,CAAC,EAAE,CAAC;IAEd,OAAO,EAAE,CAAC;SACR,MAAM,CAAC;QACP,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACvD,CAAC;SACD,QAAQ,CAAC,EAAE,CAAC;CACd,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@growth-labs/push",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -64,16 +64,16 @@
|
|
|
64
64
|
"registry": "https://registry.npmjs.org/"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
|
-
"astro": "^6.1.10"
|
|
67
|
+
"astro": "^6.1.10 || ^7.0.0"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"@block65/webcrypto-web-push": "^1.0.0",
|
|
71
71
|
"drizzle-orm": "^0.45.2",
|
|
72
|
-
"zod": "^
|
|
72
|
+
"zod": "^4"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@cloudflare/workers-types": "^4.0.0",
|
|
76
|
-
"astro": "
|
|
76
|
+
"astro": "7.3.1",
|
|
77
77
|
"typescript": "^5.7.0",
|
|
78
78
|
"vitest": "^4.1.8"
|
|
79
79
|
},
|
package/src/index.ts
CHANGED
|
@@ -17,7 +17,9 @@ export default function push(options: PushOptions): AstroIntegration {
|
|
|
17
17
|
|
|
18
18
|
const virtualConfig = {
|
|
19
19
|
vapidPublicKey: resolved.vapidPublicKey,
|
|
20
|
+
siteId: resolved.siteId,
|
|
20
21
|
d1Binding: resolved.d1Binding,
|
|
22
|
+
subscriptionsD1Binding: resolved.subscriptionsD1Binding,
|
|
21
23
|
queueBinding: resolved.queueBinding,
|
|
22
24
|
defaults: resolved.defaults,
|
|
23
25
|
queue: resolved.queue,
|
package/src/options.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { z } from 'zod'
|
|
|
2
2
|
|
|
3
3
|
export const pushOptionsSchema = z.object({
|
|
4
4
|
vapidPublicKey: z.string().min(1),
|
|
5
|
-
|
|
5
|
+
// Legacy callers may supply this, but the integration never consumes it.
|
|
6
|
+
// Signing credentials belong to the runtime consumer, not the build.
|
|
7
|
+
vapidPrivateKey: z.string().min(1).optional(),
|
|
6
8
|
vapidSubject: z.string().min(1),
|
|
7
9
|
|
|
8
10
|
siteId: z.string().min(1),
|
|
@@ -15,20 +17,31 @@ export const pushOptionsSchema = z.object({
|
|
|
15
17
|
subscriptionsD1Binding: z.string().optional(),
|
|
16
18
|
queueBinding: z.string().default('PUSH_QUEUE'),
|
|
17
19
|
|
|
20
|
+
// NOTE: nested defaulted objects use `.prefault({})`, not `.default({})`.
|
|
21
|
+
// Under zod v3 (and the `.default()` docs' intuitive reading), defaulting
|
|
22
|
+
// an object schema to `{}` still ran that `{}` through the object schema,
|
|
23
|
+
// so its own field-level `.default(...)` values were filled in. zod v4
|
|
24
|
+
// changed `.default()` to substitute the default value verbatim without
|
|
25
|
+
// re-parsing it, which silently dropped every nested default (e.g.
|
|
26
|
+
// `routes.subscribe` resolved to `undefined` instead of
|
|
27
|
+
// `/api/push/subscribe` — caught by the packages#196 zod-bump test
|
|
28
|
+
// suite). `.prefault()` is zod v4's opt-in for the old "apply default,
|
|
29
|
+
// then still parse/default the result" behavior. See
|
|
30
|
+
// https://zod.dev/v4/changelog (defaults section).
|
|
18
31
|
defaults: z
|
|
19
32
|
.object({
|
|
20
33
|
icon: z.string().optional(),
|
|
21
34
|
ttl: z.number().int().positive().default(86400),
|
|
22
35
|
urgency: z.enum(['very-low', 'low', 'normal', 'high']).default('normal'),
|
|
23
36
|
})
|
|
24
|
-
.
|
|
37
|
+
.prefault({}),
|
|
25
38
|
|
|
26
39
|
queue: z
|
|
27
40
|
.object({
|
|
28
41
|
batchSize: z.number().int().positive().default(100),
|
|
29
42
|
maxRetries: z.number().int().nonnegative().default(3),
|
|
30
43
|
})
|
|
31
|
-
.
|
|
44
|
+
.prefault({}),
|
|
32
45
|
|
|
33
46
|
turnstile: z.object({
|
|
34
47
|
secretKey: z.string().min(1),
|
|
@@ -39,13 +52,13 @@ export const pushOptionsSchema = z.object({
|
|
|
39
52
|
subscribe: z.string().default('/api/push/subscribe'),
|
|
40
53
|
unsubscribe: z.string().default('/api/push/unsubscribe'),
|
|
41
54
|
})
|
|
42
|
-
.
|
|
55
|
+
.prefault({}),
|
|
43
56
|
|
|
44
57
|
cleanup: z
|
|
45
58
|
.object({
|
|
46
59
|
staleAfterDays: z.number().int().positive().default(90),
|
|
47
60
|
})
|
|
48
|
-
.
|
|
61
|
+
.prefault({}),
|
|
49
62
|
})
|
|
50
63
|
|
|
51
64
|
export type PushOptions = z.input<typeof pushOptionsSchema>
|