diff --git a/dist/bud-provider.d.ts b/dist/bud-provider.d.ts index ab8f123..9c0eabe 100644 --- a/dist/bud-provider.d.ts +++ b/dist/bud-provider.d.ts @@ -25,7 +25,7 @@ type FullBudProviderOptions = { }; declare function BudProvider(this: any, options: FullBudProviderOptions): { exports: { - getTokens: () => Promise Promise; + loadTokens: () => Promise<{ + when: number; + refreshToken: any; + accessToken: any; + }>; getGateway: (spec: { redirect_url: string; clientid: string; diff --git a/dist/bud-provider.js b/dist/bud-provider.js index 78ba9ae..f60cb8a 100644 --- a/dist/bud-provider.js +++ b/dist/bud-provider.js @@ -106,7 +106,7 @@ function BudProvider(options) { const tid = args[1].headers['X-SenecaBudProvider-TraceID'] = (args[1].headers['X-SenecaBudProvider-TraceID'] || (traceid || seneca.util.Nid())); options.print.request && - console.log('BUDREQ', method, seneca.id, tid, phase, attempt, tokenState, refreshToken && refreshToken.substring(0, 8), accessToken && accessToken.substring(0, 8), JSI(statsCounters), JSI(args[0]), JSI(args[1])); + console.log('SP-BUDREQ', method, seneca.id, tid, phase, attempt, tokenState, refreshToken && refreshToken.substring(0, 8), accessToken && accessToken.substring(0, 8), JSI(statsCounters), JSI(args[0]), JSI(args[1])); } seneca.message('sys:provider,provider:bud,get:info', get_info); async function get_info(_msg) { @@ -123,7 +123,7 @@ function BudProvider(options) { return statsCounters; } function logstats(mark) { - console.log('BUDSTATS', mark, JSON.stringify(stats()).replace(/"/g, '')); + console.log('SP-BUDSTATS', mark, JSI(stats())); } const entity = { customer: { cmd: { load: {}, save: {} } }, @@ -416,7 +416,16 @@ function BudProvider(options) { options.debug && logstats('getGateway'); } } - async function getTokens() { + async function loadTokens() { + refreshToken = await options.store.loadToken('refresh'); + accessToken = await options.store.loadToken('access'); + return { + when: Date.now(), + refreshToken, + accessToken, + }; + } + async function requestTokens() { const prev = { refreshToken, accessToken, @@ -431,9 +440,9 @@ function BudProvider(options) { body: 'grant_type=client_credentials' }; statsCounters.refresh++; - options.debug && console.log('BUD-GT-REFRESH', tokenState); + options.debug && console.log('SP-BUD-GT-REFRESH', tokenState); let refreshResult = await origFetcher(options.url + 'v1/oauth/token', refreshConfig); - options.debug && console.log('BUD-GT-REFRESH-RESULT', refreshResult.status); + options.debug && console.log('SP-BUD-GT-REFRESH-RESULT', refreshResult.status); if (200 !== refreshResult.status) { throw new Error('bud-provider: refresh-token: status:' + refreshResult.status); } @@ -447,7 +456,7 @@ function BudProvider(options) { tokenState = 'refresh'; } isStart = false; - options.debug && console.log('BUD-GT-REFRESH-DONE', tokenState, (refreshToken || '').substring(0, 22)); + options.debug && console.log('SP-BUD-GT-REFRESH-DONE', tokenState, (refreshToken || '').substring(0, 22)); let accessConfig = { method: 'POST', headers: { @@ -458,9 +467,9 @@ function BudProvider(options) { body: `grant_type=refresh_token&refresh_token=${refreshToken}` }; statsCounters.access++; - options.debug && console.log('BUD-GT-ACCESS', tokenState); + options.debug && console.log('SP-BUD-GT-ACCESS', tokenState); let accessResult = await origFetcher(options.url + 'v1/oauth/token', accessConfig); - options.debug && console.log('BUD-GT-ACCESS-RESULT', accessResult.status); + options.debug && console.log('SP-BUD-GT-ACCESS-RESULT', accessResult.status); if (401 === accessResult.status) { refreshToken = null; tokenState = 'start'; @@ -476,7 +485,7 @@ function BudProvider(options) { config.headers['Authorization'] = authContent; config.headers['X-Client-Id'] = seneca.shared.clientid; tokenState = 'active'; - options.debug && console.log('BUD-GT-ACCESS-DONE', tokenState, (refreshToken || '').substring(0, 22), (accessToken || '').substring(0, 22)); + options.debug && console.log('SP-BUD-GT-ACCESS-DONE', tokenState, (refreshToken || '').substring(0, 22), (accessToken || '').substring(0, 22)); const current = { refreshToken, accessToken, @@ -494,7 +503,7 @@ function BudProvider(options) { seneca.util.Nid(); logreq(traceid, 'retry', (((_b = fetchspec === null || fetchspec === void 0 ? void 0 : fetchspec.options) === null || _b === void 0 ? void 0 : _b.method) || 'GET'), attempt, [fetchspec === null || fetchspec === void 0 ? void 0 : fetchspec.resource, fetchspec === null || fetchspec === void 0 ? void 0 : fetchspec.options]); options.debug && - console.log('BUDRETRY', traceid, attempt, response === null || response === void 0 ? void 0 : response.status, tokenState, error === null || error === void 0 ? void 0 : error.message); + console.log('SP-BUDRETRY', traceid, attempt, response === null || response === void 0 ? void 0 : response.status, tokenState, error === null || error === void 0 ? void 0 : error.message); options.debug && logstats('retryOn ' + traceid); if (error) { throw error; @@ -503,25 +512,25 @@ function BudProvider(options) { throw new Error('bud-provider: global retry limit reached: ' + retryCount); } if (5 <= attempt) { - options.debug && console.log('BUDRETRY-BAIL', traceid, attempt, response.status, tokenState); + options.debug && console.log('SP-BUDRETRY-BAIL', traceid, attempt, response.status, tokenState); return false; } if (500 <= response.status && attempt <= 3) { - options.debug && console.log('BUDRETRY-500', traceid, attempt, response.status, tokenState); + options.debug && console.log('SP-BUDRETRY-500', traceid, attempt, response.status, tokenState); return true; } if (401 === response.status) { - options.debug && console.log('BUDRETRY-401', traceid, attempt, response.status, tokenState); + options.debug && console.log('SP-BUDRETRY-401', traceid, attempt, response.status, tokenState); // Try to refresh the access token first. if ('active' === tokenState) { tokenState = 'refresh'; } try { - options.debug && console.log('BUDRETRY-TOKEN-STATE-TOP', traceid, attempt, tokenState); + options.debug && console.log('SP-BUDRETRY-TOKEN-STATE-TOP', traceid, attempt, tokenState); if ('active' !== tokenState && 'refresh' !== tokenState) { tokenState = 'request'; let lastRefreshToken = await options.store.loadToken('refresh'); - options.debug && console.log('BUDRETRY-LAST-REFRESH', traceid, attempt, lastRefreshToken, refreshToken); + options.debug && console.log('SP-BUDRETRY-LAST-REFRESH', traceid, attempt, lastRefreshToken, refreshToken); if ( // Very first time, try to load the current refreshtoken isStart @@ -531,7 +540,7 @@ function BudProvider(options) { lastRefreshToken != refreshToken)) { refreshToken = lastRefreshToken; statsCounters.loadrefresh++; - options.debug && console.log('BUDRETRY-USING-LAST-REFRESH', traceid, attempt, tokenState); + options.debug && console.log('SP-BUDRETRY-USING-LAST-REFRESH', traceid, attempt, tokenState); } else { let refreshConfig = { @@ -543,9 +552,9 @@ function BudProvider(options) { body: 'grant_type=client_credentials' }; statsCounters.refresh++; - options.debug && console.log('BUDRETRY-REFRESH', traceid, attempt, response.status, tokenState); + options.debug && console.log('SP-BUDRETRY-REFRESH', traceid, attempt, response.status, tokenState); let refreshResult = await origFetcher(options.url + 'v1/oauth/token', refreshConfig); - options.debug && console.log('BUDRETRY-REFRESH-RESULT', traceid, refreshResult.status); + options.debug && console.log('SP-BUDRETRY-REFRESH-RESULT', traceid, refreshResult.status); if (200 !== refreshResult.status) { throw new Error('bud-provider: refresh-token: status:' + refreshResult.status); } @@ -650,7 +659,8 @@ function BudProvider(options) { } return { exports: { - getTokens, + requestTokens, + loadTokens, getGateway, sdk: () => null, stats: () => statsCounters, @@ -675,7 +685,7 @@ function BudProvider(options) { } function JSI(o) { try { - return (JSON.stringify(o) || '').replace(/"/g, ''); + return (JSON.stringify(o) || '').replace(/["\n]/g, ''); } catch (e) { return o + ' JSI:' + e.message; diff --git a/dist/bud-provider.js.map b/dist/bud-provider.js.map index 3e9e365..e4322f2 100644 --- a/dist/bud-provider.js.map +++ b/dist/bud-provider.js.map @@ -1 +1 @@ -{"version":3,"file":"bud-provider.js","sourceRoot":"","sources":["../src/bud-provider.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bud-provider.js","sourceRoot":"","sources":["../src/bud-provider.ts"],"names":[],"mappings":";AAAA,qEAAqE;;;;;AAGrE,mEAAiC;AAgCjC,mBAAmB;AACnB,MAAM,QAAQ,GAAuB;IAEnC,2BAA2B;IAC3B,GAAG,EAAE,oCAAoC;IAEzC,0CAA0C;IAC1C,KAAK,EAAE,CAAC,WAAW,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzD,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IAEZ,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;KACf;IAED,uBAAuB;IACvB,KAAK,EAAE;QACL,MAAM,EAAE;YACN,UAAU,EAAE,GAAG;SAChB;KACF;IAED,MAAM,EAAE,EAAE;IAEV,IAAI,EAAE;QACJ,OAAO,EAAE;YACP,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,GAAG;SACd;KACF;IAGD,KAAK,EAAE;QACL,KAAK,EAAE,GAAG,EAAE,oCAAoC;KACjD;IAGD,KAAK,EAAE;QACL,SAAS,EAAE,KAAK,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI;QACtD,SAAS,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE,CAAC,IAAI;KACzC;CACF,CAAA;AAGD,SAAS,WAAW,CAAY,OAA+B;IAC7D,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAA;IAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAErB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC;QACnC,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC,CAAA;IAGH,MAAM,oBAAoB,GAAG,IAAI,CAAC;QAChC,eAAe,EAAE,MAAM;QACvB,mBAAmB,EAAE,MAAM;KAC5B,CAAC,CAAA;IAEF,MAAM,0BAA0B,GAAG,IAAI,CAAC;QACtC,eAAe,EAAE,MAAM;KACxB,CAAC,CAAA;IAEF,MAAM,2BAA2B,GAAG,IAAI,CAAC;QACvC,aAAa,EAAE,MAAM;QACrB,eAAe,EAAE,MAAM;QACvB,mBAAmB,EAAE,MAAM;KAC5B,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC;QAC9B,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,MAAM;KACtB,CAAC,CAAA;IAGF,2BAA2B;IAC3B,MAAM,MAAM,GAAQ;QAClB,OAAO,EAAE,EAAE;KACZ,CAAA;IAED,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,CAAC,EAAG,iCAAiC;QAC9C,MAAM,EAAE,CAAC,EAAI,gCAAgC;QAC7C,WAAW,EAAE,CAAC,EAAE,+BAA+B;QAC/C,UAAU,EAAE,CAAC,EAAE,8BAA8B;QAC7C,GAAG,EAAE,CAAC,EAAO,oBAAoB;QACjC,GAAG,EAAE,CAAC,EAAO,+BAA+B;QAC5C,KAAK,EAAE,CAAC,EAAK,eAAe;QAC5B,QAAQ,EAAE,CAAC,EAAE,sBAAsB;KACpC,CAAA;IAGD,IAAI,YAAiB,CAAA;IACrB,IAAI,WAAgB,CAAA;IACpB,IAAI,UAAU,GAAwD,MAAM,CAAA;IAC5E,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAEnD,MAAM,EACJ,OAAO,EACP,GAAG,EACH,IAAI,EACJ,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,GAAG,SAAS,CAAC;QACZ,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM;QACN,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,OAAO;gBACP,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM;aACxB;SACF;KACF,CAAC,CAAA;IAGF,MAAM,MAAM,GAAG,KAAK,WAAU,OAAe,EAAE,GAAG,IAAW;QAC3D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACvC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACrB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,WAAU,OAAe,EAAE,GAAG,IAAW;QAC5D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACxC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;IAGD,SAAS,MAAM,CAAC,OAAe,EAAE,KAAa,EAAE,MAAc,EAAE,OAAe,EAAE,IAAW;QAC1F,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;YACxD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACpF,OAAO,CAAC,KAAK,CAAC,OAAO;YACnB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EACzE,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5C,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1C,GAAG,CAAC,aAAa,CAAC,EAClB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACb,CAAA;IACL,CAAC;IAGD,MAAM,CAAC,OAAO,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAA;IAE9D,KAAK,UAAU,QAAQ,CAAY,IAAS;QAC1C,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,sBAAG,CAAC,OAAO;YACpB,GAAG,EAAE;gBACH,IAAI,EAAE,KAAK;aACZ;SACF,CAAA;IACH,CAAC;IAGD,SAAS,KAAK;QACZ,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,SAAS,QAAQ,CAAC,IAAY;QAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAGD,MAAM,MAAM,GAAQ;QAClB,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QACzC,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QACjC,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QACxC,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QAElC,wDAAwD;QACxD,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;KAC3B,CAAA;IAGD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QAC7B,KAAK,WAAqB,MAAW,EAAE,GAAQ;;YAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAA;YAC5B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;YAEb,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBAEnB,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;gBAEhD,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAA;gBACxE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACvB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;gBAEf,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,GAAG,GAAG,MAAA,CAAC,CAAC,QAAQ,0CAAE,QAAQ,CAAA;gBAE9B,IAAI,GAAG,MAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE,CAAC;oBACxB,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACxB,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC,CAAA;IAGH,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QAC7B,KAAK,WAAqB,MAAW,EAAE,GAAQ;;YAC7C,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,IAAI,IAAI,GAAG;oBACT,gBAAgB,EAAE;wBAChB,GAAG,CAAC,CAAA,MAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,QAAQ,0CAAE,IAAI,KAAI,EAAE,CAAC;wBACzC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1B;iBACF,CAAA;gBAED,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;gBAEhD,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,EAAE;oBAClE,IAAI;iBACL,CAAC,CAAA;gBAEF,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACvB,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,CAAA;gBAEhC,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC,CAAA;IAGH,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QAC/B,KAAK,WAAqB,MAAW,EAAE,GAAQ;;YAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAA;YAC5B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;YACb,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;YAE7B,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,IAAI,OAAO,GAAG,0BAA0B,CAAC;oBACvC,eAAe,EAAE,UAAU;iBAC5B,CAAC,CAAA;gBAEF,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;gBAE/C,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,EAAE;oBACvE,OAAO;iBACR,CAAC,CAAA;gBAEF,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACvB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;gBAEf,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,GAAG,GAAG,MAAA,CAAC,CAAC,QAAQ,0CAAE,QAAQ,CAAA;gBAE9B,IAAI,GAAG,MAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE,CAAC;oBACxB,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACxB,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC,CAAA;IAGH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QAC5B,KAAK,WAAqB,MAAW,EAAE,GAAQ;;YAC7C,IAAI,CAAC,GAAG,kBAAkB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;YACb,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;YAC7B,IAAI,cAAc,GAAG,CAAC,CAAC,cAAc,CAAA;YAErC,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,IAAI,OAAO,GAAG,oBAAoB,CAAC;oBACjC,eAAe,EAAE,UAAU;oBAC3B,mBAAmB,EAAE,cAAc;iBACpC,CAAC,CAAA;gBAEF,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;gBAE/C,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE;oBACtE,OAAO;iBACR,CAAC,CAAA;gBAEF,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACvB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;gBAEf,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;YACxB,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,GAAG,GAAG,MAAA,CAAC,CAAC,QAAQ,0CAAE,QAAQ,CAAA;gBAE9B,IAAI,GAAG,MAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE,CAAC;oBACxB,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACxB,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC,CAAA;IAGH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QAC5B,KAAK,WAAqB,MAAW,EAAE,GAAQ;;YAC7C,IAAI,CAAC,GAAG,kBAAkB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAChD,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;YAC7B,IAAI,cAAc,GAAG,CAAC,CAAC,cAAc,CAAA;YAErC,OAAO,CAAC,CAAC,UAAU,CAAA;YACnB,OAAO,CAAC,CAAC,cAAc,CAAA;YAEvB,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,IAAI,OAAO,GAAG,oBAAoB,CAAC;oBACjC,eAAe,EAAE,UAAU;oBAC3B,mBAAmB,EAAE,cAAc;iBACpC,CAAC,CAAA;gBAEF,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;gBAE/C,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAAE;oBACpE,OAAO;iBACR,CAAC,CAAA;gBAEF,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAA;gBACxB,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;oBACrC,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,UAAU,CAAA;oBACvB,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;gBAEF,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,GAAG,GAAG,MAAA,CAAC,CAAC,QAAQ,0CAAE,QAAQ,CAAA;gBAE9B,IAAI,GAAG,MAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE,CAAC;oBACxB,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACxB,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC,CAAA;IAIH,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QAChC,KAAK,WAAqB,MAAW,EAAE,GAAQ;;YAC7C,IAAI,CAAC,GAAG,kBAAkB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAChD,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;YAC7B,IAAI,cAAc,GAAG,CAAC,CAAC,cAAc,CAAA;YAErC,OAAO,CAAC,CAAC,UAAU,CAAA;YACnB,OAAO,CAAC,CAAC,cAAc,CAAA;YAEvB,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,IAAI,OAAO,GAAG,oBAAoB,CAAC;oBACjC,eAAe,EAAE,UAAU;oBAC3B,mBAAmB,EAAE,cAAc;iBACpC,CAAC,CAAA;gBAEF,IAAI,QAAQ,GAAU,EAAE,CAAA;gBACxB,IAAI,MAAM,GAAG,IAAI,CAAA;gBACjB,IAAI,EAAE,GAAG,CAAC,CAAA;gBACV,IAAI,aAAa,GAA8B,IAAI,CAAA;gBACnD,MAAM,QAAQ,GAAG,IAAI,CAAA;gBAErB,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;gBAEnD,OAAO,MAAM,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;oBAC/B,IAAI,aAAa,EAAE,CAAC;wBAClB,CAAC,CAAC,UAAU,GAAG,aAAa,CAAA;oBAC9B,CAAC;oBAED,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE;wBACxE,OAAO;qBACR,CAAC,CAAA;oBAEF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAErC,EAAE,EAAE,CAAA;oBAEJ,aAAa,GAAG,MAAA,IAAI,CAAC,QAAQ,0CAAE,eAAe,CAAA;oBAE9C,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;wBAC1B,MAAM,GAAG,KAAK,CAAA;oBAChB,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;oBACrC,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,UAAU,CAAA;oBACvB,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;gBAEF,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,GAAG,GAAG,MAAA,CAAC,CAAC,QAAQ,0CAAE,QAAQ,CAAA;gBAE9B,IAAI,GAAG,MAAK,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE,CAAC;oBACxB,aAAa,CAAC,QAAQ,EAAE,CAAA;oBACxB,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAA;YAChD,CAAC;QACH,CAAC,CAAA;IAGH,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;QACxB,KAAK,WAAqB,MAAW,EAAE,GAAQ;YAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAA;YAE5B,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,EAAE,CAAA;gBAEnB,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvC,MAAM,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;gBAE3C,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,CAAA;gBACzE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;gBACvB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;oBACrC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAA;oBAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;gBAEF,aAAa,CAAC,GAAG,EAAE,CAAA;gBACnB,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,OAAO,CAAM,EAAE,CAAC;gBACd,aAAa,CAAC,KAAK,EAAE,CAAA;gBACrB,MAAM,CAAC,CAAA;YACT,CAAC;oBACO,CAAC;gBACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAA;IAGH,aAAa,CAAC,IAAI,EAAE;QAClB,QAAQ,EAAE;YACR,IAAI,EAAE,KAAK;SACZ;QACD,MAAM;KACP,CAAC,CAAA;IAGF,KAAK,UAAU,UAAU,CAAC,IAOzB;QACC,IAAI,CAAC;YACH,aAAa,CAAC,GAAG,EAAE,CAAA;YACnB,IAAI,OAAO,GAAG,2BAA2B,CAAC;gBACxC,aAAa,EAAE,IAAI,CAAC,QAAQ;gBAC5B,eAAe,EAAE,IAAI,CAAC,UAAU;gBAChC,mBAAmB,EAAE,IAAI,CAAC,cAAc;aACzC,CAAC,CAAA;YAEF,IAAI,IAAI,GAAG;gBACT,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;gBAC7E,0BAA0B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aAC3E,CAAA;YAED,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YAEvC,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,2CAA2C,CAAC,EAAE;gBAC/E,OAAO;gBACP,IAAI;aACL,CAAC,CAAA;YAEF,aAAa,CAAC,GAAG,EAAE,CAAA;YACnB,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,OAAO,CAAM,EAAE,CAAC;YACd,aAAa,CAAC,KAAK,EAAE,CAAA;YACrB,MAAM,CAAC,CAAA;QACT,CAAC;gBACO,CAAC;YACP,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAID,KAAK,UAAU,UAAU;QACvB,YAAY,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACvD,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACrD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;YAChB,YAAY;YACZ,WAAW;SACZ,CAAA;IACH,CAAC;IAGD,KAAK,UAAU,aAAa;QAC1B,MAAM,IAAI,GAAG;YACX,YAAY;YACZ,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;SACpB,CAAA;QAED,IAAI,aAAa,GAAG;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;gBAClD,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,+BAA+B;SACtC,CAAA;QAED,aAAa,CAAC,OAAO,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;QAE7D,IAAI,aAAa,GACf,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,gBAAgB,EAAE,aAAa,CAAC,CAAA;QAElE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;QAE9E,IAAI,GAAG,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QAChF,CAAC;QAED,IAAI,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;QAE5C,yBAAyB;QACzB,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAA;QAC7C,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAEtD,4BAA4B;QAC5B,WAAW,GAAG,IAAI,CAAA;QAElB,IAAI,IAAI,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YACpC,UAAU,GAAG,SAAS,CAAA;QACxB,CAAC;QAED,OAAO,GAAG,KAAK,CAAA;QAEf,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,EAC/D,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAExC,IAAI,YAAY,GAAG;YACjB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;gBAClD,cAAc,EAAE,mCAAmC;gBACnD,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;aACtC;YACD,IAAI,EAAE,0CAA0C,YAAY,EAAE;SAC/D,CAAA;QAED,aAAa,CAAC,MAAM,EAAE,CAAA;QACtB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;QAE5D,IAAI,YAAY,GACd,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,gBAAgB,EAAE,YAAY,CAAC,CAAA;QAEjE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;QAE5E,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YAChC,YAAY,GAAG,IAAI,CAAA;YACnB,UAAU,GAAG,OAAO,CAAA;YACpB,OAAO,IAAI,CAAA;QACb,CAAC;aACI,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9E,CAAC;QAED,IAAI,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;QAC1C,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAA;QAE1C,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;QAEpD,IAAI,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;QAEzC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,CAAA;QAC7C,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAA;QAEtD,UAAU,GAAG,QAAQ,CAAA;QAErB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,EAC9D,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EACrC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,CAAA;QAED,MAAM,OAAO,GAAG;YACd,YAAY;YACZ,WAAW;YACX,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;SACpB,CAAA;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;YAChB,IAAI;YACJ,OAAO;SACR,CAAA;IACH,CAAC;IAGD,KAAK,UAAU,OAAO,CACpB,OAAe,EAAE,KAAU,EAAE,QAAa,EAC1C,SAA0C;;QAE1C,MAAM,OAAO,GAAG,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,6BAA6B,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QAEnB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,MAAM,KAAI,KAAK,CAAC,EAAE,OAAO,EACrE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,CAAC,CAAA;QAE5C,OAAO,CAAC,KAAK;YACX,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,UAAU,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAA;QAC5F,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,CAAA;QAE/C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,UAAU,CAAC,CAAA;QAC5E,CAAC;QAED,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAC/F,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAC9F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAE9F,yCAAyC;YACzC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,UAAU,GAAG,SAAS,CAAA;YACxB,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;gBAEzF,IAAI,QAAQ,KAAM,UAAkB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;oBACjE,UAAU,GAAG,SAAS,CAAA;oBAEtB,IAAI,gBAAgB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;oBAC/D,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAA;oBAE1G;oBACE,wDAAwD;oBACxD,OAAO;2BACJ,CAAC,IAAI,IAAI,gBAAgB,IAAI,EAAE,IAAI,gBAAgB;4BACpD,IAAI,IAAI,YAAY,IAAI,EAAE,IAAI,YAAY;4BAE1C,4CAA4C;4BAC5C,gBAAgB,IAAI,YAAY,CACjC,EAAE,CAAC;wBACJ,YAAY,GAAG,gBAAgB,CAAA;wBAC/B,aAAa,CAAC,WAAW,EAAE,CAAA;wBAC3B,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;oBAC9F,CAAC;yBACI,CAAC;wBAEJ,IAAI,aAAa,GAAG;4BAClB,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE;gCACP,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;gCAClD,cAAc,EAAE,mCAAmC;6BACpD;4BACD,IAAI,EAAE,+BAA+B;yBACtC,CAAA;wBAED,aAAa,CAAC,OAAO,EAAE,CAAA;wBACvB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;wBAElG,IAAI,aAAa,GACf,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,gBAAgB,EAAE,aAAa,CAAC,CAAA;wBAElE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;wBAEzF,IAAI,GAAG,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;4BACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;wBAChF,CAAC;wBAED,IAAI,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;wBAE5C,yBAAyB;wBACzB,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAA;wBAC7C,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;wBAEtD,4BAA4B;wBAC5B,WAAW,GAAG,IAAI,CAAA;oBACpB,CAAC;oBAED,IAAI,IAAI,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;wBACpC,UAAU,GAAG,SAAS,CAAA;oBACxB,CAAC;oBAED,OAAO,GAAG,KAAK,CAAA;oBAEf,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,OAAO,EAAE,UAAU,EACvE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC1C,CAAC;gBAED,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;oBAE7B,IAAI,eAAe,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;oBAC7D,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAA;oBAEpG,IACE,IAAI,IAAI,eAAe,IAAI,EAAE,IAAI,eAAe;wBAChD,IAAI,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW;wBACxC,eAAe,IAAI,WAAW,EAAE,CAAC;wBACjC,WAAW,GAAG,eAAe,CAAA;wBAC7B,aAAa,CAAC,UAAU,EAAE,CAAA;wBAC1B,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;oBAC1F,CAAC;yBACI,CAAC;wBACJ,IAAI,YAAY,GAAG;4BACjB,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE;gCACP,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;gCAClD,cAAc,EAAE,mCAAmC;gCACnD,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;6BACtC;4BACD,IAAI,EAAE,0CAA0C,YAAY,EAAE;yBAC/D,CAAA;wBAED,aAAa,CAAC,MAAM,EAAE,CAAA;wBACtB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;wBAE9F,IAAI,YAAY,GACd,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,gBAAgB,EAAE,YAAY,CAAC,CAAA;wBAEjE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;wBAEpF,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;4BAChC,YAAY,GAAG,IAAI,CAAA;4BACnB,UAAU,GAAG,OAAO,CAAA;4BACpB,OAAO,IAAI,CAAA;wBACb,CAAC;6BACI,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;4BACrC,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;wBAC9E,CAAC;wBAED,IAAI,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;wBAC1C,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAA;wBAE1C,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;oBACtD,CAAC;oBAED,IAAI,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAA;oBACxC,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,CAAA;oBAEhC,IAAI,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;oBAEzC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,CAAA;oBACpD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,CAAA;oBAE7C,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAA;oBAC7D,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAA;oBAEtD,UAAU,GAAG,QAAQ,CAAA;oBAErB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,EAAE,UAAU,EACtE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EACrC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CACrC,CAAA;oBAED,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;YACD,OAAO,CAAC,EAAE,CAAC;gBACT,UAAU,GAAG,OAAO,CAAA;gBACpB,MAAM,CAAC,CAAA;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,CAAC,OAAO,CAAC,KAAK;QAClB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CACvB,sCAAsC,CACvC,CAAA;QAED,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAA;QACxC,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAA;QAEhD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAG/B,IAAI,KAAK,GAAG,QAAQ,GAAG,GAAG,GAAG,YAAY,CAAA;QACzC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC;YACvC,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE,QAAQ,GAAG,IAAI;SAC/B,CAAC,CAAA;IAEJ,CAAC,CAAC,CAAA;IAGF,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,OAAe;QAC1D,MAAM,iBAAiB,GAAG,UAAU,CAAA;QACpC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QAE7B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,UAAU,GAAG,OAAO,CAAA;YACpB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAA;QACtF,CAAC;aAEI,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,OACI,CAAC,QAAQ,KAAM,UAAqB,CAAC;gBACvC,CAAC,GAAG,IAAI;gBACR,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EACjD,CAAC,EAAE,EACH,CAAC;gBACD,OAAO,CAAC,KAAK;oBACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EACnE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;YACxE,CAAC;YAED,OAAO,CAAC,KAAK;gBACX,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAClE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EACjF,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;IACvB,CAAC;IAGD,OAAO;QACL,OAAO,EAAE;YACP,aAAa;YACb,UAAU;YACV,UAAU;YACV,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI;YACf,KAAK,EAAE,GAAG,EAAE,CAAC,aAAa;YAC1B,IAAI,EAAE;gBACJ,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU;gBAC/B,aAAa,EAAE,CAAC,YAA+B,EAAE,EAAE,CAAC,UAAU,GAAG,YAAY;gBAC7E,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE;oBACzB,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;gBACnF,CAAC;gBACD,QAAQ,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;oBACxC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBACvB,YAAY,GAAG,KAAK,CAAA;oBACtB,CAAC;yBACI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBAC3B,WAAW,GAAG,KAAK,CAAA;wBACnB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,KAAK,CAAA;oBACrD,CAAC;gBACH,CAAC;aACF;SACF;KACF,CAAA;AACH,CAAC;AAGD,SAAS,GAAG,CAAC,CAAM;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,CAAM,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;IAChC,CAAC;AACH,CAAC;AAGD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAExC,kBAAe,WAAW,CAAA;AAE1B,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,WAAW,CAAA;AAC9B,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index f23fa04..dbefacf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@seneca/bud-provider", - "version": "0.8.0", + "version": "0.9.0", "main": "dist/bud-provider.js", "type": "commonjs", "types": "dist/bud-provider.d.ts", diff --git a/src/bud-provider.ts b/src/bud-provider.ts index 92eb93c..78fbd9e 100644 --- a/src/bud-provider.ts +++ b/src/bud-provider.ts @@ -173,7 +173,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { const tid = args[1].headers['X-SenecaBudProvider-TraceID'] = (args[1].headers['X-SenecaBudProvider-TraceID'] || (traceid || seneca.util.Nid())) options.print.request && - console.log('BUDREQ', method, seneca.id, tid, phase, attempt, tokenState, + console.log('SP-BUDREQ', method, seneca.id, tid, phase, attempt, tokenState, refreshToken && refreshToken.substring(0, 8), accessToken && accessToken.substring(0, 8), JSI(statsCounters), @@ -202,7 +202,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } function logstats(mark: string) { - console.log('BUDSTATS', mark, JSON.stringify(stats()).replace(/"/g, '')) + console.log('SP-BUDSTATS', mark, JSI(stats())) } @@ -574,7 +574,19 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } - async function getTokens() { + + async function loadTokens() { + refreshToken = await options.store.loadToken('refresh') + accessToken = await options.store.loadToken('access') + return { + when: Date.now(), + refreshToken, + accessToken, + } + } + + + async function requestTokens() { const prev = { refreshToken, accessToken, @@ -591,12 +603,12 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } statsCounters.refresh++ - options.debug && console.log('BUD-GT-REFRESH', tokenState) + options.debug && console.log('SP-BUD-GT-REFRESH', tokenState) let refreshResult = await origFetcher(options.url + 'v1/oauth/token', refreshConfig) - options.debug && console.log('BUD-GT-REFRESH-RESULT', refreshResult.status) + options.debug && console.log('SP-BUD-GT-REFRESH-RESULT', refreshResult.status) if (200 !== refreshResult.status) { throw new Error('bud-provider: refresh-token: status:' + refreshResult.status) @@ -617,7 +629,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { isStart = false - options.debug && console.log('BUD-GT-REFRESH-DONE', tokenState, + options.debug && console.log('SP-BUD-GT-REFRESH-DONE', tokenState, (refreshToken || '').substring(0, 22)) let accessConfig = { @@ -631,12 +643,12 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } statsCounters.access++ - options.debug && console.log('BUD-GT-ACCESS', tokenState) + options.debug && console.log('SP-BUD-GT-ACCESS', tokenState) let accessResult = await origFetcher(options.url + 'v1/oauth/token', accessConfig) - options.debug && console.log('BUD-GT-ACCESS-RESULT', accessResult.status) + options.debug && console.log('SP-BUD-GT-ACCESS-RESULT', accessResult.status) if (401 === accessResult.status) { refreshToken = null @@ -659,7 +671,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { tokenState = 'active' - options.debug && console.log('BUD-GT-ACCESS-DONE', tokenState, + options.debug && console.log('SP-BUD-GT-ACCESS-DONE', tokenState, (refreshToken || '').substring(0, 22), (accessToken || '').substring(0, 22), ) @@ -689,7 +701,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { [fetchspec?.resource, fetchspec?.options]) options.debug && - console.log('BUDRETRY', traceid, attempt, response?.status, tokenState, error?.message) + console.log('SP-BUDRETRY', traceid, attempt, response?.status, tokenState, error?.message) options.debug && logstats('retryOn ' + traceid) if (error) { @@ -701,17 +713,17 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } if (5 <= attempt) { - options.debug && console.log('BUDRETRY-BAIL', traceid, attempt, response.status, tokenState) + options.debug && console.log('SP-BUDRETRY-BAIL', traceid, attempt, response.status, tokenState) return false } if (500 <= response.status && attempt <= 3) { - options.debug && console.log('BUDRETRY-500', traceid, attempt, response.status, tokenState) + options.debug && console.log('SP-BUDRETRY-500', traceid, attempt, response.status, tokenState) return true } if (401 === response.status) { - options.debug && console.log('BUDRETRY-401', traceid, attempt, response.status, tokenState) + options.debug && console.log('SP-BUDRETRY-401', traceid, attempt, response.status, tokenState) // Try to refresh the access token first. if ('active' === tokenState) { @@ -719,13 +731,13 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } try { - options.debug && console.log('BUDRETRY-TOKEN-STATE-TOP', traceid, attempt, tokenState) + options.debug && console.log('SP-BUDRETRY-TOKEN-STATE-TOP', traceid, attempt, tokenState) if ('active' !== (tokenState as any) && 'refresh' !== tokenState) { tokenState = 'request' let lastRefreshToken = await options.store.loadToken('refresh') - options.debug && console.log('BUDRETRY-LAST-REFRESH', traceid, attempt, lastRefreshToken, refreshToken) + options.debug && console.log('SP-BUDRETRY-LAST-REFRESH', traceid, attempt, lastRefreshToken, refreshToken) if ( // Very first time, try to load the current refreshtoken @@ -738,7 +750,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { )) { refreshToken = lastRefreshToken statsCounters.loadrefresh++ - options.debug && console.log('BUDRETRY-USING-LAST-REFRESH', traceid, attempt, tokenState) + options.debug && console.log('SP-BUDRETRY-USING-LAST-REFRESH', traceid, attempt, tokenState) } else { @@ -752,12 +764,12 @@ function BudProvider(this: any, options: FullBudProviderOptions) { } statsCounters.refresh++ - options.debug && console.log('BUDRETRY-REFRESH', traceid, attempt, response.status, tokenState) + options.debug && console.log('SP-BUDRETRY-REFRESH', traceid, attempt, response.status, tokenState) let refreshResult = await origFetcher(options.url + 'v1/oauth/token', refreshConfig) - options.debug && console.log('BUDRETRY-REFRESH-RESULT', traceid, refreshResult.status) + options.debug && console.log('SP-BUDRETRY-REFRESH-RESULT', traceid, refreshResult.status) if (200 !== refreshResult.status) { throw new Error('bud-provider: refresh-token: status:' + refreshResult.status) @@ -915,7 +927,8 @@ function BudProvider(this: any, options: FullBudProviderOptions) { return { exports: { - getTokens, + requestTokens, + loadTokens, getGateway, sdk: () => null, stats: () => statsCounters, @@ -942,7 +955,7 @@ function BudProvider(this: any, options: FullBudProviderOptions) { function JSI(o: any) { try { - return (JSON.stringify(o) || '').replace(/"/g, '') + return (JSON.stringify(o) || '').replace(/["\n]/g, '') } catch (e: any) { return o + ' JSI:' + e.message diff --git a/test/bud-provider.test.js b/test/bud-provider.test.js index 7dbfdef..fa82fb6 100644 --- a/test/bud-provider.test.js +++ b/test/bud-provider.test.js @@ -38,13 +38,13 @@ describe('bud-provider', () => { }) - test('getTokens', async () => { + test('requestTokens', async () => { if (null == Config) return; const seneca = await makeSeneca({debug:true, print:{request:true}}) - const getTokens = seneca.export('BudProvider/getTokens') + const requestTokens = seneca.export('BudProvider/requestTokens') - const tokens = await getTokens() + const tokens = await requestTokens() console.dir(tokens,{depth:null}) expect(tokens.when).toBeDefined() @@ -56,7 +56,7 @@ describe('bud-provider', () => { const seneca = await makeSeneca({debug:true, print:{request:true}}) - seneca.entity("provider/bud/obp").list$() + // seneca.entity("provider/bud/obp").list$() const list = await seneca.entity("provider/bud/obp").list$() // console.log(list) @@ -233,6 +233,9 @@ describe('bud-provider', () => { }) console.log('PERSIST STATS', seneca.export('BudProvider/stats')()) + + const loadTokens = seneca.export('BudProvider/loadTokens') + console.log('loadTokens', await loadTokens()) }, 22222)