@codesandbox/api
Version:
The CodeSandbox API
104 lines • 4.33 kB
JavaScript
;
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