@cleartrip/ct-platform-utils 1.1.0-beta.0 → 1.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ export declare const isHTMLInputElement: (ref: unknown) => ref is HTMLInputEleme
7
7
  export declare const isNumeric: (value: any) => boolean;
8
8
  export declare const getCurrentUrl: string;
9
9
  export declare const getQueryParam: (queryParam: string) => string | null;
10
- export declare const getCurrentPathName: string;
10
+ export declare const getCurrentPathName: () => string;
11
11
  export declare const getHeightFromImgUrl: (url: string) => number | undefined;
12
12
  export declare const getWidthFromImgUrl: (url: string) => number | undefined;
13
13
  export declare const isServer: () => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"common.utils.d.ts","sourceRoot":"","sources":["../packages/utils/src/common.utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,aAAc,MAAM,EAAE,WAKzC,CAAC;AAEF,eAAO,MAAM,YAAY,kGAiBxB,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,GAAG,QAAQ,MAAM,EAAE,QAKvD,CAAC;AAEF,eAAO,MAAM,WAAW,QAAW,CAAC;AAEpC,eAAO,MAAM,OAAO,QAAS,GAAG,KAAG,OAkClC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,OAAO,4BAO9C,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,GAAG,YAEnC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MACiC,CAAC;AAE9D,eAAO,MAAM,aAAa,eAAgB,MAAM,kBAG/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAGrB,CAAC;AAEb,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MAAM,GAAG,SAc1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,GAAG,SAczD,CAAC;AAEF,eAAO,MAAM,QAAQ,eAEpB,CAAC"}
1
+ {"version":3,"file":"common.utils.d.ts","sourceRoot":"","sources":["../packages/utils/src/common.utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,aAAc,MAAM,EAAE,WAKzC,CAAC;AAEF,eAAO,MAAM,YAAY,kGAiBxB,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,GAAG,QAAQ,MAAM,EAAE,QAKvD,CAAC;AAEF,eAAO,MAAM,WAAW,QAAW,CAAC;AAEpC,eAAO,MAAM,OAAO,QAAS,GAAG,KAAG,OAkClC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,OAAO,4BAO9C,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,GAAG,YAEnC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MACiC,CAAC;AAE9D,eAAO,MAAM,aAAa,eAAgB,MAAM,kBAG/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MAIrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MAAM,GAAG,SAc1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,GAAG,SAczD,CAAC;AAEF,eAAO,MAAM,QAAQ,eAEpB,CAAC"}
@@ -1,2 +1,640 @@
1
- "use strict";var e=require("tslib"),t=require("@cleartrip/ct-platform-constants"),n=require("@cleartrip/ct-platform-types"),r=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=e.map((function(e){return e.replace(/^[/]+/,"")})).join("/");return n=n.replace(/\/\?/g,"?")},o=function(){var e="undefined"!=typeof window?window.location.hostname:"";switch(console.log("API_BASE domain",e),e){case"localhost":case"0.0.0.0":case"qa2new.cleartrip.com":return"https://qa2new.cleartrip.com";case"www.cleartrip.com":default:return"https://www.cleartrip.com";case"qa2.cleartrip.com":return"https://qa2.cleartrip.com"}},i=function(e,t){return t.reduce((function(e,t){return e&&e[t]?e[t]:null}),e)},a=function(e){if(e instanceof Date)return!1;if(null==e)return!0;var t,n=function(e){return"[object Number]"===Object.prototype.toString.call(e)};if(n(e))return n(t=e)&&"NaN"===t.toString();if(e.length>0)return!1;if(0===e.length)return!0;if("object"!=typeof e)return!0;for(var r=Object.keys(e),o=0,i=r[o];o<r.length;o+=1)if(Object.prototype.hasOwnProperty.call(e,i))return!1;return!0},s="undefined"!=typeof window?window.location.href:"",u="undefined"!=typeof window?(window.location.pathname+window.location.search).slice(1):"",c=function(){var e,n=null===(e=i(window,["navigator","userAgent"]))||void 0===e?void 0:e.toLowerCase(),r=/safari/.test(n),o=/iphone|ipod|ipad/.test(n);return i(window,["androidData","app-agent"])&&i(window,["androidData","js-version"])||"function"==typeof i(window,["MobileApp","getAppSpecificData"])?t.Platform.ANDROID:i(window,["iosData","app-agent"])&&i(window,["iosData","js-version"])||o&&!r?t.Platform.IOS:t.Platform.PWA},d=function(){var e,n,r=c();return r===t.Platform.IOS?null!==(e=i(window,["iosData","app-agent"]))&&void 0!==e?e:t.AppAgent.IOS:r===t.Platform.ANDROID?null!==(n=i(window,["androidData","app-agent"]))&&void 0!==n?n:t.AppAgent.ANDROID:t.AppAgent.PWA},l=function(){var e="";return g()?e=i(window,["iosData","js-version"]):f()&&(e=i(window,["androidData","js-version"])),e&&(e=e.toString().split(".")[0]),e},p=function(){return c()!==t.Platform.ANDROID&&c()!==t.Platform.IOS},f=function(){return c()===t.Platform.ANDROID},v=function(e){return parseInt(l())>=e},g=function(){return c()===t.Platform.IOS},w=o(),_=function(n,i,a,s,u,c){return void 0===i&&(i=t.RequestMethods.GET),void 0===s&&(s={}),void 0===u&&(u={}),void 0===c&&(c=!1),e.__awaiter(void 0,void 0,void 0,(function(){var l,p,f,v,g,_,h,m;return e.__generator(this,(function(O){switch(O.label){case 0:return l=function(e,n){var o=t.API_ROUTES[e];if(o&&o.trim().length){if(o=r(w,o),null==n?void 0:n.pathParams)for(var i=0,a=Object.entries(n.pathParams);i<a.length;i++){var s=a[i],u=s[0],c=s[1];o=o.replace(":".concat(u),c)}return(null==n?void 0:n.queryParams)&&(o+="?".concat(new URLSearchParams(n.queryParams).toString())),o}}(n,u),l&&l.trim().length?(p=o(),f={method:i,headers:e.__assign({Caller:w,Origin:w,Referer:w,Authority:p,x_ct_sourcetype:"MOBILE","app-agent":d(),"Content-Type":"application/json"},s)},a&&(f.body=JSON.stringify(a)),[4,fetch(l,f)]):[2,Promise.reject("URL parameter missing")];case 1:return g=O.sent(),_={name:"API_FAILURE",status:g.status,message:"UNKNOWN_ERROR",statusText:g.statusText},(null==g?void 0:g.ok)?[3,3]:c?[2,Promise.reject(_)]:[4,g.json()];case 2:throw h=O.sent().message,_.message=h,_;case 3:return(null==(m=g.headers.get("content-type"))?void 0:m.includes("application/json"))?[4,g.json()]:[3,5];case 4:return v=O.sent(),[3,9];case 5:return(null==m?void 0:m.includes("text"))?[4,g.text()]:[3,7];case 6:return v=O.sent(),[3,9];case 7:return 204===g.status?[3,9]:[4,g.blob()];case 8:v=O.sent(),O.label=9;case 9:return[2,{data:v,status:g.status}]}}))}))},h=function(n,r,o,i,a,s){return void 0===r&&(r=t.RequestMethods.POST),void 0===o&&(o={}),void 0===i&&(i={}),void 0===a&&(a={}),void 0===s&&(s=!1),e.__awaiter(void 0,void 0,void 0,(function(){return e.__generator(this,(function(t){return[2,_(n,r,o,e.__assign({expires:"0",accept:"application/json","cache-control":"no-cache"},i),a,s)]}))}))},m=function(e){var n="",r=e.match(t.MOBILE_CONSTANTS.REGEX);return r&&(n=r[0].replace(/\D/g,"")),n},O=function(){var e,t,n;null===(n=null===(t=null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===t?void 0:t.PWA_IS_SIGNIN)||void 0===n||n.postMessage({isSignIn:!0})},P=function(){var e;null===(e=window.MobileApp)||void 0===e||e.onPWALoginStatus(JSON.stringify({isSignIn:!0}))},b=function(){return e.__awaiter(void 0,void 0,void 0,(function(){var t,n;return e.__generator(this,(function(e){return(null===(n=null===navigator||void 0===navigator?void 0:navigator.credentials)||void 0===n?void 0:n.get)&&"OTPCredential"in window?(t=new AbortController,setTimeout((function(){t.abort()}),6e4),[2,navigator.credentials.get({otp:{transport:["sms"]},signal:t.signal}).then((function(e){return null==e?void 0:e.code}))]):[2,Promise.reject("NOT_SUPPORTED")]}))}))},S=function(){return e.__awaiter(void 0,void 0,void 0,(function(){var t,n;return e.__generator(this,(function(e){return n=new Promise((function(e){t=e})),window.sendOtpValue=function(e){t(e)},[2,n]}))}))},I=function(n,i,a){return e.__awaiter(void 0,void 0,void 0,(function(){var s,c;return e.__generator(this,(function(e){switch(e.label){case 0:return s=o(),[4,h("FK_REDIRECTION_INFO",t.RequestMethods.POST,{provider:"flipkart",fallbackUri:r(s,n||u),signupPageUri:r(s,i||"personal-details"),currentPageUri:r(s,a)})];case 1:return[2,null==(c=e.sent())?void 0:c.data]}}))}))},N=function(e){var t,n=null!==(t=null==e?void 0:e.params)&&void 0!==t?t:{},r=null==e?void 0:e.redirectUri;if(r){for(var o in r+="?",n)r+=o+"="+n[o]+"&";return Promise.resolve(r)}return Promise.reject()},x=function(t){var n,i,s=null==t?void 0:t.params;if(a(s)||"function"!=typeof(null===(n=window.MobileApp)||void 0===n?void 0:n.onNavigationChange))return Promise.reject();var u=r(o(),"dl/oauth2");return null===(i=window.MobileApp)||void 0===i||i.onNavigationChange(JSON.stringify({type:"FkSSO",miscData:e.__assign(e.__assign({},s),{redirectURI:u})})),Promise.resolve()},A=function(e){return Object.keys(e).forEach((function(t){e[t]="a_fare_price"===t||"a_ct_discount"===t||"supercoin_balance"===t||"supercoin_earned"===t||"supercoin_burnt"===t||"wallet_balance_used"===t||"convenience_fee"===t?Number(e[t]):""+e[t]})),e},y=function(e,t){return e.reduce((function(e,t){return e&&e[t]?e[t]:null}),t)};function R(e){if(y(["cookie"],document)){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var o=n[r];" "==o.charAt(0);)o=o.substring(1,o.length);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return""}return""}function T(){try{var e=decodeURIComponent(R("userid")||"").split("|");return{email:e[0],profileName:e[1],gender:e[2],photo:e[3],userId:e[4]}}catch(e){return{}}}var D=function(){var e=T()||{};return!!(decodeURIComponent(R("usermisc")||"").split("|").includes("SIGNED_IN")&&e.userId&&e.userId.length>0)},E=function(){if(window&&"undefined"!=typeof window){var e=y(["location","pathname"],window);if("/"===e||"/flights"===e)return!0}return!1};exports.MULTI_SPACE=/\s\s+/g,exports.autoReadOtp=function(){return e.__awaiter(void 0,void 0,void 0,(function(){return e.__generator(this,(function(e){return[2,f()?S():b()]}))}))},exports.createAPIRequest=_,exports.createGetRequest=function(n,r,o,i){return void 0===r&&(r={}),void 0===o&&(o={}),void 0===i&&(i=!1),e.__awaiter(void 0,void 0,void 0,(function(){return e.__generator(this,(function(a){return[2,_(n,t.RequestMethods.GET,null,e.__assign({expires:"0",accept:"application/json","cache-control":"no-cache"},r),o,i)]}))}))},exports.createPostOrPutRequest=h,exports.getApiDomain=o,exports.getAppAgent=d,exports.getAutoDetectedMobile=m,exports.getCookie=R,exports.getCurrentPathName=u,exports.getCurrentUrl=s,exports.getDevicePlatform=c,exports.getHeightFromImgUrl=function(e){if(e){var t=e.match(/h_(\d+)[,\/]/);return t&&t[1]?parseInt(t[1],10):void 0}},exports.getJSVersion=l,exports.getNestedValue=i,exports.getQueryParam=function(e){return new URLSearchParams(window.location.search).get(e)},exports.getRavenEventProps=function(){if(window&&"undefined"!=typeof window){var e=new URLSearchParams(y(["location","search"],window)),t=window.location.pathname,n=decodeURIComponent(e.get("service")),r=E()?"skippable_login":"account_login",o="air",i=t.includes("flights/itinerary")||n.includes("flights/itinerary")?"a_itinerary":"a_home";return n.includes("my-account")&&(o="uar",i="account"),n.includes("hotels")&&(o="hotel",i=n.includes("hotels/itinerary")?"h_itinerary":"h_home"),n.includes("bus")&&(o="bus",i=n.includes("bus/itinerary")?"b_itinerary":"b_home"),{loginForm:r,vertical:o,pageName:i}}return{}},exports.getUserAuthValues=T,exports.getWidthFromImgUrl=function(e){if(e){var t=e.match(/w_(\d+)[,\/]/);return t&&t[1]?parseInt(t[1],10):void 0}},exports.handleFKSSO=function(t,n,r){return e.__awaiter(void 0,void 0,void 0,(function(){var o;return e.__generator(this,(function(e){switch(e.label){case 0:return g()?[2,Promise.reject()]:[4,I(t,n,r)];case 1:return o=e.sent(),f()?[2,x(o)]:[2,N(o)]}}))}))},exports.isAirHomePage=E,exports.isAndroidApp=f,exports.isEmpty=a,exports.isFKSSOEnabled=function(){return p()||!g()&&v(5)},exports.isHTMLInputElement=function(e){return"object"==typeof e&&null!==e&&"value"in e&&e instanceof HTMLInputElement},exports.isIOSApp=g,exports.isJSVersionUpdated=v,exports.isNumeric=function(e){return/^[0-9]*$/.test(e)},exports.isPwa=p,exports.isServer=function(){return"undefined"==typeof window||!window},exports.isUserSignedIn=D,exports.isValidMobileNumber=function(e){return(null==e?void 0:e.length)===t.MOBILE_CONSTANTS.LENGTH&&/^\d{10}$/.test(e)},exports.path=y,exports.ravenSDKTrigger=function(t,n){var r;if(window&&window.ravenWebManager){var o={platform:null===(r=c())||void 0===r?void 0:r.toLowerCase(),login_status:D()?"yes":"no",domain:window.location.host},i=A(n),a=window.ravenWebManager;null==a||a.triggerRaven(t,e.__assign(e.__assign({},o),i))}},exports.sendLoginOtp=function(n,r){return e.__awaiter(void 0,void 0,void 0,(function(){var o;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,h("SEND_OTP",t.RequestMethods.POST,{value:n,type:"MOBILE",action:"SIGNIN",countryCode:t.MOBILE_CONSTANTS.COUNTRY_CODE},{"ab-otp":"b",dvid_data:r})];case 1:return[2,null==(o=e.sent())?void 0:o.data]}}))}))},exports.showMobileNumberHint=function(){var e;if("function"==typeof(null===(e=window.MobileApp)||void 0===e?void 0:e.onRequestMobileNumber)){var t;window.MobileApp.onRequestMobileNumber();var n=new Promise((function(e){t=e}));return window.sendSelectedMobileNumber=function(e){return t(m(e))},n}return Promise.resolve("")},exports.stringifyPayload=A,exports.triggerOTPListener=function(){var e;f()&&(null===(e=window.MobileApp)||void 0===e||e.onPageStart("OTP_SCREEN"))},exports.updateNativeAndroidOnSignIn=P,exports.updateNativeIOSOnSignIn=O,exports.updateNativeOnLogin=function(){g()?O():f()&&P()},exports.urlJoin=r,exports.validateOtp=function(r,o){return e.__awaiter(void 0,void 0,void 0,(function(){var i,a;return e.__generator(this,(function(s){switch(s.label){case 0:return[4,h("VALIDATE_OTP",t.RequestMethods.POST,{otp:o,value:r,type:"MOBILE",action:"SIGNIN",countryCode:"+91"},{"ab-otp":"b"})];case 1:return i=s.sent(),a=null==i?void 0:i.data,[2,e.__assign(e.__assign({},i),{signup:(null==a?void 0:a.action)===n.ValidateOTPAction.SIGNUP,action:null==a?void 0:a.action,status:null==i?void 0:i.status})]}}))}))};
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var ctPlatformConstants = require('@cleartrip/ct-platform-constants');
5
+ var ctPlatformTypes = require('@cleartrip/ct-platform-types');
6
+
7
+ var urlJoin = function () {
8
+ var parts = [];
9
+ for (var _i = 0; _i < arguments.length; _i++) {
10
+ parts[_i] = arguments[_i];
11
+ }
12
+ var trimmedParts = parts.map(function (part) { return part.replace(/^[/]+/, ''); });
13
+ var joinedParts = trimmedParts.join('/');
14
+ joinedParts = joinedParts.replace(/\/\?/g, '?');
15
+ return joinedParts;
16
+ };
17
+ var getApiDomain = function () {
18
+ var domain = typeof window !== 'undefined' ? window.location.hostname : '';
19
+ console.log('API_BASE domain', domain);
20
+ switch (domain) {
21
+ case 'localhost':
22
+ case '0.0.0.0':
23
+ return 'https://qa2new.cleartrip.com';
24
+ case 'www.cleartrip.com':
25
+ return 'https://www.cleartrip.com';
26
+ case 'qa2.cleartrip.com':
27
+ return 'https://qa2.cleartrip.com';
28
+ case 'qa2new.cleartrip.com':
29
+ return 'https://qa2new.cleartrip.com';
30
+ default:
31
+ return 'https://www.cleartrip.com';
32
+ }
33
+ };
34
+ var getNestedValue = function (data, path) {
35
+ var reducerFunction = function (prev, current) {
36
+ return prev && prev[current] ? prev[current] : null;
37
+ };
38
+ return path.reduce(reducerFunction, data);
39
+ };
40
+ var MULTI_SPACE = /\s\s+/g;
41
+ var isEmpty = function (obj) {
42
+ if (obj instanceof Date) {
43
+ return false;
44
+ }
45
+ if (obj == null) {
46
+ return true;
47
+ }
48
+ var isNumber = function (value) {
49
+ return Object.prototype.toString.call(value) === '[object Number]';
50
+ };
51
+ var isNaN = function (value) { return isNumber(value) && value.toString() === 'NaN'; };
52
+ if (isNumber(obj)) {
53
+ return isNaN(obj);
54
+ }
55
+ if (obj.length > 0) {
56
+ return false;
57
+ }
58
+ if (obj.length === 0) {
59
+ return true;
60
+ }
61
+ if (typeof obj !== 'object') {
62
+ return true;
63
+ }
64
+ var keys = Object.keys(obj);
65
+ for (var i = 0, key = keys[i]; i < keys.length; i += 1) {
66
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
67
+ return false;
68
+ }
69
+ }
70
+ return true;
71
+ };
72
+ var isHTMLInputElement = function (ref) {
73
+ return (typeof ref === 'object' &&
74
+ ref !== null &&
75
+ 'value' in ref &&
76
+ ref instanceof HTMLInputElement);
77
+ };
78
+ var isNumeric = function (value) {
79
+ return /^[0-9]*$/.test(value);
80
+ };
81
+ var getCurrentUrl = typeof window !== 'undefined' ? window.location.href : '';
82
+ var getQueryParam = function (queryParam) {
83
+ var urlParams = new URLSearchParams(window.location.search);
84
+ return urlParams.get(queryParam);
85
+ };
86
+ var getCurrentPathName = function () {
87
+ return typeof window !== 'undefined'
88
+ ? (window.location.pathname + window.location.search).slice(1)
89
+ : '';
90
+ };
91
+ var getHeightFromImgUrl = function (url) {
92
+ if (!url) {
93
+ return;
94
+ }
95
+ var regex = /h_(\d+)[,\/]/;
96
+ var match = url.match(regex);
97
+ if (match && match[1]) {
98
+ return parseInt(match[1], 10);
99
+ }
100
+ return;
101
+ };
102
+ var getWidthFromImgUrl = function (url) {
103
+ if (!url) {
104
+ return;
105
+ }
106
+ var regex = /w_(\d+)[,\/]/;
107
+ var match = url.match(regex);
108
+ if (match && match[1]) {
109
+ return parseInt(match[1], 10);
110
+ }
111
+ return;
112
+ };
113
+ var isServer = function () {
114
+ return typeof window === 'undefined' || !window;
115
+ };
116
+
117
+ var getDevicePlatform = function () {
118
+ var _a;
119
+ var userAgent = (_a = getNestedValue(window, [
120
+ 'navigator',
121
+ 'userAgent',
122
+ ])) === null || _a === void 0 ? void 0 : _a.toLowerCase();
123
+ var safariBrowser = /safari/.test(userAgent);
124
+ var appleDevice = /iphone|ipod|ipad/.test(userAgent);
125
+ if ((getNestedValue(window, ['androidData', 'app-agent']) &&
126
+ getNestedValue(window, ['androidData', 'js-version'])) ||
127
+ typeof getNestedValue(window, ['MobileApp', 'getAppSpecificData']) ===
128
+ 'function') {
129
+ return ctPlatformConstants.Platform.ANDROID;
130
+ }
131
+ else if ((getNestedValue(window, ['iosData', 'app-agent']) &&
132
+ getNestedValue(window, ['iosData', 'js-version'])) ||
133
+ (appleDevice && !safariBrowser)) {
134
+ return ctPlatformConstants.Platform.IOS;
135
+ }
136
+ return ctPlatformConstants.Platform.PWA;
137
+ };
138
+ var getAppAgent = function () {
139
+ var _a, _b;
140
+ var platform = getDevicePlatform();
141
+ if (platform === ctPlatformConstants.Platform.IOS) {
142
+ return (_a = getNestedValue(window, ['iosData', 'app-agent'])) !== null && _a !== void 0 ? _a : ctPlatformConstants.AppAgent.IOS;
143
+ }
144
+ else if (platform === ctPlatformConstants.Platform.ANDROID) {
145
+ return ((_b = getNestedValue(window, ['androidData', 'app-agent'])) !== null && _b !== void 0 ? _b : ctPlatformConstants.AppAgent.ANDROID);
146
+ }
147
+ return ctPlatformConstants.AppAgent.PWA;
148
+ };
149
+ var getJSVersion = function () {
150
+ var jsVersion = '';
151
+ if (isIOSApp()) {
152
+ jsVersion = getNestedValue(window, ['iosData', 'js-version']);
153
+ }
154
+ else if (isAndroidApp()) {
155
+ jsVersion = getNestedValue(window, ['androidData', 'js-version']);
156
+ }
157
+ if (jsVersion) {
158
+ jsVersion = jsVersion.toString().split('.')[0];
159
+ }
160
+ return jsVersion;
161
+ };
162
+ var isPwa = function () {
163
+ return getDevicePlatform() !== ctPlatformConstants.Platform.ANDROID &&
164
+ getDevicePlatform() !== ctPlatformConstants.Platform.IOS;
165
+ };
166
+ var isAndroidApp = function () {
167
+ return getDevicePlatform() === ctPlatformConstants.Platform.ANDROID;
168
+ };
169
+ var isJSVersionUpdated = function (compareVersion) {
170
+ return parseInt(getJSVersion()) >= compareVersion;
171
+ };
172
+ var isIOSApp = function () { return getDevicePlatform() === ctPlatformConstants.Platform.IOS; };
173
+
174
+ var API_BASE = getApiDomain();
175
+ var getRequestUrl = function (path, params) {
176
+ var url = ctPlatformConstants.API_ROUTES[path];
177
+ if (!url || !url.trim().length) {
178
+ return;
179
+ }
180
+ url = urlJoin(API_BASE, url);
181
+ if (params === null || params === void 0 ? void 0 : params.pathParams) {
182
+ for (var _i = 0, _a = Object.entries(params.pathParams); _i < _a.length; _i++) {
183
+ var _b = _a[_i], key = _b[0], value = _b[1];
184
+ url = url.replace(":".concat(key), value);
185
+ }
186
+ }
187
+ if (params === null || params === void 0 ? void 0 : params.queryParams) {
188
+ url += "?".concat(new URLSearchParams(params.queryParams).toString());
189
+ }
190
+ return url;
191
+ };
192
+ var createAPIRequest = function (path, method, payload, headers, params, useCustomErrorHandler) {
193
+ if (method === void 0) { method = ctPlatformConstants.RequestMethods.GET; }
194
+ if (headers === void 0) { headers = {}; }
195
+ if (params === void 0) { params = {}; }
196
+ if (useCustomErrorHandler === void 0) { useCustomErrorHandler = false; }
197
+ return tslib.__awaiter(void 0, void 0, void 0, function () {
198
+ var url, API_AUTHORITY, requestOptions, responseData, response, error, message, contentType;
199
+ return tslib.__generator(this, function (_a) {
200
+ switch (_a.label) {
201
+ case 0:
202
+ url = getRequestUrl(path, params);
203
+ if (!url || !url.trim().length) {
204
+ return [2, Promise.reject('URL parameter missing')];
205
+ }
206
+ API_AUTHORITY = getApiDomain();
207
+ requestOptions = {
208
+ method: method,
209
+ headers: tslib.__assign({ Caller: API_BASE, Origin: API_BASE, Referer: API_BASE, Authority: API_AUTHORITY, x_ct_sourcetype: 'MOBILE', 'app-agent': getAppAgent(), 'Content-Type': 'application/json' }, headers),
210
+ };
211
+ if (payload) {
212
+ requestOptions.body = JSON.stringify(payload);
213
+ }
214
+ return [4, fetch(url, requestOptions)];
215
+ case 1:
216
+ response = _a.sent();
217
+ error = {
218
+ name: 'API_FAILURE',
219
+ status: response.status,
220
+ message: 'UNKNOWN_ERROR',
221
+ statusText: response.statusText,
222
+ };
223
+ if (!!(response === null || response === void 0 ? void 0 : response.ok)) return [3, 3];
224
+ if (useCustomErrorHandler) {
225
+ return [2, Promise.reject(error)];
226
+ }
227
+ return [4, response.json()];
228
+ case 2:
229
+ message = (_a.sent()).message;
230
+ error.message = message;
231
+ throw error;
232
+ case 3:
233
+ contentType = response.headers.get('content-type');
234
+ if (!(contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/json'))) return [3, 5];
235
+ return [4, response.json()];
236
+ case 4:
237
+ responseData = _a.sent();
238
+ return [3, 9];
239
+ case 5:
240
+ if (!(contentType === null || contentType === void 0 ? void 0 : contentType.includes('text'))) return [3, 7];
241
+ return [4, response.text()];
242
+ case 6:
243
+ responseData = _a.sent();
244
+ return [3, 9];
245
+ case 7:
246
+ if (!(response.status !== 204)) return [3, 9];
247
+ return [4, response.blob()];
248
+ case 8:
249
+ responseData = _a.sent();
250
+ _a.label = 9;
251
+ case 9: return [2, {
252
+ data: responseData,
253
+ status: response.status,
254
+ }];
255
+ }
256
+ });
257
+ });
258
+ };
259
+ var createGetRequest = function (path, headers, params, useCustomErrorHandler) {
260
+ if (headers === void 0) { headers = {}; }
261
+ if (params === void 0) { params = {}; }
262
+ if (useCustomErrorHandler === void 0) { useCustomErrorHandler = false; }
263
+ return tslib.__awaiter(void 0, void 0, void 0, function () {
264
+ return tslib.__generator(this, function (_a) {
265
+ return [2, createAPIRequest(path, ctPlatformConstants.RequestMethods.GET, null, tslib.__assign({ expires: '0', accept: 'application/json', 'cache-control': 'no-cache' }, headers), params, useCustomErrorHandler)];
266
+ });
267
+ });
268
+ };
269
+ var createPostOrPutRequest = function (path, method, payload, headers, params, useCustomErrorHandler) {
270
+ if (method === void 0) { method = ctPlatformConstants.RequestMethods.POST; }
271
+ if (payload === void 0) { payload = {}; }
272
+ if (headers === void 0) { headers = {}; }
273
+ if (params === void 0) { params = {}; }
274
+ if (useCustomErrorHandler === void 0) { useCustomErrorHandler = false; }
275
+ return tslib.__awaiter(void 0, void 0, void 0, function () {
276
+ return tslib.__generator(this, function (_a) {
277
+ return [2, createAPIRequest(path, method, payload, tslib.__assign({ expires: '0', accept: 'application/json', 'cache-control': 'no-cache' }, headers), params, useCustomErrorHandler)];
278
+ });
279
+ });
280
+ };
281
+
282
+ var showMobileNumberHint = function () {
283
+ var _a;
284
+ if (typeof ((_a = window.MobileApp) === null || _a === void 0 ? void 0 : _a.onRequestMobileNumber) === 'function') {
285
+ window.MobileApp.onRequestMobileNumber();
286
+ var promiseResolver_1;
287
+ var mobileNoPromise = new Promise(function (resolve) {
288
+ promiseResolver_1 = resolve;
289
+ });
290
+ window.sendSelectedMobileNumber = function (mobileNum) {
291
+ return promiseResolver_1(getAutoDetectedMobile(mobileNum));
292
+ };
293
+ return mobileNoPromise;
294
+ }
295
+ return Promise.resolve('');
296
+ };
297
+ var getAutoDetectedMobile = function (mobileNumber) {
298
+ var formattedMobileNo = '';
299
+ var matches = mobileNumber.match(ctPlatformConstants.MOBILE_CONSTANTS.REGEX);
300
+ if (matches) {
301
+ formattedMobileNo = matches[0].replace(/\D/g, '');
302
+ }
303
+ return formattedMobileNo;
304
+ };
305
+ var autoReadOtp = function () { return tslib.__awaiter(void 0, void 0, void 0, function () {
306
+ return tslib.__generator(this, function (_a) {
307
+ return [2, isAndroidApp() ? readOtpAndroid() : readOtpPWA()];
308
+ });
309
+ }); };
310
+ var updateNativeIOSOnSignIn = function () {
311
+ var _a, _b, _c;
312
+ (_c = (_b = (_a = window.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.PWA_IS_SIGNIN) === null || _c === void 0 ? void 0 : _c.postMessage({
313
+ isSignIn: true,
314
+ });
315
+ };
316
+ var updateNativeAndroidOnSignIn = function () {
317
+ var _a;
318
+ (_a = window.MobileApp) === null || _a === void 0 ? void 0 : _a.onPWALoginStatus(JSON.stringify({
319
+ isSignIn: true,
320
+ }));
321
+ };
322
+ var triggerOTPListener = function () {
323
+ var _a;
324
+ if (isAndroidApp()) {
325
+ (_a = window.MobileApp) === null || _a === void 0 ? void 0 : _a.onPageStart('OTP_SCREEN');
326
+ }
327
+ };
328
+ var readOtpPWA = function () { return tslib.__awaiter(void 0, void 0, void 0, function () {
329
+ var abortController;
330
+ var _a;
331
+ return tslib.__generator(this, function (_b) {
332
+ if (!((_a = navigator === null || navigator === void 0 ? void 0 : navigator.credentials) === null || _a === void 0 ? void 0 : _a.get) || !('OTPCredential' in window)) {
333
+ return [2, Promise.reject('NOT_SUPPORTED')];
334
+ }
335
+ abortController = new AbortController();
336
+ setTimeout(function () {
337
+ abortController.abort();
338
+ }, 60000);
339
+ return [2, navigator.credentials
340
+ .get({
341
+ otp: { transport: ['sms'] },
342
+ signal: abortController.signal,
343
+ })
344
+ .then(function (content) { return content === null || content === void 0 ? void 0 : content.code; })];
345
+ });
346
+ }); };
347
+ var readOtpAndroid = function () { return tslib.__awaiter(void 0, void 0, void 0, function () {
348
+ var promiseResolver, otpPromise;
349
+ return tslib.__generator(this, function (_a) {
350
+ otpPromise = new Promise(function (resolve) {
351
+ promiseResolver = resolve;
352
+ });
353
+ window.sendOtpValue = function (otp) {
354
+ promiseResolver(otp);
355
+ };
356
+ return [2, otpPromise];
357
+ });
358
+ }); };
359
+
360
+ var sendLoginOtp = function (mobile, personalizationHeaders) { return tslib.__awaiter(void 0, void 0, void 0, function () {
361
+ var response;
362
+ return tslib.__generator(this, function (_a) {
363
+ switch (_a.label) {
364
+ case 0: return [4, createPostOrPutRequest('SEND_OTP', ctPlatformConstants.RequestMethods.POST, {
365
+ value: mobile,
366
+ type: 'MOBILE',
367
+ action: 'SIGNIN',
368
+ countryCode: ctPlatformConstants.MOBILE_CONSTANTS.COUNTRY_CODE,
369
+ }, {
370
+ 'ab-otp': 'b',
371
+ dvid_data: personalizationHeaders,
372
+ })];
373
+ case 1:
374
+ response = _a.sent();
375
+ return [2, response === null || response === void 0 ? void 0 : response.data];
376
+ }
377
+ });
378
+ }); };
379
+ var validateOtp = function (mobile, otp) { return tslib.__awaiter(void 0, void 0, void 0, function () {
380
+ var response, data;
381
+ return tslib.__generator(this, function (_a) {
382
+ switch (_a.label) {
383
+ case 0: return [4, createPostOrPutRequest('VALIDATE_OTP', ctPlatformConstants.RequestMethods.POST, {
384
+ otp: otp,
385
+ value: mobile,
386
+ type: 'MOBILE',
387
+ action: 'SIGNIN',
388
+ countryCode: '+91',
389
+ }, { 'ab-otp': 'b' })];
390
+ case 1:
391
+ response = _a.sent();
392
+ data = response === null || response === void 0 ? void 0 : response.data;
393
+ return [2, tslib.__assign(tslib.__assign({}, response), { signup: (data === null || data === void 0 ? void 0 : data.action) === ctPlatformTypes.ValidateOTPAction.SIGNUP, action: data === null || data === void 0 ? void 0 : data.action, status: response === null || response === void 0 ? void 0 : response.status })];
394
+ }
395
+ });
396
+ }); };
397
+ var handleFKSSO = function (fallbackUri, signupPageUri, currentPageUri) { return tslib.__awaiter(void 0, void 0, void 0, function () {
398
+ var redirectionInfo;
399
+ return tslib.__generator(this, function (_a) {
400
+ switch (_a.label) {
401
+ case 0:
402
+ if (isIOSApp()) {
403
+ return [2, Promise.reject()];
404
+ }
405
+ return [4, sendFKSSORedirectionInfo(fallbackUri, signupPageUri, currentPageUri)];
406
+ case 1:
407
+ redirectionInfo = _a.sent();
408
+ if (isAndroidApp()) {
409
+ return [2, handleFKSSOAndroid(redirectionInfo)];
410
+ }
411
+ else {
412
+ return [2, handleFKSSOWeb(redirectionInfo)];
413
+ }
414
+ }
415
+ });
416
+ }); };
417
+ var isValidMobileNumber = function (text) {
418
+ return (text === null || text === void 0 ? void 0 : text.length) === ctPlatformConstants.MOBILE_CONSTANTS.LENGTH && /^\d{10}$/.test(text);
419
+ };
420
+ var updateNativeOnLogin = function () {
421
+ if (isIOSApp()) {
422
+ updateNativeIOSOnSignIn();
423
+ }
424
+ else if (isAndroidApp()) {
425
+ updateNativeAndroidOnSignIn();
426
+ }
427
+ };
428
+ var isFKSSOEnabled = function () {
429
+ return isPwa() || (!isIOSApp() && isJSVersionUpdated(5));
430
+ };
431
+ var sendFKSSORedirectionInfo = function (fallbackUri, signupPageUri, currentPageUri) { return tslib.__awaiter(void 0, void 0, void 0, function () {
432
+ var WEBSITE_BASE, response;
433
+ return tslib.__generator(this, function (_a) {
434
+ switch (_a.label) {
435
+ case 0:
436
+ WEBSITE_BASE = getApiDomain();
437
+ return [4, createPostOrPutRequest('FK_REDIRECTION_INFO', ctPlatformConstants.RequestMethods.POST, {
438
+ provider: 'flipkart',
439
+ fallbackUri: urlJoin(WEBSITE_BASE, fallbackUri || getCurrentPathName()),
440
+ signupPageUri: urlJoin(WEBSITE_BASE, signupPageUri || 'personal-details'),
441
+ currentPageUri: urlJoin(WEBSITE_BASE, currentPageUri),
442
+ })];
443
+ case 1:
444
+ response = _a.sent();
445
+ return [2, response === null || response === void 0 ? void 0 : response.data];
446
+ }
447
+ });
448
+ }); };
449
+ var handleFKSSOWeb = function (redirectionInfo) {
450
+ var _a;
451
+ var params = (_a = redirectionInfo === null || redirectionInfo === void 0 ? void 0 : redirectionInfo.params) !== null && _a !== void 0 ? _a : {};
452
+ var redirectUri = redirectionInfo === null || redirectionInfo === void 0 ? void 0 : redirectionInfo.redirectUri;
453
+ if (redirectUri) {
454
+ redirectUri += '?';
455
+ for (var key in params) {
456
+ redirectUri += key + '=' + params[key] + '&';
457
+ }
458
+ return Promise.resolve(redirectUri);
459
+ }
460
+ return Promise.reject();
461
+ };
462
+ var handleFKSSOAndroid = function (redirectionInfo) {
463
+ var _a, _b;
464
+ var params = redirectionInfo === null || redirectionInfo === void 0 ? void 0 : redirectionInfo.params;
465
+ if (isEmpty(params) ||
466
+ typeof ((_a = window.MobileApp) === null || _a === void 0 ? void 0 : _a.onNavigationChange) !== 'function') {
467
+ return Promise.reject();
468
+ }
469
+ else {
470
+ var FK_REDIRECT_DL = urlJoin(getApiDomain(), 'dl/oauth2');
471
+ (_b = window.MobileApp) === null || _b === void 0 ? void 0 : _b.onNavigationChange(JSON.stringify({
472
+ type: 'FkSSO',
473
+ miscData: tslib.__assign(tslib.__assign({}, params), { redirectURI: FK_REDIRECT_DL }),
474
+ }));
475
+ return Promise.resolve();
476
+ }
477
+ };
478
+
479
+ var stringifyPayload = function (payload) {
480
+ var keys = Object.keys(payload);
481
+ keys.forEach(function (key) {
482
+ if (key === 'a_fare_price' ||
483
+ key === 'a_ct_discount' ||
484
+ key === 'supercoin_balance' ||
485
+ key === 'supercoin_earned' ||
486
+ key === 'supercoin_burnt' ||
487
+ key === 'wallet_balance_used' ||
488
+ key === 'convenience_fee')
489
+ payload[key] = Number(payload[key]);
490
+ else
491
+ payload[key] = '' + payload[key];
492
+ });
493
+ return payload;
494
+ };
495
+ var path = function (p, o) {
496
+ var reducerFunction = function (xs, x) {
497
+ return xs && xs[x] ? xs[x] : null;
498
+ };
499
+ return p.reduce(reducerFunction, o);
500
+ };
501
+ function getCookie(name) {
502
+ if (path(['cookie'], document)) {
503
+ var nameEQ = name + '=';
504
+ var ca = document.cookie.split(';');
505
+ for (var i = 0; i < ca.length; i++) {
506
+ var c = ca[i];
507
+ while (c.charAt(0) == ' ')
508
+ c = c.substring(1, c.length);
509
+ if (c.indexOf(nameEQ) == 0)
510
+ return c.substring(nameEQ.length, c.length);
511
+ }
512
+ return '';
513
+ }
514
+ else {
515
+ return '';
516
+ }
517
+ }
518
+ function getUserAuthValues() {
519
+ try {
520
+ var _a = decodeURIComponent(getCookie('userid') || '').split('|'), email = _a[0], profileName = _a[1], gender = _a[2], photo = _a[3], userId = _a[4];
521
+ return {
522
+ email: email,
523
+ profileName: profileName,
524
+ gender: gender,
525
+ photo: photo,
526
+ userId: userId,
527
+ };
528
+ }
529
+ catch (error) {
530
+ return {};
531
+ }
532
+ }
533
+ var isUserSignedIn = function () {
534
+ var userObject = getUserAuthValues() || {};
535
+ var usermiscVal = decodeURIComponent(getCookie('usermisc') || '').split('|');
536
+ var signedIn = usermiscVal.includes('SIGNED_IN') &&
537
+ userObject.userId &&
538
+ userObject.userId.length > 0
539
+ ? true
540
+ : false;
541
+ return signedIn;
542
+ };
543
+ var ravenSDKTrigger = function (eventName, ravenPayload) {
544
+ var _a;
545
+ if (window && window['ravenWebManager']) {
546
+ var commonPayload = {
547
+ platform: (_a = getDevicePlatform()) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
548
+ login_status: isUserSignedIn() ? 'yes' : 'no',
549
+ domain: window.location.host,
550
+ };
551
+ var newRavenPayload = stringifyPayload(ravenPayload);
552
+ var RavenWebManager = window['ravenWebManager'];
553
+ RavenWebManager === null || RavenWebManager === void 0 ? void 0 : RavenWebManager.triggerRaven(eventName, tslib.__assign(tslib.__assign({}, commonPayload), newRavenPayload));
554
+ }
555
+ };
556
+ var isAirHomePage = function () {
557
+ if (window && typeof window !== 'undefined') {
558
+ var pathname = path(['location', 'pathname'], window);
559
+ if (pathname === '/' || pathname === '/flights') {
560
+ return true;
561
+ }
562
+ }
563
+ return false;
564
+ };
565
+ var getRavenEventProps = function () {
566
+ if (window && typeof window !== 'undefined') {
567
+ var queryParams = new URLSearchParams(path(['location', 'search'], window));
568
+ var pathUrl = window.location.pathname;
569
+ var redirectionPath = decodeURIComponent(queryParams.get('service'));
570
+ var loginForm = isAirHomePage() ? 'skippable_login' : 'account_login';
571
+ var vertical = 'air';
572
+ var pageName = pathUrl.includes('flights/itinerary') ||
573
+ redirectionPath.includes('flights/itinerary')
574
+ ? 'a_itinerary'
575
+ : 'a_home';
576
+ if (redirectionPath.includes('my-account')) {
577
+ vertical = 'uar';
578
+ pageName = 'account';
579
+ }
580
+ if (redirectionPath.includes('hotels')) {
581
+ vertical = 'hotel';
582
+ pageName = redirectionPath.includes('hotels/itinerary')
583
+ ? 'h_itinerary'
584
+ : 'h_home';
585
+ }
586
+ if (redirectionPath.includes('bus')) {
587
+ vertical = 'bus';
588
+ pageName = redirectionPath.includes('bus/itinerary')
589
+ ? 'b_itinerary'
590
+ : 'b_home';
591
+ }
592
+ return { loginForm: loginForm, vertical: vertical, pageName: pageName };
593
+ }
594
+ return {};
595
+ };
596
+
597
+ exports.MULTI_SPACE = MULTI_SPACE;
598
+ exports.autoReadOtp = autoReadOtp;
599
+ exports.createAPIRequest = createAPIRequest;
600
+ exports.createGetRequest = createGetRequest;
601
+ exports.createPostOrPutRequest = createPostOrPutRequest;
602
+ exports.getApiDomain = getApiDomain;
603
+ exports.getAppAgent = getAppAgent;
604
+ exports.getAutoDetectedMobile = getAutoDetectedMobile;
605
+ exports.getCookie = getCookie;
606
+ exports.getCurrentPathName = getCurrentPathName;
607
+ exports.getCurrentUrl = getCurrentUrl;
608
+ exports.getDevicePlatform = getDevicePlatform;
609
+ exports.getHeightFromImgUrl = getHeightFromImgUrl;
610
+ exports.getJSVersion = getJSVersion;
611
+ exports.getNestedValue = getNestedValue;
612
+ exports.getQueryParam = getQueryParam;
613
+ exports.getRavenEventProps = getRavenEventProps;
614
+ exports.getUserAuthValues = getUserAuthValues;
615
+ exports.getWidthFromImgUrl = getWidthFromImgUrl;
616
+ exports.handleFKSSO = handleFKSSO;
617
+ exports.isAirHomePage = isAirHomePage;
618
+ exports.isAndroidApp = isAndroidApp;
619
+ exports.isEmpty = isEmpty;
620
+ exports.isFKSSOEnabled = isFKSSOEnabled;
621
+ exports.isHTMLInputElement = isHTMLInputElement;
622
+ exports.isIOSApp = isIOSApp;
623
+ exports.isJSVersionUpdated = isJSVersionUpdated;
624
+ exports.isNumeric = isNumeric;
625
+ exports.isPwa = isPwa;
626
+ exports.isServer = isServer;
627
+ exports.isUserSignedIn = isUserSignedIn;
628
+ exports.isValidMobileNumber = isValidMobileNumber;
629
+ exports.path = path;
630
+ exports.ravenSDKTrigger = ravenSDKTrigger;
631
+ exports.sendLoginOtp = sendLoginOtp;
632
+ exports.showMobileNumberHint = showMobileNumberHint;
633
+ exports.stringifyPayload = stringifyPayload;
634
+ exports.triggerOTPListener = triggerOTPListener;
635
+ exports.updateNativeAndroidOnSignIn = updateNativeAndroidOnSignIn;
636
+ exports.updateNativeIOSOnSignIn = updateNativeIOSOnSignIn;
637
+ exports.updateNativeOnLogin = updateNativeOnLogin;
638
+ exports.urlJoin = urlJoin;
639
+ exports.validateOtp = validateOtp;
2
640
  //# sourceMappingURL=ct-platform-utils.cjs.js.map