@monetize.software/sdk 3.0.0-alpha.4 → 3.0.0-alpha.5
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/chunks/PaywallUI-BD5hRY2P.js +26 -0
- package/dist/chunks/PaywallUI-BD5hRY2P.js.map +1 -0
- package/dist/chunks/PaywallUI-D7lp-bC5.js +3206 -0
- package/dist/chunks/PaywallUI-D7lp-bC5.js.map +1 -0
- package/dist/chunks/ar-BCHXVoE2.js +114 -0
- package/dist/chunks/ar-BCHXVoE2.js.map +1 -0
- package/dist/chunks/ar-CsJNZJSr.js +2 -0
- package/dist/chunks/ar-CsJNZJSr.js.map +1 -0
- package/dist/chunks/cs-B5NqpTW_.js +110 -0
- package/dist/chunks/cs-B5NqpTW_.js.map +1 -0
- package/dist/chunks/cs-BydWUC0e.js +2 -0
- package/dist/chunks/cs-BydWUC0e.js.map +1 -0
- package/dist/chunks/da-BJrGZ3LD.js +110 -0
- package/dist/chunks/da-BJrGZ3LD.js.map +1 -0
- package/dist/chunks/da-DNhiAQnh.js +2 -0
- package/dist/chunks/da-DNhiAQnh.js.map +1 -0
- package/dist/chunks/de-H8ztFOie.js +2 -0
- package/dist/chunks/de-H8ztFOie.js.map +1 -0
- package/dist/chunks/de-aepBKwsb.js +130 -0
- package/dist/chunks/de-aepBKwsb.js.map +1 -0
- package/dist/chunks/el-DRfoadtI.js +2 -0
- package/dist/chunks/el-DRfoadtI.js.map +1 -0
- package/dist/chunks/el-DTLQoX2D.js +114 -0
- package/dist/chunks/el-DTLQoX2D.js.map +1 -0
- package/dist/chunks/es-CLutF-D_.js +130 -0
- package/dist/chunks/es-CLutF-D_.js.map +1 -0
- package/dist/chunks/es-GlaYesNR.js +2 -0
- package/dist/chunks/es-GlaYesNR.js.map +1 -0
- package/dist/chunks/fi-BIHFyScH.js +2 -0
- package/dist/chunks/fi-BIHFyScH.js.map +1 -0
- package/dist/chunks/fi-DZ4csxqk.js +110 -0
- package/dist/chunks/fi-DZ4csxqk.js.map +1 -0
- package/dist/chunks/fr-BtZILUNZ.js +2 -0
- package/dist/chunks/fr-BtZILUNZ.js.map +1 -0
- package/dist/chunks/fr-jJU1SSpj.js +130 -0
- package/dist/chunks/fr-jJU1SSpj.js.map +1 -0
- package/dist/chunks/he-D9obGPNj.js +114 -0
- package/dist/chunks/he-D9obGPNj.js.map +1 -0
- package/dist/chunks/he-vSDRE4Nn.js +2 -0
- package/dist/chunks/he-vSDRE4Nn.js.map +1 -0
- package/dist/chunks/hi-B90FsnP6.js +2 -0
- package/dist/chunks/hi-B90FsnP6.js.map +1 -0
- package/dist/chunks/hi-pM8SQwZ3.js +114 -0
- package/dist/chunks/hi-pM8SQwZ3.js.map +1 -0
- package/dist/chunks/hu-DWVFODsS.js +2 -0
- package/dist/chunks/hu-DWVFODsS.js.map +1 -0
- package/dist/chunks/hu-E0m9WgbD.js +110 -0
- package/dist/chunks/hu-E0m9WgbD.js.map +1 -0
- package/dist/chunks/id-C6poPvby.js +110 -0
- package/dist/chunks/id-C6poPvby.js.map +1 -0
- package/dist/chunks/id-Ce2gzMVT.js +2 -0
- package/dist/chunks/id-Ce2gzMVT.js.map +1 -0
- package/dist/chunks/it-B2RSFyVd.js +130 -0
- package/dist/chunks/it-B2RSFyVd.js.map +1 -0
- package/dist/chunks/it-u-Gu44bl.js +2 -0
- package/dist/chunks/it-u-Gu44bl.js.map +1 -0
- package/dist/chunks/ja-CM-VgVG6.js +134 -0
- package/dist/chunks/ja-CM-VgVG6.js.map +1 -0
- package/dist/chunks/ja-CQy8RaRa.js +2 -0
- package/dist/chunks/ja-CQy8RaRa.js.map +1 -0
- package/dist/chunks/ko-BRnb7vJ7.js +2 -0
- package/dist/chunks/ko-BRnb7vJ7.js.map +1 -0
- package/dist/chunks/ko-C451fA21.js +134 -0
- package/dist/chunks/ko-C451fA21.js.map +1 -0
- package/dist/chunks/nl-CJelco6J.js +2 -0
- package/dist/chunks/nl-CJelco6J.js.map +1 -0
- package/dist/chunks/nl-DzQfJPo2.js +130 -0
- package/dist/chunks/nl-DzQfJPo2.js.map +1 -0
- package/dist/chunks/no-B51be8KT.js +110 -0
- package/dist/chunks/no-B51be8KT.js.map +1 -0
- package/dist/chunks/no-BwTjSZ4K.js +2 -0
- package/dist/chunks/no-BwTjSZ4K.js.map +1 -0
- package/dist/chunks/pl-5rTEkvfY.js +110 -0
- package/dist/chunks/pl-5rTEkvfY.js.map +1 -0
- package/dist/chunks/pl-kO82vcjb.js +2 -0
- package/dist/chunks/pl-kO82vcjb.js.map +1 -0
- package/dist/chunks/pt-CsJzaSjg.js +2 -0
- package/dist/chunks/pt-CsJzaSjg.js.map +1 -0
- package/dist/chunks/pt-JwqffZ9u.js +130 -0
- package/dist/chunks/pt-JwqffZ9u.js.map +1 -0
- package/dist/chunks/ro-BE_wJ1td.js +110 -0
- package/dist/chunks/ro-BE_wJ1td.js.map +1 -0
- package/dist/chunks/ro-ue15Ina4.js +2 -0
- package/dist/chunks/ro-ue15Ina4.js.map +1 -0
- package/dist/chunks/ru-B1iMOhX0.js +2 -0
- package/dist/chunks/ru-B1iMOhX0.js.map +1 -0
- package/dist/chunks/ru-BviATvLb.js +124 -0
- package/dist/chunks/ru-BviATvLb.js.map +1 -0
- package/dist/chunks/sv-CkNYpUVy.js +2 -0
- package/dist/chunks/sv-CkNYpUVy.js.map +1 -0
- package/dist/chunks/sv-DabGF9WL.js +110 -0
- package/dist/chunks/sv-DabGF9WL.js.map +1 -0
- package/dist/chunks/th-BiF-bNo0.js +114 -0
- package/dist/chunks/th-BiF-bNo0.js.map +1 -0
- package/dist/chunks/th-Cu80HK4y.js +2 -0
- package/dist/chunks/th-Cu80HK4y.js.map +1 -0
- package/dist/chunks/tr-B7c0afXV.js +2 -0
- package/dist/chunks/tr-B7c0afXV.js.map +1 -0
- package/dist/chunks/tr-xZuly8X8.js +110 -0
- package/dist/chunks/tr-xZuly8X8.js.map +1 -0
- package/dist/chunks/uk-BO106B0H.js +2 -0
- package/dist/chunks/uk-BO106B0H.js.map +1 -0
- package/dist/chunks/uk-KlkAaHuy.js +124 -0
- package/dist/chunks/uk-KlkAaHuy.js.map +1 -0
- package/dist/chunks/vi-BVCeumNE.js +110 -0
- package/dist/chunks/vi-BVCeumNE.js.map +1 -0
- package/dist/chunks/vi-CZ6ow40D.js +2 -0
- package/dist/chunks/vi-CZ6ow40D.js.map +1 -0
- package/dist/chunks/zh-BhP80WI1.js +2 -0
- package/dist/chunks/zh-BhP80WI1.js.map +1 -0
- package/dist/chunks/zh-C_ghwmqi.js +134 -0
- package/dist/chunks/zh-C_ghwmqi.js.map +1 -0
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +81 -5
- package/dist/core.js +209 -171
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +81 -5
- package/dist/index.js +1 -1
- package/dist/ui.cjs +1 -1
- package/dist/ui.d.ts +81 -5
- package/dist/ui.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/PaywallUI-2bwf2scV.js +0 -2277
- package/dist/chunks/PaywallUI-2bwf2scV.js.map +0 -1
- package/dist/chunks/PaywallUI-Bu51__PT.js +0 -26
- package/dist/chunks/PaywallUI-Bu51__PT.js.map +0 -1
package/dist/core.d.ts
CHANGED
|
@@ -446,6 +446,18 @@ export declare class AuthClient {
|
|
|
446
446
|
private readAnonRefreshToken;
|
|
447
447
|
private writeAnonRefreshToken;
|
|
448
448
|
private clearAnonRefreshToken;
|
|
449
|
+
/**
|
|
450
|
+
* Last-used auth method + email — для UI бейджа "Last used" и pre-fill'а
|
|
451
|
+
* email-инпута. Storage paywall-scoped, поэтому переключение между
|
|
452
|
+
* пейволами на одном host'е не пересекает данные. Чтение всегда возвращает
|
|
453
|
+
* объект — отсутствующие поля = null. */
|
|
454
|
+
getLastLogin(): Promise<LastLogin | null>;
|
|
455
|
+
/** Запись method и email атомарно (для email/password flows — оба известны
|
|
456
|
+
* на момент signin/signup'а). OAuth-flows используют раздельные
|
|
457
|
+
* recordLastLoginMethod (до popup) и recordLastLoginEmail (после exchange). */
|
|
458
|
+
private recordLastLogin;
|
|
459
|
+
private recordLastLoginMethod;
|
|
460
|
+
private recordLastLoginEmail;
|
|
449
461
|
/**
|
|
450
462
|
* Читает stable visitor_id из storage если он там уже есть. НЕ генерит:
|
|
451
463
|
* AuthClient может быть инстанцирован раньше BillingClient, а синтетический
|
|
@@ -927,6 +939,18 @@ export declare interface Identity {
|
|
|
927
939
|
anonymousId?: string;
|
|
928
940
|
}
|
|
929
941
|
|
|
942
|
+
export declare interface LastLogin {
|
|
943
|
+
method: LastLoginMethod;
|
|
944
|
+
email: string | null;
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
/** Метод, которым юзер залогинился в последний раз на этом пейволе.
|
|
948
|
+
* Хранится per-paywall в storage и используется UI чтобы:
|
|
949
|
+
* - предзаполнить email-инпут last-known email'ом;
|
|
950
|
+
* - подсветить ту же OAuth-кнопку / email-форму бейджем "Last used".
|
|
951
|
+
* `email` — email/password forms (signin или signup → confirm). */
|
|
952
|
+
export declare type LastLoginMethod = OAuthProvider | 'email';
|
|
953
|
+
|
|
930
954
|
export declare interface Layout {
|
|
931
955
|
type: 'modal';
|
|
932
956
|
blocks: LayoutBlock[];
|
|
@@ -942,9 +966,13 @@ export declare type LayoutBlock = {
|
|
|
942
966
|
} | {
|
|
943
967
|
type: 'price_grid';
|
|
944
968
|
priceIds?: string[];
|
|
945
|
-
/** Раскладка карточек
|
|
946
|
-
* `
|
|
947
|
-
|
|
969
|
+
/** Раскладка карточек цен:
|
|
970
|
+
* - `vertical` (default) — стек карточек сверху вниз;
|
|
971
|
+
* - `compact` — компактный список (одна строка на цену, без карточки,
|
|
972
|
+
* с разделителем); v2-аналог `view: 'telegram'`;
|
|
973
|
+
* - `horizontal` — несколько карточек рядом в ряд; v2-only с момента
|
|
974
|
+
* SDK 3.0 (legacy не показывает выбор этой опции в админке). */
|
|
975
|
+
view?: 'vertical' | 'compact' | 'horizontal';
|
|
948
976
|
/** ID цены, которая помечается лейблом «популярный план». v2-аналог
|
|
949
977
|
* пары `price_label_id` + `price_label`. */
|
|
950
978
|
popular_price_id?: string;
|
|
@@ -953,7 +981,10 @@ export declare type LayoutBlock = {
|
|
|
953
981
|
popular_label?: string;
|
|
954
982
|
} | {
|
|
955
983
|
type: 'cta_button';
|
|
956
|
-
|
|
984
|
+
/** Текст на кнопке. Если не задан — рендерер сам подберёт по
|
|
985
|
+
* selected price'у и `trial_days`: "Start N-Day Free Trial",
|
|
986
|
+
* "Get Lifetime Access", "Get Monthly Plan" и т.п. */
|
|
987
|
+
label?: string;
|
|
957
988
|
action: 'checkout' | 'close';
|
|
958
989
|
priceId?: string;
|
|
959
990
|
} | {
|
|
@@ -972,8 +1003,23 @@ export declare type LayoutBlock = {
|
|
|
972
1003
|
/** Скрывать панель, если юзер уже залогинен. По умолчанию true.
|
|
973
1004
|
* false — показываем "Signed in as ... [Sign out]" даже после логина. */
|
|
974
1005
|
hide_when_authenticated?: boolean;
|
|
975
|
-
/**
|
|
1006
|
+
/** Кастомный заголовок над формой. Если задан — отображается вместо
|
|
1007
|
+
* дефолтного (определяется по mode'у — "Welcome back!" / "Welcome!" /
|
|
1008
|
+
* "Forgot password?" / ...). Без `submit_label` также используется как
|
|
1009
|
+
* submit-лейбл для signin (например `heading="Restore Purchases"` →
|
|
1010
|
+
* submit тоже "Restore Purchases"). Длинные heading (типа "Войдите,
|
|
1011
|
+
* чтобы продолжить покупку") в кнопку влезают плохо — задай
|
|
1012
|
+
* `submit_label` отдельно. */
|
|
976
1013
|
heading?: string;
|
|
1014
|
+
/** Подпись под заголовком. Если опущен — подставляется default-текст
|
|
1015
|
+
* для текущего mode'а. Передай пустую строку чтобы скрыть подпись. */
|
|
1016
|
+
subheading?: string;
|
|
1017
|
+
/** Явный текст submit-кнопки. Имеет приоритет над heading-эхо. Нужен
|
|
1018
|
+
* для интентов с длинным descriptive heading'ом (preauth: "Войдите,
|
|
1019
|
+
* чтобы продолжить покупку" — кнопка только "Войти"). Для коротких
|
|
1020
|
+
* action-headings (restore: "Restore Purchases") опускай — эхо
|
|
1021
|
+
* даёт правильный UX. */
|
|
1022
|
+
submit_label?: string;
|
|
977
1023
|
} | {
|
|
978
1024
|
/** Список фич/преимуществ продукта. v2-аналог `features_list` + `features_view`.
|
|
979
1025
|
* До 5 элементов — рендерим как чек-лист с заголовком и описанием. */
|
|
@@ -1010,6 +1056,22 @@ export declare type LayoutBlock = {
|
|
|
1010
1056
|
/** Иконка слева от заголовка. По умолчанию `dollar_shield` —
|
|
1011
1057
|
* зелёный shield с долларом (legacy-вид). `none` — без иконки. */
|
|
1012
1058
|
icon?: 'dollar_shield' | 'none';
|
|
1059
|
+
} | {
|
|
1060
|
+
/** Urgency-баннер с countdown'ом до конца offer'а. Берёт первый offer
|
|
1061
|
+
* из `bootstrap.offers` с валидным `expires_at` или `duration_minutes`.
|
|
1062
|
+
* Авто-скрывается по истечении, чтобы не показывать "0d 0h 0m 0s".
|
|
1063
|
+
* Размещение — обычно первый блок в layout (над heading). */
|
|
1064
|
+
type: 'offer_banner';
|
|
1065
|
+
/** ID конкретного offer'а из bootstrap.offers. Если не задано — берётся
|
|
1066
|
+
* первый offer с активным таймером. */
|
|
1067
|
+
offer_id?: string;
|
|
1068
|
+
/** Текст слева от countdown'а. Если опущен — берётся `offer.label`,
|
|
1069
|
+
* иначе fallback "Limited-time offer". К нему дописывается процент:
|
|
1070
|
+
* "{title} {discount_percent}%" если discount задан. */
|
|
1071
|
+
title?: string;
|
|
1072
|
+
/** В превью админки — игнорировать expired-state, всё равно показывать
|
|
1073
|
+
* banner с нулями. Прод-режим — false (banner исчезает). */
|
|
1074
|
+
force?: boolean;
|
|
1013
1075
|
};
|
|
1014
1076
|
|
|
1015
1077
|
/** Локализационные оверрайды для одного языка. Накатываются поверх дефолтного
|
|
@@ -1064,7 +1126,15 @@ export declare class PaywallError extends Error {
|
|
|
1064
1126
|
export declare interface PaywallOffer {
|
|
1065
1127
|
id: string;
|
|
1066
1128
|
discount_percent: number | null;
|
|
1129
|
+
/** Абсолютная expiration date (ISO 8601). Если задана — countdown отсчитывает
|
|
1130
|
+
* до этого момента, по истечении offer считается истёкшим. */
|
|
1067
1131
|
expires_at: string | null;
|
|
1132
|
+
/** Относительный таймер: сколько минут offer живёт **от первого просмотра
|
|
1133
|
+
* пейвола** данным юзером. Старт хранится в clientStorage под ключом
|
|
1134
|
+
* `pw-offer-{id}-start`, по истечении — auto-cleanup. Используется, когда
|
|
1135
|
+
* бэк хочет показывать "remaining time" без жёсткой server-time, а считать
|
|
1136
|
+
* относительно сессии юзера. expires_at имеет приоритет если задано. */
|
|
1137
|
+
duration_minutes?: number | null;
|
|
1068
1138
|
price_id: string | null;
|
|
1069
1139
|
label?: string | null;
|
|
1070
1140
|
}
|
|
@@ -1179,6 +1249,12 @@ export declare interface PaywallUser {
|
|
|
1179
1249
|
started_at: string | null;
|
|
1180
1250
|
expires_at: string | null;
|
|
1181
1251
|
} | null;
|
|
1252
|
+
/** Был ли у юзера хотя бы один trial по этому пейволу когда-либо (включая
|
|
1253
|
+
* истёкшие и отменённые). Anti-abuse флаг для UI: CtaButton скрывает
|
|
1254
|
+
* "Start N-Day Free Trial" если true. Серверный enforcement в
|
|
1255
|
+
* `/start-checkout` дублирует — даже если UI обмануть, бэк не отдаст
|
|
1256
|
+
* trial_days в Stripe/Paddle. */
|
|
1257
|
+
had_previous_trial: boolean;
|
|
1182
1258
|
}
|
|
1183
1259
|
|
|
1184
1260
|
export declare interface PaywallUserPurchase {
|