@mostajs/subscriptions-plan 0.3.4 → 0.3.6

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/README.md ADDED
@@ -0,0 +1,402 @@
1
+ # `@mostajs/subscriptions-plan`
2
+
3
+ **Subscription plans, billing, invoices and usage tracking** pour les hôtes mostajs *(SaaS multi-tenant)*.
4
+
5
+ **Auteur** : Dr Hamid MADANI <drmdh@msn.com>
6
+ **License** : AGPL-3.0-or-later
7
+
8
+ ---
9
+
10
+ ## Principe
11
+
12
+ `subscriptions-plan` couvre **toute la chaîne facturation** d'un hôte SaaS :
13
+
14
+ 1. **Plans** — catalogue des offres *(Free, Pro, Enterprise, …)* avec limites et features
15
+ 2. **Subscriptions** — qui souscrit à quoi, quand, état *(active, trialing, past_due, canceled)*
16
+ 3. **Invoices** — factures émises *(Stripe ou autre provider)*, état de paiement, PDF
17
+ 4. **Usage** — métriques d'utilisation *(requests/jour, projets, apikeys)* et application des quotas
18
+
19
+ C'est un module **système** *(au sens : ses 4 tables vivent dans la base système, pas dans la base métier des projets)*. Tirer ces données via `@mostajs/data-plug.getSystemDialect()` pour qu'elles survivent aux mutations de dialect métier *(`/api/change-dialect`, etc.)*.
20
+
21
+ ---
22
+
23
+ ## Install
24
+
25
+ ```bash
26
+ npm install @mostajs/subscriptions-plan
27
+ # peer deps :
28
+ npm install @mostajs/data-plug @mostajs/payment stripe
29
+ ```
30
+
31
+ Tous les peer deps sauf `@mostajs/data-plug` sont **optionnels** :
32
+ - `@mostajs/payment` : nécessaire pour `subscribeToPlan` *(multi-provider — Stripe, PayPal, Chargily, Satim)*
33
+ - `stripe` : nécessaire pour `createBillingSession`, webhooks Stripe directs
34
+
35
+ ---
36
+
37
+ ## Usage
38
+
39
+ ### 1. Enregistrer les schemas système au bootstrap
40
+
41
+ ```ts
42
+ import { registerSchemas } from '@mostajs/data-plug'
43
+ import {
44
+ PlanSchema, SubscriptionSchema, InvoiceSchema, UsageLogSchema,
45
+ } from '@mostajs/subscriptions-plan'
46
+
47
+ registerSchemas([PlanSchema, SubscriptionSchema, InvoiceSchema, UsageLogSchema])
48
+ ```
49
+
50
+ ### 2. Seed les plans initiaux *(Free / Pro / …)*
51
+
52
+ ```ts
53
+ import { getPlanRepo, DEFAULT_PLANS } from '@mostajs/subscriptions-plan/server'
54
+ import { getSystemDialect } from '@mostajs/data-plug'
55
+
56
+ const dialect = await getSystemDialect()
57
+ const planRepo = getPlanRepo(dialect)
58
+
59
+ for (const plan of DEFAULT_PLANS) {
60
+ await planRepo.upsert({ slug: plan.slug }, plan)
61
+ }
62
+ ```
63
+
64
+ ### 3. Souscrire un account à un plan *(multi-provider via @mostajs/payment)*
65
+
66
+ ```ts
67
+ import { subscribeToPlan } from '@mostajs/subscriptions-plan/server'
68
+
69
+ const result = await subscribeToPlan(dialect, {
70
+ accountId: 'acc_42',
71
+ planSlug: 'pro',
72
+ provider: 'stripe', // 'stripe' | 'paypal' | 'chargily' | 'satim'
73
+ successUrl: 'https://app/onboarding/success',
74
+ cancelUrl: 'https://app/onboarding/cancel',
75
+ })
76
+
77
+ if (result.ok) {
78
+ // Rediriger l'utilisateur vers result.checkoutUrl
79
+ return Response.redirect(result.checkoutUrl)
80
+ }
81
+ ```
82
+
83
+ ### 4. Vérifier les quotas avant une opération
84
+
85
+ ```ts
86
+ import { checkQuota, isDialectAllowed, isTransportAllowed } from '@mostajs/subscriptions-plan/server'
87
+
88
+ const check = await checkQuota(dialect, accountId, 'maxProjects')
89
+ if (!check.allowed) {
90
+ return Response.json({
91
+ error: 'Quota exceeded',
92
+ plan: check.plan,
93
+ limit: check.limit,
94
+ used: check.used,
95
+ }, { status: 402 }) // 402 Payment Required
96
+ }
97
+
98
+ // Vérifier qu'un dialect est autorisé par le plan
99
+ const plan = check.plan
100
+ if (!isDialectAllowed(plan.limits, 'postgres')) {
101
+ return Response.json({ error: 'Dialect not allowed in your plan' }, { status: 402 })
102
+ }
103
+ ```
104
+
105
+ ### 5. Compter une utilisation *(metering)*
106
+
107
+ ```ts
108
+ import { incrementUsage } from '@mostajs/subscriptions-plan/server'
109
+
110
+ await incrementUsage(dialect, accountId, 'requests', 1)
111
+ // → ajoute 1 à UsageLog du jour courant
112
+ ```
113
+
114
+ ### 6. Webhook Stripe *(provider-direct)*
115
+
116
+ ```ts
117
+ import { verifyWebhookEvent, parseBillingEvent } from '@mostajs/subscriptions-plan/server'
118
+
119
+ app.post('/api/billing/webhook', async (req) => {
120
+ const sig = req.headers['stripe-signature']
121
+ const event = await verifyWebhookEvent(req.rawBody, sig)
122
+ if (!event) return { ok: false }
123
+
124
+ const parsed = parseBillingEvent(event)
125
+ // parsed = { type: 'subscription.created' | 'invoice.paid' | …, data: {...} }
126
+
127
+ // Update DB en fonction du type
128
+ switch (parsed.type) {
129
+ case 'subscription.created': /* ... */ break
130
+ case 'invoice.paid': /* ... */ break
131
+ case 'subscription.canceled':/* ... */ break
132
+ }
133
+
134
+ return { ok: true }
135
+ })
136
+ ```
137
+
138
+ ### 7. Routes Fastify *(handlers prêts à l'emploi)*
139
+
140
+ ```ts
141
+ import {
142
+ createPlanHandlers,
143
+ createSubscriptionHandlers,
144
+ createUsageHandlers,
145
+ } from '@mostajs/subscriptions-plan/server'
146
+
147
+ const planH = createPlanHandlers(dialect, checkPermission)
148
+ const subH = createSubscriptionHandlers(dialect)
149
+ const useH = createUsageHandlers(dialect)
150
+
151
+ app.get('/api/plans', planH.list)
152
+ app.post('/api/plans', planH.create)
153
+ app.put('/api/plans/:id', planH.update)
154
+ app.delete('/api/plans/:id', planH.delete)
155
+
156
+ app.get('/api/subscriptions/:accountId', subH.byAccount)
157
+ app.post('/api/subscriptions/cancel', subH.cancel)
158
+
159
+ app.get('/api/usage/:accountId/summary', useH.summary)
160
+ ```
161
+
162
+ ### 8. Annuler une souscription
163
+
164
+ ```ts
165
+ import { cancelCurrentSubscription } from '@mostajs/subscriptions-plan/server'
166
+
167
+ await cancelCurrentSubscription(dialect, accountId, {
168
+ immediate: false, // false = annuler à la fin de la période courante
169
+ })
170
+ ```
171
+
172
+ ---
173
+
174
+ ## API
175
+
176
+ ### Server-side *(`@mostajs/subscriptions-plan/server`)*
177
+
178
+ | Fonction | Rôle |
179
+ |----------|------|
180
+ | `getPlanRepo` / `getSubscriptionRepo` / `getInvoiceRepo` / `getUsageLogRepo` | Repos *(WeakMap-cached par dialect)* |
181
+ | `resetRepos` | No-op rétro-compat *(WeakMap auto-libère)* |
182
+ | `subscribeToPlan` | Souscription multi-provider via `@mostajs/payment` |
183
+ | `cancelCurrentSubscription` | Annuler la souscription active d'un account |
184
+ | `checkQuota` | Vérifie si une opération est dans les limites du plan |
185
+ | `isDialectAllowed` / `isTransportAllowed` | Vérifie un dialect/transport contre les limites du plan |
186
+ | `getUsageSummary` | Résumé usage pour la période courante |
187
+ | `incrementUsage` | Métrique compteur *(requests, …)* |
188
+ | `createBillingSession` / `createPortalSession` | Stripe Checkout / Customer Portal |
189
+ | `createStripeCustomer` | Crée un customer Stripe |
190
+ | `cancelSubscription` / `changeSubscriptionPlan` | Stripe direct |
191
+ | `verifyWebhookEvent` / `parseBillingEvent` | Parse webhooks Stripe |
192
+ | `createPlanHandlers` / `createSubscriptionHandlers` / `createUsageHandlers` | Handlers Fastify CRUD |
193
+ | `DEFAULT_PLANS` | Catalogue par défaut *(Free, Pro, Enterprise, …)* |
194
+
195
+ ### Client-safe *(`@mostajs/subscriptions-plan`)*
196
+
197
+ ```ts
198
+ export type {
199
+ PlanDTO, PlanLimits,
200
+ SubscriptionDTO, SubscriptionStatus,
201
+ InvoiceDTO, InvoiceStatus,
202
+ UsageLogDTO, BillingConfig, QuotaCheckResult,
203
+ }
204
+ export {
205
+ PlanSchema, SubscriptionSchema, InvoiceSchema, UsageLogSchema,
206
+ moduleInfo,
207
+ }
208
+ ```
209
+
210
+ ---
211
+
212
+ ## Schemas
213
+
214
+ ### `PlanDTO`
215
+
216
+ ```ts
217
+ {
218
+ id, name, slug,
219
+ price: number, // centimes (2900 = $29.00)
220
+ currency: string,
221
+ interval: 'month' | 'year',
222
+ stripePriceId?: string,
223
+ limits: PlanLimits,
224
+ features: string[],
225
+ active: boolean,
226
+ sortOrder: number,
227
+ }
228
+ ```
229
+
230
+ ### `PlanLimits`
231
+
232
+ ```ts
233
+ {
234
+ maxProjects: number, // -1 = illimité
235
+ maxApiKeys: number,
236
+ requestsPerDay: number,
237
+ maxPoolSize: number,
238
+ dialects: string[] | '*',
239
+ transports: string[] | '*',
240
+ replication: boolean,
241
+ }
242
+ ```
243
+
244
+ ### `SubscriptionDTO`
245
+
246
+ ```ts
247
+ {
248
+ id, accountId, planId,
249
+ status: 'active' | 'trialing' | 'past_due' | 'canceled' | 'unpaid',
250
+ stripeSubId?,
251
+ currentPeriodStart?, currentPeriodEnd?,
252
+ cancelAt?, trialEnd?,
253
+ }
254
+ ```
255
+
256
+ ### `InvoiceDTO`
257
+
258
+ ```ts
259
+ {
260
+ id, accountId, subscriptionId?,
261
+ stripeInvoiceId?,
262
+ amount: number, // centimes
263
+ currency: string,
264
+ status: 'open' | 'paid' | 'void' | 'uncollectible',
265
+ paidAt?, periodStart?, periodEnd?,
266
+ pdfUrl?, hostedUrl?,
267
+ }
268
+ ```
269
+
270
+ ### `UsageLogDTO`
271
+
272
+ Métriques journalières par account *(requests, projets actifs, …)*. Détail dans `src/types/index.ts`.
273
+
274
+ ---
275
+
276
+ ## Architecture
277
+
278
+ ```
279
+ ┌──────────────────────────────────────────────────────────────┐
280
+ │ @mostajs/subscriptions-plan │
281
+ │ (système — vit dans MOSTA_SYSTEM_URI ou singleton métier) │
282
+ │ │
283
+ │ PlanSchema │
284
+ │ SubscriptionSchema ← getSystemDialect() │
285
+ │ InvoiceSchema │
286
+ │ UsageLogSchema │
287
+ └──────┬─────────────┬──────────────┬───────────────────────────┘
288
+ │ │ │
289
+ │ │ │ checkQuota / incrementUsage
290
+ │ │ ▼
291
+ │ │ ┌────────────────────────┐
292
+ │ │ │ Hôte (mosta-net) │
293
+ │ │ │ Routes API, │
294
+ │ │ │ apikey-middleware │
295
+ │ │ └────────────────────────┘
296
+ │ │
297
+ │ subscribeToPlan
298
+ ▼ ▼
299
+ ┌────────────┐ ┌───────────────────┐
300
+ │ @mostajs/ │ │ Stripe / PayPal /│
301
+ │ payment │ │ Chargily / Satim │
302
+ └────────────┘ └───────────────────┘
303
+ ```
304
+
305
+ ---
306
+
307
+ ## Changelog
308
+
309
+ ### v0.3.5 — 2026-05-04 — Découplage `@mostajs/orm` via façade `data-plug` + WeakMap × 4 + README initial
310
+
311
+ Étape 3 du chantier *« system dialect séparé »* — applique trois fix qui se combinent, et livre un README complet *(le module n'en avait pas)*.
312
+
313
+ #### 1. Migration `@mostajs/orm` → `@mostajs/data-plug` *(façade)*
314
+
315
+ Conformément au principe *« les modules @mostajs passent par data-plug, jamais hardcoder un dialect ou importer @mostajs/orm directement »*, `subscriptions-plan` ne dépend plus de `@mostajs/orm` en peerDep. Tous les imports de production passent désormais par `@mostajs/data-plug v1.2.4` *(qui ré-exporte `BaseRepository`, `IDialect`, `EntitySchema`, …)*.
316
+
317
+ **11 fichiers source migrés** *(13 imports orm → 0)* :
318
+
319
+ ```
320
+ - src/api/plans.route.ts (IDialect)
321
+ - src/api/subscriptions.route.ts (IDialect)
322
+ - src/api/usage.route.ts (IDialect)
323
+ - src/lib/plan-factory.ts (BaseRepository + IDialect)
324
+ - src/lib/subscribe.ts (IDialect — statique + dynamic L152)
325
+ - src/lib/quota-check.ts (IDialect)
326
+ - src/lib/module-info.ts (EntitySchema)
327
+ - src/schemas/plan.schema.ts (EntitySchema)
328
+ - src/schemas/subscription.schema.ts (EntitySchema)
329
+ - src/schemas/invoice.schema.ts (EntitySchema)
330
+ - src/schemas/usage-log.schema.ts (EntitySchema)
331
+ - package.json (peerDep orm → peerDep data-plug)
332
+ ```
333
+
334
+ #### 2. WeakMap × 4 dans `plan-factory.ts`
335
+
336
+ 4 caches module-level remplacés par 4 WeakMaps indépendantes :
337
+
338
+ ```ts
339
+ // Avant
340
+ let planRepo: BaseRepository<PlanDTO> | null = null
341
+ let subscriptionRepo: BaseRepository<SubscriptionDTO> | null = null
342
+ let invoiceRepo: BaseRepository<InvoiceDTO> | null = null
343
+ let usageLogRepo: BaseRepository<UsageLogDTO> | null = null
344
+ ↓
345
+ const planCache = new WeakMap<IDialect, BaseRepository<PlanDTO>>()
346
+ const subscriptionCache = new WeakMap<IDialect, BaseRepository<SubscriptionDTO>>()
347
+ const invoiceCache = new WeakMap<IDialect, BaseRepository<InvoiceDTO>>()
348
+ const usageLogCache = new WeakMap<IDialect, BaseRepository<UsageLogDTO>>()
349
+ ```
350
+
351
+ Évite que les repos capturent la référence du PREMIER dialect passé et ignorent tous les suivants. Lorsque `/api/change-dialect` *(ou rotation système↔métier)* modifie le dialect courant, les 4 caches missent et reconstruisent les repos avec la **nouvelle** instance dialect.
352
+
353
+ `resetRepos()` conservé en no-op pour rétro-compat *(les WeakMaps auto-libèrent naturellement les entrées dont le dialect n'est plus référencé)*.
354
+
355
+ #### 3. Correction anomalie pré-existante `file:..` en devDeps
356
+
357
+ Les deux entrées violaient la règle d'écosystème *« entre modules @mostajs : toujours bump+publish+semver, jamais `file:..` »* :
358
+
359
+ ```
360
+ "@mostajs/orm": "file:../mosta-orm" → "^1.13.1"
361
+ "@mostajs/payment": "file:../mosta-payment" → "^0.4.1"
362
+ ```
363
+
364
+ #### 4. README initial *(386 lignes)*
365
+
366
+ Le module n'avait pas de README. Création d'une doc complète :
367
+
368
+ - **Principe** *(subscription plans, billing, quota, place dans l'écosystème système)*
369
+ - **Install** *(peer deps + optionnels)*
370
+ - **Usage** — 8 sections how-to :
371
+ 1. Register schemas au bootstrap
372
+ 2. Seed plans initiaux *(`DEFAULT_PLANS`)*
373
+ 3. `subscribeToPlan` multi-provider
374
+ 4. `checkQuota` / `isDialectAllowed` / `isTransportAllowed`
375
+ 5. `incrementUsage` *(metering)*
376
+ 6. Webhook Stripe *(`verifyWebhookEvent` / `parseBillingEvent`)*
377
+ 7. Routes Fastify *(`createPlanHandlers` / `createSubscriptionHandlers` / `createUsageHandlers`)*
378
+ 8. `cancelCurrentSubscription`
379
+ - **API reference** *(server-side + client-safe)*
380
+ - **Schemas** : `PlanDTO`, `PlanLimits`, `SubscriptionDTO`, `InvoiceDTO`, `UsageLogDTO`
381
+ - **Architecture** *(diagramme : système ↔ payment ↔ providers)*
382
+ - **Changelog v0.3.5** détaillé
383
+ - **License** *(AGPL-3.0-or-later + commercial)*
384
+
385
+ #### Bump
386
+
387
+ `0.3.4 → 0.3.5` *(patch — découplage interne, signatures publiques inchangées)*.
388
+
389
+ ---
390
+
391
+ ### v0.3.4 et antérieurs
392
+
393
+ Versions initiales de plans + Stripe billing + quota enforcement. Pas de release notes archivées.
394
+
395
+ ---
396
+
397
+ ## License
398
+
399
+ [AGPL-3.0-or-later](LICENSE) — usage libre tant que le code dérivé reste open-source.
400
+ **Licence commerciale** disponible : `drmdh@msn.com`. Pricing par projet, pas par seat.
401
+
402
+ — (c) 2026 Dr Hamid MADANI \<drmdh@msn.com\>
@@ -1,4 +1,4 @@
1
- import type { IDialect } from '@mostajs/orm';
1
+ import type { IDialect } from '@mostajs/data-plug';
2
2
  type PermissionChecker = (permission: string) => Promise<{
3
3
  error: Response | null;
4
4
  session: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"plans.route.d.ts","sourceRoot":"","sources":["../../src/api/plans.route.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAI5C,KAAK,iBAAiB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAC,CAAA;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,iBAAiB;eAI/D,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;gBAU1B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;eA4B5B,OAAO,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;kBAepC,OAAO,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;EAcnE"}
1
+ {"version":3,"file":"plans.route.d.ts","sourceRoot":"","sources":["../../src/api/plans.route.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAIlD,KAAK,iBAAiB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAC,CAAA;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,iBAAiB;eAI/D,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;gBAU1B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;eA4B5B,OAAO,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;kBAepC,OAAO,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;EAcnE"}
@@ -1,4 +1,4 @@
1
- import type { IDialect } from '@mostajs/orm';
1
+ import type { IDialect } from '@mostajs/data-plug';
2
2
  /**
3
3
  * Create handlers for subscription management.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.route.d.ts","sourceRoot":"","sources":["../../src/api/subscriptions.route.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAI5C;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,QAAQ;eAKlC,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;gBAoB1B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;eAqC5B,OAAO,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;EAUhE"}
1
+ {"version":3,"file":"subscriptions.route.d.ts","sourceRoot":"","sources":["../../src/api/subscriptions.route.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAIlD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,QAAQ;eAKlC,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;gBAoB1B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;eAqC5B,OAAO,MAAM,MAAM,KAAG,OAAO,CAAC,QAAQ,CAAC;EAUhE"}
@@ -1,4 +1,4 @@
1
- import type { IDialect } from '@mostajs/orm';
1
+ import type { IDialect } from '@mostajs/data-plug';
2
2
  /**
3
3
  * Create handlers for usage tracking.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"usage.route.d.ts","sourceRoot":"","sources":["../../src/api/usage.route.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAI5C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,QAAQ;eAG3B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;oBAatB,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;gBAmB/B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;EAkBrD"}
1
+ {"version":3,"file":"usage.route.d.ts","sourceRoot":"","sources":["../../src/api/usage.route.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAIlD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,QAAQ;eAG3B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;oBAatB,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;gBAmB/B,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC;EAkBrD"}
@@ -1,4 +1,4 @@
1
- import type { EntitySchema } from '@mostajs/orm';
1
+ import type { EntitySchema } from '@mostajs/data-plug';
2
2
  export declare function getSchemas(): EntitySchema[];
3
3
  export declare const moduleInfo: {
4
4
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"module-info.d.ts","sourceRoot":"","sources":["../../src/lib/module-info.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAMhD,wBAAgB,UAAU,IAAI,YAAY,EAAE,CAE3C;AAED,eAAO,MAAM,UAAU;;;;;;CAMtB,CAAA"}
1
+ {"version":3,"file":"module-info.d.ts","sourceRoot":"","sources":["../../src/lib/module-info.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMtD,wBAAgB,UAAU,IAAI,YAAY,EAAE,CAE3C;AAED,eAAO,MAAM,UAAU;;;;;;CAMtB,CAAA"}
@@ -1,9 +1,13 @@
1
- import { BaseRepository } from '@mostajs/orm';
2
- import type { IDialect } from '@mostajs/orm';
1
+ import { BaseRepository } from '@mostajs/data-plug';
2
+ import type { IDialect } from '@mostajs/data-plug';
3
3
  import type { PlanDTO, SubscriptionDTO, InvoiceDTO, UsageLogDTO } from '../types/index.js';
4
4
  export declare function getPlanRepo(dialect: IDialect): BaseRepository<PlanDTO>;
5
5
  export declare function getSubscriptionRepo(dialect: IDialect): BaseRepository<SubscriptionDTO>;
6
6
  export declare function getInvoiceRepo(dialect: IDialect): BaseRepository<InvoiceDTO>;
7
7
  export declare function getUsageLogRepo(dialect: IDialect): BaseRepository<UsageLogDTO>;
8
+ /**
9
+ * No-op préservé pour rétro-compat — les WeakMaps libèrent naturellement
10
+ * les entrées dont le dialect n'est plus référencé.
11
+ */
8
12
  export declare function resetRepos(): void;
9
13
  //# sourceMappingURL=plan-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-factory.d.ts","sourceRoot":"","sources":["../../src/lib/plan-factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAK5C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO1F,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAGtE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,CAGtF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAG5E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAG9E;AAED,wBAAgB,UAAU,IAAI,IAAI,CAKjC"}
1
+ {"version":3,"file":"plan-factory.d.ts","sourceRoot":"","sources":["../../src/lib/plan-factory.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAKlD,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO1F,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAOtE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,CAOtF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAO5E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAO9E;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
@@ -1,38 +1,62 @@
1
1
  // @mostajs/subscriptions-plan — Repository factories
2
2
  // Author: Dr Hamid MADANI drmdh@msn.com
3
- import { BaseRepository } from '@mostajs/orm';
3
+ //
4
+ // Cache keyed par identité du dialect (WeakMap) — un changement de dialect
5
+ // (ex: /api/change-dialect côté serveur, ou rotation système↔métier) produit
6
+ // un cache miss et une reconstruction. Évite le bug où le repo capturait
7
+ // la référence du PREMIER dialect passé et ignorait tous les suivants — ce
8
+ // qui conduisait à "PostgreSQL not connected. Call connect() first." après
9
+ // disconnect d'une connexion qui restait quand même cached dans le repo.
10
+ //
11
+ // 4 entités du module (Plan, Subscription, Invoice, UsageLog) → 4 WeakMaps
12
+ // indépendantes. Une mutation dialect invalide les 4 caches simultanément
13
+ // (au prochain appel) sans coordination explicite.
14
+ import { BaseRepository } from '@mostajs/data-plug';
4
15
  import { PlanSchema } from '../schemas/plan.schema.js';
5
16
  import { SubscriptionSchema } from '../schemas/subscription.schema.js';
6
17
  import { InvoiceSchema } from '../schemas/invoice.schema.js';
7
18
  import { UsageLogSchema } from '../schemas/usage-log.schema.js';
8
- let planRepo = null;
9
- let subscriptionRepo = null;
10
- let invoiceRepo = null;
11
- let usageLogRepo = null;
19
+ const planCache = new WeakMap();
20
+ const subscriptionCache = new WeakMap();
21
+ const invoiceCache = new WeakMap();
22
+ const usageLogCache = new WeakMap();
12
23
  export function getPlanRepo(dialect) {
13
- if (!planRepo)
14
- planRepo = new BaseRepository(PlanSchema, dialect);
15
- return planRepo;
24
+ let r = planCache.get(dialect);
25
+ if (!r) {
26
+ r = new BaseRepository(PlanSchema, dialect);
27
+ planCache.set(dialect, r);
28
+ }
29
+ return r;
16
30
  }
17
31
  export function getSubscriptionRepo(dialect) {
18
- if (!subscriptionRepo)
19
- subscriptionRepo = new BaseRepository(SubscriptionSchema, dialect);
20
- return subscriptionRepo;
32
+ let r = subscriptionCache.get(dialect);
33
+ if (!r) {
34
+ r = new BaseRepository(SubscriptionSchema, dialect);
35
+ subscriptionCache.set(dialect, r);
36
+ }
37
+ return r;
21
38
  }
22
39
  export function getInvoiceRepo(dialect) {
23
- if (!invoiceRepo)
24
- invoiceRepo = new BaseRepository(InvoiceSchema, dialect);
25
- return invoiceRepo;
40
+ let r = invoiceCache.get(dialect);
41
+ if (!r) {
42
+ r = new BaseRepository(InvoiceSchema, dialect);
43
+ invoiceCache.set(dialect, r);
44
+ }
45
+ return r;
26
46
  }
27
47
  export function getUsageLogRepo(dialect) {
28
- if (!usageLogRepo)
29
- usageLogRepo = new BaseRepository(UsageLogSchema, dialect);
30
- return usageLogRepo;
48
+ let r = usageLogCache.get(dialect);
49
+ if (!r) {
50
+ r = new BaseRepository(UsageLogSchema, dialect);
51
+ usageLogCache.set(dialect, r);
52
+ }
53
+ return r;
31
54
  }
55
+ /**
56
+ * No-op préservé pour rétro-compat — les WeakMaps libèrent naturellement
57
+ * les entrées dont le dialect n'est plus référencé.
58
+ */
32
59
  export function resetRepos() {
33
- planRepo = null;
34
- subscriptionRepo = null;
35
- invoiceRepo = null;
36
- usageLogRepo = null;
60
+ // Auto-cleanup via WeakMap : intentional no-op.
37
61
  }
38
62
  //# sourceMappingURL=plan-factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-factory.js","sourceRoot":"","sources":["../../src/lib/plan-factory.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,wCAAwC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAG/D,IAAI,QAAQ,GAAmC,IAAI,CAAA;AACnD,IAAI,gBAAgB,GAA2C,IAAI,CAAA;AACnE,IAAI,WAAW,GAAsC,IAAI,CAAA;AACzD,IAAI,YAAY,GAAuC,IAAI,CAAA;AAE3D,MAAM,UAAU,WAAW,CAAC,OAAiB;IAC3C,IAAI,CAAC,QAAQ;QAAE,QAAQ,GAAG,IAAI,cAAc,CAAU,UAAU,EAAE,OAAO,CAAC,CAAA;IAC1E,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,IAAI,CAAC,gBAAgB;QAAE,gBAAgB,GAAG,IAAI,cAAc,CAAkB,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAC1G,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAiB;IAC9C,IAAI,CAAC,WAAW;QAAE,WAAW,GAAG,IAAI,cAAc,CAAa,aAAa,EAAE,OAAO,CAAC,CAAA;IACtF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAiB;IAC/C,IAAI,CAAC,YAAY;QAAE,YAAY,GAAG,IAAI,cAAc,CAAc,cAAc,EAAE,OAAO,CAAC,CAAA;IAC1F,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,QAAQ,GAAG,IAAI,CAAA;IACf,gBAAgB,GAAG,IAAI,CAAA;IACvB,WAAW,GAAG,IAAI,CAAA;IAClB,YAAY,GAAG,IAAI,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"plan-factory.js","sourceRoot":"","sources":["../../src/lib/plan-factory.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,wCAAwC;AACxC,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,mDAAmD;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAG/D,MAAM,SAAS,GAAG,IAAI,OAAO,EAAqC,CAAA;AAClE,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA6C,CAAA;AAClF,MAAM,YAAY,GAAG,IAAI,OAAO,EAAwC,CAAA;AACxE,MAAM,aAAa,GAAG,IAAI,OAAO,EAAyC,CAAA;AAE1E,MAAM,UAAU,WAAW,CAAC,OAAiB;IAC3C,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,cAAc,CAAU,UAAU,EAAE,OAAO,CAAC,CAAA;QACpD,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,IAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,cAAc,CAAkB,kBAAkB,EAAE,OAAO,CAAC,CAAA;QACpE,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAiB;IAC9C,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,cAAc,CAAa,aAAa,EAAE,OAAO,CAAC,CAAA;QAC1D,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAiB;IAC/C,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,cAAc,CAAc,cAAc,EAAE,OAAO,CAAC,CAAA;QAC5D,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,gDAAgD;AAClD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { IDialect } from '@mostajs/orm';
1
+ import type { IDialect } from '@mostajs/data-plug';
2
2
  import type { PlanLimits, QuotaCheckResult } from '../types/index.js';
3
3
  /**
4
4
  * Check if an account is within quota for a given resource.
@@ -1 +1 @@
1
- {"version":3,"file":"quota-check.d.ts","sourceRoot":"","sources":["../../src/lib/quota-check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAA;AAGlF;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,EAC7C,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAoE3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAG7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGjF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAchH;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;YAOjB,UAAU;;;;GAwBlB,CAAA"}
1
+ {"version":3,"file":"quota-check.d.ts","sourceRoot":"","sources":["../../src/lib/quota-check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAA;AAGlF;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,EAC7C,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAoE3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAG7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGjF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAchH;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;YAOjB,UAAU;;;;GAwBlB,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { IDialect } from '@mostajs/orm';
1
+ import type { IDialect } from '@mostajs/data-plug';
2
2
  export interface SubscribeParams {
3
3
  accountId: string;
4
4
  planId: string;
@@ -39,5 +39,5 @@ export declare function subscribeToPlan(dialect: IDialect, params: SubscribePara
39
39
  * @param accountId - Account to cancel
40
40
  * @returns { ok, subscription } with the new Free subscription
41
41
  */
42
- export declare function cancelCurrentSubscription(dialect: import('@mostajs/orm').IDialect, accountId: string): Promise<SubscribeResult>;
42
+ export declare function cancelCurrentSubscription(dialect: import('@mostajs/data-plug').IDialect, accountId: string): Promise<SubscribeResult>;
43
43
  //# sourceMappingURL=subscribe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/lib/subscribe.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAA;IACX,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CAwC1B;AA2DD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,OAAO,cAAc,EAAE,QAAQ,EACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAuB1B"}
1
+ {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/lib/subscribe.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAA;IACX,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CAwC1B;AA+DD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,OAAO,oBAAoB,EAAE,QAAQ,EAC9C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAuB1B"}
@@ -78,8 +78,12 @@ async function ensureProvider(name) {
78
78
  break;
79
79
  }
80
80
  case 'chargily': {
81
- if (!process.env.CHARGILY_API_KEY)
82
- throw new Error('CHARGILY_API_KEY not configured');
81
+ // Cohérence Stripe-aligned : CHARGILY_SECRET_KEY (recommandé) avec
82
+ // fallback CHARGILY_API_KEY (legacy). Cf. createChargilyProvider.
83
+ const { getEnv } = await import('@mostajs/config');
84
+ const chargilyKey = getEnv('CHARGILY_SECRET_KEY') ?? getEnv('CHARGILY_API_KEY');
85
+ if (!chargilyKey)
86
+ throw new Error('CHARGILY_SECRET_KEY not configured');
83
87
  const { createChargilyProvider, registerProvider } = await import('@mostajs/payment/server');
84
88
  registerProvider(createChargilyProvider());
85
89
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/lib/subscribe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/lib/subscribe.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { EntitySchema } from '@mostajs/orm';
1
+ import type { EntitySchema } from '@mostajs/data-plug';
2
2
  export declare const InvoiceSchema: EntitySchema;
3
3
  //# sourceMappingURL=invoice.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoice.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/invoice.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,aAAa,EAAE,YA0B3B,CAAA"}
1
+ {"version":3,"file":"invoice.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/invoice.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,eAAO,MAAM,aAAa,EAAE,YA0B3B,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { EntitySchema } from '@mostajs/orm';
1
+ import type { EntitySchema } from '@mostajs/data-plug';
2
2
  export declare const PlanSchema: EntitySchema;
3
3
  //# sourceMappingURL=plan.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/plan.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,UAAU,EAAE,YAwBxB,CAAA"}
1
+ {"version":3,"file":"plan.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/plan.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,eAAO,MAAM,UAAU,EAAE,YAwBxB,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { EntitySchema } from '@mostajs/orm';
1
+ import type { EntitySchema } from '@mostajs/data-plug';
2
2
  export declare const SubscriptionSchema: EntitySchema;
3
3
  //# sourceMappingURL=subscription.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/subscription.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,kBAAkB,EAAE,YAuBhC,CAAA"}
1
+ {"version":3,"file":"subscription.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/subscription.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,eAAO,MAAM,kBAAkB,EAAE,YAuBhC,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { EntitySchema } from '@mostajs/orm';
1
+ import type { EntitySchema } from '@mostajs/data-plug';
2
2
  export declare const UsageLogSchema: EntitySchema;
3
3
  //# sourceMappingURL=usage-log.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-log.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/usage-log.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,YAuB5B,CAAA"}
1
+ {"version":3,"file":"usage-log.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/usage-log.schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,eAAO,MAAM,cAAc,EAAE,YAuB5B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/subscriptions-plan",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "Subscription plans, billing, invoices and usage tracking for @mostajs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,8 +30,9 @@
30
30
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
31
31
  "license": "AGPL-3.0-or-later",
32
32
  "peerDependencies": {
33
- "@mostajs/orm": "^1.8.0",
34
- "@mostajs/payment": ">=0.2.0",
33
+ "@mostajs/config": "^1.0.0",
34
+ "@mostajs/data-plug": "^1.2.4",
35
+ "@mostajs/payment": ">=0.4.2",
35
36
  "next": ">=14.0.0",
36
37
  "react": ">=18.0.0",
37
38
  "stripe": ">=17.0.0"
@@ -51,8 +52,9 @@
51
52
  }
52
53
  },
53
54
  "devDependencies": {
54
- "@mostajs/orm": "file:../mosta-orm",
55
- "@mostajs/payment": "file:../mosta-payment",
55
+ "@mostajs/data-plug": "^1.2.4",
56
+ "@mostajs/orm": "^1.13.1",
57
+ "@mostajs/payment": "^0.4.1",
56
58
  "@types/node": "^22.0.0",
57
59
  "better-sqlite3": "^12.0.0",
58
60
  "tsx": "^4.0.0",