UNPKG

@codesandbox/api

Version:
104 lines 4.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CodeSandboxApi = exports.ApiResponseError = exports.gql = exports.rest = void 0; const tslib_1 = require("tslib"); const universal_cookie_1 = tslib_1.__importDefault(require("universal-cookie")); const GQLApi_1 = require("./GQLApi"); const RESTApi_1 = require("./RESTApi"); const ServerApi_1 = require("./ServerApi"); const SessionApi_1 = require("./SessionApi"); const utils_1 = require("./utils"); exports.rest = tslib_1.__importStar(require("./RESTTypes")); exports.gql = tslib_1.__importStar(require("./generated_gql")); let globalSession; var utils_2 = require("./utils"); Object.defineProperty(exports, "ApiResponseError", { enumerable: true, get: function () { return utils_2.ApiResponseError; } }); class CodeSandboxApi { constructor(options) { const baseUrl = options.apiUrl; const apiVersion = options.apiVersion || "v1"; const baseRequestOptions = { clientType: options.clientType, onRequest: utils_1.onRequest, getBearerToken: () => this.session.bearerToken, onResponse: (response) => { const cookies = new universal_cookie_1.default(response.cookies); if (cookies.get("signedIn") === "false") { this.session.unauthorizedResponseReceived(); } }, }; const rootRequest = (0, utils_1.createRESTRequester)(Object.assign(Object.assign({}, baseRequestOptions), { baseUrl: baseUrl })); const apiRequest = (0, utils_1.createRESTRequester)(Object.assign(Object.assign({}, baseRequestOptions), { baseUrl: baseUrl + "/api/" + apiVersion })); this.rootApiRequest = (0, utils_1.createRESTRequester)(Object.assign(Object.assign({}, baseRequestOptions), { baseUrl: baseUrl + "/api" })); this.server = new ServerApi_1.ServerApi({ clientType: options.clientType, }); // Allows multiple instances of CodeSandboxApi with shared // session if (globalSession) { this.session = globalSession; } else { this.session = new SessionApi_1.SessionApi({ baseUrl, apiRequest, rootApiRequest: this.rootApiRequest, rootRequest, apiVersion, user: options.user, useCliAuthentication: options.useCliAuthentication, }); } this.gql = new GQLApi_1.GQLApi({ apiUrl: options.apiUrl, request: this.rootApiRequest, session: this.session, }); this.rest = new RESTApi_1.RESTApi(apiRequest); } createQueryPath(path, query) { if (!query) { return path; } const queryString = Object.keys(query) .map((key) => `${key}=${query[key]}`) .join("&"); if (queryString) { return `${path}?${queryString}`; } return path; } /** * Do a generic GET request to the API */ get(options) { return this.rootApiRequest(Object.assign(Object.assign({ method: "GET" }, options), { path: this.createQueryPath(options.path, options.query) })); } /** * Do a generic POST request to the API */ post(options) { return this.rootApiRequest(Object.assign(Object.assign({ method: "POST" }, options), { path: this.createQueryPath(options.path, options.query) })); } /** * Do a generic PUT request to the API */ put(options) { return this.rootApiRequest(Object.assign(Object.assign({ method: "PUT" }, options), { path: this.createQueryPath(options.path, options.query) })); } /** * Do a generic PATCH request to the API */ patch(options) { return this.rootApiRequest(Object.assign(Object.assign({ method: "PATCH" }, options), { path: this.createQueryPath(options.path, options.query) })); } /** * Do a generic DELETE request to the API */ delete(options) { return this.rootApiRequest(Object.assign(Object.assign({ method: "DELETE" }, options), { path: this.createQueryPath(options.path, options.query) })); } } exports.CodeSandboxApi = CodeSandboxApi; //# sourceMappingURL=index.js.map