@makeco/stripe-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +201 -0
  3. package/dist/cli-prompts/action.d.ts +5 -0
  4. package/dist/cli-prompts/action.d.ts.map +1 -0
  5. package/dist/cli-prompts/action.js +36 -0
  6. package/dist/cli-prompts/action.js.map +1 -0
  7. package/dist/cli-prompts/adapter.d.ts +9 -0
  8. package/dist/cli-prompts/adapter.d.ts.map +1 -0
  9. package/dist/cli-prompts/adapter.js +53 -0
  10. package/dist/cli-prompts/adapter.js.map +1 -0
  11. package/dist/cli-prompts/confirmation.d.ts +6 -0
  12. package/dist/cli-prompts/confirmation.d.ts.map +1 -0
  13. package/dist/cli-prompts/confirmation.js +27 -0
  14. package/dist/cli-prompts/confirmation.js.map +1 -0
  15. package/dist/cli-prompts/environment.d.ts +5 -0
  16. package/dist/cli-prompts/environment.d.ts.map +1 -0
  17. package/dist/cli-prompts/environment.js +43 -0
  18. package/dist/cli-prompts/environment.js.map +1 -0
  19. package/dist/cli-prompts/index.d.ts +5 -0
  20. package/dist/cli-prompts/index.d.ts.map +1 -0
  21. package/dist/cli-prompts/index.js +5 -0
  22. package/dist/cli-prompts/index.js.map +1 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +33 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/commands/archive/archive.action.d.ts +5 -0
  28. package/dist/commands/archive/archive.action.d.ts.map +1 -0
  29. package/dist/commands/archive/archive.action.js +73 -0
  30. package/dist/commands/archive/archive.action.js.map +1 -0
  31. package/dist/commands/archive/archive.command.d.ts +3 -0
  32. package/dist/commands/archive/archive.command.d.ts.map +1 -0
  33. package/dist/commands/archive/archive.command.js +23 -0
  34. package/dist/commands/archive/archive.command.js.map +1 -0
  35. package/dist/commands/archive/archive.preflight.d.ts +13 -0
  36. package/dist/commands/archive/archive.preflight.d.ts.map +1 -0
  37. package/dist/commands/archive/archive.preflight.js +27 -0
  38. package/dist/commands/archive/archive.preflight.js.map +1 -0
  39. package/dist/commands/archive/index.d.ts +2 -0
  40. package/dist/commands/archive/index.d.ts.map +1 -0
  41. package/dist/commands/archive/index.js +2 -0
  42. package/dist/commands/archive/index.js.map +1 -0
  43. package/dist/commands/config/config.command.d.ts +3 -0
  44. package/dist/commands/config/config.command.d.ts.map +1 -0
  45. package/dist/commands/config/config.command.js +33 -0
  46. package/dist/commands/config/config.command.js.map +1 -0
  47. package/dist/commands/config/index.d.ts +2 -0
  48. package/dist/commands/config/index.d.ts.map +1 -0
  49. package/dist/commands/config/index.js +2 -0
  50. package/dist/commands/config/index.js.map +1 -0
  51. package/dist/commands/create/create.action.d.ts +5 -0
  52. package/dist/commands/create/create.action.d.ts.map +1 -0
  53. package/dist/commands/create/create.action.js +53 -0
  54. package/dist/commands/create/create.action.js.map +1 -0
  55. package/dist/commands/create/create.command.d.ts +3 -0
  56. package/dist/commands/create/create.command.d.ts.map +1 -0
  57. package/dist/commands/create/create.command.js +21 -0
  58. package/dist/commands/create/create.command.js.map +1 -0
  59. package/dist/commands/create/create.preflight.d.ts +13 -0
  60. package/dist/commands/create/create.preflight.d.ts.map +1 -0
  61. package/dist/commands/create/create.preflight.js +24 -0
  62. package/dist/commands/create/create.preflight.js.map +1 -0
  63. package/dist/commands/create/index.d.ts +2 -0
  64. package/dist/commands/create/index.d.ts.map +1 -0
  65. package/dist/commands/create/index.js +2 -0
  66. package/dist/commands/create/index.js.map +1 -0
  67. package/dist/commands/db/db.command.d.ts +3 -0
  68. package/dist/commands/db/db.command.d.ts.map +1 -0
  69. package/dist/commands/db/db.command.js +13 -0
  70. package/dist/commands/db/db.command.js.map +1 -0
  71. package/dist/commands/db/index.d.ts +4 -0
  72. package/dist/commands/db/index.d.ts.map +1 -0
  73. package/dist/commands/db/index.js +4 -0
  74. package/dist/commands/db/index.js.map +1 -0
  75. package/dist/commands/db/purge/index.d.ts +2 -0
  76. package/dist/commands/db/purge/index.d.ts.map +1 -0
  77. package/dist/commands/db/purge/index.js +2 -0
  78. package/dist/commands/db/purge/index.js.map +1 -0
  79. package/dist/commands/db/purge/purge.action.d.ts +3 -0
  80. package/dist/commands/db/purge/purge.action.d.ts.map +1 -0
  81. package/dist/commands/db/purge/purge.action.js +17 -0
  82. package/dist/commands/db/purge/purge.action.js.map +1 -0
  83. package/dist/commands/db/purge/purge.command.d.ts +3 -0
  84. package/dist/commands/db/purge/purge.command.d.ts.map +1 -0
  85. package/dist/commands/db/purge/purge.command.js +22 -0
  86. package/dist/commands/db/purge/purge.command.js.map +1 -0
  87. package/dist/commands/db/purge/purge.preflight.d.ts +12 -0
  88. package/dist/commands/db/purge/purge.preflight.d.ts.map +1 -0
  89. package/dist/commands/db/purge/purge.preflight.js +27 -0
  90. package/dist/commands/db/purge/purge.preflight.js.map +1 -0
  91. package/dist/commands/db/sync/index.d.ts +2 -0
  92. package/dist/commands/db/sync/index.d.ts.map +1 -0
  93. package/dist/commands/db/sync/index.js +2 -0
  94. package/dist/commands/db/sync/index.js.map +1 -0
  95. package/dist/commands/db/sync/sync.action.d.ts +3 -0
  96. package/dist/commands/db/sync/sync.action.d.ts.map +1 -0
  97. package/dist/commands/db/sync/sync.action.js +24 -0
  98. package/dist/commands/db/sync/sync.action.js.map +1 -0
  99. package/dist/commands/db/sync/sync.command.d.ts +3 -0
  100. package/dist/commands/db/sync/sync.command.d.ts.map +1 -0
  101. package/dist/commands/db/sync/sync.command.js +22 -0
  102. package/dist/commands/db/sync/sync.command.js.map +1 -0
  103. package/dist/commands/db/sync/sync.preflight.d.ts +12 -0
  104. package/dist/commands/db/sync/sync.preflight.d.ts.map +1 -0
  105. package/dist/commands/db/sync/sync.preflight.js +33 -0
  106. package/dist/commands/db/sync/sync.preflight.js.map +1 -0
  107. package/dist/commands/index.d.ts +8 -0
  108. package/dist/commands/index.d.ts.map +1 -0
  109. package/dist/commands/index.js +8 -0
  110. package/dist/commands/index.js.map +1 -0
  111. package/dist/commands/list/index.d.ts +4 -0
  112. package/dist/commands/list/index.d.ts.map +1 -0
  113. package/dist/commands/list/index.js +4 -0
  114. package/dist/commands/list/index.js.map +1 -0
  115. package/dist/commands/list/list.command.d.ts +3 -0
  116. package/dist/commands/list/list.command.d.ts.map +1 -0
  117. package/dist/commands/list/list.command.js +13 -0
  118. package/dist/commands/list/list.command.js.map +1 -0
  119. package/dist/commands/list/prices/index.d.ts +2 -0
  120. package/dist/commands/list/prices/index.d.ts.map +1 -0
  121. package/dist/commands/list/prices/index.js +2 -0
  122. package/dist/commands/list/prices/index.js.map +1 -0
  123. package/dist/commands/list/prices/prices.action.d.ts +5 -0
  124. package/dist/commands/list/prices/prices.action.d.ts.map +1 -0
  125. package/dist/commands/list/prices/prices.action.js +40 -0
  126. package/dist/commands/list/prices/prices.action.js.map +1 -0
  127. package/dist/commands/list/prices/prices.command.d.ts +3 -0
  128. package/dist/commands/list/prices/prices.command.d.ts.map +1 -0
  129. package/dist/commands/list/prices/prices.command.js +21 -0
  130. package/dist/commands/list/prices/prices.command.js.map +1 -0
  131. package/dist/commands/list/prices/prices.preflight.d.ts +13 -0
  132. package/dist/commands/list/prices/prices.preflight.d.ts.map +1 -0
  133. package/dist/commands/list/prices/prices.preflight.js +19 -0
  134. package/dist/commands/list/prices/prices.preflight.js.map +1 -0
  135. package/dist/commands/list/products/index.d.ts +2 -0
  136. package/dist/commands/list/products/index.d.ts.map +1 -0
  137. package/dist/commands/list/products/index.js +2 -0
  138. package/dist/commands/list/products/index.js.map +1 -0
  139. package/dist/commands/list/products/products.action.d.ts +5 -0
  140. package/dist/commands/list/products/products.action.d.ts.map +1 -0
  141. package/dist/commands/list/products/products.action.js +32 -0
  142. package/dist/commands/list/products/products.action.js.map +1 -0
  143. package/dist/commands/list/products/products.command.d.ts +3 -0
  144. package/dist/commands/list/products/products.command.d.ts.map +1 -0
  145. package/dist/commands/list/products/products.command.js +21 -0
  146. package/dist/commands/list/products/products.command.js.map +1 -0
  147. package/dist/commands/list/products/products.preflight.d.ts +13 -0
  148. package/dist/commands/list/products/products.preflight.d.ts.map +1 -0
  149. package/dist/commands/list/products/products.preflight.js +19 -0
  150. package/dist/commands/list/products/products.preflight.js.map +1 -0
  151. package/dist/commands/update/index.d.ts +2 -0
  152. package/dist/commands/update/index.d.ts.map +1 -0
  153. package/dist/commands/update/index.js +2 -0
  154. package/dist/commands/update/index.js.map +1 -0
  155. package/dist/commands/update/update.action.d.ts +3 -0
  156. package/dist/commands/update/update.action.d.ts.map +1 -0
  157. package/dist/commands/update/update.action.js +84 -0
  158. package/dist/commands/update/update.action.js.map +1 -0
  159. package/dist/commands/update/update.command.d.ts +3 -0
  160. package/dist/commands/update/update.command.d.ts.map +1 -0
  161. package/dist/commands/update/update.command.js +21 -0
  162. package/dist/commands/update/update.command.js.map +1 -0
  163. package/dist/commands/update/update.preflight.d.ts +12 -0
  164. package/dist/commands/update/update.preflight.d.ts.map +1 -0
  165. package/dist/commands/update/update.preflight.js +36 -0
  166. package/dist/commands/update/update.preflight.js.map +1 -0
  167. package/dist/commands/urls/index.d.ts +2 -0
  168. package/dist/commands/urls/index.d.ts.map +1 -0
  169. package/dist/commands/urls/index.js +2 -0
  170. package/dist/commands/urls/index.js.map +1 -0
  171. package/dist/commands/urls/urls.action.d.ts +4 -0
  172. package/dist/commands/urls/urls.action.d.ts.map +1 -0
  173. package/dist/commands/urls/urls.action.js +65 -0
  174. package/dist/commands/urls/urls.action.js.map +1 -0
  175. package/dist/commands/urls/urls.command.d.ts +6 -0
  176. package/dist/commands/urls/urls.command.d.ts.map +1 -0
  177. package/dist/commands/urls/urls.command.js +19 -0
  178. package/dist/commands/urls/urls.command.js.map +1 -0
  179. package/dist/definitions/action.constants.d.ts +14 -0
  180. package/dist/definitions/action.constants.d.ts.map +1 -0
  181. package/dist/definitions/action.constants.js +22 -0
  182. package/dist/definitions/action.constants.js.map +1 -0
  183. package/dist/definitions/config.schemas.d.ts +278 -0
  184. package/dist/definitions/config.schemas.d.ts.map +1 -0
  185. package/dist/definitions/config.schemas.js +30 -0
  186. package/dist/definitions/config.schemas.js.map +1 -0
  187. package/dist/definitions/context.types.d.ts +18 -0
  188. package/dist/definitions/context.types.d.ts.map +1 -0
  189. package/dist/definitions/context.types.js +2 -0
  190. package/dist/definitions/context.types.js.map +1 -0
  191. package/dist/definitions/database-adapter.schemas.d.ts +20 -0
  192. package/dist/definitions/database-adapter.schemas.d.ts.map +1 -0
  193. package/dist/definitions/database-adapter.schemas.js +18 -0
  194. package/dist/definitions/database-adapter.schemas.js.map +1 -0
  195. package/dist/definitions/env.constants.d.ts +9 -0
  196. package/dist/definitions/env.constants.d.ts.map +1 -0
  197. package/dist/definitions/env.constants.js +8 -0
  198. package/dist/definitions/env.constants.js.map +1 -0
  199. package/dist/definitions/index.d.ts +9 -0
  200. package/dist/definitions/index.d.ts.map +1 -0
  201. package/dist/definitions/index.js +9 -0
  202. package/dist/definitions/index.js.map +1 -0
  203. package/dist/definitions/stripe-price.schemas.d.ts +132 -0
  204. package/dist/definitions/stripe-price.schemas.d.ts.map +1 -0
  205. package/dist/definitions/stripe-price.schemas.js +50 -0
  206. package/dist/definitions/stripe-price.schemas.js.map +1 -0
  207. package/dist/definitions/stripe-product.schemas.d.ts +87 -0
  208. package/dist/definitions/stripe-product.schemas.d.ts.map +1 -0
  209. package/dist/definitions/stripe-product.schemas.js +42 -0
  210. package/dist/definitions/stripe-product.schemas.js.map +1 -0
  211. package/dist/definitions/utility.types.d.ts +4 -0
  212. package/dist/definitions/utility.types.d.ts.map +1 -0
  213. package/dist/definitions/utility.types.js +2 -0
  214. package/dist/definitions/utility.types.js.map +1 -0
  215. package/dist/index.d.ts +3 -0
  216. package/dist/index.d.ts.map +1 -0
  217. package/dist/index.js +3 -0
  218. package/dist/index.js.map +1 -0
  219. package/dist/utils/create-context.d.ts +6 -0
  220. package/dist/utils/create-context.d.ts.map +1 -0
  221. package/dist/utils/create-context.js +21 -0
  222. package/dist/utils/create-context.js.map +1 -0
  223. package/dist/utils/create-logger.d.ts +3 -0
  224. package/dist/utils/create-logger.d.ts.map +1 -0
  225. package/dist/utils/create-logger.js +38 -0
  226. package/dist/utils/create-logger.js.map +1 -0
  227. package/dist/utils/create-mappers.d.ts +3 -0
  228. package/dist/utils/create-mappers.d.ts.map +1 -0
  229. package/dist/utils/create-mappers.js +98 -0
  230. package/dist/utils/create-mappers.js.map +1 -0
  231. package/dist/utils/define-config.d.ts +3 -0
  232. package/dist/utils/define-config.d.ts.map +1 -0
  233. package/dist/utils/define-config.js +6 -0
  234. package/dist/utils/define-config.js.map +1 -0
  235. package/dist/utils/find-env-directories.d.ts +2 -0
  236. package/dist/utils/find-env-directories.d.ts.map +1 -0
  237. package/dist/utils/find-env-directories.js +84 -0
  238. package/dist/utils/find-env-directories.js.map +1 -0
  239. package/dist/utils/index.d.ts +12 -0
  240. package/dist/utils/index.d.ts.map +1 -0
  241. package/dist/utils/index.js +12 -0
  242. package/dist/utils/index.js.map +1 -0
  243. package/dist/utils/load-config.d.ts +6 -0
  244. package/dist/utils/load-config.d.ts.map +1 -0
  245. package/dist/utils/load-config.js +84 -0
  246. package/dist/utils/load-config.js.map +1 -0
  247. package/dist/utils/load-env.d.ts +3 -0
  248. package/dist/utils/load-env.d.ts.map +1 -0
  249. package/dist/utils/load-env.js +54 -0
  250. package/dist/utils/load-env.js.map +1 -0
  251. package/dist/utils/stripe-client.d.ts +3 -0
  252. package/dist/utils/stripe-client.d.ts.map +1 -0
  253. package/dist/utils/stripe-client.js +10 -0
  254. package/dist/utils/stripe-client.js.map +1 -0
  255. package/dist/utils/stripe-repository.d.ts +16 -0
  256. package/dist/utils/stripe-repository.d.ts.map +1 -0
  257. package/dist/utils/stripe-repository.js +73 -0
  258. package/dist/utils/stripe-repository.js.map +1 -0
  259. package/dist/utils/user-preferences.d.ts +10 -0
  260. package/dist/utils/user-preferences.d.ts.map +1 -0
  261. package/dist/utils/user-preferences.js +40 -0
  262. package/dist/utils/user-preferences.js.map +1 -0
  263. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-config.js","sourceRoot":"","sources":["../../src/utils/define-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO7C,MAAM,UAAU,YAAY,CAAC,MAAc;IAEzC,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function findEnvDirectories(cwd?: string): string[];
2
+ //# sourceMappingURL=find-env-directories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-env-directories.d.ts","sourceRoot":"","sources":["../../src/utils/find-env-directories.ts"],"names":[],"mappings":"AA6GA,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,EAAE,CAwBxE"}
@@ -0,0 +1,84 @@
1
+ import { execSync } from 'node:child_process';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ const WORKSPACE_INDICATORS = [
5
+ 'pnpm-workspace.yaml',
6
+ 'lerna.json',
7
+ 'nx.json',
8
+ 'turbo.json',
9
+ 'rush.json',
10
+ ];
11
+ function hasWorkspaceIndicators(dir) {
12
+ return WORKSPACE_INDICATORS.some((indicator) => fs.existsSync(path.join(dir, indicator)));
13
+ }
14
+ function hasMonorepoStructure(dir) {
15
+ const packageJsonPath = path.join(dir, 'package.json');
16
+ if (!fs.existsSync(packageJsonPath)) {
17
+ return false;
18
+ }
19
+ const commonDirs = ['packages', 'apps'];
20
+ for (const dirName of commonDirs) {
21
+ const dirPath = path.join(dir, dirName);
22
+ if (fs.existsSync(dirPath) &&
23
+ fs.statSync(dirPath).isDirectory() &&
24
+ hasPackageJsonInSubdirs(dirPath)) {
25
+ return true;
26
+ }
27
+ }
28
+ return false;
29
+ }
30
+ function hasPackageJsonInSubdirs(dir) {
31
+ const subdirs = fs.readdirSync(dir);
32
+ return subdirs.some((subdir) => {
33
+ const subdirPath = path.join(dir, subdir);
34
+ const subPackageJson = path.join(subdirPath, 'package.json');
35
+ return fs.existsSync(subPackageJson);
36
+ });
37
+ }
38
+ function detectWorkspaceRoot(startDir) {
39
+ let currentDir = startDir;
40
+ const maxDepth = 10;
41
+ let depth = 0;
42
+ while (depth < maxDepth) {
43
+ if (hasWorkspaceIndicators(currentDir) ||
44
+ hasMonorepoStructure(currentDir)) {
45
+ return currentDir;
46
+ }
47
+ const parentDir = path.dirname(currentDir);
48
+ if (parentDir === currentDir) {
49
+ break;
50
+ }
51
+ currentDir = parentDir;
52
+ depth++;
53
+ }
54
+ return null;
55
+ }
56
+ function getGitRoot() {
57
+ try {
58
+ const gitRoot = execSync('git rev-parse --show-toplevel', {
59
+ encoding: 'utf8',
60
+ stdio: 'pipe',
61
+ }).trim();
62
+ return gitRoot;
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ export function findEnvDirectories(cwd = process.cwd()) {
69
+ const directories = [];
70
+ directories.push(cwd);
71
+ const workspaceRoot = detectWorkspaceRoot(cwd);
72
+ if (workspaceRoot && workspaceRoot !== cwd) {
73
+ directories.push(workspaceRoot);
74
+ }
75
+ const gitRoot = getGitRoot();
76
+ if (gitRoot &&
77
+ fs.existsSync(gitRoot) &&
78
+ gitRoot !== cwd &&
79
+ gitRoot !== workspaceRoot) {
80
+ directories.push(gitRoot);
81
+ }
82
+ return directories;
83
+ }
84
+ //# sourceMappingURL=find-env-directories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-env-directories.js","sourceRoot":"","sources":["../../src/utils/find-env-directories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export * from '../definitions/index.js';
2
+ export * from './create-context.js';
3
+ export * from './create-logger.js';
4
+ export * from './create-mappers.js';
5
+ export * from './define-config.js';
6
+ export * from './find-env-directories.js';
7
+ export * from './load-config.js';
8
+ export * from './load-env.js';
9
+ export * from './stripe-client.js';
10
+ export * from './stripe-repository.js';
11
+ export * from './user-preferences.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from '../definitions/index.js';
2
+ export * from './create-context.js';
3
+ export * from './create-logger.js';
4
+ export * from './create-mappers.js';
5
+ export * from './define-config.js';
6
+ export * from './find-env-directories.js';
7
+ export * from './load-config.js';
8
+ export * from './load-env.js';
9
+ export * from './stripe-client.js';
10
+ export * from './stripe-repository.js';
11
+ export * from './user-preferences.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Config } from '../definitions/index.js';
2
+ export declare function discoverStripeConfig(): string | null;
3
+ export declare function loadConfig(input: {
4
+ configPath?: string;
5
+ }): Promise<Config>;
6
+ //# sourceMappingURL=load-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../src/utils/load-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAiC5C,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAgBpD;AAKD,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DlB"}
@@ -0,0 +1,84 @@
1
+ import fs from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import path from 'node:path';
4
+ import { z } from 'zod';
5
+ import { configSchema } from '../definitions/index.js';
6
+ const safeRegister = async () => {
7
+ const { register } = await import('esbuild-register/dist/node');
8
+ let res;
9
+ try {
10
+ res = register({
11
+ format: 'cjs',
12
+ loader: 'ts',
13
+ });
14
+ }
15
+ catch {
16
+ res = {
17
+ unregister: () => {
18
+ },
19
+ };
20
+ }
21
+ return res;
22
+ };
23
+ export function discoverStripeConfig() {
24
+ const configPatterns = [
25
+ 'stripe.config.ts',
26
+ 'stripe.config.js',
27
+ 'stripe.config.mjs',
28
+ 'stripe.config.cjs',
29
+ ];
30
+ const cwd = process.cwd();
31
+ for (const pattern of configPatterns) {
32
+ const configPath = path.join(cwd, pattern);
33
+ if (fs.existsSync(configPath)) {
34
+ return configPath;
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ export async function loadConfig(input) {
40
+ const { configPath } = input;
41
+ let resolvedConfigPath;
42
+ if (configPath) {
43
+ resolvedConfigPath = path.resolve(configPath);
44
+ }
45
+ else {
46
+ const discoveredConfig = discoverStripeConfig();
47
+ if (!discoveredConfig) {
48
+ console.error('❌ Error: No stripe.config.ts file found.');
49
+ console.error('Expected files: stripe.config.ts, stripe.config.js, stripe.config.mjs, or stripe.config.cjs');
50
+ console.error('Or specify a config file with --config flag');
51
+ console.error('');
52
+ console.error('Example stripe.config.ts:');
53
+ console.error(`import { defineConfig } from 'stripe-kit';`);
54
+ console.error('export default defineConfig({');
55
+ console.error(' plans: [...],');
56
+ console.error(' adapters: {...},');
57
+ console.error(' envFiles: {...}');
58
+ console.error('});');
59
+ process.exit(1);
60
+ }
61
+ resolvedConfigPath = discoveredConfig;
62
+ }
63
+ if (!fs.existsSync(resolvedConfigPath)) {
64
+ throw new Error(`Stripe config file not found at: ${resolvedConfigPath}`);
65
+ }
66
+ try {
67
+ const absolutePath = path.resolve(resolvedConfigPath);
68
+ const { unregister } = await safeRegister();
69
+ const require = createRequire(import.meta.url);
70
+ const required = require(absolutePath);
71
+ const config = required.default ?? required;
72
+ unregister();
73
+ const validatedConfig = configSchema.parse(config);
74
+ return validatedConfig;
75
+ }
76
+ catch (error) {
77
+ if (error instanceof z.ZodError) {
78
+ const errorMessages = error.issues.map((err) => `${err.path.join('.')}: ${err.message}`);
79
+ throw new Error(`Invalid stripe config file:\n${errorMessages.join('\n')}`);
80
+ }
81
+ throw new Error(`Failed to load stripe config file: ${error}`);
82
+ }
83
+ }
84
+ //# sourceMappingURL=load-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/utils/load-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { EnvironmentKey } from '../definitions/index.js';
2
+ export declare function loadEnvironment(env: EnvironmentKey): void;
3
+ //# sourceMappingURL=load-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../../src/utils/load-env.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA8BrD,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CA+CzD"}
@@ -0,0 +1,54 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import chalk from 'chalk';
4
+ import dotenv from 'dotenv';
5
+ import { findEnvDirectories } from './find-env-directories.js';
6
+ function getEnvFilePatterns(env) {
7
+ const patterns = {
8
+ dev: [
9
+ '.env.dev.local',
10
+ '.env.development.local',
11
+ '.env.dev',
12
+ '.env.development',
13
+ ],
14
+ test: ['.env.test.local', '.env.test'],
15
+ staging: ['.env.staging.local', '.env.staging'],
16
+ prod: [
17
+ '.env.prod.local',
18
+ '.env.production.local',
19
+ '.env.prod',
20
+ '.env.production',
21
+ ],
22
+ };
23
+ return patterns[env] || [`.env.${env}.local`, `.env.${env}`];
24
+ }
25
+ export function loadEnvironment(env) {
26
+ const searchDirectories = findEnvDirectories();
27
+ const envPatterns = getEnvFilePatterns(env);
28
+ const loadedFiles = [];
29
+ const searchedDirs = [];
30
+ for (const directory of searchDirectories) {
31
+ searchedDirs.push(path.relative(process.cwd(), directory) || '.');
32
+ for (const pattern of envPatterns) {
33
+ const envPath = path.join(directory, pattern);
34
+ if (fs.existsSync(envPath)) {
35
+ const relativePath = path.relative(process.cwd(), envPath);
36
+ console.log(chalk.blue(`Loading environment from: ${chalk.bold(relativePath)}`));
37
+ dotenv.config({ path: envPath, override: false });
38
+ loadedFiles.push(relativePath);
39
+ }
40
+ }
41
+ if (loadedFiles.length > 0) {
42
+ break;
43
+ }
44
+ }
45
+ if (loadedFiles.length === 0) {
46
+ console.warn(chalk.yellow(`⚠️ No environment files found for environment: ${env}`));
47
+ console.log(chalk.gray(`Searched in: ${searchedDirs.join(', ')}`));
48
+ console.log(chalk.gray(`Expected files: ${envPatterns.join(', ')}`));
49
+ }
50
+ else {
51
+ console.log(chalk.green(`✅ Loaded ${loadedFiles.length} environment file(s) for: ${env}`));
52
+ }
53
+ }
54
+ //# sourceMappingURL=load-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-env.js","sourceRoot":"","sources":["../../src/utils/load-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAK5D,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,QAAQ,GAA6B;QACzC,GAAG,EAAE;YACH,gBAAgB;YAChB,wBAAwB;YACxB,UAAU;YACV,kBAAkB;SACnB;QACD,IAAI,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC;QACtC,OAAO,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC;QAC/C,IAAI,EAAE;YACJ,iBAAiB;YACjB,uBAAuB;YACvB,WAAW;YACX,iBAAiB;SAClB;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;AAC/D,CAAC;AAKD,MAAM,UAAU,eAAe,CAAC,GAAmB;IAEjD,MAAM,iBAAiB,GAAG,kBAAkB,EAAE,CAAC;IAG/C,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,YAAY,GAAa,EAAE,CAAC;IAGlC,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QAElE,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE9C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC3D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,6BAA6B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CACpE,CAAC;gBAEF,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAGD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CAAC,mDAAmD,GAAG,EAAE,CAAC,CACvE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,YAAY,WAAW,CAAC,MAAM,6BAA6B,GAAG,EAAE,CACjE,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import Stripe from 'stripe';
2
+ export declare function createStripeClient(env: Record<string, string | undefined>): Stripe;
3
+ //# sourceMappingURL=stripe-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-client.d.ts","sourceRoot":"","sources":["../../src/utils/stripe-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,CAQR"}
@@ -0,0 +1,10 @@
1
+ import Stripe from 'stripe';
2
+ export function createStripeClient(env) {
3
+ if (!env.STRIPE_SECRET_KEY) {
4
+ throw new Error('STRIPE_SECRET_KEY is required');
5
+ }
6
+ return new Stripe(env.STRIPE_SECRET_KEY, {
7
+ apiVersion: '2025-07-30.basil',
8
+ });
9
+ }
10
+ //# sourceMappingURL=stripe-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-client.js","sourceRoot":"","sources":["../../src/utils/stripe-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,kBAAkB,CAChC,GAAuC;IAEvC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE;QACvC,UAAU,EAAE,kBAAkB;KAC/B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type Stripe from 'stripe';
2
+ import type { Context } from '../definitions/index.js';
3
+ export declare function findStripeProduct(ctx: Context, input: {
4
+ internalProductId: string;
5
+ }): Promise<Stripe.Product | null>;
6
+ export declare function findStripePrice(ctx: Context, input: {
7
+ internalPriceId: string;
8
+ stripeProductId: string;
9
+ }): Promise<Stripe.Price | null>;
10
+ export declare function listStripeProducts(ctx: Context, options?: {
11
+ showAll?: boolean;
12
+ }): Promise<Stripe.Product[]>;
13
+ export declare function listStripePrices(ctx: Context, options?: {
14
+ showAll?: boolean;
15
+ }): Promise<Stripe.Price[]>;
16
+ //# sourceMappingURL=stripe-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-repository.d.ts","sourceRoot":"","sources":["../../src/utils/stripe-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAO7C,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAWhC;AAGD,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAW9B;AAOD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAqC3B;AAGD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAqCzB"}
@@ -0,0 +1,73 @@
1
+ export async function findStripeProduct(ctx, input) {
2
+ const { internalProductId } = input;
3
+ const { metadata } = ctx.config;
4
+ const searchResult = await ctx.stripeClient.products.search({
5
+ query: `metadata['${metadata.productIdField}']:'${internalProductId}' AND metadata['${metadata.managedByField}']:'${metadata.managedByValue}' AND active:'true'`,
6
+ limit: 1,
7
+ });
8
+ const product = searchResult.data.length > 0 ? searchResult.data[0] : null;
9
+ return product ? product : null;
10
+ }
11
+ export async function findStripePrice(ctx, input) {
12
+ const { internalPriceId, stripeProductId } = input;
13
+ const { metadata } = ctx.config;
14
+ const searchResult = await ctx.stripeClient.prices.search({
15
+ query: `product:'${stripeProductId}' AND metadata['${metadata.priceIdField}']:'${internalPriceId}' AND metadata['${metadata.managedByField}']:'${metadata.managedByValue}' AND active:'true'`,
16
+ limit: 1,
17
+ });
18
+ const price = searchResult.data.length > 0 && searchResult.data[0];
19
+ return price ? price : null;
20
+ }
21
+ export async function listStripeProducts(ctx, options = {}) {
22
+ const { showAll = false } = options;
23
+ ctx.logger.info(`Fetching ${showAll ? 'all' : 'managed'} products from Stripe...`);
24
+ let hasMore = true;
25
+ let startingAfter;
26
+ let allStripeProducts = [];
27
+ while (hasMore) {
28
+ const response = await ctx.stripeClient.products.list({
29
+ limit: 100,
30
+ starting_after: startingAfter,
31
+ });
32
+ let productsToInclude;
33
+ if (showAll) {
34
+ productsToInclude = response.data;
35
+ }
36
+ else {
37
+ productsToInclude = response.data.filter((product) => product.metadata?.[ctx.config.metadata.productIdField] &&
38
+ product.metadata?.[ctx.config.metadata.managedByField] ===
39
+ ctx.config.metadata.managedByValue);
40
+ }
41
+ allStripeProducts = [...allStripeProducts, ...productsToInclude];
42
+ hasMore = response.has_more;
43
+ startingAfter = response.data.at(-1)?.id;
44
+ }
45
+ return allStripeProducts;
46
+ }
47
+ export async function listStripePrices(ctx, options = {}) {
48
+ const { showAll = false } = options;
49
+ ctx.logger.info(`Fetching ${showAll ? 'all' : 'managed'} prices from Stripe...`);
50
+ let hasMore = true;
51
+ let startingAfter;
52
+ let allStripePrices = [];
53
+ while (hasMore) {
54
+ const response = await ctx.stripeClient.prices.list({
55
+ limit: 100,
56
+ starting_after: startingAfter,
57
+ });
58
+ let pricesToInclude;
59
+ if (showAll) {
60
+ pricesToInclude = response.data;
61
+ }
62
+ else {
63
+ pricesToInclude = response.data.filter((price) => price.metadata?.[ctx.config.metadata.priceIdField] &&
64
+ price.metadata?.[ctx.config.metadata.managedByField] ===
65
+ ctx.config.metadata.managedByValue);
66
+ }
67
+ allStripePrices = [...allStripePrices, ...pricesToInclude];
68
+ hasMore = response.has_more;
69
+ startingAfter = response.data.at(-1)?.id;
70
+ }
71
+ return allStripePrices;
72
+ }
73
+ //# sourceMappingURL=stripe-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-repository.js","sourceRoot":"","sources":["../../src/utils/stripe-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { EnvironmentKey } from '../definitions/index.js';
2
+ export interface UserPreferences {
3
+ defaultEnvironment?: EnvironmentKey;
4
+ defaultAdapter?: string;
5
+ }
6
+ export declare function loadUserPreferences(): UserPreferences;
7
+ export declare function saveUserPreference<K extends keyof UserPreferences>(key: K, value: UserPreferences[K]): void;
8
+ export declare function getLastUsedEnvironment(): EnvironmentKey | undefined;
9
+ export declare function getLastUsedAdapter(): string | undefined;
10
+ //# sourceMappingURL=user-preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-preferences.d.ts","sourceRoot":"","sources":["../../src/utils/user-preferences.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,wBAAgB,mBAAmB,IAAI,eAAe,CAYrD;AAID,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,eAAe,EAChE,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,IAAI,CAmBN;AAID,wBAAgB,sBAAsB,IAAI,cAAc,GAAG,SAAS,CAGnE;AAID,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAGvD"}
@@ -0,0 +1,40 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ const CONFIG_DIR = join(homedir(), '.config', '@makeco', 'stripe-kit');
5
+ const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
6
+ export function loadUserPreferences() {
7
+ try {
8
+ if (!existsSync(CONFIG_FILE)) {
9
+ return {};
10
+ }
11
+ const content = readFileSync(CONFIG_FILE, 'utf-8');
12
+ return JSON.parse(content);
13
+ }
14
+ catch {
15
+ console.warn('Warning: Could not load user preferences, using defaults');
16
+ return {};
17
+ }
18
+ }
19
+ export function saveUserPreference(key, value) {
20
+ try {
21
+ if (!existsSync(CONFIG_DIR)) {
22
+ mkdirSync(CONFIG_DIR, { recursive: true });
23
+ }
24
+ const preferences = loadUserPreferences();
25
+ preferences[key] = value;
26
+ writeFileSync(CONFIG_FILE, JSON.stringify(preferences, null, 2));
27
+ }
28
+ catch {
29
+ console.warn(`Warning: Could not save user preference ${key}`);
30
+ }
31
+ }
32
+ export function getLastUsedEnvironment() {
33
+ const preferences = loadUserPreferences();
34
+ return preferences.defaultEnvironment;
35
+ }
36
+ export function getLastUsedAdapter() {
37
+ const preferences = loadUserPreferences();
38
+ return preferences.defaultAdapter;
39
+ }
40
+ //# sourceMappingURL=user-preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-preferences.js","sourceRoot":"","sources":["../../src/utils/user-preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AACvE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAQpD,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAID,MAAM,UAAU,kBAAkB,CAChC,GAAM,EACN,KAAyB;IAEzB,IAAI,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAGD,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;QAG1C,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAGzB,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,CAAC,IAAI,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAID,MAAM,UAAU,sBAAsB;IACpC,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,OAAO,WAAW,CAAC,kBAAkB,CAAC;AACxC,CAAC;AAID,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,OAAO,WAAW,CAAC,cAAc,CAAC;AACpC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,84 @@
1
+ {
2
+ "name": "@makeco/stripe-kit",
3
+ "version": "0.1.0",
4
+ "author": "makeco",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/makeco-labs/stripe-kit.git"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "module": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "bin": {
13
+ "stripe-kit": "./dist/cli.js"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js",
19
+ "require": "./dist/index.js"
20
+ }
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/makeco-labs/stripe-kit/issues"
24
+ },
25
+ "description": "An unofficial CLI tool for creating, archiving, updating Stripe products and prices and syncing them to your database.",
26
+ "files": [
27
+ "dist",
28
+ "README.md",
29
+ "LICENSE",
30
+ "package.json"
31
+ ],
32
+ "homepage": "https://github.com/makeco-labs/stripe-kit",
33
+ "keywords": [
34
+ "stripe",
35
+ "billing",
36
+ "subscription",
37
+ "cli",
38
+ "payments",
39
+ "typescript",
40
+ "saas"
41
+ ],
42
+ "license": "MIT",
43
+ "private": false,
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "scripts": {
48
+ "clean": "rm -rf dist",
49
+ "typecheck": "tsc --noEmit -p tsconfig.json",
50
+ "build": "bun clean && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && chmod +x dist/cli.js",
51
+ "dev": "tsc -p tsconfig.build.json --watch",
52
+ "dev:typecheck": "bun typecheck --watch --preserveWatchOutput",
53
+ "lint": "npx ultracite@latest lint",
54
+ "format": "bunx ultracite@latest format",
55
+ "test": "vitest",
56
+ "ci": "bun lint && bun typecheck && bun format && bun run build",
57
+ "git": "bun ci && git add . && git commit -m",
58
+ "postgit": "git push --all"
59
+ },
60
+ "devDependencies": {
61
+ "@types/better-sqlite3": "^7.6.13",
62
+ "@types/node": "^20.0.0",
63
+ "@types/prompts": "^2.4.9",
64
+ "better-sqlite3": "^12.2.0",
65
+ "eslint": "^9.29.0",
66
+ "tsc-alias": "^1.8.16",
67
+ "typescript": "^5.8.3",
68
+ "ultracite": "^5.1.2",
69
+ "vitest": "^3.2.4"
70
+ },
71
+ "type": "module",
72
+ "dependencies": {
73
+ "chalk": "^5.2.0",
74
+ "commander": "^12.1.0",
75
+ "dotenv": "^16.0.3",
76
+ "esbuild-register": "^3.6.0",
77
+ "prompts": "^2.4.2",
78
+ "stripe": "^18.4.0",
79
+ "zod": "^4.0.14"
80
+ },
81
+ "peerDependencies": {
82
+ "drizzle-orm": "^0.44.4"
83
+ }
84
+ }