mppx 0.6.27 → 0.6.28
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/CHANGELOG.md +8 -0
- package/dist/Store.d.ts +32 -9
- package/dist/Store.d.ts.map +1 -1
- package/dist/Store.js +42 -10
- package/dist/Store.js.map +1 -1
- package/dist/proxy/internal/Headers.d.ts +13 -1
- package/dist/proxy/internal/Headers.d.ts.map +1 -1
- package/dist/proxy/internal/Headers.js +14 -1
- package/dist/proxy/internal/Headers.js.map +1 -1
- package/dist/stripe/server/Charge.d.ts +31 -1
- package/dist/stripe/server/Charge.d.ts.map +1 -1
- package/dist/stripe/server/Charge.js +88 -11
- package/dist/stripe/server/Charge.js.map +1 -1
- package/dist/tempo/server/Charge.d.ts +6 -0
- package/dist/tempo/server/Charge.d.ts.map +1 -1
- package/dist/tempo/server/Charge.js +7 -2
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Session.d.ts +6 -0
- package/dist/tempo/server/Session.d.ts.map +1 -1
- package/dist/tempo/server/Session.js +1 -1
- package/dist/tempo/server/Session.js.map +1 -1
- package/dist/tempo/server/Subscription.d.ts +6 -0
- package/dist/tempo/server/Subscription.d.ts.map +1 -1
- package/dist/tempo/server/Subscription.js +1 -1
- package/dist/tempo/server/Subscription.js.map +1 -1
- package/package.json +1 -1
- package/src/Store.test-d.ts +58 -0
- package/src/Store.test.ts +77 -0
- package/src/Store.ts +155 -74
- package/src/proxy/internal/Headers.test.ts +18 -0
- package/src/proxy/internal/Headers.ts +14 -1
- package/src/stripe/server/Charge.test.ts +215 -1
- package/src/stripe/server/Charge.ts +150 -20
- package/src/tempo/server/Charge.test.ts +22 -1
- package/src/tempo/server/Charge.ts +16 -2
- package/src/tempo/server/Session.ts +9 -1
- package/src/tempo/server/Subscription.ts +7 -1
- package/src/tempo/session/ChannelStore.test.ts +21 -0
- package/src/tempo/subscription/Store.test.ts +55 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# mppx
|
|
2
2
|
|
|
3
|
+
## 0.6.28
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6c789fa: Added store key prefix options for Store constructors and Tempo charge, session, and subscription stores.
|
|
8
|
+
- b051e6c: Stripped `Set-Cookie` from upstream responses in `Proxy.scrubResponse` so an upstream service cannot set cookies under the proxy's origin.
|
|
9
|
+
- 1ee47a2: Added server-side Stripe Connect settlement options for Stripe charges.
|
|
10
|
+
|
|
3
11
|
## 0.6.27
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/dist/Store.d.ts
CHANGED
|
@@ -54,13 +54,22 @@ export type Store<itemMap extends StoreItemMap = StoreItemMap, extended extends
|
|
|
54
54
|
* Equivalent to `Store<itemMap, AtomicActions<itemMap>>`.
|
|
55
55
|
*/
|
|
56
56
|
export type AtomicStore<itemMap extends StoreItemMap = StoreItemMap> = Store<itemMap, AtomicActions<itemMap>>;
|
|
57
|
+
/** Options shared by store constructors. */
|
|
58
|
+
export type Options = {
|
|
59
|
+
/** Prefix prepended to every backing store key. */
|
|
60
|
+
keyPrefix?: string | undefined;
|
|
61
|
+
};
|
|
57
62
|
/** Creates a {@link Store} from an existing implementation. */
|
|
58
|
-
export declare function from<store extends
|
|
59
|
-
export declare function from<store extends
|
|
63
|
+
export declare function from<store extends AtomicStore<any>>(store: store, options?: Options): store;
|
|
64
|
+
export declare function from<store extends Store<any>>(store: store, options?: Options): store;
|
|
60
65
|
/** Wraps a Cloudflare KV namespace. */
|
|
61
|
-
export declare function cloudflare(kv: cloudflare.AtomicParameters): AtomicStore;
|
|
62
|
-
export declare function cloudflare(kv: cloudflare.Parameters): Store;
|
|
66
|
+
export declare function cloudflare(kv: cloudflare.AtomicParameters, options?: cloudflare.Options): AtomicStore;
|
|
67
|
+
export declare function cloudflare(kv: cloudflare.Parameters, options?: cloudflare.Options): Store;
|
|
63
68
|
export declare namespace cloudflare {
|
|
69
|
+
type Options = {
|
|
70
|
+
/** Prefix prepended to every backing store key. */
|
|
71
|
+
keyPrefix?: string | undefined;
|
|
72
|
+
};
|
|
64
73
|
type Parameters = {
|
|
65
74
|
get: (key: string) => Promise<unknown>;
|
|
66
75
|
put: (key: string, value: string) => Promise<void>;
|
|
@@ -72,11 +81,21 @@ export declare namespace cloudflare {
|
|
|
72
81
|
};
|
|
73
82
|
}
|
|
74
83
|
/** In-memory store backed by a `Map`. JSON-roundtrips values to match production behavior. */
|
|
75
|
-
export declare function memory(): AtomicStore;
|
|
84
|
+
export declare function memory(options?: memory.Options): AtomicStore;
|
|
85
|
+
export declare namespace memory {
|
|
86
|
+
type Options = {
|
|
87
|
+
/** Prefix prepended to every backing store key. */
|
|
88
|
+
keyPrefix?: string | undefined;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
76
91
|
/** Wraps a standard Redis client (ioredis, node-redis, Valkey). */
|
|
77
|
-
export declare function redis(client: redis.AtomicParameters): AtomicStore;
|
|
78
|
-
export declare function redis(client: redis.Parameters): Store;
|
|
92
|
+
export declare function redis(client: redis.AtomicParameters, options?: redis.Options): AtomicStore;
|
|
93
|
+
export declare function redis(client: redis.Parameters, options?: redis.Options): Store;
|
|
79
94
|
export declare namespace redis {
|
|
95
|
+
type Options = {
|
|
96
|
+
/** Prefix prepended to every backing store key. */
|
|
97
|
+
keyPrefix?: string | undefined;
|
|
98
|
+
};
|
|
80
99
|
type Parameters = {
|
|
81
100
|
get: (key: string) => Promise<string | null>;
|
|
82
101
|
set: (key: string, value: string) => Promise<unknown>;
|
|
@@ -88,9 +107,13 @@ export declare namespace redis {
|
|
|
88
107
|
};
|
|
89
108
|
}
|
|
90
109
|
/** Wraps an Upstash Redis instance (e.g. Vercel KV). */
|
|
91
|
-
export declare function upstash(redis: upstash.AtomicParameters): AtomicStore;
|
|
92
|
-
export declare function upstash(redis: upstash.Parameters): Store;
|
|
110
|
+
export declare function upstash(redis: upstash.AtomicParameters, options?: upstash.Options): AtomicStore;
|
|
111
|
+
export declare function upstash(redis: upstash.Parameters, options?: upstash.Options): Store;
|
|
93
112
|
export declare namespace upstash {
|
|
113
|
+
type Options = {
|
|
114
|
+
/** Prefix prepended to every backing store key. */
|
|
115
|
+
keyPrefix?: string | undefined;
|
|
116
|
+
};
|
|
94
117
|
type Parameters = {
|
|
95
118
|
get: (key: string) => Promise<unknown>;
|
|
96
119
|
set: (key: string, value: unknown) => Promise<unknown>;
|
package/dist/Store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../src/Store.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAElD;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,IAC5B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpC;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI,CAChE,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAClC,MAAM,EAEN,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAC/D,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,+DAA+D;AAC/D,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI;IACtE,GAAG,EAAE,CAAC,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACnF,GAAG,EAAE,CAAC,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,MAAM,EAAE,CAAC,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxE,CAAA;AAED,mEAAmE;AACnE,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI;IACvE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;CACxB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CACf,OAAO,SAAS,YAAY,GAAG,YAAY,EAC3C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,SAAS,IAC9D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;AAE3F;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI,KAAK,CAC1E,OAAO,EACP,aAAa,CAAC,OAAO,CAAC,CACvB,CAAA;AAED,+DAA+D;AAC/D,wBAAgB,IAAI,CAAC,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../src/Store.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAElD;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,IAC5B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpC;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI,CAChE,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAClC,MAAM,EAEN,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAC/D,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,+DAA+D;AAC/D,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI;IACtE,GAAG,EAAE,CAAC,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACnF,GAAG,EAAE,CAAC,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,MAAM,EAAE,CAAC,GAAG,SAAS,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACxE,CAAA;AAED,mEAAmE;AACnE,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI;IACvE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;CACxB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CACf,OAAO,SAAS,YAAY,GAAG,YAAY,EAC3C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,SAAS,IAC9D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;AAE3F;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI,KAAK,CAC1E,OAAO,EACP,aAAa,CAAC,OAAO,CAAC,CACvB,CAAA;AAED,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG;IACpB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B,CAAA;AAID,+DAA+D;AAC/D,wBAAgB,IAAI,CAAC,KAAK,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;AAC5F,wBAAgB,IAAI,CAAC,KAAK,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;AA8DtF,uCAAuC;AACvC,wBAAgB,UAAU,CACxB,EAAE,EAAE,UAAU,CAAC,gBAAgB,EAC/B,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAC3B,WAAW,CAAA;AACd,wBAAgB,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,KAAK,CAAA;AAqB1F,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,KAAY,OAAO,GAAG;QACpB,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/B,CAAA;IAED,KAAY,UAAU,GAAG;QACvB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACtC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACnD,OAAO,CAAC,MAAM,CAAC,CAAA;KACrB,CAAA;IAED,KAAY,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;QAC1D,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;KAC1C,CAAA;CACF;AAED,8FAA8F;AAC9F,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,WAAW,CAyB5D;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAY,OAAO,GAAG;QACpB,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/B,CAAA;CACF;AAED,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,WAAW,CAAA;AAC3F,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;AAqB/E,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,OAAO,GAAG;QACpB,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/B,CAAA;IAED,KAAY,UAAU,GAAG;QACvB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QAC5C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACrD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACnD,OAAO,CAAC,MAAM,CAAC,CAAA;KACrB,CAAA;IAED,KAAY,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;QAC1D,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;KAC1C,CAAA;CACF;AAED,wDAAwD;AACxD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,WAAW,CAAA;AAChG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,KAAK,CAAA;AAuBpF,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAY,OAAO,GAAG;QACpB,mDAAmD;QACnD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/B,CAAA;IAED,KAAY,UAAU,GAAG;QACvB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACtC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KACrD,OAAO,CAAC,MAAM,CAAC,CAAA;KACrB,CAAA;IAED,KAAY,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;QAC1D,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;KAC1C,CAAA;CACF"}
|
package/dist/Store.js
CHANGED
|
@@ -15,8 +15,40 @@
|
|
|
15
15
|
* `AtomicActions`, just like Viem's `PublicClient = Client<..., PublicActions>`.
|
|
16
16
|
*/
|
|
17
17
|
import { Json } from 'ox';
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const keyPrefixCache = new WeakMap();
|
|
19
|
+
export function from(store, options) {
|
|
20
|
+
return withKeyPrefix(store, options?.keyPrefix);
|
|
21
|
+
}
|
|
22
|
+
function withKeyPrefix(store, keyPrefix = '') {
|
|
23
|
+
if (!keyPrefix)
|
|
24
|
+
return store;
|
|
25
|
+
const cached = keyPrefixCache.get(store)?.get(keyPrefix);
|
|
26
|
+
if (cached)
|
|
27
|
+
return cached;
|
|
28
|
+
const backing = store;
|
|
29
|
+
const prefixedKey = (key) => `${keyPrefix}${key}`;
|
|
30
|
+
const prefixed = from({
|
|
31
|
+
async get(key) {
|
|
32
|
+
return backing.get(prefixedKey(key));
|
|
33
|
+
},
|
|
34
|
+
async put(key, value) {
|
|
35
|
+
await backing.put(prefixedKey(key), value);
|
|
36
|
+
},
|
|
37
|
+
async delete(key) {
|
|
38
|
+
await backing.delete(prefixedKey(key));
|
|
39
|
+
},
|
|
40
|
+
...('update' in store
|
|
41
|
+
? {
|
|
42
|
+
async update(key, fn) {
|
|
43
|
+
return store.update(prefixedKey(key), fn);
|
|
44
|
+
},
|
|
45
|
+
}
|
|
46
|
+
: {}),
|
|
47
|
+
});
|
|
48
|
+
const cachedByPrefix = keyPrefixCache.get(store) ?? new Map();
|
|
49
|
+
cachedByPrefix.set(keyPrefix, prefixed);
|
|
50
|
+
keyPrefixCache.set(store, cachedByPrefix);
|
|
51
|
+
return prefixed;
|
|
20
52
|
}
|
|
21
53
|
function wrapJsonUpdate(update) {
|
|
22
54
|
if (!update)
|
|
@@ -33,7 +65,7 @@ function wrapJsonUpdate(update) {
|
|
|
33
65
|
},
|
|
34
66
|
};
|
|
35
67
|
}
|
|
36
|
-
export function cloudflare(kv) {
|
|
68
|
+
export function cloudflare(kv, options) {
|
|
37
69
|
return from({
|
|
38
70
|
async get(key) {
|
|
39
71
|
const raw = await kv.get(key);
|
|
@@ -48,10 +80,10 @@ export function cloudflare(kv) {
|
|
|
48
80
|
await kv.delete(key);
|
|
49
81
|
},
|
|
50
82
|
...wrapJsonUpdate(kv.update),
|
|
51
|
-
});
|
|
83
|
+
}, options);
|
|
52
84
|
}
|
|
53
85
|
/** In-memory store backed by a `Map`. JSON-roundtrips values to match production behavior. */
|
|
54
|
-
export function memory() {
|
|
86
|
+
export function memory(options) {
|
|
55
87
|
const store = new Map();
|
|
56
88
|
return from({
|
|
57
89
|
async get(key) {
|
|
@@ -75,9 +107,9 @@ export function memory() {
|
|
|
75
107
|
store.delete(key);
|
|
76
108
|
return change.result;
|
|
77
109
|
},
|
|
78
|
-
});
|
|
110
|
+
}, options);
|
|
79
111
|
}
|
|
80
|
-
export function redis(client) {
|
|
112
|
+
export function redis(client, options) {
|
|
81
113
|
return from({
|
|
82
114
|
async get(key) {
|
|
83
115
|
const raw = await client.get(key);
|
|
@@ -92,9 +124,9 @@ export function redis(client) {
|
|
|
92
124
|
await client.del(key);
|
|
93
125
|
},
|
|
94
126
|
...wrapJsonUpdate(client.update),
|
|
95
|
-
});
|
|
127
|
+
}, options);
|
|
96
128
|
}
|
|
97
|
-
export function upstash(redis) {
|
|
129
|
+
export function upstash(redis, options) {
|
|
98
130
|
return from({
|
|
99
131
|
async get(key) {
|
|
100
132
|
return (await redis.get(key));
|
|
@@ -110,6 +142,6 @@ export function upstash(redis) {
|
|
|
110
142
|
update: redis.update,
|
|
111
143
|
}
|
|
112
144
|
: {}),
|
|
113
|
-
});
|
|
145
|
+
}, options);
|
|
114
146
|
}
|
|
115
147
|
//# sourceMappingURL=Store.js.map
|
package/dist/Store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../src/Store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../src/Store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
/** Strips hop-by-hop, auth, encoding, cookie, and forwarding headers from a request before proxying upstream. */
|
|
2
2
|
export declare function scrub(headers: Headers): Headers;
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Strips re-streaming headers (`content-encoding`, `content-length`) and
|
|
5
|
+
* security-sensitive headers (`set-cookie`) from an upstream response.
|
|
6
|
+
*
|
|
7
|
+
* `set-cookie` is dropped because a paid API proxy must never let an upstream
|
|
8
|
+
* service set cookies in the user's browser under the proxy's origin. If a
|
|
9
|
+
* compromised, misbehaving, or attacker-influenced upstream returned
|
|
10
|
+
* `Set-Cookie: session=evil; Domain=.example.com`, the browser would honor it
|
|
11
|
+
* for every sibling subdomain of the proxy — turning any future path-confusion
|
|
12
|
+
* or open-redirect bug in the surrounding deployment into a session-fixation
|
|
13
|
+
* primitive. Proxied services authenticate via bearer tokens / signed
|
|
14
|
+
* payloads, never cookies, so dropping `set-cookie` is purely defensive.
|
|
15
|
+
*/
|
|
4
16
|
export declare function scrubResponse(response: Response): Response;
|
|
5
17
|
//# sourceMappingURL=Headers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.d.ts","sourceRoot":"","sources":["../../../src/proxy/internal/Headers.ts"],"names":[],"mappings":"AAWA,iHAAiH;AACjH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAiB/C;AAED
|
|
1
|
+
{"version":3,"file":"Headers.d.ts","sourceRoot":"","sources":["../../../src/proxy/internal/Headers.ts"],"names":[],"mappings":"AAWA,iHAAiH;AACjH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAiB/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAU1D"}
|
|
@@ -29,11 +29,24 @@ export function scrub(headers) {
|
|
|
29
29
|
}
|
|
30
30
|
return scrubbed;
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Strips re-streaming headers (`content-encoding`, `content-length`) and
|
|
34
|
+
* security-sensitive headers (`set-cookie`) from an upstream response.
|
|
35
|
+
*
|
|
36
|
+
* `set-cookie` is dropped because a paid API proxy must never let an upstream
|
|
37
|
+
* service set cookies in the user's browser under the proxy's origin. If a
|
|
38
|
+
* compromised, misbehaving, or attacker-influenced upstream returned
|
|
39
|
+
* `Set-Cookie: session=evil; Domain=.example.com`, the browser would honor it
|
|
40
|
+
* for every sibling subdomain of the proxy — turning any future path-confusion
|
|
41
|
+
* or open-redirect bug in the surrounding deployment into a session-fixation
|
|
42
|
+
* primitive. Proxied services authenticate via bearer tokens / signed
|
|
43
|
+
* payloads, never cookies, so dropping `set-cookie` is purely defensive.
|
|
44
|
+
*/
|
|
33
45
|
export function scrubResponse(response) {
|
|
34
46
|
const headers = new Headers(response.headers);
|
|
35
47
|
headers.delete('content-encoding');
|
|
36
48
|
headers.delete('content-length');
|
|
49
|
+
headers.delete('set-cookie');
|
|
37
50
|
return new Response(response.body, {
|
|
38
51
|
status: response.status,
|
|
39
52
|
statusText: response.statusText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/proxy/internal/Headers.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,YAAY;IACZ,YAAY;IACZ,mBAAmB;IACnB,SAAS;IACT,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,SAAS;CACV,CAAC,CAAA;AAEF,iHAAiH;AACjH,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;IAE9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEhC,IAAI,KAAK,KAAK,eAAe;YAAE,SAAQ;QACvC,IAAI,KAAK,KAAK,iBAAiB;YAAE,SAAQ;QACzC,IAAI,KAAK,KAAK,gBAAgB;YAAE,SAAQ;QACxC,IAAI,KAAK,KAAK,QAAQ;YAAE,SAAQ;QAChC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QACxC,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,SAAQ;QAE9C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/proxy/internal/Headers.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,YAAY;IACZ,YAAY;IACZ,mBAAmB;IACnB,SAAS;IACT,oBAAoB;IACpB,qBAAqB;IACrB,IAAI;IACJ,SAAS;CACV,CAAC,CAAA;AAEF,iHAAiH;AACjH,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;IAE9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEhC,IAAI,KAAK,KAAK,eAAe;YAAE,SAAQ;QACvC,IAAI,KAAK,KAAK,iBAAiB;YAAE,SAAQ;QACzC,IAAI,KAAK,KAAK,gBAAgB;YAAE,SAAQ;QACxC,IAAI,KAAK,KAAK,QAAQ;YAAE,SAAQ;QAChC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QACxC,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,SAAQ;QAE9C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAClC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAChC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAC5B,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type * as Challenge from '../../Challenge.js';
|
|
2
|
+
import type * as Credential from '../../Credential.js';
|
|
3
|
+
import type { LooseOmit, MaybePromise, OneOf } from '../../internal/types.js';
|
|
2
4
|
import * as Method from '../../Method.js';
|
|
3
5
|
import type * as Html from '../../server/internal/html/config.ts';
|
|
4
6
|
import type * as z from '../../zod.js';
|
|
@@ -88,6 +90,8 @@ export declare namespace charge {
|
|
|
88
90
|
} & Html.Config) | undefined;
|
|
89
91
|
/** Optional metadata to include in SPT creation requests. */
|
|
90
92
|
metadata?: Record<string, string> | undefined;
|
|
93
|
+
/** Optional server-side Stripe Connect settlement policy. Not included in MPP challenges. */
|
|
94
|
+
connect?: ConnectSettlement | ResolveConnectSettlement | undefined;
|
|
91
95
|
} & Defaults & OneOf<{
|
|
92
96
|
/** Pre-configured Stripe SDK instance. Any object matching the duck-typed `StripeClient` shape works. */
|
|
93
97
|
client: StripeClient;
|
|
@@ -98,5 +102,31 @@ export declare namespace charge {
|
|
|
98
102
|
type DeriveDefaults<parameters extends Parameters> = Pick<parameters, Extract<keyof parameters, keyof Defaults>> & {
|
|
99
103
|
decimals: number;
|
|
100
104
|
};
|
|
105
|
+
/**
|
|
106
|
+
* Server-side Stripe Connect settlement parameters.
|
|
107
|
+
*
|
|
108
|
+
* @see https://docs.stripe.com/connect/destination-charges
|
|
109
|
+
*/
|
|
110
|
+
type ConnectSettlement = {
|
|
111
|
+
/** Connected account used as the Stripe account context for the request. */
|
|
112
|
+
stripeAccount?: string | undefined;
|
|
113
|
+
/** Platform application fee amount in the smallest currency unit. */
|
|
114
|
+
applicationFeeAmount?: number | undefined;
|
|
115
|
+
/** Connected account used as the business of record. */
|
|
116
|
+
onBehalfOf?: string | undefined;
|
|
117
|
+
/** Destination transfer created from the PaymentIntent. */
|
|
118
|
+
transferData?: {
|
|
119
|
+
amount?: number | undefined;
|
|
120
|
+
destination: string;
|
|
121
|
+
} | undefined;
|
|
122
|
+
/** Reconciliation token linking related charges and transfers. */
|
|
123
|
+
transferGroup?: string | undefined;
|
|
124
|
+
};
|
|
125
|
+
type ResolveConnectSettlement = (parameters: {
|
|
126
|
+
challenge: Challenge.Challenge<z.output<typeof Methods.charge.schema.request>, 'charge', 'stripe'>;
|
|
127
|
+
credential: Credential.Credential<z.output<typeof Methods.charge.schema.credential.payload>, Challenge.Challenge<z.output<typeof Methods.charge.schema.request>, 'charge', 'stripe'>>;
|
|
128
|
+
envelope?: Method.VerifiedChallengeEnvelope<z.output<typeof Methods.charge.schema.request>, z.output<typeof Methods.charge.schema.credential.payload>, 'charge', 'stripe'> | undefined;
|
|
129
|
+
request: z.output<typeof Methods.charge.schema.request>;
|
|
130
|
+
}) => MaybePromise<ConnectSettlement | undefined>;
|
|
101
131
|
}
|
|
102
132
|
//# sourceMappingURL=Charge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/stripe/server/Charge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/stripe/server/Charge.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ import { html as htmlContent } from './internal/html.gen.js';
|
|
|
32
32
|
export function charge(parameters) {
|
|
33
33
|
const { amount, currency, decimals, description, externalId, html: { text: htmlText, theme: htmlTheme, ...htmlConfig } = {}, metadata, networkId, paymentMethodTypes, } = parameters;
|
|
34
34
|
const client = 'client' in parameters ? parameters.client : undefined;
|
|
35
|
+
const connect = parameters.connect;
|
|
35
36
|
const secretKey = 'secretKey' in parameters ? parameters.secretKey : undefined;
|
|
36
37
|
return Method.toServer(Methods.charge, {
|
|
37
38
|
defaults: {
|
|
@@ -66,7 +67,7 @@ export function charge(parameters) {
|
|
|
66
67
|
theme: htmlTheme,
|
|
67
68
|
}
|
|
68
69
|
: undefined,
|
|
69
|
-
async verify({ credential, request }) {
|
|
70
|
+
async verify({ credential, envelope, request }) {
|
|
70
71
|
const { challenge } = credential;
|
|
71
72
|
const resolvedRequest = (() => {
|
|
72
73
|
const parsed = Methods.charge.schema.request.safeParse(request);
|
|
@@ -83,6 +84,12 @@ export function charge(parameters) {
|
|
|
83
84
|
const { spt, externalId: credentialExternalId } = parsed.data;
|
|
84
85
|
const userMetadata = resolvedRequest.methodDetails?.metadata;
|
|
85
86
|
const resolvedMetadata = { ...buildAnalytics({ credential }), ...userMetadata };
|
|
87
|
+
const settlement = validateConnectSettlement({
|
|
88
|
+
amount: resolvedRequest.amount,
|
|
89
|
+
settlement: typeof connect === 'function'
|
|
90
|
+
? await connect({ challenge, credential, envelope, request: resolvedRequest })
|
|
91
|
+
: connect,
|
|
92
|
+
});
|
|
86
93
|
const pi = client
|
|
87
94
|
? await createWithClient({
|
|
88
95
|
client,
|
|
@@ -90,6 +97,7 @@ export function charge(parameters) {
|
|
|
90
97
|
request: resolvedRequest,
|
|
91
98
|
spt,
|
|
92
99
|
metadata: resolvedMetadata,
|
|
100
|
+
settlement,
|
|
93
101
|
})
|
|
94
102
|
: await createWithSecretKey({
|
|
95
103
|
secretKey: secretKey,
|
|
@@ -97,6 +105,7 @@ export function charge(parameters) {
|
|
|
97
105
|
request: resolvedRequest,
|
|
98
106
|
spt,
|
|
99
107
|
metadata: resolvedMetadata,
|
|
108
|
+
settlement,
|
|
100
109
|
});
|
|
101
110
|
if (pi.replayed)
|
|
102
111
|
throw new VerificationFailedError({ reason: 'Payment has already been processed.' });
|
|
@@ -117,17 +126,36 @@ export function charge(parameters) {
|
|
|
117
126
|
}
|
|
118
127
|
/** Creates a PaymentIntent using the Stripe SDK client. */
|
|
119
128
|
async function createWithClient(parameters) {
|
|
120
|
-
const { client, challenge, metadata, request, spt } = parameters;
|
|
129
|
+
const { client, challenge, metadata, request, settlement, spt } = parameters;
|
|
121
130
|
try {
|
|
122
|
-
const
|
|
131
|
+
const paymentIntentParams = {
|
|
123
132
|
amount: Number(request.amount),
|
|
124
133
|
automatic_payment_methods: { allow_redirects: 'never', enabled: true },
|
|
125
134
|
confirm: true,
|
|
126
135
|
currency: request.currency,
|
|
127
136
|
metadata,
|
|
137
|
+
...(settlement?.applicationFeeAmount !== undefined && {
|
|
138
|
+
application_fee_amount: settlement.applicationFeeAmount,
|
|
139
|
+
}),
|
|
140
|
+
...(settlement?.onBehalfOf !== undefined && { on_behalf_of: settlement.onBehalfOf }),
|
|
141
|
+
...(settlement?.transferData !== undefined && {
|
|
142
|
+
transfer_data: {
|
|
143
|
+
destination: settlement.transferData.destination,
|
|
144
|
+
...(settlement.transferData.amount !== undefined && {
|
|
145
|
+
amount: settlement.transferData.amount,
|
|
146
|
+
}),
|
|
147
|
+
},
|
|
148
|
+
}),
|
|
149
|
+
...(settlement?.transferGroup !== undefined && { transfer_group: settlement.transferGroup }),
|
|
128
150
|
// `shared_payment_granted_token` is not yet in the Stripe SDK types (SPTs are in private preview).
|
|
129
151
|
shared_payment_granted_token: spt,
|
|
130
|
-
}
|
|
152
|
+
};
|
|
153
|
+
const paymentIntentOptions = {
|
|
154
|
+
apiVersion: stripePreviewVersion,
|
|
155
|
+
idempotencyKey: `mppx_${challenge.id}_${spt}`,
|
|
156
|
+
...(settlement?.stripeAccount !== undefined && { stripeAccount: settlement.stripeAccount }),
|
|
157
|
+
};
|
|
158
|
+
const result = await client.paymentIntents.create(paymentIntentParams, paymentIntentOptions);
|
|
131
159
|
// https://docs.stripe.com/error-low-level#idempotency
|
|
132
160
|
const replayed = result.lastResponse?.headers?.['idempotent-replayed'] === 'true';
|
|
133
161
|
return { id: result.id, status: result.status, replayed };
|
|
@@ -141,7 +169,7 @@ async function createWithClient(parameters) {
|
|
|
141
169
|
}
|
|
142
170
|
/** Creates a PaymentIntent using a raw secret key and fetch. */
|
|
143
171
|
async function createWithSecretKey(parameters) {
|
|
144
|
-
const { secretKey, challenge, metadata, request, spt } = parameters;
|
|
172
|
+
const { secretKey, challenge, metadata, request, settlement, spt } = parameters;
|
|
145
173
|
const body = new URLSearchParams({
|
|
146
174
|
amount: request.amount,
|
|
147
175
|
'automatic_payment_methods[allow_redirects]': 'never',
|
|
@@ -153,14 +181,27 @@ async function createWithSecretKey(parameters) {
|
|
|
153
181
|
for (const [key, value] of Object.entries(metadata)) {
|
|
154
182
|
body.set(`metadata[${key}]`, value);
|
|
155
183
|
}
|
|
184
|
+
if (settlement?.applicationFeeAmount !== undefined)
|
|
185
|
+
body.set('application_fee_amount', String(settlement.applicationFeeAmount));
|
|
186
|
+
if (settlement?.onBehalfOf !== undefined)
|
|
187
|
+
body.set('on_behalf_of', settlement.onBehalfOf);
|
|
188
|
+
if (settlement?.transferData !== undefined) {
|
|
189
|
+
body.set('transfer_data[destination]', settlement.transferData.destination);
|
|
190
|
+
if (settlement.transferData.amount !== undefined)
|
|
191
|
+
body.set('transfer_data[amount]', String(settlement.transferData.amount));
|
|
192
|
+
}
|
|
193
|
+
if (settlement?.transferGroup !== undefined)
|
|
194
|
+
body.set('transfer_group', settlement.transferGroup);
|
|
195
|
+
const headers = {
|
|
196
|
+
Authorization: `Basic ${btoa(`${secretKey}:`)}`,
|
|
197
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
198
|
+
'Idempotency-Key': `mppx_${challenge.id}_${spt}`,
|
|
199
|
+
'Stripe-Version': stripePreviewVersion,
|
|
200
|
+
...(settlement?.stripeAccount !== undefined && { 'Stripe-Account': settlement.stripeAccount }),
|
|
201
|
+
};
|
|
156
202
|
const response = await fetch('https://api.stripe.com/v1/payment_intents', {
|
|
157
203
|
method: 'POST',
|
|
158
|
-
headers
|
|
159
|
-
Authorization: `Basic ${btoa(`${secretKey}:`)}`,
|
|
160
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
161
|
-
'Idempotency-Key': `mppx_${challenge.id}_${spt}`,
|
|
162
|
-
'Stripe-Version': stripePreviewVersion,
|
|
163
|
-
},
|
|
204
|
+
headers,
|
|
164
205
|
body,
|
|
165
206
|
});
|
|
166
207
|
if (!response.ok) {
|
|
@@ -196,4 +237,40 @@ function buildAnalytics(parameters) {
|
|
|
196
237
|
...(credential.source ? { mpp_client_id: credential.source } : {}),
|
|
197
238
|
};
|
|
198
239
|
}
|
|
240
|
+
function validateConnectSettlement(parameters) {
|
|
241
|
+
const { amount, settlement } = parameters;
|
|
242
|
+
if (settlement === undefined)
|
|
243
|
+
return undefined;
|
|
244
|
+
const paymentAmount = Number(amount);
|
|
245
|
+
if (!Number.isSafeInteger(paymentAmount) || paymentAmount < 0)
|
|
246
|
+
throw new VerificationFailedError({ reason: 'Stripe amount must be a non-negative integer.' });
|
|
247
|
+
validateAccountId(settlement.stripeAccount, 'stripeAccount');
|
|
248
|
+
validateAccountId(settlement.onBehalfOf, 'onBehalfOf');
|
|
249
|
+
validateAmount(settlement.applicationFeeAmount, paymentAmount, 'applicationFeeAmount');
|
|
250
|
+
if (settlement.transferData !== undefined) {
|
|
251
|
+
validateRequiredAccountId(settlement.transferData.destination, 'transferData.destination');
|
|
252
|
+
validateAmount(settlement.transferData.amount, paymentAmount, 'transferData.amount');
|
|
253
|
+
}
|
|
254
|
+
return settlement;
|
|
255
|
+
}
|
|
256
|
+
function validateAccountId(value, name) {
|
|
257
|
+
if (value !== undefined && value.length === 0)
|
|
258
|
+
throw new VerificationFailedError({ reason: `Stripe Connect ${name} must be non-empty.` });
|
|
259
|
+
}
|
|
260
|
+
function validateRequiredAccountId(value, name) {
|
|
261
|
+
if (value === undefined || value.length === 0)
|
|
262
|
+
throw new VerificationFailedError({ reason: `Stripe Connect ${name} must be non-empty.` });
|
|
263
|
+
}
|
|
264
|
+
function validateAmount(value, paymentAmount, name) {
|
|
265
|
+
if (value === undefined)
|
|
266
|
+
return;
|
|
267
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
268
|
+
throw new VerificationFailedError({
|
|
269
|
+
reason: `Stripe Connect ${name} must be a non-negative integer.`,
|
|
270
|
+
});
|
|
271
|
+
if (value > paymentAmount)
|
|
272
|
+
throw new VerificationFailedError({
|
|
273
|
+
reason: `Stripe Connect ${name} must be less than or equal to the PaymentIntent amount.`,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
199
276
|
//# sourceMappingURL=Charge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/stripe/server/Charge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/stripe/server/Charge.ts"],"names":[],"mappings":"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"}
|
|
@@ -141,6 +141,12 @@ export declare namespace charge {
|
|
|
141
141
|
* memo binding, transaction success, and replay protection.
|
|
142
142
|
*/
|
|
143
143
|
validateSender?: ValidateSender | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Prefix prepended to charge replay-protection store keys.
|
|
146
|
+
*
|
|
147
|
+
* By default, no prefix is applied.
|
|
148
|
+
*/
|
|
149
|
+
storeKeyPrefix?: string | undefined;
|
|
144
150
|
/**
|
|
145
151
|
* Whether to wait for the charge transaction to confirm on-chain before
|
|
146
152
|
* responding. @default true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,IAAI,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAIjD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAGpD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAC/D,UAAU,GAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,IAAI,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAIjD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAGpD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAC/D,UAAU,GAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDA0bF;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,YAAY,GAAG;QAAE,CAAC,GAAG,EAAE,eAAe,MAAM,EAAE,GAAG,MAAM,CAAA;KAAE,CAAA;IAE9D,KAAK,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,CAAA;IAElG,KAAK,cAAc,GAAG,CAAC,UAAU,EAAE,wBAAwB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1F,KAAK,wBAAwB,GAAG;QAC9B,6CAA6C;QAC7C,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;QACrB,8DAA8D;QAC9D,cAAc,EAAE,KAAK,MAAM,EAAE,CAAA;QAC7B,sEAAsE;QACtE,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAA;KACjE,CAAA;IAED,KAAK,UAAU,GAAG;QAChB,6EAA6E;QAC7E,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACxC;;;;;;;WAOG;QACH,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;QAC3C,oBAAoB;QACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B;;;;;;;;;;;;;WAaG;QACH,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA;QACrC;;;;WAIG;QACH,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;QAC3C;;;;WAIG;QACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACnC;;;;;;;;;;WAUG;QACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC1C,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,GAC/B,OAAO,CAAC,OAAO,CAAC,UAAU,GAC1B,QAAQ,CAAA;IAEV,KAAK,cAAc,CAAC,UAAU,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,CACvE,UAAU,EACV,QAAQ,CACT,GAAG;QACF,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IAED,KAAK,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;CAC/C"}
|
|
@@ -30,8 +30,13 @@ import { html as htmlContent } from './internal/html.gen.js';
|
|
|
30
30
|
*/
|
|
31
31
|
export function charge(parameters = {}) {
|
|
32
32
|
const { amount, currency = defaults.resolveCurrency(parameters), decimals = defaults.decimals, description, externalId, feePayerPolicy, html, memo, validateSender, waitForConfirmation = true, } = parameters;
|
|
33
|
-
const
|
|
34
|
-
const
|
|
33
|
+
const storeKeyPrefix = parameters.storeKeyPrefix ?? '';
|
|
34
|
+
const store = Store.from((parameters.store ?? Store.memory()), { keyPrefix: storeKeyPrefix });
|
|
35
|
+
const proofStore = parameters.store
|
|
36
|
+
? Store.from(parameters.store, {
|
|
37
|
+
keyPrefix: storeKeyPrefix,
|
|
38
|
+
})
|
|
39
|
+
: undefined;
|
|
35
40
|
const { recipient, feePayer, feePayerUrl } = Account.resolve(parameters);
|
|
36
41
|
const getClient = Client.getResolver({
|
|
37
42
|
chain: { ...tempo_chain, experimental_preconfirmationTime: 500 },
|