Files
update_field_api/node_modules/@arco/clarizen-lib/dist/clarizen.js
T

78 lines
2.9 KiB
JavaScript
Raw Normal View History

2026-06-09 18:35:55 -03:00
import { NAMESPACES } from "./endpoints.js";
import { HttpClient } from "./http.js";
import { EntityObjectsService } from "./objects.js";
import { createMetadataService } from "./metadata/service.js";
import { createNamespaceService, } from "./service.js";
export class Clarizen {
http;
authentication;
applications;
bulk;
data;
files;
metadata;
utils;
objects;
constructor(baseUrlOrOptions, apiToken) {
const options = typeof baseUrlOrOptions === "string"
? { baseUrl: baseUrlOrOptions, apiToken }
: baseUrlOrOptions;
const baseUrl = (options.baseUrl ?? "https://api.clarizen.com").replace(/\/$/, "");
let auth;
if (options.sessionId) {
auth = { type: "session", sessionId: options.sessionId };
}
else if (options.apiToken) {
auth = { type: "apiKey", token: options.apiToken };
}
else {
auth = { type: "none" };
}
this.http = new HttpClient(baseUrl, auth);
const authBase = createNamespaceService(this.http, "authentication");
this.authentication = {
getServerDefinition: (body) => authBase.getServerDefinition(body),
getSessionInfo: () => authBase.getSessionInfo(),
logout: authBase.logout,
login: async (params) => {
const result = (await authBase.login(params));
this.useSession(result.sessionId);
return result;
},
};
this.applications = createNamespaceService(this.http, "applications");
this.bulk = createNamespaceService(this.http, "bulk");
this.files = createNamespaceService(this.http, "files");
this.metadata = createMetadataService(this.http);
this.utils = createNamespaceService(this.http, "utils");
this.objects = new EntityObjectsService(this.http);
this.data = createNamespaceService(this.http, "data");
}
get baseUrl() {
return this.http.getBaseUrl();
}
async loginWithDiscovery(params) {
const definition = await this.authentication.getServerDefinition(params);
this.http.setBaseUrl(definition.serverLocation);
return this.authentication.login(params);
}
useSession(sessionId) {
this.http.setAuth({ type: "session", sessionId });
}
useApiKey(apiToken) {
this.http.setAuth({ type: "apiKey", token: apiToken });
}
get sessionId() {
const auth = this.http.getAuth();
return auth.type === "session" ? auth.sessionId : undefined;
}
call(namespace, operation, body, query) {
const service = this[namespace];
return service(operation, body, query);
}
static createForLogin(baseUrl = "https://api.clarizen.com") {
return new Clarizen({ baseUrl });
}
static namespaces = NAMESPACES;
}
//# sourceMappingURL=clarizen.js.map