@webority/mobile-core 0.15.0 → 0.16.1
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 +4 -0
- package/lib/commonjs/errors/extractApiError.js +1 -1
- package/lib/commonjs/errors/index.js +1 -1
- package/lib/commonjs/formatters/currency.js +1 -1
- package/lib/commonjs/formatters/house.js +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/initSDK.js +1 -1
- package/lib/commonjs/logger/index.js +1 -1
- package/lib/commonjs/logger/redact.js +1 -1
- package/lib/commonjs/push/push.js +1 -1
- package/lib/commonjs/utils/imageCompression.js +1 -1
- package/lib/module/errors/extractApiError.js +1 -1
- package/lib/module/errors/index.js +1 -1
- package/lib/module/formatters/currency.js +1 -1
- package/lib/module/formatters/house.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/initSDK.js +1 -1
- package/lib/module/logger/index.js +1 -1
- package/lib/module/logger/redact.js +1 -1
- package/lib/module/push/push.js +1 -1
- package/lib/module/utils/imageCompression.js +1 -1
- package/lib/typescript/commonjs/errors/extractApiError.d.ts +9 -6
- package/lib/typescript/commonjs/errors/index.d.ts +1 -1
- package/lib/typescript/commonjs/formatters/currency.d.ts +10 -9
- package/lib/typescript/commonjs/formatters/house.d.ts +2 -36
- package/lib/typescript/commonjs/index.d.ts +3 -3
- package/lib/typescript/commonjs/initSDK.d.ts +9 -1
- package/lib/typescript/commonjs/logger/crashlytics.d.ts +3 -3
- package/lib/typescript/commonjs/logger/index.d.ts +20 -8
- package/lib/typescript/commonjs/logger/redact.d.ts +2 -0
- package/lib/typescript/commonjs/push/push.d.ts +2 -0
- package/lib/typescript/module/errors/extractApiError.d.ts +9 -6
- package/lib/typescript/module/errors/index.d.ts +1 -1
- package/lib/typescript/module/formatters/currency.d.ts +10 -9
- package/lib/typescript/module/formatters/house.d.ts +2 -36
- package/lib/typescript/module/index.d.ts +3 -3
- package/lib/typescript/module/initSDK.d.ts +9 -1
- package/lib/typescript/module/logger/crashlytics.d.ts +3 -3
- package/lib/typescript/module/logger/index.d.ts +20 -8
- package/lib/typescript/module/logger/redact.d.ts +2 -0
- package/lib/typescript/module/push/push.d.ts +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -87,6 +87,8 @@ keeps push on calls `enablePush` at each start. `setBadgeCount(count)` sets the
|
|
|
87
87
|
been asked yet, `denied` when refused and the prompt can still show, `blocked` when only
|
|
88
88
|
Settings can turn it on). Call it at sign-in, and call `enablePush()` when the
|
|
89
89
|
person reaches a moment where asking makes sense.
|
|
90
|
+
- Every registered device carries `timeZone`, the phone's IANA zone (`Asia/Kolkata`), or null when
|
|
91
|
+
the platform reports none, so the server can send at the person's local time.
|
|
90
92
|
- Every registered device carries `apnsEnvironment`: `Development` or `Production` on iOS, read
|
|
91
93
|
from the build's `aps-environment` (expo-application), so the server sends each phone to the
|
|
92
94
|
APNs gateway its signing accepts. It is null on Android, and on iOS when it cannot be read (the
|
|
@@ -191,3 +193,5 @@ await userClient.get('/status', { skipErrorLog: true });
|
|
|
191
193
|
`Logger` masks secrets in every message and argument before any sink sees them: `Bearer` tokens,
|
|
192
194
|
JWT-shaped strings, and the values of keys named `token`, `accessToken`, `refreshToken`,
|
|
193
195
|
`password` and `authorization` (any case) in objects and JSON strings.
|
|
196
|
+
|
|
197
|
+
`configureLogger({ redactKeys })` adds app keys to the built-in masked list and never removes one. `Logger.getBreadcrumbs()` returns the last 50 breadcrumbs, oldest first, already redacted; `configureLogger({ breadcrumbLimit })` changes the cap. `initWebority` takes a required `remoteLogger`: the sink, or `null` for a build without crash reporting.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UNEXPECTED_MESSAGE=exports.TIMEOUT_MESSAGE=exports.TIMEOUT_CODE=exports.SERVER_FAILURE_MESSAGE=exports.REQUEST_CANCELED_CODE=exports.OFFLINE_MESSAGE=exports.NETWORK_CODE=exports.CONTRACT_ERROR_CODE=void 0,exports.apiErrorMessage=apiErrorMessage,exports.extractApiError=extractApiError,exports.toFieldPath=exports.isNoResponse=exports.isApiError=void 0;const SERVER_FAILURE_MESSAGE=exports.SERVER_FAILURE_MESSAGE="Something went wrong on our side. Please try again in a moment.",OFFLINE_MESSAGE=exports.OFFLINE_MESSAGE="You appear to be offline. Check your connection and try again.",TIMEOUT_MESSAGE=exports.TIMEOUT_MESSAGE="That took too long to respond. Check your connection and try again.",UNEXPECTED_MESSAGE=exports.UNEXPECTED_MESSAGE="Something went wrong. Please try again.",REQUEST_CANCELED_CODE=exports.REQUEST_CANCELED_CODE="request_canceled",CONTRACT_ERROR_CODE=exports.CONTRACT_ERROR_CODE="contract_error",TIMEOUT_CODE=exports.TIMEOUT_CODE="timeout",NETWORK_CODE=exports.NETWORK_CODE="network",MAX_MESSAGE_LENGTH=300,requestFailedMessage=e=>`Request failed (${e})`,isDict=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),nonEmptyString=e=>"string"==typeof e&&e.trim().length>0?e:null,looksLikeDiagnostics=e=>e.length>300||/^\s*</.test(e)||e.includes("\n at ")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UNREACHABLE_MESSAGE=exports.UNEXPECTED_MESSAGE=exports.TIMEOUT_MESSAGE=exports.TIMEOUT_CODE=exports.SERVER_FAILURE_MESSAGE=exports.REQUEST_CANCELED_CODE=exports.OFFLINE_MESSAGE=exports.OFFLINE_CODE=exports.NETWORK_CODE=exports.CONTRACT_ERROR_CODE=void 0,exports.apiErrorMessage=apiErrorMessage,exports.extractApiError=extractApiError,exports.toFieldPath=exports.isNoResponse=exports.isApiError=void 0;const SERVER_FAILURE_MESSAGE=exports.SERVER_FAILURE_MESSAGE="Something went wrong on our side. Please try again in a moment.",OFFLINE_MESSAGE=exports.OFFLINE_MESSAGE="You appear to be offline. Check your connection and try again.",TIMEOUT_MESSAGE=exports.TIMEOUT_MESSAGE="That took too long to respond. Check your connection and try again.",UNEXPECTED_MESSAGE=exports.UNEXPECTED_MESSAGE="Something went wrong. Please try again.",UNREACHABLE_MESSAGE=exports.UNREACHABLE_MESSAGE="We couldn't reach the server. Check your connection and try again.",REQUEST_CANCELED_CODE=exports.REQUEST_CANCELED_CODE="request_canceled",CONTRACT_ERROR_CODE=exports.CONTRACT_ERROR_CODE="contract_error",TIMEOUT_CODE=exports.TIMEOUT_CODE="timeout",NETWORK_CODE=exports.NETWORK_CODE="network",OFFLINE_CODE=exports.OFFLINE_CODE="offline",INTERNAL_ERROR_CODE="internal_error",MAX_MESSAGE_LENGTH=300,requestFailedMessage=e=>`Request failed (${e})`,isDict=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),nonEmptyString=e=>"string"==typeof e&&e.trim().length>0?e:null,looksLikeDiagnostics=e=>e.length>300||/^\s*</.test(e)||e.includes("\n at ")||/(Exception|StackTrace):/.test(e)||/\b(System|Microsoft)\.[A-Za-z]+\.[A-Za-z]/.test(e),userSafe=e=>{const r=nonEmptyString(e);return null===r||looksLikeDiagnostics(r)?null:r},toFieldPath=e=>e.replace(/^\$\.?/,"").split(".").map(e=>e.charAt(0).toLowerCase()+e.slice(1)).join(".");exports.toFieldPath=toFieldPath;const firstMessage=e=>{if(Array.isArray(e)){for(const r of e){const e=nonEmptyString(r);if(null!==e)return e}return null}return nonEmptyString(e)},addError=(e,r,t)=>{const E=toFieldPath(r);""===E?e.form??=t:E in e.fields||(e.fields[E]=t)},readErrors=e=>{const r={fields:{},form:null};if(Array.isArray(e)){for(const t of e){if(!isDict(t))continue;const e=nonEmptyString(t.message);null!==e&&addError(r,"string"==typeof t.field?t.field:"",e)}return r}if(!isDict(e))return r;for(const[t,E]of Object.entries(e)){const e=firstMessage(E);null!==e&&addError(r,t,e)}return r},readLegacyError=e=>{const r=e.error;return isDict(r)?nonEmptyString(r.message):nonEmptyString(r)},isApiError=e=>isDict(e)&&"string"==typeof e.message&&"number"==typeof e.status&&"boolean"==typeof e.offline&&isDict(e.fieldErrors);exports.isApiError=isApiError;const build=e=>({code:null,fieldErrors:{},status:0,offline:!1,traceId:null,detail:null,...e}),fromNoResponse=e=>{const r=nonEmptyString(e.code),t=nonEmptyString(e.name),E=nonEmptyString(e.message);return build("CanceledError"===t||"ERR_CANCELED"===r?{code:REQUEST_CANCELED_CODE,message:UNEXPECTED_MESSAGE,detail:E}:"ECONNABORTED"===r||"ETIMEDOUT"===r?{code:TIMEOUT_CODE,message:TIMEOUT_MESSAGE,offline:!0,detail:E}:"RequestOfflineError"===t?{code:OFFLINE_CODE,message:OFFLINE_MESSAGE,offline:!0,detail:E}:"ERR_NETWORK"===r||"Network Error"===E||"Network request failed"===E?{code:NETWORK_CODE,message:UNREACHABLE_MESSAGE,offline:!0,detail:E}:{message:UNEXPECTED_MESSAGE,detail:E})};function extractApiError(e){if(isApiError(e))return e;if("string"==typeof e)return build({message:userSafe(e)??UNEXPECTED_MESSAGE,detail:e||null});if(!isDict(e))return build({message:UNEXPECTED_MESSAGE,detail:null==e?null:String(e)});if(!0===e.isContractError)return build({code:CONTRACT_ERROR_CODE,message:userSafe(e.message)??UNEXPECTED_MESSAGE,detail:nonEmptyString(e.message)});const r=isDict(e.response)?e.response:null,t="number"==typeof r?.status?r.status:"number"==typeof e.status?e.status:0,E=r?r.data:e.body;if(0===t&&null==E)return fromNoResponse(e);const s=isDict(E)?E:null,{fields:o,form:n}=readErrors(s?.errors),i=nonEmptyString(s?.code),a=nonEmptyString(s?.traceId),l=nonEmptyString(s?.message)??nonEmptyString(s?.detail)??(s?readLegacyError(s):null)??nonEmptyString(s?.title)??nonEmptyString(E)??nonEmptyString(e.message);let S;if(t>=500){S=(null!==i&&i!==INTERNAL_ERROR_CODE?userSafe(s?.message):null)??SERVER_FAILURE_MESSAGE}else S=userSafe(Object.values(o)[0])??userSafe(n)??userSafe(s?.message)??userSafe(s?.detail)??(s?userSafe(readLegacyError(s)):null)??userSafe(s?.title)??userSafe(E)??(t?requestFailedMessage(t):UNEXPECTED_MESSAGE);return build({code:i,message:S,fieldErrors:o,status:t,traceId:a,detail:l})}const isNoResponse=e=>extractApiError(e).offline;function apiErrorMessage(e,r){const t=extractApiError(e);if(t.offline||null!==r&&!r)return t.message;return t.message===SERVER_FAILURE_MESSAGE||t.code===REQUEST_CANCELED_CODE||t.message===UNEXPECTED_MESSAGE||t.message===requestFailedMessage(t.status)?r??null:t.message}exports.isNoResponse=isNoResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"CONTRACT_ERROR_CODE",{enumerable:!0,get:function(){return _extractApiError.CONTRACT_ERROR_CODE}}),Object.defineProperty(exports,"NETWORK_CODE",{enumerable:!0,get:function(){return _extractApiError.NETWORK_CODE}}),Object.defineProperty(exports,"OFFLINE_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.OFFLINE_MESSAGE}}),Object.defineProperty(exports,"REQUEST_CANCELED_CODE",{enumerable:!0,get:function(){return _extractApiError.REQUEST_CANCELED_CODE}}),Object.defineProperty(exports,"SERVER_FAILURE_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.SERVER_FAILURE_MESSAGE}}),Object.defineProperty(exports,"TIMEOUT_CODE",{enumerable:!0,get:function(){return _extractApiError.TIMEOUT_CODE}}),Object.defineProperty(exports,"TIMEOUT_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.TIMEOUT_MESSAGE}}),Object.defineProperty(exports,"UNEXPECTED_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.UNEXPECTED_MESSAGE}}),Object.defineProperty(exports,"apiErrorMessage",{enumerable:!0,get:function(){return _extractApiError.apiErrorMessage}}),Object.defineProperty(exports,"extractApiError",{enumerable:!0,get:function(){return _extractApiError.extractApiError}}),Object.defineProperty(exports,"isApiError",{enumerable:!0,get:function(){return _extractApiError.isApiError}}),Object.defineProperty(exports,"isNoResponse",{enumerable:!0,get:function(){return _extractApiError.isNoResponse}}),Object.defineProperty(exports,"toFieldPath",{enumerable:!0,get:function(){return _extractApiError.toFieldPath}});var _extractApiError=require("./extractApiError.js");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"CONTRACT_ERROR_CODE",{enumerable:!0,get:function(){return _extractApiError.CONTRACT_ERROR_CODE}}),Object.defineProperty(exports,"NETWORK_CODE",{enumerable:!0,get:function(){return _extractApiError.NETWORK_CODE}}),Object.defineProperty(exports,"OFFLINE_CODE",{enumerable:!0,get:function(){return _extractApiError.OFFLINE_CODE}}),Object.defineProperty(exports,"OFFLINE_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.OFFLINE_MESSAGE}}),Object.defineProperty(exports,"REQUEST_CANCELED_CODE",{enumerable:!0,get:function(){return _extractApiError.REQUEST_CANCELED_CODE}}),Object.defineProperty(exports,"SERVER_FAILURE_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.SERVER_FAILURE_MESSAGE}}),Object.defineProperty(exports,"TIMEOUT_CODE",{enumerable:!0,get:function(){return _extractApiError.TIMEOUT_CODE}}),Object.defineProperty(exports,"TIMEOUT_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.TIMEOUT_MESSAGE}}),Object.defineProperty(exports,"UNEXPECTED_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.UNEXPECTED_MESSAGE}}),Object.defineProperty(exports,"UNREACHABLE_MESSAGE",{enumerable:!0,get:function(){return _extractApiError.UNREACHABLE_MESSAGE}}),Object.defineProperty(exports,"apiErrorMessage",{enumerable:!0,get:function(){return _extractApiError.apiErrorMessage}}),Object.defineProperty(exports,"extractApiError",{enumerable:!0,get:function(){return _extractApiError.extractApiError}}),Object.defineProperty(exports,"isApiError",{enumerable:!0,get:function(){return _extractApiError.isApiError}}),Object.defineProperty(exports,"isNoResponse",{enumerable:!0,get:function(){return _extractApiError.isNoResponse}}),Object.defineProperty(exports,"toFieldPath",{enumerable:!0,get:function(){return _extractApiError.toFieldPath}});var _extractApiError=require("./extractApiError.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatCurrency=void 0;var _formatConfig=require("./formatConfig.js"),_intlCache=require("./intlCache.js");const hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,indianGroupingFallback=(r,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatCurrency=void 0;var _index=require("../logger/index.js"),_formatConfig=require("./formatConfig.js"),_intlCache=require("./intlCache.js");const hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,indianGroupingFallback=(r,e)=>{const{decimal:t,group:n}=(0,_formatConfig.numberSeparators)()??{decimal:".",group:","},i=r<0?"-":"",o=Math.abs(r).toFixed(e),[a,m]=o.split("."),u=a.length>3?a.slice(-3):a,c=a.length>3?a.slice(0,-3):"";return i+(c?c.replace(/\B(?=(\d{2})+(?!\d))/g,n)+n+u:u)+(m?`${t}${m}`:"")},toAmount=r=>{if(null==r||"string"==typeof r&&""===r.trim())return null;const e="number"==typeof r?r:Number(r);return Number.isFinite(e)?e:null},currencyDigits=(r,e)=>(0,_intlCache.numberFormat)(r,{style:"currency",currency:e}).resolvedOptions().maximumFractionDigits??2,formatCurrency=(r,e={})=>{const{currency:t,locale:n=(0,_formatConfig.configuredLocale)()??"en-IN",minimumFractionDigits:i,maximumFractionDigits:o,stripSymbol:a=!1,empty:m=((0,_formatConfig.isFormatterConfigured)("locale")||(0,_formatConfig.isFormatterConfigured)("empty")?(0,_formatConfig.getFormatterConfig)().empty:""),...u}=e;t||_index.Logger.warn("[@webority/mobile-core] formatCurrency called without options.currency: it prints INR for now and throws from 0.17.0. Pass an ISO 4217 code.");const c=t||"INR",s=toAmount(r);if(null===s)return m;if(hasIntlNumber())try{const r=o??currencyDigits(n,c),e=i??(Number.isInteger(s)?0:r),t=(0,_formatConfig.styledNumber)((0,_intlCache.numberFormat)(n,{...u,style:"currency",currency:c,minimumFractionDigits:e,maximumFractionDigits:Math.max(e,r)}),s);return a?t.replace(/[^\d,.\s\-+]/g,"").trim():t}catch{}const l=indianGroupingFallback(s,i??(Number.isInteger(s)?0:2));return a?l:"INR"===c?`₹${l}`:`${c} ${l}`};exports.formatCurrency=formatCurrency;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatTime=exports.formatRelative=exports.formatPercent=exports.formatNumber=exports.formatMinor=exports.formatDateTime=exports.formatDate=void 0;var _formatConfig=require("./formatConfig.js"),_intlCache=require("./intlCache.js");const MONTHS=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],IST_OFFSET_MINUTES=330,IST_NAMES=["IST","Asia/Kolkata","Asia/Calcutta"],DATE_ONLY=/^\d{4}-\d{2}-\d{2}$/,pad2=t=>t<10?`0${t}`:`${t}`,emptyOf=t=>t??(0,_formatConfig.getFormatterConfig)().empty,toInstant=t=>{if(null==t||""===t)return null;const e=t instanceof Date?t:new Date("string"==typeof t?t.trim():t);return Number.isNaN(e.getTime())?null:e},isDateOnly=t=>"string"==typeof t&&DATE_ONLY.test(t.trim()),gmtLabel=t=>{if(0===t)return"GMT";const e=t>0?"+":"-",r=Math.abs(t),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatTime=exports.formatRelative=exports.formatPercent=exports.formatNumber=exports.formatMinor=exports.formatDateTime=exports.formatDate=void 0;var _index=require("../logger/index.js"),_formatConfig=require("./formatConfig.js"),_intlCache=require("./intlCache.js");const MONTHS=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],IST_OFFSET_MINUTES=330,IST_NAMES=["IST","Asia/Kolkata","Asia/Calcutta"],DATE_ONLY=/^\d{4}-\d{2}-\d{2}$/,pad2=t=>t<10?`0${t}`:`${t}`,emptyOf=t=>t??(0,_formatConfig.getFormatterConfig)().empty,toInstant=t=>{if(null==t||""===t)return null;const e=t instanceof Date?t:new Date("string"==typeof t?t.trim():t);return Number.isNaN(e.getTime())?null:e},isDateOnly=t=>"string"==typeof t&&DATE_ONLY.test(t.trim()),gmtLabel=t=>{if(0===t)return"GMT";const e=t>0?"+":"-",r=Math.abs(t),o=r%60;return`GMT${e}${Math.floor(r/60)}${0===o?"":`:${pad2(o)}`}`},shifted=(t,e,r)=>{const o=new Date(t.getTime()+6e4*e);return{year:o.getUTCFullYear(),month:o.getUTCMonth(),day:o.getUTCDate(),hour:o.getUTCHours(),minute:o.getUTCMinutes(),label:r}},inIanaZone=(t,e)=>{const r=(0,_intlCache.dateTimeFormat)("en-US",{timeZone:e,year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",hour12:!1}).formatToParts(t),read=t=>Number.parseInt(r.find(e=>e.type===t)?.value??"",10),o=read("year"),n=read("month")-1,i=read("day"),a=read("hour")%24,m=read("minute"),l=Date.UTC(o,n,i,a,m),u=Math.round((l-6e4*Math.floor(t.getTime()/6e4))/6e4);return{year:o,month:n,day:i,hour:a,minute:m,label:gmtLabel(u)}},wallClock=(t,e)=>IST_NAMES.includes(e)?shifted(t,330,"IST"):"UTC"===e?shifted(t,0,"UTC"):"viewer"===e?{year:t.getFullYear(),month:t.getMonth(),day:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),label:gmtLabel(-t.getTimezoneOffset())}:inIanaZone(t,e),hourCycleOf=t=>t.hourCycle??12,dayMonthYear=t=>`${pad2(t.day)}-${MONTHS[t.month]}-${t.year}`,numericDate=(t,e)=>{const r=pad2(t.day),o=pad2(t.month+1),n=String(t.year).padStart(4,"0");return"DayMonthYear"===e?`${r}/${o}/${n}`:"MonthDayYear"===e?`${o}/${r}/${n}`:`${n}-${o}-${r}`},clockTime=(t,e)=>24===e?`${pad2(t.hour)}:${pad2(t.minute)}`:`${t.hour%12||12}:${pad2(t.minute)} ${t.hour<12?"AM":"PM"}`,labelled=(t,e)=>e??!IST_NAMES.includes(t),withLabel=(t,e,r,o)=>labelled(r,o)?`${t} ${e.label}`:t,intlZone=t=>{if("viewer"!==t)return IST_NAMES.includes(t)?"Asia/Kolkata":t},localeDayMonthYear=(t,e,r)=>{const o=(0,_intlCache.dateTimeFormat)(e,{day:"2-digit",month:"short",year:"numeric",timeZone:r}).formatToParts(t),part=t=>o.find(e=>e.type===t)?.value??"";return`${part("day")}-${part("month").replace(".","")}-${part("year")}`},dateText=(t,e)=>{const r=(0,_formatConfig.getFormatterConfig)().dateOrder??"DayMonthNameYear";if("DayMonthNameYear"!==r)return numericDate(wallClock(t,e),r);const o=(0,_formatConfig.configuredLocale)();return o?localeDayMonthYear(t,o,intlZone(e)):dayMonthYear(wallClock(t,e))},localeClock=(t,e,r,o)=>(0,_intlCache.dateTimeFormat)(e,{hour:"2-digit",minute:"2-digit",timeZone:intlZone(r),timeZoneName:labelled(r,o.zoneLabel)?"short":void 0,hourCycle:void 0===o.hourCycle?void 0:24===o.hourCycle?"h23":"h12"}).format(t),formatDate=(t,e={})=>{const r=toInstant(t);return r?dateText(r,isDateOnly(t)?"UTC":e.zone??(0,_formatConfig.getFormatterConfig)().zone):emptyOf(e.empty)};exports.formatDate=formatDate;const formatTime=(t,e={})=>{const r=toInstant(t);if(!r)return emptyOf(e.empty);const o=e.zone??(0,_formatConfig.getFormatterConfig)().zone,n=(0,_formatConfig.configuredLocale)();if(n)return localeClock(r,n,o,e);const i=wallClock(r,o);return withLabel(clockTime(i,hourCycleOf(e)),i,o,e.zoneLabel)};exports.formatTime=formatTime;const formatDateTime=(t,e={})=>{const r=toInstant(t);if(!r)return emptyOf(e.empty);const o=e.zone??(0,_formatConfig.getFormatterConfig)().zone,n=(0,_formatConfig.configuredLocale)();if(n)return`${dateText(r,o)}, ${localeClock(r,n,o,e)}`;const i=wallClock(r,o);return withLabel(`${dateText(r,o)}, ${clockTime(i,hourCycleOf(e))}`,i,o,e.zoneLabel)};exports.formatDateTime=formatDateTime;const SECOND=1e3,MINUTE=6e4,HOUR=36e5,DAY=24*HOUR,WEEK=7*DAY,MONTH=30*DAY,YEAR=365*DAY,INTL_UNITS=[["year",YEAR],["month",MONTH],["day",DAY],["hour",HOUR],["minute",6e4]],formatRelative=(t,e={})=>{const r=toInstant(t),o=toInstant(e.now??Date.now());if(!r||!o)return emptyOf(e.empty);const n=r.getTime()-o.getTime(),i=Math.abs(n),a=Intl.RelativeTimeFormat,m=(0,_formatConfig.configuredLocale)();if((null!==m||!0===e.intl)&&"function"==typeof a){const t=(0,_intlCache.relativeTimeFormat)(a,m??(0,_formatConfig.getFormatterConfig)().locale),[e,r]=INTL_UNITS.find(([,t])=>i>=t)??["second",1e3];return t.format(Math.round(n/r),e)}if(i<6e4)return"just now";const[l,u]=i<HOUR?["minute",6e4]:i<DAY?["hour",HOUR]:i<WEEK?["day",DAY]:i<MONTH?["week",WEEK]:i<YEAR?["month",MONTH]:["year",YEAR],c=Math.floor(i/u),s=`${c} ${l}${1===c?"":"s"}`;return n<0?`${s} ago`:`in ${s}`};exports.formatRelative=formatRelative;const toNumber=t=>{if(null==t)return null;if("string"==typeof t&&""===t.trim())return null;const e="number"==typeof t?t:Number(t);return Number.isFinite(e)?e:null},clampDigits=t=>Math.min(20,Math.max(0,Math.trunc(t))),shiftDecimal=(t,e)=>/e/i.test(String(t))?t*10**e:Number(`${t}e${e}`),houseSeparators=()=>(0,_formatConfig.numberSeparators)()??{decimal:".",group:","},groupInteger=(t,e,r)=>{if("none"===e||t.length<=3)return t;if("international"===e)return t.replace(/\B(?=(\d{3})+(?!\d))/g,r);return`${t.slice(0,-3).replace(/\B(?=(\d{2})+(?!\d))/g,r)}${r}${t.slice(-3)}`},hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,plainDigits=(t,e)=>{if(hasIntlNumber())return(0,_intlCache.numberFormat)("en-US",{useGrouping:!1,minimumFractionDigits:0,maximumFractionDigits:e}).format(t);const r=Math.min(e,15);return shiftDecimal(Math.round(shiftDecimal(t,r)),-r).toFixed(r)},decimalText=(t,e,r,o)=>{const n=Math.max(clampDigits(r),clampDigits(e)),i=clampDigits(e),a=plainDigits(Math.abs(t),n),[m="0",l=""]=a.split(".");let u=l.padEnd(i,"0");for(;u.length>i&&u.endsWith("0");)u=u.slice(0,-1);const c=houseSeparators(),s=groupInteger(m,o,c.group)+(u?`${c.decimal}${u}`:"");return t<0&&/[1-9]/.test(a)?`-${s}`:s},HOUSE_NUMBER_KEYS=new Set(["grouping","minimumFractionDigits","maximumFractionDigits","locale","empty","scale"]),intlNumberOptions=t=>{if(!Object.entries(t).some(([t,e])=>void 0!==e&&!HOUSE_NUMBER_KEYS.has(t)))return null;const{grouping:e,locale:r,empty:o,scale:n,...i}=t;return"none"===e&&void 0===i.useGrouping?{...i,useGrouping:!1}:i},localeOf=t=>t.locale??(0,_formatConfig.getFormatterConfig)().locale,intlTextLocale=t=>{const e=(0,_formatConfig.configuredLocale)();return null===e||"indian"===t.grouping||"international"===t.grouping?null:t.locale??e},fractionDigits=(t,e)=>{const r=clampDigits(t);return{minimumFractionDigits:r,maximumFractionDigits:Math.max(r,clampDigits(e))}},groupingOption=t=>"none"===t?{useGrouping:!1}:{},formatNumber=(t,e={})=>{const r=toNumber(t);if(null===r)return emptyOf(e.empty);const o=intlNumberOptions(e);if(o)return(0,_formatConfig.styledNumber)((0,_intlCache.numberFormat)(localeOf(e),o),r);const n=intlTextLocale(e);return n?(0,_formatConfig.styledNumber)((0,_intlCache.numberFormat)(n,{...fractionDigits(e.minimumFractionDigits??0,e.maximumFractionDigits??3),...groupingOption(e.grouping)}),r):decimalText(r,e.minimumFractionDigits??0,e.maximumFractionDigits??3,e.grouping??(0,_formatConfig.groupingForLocale)(localeOf(e)))};exports.formatNumber=formatNumber;const formatPercent=(t,e={})=>{const r=toNumber(t);if(null===r)return emptyOf(e.empty);const o=intlNumberOptions(e);if(o){const t="percent"===e.scale?shiftDecimal(r,-2):r;return(0,_formatConfig.styledNumber)((0,_intlCache.numberFormat)(localeOf(e),{style:"percent",...o}),t)}const n=intlTextLocale(e);if(n){const t="percent"===e.scale?shiftDecimal(r,-2):r;return(0,_formatConfig.styledNumber)((0,_intlCache.numberFormat)(n,{style:"percent",...fractionDigits(e.minimumFractionDigits??0,e.maximumFractionDigits??e.minimumFractionDigits??0),...groupingOption(e.grouping)}),t)}const i="percent"===e.scale?r:shiftDecimal(r,2);return`${decimalText(i,e.minimumFractionDigits??0,e.maximumFractionDigits??e.minimumFractionDigits??0,e.grouping??(0,_formatConfig.groupingForLocale)(localeOf(e)))}%`};exports.formatPercent=formatPercent;const SYMBOLS={INR:"₹",USD:"$",EUR:"€",GBP:"£"},MINOR_DIGITS={JPY:0,KRW:0,VND:0,BHD:3,JOD:3,KWD:3,OMR:3,TND:3},formatMinor=(t,e={})=>{e.currency||_index.Logger.warn("[@webority/mobile-core] formatMinor called without options.currency: it prints INR for now and throws from 0.17.0. Pass an ISO 4217 code.");const r=toNumber(t);if(null===r)return emptyOf(e.empty);const o=(e.currency||"INR").toUpperCase(),n=MINOR_DIGITS[o]??2,i=Math.round(Math.abs(r)),a=String(i).padStart(n+1,"0"),m=a.slice(0,a.length-n);let l=a.slice(a.length-n);e.dropZeroDecimals&&/^0*$/.test(l)&&(l="");const u=intlTextLocale({grouping:e.grouping});if(u)try{const t=Number(`${r<0&&0!==i?"-":""}${m}.${a.slice(a.length-n)||"0"}`);return(0,_formatConfig.styledNumber)((0,_intlCache.numberFormat)(u,{...!1===e.symbol?{}:{style:"currency",currency:o},...fractionDigits(l?n:0,n),...groupingOption(e.grouping)}),t)}catch{}const c=e.grouping??("INR"===o?"indian":"international"),s=houseSeparators(),f=groupInteger(m,c,s.group)+(l?`${s.decimal}${l}`:""),g=r<0&&0!==i?"-":"";if(!1===e.symbol)return`${g}${f}`;const p=SYMBOLS[o];return p?`${g}${p}${f}`:`${g}${o} ${f}`};exports.formatMinor=formatMinor;
|
package/lib/commonjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ACCESS_TOKEN_KEY",{enumerable:!0,get:function(){return _authStore.ACCESS_TOKEN_KEY}}),Object.defineProperty(exports,"ACCOUNT_ID_HEADER",{enumerable:!0,get:function(){return _clientHeaders.ACCOUNT_ID_HEADER}}),Object.defineProperty(exports,"AsYouType",{enumerable:!0,get:function(){return _index4.AsYouType}}),Object.defineProperty(exports,"CLIENT_BUILD_HEADER",{enumerable:!0,get:function(){return _clientHeaders.CLIENT_BUILD_HEADER}}),Object.defineProperty(exports,"CLIENT_KIND",{enumerable:!0,get:function(){return _clientHeaders.CLIENT_KIND}}),Object.defineProperty(exports,"CLIENT_KIND_HEADER",{enumerable:!0,get:function(){return _clientHeaders.CLIENT_KIND_HEADER}}),Object.defineProperty(exports,"CONTRACT_ERROR_CODE",{enumerable:!0,get:function(){return _index3.CONTRACT_ERROR_CODE}}),Object.defineProperty(exports,"DeepLink",{enumerable:!0,get:function(){return _index2.DeepLink}}),Object.defineProperty(exports,"IDEMPOTENCY_KEY_HEADER",{enumerable:!0,get:function(){return _retry.IDEMPOTENCY_KEY_HEADER}}),Object.defineProperty(exports,"LEGACY_REFRESH_TOKEN_LIFETIME_MS",{enumerable:!0,get:function(){return _authStore.LEGACY_REFRESH_TOKEN_LIFETIME_MS}}),Object.defineProperty(exports,"Logger",{enumerable:!0,get:function(){return _index5.Logger}}),Object.defineProperty(exports,"MIN_APP_VERSION_HEADER",{enumerable:!0,get:function(){return _minAppVersion.MIN_APP_VERSION_HEADER}}),Object.defineProperty(exports,"NETWORK_CODE",{enumerable:!0,get:function(){return _index3.NETWORK_CODE}}),Object.defineProperty(exports,"OFFLINE_MESSAGE",{enumerable:!0,get:function(){return _index3.OFFLINE_MESSAGE}}),Object.defineProperty(exports,"PUSH_STATUS",{enumerable:!0,get:function(){return _status.PUSH_STATUS}}),Object.defineProperty(exports,"REFRESH_TOKEN_KEY",{enumerable:!0,get:function(){return _authStore.REFRESH_TOKEN_KEY}}),Object.defineProperty(exports,"REQUEST_CANCELED_CODE",{enumerable:!0,get:function(){return _index3.REQUEST_CANCELED_CODE}}),Object.defineProperty(exports,"RequestOfflineError",{enumerable:!0,get:function(){return _userClient.RequestOfflineError}}),Object.defineProperty(exports,"SERVER_FAILURE_MESSAGE",{enumerable:!0,get:function(){return _index3.SERVER_FAILURE_MESSAGE}}),Object.defineProperty(exports,"SESSION_TERMINATION_CODES",{enumerable:!0,get:function(){return _userClient.SESSION_TERMINATION_CODES}}),Object.defineProperty(exports,"SESSION_USER_KEY",{enumerable:!0,get:function(){return _authStore.SESSION_USER_KEY}}),Object.defineProperty(exports,"SIGN_OUT_REASON_HEADER",{enumerable:!0,get:function(){return _userClient.SIGN_OUT_REASON_HEADER}}),Object.defineProperty(exports,"Storage",{enumerable:!0,get:function(){return _index7.Storage}}),Object.defineProperty(exports,"TIMEOUT_CODE",{enumerable:!0,get:function(){return _index3.TIMEOUT_CODE}}),Object.defineProperty(exports,"TIMEOUT_MESSAGE",{enumerable:!0,get:function(){return _index3.TIMEOUT_MESSAGE}}),Object.defineProperty(exports,"UNEXPECTED_MESSAGE",{enumerable:!0,get:function(){return _index3.UNEXPECTED_MESSAGE}}),Object.defineProperty(exports,"VersionCheck",{enumerable:!0,get:function(){return _index9.VersionCheck}}),Object.defineProperty(exports,"WORKSPACE_CHANGED_CODE",{enumerable:!0,get:function(){return _workspace.WORKSPACE_CHANGED_CODE}}),Object.defineProperty(exports,"WorkspaceChangedError",{enumerable:!0,get:function(){return _workspace.WorkspaceChangedError}}),Object.defineProperty(exports,"addDays",{enumerable:!0,get:function(){return _index4.addDays}}),Object.defineProperty(exports,"addMinAppVersionListener",{enumerable:!0,get:function(){return _minAppVersion.addMinAppVersionListener}}),Object.defineProperty(exports,"addNetworkStatusListener",{enumerable:!0,get:function(){return _index6.addNetworkStatusListener}}),Object.defineProperty(exports,"addSessionEndedListener",{enumerable:!0,get:function(){return _authStore.addSessionEndedListener}}),Object.defineProperty(exports,"apiErrorMessage",{enumerable:!0,get:function(){return _index3.apiErrorMessage}}),Object.defineProperty(exports,"applyRequestDefaults",{enumerable:!0,get:function(){return _requestDefaults.applyRequestDefaults}}),Object.defineProperty(exports,"attachRetry",{enumerable:!0,get:function(){return _retry.attachRetry}}),Object.defineProperty(exports,"buildCurl",{enumerable:!0,get:function(){return _curl.buildCurl}}),Object.defineProperty(exports,"clampNationalNumber",{enumerable:!0,get:function(){return _index4.clampNationalNumber}}),Object.defineProperty(exports,"clearSession",{enumerable:!0,get:function(){return _authStore.clearSession}}),Object.defineProperty(exports,"configureFormatters",{enumerable:!0,get:function(){return _index4.configureFormatters}}),Object.defineProperty(exports,"configureLogger",{enumerable:!0,get:function(){return _index5.configureLogger}}),Object.defineProperty(exports,"countryFlagEmoji",{enumerable:!0,get:function(){return _index4.countryFlagEmoji}}),Object.defineProperty(exports,"crashlyticsRemoteLogger",{enumerable:!0,get:function(){return _crashlytics.crashlyticsRemoteLogger}}),Object.defineProperty(exports,"decodeJWT",{enumerable:!0,get:function(){return _jwt.decodeJWT}}),Object.defineProperty(exports,"detectPhoneCountry",{enumerable:!0,get:function(){return _index4.detectPhoneCountry}}),Object.defineProperty(exports,"diffMs",{enumerable:!0,get:function(){return _index4.diffMs}}),Object.defineProperty(exports,"encodeBase64",{enumerable:!0,get:function(){return _base.encodeBase64}}),Object.defineProperty(exports,"extractApiError",{enumerable:!0,get:function(){return _index3.extractApiError}}),Object.defineProperty(exports,"formatCompactNumber",{enumerable:!0,get:function(){return _index4.formatCompactNumber}}),Object.defineProperty(exports,"formatCurrency",{enumerable:!0,get:function(){return _index4.formatCurrency}}),Object.defineProperty(exports,"formatDate",{enumerable:!0,get:function(){return _index4.formatDate}}),Object.defineProperty(exports,"formatDateDDMMMYYYY",{enumerable:!0,get:function(){return _index4.formatDateDDMMMYYYY}}),Object.defineProperty(exports,"formatDateISO",{enumerable:!0,get:function(){return _index4.formatDateISO}}),Object.defineProperty(exports,"formatDatePattern",{enumerable:!0,get:function(){return _index4.formatDatePattern}}),Object.defineProperty(exports,"formatDateTime",{enumerable:!0,get:function(){return _index4.formatDateTime}}),Object.defineProperty(exports,"formatMinor",{enumerable:!0,get:function(){return _index4.formatMinor}}),Object.defineProperty(exports,"formatNumber",{enumerable:!0,get:function(){return _index4.formatNumber}}),Object.defineProperty(exports,"formatPercent",{enumerable:!0,get:function(){return _index4.formatPercent}}),Object.defineProperty(exports,"formatPhone",{enumerable:!0,get:function(){return _index4.formatPhone}}),Object.defineProperty(exports,"formatPhoneAsTyped",{enumerable:!0,get:function(){return _index4.formatPhoneAsTyped}}),Object.defineProperty(exports,"formatRelative",{enumerable:!0,get:function(){return _index4.formatRelative}}),Object.defineProperty(exports,"formatRelativeTime",{enumerable:!0,get:function(){return _index4.formatRelativeTime}}),Object.defineProperty(exports,"formatTime",{enumerable:!0,get:function(){return _index4.formatTime}}),Object.defineProperty(exports,"formatTime12h",{enumerable:!0,get:function(){return _index4.formatTime12h}}),Object.defineProperty(exports,"formatTimeInWindowsZone",{enumerable:!0,get:function(){return _index4.formatTimeInWindowsZone}}),Object.defineProperty(exports,"formatTimeInZone",{enumerable:!0,get:function(){return _index4.formatTimeInZone}}),Object.defineProperty(exports,"getClientBuild",{enumerable:!0,get:function(){return _clientHeaders.getClientBuild}}),Object.defineProperty(exports,"getConfig",{enumerable:!0,get:function(){return _index.getConfig}}),Object.defineProperty(exports,"getConfigValue",{enumerable:!0,get:function(){return _index.getConfigValue}}),Object.defineProperty(exports,"getCountries",{enumerable:!0,get:function(){return _index4.getCountries}}),Object.defineProperty(exports,"getCountryCallingCode",{enumerable:!0,get:function(){return _index4.getCountryCallingCode}}),Object.defineProperty(exports,"getDeviceContext",{enumerable:!0,get:function(){return _index5.getDeviceContext}}),Object.defineProperty(exports,"getFormatterConfig",{enumerable:!0,get:function(){return _index4.getFormatterConfig}}),Object.defineProperty(exports,"getInitials",{enumerable:!0,get:function(){return _index4.getInitials}}),Object.defineProperty(exports,"getJWTExpiry",{enumerable:!0,get:function(){return _jwt.getJWTExpiry}}),Object.defineProperty(exports,"getMinAppVersion",{enumerable:!0,get:function(){return _minAppVersion.getMinAppVersion}}),Object.defineProperty(exports,"getNetworkStatus",{enumerable:!0,get:function(){return _index6.getNetworkStatus}}),Object.defineProperty(exports,"getPhoneCountries",{enumerable:!0,get:function(){return _index4.getPhoneCountries}}),Object.defineProperty(exports,"getSessionUser",{enumerable:!0,get:function(){return _authStore.getSessionUser}}),Object.defineProperty(exports,"getToken",{enumerable:!0,get:function(){return _authStore.getToken}}),Object.defineProperty(exports,"initUserAuth",{enumerable:!0,get:function(){return _initUserAuth.initUserAuth}}),Object.defineProperty(exports,"initWebority",{enumerable:!0,get:function(){return _initSDK.initWebority}}),Object.defineProperty(exports,"injectStore",{enumerable:!0,get:function(){return _userClient.injectStore}}),Object.defineProperty(exports,"injectUserAuth",{enumerable:!0,get:function(){return _userClient.injectUserAuth}}),Object.defineProperty(exports,"isAadhaar",{enumerable:!0,get:function(){return _index8.isAadhaar}}),Object.defineProperty(exports,"isAlphanumeric",{enumerable:!0,get:function(){return _index8.isAlphanumeric}}),Object.defineProperty(exports,"isApiError",{enumerable:!0,get:function(){return _index3.isApiError}}),Object.defineProperty(exports,"isBetween",{enumerable:!0,get:function(){return _index8.isBetween}}),Object.defineProperty(exports,"isBuildBelowMinimum",{enumerable:!0,get:function(){return _index9.isBuildBelowMinimum}}),Object.defineProperty(exports,"isDateAfter",{enumerable:!0,get:function(){return _index4.isDateAfter}}),Object.defineProperty(exports,"isDateBefore",{enumerable:!0,get:function(){return _index4.isDateBefore}}),Object.defineProperty(exports,"isEmail",{enumerable:!0,get:function(){return _index8.isEmail}}),Object.defineProperty(exports,"isGstin",{enumerable:!0,get:function(){return _index8.isGstin}}),Object.defineProperty(exports,"isHexColor",{enumerable:!0,get:function(){return _index8.isHexColor}}),Object.defineProperty(exports,"isIfsc",{enumerable:!0,get:function(){return _index8.isIfsc}}),Object.defineProperty(exports,"isIndianMobile",{enumerable:!0,get:function(){return _index8.isIndianMobile}}),Object.defineProperty(exports,"isIndianPincode",{enumerable:!0,get:function(){return _index8.isIndianPincode}}),Object.defineProperty(exports,"isInteger",{enumerable:!0,get:function(){return _index8.isInteger}}),Object.defineProperty(exports,"isJWTExpired",{enumerable:!0,get:function(){return _jwt.isJWTExpired}}),Object.defineProperty(exports,"isNeverSentError",{enumerable:!0,get:function(){return _retry.isNeverSentError}}),Object.defineProperty(exports,"isNoResponse",{enumerable:!0,get:function(){return _index3.isNoResponse}}),Object.defineProperty(exports,"isNonEmpty",{enumerable:!0,get:function(){return _index8.isNonEmpty}}),Object.defineProperty(exports,"isNumeric",{enumerable:!0,get:function(){return _index8.isNumeric}}),Object.defineProperty(exports,"isPan",{enumerable:!0,get:function(){return _index8.isPan}}),Object.defineProperty(exports,"isPhone",{enumerable:!0,get:function(){return _index8.isPhone}}),Object.defineProperty(exports,"isRetryableFailure",{enumerable:!0,get:function(){return _retry.isRetryableFailure}}),Object.defineProperty(exports,"isRetryableStatus",{enumerable:!0,get:function(){return _retry.isRetryableStatus}}),Object.defineProperty(exports,"isSameDay",{enumerable:!0,get:function(){return _index4.isSameDay}}),Object.defineProperty(exports,"isStorageAvailable",{enumerable:!0,get:function(){return _index7.isStorageAvailable}}),Object.defineProperty(exports,"isStrongPassword",{enumerable:!0,get:function(){return _index8.isStrongPassword}}),Object.defineProperty(exports,"isSupportedCountry",{enumerable:!0,get:function(){return _index4.isSupportedCountry}}),Object.defineProperty(exports,"isUrl",{enumerable:!0,get:function(){return _index8.isUrl}}),Object.defineProperty(exports,"isValidNationalNumber",{enumerable:!0,get:function(){return _index4.isValidNationalNumber}}),Object.defineProperty(exports,"isValidPhoneNumber",{enumerable:!0,get:function(){return _index4.isValidPhoneNumber}}),Object.defineProperty(exports,"isWorkspaceChangedError",{enumerable:!0,get:function(){return _workspace.isWorkspaceChangedError}}),Object.defineProperty(exports,"logCurl",{enumerable:!0,get:function(){return _curl.logCurl}}),Object.defineProperty(exports,"maxLength",{enumerable:!0,get:function(){return _index8.maxLength}}),Object.defineProperty(exports,"maxNationalNumberLength",{enumerable:!0,get:function(){return _index4.maxNationalNumberLength}}),Object.defineProperty(exports,"minLength",{enumerable:!0,get:function(){return _index8.minLength}}),Object.defineProperty(exports,"newCorrelationId",{enumerable:!0,get:function(){return _requestDefaults.newCorrelationId}}),Object.defineProperty(exports,"normalizePhone",{enumerable:!0,get:function(){return _index4.normalizePhone}}),Object.defineProperty(exports,"parseBuildNumber",{enumerable:!0,get:function(){return _index9.parseBuildNumber}}),Object.defineProperty(exports,"parseDeepLink",{enumerable:!0,get:function(){return _index2.parseDeepLink}}),Object.defineProperty(exports,"parsePhoneNumber",{enumerable:!0,get:function(){return _index4.parsePhoneNumber}}),Object.defineProperty(exports,"parsePhoneNumberFromString",{enumerable:!0,get:function(){return _index4.parsePhoneNumberFromString}}),Object.defineProperty(exports,"publicClient",{enumerable:!0,get:function(){return _publicClient.default}}),Object.defineProperty(exports,"refreshAccessToken",{enumerable:!0,get:function(){return _tokenRefresh.refreshAccessToken}}),Object.defineProperty(exports,"removeSessionUser",{enumerable:!0,get:function(){return _authStore.removeSessionUser}}),Object.defineProperty(exports,"removeToken",{enumerable:!0,get:function(){return _authStore.removeToken}}),Object.defineProperty(exports,"resetConfig",{enumerable:!0,get:function(){return _index.resetConfig}}),Object.defineProperty(exports,"resetRefreshState",{enumerable:!0,get:function(){return _userClient.resetRefreshState}}),Object.defineProperty(exports,"retryAfterMs",{enumerable:!0,get:function(){return _retry.retryAfterMs}}),Object.defineProperty(exports,"setConfig",{enumerable:!0,get:function(){return _index.setConfig}}),Object.defineProperty(exports,"setDeviceContext",{enumerable:!0,get:function(){return _index5.setDeviceContext}}),Object.defineProperty(exports,"setDeviceInfoImplementation",{enumerable:!0,get:function(){return _index9.setDeviceInfoImplementation}}),Object.defineProperty(exports,"setKeychainImplementation",{enumerable:!0,get:function(){return _authStore.setKeychainImplementation}}),Object.defineProperty(exports,"setLegacyTokenKeys",{enumerable:!0,get:function(){return _authStore.setLegacyTokenKeys}}),Object.defineProperty(exports,"setNetworkStatusImplementation",{enumerable:!0,get:function(){return _index6.setNetworkStatusImplementation}}),Object.defineProperty(exports,"setRemoteLogger",{enumerable:!0,get:function(){return _index5.setRemoteLogger}}),Object.defineProperty(exports,"setStorageImplementation",{enumerable:!0,get:function(){return _index7.setStorageImplementation}}),Object.defineProperty(exports,"splitPhoneNumber",{enumerable:!0,get:function(){return _index4.splitPhoneNumber}}),Object.defineProperty(exports,"startOfDay",{enumerable:!0,get:function(){return _index4.startOfDay}}),Object.defineProperty(exports,"storeSessionUser",{enumerable:!0,get:function(){return _authStore.storeSessionUser}}),Object.defineProperty(exports,"storeToken",{enumerable:!0,get:function(){return _authStore.storeToken}}),Object.defineProperty(exports,"toFieldPath",{enumerable:!0,get:function(){return _index3.toFieldPath}}),Object.defineProperty(exports,"useDeepLink",{enumerable:!0,get:function(){return _index2.useDeepLink}}),Object.defineProperty(exports,"useNetworkStatus",{enumerable:!0,get:function(){return _index6.useNetworkStatus}}),Object.defineProperty(exports,"useVersionCheck",{enumerable:!0,get:function(){return _index9.useVersionCheck}}),Object.defineProperty(exports,"userClient",{enumerable:!0,get:function(){return _userClient.default}}),Object.defineProperty(exports,"validatePhoneNumberLength",{enumerable:!0,get:function(){return _index4.validatePhoneNumberLength}});var _clientHeaders=require("./api/clientHeaders.js"),_curl=require("./api/curl.js"),_minAppVersion=require("./api/minAppVersion.js"),_publicClient=_interopRequireDefault(require("./api/publicClient.js")),_requestDefaults=require("./api/requestDefaults.js"),_retry=require("./api/retry.js"),_tokenRefresh=require("./api/tokenRefresh.js"),_userClient=_interopRequireWildcard(require("./api/userClient.js")),_workspace=require("./api/workspace.js"),_authStore=require("./auth/authStore.js"),_jwt=require("./auth/jwt.js"),_index=require("./config/index.js"),_index2=require("./deepLink/index.js"),_index3=require("./errors/index.js"),_index4=require("./formatters/index.js"),_initSDK=require("./initSDK.js"),_initUserAuth=require("./initUserAuth.js"),_index5=require("./logger/index.js"),_crashlytics=require("./logger/crashlytics.js"),_index6=require("./network/index.js"),_status=require("./push/status.js"),_index7=require("./storage/index.js"),_base=require("./utils/base64.js"),_index8=require("./validators/index.js"),_index9=require("./versionCheck/index.js");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(i=r?n:t){if(i.has(e))return i.get(e);i.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?i(u,r,o):u[r]=e[r]);return u})(e,r)}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ACCESS_TOKEN_KEY",{enumerable:!0,get:function(){return _authStore.ACCESS_TOKEN_KEY}}),Object.defineProperty(exports,"ACCOUNT_ID_HEADER",{enumerable:!0,get:function(){return _clientHeaders.ACCOUNT_ID_HEADER}}),Object.defineProperty(exports,"AsYouType",{enumerable:!0,get:function(){return _index4.AsYouType}}),Object.defineProperty(exports,"CLIENT_BUILD_HEADER",{enumerable:!0,get:function(){return _clientHeaders.CLIENT_BUILD_HEADER}}),Object.defineProperty(exports,"CLIENT_KIND",{enumerable:!0,get:function(){return _clientHeaders.CLIENT_KIND}}),Object.defineProperty(exports,"CLIENT_KIND_HEADER",{enumerable:!0,get:function(){return _clientHeaders.CLIENT_KIND_HEADER}}),Object.defineProperty(exports,"CONTRACT_ERROR_CODE",{enumerable:!0,get:function(){return _index3.CONTRACT_ERROR_CODE}}),Object.defineProperty(exports,"DeepLink",{enumerable:!0,get:function(){return _index2.DeepLink}}),Object.defineProperty(exports,"IDEMPOTENCY_KEY_HEADER",{enumerable:!0,get:function(){return _retry.IDEMPOTENCY_KEY_HEADER}}),Object.defineProperty(exports,"LEGACY_REFRESH_TOKEN_LIFETIME_MS",{enumerable:!0,get:function(){return _authStore.LEGACY_REFRESH_TOKEN_LIFETIME_MS}}),Object.defineProperty(exports,"Logger",{enumerable:!0,get:function(){return _index5.Logger}}),Object.defineProperty(exports,"MIN_APP_VERSION_HEADER",{enumerable:!0,get:function(){return _minAppVersion.MIN_APP_VERSION_HEADER}}),Object.defineProperty(exports,"NETWORK_CODE",{enumerable:!0,get:function(){return _index3.NETWORK_CODE}}),Object.defineProperty(exports,"OFFLINE_CODE",{enumerable:!0,get:function(){return _index3.OFFLINE_CODE}}),Object.defineProperty(exports,"OFFLINE_MESSAGE",{enumerable:!0,get:function(){return _index3.OFFLINE_MESSAGE}}),Object.defineProperty(exports,"PUSH_STATUS",{enumerable:!0,get:function(){return _status.PUSH_STATUS}}),Object.defineProperty(exports,"REFRESH_TOKEN_KEY",{enumerable:!0,get:function(){return _authStore.REFRESH_TOKEN_KEY}}),Object.defineProperty(exports,"REQUEST_CANCELED_CODE",{enumerable:!0,get:function(){return _index3.REQUEST_CANCELED_CODE}}),Object.defineProperty(exports,"RequestOfflineError",{enumerable:!0,get:function(){return _userClient.RequestOfflineError}}),Object.defineProperty(exports,"SERVER_FAILURE_MESSAGE",{enumerable:!0,get:function(){return _index3.SERVER_FAILURE_MESSAGE}}),Object.defineProperty(exports,"SESSION_TERMINATION_CODES",{enumerable:!0,get:function(){return _userClient.SESSION_TERMINATION_CODES}}),Object.defineProperty(exports,"SESSION_USER_KEY",{enumerable:!0,get:function(){return _authStore.SESSION_USER_KEY}}),Object.defineProperty(exports,"SIGN_OUT_REASON_HEADER",{enumerable:!0,get:function(){return _userClient.SIGN_OUT_REASON_HEADER}}),Object.defineProperty(exports,"Storage",{enumerable:!0,get:function(){return _index7.Storage}}),Object.defineProperty(exports,"TIMEOUT_CODE",{enumerable:!0,get:function(){return _index3.TIMEOUT_CODE}}),Object.defineProperty(exports,"TIMEOUT_MESSAGE",{enumerable:!0,get:function(){return _index3.TIMEOUT_MESSAGE}}),Object.defineProperty(exports,"UNEXPECTED_MESSAGE",{enumerable:!0,get:function(){return _index3.UNEXPECTED_MESSAGE}}),Object.defineProperty(exports,"UNREACHABLE_MESSAGE",{enumerable:!0,get:function(){return _index3.UNREACHABLE_MESSAGE}}),Object.defineProperty(exports,"VersionCheck",{enumerable:!0,get:function(){return _index9.VersionCheck}}),Object.defineProperty(exports,"WORKSPACE_CHANGED_CODE",{enumerable:!0,get:function(){return _workspace.WORKSPACE_CHANGED_CODE}}),Object.defineProperty(exports,"WorkspaceChangedError",{enumerable:!0,get:function(){return _workspace.WorkspaceChangedError}}),Object.defineProperty(exports,"addDays",{enumerable:!0,get:function(){return _index4.addDays}}),Object.defineProperty(exports,"addMinAppVersionListener",{enumerable:!0,get:function(){return _minAppVersion.addMinAppVersionListener}}),Object.defineProperty(exports,"addNetworkStatusListener",{enumerable:!0,get:function(){return _index6.addNetworkStatusListener}}),Object.defineProperty(exports,"addSessionEndedListener",{enumerable:!0,get:function(){return _authStore.addSessionEndedListener}}),Object.defineProperty(exports,"apiErrorMessage",{enumerable:!0,get:function(){return _index3.apiErrorMessage}}),Object.defineProperty(exports,"applyRequestDefaults",{enumerable:!0,get:function(){return _requestDefaults.applyRequestDefaults}}),Object.defineProperty(exports,"attachRetry",{enumerable:!0,get:function(){return _retry.attachRetry}}),Object.defineProperty(exports,"buildCurl",{enumerable:!0,get:function(){return _curl.buildCurl}}),Object.defineProperty(exports,"clampNationalNumber",{enumerable:!0,get:function(){return _index4.clampNationalNumber}}),Object.defineProperty(exports,"clearSession",{enumerable:!0,get:function(){return _authStore.clearSession}}),Object.defineProperty(exports,"configureFormatters",{enumerable:!0,get:function(){return _index4.configureFormatters}}),Object.defineProperty(exports,"configureLogger",{enumerable:!0,get:function(){return _index5.configureLogger}}),Object.defineProperty(exports,"countryFlagEmoji",{enumerable:!0,get:function(){return _index4.countryFlagEmoji}}),Object.defineProperty(exports,"crashlyticsRemoteLogger",{enumerable:!0,get:function(){return _crashlytics.crashlyticsRemoteLogger}}),Object.defineProperty(exports,"decodeJWT",{enumerable:!0,get:function(){return _jwt.decodeJWT}}),Object.defineProperty(exports,"detectPhoneCountry",{enumerable:!0,get:function(){return _index4.detectPhoneCountry}}),Object.defineProperty(exports,"diffMs",{enumerable:!0,get:function(){return _index4.diffMs}}),Object.defineProperty(exports,"encodeBase64",{enumerable:!0,get:function(){return _base.encodeBase64}}),Object.defineProperty(exports,"extractApiError",{enumerable:!0,get:function(){return _index3.extractApiError}}),Object.defineProperty(exports,"formatCompactNumber",{enumerable:!0,get:function(){return _index4.formatCompactNumber}}),Object.defineProperty(exports,"formatCurrency",{enumerable:!0,get:function(){return _index4.formatCurrency}}),Object.defineProperty(exports,"formatDate",{enumerable:!0,get:function(){return _index4.formatDate}}),Object.defineProperty(exports,"formatDateDDMMMYYYY",{enumerable:!0,get:function(){return _index4.formatDateDDMMMYYYY}}),Object.defineProperty(exports,"formatDateISO",{enumerable:!0,get:function(){return _index4.formatDateISO}}),Object.defineProperty(exports,"formatDatePattern",{enumerable:!0,get:function(){return _index4.formatDatePattern}}),Object.defineProperty(exports,"formatDateTime",{enumerable:!0,get:function(){return _index4.formatDateTime}}),Object.defineProperty(exports,"formatMinor",{enumerable:!0,get:function(){return _index4.formatMinor}}),Object.defineProperty(exports,"formatNumber",{enumerable:!0,get:function(){return _index4.formatNumber}}),Object.defineProperty(exports,"formatPercent",{enumerable:!0,get:function(){return _index4.formatPercent}}),Object.defineProperty(exports,"formatPhone",{enumerable:!0,get:function(){return _index4.formatPhone}}),Object.defineProperty(exports,"formatPhoneAsTyped",{enumerable:!0,get:function(){return _index4.formatPhoneAsTyped}}),Object.defineProperty(exports,"formatRelative",{enumerable:!0,get:function(){return _index4.formatRelative}}),Object.defineProperty(exports,"formatRelativeTime",{enumerable:!0,get:function(){return _index4.formatRelativeTime}}),Object.defineProperty(exports,"formatTime",{enumerable:!0,get:function(){return _index4.formatTime}}),Object.defineProperty(exports,"formatTime12h",{enumerable:!0,get:function(){return _index4.formatTime12h}}),Object.defineProperty(exports,"formatTimeInWindowsZone",{enumerable:!0,get:function(){return _index4.formatTimeInWindowsZone}}),Object.defineProperty(exports,"formatTimeInZone",{enumerable:!0,get:function(){return _index4.formatTimeInZone}}),Object.defineProperty(exports,"getClientBuild",{enumerable:!0,get:function(){return _clientHeaders.getClientBuild}}),Object.defineProperty(exports,"getConfig",{enumerable:!0,get:function(){return _index.getConfig}}),Object.defineProperty(exports,"getConfigValue",{enumerable:!0,get:function(){return _index.getConfigValue}}),Object.defineProperty(exports,"getCountries",{enumerable:!0,get:function(){return _index4.getCountries}}),Object.defineProperty(exports,"getCountryCallingCode",{enumerable:!0,get:function(){return _index4.getCountryCallingCode}}),Object.defineProperty(exports,"getDeviceContext",{enumerable:!0,get:function(){return _index5.getDeviceContext}}),Object.defineProperty(exports,"getFormatterConfig",{enumerable:!0,get:function(){return _index4.getFormatterConfig}}),Object.defineProperty(exports,"getInitials",{enumerable:!0,get:function(){return _index4.getInitials}}),Object.defineProperty(exports,"getJWTExpiry",{enumerable:!0,get:function(){return _jwt.getJWTExpiry}}),Object.defineProperty(exports,"getMinAppVersion",{enumerable:!0,get:function(){return _minAppVersion.getMinAppVersion}}),Object.defineProperty(exports,"getNetworkStatus",{enumerable:!0,get:function(){return _index6.getNetworkStatus}}),Object.defineProperty(exports,"getPhoneCountries",{enumerable:!0,get:function(){return _index4.getPhoneCountries}}),Object.defineProperty(exports,"getSessionUser",{enumerable:!0,get:function(){return _authStore.getSessionUser}}),Object.defineProperty(exports,"getToken",{enumerable:!0,get:function(){return _authStore.getToken}}),Object.defineProperty(exports,"initUserAuth",{enumerable:!0,get:function(){return _initUserAuth.initUserAuth}}),Object.defineProperty(exports,"initWebority",{enumerable:!0,get:function(){return _initSDK.initWebority}}),Object.defineProperty(exports,"injectStore",{enumerable:!0,get:function(){return _userClient.injectStore}}),Object.defineProperty(exports,"injectUserAuth",{enumerable:!0,get:function(){return _userClient.injectUserAuth}}),Object.defineProperty(exports,"isAadhaar",{enumerable:!0,get:function(){return _index8.isAadhaar}}),Object.defineProperty(exports,"isAlphanumeric",{enumerable:!0,get:function(){return _index8.isAlphanumeric}}),Object.defineProperty(exports,"isApiError",{enumerable:!0,get:function(){return _index3.isApiError}}),Object.defineProperty(exports,"isBetween",{enumerable:!0,get:function(){return _index8.isBetween}}),Object.defineProperty(exports,"isBuildBelowMinimum",{enumerable:!0,get:function(){return _index9.isBuildBelowMinimum}}),Object.defineProperty(exports,"isDateAfter",{enumerable:!0,get:function(){return _index4.isDateAfter}}),Object.defineProperty(exports,"isDateBefore",{enumerable:!0,get:function(){return _index4.isDateBefore}}),Object.defineProperty(exports,"isEmail",{enumerable:!0,get:function(){return _index8.isEmail}}),Object.defineProperty(exports,"isGstin",{enumerable:!0,get:function(){return _index8.isGstin}}),Object.defineProperty(exports,"isHexColor",{enumerable:!0,get:function(){return _index8.isHexColor}}),Object.defineProperty(exports,"isIfsc",{enumerable:!0,get:function(){return _index8.isIfsc}}),Object.defineProperty(exports,"isIndianMobile",{enumerable:!0,get:function(){return _index8.isIndianMobile}}),Object.defineProperty(exports,"isIndianPincode",{enumerable:!0,get:function(){return _index8.isIndianPincode}}),Object.defineProperty(exports,"isInteger",{enumerable:!0,get:function(){return _index8.isInteger}}),Object.defineProperty(exports,"isJWTExpired",{enumerable:!0,get:function(){return _jwt.isJWTExpired}}),Object.defineProperty(exports,"isNeverSentError",{enumerable:!0,get:function(){return _retry.isNeverSentError}}),Object.defineProperty(exports,"isNoResponse",{enumerable:!0,get:function(){return _index3.isNoResponse}}),Object.defineProperty(exports,"isNonEmpty",{enumerable:!0,get:function(){return _index8.isNonEmpty}}),Object.defineProperty(exports,"isNumeric",{enumerable:!0,get:function(){return _index8.isNumeric}}),Object.defineProperty(exports,"isPan",{enumerable:!0,get:function(){return _index8.isPan}}),Object.defineProperty(exports,"isPhone",{enumerable:!0,get:function(){return _index8.isPhone}}),Object.defineProperty(exports,"isRetryableFailure",{enumerable:!0,get:function(){return _retry.isRetryableFailure}}),Object.defineProperty(exports,"isRetryableStatus",{enumerable:!0,get:function(){return _retry.isRetryableStatus}}),Object.defineProperty(exports,"isSameDay",{enumerable:!0,get:function(){return _index4.isSameDay}}),Object.defineProperty(exports,"isStorageAvailable",{enumerable:!0,get:function(){return _index7.isStorageAvailable}}),Object.defineProperty(exports,"isStrongPassword",{enumerable:!0,get:function(){return _index8.isStrongPassword}}),Object.defineProperty(exports,"isSupportedCountry",{enumerable:!0,get:function(){return _index4.isSupportedCountry}}),Object.defineProperty(exports,"isUrl",{enumerable:!0,get:function(){return _index8.isUrl}}),Object.defineProperty(exports,"isValidNationalNumber",{enumerable:!0,get:function(){return _index4.isValidNationalNumber}}),Object.defineProperty(exports,"isValidPhoneNumber",{enumerable:!0,get:function(){return _index4.isValidPhoneNumber}}),Object.defineProperty(exports,"isWorkspaceChangedError",{enumerable:!0,get:function(){return _workspace.isWorkspaceChangedError}}),Object.defineProperty(exports,"logCurl",{enumerable:!0,get:function(){return _curl.logCurl}}),Object.defineProperty(exports,"maxLength",{enumerable:!0,get:function(){return _index8.maxLength}}),Object.defineProperty(exports,"maxNationalNumberLength",{enumerable:!0,get:function(){return _index4.maxNationalNumberLength}}),Object.defineProperty(exports,"minLength",{enumerable:!0,get:function(){return _index8.minLength}}),Object.defineProperty(exports,"newCorrelationId",{enumerable:!0,get:function(){return _requestDefaults.newCorrelationId}}),Object.defineProperty(exports,"normalizePhone",{enumerable:!0,get:function(){return _index4.normalizePhone}}),Object.defineProperty(exports,"parseBuildNumber",{enumerable:!0,get:function(){return _index9.parseBuildNumber}}),Object.defineProperty(exports,"parseDeepLink",{enumerable:!0,get:function(){return _index2.parseDeepLink}}),Object.defineProperty(exports,"parsePhoneNumber",{enumerable:!0,get:function(){return _index4.parsePhoneNumber}}),Object.defineProperty(exports,"parsePhoneNumberFromString",{enumerable:!0,get:function(){return _index4.parsePhoneNumberFromString}}),Object.defineProperty(exports,"publicClient",{enumerable:!0,get:function(){return _publicClient.default}}),Object.defineProperty(exports,"refreshAccessToken",{enumerable:!0,get:function(){return _tokenRefresh.refreshAccessToken}}),Object.defineProperty(exports,"removeSessionUser",{enumerable:!0,get:function(){return _authStore.removeSessionUser}}),Object.defineProperty(exports,"removeToken",{enumerable:!0,get:function(){return _authStore.removeToken}}),Object.defineProperty(exports,"resetConfig",{enumerable:!0,get:function(){return _index.resetConfig}}),Object.defineProperty(exports,"resetRefreshState",{enumerable:!0,get:function(){return _userClient.resetRefreshState}}),Object.defineProperty(exports,"retryAfterMs",{enumerable:!0,get:function(){return _retry.retryAfterMs}}),Object.defineProperty(exports,"setConfig",{enumerable:!0,get:function(){return _index.setConfig}}),Object.defineProperty(exports,"setDeviceContext",{enumerable:!0,get:function(){return _index5.setDeviceContext}}),Object.defineProperty(exports,"setDeviceInfoImplementation",{enumerable:!0,get:function(){return _index9.setDeviceInfoImplementation}}),Object.defineProperty(exports,"setKeychainImplementation",{enumerable:!0,get:function(){return _authStore.setKeychainImplementation}}),Object.defineProperty(exports,"setLegacyTokenKeys",{enumerable:!0,get:function(){return _authStore.setLegacyTokenKeys}}),Object.defineProperty(exports,"setNetworkStatusImplementation",{enumerable:!0,get:function(){return _index6.setNetworkStatusImplementation}}),Object.defineProperty(exports,"setStorageImplementation",{enumerable:!0,get:function(){return _index7.setStorageImplementation}}),Object.defineProperty(exports,"splitPhoneNumber",{enumerable:!0,get:function(){return _index4.splitPhoneNumber}}),Object.defineProperty(exports,"startOfDay",{enumerable:!0,get:function(){return _index4.startOfDay}}),Object.defineProperty(exports,"storeSessionUser",{enumerable:!0,get:function(){return _authStore.storeSessionUser}}),Object.defineProperty(exports,"storeToken",{enumerable:!0,get:function(){return _authStore.storeToken}}),Object.defineProperty(exports,"toFieldPath",{enumerable:!0,get:function(){return _index3.toFieldPath}}),Object.defineProperty(exports,"useDeepLink",{enumerable:!0,get:function(){return _index2.useDeepLink}}),Object.defineProperty(exports,"useNetworkStatus",{enumerable:!0,get:function(){return _index6.useNetworkStatus}}),Object.defineProperty(exports,"useVersionCheck",{enumerable:!0,get:function(){return _index9.useVersionCheck}}),Object.defineProperty(exports,"userClient",{enumerable:!0,get:function(){return _userClient.default}}),Object.defineProperty(exports,"validatePhoneNumberLength",{enumerable:!0,get:function(){return _index4.validatePhoneNumberLength}});var _clientHeaders=require("./api/clientHeaders.js"),_curl=require("./api/curl.js"),_minAppVersion=require("./api/minAppVersion.js"),_publicClient=_interopRequireDefault(require("./api/publicClient.js")),_requestDefaults=require("./api/requestDefaults.js"),_retry=require("./api/retry.js"),_tokenRefresh=require("./api/tokenRefresh.js"),_userClient=_interopRequireWildcard(require("./api/userClient.js")),_workspace=require("./api/workspace.js"),_authStore=require("./auth/authStore.js"),_jwt=require("./auth/jwt.js"),_index=require("./config/index.js"),_index2=require("./deepLink/index.js"),_index3=require("./errors/index.js"),_index4=require("./formatters/index.js"),_initSDK=require("./initSDK.js"),_initUserAuth=require("./initUserAuth.js"),_index5=require("./logger/index.js"),_crashlytics=require("./logger/crashlytics.js"),_index6=require("./network/index.js"),_status=require("./push/status.js"),_index7=require("./storage/index.js"),_base=require("./utils/base64.js"),_index8=require("./validators/index.js"),_index9=require("./versionCheck/index.js");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(i=r?n:t){if(i.has(e))return i.get(e);i.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?i(u,r,o):u[r]=e[r]);return u})(e,r)}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}
|
package/lib/commonjs/initSDK.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.initWebority=void 0;var _authStore=require("./auth/authStore.js"),_index=require("./config/index.js"),_index2=require("./logger/index.js"),_networkStatus=require("./network/networkStatus.js"),_index3=require("./storage/index.js");const initWebority=e=>{if(!e.baseUrl)throw new Error("baseUrl is required for Webority packages initialization");(0,_index.setConfig)({baseUrl:e.baseUrl,loggingEnabled:e.loggingEnabled??!0,logLevel:e.logLevel||_index.DEFAULT_LOG_LEVEL,environment:e.environment||"Development",country:(e.country||"in").toLowerCase(),appId:e.appId??null,appVersion:e.appVersion??null,commit:e.commit??null,appBuild:e.appBuild??null,appStoreId:e.appStoreId??null,logCurl:e.logCurl??!1,timeoutMs:e.timeoutMs??_index.DEFAULT_TIMEOUT_MS,retries:e.retries??_index.DEFAULT_RETRIES,correlationIdHeader:void 0===e.correlationIdHeader?_index.DEFAULT_CORRELATION_ID_HEADER:e.correlationIdHeader});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.initWebority=void 0;var _authStore=require("./auth/authStore.js"),_index=require("./config/index.js"),_index2=require("./logger/index.js"),_networkStatus=require("./network/networkStatus.js"),_index3=require("./storage/index.js");const initWebority=e=>{if(!e.baseUrl)throw new Error("baseUrl is required for Webority packages initialization");if(void 0===e.remoteLogger)throw new Error("remoteLogger is required for Webority packages initialization: pass a RemoteLogger, or null for a build without crash reporting");(0,_index2.setRemoteLogger)(e.remoteLogger),(0,_index.setConfig)({baseUrl:e.baseUrl,loggingEnabled:e.loggingEnabled??!0,logLevel:e.logLevel||_index.DEFAULT_LOG_LEVEL,environment:e.environment||"Development",country:(e.country||"in").toLowerCase(),appId:e.appId??null,appVersion:e.appVersion??null,commit:e.commit??null,appBuild:e.appBuild??null,appStoreId:e.appStoreId??null,logCurl:e.logCurl??!1,timeoutMs:e.timeoutMs??_index.DEFAULT_TIMEOUT_MS,retries:e.retries??_index.DEFAULT_RETRIES,correlationIdHeader:void 0===e.correlationIdHeader?_index.DEFAULT_CORRELATION_ID_HEADER:e.correlationIdHeader});const r=e.backends;r?.storage&&(0,_index3.setStorageImplementation)(r.storage),r?.keychain&&(0,_authStore.setKeychainImplementation)(r.keychain),r?.network&&(0,_networkStatus.setNetworkStatusImplementation)(r.network),_index2.Logger.info("[@webority/mobile-core] initialized")};exports.initWebority=initWebority;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setRemoteLogger=exports.setDeviceContext=exports.getDeviceContext=exports.configureLogger=exports.Logger=void 0;var _index=require("../config/index.js"),_extractApiError=require("../errors/extractApiError.js"),_redact=require("./redact.js");const Colors={RESET:"[0m",GRAY:"[90m",BLUE:"[34m",YELLOW:"[33m",RED_BOLD:"[31;1m"},LogLevels={DEBUG:{level:"debug",color:Colors.GRAY},INFO:{level:"info",color:Colors.BLUE},WARN:{level:"warn",color:Colors.YELLOW},ERROR:{level:"error",color:Colors.RED_BOLD}},isLogLevelAllowed=e=>{const r=["debug","info","warn","error"],o=(0,_index.getConfigValue)("logLevel","info");return r.indexOf(e)>=r.indexOf(o)},isEnabled=()=>(0,_index.getConfigValue)("loggingEnabled",!0);let remote=null;const setRemoteLogger=e=>{remote=e};exports.setRemoteLogger=setRemoteLogger;const safe=e=>{if(e)try{e()}catch{}},toErrorObject=e=>{if(e instanceof Error)return e;if("string"==typeof e)return new Error(e);try{return new Error(JSON.stringify(e))}catch{return new Error(String(e))}};let deviceContext=null;const normalizeAttributeValue=e=>null==e?null:"string"==typeof e||"number"==typeof e||"boolean"==typeof e?e:String(e),setDeviceContext=e=>{if(deviceContext=e,e)for(const[r,o]of Object.entries(e))safe(()=>remote?.setAttribute?.(r,normalizeAttributeValue(o)))};exports.setDeviceContext=setDeviceContext;const getDeviceContext=()=>deviceContext;exports.getDeviceContext=getDeviceContext;const DEFAULT_LOGGER_OPTIONS={dedupeWindowMs:5e3,dedupeMaxPerWindow:1,screenHistoryLimit:20};let loggerOptions={...DEFAULT_LOGGER_OPTIONS};const configureLogger=e=>{loggerOptions={...loggerOptions,...
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setRemoteLogger=exports.setDeviceContext=exports.getDeviceContext=exports.configureLogger=exports.Logger=void 0;var _index=require("../config/index.js"),_extractApiError=require("../errors/extractApiError.js"),_redact=require("./redact.js");const Colors={RESET:"[0m",GRAY:"[90m",BLUE:"[34m",YELLOW:"[33m",RED_BOLD:"[31;1m"},LogLevels={DEBUG:{level:"debug",color:Colors.GRAY},INFO:{level:"info",color:Colors.BLUE},WARN:{level:"warn",color:Colors.YELLOW},ERROR:{level:"error",color:Colors.RED_BOLD}},isLogLevelAllowed=e=>{const r=["debug","info","warn","error"],o=(0,_index.getConfigValue)("logLevel","info");return r.indexOf(e)>=r.indexOf(o)},isEnabled=()=>(0,_index.getConfigValue)("loggingEnabled",!0);let remote=null;const setRemoteLogger=e=>{remote=e};exports.setRemoteLogger=setRemoteLogger;const safe=e=>{if(e)try{e()}catch{}},toErrorObject=e=>{if(e instanceof Error)return e;if("string"==typeof e)return new Error(e);try{return new Error(JSON.stringify(e))}catch{return new Error(String(e))}};let deviceContext=null;const normalizeAttributeValue=e=>null==e?null:"string"==typeof e||"number"==typeof e||"boolean"==typeof e?e:String(e),setDeviceContext=e=>{if(deviceContext=e,e)for(const[r,o]of Object.entries(e))safe(()=>remote?.setAttribute?.(r,normalizeAttributeValue(o)))};exports.setDeviceContext=setDeviceContext;const getDeviceContext=()=>deviceContext;exports.getDeviceContext=getDeviceContext;const DEFAULT_LOGGER_OPTIONS={dedupeWindowMs:5e3,dedupeMaxPerWindow:1,screenHistoryLimit:20,breadcrumbLimit:50};let loggerOptions={...DEFAULT_LOGGER_OPTIONS};const configureLogger=e=>{const{redactKeys:r,...o}=e;void 0!==r&&(0,_redact.configureRedaction)(r),loggerOptions={...loggerOptions,...o},screenHistory.length>loggerOptions.screenHistoryLimit&&(screenHistory=screenHistory.slice(screenHistory.length-loggerOptions.screenHistoryLimit)),trimBreadcrumbs()};exports.configureLogger=configureLogger;let currentScreen=null,screenHistory=[];const breadcrumbs=[],trimBreadcrumbs=()=>{const e=breadcrumbs.length-loggerOptions.breadcrumbLimit;e>0&&breadcrumbs.splice(0,e)},dedupeMap=new Map,MAX_DEDUPE_ENTRIES=200,dedupeKeyFor=e=>{const r=e.stack?.split("\n")[1]?.trim();return r?`${e.message}::${r}`:e.message},capDedupeMap=()=>{for(;dedupeMap.size>200;){const e=dedupeMap.keys().next().value;if(void 0===e)return;dedupeMap.delete(e)}},shouldForward=e=>{if(loggerOptions.dedupeWindowMs<=0)return{forward:!0};const r=Date.now(),o=dedupeMap.get(e);if(!o||r-o.windowStart>=loggerOptions.dedupeWindowMs){const t=o?.suppressedCount??0;return dedupeMap.set(e,{windowStart:r,count:1,suppressedCount:0}),capDedupeMap(),t>0?{forward:!0,suppressedCount:t}:{forward:!0}}return o.count+=1,o.count>loggerOptions.dedupeMaxPerWindow?(o.suppressedCount+=1,{forward:!1}):{forward:!0}},buildErrorContext=(e,r)=>{const o={...deviceContext};return null!==currentScreen&&(o.screen=currentScreen),r&&(o.suppressedCount=r),{...o,...e}},forwardErrorToRemote=(e,r)=>{const o=dedupeKeyFor(e),{forward:t,suppressedCount:s}=shouldForward(o);t&&safe(()=>remote?.recordError?.(e,buildErrorContext(r,s)))},logDebug=(e,...r)=>{isEnabled()&&isLogLevelAllowed(LogLevels.DEBUG.level)&&console.debug(`${LogLevels.DEBUG.color}[DEBUG]: ${(0,_redact.redactString)(e)}${Colors.RESET}`,...(0,_redact.redact)(r))},logInfo=(e,...r)=>{const o=(0,_redact.redactString)(e),t=(0,_redact.redact)(r);isEnabled()&&isLogLevelAllowed(LogLevels.INFO.level)&&(console.info(`${LogLevels.INFO.color}[INFO]: ${o}${Colors.RESET}`,...t),safe(()=>remote?.log?.("info",o,t)))},logWarning=(e,...r)=>{const o=(0,_redact.redactString)(e),t=(0,_redact.redact)(r);isEnabled()&&isLogLevelAllowed(LogLevels.WARN.level)&&(console.warn(`${LogLevels.WARN.color}[WARNING]: ${o}${Colors.RESET}`,...t),safe(()=>remote?.log?.("warn",o,t)))},logError=(e,...r)=>{const o=(0,_redact.redactString)(e),t=(0,_redact.redact)(r);isEnabled()&&isLogLevelAllowed(LogLevels.ERROR.level)&&console.error(`${LogLevels.ERROR.color}[ERROR]: ${o}${Colors.RESET}`,...t),safe(()=>remote?.log?.("error",o,t));const s=t[0];void 0===s||(0,_extractApiError.isNoResponse)(r[0])||forwardErrorToRemote(toErrorObject(s),{source:"Logger.error",message:o})},breadcrumb=(e,r)=>{const o=(0,_redact.redactString)(e),t=(0,_redact.redact)(r);breadcrumbs.push({message:o,data:t,timestampUtc:(new Date).toISOString()}),trimBreadcrumbs(),isEnabled()&&isLogLevelAllowed("info")&&console.info(`${Colors.BLUE}[BREADCRUMB]: ${o}${Colors.RESET}`,t??""),safe(()=>remote?.breadcrumb?.(o,t))},recordError=(e,r)=>{const o=(0,_redact.redact)(toErrorObject(e)),t=(0,_redact.redact)(r);(0,_extractApiError.isNoResponse)(e)?logInfo(`No response: ${o.message}`):(isEnabled()&&isLogLevelAllowed("error")&&console.error(`${Colors.RED_BOLD}[RECORDED]: ${o.message}${Colors.RESET}`,t??""),forwardErrorToRemote(o,t))},asDict=e=>"object"==typeof e&&null!==e?e:null,headerValue=(e,r)=>{const o=asDict(e);if(!o)return null;const t="function"==typeof o.get?o.get.call(e,r):o[r]??o[r.toLowerCase()];return"string"==typeof t&&""!==t?t:null},requestFailed=(e,r={})=>{const{label:o,expectedStatuses:t=[],...s}=r,n=asDict(e),c=asDict(n?.config),l=asDict(n?.response),i=asDict(l?.data),a="number"==typeof l?.status?l.status:null,d="string"==typeof c?.method?c.method.toUpperCase():null,g="string"==typeof c?.url?c.url.split("?")[0]??null:null,u=o??([d,g].filter(Boolean).join(" ")||"Request");if("CanceledError"===n?.name||"ERR_CANCELED"===n?.code||!0===n?.__CANCEL__)return void logInfo(`${u} canceled`);if("RequestOfflineError"===n?.name)return void logInfo(`${u} not sent (offline)`);if((0,_extractApiError.isNoResponse)(e))return void logInfo(`${u} got no response`);if("WorkspaceChangedError"===n?.name||"workspace_changed"===i?.code)return void logInfo(`${u} refused (another workspace)`);if(null!==a&&t.includes(a))return void logInfo(`${u} refused (${a})`);const p="string"==typeof n?.message?n.message:e instanceof Error?e.message:null,f=(0,_redact.redactString)(null===a?`${u} failed`:`${u} failed (${a})`);isEnabled()&&isLogLevelAllowed(LogLevels.ERROR.level)&&console.error(`${LogLevels.ERROR.color}[ERROR]: ${f}${Colors.RESET}`,(0,_redact.redactString)(p??"")),safe(()=>remote?.log?.("error",f,[]));const E=(0,_index.getConfigValue)("correlationIdHeader",null),L=(0,_redact.redact)({source:"Logger.requestFailed",label:u,status:a,method:d,path:g,code:"string"==typeof i?.code?i.code:null,traceId:"string"==typeof i?.traceId?i.traceId:null,correlationId:E?headerValue(c?.headers,E):null,detail:p,...s});forwardErrorToRemote((0,_redact.redact)(new Error(f)),L)},setUser=(e,r)=>{safe(()=>remote?.setUser?.(e,r))},setAttribute=(e,r)=>{safe(()=>remote?.setAttribute?.(e,r))},trackScreen=(e,r)=>{e!==currentScreen&&(currentScreen=e,screenHistory.push(e),screenHistory.length>loggerOptions.screenHistoryLimit&&(screenHistory=screenHistory.slice(screenHistory.length-loggerOptions.screenHistoryLimit)),breadcrumb(`Screen: ${e}`,r))},getCurrentScreen=()=>currentScreen,getScreenHistory=()=>[...screenHistory],getBreadcrumbs=()=>[...breadcrumbs],Logger=exports.Logger={debug:logDebug,info:logInfo,warn:logWarning,error:logError,breadcrumb:breadcrumb,recordError:recordError,requestFailed:requestFailed,setUser:setUser,setAttribute:setAttribute,trackScreen:trackScreen,getCurrentScreen:getCurrentScreen,getScreenHistory:getScreenHistory,getBreadcrumbs:getBreadcrumbs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.redactString=exports.redact=void 0;const REDACTED="[REDACTED]",
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.redactString=exports.redact=exports.configureRedaction=void 0;const REDACTED="[REDACTED]",BEARER=/\bBearer\s+[A-Za-z0-9._~+/-]+=*/gi,JWT=/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*/g,VALUE=/(?:"(?:[^"\\]|\\.)*"|'[^']*'|[^\s,;&}]+)/.source,MAX_DEPTH=6,DEFAULT_SECRET_KEYS=["token","accessToken","refreshToken","idToken","password","newPassword","currentPassword","oldPassword","ownerPassword","authorization","cookie","setCookie","xApiKey","apiKey","clientSecret","secret","otp","mpin","pan","panNumber","aadhaar","aadhaarNumber","accountNumber","cardNumber","cvv"],normalizeKey=e=>e.replace(/[-_]/g,"").toLowerCase(),escapeChar=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),keyPattern=e=>Array.from(e,escapeChar).join("[-_]?");let secretKeys=new Set,keyedValue=/(?!)/g;const configureRedaction=e=>{const r=new Set([...DEFAULT_SECRET_KEYS,...e].map(normalizeKey).filter(e=>""!==e));secretKeys=r;const t=[...r].map(keyPattern).join("|");keyedValue=new RegExp(`(^|[^A-Za-z0-9])(["']?(?:${t})["']?\\s*[:=]\\s*)${VALUE}`,"gi")};exports.configureRedaction=configureRedaction,configureRedaction([]);const redactString=e=>e.replace(BEARER,`Bearer ${REDACTED}`).replace(JWT,REDACTED).replace(keyedValue,(e,r,t)=>`${r}${t}"${REDACTED}"`);exports.redactString=redactString;const redactInner=(e,r,t)=>{if("string"==typeof e)return redactString(e);if(null===e||"object"!=typeof e)return e;if(e instanceof Error)return e.message=redactString(e.message),e.stack&&(e.stack=redactString(e.stack)),e;if(r>=6||t.has(e))return e;if(t.add(e),Array.isArray(e))return e.map(e=>redactInner(e,r+1,t));const a=Object.getPrototypeOf(e);if(a!==Object.prototype&&null!==a)return e;const n={};for(const[a,o]of Object.entries(e))n[a]=secretKeys.has(normalizeKey(a))?REDACTED:redactInner(o,r+1,t);return n},redact=e=>redactInner(e,0,new WeakSet);exports.redact=redact;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.usePush=exports.toPushReceived=exports.toPushAction=exports.toNotificationActions=exports.setPushImplementation=exports.setCategories=exports.setBadgeCount=exports.routeTaskPayload=exports.resolveModules=exports.resetPush=exports.onReceive=exports.onAction=exports.notifyLocal=exports.initPush=exports.enablePush=exports.dismissAllNotifications=exports.disablePush=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../logger/index.js");let resolved,override=null;const setPushImplementation=e=>{override=e};exports.setPushImplementation=setPushImplementation;const resolveModules=()=>{if(override)return override;if(void 0!==resolved)return resolved;try{if(require("expo").isRunningInExpoGo())return resolved=null,resolved;const e=require("expo-notifications"),t=require("expo-application");resolved={notifications:e,applicationId:t.applicationId,getApnsEnvironment:()=>t.getIosPushNotificationServiceEnvironmentAsync()}}catch(e){_index.Logger.warn("[push] expo-notifications is not available; push is off",e),resolved=null}return resolved};exports.resolveModules=resolveModules;let state={status:"unknown",enabled:!1};const subscribers=new Set,setState=e=>{state={...state,...e};for(const e of subscribers)e()};let config=null,channelsReady=Promise.resolve(),tokenSubscription=null,actionHandler=null;const receiveHandlers=new Set;let listening=!1,listeningForReceived=!1;const pendingResponses=[],routedAt=new Map,REPEAT_WINDOW_MS=1e4,requireConfig=()=>{if(!config)throw new Error("[@webority/mobile-core] call initPush before enablePush or disablePush.");return config},toPermissionStatus=e=>e.granted?"granted":"denied"===e.status?e.canAskAgain?"denied":"blocked":"undetermined",toStringData=e=>{const t={};for(const[n,o]of Object.entries(e??{}))null!=o&&(t[n]="object"==typeof o?JSON.stringify(o):String(o));return t},contentData=e=>{const t=e.request.content;if(t.data)return toStringData(t.data);if("string"==typeof t.dataString)try{return toStringData(JSON.parse(t.dataString))}catch(e){_index.Logger.error("[push] notification data is not JSON",e)}return{}},triggerData=e=>{const t=e.request.trigger,n={...t?.remoteMessage?.data??{}};for(const[e,o]of Object.entries(t?.payload??{}))"aps"===e||"body"===e&&"object"==typeof o||(n[e]=o);return toStringData(n)},notificationData=e=>({...triggerData(e),...contentData(e)}),responseData=e=>notificationData(e.notification),toPushReceived=e=>({notificationId:e.request.identifier,title:e.request.content.title??null,body:e.request.content.body??null,data:notificationData(e)});exports.toPushReceived=toPushReceived;const toPushAction=e=>({actionId:e.actionIdentifier,...e.userText?{userText:e.userText}:{},data:responseData(e),notificationId:e.notification.request.identifier});exports.toPushAction=toPushAction;const toNotificationActions=e=>e.map(e=>({identifier:e.id,buttonTitle:e.title,...e.textInput?{textInput:{submitButtonTitle:e.textInput.submitTitle,placeholder:e.textInput.placeholder}}:{},options:{opensAppToForeground:e.opensApp??!0,isDestructive:e.destructive??!1,isAuthenticationRequired:e.authenticationRequired??!1}}));exports.toNotificationActions=toNotificationActions;const routeResponse=async(e,t)=>{const n=`${t.notification.request.identifier}:${t.actionIdentifier}`,o=routedAt.get(n);if(void 0!==o&&Date.now()-o<1e4)return;if(t.actionIdentifier!==e.DEFAULT_ACTION_IDENTIFIER&&actionHandler){routedAt.set(n,Date.now());try{await actionHandler(toPushAction(t))}catch(e){_index.Logger.error("[push] onAction threw",e)}}else if(config){routedAt.set(n,Date.now());try{config.onOpen(responseData(t))}catch(e){_index.Logger.error("[push] onOpen threw",e)}}else pendingResponses.push(t)},drainPending=async e=>{const t=pendingResponses.splice(0);for(const n of t)await routeResponse(e,n)},listenForResponses=e=>{listening||(listening=!0,e.addNotificationResponseReceivedListener(t=>{routeResponse(e,t)}),e.getLastNotificationResponseAsync().then(async t=>(t&&await routeResponse(e,t),e.clearLastNotificationResponseAsync?.())).catch(e=>_index.Logger.error("[push] reading the launch notification failed",e)))},routeTaskPayload=async e=>{const t=resolveModules(),n=e;t&&"string"==typeof n?.actionIdentifier&&"string"==typeof n.notification?.request?.identifier&&await routeResponse(t.notifications,n)};exports.routeTaskPayload=routeTaskPayload;const createChannels=async(e,t)=>{for(const n of t)try{await e.setNotificationChannelAsync(n.id,{name:n.name,importance:"high"===n.importance?e.AndroidImportance.HIGH:e.AndroidImportance.DEFAULT})}catch(e){_index.Logger.error(`[push] creating channel ${n.id} failed`,e)}},APNS_ENVIRONMENTS={development:"Development",production:"Production"},readApnsEnvironment=async e=>{try{return APNS_ENVIRONMENTS[await e.getApnsEnvironment()??""]??null}catch(e){return _index.Logger.warn("[push] reading the APNs environment failed",e),null}},toDevice=async(e,t)=>{const n="android"===e.type?"Fcm":"ios"===e.type?"Apns":null;if(!n||"string"!=typeof e.data)return null;if(!t.applicationId)throw new Error("[@webority/mobile-core] push needs the app bundle id from expo-application.");return{installationId:await requireConfig().getInstallationId(),platform:n,token:e.data,appId:t.applicationId,apnsEnvironment:"Apns"===n?await readApnsEnvironment(t):null}},initPush=e=>{const t=null===config;if(config=e,!t)return;const n=resolveModules();if(!n)return void setState({status:"unavailable"});const o=n.notifications;o.setNotificationHandler({handleNotification:async()=>{const e=config?.showInForeground?.()??!0;return{shouldShowBanner:e,shouldShowList:e,shouldPlaySound:e&&(config?.playSoundInForeground?.()??!0),shouldSetBadge:!0}}}),"android"===_reactNative.Platform.OS&&e.androidChannels?.length&&(channelsReady=createChannels(o,e.androidChannels)),listenForResponses(o),drainPending(o),o.getPermissionsAsync().then(e=>setState({status:toPermissionStatus(e)})).catch(e=>_index.Logger.error("[push] permission check failed",e))};exports.initPush=initPush;let registering=null,registeredKey=null,unregistering=null,tokenDrop=Promise.resolve();const registerOnce=e=>{const t=JSON.stringify(e);if(registering?.key===t)return registering.promise;const n=requireConfig().register(e).then(()=>{registeredKey=t}).finally(()=>{registering?.promise===n&&(registering=null)});return registering={key:t,promise:n},n},enablePush=async({prompt:e=!0}={})=>{requireConfig();const t=resolveModules();if(!t)return setState({status:"unavailable"}),"unavailable";const n=t.notifications;await channelsReady,await tokenDrop;let o=await n.getPermissionsAsync();if(!o.granted&&e&&(o=await n.requestPermissionsAsync()),!o.granted){const e=toPermissionStatus(o);return setState({status:e}),e}const i=await toDevice(await n.getDevicePushTokenAsync(),t);return i?(await registerOnce(i),tokenSubscription?.remove(),tokenSubscription=n.addPushTokenListener(e=>{(unregistering??Promise.resolve()).then(()=>state.enabled?toDevice(e,t):null).then(e=>e&&JSON.stringify(e)!==registeredKey?registerOnce(e):void 0).catch(e=>_index.Logger.error("[push] re-registering a new token failed",e))}),setState({status:"granted",enabled:!0}),"granted"):(setState({status:"unavailable"}),"unavailable")};exports.enablePush=enablePush;const stopFollowingToken=()=>{tokenSubscription?.remove(),tokenSubscription=null,registeredKey=null,setState({enabled:!1})},disablePush=async()=>{const e=requireConfig(),t=await e.getInstallationId();await(registering?.promise.catch(()=>{}));let settle=()=>{};const n=new Promise(e=>{settle=e});unregistering=n;try{await e.unregister(t),stopFollowingToken()}finally{unregistering===n&&(unregistering=null),settle()}};exports.disablePush=disablePush;const resetPush=async()=>{stopFollowingToken();const e=resolveModules();if(!e)return;const t=e.notifications.unregisterForNotificationsAsync();tokenDrop=t.catch(()=>{}),await t};exports.resetPush=resetPush;const setBadgeCount=async e=>{const t=resolveModules();t&&await t.notifications.setBadgeCountAsync(e)};exports.setBadgeCount=setBadgeCount;const dismissAllNotifications=async()=>{const e=resolveModules();if(e)try{await e.notifications.dismissAllNotificationsAsync()}catch(e){_index.Logger.warn("[push] dismissing the notifications failed",e)}};exports.dismissAllNotifications=dismissAllNotifications;const setCategories=async e=>{const t=resolveModules();if(t)for(const n of e)await t.notifications.setNotificationCategoryAsync(n.id,toNotificationActions(n.actions))};exports.setCategories=setCategories;const onAction=e=>{actionHandler=e;const t=resolveModules();return t&&(listenForResponses(t.notifications),drainPending(t.notifications)),()=>{actionHandler===e&&(actionHandler=null)}};exports.onAction=onAction;const onReceive=e=>{receiveHandlers.add(e);const t=resolveModules();return t&&!listeningForReceived&&(listeningForReceived=!0,t.notifications.addNotificationReceivedListener(e=>{const t=toPushReceived(e);for(const e of[...receiveHandlers])try{e(t)}catch(e){_index.Logger.error("[push] onReceive threw",e)}})),()=>{receiveHandlers.delete(e)}};exports.onReceive=onReceive;const notifyLocal=async({title:e,body:t,data:n})=>{const o=resolveModules();o&&await o.notifications.scheduleNotificationAsync({content:{title:e,body:t,data:n??{}},trigger:null})};exports.notifyLocal=notifyLocal;const subscribe=e=>(subscribers.add(e),()=>{subscribers.delete(e)}),getSnapshot=()=>state,enable=async()=>{await enablePush()},usePush=()=>({...(0,_react.useSyncExternalStore)(subscribe,getSnapshot,getSnapshot),enable:enable,disable:disablePush});exports.usePush=usePush;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.usePush=exports.toPushReceived=exports.toPushAction=exports.toNotificationActions=exports.setPushImplementation=exports.setCategories=exports.setBadgeCount=exports.routeTaskPayload=exports.resolveModules=exports.resetPush=exports.onReceive=exports.onAction=exports.notifyLocal=exports.initPush=exports.enablePush=exports.dismissAllNotifications=exports.disablePush=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../logger/index.js");let resolved,override=null;const setPushImplementation=e=>{override=e};exports.setPushImplementation=setPushImplementation;const resolveModules=()=>{if(override)return override;if(void 0!==resolved)return resolved;try{if(require("expo").isRunningInExpoGo())return resolved=null,resolved;const e=require("expo-notifications"),t=require("expo-application");resolved={notifications:e,applicationId:t.applicationId,getApnsEnvironment:()=>t.getIosPushNotificationServiceEnvironmentAsync()}}catch(e){_index.Logger.warn("[push] expo-notifications is not available; push is off",e),resolved=null}return resolved};exports.resolveModules=resolveModules;let state={status:"unknown",enabled:!1};const subscribers=new Set,setState=e=>{state={...state,...e};for(const e of subscribers)e()};let config=null,channelsReady=Promise.resolve(),tokenSubscription=null,actionHandler=null;const receiveHandlers=new Set;let listening=!1,listeningForReceived=!1;const pendingResponses=[],routedAt=new Map,REPEAT_WINDOW_MS=1e4,requireConfig=()=>{if(!config)throw new Error("[@webority/mobile-core] call initPush before enablePush or disablePush.");return config},toPermissionStatus=e=>e.granted?"granted":"denied"===e.status?e.canAskAgain?"denied":"blocked":"undetermined",toStringData=e=>{const t={};for(const[n,o]of Object.entries(e??{}))null!=o&&(t[n]="object"==typeof o?JSON.stringify(o):String(o));return t},contentData=e=>{const t=e.request.content;if(t.data)return toStringData(t.data);if("string"==typeof t.dataString)try{return toStringData(JSON.parse(t.dataString))}catch(e){_index.Logger.error("[push] notification data is not JSON",e)}return{}},triggerData=e=>{const t=e.request.trigger,n={...t?.remoteMessage?.data??{}};for(const[e,o]of Object.entries(t?.payload??{}))"aps"===e||"body"===e&&"object"==typeof o||(n[e]=o);return toStringData(n)},notificationData=e=>({...triggerData(e),...contentData(e)}),responseData=e=>notificationData(e.notification),toPushReceived=e=>({notificationId:e.request.identifier,title:e.request.content.title??null,body:e.request.content.body??null,data:notificationData(e)});exports.toPushReceived=toPushReceived;const toPushAction=e=>({actionId:e.actionIdentifier,...e.userText?{userText:e.userText}:{},data:responseData(e),notificationId:e.notification.request.identifier});exports.toPushAction=toPushAction;const toNotificationActions=e=>e.map(e=>({identifier:e.id,buttonTitle:e.title,...e.textInput?{textInput:{submitButtonTitle:e.textInput.submitTitle,placeholder:e.textInput.placeholder}}:{},options:{opensAppToForeground:e.opensApp??!0,isDestructive:e.destructive??!1,isAuthenticationRequired:e.authenticationRequired??!1}}));exports.toNotificationActions=toNotificationActions;const routeResponse=async(e,t)=>{const n=`${t.notification.request.identifier}:${t.actionIdentifier}`,o=routedAt.get(n);if(void 0!==o&&Date.now()-o<1e4)return;if(t.actionIdentifier!==e.DEFAULT_ACTION_IDENTIFIER&&actionHandler){routedAt.set(n,Date.now());try{await actionHandler(toPushAction(t))}catch(e){_index.Logger.error("[push] onAction threw",e)}}else if(config){routedAt.set(n,Date.now());try{config.onOpen(responseData(t))}catch(e){_index.Logger.error("[push] onOpen threw",e)}}else pendingResponses.push(t)},drainPending=async e=>{const t=pendingResponses.splice(0);for(const n of t)await routeResponse(e,n)},listenForResponses=e=>{listening||(listening=!0,e.addNotificationResponseReceivedListener(t=>{routeResponse(e,t)}),e.getLastNotificationResponseAsync().then(async t=>(t&&await routeResponse(e,t),e.clearLastNotificationResponseAsync?.())).catch(e=>_index.Logger.error("[push] reading the launch notification failed",e)))},routeTaskPayload=async e=>{const t=resolveModules(),n=e;t&&"string"==typeof n?.actionIdentifier&&"string"==typeof n.notification?.request?.identifier&&await routeResponse(t.notifications,n)};exports.routeTaskPayload=routeTaskPayload;const createChannels=async(e,t)=>{for(const n of t)try{await e.setNotificationChannelAsync(n.id,{name:n.name,importance:"high"===n.importance?e.AndroidImportance.HIGH:e.AndroidImportance.DEFAULT})}catch(e){_index.Logger.error(`[push] creating channel ${n.id} failed`,e)}},APNS_ENVIRONMENTS={development:"Development",production:"Production"},readApnsEnvironment=async e=>{try{return APNS_ENVIRONMENTS[await e.getApnsEnvironment()??""]??null}catch(e){return _index.Logger.warn("[push] reading the APNs environment failed",e),null}},deviceTimeZone=()=>Intl.DateTimeFormat().resolvedOptions().timeZone||null,toDevice=async(e,t)=>{const n="android"===e.type?"Fcm":"ios"===e.type?"Apns":null;if(!n||"string"!=typeof e.data)return null;if(!t.applicationId)throw new Error("[@webority/mobile-core] push needs the app bundle id from expo-application.");return{installationId:await requireConfig().getInstallationId(),platform:n,token:e.data,appId:t.applicationId,apnsEnvironment:"Apns"===n?await readApnsEnvironment(t):null,timeZone:deviceTimeZone()}},initPush=e=>{const t=null===config;if(config=e,!t)return;const n=resolveModules();if(!n)return void setState({status:"unavailable"});const o=n.notifications;o.setNotificationHandler({handleNotification:async()=>{const e=config?.showInForeground?.()??!0;return{shouldShowBanner:e,shouldShowList:e,shouldPlaySound:e&&(config?.playSoundInForeground?.()??!0),shouldSetBadge:!0}}}),"android"===_reactNative.Platform.OS&&e.androidChannels?.length&&(channelsReady=createChannels(o,e.androidChannels)),listenForResponses(o),drainPending(o),o.getPermissionsAsync().then(e=>setState({status:toPermissionStatus(e)})).catch(e=>_index.Logger.error("[push] permission check failed",e))};exports.initPush=initPush;let registering=null,registeredKey=null,unregistering=null,tokenDrop=Promise.resolve();const registerOnce=e=>{const t=JSON.stringify(e);if(registering?.key===t)return registering.promise;const n=requireConfig().register(e).then(()=>{registeredKey=t}).finally(()=>{registering?.promise===n&&(registering=null)});return registering={key:t,promise:n},n},enablePush=async({prompt:e=!0}={})=>{requireConfig();const t=resolveModules();if(!t)return setState({status:"unavailable"}),"unavailable";const n=t.notifications;await channelsReady,await tokenDrop;let o=await n.getPermissionsAsync();if(!o.granted&&e&&(o=await n.requestPermissionsAsync()),!o.granted){const e=toPermissionStatus(o);return setState({status:e}),e}const i=await toDevice(await n.getDevicePushTokenAsync(),t);return i?(await registerOnce(i),tokenSubscription?.remove(),tokenSubscription=n.addPushTokenListener(e=>{(unregistering??Promise.resolve()).then(()=>state.enabled?toDevice(e,t):null).then(e=>e&&JSON.stringify(e)!==registeredKey?registerOnce(e):void 0).catch(e=>_index.Logger.error("[push] re-registering a new token failed",e))}),setState({status:"granted",enabled:!0}),"granted"):(setState({status:"unavailable"}),"unavailable")};exports.enablePush=enablePush;const stopFollowingToken=()=>{tokenSubscription?.remove(),tokenSubscription=null,registeredKey=null,setState({enabled:!1})},disablePush=async()=>{const e=requireConfig(),t=await e.getInstallationId();await(registering?.promise.catch(()=>{}));let settle=()=>{};const n=new Promise(e=>{settle=e});unregistering=n;try{await e.unregister(t),stopFollowingToken()}finally{unregistering===n&&(unregistering=null),settle()}};exports.disablePush=disablePush;const resetPush=async()=>{stopFollowingToken();const e=resolveModules();if(!e)return;const t=e.notifications.unregisterForNotificationsAsync();tokenDrop=t.catch(()=>{}),await t};exports.resetPush=resetPush;const setBadgeCount=async e=>{const t=resolveModules();t&&await t.notifications.setBadgeCountAsync(e)};exports.setBadgeCount=setBadgeCount;const dismissAllNotifications=async()=>{const e=resolveModules();if(e)try{await e.notifications.dismissAllNotificationsAsync()}catch(e){_index.Logger.warn("[push] dismissing the notifications failed",e)}};exports.dismissAllNotifications=dismissAllNotifications;const setCategories=async e=>{const t=resolveModules();if(t)for(const n of e)await t.notifications.setNotificationCategoryAsync(n.id,toNotificationActions(n.actions))};exports.setCategories=setCategories;const onAction=e=>{actionHandler=e;const t=resolveModules();return t&&(listenForResponses(t.notifications),drainPending(t.notifications)),()=>{actionHandler===e&&(actionHandler=null)}};exports.onAction=onAction;const onReceive=e=>{receiveHandlers.add(e);const t=resolveModules();return t&&!listeningForReceived&&(listeningForReceived=!0,t.notifications.addNotificationReceivedListener(e=>{const t=toPushReceived(e);for(const e of[...receiveHandlers])try{e(t)}catch(e){_index.Logger.error("[push] onReceive threw",e)}})),()=>{receiveHandlers.delete(e)}};exports.onReceive=onReceive;const notifyLocal=async({title:e,body:t,data:n})=>{const o=resolveModules();o&&await o.notifications.scheduleNotificationAsync({content:{title:e,body:t,data:n??{}},trigger:null})};exports.notifyLocal=notifyLocal;const subscribe=e=>(subscribers.add(e),()=>{subscribers.delete(e)}),getSnapshot=()=>state,enable=async()=>{await enablePush()},usePush=()=>({...(0,_react.useSyncExternalStore)(subscribe,getSnapshot,getSnapshot),enable:enable,disable:disablePush});exports.usePush=usePush;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setImageCompressorImplementation=exports.qualityForFileSize=exports.compressImage=exports.ImageUnreadableError=void 0;var _expoFileSystem=require("expo-file-system"),_expoImageManipulator=require("expo-image-manipulator"),_index=require("../logger/index.js");class ImageUnreadableError extends Error{constructor(e,t){super(`Image is unreadable (${t}): ${e||"<empty uri>"}`),this.name="ImageUnreadableError",this.uri=e}}exports.ImageUnreadableError=ImageUnreadableError;const release=e=>{try{e?.release?.()}catch{}},expoBackend={stat:async e=>{const t=new _expoFileSystem.File(e);return t.exists?null==t.size?null:{exists:!0,size:t.size}:{exists:!1,size:0}},remove:async e=>{new _expoFileSystem.File(e).delete()},open:async e=>{const t=_expoImageManipulator.ImageManipulator.manipulate(e);let i;try{i=await t.renderAsync()}finally{release(t)}return{width:i.width,height:i.height,encode:async({width:e,height:t,quality:r,format:a})=>{const n=_expoImageManipulator.ImageManipulator.manipulate(i);let o=null;try{void 0===e&&void 0===t||n.resize({width:e??null,height:t??null}),o=await n.renderAsync();const i=await o.saveAsync({compress:r,format:a});return{uri:i.uri,width:i.width,height:i.height}}finally{release(o),release(n)}},close:()=>release(i)}}};let backend=null;const setImageCompressorImplementation=e=>{backend=e};exports.setImageCompressorImplementation=setImageCompressorImplementation;const resolveBackend=()=>backend??expoBackend,EIGHT_MB=8388608,THREE_MB=3145728,qualityForFileSize=e=>null==e?.7:e>8388608?.6:e>3145728?.7:.8;exports.qualityForFileSize=qualityForFileSize;const DEFAULT_MAX_SIZE=1500,DEFAULT_MIN_QUALITY=.4,QUALITY_STEP=.1,SIZE_STEP=.75,MIN_SIDE=320,FORMAT={jpg:{encode:"jpeg",mimeType:"image/jpeg"},png:{encode:"png",mimeType:"image/png"},webp:{encode:"webp",mimeType:"image/webp"}},MIME_BY_EXTENSION={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",webp:"image/webp",gif:"image/gif",heic:"image/heic",heif:"image/heif",bmp:"image/bmp",tif:"image/tiff",tiff:"image/tiff"},lastSegment=e=>{const t=e.split(/[?#]/)[0]??"";return decodeURIComponentSafe(t.slice(t.lastIndexOf("/")+1))},decodeURIComponentSafe=e=>{try{return decodeURIComponent(e)}catch{return e}},extensionOf=e=>{const t=e.lastIndexOf(".");return t>0?e.slice(t+1).toLowerCase():""},withoutExtension=e=>{const t=e.lastIndexOf(".");return t>0?e.slice(0,t):e},baseNameFor=(e,t)=>withoutExtension(t?.trim()||lastSegment(e))||"image",round1=e=>Math.round(10*e)/10,safeStat=async(e,t)=>{try{return await e.stat(t)}catch{return null}},safeRemove=async(e,t)=>{try{await e.remove(t)}catch{}},renderWithin=async(e,t,i,r,a)=>{const n=Math.max(t.width,t.height)>i?t.width>=t.height?{width:i}:{height:i}:{},o=await t.encode({...n,quality:r,format:a}),s=await safeStat(e,o.uri);if(s&&(!s.exists||0===s.size))throw await safeRemove(e,o.uri),new ImageUnreadableError(o.uri,"the encoder wrote an empty file");return{...o,size:s?.size??null}},originalResult=(e,t,i,r)=>{const a=extensionOf(lastSegment(e))||"jpg",n=MIME_BY_EXTENSION[a]??"image/jpeg",o=`${i}.${a}`;return{uri:e,width:r?.width??null,height:r?.height??null,size:t,mimeType:n,extension:a,fileName:o,compressed:!1,quality:null,part:{uri:e,name:o,type:n}}},compressImage=async(e,t={})=>{if(!e)throw new ImageUnreadableError(e,"no uri");const i=resolveBackend(),{maxSize:r=DEFAULT_MAX_SIZE,output:a="jpg",maxBytes:n,minQuality:o=DEFAULT_MIN_QUALITY,name:s}=t,l=FORMAT[a]??FORMAT.jpg,m=baseNameFor(e,s),g=await safeStat(i,e);if(g&&!g.exists)throw new ImageUnreadableError(e,"the file does not exist");if(g&&0===g.size)throw new ImageUnreadableError(e,"the file is empty");const p=g?.size??t.fileSize??null;let d;try{d=await i.open(e)}catch(t){throw _index.Logger.error("[imageCompression] could not decode the image",t),new ImageUnreadableError(e,"the photo could not be decoded")}try{let e=t.quality??qualityForFileSize(p),s=r
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.setImageCompressorImplementation=exports.qualityForFileSize=exports.compressImage=exports.ImageUnreadableError=void 0;var _expoFileSystem=require("expo-file-system"),_expoImageManipulator=require("expo-image-manipulator"),_index=require("../logger/index.js");class ImageUnreadableError extends Error{constructor(e,t){super(`Image is unreadable (${t}): ${e||"<empty uri>"}`),this.name="ImageUnreadableError",this.uri=e}}exports.ImageUnreadableError=ImageUnreadableError;const release=e=>{try{e?.release?.()}catch{}},expoBackend={stat:async e=>{const t=new _expoFileSystem.File(e);return t.exists?null==t.size?null:{exists:!0,size:t.size}:{exists:!1,size:0}},remove:async e=>{new _expoFileSystem.File(e).delete()},open:async e=>{const t=_expoImageManipulator.ImageManipulator.manipulate(e);let i;try{i=await t.renderAsync()}finally{release(t)}return{width:i.width,height:i.height,encode:async({width:e,height:t,quality:r,format:a})=>{const n=_expoImageManipulator.ImageManipulator.manipulate(i);let o=null;try{void 0===e&&void 0===t||n.resize({width:e??null,height:t??null}),o=await n.renderAsync();const i=await o.saveAsync({compress:r,format:a});return{uri:i.uri,width:i.width,height:i.height}}finally{release(o),release(n)}},close:()=>release(i)}}};let backend=null;const setImageCompressorImplementation=e=>{backend=e};exports.setImageCompressorImplementation=setImageCompressorImplementation;const resolveBackend=()=>backend??expoBackend,EIGHT_MB=8388608,THREE_MB=3145728,qualityForFileSize=e=>null==e?.7:e>8388608?.6:e>3145728?.7:.8;exports.qualityForFileSize=qualityForFileSize;const DEFAULT_MAX_SIZE=1500,DEFAULT_MIN_QUALITY=.4,QUALITY_STEP=.1,SIZE_STEP=.75,MIN_SIDE=320,FORMAT={jpg:{encode:"jpeg",mimeType:"image/jpeg"},png:{encode:"png",mimeType:"image/png"},webp:{encode:"webp",mimeType:"image/webp"}},MIME_BY_EXTENSION={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",webp:"image/webp",gif:"image/gif",heic:"image/heic",heif:"image/heif",bmp:"image/bmp",tif:"image/tiff",tiff:"image/tiff"},lastSegment=e=>{const t=e.split(/[?#]/)[0]??"";return decodeURIComponentSafe(t.slice(t.lastIndexOf("/")+1))},decodeURIComponentSafe=e=>{try{return decodeURIComponent(e)}catch{return e}},extensionOf=e=>{const t=e.lastIndexOf(".");return t>0?e.slice(t+1).toLowerCase():""},withoutExtension=e=>{const t=e.lastIndexOf(".");return t>0?e.slice(0,t):e},baseNameFor=(e,t)=>withoutExtension(t?.trim()||lastSegment(e))||"image",round1=e=>Math.round(10*e)/10,safeStat=async(e,t)=>{try{return await e.stat(t)}catch{return null}},safeRemove=async(e,t)=>{try{await e.remove(t)}catch{}},renderWithin=async(e,t,i,r,a)=>{const n=Math.max(t.width,t.height)>i?t.width>=t.height?{width:i}:{height:i}:{},o=await t.encode({...n,quality:r,format:a}),s=await safeStat(e,o.uri);if(s&&(!s.exists||0===s.size))throw await safeRemove(e,o.uri),new ImageUnreadableError(o.uri,"the encoder wrote an empty file");return{...o,size:s?.size??null}},originalResult=(e,t,i,r)=>{const a=extensionOf(lastSegment(e))||"jpg",n=MIME_BY_EXTENSION[a]??"image/jpeg",o=`${i}.${a}`;return{uri:e,width:r?.width??null,height:r?.height??null,size:t,mimeType:n,extension:a,fileName:o,compressed:!1,quality:null,part:{uri:e,name:o,type:n}}},compressImage=async(e,t={})=>{if(!e)throw new ImageUnreadableError(e,"no uri");const i=resolveBackend(),{maxSize:r=DEFAULT_MAX_SIZE,output:a="jpg",maxBytes:n,minQuality:o=DEFAULT_MIN_QUALITY,name:s}=t,l=FORMAT[a]??FORMAT.jpg,m=baseNameFor(e,s),g=await safeStat(i,e);if(g&&!g.exists)throw new ImageUnreadableError(e,"the file does not exist");if(g&&0===g.size)throw new ImageUnreadableError(e,"the file is empty");const p=g?.size??t.fileSize??null;let d,h;try{d=await i.open(e)}catch(t){throw _index.Logger.error("[imageCompression] could not decode the image",t),new ImageUnreadableError(e,"the photo could not be decoded")}try{let e=t.quality??qualityForFileSize(p),s=r;if(h=await renderWithin(i,d,s,e,l.encode),void 0!==n)for(;null!==h.size&&h.size>n;){if("png"!==a&&round1(e-.1)>=o)e=round1(e-.1);else{const e=Math.max(h.width,h.height);if(e<=320)break;s=Math.max(320,Math.floor(.75*e))}const t=await renderWithin(i,d,s,e,l.encode);await safeRemove(i,h.uri),h=t}const g=`${m}.${a}`;return{uri:h.uri,width:h.width,height:h.height,size:h.size,mimeType:l.mimeType,extension:a,fileName:g,compressed:!0,quality:"png"===a?null:e,part:{uri:h.uri,name:g,type:l.mimeType}}}catch(t){if(h&&await safeRemove(i,h.uri),t instanceof ImageUnreadableError)throw t;_index.Logger.error("[imageCompression] encoding failed; retrying once as jpeg at quality 0.7",t);try{const e=await renderWithin(i,d,r,.7,"jpeg"),t=`${m}.jpg`;return{uri:e.uri,width:e.width,height:e.height,size:e.size,mimeType:"image/jpeg",extension:"jpg",fileName:t,compressed:!0,quality:.7,part:{uri:e.uri,name:t,type:"image/jpeg"}}}catch(t){if(t instanceof ImageUnreadableError)throw t;_index.Logger.error("[imageCompression] jpeg retry failed",t);if(Math.max(d.width,d.height)<=r&&(void 0===n||null!==p&&p<=n))return originalResult(e,p,m,{width:d.width,height:d.height});throw new ImageUnreadableError(e,"the photo could not be prepared for upload")}}finally{d.close()}};exports.compressImage=compressImage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";export const SERVER_FAILURE_MESSAGE="Something went wrong on our side. Please try again in a moment.";export const OFFLINE_MESSAGE="You appear to be offline. Check your connection and try again.";export const TIMEOUT_MESSAGE="That took too long to respond. Check your connection and try again.";export const UNEXPECTED_MESSAGE="Something went wrong. Please try again.";export const REQUEST_CANCELED_CODE="request_canceled";export const CONTRACT_ERROR_CODE="contract_error";export const TIMEOUT_CODE="timeout";export const NETWORK_CODE="network";const MAX_MESSAGE_LENGTH=300,requestFailedMessage=e=>`Request failed (${e})`,isDict=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),nonEmptyString=e=>"string"==typeof e&&e.trim().length>0?e:null,looksLikeDiagnostics=e=>e.length>300||/^\s*</.test(e)||e.includes("\n at ")
|
|
1
|
+
"use strict";export const SERVER_FAILURE_MESSAGE="Something went wrong on our side. Please try again in a moment.";export const OFFLINE_MESSAGE="You appear to be offline. Check your connection and try again.";export const TIMEOUT_MESSAGE="That took too long to respond. Check your connection and try again.";export const UNEXPECTED_MESSAGE="Something went wrong. Please try again.";export const UNREACHABLE_MESSAGE="We couldn't reach the server. Check your connection and try again.";export const REQUEST_CANCELED_CODE="request_canceled";export const CONTRACT_ERROR_CODE="contract_error";export const TIMEOUT_CODE="timeout";export const NETWORK_CODE="network";export const OFFLINE_CODE="offline";const INTERNAL_ERROR_CODE="internal_error",MAX_MESSAGE_LENGTH=300,requestFailedMessage=e=>`Request failed (${e})`,isDict=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),nonEmptyString=e=>"string"==typeof e&&e.trim().length>0?e:null,looksLikeDiagnostics=e=>e.length>300||/^\s*</.test(e)||e.includes("\n at ")||/(Exception|StackTrace):/.test(e)||/\b(System|Microsoft)\.[A-Za-z]+\.[A-Za-z]/.test(e),userSafe=e=>{const t=nonEmptyString(e);return null===t||looksLikeDiagnostics(t)?null:t};export const toFieldPath=e=>e.replace(/^\$\.?/,"").split(".").map(e=>e.charAt(0).toLowerCase()+e.slice(1)).join(".");const firstMessage=e=>{if(Array.isArray(e)){for(const t of e){const e=nonEmptyString(t);if(null!==e)return e}return null}return nonEmptyString(e)},addError=(e,t,r)=>{const n=toFieldPath(t);""===n?e.form??=r:n in e.fields||(e.fields[n]=r)},readErrors=e=>{const t={fields:{},form:null};if(Array.isArray(e)){for(const r of e){if(!isDict(r))continue;const e=nonEmptyString(r.message);null!==e&&addError(t,"string"==typeof r.field?r.field:"",e)}return t}if(!isDict(e))return t;for(const[r,n]of Object.entries(e)){const e=firstMessage(n);null!==e&&addError(t,r,e)}return t},readLegacyError=e=>{const t=e.error;return isDict(t)?nonEmptyString(t.message):nonEmptyString(t)};export const isApiError=e=>isDict(e)&&"string"==typeof e.message&&"number"==typeof e.status&&"boolean"==typeof e.offline&&isDict(e.fieldErrors);const build=e=>({code:null,fieldErrors:{},status:0,offline:!1,traceId:null,detail:null,...e}),fromNoResponse=e=>{const t=nonEmptyString(e.code),r=nonEmptyString(e.name),n=nonEmptyString(e.message);return build("CanceledError"===r||"ERR_CANCELED"===t?{code:"request_canceled",message:UNEXPECTED_MESSAGE,detail:n}:"ECONNABORTED"===t||"ETIMEDOUT"===t?{code:"timeout",message:TIMEOUT_MESSAGE,offline:!0,detail:n}:"RequestOfflineError"===r?{code:"offline",message:OFFLINE_MESSAGE,offline:!0,detail:n}:"ERR_NETWORK"===t||"Network Error"===n||"Network request failed"===n?{code:"network",message:UNREACHABLE_MESSAGE,offline:!0,detail:n}:{message:UNEXPECTED_MESSAGE,detail:n})};export function extractApiError(e){if(isApiError(e))return e;if("string"==typeof e)return build({message:userSafe(e)??UNEXPECTED_MESSAGE,detail:e||null});if(!isDict(e))return build({message:UNEXPECTED_MESSAGE,detail:null==e?null:String(e)});if(!0===e.isContractError)return build({code:"contract_error",message:userSafe(e.message)??UNEXPECTED_MESSAGE,detail:nonEmptyString(e.message)});const t=isDict(e.response)?e.response:null,r="number"==typeof t?.status?t.status:"number"==typeof e.status?e.status:0,n=t?t.data:e.body;if(0===r&&null==n)return fromNoResponse(e);const o=isDict(n)?n:null,{fields:s,form:i}=readErrors(o?.errors),E=nonEmptyString(o?.code),a=nonEmptyString(o?.traceId),l=nonEmptyString(o?.message)??nonEmptyString(o?.detail)??(o?readLegacyError(o):null)??nonEmptyString(o?.title)??nonEmptyString(n)??nonEmptyString(e.message);let c;if(r>=500){c=(null!==E&&"internal_error"!==E?userSafe(o?.message):null)??SERVER_FAILURE_MESSAGE}else c=userSafe(Object.values(s)[0])??userSafe(i)??userSafe(o?.message)??userSafe(o?.detail)??(o?userSafe(readLegacyError(o)):null)??userSafe(o?.title)??userSafe(n)??(r?requestFailedMessage(r):UNEXPECTED_MESSAGE);return build({code:E,message:c,fieldErrors:s,status:r,traceId:a,detail:l})}export const isNoResponse=e=>extractApiError(e).offline;export function apiErrorMessage(e,t){const r=extractApiError(e);if(r.offline||null!==t&&!t)return r.message;return r.message===SERVER_FAILURE_MESSAGE||"request_canceled"===r.code||r.message===UNEXPECTED_MESSAGE||r.message===requestFailedMessage(r.status)?t??null:r.message}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";export{apiErrorMessage,CONTRACT_ERROR_CODE,extractApiError,isApiError,isNoResponse,NETWORK_CODE,OFFLINE_MESSAGE,REQUEST_CANCELED_CODE,SERVER_FAILURE_MESSAGE,TIMEOUT_CODE,TIMEOUT_MESSAGE,toFieldPath,UNEXPECTED_MESSAGE}from"./extractApiError.js";
|
|
1
|
+
"use strict";export{apiErrorMessage,CONTRACT_ERROR_CODE,extractApiError,isApiError,isNoResponse,NETWORK_CODE,OFFLINE_CODE,OFFLINE_MESSAGE,REQUEST_CANCELED_CODE,SERVER_FAILURE_MESSAGE,TIMEOUT_CODE,TIMEOUT_MESSAGE,toFieldPath,UNEXPECTED_MESSAGE,UNREACHABLE_MESSAGE}from"./extractApiError.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{configuredLocale,getFormatterConfig,isFormatterConfigured,numberSeparators,styledNumber}from"./formatConfig.js";import{numberFormat}from"./intlCache.js";const hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,indianGroupingFallback=(r,t)=>{const{decimal:e,group:n}=numberSeparators()??{decimal:".",group:","},
|
|
1
|
+
"use strict";import{Logger}from"../logger/index.js";import{configuredLocale,getFormatterConfig,isFormatterConfigured,numberSeparators,styledNumber}from"./formatConfig.js";import{numberFormat}from"./intlCache.js";const hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,indianGroupingFallback=(r,t)=>{const{decimal:e,group:n}=numberSeparators()??{decimal:".",group:","},o=r<0?"-":"",i=Math.abs(r).toFixed(t),[m,u]=i.split("."),c=m.length>3?m.slice(-3):m,a=m.length>3?m.slice(0,-3):"";return o+(a?a.replace(/\B(?=(\d{2})+(?!\d))/g,n)+n+c:c)+(u?`${e}${u}`:"")},toAmount=r=>{if(null==r||"string"==typeof r&&""===r.trim())return null;const t="number"==typeof r?r:Number(r);return Number.isFinite(t)?t:null},currencyDigits=(r,t)=>numberFormat(r,{style:"currency",currency:t}).resolvedOptions().maximumFractionDigits??2;export const formatCurrency=(r,t={})=>{const{currency:e,locale:n=configuredLocale()??"en-IN",minimumFractionDigits:o,maximumFractionDigits:i,stripSymbol:m=!1,empty:u=(isFormatterConfigured("locale")||isFormatterConfigured("empty")?getFormatterConfig().empty:""),...c}=t;e||Logger.warn("[@webority/mobile-core] formatCurrency called without options.currency: it prints INR for now and throws from 0.17.0. Pass an ISO 4217 code.");const a=e||"INR",s=toAmount(r);if(null===s)return u;if(hasIntlNumber())try{const r=i??currencyDigits(n,a),t=o??(Number.isInteger(s)?0:r),e=styledNumber(numberFormat(n,{...c,style:"currency",currency:a,minimumFractionDigits:t,maximumFractionDigits:Math.max(t,r)}),s);return m?e.replace(/[^\d,.\s\-+]/g,"").trim():e}catch{}const l=indianGroupingFallback(s,o??(Number.isInteger(s)?0:2));return m?l:"INR"===a?`₹${l}`:`${a} ${l}`};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{configuredLocale,getFormatterConfig,groupingForLocale,numberSeparators,styledNumber}from"./formatConfig.js";import{dateTimeFormat,numberFormat,relativeTimeFormat}from"./intlCache.js";const MONTHS=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],IST_OFFSET_MINUTES=330,IST_NAMES=["IST","Asia/Kolkata","Asia/Calcutta"],DATE_ONLY=/^\d{4}-\d{2}-\d{2}$/,pad2=t=>t<10?`0${t}`:`${t}`,emptyOf=t=>t??getFormatterConfig().empty,toInstant=t=>{if(null==t||""===t)return null;const e=t instanceof Date?t:new Date("string"==typeof t?t.trim():t);return Number.isNaN(e.getTime())?null:e},isDateOnly=t=>"string"==typeof t&&DATE_ONLY.test(t.trim()),gmtLabel=t=>{if(0===t)return"GMT";const e=t>0?"+":"-",n=Math.abs(t),r=n%60;return`GMT${e}${Math.floor(n/60)}${0===r?"":`:${pad2(r)}`}`},shifted=(t,e,n)=>{const r=new Date(t.getTime()+6e4*e);return{year:r.getUTCFullYear(),month:r.getUTCMonth(),day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),label:n}},inIanaZone=(t,e)=>{const n=dateTimeFormat("en-US",{timeZone:e,year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",hour12:!1}).formatToParts(t),read=t=>Number.parseInt(n.find(e=>e.type===t)?.value??"",10),r=read("year"),o=read("month")-1,i=read("day"),a=read("hour")%24,m=read("minute"),l=Date.UTC(r,o,i,a,m),u=Math.round((l-6e4*Math.floor(t.getTime()/6e4))/6e4);return{year:r,month:o,day:i,hour:a,minute:m,label:gmtLabel(u)}},wallClock=(t,e)=>IST_NAMES.includes(e)?shifted(t,330,"IST"):"UTC"===e?shifted(t,0,"UTC"):"viewer"===e?{year:t.getFullYear(),month:t.getMonth(),day:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),label:gmtLabel(-t.getTimezoneOffset())}:inIanaZone(t,e),hourCycleOf=t=>t.hourCycle??12,dayMonthYear=t=>`${pad2(t.day)}-${MONTHS[t.month]}-${t.year}`,numericDate=(t,e)=>{const n=pad2(t.day),r=pad2(t.month+1),o=String(t.year).padStart(4,"0");return"DayMonthYear"===e?`${n}/${r}/${o}`:"MonthDayYear"===e?`${r}/${n}/${o}`:`${o}-${r}-${n}`},clockTime=(t,e)=>24===e?`${pad2(t.hour)}:${pad2(t.minute)}`:`${t.hour%12||12}:${pad2(t.minute)} ${t.hour<12?"AM":"PM"}`,labelled=(t,e)=>e??!IST_NAMES.includes(t),withLabel=(t,e,n,r)=>labelled(n,r)?`${t} ${e.label}`:t,intlZone=t=>{if("viewer"!==t)return IST_NAMES.includes(t)?"Asia/Kolkata":t},localeDayMonthYear=(t,e,n)=>{const r=dateTimeFormat(e,{day:"2-digit",month:"short",year:"numeric",timeZone:n}).formatToParts(t),part=t=>r.find(e=>e.type===t)?.value??"";return`${part("day")}-${part("month").replace(".","")}-${part("year")}`},dateText=(t,e)=>{const n=getFormatterConfig().dateOrder??"DayMonthNameYear";if("DayMonthNameYear"!==n)return numericDate(wallClock(t,e),n);const r=configuredLocale();return r?localeDayMonthYear(t,r,intlZone(e)):dayMonthYear(wallClock(t,e))},localeClock=(t,e,n,r)=>dateTimeFormat(e,{hour:"2-digit",minute:"2-digit",timeZone:intlZone(n),timeZoneName:labelled(n,r.zoneLabel)?"short":void 0,hourCycle:void 0===r.hourCycle?void 0:24===r.hourCycle?"h23":"h12"}).format(t);export const formatDate=(t,e={})=>{const n=toInstant(t);return n?dateText(n,isDateOnly(t)?"UTC":e.zone??getFormatterConfig().zone):emptyOf(e.empty)};export const formatTime=(t,e={})=>{const n=toInstant(t);if(!n)return emptyOf(e.empty);const r=e.zone??getFormatterConfig().zone,o=configuredLocale();if(o)return localeClock(n,o,r,e);const i=wallClock(n,r);return withLabel(clockTime(i,hourCycleOf(e)),i,r,e.zoneLabel)};export const formatDateTime=(t,e={})=>{const n=toInstant(t);if(!n)return emptyOf(e.empty);const r=e.zone??getFormatterConfig().zone,o=configuredLocale();if(o)return`${dateText(n,r)}, ${localeClock(n,o,r,e)}`;const i=wallClock(n,r);return withLabel(`${dateText(n,r)}, ${clockTime(i,hourCycleOf(e))}`,i,r,e.zoneLabel)};const SECOND=1e3,MINUTE=6e4,HOUR=36e5,DAY=24*HOUR,WEEK=7*DAY,MONTH=30*DAY,YEAR=365*DAY,INTL_UNITS=[["year",YEAR],["month",MONTH],["day",DAY],["hour",HOUR],["minute",6e4]];export const formatRelative=(t,e={})=>{const n=toInstant(t),r=toInstant(e.now??Date.now());if(!n||!r)return emptyOf(e.empty);const o=n.getTime()-r.getTime(),i=Math.abs(o),a=Intl.RelativeTimeFormat,m=configuredLocale();if((null!==m||!0===e.intl)&&"function"==typeof a){const t=relativeTimeFormat(a,m??getFormatterConfig().locale),[e,n]=INTL_UNITS.find(([,t])=>i>=t)??["second",1e3];return t.format(Math.round(o/n),e)}if(i<6e4)return"just now";const[l,u]=i<HOUR?["minute",6e4]:i<DAY?["hour",HOUR]:i<WEEK?["day",DAY]:i<MONTH?["week",WEEK]:i<YEAR?["month",MONTH]:["year",YEAR],c=Math.floor(i/u),s=`${c} ${l}${1===c?"":"s"}`;return o<0?`${s} ago`:`in ${s}`};const toNumber=t=>{if(null==t)return null;if("string"==typeof t&&""===t.trim())return null;const e="number"==typeof t?t:Number(t);return Number.isFinite(e)?e:null},clampDigits=t=>Math.min(20,Math.max(0,Math.trunc(t))),shiftDecimal=(t,e)=>/e/i.test(String(t))?t*10**e:Number(`${t}e${e}`),houseSeparators=()=>numberSeparators()??{decimal:".",group:","},groupInteger=(t,e,n)=>{if("none"===e||t.length<=3)return t;if("international"===e)return t.replace(/\B(?=(\d{3})+(?!\d))/g,n);return`${t.slice(0,-3).replace(/\B(?=(\d{2})+(?!\d))/g,n)}${n}${t.slice(-3)}`},hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,plainDigits=(t,e)=>{if(hasIntlNumber())return numberFormat("en-US",{useGrouping:!1,minimumFractionDigits:0,maximumFractionDigits:e}).format(t);const n=Math.min(e,15);return shiftDecimal(Math.round(shiftDecimal(t,n)),-n).toFixed(n)},decimalText=(t,e,n,r)=>{const o=Math.max(clampDigits(n),clampDigits(e)),i=clampDigits(e),a=plainDigits(Math.abs(t),o),[m="0",l=""]=a.split(".");let u=l.padEnd(i,"0");for(;u.length>i&&u.endsWith("0");)u=u.slice(0,-1);const c=houseSeparators(),s=groupInteger(m,r,c.group)+(u?`${c.decimal}${u}`:"");return t<0&&/[1-9]/.test(a)?`-${s}`:s},HOUSE_NUMBER_KEYS=new Set(["grouping","minimumFractionDigits","maximumFractionDigits","locale","empty","scale"]),intlNumberOptions=t=>{if(!Object.entries(t).some(([t,e])=>void 0!==e&&!HOUSE_NUMBER_KEYS.has(t)))return null;const{grouping:e,locale:n,empty:r,scale:o,...i}=t;return"none"===e&&void 0===i.useGrouping?{...i,useGrouping:!1}:i},localeOf=t=>t.locale??getFormatterConfig().locale,intlTextLocale=t=>{const e=configuredLocale();return null===e||"indian"===t.grouping||"international"===t.grouping?null:t.locale??e},fractionDigits=(t,e)=>{const n=clampDigits(t);return{minimumFractionDigits:n,maximumFractionDigits:Math.max(n,clampDigits(e))}},groupingOption=t=>"none"===t?{useGrouping:!1}:{};export const formatNumber=(t,e={})=>{const n=toNumber(t);if(null===n)return emptyOf(e.empty);const r=intlNumberOptions(e);if(r)return styledNumber(numberFormat(localeOf(e),r),n);const o=intlTextLocale(e);return o?styledNumber(numberFormat(o,{...fractionDigits(e.minimumFractionDigits??0,e.maximumFractionDigits??3),...groupingOption(e.grouping)}),n):decimalText(n,e.minimumFractionDigits??0,e.maximumFractionDigits??3,e.grouping??groupingForLocale(localeOf(e)))};export const formatPercent=(t,e={})=>{const n=toNumber(t);if(null===n)return emptyOf(e.empty);const r=intlNumberOptions(e);if(r){const t="percent"===e.scale?shiftDecimal(n,-2):n;return styledNumber(numberFormat(localeOf(e),{style:"percent",...r}),t)}const o=intlTextLocale(e);if(o){const t="percent"===e.scale?shiftDecimal(n,-2):n;return styledNumber(numberFormat(o,{style:"percent",...fractionDigits(e.minimumFractionDigits??0,e.maximumFractionDigits??e.minimumFractionDigits??0),...groupingOption(e.grouping)}),t)}const i="percent"===e.scale?n:shiftDecimal(n,2);return`${decimalText(i,e.minimumFractionDigits??0,e.maximumFractionDigits??e.minimumFractionDigits??0,e.grouping??groupingForLocale(localeOf(e)))}%`};const SYMBOLS={INR:"₹",USD:"$",EUR:"€",GBP:"£"},MINOR_DIGITS={JPY:0,KRW:0,VND:0,BHD:3,JOD:3,KWD:3,OMR:3,TND:3};export const formatMinor=(t,e={})=>{const n=toNumber(t);if(null===n)return emptyOf(e.empty);const r=(e.currency
|
|
1
|
+
"use strict";import{Logger}from"../logger/index.js";import{configuredLocale,getFormatterConfig,groupingForLocale,numberSeparators,styledNumber}from"./formatConfig.js";import{dateTimeFormat,numberFormat,relativeTimeFormat}from"./intlCache.js";const MONTHS=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],IST_OFFSET_MINUTES=330,IST_NAMES=["IST","Asia/Kolkata","Asia/Calcutta"],DATE_ONLY=/^\d{4}-\d{2}-\d{2}$/,pad2=t=>t<10?`0${t}`:`${t}`,emptyOf=t=>t??getFormatterConfig().empty,toInstant=t=>{if(null==t||""===t)return null;const e=t instanceof Date?t:new Date("string"==typeof t?t.trim():t);return Number.isNaN(e.getTime())?null:e},isDateOnly=t=>"string"==typeof t&&DATE_ONLY.test(t.trim()),gmtLabel=t=>{if(0===t)return"GMT";const e=t>0?"+":"-",n=Math.abs(t),r=n%60;return`GMT${e}${Math.floor(n/60)}${0===r?"":`:${pad2(r)}`}`},shifted=(t,e,n)=>{const r=new Date(t.getTime()+6e4*e);return{year:r.getUTCFullYear(),month:r.getUTCMonth(),day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),label:n}},inIanaZone=(t,e)=>{const n=dateTimeFormat("en-US",{timeZone:e,year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",hour12:!1}).formatToParts(t),read=t=>Number.parseInt(n.find(e=>e.type===t)?.value??"",10),r=read("year"),o=read("month")-1,i=read("day"),a=read("hour")%24,m=read("minute"),l=Date.UTC(r,o,i,a,m),u=Math.round((l-6e4*Math.floor(t.getTime()/6e4))/6e4);return{year:r,month:o,day:i,hour:a,minute:m,label:gmtLabel(u)}},wallClock=(t,e)=>IST_NAMES.includes(e)?shifted(t,330,"IST"):"UTC"===e?shifted(t,0,"UTC"):"viewer"===e?{year:t.getFullYear(),month:t.getMonth(),day:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),label:gmtLabel(-t.getTimezoneOffset())}:inIanaZone(t,e),hourCycleOf=t=>t.hourCycle??12,dayMonthYear=t=>`${pad2(t.day)}-${MONTHS[t.month]}-${t.year}`,numericDate=(t,e)=>{const n=pad2(t.day),r=pad2(t.month+1),o=String(t.year).padStart(4,"0");return"DayMonthYear"===e?`${n}/${r}/${o}`:"MonthDayYear"===e?`${r}/${n}/${o}`:`${o}-${r}-${n}`},clockTime=(t,e)=>24===e?`${pad2(t.hour)}:${pad2(t.minute)}`:`${t.hour%12||12}:${pad2(t.minute)} ${t.hour<12?"AM":"PM"}`,labelled=(t,e)=>e??!IST_NAMES.includes(t),withLabel=(t,e,n,r)=>labelled(n,r)?`${t} ${e.label}`:t,intlZone=t=>{if("viewer"!==t)return IST_NAMES.includes(t)?"Asia/Kolkata":t},localeDayMonthYear=(t,e,n)=>{const r=dateTimeFormat(e,{day:"2-digit",month:"short",year:"numeric",timeZone:n}).formatToParts(t),part=t=>r.find(e=>e.type===t)?.value??"";return`${part("day")}-${part("month").replace(".","")}-${part("year")}`},dateText=(t,e)=>{const n=getFormatterConfig().dateOrder??"DayMonthNameYear";if("DayMonthNameYear"!==n)return numericDate(wallClock(t,e),n);const r=configuredLocale();return r?localeDayMonthYear(t,r,intlZone(e)):dayMonthYear(wallClock(t,e))},localeClock=(t,e,n,r)=>dateTimeFormat(e,{hour:"2-digit",minute:"2-digit",timeZone:intlZone(n),timeZoneName:labelled(n,r.zoneLabel)?"short":void 0,hourCycle:void 0===r.hourCycle?void 0:24===r.hourCycle?"h23":"h12"}).format(t);export const formatDate=(t,e={})=>{const n=toInstant(t);return n?dateText(n,isDateOnly(t)?"UTC":e.zone??getFormatterConfig().zone):emptyOf(e.empty)};export const formatTime=(t,e={})=>{const n=toInstant(t);if(!n)return emptyOf(e.empty);const r=e.zone??getFormatterConfig().zone,o=configuredLocale();if(o)return localeClock(n,o,r,e);const i=wallClock(n,r);return withLabel(clockTime(i,hourCycleOf(e)),i,r,e.zoneLabel)};export const formatDateTime=(t,e={})=>{const n=toInstant(t);if(!n)return emptyOf(e.empty);const r=e.zone??getFormatterConfig().zone,o=configuredLocale();if(o)return`${dateText(n,r)}, ${localeClock(n,o,r,e)}`;const i=wallClock(n,r);return withLabel(`${dateText(n,r)}, ${clockTime(i,hourCycleOf(e))}`,i,r,e.zoneLabel)};const SECOND=1e3,MINUTE=6e4,HOUR=36e5,DAY=24*HOUR,WEEK=7*DAY,MONTH=30*DAY,YEAR=365*DAY,INTL_UNITS=[["year",YEAR],["month",MONTH],["day",DAY],["hour",HOUR],["minute",6e4]];export const formatRelative=(t,e={})=>{const n=toInstant(t),r=toInstant(e.now??Date.now());if(!n||!r)return emptyOf(e.empty);const o=n.getTime()-r.getTime(),i=Math.abs(o),a=Intl.RelativeTimeFormat,m=configuredLocale();if((null!==m||!0===e.intl)&&"function"==typeof a){const t=relativeTimeFormat(a,m??getFormatterConfig().locale),[e,n]=INTL_UNITS.find(([,t])=>i>=t)??["second",1e3];return t.format(Math.round(o/n),e)}if(i<6e4)return"just now";const[l,u]=i<HOUR?["minute",6e4]:i<DAY?["hour",HOUR]:i<WEEK?["day",DAY]:i<MONTH?["week",WEEK]:i<YEAR?["month",MONTH]:["year",YEAR],c=Math.floor(i/u),s=`${c} ${l}${1===c?"":"s"}`;return o<0?`${s} ago`:`in ${s}`};const toNumber=t=>{if(null==t)return null;if("string"==typeof t&&""===t.trim())return null;const e="number"==typeof t?t:Number(t);return Number.isFinite(e)?e:null},clampDigits=t=>Math.min(20,Math.max(0,Math.trunc(t))),shiftDecimal=(t,e)=>/e/i.test(String(t))?t*10**e:Number(`${t}e${e}`),houseSeparators=()=>numberSeparators()??{decimal:".",group:","},groupInteger=(t,e,n)=>{if("none"===e||t.length<=3)return t;if("international"===e)return t.replace(/\B(?=(\d{3})+(?!\d))/g,n);return`${t.slice(0,-3).replace(/\B(?=(\d{2})+(?!\d))/g,n)}${n}${t.slice(-3)}`},hasIntlNumber=()=>"undefined"!=typeof Intl&&"function"==typeof Intl.NumberFormat,plainDigits=(t,e)=>{if(hasIntlNumber())return numberFormat("en-US",{useGrouping:!1,minimumFractionDigits:0,maximumFractionDigits:e}).format(t);const n=Math.min(e,15);return shiftDecimal(Math.round(shiftDecimal(t,n)),-n).toFixed(n)},decimalText=(t,e,n,r)=>{const o=Math.max(clampDigits(n),clampDigits(e)),i=clampDigits(e),a=plainDigits(Math.abs(t),o),[m="0",l=""]=a.split(".");let u=l.padEnd(i,"0");for(;u.length>i&&u.endsWith("0");)u=u.slice(0,-1);const c=houseSeparators(),s=groupInteger(m,r,c.group)+(u?`${c.decimal}${u}`:"");return t<0&&/[1-9]/.test(a)?`-${s}`:s},HOUSE_NUMBER_KEYS=new Set(["grouping","minimumFractionDigits","maximumFractionDigits","locale","empty","scale"]),intlNumberOptions=t=>{if(!Object.entries(t).some(([t,e])=>void 0!==e&&!HOUSE_NUMBER_KEYS.has(t)))return null;const{grouping:e,locale:n,empty:r,scale:o,...i}=t;return"none"===e&&void 0===i.useGrouping?{...i,useGrouping:!1}:i},localeOf=t=>t.locale??getFormatterConfig().locale,intlTextLocale=t=>{const e=configuredLocale();return null===e||"indian"===t.grouping||"international"===t.grouping?null:t.locale??e},fractionDigits=(t,e)=>{const n=clampDigits(t);return{minimumFractionDigits:n,maximumFractionDigits:Math.max(n,clampDigits(e))}},groupingOption=t=>"none"===t?{useGrouping:!1}:{};export const formatNumber=(t,e={})=>{const n=toNumber(t);if(null===n)return emptyOf(e.empty);const r=intlNumberOptions(e);if(r)return styledNumber(numberFormat(localeOf(e),r),n);const o=intlTextLocale(e);return o?styledNumber(numberFormat(o,{...fractionDigits(e.minimumFractionDigits??0,e.maximumFractionDigits??3),...groupingOption(e.grouping)}),n):decimalText(n,e.minimumFractionDigits??0,e.maximumFractionDigits??3,e.grouping??groupingForLocale(localeOf(e)))};export const formatPercent=(t,e={})=>{const n=toNumber(t);if(null===n)return emptyOf(e.empty);const r=intlNumberOptions(e);if(r){const t="percent"===e.scale?shiftDecimal(n,-2):n;return styledNumber(numberFormat(localeOf(e),{style:"percent",...r}),t)}const o=intlTextLocale(e);if(o){const t="percent"===e.scale?shiftDecimal(n,-2):n;return styledNumber(numberFormat(o,{style:"percent",...fractionDigits(e.minimumFractionDigits??0,e.maximumFractionDigits??e.minimumFractionDigits??0),...groupingOption(e.grouping)}),t)}const i="percent"===e.scale?n:shiftDecimal(n,2);return`${decimalText(i,e.minimumFractionDigits??0,e.maximumFractionDigits??e.minimumFractionDigits??0,e.grouping??groupingForLocale(localeOf(e)))}%`};const SYMBOLS={INR:"₹",USD:"$",EUR:"€",GBP:"£"},MINOR_DIGITS={JPY:0,KRW:0,VND:0,BHD:3,JOD:3,KWD:3,OMR:3,TND:3};export const formatMinor=(t,e={})=>{e.currency||Logger.warn("[@webority/mobile-core] formatMinor called without options.currency: it prints INR for now and throws from 0.17.0. Pass an ISO 4217 code.");const n=toNumber(t);if(null===n)return emptyOf(e.empty);const r=(e.currency||"INR").toUpperCase(),o=MINOR_DIGITS[r]??2,i=Math.round(Math.abs(n)),a=String(i).padStart(o+1,"0"),m=a.slice(0,a.length-o);let l=a.slice(a.length-o);e.dropZeroDecimals&&/^0*$/.test(l)&&(l="");const u=intlTextLocale({grouping:e.grouping});if(u)try{const t=Number(`${n<0&&0!==i?"-":""}${m}.${a.slice(a.length-o)||"0"}`);return styledNumber(numberFormat(u,{...!1===e.symbol?{}:{style:"currency",currency:r},...fractionDigits(l?o:0,o),...groupingOption(e.grouping)}),t)}catch{}const c=e.grouping??("INR"===r?"indian":"international"),s=houseSeparators(),g=groupInteger(m,c,s.group)+(l?`${s.decimal}${l}`:""),p=n<0&&0!==i?"-":"";if(!1===e.symbol)return`${p}${g}`;const f=SYMBOLS[r];return f?`${p}${f}${g}`:`${p}${r} ${g}`};
|
package/lib/module/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";export{ACCOUNT_ID_HEADER,CLIENT_BUILD_HEADER,CLIENT_KIND,CLIENT_KIND_HEADER,getClientBuild}from"./api/clientHeaders.js";export{buildCurl,logCurl}from"./api/curl.js";export{addMinAppVersionListener,getMinAppVersion,MIN_APP_VERSION_HEADER}from"./api/minAppVersion.js";export{default as publicClient}from"./api/publicClient.js";export{applyRequestDefaults,newCorrelationId}from"./api/requestDefaults.js";export{attachRetry,IDEMPOTENCY_KEY_HEADER,isNeverSentError,isRetryableFailure,isRetryableStatus,retryAfterMs}from"./api/retry.js";export{refreshAccessToken}from"./api/tokenRefresh.js";export{default as userClient,injectStore,injectUserAuth,RequestOfflineError,resetRefreshState,SESSION_TERMINATION_CODES,SIGN_OUT_REASON_HEADER}from"./api/userClient.js";export{isWorkspaceChangedError,WORKSPACE_CHANGED_CODE,WorkspaceChangedError}from"./api/workspace.js";export{ACCESS_TOKEN_KEY,addSessionEndedListener,clearSession,getSessionUser,getToken,LEGACY_REFRESH_TOKEN_LIFETIME_MS,REFRESH_TOKEN_KEY,removeSessionUser,removeToken,SESSION_USER_KEY,setKeychainImplementation,setLegacyTokenKeys,storeSessionUser,storeToken}from"./auth/authStore.js";export{decodeJWT,getJWTExpiry,isJWTExpired}from"./auth/jwt.js";export{getConfig,getConfigValue,resetConfig,setConfig}from"./config/index.js";export{DeepLink,parseDeepLink,useDeepLink}from"./deepLink/index.js";export{apiErrorMessage,CONTRACT_ERROR_CODE,extractApiError,isApiError,isNoResponse,NETWORK_CODE,OFFLINE_MESSAGE,REQUEST_CANCELED_CODE,SERVER_FAILURE_MESSAGE,TIMEOUT_CODE,TIMEOUT_MESSAGE,toFieldPath,UNEXPECTED_MESSAGE}from"./errors/index.js";export{AsYouType,addDays,clampNationalNumber,configureFormatters,countryFlagEmoji,detectPhoneCountry,diffMs,formatCompactNumber,formatCurrency,formatDate,formatDateDDMMMYYYY,formatDateISO,formatDatePattern,formatDateTime,formatMinor,formatNumber,formatPercent,formatPhone,formatPhoneAsTyped,formatRelative,formatRelativeTime,formatTime,formatTime12h,formatTimeInWindowsZone,formatTimeInZone,getCountries,getCountryCallingCode,getFormatterConfig,getInitials,getPhoneCountries,isDateAfter,isDateBefore,isSameDay,isSupportedCountry,isValidNationalNumber,isValidPhoneNumber,maxNationalNumberLength,normalizePhone,parsePhoneNumber,parsePhoneNumberFromString,splitPhoneNumber,startOfDay,validatePhoneNumberLength}from"./formatters/index.js";export{initWebority}from"./initSDK.js";export{initUserAuth}from"./initUserAuth.js";export{configureLogger,getDeviceContext,Logger,setDeviceContext
|
|
1
|
+
"use strict";export{ACCOUNT_ID_HEADER,CLIENT_BUILD_HEADER,CLIENT_KIND,CLIENT_KIND_HEADER,getClientBuild}from"./api/clientHeaders.js";export{buildCurl,logCurl}from"./api/curl.js";export{addMinAppVersionListener,getMinAppVersion,MIN_APP_VERSION_HEADER}from"./api/minAppVersion.js";export{default as publicClient}from"./api/publicClient.js";export{applyRequestDefaults,newCorrelationId}from"./api/requestDefaults.js";export{attachRetry,IDEMPOTENCY_KEY_HEADER,isNeverSentError,isRetryableFailure,isRetryableStatus,retryAfterMs}from"./api/retry.js";export{refreshAccessToken}from"./api/tokenRefresh.js";export{default as userClient,injectStore,injectUserAuth,RequestOfflineError,resetRefreshState,SESSION_TERMINATION_CODES,SIGN_OUT_REASON_HEADER}from"./api/userClient.js";export{isWorkspaceChangedError,WORKSPACE_CHANGED_CODE,WorkspaceChangedError}from"./api/workspace.js";export{ACCESS_TOKEN_KEY,addSessionEndedListener,clearSession,getSessionUser,getToken,LEGACY_REFRESH_TOKEN_LIFETIME_MS,REFRESH_TOKEN_KEY,removeSessionUser,removeToken,SESSION_USER_KEY,setKeychainImplementation,setLegacyTokenKeys,storeSessionUser,storeToken}from"./auth/authStore.js";export{decodeJWT,getJWTExpiry,isJWTExpired}from"./auth/jwt.js";export{getConfig,getConfigValue,resetConfig,setConfig}from"./config/index.js";export{DeepLink,parseDeepLink,useDeepLink}from"./deepLink/index.js";export{apiErrorMessage,CONTRACT_ERROR_CODE,extractApiError,isApiError,isNoResponse,NETWORK_CODE,OFFLINE_CODE,OFFLINE_MESSAGE,REQUEST_CANCELED_CODE,SERVER_FAILURE_MESSAGE,TIMEOUT_CODE,TIMEOUT_MESSAGE,toFieldPath,UNEXPECTED_MESSAGE,UNREACHABLE_MESSAGE}from"./errors/index.js";export{AsYouType,addDays,clampNationalNumber,configureFormatters,countryFlagEmoji,detectPhoneCountry,diffMs,formatCompactNumber,formatCurrency,formatDate,formatDateDDMMMYYYY,formatDateISO,formatDatePattern,formatDateTime,formatMinor,formatNumber,formatPercent,formatPhone,formatPhoneAsTyped,formatRelative,formatRelativeTime,formatTime,formatTime12h,formatTimeInWindowsZone,formatTimeInZone,getCountries,getCountryCallingCode,getFormatterConfig,getInitials,getPhoneCountries,isDateAfter,isDateBefore,isSameDay,isSupportedCountry,isValidNationalNumber,isValidPhoneNumber,maxNationalNumberLength,normalizePhone,parsePhoneNumber,parsePhoneNumberFromString,splitPhoneNumber,startOfDay,validatePhoneNumberLength}from"./formatters/index.js";export{initWebority}from"./initSDK.js";export{initUserAuth}from"./initUserAuth.js";export{configureLogger,getDeviceContext,Logger,setDeviceContext}from"./logger/index.js";export{crashlyticsRemoteLogger}from"./logger/crashlytics.js";export{addNetworkStatusListener,getNetworkStatus,setNetworkStatusImplementation,useNetworkStatus}from"./network/index.js";export{PUSH_STATUS}from"./push/status.js";export{isStorageAvailable,Storage,setStorageImplementation}from"./storage/index.js";export{encodeBase64}from"./utils/base64.js";export{isAadhaar,isAlphanumeric,isBetween,isEmail,isGstin,isHexColor,isIfsc,isIndianMobile,isIndianPincode,isInteger,isNonEmpty,isNumeric,isPan,isPhone,isStrongPassword,isUrl,maxLength,minLength}from"./validators/index.js";export{isBuildBelowMinimum,parseBuildNumber,setDeviceInfoImplementation,useVersionCheck,VersionCheck}from"./versionCheck/index.js";
|
package/lib/module/initSDK.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{setKeychainImplementation}from"./auth/authStore.js";import{DEFAULT_CORRELATION_ID_HEADER,DEFAULT_LOG_LEVEL,DEFAULT_RETRIES,DEFAULT_TIMEOUT_MS,setConfig}from"./config/index.js";import{Logger}from"./logger/index.js";import{setNetworkStatusImplementation}from"./network/networkStatus.js";import{setStorageImplementation}from"./storage/index.js";export const initWebority=e=>{if(!e.baseUrl)throw new Error("baseUrl is required for Webority packages initialization");setConfig({baseUrl:e.baseUrl,loggingEnabled:e.loggingEnabled??!0,logLevel:e.logLevel||DEFAULT_LOG_LEVEL,environment:e.environment||"Development",country:(e.country||"in").toLowerCase(),appId:e.appId??null,appVersion:e.appVersion??null,commit:e.commit??null,appBuild:e.appBuild??null,appStoreId:e.appStoreId??null,logCurl:e.logCurl??!1,timeoutMs:e.timeoutMs??DEFAULT_TIMEOUT_MS,retries:e.retries??DEFAULT_RETRIES,correlationIdHeader:void 0===e.correlationIdHeader?DEFAULT_CORRELATION_ID_HEADER:e.correlationIdHeader});const
|
|
1
|
+
"use strict";import{setKeychainImplementation}from"./auth/authStore.js";import{DEFAULT_CORRELATION_ID_HEADER,DEFAULT_LOG_LEVEL,DEFAULT_RETRIES,DEFAULT_TIMEOUT_MS,setConfig}from"./config/index.js";import{Logger,setRemoteLogger}from"./logger/index.js";import{setNetworkStatusImplementation}from"./network/networkStatus.js";import{setStorageImplementation}from"./storage/index.js";export const initWebority=e=>{if(!e.baseUrl)throw new Error("baseUrl is required for Webority packages initialization");if(void 0===e.remoteLogger)throw new Error("remoteLogger is required for Webority packages initialization: pass a RemoteLogger, or null for a build without crash reporting");setRemoteLogger(e.remoteLogger),setConfig({baseUrl:e.baseUrl,loggingEnabled:e.loggingEnabled??!0,logLevel:e.logLevel||DEFAULT_LOG_LEVEL,environment:e.environment||"Development",country:(e.country||"in").toLowerCase(),appId:e.appId??null,appVersion:e.appVersion??null,commit:e.commit??null,appBuild:e.appBuild??null,appStoreId:e.appStoreId??null,logCurl:e.logCurl??!1,timeoutMs:e.timeoutMs??DEFAULT_TIMEOUT_MS,retries:e.retries??DEFAULT_RETRIES,correlationIdHeader:void 0===e.correlationIdHeader?DEFAULT_CORRELATION_ID_HEADER:e.correlationIdHeader});const o=e.backends;o?.storage&&setStorageImplementation(o.storage),o?.keychain&&setKeychainImplementation(o.keychain),o?.network&&setNetworkStatusImplementation(o.network),Logger.info("[@webority/mobile-core] initialized")};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{getConfigValue}from"../config/index.js";import{isNoResponse}from"../errors/extractApiError.js";import{redact,redactString}from"./redact.js";const Colors={RESET:"[0m",GRAY:"[90m",BLUE:"[34m",YELLOW:"[33m",RED_BOLD:"[31;1m"},LogLevels={DEBUG:{level:"debug",color:Colors.GRAY},INFO:{level:"info",color:Colors.BLUE},WARN:{level:"warn",color:Colors.YELLOW},ERROR:{level:"error",color:Colors.RED_BOLD}},isLogLevelAllowed=e=>{const r=["debug","info","warn","error"],o=getConfigValue("logLevel","info");return r.indexOf(e)>=r.indexOf(o)},isEnabled=()=>getConfigValue("loggingEnabled",!0);let remote=null;export const setRemoteLogger=e=>{remote=e};const safe=e=>{if(e)try{e()}catch{}},toErrorObject=e=>{if(e instanceof Error)return e;if("string"==typeof e)return new Error(e);try{return new Error(JSON.stringify(e))}catch{return new Error(String(e))}};let deviceContext=null;const normalizeAttributeValue=e=>null==e?null:"string"==typeof e||"number"==typeof e||"boolean"==typeof e?e:String(e);export const setDeviceContext=e=>{if(deviceContext=e,e)for(const[r,o]of Object.entries(e))safe(()=>remote?.setAttribute?.(r,normalizeAttributeValue(o)))};export const getDeviceContext=()=>deviceContext;const DEFAULT_LOGGER_OPTIONS={dedupeWindowMs:5e3,dedupeMaxPerWindow:1,screenHistoryLimit:20};let loggerOptions={...DEFAULT_LOGGER_OPTIONS};export const configureLogger=e=>{loggerOptions={...loggerOptions,...
|
|
1
|
+
"use strict";import{getConfigValue}from"../config/index.js";import{isNoResponse}from"../errors/extractApiError.js";import{configureRedaction,redact,redactString}from"./redact.js";const Colors={RESET:"[0m",GRAY:"[90m",BLUE:"[34m",YELLOW:"[33m",RED_BOLD:"[31;1m"},LogLevels={DEBUG:{level:"debug",color:Colors.GRAY},INFO:{level:"info",color:Colors.BLUE},WARN:{level:"warn",color:Colors.YELLOW},ERROR:{level:"error",color:Colors.RED_BOLD}},isLogLevelAllowed=e=>{const r=["debug","info","warn","error"],o=getConfigValue("logLevel","info");return r.indexOf(e)>=r.indexOf(o)},isEnabled=()=>getConfigValue("loggingEnabled",!0);let remote=null;export const setRemoteLogger=e=>{remote=e};const safe=e=>{if(e)try{e()}catch{}},toErrorObject=e=>{if(e instanceof Error)return e;if("string"==typeof e)return new Error(e);try{return new Error(JSON.stringify(e))}catch{return new Error(String(e))}};let deviceContext=null;const normalizeAttributeValue=e=>null==e?null:"string"==typeof e||"number"==typeof e||"boolean"==typeof e?e:String(e);export const setDeviceContext=e=>{if(deviceContext=e,e)for(const[r,o]of Object.entries(e))safe(()=>remote?.setAttribute?.(r,normalizeAttributeValue(o)))};export const getDeviceContext=()=>deviceContext;const DEFAULT_LOGGER_OPTIONS={dedupeWindowMs:5e3,dedupeMaxPerWindow:1,screenHistoryLimit:20,breadcrumbLimit:50};let loggerOptions={...DEFAULT_LOGGER_OPTIONS};export const configureLogger=e=>{const{redactKeys:r,...o}=e;void 0!==r&&configureRedaction(r),loggerOptions={...loggerOptions,...o},screenHistory.length>loggerOptions.screenHistoryLimit&&(screenHistory=screenHistory.slice(screenHistory.length-loggerOptions.screenHistoryLimit)),trimBreadcrumbs()};let currentScreen=null,screenHistory=[];const breadcrumbs=[],trimBreadcrumbs=()=>{const e=breadcrumbs.length-loggerOptions.breadcrumbLimit;e>0&&breadcrumbs.splice(0,e)},dedupeMap=new Map,MAX_DEDUPE_ENTRIES=200,dedupeKeyFor=e=>{const r=e.stack?.split("\n")[1]?.trim();return r?`${e.message}::${r}`:e.message},capDedupeMap=()=>{for(;dedupeMap.size>200;){const e=dedupeMap.keys().next().value;if(void 0===e)return;dedupeMap.delete(e)}},shouldForward=e=>{if(loggerOptions.dedupeWindowMs<=0)return{forward:!0};const r=Date.now(),o=dedupeMap.get(e);if(!o||r-o.windowStart>=loggerOptions.dedupeWindowMs){const t=o?.suppressedCount??0;return dedupeMap.set(e,{windowStart:r,count:1,suppressedCount:0}),capDedupeMap(),t>0?{forward:!0,suppressedCount:t}:{forward:!0}}return o.count+=1,o.count>loggerOptions.dedupeMaxPerWindow?(o.suppressedCount+=1,{forward:!1}):{forward:!0}},buildErrorContext=(e,r)=>{const o={...deviceContext};return null!==currentScreen&&(o.screen=currentScreen),r&&(o.suppressedCount=r),{...o,...e}},forwardErrorToRemote=(e,r)=>{const o=dedupeKeyFor(e),{forward:t,suppressedCount:s}=shouldForward(o);t&&safe(()=>remote?.recordError?.(e,buildErrorContext(r,s)))},logDebug=(e,...r)=>{isEnabled()&&isLogLevelAllowed(LogLevels.DEBUG.level)&&console.debug(`${LogLevels.DEBUG.color}[DEBUG]: ${redactString(e)}${Colors.RESET}`,...redact(r))},logInfo=(e,...r)=>{const o=redactString(e),t=redact(r);isEnabled()&&isLogLevelAllowed(LogLevels.INFO.level)&&(console.info(`${LogLevels.INFO.color}[INFO]: ${o}${Colors.RESET}`,...t),safe(()=>remote?.log?.("info",o,t)))},logWarning=(e,...r)=>{const o=redactString(e),t=redact(r);isEnabled()&&isLogLevelAllowed(LogLevels.WARN.level)&&(console.warn(`${LogLevels.WARN.color}[WARNING]: ${o}${Colors.RESET}`,...t),safe(()=>remote?.log?.("warn",o,t)))},logError=(e,...r)=>{const o=redactString(e),t=redact(r);isEnabled()&&isLogLevelAllowed(LogLevels.ERROR.level)&&console.error(`${LogLevels.ERROR.color}[ERROR]: ${o}${Colors.RESET}`,...t),safe(()=>remote?.log?.("error",o,t));const s=t[0];void 0===s||isNoResponse(r[0])||forwardErrorToRemote(toErrorObject(s),{source:"Logger.error",message:o})},breadcrumb=(e,r)=>{const o=redactString(e),t=redact(r);breadcrumbs.push({message:o,data:t,timestampUtc:(new Date).toISOString()}),trimBreadcrumbs(),isEnabled()&&isLogLevelAllowed("info")&&console.info(`${Colors.BLUE}[BREADCRUMB]: ${o}${Colors.RESET}`,t??""),safe(()=>remote?.breadcrumb?.(o,t))},recordError=(e,r)=>{const o=redact(toErrorObject(e)),t=redact(r);isNoResponse(e)?logInfo(`No response: ${o.message}`):(isEnabled()&&isLogLevelAllowed("error")&&console.error(`${Colors.RED_BOLD}[RECORDED]: ${o.message}${Colors.RESET}`,t??""),forwardErrorToRemote(o,t))},asDict=e=>"object"==typeof e&&null!==e?e:null,headerValue=(e,r)=>{const o=asDict(e);if(!o)return null;const t="function"==typeof o.get?o.get.call(e,r):o[r]??o[r.toLowerCase()];return"string"==typeof t&&""!==t?t:null},requestFailed=(e,r={})=>{const{label:o,expectedStatuses:t=[],...s}=r,n=asDict(e),l=asDict(n?.config),c=asDict(n?.response),i=asDict(c?.data),a="number"==typeof c?.status?c.status:null,d="string"==typeof l?.method?l.method.toUpperCase():null,u="string"==typeof l?.url?l.url.split("?")[0]??null:null,g=o??([d,u].filter(Boolean).join(" ")||"Request");if("CanceledError"===n?.name||"ERR_CANCELED"===n?.code||!0===n?.__CANCEL__)return void logInfo(`${g} canceled`);if("RequestOfflineError"===n?.name)return void logInfo(`${g} not sent (offline)`);if(isNoResponse(e))return void logInfo(`${g} got no response`);if("WorkspaceChangedError"===n?.name||"workspace_changed"===i?.code)return void logInfo(`${g} refused (another workspace)`);if(null!==a&&t.includes(a))return void logInfo(`${g} refused (${a})`);const f="string"==typeof n?.message?n.message:e instanceof Error?e.message:null,p=redactString(null===a?`${g} failed`:`${g} failed (${a})`);isEnabled()&&isLogLevelAllowed(LogLevels.ERROR.level)&&console.error(`${LogLevels.ERROR.color}[ERROR]: ${p}${Colors.RESET}`,redactString(f??"")),safe(()=>remote?.log?.("error",p,[]));const E=getConfigValue("correlationIdHeader",null),m=redact({source:"Logger.requestFailed",label:g,status:a,method:d,path:u,code:"string"==typeof i?.code?i.code:null,traceId:"string"==typeof i?.traceId?i.traceId:null,correlationId:E?headerValue(l?.headers,E):null,detail:f,...s});forwardErrorToRemote(redact(new Error(p)),m)},setUser=(e,r)=>{safe(()=>remote?.setUser?.(e,r))},setAttribute=(e,r)=>{safe(()=>remote?.setAttribute?.(e,r))},trackScreen=(e,r)=>{e!==currentScreen&&(currentScreen=e,screenHistory.push(e),screenHistory.length>loggerOptions.screenHistoryLimit&&(screenHistory=screenHistory.slice(screenHistory.length-loggerOptions.screenHistoryLimit)),breadcrumb(`Screen: ${e}`,r))},getCurrentScreen=()=>currentScreen,getScreenHistory=()=>[...screenHistory],getBreadcrumbs=()=>[...breadcrumbs];export const Logger={debug:logDebug,info:logInfo,warn:logWarning,error:logError,breadcrumb:breadcrumb,recordError:recordError,requestFailed:requestFailed,setUser:setUser,setAttribute:setAttribute,trackScreen:trackScreen,getCurrentScreen:getCurrentScreen,getScreenHistory:getScreenHistory,getBreadcrumbs:getBreadcrumbs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const REDACTED="[REDACTED]",
|
|
1
|
+
"use strict";const REDACTED="[REDACTED]",BEARER=/\bBearer\s+[A-Za-z0-9._~+/-]+=*/gi,JWT=/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*/g,VALUE=/(?:"(?:[^"\\]|\\.)*"|'[^']*'|[^\s,;&}]+)/.source,MAX_DEPTH=6,DEFAULT_SECRET_KEYS=["token","accessToken","refreshToken","idToken","password","newPassword","currentPassword","oldPassword","ownerPassword","authorization","cookie","setCookie","xApiKey","apiKey","clientSecret","secret","otp","mpin","pan","panNumber","aadhaar","aadhaarNumber","accountNumber","cardNumber","cvv"],normalizeKey=e=>e.replace(/[-_]/g,"").toLowerCase(),escapeChar=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),keyPattern=e=>Array.from(e,escapeChar).join("[-_]?");let secretKeys=new Set,keyedValue=/(?!)/g;export const configureRedaction=e=>{const r=new Set([...DEFAULT_SECRET_KEYS,...e].map(normalizeKey).filter(e=>""!==e));secretKeys=r;const t=[...r].map(keyPattern).join("|");keyedValue=new RegExp(`(^|[^A-Za-z0-9])(["']?(?:${t})["']?\\s*[:=]\\s*)${VALUE}`,"gi")};configureRedaction([]);export const redactString=e=>e.replace(BEARER,`Bearer ${REDACTED}`).replace(JWT,REDACTED).replace(keyedValue,(e,r,t)=>`${r}${t}"${REDACTED}"`);const redactInner=(e,r,t)=>{if("string"==typeof e)return redactString(e);if(null===e||"object"!=typeof e)return e;if(e instanceof Error)return e.message=redactString(e.message),e.stack&&(e.stack=redactString(e.stack)),e;if(r>=6||t.has(e))return e;if(t.add(e),Array.isArray(e))return e.map(e=>redactInner(e,r+1,t));const a=Object.getPrototypeOf(e);if(a!==Object.prototype&&null!==a)return e;const n={};for(const[a,o]of Object.entries(e))n[a]=secretKeys.has(normalizeKey(a))?REDACTED:redactInner(o,r+1,t);return n};export const redact=e=>redactInner(e,0,new WeakSet);
|