@monetize.software/sdk 3.0.0-alpha.1 → 3.0.0-alpha.2

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/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./core.cjs"),r=require("./chunks/PaywallUI-Dr-6q-HL.js");exports.ApiClient=e.ApiClient;exports.ApiGatewayClient=e.ApiGatewayClient;exports.AuthClient=e.AuthClient;exports.BillingClient=e.BillingClient;exports.EventTracker=e.EventTracker;exports.PaywallError=e.PaywallError;exports.QuotaExceededError=e.QuotaExceededError;exports.SDK_VERSION=e.SDK_VERSION;exports.STORAGE_KEYS=e.STORAGE_KEYS;exports.createStorage=e.createStorage;exports.ensureVisitorId=e.ensureVisitorId;exports.generateVisitorId=e.generateVisitorId;exports.PaywallUI=r.PaywallUI;exports.blockRegistry=r.blockRegistry;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./core.cjs"),r=require("./chunks/PaywallUI-CbbcfXXZ.js");exports.ApiClient=e.ApiClient;exports.ApiGatewayClient=e.ApiGatewayClient;exports.AuthClient=e.AuthClient;exports.BillingClient=e.BillingClient;exports.EventTracker=e.EventTracker;exports.PaywallError=e.PaywallError;exports.QuotaExceededError=e.QuotaExceededError;exports.SDK_VERSION=e.SDK_VERSION;exports.STORAGE_KEYS=e.STORAGE_KEYS;exports.createStorage=e.createStorage;exports.ensureVisitorId=e.ensureVisitorId;exports.generateVisitorId=e.generateVisitorId;exports.PaywallUI=r.PaywallUI;exports.blockRegistry=r.blockRegistry;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -514,6 +514,8 @@ export declare class BillingClient {
514
514
  private balancesStorageUnwatch;
515
515
  private inflightBalances;
516
516
  private balanceListeners;
517
+ private readonly previewMode;
518
+ private previewVersionCounter;
517
519
  constructor(opts: BillingClientOptions);
518
520
  /**
519
521
  * Stable visitor_id (UUID v4). Первый вызов awaitит первичный резолв из
@@ -546,6 +548,24 @@ export declare class BillingClient {
546
548
  * unsubscribe.
547
549
  */
548
550
  onBootstrapChange(cb: (b: PaywallBootstrap) => void): () => void;
551
+ /**
552
+ * Заменить cachedBootstrap частичными или полными данными и эмитнуть всем
553
+ * подписчикам. Используется host'ом в preview-mode (редактор админки) для
554
+ * live-обновления открытой модалки без сетевого revalidate'а.
555
+ *
556
+ * Поведение:
557
+ * - Без `cachedBootstrap` ожидаются как минимум `settings` + `prices` —
558
+ * иначе PaywallRoot не сможет отрендерить тарифы и упадёт.
559
+ * - С существующим кешем партиал мёрджится поверх: `settings` глубокий мёрдж
560
+ * на 1 уровень (поля настроек), массивы `prices`/`offers` перезаписываются.
561
+ * - Каждый вызов бампит `version` ("preview:<n>"), чтобы applyBootstrap'овая
562
+ * проверка `versionChanged` всегда срабатывала и listener'ы дёргались.
563
+ * - Persist в storage НЕ делаем — preview не должен утекать в другие вкладки.
564
+ *
565
+ * В non-preview режиме метод доступен, но это редкий путь (например, для
566
+ * тестов host'а) — production-код должен полагаться на bootstrap() + revalidate.
567
+ */
568
+ setBootstrap(partial: Partial<PaywallBootstrap>): void;
549
569
  private fetchBootstrap;
550
570
  private revalidateBootstrap;
551
571
  private applyBootstrap;
@@ -817,6 +837,16 @@ export declare interface BillingClientOptions {
817
837
  * через `setIdentity`, Bearer не отправляется.
818
838
  */
819
839
  auth?: AuthClient;
840
+ /**
841
+ * Preview/editor-mode. Когда true:
842
+ * - `bootstrap()` НЕ ходит в сеть — отдаёт только `cachedBootstrap`, заданный
843
+ * через `setBootstrap()`. Без seed'а throw'ает (caller обязан засидить до open).
844
+ * - Storage.watch / persist отключены (preview редактора локален для текущей вкладки).
845
+ * - `setBootstrap(partial)` доступен как публичный setter — host'у разрешено
846
+ * мутировать кеш для live-обновления модалки в редакторе админки.
847
+ * Дефолт false — обычный production-режим.
848
+ */
849
+ preview?: boolean;
820
850
  }
821
851
 
822
852
  export declare type BlockComponent<B extends LayoutBlock = LayoutBlock> = ComponentType<BlockProps<B>>;
@@ -1327,6 +1357,17 @@ export declare class PaywallUI {
1327
1357
  * last-known user из кеша синхронно через microtask, если он есть.
1328
1358
  */
1329
1359
  onUserChange(handler: PaywallEventHandler<'userChange'>): () => void;
1360
+ /**
1361
+ * Заменить cachedBootstrap живыми данными — для preview-режима в редакторе
1362
+ * админки. Если модалка открыта, PaywallRoot подписан на onBootstrapChange
1363
+ * и перерендерится мгновенно. До open() — затравка для bootstrap()-effect'а.
1364
+ *
1365
+ * См. {@link BillingClientOptions.preview} — обычно эту опцию ставят на
1366
+ * клиент, чтобы заодно отключить сетевой revalidate. setBootstrap технически
1367
+ * работает и в production-режиме, но конкуренция с revalidate'ом из сети
1368
+ * почти всегда нежелательна.
1369
+ */
1370
+ setBootstrap(partial: Partial<PaywallBootstrap>): void;
1330
1371
  on<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): () => void;
1331
1372
  off<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): void;
1332
1373
  private emit;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ApiClient as t, ApiGatewayClient as a, AuthClient as i, BillingClient as l, EventTracker as o, PaywallError as n, QuotaExceededError as E, SDK_VERSION as s, STORAGE_KEYS as S, createStorage as c, ensureVisitorId as d, generateVisitorId as g } from "./core.js";
2
- import { P as y, b as A } from "./chunks/PaywallUI-BHp9afFC.js";
2
+ import { P as y, b as A } from "./chunks/PaywallUI-CRTEPjJm.js";
3
3
  export {
4
4
  t as ApiClient,
5
5
  a as ApiGatewayClient,
package/dist/ui.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/PaywallUI-Dr-6q-HL.js");exports.PaywallUI=e.PaywallUI;exports.blockRegistry=e.blockRegistry;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chunks/PaywallUI-CbbcfXXZ.js");exports.PaywallUI=e.PaywallUI;exports.blockRegistry=e.blockRegistry;
2
2
  //# sourceMappingURL=ui.cjs.map
package/dist/ui.d.ts CHANGED
@@ -500,6 +500,8 @@ declare class BillingClient {
500
500
  private balancesStorageUnwatch;
501
501
  private inflightBalances;
502
502
  private balanceListeners;
503
+ private readonly previewMode;
504
+ private previewVersionCounter;
503
505
  constructor(opts: BillingClientOptions);
504
506
  /**
505
507
  * Stable visitor_id (UUID v4). Первый вызов awaitит первичный резолв из
@@ -532,6 +534,24 @@ declare class BillingClient {
532
534
  * unsubscribe.
533
535
  */
534
536
  onBootstrapChange(cb: (b: PaywallBootstrap) => void): () => void;
537
+ /**
538
+ * Заменить cachedBootstrap частичными или полными данными и эмитнуть всем
539
+ * подписчикам. Используется host'ом в preview-mode (редактор админки) для
540
+ * live-обновления открытой модалки без сетевого revalidate'а.
541
+ *
542
+ * Поведение:
543
+ * - Без `cachedBootstrap` ожидаются как минимум `settings` + `prices` —
544
+ * иначе PaywallRoot не сможет отрендерить тарифы и упадёт.
545
+ * - С существующим кешем партиал мёрджится поверх: `settings` глубокий мёрдж
546
+ * на 1 уровень (поля настроек), массивы `prices`/`offers` перезаписываются.
547
+ * - Каждый вызов бампит `version` ("preview:<n>"), чтобы applyBootstrap'овая
548
+ * проверка `versionChanged` всегда срабатывала и listener'ы дёргались.
549
+ * - Persist в storage НЕ делаем — preview не должен утекать в другие вкладки.
550
+ *
551
+ * В non-preview режиме метод доступен, но это редкий путь (например, для
552
+ * тестов host'а) — production-код должен полагаться на bootstrap() + revalidate.
553
+ */
554
+ setBootstrap(partial: Partial<PaywallBootstrap>): void;
535
555
  private fetchBootstrap;
536
556
  private revalidateBootstrap;
537
557
  private applyBootstrap;
@@ -803,6 +823,16 @@ declare interface BillingClientOptions {
803
823
  * через `setIdentity`, Bearer не отправляется.
804
824
  */
805
825
  auth?: AuthClient;
826
+ /**
827
+ * Preview/editor-mode. Когда true:
828
+ * - `bootstrap()` НЕ ходит в сеть — отдаёт только `cachedBootstrap`, заданный
829
+ * через `setBootstrap()`. Без seed'а throw'ает (caller обязан засидить до open).
830
+ * - Storage.watch / persist отключены (preview редактора локален для текущей вкладки).
831
+ * - `setBootstrap(partial)` доступен как публичный setter — host'у разрешено
832
+ * мутировать кеш для live-обновления модалки в редакторе админки.
833
+ * Дефолт false — обычный production-режим.
834
+ */
835
+ preview?: boolean;
806
836
  }
807
837
 
808
838
  export declare type BlockComponent<B extends LayoutBlock = LayoutBlock> = ComponentType<BlockProps<B>>;
@@ -1266,6 +1296,17 @@ export declare class PaywallUI {
1266
1296
  * last-known user из кеша синхронно через microtask, если он есть.
1267
1297
  */
1268
1298
  onUserChange(handler: PaywallEventHandler<'userChange'>): () => void;
1299
+ /**
1300
+ * Заменить cachedBootstrap живыми данными — для preview-режима в редакторе
1301
+ * админки. Если модалка открыта, PaywallRoot подписан на onBootstrapChange
1302
+ * и перерендерится мгновенно. До open() — затравка для bootstrap()-effect'а.
1303
+ *
1304
+ * См. {@link BillingClientOptions.preview} — обычно эту опцию ставят на
1305
+ * клиент, чтобы заодно отключить сетевой revalidate. setBootstrap технически
1306
+ * работает и в production-режиме, но конкуренция с revalidate'ом из сети
1307
+ * почти всегда нежелательна.
1308
+ */
1309
+ setBootstrap(partial: Partial<PaywallBootstrap>): void;
1269
1310
  on<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): () => void;
1270
1311
  off<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): void;
1271
1312
  private emit;
package/dist/ui.js CHANGED
@@ -1,4 +1,4 @@
1
- import { P as o, b as r } from "./chunks/PaywallUI-BHp9afFC.js";
1
+ import { P as o, b as r } from "./chunks/PaywallUI-CRTEPjJm.js";
2
2
  export {
3
3
  o as PaywallUI,
4
4
  r as blockRegistry
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monetize.software/sdk",
3
- "version": "3.0.0-alpha.1",
3
+ "version": "3.0.0-alpha.2",
4
4
  "description": "Monetize SDK — bundled billing client and paywall render engine for web and Chrome extensions",
5
5
  "type": "module",
6
6
  "sideEffects": false,