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

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-BWU_1hsh.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>>;
@@ -1305,6 +1335,8 @@ export declare class PaywallUI {
1305
1335
  private lastVisibility;
1306
1336
  /** Поведение open() при холодном bootstrap'е. См. PaywallUIOptions.mountThenLoad. */
1307
1337
  private mountThenLoad;
1338
+ /** Inline-режим (live-preview редактора). См. PaywallUIOptions.inline. */
1339
+ private inline;
1308
1340
  /** Текущий snapshot UI state-machine. Обновляется PaywallRoot'ом через
1309
1341
  * `onState` prop; при close сбрасывается обратно в CLOSED_STATE. */
1310
1342
  private currentState;
@@ -1327,6 +1359,17 @@ export declare class PaywallUI {
1327
1359
  * last-known user из кеша синхронно через microtask, если он есть.
1328
1360
  */
1329
1361
  onUserChange(handler: PaywallEventHandler<'userChange'>): () => void;
1362
+ /**
1363
+ * Заменить cachedBootstrap живыми данными — для preview-режима в редакторе
1364
+ * админки. Если модалка открыта, PaywallRoot подписан на onBootstrapChange
1365
+ * и перерендерится мгновенно. До open() — затравка для bootstrap()-effect'а.
1366
+ *
1367
+ * См. {@link BillingClientOptions.preview} — обычно эту опцию ставят на
1368
+ * клиент, чтобы заодно отключить сетевой revalidate. setBootstrap технически
1369
+ * работает и в production-режиме, но конкуренция с revalidate'ом из сети
1370
+ * почти всегда нежелательна.
1371
+ */
1372
+ setBootstrap(partial: Partial<PaywallBootstrap>): void;
1330
1373
  on<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): () => void;
1331
1374
  off<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): void;
1332
1375
  private emit;
@@ -1518,6 +1561,14 @@ export declare interface PaywallUIOptions extends Omit<BillingClientOptions, 'au
1518
1561
  * флеш на blocked-странах/устройствах хуже воспринимаемой латентности.
1519
1562
  */
1520
1563
  mountThenLoad?: boolean;
1564
+ /**
1565
+ * Inline-режим для live-preview редактора админки. Host позиционируется
1566
+ * `absolute inset:0` внутри родителя (вместо fixed-viewport'а), overlay
1567
+ * Modal'а тоже становится absolute, body-scroll не лочится. ОБЯЗАТЕЛЬНО
1568
+ * передавать `host` (HTMLElement) с positioned parent'ом — иначе absolute
1569
+ * уйдёт к ближайшему positioned ancestor'у или к html. По умолчанию false.
1570
+ */
1571
+ inline?: boolean;
1521
1572
  }
1522
1573
 
1523
1574
  export declare interface PaywallUser {
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-C3W0eKDo.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-BWU_1hsh.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>>;
@@ -1244,6 +1274,8 @@ export declare class PaywallUI {
1244
1274
  private lastVisibility;
1245
1275
  /** Поведение open() при холодном bootstrap'е. См. PaywallUIOptions.mountThenLoad. */
1246
1276
  private mountThenLoad;
1277
+ /** Inline-режим (live-preview редактора). См. PaywallUIOptions.inline. */
1278
+ private inline;
1247
1279
  /** Текущий snapshot UI state-machine. Обновляется PaywallRoot'ом через
1248
1280
  * `onState` prop; при close сбрасывается обратно в CLOSED_STATE. */
1249
1281
  private currentState;
@@ -1266,6 +1298,17 @@ export declare class PaywallUI {
1266
1298
  * last-known user из кеша синхронно через microtask, если он есть.
1267
1299
  */
1268
1300
  onUserChange(handler: PaywallEventHandler<'userChange'>): () => void;
1301
+ /**
1302
+ * Заменить cachedBootstrap живыми данными — для preview-режима в редакторе
1303
+ * админки. Если модалка открыта, PaywallRoot подписан на onBootstrapChange
1304
+ * и перерендерится мгновенно. До open() — затравка для bootstrap()-effect'а.
1305
+ *
1306
+ * См. {@link BillingClientOptions.preview} — обычно эту опцию ставят на
1307
+ * клиент, чтобы заодно отключить сетевой revalidate. setBootstrap технически
1308
+ * работает и в production-режиме, но конкуренция с revalidate'ом из сети
1309
+ * почти всегда нежелательна.
1310
+ */
1311
+ setBootstrap(partial: Partial<PaywallBootstrap>): void;
1269
1312
  on<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): () => void;
1270
1313
  off<E extends PaywallEvent>(event: E, handler: PaywallEventHandler<E>): void;
1271
1314
  private emit;
@@ -1457,6 +1500,14 @@ export declare interface PaywallUIOptions extends Omit<BillingClientOptions, 'au
1457
1500
  * флеш на blocked-странах/устройствах хуже воспринимаемой латентности.
1458
1501
  */
1459
1502
  mountThenLoad?: boolean;
1503
+ /**
1504
+ * Inline-режим для live-preview редактора админки. Host позиционируется
1505
+ * `absolute inset:0` внутри родителя (вместо fixed-viewport'а), overlay
1506
+ * Modal'а тоже становится absolute, body-scroll не лочится. ОБЯЗАТЕЛЬНО
1507
+ * передавать `host` (HTMLElement) с positioned parent'ом — иначе absolute
1508
+ * уйдёт к ближайшему positioned ancestor'у или к html. По умолчанию false.
1509
+ */
1510
+ inline?: boolean;
1460
1511
  }
1461
1512
 
1462
1513
  declare interface PaywallUser {
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-C3W0eKDo.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.3",
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,