vtex
Version:
The platform for e-commerce apps
54 lines (53 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VTEXID = void 0;
const tslib_1 = require("tslib");
const api_1 = require("@vtex/api");
const querystring_1 = tslib_1.__importDefault(require("querystring"));
const storeUrl_1 = require("../../../storeUrl");
const IOClientFactory_1 = require("../IOClientFactory");
const featureFlagDecider_1 = require("../../../../modules/featureFlag/featureFlagDecider");
class VTEXID extends api_1.IOClient {
constructor(ioContext, opts) {
super(ioContext, {
timeout: VTEXID.DEFAULT_TIMEOUT,
retries: VTEXID.DEFAULT_RETRIES,
...opts,
baseURL: `https://${ioContext.account}.myvtex.com`,
});
}
static createClient(customContext = {}, customOptions = {}) {
return IOClientFactory_1.IOClientFactory.createClient(VTEXID, customContext, customOptions, { requireAuth: false });
}
static async invalidateBrowserAuthCookie(account) {
return featureFlagDecider_1.switchOpen(storeUrl_1.storeUrl({ account, addWorkspace: false, path: `${VTEXID.API_PATH_PREFIX}/pub/single-sign-out?scope=` }), { wait: false });
}
startToolbeltLogin({ secretHash, loopbackUrl }) {
const body = querystring_1.default.stringify({
secretHash,
loopbackUrl,
});
return this.http.post(`${VTEXID.TOOLBELT_API_PATH_PREFIX}/start`, body);
}
validateToolbeltLogin({ state, secret, ott }) {
const body = querystring_1.default.stringify({
state,
secret,
ott,
});
return this.http.post(`${VTEXID.TOOLBELT_API_PATH_PREFIX}/validate`, body);
}
invalidateToolbeltToken(token) {
return this.http.get(`/api/vtexid/pub/logout?scope=`, {
headers: {
Cookie: `${VTEXID.VTEX_ID_AUTH_COOKIE}=${token}`,
},
});
}
}
exports.VTEXID = VTEXID;
VTEXID.DEFAULT_TIMEOUT = 10000;
VTEXID.DEFAULT_RETRIES = 2;
VTEXID.API_PATH_PREFIX = '/api/vtexid';
VTEXID.TOOLBELT_API_PATH_PREFIX = `${VTEXID.API_PATH_PREFIX}/toolbelt`;
VTEXID.VTEX_ID_AUTH_COOKIE = 'VtexIdClientAutCookie';