@adobe/reactor-sdk
Version:
JavaScript SDK for the Reactor API
1 lines • 16.2 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","names":["_version","require","hosts","_interopRequireWildcard","auditEvents","builds","callbacks","companies","dataElements","environments","extensionPackages","extensions","heartbeat","libraries","profiles","properties","ruleComponents","rules","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","defaultReactorOptions","reactorUrl","enableLogging","removeTrailingSlash","str","endsWith","slice","bodyIsJson","httpResponse","jsonContentType","thisContentType","headers","includes","Reactor","constructor","accessToken","userOptions","options","baseUrl","customHeaders","reactorHeaders","console","info","Accept","Authorization","version","createReviseBody","resourceType","resourceId","data","id","attributes","type","meta","action","requestAndLog","url","requestInfo","requestData","response","fetch","toString","responseData","json","traceData","status","statusText","source","method","request","requestBody","responseBody","summary","ok","FetchError","debug","retryCount","maxRetries","requestBodyJson","JSON","stringify","body","error","retryAfter","retryAfterSeconds","parseInt","waitSeconds","waitMs","Promise","resolve","setTimeout","sendMultipartFile","fileObject","multipart","assign","path","queryParams","URL","entries","forEach","key","val","searchParams","append","post","patch","delete","exports","extractErrorDetails","errorList","errors","details","map","x","detail","filter","join","Error","whence","captureStackTrace","prototype","window"],"sources":["../../src/index.js"],"sourcesContent":["/*\nCopyright 2019 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport { version } from './version.js';\nimport * as hosts from './hosts.js';\nimport * as auditEvents from './audit-events.js';\nimport * as builds from './builds.js';\nimport * as callbacks from './callbacks.js';\nimport * as companies from './companies.js';\nimport * as dataElements from './data-elements.js';\nimport * as environments from './environments.js';\nimport * as extensionPackages from './extension-packages.js';\nimport * as extensions from './extensions.js';\nimport * as heartbeat from './heartbeat.js';\nimport * as libraries from './libraries.js';\nimport * as profiles from './profiles.js';\nimport * as properties from './properties.js';\nimport * as ruleComponents from './rule-components.js';\nimport * as rules from './rules.js';\n\nconst defaultReactorOptions = {\n reactorUrl: 'https://reactor.adobe.io',\n enableLogging: false\n};\n\nfunction removeTrailingSlash(str) {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n}\n\nfunction bodyIsJson(httpResponse) {\n const jsonContentType = 'application/vnd.api+json';\n const thisContentType = httpResponse.headers.get('content-type');\n return thisContentType && thisContentType.includes(jsonContentType);\n}\n\nexport default class Reactor {\n constructor(accessToken, userOptions = {}) {\n const options = {\n ...defaultReactorOptions,\n ...userOptions\n };\n this.baseUrl = removeTrailingSlash(options.reactorUrl);\n this.enableLogging = options.enableLogging;\n this.customHeaders = options.customHeaders || {};\n\n this.headers = {\n ...this.reactorHeaders(accessToken),\n ...this.customHeaders\n };\n if (this.enableLogging) console.info(`Using Reactor at ${this.baseUrl}`);\n }\n\n reactorHeaders(accessToken) {\n return {\n Accept: 'application/vnd.api+json;revision=1',\n 'Content-Type': 'application/vnd.api+json',\n Authorization: `Bearer ${accessToken}`,\n 'X-Api-Key': 'Activation-DTM',\n 'User-Agent': `adobe/reactor-sdk/javascript/${version}`\n };\n }\n\n createReviseBody(resourceType, resourceId) {\n return {\n data: {\n id: resourceId,\n attributes: {},\n type: resourceType,\n meta: {\n action: 'revise'\n }\n }\n };\n }\n\n async requestAndLog(url, requestInfo, requestData) {\n // requestData is requestInfo.body as JavaScript objects (not JSON)\n const response = await fetch(url.toString(), requestInfo);\n const responseData = bodyIsJson(response) ? await response.json() : null;\n\n const traceData = {\n // convenient human-readable summaries\n status: `${response.status} ${response.statusText}`, // eg '404 not found'\n source: `${requestInfo.method} ${url.toString()}`, // eg 'GET http://x.io/'\n // raw capture of all request and response data\n url: url,\n request: requestInfo,\n response: response,\n // non-JSON versions (i.e., as objects) of request and response bodies\n requestBody: requestData || {},\n responseBody: responseData || {}\n };\n const summary = `${traceData.status} <- ${traceData.source}`;\n if (!response.ok) {\n if (this.enableLogging) console.info('[Reactor SDK]', summary, traceData);\n throw new FetchError(traceData);\n }\n if (this.enableLogging) console.debug('[Reactor SDK]', summary, traceData);\n return responseData;\n }\n\n async request(method, url, requestData = null, retryCount = 0) {\n const maxRetries = 3;\n const requestBodyJson = requestData && JSON.stringify(requestData);\n const requestInfo = {\n method: method,\n headers: this.headers,\n body: requestBodyJson\n };\n\n try {\n return await this.requestAndLog(url, requestInfo, requestData);\n } catch (error) {\n // Retry on 429 (Too Many Requests) with respect to retry-after header\n if (\n error instanceof FetchError &&\n error.status === 429 &&\n retryCount < maxRetries\n ) {\n // Get retry-after header (in seconds)\n const retryAfter = error.traceData.response.headers.get('retry-after');\n const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : 5;\n // Add 1 second buffer as requested\n const waitSeconds = retryAfterSeconds + 1;\n const waitMs = waitSeconds * 1000;\n\n console.info(\n `[Blacksmith API] --------------- The API has asked us to wait ${waitSeconds} seconds before making calls again. ---------------`\n );\n\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n return await this.request(method, url, requestData, retryCount + 1);\n }\n throw error;\n }\n }\n\n async sendMultipartFile(method, url, fileObject) {\n const multipart = { 'Content-Type': 'multipart/form-data' };\n const requestInfo = {\n method: method,\n headers: Object.assign({}, this.headers, multipart),\n body: fileObject\n };\n return await this.requestAndLog(url, requestInfo, fileObject);\n }\n\n get(path, queryParams = {}) {\n const url = new URL(this.baseUrl + path);\n Object.entries(queryParams).forEach(([key, val]) =>\n url.searchParams.append(key, val)\n );\n return this.request('GET', url);\n }\n\n post(path, data) {\n return this.request('POST', this.baseUrl + path, data);\n }\n\n patch(path, data) {\n return this.request('PATCH', this.baseUrl + path, data);\n }\n\n delete(path, data) {\n return this.request('DELETE', this.baseUrl + path, data);\n }\n}\n\nfunction extractErrorDetails(traceData) {\n const errorList = traceData.responseBody.errors || [];\n const details = [traceData.response, ...errorList]\n .map((x) => x.detail)\n .filter((x) => typeof x !== 'undefined')\n .map((x) => `'${x}'`)\n .join('; also, ');\n return details !== '' ? ` (${details})` : '';\n}\n\nclass FetchError extends Error {\n constructor(traceData) {\n const status = traceData.status;\n const details = extractErrorDetails(traceData);\n const whence = ` on ${traceData.source}`;\n super(status + details + whence);\n\n if (Error.captureStackTrace) Error.captureStackTrace(this, FetchError);\n\n this.status = traceData.response.status;\n this.statusText = traceData.response.statusText;\n this.traceData = traceData;\n }\n}\n\nObject.assign(\n Reactor.prototype,\n auditEvents,\n builds,\n callbacks,\n companies,\n dataElements,\n environments,\n extensionPackages,\n extensions,\n heartbeat,\n hosts,\n libraries,\n profiles,\n properties,\n ruleComponents,\n rules\n);\n\n// Add version property to the prototype\nReactor.prototype.version = version;\n\nif (typeof window !== 'undefined') {\n window.Reactor = Reactor;\n}\n"],"mappings":"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","ignoreList":[]}