@skillsmith/core 0.4.15 → 0.4.17

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 (221) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +57 -2
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/analysis/DependencyMerger.d.ts +39 -0
  5. package/dist/src/analysis/DependencyMerger.d.ts.map +1 -0
  6. package/dist/src/analysis/DependencyMerger.js +191 -0
  7. package/dist/src/analysis/DependencyMerger.js.map +1 -0
  8. package/dist/src/analysis/DependencyMerger.test.d.ts +2 -0
  9. package/dist/src/analysis/DependencyMerger.test.d.ts.map +1 -0
  10. package/dist/src/analysis/DependencyMerger.test.js +258 -0
  11. package/dist/src/analysis/DependencyMerger.test.js.map +1 -0
  12. package/dist/src/analysis/McpReferenceExtractor.d.ts +42 -0
  13. package/dist/src/analysis/McpReferenceExtractor.d.ts.map +1 -0
  14. package/dist/src/analysis/McpReferenceExtractor.js +92 -0
  15. package/dist/src/analysis/McpReferenceExtractor.js.map +1 -0
  16. package/dist/src/analysis/McpReferenceExtractor.test.d.ts +2 -0
  17. package/dist/src/analysis/McpReferenceExtractor.test.d.ts.map +1 -0
  18. package/dist/src/analysis/McpReferenceExtractor.test.js +262 -0
  19. package/dist/src/analysis/McpReferenceExtractor.test.js.map +1 -0
  20. package/dist/src/api/client.d.ts +2 -0
  21. package/dist/src/api/client.d.ts.map +1 -1
  22. package/dist/src/api/client.js.map +1 -1
  23. package/dist/src/db/drivers/sqljsDriver.d.ts.map +1 -1
  24. package/dist/src/db/drivers/sqljsDriver.js +4 -8
  25. package/dist/src/db/drivers/sqljsDriver.js.map +1 -1
  26. package/dist/src/db/migrations/v10-dependencies.d.ts +18 -0
  27. package/dist/src/db/migrations/v10-dependencies.d.ts.map +1 -0
  28. package/dist/src/db/migrations/v10-dependencies.js +50 -0
  29. package/dist/src/db/migrations/v10-dependencies.js.map +1 -0
  30. package/dist/src/db/migrations/v2-phase5-columns.d.ts +7 -0
  31. package/dist/src/db/migrations/v2-phase5-columns.d.ts.map +1 -0
  32. package/dist/src/db/migrations/v2-phase5-columns.js +16 -0
  33. package/dist/src/db/migrations/v2-phase5-columns.js.map +1 -0
  34. package/dist/src/db/migrations/v3-sync-tables.d.ts +6 -0
  35. package/dist/src/db/migrations/v3-sync-tables.d.ts.map +1 -0
  36. package/dist/src/db/migrations/v3-sync-tables.js +41 -0
  37. package/dist/src/db/migrations/v3-sync-tables.js.map +1 -0
  38. package/dist/src/db/migrations/v4-security-columns.d.ts +7 -0
  39. package/dist/src/db/migrations/v4-security-columns.d.ts.map +1 -0
  40. package/dist/src/db/migrations/v4-security-columns.js +17 -0
  41. package/dist/src/db/migrations/v4-security-columns.js.map +1 -0
  42. package/dist/src/db/schema.d.ts +2 -2
  43. package/dist/src/db/schema.d.ts.map +1 -1
  44. package/dist/src/db/schema.js +20 -58
  45. package/dist/src/db/schema.js.map +1 -1
  46. package/dist/src/embeddings/hnsw-store.d.ts +1 -1
  47. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -1
  48. package/dist/src/embeddings/hnsw-store.js +4 -34
  49. package/dist/src/embeddings/hnsw-store.js.map +1 -1
  50. package/dist/src/embeddings/hnsw-store.types.d.ts +18 -0
  51. package/dist/src/embeddings/hnsw-store.types.d.ts.map +1 -1
  52. package/dist/src/embeddings/hnsw-store.types.js.map +1 -1
  53. package/dist/src/exports/repositories.d.ts +1 -0
  54. package/dist/src/exports/repositories.d.ts.map +1 -1
  55. package/dist/src/exports/repositories.js +4 -0
  56. package/dist/src/exports/repositories.js.map +1 -1
  57. package/dist/src/exports/services.d.ts +5 -0
  58. package/dist/src/exports/services.d.ts.map +1 -1
  59. package/dist/src/exports/services.js +11 -0
  60. package/dist/src/exports/services.js.map +1 -1
  61. package/dist/src/exports/types.d.ts +1 -0
  62. package/dist/src/exports/types.d.ts.map +1 -1
  63. package/dist/src/exports/types.js.map +1 -1
  64. package/dist/src/index.d.ts +1 -1
  65. package/dist/src/index.d.ts.map +1 -1
  66. package/dist/src/index.js +1 -1
  67. package/dist/src/index.js.map +1 -1
  68. package/dist/src/indexer/GitHubIndexer.d.ts +3 -1
  69. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  70. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  71. package/dist/src/indexer/SkillParser.d.ts +20 -9
  72. package/dist/src/indexer/SkillParser.d.ts.map +1 -1
  73. package/dist/src/indexer/SkillParser.js +17 -10
  74. package/dist/src/indexer/SkillParser.js.map +1 -1
  75. package/dist/src/learning/PatternStore.d.ts.map +1 -1
  76. package/dist/src/learning/PatternStore.js +2 -9
  77. package/dist/src/learning/PatternStore.js.map +1 -1
  78. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  79. package/dist/src/repositories/IndexerRepository.js +5 -1
  80. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  81. package/dist/src/repositories/SkillDependencyRepository.d.ts +73 -0
  82. package/dist/src/repositories/SkillDependencyRepository.d.ts.map +1 -0
  83. package/dist/src/repositories/SkillDependencyRepository.js +199 -0
  84. package/dist/src/repositories/SkillDependencyRepository.js.map +1 -0
  85. package/dist/src/routing/SONARouter.d.ts.map +1 -1
  86. package/dist/src/routing/SONARouter.js +4 -15
  87. package/dist/src/routing/SONARouter.js.map +1 -1
  88. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
  89. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  90. package/dist/src/security/scanner/SecurityScanner.d.ts +4 -2
  91. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  92. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts +24 -2
  93. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
  94. package/dist/src/security/scanner/SecurityScanner.helpers.js +99 -3
  95. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
  96. package/dist/src/security/scanner/SecurityScanner.js +29 -90
  97. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  98. package/dist/src/security/scanner/SecurityScanner.ssrf.d.ts +15 -0
  99. package/dist/src/security/scanner/SecurityScanner.ssrf.d.ts.map +1 -0
  100. package/dist/src/security/scanner/SecurityScanner.ssrf.js +76 -0
  101. package/dist/src/security/scanner/SecurityScanner.ssrf.js.map +1 -0
  102. package/dist/src/security/scanner/index.d.ts +1 -1
  103. package/dist/src/security/scanner/index.d.ts.map +1 -1
  104. package/dist/src/security/scanner/index.js +1 -1
  105. package/dist/src/security/scanner/index.js.map +1 -1
  106. package/dist/src/security/scanner/patterns.d.ts +6 -0
  107. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  108. package/dist/src/security/scanner/patterns.js +32 -0
  109. package/dist/src/security/scanner/patterns.js.map +1 -1
  110. package/dist/src/security/scanner/types.d.ts +2 -1
  111. package/dist/src/security/scanner/types.d.ts.map +1 -1
  112. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  113. package/dist/src/security/scanner/weights.js +1 -0
  114. package/dist/src/security/scanner/weights.js.map +1 -1
  115. package/dist/src/services/skill-installation.helpers.d.ts +62 -0
  116. package/dist/src/services/skill-installation.helpers.d.ts.map +1 -0
  117. package/dist/src/services/skill-installation.helpers.js +335 -0
  118. package/dist/src/services/skill-installation.helpers.js.map +1 -0
  119. package/dist/src/services/skill-installation.service.d.ts +45 -0
  120. package/dist/src/services/skill-installation.service.d.ts.map +1 -0
  121. package/dist/src/services/skill-installation.service.js +383 -0
  122. package/dist/src/services/skill-installation.service.js.map +1 -0
  123. package/dist/src/services/skill-installation.types.d.ts +144 -0
  124. package/dist/src/services/skill-installation.types.d.ts.map +1 -0
  125. package/dist/src/services/skill-installation.types.js +38 -0
  126. package/dist/src/services/skill-installation.types.js.map +1 -0
  127. package/dist/src/services/skill-manifest.d.ts +20 -0
  128. package/dist/src/services/skill-manifest.d.ts.map +1 -0
  129. package/dist/src/services/skill-manifest.js +84 -0
  130. package/dist/src/services/skill-manifest.js.map +1 -0
  131. package/dist/src/session/SessionManager.helpers.d.ts +1 -27
  132. package/dist/src/session/SessionManager.helpers.d.ts.map +1 -1
  133. package/dist/src/session/SessionManager.helpers.js +0 -64
  134. package/dist/src/session/SessionManager.helpers.js.map +1 -1
  135. package/dist/src/session/SessionManager.memory.d.ts +12 -11
  136. package/dist/src/session/SessionManager.memory.d.ts.map +1 -1
  137. package/dist/src/session/SessionManager.memory.js +23 -115
  138. package/dist/src/session/SessionManager.memory.js.map +1 -1
  139. package/dist/src/session/SessionManager.types.d.ts +0 -37
  140. package/dist/src/session/SessionManager.types.d.ts.map +1 -1
  141. package/dist/src/session/SessionManager.types.js.map +1 -1
  142. package/dist/src/session/SessionRecovery.js +4 -4
  143. package/dist/src/session/SessionRecovery.js.map +1 -1
  144. package/dist/src/sources/SourceIndexer.d.ts +3 -1
  145. package/dist/src/sources/SourceIndexer.d.ts.map +1 -1
  146. package/dist/src/sources/SourceIndexer.js.map +1 -1
  147. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -1
  148. package/dist/src/testing/MultiLLMProvider.js +5 -19
  149. package/dist/src/testing/MultiLLMProvider.js.map +1 -1
  150. package/dist/src/types/dependencies.d.ts +85 -0
  151. package/dist/src/types/dependencies.d.ts.map +1 -0
  152. package/dist/src/types/dependencies.js +11 -0
  153. package/dist/src/types/dependencies.js.map +1 -0
  154. package/dist/src/types/skill.d.ts +3 -0
  155. package/dist/src/types/skill.d.ts.map +1 -1
  156. package/dist/src/types/skill.js.map +1 -1
  157. package/dist/src/types.d.ts +2 -0
  158. package/dist/src/types.d.ts.map +1 -1
  159. package/dist/tests/DailyIndexPipeline.test.js +3 -3
  160. package/dist/tests/DailyIndexPipeline.test.js.map +1 -1
  161. package/dist/tests/GitHubIndexer.test.js +4 -2
  162. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  163. package/dist/tests/billing/StripeClient.test.d.ts +18 -0
  164. package/dist/tests/billing/StripeClient.test.d.ts.map +1 -0
  165. package/dist/tests/billing/StripeClient.test.js +566 -0
  166. package/dist/tests/billing/StripeClient.test.js.map +1 -0
  167. package/dist/tests/billing/StripeWebhookHandler.test.d.ts +16 -0
  168. package/dist/tests/billing/StripeWebhookHandler.test.d.ts.map +1 -0
  169. package/dist/tests/billing/StripeWebhookHandler.test.js +240 -0
  170. package/dist/tests/billing/StripeWebhookHandler.test.js.map +1 -0
  171. package/dist/tests/billing/stripe-helpers.test.d.ts +7 -0
  172. package/dist/tests/billing/stripe-helpers.test.d.ts.map +1 -0
  173. package/dist/tests/billing/stripe-helpers.test.js +91 -0
  174. package/dist/tests/billing/stripe-helpers.test.js.map +1 -0
  175. package/dist/tests/billing/webhook-handlers.test.d.ts +16 -0
  176. package/dist/tests/billing/webhook-handlers.test.d.ts.map +1 -0
  177. package/dist/tests/billing/webhook-handlers.test.js +519 -0
  178. package/dist/tests/billing/webhook-handlers.test.js.map +1 -0
  179. package/dist/tests/db/migration.test.d.ts +11 -0
  180. package/dist/tests/db/migration.test.d.ts.map +1 -0
  181. package/dist/tests/db/migration.test.js +265 -0
  182. package/dist/tests/db/migration.test.js.map +1 -0
  183. package/dist/tests/edge-cases/EdgeCases.test.js +4 -1
  184. package/dist/tests/edge-cases/EdgeCases.test.js.map +1 -1
  185. package/dist/tests/repositories/SkillDependencyRepository.test.d.ts +10 -0
  186. package/dist/tests/repositories/SkillDependencyRepository.test.d.ts.map +1 -0
  187. package/dist/tests/repositories/SkillDependencyRepository.test.js +336 -0
  188. package/dist/tests/repositories/SkillDependencyRepository.test.js.map +1 -0
  189. package/dist/tests/security/ContinuousSecurity.test.js +2 -2
  190. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  191. package/dist/tests/security.test.js +200 -0
  192. package/dist/tests/security.test.js.map +1 -1
  193. package/dist/tests/session/SessionManager.helpers.test.js +1 -9
  194. package/dist/tests/session/SessionManager.helpers.test.js.map +1 -1
  195. package/dist/tests/session/SessionManager.memory.test.d.ts +3 -4
  196. package/dist/tests/session/SessionManager.memory.test.d.ts.map +1 -1
  197. package/dist/tests/session/SessionManager.memory.test.js +41 -123
  198. package/dist/tests/session/SessionManager.memory.test.js.map +1 -1
  199. package/dist/tests/sources.test.js +1 -1
  200. package/dist/tests/sources.test.js.map +1 -1
  201. package/dist/tests/sync/BackgroundSyncService.test.d.ts +13 -0
  202. package/dist/tests/sync/BackgroundSyncService.test.d.ts.map +1 -0
  203. package/dist/tests/sync/BackgroundSyncService.test.js +259 -0
  204. package/dist/tests/sync/BackgroundSyncService.test.js.map +1 -0
  205. package/dist/tests/testkit.d.ts +14 -0
  206. package/dist/tests/testkit.d.ts.map +1 -0
  207. package/dist/tests/testkit.js +14 -0
  208. package/dist/tests/testkit.js.map +1 -0
  209. package/dist/tests/unit/migrations/v10-dependencies.test.d.ts +6 -0
  210. package/dist/tests/unit/migrations/v10-dependencies.test.d.ts.map +1 -0
  211. package/dist/tests/unit/migrations/v10-dependencies.test.js +166 -0
  212. package/dist/tests/unit/migrations/v10-dependencies.test.js.map +1 -0
  213. package/dist/tests/unit/services/skill-installation.service.test.d.ts +8 -0
  214. package/dist/tests/unit/services/skill-installation.service.test.d.ts.map +1 -0
  215. package/dist/tests/unit/services/skill-installation.service.test.js +732 -0
  216. package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -0
  217. package/package.json +19 -7
  218. package/dist/vitest.config.d.ts +0 -3
  219. package/dist/vitest.config.d.ts.map +0 -1
  220. package/dist/vitest.config.js +0 -13
  221. package/dist/vitest.config.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubIndexer.test.js","sourceRoot":"","sources":["../../tests/GitHubIndexer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitHubIndexer.test.js","sourceRoot":"","sources":["../../tests/GitHubIndexer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SMI-3415: StripeClient Tests
3
+ *
4
+ * Tests for StripeClient wrapper including:
5
+ * - Constructor initialization
6
+ * - Customer management (create, get, update)
7
+ * - Checkout session creation
8
+ * - Subscription management (get, list, update, cancel, reactivate)
9
+ * - Portal session creation
10
+ * - Invoice management (list, get, upcoming)
11
+ * - Webhook signature verification
12
+ * - Price ID resolution
13
+ * - Static mapSubscriptionStatus delegation
14
+ *
15
+ * All Stripe SDK calls are mocked — no real API calls.
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=StripeClient.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StripeClient.test.d.ts","sourceRoot":"","sources":["../../../tests/billing/StripeClient.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,566 @@
1
+ /**
2
+ * SMI-3415: StripeClient Tests
3
+ *
4
+ * Tests for StripeClient wrapper including:
5
+ * - Constructor initialization
6
+ * - Customer management (create, get, update)
7
+ * - Checkout session creation
8
+ * - Subscription management (get, list, update, cancel, reactivate)
9
+ * - Portal session creation
10
+ * - Invoice management (list, get, upcoming)
11
+ * - Webhook signature verification
12
+ * - Price ID resolution
13
+ * - Static mapSubscriptionStatus delegation
14
+ *
15
+ * All Stripe SDK calls are mocked — no real API calls.
16
+ */
17
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
18
+ // ============================================================================
19
+ // Mock Stripe SDK before importing StripeClient
20
+ // ============================================================================
21
+ const mockCustomerCreate = vi.fn();
22
+ const mockCustomerRetrieve = vi.fn();
23
+ const mockCustomerUpdate = vi.fn();
24
+ const mockSubRetrieve = vi.fn();
25
+ const mockSubList = vi.fn();
26
+ const mockSubUpdate = vi.fn();
27
+ const mockSubCancel = vi.fn();
28
+ const mockConstructEvent = vi.fn();
29
+ const mockSessionCreate = vi.fn();
30
+ const mockSessionRetrieve = vi.fn();
31
+ const mockPortalCreate = vi.fn();
32
+ const mockInvoiceList = vi.fn();
33
+ const mockInvoiceRetrieve = vi.fn();
34
+ const mockInvoiceCreatePreview = vi.fn();
35
+ vi.mock('stripe', () => {
36
+ class MockStripeError extends Error {
37
+ code;
38
+ constructor(message, code) {
39
+ super(message);
40
+ this.code = code;
41
+ }
42
+ }
43
+ class MockStripe {
44
+ customers = {
45
+ create: mockCustomerCreate,
46
+ retrieve: mockCustomerRetrieve,
47
+ update: mockCustomerUpdate,
48
+ };
49
+ checkout = {
50
+ sessions: {
51
+ create: mockSessionCreate,
52
+ retrieve: mockSessionRetrieve,
53
+ },
54
+ };
55
+ subscriptions = {
56
+ retrieve: mockSubRetrieve,
57
+ list: mockSubList,
58
+ update: mockSubUpdate,
59
+ cancel: mockSubCancel,
60
+ };
61
+ billingPortal = {
62
+ sessions: {
63
+ create: mockPortalCreate,
64
+ },
65
+ };
66
+ invoices = {
67
+ list: mockInvoiceList,
68
+ retrieve: mockInvoiceRetrieve,
69
+ createPreview: mockInvoiceCreatePreview,
70
+ };
71
+ webhooks = {
72
+ constructEvent: mockConstructEvent,
73
+ };
74
+ static errors = {
75
+ StripeError: MockStripeError,
76
+ };
77
+ }
78
+ return { default: MockStripe };
79
+ });
80
+ // Import after mock
81
+ import { StripeClient } from '../../src/billing/StripeClient.js';
82
+ // ============================================================================
83
+ // Test Fixtures
84
+ // ============================================================================
85
+ function createTestPrices() {
86
+ return {
87
+ individual: {
88
+ monthly: 'price_ind_monthly',
89
+ annual: 'price_ind_annual',
90
+ },
91
+ team: {
92
+ monthly: 'price_team_monthly',
93
+ annual: 'price_team_annual',
94
+ },
95
+ enterprise: {
96
+ monthly: 'price_ent_monthly',
97
+ annual: 'price_ent_annual',
98
+ },
99
+ };
100
+ }
101
+ function createClient() {
102
+ return new StripeClient({
103
+ secretKey: 'sk_test_fake',
104
+ webhookSecret: 'whsec_test_fake',
105
+ prices: createTestPrices(),
106
+ appUrl: 'https://test.skillsmith.app',
107
+ });
108
+ }
109
+ // ============================================================================
110
+ // Tests
111
+ // ============================================================================
112
+ describe('StripeClient', () => {
113
+ let client;
114
+ beforeEach(() => {
115
+ vi.clearAllMocks();
116
+ client = createClient();
117
+ });
118
+ // --------------------------------------------------------------------------
119
+ // Constructor
120
+ // --------------------------------------------------------------------------
121
+ describe('constructor', () => {
122
+ it('should initialize with provided config', () => {
123
+ expect(client).toBeDefined();
124
+ });
125
+ it('should default appUrl to skillsmith.app', () => {
126
+ const c = new StripeClient({
127
+ secretKey: 'sk_test_fake',
128
+ webhookSecret: 'whsec_test_fake',
129
+ prices: createTestPrices(),
130
+ });
131
+ expect(c).toBeDefined();
132
+ });
133
+ });
134
+ // --------------------------------------------------------------------------
135
+ // Customer Management
136
+ // --------------------------------------------------------------------------
137
+ describe('createCustomer', () => {
138
+ it('should create a customer and return ID', async () => {
139
+ mockCustomerCreate.mockResolvedValueOnce({ id: 'cus_test123' });
140
+ const result = await client.createCustomer({
141
+ email: 'test@example.com',
142
+ name: 'Test User',
143
+ });
144
+ expect(result).toBe('cus_test123');
145
+ expect(mockCustomerCreate).toHaveBeenCalledWith(expect.objectContaining({
146
+ email: 'test@example.com',
147
+ name: 'Test User',
148
+ metadata: expect.objectContaining({ source: 'skillsmith' }),
149
+ }));
150
+ });
151
+ it('should merge custom metadata with source', async () => {
152
+ mockCustomerCreate.mockResolvedValueOnce({ id: 'cus_test456' });
153
+ await client.createCustomer({
154
+ email: 'test@example.com',
155
+ metadata: { org: 'acme' },
156
+ });
157
+ expect(mockCustomerCreate).toHaveBeenCalledWith(expect.objectContaining({
158
+ metadata: { org: 'acme', source: 'skillsmith' },
159
+ }));
160
+ });
161
+ it('should throw BillingError on API failure', async () => {
162
+ mockCustomerCreate.mockRejectedValueOnce(new Error('Stripe API down'));
163
+ await expect(client.createCustomer({ email: 'fail@example.com' })).rejects.toThrow('Failed to create customer');
164
+ });
165
+ });
166
+ describe('getCustomer', () => {
167
+ it('should return customer when found', async () => {
168
+ const customer = { id: 'cus_test', email: 'a@b.com', deleted: false };
169
+ mockCustomerRetrieve.mockResolvedValueOnce(customer);
170
+ const result = await client.getCustomer('cus_test');
171
+ expect(result).toEqual(customer);
172
+ });
173
+ it('should return null for deleted customer', async () => {
174
+ mockCustomerRetrieve.mockResolvedValueOnce({ id: 'cus_del', deleted: true });
175
+ const result = await client.getCustomer('cus_del');
176
+ expect(result).toBeNull();
177
+ });
178
+ it('should return null for resource_missing error', async () => {
179
+ const Stripe = (await import('stripe')).default;
180
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
181
+ const stripeErr = new Stripe.errors.StripeError('Not found', 'resource_missing');
182
+ mockCustomerRetrieve.mockRejectedValueOnce(stripeErr);
183
+ const result = await client.getCustomer('cus_missing');
184
+ expect(result).toBeNull();
185
+ });
186
+ });
187
+ describe('updateCustomer', () => {
188
+ it('should update and return customer', async () => {
189
+ const updated = { id: 'cus_test', email: 'new@b.com' };
190
+ mockCustomerUpdate.mockResolvedValueOnce(updated);
191
+ const result = await client.updateCustomer('cus_test', {
192
+ email: 'new@b.com',
193
+ });
194
+ expect(result).toEqual(updated);
195
+ });
196
+ });
197
+ // --------------------------------------------------------------------------
198
+ // Checkout
199
+ // --------------------------------------------------------------------------
200
+ describe('createCheckoutSession', () => {
201
+ it('should create a checkout session for individual tier', async () => {
202
+ mockSessionCreate.mockResolvedValueOnce({
203
+ id: 'cs_test_123',
204
+ url: 'https://checkout.stripe.com/session',
205
+ });
206
+ const result = await client.createCheckoutSession({
207
+ tier: 'individual',
208
+ billingPeriod: 'monthly',
209
+ successUrl: 'https://test.com/success',
210
+ cancelUrl: 'https://test.com/cancel',
211
+ email: 'user@example.com',
212
+ });
213
+ expect(result.sessionId).toBe('cs_test_123');
214
+ expect(result.url).toBe('https://checkout.stripe.com/session');
215
+ });
216
+ it('should enable adjustable quantity for team tier', async () => {
217
+ mockSessionCreate.mockResolvedValueOnce({
218
+ id: 'cs_team',
219
+ url: 'https://checkout.stripe.com/team',
220
+ });
221
+ await client.createCheckoutSession({
222
+ tier: 'team',
223
+ billingPeriod: 'monthly',
224
+ seatCount: 5,
225
+ successUrl: 'https://test.com/success',
226
+ cancelUrl: 'https://test.com/cancel',
227
+ });
228
+ expect(mockSessionCreate).toHaveBeenCalledWith(expect.objectContaining({
229
+ line_items: expect.arrayContaining([
230
+ expect.objectContaining({
231
+ adjustable_quantity: { enabled: true, minimum: 1, maximum: 1000 },
232
+ }),
233
+ ]),
234
+ }));
235
+ });
236
+ it('should enable adjustable quantity for enterprise tier', async () => {
237
+ mockSessionCreate.mockResolvedValueOnce({
238
+ id: 'cs_ent',
239
+ url: 'https://checkout.stripe.com/ent',
240
+ });
241
+ await client.createCheckoutSession({
242
+ tier: 'enterprise',
243
+ billingPeriod: 'annual',
244
+ successUrl: 'https://test.com/success',
245
+ cancelUrl: 'https://test.com/cancel',
246
+ });
247
+ expect(mockSessionCreate).toHaveBeenCalledWith(expect.objectContaining({
248
+ line_items: expect.arrayContaining([
249
+ expect.objectContaining({
250
+ adjustable_quantity: expect.objectContaining({ enabled: true }),
251
+ }),
252
+ ]),
253
+ }));
254
+ });
255
+ it('should attach customerId when provided', async () => {
256
+ mockSessionCreate.mockResolvedValueOnce({ id: 'cs_cust', url: 'url' });
257
+ await client.createCheckoutSession({
258
+ tier: 'individual',
259
+ billingPeriod: 'monthly',
260
+ customerId: 'cus_existing',
261
+ successUrl: 'https://test.com/success',
262
+ cancelUrl: 'https://test.com/cancel',
263
+ });
264
+ expect(mockSessionCreate).toHaveBeenCalledWith(expect.objectContaining({ customer: 'cus_existing' }));
265
+ });
266
+ it('should throw BillingError for community tier (no price)', async () => {
267
+ await expect(client.createCheckoutSession({
268
+ tier: 'community',
269
+ billingPeriod: 'monthly',
270
+ successUrl: 'https://test.com/success',
271
+ cancelUrl: 'https://test.com/cancel',
272
+ })).rejects.toThrow('No price configured for tier: community');
273
+ });
274
+ it('should throw BillingError on Stripe API failure', async () => {
275
+ mockSessionCreate.mockRejectedValueOnce(new Error('API error'));
276
+ await expect(client.createCheckoutSession({
277
+ tier: 'individual',
278
+ billingPeriod: 'monthly',
279
+ successUrl: 'https://test.com/success',
280
+ cancelUrl: 'https://test.com/cancel',
281
+ })).rejects.toThrow('Failed to create checkout session');
282
+ });
283
+ });
284
+ describe('getCheckoutSession', () => {
285
+ it('should retrieve session with expanded fields', async () => {
286
+ const session = { id: 'cs_test', customer: 'cus_1', subscription: 'sub_1' };
287
+ mockSessionRetrieve.mockResolvedValueOnce(session);
288
+ const result = await client.getCheckoutSession('cs_test');
289
+ expect(result).toEqual(session);
290
+ expect(mockSessionRetrieve).toHaveBeenCalledWith('cs_test', {
291
+ expand: ['subscription', 'customer'],
292
+ });
293
+ });
294
+ });
295
+ // --------------------------------------------------------------------------
296
+ // Subscription Management
297
+ // --------------------------------------------------------------------------
298
+ describe('getSubscription', () => {
299
+ it('should return subscription when found', async () => {
300
+ const sub = { id: 'sub_test', status: 'active' };
301
+ mockSubRetrieve.mockResolvedValueOnce(sub);
302
+ const result = await client.getSubscription('sub_test');
303
+ expect(result).toEqual(sub);
304
+ });
305
+ it('should return null for resource_missing', async () => {
306
+ const Stripe = (await import('stripe')).default;
307
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
308
+ const err = new Stripe.errors.StripeError('Not found', 'resource_missing');
309
+ mockSubRetrieve.mockRejectedValueOnce(err);
310
+ const result = await client.getSubscription('sub_missing');
311
+ expect(result).toBeNull();
312
+ });
313
+ });
314
+ describe('listSubscriptions', () => {
315
+ it('should list subscriptions for a customer', async () => {
316
+ const subs = { data: [{ id: 'sub_1' }, { id: 'sub_2' }] };
317
+ mockSubList.mockResolvedValueOnce(subs);
318
+ const result = await client.listSubscriptions('cus_test');
319
+ expect(result).toHaveLength(2);
320
+ expect(mockSubList).toHaveBeenCalledWith(expect.objectContaining({
321
+ customer: 'cus_test',
322
+ status: 'all',
323
+ }));
324
+ });
325
+ });
326
+ describe('updateSubscription', () => {
327
+ it('should update tier and billing period', async () => {
328
+ const existingSub = {
329
+ id: 'sub_test',
330
+ items: { data: [{ id: 'si_1', quantity: 1 }] },
331
+ metadata: {},
332
+ };
333
+ mockSubRetrieve.mockResolvedValueOnce(existingSub);
334
+ mockSubUpdate.mockResolvedValueOnce({ ...existingSub, status: 'active' });
335
+ const result = await client.updateSubscription('sub_test', {
336
+ tier: 'team',
337
+ billingPeriod: 'annual',
338
+ seatCount: 10,
339
+ });
340
+ expect(result).toBeDefined();
341
+ expect(mockSubUpdate).toHaveBeenCalled();
342
+ });
343
+ it('should update seat count only', async () => {
344
+ const existingSub = {
345
+ id: 'sub_test',
346
+ items: { data: [{ id: 'si_1', quantity: 5 }] },
347
+ metadata: {},
348
+ };
349
+ mockSubRetrieve.mockResolvedValueOnce(existingSub);
350
+ mockSubUpdate.mockResolvedValueOnce({ ...existingSub });
351
+ await client.updateSubscription('sub_test', {
352
+ seatCount: 10,
353
+ });
354
+ expect(mockSubUpdate).toHaveBeenCalledWith('sub_test', expect.objectContaining({
355
+ items: [{ id: 'si_1', quantity: 10 }],
356
+ }));
357
+ });
358
+ it('should throw when subscription not found', async () => {
359
+ const Stripe = (await import('stripe')).default;
360
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
361
+ const err = new Stripe.errors.StripeError('Not found', 'resource_missing');
362
+ mockSubRetrieve.mockRejectedValueOnce(err);
363
+ await expect(client.updateSubscription('sub_missing', { seatCount: 5 })).rejects.toThrow('Subscription not found');
364
+ });
365
+ it('should throw BillingError on update API failure', async () => {
366
+ const existingSub = {
367
+ id: 'sub_test',
368
+ items: { data: [{ id: 'si_1', quantity: 1 }] },
369
+ metadata: {},
370
+ };
371
+ mockSubRetrieve.mockResolvedValueOnce(existingSub);
372
+ mockSubUpdate.mockRejectedValueOnce(new Error('API error'));
373
+ await expect(client.updateSubscription('sub_test', { seatCount: 5 })).rejects.toThrow('Failed to update subscription');
374
+ });
375
+ it('should disable proration when prorate=false', async () => {
376
+ const existingSub = {
377
+ id: 'sub_test',
378
+ items: { data: [{ id: 'si_1', quantity: 1 }] },
379
+ metadata: {},
380
+ };
381
+ mockSubRetrieve.mockResolvedValueOnce(existingSub);
382
+ mockSubUpdate.mockResolvedValueOnce({ ...existingSub });
383
+ await client.updateSubscription('sub_test', {
384
+ seatCount: 3,
385
+ prorate: false,
386
+ });
387
+ expect(mockSubUpdate).toHaveBeenCalledWith('sub_test', expect.objectContaining({ proration_behavior: 'none' }));
388
+ });
389
+ });
390
+ describe('cancelSubscription', () => {
391
+ it('should cancel immediately when option set', async () => {
392
+ mockSubCancel.mockResolvedValueOnce({ id: 'sub_test', status: 'canceled' });
393
+ await client.cancelSubscription('sub_test', {
394
+ immediately: true,
395
+ feedback: 'Too expensive',
396
+ });
397
+ expect(mockSubCancel).toHaveBeenCalledWith('sub_test', {
398
+ cancellation_details: { comment: 'Too expensive' },
399
+ });
400
+ });
401
+ it('should cancel at period end by default', async () => {
402
+ mockSubUpdate.mockResolvedValueOnce({ id: 'sub_test', cancel_at_period_end: true });
403
+ await client.cancelSubscription('sub_test', {
404
+ feedback: 'Switching providers',
405
+ });
406
+ expect(mockSubUpdate).toHaveBeenCalledWith('sub_test', {
407
+ cancel_at_period_end: true,
408
+ cancellation_details: { comment: 'Switching providers' },
409
+ });
410
+ });
411
+ it('should cancel at period end with no options', async () => {
412
+ mockSubUpdate.mockResolvedValueOnce({ id: 'sub_test', cancel_at_period_end: true });
413
+ await client.cancelSubscription('sub_test');
414
+ expect(mockSubUpdate).toHaveBeenCalledWith('sub_test', {
415
+ cancel_at_period_end: true,
416
+ cancellation_details: { comment: undefined },
417
+ });
418
+ });
419
+ it('should throw BillingError on cancellation failure', async () => {
420
+ mockSubUpdate.mockRejectedValueOnce(new Error('API error'));
421
+ await expect(client.cancelSubscription('sub_test')).rejects.toThrow('Failed to cancel subscription');
422
+ });
423
+ });
424
+ describe('reactivateSubscription', () => {
425
+ it('should set cancel_at_period_end to false', async () => {
426
+ mockSubUpdate.mockResolvedValueOnce({ id: 'sub_test', cancel_at_period_end: false });
427
+ await client.reactivateSubscription('sub_test');
428
+ expect(mockSubUpdate).toHaveBeenCalledWith('sub_test', {
429
+ cancel_at_period_end: false,
430
+ });
431
+ });
432
+ });
433
+ // --------------------------------------------------------------------------
434
+ // Customer Portal
435
+ // --------------------------------------------------------------------------
436
+ describe('createPortalSession', () => {
437
+ it('should create a portal session', async () => {
438
+ mockPortalCreate.mockResolvedValueOnce({ url: 'https://billing.stripe.com/portal' });
439
+ const result = await client.createPortalSession({
440
+ customerId: 'cus_test',
441
+ returnUrl: 'https://test.com/account',
442
+ });
443
+ expect(result.url).toBe('https://billing.stripe.com/portal');
444
+ });
445
+ it('should throw BillingError on failure', async () => {
446
+ mockPortalCreate.mockRejectedValueOnce(new Error('API error'));
447
+ await expect(client.createPortalSession({
448
+ customerId: 'cus_test',
449
+ returnUrl: 'https://test.com/account',
450
+ })).rejects.toThrow('Failed to create portal session');
451
+ });
452
+ });
453
+ // --------------------------------------------------------------------------
454
+ // Invoice Management
455
+ // --------------------------------------------------------------------------
456
+ describe('listInvoices', () => {
457
+ it('should list invoices with defaults', async () => {
458
+ mockInvoiceList.mockResolvedValueOnce({
459
+ data: [{ id: 'in_1' }],
460
+ has_more: false,
461
+ });
462
+ const result = await client.listInvoices('cus_test');
463
+ expect(result.invoices).toHaveLength(1);
464
+ expect(result.hasMore).toBe(false);
465
+ expect(mockInvoiceList).toHaveBeenCalledWith(expect.objectContaining({ customer: 'cus_test', limit: 10 }));
466
+ });
467
+ it('should pass custom limit and startingAfter', async () => {
468
+ mockInvoiceList.mockResolvedValueOnce({
469
+ data: [],
470
+ has_more: false,
471
+ });
472
+ await client.listInvoices('cus_test', {
473
+ limit: 5,
474
+ startingAfter: 'in_prev',
475
+ });
476
+ expect(mockInvoiceList).toHaveBeenCalledWith(expect.objectContaining({ limit: 5, starting_after: 'in_prev' }));
477
+ });
478
+ });
479
+ describe('getInvoice', () => {
480
+ it('should return invoice when found', async () => {
481
+ const invoice = { id: 'in_test', amount_paid: 999 };
482
+ mockInvoiceRetrieve.mockResolvedValueOnce(invoice);
483
+ const result = await client.getInvoice('in_test');
484
+ expect(result).toEqual(invoice);
485
+ });
486
+ it('should return null for resource_missing', async () => {
487
+ const Stripe = (await import('stripe')).default;
488
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
489
+ const err = new Stripe.errors.StripeError('Not found', 'resource_missing');
490
+ mockInvoiceRetrieve.mockRejectedValueOnce(err);
491
+ const result = await client.getInvoice('in_missing');
492
+ expect(result).toBeNull();
493
+ });
494
+ });
495
+ describe('getUpcomingInvoice', () => {
496
+ it('should return upcoming invoice preview', async () => {
497
+ const preview = { id: 'in_upcoming', amount_due: 2500 };
498
+ mockInvoiceCreatePreview.mockResolvedValueOnce(preview);
499
+ const result = await client.getUpcomingInvoice('cus_test');
500
+ expect(result).toEqual(preview);
501
+ });
502
+ it('should return null when no upcoming invoice', async () => {
503
+ const Stripe = (await import('stripe')).default;
504
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
505
+ const err = new Stripe.errors.StripeError('No upcoming', 'invoice_upcoming_none');
506
+ mockInvoiceCreatePreview.mockRejectedValueOnce(err);
507
+ const result = await client.getUpcomingInvoice('cus_test');
508
+ expect(result).toBeNull();
509
+ });
510
+ });
511
+ // --------------------------------------------------------------------------
512
+ // Webhook Signature
513
+ // --------------------------------------------------------------------------
514
+ describe('verifyWebhookSignature', () => {
515
+ it('should return event on valid signature', () => {
516
+ const fakeEvent = { id: 'evt_test', type: 'customer.subscription.created' };
517
+ mockConstructEvent.mockReturnValueOnce(fakeEvent);
518
+ const result = client.verifyWebhookSignature('payload', 'sig_header');
519
+ expect(result).toEqual(fakeEvent);
520
+ });
521
+ it('should throw BillingError on invalid signature', () => {
522
+ mockConstructEvent.mockImplementationOnce(() => {
523
+ throw new Error('Signature mismatch');
524
+ });
525
+ expect(() => client.verifyWebhookSignature('bad', 'bad_sig')).toThrow('Invalid webhook signature');
526
+ });
527
+ });
528
+ // --------------------------------------------------------------------------
529
+ // Price ID Resolution
530
+ // --------------------------------------------------------------------------
531
+ describe('getPriceId', () => {
532
+ it('should return null for community tier', () => {
533
+ expect(client.getPriceId('community', 'monthly')).toBeNull();
534
+ });
535
+ it('should return correct price for individual monthly', () => {
536
+ expect(client.getPriceId('individual', 'monthly')).toBe('price_ind_monthly');
537
+ });
538
+ it('should return correct price for team annual', () => {
539
+ expect(client.getPriceId('team', 'annual')).toBe('price_team_annual');
540
+ });
541
+ it('should return null for unknown tier', () => {
542
+ expect(client.getPriceId('unknown', 'monthly')).toBeNull();
543
+ });
544
+ });
545
+ // --------------------------------------------------------------------------
546
+ // Static Methods
547
+ // --------------------------------------------------------------------------
548
+ describe('mapSubscriptionStatus (static)', () => {
549
+ it('should delegate to stripe-helpers', () => {
550
+ expect(StripeClient.mapSubscriptionStatus('active')).toBe('active');
551
+ expect(StripeClient.mapSubscriptionStatus('canceled')).toBe('canceled');
552
+ expect(StripeClient.mapSubscriptionStatus('past_due')).toBe('past_due');
553
+ });
554
+ });
555
+ // --------------------------------------------------------------------------
556
+ // getStripeInstance
557
+ // --------------------------------------------------------------------------
558
+ describe('getStripeInstance', () => {
559
+ it('should return the underlying Stripe instance', () => {
560
+ const instance = client.getStripeInstance();
561
+ expect(instance).toBeDefined();
562
+ expect(instance.customers).toBeDefined();
563
+ });
564
+ });
565
+ });
566
+ //# sourceMappingURL=StripeClient.test.js.map