@efaj/pulumi-dynamic-stripe 0.1.0 → 0.2.0-022a8be

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.0](https://github.com/efaj/pulumi-dynamic-stripe/compare/v0.1.0...v0.2.0) (2026-08-29)
4
+
5
+
6
+ ### Features
7
+
8
+ * "inf" constant ([5270a33](https://github.com/efaj/pulumi-dynamic-stripe/commit/5270a33f42f963abf977671dab7434eedf26b69e))
9
+ * **Pricing:** Support for Stripe Pricing Models and tax mode ([f968f68](https://github.com/efaj/pulumi-dynamic-stripe/commit/f968f68f81ef7ad6e1f1eccd866d12dcc2bc3832))
10
+ * **Pricing:** Support quantity and adjustableQuantity ([5ac2a7e](https://github.com/efaj/pulumi-dynamic-stripe/commit/5ac2a7e848ccd7fc89b5652e851344147ec39680))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **ci:** merge npm publish into release-please workflow to bypass GITHUB_TOKEN trigger restrictions ([9ccdc21](https://github.com/efaj/pulumi-dynamic-stripe/commit/9ccdc2121fbb23ff1ed05d4d89e8120024800722))
16
+
3
17
  ## [0.1.0](https://github.com/efaj/pulumi-dynamic-stripe/compare/v0.0.2...v0.1.0) (2026-08-28)
4
18
 
5
19
 
package/LICENSE CHANGED
File without changes
package/Makefile CHANGED
@@ -1,6 +1,6 @@
1
- .PHONY: all install build test clean
1
+ .PHONY: all install build lint test clean
2
2
 
3
- all: install build test
3
+ all: install build lint test
4
4
 
5
5
  install:
6
6
  npm install
@@ -8,8 +8,18 @@ install:
8
8
  build:
9
9
  npm run build
10
10
 
11
+ lint:
12
+ npm run lint
13
+
14
+ lint-fix:
15
+ npm run lint:fix
16
+
11
17
  test:
12
- npm test
18
+ npm run test
19
+
20
+ test-integration:
21
+ npm run build
22
+ npm run test:integration
13
23
 
14
24
  clean:
15
25
  rm -rf dist node_modules package-lock.json
package/README.md CHANGED
@@ -91,6 +91,9 @@ make install
91
91
  # Build the TypeScript source
92
92
  make build
93
93
 
94
+ # Lint the codebase
95
+ make lint
96
+
94
97
  # Run the Vitest test suite
95
98
  make test
96
99
  ```
package/biome.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.11/schema.json",
3
+ "vcs": {
4
+ "enabled": true,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": true
7
+ },
8
+ "files": {
9
+ "includes": ["**", "!!**/dist"]
10
+ },
11
+ "formatter": {
12
+ "enabled": true,
13
+ "indentStyle": "tab"
14
+ },
15
+ "linter": {
16
+ "enabled": true,
17
+ "rules": {
18
+ "preset": "recommended",
19
+ "suspicious": {
20
+ "noExplicitAny": "off"
21
+ }
22
+ }
23
+ },
24
+ "javascript": {
25
+ "formatter": {
26
+ "quoteStyle": "double"
27
+ }
28
+ },
29
+ "assist": {
30
+ "enabled": true,
31
+ "actions": {
32
+ "source": {
33
+ "organizeImports": "on"
34
+ }
35
+ }
36
+ }
37
+ }
@@ -6,6 +6,13 @@ export interface StripePaymentLinkArgs {
6
6
  redirectUrl: pulumi.Input<string>;
7
7
  allowPromotionCodes?: pulumi.Input<boolean>;
8
8
  managedPayments?: pulumi.Input<boolean>;
9
+ automaticTax?: pulumi.Input<boolean>;
10
+ quantity?: pulumi.Input<number>;
11
+ adjustableQuantity?: pulumi.Input<{
12
+ enabled: boolean;
13
+ minimum?: number;
14
+ maximum?: number;
15
+ }>;
9
16
  }
10
17
  export interface StripePaymentLinkProviderArgs {
11
18
  apiKey: string;
@@ -14,10 +21,17 @@ export interface StripePaymentLinkProviderArgs {
14
21
  redirectUrl: string;
15
22
  allowPromotionCodes?: boolean;
16
23
  managedPayments?: boolean;
24
+ automaticTax?: boolean;
25
+ quantity?: number;
26
+ adjustableQuantity?: {
27
+ enabled: boolean;
28
+ minimum?: number;
29
+ maximum?: number;
30
+ };
17
31
  }
18
32
  export declare class StripePaymentLinkProvider implements pulumi.dynamic.ResourceProvider {
19
33
  create(inputs: StripePaymentLinkProviderArgs): Promise<pulumi.dynamic.CreateResult>;
20
- diff(id: string, olds: StripePaymentLinkProviderArgs, news: StripePaymentLinkProviderArgs): Promise<pulumi.dynamic.DiffResult>;
34
+ diff(_id: string, olds: StripePaymentLinkProviderArgs, news: StripePaymentLinkProviderArgs): Promise<pulumi.dynamic.DiffResult>;
21
35
  delete(id: string, props: StripePaymentLinkProviderArgs): Promise<void>;
22
36
  }
23
37
  export declare class PaymentLink extends pulumi.dynamic.Resource {
@@ -44,26 +44,37 @@ class StripePaymentLinkProvider {
44
44
  async create(inputs) {
45
45
  const stripe = new stripe_1.default(inputs.apiKey);
46
46
  const paymentLink = await stripe.paymentLinks.create({
47
- line_items: [{
47
+ line_items: [
48
+ {
48
49
  price: inputs.priceId,
49
- quantity: 1,
50
- adjustable_quantity: {
51
- enabled: true,
52
- minimum: 1,
53
- maximum: 100,
54
- },
55
- }],
50
+ quantity: inputs.quantity ?? 1,
51
+ ...(inputs.adjustableQuantity !== undefined
52
+ ? inputs.adjustableQuantity.enabled
53
+ ? { adjustable_quantity: inputs.adjustableQuantity }
54
+ : {}
55
+ : {
56
+ adjustable_quantity: {
57
+ enabled: true,
58
+ minimum: 1,
59
+ maximum: 100,
60
+ },
61
+ }),
62
+ },
63
+ ],
56
64
  after_completion: {
57
- type: 'redirect',
65
+ type: "redirect",
58
66
  redirect: {
59
67
  url: inputs.redirectUrl,
60
- }
68
+ },
61
69
  },
62
70
  allow_promotion_codes: inputs.allowPromotionCodes,
63
- ...(inputs.managedPayments ? { managed_payments: { enabled: true } } : {}),
71
+ ...(inputs.managedPayments
72
+ ? { managed_payments: { enabled: true } }
73
+ : {}),
74
+ ...(inputs.automaticTax ? { automatic_tax: { enabled: true } } : {}),
64
75
  metadata: {
65
- sparks: inputs.sparksAmount
66
- }
76
+ sparks: inputs.sparksAmount,
77
+ },
67
78
  });
68
79
  return {
69
80
  id: paymentLink.id,
@@ -71,10 +82,10 @@ class StripePaymentLinkProvider {
71
82
  ...inputs,
72
83
  paymentLinkId: paymentLink.id,
73
84
  url: paymentLink.url,
74
- }
85
+ },
75
86
  };
76
87
  }
77
- async diff(id, olds, news) {
88
+ async diff(_id, olds, news) {
78
89
  const replaces = [];
79
90
  if (olds.priceId !== news.priceId)
80
91
  replaces.push("priceId");
@@ -86,15 +97,24 @@ class StripePaymentLinkProvider {
86
97
  replaces.push("allowPromotionCodes");
87
98
  if (olds.managedPayments !== news.managedPayments)
88
99
  replaces.push("managedPayments");
100
+ if (olds.automaticTax !== news.automaticTax)
101
+ replaces.push("automaticTax");
89
102
  if (olds.apiKey !== news.apiKey)
90
103
  replaces.push("apiKey");
104
+ if (olds.quantity !== news.quantity)
105
+ replaces.push("quantity");
106
+ if (JSON.stringify(olds.adjustableQuantity) !==
107
+ JSON.stringify(news.adjustableQuantity))
108
+ replaces.push("adjustableQuantity");
91
109
  return {
92
110
  changes: replaces.length > 0,
93
111
  replaces,
94
112
  };
95
113
  }
96
114
  async delete(id, props) {
97
- await (0, utils_1.safeDeactivateStripeResource)("StripePaymentLinkProvider", id, props.apiKey, async (stripe) => { await stripe.paymentLinks.update(id, { active: false }); });
115
+ await (0, utils_1.safeDeactivateStripeResource)("StripePaymentLinkProvider", id, props.apiKey, async (stripe) => {
116
+ await stripe.paymentLinks.update(id, { active: false });
117
+ });
98
118
  }
99
119
  }
100
120
  exports.StripePaymentLinkProvider = StripePaymentLinkProvider;
@@ -108,6 +128,9 @@ class PaymentLink extends pulumi.dynamic.Resource {
108
128
  redirectUrl: args.redirectUrl,
109
129
  allowPromotionCodes: args.allowPromotionCodes,
110
130
  managedPayments: args.managedPayments,
131
+ automaticTax: args.automaticTax,
132
+ quantity: args.quantity,
133
+ adjustableQuantity: args.adjustableQuantity,
111
134
  paymentLinkId: undefined,
112
135
  url: undefined,
113
136
  }, opts);
@@ -1,19 +1,60 @@
1
1
  import * as pulumi from "@pulumi/pulumi";
2
+ import type { BillingScheme, RecurringInterval, TaxBehavior, TiersMode, UsageType } from "./enums";
3
+ export interface RecurringArgs {
4
+ interval: pulumi.Input<RecurringInterval>;
5
+ intervalCount?: pulumi.Input<number>;
6
+ usageType?: pulumi.Input<UsageType>;
7
+ }
8
+ export interface TierArgs {
9
+ upTo: pulumi.Input<number | "inf">;
10
+ unitAmount?: pulumi.Input<number>;
11
+ flatAmount?: pulumi.Input<number>;
12
+ }
13
+ export interface TransformQuantityArgs {
14
+ divideBy: pulumi.Input<number>;
15
+ round: pulumi.Input<"up" | "down">;
16
+ }
2
17
  export interface StripePriceArgs {
3
18
  apiKey: pulumi.Input<string>;
4
19
  productId: pulumi.Input<string>;
5
- unitAmount: pulumi.Input<number>;
6
20
  currency: pulumi.Input<string>;
21
+ unitAmount?: pulumi.Input<number>;
22
+ taxBehavior?: pulumi.Input<TaxBehavior>;
23
+ recurring?: pulumi.Input<RecurringArgs>;
24
+ billingScheme?: pulumi.Input<BillingScheme>;
25
+ tiersMode?: pulumi.Input<TiersMode>;
26
+ tiers?: pulumi.Input<pulumi.Input<TierArgs>[]>;
27
+ transformQuantity?: pulumi.Input<TransformQuantityArgs>;
28
+ }
29
+ export interface RecurringProviderArgs {
30
+ interval: RecurringInterval;
31
+ intervalCount?: number;
32
+ usageType?: UsageType;
33
+ }
34
+ export interface TierProviderArgs {
35
+ upTo: number | "inf";
36
+ unitAmount?: number;
37
+ flatAmount?: number;
38
+ }
39
+ export interface TransformQuantityProviderArgs {
40
+ divideBy: number;
41
+ round: "up" | "down";
7
42
  }
8
43
  export interface StripePriceProviderArgs {
9
44
  apiKey: string;
10
45
  productId: string;
11
- unitAmount: number;
12
46
  currency: string;
47
+ unitAmount?: number;
48
+ taxBehavior?: TaxBehavior;
49
+ recurring?: RecurringProviderArgs;
50
+ billingScheme?: BillingScheme;
51
+ tiersMode?: TiersMode;
52
+ tiers?: TierProviderArgs[];
53
+ transformQuantity?: TransformQuantityProviderArgs;
13
54
  }
14
55
  export declare class StripePriceProvider implements pulumi.dynamic.ResourceProvider {
15
56
  create(inputs: StripePriceProviderArgs): Promise<pulumi.dynamic.CreateResult>;
16
- diff(id: string, olds: StripePriceProviderArgs, news: StripePriceProviderArgs): Promise<pulumi.dynamic.DiffResult>;
57
+ diff(_id: string, olds: StripePriceProviderArgs, news: StripePriceProviderArgs): Promise<pulumi.dynamic.DiffResult>;
17
58
  delete(id: string, props: StripePriceProviderArgs): Promise<void>;
18
59
  }
19
60
  export declare class Price extends pulumi.dynamic.Resource {
@@ -45,18 +45,49 @@ class StripePriceProvider {
45
45
  const stripe = new stripe_1.default(inputs.apiKey);
46
46
  const price = await stripe.prices.create({
47
47
  product: inputs.productId,
48
- unit_amount: inputs.unitAmount,
49
48
  currency: inputs.currency,
49
+ ...(inputs.unitAmount !== undefined
50
+ ? { unit_amount: inputs.unitAmount }
51
+ : {}),
52
+ tax_behavior: inputs.taxBehavior,
53
+ ...(inputs.recurring
54
+ ? {
55
+ recurring: {
56
+ interval: inputs.recurring.interval,
57
+ interval_count: inputs.recurring.intervalCount,
58
+ usage_type: inputs.recurring.usageType,
59
+ },
60
+ }
61
+ : {}),
62
+ billing_scheme: inputs.billingScheme,
63
+ tiers_mode: inputs.tiersMode,
64
+ ...(inputs.tiers
65
+ ? {
66
+ tiers: inputs.tiers.map((t) => ({
67
+ up_to: t.upTo,
68
+ unit_amount: t.unitAmount,
69
+ flat_amount: t.flatAmount,
70
+ })),
71
+ }
72
+ : {}),
73
+ ...(inputs.transformQuantity
74
+ ? {
75
+ transform_quantity: {
76
+ divide_by: inputs.transformQuantity.divideBy,
77
+ round: inputs.transformQuantity.round,
78
+ },
79
+ }
80
+ : {}),
50
81
  });
51
82
  return {
52
83
  id: price.id,
53
84
  outs: {
54
85
  ...inputs,
55
86
  priceId: price.id,
56
- }
87
+ },
57
88
  };
58
89
  }
59
- async diff(id, olds, news) {
90
+ async diff(_id, olds, news) {
60
91
  const replaces = [];
61
92
  if (olds.productId !== news.productId)
62
93
  replaces.push("productId");
@@ -64,6 +95,19 @@ class StripePriceProvider {
64
95
  replaces.push("unitAmount");
65
96
  if (olds.currency !== news.currency)
66
97
  replaces.push("currency");
98
+ if (olds.taxBehavior !== news.taxBehavior)
99
+ replaces.push("taxBehavior");
100
+ if (JSON.stringify(olds.recurring) !== JSON.stringify(news.recurring))
101
+ replaces.push("recurring");
102
+ if (olds.billingScheme !== news.billingScheme)
103
+ replaces.push("billingScheme");
104
+ if (olds.tiersMode !== news.tiersMode)
105
+ replaces.push("tiersMode");
106
+ if (JSON.stringify(olds.tiers) !== JSON.stringify(news.tiers))
107
+ replaces.push("tiers");
108
+ if (JSON.stringify(olds.transformQuantity) !==
109
+ JSON.stringify(news.transformQuantity))
110
+ replaces.push("transformQuantity");
67
111
  if (olds.apiKey !== news.apiKey)
68
112
  replaces.push("apiKey");
69
113
  return {
@@ -72,7 +116,9 @@ class StripePriceProvider {
72
116
  };
73
117
  }
74
118
  async delete(id, props) {
75
- await (0, utils_1.safeDeactivateStripeResource)("StripePriceProvider", id, props.apiKey, async (stripe) => { await stripe.prices.update(id, { active: false }); });
119
+ await (0, utils_1.safeDeactivateStripeResource)("StripePriceProvider", id, props.apiKey, async (stripe) => {
120
+ await stripe.prices.update(id, { active: false });
121
+ });
76
122
  }
77
123
  }
78
124
  exports.StripePriceProvider = StripePriceProvider;
@@ -13,8 +13,8 @@ export interface StripeProductProviderArgs {
13
13
  }
14
14
  export declare class StripeProductProvider implements pulumi.dynamic.ResourceProvider {
15
15
  create(inputs: StripeProductProviderArgs): Promise<pulumi.dynamic.CreateResult>;
16
- diff(id: string, olds: StripeProductProviderArgs, news: StripeProductProviderArgs): Promise<pulumi.dynamic.DiffResult>;
17
- update(id: string, olds: StripeProductProviderArgs, news: StripeProductProviderArgs): Promise<pulumi.dynamic.UpdateResult>;
16
+ diff(_id: string, olds: StripeProductProviderArgs, news: StripeProductProviderArgs): Promise<pulumi.dynamic.DiffResult>;
17
+ update(id: string, _olds: StripeProductProviderArgs, news: StripeProductProviderArgs): Promise<pulumi.dynamic.UpdateResult>;
18
18
  delete(id: string, props: StripeProductProviderArgs): Promise<void>;
19
19
  }
20
20
  export declare class Product extends pulumi.dynamic.Resource {
@@ -53,10 +53,10 @@ class StripeProductProvider {
53
53
  outs: {
54
54
  ...inputs,
55
55
  productId: product.id,
56
- }
56
+ },
57
57
  };
58
58
  }
59
- async diff(id, olds, news) {
59
+ async diff(_id, olds, news) {
60
60
  const changes = [];
61
61
  if (olds.name !== news.name)
62
62
  changes.push("name");
@@ -71,7 +71,7 @@ class StripeProductProvider {
71
71
  replaces: [], // None require replacement, all can be updated
72
72
  };
73
73
  }
74
- async update(id, olds, news) {
74
+ async update(id, _olds, news) {
75
75
  const stripe = new stripe_1.default(news.apiKey);
76
76
  await stripe.products.update(id, {
77
77
  name: news.name,
@@ -82,11 +82,13 @@ class StripeProductProvider {
82
82
  outs: {
83
83
  ...news,
84
84
  productId: id,
85
- }
85
+ },
86
86
  };
87
87
  }
88
88
  async delete(id, props) {
89
- await (0, utils_1.safeDeactivateStripeResource)("StripeProductProvider", id, props.apiKey, async (stripe) => { await stripe.products.update(id, { active: false }); });
89
+ await (0, utils_1.safeDeactivateStripeResource)("StripeProductProvider", id, props.apiKey, async (stripe) => {
90
+ await stripe.products.update(id, { active: false });
91
+ });
90
92
  }
91
93
  }
92
94
  exports.StripeProductProvider = StripeProductProvider;
@@ -0,0 +1,24 @@
1
+ export declare const INF: "inf";
2
+ export declare enum TaxBehavior {
3
+ Inclusive = "inclusive",
4
+ Exclusive = "exclusive",
5
+ Unspecified = "unspecified"
6
+ }
7
+ export declare enum BillingScheme {
8
+ PerUnit = "per_unit",
9
+ Tiered = "tiered"
10
+ }
11
+ export declare enum TiersMode {
12
+ Graduated = "graduated",
13
+ Volume = "volume"
14
+ }
15
+ export declare enum RecurringInterval {
16
+ Day = "day",
17
+ Week = "week",
18
+ Month = "month",
19
+ Year = "year"
20
+ }
21
+ export declare enum UsageType {
22
+ Metered = "metered",
23
+ Licensed = "licensed"
24
+ }
package/dist/enums.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UsageType = exports.RecurringInterval = exports.TiersMode = exports.BillingScheme = exports.TaxBehavior = exports.INF = void 0;
4
+ exports.INF = "inf";
5
+ var TaxBehavior;
6
+ (function (TaxBehavior) {
7
+ TaxBehavior["Inclusive"] = "inclusive";
8
+ TaxBehavior["Exclusive"] = "exclusive";
9
+ TaxBehavior["Unspecified"] = "unspecified";
10
+ })(TaxBehavior || (exports.TaxBehavior = TaxBehavior = {}));
11
+ var BillingScheme;
12
+ (function (BillingScheme) {
13
+ BillingScheme["PerUnit"] = "per_unit";
14
+ BillingScheme["Tiered"] = "tiered";
15
+ })(BillingScheme || (exports.BillingScheme = BillingScheme = {}));
16
+ var TiersMode;
17
+ (function (TiersMode) {
18
+ TiersMode["Graduated"] = "graduated";
19
+ TiersMode["Volume"] = "volume";
20
+ })(TiersMode || (exports.TiersMode = TiersMode = {}));
21
+ var RecurringInterval;
22
+ (function (RecurringInterval) {
23
+ RecurringInterval["Day"] = "day";
24
+ RecurringInterval["Week"] = "week";
25
+ RecurringInterval["Month"] = "month";
26
+ RecurringInterval["Year"] = "year";
27
+ })(RecurringInterval || (exports.RecurringInterval = RecurringInterval = {}));
28
+ var UsageType;
29
+ (function (UsageType) {
30
+ UsageType["Metered"] = "metered";
31
+ UsageType["Licensed"] = "licensed";
32
+ })(UsageType || (exports.UsageType = UsageType = {}));
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./enums";
1
2
  export * from "./StripePaymentLink";
2
- export * from "./StripeProduct";
3
3
  export * from "./StripePrice";
4
+ export * from "./StripeProduct";
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./enums"), exports);
17
18
  __exportStar(require("./StripePaymentLink"), exports);
18
- __exportStar(require("./StripeProduct"), exports);
19
19
  __exportStar(require("./StripePrice"), exports);
20
+ __exportStar(require("./StripeProduct"), exports);
package/dist/utils.d.ts CHANGED
File without changes
package/dist/utils.js CHANGED
@@ -11,7 +11,9 @@ const stripe_1 = __importDefault(require("stripe"));
11
11
  * Prevents Pulumi state engine crashes when a resource cannot be deactivated.
12
12
  */
13
13
  async function safeDeactivateStripeResource(providerName, resourceId, apiKeyFromState, deactivateFn) {
14
- const apiKey = apiKeyFromState || process.env.STRIPE_SECRET_KEY || process.env.STRIPE_API_KEY;
14
+ const apiKey = apiKeyFromState ||
15
+ process.env.STRIPE_SECRET_KEY ||
16
+ process.env.STRIPE_API_KEY;
15
17
  if (!apiKey) {
16
18
  console.warn(`[${providerName}] Skipping deletion of ${resourceId} due to missing apiKey in state and environment variables.`);
17
19
  return;
File without changes
package/package.json CHANGED
@@ -1,36 +1,45 @@
1
1
  {
2
- "name": "@efaj/pulumi-dynamic-stripe",
3
- "version": "0.1.0",
4
- "description": "A Pulumi Dynamic Provider for Stripe, supporting modern features like Payment Links.",
5
- "keywords": [
6
- "pulumi",
7
- "stripe"
8
- ],
9
- "homepage": "https://github.com/efaj/pulumi-dynamic-stripe#readme",
10
- "bugs": {
11
- "url": "https://github.com/efaj/pulumi-dynamic-stripe/issues"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "git+https://github.com/efaj/pulumi-dynamic-stripe.git"
16
- },
17
- "license": "MIT",
18
- "author": "Emmanuel Abarca Jimenez <efaj@crenet.games> (https://crenet.games/emmanuel)",
19
- "type": "commonjs",
20
- "main": "dist/index.js",
21
- "types": "dist/index.d.ts",
22
- "scripts": {
23
- "build": "tsc",
24
- "prepare": "tsc",
25
- "test": "vitest run"
26
- },
27
- "dependencies": {
28
- "@pulumi/pulumi": "^3.259.0",
29
- "stripe": "^22.6.0"
30
- },
31
- "devDependencies": {
32
- "@types/node": "^26.4.0",
33
- "vitest": "^2.0.5",
34
- "typescript": "^6.0.3"
35
- }
36
- }
2
+ "name": "@efaj/pulumi-dynamic-stripe",
3
+ "version": "0.2.0-022a8be",
4
+ "description": "A Pulumi Dynamic Provider for Stripe, supporting modern features like Payment Links.",
5
+ "keywords": [
6
+ "pulumi",
7
+ "stripe"
8
+ ],
9
+ "homepage": "https://github.com/efaj/pulumi-dynamic-stripe#readme",
10
+ "bugs": {
11
+ "url": "https://github.com/efaj/pulumi-dynamic-stripe/issues"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/efaj/pulumi-dynamic-stripe.git"
16
+ },
17
+ "license": "MIT",
18
+ "author": "Emmanuel Abarca Jimenez <efaj@crenet.games> (https://crenet.games/emmanuel)",
19
+ "type": "commonjs",
20
+ "main": "dist/index.js",
21
+ "types": "dist/index.d.ts",
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "scripts": {
26
+ "build": "tsc",
27
+ "prepare": "tsc",
28
+ "test": "vitest run tests/index.test.ts",
29
+ "test:integration": "vitest run tests/integration.test.ts",
30
+ "lint": "biome check .",
31
+ "lint:fix": "biome check --write .",
32
+ "format": "biome format --write ."
33
+ },
34
+ "dependencies": {
35
+ "@pulumi/pulumi": "^3.259.0",
36
+ "stripe": "^22.6.0"
37
+ },
38
+ "devDependencies": {
39
+ "@biomejs/biome": "2.5.11",
40
+ "@types/node": "^26.4.0",
41
+ "typescript": "^6.0.3",
42
+ "vite": "^6.4.3",
43
+ "vitest": "^3.2.7"
44
+ }
45
+ }