alchemy 0.24.0 → 0.24.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/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +1 -4
- package/lib/aws/function.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +3 -3
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bindings.js.map +1 -1
- package/lib/cloudflare/bound.d.ts +3 -3
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/do-state-store/index.d.ts +2 -0
- package/lib/cloudflare/do-state-store/index.d.ts.map +1 -0
- package/lib/cloudflare/do-state-store/index.js +2 -0
- package/lib/cloudflare/do-state-store/index.js.map +1 -0
- package/lib/cloudflare/do-state-store/internal.d.ts +19 -0
- package/lib/cloudflare/do-state-store/internal.d.ts.map +1 -0
- package/lib/cloudflare/do-state-store/internal.js +163 -0
- package/lib/cloudflare/do-state-store/internal.js.map +1 -0
- package/lib/cloudflare/do-state-store/store.d.ts +59 -0
- package/lib/cloudflare/do-state-store/store.d.ts.map +1 -0
- package/lib/cloudflare/do-state-store/store.js +120 -0
- package/lib/cloudflare/do-state-store/store.js.map +1 -0
- package/lib/cloudflare/do-state-store/types.d.ts +82 -0
- package/lib/cloudflare/do-state-store/types.d.ts.map +1 -0
- package/lib/cloudflare/do-state-store/types.js +1 -0
- package/lib/cloudflare/do-state-store/types.js.map +1 -0
- package/lib/cloudflare/do-state-store/worker.d.ts +27 -0
- package/lib/cloudflare/do-state-store/worker.d.ts.map +1 -0
- package/lib/cloudflare/do-state-store/worker.js +170 -0
- package/lib/cloudflare/do-state-store/worker.js.map +1 -0
- package/lib/cloudflare/index.d.ts +1 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +1 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/pipeline.js +1 -1
- package/lib/cloudflare/pipeline.js.map +1 -1
- package/lib/cloudflare/queue-consumer.d.ts +14 -1
- package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
- package/lib/cloudflare/queue-consumer.js +17 -0
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/website.d.ts +30 -1
- package/lib/cloudflare/website.d.ts.map +1 -1
- package/lib/cloudflare/website.js +8 -5
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-metadata.js +1 -1
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +40 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +40 -38
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.js +1 -1
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/fs/file-system-state-store.d.ts +3 -1
- package/lib/fs/file-system-state-store.d.ts.map +1 -1
- package/lib/fs/file-system-state-store.js +2 -2
- package/lib/fs/file-system-state-store.js.map +1 -1
- package/lib/stripe/card.d.ts +171 -0
- package/lib/stripe/card.d.ts.map +1 -0
- package/lib/stripe/card.js +148 -0
- package/lib/stripe/card.js.map +1 -0
- package/lib/stripe/client.d.ts +9 -0
- package/lib/stripe/client.d.ts.map +1 -0
- package/lib/stripe/client.js +94 -0
- package/lib/stripe/client.js.map +1 -0
- package/lib/stripe/coupon.d.ts +135 -0
- package/lib/stripe/coupon.d.ts.map +1 -0
- package/lib/stripe/coupon.js +161 -0
- package/lib/stripe/coupon.js.map +1 -0
- package/lib/stripe/customer.d.ts +269 -0
- package/lib/stripe/customer.d.ts.map +1 -0
- package/lib/stripe/customer.js +289 -0
- package/lib/stripe/customer.js.map +1 -0
- package/lib/stripe/entitlements-feature.d.ts +84 -0
- package/lib/stripe/entitlements-feature.d.ts.map +1 -0
- package/lib/stripe/entitlements-feature.js +102 -0
- package/lib/stripe/entitlements-feature.js.map +1 -0
- package/lib/stripe/file.d.ts +143 -0
- package/lib/stripe/file.d.ts.map +1 -0
- package/lib/stripe/file.js +97 -0
- package/lib/stripe/file.js.map +1 -0
- package/lib/stripe/index.d.ts +11 -0
- package/lib/stripe/index.d.ts.map +1 -1
- package/lib/stripe/index.js +11 -0
- package/lib/stripe/index.js.map +1 -1
- package/lib/stripe/meter.d.ts +10 -1
- package/lib/stripe/meter.d.ts.map +1 -1
- package/lib/stripe/meter.js +13 -7
- package/lib/stripe/meter.js.map +1 -1
- package/lib/stripe/portal-configuration.d.ts +286 -0
- package/lib/stripe/portal-configuration.d.ts.map +1 -0
- package/lib/stripe/portal-configuration.js +320 -0
- package/lib/stripe/portal-configuration.js.map +1 -0
- package/lib/stripe/price.d.ts +10 -1
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +34 -13
- package/lib/stripe/price.js.map +1 -1
- package/lib/stripe/product-feature.d.ts +76 -0
- package/lib/stripe/product-feature.d.ts.map +1 -0
- package/lib/stripe/product-feature.js +74 -0
- package/lib/stripe/product-feature.js.map +1 -0
- package/lib/stripe/product.d.ts +10 -1
- package/lib/stripe/product.d.ts.map +1 -1
- package/lib/stripe/product.js +33 -14
- package/lib/stripe/product.js.map +1 -1
- package/lib/stripe/promotion-code.d.ts +138 -0
- package/lib/stripe/promotion-code.d.ts.map +1 -0
- package/lib/stripe/promotion-code.js +150 -0
- package/lib/stripe/promotion-code.js.map +1 -0
- package/lib/stripe/shipping-rate.d.ts +188 -0
- package/lib/stripe/shipping-rate.d.ts.map +1 -0
- package/lib/stripe/shipping-rate.js +198 -0
- package/lib/stripe/shipping-rate.js.map +1 -0
- package/lib/stripe/tax-rate.d.ts +130 -0
- package/lib/stripe/tax-rate.d.ts.map +1 -0
- package/lib/stripe/tax-rate.js +126 -0
- package/lib/stripe/tax-rate.js.map +1 -0
- package/lib/stripe/webhook.d.ts +10 -1
- package/lib/stripe/webhook.d.ts.map +1 -1
- package/lib/stripe/webhook.js +59 -14
- package/lib/stripe/webhook.js.map +1 -1
- package/lib/test/bun.d.ts.map +1 -1
- package/lib/test/bun.js +2 -6
- package/lib/test/bun.js.map +1 -1
- package/lib/test/vitest.d.ts.map +1 -1
- package/lib/test/vitest.js +3 -7
- package/lib/test/vitest.js.map +1 -1
- package/lib/util/retry.d.ts +1 -1
- package/lib/util/retry.d.ts.map +1 -1
- package/lib/util/retry.js.map +1 -1
- package/package.json +2 -1
- package/src/aws/function.ts +3 -6
- package/src/cloudflare/bindings.ts +3 -2
- package/src/cloudflare/bound.ts +3 -3
- package/src/cloudflare/do-state-store/index.ts +1 -0
- package/src/cloudflare/do-state-store/internal.ts +215 -0
- package/src/cloudflare/do-state-store/store.ts +188 -0
- package/src/cloudflare/do-state-store/types.ts +74 -0
- package/src/cloudflare/do-state-store/worker.ts +199 -0
- package/src/cloudflare/index.ts +1 -0
- package/src/cloudflare/pipeline.ts +1 -1
- package/src/cloudflare/queue-consumer.ts +59 -1
- package/src/cloudflare/website.ts +38 -6
- package/src/cloudflare/worker-metadata.ts +1 -1
- package/src/cloudflare/worker.ts +66 -46
- package/src/cloudflare/wrangler.json.ts +1 -1
- package/src/fs/file-system-state-store.ts +7 -2
- package/src/stripe/card.ts +320 -0
- package/src/stripe/client.ts +145 -0
- package/src/stripe/coupon.ts +280 -0
- package/src/stripe/customer.ts +528 -0
- package/src/stripe/entitlements-feature.ts +169 -0
- package/src/stripe/file.ts +219 -0
- package/src/stripe/index.ts +11 -0
- package/src/stripe/meter.ts +23 -7
- package/src/stripe/portal-configuration.ts +609 -0
- package/src/stripe/price.ts +47 -14
- package/src/stripe/product-feature.ts +150 -0
- package/src/stripe/product.ts +48 -15
- package/src/stripe/promotion-code.ts +268 -0
- package/src/stripe/shipping-rate.ts +362 -0
- package/src/stripe/tax-rate.ts +218 -0
- package/src/stripe/webhook.ts +82 -15
- package/src/test/bun.ts +2 -7
- package/src/test/vitest.ts +3 -8
- package/src/util/retry.ts +1 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Resource } from "../resource.js";
|
|
2
|
+
import { createStripeClient, isStripeConflictError } from "./client.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create and manage Stripe entitlements features
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* // Create a basic feature for API access
|
|
8
|
+
* const apiFeature = await EntitlementsFeature("api-access", {
|
|
9
|
+
* name: "API Access",
|
|
10
|
+
* lookupKey: "api_access_v1",
|
|
11
|
+
* metadata: {
|
|
12
|
+
* tier: "premium",
|
|
13
|
+
* category: "api"
|
|
14
|
+
* }
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* // Create a feature for advanced analytics
|
|
19
|
+
* const analyticsFeature = await EntitlementsFeature("advanced-analytics", {
|
|
20
|
+
* name: "Advanced Analytics",
|
|
21
|
+
* lookupKey: "analytics_advanced",
|
|
22
|
+
* metadata: {
|
|
23
|
+
* tier: "enterprise",
|
|
24
|
+
* category: "analytics"
|
|
25
|
+
* }
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Create a feature for custom integrations
|
|
30
|
+
* const integrationsFeature = await EntitlementsFeature("custom-integrations", {
|
|
31
|
+
* name: "Custom Integrations",
|
|
32
|
+
* lookupKey: "integrations_custom",
|
|
33
|
+
* metadata: {
|
|
34
|
+
* tier: "enterprise",
|
|
35
|
+
* category: "integrations",
|
|
36
|
+
* limit: "unlimited"
|
|
37
|
+
* }
|
|
38
|
+
* });
|
|
39
|
+
*/
|
|
40
|
+
export const EntitlementsFeature = Resource("stripe::EntitlementsFeature", async function (_id, props) {
|
|
41
|
+
const stripe = createStripeClient({ apiKey: props.apiKey });
|
|
42
|
+
if (this.phase === "delete") {
|
|
43
|
+
return this.destroy();
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
let feature;
|
|
47
|
+
if (this.phase === "update" && this.output?.id) {
|
|
48
|
+
const updateParams = {
|
|
49
|
+
name: props.name,
|
|
50
|
+
metadata: props.metadata,
|
|
51
|
+
};
|
|
52
|
+
feature = await stripe.entitlements.features.update(this.output.id, updateParams);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const createParams = {
|
|
56
|
+
name: props.name,
|
|
57
|
+
metadata: props.metadata,
|
|
58
|
+
};
|
|
59
|
+
if (props.lookupKey) {
|
|
60
|
+
createParams.lookup_key = props.lookupKey;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
feature = await stripe.entitlements.features.create(createParams);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (isStripeConflictError(error) && props.adopt) {
|
|
67
|
+
const existingFeatures = await stripe.entitlements.features.list({
|
|
68
|
+
lookup_key: props.lookupKey,
|
|
69
|
+
limit: 1,
|
|
70
|
+
});
|
|
71
|
+
if (existingFeatures.data.length > 0) {
|
|
72
|
+
const existingFeature = existingFeatures.data[0];
|
|
73
|
+
const updateParams = {
|
|
74
|
+
name: props.name,
|
|
75
|
+
metadata: props.metadata,
|
|
76
|
+
};
|
|
77
|
+
feature = await stripe.entitlements.features.update(existingFeature.id, updateParams);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return this({
|
|
89
|
+
id: feature.id,
|
|
90
|
+
object: feature.object,
|
|
91
|
+
name: feature.name,
|
|
92
|
+
lookupKey: feature.lookup_key || undefined,
|
|
93
|
+
metadata: feature.metadata || undefined,
|
|
94
|
+
livemode: feature.livemode,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error("Error creating/updating entitlements feature:", error);
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=entitlements-feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlements-feature.js","sourceRoot":"","sources":["../../src/stripe/entitlements-feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type Stripe from "stripe";
|
|
2
|
+
import type { Context } from "../context.ts";
|
|
3
|
+
import { Resource } from "../resource.ts";
|
|
4
|
+
import type { Secret } from "../secret.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Properties for creating a Stripe file
|
|
7
|
+
*/
|
|
8
|
+
export interface FileProps {
|
|
9
|
+
/**
|
|
10
|
+
* A file to upload. The file should follow the specifications of RFC 2388
|
|
11
|
+
*/
|
|
12
|
+
file: any;
|
|
13
|
+
/**
|
|
14
|
+
* The purpose of the uploaded file
|
|
15
|
+
*/
|
|
16
|
+
purpose: Stripe.FileCreateParams.Purpose;
|
|
17
|
+
/**
|
|
18
|
+
* Optional parameters for the file link data
|
|
19
|
+
*/
|
|
20
|
+
fileLink?: {
|
|
21
|
+
/**
|
|
22
|
+
* Whether to create a file link for the uploaded file
|
|
23
|
+
*/
|
|
24
|
+
create: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The time at which the file link expires
|
|
27
|
+
*/
|
|
28
|
+
expiresAt?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Set of key-value pairs that you can attach to the file link
|
|
31
|
+
*/
|
|
32
|
+
metadata?: Record<string, string>;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* API key to use (overrides environment variable)
|
|
36
|
+
*/
|
|
37
|
+
apiKey?: Secret;
|
|
38
|
+
/**
|
|
39
|
+
* If true, adopt existing resource if creation fails due to conflict
|
|
40
|
+
*/
|
|
41
|
+
adopt?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Output from the Stripe file
|
|
45
|
+
*/
|
|
46
|
+
export interface File extends Resource<"stripe::File"> {
|
|
47
|
+
/**
|
|
48
|
+
* The ID of the file
|
|
49
|
+
*/
|
|
50
|
+
id: string;
|
|
51
|
+
/**
|
|
52
|
+
* String representing the object's type
|
|
53
|
+
*/
|
|
54
|
+
object: "file";
|
|
55
|
+
/**
|
|
56
|
+
* Time at which the object was created
|
|
57
|
+
*/
|
|
58
|
+
created: number;
|
|
59
|
+
/**
|
|
60
|
+
* The time at which the file expires and is no longer available
|
|
61
|
+
*/
|
|
62
|
+
expiresAt?: number;
|
|
63
|
+
/**
|
|
64
|
+
* A filename for the file, suitable for saving to a filesystem
|
|
65
|
+
*/
|
|
66
|
+
filename?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Any links that have been created for the file
|
|
69
|
+
*/
|
|
70
|
+
links?: {
|
|
71
|
+
object: "list";
|
|
72
|
+
data: Array<{
|
|
73
|
+
id: string;
|
|
74
|
+
object: "file_link";
|
|
75
|
+
created: number;
|
|
76
|
+
expired: boolean;
|
|
77
|
+
expiresAt?: number;
|
|
78
|
+
file: string;
|
|
79
|
+
livemode: boolean;
|
|
80
|
+
metadata: Record<string, string>;
|
|
81
|
+
url?: string;
|
|
82
|
+
}>;
|
|
83
|
+
hasMore: boolean;
|
|
84
|
+
url: string;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* The purpose of the uploaded file
|
|
88
|
+
*/
|
|
89
|
+
purpose: Stripe.File.Purpose;
|
|
90
|
+
/**
|
|
91
|
+
* The size in bytes of the file object
|
|
92
|
+
*/
|
|
93
|
+
size: number;
|
|
94
|
+
/**
|
|
95
|
+
* A user friendly title for the document
|
|
96
|
+
*/
|
|
97
|
+
title?: string;
|
|
98
|
+
/**
|
|
99
|
+
* The type of the file returned
|
|
100
|
+
*/
|
|
101
|
+
type?: string;
|
|
102
|
+
/**
|
|
103
|
+
* The URL from which the file can be downloaded
|
|
104
|
+
*/
|
|
105
|
+
url?: string;
|
|
106
|
+
/**
|
|
107
|
+
* Has the value true if the object exists in live mode or the value false if the object exists in test mode
|
|
108
|
+
*/
|
|
109
|
+
livemode: boolean;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Create and manage Stripe files for uploads
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* // Upload a dispute evidence file
|
|
116
|
+
* const disputeEvidence = await File("dispute-evidence", {
|
|
117
|
+
* file: fs.readFileSync("./evidence.pdf"),
|
|
118
|
+
* purpose: "dispute_evidence"
|
|
119
|
+
* });
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* // Upload an identity document
|
|
123
|
+
* const identityDocument = await File("identity-doc", {
|
|
124
|
+
* file: fs.readFileSync("./passport.jpg"),
|
|
125
|
+
* purpose: "identity_document"
|
|
126
|
+
* });
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* // Upload a business logo with file link
|
|
130
|
+
* const businessLogo = await File("business-logo", {
|
|
131
|
+
* file: fs.readFileSync("./logo.png"),
|
|
132
|
+
* purpose: "business_logo",
|
|
133
|
+
* fileLink: {
|
|
134
|
+
* create: true,
|
|
135
|
+
* expiresAt: Math.floor(Date.now() / 1000) + 86400,
|
|
136
|
+
* metadata: {
|
|
137
|
+
* brand: "company_logo"
|
|
138
|
+
* }
|
|
139
|
+
* }
|
|
140
|
+
* });
|
|
141
|
+
*/
|
|
142
|
+
export declare const File: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<File>, _id: string, props: FileProps) => Promise<File>);
|
|
143
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/stripe/file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC;IACV;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,MAAM,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,IAAK,SAAQ,QAAQ,CAAC,cAAc,CAAC;IACpD;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,KAAK,CAAC;YACV,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,WAAW,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,OAAO,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,IAAI,yFAGP,OAAO,CAAC,IAAI,CAAC,OACd,MAAM,SACJ,SAAS,KACf,OAAO,CAAC,IAAI,CAAC,CAiEjB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Resource } from "../resource.js";
|
|
2
|
+
import { createStripeClient, isStripeConflictError } from "./client.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create and manage Stripe files for uploads
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* // Upload a dispute evidence file
|
|
8
|
+
* const disputeEvidence = await File("dispute-evidence", {
|
|
9
|
+
* file: fs.readFileSync("./evidence.pdf"),
|
|
10
|
+
* purpose: "dispute_evidence"
|
|
11
|
+
* });
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // Upload an identity document
|
|
15
|
+
* const identityDocument = await File("identity-doc", {
|
|
16
|
+
* file: fs.readFileSync("./passport.jpg"),
|
|
17
|
+
* purpose: "identity_document"
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Upload a business logo with file link
|
|
22
|
+
* const businessLogo = await File("business-logo", {
|
|
23
|
+
* file: fs.readFileSync("./logo.png"),
|
|
24
|
+
* purpose: "business_logo",
|
|
25
|
+
* fileLink: {
|
|
26
|
+
* create: true,
|
|
27
|
+
* expiresAt: Math.floor(Date.now() / 1000) + 86400,
|
|
28
|
+
* metadata: {
|
|
29
|
+
* brand: "company_logo"
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
* });
|
|
33
|
+
*/
|
|
34
|
+
export const File = Resource("stripe::File", async function (_id, props) {
|
|
35
|
+
const stripe = createStripeClient({ apiKey: props.apiKey });
|
|
36
|
+
if (this.phase === "delete") {
|
|
37
|
+
return this.destroy();
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
let file;
|
|
41
|
+
if (this.phase === "update" && this.output?.id) {
|
|
42
|
+
file = await stripe.files.retrieve(this.output.id);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
try {
|
|
46
|
+
file = await stripe.files.create({
|
|
47
|
+
file: props.file,
|
|
48
|
+
purpose: props.purpose,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (isStripeConflictError(error) && props.adopt) {
|
|
53
|
+
throw new Error("File adoption is not supported - files are immutable and cannot be adopted");
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return this({
|
|
61
|
+
id: file.id,
|
|
62
|
+
object: file.object,
|
|
63
|
+
created: file.created,
|
|
64
|
+
expiresAt: file.expires_at || undefined,
|
|
65
|
+
filename: file.filename || undefined,
|
|
66
|
+
links: file.links
|
|
67
|
+
? {
|
|
68
|
+
object: file.links.object,
|
|
69
|
+
data: file.links.data.map((link) => ({
|
|
70
|
+
id: link.id,
|
|
71
|
+
object: link.object,
|
|
72
|
+
created: link.created,
|
|
73
|
+
expired: link.expired,
|
|
74
|
+
expiresAt: link.expires_at || undefined,
|
|
75
|
+
file: typeof link.file === "string" ? link.file : link.file.id,
|
|
76
|
+
livemode: link.livemode,
|
|
77
|
+
metadata: link.metadata,
|
|
78
|
+
url: link.url || undefined,
|
|
79
|
+
})),
|
|
80
|
+
hasMore: file.links.has_more,
|
|
81
|
+
url: file.links.url,
|
|
82
|
+
}
|
|
83
|
+
: undefined,
|
|
84
|
+
purpose: file.purpose,
|
|
85
|
+
size: file.size,
|
|
86
|
+
title: file.title || undefined,
|
|
87
|
+
type: file.type || undefined,
|
|
88
|
+
url: file.url || undefined,
|
|
89
|
+
livemode: true,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error("Error creating/retrieving file:", error);
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/stripe/file.ts"],"names":[],"mappings":"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"}
|
package/lib/stripe/index.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
export * from "./card.ts";
|
|
2
|
+
export * from "./client.ts";
|
|
3
|
+
export * from "./coupon.ts";
|
|
4
|
+
export * from "./customer.ts";
|
|
5
|
+
export * from "./entitlements-feature.ts";
|
|
6
|
+
export * from "./file.ts";
|
|
1
7
|
export * from "./meter.ts";
|
|
8
|
+
export * from "./portal-configuration.ts";
|
|
2
9
|
export * from "./price.ts";
|
|
3
10
|
export * from "./product.ts";
|
|
11
|
+
export * from "./product-feature.ts";
|
|
12
|
+
export * from "./promotion-code.ts";
|
|
13
|
+
export * from "./shipping-rate.ts";
|
|
14
|
+
export * from "./tax-rate.ts";
|
|
4
15
|
export * from "./webhook.ts";
|
|
5
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stripe/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stripe/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
package/lib/stripe/index.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
export * from "./card.js";
|
|
2
|
+
export * from "./client.js";
|
|
3
|
+
export * from "./coupon.js";
|
|
4
|
+
export * from "./customer.js";
|
|
5
|
+
export * from "./entitlements-feature.js";
|
|
6
|
+
export * from "./file.js";
|
|
1
7
|
export * from "./meter.js";
|
|
8
|
+
export * from "./portal-configuration.js";
|
|
2
9
|
export * from "./price.js";
|
|
3
10
|
export * from "./product.js";
|
|
11
|
+
export * from "./product-feature.js";
|
|
12
|
+
export * from "./promotion-code.js";
|
|
13
|
+
export * from "./shipping-rate.js";
|
|
14
|
+
export * from "./tax-rate.js";
|
|
4
15
|
export * from "./webhook.js";
|
|
5
16
|
//# sourceMappingURL=index.js.map
|
package/lib/stripe/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stripe/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stripe/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
package/lib/stripe/meter.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import Stripe from "stripe";
|
|
1
|
+
import type Stripe from "stripe";
|
|
2
2
|
import type { Context } from "../context.ts";
|
|
3
3
|
import { Resource } from "../resource.ts";
|
|
4
|
+
import type { Secret } from "../secret.ts";
|
|
4
5
|
/**
|
|
5
6
|
* Properties for creating or updating a Stripe Meter.
|
|
6
7
|
* Note: Nested objects like defaultAggregation, customerMapping, valueSettings
|
|
@@ -21,6 +22,14 @@ export interface MeterProps {
|
|
|
21
22
|
valueSettings: {
|
|
22
23
|
eventPayloadKey: string;
|
|
23
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* API key to use (overrides environment variable)
|
|
27
|
+
*/
|
|
28
|
+
apiKey?: Secret;
|
|
29
|
+
/**
|
|
30
|
+
* If true, adopt existing resource if creation fails due to conflict
|
|
31
|
+
*/
|
|
32
|
+
adopt?: boolean;
|
|
24
33
|
}
|
|
25
34
|
/**
|
|
26
35
|
* Output returned after Stripe Meter creation/update.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../src/stripe/meter.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../src/stripe/meter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,kBAAkB,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC;KACtE,CAAC;IACF,eAAe,EAAE;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAChE,CAAC;IACF,aAAa,EAAE;QACb,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,QAAQ,CAAC,eAAe,CAAC;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;KAC7D,CAAC;IACF,eAAe,EAAE;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KACpD,CAAC;IACF,aAAa,EAAE;QACb,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE;QAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAEH,eAAO,MAAM,KAAK,yFAGR,OAAO,CAAC,KAAK,CAAC,cACR,MAAM,SACX,UAAU,KAChB,OAAO,CAAC,KAAK,CAAC,CA8KlB,CAAC"}
|
package/lib/stripe/meter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Stripe from "stripe";
|
|
2
1
|
import { Resource } from "../resource.js";
|
|
2
|
+
import { createStripeClient, isStripeConflictError } from "./client.js";
|
|
3
3
|
/**
|
|
4
4
|
* Manages Stripe Billing Meters. Meters allow you to define how usage of a product
|
|
5
5
|
* is measured and aggregated for billing purposes. You can track events and their
|
|
@@ -86,11 +86,7 @@ import { Resource } from "../resource.js";
|
|
|
86
86
|
* });
|
|
87
87
|
*/
|
|
88
88
|
export const Meter = Resource("stripe::Meter", async function (_logicalId, props) {
|
|
89
|
-
const
|
|
90
|
-
if (!apiKey) {
|
|
91
|
-
throw new Error("STRIPE_API_KEY environment variable is required");
|
|
92
|
-
}
|
|
93
|
-
const stripe = new Stripe(apiKey);
|
|
89
|
+
const stripe = createStripeClient({ apiKey: props.apiKey });
|
|
94
90
|
const currentOutputId = this.output?.id;
|
|
95
91
|
// Helper to map MeterProps (camelCase nested) to Stripe API params (snake_case nested)
|
|
96
92
|
const mapPropsToStripeParams = (inputProps) => ({
|
|
@@ -211,7 +207,17 @@ export const Meter = Resource("stripe::Meter", async function (_logicalId, props
|
|
|
211
207
|
throw new Error("displayName, eventName, defaultAggregation, customerMapping, and valueSettings are required for creating a Stripe Meter.");
|
|
212
208
|
}
|
|
213
209
|
const createParams = mapPropsToStripeParams(props);
|
|
214
|
-
|
|
210
|
+
try {
|
|
211
|
+
stripeAPIResponse = await stripe.billing.meters.create(createParams);
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
if (isStripeConflictError(error) && props.adopt) {
|
|
215
|
+
throw new Error("Meter adoption is not supported - meters cannot be uniquely identified for adoption");
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
throw error;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
215
221
|
// If status 'inactive' is requested during creation, and Stripe created it as 'active'
|
|
216
222
|
if (props.status === "inactive" &&
|
|
217
223
|
stripeAPIResponse.status === "active") {
|
package/lib/stripe/meter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meter.js","sourceRoot":"","sources":["../../src/stripe/meter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meter.js","sourceRoot":"","sources":["../../src/stripe/meter.ts"],"names":[],"mappings":"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"}
|