From 06d4135d4bb35f5fa02f092a6ee290599f37ffb2 Mon Sep 17 00:00:00 2001 From: bodrovis Date: Sun, 1 Dec 2024 23:24:09 +0200 Subject: [PATCH] minify [skip ci] --- dist/main.js | 1619 +--------------------------------------------- dist/main.js.map | 2 +- tsup.config.ts | 1 + 3 files changed, 3 insertions(+), 1619 deletions(-) diff --git a/dist/main.js b/dist/main.js index a74c5b02..568d590e 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1,1619 +1,2 @@ -// src/models/base_model.ts -var BaseModel = class { - constructor(params) { - for (const key of Object.keys(params)) { - this[key] = params[key]; - } - } -}; - -// src/models/branch.ts -var Branch = class extends BaseModel { -}; - -// src/lokalise/pkg.ts -import { readFile } from "node:fs/promises"; -var LokalisePkg = class _LokalisePkg { - static pkgPath() { - return "../../package.json"; - } - static async getVersion() { - let pkg; - try { - pkg = JSON.parse( - (await readFile(new URL(_LokalisePkg.pkgPath(), import.meta.url))).toString() - ); - } catch (_e) { - pkg = null; - } - return pkg ? pkg.version : "unknown"; - } -}; - -// src/http_client/base.ts -var ApiRequest = class { - promise; - params = {}; - urlRoot = "https://api.lokalise.com/api2/"; - constructor(uri, method, body, params, clientData) { - this.params = { ...params }; - this.promise = this.createPromise(uri, method, body, clientData); - } - async createPromise(uri, method, body, clientData) { - const url = this.composeURI(`/${clientData.version}/${uri}`); - const prefixUrl = clientData.host ?? this.urlRoot; - const headers = await this.buildHeaders(clientData, method, body); - const options = { - method, - headers, - ...method !== "GET" && body ? { body: JSON.stringify(body) } : {} - }; - const target = new URL(url, prefixUrl); - target.search = new URLSearchParams(this.params).toString(); - return this.fetchAndHandleResponse(target, options); - } - async fetchAndHandleResponse(target, options) { - try { - const response = await fetch(target, options); - return this.processResponse(response); - } catch (err) { - return Promise.reject({ message: err.message }); - } - } - async processResponse(response) { - let responseJSON = null; - try { - if (response.status === 204) { - responseJSON = null; - } else { - responseJSON = await response.json(); - } - } catch (_error) { - return Promise.reject({ - message: response.statusText, - code: response.status - }); - } - if (response.ok) { - return { - json: responseJSON, - headers: response.headers - }; - } - return Promise.reject(this.getErrorFromResp(responseJSON)); - } - async buildHeaders(clientData, method, body) { - const headers = new Headers({ - Accept: "application/json", - "User-Agent": `node-lokalise-api/${await LokalisePkg.getVersion()}` - }); - headers.append( - clientData.authHeader, - `${clientData.tokenType} ${clientData.token}` - ); - if (clientData.enableCompression) { - headers.append("Accept-Encoding", "gzip,deflate"); - } - if (method !== "GET" && body) { - headers.append("Content-type", "application/json"); - } - return headers; - } - getErrorFromResp(respJson) { - if (typeof respJson.error === "object") { - return respJson.error; - } - return respJson; - } - composeURI(rawUri) { - const regexp = /{(!{0,1}):(\w*)}/g; - const uri = rawUri.replace(regexp, this.mapUriParams()); - return uri.endsWith("/") ? uri.slice(0, -1) : uri; - } - mapUriParams() { - return (_entity, isMandaratory, paramName) => { - if (this.params[paramName] != null) { - const t_param = this.params[paramName]; - delete this.params[paramName]; - return t_param; - } - if (isMandaratory === "!") { - throw new Error(`Missing required param: ${paramName}`); - } - return ""; - }; - } -}; - -// src/models/paginated_result.ts -var PaginatedResult = class { - totalResults; - totalPages; - resultsPerPage; - currentPage; - items; - constructor(items, headers) { - this.totalResults = this.safeParseInt( - headers.get("x-pagination-total-count") - ); - this.totalPages = this.safeParseInt(headers.get("x-pagination-page-count")); - this.resultsPerPage = this.safeParseInt(headers.get("x-pagination-limit")); - this.currentPage = this.safeParseInt(headers.get("x-pagination-page")); - this.items = items; - } - hasNextPage() { - return this.currentPage > 0 && this.currentPage < this.totalPages; - } - hasPrevPage() { - return this.currentPage > 1; - } - isLastPage() { - return !this.hasNextPage(); - } - isFirstPage() { - return !this.hasPrevPage(); - } - nextPage() { - if (this.isLastPage()) { - return this.currentPage; - } - return this.currentPage + 1; - } - prevPage() { - if (this.isFirstPage()) { - return this.currentPage; - } - return this.currentPage - 1; - } - safeParseInt(str) { - if (!str || Number.isNaN(Number(str))) { - return 0; - } - return Number.parseInt(str, 10); - } -}; - -// src/models/cursor_paginated_result.ts -var CursorPaginatedResult = class extends PaginatedResult { - nextCursor; - constructor(items, headers) { - super(items, headers); - this.nextCursor = headers.get("x-pagination-next-cursor"); - } - hasNextCursor() { - return this.nextCursor !== null; - } -}; - -// src/collections/base_collection.ts -var BaseCollection = class { - clientData; - static rootElementName; - static rootElementNameSingular; - static endpoint; - static prefixURI; - static elementClass; - // Secondaries are used when an instance of a different class has to be created - // For example, uploading a File may return a QueuedProcess - static secondaryElementNameSingular; - static secondaryElementClass; - constructor(clientData) { - this.clientData = clientData; - } - doList(req_params) { - const params = { - ...req_params - }; - return this.createPromise( - "GET", - params, - this.populateArrayFromJson, - this.handleReject, - null - ); - } - doListCursor(req_params) { - const params = { - ...req_params - }; - return this.createPromise( - "GET", - params, - this.populateArrayFromJsonCursor, - this.handleReject, - null - ); - } - doGet(id, req_params = {}) { - const params = { - ...req_params, - id - }; - return this.createPromise( - "GET", - params, - this.populateObjectFromJsonRoot, - this.handleReject, - null - ); - } - doDelete(id, req_params = {}) { - const params = { - ...req_params, - id - }; - return this.createPromise( - "DELETE", - params, - this.returnBareJSON, - this.handleReject, - null - ); - } - doCreate(body, req_params = {}, resolveFn = this.populateObjectFromJson) { - const params = { - ...req_params - }; - return this.createPromise( - "POST", - params, - resolveFn, - this.handleReject, - body - ); - } - doUpdate(id, body, req_params, resolveFn = this.populateObjectFromJsonRoot, method = "PUT") { - const params = { - ...req_params, - id - }; - return this.createPromise( - method, - params, - resolveFn, - this.handleReject, - body - ); - } - populateObjectFromJsonRoot(json, headers) { - const childClass = this.constructor; - let jsonData = json; - if (childClass.rootElementNameSingular) { - jsonData = Object(jsonData)[childClass.rootElementNameSingular]; - } - return this.populateObjectFromJson(jsonData, headers); - } - populateSecondaryObjectFromJsonRoot(json, headers) { - const childClass = this.constructor; - const secondaryJson = Object(json)[childClass.secondaryElementNameSingular]; - return this.populateObjectFromJson(secondaryJson, headers, true); - } - populateObjectFromJson(json, _headers, secondary = false) { - const childClass = this.constructor; - return secondary ? new childClass.secondaryElementClass(json) : new childClass.elementClass(json); - } - populateArrayFromJsonBulk(json, headers) { - const childClass = this.constructor; - const arr = []; - const jsonArray = json[childClass.rootElementName]; - for (const obj of jsonArray) { - arr.push(this.populateObjectFromJson(obj, headers)); - } - const result = { - errors: json.errors, - items: arr - }; - return result; - } - populateArrayFromJson(json, headers) { - const resultArray = this.populateArray(json, headers); - return this.isPaginated(headers) ? new PaginatedResult(resultArray, headers) : resultArray; - } - populateArray(json, headers) { - const childClass = this.constructor; - return json[childClass.rootElementName].map( - (obj) => this.populateObjectFromJson(obj, headers) - ); - } - isPaginated(headers) { - return !!headers.get("x-pagination-total-count") && !!headers.get("x-pagination-page"); - } - populateArrayFromJsonCursor(json, headers) { - const childClass = this.constructor; - const arr = []; - const jsonArray = json[childClass.rootElementName]; - for (const obj of jsonArray) { - arr.push(this.populateObjectFromJson(obj, headers)); - } - return new CursorPaginatedResult(arr, headers); - } - populateApiErrorFromJson(json) { - return json; - } - returnBareJSON(json) { - return json; - } - handleReject(data) { - return this.populateApiErrorFromJson(data); - } - async createPromise(method, params, resolveFn, rejectFn, body, uri = null) { - const request = this.prepareRequest(method, body, params, uri); - try { - const data = await this.sendRequest(request); - return resolveFn ? resolveFn.call(this, data.json, data.headers) : null; - } catch (err) { - return this.handleError(err, rejectFn); - } - } - sendRequest(request) { - return request.promise; - } - handleError(err, rejectFn) { - return Promise.reject(rejectFn.call(this, err)); - } - prepareRequest(method, body, params, uri) { - return new ApiRequest( - this.getUri(uri), - method, - body, - params, - this.clientData - ); - } - getUri(uri) { - const childClass = this.constructor; - const resolvedUri = uri ? uri : childClass.prefixURI; - return resolvedUri; - } - objToArray(raw_body) { - if (!Array.isArray(raw_body)) { - return Array(raw_body); - } - return raw_body; - } -}; - -// src/collections/branches.ts -var Branches = class extends BaseCollection { - static rootElementName = "branches"; - static rootElementNameSingular = "branch"; - static prefixURI = "projects/{!:project_id}/branches/{:id}"; - static elementClass = Branch; - list(request_params) { - return this.doList(request_params); - } - create(branch_params, request_params) { - return this.doCreate( - branch_params, - request_params, - this.populateObjectFromJsonRoot - ); - } - get(branch_id, request_params) { - return this.doGet(branch_id, request_params); - } - update(branch_id, branch_params, request_params) { - return this.doUpdate(branch_id, branch_params, request_params); - } - delete(branch_id, request_params) { - return this.doDelete(branch_id, request_params); - } - merge(branch_id, request_params, body = {}) { - const params = { - ...request_params, - ...{ id: branch_id } - }; - return this.createPromise( - "POST", - params, - this.returnBareJSON, - this.handleReject, - body, - "projects/{!:project_id}/branches/{:id}/merge" - ); - } -}; - -// src/models/comment.ts -var Comment = class extends BaseModel { -}; - -// src/collections/comments.ts -var Comments = class extends BaseCollection { - static rootElementName = "comments"; - static rootElementNameSingular = "comment"; - static prefixURI = "projects/{!:project_id}/keys/{!:key_id}/comments/{:id}"; - static elementClass = Comment; - list(request_params) { - return this.doList(request_params); - } - create(comment_params, request_params) { - const body = { comments: this.objToArray(comment_params) }; - return this.doCreate(body, request_params, this.populateArrayFromJson); - } - get(comment_id, request_params) { - return this.doGet(comment_id, request_params); - } - delete(comment_id, request_params) { - return this.doDelete(comment_id, request_params); - } - list_project_comments(params) { - return this.createPromise( - "GET", - params, - this.populateArrayFromJson, - this.handleReject, - null, - "projects/{!:project_id}/comments" - ); - } -}; - -// src/models/contributor.ts -var Contributor = class extends BaseModel { -}; - -// src/collections/contributors.ts -var Contributors = class extends BaseCollection { - static rootElementName = "contributors"; - static rootElementNameSingular = "contributor"; - static prefixURI = "projects/{!:project_id}/contributors/{:id}"; - static elementClass = Contributor; - list(request_params) { - return this.doList(request_params); - } - create(contributor_params, request_params) { - const body = { contributors: this.objToArray(contributor_params) }; - return this.doCreate(body, request_params, this.populateArrayFromJson); - } - get(contributor_id, request_params) { - return this.doGet(contributor_id, request_params); - } - update(contributor_id, contributor_params, request_params) { - return this.doUpdate(contributor_id, contributor_params, request_params); - } - delete(contributor_id, request_params) { - return this.doDelete(contributor_id, request_params); - } -}; - -// src/models/file.ts -var File = class extends BaseModel { -}; - -// src/models/queued_process.ts -var QueuedProcess = class extends BaseModel { -}; - -// src/collections/files.ts -var Files = class extends BaseCollection { - static rootElementName = "files"; - static prefixURI = "projects/{!:project_id}/files/{:id}"; - static elementClass = File; - static secondaryElementNameSingular = "process"; - static secondaryElementClass = QueuedProcess; - list(request_params) { - return this.doList(request_params); - } - upload(project_id, upload) { - return this.createPromise( - "POST", - { project_id }, - this.populateSecondaryObjectFromJsonRoot, - this.handleReject, - upload, - "projects/{!:project_id}/files/upload" - ); - } - download(project_id, download) { - return this.createPromise( - "POST", - { project_id }, - this.returnBareJSON, - this.handleReject, - download, - "projects/{!:project_id}/files/download" - ); - } - delete(file_id, request_params) { - return this.doDelete(file_id, request_params); - } -}; - -// src/models/jwt.ts -var Jwt = class extends BaseModel { -}; - -// src/collections/jwt.ts -var Jwt2 = class extends BaseCollection { - static prefixURI = "projects/{!:project_id}/tokens"; - static elementClass = Jwt; - create(project_id, body = { service: "ota" }) { - const request_params = { project_id }; - return this.doCreate(body, request_params, this.populateObjectFromJson); - } -}; - -// src/models/key.ts -var Key = class extends BaseModel { -}; - -// src/collections/keys.ts -var Keys = class extends BaseCollection { - static rootElementName = "keys"; - static rootElementNameSingular = "key"; - static prefixURI = "projects/{!:project_id}/keys/{:id}"; - static elementClass = Key; - list(request_params) { - return this.doListCursor(request_params); - } - create(key_params, request_params) { - return this.doCreate( - key_params, - request_params, - this.populateArrayFromJsonBulk - ); - } - get(key_id, request_params) { - return this.doGet(key_id, request_params); - } - update(key_id, key_params, request_params) { - return this.doUpdate(key_id, key_params, request_params); - } - delete(key_id, request_params) { - return this.doDelete(key_id, request_params); - } - bulk_update(key_params, request_params) { - return this.createPromise( - "PUT", - request_params, - this.populateArrayFromJsonBulk, - this.handleReject, - key_params, - "projects/{!:project_id}/keys" - ); - } - bulk_delete(key_ids, request_params) { - const keys = { keys: this.objToArray(key_ids) }; - return this.createPromise( - "DELETE", - request_params, - this.returnBareJSON, - this.handleReject, - keys, - "projects/{!:project_id}/keys" - ); - } -}; - -// src/models/language.ts -var Language = class extends BaseModel { -}; - -// src/collections/languages.ts -var Languages = class extends BaseCollection { - static rootElementName = "languages"; - static rootElementNameSingular = "language"; - static prefixURI = "projects/{!:project_id}/languages/{:id}"; - static elementClass = Language; - system_languages(params = {}) { - return this.createPromise( - "GET", - params, - this.populateArrayFromJson, - this.handleReject, - null, - "system/languages" - ); - } - list(request_params) { - return this.doList(request_params); - } - create(raw_body, request_params) { - const body = { languages: this.objToArray(raw_body) }; - return this.doCreate(body, request_params, this.populateArrayFromJsonBulk); - } - get(lang_id, request_params) { - return this.doGet(lang_id, request_params); - } - update(lang_id, lang_params, request_params) { - return this.doUpdate(lang_id, lang_params, request_params); - } - delete(lang_id, request_params) { - return super.doDelete(lang_id, request_params); - } -}; - -// src/models/order.ts -var Order = class extends BaseModel { -}; - -// src/collections/orders.ts -var Orders = class extends BaseCollection { - static rootElementName = "orders"; - static prefixURI = "teams/{!:team_id}/orders/{:id}"; - static elementClass = Order; - list(request_params) { - return this.doList(request_params); - } - create(order_params, request_params) { - return this.doCreate( - order_params, - request_params, - this.populateObjectFromJsonRoot - ); - } - get(order_id, request_params) { - return this.doGet(order_id, request_params); - } -}; - -// src/models/payment_card.ts -var PaymentCard = class extends BaseModel { -}; - -// src/collections/payment_cards.ts -var PaymentCards = class extends BaseCollection { - static rootElementName = "payment_cards"; - static rootElementNameSingular = "payment_card"; - static prefixURI = "payment_cards/{:id}"; - static elementClass = PaymentCard; - list(request_params = {}) { - return this.doList(request_params); - } - create(card_params) { - return this.doCreate(card_params); - } - get(card_id) { - return this.doGet(card_id); - } - delete(card_id) { - return this.doDelete(card_id); - } -}; - -// src/models/permission_template.ts -var PermissionTemplate = class extends BaseModel { -}; - -// src/collections/permission_templates.ts -var PermissionTemplates = class extends BaseCollection { - static prefixURI = "teams/{!:team_id}/roles"; - static elementClass = PermissionTemplate; - static rootElementName = "roles"; - list(request_params) { - return this.doList(request_params); - } -}; - -// src/models/project.ts -var Project = class extends BaseModel { -}; - -// src/collections/projects.ts -var Projects = class extends BaseCollection { - static rootElementName = "projects"; - static prefixURI = "projects/{:id}"; - static elementClass = Project; - list(request_params = {}) { - return this.doList(request_params); - } - create(project_params) { - return this.doCreate(project_params); - } - get(project_id) { - return this.doGet(project_id); - } - update(project_id, project_params) { - return this.doUpdate( - project_id, - project_params, - {}, - this.populateObjectFromJson - ); - } - delete(project_id) { - return this.doDelete(project_id); - } - empty(project_id) { - return this.createPromise( - "PUT", - { project_id }, - this.returnBareJSON, - this.handleReject, - null, - "projects/{!:project_id}/empty" - ); - } -}; - -// src/collections/queued_processes.ts -var QueuedProcesses = class extends BaseCollection { - static rootElementName = "processes"; - static rootElementNameSingular = "process"; - static prefixURI = "projects/{!:project_id}/processes/{:id}"; - static elementClass = QueuedProcess; - list(request_params) { - return this.doList(request_params); - } - get(process_id, request_params) { - return this.doGet(process_id, request_params); - } -}; - -// src/models/screenshot.ts -var Screenshot = class extends BaseModel { -}; - -// src/collections/screenshots.ts -var Screenshots = class extends BaseCollection { - static rootElementName = "screenshots"; - static rootElementNameSingular = "screenshot"; - static prefixURI = "projects/{!:project_id}/screenshots/{:id}"; - static elementClass = Screenshot; - list(request_params) { - return this.doList(request_params); - } - create(raw_body, request_params) { - const body = { screenshots: this.objToArray(raw_body) }; - return this.doCreate(body, request_params, this.populateArrayFromJsonBulk); - } - get(screnshot_id, request_params) { - return this.doGet(screnshot_id, request_params); - } - update(screenshot_id, screenshot_params, request_params) { - return this.doUpdate(screenshot_id, screenshot_params, request_params); - } - delete(screenshot_id, request_params) { - return this.doDelete(screenshot_id, request_params); - } -}; - -// src/models/segment.ts -var Segment = class extends BaseModel { -}; - -// src/collections/segments.ts -var Segments = class extends BaseCollection { - static rootElementName = "segments"; - static rootElementNameSingular = "segment"; - static prefixURI = "projects/{!:project_id}/keys/{!:key_id}/segments/{!:language_iso}/{:id}"; - static elementClass = Segment; - list(request_params) { - return this.doList(request_params); - } - get(segment_number, request_params) { - return this.doGet(segment_number, request_params); - } - update(segment_number, segment_params, request_params) { - return this.doUpdate(segment_number, segment_params, request_params); - } -}; - -// src/models/snapshot.ts -var Snapshot = class extends BaseModel { -}; - -// src/collections/snapshots.ts -var Snapshots = class extends BaseCollection { - static rootElementName = "snapshots"; - static rootElementNameSingular = "snapshot"; - static prefixURI = "projects/{!:project_id}/snapshots/{:id}"; - static elementClass = Snapshot; - list(request_params) { - return this.doList(request_params); - } - create(snapshot_params, request_params) { - return this.doCreate( - snapshot_params, - request_params, - this.populateObjectFromJsonRoot - ); - } - restore(snapshot_id, request_params) { - const params = { - ...request_params, - ...{ id: snapshot_id } - }; - return this.createPromise( - "POST", - params, - this.returnBareJSON, - this.handleReject, - {} - ); - } - delete(snapshot_id, request_params) { - return this.doDelete(snapshot_id, request_params); - } -}; - -// src/models/task.ts -var Task = class extends BaseModel { -}; - -// src/collections/tasks.ts -var Tasks = class extends BaseCollection { - static rootElementName = "tasks"; - static rootElementNameSingular = "task"; - static prefixURI = "projects/{!:project_id}/tasks/{:id}"; - static elementClass = Task; - list(request_params) { - return this.doList(request_params); - } - create(task_params, request_params) { - return this.doCreate( - task_params, - request_params, - this.populateObjectFromJsonRoot - ); - } - get(task_id, request_params) { - return this.doGet(task_id, request_params); - } - update(task_id, task_params, request_params) { - return this.doUpdate(task_id, task_params, request_params); - } - delete(task_id, request_params) { - return this.doDelete(task_id, request_params); - } -}; - -// src/models/team_user_billing_details.ts -var TeamUserBillingDetails = class extends BaseModel { -}; - -// src/collections/team_user_billing_details.ts -var TeamUserBillingDetails2 = class extends BaseCollection { - static rootElementName = ""; - static prefixURI = "teams/{!:team_id}/billing_details"; - static elementClass = TeamUserBillingDetails; - get(team_id) { - const params = { team_id }; - return this.createPromise( - "GET", - params, - this.populateObjectFromJson, - this.handleReject, - null - ); - } - create(billing_details_params, request_params) { - return this.doCreate(billing_details_params, request_params); - } - update(team_id, billing_details_params) { - const params = { team_id }; - return this.createPromise( - "PUT", - params, - this.populateObjectFromJson, - this.handleReject, - billing_details_params - ); - } -}; - -// src/models/team_user.ts -var TeamUser = class extends BaseModel { -}; - -// src/collections/team_users.ts -var TeamUsers = class extends BaseCollection { - static rootElementName = "team_users"; - static rootElementNameSingular = "team_user"; - static prefixURI = "teams/{!:team_id}/users/{:id}"; - static elementClass = TeamUser; - list(request_params) { - return this.doList(request_params); - } - get(team_user_id, request_params) { - return this.doGet(team_user_id, request_params); - } - update(team_user_id, team_user_params, request_params) { - return this.doUpdate(team_user_id, team_user_params, request_params); - } - delete(team_user_id, request_params) { - return this.doDelete(team_user_id, request_params); - } -}; - -// src/models/team.ts -var Team = class extends BaseModel { -}; - -// src/collections/teams.ts -var Teams = class extends BaseCollection { - static rootElementName = "teams"; - static prefixURI = "teams"; - static elementClass = Team; - list(request_params = {}) { - return this.doList(request_params); - } -}; - -// src/models/translation_provider.ts -var TranslationProvider = class extends BaseModel { -}; - -// src/collections/translation_providers.ts -var TranslationProviders = class extends BaseCollection { - static rootElementName = "translation_providers"; - static prefixURI = "teams/{!:team_id}/translation_providers/{:id}"; - static elementClass = TranslationProvider; - list(request_params) { - return this.doList(request_params); - } - get(provider_id, request_params) { - return this.doGet(provider_id, request_params); - } -}; - -// src/models/translation_status.ts -var TranslationStatus = class extends BaseModel { -}; - -// src/collections/translation_statuses.ts -var TranslationStatuses = class extends BaseCollection { - static rootElementName = "custom_translation_statuses"; - static prefixURI = "projects/{!:project_id}/custom_translation_statuses/{:id}"; - static elementClass = TranslationStatus; - static rootElementNameSingular = "custom_translation_status"; - list(request_params) { - return this.doList(request_params); - } - create(translation_status_params, request_params) { - return this.doCreate( - translation_status_params, - request_params, - this.populateObjectFromJsonRoot - ); - } - get(translation_status_id, request_params) { - return this.doGet(translation_status_id, request_params); - } - update(translation_status_id, translation_status_params, request_params) { - return this.doUpdate( - translation_status_id, - translation_status_params, - request_params - ); - } - delete(translation_status_id, request_params) { - return this.doDelete(translation_status_id, request_params); - } - available_colors(request_params) { - return this.createPromise( - "GET", - request_params, - this.returnBareJSON, - this.handleReject, - {}, - "projects/{!:project_id}/custom_translation_statuses/colors" - ); - } -}; - -// src/models/translation.ts -var Translation = class extends BaseModel { -}; - -// src/collections/translations.ts -var Translations = class extends BaseCollection { - static rootElementName = "translations"; - static rootElementNameSingular = "translation"; - static prefixURI = "projects/{!:project_id}/translations/{:id}"; - static elementClass = Translation; - list(request_params) { - return this.doListCursor(request_params); - } - get(translation_id, request_params) { - return this.doGet(translation_id, request_params); - } - update(translation_id, translation_params, request_params) { - return this.doUpdate(translation_id, translation_params, request_params); - } -}; - -// src/models/user_group.ts -var UserGroup = class extends BaseModel { -}; - -// src/collections/user_groups.ts -var UserGroups = class extends BaseCollection { - static rootElementName = "user_groups"; - static prefixURI = "teams/{!:team_id}/groups/{:id}"; - static elementClass = UserGroup; - list(request_params) { - return this.doList(request_params); - } - create(user_group_params, request_params) { - return this.doCreate( - user_group_params, - request_params, - this.populateGroupFromJsonRoot - ); - } - get(user_group_id, request_params) { - return this.doGet(user_group_id, request_params); - } - update(user_group_id, user_group_params, request_params) { - return this.doUpdate( - user_group_id, - user_group_params, - request_params, - this.populateGroupFromJsonRoot - ); - } - delete(user_group_id, request_params) { - return this.doDelete(user_group_id, request_params); - } - add_members_to_group(team_id, group_id, user_ids) { - const params = { - team_id, - group_id - }; - const body = { users: user_ids }; - return this.createPromise( - "PUT", - params, - this.populateGroupFromJsonRoot, - this.handleReject, - body, - "teams/{!:team_id}/groups/{!:group_id}/members/add" - ); - } - remove_members_from_group(team_id, group_id, user_ids) { - const params = { - team_id, - group_id - }; - const body = { users: user_ids }; - return this.createPromise( - "PUT", - params, - this.populateGroupFromJsonRoot, - this.handleReject, - body, - "teams/{!:team_id}/groups/{!:group_id}/members/remove" - ); - } - add_projects_to_group(team_id, group_id, project_ids) { - const params = { - team_id, - group_id - }; - const body = { projects: project_ids }; - return this.createPromise( - "PUT", - params, - this.populateGroupFromJsonRoot, - this.handleReject, - body, - "teams/{!:team_id}/groups/{!:group_id}/projects/add" - ); - } - remove_projects_from_group(team_id, group_id, project_ids) { - const params = { - team_id, - group_id - }; - const body = { projects: project_ids }; - return this.createPromise( - "PUT", - params, - this.populateGroupFromJsonRoot, - this.handleReject, - body, - "teams/{!:team_id}/groups/{!:group_id}/projects/remove" - ); - } - populateGroupFromJsonRoot(json, headers) { - const formatted_json = json.group; - return this.populateObjectFromJson(formatted_json, headers); - } -}; - -// src/models/webhook.ts -var Webhook = class extends BaseModel { -}; - -// src/collections/webhooks.ts -var Webhooks = class extends BaseCollection { - static rootElementName = "webhooks"; - static rootElementNameSingular = "webhook"; - static prefixURI = "projects/{!:project_id}/webhooks/{:id}"; - static elementClass = Webhook; - list(request_params) { - return this.doList(request_params); - } - create(webhook_params, request_params) { - return this.doCreate( - webhook_params, - request_params, - this.populateObjectFromJsonRoot - ); - } - get(webhook_id, request_params) { - return this.doGet(webhook_id, request_params); - } - update(webhook_id, webhook_params, request_params) { - return this.doUpdate(webhook_id, webhook_params, request_params); - } - delete(webhook_id, request_params) { - return this.doDelete(webhook_id, request_params); - } - regenerate_secret(webhook_id, request_params) { - const params = { - ...request_params, - ...{ id: webhook_id } - }; - return this.createPromise( - "PATCH", - params, - this.returnBareJSON, - this.handleReject, - null, - "projects/{!:project_id}/webhooks/{:id}/secret/regenerate" - ); - } -}; - -// src/lokalise/base_client.ts -var BaseClient = class { - clientData = { - token: "", - tokenType: "", - authHeader: "x-api-token", - enableCompression: false - }; - /* - * Instantiate LokaliseApi to call API methods - * @param params object, mandatory - * @returns LokaliseApi object to work with. - */ - constructor(params) { - const apiKey = params.apiKey; - if (apiKey === null || apiKey === void 0 || apiKey.length === 0) { - throw new Error("Error: Instantiation failed: Please pass an API key"); - } - this.clientData.token = apiKey; - const compression = params.enableCompression; - if (compression !== null && compression !== void 0) { - this.clientData.enableCompression = compression; - } - this.clientData.host = params.host; - } -}; - -// src/lokalise/lokalise_api.ts -var LokaliseApi = class extends BaseClient { - constructor(params) { - super(params); - this.clientData.version = params.version ?? "api2"; - } - branches() { - return new Branches(this.clientData); - } - comments() { - return new Comments(this.clientData); - } - contributors() { - return new Contributors(this.clientData); - } - files() { - return new Files(this.clientData); - } - jwt() { - return new Jwt2(this.clientData); - } - keys() { - return new Keys(this.clientData); - } - languages() { - return new Languages(this.clientData); - } - orders() { - return new Orders(this.clientData); - } - paymentCards() { - return new PaymentCards(this.clientData); - } - permissionTemplates() { - return new PermissionTemplates(this.clientData); - } - projects() { - return new Projects(this.clientData); - } - queuedProcesses() { - return new QueuedProcesses(this.clientData); - } - screenshots() { - return new Screenshots(this.clientData); - } - segments() { - return new Segments(this.clientData); - } - snapshots() { - return new Snapshots(this.clientData); - } - tasks() { - return new Tasks(this.clientData); - } - teams() { - return new Teams(this.clientData); - } - teamUsers() { - return new TeamUsers(this.clientData); - } - teamUserBillingDetails() { - return new TeamUserBillingDetails2(this.clientData); - } - translations() { - return new Translations(this.clientData); - } - translationProviders() { - return new TranslationProviders(this.clientData); - } - translationStatuses() { - return new TranslationStatuses(this.clientData); - } - userGroups() { - return new UserGroups(this.clientData); - } - webhooks() { - return new Webhooks(this.clientData); - } -}; - -// src/lokalise/lokalise_api_oauth.ts -var LokaliseApiOAuth = class extends LokaliseApi { - constructor(params) { - super(params); - const tokenType = params.tokenType; - this.clientData.tokenType = tokenType ?? "Bearer"; - this.clientData.authHeader = "Authorization"; - } -}; - -// src/models/ota/ota_bundle.ts -var OtaBundle = class extends BaseModel { -}; - -// src/ota_collections/ota_collection.ts -var OtaCollection = class extends BaseCollection { - populateApiErrorFromJson(json) { - return json; - } - doDelete(id, req_params) { - const params = { - ...req_params, - id - }; - return this.createPromise( - "DELETE", - params, - this.returnJSONFromData, - this.handleReject, - null - ); - } - returnJSONFromData(json) { - return json.data; - } -}; - -// src/ota_collections/ota_bundle_management.ts -var OtaBundleManagement = class extends OtaCollection { - static rootElementName = "data"; - static rootElementNameSingular = "data"; - static prefixURI = "teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundles/{:id}"; - static elementClass = OtaBundle; - list(request_params) { - return this.doList(request_params); - } - get(bundleId, requestParams) { - return this.doGet(bundleId, requestParams); - } - update(bundleId, bundleParams, requestParams) { - return this.doUpdate( - bundleId, - bundleParams, - requestParams, - this.populateObjectFromJsonRoot, - "PATCH" - ); - } - delete(bundleId, requestParams) { - return this.doDelete(bundleId, requestParams); - } -}; - -// src/ota_collections/ota_bundle_publishing.ts -var OtaBundlePublishing = class extends OtaCollection { - static prefixURI = "teams/{!:teamId}/projects/{!:lokaliseProjectId}/frameworks/{!:framework}/{!:action}"; - publish(bundleId, request_params) { - const params = { - ...request_params, - ...{ action: "publish" } - }; - return this.createPromise("POST", params, null, this.handleReject, { - bundleId - }); - } - stage(bundleId, request_params) { - const params = { - ...request_params, - ...{ action: "stage" } - }; - return this.createPromise("POST", params, null, this.handleReject, { - bundleId - }); - } -}; - -// src/models/ota/ota_freeze_period.ts -var OtaFreezePeriod = class extends BaseModel { -}; - -// src/ota_collections/ota_freeze_periods.ts -var OtaFreezePeriods = class extends OtaCollection { - static rootElementName = "data"; - static rootElementNameSingular = "data"; - static prefixURI = "teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundle-freezes/{:id}"; - static elementClass = OtaFreezePeriod; - list(requestParams) { - return this.doList(requestParams); - } - create(freezeParams, requestParams) { - return this.doCreate( - freezeParams, - requestParams, - this.populateObjectFromJsonRoot - ); - } - update(freezeId, freezeParams, requestParams) { - return this.doUpdate(freezeId, freezeParams, requestParams); - } - delete(freezeId, requestParams) { - return this.doDelete(freezeId, requestParams); - } -}; - -// src/models/ota/ota_sdk_token.ts -var OtaSdkToken = class extends BaseModel { -}; - -// src/ota_collections/ota_sdk_tokens.ts -var OtaSdkTokens = class extends OtaCollection { - static rootElementName = "data"; - static rootElementNameSingular = "data"; - static prefixURI = "teams/{!:teamId}/projects/{!:lokaliseProjectId}/tokens/{:id}"; - static elementClass = OtaSdkToken; - list(request_params) { - return this.doList(request_params); - } - create(request_params) { - return this.doCreate(null, request_params, this.populateObjectFromJsonRoot); - } - delete(tokenId, request_params) { - return this.doDelete(tokenId, request_params); - } -}; - -// src/models/ota/ota_statistics.ts -var OtaStatistics = class extends BaseModel { -}; - -// src/ota_collections/ota_usage_statistics.ts -var OtaUsageStatistics = class extends OtaCollection { - static prefixURI = "teams/{!:teamId}/projects/{!:lokaliseProjectId}/stats"; - static elementClass = OtaStatistics; - get(bundle_params, request_params) { - const params = { - ...request_params, - ...bundle_params - }; - return this.createPromise( - "GET", - params, - this.populateObjectFromJson, - this.handleReject, - null - ); - } -}; - -// src/lokalise/lokalise_api_ota.ts -var LokaliseApiOta = class extends BaseClient { - constructor(params) { - super(params); - this.clientData.tokenType = params.tokenType ?? "Bearer"; - this.clientData.authHeader = "Authorization"; - this.clientData.host = this.clientData.host ?? "https://ota.lokalise.com"; - this.clientData.version = params.version ?? "v3"; - } - otaBundleManagement() { - return new OtaBundleManagement(this.clientData); - } - otaBundlePublishing() { - return new OtaBundlePublishing(this.clientData); - } - otaUsageStatistics() { - return new OtaUsageStatistics(this.clientData); - } - otaFreezePeriods() { - return new OtaFreezePeriods(this.clientData); - } - otaSdkTokens() { - return new OtaSdkTokens(this.clientData); - } -}; - -// src/models/ota/ota_bundle_archive.ts -var OtaBundleArchive = class extends BaseModel { -}; - -// src/ota_collections/ota_bundles.ts -var OtaBundles = class extends OtaCollection { - static rootElementNameSingular = "data"; - static prefixURI = "lokalise/projects/{!:lokaliseProjectId}/frameworks/{!:framework}"; - static elementClass = OtaBundleArchive; - get(bundle_params, request_params) { - const params = { - ...request_params, - ...bundle_params - }; - return this.createPromise( - "GET", - params, - this.populateObjectFromJsonRoot, - this.handleReject, - null - ); - } -}; - -// src/lokalise/lokalise_ota_bundles.ts -var LokaliseOtaBundles = class extends BaseClient { - constructor(params) { - super(params); - this.clientData.authHeader = "x-ota-api-token"; - this.clientData.host = this.clientData.host ?? "https://ota.lokalise.com"; - this.clientData.version = params.version ?? "v3"; - } - otaBundles() { - return new OtaBundles(this.clientData); - } -}; - -// src/oauth2/auth_request.ts -var AuthRequest = class _AuthRequest { - static async createPromise(uri, method, body, { host, version }) { - const fullUri = `/${version}/${uri}`; - const target = new URL(fullUri, host); - const options = { - method, - headers: await _AuthRequest.buildHeaders(), - body: JSON.stringify(body) - }; - return _AuthRequest.fetchAndHandleResponse(target, options); - } - static async fetchAndHandleResponse(target, options) { - try { - const response = await fetch(target, options); - const responseJSON = await response.json(); - if (response.ok) { - return Promise.resolve({ - json: responseJSON, - headers: response.headers - }); - } - return Promise.reject({ - ...{ code: response.status }, - ...responseJSON - }); - } catch (err) { - return Promise.reject({ - message: err.message - }); - } - } - static async buildHeaders() { - const headers = new Headers({ - Accept: "application/json", - "User-Agent": `node-lokalise-api/${await LokalisePkg.getVersion()}`, - "Content-type": "application/json" - }); - return headers; - } -}; - -// src/oauth2/lokalise_auth.ts -var LokaliseAuth = class { - authData = { - client_id: "", - client_secret: "" - }; - /* - * Instantiate LokaliseAuth to work with OAuth 2 tokens - * @param clientId string, mandatory - * @param clientSecret string, mandatory - * @returns LokaliseAuth object to work with. - */ - constructor(clientId, clientSecret, host, version) { - if (clientId == null || clientId.length === 0 || clientSecret == null || clientSecret.length === 0) { - throw new Error( - "Error: Instantiation failed: Please pass client id and client secret" - ); - } - this.authData.client_id = clientId; - this.authData.client_secret = clientSecret; - this.authData.host = host ?? "https://app.lokalise.com"; - this.authData.version = version ?? "oauth2"; - } - auth(scope, redirect_uri, state) { - const scopeString = Array.isArray(scope) ? scope.join(" ") : scope; - const params = { - client_id: this.authData.client_id, - scope: scopeString, - ...state && { state }, - ...redirect_uri && { redirect_uri } - }; - return this.buildUrl(params); - } - async token(code) { - const params = { - ...this.base_params(), - ...{ - code, - grant_type: "authorization_code" - } - }; - return await this.doRequest(params); - } - async refresh(refresh_token) { - const params = { - ...this.base_params(), - ...{ - refresh_token, - grant_type: "refresh_token" - } - }; - return await this.doRequest(params); - } - async doRequest(params) { - try { - const data = await AuthRequest.createPromise( - "token", - "POST", - params, - this.authData - ); - return data.json; - } catch (err) { - return Promise.reject(this.handleReject(err)); - } - } - buildUrl(params) { - const url = new URL("auth", this.authData.host); - url.search = new URLSearchParams(params).toString(); - return url.toString(); - } - base_params() { - return { - client_id: this.authData.client_id, - client_secret: this.authData.client_secret - }; - } - handleReject(data) { - return data; - } -}; -export { - LokaliseApi, - LokaliseApiOAuth, - LokaliseApiOta, - LokaliseAuth, - LokaliseOtaBundles -}; +var n=class{constructor(e){for(let t of Object.keys(e))this[t]=e[t]}};var h=class extends n{};import{readFile as Be}from"node:fs/promises";var b=class o{static pkgPath(){return"../../package.json"}static async getVersion(){let e;try{e=JSON.parse((await Be(new URL(o.pkgPath(),import.meta.url))).toString())}catch{e=null}return e?e.version:"unknown"}};var P=class{promise;params={};urlRoot="https://api.lokalise.com/api2/";constructor(e,t,r,i,l){this.params={...i},this.promise=this.createPromise(e,t,r,l)}async createPromise(e,t,r,i){let l=this.composeURI(`/${i.version}/${e}`),d=i.host??this.urlRoot,g=await this.buildHeaders(i,t,r),p={method:t,headers:g,...t!=="GET"&&r?{body:JSON.stringify(r)}:{}},we=new URL(l,d);return we.search=new URLSearchParams(this.params).toString(),this.fetchAndHandleResponse(we,p)}async fetchAndHandleResponse(e,t){try{let r=await fetch(e,t);return this.processResponse(r)}catch(r){return Promise.reject({message:r.message})}}async processResponse(e){let t=null;try{e.status===204?t=null:t=await e.json()}catch{return Promise.reject({message:e.statusText,code:e.status})}return e.ok?{json:t,headers:e.headers}:Promise.reject(this.getErrorFromResp(t))}async buildHeaders(e,t,r){let i=new Headers({Accept:"application/json","User-Agent":`node-lokalise-api/${await b.getVersion()}`});return i.append(e.authHeader,`${e.tokenType} ${e.token}`),e.enableCompression&&i.append("Accept-Encoding","gzip,deflate"),t!=="GET"&&r&&i.append("Content-type","application/json"),i}getErrorFromResp(e){return typeof e.error=="object"?e.error:e}composeURI(e){let t=/{(!{0,1}):(\w*)}/g,r=e.replace(t,this.mapUriParams());return r.endsWith("/")?r.slice(0,-1):r}mapUriParams(){return(e,t,r)=>{if(this.params[r]!=null){let i=this.params[r];return delete this.params[r],i}if(t==="!")throw new Error(`Missing required param: ${r}`);return""}}};var _=class{totalResults;totalPages;resultsPerPage;currentPage;items;constructor(e,t){this.totalResults=this.safeParseInt(t.get("x-pagination-total-count")),this.totalPages=this.safeParseInt(t.get("x-pagination-page-count")),this.resultsPerPage=this.safeParseInt(t.get("x-pagination-limit")),this.currentPage=this.safeParseInt(t.get("x-pagination-page")),this.items=e}hasNextPage(){return this.currentPage>0&&this.currentPage1}isLastPage(){return!this.hasNextPage()}isFirstPage(){return!this.hasPrevPage()}nextPage(){return this.isLastPage()?this.currentPage:this.currentPage+1}prevPage(){return this.isFirstPage()?this.currentPage:this.currentPage-1}safeParseInt(e){return!e||Number.isNaN(Number(e))?0:Number.parseInt(e,10)}};var j=class extends _{nextCursor;constructor(e,t){super(e,t),this.nextCursor=t.get("x-pagination-next-cursor")}hasNextCursor(){return this.nextCursor!==null}};var m=class{clientData;static rootElementName;static rootElementNameSingular;static endpoint;static prefixURI;static elementClass;static secondaryElementNameSingular;static secondaryElementClass;constructor(e){this.clientData=e}doList(e){let t={...e};return this.createPromise("GET",t,this.populateArrayFromJson,this.handleReject,null)}doListCursor(e){let t={...e};return this.createPromise("GET",t,this.populateArrayFromJsonCursor,this.handleReject,null)}doGet(e,t={}){let r={...t,id:e};return this.createPromise("GET",r,this.populateObjectFromJsonRoot,this.handleReject,null)}doDelete(e,t={}){let r={...t,id:e};return this.createPromise("DELETE",r,this.returnBareJSON,this.handleReject,null)}doCreate(e,t={},r=this.populateObjectFromJson){let i={...t};return this.createPromise("POST",i,r,this.handleReject,e)}doUpdate(e,t,r,i=this.populateObjectFromJsonRoot,l="PUT"){let d={...r,id:e};return this.createPromise(l,d,i,this.handleReject,t)}populateObjectFromJsonRoot(e,t){let r=this.constructor,i=e;return r.rootElementNameSingular&&(i=Object(i)[r.rootElementNameSingular]),this.populateObjectFromJson(i,t)}populateSecondaryObjectFromJsonRoot(e,t){let r=this.constructor,i=Object(e)[r.secondaryElementNameSingular];return this.populateObjectFromJson(i,t,!0)}populateObjectFromJson(e,t,r=!1){let i=this.constructor;return r?new i.secondaryElementClass(e):new i.elementClass(e)}populateArrayFromJsonBulk(e,t){let r=this.constructor,i=[],l=e[r.rootElementName];for(let g of l)i.push(this.populateObjectFromJson(g,t));return{errors:e.errors,items:i}}populateArrayFromJson(e,t){let r=this.populateArray(e,t);return this.isPaginated(t)?new _(r,t):r}populateArray(e,t){let r=this.constructor;return e[r.rootElementName].map(i=>this.populateObjectFromJson(i,t))}isPaginated(e){return!!e.get("x-pagination-total-count")&&!!e.get("x-pagination-page")}populateArrayFromJsonCursor(e,t){let r=this.constructor,i=[],l=e[r.rootElementName];for(let d of l)i.push(this.populateObjectFromJson(d,t));return new j(i,t)}populateApiErrorFromJson(e){return e}returnBareJSON(e){return e}handleReject(e){return this.populateApiErrorFromJson(e)}async createPromise(e,t,r,i,l,d=null){let g=this.prepareRequest(e,l,t,d);try{let p=await this.sendRequest(g);return r?r.call(this,p.json,p.headers):null}catch(p){return this.handleError(p,i)}}sendRequest(e){return e.promise}handleError(e,t){return Promise.reject(t.call(this,e))}prepareRequest(e,t,r,i){return new P(this.getUri(i),e,t,r,this.clientData)}getUri(e){let t=this.constructor;return e||t.prefixURI}objToArray(e){return Array.isArray(e)?e:Array(e)}};var x=class extends m{static rootElementName="branches";static rootElementNameSingular="branch";static prefixURI="projects/{!:project_id}/branches/{:id}";static elementClass=h;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}merge(e,t,r={}){let i={...t,id:e};return this.createPromise("POST",i,this.returnBareJSON,this.handleReject,r,"projects/{!:project_id}/branches/{:id}/merge")}};var k=class extends n{};var C=class extends m{static rootElementName="comments";static rootElementNameSingular="comment";static prefixURI="projects/{!:project_id}/keys/{!:key_id}/comments/{:id}";static elementClass=k;list(e){return this.doList(e)}create(e,t){let r={comments:this.objToArray(e)};return this.doCreate(r,t,this.populateArrayFromJson)}get(e,t){return this.doGet(e,t)}delete(e,t){return this.doDelete(e,t)}list_project_comments(e){return this.createPromise("GET",e,this.populateArrayFromJson,this.handleReject,null,"projects/{!:project_id}/comments")}};var O=class extends n{};var R=class extends m{static rootElementName="contributors";static rootElementNameSingular="contributor";static prefixURI="projects/{!:project_id}/contributors/{:id}";static elementClass=O;list(e){return this.doList(e)}create(e,t){let r={contributors:this.objToArray(e)};return this.doCreate(r,t,this.populateArrayFromJson)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}};var T=class extends n{};var f=class extends n{};var D=class extends m{static rootElementName="files";static prefixURI="projects/{!:project_id}/files/{:id}";static elementClass=T;static secondaryElementNameSingular="process";static secondaryElementClass=f;list(e){return this.doList(e)}upload(e,t){return this.createPromise("POST",{project_id:e},this.populateSecondaryObjectFromJsonRoot,this.handleReject,t,"projects/{!:project_id}/files/upload")}download(e,t){return this.createPromise("POST",{project_id:e},this.returnBareJSON,this.handleReject,t,"projects/{!:project_id}/files/download")}delete(e,t){return this.doDelete(e,t)}};var S=class extends n{};var w=class extends m{static prefixURI="projects/{!:project_id}/tokens";static elementClass=S;create(e,t={service:"ota"}){let r={project_id:e};return this.doCreate(t,r,this.populateObjectFromJson)}};var B=class extends n{};var U=class extends m{static rootElementName="keys";static rootElementNameSingular="key";static prefixURI="projects/{!:project_id}/keys/{:id}";static elementClass=B;list(e){return this.doListCursor(e)}create(e,t){return this.doCreate(e,t,this.populateArrayFromJsonBulk)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}bulk_update(e,t){return this.createPromise("PUT",t,this.populateArrayFromJsonBulk,this.handleReject,e,"projects/{!:project_id}/keys")}bulk_delete(e,t){let r={keys:this.objToArray(e)};return this.createPromise("DELETE",t,this.returnBareJSON,this.handleReject,r,"projects/{!:project_id}/keys")}};var I=class extends n{};var A=class extends m{static rootElementName="languages";static rootElementNameSingular="language";static prefixURI="projects/{!:project_id}/languages/{:id}";static elementClass=I;system_languages(e={}){return this.createPromise("GET",e,this.populateArrayFromJson,this.handleReject,null,"system/languages")}list(e){return this.doList(e)}create(e,t){let r={languages:this.objToArray(e)};return this.doCreate(r,t,this.populateArrayFromJsonBulk)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return super.doDelete(e,t)}};var E=class extends n{};var v=class extends m{static rootElementName="orders";static prefixURI="teams/{!:team_id}/orders/{:id}";static elementClass=E;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}get(e,t){return this.doGet(e,t)}};var F=class extends n{};var K=class extends m{static rootElementName="payment_cards";static rootElementNameSingular="payment_card";static prefixURI="payment_cards/{:id}";static elementClass=F;list(e={}){return this.doList(e)}create(e){return this.doCreate(e)}get(e){return this.doGet(e)}delete(e){return this.doDelete(e)}};var N=class extends n{};var J=class extends m{static prefixURI="teams/{!:team_id}/roles";static elementClass=N;static rootElementName="roles";list(e){return this.doList(e)}};var L=class extends n{};var G=class extends m{static rootElementName="projects";static prefixURI="projects/{:id}";static elementClass=L;list(e={}){return this.doList(e)}create(e){return this.doCreate(e)}get(e){return this.doGet(e)}update(e,t){return this.doUpdate(e,t,{},this.populateObjectFromJson)}delete(e){return this.doDelete(e)}empty(e){return this.createPromise("PUT",{project_id:e},this.returnBareJSON,this.handleReject,null,"projects/{!:project_id}/empty")}};var M=class extends m{static rootElementName="processes";static rootElementNameSingular="process";static prefixURI="projects/{!:project_id}/processes/{:id}";static elementClass=f;list(e){return this.doList(e)}get(e,t){return this.doGet(e,t)}};var W=class extends n{};var H=class extends m{static rootElementName="screenshots";static rootElementNameSingular="screenshot";static prefixURI="projects/{!:project_id}/screenshots/{:id}";static elementClass=W;list(e){return this.doList(e)}create(e,t){let r={screenshots:this.objToArray(e)};return this.doCreate(r,t,this.populateArrayFromJsonBulk)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}};var q=class extends n{};var z=class extends m{static rootElementName="segments";static rootElementNameSingular="segment";static prefixURI="projects/{!:project_id}/keys/{!:key_id}/segments/{!:language_iso}/{:id}";static elementClass=q;list(e){return this.doList(e)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}};var Q=class extends n{};var $=class extends m{static rootElementName="snapshots";static rootElementNameSingular="snapshot";static prefixURI="projects/{!:project_id}/snapshots/{:id}";static elementClass=Q;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}restore(e,t){let r={...t,id:e};return this.createPromise("POST",r,this.returnBareJSON,this.handleReject,{})}delete(e,t){return this.doDelete(e,t)}};var V=class extends n{};var X=class extends m{static rootElementName="tasks";static rootElementNameSingular="task";static prefixURI="projects/{!:project_id}/tasks/{:id}";static elementClass=V;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}};var Y=class extends n{};var Z=class extends m{static rootElementName="";static prefixURI="teams/{!:team_id}/billing_details";static elementClass=Y;get(e){let t={team_id:e};return this.createPromise("GET",t,this.populateObjectFromJson,this.handleReject,null)}create(e,t){return this.doCreate(e,t)}update(e,t){let r={team_id:e};return this.createPromise("PUT",r,this.populateObjectFromJson,this.handleReject,t)}};var ee=class extends n{};var te=class extends m{static rootElementName="team_users";static rootElementNameSingular="team_user";static prefixURI="teams/{!:team_id}/users/{:id}";static elementClass=ee;list(e){return this.doList(e)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}};var re=class extends n{};var ae=class extends m{static rootElementName="teams";static prefixURI="teams";static elementClass=re;list(e={}){return this.doList(e)}};var se=class extends n{};var oe=class extends m{static rootElementName="translation_providers";static prefixURI="teams/{!:team_id}/translation_providers/{:id}";static elementClass=se;list(e){return this.doList(e)}get(e,t){return this.doGet(e,t)}};var ne=class extends n{};var ie=class extends m{static rootElementName="custom_translation_statuses";static prefixURI="projects/{!:project_id}/custom_translation_statuses/{:id}";static elementClass=ne;static rootElementNameSingular="custom_translation_status";list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}available_colors(e){return this.createPromise("GET",e,this.returnBareJSON,this.handleReject,{},"projects/{!:project_id}/custom_translation_statuses/colors")}};var me=class extends n{};var le=class extends m{static rootElementName="translations";static rootElementNameSingular="translation";static prefixURI="projects/{!:project_id}/translations/{:id}";static elementClass=me;list(e){return this.doListCursor(e)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}};var ce=class extends n{};var de=class extends m{static rootElementName="user_groups";static prefixURI="teams/{!:team_id}/groups/{:id}";static elementClass=ce;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateGroupFromJsonRoot)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r,this.populateGroupFromJsonRoot)}delete(e,t){return this.doDelete(e,t)}add_members_to_group(e,t,r){let i={team_id:e,group_id:t},l={users:r};return this.createPromise("PUT",i,this.populateGroupFromJsonRoot,this.handleReject,l,"teams/{!:team_id}/groups/{!:group_id}/members/add")}remove_members_from_group(e,t,r){let i={team_id:e,group_id:t},l={users:r};return this.createPromise("PUT",i,this.populateGroupFromJsonRoot,this.handleReject,l,"teams/{!:team_id}/groups/{!:group_id}/members/remove")}add_projects_to_group(e,t,r){let i={team_id:e,group_id:t},l={projects:r};return this.createPromise("PUT",i,this.populateGroupFromJsonRoot,this.handleReject,l,"teams/{!:team_id}/groups/{!:group_id}/projects/add")}remove_projects_from_group(e,t,r){let i={team_id:e,group_id:t},l={projects:r};return this.createPromise("PUT",i,this.populateGroupFromJsonRoot,this.handleReject,l,"teams/{!:team_id}/groups/{!:group_id}/projects/remove")}populateGroupFromJsonRoot(e,t){let r=e.group;return this.populateObjectFromJson(r,t)}};var pe=class extends n{};var ue=class extends m{static rootElementName="webhooks";static rootElementNameSingular="webhook";static prefixURI="projects/{!:project_id}/webhooks/{:id}";static elementClass=pe;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}regenerate_secret(e,t){let r={...t,id:e};return this.createPromise("PATCH",r,this.returnBareJSON,this.handleReject,null,"projects/{!:project_id}/webhooks/{:id}/secret/regenerate")}};var u=class{clientData={token:"",tokenType:"",authHeader:"x-api-token",enableCompression:!1};constructor(e){let t=e.apiKey;if(t==null||t.length===0)throw new Error("Error: Instantiation failed: Please pass an API key");this.clientData.token=t;let r=e.enableCompression;r!=null&&(this.clientData.enableCompression=r),this.clientData.host=e.host}};var y=class extends u{constructor(e){super(e),this.clientData.version=e.version??"api2"}branches(){return new x(this.clientData)}comments(){return new C(this.clientData)}contributors(){return new R(this.clientData)}files(){return new D(this.clientData)}jwt(){return new w(this.clientData)}keys(){return new U(this.clientData)}languages(){return new A(this.clientData)}orders(){return new v(this.clientData)}paymentCards(){return new K(this.clientData)}permissionTemplates(){return new J(this.clientData)}projects(){return new G(this.clientData)}queuedProcesses(){return new M(this.clientData)}screenshots(){return new H(this.clientData)}segments(){return new z(this.clientData)}snapshots(){return new $(this.clientData)}tasks(){return new X(this.clientData)}teams(){return new ae(this.clientData)}teamUsers(){return new te(this.clientData)}teamUserBillingDetails(){return new Z(this.clientData)}translations(){return new le(this.clientData)}translationProviders(){return new oe(this.clientData)}translationStatuses(){return new ie(this.clientData)}userGroups(){return new de(this.clientData)}webhooks(){return new ue(this.clientData)}};var Re=class extends y{constructor(e){super(e);let t=e.tokenType;this.clientData.tokenType=t??"Bearer",this.clientData.authHeader="Authorization"}};var ge=class extends n{};var c=class extends m{populateApiErrorFromJson(e){return e}doDelete(e,t){let r={...t,id:e};return this.createPromise("DELETE",r,this.returnJSONFromData,this.handleReject,null)}returnJSONFromData(e){return e.data}};var be=class extends c{static rootElementName="data";static rootElementNameSingular="data";static prefixURI="teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundles/{:id}";static elementClass=ge;list(e){return this.doList(e)}get(e,t){return this.doGet(e,t)}update(e,t,r){return this.doUpdate(e,t,r,this.populateObjectFromJsonRoot,"PATCH")}delete(e,t){return this.doDelete(e,t)}};var _e=class extends c{static prefixURI="teams/{!:teamId}/projects/{!:lokaliseProjectId}/frameworks/{!:framework}/{!:action}";publish(e,t){let r={...t,action:"publish"};return this.createPromise("POST",r,null,this.handleReject,{bundleId:e})}stage(e,t){let r={...t,action:"stage"};return this.createPromise("POST",r,null,this.handleReject,{bundleId:e})}};var fe=class extends n{};var ye=class extends c{static rootElementName="data";static rootElementNameSingular="data";static prefixURI="teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundle-freezes/{:id}";static elementClass=fe;list(e){return this.doList(e)}create(e,t){return this.doCreate(e,t,this.populateObjectFromJsonRoot)}update(e,t,r){return this.doUpdate(e,t,r)}delete(e,t){return this.doDelete(e,t)}};var he=class extends n{};var Pe=class extends c{static rootElementName="data";static rootElementNameSingular="data";static prefixURI="teams/{!:teamId}/projects/{!:lokaliseProjectId}/tokens/{:id}";static elementClass=he;list(e){return this.doList(e)}create(e){return this.doCreate(null,e,this.populateObjectFromJsonRoot)}delete(e,t){return this.doDelete(e,t)}};var je=class extends n{};var xe=class extends c{static prefixURI="teams/{!:teamId}/projects/{!:lokaliseProjectId}/stats";static elementClass=je;get(e,t){let r={...t,...e};return this.createPromise("GET",r,this.populateObjectFromJson,this.handleReject,null)}};var Te=class extends u{constructor(e){super(e),this.clientData.tokenType=e.tokenType??"Bearer",this.clientData.authHeader="Authorization",this.clientData.host=this.clientData.host??"https://ota.lokalise.com",this.clientData.version=e.version??"v3"}otaBundleManagement(){return new be(this.clientData)}otaBundlePublishing(){return new _e(this.clientData)}otaUsageStatistics(){return new xe(this.clientData)}otaFreezePeriods(){return new ye(this.clientData)}otaSdkTokens(){return new Pe(this.clientData)}};var ke=class extends n{};var Ce=class extends c{static rootElementNameSingular="data";static prefixURI="lokalise/projects/{!:lokaliseProjectId}/frameworks/{!:framework}";static elementClass=ke;get(e,t){let r={...t,...e};return this.createPromise("GET",r,this.populateObjectFromJsonRoot,this.handleReject,null)}};var De=class extends u{constructor(e){super(e),this.clientData.authHeader="x-ota-api-token",this.clientData.host=this.clientData.host??"https://ota.lokalise.com",this.clientData.version=e.version??"v3"}otaBundles(){return new Ce(this.clientData)}};var Oe=class o{static async createPromise(e,t,r,{host:i,version:l}){let d=`/${l}/${e}`,g=new URL(d,i),p={method:t,headers:await o.buildHeaders(),body:JSON.stringify(r)};return o.fetchAndHandleResponse(g,p)}static async fetchAndHandleResponse(e,t){try{let r=await fetch(e,t),i=await r.json();return r.ok?Promise.resolve({json:i,headers:r.headers}):Promise.reject({code:r.status,...i})}catch(r){return Promise.reject({message:r.message})}}static async buildHeaders(){return new Headers({Accept:"application/json","User-Agent":`node-lokalise-api/${await b.getVersion()}`,"Content-type":"application/json"})}};var Se=class{authData={client_id:"",client_secret:""};constructor(e,t,r,i){if(e==null||e.length===0||t==null||t.length===0)throw new Error("Error: Instantiation failed: Please pass client id and client secret");this.authData.client_id=e,this.authData.client_secret=t,this.authData.host=r??"https://app.lokalise.com",this.authData.version=i??"oauth2"}auth(e,t,r){let i=Array.isArray(e)?e.join(" "):e,l={client_id:this.authData.client_id,scope:i,...r&&{state:r},...t&&{redirect_uri:t}};return this.buildUrl(l)}async token(e){let t={...this.base_params(),code:e,grant_type:"authorization_code"};return await this.doRequest(t)}async refresh(e){let t={...this.base_params(),refresh_token:e,grant_type:"refresh_token"};return await this.doRequest(t)}async doRequest(e){try{return(await Oe.createPromise("token","POST",e,this.authData)).json}catch(t){return Promise.reject(this.handleReject(t))}}buildUrl(e){let t=new URL("auth",this.authData.host);return t.search=new URLSearchParams(e).toString(),t.toString()}base_params(){return{client_id:this.authData.client_id,client_secret:this.authData.client_secret}}handleReject(e){return e}};export{y as LokaliseApi,Re as LokaliseApiOAuth,Te as LokaliseApiOta,Se as LokaliseAuth,De as LokaliseOtaBundles}; //# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/dist/main.js.map b/dist/main.js.map index 98d44627..d4646f11 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/models/base_model.ts","../src/models/branch.ts","../src/lokalise/pkg.ts","../src/http_client/base.ts","../src/models/paginated_result.ts","../src/models/cursor_paginated_result.ts","../src/collections/base_collection.ts","../src/collections/branches.ts","../src/models/comment.ts","../src/collections/comments.ts","../src/models/contributor.ts","../src/collections/contributors.ts","../src/models/file.ts","../src/models/queued_process.ts","../src/collections/files.ts","../src/models/jwt.ts","../src/collections/jwt.ts","../src/models/key.ts","../src/collections/keys.ts","../src/models/language.ts","../src/collections/languages.ts","../src/models/order.ts","../src/collections/orders.ts","../src/models/payment_card.ts","../src/collections/payment_cards.ts","../src/models/permission_template.ts","../src/collections/permission_templates.ts","../src/models/project.ts","../src/collections/projects.ts","../src/collections/queued_processes.ts","../src/models/screenshot.ts","../src/collections/screenshots.ts","../src/models/segment.ts","../src/collections/segments.ts","../src/models/snapshot.ts","../src/collections/snapshots.ts","../src/models/task.ts","../src/collections/tasks.ts","../src/models/team_user_billing_details.ts","../src/collections/team_user_billing_details.ts","../src/models/team_user.ts","../src/collections/team_users.ts","../src/models/team.ts","../src/collections/teams.ts","../src/models/translation_provider.ts","../src/collections/translation_providers.ts","../src/models/translation_status.ts","../src/collections/translation_statuses.ts","../src/models/translation.ts","../src/collections/translations.ts","../src/models/user_group.ts","../src/collections/user_groups.ts","../src/models/webhook.ts","../src/collections/webhooks.ts","../src/lokalise/base_client.ts","../src/lokalise/lokalise_api.ts","../src/lokalise/lokalise_api_oauth.ts","../src/models/ota/ota_bundle.ts","../src/ota_collections/ota_collection.ts","../src/ota_collections/ota_bundle_management.ts","../src/ota_collections/ota_bundle_publishing.ts","../src/models/ota/ota_freeze_period.ts","../src/ota_collections/ota_freeze_periods.ts","../src/models/ota/ota_sdk_token.ts","../src/ota_collections/ota_sdk_tokens.ts","../src/models/ota/ota_statistics.ts","../src/ota_collections/ota_usage_statistics.ts","../src/lokalise/lokalise_api_ota.ts","../src/models/ota/ota_bundle_archive.ts","../src/ota_collections/ota_bundles.ts","../src/lokalise/lokalise_ota_bundles.ts","../src/oauth2/auth_request.ts","../src/oauth2/lokalise_auth.ts"],"sourcesContent":["export abstract class BaseModel {\n\tconstructor(params: { [key: string]: any }) {\n\t\tfor (const key of Object.keys(params)) {\n\t\t\t(this)[key] = params[key];\n\t\t}\n\t}\n}\n","import type { Branch as BranchInterface } from \"../interfaces/branch.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Branch extends BaseModel implements BranchInterface {\n\tdeclare branch_id: number;\n\tdeclare name: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n}\n","import { readFile } from \"node:fs/promises\";\nimport type { Keyable } from \"../interfaces/keyable.js\";\n\nexport class LokalisePkg {\n\tstatic pkgPath() {\n\t\treturn \"../../package.json\";\n\t}\n\n\tstatic async getVersion(): Promise {\n\t\tlet pkg: Keyable | null;\n\n\t\ttry {\n\t\t\tpkg = JSON.parse(\n\t\t\t\t(\n\t\t\t\t\tawait readFile(new URL(LokalisePkg.pkgPath(), import.meta.url))\n\t\t\t\t).toString(),\n\t\t\t);\n\t\t} catch (_e) {\n\t\t\tpkg = null;\n\t\t}\n\n\t\treturn pkg ? pkg.version : \"unknown\";\n\t}\n}\n","import type { ClientData } from \"../interfaces/client_data.js\";\nimport type { Keyable, WritableKeyable } from \"../interfaces/keyable.js\";\nimport { LokalisePkg } from \"../lokalise/pkg.js\";\nimport type { HttpMethod } from \"../types/http_method.js\";\n\nexport class ApiRequest {\n\tpublic promise: Promise;\n\tpublic params: WritableKeyable = {};\n\tprotected readonly urlRoot = \"https://api.lokalise.com/api2/\";\n\n\tconstructor(\n\t\turi: string,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\tparams: Keyable,\n\t\tclientData: ClientData,\n\t) {\n\t\t// Since we modify params, we need to make a copy of it so we don't modify the original\n\t\tthis.params = { ...params };\n\t\tthis.promise = this.createPromise(uri, method, body, clientData);\n\t}\n\n\tprotected async createPromise(\n\t\turi: string,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\tclientData: ClientData,\n\t): Promise {\n\t\tconst url = this.composeURI(`/${clientData.version}/${uri}`);\n\n\t\tconst prefixUrl = clientData.host ?? this.urlRoot;\n\n\t\tconst headers = await this.buildHeaders(clientData, method, body);\n\n\t\tconst options: RequestInit = {\n\t\t\tmethod: method,\n\t\t\theaders: headers,\n\t\t\t...(method !== \"GET\" && body ? { body: JSON.stringify(body) } : {}),\n\t\t};\n\n\t\tconst target = new URL(url, prefixUrl);\n\n\t\ttarget.search = new URLSearchParams(this.params).toString();\n\n\t\treturn this.fetchAndHandleResponse(target, options);\n\t}\n\n\tprotected async fetchAndHandleResponse(\n\t\ttarget: URL,\n\t\toptions: RequestInit,\n\t): Promise {\n\t\ttry {\n\t\t\tconst response = await fetch(target, options);\n\n\t\t\treturn this.processResponse(response);\n\t\t} catch (err) {\n\t\t\treturn Promise.reject({ message: (err as Error).message });\n\t\t}\n\t}\n\n\tprotected async processResponse(response: Response): Promise {\n\t\tlet responseJSON: any = null;\n\n\t\ttry {\n\t\t\tif (response.status === 204) {\n\t\t\t\tresponseJSON = null;\n\t\t\t} else {\n\t\t\t\tresponseJSON = await response.json();\n\t\t\t}\n\t\t} catch (_error) {\n\t\t\treturn Promise.reject({\n\t\t\t\tmessage: response.statusText,\n\t\t\t\tcode: response.status,\n\t\t\t});\n\t\t}\n\n\t\tif (response.ok) {\n\t\t\treturn {\n\t\t\t\tjson: responseJSON,\n\t\t\t\theaders: response.headers,\n\t\t\t};\n\t\t}\n\n\t\treturn Promise.reject(this.getErrorFromResp(responseJSON));\n\t}\n\n\tprotected async buildHeaders(\n\t\tclientData: ClientData,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t): Promise {\n\t\tconst headers = new Headers({\n\t\t\tAccept: \"application/json\",\n\t\t\t\"User-Agent\": `node-lokalise-api/${await LokalisePkg.getVersion()}`,\n\t\t});\n\n\t\theaders.append(\n\t\t\tclientData.authHeader,\n\t\t\t`${clientData.tokenType} ${clientData.token}`,\n\t\t);\n\n\t\tif (clientData.enableCompression) {\n\t\t\theaders.append(\"Accept-Encoding\", \"gzip,deflate\");\n\t\t}\n\n\t\tif (method !== \"GET\" && body) {\n\t\t\theaders.append(\"Content-type\", \"application/json\");\n\t\t}\n\n\t\treturn headers;\n\t}\n\n\tprotected getErrorFromResp(respJson: any): any {\n\t\tif (typeof respJson.error === \"object\") {\n\t\t\treturn respJson.error;\n\t\t}\n\t\treturn respJson;\n\t}\n\n\tprotected composeURI(rawUri: string): string {\n\t\tconst regexp = /{(!{0,1}):(\\w*)}/g;\n\t\tconst uri = rawUri.replace(regexp, this.mapUriParams());\n\t\treturn uri.endsWith(\"/\") ? uri.slice(0, -1) : uri;\n\t}\n\n\tprotected mapUriParams() {\n\t\treturn (_entity: any, isMandaratory: string, paramName: string): string => {\n\t\t\tif (this.params[paramName] != null) {\n\t\t\t\tconst t_param = this.params[paramName];\n\n\t\t\t\t// We delete the param so we don't send it as a query param as well.\n\t\t\t\tdelete this.params[paramName];\n\n\t\t\t\treturn t_param;\n\t\t\t}\n\t\t\tif (isMandaratory === \"!\") {\n\t\t\t\tthrow new Error(`Missing required param: ${paramName}`);\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\t}\n}\n","import type { PaginatedResult as PaginatedResultInterface } from \"../interfaces/paginated_result.js\";\n\nexport class PaginatedResult implements PaginatedResultInterface {\n\ttotalResults: number;\n\ttotalPages: number;\n\tresultsPerPage: number;\n\tcurrentPage: number;\n\titems: any;\n\n\tconstructor(items: any, headers: Headers) {\n\t\tthis.totalResults = this.safeParseInt(\n\t\t\theaders.get(\"x-pagination-total-count\"),\n\t\t);\n\t\tthis.totalPages = this.safeParseInt(headers.get(\"x-pagination-page-count\"));\n\t\tthis.resultsPerPage = this.safeParseInt(headers.get(\"x-pagination-limit\"));\n\t\tthis.currentPage = this.safeParseInt(headers.get(\"x-pagination-page\"));\n\t\tthis.items = items;\n\t}\n\n\thasNextPage(): boolean {\n\t\treturn this.currentPage > 0 && this.currentPage < this.totalPages;\n\t}\n\n\thasPrevPage(): boolean {\n\t\treturn this.currentPage > 1;\n\t}\n\n\tisLastPage(): boolean {\n\t\treturn !this.hasNextPage();\n\t}\n\n\tisFirstPage(): boolean {\n\t\treturn !this.hasPrevPage();\n\t}\n\n\tnextPage(): number {\n\t\tif (this.isLastPage()) {\n\t\t\treturn this.currentPage;\n\t\t}\n\t\treturn this.currentPage + 1;\n\t}\n\n\tprevPage(): number {\n\t\tif (this.isFirstPage()) {\n\t\t\treturn this.currentPage;\n\t\t}\n\t\treturn this.currentPage - 1;\n\t}\n\n\tprivate safeParseInt(str: string | null): number {\n\t\tif (!str || Number.isNaN(Number(str))) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn Number.parseInt(str, 10);\n\t}\n}\n","import type { CursorPaginatedResult as CursorPaginatedResultInterface } from \"../interfaces/cursor_paginated_result.js\";\nimport { PaginatedResult } from \"./paginated_result.js\";\n\nexport class CursorPaginatedResult\n\textends PaginatedResult\n\timplements CursorPaginatedResultInterface\n{\n\tnextCursor: string | null;\n\n\tconstructor(items: any[], headers: Headers) {\n\t\tsuper(items, headers);\n\n\t\tthis.nextCursor = headers.get(\"x-pagination-next-cursor\");\n\t}\n\n\thasNextCursor(): boolean {\n\t\treturn this.nextCursor !== null;\n\t}\n}\n","import { ApiRequest } from \"../http_client/base.js\";\nimport type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { ClientData } from \"../interfaces/client_data.js\";\nimport type { Keyable } from \"../interfaces/keyable.js\";\nimport type { ApiError } from \"../models/api_error.js\";\nimport { CursorPaginatedResult } from \"../models/cursor_paginated_result.js\";\nimport { PaginatedResult } from \"../models/paginated_result.js\";\nimport type { HttpMethod } from \"../types/http_method.js\";\n\ntype RejectHandler = (data: any) => ApiError;\ntype ResolveHandler = (json: Keyable, headers: Headers, ...args: any[]) => any;\n\nexport abstract class BaseCollection {\n\treadonly clientData: ClientData;\n\tprotected static rootElementName: string;\n\tprotected static rootElementNameSingular: string | null;\n\tprotected static endpoint: string | null;\n\tprotected static prefixURI: string | null;\n\tprotected static elementClass: any;\n\n\t// Secondaries are used when an instance of a different class has to be created\n\t// For example, uploading a File may return a QueuedProcess\n\tprotected static secondaryElementNameSingular: string | null;\n\tprotected static secondaryElementClass: any;\n\n\tconstructor(clientData: ClientData) {\n\t\tthis.clientData = clientData;\n\t}\n\n\tprotected doList(req_params: Keyable): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doListCursor(req_params: Keyable): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJsonCursor,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doGet(id: string | number, req_params: Keyable = {}): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doDelete(\n\t\tid: string | number,\n\t\treq_params: Keyable = {},\n\t): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"DELETE\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doCreate(\n\t\tbody: Keyable | null,\n\t\treq_params: Keyable = {},\n\t\tresolveFn = this.populateObjectFromJson,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\tparams,\n\t\t\tresolveFn,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t);\n\t}\n\n\tprotected doUpdate(\n\t\tid: string | number,\n\t\tbody: Keyable | null,\n\t\treq_params: Keyable,\n\t\tresolveFn = this.populateObjectFromJsonRoot,\n\t\tmethod: HttpMethod = \"PUT\",\n\t): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tresolveFn,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t);\n\t}\n\n\tprotected populateObjectFromJsonRoot(json: Keyable, headers: Headers): any {\n\t\tconst childClass = this.constructor;\n\t\tlet jsonData = json;\n\n\t\tif (childClass.rootElementNameSingular) {\n\t\t\tjsonData = Object(jsonData)[childClass.rootElementNameSingular];\n\t\t}\n\n\t\treturn this.populateObjectFromJson(jsonData, headers);\n\t}\n\n\tprotected populateSecondaryObjectFromJsonRoot(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): any {\n\t\tconst childClass = this.constructor;\n\n\t\tconst secondaryJson =\n\t\t\tObject(json)[childClass.secondaryElementNameSingular];\n\n\t\treturn this.populateObjectFromJson(secondaryJson, headers, true);\n\t}\n\n\tprotected populateObjectFromJson(\n\t\tjson: Keyable,\n\t\t_headers: Headers,\n\t\tsecondary = false,\n\t): any {\n\t\tconst childClass = this.constructor;\n\n\t\treturn secondary\n\t\t\t? new childClass.secondaryElementClass(json)\n\t\t\t: new childClass.elementClass(json);\n\t}\n\n\tprotected populateArrayFromJsonBulk(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): BulkResult | this[] {\n\t\tconst childClass = this.constructor;\n\t\tconst arr: this[] = [];\n\t\tconst jsonArray = json[(childClass).rootElementName];\n\t\tfor (const obj of jsonArray) {\n\t\t\tarr.push(this.populateObjectFromJson(obj, headers));\n\t\t}\n\t\tconst result: BulkResult = {\n\t\t\terrors: json.errors,\n\t\t\titems: arr,\n\t\t};\n\t\treturn result;\n\t}\n\n\tprotected populateArrayFromJson(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): PaginatedResult | Keyable | this[] {\n\t\tconst resultArray = this.populateArray(json, headers);\n\n\t\treturn this.isPaginated(headers)\n\t\t\t? new PaginatedResult(resultArray, headers)\n\t\t\t: resultArray;\n\t}\n\n\tprivate populateArray(json: Keyable, headers: Headers): this[] {\n\t\tconst childClass = this.constructor;\n\n\t\treturn json[(childClass).rootElementName].map((obj: Keyable) =>\n\t\t\tthis.populateObjectFromJson(obj, headers),\n\t\t);\n\t}\n\n\tprivate isPaginated(headers: Headers): boolean {\n\t\treturn (\n\t\t\t!!headers.get(\"x-pagination-total-count\") &&\n\t\t\t!!headers.get(\"x-pagination-page\")\n\t\t);\n\t}\n\n\tprotected populateArrayFromJsonCursor(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): CursorPaginatedResult | Keyable | this[] {\n\t\tconst childClass = this.constructor;\n\t\tconst arr: this[] = [];\n\t\tconst jsonArray = json[(childClass).rootElementName];\n\n\t\tfor (const obj of jsonArray) {\n\t\t\tarr.push(this.populateObjectFromJson(obj, headers));\n\t\t}\n\n\t\treturn new CursorPaginatedResult(arr, headers);\n\t}\n\n\tprotected populateApiErrorFromJson(json: any): ApiError {\n\t\treturn json;\n\t}\n\n\tprotected returnBareJSON(\n\t\tjson: Keyable | Array,\n\t): Keyable | Array {\n\t\treturn json;\n\t}\n\n\tprotected handleReject(data: any): ApiError {\n\t\treturn this.populateApiErrorFromJson(data);\n\t}\n\n\tprotected async createPromise(\n\t\tmethod: HttpMethod,\n\t\tparams: Keyable,\n\t\tresolveFn: ResolveHandler | null,\n\t\trejectFn: RejectHandler,\n\t\tbody: object | object[] | null,\n\t\turi: string | null = null,\n\t): Promise {\n\t\tconst request = this.prepareRequest(method, body, params, uri);\n\n\t\ttry {\n\t\t\tconst data = await this.sendRequest(request);\n\n\t\t\treturn resolveFn ? resolveFn.call(this, data.json, data.headers) : null;\n\t\t} catch (err) {\n\t\t\treturn this.handleError(err, rejectFn);\n\t\t}\n\t}\n\n\tprotected sendRequest(request: ApiRequest): Promise {\n\t\treturn request.promise;\n\t}\n\n\tprotected handleError(err: any, rejectFn: RejectHandler): Promise {\n\t\treturn Promise.reject(rejectFn.call(this, err));\n\t}\n\n\tprotected prepareRequest(\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\tparams: Keyable,\n\t\turi: string | null,\n\t): ApiRequest {\n\t\treturn new ApiRequest(\n\t\t\tthis.getUri(uri),\n\t\t\tmethod,\n\t\t\tbody,\n\t\t\tparams,\n\t\t\tthis.clientData,\n\t\t);\n\t}\n\n\tprotected getUri(uri: string | null): string {\n\t\tconst childClass = this.constructor;\n\n\t\t// Use a local variable instead of reassigning the parameter\n\t\tconst resolvedUri = uri ? uri : childClass.prefixURI;\n\n\t\treturn resolvedUri;\n\t}\n\n\tprotected objToArray(raw_body: Keyable | Keyable[]): Array {\n\t\tif (!Array.isArray(raw_body)) {\n\t\t\treturn Array(raw_body);\n\t\t}\n\t\treturn raw_body;\n\t}\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Branch } from \"../models/branch.js\";\nimport type {\n\tBranchDeleted,\n\tBranchMerged,\n\tBranchParams,\n\tMergeBranchParams,\n} from \"../types/branches.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Branches extends BaseCollection {\n\tprotected static rootElementName = \"branches\";\n\tprotected static rootElementNameSingular = \"branch\";\n\tprotected static prefixURI = \"projects/{!:project_id}/branches/{:id}\";\n\tprotected static elementClass = Branch;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tbranch_params: BranchParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tbranch_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\tbranch_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(branch_id, request_params);\n\t}\n\n\tupdate(\n\t\tbranch_id: string | number,\n\t\tbranch_params: BranchParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(branch_id, branch_params, request_params);\n\t}\n\n\tdelete(\n\t\tbranch_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(branch_id, request_params);\n\t}\n\n\tmerge(\n\t\tbranch_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t\tbody: MergeBranchParams = {},\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ id: branch_id },\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"projects/{!:project_id}/branches/{:id}/merge\",\n\t\t);\n\t}\n}\n","import type { Comment as CommentInterface } from \"../interfaces/comment.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Comment extends BaseModel implements CommentInterface {\n\tdeclare comment_id: number;\n\tdeclare key_id: number;\n\tdeclare comment: string;\n\tdeclare added_by: number;\n\tdeclare added_by_email: string;\n\tdeclare added_at: string;\n\tdeclare added_at_timestamp: number;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Comment } from \"../models/comment.js\";\nimport type {\n\tCommentData,\n\tCommentDeleted,\n\tKeyProjectPagination,\n\tProjectAndKey,\n} from \"../types/comments.js\";\nimport type { ProjectWithPagination } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Comments extends BaseCollection {\n\tprotected static rootElementName = \"comments\";\n\tprotected static rootElementNameSingular = \"comment\";\n\tprotected static prefixURI =\n\t\t\"projects/{!:project_id}/keys/{!:key_id}/comments/{:id}\";\n\tprotected static elementClass = Comment;\n\n\tlist(\n\t\trequest_params: KeyProjectPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tcomment_params: CommentData | CommentData[],\n\t\trequest_params: ProjectAndKey,\n\t): Promise {\n\t\tconst body = { comments: this.objToArray(comment_params) };\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJson);\n\t}\n\n\tget(\n\t\tcomment_id: string | number,\n\t\trequest_params: ProjectAndKey,\n\t): Promise {\n\t\treturn this.doGet(comment_id, request_params);\n\t}\n\n\tdelete(\n\t\tcomment_id: string | number,\n\t\trequest_params: ProjectAndKey,\n\t): Promise {\n\t\treturn this.doDelete(comment_id, request_params);\n\t}\n\n\tlist_project_comments(\n\t\tparams: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"projects/{!:project_id}/comments\",\n\t\t);\n\t}\n}\n","import type { Contributor as ContributorInterface } from \"../interfaces/contributor.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Contributor extends BaseModel implements ContributorInterface {\n\tdeclare user_id: number;\n\tdeclare email: string;\n\tdeclare fullname: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare is_admin: boolean; //deprecated\n\tdeclare is_reviewer: boolean; //deprecated\n\tdeclare languages: Array<{\n\t\tlang_id: number;\n\t\tlang_iso: string;\n\t\tlang_name: string;\n\t\tis_writable: boolean;\n\t}>;\n\tdeclare admin_rights: string[];\n\tdeclare role_id: number;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Contributor } from \"../models/contributor.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tContributorCreateData,\n\tContributorDeleted,\n\tContributorUpdateData,\n} from \"../types/contributors.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Contributors extends BaseCollection {\n\tprotected static rootElementName = \"contributors\";\n\tprotected static rootElementNameSingular = \"contributor\";\n\tprotected static prefixURI = \"projects/{!:project_id}/contributors/{:id}\";\n\tprotected static elementClass = Contributor;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tcontributor_params: ContributorCreateData | ContributorCreateData[],\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst body = { contributors: this.objToArray(contributor_params) };\n\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJson);\n\t}\n\n\tget(\n\t\tcontributor_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(contributor_id, request_params);\n\t}\n\n\tupdate(\n\t\tcontributor_id: string | number,\n\t\tcontributor_params: ContributorUpdateData,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(contributor_id, contributor_params, request_params);\n\t}\n\n\tdelete(\n\t\tcontributor_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(contributor_id, request_params);\n\t}\n}\n","import type { File as FileInterface } from \"../interfaces/file.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class File extends BaseModel implements FileInterface {\n\tdeclare file_id: number;\n\tdeclare filename: string;\n\tdeclare key_count: number;\n}\n","import type { Keyable } from \"../interfaces/keyable.js\";\nimport type { QueuedProcess as QueuedProcessInterface } from \"../interfaces/queued_process.js\";\nimport { BaseModel } from \"./base_model.js\";\n\ntype ProcessDetails = {\n\tfiles: Keyable[];\n\t[key: string]: any;\n};\n\nexport class QueuedProcess extends BaseModel implements QueuedProcessInterface {\n\tdeclare process_id: string;\n\tdeclare type: string;\n\tdeclare status: string;\n\tdeclare message: string;\n\tdeclare created_by: string;\n\tdeclare created_by_email: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare details: ProcessDetails;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { File } from \"../models/file.js\";\nimport { QueuedProcess } from \"../models/queued_process.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tDownloadBundle,\n\tDownloadFileParams,\n\tFileDeleted,\n\tListFileParams,\n\tUploadFileParams,\n} from \"../types/files.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Files extends BaseCollection {\n\tprotected static rootElementName = \"files\";\n\tprotected static prefixURI = \"projects/{!:project_id}/files/{:id}\";\n\tprotected static elementClass = File;\n\n\tprotected static secondaryElementNameSingular = \"process\";\n\tprotected static secondaryElementClass = QueuedProcess;\n\n\tlist(request_params: ListFileParams): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tupload(project_id: string, upload: UploadFileParams): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\t{ project_id: project_id },\n\t\t\tthis.populateSecondaryObjectFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tupload,\n\t\t\t\"projects/{!:project_id}/files/upload\",\n\t\t);\n\t}\n\n\tdownload(\n\t\tproject_id: string,\n\t\tdownload: DownloadFileParams,\n\t): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\t{ project_id: project_id },\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tdownload,\n\t\t\t\"projects/{!:project_id}/files/download\",\n\t\t);\n\t}\n\n\tdelete(\n\t\tfile_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(file_id, request_params);\n\t}\n}\n","import type { Jwt as JwtInterface } from \"../interfaces/jwt.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Jwt extends BaseModel implements JwtInterface {\n\tdeclare jwt: string;\n}\n","import { Jwt as JwtModel } from \"../models/jwt.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Jwt extends BaseCollection {\n\tprotected static prefixURI = \"projects/{!:project_id}/tokens\";\n\tprotected static elementClass = JwtModel;\n\n\tcreate(project_id: string, body = { service: \"ota\" }): Promise {\n\t\tconst request_params = { project_id: project_id };\n\t\treturn this.doCreate(body, request_params, this.populateObjectFromJson);\n\t}\n}\n","import type { Comment } from \"../interfaces/comment.js\";\nimport type { Key as KeyInterface } from \"../interfaces/key.js\";\nimport type { Screenshot } from \"../interfaces/screenshot.js\";\nimport type { Translation } from \"../interfaces/translation.js\";\nimport type { Filenames, Filenames as Keynames } from \"../types/filenames.js\";\nimport type { SupportedPlatforms } from \"../types/supported_platforms.js\";\nimport { BaseModel } from \"./base_model.js\";\n\ntype KeyComment = Omit;\n\nexport class Key extends BaseModel implements KeyInterface {\n\tdeclare key_id: number;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare key_name: Keynames;\n\tdeclare filenames: Filenames;\n\tdeclare description: string;\n\tdeclare platforms: SupportedPlatforms[];\n\tdeclare tags: string[];\n\tdeclare comments: KeyComment[];\n\tdeclare screenshots: Screenshot[];\n\tdeclare translations: Translation[];\n\tdeclare is_plural: boolean;\n\tdeclare plural_name: string;\n\tdeclare is_hidden: boolean;\n\tdeclare is_archived: boolean;\n\tdeclare context: string;\n\tdeclare base_words: number;\n\tdeclare char_limit: number;\n\tdeclare custom_attributes: any[] | string;\n\tdeclare modified_at: string;\n\tdeclare modified_at_timestamp: number;\n\tdeclare translations_modified_at: string;\n\tdeclare translations_modified_at_timestamp: number;\n}\n","import type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { CursorPaginatedResult } from \"../interfaces/cursor_paginated_result.js\";\nimport { Key } from \"../models/key.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tBulkUpdateKeyParams,\n\tCreateKeyParams,\n\tGetKeyParams,\n\tKeyDeleted,\n\tKeyParamsWithPagination,\n\tKeysBulkDeleted,\n\tUpdateKeyData,\n} from \"../types/keys.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Keys extends BaseCollection {\n\tprotected static rootElementName = \"keys\";\n\tprotected static rootElementNameSingular = \"key\";\n\tprotected static prefixURI = \"projects/{!:project_id}/keys/{:id}\";\n\tprotected static elementClass = Key;\n\n\tlist(\n\t\trequest_params: KeyParamsWithPagination,\n\t): Promise> {\n\t\treturn this.doListCursor(request_params);\n\t}\n\n\tcreate(\n\t\tkey_params: CreateKeyParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\treturn this.doCreate(\n\t\t\tkey_params,\n\t\t\trequest_params,\n\t\t\tthis.populateArrayFromJsonBulk,\n\t\t);\n\t}\n\n\tget(key_id: string | number, request_params: GetKeyParams): Promise {\n\t\treturn this.doGet(key_id, request_params);\n\t}\n\n\tupdate(\n\t\tkey_id: string | number,\n\t\tkey_params: UpdateKeyData,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(key_id, key_params, request_params);\n\t}\n\n\tdelete(\n\t\tkey_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(key_id, request_params);\n\t}\n\n\tbulk_update(\n\t\tkey_params: BulkUpdateKeyParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\trequest_params,\n\t\t\tthis.populateArrayFromJsonBulk,\n\t\t\tthis.handleReject,\n\t\t\tkey_params,\n\t\t\t\"projects/{!:project_id}/keys\",\n\t\t);\n\t}\n\n\tbulk_delete(\n\t\tkey_ids: number[] | string[],\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst keys = { keys: this.objToArray(key_ids) };\n\n\t\treturn this.createPromise(\n\t\t\t\"DELETE\",\n\t\t\trequest_params,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tkeys,\n\t\t\t\"projects/{!:project_id}/keys\",\n\t\t);\n\t}\n}\n","import type { Language as LanguageInterface } from \"../interfaces/language.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Language extends BaseModel implements LanguageInterface {\n\tdeclare lang_id: number;\n\tdeclare lang_iso: string;\n\tdeclare lang_name: string;\n\tdeclare is_rtl: boolean;\n\tdeclare plural_forms: string[];\n}\n","import type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Language } from \"../models/language.js\";\nimport type {\n\tPaginationParams,\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateLanguageParams,\n\tLanguageDeleted,\n\tUpdateLanguageParams,\n} from \"../types/languages.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Languages extends BaseCollection {\n\tprotected static rootElementName = \"languages\";\n\tprotected static rootElementNameSingular = \"language\";\n\tprotected static prefixURI = \"projects/{!:project_id}/languages/{:id}\";\n\tprotected static elementClass = Language;\n\n\tsystem_languages(\n\t\tparams: PaginationParams = {},\n\t): Promise> {\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"system/languages\",\n\t\t);\n\t}\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\traw_body: CreateLanguageParams | CreateLanguageParams[],\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\tconst body = { languages: this.objToArray(raw_body) };\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJsonBulk);\n\t}\n\n\tget(\n\t\tlang_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(lang_id, request_params);\n\t}\n\n\tupdate(\n\t\tlang_id: string | number,\n\t\tlang_params: UpdateLanguageParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(lang_id, lang_params, request_params);\n\t}\n\n\tdelete(\n\t\tlang_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn super.doDelete(lang_id, request_params);\n\t}\n}\n","import type { Keyable } from \"../interfaces/keyable.js\";\nimport type { Order as OrderInterface } from \"../interfaces/order.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Order extends BaseModel implements OrderInterface {\n\tdeclare order_id: string;\n\tdeclare project_id: string;\n\tdeclare branch: string;\n\tdeclare card_id: number | string;\n\tdeclare status: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n\tdeclare source_language_iso: string;\n\tdeclare target_language_isos: string[];\n\tdeclare keys: number[] | string[];\n\tdeclare source_words: Keyable;\n\tdeclare provider_slug: string;\n\tdeclare translation_style: string;\n\tdeclare translation_tier: number;\n\tdeclare translation_tier_name: string;\n\tdeclare briefing: string;\n\tdeclare total: number;\n\tdeclare payment_method: string | null;\n\tdeclare is_saved_to_translation_memory: boolean;\n\tdeclare dry_run: boolean;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Order } from \"../models/order.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { CreateOrderParams } from \"../types/orders.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Orders extends BaseCollection {\n\tprotected static rootElementName = \"orders\";\n\tprotected static prefixURI = \"teams/{!:team_id}/orders/{:id}\";\n\tprotected static elementClass = Order;\n\n\tlist(request_params: TeamWithPagination): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\torder_params: CreateOrderParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\torder_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(order_id: string | number, request_params: TeamOnly): Promise {\n\t\treturn this.doGet(order_id, request_params);\n\t}\n}\n","import type { PaymentCard as PaymentCardInterface } from \"../interfaces/payment_card.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class PaymentCard extends BaseModel implements PaymentCardInterface {\n\tdeclare card_id: number;\n\tdeclare last4: string;\n\tdeclare brand: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { PaymentCard } from \"../models/payment_card.js\";\nimport type { CardDeleted, CreateCardParams } from \"../types/cards.js\";\nimport type { PaginationParams } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class PaymentCards extends BaseCollection {\n\tprotected static rootElementName = \"payment_cards\";\n\tprotected static rootElementNameSingular = \"payment_card\";\n\tprotected static prefixURI = \"payment_cards/{:id}\";\n\tprotected static elementClass = PaymentCard;\n\n\tlist(\n\t\trequest_params: PaginationParams = {},\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(card_params: CreateCardParams): Promise {\n\t\treturn this.doCreate(card_params);\n\t}\n\n\tget(card_id: string | number): Promise {\n\t\treturn this.doGet(card_id);\n\t}\n\n\tdelete(card_id: string | number): Promise {\n\t\treturn this.doDelete(card_id);\n\t}\n}\n","import type { PermissionTemplate as PermissionTemplateInterface } from \"../interfaces/permission_template.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class PermissionTemplate\n\textends BaseModel\n\timplements PermissionTemplateInterface\n{\n\tdeclare id: number;\n\tdeclare role: string;\n\tdeclare permissions: string[];\n\tdeclare description: string;\n\tdeclare tag: string;\n\tdeclare tagColor: string;\n\tdeclare tagInfo: string | null;\n\tdeclare doesEnableAllReadOnlyLanguages: boolean;\n}\n","import type { PaginatedResult } from \"../interfaces/index.js\";\nimport { PermissionTemplate } from \"../models/permission_template.js\";\nimport type { TeamOnly } from \"../types/index.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class PermissionTemplates extends BaseCollection {\n\tprotected static prefixURI = \"teams/{!:team_id}/roles\";\n\tprotected static elementClass = PermissionTemplate;\n\tprotected static rootElementName = \"roles\";\n\n\tlist(request_params: TeamOnly): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n}\n","import type { Project as ProjectInterface } from \"../interfaces/project.js\";\nimport type { ProjectSettings } from \"../interfaces/project_settings.js\";\nimport type { ProjectStatistics } from \"../interfaces/project_statistics.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Project extends BaseModel implements ProjectInterface {\n\tdeclare project_id: string;\n\tdeclare project_type: string;\n\tdeclare name: string;\n\tdeclare description: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n\tdeclare team_id: number;\n\tdeclare base_language_id: number;\n\tdeclare base_language_iso: string;\n\tdeclare settings: ProjectSettings;\n\tdeclare statistics: ProjectStatistics;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Project } from \"../models/project.js\";\nimport type {\n\tCreateProjectParams,\n\tProjectDeleted,\n\tProjectEmptied,\n\tProjectListParams,\n\tUpdateProjectParams,\n} from \"../types/projects.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Projects extends BaseCollection {\n\tprotected static rootElementName = \"projects\";\n\tprotected static prefixURI = \"projects/{:id}\";\n\tprotected static elementClass = Project;\n\n\tlist(\n\t\trequest_params: ProjectListParams = {},\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(project_params: CreateProjectParams): Promise {\n\t\treturn this.doCreate(project_params);\n\t}\n\n\tget(project_id: string | number): Promise {\n\t\treturn this.doGet(project_id);\n\t}\n\n\tupdate(\n\t\tproject_id: string | number,\n\t\tproject_params: UpdateProjectParams,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\tproject_id,\n\t\t\tproject_params,\n\t\t\t{},\n\t\t\tthis.populateObjectFromJson,\n\t\t);\n\t}\n\n\tdelete(project_id: string | number): Promise {\n\t\treturn this.doDelete(project_id);\n\t}\n\n\tempty(project_id: any): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\t{ project_id: project_id },\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"projects/{!:project_id}/empty\",\n\t\t);\n\t}\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { QueuedProcess } from \"../models/queued_process.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class QueuedProcesses extends BaseCollection {\n\tprotected static rootElementName = \"processes\";\n\tprotected static rootElementNameSingular = \"process\";\n\tprotected static prefixURI = \"projects/{!:project_id}/processes/{:id}\";\n\tprotected static elementClass = QueuedProcess;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tprocess_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(process_id, request_params);\n\t}\n}\n","import type { Screenshot as ScreenshotInterface } from \"../interfaces/screenshot.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Screenshot extends BaseModel implements ScreenshotInterface {\n\tdeclare screenshot_id: number;\n\tdeclare key_ids: number[];\n\tdeclare keys: Array<{\n\t\tkey_id: number;\n\t\tcoordinates: {\n\t\t\tleft: number;\n\t\t\ttop: number;\n\t\t\twidth: number;\n\t\t\theight: number;\n\t\t};\n\t}>;\n\tdeclare url: string;\n\tdeclare title: string;\n\tdeclare description: string;\n\tdeclare screenshot_tags: string[];\n\tdeclare width: number;\n\tdeclare height: number;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n}\n","import type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Screenshot } from \"../models/screenshot.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateScreenshotParams,\n\tScreenshotDeleted,\n\tUpdateScreenshotParams,\n} from \"../types/screenshots.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Screenshots extends BaseCollection {\n\tprotected static rootElementName = \"screenshots\";\n\tprotected static rootElementNameSingular = \"screenshot\";\n\tprotected static prefixURI = \"projects/{!:project_id}/screenshots/{:id}\";\n\tprotected static elementClass: object = Screenshot;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\traw_body: CreateScreenshotParams | CreateScreenshotParams[],\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\tconst body = { screenshots: this.objToArray(raw_body) };\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJsonBulk);\n\t}\n\n\tget(\n\t\tscrenshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(screnshot_id, request_params);\n\t}\n\n\tupdate(\n\t\tscreenshot_id: string | number,\n\t\tscreenshot_params: UpdateScreenshotParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(screenshot_id, screenshot_params, request_params);\n\t}\n\n\tdelete(\n\t\tscreenshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(screenshot_id, request_params);\n\t}\n}\n","import type { Segment as SegmentInterface } from \"../interfaces/segment.js\";\nimport { BaseModel } from \"./base_model.js\";\nimport type { TranslationStatus } from \"./translation_status.js\";\n\nexport class Segment extends BaseModel implements SegmentInterface {\n\tdeclare segment_number: number;\n\tdeclare language_iso: string;\n\tdeclare modified_at: string;\n\tdeclare modified_at_timestamp: number;\n\tdeclare modified_by: number;\n\tdeclare modified_by_email: string;\n\tdeclare value: string;\n\tdeclare is_fuzzy: boolean;\n\tdeclare is_reviewed: boolean;\n\tdeclare reviewed_by: number;\n\tdeclare words: number;\n\tdeclare custom_translation_statuses: TranslationStatus[];\n}\n","import { Segment } from \"../models/segment.js\";\nimport type {\n\tGetSegmentParams,\n\tListSegmentParams,\n\tUpdateSegmentBodyParams,\n\tUpdateSegmentReqParams,\n} from \"../types/segments.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Segments extends BaseCollection {\n\tprotected static rootElementName = \"segments\";\n\tprotected static rootElementNameSingular = \"segment\";\n\tprotected static prefixURI =\n\t\t\"projects/{!:project_id}/keys/{!:key_id}/segments/{!:language_iso}/{:id}\";\n\tprotected static elementClass = Segment;\n\n\tlist(request_params: ListSegmentParams): Promise {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tsegment_number: string | number,\n\t\trequest_params: GetSegmentParams,\n\t): Promise {\n\t\treturn this.doGet(segment_number, request_params);\n\t}\n\n\tupdate(\n\t\tsegment_number: string | number,\n\t\tsegment_params: UpdateSegmentBodyParams,\n\t\trequest_params: UpdateSegmentReqParams,\n\t): Promise {\n\t\treturn this.doUpdate(segment_number, segment_params, request_params);\n\t}\n}\n","import type { Snapshot as SnapshotInterface } from \"../interfaces/snapshot.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Snapshot extends BaseModel implements SnapshotInterface {\n\tdeclare snapshot_id: number;\n\tdeclare title: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport type { Project } from \"../models/project.js\";\nimport { Snapshot } from \"../models/snapshot.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateSnapshotParams,\n\tSnapshotDeleted,\n} from \"../types/snapshots.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Snapshots extends BaseCollection {\n\tprotected static rootElementName = \"snapshots\";\n\tprotected static rootElementNameSingular = \"snapshot\";\n\tprotected static prefixURI = \"projects/{!:project_id}/snapshots/{:id}\";\n\tprotected static elementClass = Snapshot;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tsnapshot_params: CreateSnapshotParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tsnapshot_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\trestore(\n\t\tsnapshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ id: snapshot_id },\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\t{},\n\t\t);\n\t}\n\n\tdelete(\n\t\tsnapshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(snapshot_id, request_params);\n\t}\n}\n","import type { Task as TaskInterface } from \"../interfaces/task.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Task extends BaseModel implements TaskInterface {\n\tdeclare task_id: number;\n\tdeclare title: string;\n\tdeclare description: string;\n\tdeclare status: string;\n\tdeclare progress: number;\n\tdeclare due_date: string;\n\tdeclare due_date_timestamp: number;\n\tdeclare keys_count: number;\n\tdeclare words_count: number;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n\tdeclare can_be_parent: boolean;\n\tdeclare task_type: string;\n\tdeclare parent_task_id: number;\n\tdeclare closing_tags: string[];\n\tdeclare do_lock_translations: boolean;\n\tdeclare languages: Array<{\n\t\tlanguage_iso: string;\n\t\tusers: Array<{\n\t\t\tuser_id: string | number;\n\t\t\temail: string;\n\t\t\tfullname: string;\n\t\t}>;\n\t\tgroups: Array<{\n\t\t\tid: string | number;\n\t\t\tname: string;\n\t\t}>;\n\t\tkeys: string[] | number[];\n\t\tstatus: string;\n\t\tprogress: number;\n\t\tinitial_tm_leverage: {\n\t\t\t\"0%+\": number;\n\t\t\t\"60%+\": number;\n\t\t\t\"75%+\": number;\n\t\t\t\"95%+\": number;\n\t\t\t\"100%\": number;\n\t\t};\n\t\ttm_leverage: {\n\t\t\tstatus: string;\n\t\t\tvalue: {\n\t\t\t\t\"0%+\": number;\n\t\t\t\t\"50%+\": number;\n\t\t\t\t\"75%+\": number;\n\t\t\t\t\"85%+\": number;\n\t\t\t\t\"95%+\": number;\n\t\t\t\t\"100%\": number;\n\t\t\t};\n\t\t};\n\t\tkeys_count: number;\n\t\twords_count: number;\n\t\tcompleted_at: string;\n\t\tcompleted_at_timestamp: number;\n\t\tcompleted_by: number;\n\t\tcompleted_by_email: string;\n\t}>;\n\tdeclare source_language_iso: string;\n\tdeclare auto_close_languages: boolean;\n\tdeclare auto_close_task: boolean;\n\tdeclare auto_close_items: boolean;\n\tdeclare completed_at: string;\n\tdeclare completed_at_timestamp: number;\n\tdeclare completed_by: number;\n\tdeclare completed_by_email: string;\n\tdeclare custom_translation_status_ids: number[];\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Task } from \"../models/task.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tCreateTaskParams,\n\tListTaskParams,\n\tTaskDeleted,\n\tUpdateTaskParams,\n} from \"../types/tasks.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Tasks extends BaseCollection {\n\tprotected static rootElementName = \"tasks\";\n\tprotected static rootElementNameSingular = \"task\";\n\tprotected static prefixURI = \"projects/{!:project_id}/tasks/{:id}\";\n\tprotected static elementClass = Task;\n\n\tlist(request_params: ListTaskParams): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\ttask_params: CreateTaskParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\ttask_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(task_id: string | number, request_params: ProjectOnly): Promise {\n\t\treturn this.doGet(task_id, request_params);\n\t}\n\n\tupdate(\n\t\ttask_id: string | number,\n\t\ttask_params: UpdateTaskParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(task_id, task_params, request_params);\n\t}\n\n\tdelete(\n\t\ttask_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(task_id, request_params);\n\t}\n}\n","import type { TeamUserBillingDetails as TeamUserBillingDetailsInterface } from \"../interfaces/team_user_billing_details.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TeamUserBillingDetails\n\textends BaseModel\n\timplements TeamUserBillingDetailsInterface\n{\n\tdeclare billing_email: string;\n\tdeclare country_code: string;\n\tdeclare zip: string;\n\tdeclare state_code: string;\n\tdeclare address1: string;\n\tdeclare address2: string;\n\tdeclare city: string;\n\tdeclare phone: string;\n\tdeclare company: string;\n\tdeclare vatnumber: string;\n}\n","import { TeamUserBillingDetails as BillingDetailsModel } from \"../models/team_user_billing_details.js\";\nimport type { BillingDetailsParams } from \"../types/billing_details.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TeamUserBillingDetails extends BaseCollection {\n\tprotected static rootElementName = \"\";\n\tprotected static prefixURI = \"teams/{!:team_id}/billing_details\";\n\tprotected static elementClass = BillingDetailsModel;\n\n\tget(team_id: string | number): Promise {\n\t\tconst params = { team_id: team_id };\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tcreate(\n\t\tbilling_details_params: BillingDetailsParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doCreate(billing_details_params, request_params);\n\t}\n\n\tupdate(\n\t\tteam_id: string | number,\n\t\tbilling_details_params: BillingDetailsParams,\n\t): Promise {\n\t\tconst params = { team_id: team_id };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJson,\n\t\t\tthis.handleReject,\n\t\t\tbilling_details_params,\n\t\t);\n\t}\n}\n","import type { TeamUser as TeamUserInterface } from \"../interfaces/team_user.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TeamUser extends BaseModel implements TeamUserInterface {\n\tdeclare user_id: number;\n\tdeclare email: string;\n\tdeclare fullname: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare role: string;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { TeamUser } from \"../models/team_user.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { TeamUserDeleted, TeamUserParams } from \"../types/team_users.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TeamUsers extends BaseCollection {\n\tprotected static rootElementName = \"team_users\";\n\tprotected static rootElementNameSingular = \"team_user\";\n\tprotected static prefixURI = \"teams/{!:team_id}/users/{:id}\";\n\tprotected static elementClass = TeamUser;\n\n\tlist(request_params: TeamWithPagination): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tteam_user_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doGet(team_user_id, request_params);\n\t}\n\n\tupdate(\n\t\tteam_user_id: string | number,\n\t\tteam_user_params: TeamUserParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doUpdate(team_user_id, team_user_params, request_params);\n\t}\n\n\tdelete(\n\t\tteam_user_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doDelete(team_user_id, request_params);\n\t}\n}\n","import type { Team as TeamInterface } from \"../interfaces/team.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Team extends BaseModel implements TeamInterface {\n\tdeclare team_id: number;\n\tdeclare name: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare plan: string;\n\tdeclare quota_usage: {\n\t\tusers: number;\n\t\tkeys: number;\n\t\tprojects: number;\n\t\tmau: number;\n\t\tai_words: number;\n\t};\n\tdeclare quota_allowed: {\n\t\tusers: number;\n\t\tkeys: number;\n\t\tprojects: number;\n\t\tmau: number;\n\t\tai_words: number;\n\t};\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Team } from \"../models/team.js\";\nimport type { PaginationParams } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Teams extends BaseCollection {\n\tprotected static rootElementName = \"teams\";\n\tprotected static prefixURI = \"teams\";\n\tprotected static elementClass = Team;\n\n\tlist(request_params: PaginationParams = {}): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n}\n","import type { TranslationProvider as TranslationProviderInterface } from \"../interfaces/translation_provider.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TranslationProvider\n\textends BaseModel\n\timplements TranslationProviderInterface\n{\n\tdeclare provider_id: number;\n\tdeclare name: string;\n\tdeclare slug: string;\n\tdeclare price_pair_min: number;\n\tdeclare website_url: string;\n\tdeclare description: string;\n\tdeclare tiers: Array<{\n\t\ttier_id: number;\n\t\ttitle: string;\n\t}>;\n\tdeclare pairs: Array<{\n\t\ttier_id: number;\n\t\tfrom_lang_iso: string;\n\t\tfrom_lang_name: string;\n\t\tto_lang_iso: string;\n\t\tto_lang_name: string;\n\t\tprice_per_word: number;\n\t}>;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { TranslationProvider } from \"../models/translation_provider.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TranslationProviders extends BaseCollection {\n\tprotected static rootElementName = \"translation_providers\";\n\tprotected static prefixURI = \"teams/{!:team_id}/translation_providers/{:id}\";\n\tprotected static elementClass = TranslationProvider;\n\n\tlist(\n\t\trequest_params: TeamWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tprovider_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doGet(provider_id, request_params);\n\t}\n}\n","import type { TranslationStatus as TranslationStatusInterface } from \"../interfaces/translation_status.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TranslationStatus\n\textends BaseModel\n\timplements TranslationStatusInterface\n{\n\tdeclare status_id: number;\n\tdeclare title: string;\n\tdeclare color: string;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { TranslationStatus } from \"../models/translation_status.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateTranslationStatusParams,\n\tTranslationStatusColors,\n\tTranslationStatusDeleted,\n\tUpdateTranslationStatusParams,\n} from \"../types/translation_statuses.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TranslationStatuses extends BaseCollection {\n\tprotected static rootElementName = \"custom_translation_statuses\";\n\tprotected static prefixURI =\n\t\t\"projects/{!:project_id}/custom_translation_statuses/{:id}\";\n\tprotected static elementClass = TranslationStatus;\n\tprotected static rootElementNameSingular = \"custom_translation_status\";\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\ttranslation_status_params: CreateTranslationStatusParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\ttranslation_status_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\ttranslation_status_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(translation_status_id, request_params);\n\t}\n\n\tupdate(\n\t\ttranslation_status_id: string | number,\n\t\ttranslation_status_params: UpdateTranslationStatusParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\ttranslation_status_id,\n\t\t\ttranslation_status_params,\n\t\t\trequest_params,\n\t\t);\n\t}\n\n\tdelete(\n\t\ttranslation_status_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(translation_status_id, request_params);\n\t}\n\n\tavailable_colors(\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\trequest_params,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\t{},\n\t\t\t\"projects/{!:project_id}/custom_translation_statuses/colors\",\n\t\t);\n\t}\n}\n","import type { Translation as TranslationInterface } from \"../interfaces/translation.js\";\nimport type { TranslationStatus } from \"../interfaces/translation_status.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Translation extends BaseModel implements TranslationInterface {\n\tdeclare translation_id: number;\n\tdeclare key_id: number;\n\tdeclare language_iso: string;\n\tdeclare modified_at: string;\n\tdeclare modified_at_timestamp: number;\n\tdeclare modified_by: number;\n\tdeclare modified_by_email: string;\n\tdeclare translation: string;\n\tdeclare is_unverified: boolean;\n\tdeclare is_reviewed: boolean;\n\tdeclare reviewed_by: number;\n\tdeclare is_fuzzy: boolean;\n\tdeclare words: number;\n\tdeclare custom_translation_statuses: TranslationStatus[];\n\tdeclare task_id: number;\n\tdeclare segment_number: number;\n}\n","import type { CursorPaginatedResult } from \"../interfaces/cursor_paginated_result.js\";\nimport { Translation } from \"../models/translation.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tGetTranslationParams,\n\tListTranslationParams,\n\tUpdateTranslationParams,\n} from \"../types/translations.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Translations extends BaseCollection {\n\tprotected static rootElementName = \"translations\";\n\tprotected static rootElementNameSingular = \"translation\";\n\tprotected static prefixURI = \"projects/{!:project_id}/translations/{:id}\";\n\tprotected static elementClass = Translation;\n\n\tlist(\n\t\trequest_params: ListTranslationParams,\n\t): Promise> {\n\t\treturn this.doListCursor(request_params);\n\t}\n\n\tget(\n\t\ttranslation_id: string | number,\n\t\trequest_params: GetTranslationParams,\n\t): Promise {\n\t\treturn this.doGet(translation_id, request_params);\n\t}\n\n\tupdate(\n\t\ttranslation_id: string | number,\n\t\ttranslation_params: UpdateTranslationParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(translation_id, translation_params, request_params);\n\t}\n}\n","import type { UserGroup as UserGroupInterface } from \"../interfaces/user_group.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class UserGroup extends BaseModel implements UserGroupInterface {\n\tdeclare group_id: number;\n\tdeclare name: string;\n\tdeclare permissions: {\n\t\tis_admin: boolean; // deprecated\n\t\tis_reviewer: boolean; // deprecated\n\t\tadmin_rights: string[];\n\t\tlanguages: Array<{\n\t\t\tlang_id: number;\n\t\t\tlang_iso: string;\n\t\t\tlang_name: string;\n\t\t\tis_writable: boolean;\n\t\t}>;\n\t};\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare team_id: number;\n\tdeclare projects: string[] | number[];\n\tdeclare members: number[] | string[];\n\tdeclare role_id: number | null;\n}\n","import type { Keyable } from \"../interfaces/keyable.js\";\nimport type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { UserGroup } from \"../models/user_group.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport type {\n\tUserGroupDeleted,\n\tUserGroupParams,\n} from \"../types/user_groups.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class UserGroups extends BaseCollection {\n\tprotected static rootElementName = \"user_groups\";\n\tprotected static prefixURI = \"teams/{!:team_id}/groups/{:id}\";\n\tprotected static elementClass = UserGroup;\n\n\tlist(\n\t\trequest_params: TeamWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tuser_group_params: UserGroupParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tuser_group_params,\n\t\t\trequest_params,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\tuser_group_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doGet(user_group_id, request_params);\n\t}\n\n\tupdate(\n\t\tuser_group_id: string | number,\n\t\tuser_group_params: UserGroupParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\tuser_group_id,\n\t\t\tuser_group_params,\n\t\t\trequest_params,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t);\n\t}\n\n\tdelete(\n\t\tuser_group_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doDelete(user_group_id, request_params);\n\t}\n\n\tadd_members_to_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tuser_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { users: user_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/members/add\",\n\t\t);\n\t}\n\n\tremove_members_from_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tuser_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { users: user_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/members/remove\",\n\t\t);\n\t}\n\n\tadd_projects_to_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tproject_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { projects: project_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/projects/add\",\n\t\t);\n\t}\n\n\tremove_projects_from_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tproject_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { projects: project_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/projects/remove\",\n\t\t);\n\t}\n\n\tprotected populateGroupFromJsonRoot(json: Keyable, headers: Headers): this {\n\t\tconst formatted_json = json.group;\n\t\treturn this.populateObjectFromJson(formatted_json, headers);\n\t}\n}\n","import type { Webhook as WebhookInterface } from \"../interfaces/webhook.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Webhook extends BaseModel implements WebhookInterface {\n\tdeclare webhook_id: string;\n\tdeclare branch: string;\n\tdeclare url: string;\n\tdeclare secret: string;\n\tdeclare events: string[];\n\tdeclare event_lang_map: Array<{\n\t\tevent: string;\n\t\tlang_iso_codes: string[];\n\t}>;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Webhook } from \"../models/webhook.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateWebhookParams,\n\tUpdateWebhookParams,\n\tWebhookDeleted,\n\tWebhookRegenerated,\n} from \"../types/webhooks.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Webhooks extends BaseCollection {\n\tprotected static rootElementName = \"webhooks\";\n\tprotected static rootElementNameSingular = \"webhook\";\n\tprotected static prefixURI = \"projects/{!:project_id}/webhooks/{:id}\";\n\tprotected static elementClass = Webhook;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\twebhook_params: CreateWebhookParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\twebhook_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\twebhook_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(webhook_id, request_params);\n\t}\n\n\tupdate(\n\t\twebhook_id: string | number,\n\t\twebhook_params: UpdateWebhookParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(webhook_id, webhook_params, request_params);\n\t}\n\n\tdelete(\n\t\twebhook_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(webhook_id, request_params);\n\t}\n\n\tregenerate_secret(\n\t\twebhook_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ id: webhook_id },\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"PATCH\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"projects/{!:project_id}/webhooks/{:id}/secret/regenerate\",\n\t\t);\n\t}\n}\n","import type { ClientData as ClientDataInterface } from \"../interfaces/client_data.js\";\n\nexport type ClientParams = {\n\tapiKey?: string;\n\tenableCompression?: boolean;\n\ttokenType?: string;\n\thost?: string;\n\tversion?: string;\n};\n\nexport class BaseClient {\n\treadonly clientData: ClientDataInterface = {\n\t\ttoken: \"\",\n\t\ttokenType: \"\",\n\t\tauthHeader: \"x-api-token\",\n\t\tenableCompression: false,\n\t};\n\n\t/*\n\t * Instantiate LokaliseApi to call API methods\n\t * @param params object, mandatory\n\t * @returns LokaliseApi object to work with.\n\t */\n\tconstructor(params: ClientParams) {\n\t\tconst apiKey = params.apiKey;\n\t\tif (apiKey === null || apiKey === undefined || apiKey.length === 0) {\n\t\t\tthrow new Error(\"Error: Instantiation failed: Please pass an API key\");\n\t\t}\n\t\tthis.clientData.token = apiKey;\n\t\tconst compression = params.enableCompression;\n\t\tif (compression !== null && compression !== undefined) {\n\t\t\tthis.clientData.enableCompression = compression;\n\t\t}\n\t\tthis.clientData.host = params.host;\n\t}\n}\n","import { Branches } from \"../collections/branches.js\";\nimport { Comments } from \"../collections/comments.js\";\nimport { Contributors } from \"../collections/contributors.js\";\nimport { Files } from \"../collections/files.js\";\nimport { Jwt } from \"../collections/jwt.js\";\nimport { Keys } from \"../collections/keys.js\";\nimport { Languages } from \"../collections/languages.js\";\nimport { Orders } from \"../collections/orders.js\";\nimport { PaymentCards } from \"../collections/payment_cards.js\";\nimport { PermissionTemplates } from \"../collections/permission_templates.js\";\nimport { Projects } from \"../collections/projects.js\";\nimport { QueuedProcesses } from \"../collections/queued_processes.js\";\nimport { Screenshots } from \"../collections/screenshots.js\";\nimport { Segments } from \"../collections/segments.js\";\nimport { Snapshots } from \"../collections/snapshots.js\";\nimport { Tasks } from \"../collections/tasks.js\";\nimport { TeamUserBillingDetails } from \"../collections/team_user_billing_details.js\";\nimport { TeamUsers } from \"../collections/team_users.js\";\nimport { Teams } from \"../collections/teams.js\";\nimport { TranslationProviders } from \"../collections/translation_providers.js\";\nimport { TranslationStatuses } from \"../collections/translation_statuses.js\";\nimport { Translations } from \"../collections/translations.js\";\nimport { UserGroups } from \"../collections/user_groups.js\";\nimport { Webhooks } from \"../collections/webhooks.js\";\nimport { BaseClient, ClientParams } from \"./base_client.js\";\n\nexport { ClientParams };\n\nexport class LokaliseApi extends BaseClient {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\t\tthis.clientData.version = params.version ?? \"api2\";\n\t}\n\n\tbranches(): Branches {\n\t\treturn new Branches(this.clientData);\n\t}\n\n\tcomments(): Comments {\n\t\treturn new Comments(this.clientData);\n\t}\n\n\tcontributors(): Contributors {\n\t\treturn new Contributors(this.clientData);\n\t}\n\n\tfiles(): Files {\n\t\treturn new Files(this.clientData);\n\t}\n\n\tjwt(): Jwt {\n\t\treturn new Jwt(this.clientData);\n\t}\n\n\tkeys(): Keys {\n\t\treturn new Keys(this.clientData);\n\t}\n\n\tlanguages(): Languages {\n\t\treturn new Languages(this.clientData);\n\t}\n\n\torders(): Orders {\n\t\treturn new Orders(this.clientData);\n\t}\n\n\tpaymentCards(): PaymentCards {\n\t\treturn new PaymentCards(this.clientData);\n\t}\n\n\tpermissionTemplates(): PermissionTemplates {\n\t\treturn new PermissionTemplates(this.clientData);\n\t}\n\n\tprojects(): Projects {\n\t\treturn new Projects(this.clientData);\n\t}\n\n\tqueuedProcesses(): QueuedProcesses {\n\t\treturn new QueuedProcesses(this.clientData);\n\t}\n\n\tscreenshots(): Screenshots {\n\t\treturn new Screenshots(this.clientData);\n\t}\n\n\tsegments(): Segments {\n\t\treturn new Segments(this.clientData);\n\t}\n\n\tsnapshots(): Snapshots {\n\t\treturn new Snapshots(this.clientData);\n\t}\n\n\ttasks(): Tasks {\n\t\treturn new Tasks(this.clientData);\n\t}\n\n\tteams(): Teams {\n\t\treturn new Teams(this.clientData);\n\t}\n\n\tteamUsers(): TeamUsers {\n\t\treturn new TeamUsers(this.clientData);\n\t}\n\n\tteamUserBillingDetails(): TeamUserBillingDetails {\n\t\treturn new TeamUserBillingDetails(this.clientData);\n\t}\n\n\ttranslations(): Translations {\n\t\treturn new Translations(this.clientData);\n\t}\n\n\ttranslationProviders(): TranslationProviders {\n\t\treturn new TranslationProviders(this.clientData);\n\t}\n\n\ttranslationStatuses(): TranslationStatuses {\n\t\treturn new TranslationStatuses(this.clientData);\n\t}\n\n\tuserGroups(): UserGroups {\n\t\treturn new UserGroups(this.clientData);\n\t}\n\n\twebhooks(): Webhooks {\n\t\treturn new Webhooks(this.clientData);\n\t}\n}\n","import { type ClientParams, LokaliseApi } from \"./lokalise_api.js\";\n\nexport class LokaliseApiOAuth extends LokaliseApi {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\n\t\tconst tokenType = params.tokenType;\n\t\tthis.clientData.tokenType = tokenType ?? \"Bearer\";\n\n\t\tthis.clientData.authHeader = \"Authorization\";\n\t}\n}\n","import type { OtaBundle as OtaBundleInterface } from \"../../interfaces/ota/ota_bundle.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaBundle extends BaseModel implements OtaBundleInterface {\n\tdeclare id: number;\n\tdeclare projectId: string;\n\tdeclare isPrerelease: boolean;\n\tdeclare isProduction: boolean;\n\tdeclare createdAt: string;\n\tdeclare createdBy: string;\n\tdeclare framework: string;\n\tdeclare description: string;\n\tdeclare isFrozen: boolean;\n\tdeclare lokaliseId: number;\n\tdeclare fileId: string;\n\tdeclare fileUrl: string;\n\tdeclare modifiedAt: string;\n}\n","import { BaseCollection } from \"../collections/base_collection.js\";\nimport type { Keyable } from \"../interfaces/keyable.js\";\nimport type { ApiError } from \"../models/api_error.js\";\n\nexport abstract class OtaCollection extends BaseCollection {\n\tprotected populateApiErrorFromJson(json: any): ApiError {\n\t\treturn json;\n\t}\n\n\tprotected doDelete(id: string | number, req_params: Keyable): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"DELETE\",\n\t\t\tparams,\n\t\t\tthis.returnJSONFromData,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected returnJSONFromData(json: Keyable): Keyable | Array {\n\t\treturn json.data;\n\t}\n}\n","import { OtaBundle } from \"../models/ota/ota_bundle.js\";\nimport type {\n\tOtaBundleUpdateData,\n\tOtaResourceDeleted,\n\tOtaTeamProject,\n} from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaBundleManagement extends OtaCollection {\n\tprotected static rootElementName = \"data\";\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundles/{:id}\";\n\tprotected static elementClass = OtaBundle;\n\n\tlist(request_params: OtaTeamProject): Promise {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tbundleId: string | number,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doGet(bundleId, requestParams);\n\t}\n\n\tupdate(\n\t\tbundleId: string | number,\n\t\tbundleParams: OtaBundleUpdateData,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\tbundleId,\n\t\t\tbundleParams,\n\t\t\trequestParams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t\t\"PATCH\",\n\t\t);\n\t}\n\n\tdelete(\n\t\tbundleId: string | number,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doDelete(bundleId, requestParams);\n\t}\n}\n","import type { OtaTeamProjectFramework } from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaBundlePublishing extends OtaCollection {\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/frameworks/{!:framework}/{!:action}\";\n\n\tpublish(\n\t\tbundleId: number | string,\n\t\trequest_params: OtaTeamProjectFramework,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ action: \"publish\" },\n\t\t};\n\t\treturn this.createPromise(\"POST\", params, null, this.handleReject, {\n\t\t\tbundleId,\n\t\t});\n\t}\n\n\tstage(\n\t\tbundleId: number | string,\n\t\trequest_params: OtaTeamProjectFramework,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ action: \"stage\" },\n\t\t};\n\t\treturn this.createPromise(\"POST\", params, null, this.handleReject, {\n\t\t\tbundleId,\n\t\t});\n\t}\n}\n","import type { OtaFreezePeriod as OtaFreezePeriodInterface } from \"../../interfaces/ota/ota_freeze_period.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaFreezePeriod\n\textends BaseModel\n\timplements OtaFreezePeriodInterface\n{\n\tdeclare id: number;\n\tdeclare projectId: number;\n\tdeclare bundleId: number;\n\tdeclare framework: string;\n\tdeclare from: string;\n\tdeclare to: string;\n}\n","import { OtaFreezePeriod } from \"../models/ota/ota_freeze_period.js\";\nimport type {\n\tOtaFreezePeriodParams,\n\tOtaResourceDeleted,\n\tOtaTeamProject,\n\tOtaTeamProjectFramework,\n} from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaFreezePeriods extends OtaCollection {\n\tprotected static rootElementName = \"data\";\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundle-freezes/{:id}\";\n\tprotected static elementClass = OtaFreezePeriod;\n\n\tlist(requestParams: OtaTeamProjectFramework): Promise {\n\t\treturn this.doList(requestParams);\n\t}\n\n\tcreate(\n\t\tfreezeParams: OtaFreezePeriodParams,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tfreezeParams,\n\t\t\trequestParams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tupdate(\n\t\tfreezeId: string | number,\n\t\tfreezeParams: OtaFreezePeriodParams,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doUpdate(freezeId, freezeParams, requestParams);\n\t}\n\n\tdelete(\n\t\tfreezeId: string | number,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doDelete(freezeId, requestParams);\n\t}\n}\n","import type { OtaSdkToken as OtaSdkTokenInterface } from \"../../interfaces/ota/ota_sdk_token.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaSdkToken extends BaseModel implements OtaSdkTokenInterface {\n\tdeclare id: number;\n\tdeclare token: string;\n\tdeclare projectId: number;\n\tdeclare lokaliseId: number;\n\tdeclare createdAt: string;\n}\n","import { OtaSdkToken } from \"../models/ota/ota_sdk_token.js\";\nimport type { OtaResourceDeleted, OtaTeamProject } from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaSdkTokens extends OtaCollection {\n\tprotected static rootElementName = \"data\";\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/tokens/{:id}\";\n\tprotected static elementClass = OtaSdkToken;\n\n\tlist(request_params: OtaTeamProject): Promise {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(request_params: OtaTeamProject): Promise {\n\t\treturn this.doCreate(null, request_params, this.populateObjectFromJsonRoot);\n\t}\n\n\tdelete(\n\t\ttokenId: string | number,\n\t\trequest_params: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doDelete(tokenId, request_params);\n\t}\n}\n","import type { OtaStatistics as OtaStatisticsInterface } from \"../../interfaces/ota/ota_statistics.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaStatistics extends BaseModel implements OtaStatisticsInterface {\n\tdeclare lokaliseProjectId: string;\n\tdeclare from: string;\n\tdeclare to: string;\n\tdeclare sdk: string;\n\tdeclare daily: Array<{\n\t\tdate: string;\n\t\tdownloads: number;\n\t\ttrafficMb: number;\n\t\ttrafficBytes: string;\n\t\tframework: string;\n\t}>;\n\tdeclare monthly: Array<{\n\t\tdate: string;\n\t\tdownloads: number;\n\t\ttrafficMb: number;\n\t\ttrafficBytes: string;\n\t\tframework: string;\n\t}>;\n\tdeclare totals: {\n\t\tdownloads: number;\n\t\ttrafficMb: number;\n\t\ttrafficBytes: string;\n\t};\n}\n","import { OtaStatistics } from \"../models/ota/ota_statistics.js\";\nimport type { OtaTeamProject, OtaUsageParams } from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaUsageStatistics extends OtaCollection {\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/stats\";\n\tprotected static elementClass = OtaStatistics;\n\n\tget(\n\t\tbundle_params: OtaUsageParams,\n\t\trequest_params: OtaTeamProject,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...bundle_params,\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n}\n","import { OtaBundleManagement } from \"../ota_collections/ota_bundle_management.js\";\nimport { OtaBundlePublishing } from \"../ota_collections/ota_bundle_publishing.js\";\nimport { OtaFreezePeriods } from \"../ota_collections/ota_freeze_periods.js\";\nimport { OtaSdkTokens } from \"../ota_collections/ota_sdk_tokens.js\";\nimport { OtaUsageStatistics } from \"../ota_collections/ota_usage_statistics.js\";\nimport { BaseClient, type ClientParams } from \"./base_client.js\";\n\nexport class LokaliseApiOta extends BaseClient {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\n\t\tthis.clientData.tokenType = params.tokenType ?? \"Bearer\";\n\n\t\tthis.clientData.authHeader = \"Authorization\";\n\n\t\tthis.clientData.host = this.clientData.host ?? \"https://ota.lokalise.com\";\n\n\t\tthis.clientData.version = params.version ?? \"v3\";\n\t}\n\n\totaBundleManagement(): OtaBundleManagement {\n\t\treturn new OtaBundleManagement(this.clientData);\n\t}\n\n\totaBundlePublishing(): OtaBundlePublishing {\n\t\treturn new OtaBundlePublishing(this.clientData);\n\t}\n\n\totaUsageStatistics(): OtaUsageStatistics {\n\t\treturn new OtaUsageStatistics(this.clientData);\n\t}\n\n\totaFreezePeriods(): OtaFreezePeriods {\n\t\treturn new OtaFreezePeriods(this.clientData);\n\t}\n\n\totaSdkTokens(): OtaSdkTokens {\n\t\treturn new OtaSdkTokens(this.clientData);\n\t}\n}\n","import type { OtaBundleArchive as OtaBundleArchiveInterface } from \"../../interfaces/ota/ota_bundle_archive.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaBundleArchive\n\textends BaseModel\n\timplements OtaBundleArchiveInterface\n{\n\tdeclare url: string;\n\tdeclare version: number;\n}\n","import { OtaBundleArchive } from \"../models/ota/ota_bundle_archive.js\";\nimport type {\n\tOtaProjectFramework,\n\tOtaRequestBundleParams,\n} from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaBundles extends OtaCollection {\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"lokalise/projects/{!:lokaliseProjectId}/frameworks/{!:framework}\";\n\tprotected static elementClass = OtaBundleArchive;\n\n\tget(\n\t\tbundle_params: OtaRequestBundleParams,\n\t\trequest_params: OtaProjectFramework,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...bundle_params,\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n}\n","import { OtaBundles } from \"../ota_collections/ota_bundles.js\";\nimport { BaseClient, type ClientParams } from \"./base_client.js\";\n\nexport class LokaliseOtaBundles extends BaseClient {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\n\t\tthis.clientData.authHeader = \"x-ota-api-token\";\n\t\tthis.clientData.host = this.clientData.host ?? \"https://ota.lokalise.com\";\n\n\t\tthis.clientData.version = params.version ?? \"v3\";\n\t}\n\n\totaBundles(): OtaBundles {\n\t\treturn new OtaBundles(this.clientData);\n\t}\n}\n","import type { AuthData as AuthDataInterface } from \"../interfaces/auth_data.js\";\nimport { LokalisePkg } from \"../lokalise/pkg.js\";\nimport type { HttpMethod } from \"../types/http_method.js\";\n\nexport class AuthRequest {\n\tstatic async createPromise(\n\t\turi: string,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\t{ host, version }: AuthDataInterface,\n\t): Promise {\n\t\tconst fullUri = `/${version}/${uri}`;\n\t\tconst target = new URL(fullUri, host);\n\n\t\tconst options: RequestInit = {\n\t\t\tmethod: method,\n\t\t\theaders: await AuthRequest.buildHeaders(),\n\t\t\tbody: JSON.stringify(body),\n\t\t};\n\n\t\treturn AuthRequest.fetchAndHandleResponse(target, options);\n\t}\n\n\tprivate static async fetchAndHandleResponse(\n\t\ttarget: URL,\n\t\toptions: RequestInit,\n\t): Promise {\n\t\ttry {\n\t\t\tconst response = await fetch(target, options);\n\t\t\tconst responseJSON = await response.json();\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn Promise.resolve({\n\t\t\t\t\tjson: responseJSON,\n\t\t\t\t\theaders: response.headers,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn Promise.reject({\n\t\t\t\t...{ code: response.status },\n\t\t\t\t...responseJSON,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\treturn Promise.reject({\n\t\t\t\tmessage: (err as Error).message,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate static async buildHeaders(): Promise {\n\t\tconst headers = new Headers({\n\t\t\tAccept: \"application/json\",\n\t\t\t\"User-Agent\": `node-lokalise-api/${await LokalisePkg.getVersion()}`,\n\t\t\t\"Content-type\": \"application/json\",\n\t\t});\n\n\t\treturn headers;\n\t}\n}\n","import type { AuthData as AuthDataInterface } from \"../interfaces/auth_data.js\";\nimport type { AuthError } from \"../models/auth_error.js\";\nimport type { RequestTokenResponse } from \"../models/request_token_response.js\";\nimport { AuthRequest } from \"./auth_request.js\";\n\nexport class LokaliseAuth {\n\tauthData: AuthDataInterface = {\n\t\tclient_id: \"\",\n\t\tclient_secret: \"\",\n\t};\n\n\t/*\n\t * Instantiate LokaliseAuth to work with OAuth 2 tokens\n\t * @param clientId string, mandatory\n\t * @param clientSecret string, mandatory\n\t * @returns LokaliseAuth object to work with.\n\t */\n\tconstructor(\n\t\tclientId: string,\n\t\tclientSecret: string,\n\t\thost?: string,\n\t\tversion?: string,\n\t) {\n\t\tif (\n\t\t\tclientId == null ||\n\t\t\tclientId.length === 0 ||\n\t\t\tclientSecret == null ||\n\t\t\tclientSecret.length === 0\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Error: Instantiation failed: Please pass client id and client secret\",\n\t\t\t);\n\t\t}\n\n\t\tthis.authData.client_id = clientId;\n\t\tthis.authData.client_secret = clientSecret;\n\t\tthis.authData.host = host ?? \"https://app.lokalise.com\";\n\t\tthis.authData.version = version ?? \"oauth2\";\n\t}\n\n\tauth(\n\t\tscope: string | string[],\n\t\tredirect_uri?: string,\n\t\tstate?: string,\n\t): string {\n\t\tconst scopeString = Array.isArray(scope) ? scope.join(\" \") : scope;\n\n\t\tconst params: { [key: string]: string } = {\n\t\t\tclient_id: this.authData.client_id,\n\t\t\tscope: scopeString,\n\t\t\t...(state && { state }),\n\t\t\t...(redirect_uri && { redirect_uri }),\n\t\t};\n\n\t\treturn this.buildUrl(params);\n\t}\n\n\tasync token(code: string): Promise {\n\t\tconst params = {\n\t\t\t...this.base_params(),\n\t\t\t...{\n\t\t\t\tcode: code,\n\t\t\t\tgrant_type: \"authorization_code\",\n\t\t\t},\n\t\t};\n\n\t\treturn await this.doRequest(params);\n\t}\n\n\tasync refresh(refresh_token: string): Promise {\n\t\tconst params = {\n\t\t\t...this.base_params(),\n\t\t\t...{\n\t\t\t\trefresh_token: refresh_token,\n\t\t\t\tgrant_type: \"refresh_token\",\n\t\t\t},\n\t\t};\n\n\t\treturn await this.doRequest(params);\n\t}\n\n\tprivate async doRequest(params: { [key: string]: string }): Promise {\n\t\ttry {\n\t\t\tconst data = await AuthRequest.createPromise(\n\t\t\t\t\"token\",\n\t\t\t\t\"POST\",\n\t\t\t\tparams,\n\t\t\t\tthis.authData,\n\t\t\t);\n\n\t\t\treturn data.json;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(this.handleReject(err));\n\t\t}\n\t}\n\n\tprivate buildUrl(params: { [key: string]: string }): string {\n\t\tconst url = new URL(\"auth\", this.authData.host);\n\t\turl.search = new URLSearchParams(params).toString();\n\t\treturn url.toString();\n\t}\n\n\tprivate base_params(): { [key: string]: string } {\n\t\treturn {\n\t\t\tclient_id: this.authData.client_id,\n\t\t\tclient_secret: this.authData.client_secret,\n\t\t};\n\t}\n\n\tprivate handleReject(data: unknown): AuthError {\n\t\treturn data;\n\t}\n}\n"],"mappings":"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","names":["Jwt","TeamUserBillingDetails","Jwt","TeamUserBillingDetails"]} \ No newline at end of file +{"version":3,"sources":["../src/models/base_model.ts","../src/models/branch.ts","../src/lokalise/pkg.ts","../src/http_client/base.ts","../src/models/paginated_result.ts","../src/models/cursor_paginated_result.ts","../src/collections/base_collection.ts","../src/collections/branches.ts","../src/models/comment.ts","../src/collections/comments.ts","../src/models/contributor.ts","../src/collections/contributors.ts","../src/models/file.ts","../src/models/queued_process.ts","../src/collections/files.ts","../src/models/jwt.ts","../src/collections/jwt.ts","../src/models/key.ts","../src/collections/keys.ts","../src/models/language.ts","../src/collections/languages.ts","../src/models/order.ts","../src/collections/orders.ts","../src/models/payment_card.ts","../src/collections/payment_cards.ts","../src/models/permission_template.ts","../src/collections/permission_templates.ts","../src/models/project.ts","../src/collections/projects.ts","../src/collections/queued_processes.ts","../src/models/screenshot.ts","../src/collections/screenshots.ts","../src/models/segment.ts","../src/collections/segments.ts","../src/models/snapshot.ts","../src/collections/snapshots.ts","../src/models/task.ts","../src/collections/tasks.ts","../src/models/team_user_billing_details.ts","../src/collections/team_user_billing_details.ts","../src/models/team_user.ts","../src/collections/team_users.ts","../src/models/team.ts","../src/collections/teams.ts","../src/models/translation_provider.ts","../src/collections/translation_providers.ts","../src/models/translation_status.ts","../src/collections/translation_statuses.ts","../src/models/translation.ts","../src/collections/translations.ts","../src/models/user_group.ts","../src/collections/user_groups.ts","../src/models/webhook.ts","../src/collections/webhooks.ts","../src/lokalise/base_client.ts","../src/lokalise/lokalise_api.ts","../src/lokalise/lokalise_api_oauth.ts","../src/models/ota/ota_bundle.ts","../src/ota_collections/ota_collection.ts","../src/ota_collections/ota_bundle_management.ts","../src/ota_collections/ota_bundle_publishing.ts","../src/models/ota/ota_freeze_period.ts","../src/ota_collections/ota_freeze_periods.ts","../src/models/ota/ota_sdk_token.ts","../src/ota_collections/ota_sdk_tokens.ts","../src/models/ota/ota_statistics.ts","../src/ota_collections/ota_usage_statistics.ts","../src/lokalise/lokalise_api_ota.ts","../src/models/ota/ota_bundle_archive.ts","../src/ota_collections/ota_bundles.ts","../src/lokalise/lokalise_ota_bundles.ts","../src/oauth2/auth_request.ts","../src/oauth2/lokalise_auth.ts"],"sourcesContent":["export abstract class BaseModel {\n\tconstructor(params: { [key: string]: any }) {\n\t\tfor (const key of Object.keys(params)) {\n\t\t\t(this)[key] = params[key];\n\t\t}\n\t}\n}\n","import type { Branch as BranchInterface } from \"../interfaces/branch.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Branch extends BaseModel implements BranchInterface {\n\tdeclare branch_id: number;\n\tdeclare name: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n}\n","import { readFile } from \"node:fs/promises\";\nimport type { Keyable } from \"../interfaces/keyable.js\";\n\nexport class LokalisePkg {\n\tstatic pkgPath() {\n\t\treturn \"../../package.json\";\n\t}\n\n\tstatic async getVersion(): Promise {\n\t\tlet pkg: Keyable | null;\n\n\t\ttry {\n\t\t\tpkg = JSON.parse(\n\t\t\t\t(\n\t\t\t\t\tawait readFile(new URL(LokalisePkg.pkgPath(), import.meta.url))\n\t\t\t\t).toString(),\n\t\t\t);\n\t\t} catch (_e) {\n\t\t\tpkg = null;\n\t\t}\n\n\t\treturn pkg ? pkg.version : \"unknown\";\n\t}\n}\n","import type { ClientData } from \"../interfaces/client_data.js\";\nimport type { Keyable, WritableKeyable } from \"../interfaces/keyable.js\";\nimport { LokalisePkg } from \"../lokalise/pkg.js\";\nimport type { HttpMethod } from \"../types/http_method.js\";\n\nexport class ApiRequest {\n\tpublic promise: Promise;\n\tpublic params: WritableKeyable = {};\n\tprotected readonly urlRoot = \"https://api.lokalise.com/api2/\";\n\n\tconstructor(\n\t\turi: string,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\tparams: Keyable,\n\t\tclientData: ClientData,\n\t) {\n\t\t// Since we modify params, we need to make a copy of it so we don't modify the original\n\t\tthis.params = { ...params };\n\t\tthis.promise = this.createPromise(uri, method, body, clientData);\n\t}\n\n\tprotected async createPromise(\n\t\turi: string,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\tclientData: ClientData,\n\t): Promise {\n\t\tconst url = this.composeURI(`/${clientData.version}/${uri}`);\n\n\t\tconst prefixUrl = clientData.host ?? this.urlRoot;\n\n\t\tconst headers = await this.buildHeaders(clientData, method, body);\n\n\t\tconst options: RequestInit = {\n\t\t\tmethod: method,\n\t\t\theaders: headers,\n\t\t\t...(method !== \"GET\" && body ? { body: JSON.stringify(body) } : {}),\n\t\t};\n\n\t\tconst target = new URL(url, prefixUrl);\n\n\t\ttarget.search = new URLSearchParams(this.params).toString();\n\n\t\treturn this.fetchAndHandleResponse(target, options);\n\t}\n\n\tprotected async fetchAndHandleResponse(\n\t\ttarget: URL,\n\t\toptions: RequestInit,\n\t): Promise {\n\t\ttry {\n\t\t\tconst response = await fetch(target, options);\n\n\t\t\treturn this.processResponse(response);\n\t\t} catch (err) {\n\t\t\treturn Promise.reject({ message: (err as Error).message });\n\t\t}\n\t}\n\n\tprotected async processResponse(response: Response): Promise {\n\t\tlet responseJSON: any = null;\n\n\t\ttry {\n\t\t\tif (response.status === 204) {\n\t\t\t\tresponseJSON = null;\n\t\t\t} else {\n\t\t\t\tresponseJSON = await response.json();\n\t\t\t}\n\t\t} catch (_error) {\n\t\t\treturn Promise.reject({\n\t\t\t\tmessage: response.statusText,\n\t\t\t\tcode: response.status,\n\t\t\t});\n\t\t}\n\n\t\tif (response.ok) {\n\t\t\treturn {\n\t\t\t\tjson: responseJSON,\n\t\t\t\theaders: response.headers,\n\t\t\t};\n\t\t}\n\n\t\treturn Promise.reject(this.getErrorFromResp(responseJSON));\n\t}\n\n\tprotected async buildHeaders(\n\t\tclientData: ClientData,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t): Promise {\n\t\tconst headers = new Headers({\n\t\t\tAccept: \"application/json\",\n\t\t\t\"User-Agent\": `node-lokalise-api/${await LokalisePkg.getVersion()}`,\n\t\t});\n\n\t\theaders.append(\n\t\t\tclientData.authHeader,\n\t\t\t`${clientData.tokenType} ${clientData.token}`,\n\t\t);\n\n\t\tif (clientData.enableCompression) {\n\t\t\theaders.append(\"Accept-Encoding\", \"gzip,deflate\");\n\t\t}\n\n\t\tif (method !== \"GET\" && body) {\n\t\t\theaders.append(\"Content-type\", \"application/json\");\n\t\t}\n\n\t\treturn headers;\n\t}\n\n\tprotected getErrorFromResp(respJson: any): any {\n\t\tif (typeof respJson.error === \"object\") {\n\t\t\treturn respJson.error;\n\t\t}\n\t\treturn respJson;\n\t}\n\n\tprotected composeURI(rawUri: string): string {\n\t\tconst regexp = /{(!{0,1}):(\\w*)}/g;\n\t\tconst uri = rawUri.replace(regexp, this.mapUriParams());\n\t\treturn uri.endsWith(\"/\") ? uri.slice(0, -1) : uri;\n\t}\n\n\tprotected mapUriParams() {\n\t\treturn (_entity: any, isMandaratory: string, paramName: string): string => {\n\t\t\tif (this.params[paramName] != null) {\n\t\t\t\tconst t_param = this.params[paramName];\n\n\t\t\t\t// We delete the param so we don't send it as a query param as well.\n\t\t\t\tdelete this.params[paramName];\n\n\t\t\t\treturn t_param;\n\t\t\t}\n\t\t\tif (isMandaratory === \"!\") {\n\t\t\t\tthrow new Error(`Missing required param: ${paramName}`);\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\t}\n}\n","import type { PaginatedResult as PaginatedResultInterface } from \"../interfaces/paginated_result.js\";\n\nexport class PaginatedResult implements PaginatedResultInterface {\n\ttotalResults: number;\n\ttotalPages: number;\n\tresultsPerPage: number;\n\tcurrentPage: number;\n\titems: any;\n\n\tconstructor(items: any, headers: Headers) {\n\t\tthis.totalResults = this.safeParseInt(\n\t\t\theaders.get(\"x-pagination-total-count\"),\n\t\t);\n\t\tthis.totalPages = this.safeParseInt(headers.get(\"x-pagination-page-count\"));\n\t\tthis.resultsPerPage = this.safeParseInt(headers.get(\"x-pagination-limit\"));\n\t\tthis.currentPage = this.safeParseInt(headers.get(\"x-pagination-page\"));\n\t\tthis.items = items;\n\t}\n\n\thasNextPage(): boolean {\n\t\treturn this.currentPage > 0 && this.currentPage < this.totalPages;\n\t}\n\n\thasPrevPage(): boolean {\n\t\treturn this.currentPage > 1;\n\t}\n\n\tisLastPage(): boolean {\n\t\treturn !this.hasNextPage();\n\t}\n\n\tisFirstPage(): boolean {\n\t\treturn !this.hasPrevPage();\n\t}\n\n\tnextPage(): number {\n\t\tif (this.isLastPage()) {\n\t\t\treturn this.currentPage;\n\t\t}\n\t\treturn this.currentPage + 1;\n\t}\n\n\tprevPage(): number {\n\t\tif (this.isFirstPage()) {\n\t\t\treturn this.currentPage;\n\t\t}\n\t\treturn this.currentPage - 1;\n\t}\n\n\tprivate safeParseInt(str: string | null): number {\n\t\tif (!str || Number.isNaN(Number(str))) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn Number.parseInt(str, 10);\n\t}\n}\n","import type { CursorPaginatedResult as CursorPaginatedResultInterface } from \"../interfaces/cursor_paginated_result.js\";\nimport { PaginatedResult } from \"./paginated_result.js\";\n\nexport class CursorPaginatedResult\n\textends PaginatedResult\n\timplements CursorPaginatedResultInterface\n{\n\tnextCursor: string | null;\n\n\tconstructor(items: any[], headers: Headers) {\n\t\tsuper(items, headers);\n\n\t\tthis.nextCursor = headers.get(\"x-pagination-next-cursor\");\n\t}\n\n\thasNextCursor(): boolean {\n\t\treturn this.nextCursor !== null;\n\t}\n}\n","import { ApiRequest } from \"../http_client/base.js\";\nimport type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { ClientData } from \"../interfaces/client_data.js\";\nimport type { Keyable } from \"../interfaces/keyable.js\";\nimport type { ApiError } from \"../models/api_error.js\";\nimport { CursorPaginatedResult } from \"../models/cursor_paginated_result.js\";\nimport { PaginatedResult } from \"../models/paginated_result.js\";\nimport type { HttpMethod } from \"../types/http_method.js\";\n\ntype RejectHandler = (data: any) => ApiError;\ntype ResolveHandler = (json: Keyable, headers: Headers, ...args: any[]) => any;\n\nexport abstract class BaseCollection {\n\treadonly clientData: ClientData;\n\tprotected static rootElementName: string;\n\tprotected static rootElementNameSingular: string | null;\n\tprotected static endpoint: string | null;\n\tprotected static prefixURI: string | null;\n\tprotected static elementClass: any;\n\n\t// Secondaries are used when an instance of a different class has to be created\n\t// For example, uploading a File may return a QueuedProcess\n\tprotected static secondaryElementNameSingular: string | null;\n\tprotected static secondaryElementClass: any;\n\n\tconstructor(clientData: ClientData) {\n\t\tthis.clientData = clientData;\n\t}\n\n\tprotected doList(req_params: Keyable): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doListCursor(req_params: Keyable): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJsonCursor,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doGet(id: string | number, req_params: Keyable = {}): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doDelete(\n\t\tid: string | number,\n\t\treq_params: Keyable = {},\n\t): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"DELETE\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected doCreate(\n\t\tbody: Keyable | null,\n\t\treq_params: Keyable = {},\n\t\tresolveFn = this.populateObjectFromJson,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\tparams,\n\t\t\tresolveFn,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t);\n\t}\n\n\tprotected doUpdate(\n\t\tid: string | number,\n\t\tbody: Keyable | null,\n\t\treq_params: Keyable,\n\t\tresolveFn = this.populateObjectFromJsonRoot,\n\t\tmethod: HttpMethod = \"PUT\",\n\t): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tresolveFn,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t);\n\t}\n\n\tprotected populateObjectFromJsonRoot(json: Keyable, headers: Headers): any {\n\t\tconst childClass = this.constructor;\n\t\tlet jsonData = json;\n\n\t\tif (childClass.rootElementNameSingular) {\n\t\t\tjsonData = Object(jsonData)[childClass.rootElementNameSingular];\n\t\t}\n\n\t\treturn this.populateObjectFromJson(jsonData, headers);\n\t}\n\n\tprotected populateSecondaryObjectFromJsonRoot(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): any {\n\t\tconst childClass = this.constructor;\n\n\t\tconst secondaryJson =\n\t\t\tObject(json)[childClass.secondaryElementNameSingular];\n\n\t\treturn this.populateObjectFromJson(secondaryJson, headers, true);\n\t}\n\n\tprotected populateObjectFromJson(\n\t\tjson: Keyable,\n\t\t_headers: Headers,\n\t\tsecondary = false,\n\t): any {\n\t\tconst childClass = this.constructor;\n\n\t\treturn secondary\n\t\t\t? new childClass.secondaryElementClass(json)\n\t\t\t: new childClass.elementClass(json);\n\t}\n\n\tprotected populateArrayFromJsonBulk(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): BulkResult | this[] {\n\t\tconst childClass = this.constructor;\n\t\tconst arr: this[] = [];\n\t\tconst jsonArray = json[(childClass).rootElementName];\n\t\tfor (const obj of jsonArray) {\n\t\t\tarr.push(this.populateObjectFromJson(obj, headers));\n\t\t}\n\t\tconst result: BulkResult = {\n\t\t\terrors: json.errors,\n\t\t\titems: arr,\n\t\t};\n\t\treturn result;\n\t}\n\n\tprotected populateArrayFromJson(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): PaginatedResult | Keyable | this[] {\n\t\tconst resultArray = this.populateArray(json, headers);\n\n\t\treturn this.isPaginated(headers)\n\t\t\t? new PaginatedResult(resultArray, headers)\n\t\t\t: resultArray;\n\t}\n\n\tprivate populateArray(json: Keyable, headers: Headers): this[] {\n\t\tconst childClass = this.constructor;\n\n\t\treturn json[(childClass).rootElementName].map((obj: Keyable) =>\n\t\t\tthis.populateObjectFromJson(obj, headers),\n\t\t);\n\t}\n\n\tprivate isPaginated(headers: Headers): boolean {\n\t\treturn (\n\t\t\t!!headers.get(\"x-pagination-total-count\") &&\n\t\t\t!!headers.get(\"x-pagination-page\")\n\t\t);\n\t}\n\n\tprotected populateArrayFromJsonCursor(\n\t\tjson: Keyable,\n\t\theaders: Headers,\n\t): CursorPaginatedResult | Keyable | this[] {\n\t\tconst childClass = this.constructor;\n\t\tconst arr: this[] = [];\n\t\tconst jsonArray = json[(childClass).rootElementName];\n\n\t\tfor (const obj of jsonArray) {\n\t\t\tarr.push(this.populateObjectFromJson(obj, headers));\n\t\t}\n\n\t\treturn new CursorPaginatedResult(arr, headers);\n\t}\n\n\tprotected populateApiErrorFromJson(json: any): ApiError {\n\t\treturn json;\n\t}\n\n\tprotected returnBareJSON(\n\t\tjson: Keyable | Array,\n\t): Keyable | Array {\n\t\treturn json;\n\t}\n\n\tprotected handleReject(data: any): ApiError {\n\t\treturn this.populateApiErrorFromJson(data);\n\t}\n\n\tprotected async createPromise(\n\t\tmethod: HttpMethod,\n\t\tparams: Keyable,\n\t\tresolveFn: ResolveHandler | null,\n\t\trejectFn: RejectHandler,\n\t\tbody: object | object[] | null,\n\t\turi: string | null = null,\n\t): Promise {\n\t\tconst request = this.prepareRequest(method, body, params, uri);\n\n\t\ttry {\n\t\t\tconst data = await this.sendRequest(request);\n\n\t\t\treturn resolveFn ? resolveFn.call(this, data.json, data.headers) : null;\n\t\t} catch (err) {\n\t\t\treturn this.handleError(err, rejectFn);\n\t\t}\n\t}\n\n\tprotected sendRequest(request: ApiRequest): Promise {\n\t\treturn request.promise;\n\t}\n\n\tprotected handleError(err: any, rejectFn: RejectHandler): Promise {\n\t\treturn Promise.reject(rejectFn.call(this, err));\n\t}\n\n\tprotected prepareRequest(\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\tparams: Keyable,\n\t\turi: string | null,\n\t): ApiRequest {\n\t\treturn new ApiRequest(\n\t\t\tthis.getUri(uri),\n\t\t\tmethod,\n\t\t\tbody,\n\t\t\tparams,\n\t\t\tthis.clientData,\n\t\t);\n\t}\n\n\tprotected getUri(uri: string | null): string {\n\t\tconst childClass = this.constructor;\n\n\t\t// Use a local variable instead of reassigning the parameter\n\t\tconst resolvedUri = uri ? uri : childClass.prefixURI;\n\n\t\treturn resolvedUri;\n\t}\n\n\tprotected objToArray(raw_body: Keyable | Keyable[]): Array {\n\t\tif (!Array.isArray(raw_body)) {\n\t\t\treturn Array(raw_body);\n\t\t}\n\t\treturn raw_body;\n\t}\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Branch } from \"../models/branch.js\";\nimport type {\n\tBranchDeleted,\n\tBranchMerged,\n\tBranchParams,\n\tMergeBranchParams,\n} from \"../types/branches.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Branches extends BaseCollection {\n\tprotected static rootElementName = \"branches\";\n\tprotected static rootElementNameSingular = \"branch\";\n\tprotected static prefixURI = \"projects/{!:project_id}/branches/{:id}\";\n\tprotected static elementClass = Branch;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tbranch_params: BranchParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tbranch_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\tbranch_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(branch_id, request_params);\n\t}\n\n\tupdate(\n\t\tbranch_id: string | number,\n\t\tbranch_params: BranchParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(branch_id, branch_params, request_params);\n\t}\n\n\tdelete(\n\t\tbranch_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(branch_id, request_params);\n\t}\n\n\tmerge(\n\t\tbranch_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t\tbody: MergeBranchParams = {},\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ id: branch_id },\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"projects/{!:project_id}/branches/{:id}/merge\",\n\t\t);\n\t}\n}\n","import type { Comment as CommentInterface } from \"../interfaces/comment.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Comment extends BaseModel implements CommentInterface {\n\tdeclare comment_id: number;\n\tdeclare key_id: number;\n\tdeclare comment: string;\n\tdeclare added_by: number;\n\tdeclare added_by_email: string;\n\tdeclare added_at: string;\n\tdeclare added_at_timestamp: number;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Comment } from \"../models/comment.js\";\nimport type {\n\tCommentData,\n\tCommentDeleted,\n\tKeyProjectPagination,\n\tProjectAndKey,\n} from \"../types/comments.js\";\nimport type { ProjectWithPagination } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Comments extends BaseCollection {\n\tprotected static rootElementName = \"comments\";\n\tprotected static rootElementNameSingular = \"comment\";\n\tprotected static prefixURI =\n\t\t\"projects/{!:project_id}/keys/{!:key_id}/comments/{:id}\";\n\tprotected static elementClass = Comment;\n\n\tlist(\n\t\trequest_params: KeyProjectPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tcomment_params: CommentData | CommentData[],\n\t\trequest_params: ProjectAndKey,\n\t): Promise {\n\t\tconst body = { comments: this.objToArray(comment_params) };\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJson);\n\t}\n\n\tget(\n\t\tcomment_id: string | number,\n\t\trequest_params: ProjectAndKey,\n\t): Promise {\n\t\treturn this.doGet(comment_id, request_params);\n\t}\n\n\tdelete(\n\t\tcomment_id: string | number,\n\t\trequest_params: ProjectAndKey,\n\t): Promise {\n\t\treturn this.doDelete(comment_id, request_params);\n\t}\n\n\tlist_project_comments(\n\t\tparams: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"projects/{!:project_id}/comments\",\n\t\t);\n\t}\n}\n","import type { Contributor as ContributorInterface } from \"../interfaces/contributor.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Contributor extends BaseModel implements ContributorInterface {\n\tdeclare user_id: number;\n\tdeclare email: string;\n\tdeclare fullname: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare is_admin: boolean; //deprecated\n\tdeclare is_reviewer: boolean; //deprecated\n\tdeclare languages: Array<{\n\t\tlang_id: number;\n\t\tlang_iso: string;\n\t\tlang_name: string;\n\t\tis_writable: boolean;\n\t}>;\n\tdeclare admin_rights: string[];\n\tdeclare role_id: number;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Contributor } from \"../models/contributor.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tContributorCreateData,\n\tContributorDeleted,\n\tContributorUpdateData,\n} from \"../types/contributors.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Contributors extends BaseCollection {\n\tprotected static rootElementName = \"contributors\";\n\tprotected static rootElementNameSingular = \"contributor\";\n\tprotected static prefixURI = \"projects/{!:project_id}/contributors/{:id}\";\n\tprotected static elementClass = Contributor;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tcontributor_params: ContributorCreateData | ContributorCreateData[],\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst body = { contributors: this.objToArray(contributor_params) };\n\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJson);\n\t}\n\n\tget(\n\t\tcontributor_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(contributor_id, request_params);\n\t}\n\n\tupdate(\n\t\tcontributor_id: string | number,\n\t\tcontributor_params: ContributorUpdateData,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(contributor_id, contributor_params, request_params);\n\t}\n\n\tdelete(\n\t\tcontributor_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(contributor_id, request_params);\n\t}\n}\n","import type { File as FileInterface } from \"../interfaces/file.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class File extends BaseModel implements FileInterface {\n\tdeclare file_id: number;\n\tdeclare filename: string;\n\tdeclare key_count: number;\n}\n","import type { Keyable } from \"../interfaces/keyable.js\";\nimport type { QueuedProcess as QueuedProcessInterface } from \"../interfaces/queued_process.js\";\nimport { BaseModel } from \"./base_model.js\";\n\ntype ProcessDetails = {\n\tfiles: Keyable[];\n\t[key: string]: any;\n};\n\nexport class QueuedProcess extends BaseModel implements QueuedProcessInterface {\n\tdeclare process_id: string;\n\tdeclare type: string;\n\tdeclare status: string;\n\tdeclare message: string;\n\tdeclare created_by: string;\n\tdeclare created_by_email: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare details: ProcessDetails;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { File } from \"../models/file.js\";\nimport { QueuedProcess } from \"../models/queued_process.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tDownloadBundle,\n\tDownloadFileParams,\n\tFileDeleted,\n\tListFileParams,\n\tUploadFileParams,\n} from \"../types/files.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Files extends BaseCollection {\n\tprotected static rootElementName = \"files\";\n\tprotected static prefixURI = \"projects/{!:project_id}/files/{:id}\";\n\tprotected static elementClass = File;\n\n\tprotected static secondaryElementNameSingular = \"process\";\n\tprotected static secondaryElementClass = QueuedProcess;\n\n\tlist(request_params: ListFileParams): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tupload(project_id: string, upload: UploadFileParams): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\t{ project_id: project_id },\n\t\t\tthis.populateSecondaryObjectFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tupload,\n\t\t\t\"projects/{!:project_id}/files/upload\",\n\t\t);\n\t}\n\n\tdownload(\n\t\tproject_id: string,\n\t\tdownload: DownloadFileParams,\n\t): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\t{ project_id: project_id },\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tdownload,\n\t\t\t\"projects/{!:project_id}/files/download\",\n\t\t);\n\t}\n\n\tdelete(\n\t\tfile_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(file_id, request_params);\n\t}\n}\n","import type { Jwt as JwtInterface } from \"../interfaces/jwt.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Jwt extends BaseModel implements JwtInterface {\n\tdeclare jwt: string;\n}\n","import { Jwt as JwtModel } from \"../models/jwt.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Jwt extends BaseCollection {\n\tprotected static prefixURI = \"projects/{!:project_id}/tokens\";\n\tprotected static elementClass = JwtModel;\n\n\tcreate(project_id: string, body = { service: \"ota\" }): Promise {\n\t\tconst request_params = { project_id: project_id };\n\t\treturn this.doCreate(body, request_params, this.populateObjectFromJson);\n\t}\n}\n","import type { Comment } from \"../interfaces/comment.js\";\nimport type { Key as KeyInterface } from \"../interfaces/key.js\";\nimport type { Screenshot } from \"../interfaces/screenshot.js\";\nimport type { Translation } from \"../interfaces/translation.js\";\nimport type { Filenames, Filenames as Keynames } from \"../types/filenames.js\";\nimport type { SupportedPlatforms } from \"../types/supported_platforms.js\";\nimport { BaseModel } from \"./base_model.js\";\n\ntype KeyComment = Omit;\n\nexport class Key extends BaseModel implements KeyInterface {\n\tdeclare key_id: number;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare key_name: Keynames;\n\tdeclare filenames: Filenames;\n\tdeclare description: string;\n\tdeclare platforms: SupportedPlatforms[];\n\tdeclare tags: string[];\n\tdeclare comments: KeyComment[];\n\tdeclare screenshots: Screenshot[];\n\tdeclare translations: Translation[];\n\tdeclare is_plural: boolean;\n\tdeclare plural_name: string;\n\tdeclare is_hidden: boolean;\n\tdeclare is_archived: boolean;\n\tdeclare context: string;\n\tdeclare base_words: number;\n\tdeclare char_limit: number;\n\tdeclare custom_attributes: any[] | string;\n\tdeclare modified_at: string;\n\tdeclare modified_at_timestamp: number;\n\tdeclare translations_modified_at: string;\n\tdeclare translations_modified_at_timestamp: number;\n}\n","import type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { CursorPaginatedResult } from \"../interfaces/cursor_paginated_result.js\";\nimport { Key } from \"../models/key.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tBulkUpdateKeyParams,\n\tCreateKeyParams,\n\tGetKeyParams,\n\tKeyDeleted,\n\tKeyParamsWithPagination,\n\tKeysBulkDeleted,\n\tUpdateKeyData,\n} from \"../types/keys.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Keys extends BaseCollection {\n\tprotected static rootElementName = \"keys\";\n\tprotected static rootElementNameSingular = \"key\";\n\tprotected static prefixURI = \"projects/{!:project_id}/keys/{:id}\";\n\tprotected static elementClass = Key;\n\n\tlist(\n\t\trequest_params: KeyParamsWithPagination,\n\t): Promise> {\n\t\treturn this.doListCursor(request_params);\n\t}\n\n\tcreate(\n\t\tkey_params: CreateKeyParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\treturn this.doCreate(\n\t\t\tkey_params,\n\t\t\trequest_params,\n\t\t\tthis.populateArrayFromJsonBulk,\n\t\t);\n\t}\n\n\tget(key_id: string | number, request_params: GetKeyParams): Promise {\n\t\treturn this.doGet(key_id, request_params);\n\t}\n\n\tupdate(\n\t\tkey_id: string | number,\n\t\tkey_params: UpdateKeyData,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(key_id, key_params, request_params);\n\t}\n\n\tdelete(\n\t\tkey_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(key_id, request_params);\n\t}\n\n\tbulk_update(\n\t\tkey_params: BulkUpdateKeyParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\trequest_params,\n\t\t\tthis.populateArrayFromJsonBulk,\n\t\t\tthis.handleReject,\n\t\t\tkey_params,\n\t\t\t\"projects/{!:project_id}/keys\",\n\t\t);\n\t}\n\n\tbulk_delete(\n\t\tkey_ids: number[] | string[],\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst keys = { keys: this.objToArray(key_ids) };\n\n\t\treturn this.createPromise(\n\t\t\t\"DELETE\",\n\t\t\trequest_params,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tkeys,\n\t\t\t\"projects/{!:project_id}/keys\",\n\t\t);\n\t}\n}\n","import type { Language as LanguageInterface } from \"../interfaces/language.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Language extends BaseModel implements LanguageInterface {\n\tdeclare lang_id: number;\n\tdeclare lang_iso: string;\n\tdeclare lang_name: string;\n\tdeclare is_rtl: boolean;\n\tdeclare plural_forms: string[];\n}\n","import type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Language } from \"../models/language.js\";\nimport type {\n\tPaginationParams,\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateLanguageParams,\n\tLanguageDeleted,\n\tUpdateLanguageParams,\n} from \"../types/languages.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Languages extends BaseCollection {\n\tprotected static rootElementName = \"languages\";\n\tprotected static rootElementNameSingular = \"language\";\n\tprotected static prefixURI = \"projects/{!:project_id}/languages/{:id}\";\n\tprotected static elementClass = Language;\n\n\tsystem_languages(\n\t\tparams: PaginationParams = {},\n\t): Promise> {\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateArrayFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"system/languages\",\n\t\t);\n\t}\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\traw_body: CreateLanguageParams | CreateLanguageParams[],\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\tconst body = { languages: this.objToArray(raw_body) };\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJsonBulk);\n\t}\n\n\tget(\n\t\tlang_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(lang_id, request_params);\n\t}\n\n\tupdate(\n\t\tlang_id: string | number,\n\t\tlang_params: UpdateLanguageParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(lang_id, lang_params, request_params);\n\t}\n\n\tdelete(\n\t\tlang_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn super.doDelete(lang_id, request_params);\n\t}\n}\n","import type { Keyable } from \"../interfaces/keyable.js\";\nimport type { Order as OrderInterface } from \"../interfaces/order.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Order extends BaseModel implements OrderInterface {\n\tdeclare order_id: string;\n\tdeclare project_id: string;\n\tdeclare branch: string;\n\tdeclare card_id: number | string;\n\tdeclare status: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n\tdeclare source_language_iso: string;\n\tdeclare target_language_isos: string[];\n\tdeclare keys: number[] | string[];\n\tdeclare source_words: Keyable;\n\tdeclare provider_slug: string;\n\tdeclare translation_style: string;\n\tdeclare translation_tier: number;\n\tdeclare translation_tier_name: string;\n\tdeclare briefing: string;\n\tdeclare total: number;\n\tdeclare payment_method: string | null;\n\tdeclare is_saved_to_translation_memory: boolean;\n\tdeclare dry_run: boolean;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Order } from \"../models/order.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { CreateOrderParams } from \"../types/orders.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Orders extends BaseCollection {\n\tprotected static rootElementName = \"orders\";\n\tprotected static prefixURI = \"teams/{!:team_id}/orders/{:id}\";\n\tprotected static elementClass = Order;\n\n\tlist(request_params: TeamWithPagination): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\torder_params: CreateOrderParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\torder_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(order_id: string | number, request_params: TeamOnly): Promise {\n\t\treturn this.doGet(order_id, request_params);\n\t}\n}\n","import type { PaymentCard as PaymentCardInterface } from \"../interfaces/payment_card.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class PaymentCard extends BaseModel implements PaymentCardInterface {\n\tdeclare card_id: number;\n\tdeclare last4: string;\n\tdeclare brand: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { PaymentCard } from \"../models/payment_card.js\";\nimport type { CardDeleted, CreateCardParams } from \"../types/cards.js\";\nimport type { PaginationParams } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class PaymentCards extends BaseCollection {\n\tprotected static rootElementName = \"payment_cards\";\n\tprotected static rootElementNameSingular = \"payment_card\";\n\tprotected static prefixURI = \"payment_cards/{:id}\";\n\tprotected static elementClass = PaymentCard;\n\n\tlist(\n\t\trequest_params: PaginationParams = {},\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(card_params: CreateCardParams): Promise {\n\t\treturn this.doCreate(card_params);\n\t}\n\n\tget(card_id: string | number): Promise {\n\t\treturn this.doGet(card_id);\n\t}\n\n\tdelete(card_id: string | number): Promise {\n\t\treturn this.doDelete(card_id);\n\t}\n}\n","import type { PermissionTemplate as PermissionTemplateInterface } from \"../interfaces/permission_template.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class PermissionTemplate\n\textends BaseModel\n\timplements PermissionTemplateInterface\n{\n\tdeclare id: number;\n\tdeclare role: string;\n\tdeclare permissions: string[];\n\tdeclare description: string;\n\tdeclare tag: string;\n\tdeclare tagColor: string;\n\tdeclare tagInfo: string | null;\n\tdeclare doesEnableAllReadOnlyLanguages: boolean;\n}\n","import type { PaginatedResult } from \"../interfaces/index.js\";\nimport { PermissionTemplate } from \"../models/permission_template.js\";\nimport type { TeamOnly } from \"../types/index.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class PermissionTemplates extends BaseCollection {\n\tprotected static prefixURI = \"teams/{!:team_id}/roles\";\n\tprotected static elementClass = PermissionTemplate;\n\tprotected static rootElementName = \"roles\";\n\n\tlist(request_params: TeamOnly): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n}\n","import type { Project as ProjectInterface } from \"../interfaces/project.js\";\nimport type { ProjectSettings } from \"../interfaces/project_settings.js\";\nimport type { ProjectStatistics } from \"../interfaces/project_statistics.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Project extends BaseModel implements ProjectInterface {\n\tdeclare project_id: string;\n\tdeclare project_type: string;\n\tdeclare name: string;\n\tdeclare description: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n\tdeclare team_id: number;\n\tdeclare base_language_id: number;\n\tdeclare base_language_iso: string;\n\tdeclare settings: ProjectSettings;\n\tdeclare statistics: ProjectStatistics;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Project } from \"../models/project.js\";\nimport type {\n\tCreateProjectParams,\n\tProjectDeleted,\n\tProjectEmptied,\n\tProjectListParams,\n\tUpdateProjectParams,\n} from \"../types/projects.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Projects extends BaseCollection {\n\tprotected static rootElementName = \"projects\";\n\tprotected static prefixURI = \"projects/{:id}\";\n\tprotected static elementClass = Project;\n\n\tlist(\n\t\trequest_params: ProjectListParams = {},\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(project_params: CreateProjectParams): Promise {\n\t\treturn this.doCreate(project_params);\n\t}\n\n\tget(project_id: string | number): Promise {\n\t\treturn this.doGet(project_id);\n\t}\n\n\tupdate(\n\t\tproject_id: string | number,\n\t\tproject_params: UpdateProjectParams,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\tproject_id,\n\t\t\tproject_params,\n\t\t\t{},\n\t\t\tthis.populateObjectFromJson,\n\t\t);\n\t}\n\n\tdelete(project_id: string | number): Promise {\n\t\treturn this.doDelete(project_id);\n\t}\n\n\tempty(project_id: any): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\t{ project_id: project_id },\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"projects/{!:project_id}/empty\",\n\t\t);\n\t}\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { QueuedProcess } from \"../models/queued_process.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class QueuedProcesses extends BaseCollection {\n\tprotected static rootElementName = \"processes\";\n\tprotected static rootElementNameSingular = \"process\";\n\tprotected static prefixURI = \"projects/{!:project_id}/processes/{:id}\";\n\tprotected static elementClass = QueuedProcess;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tprocess_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(process_id, request_params);\n\t}\n}\n","import type { Screenshot as ScreenshotInterface } from \"../interfaces/screenshot.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Screenshot extends BaseModel implements ScreenshotInterface {\n\tdeclare screenshot_id: number;\n\tdeclare key_ids: number[];\n\tdeclare keys: Array<{\n\t\tkey_id: number;\n\t\tcoordinates: {\n\t\t\tleft: number;\n\t\t\ttop: number;\n\t\t\twidth: number;\n\t\t\theight: number;\n\t\t};\n\t}>;\n\tdeclare url: string;\n\tdeclare title: string;\n\tdeclare description: string;\n\tdeclare screenshot_tags: string[];\n\tdeclare width: number;\n\tdeclare height: number;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n}\n","import type { BulkResult } from \"../interfaces/bulk_result.js\";\nimport type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Screenshot } from \"../models/screenshot.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateScreenshotParams,\n\tScreenshotDeleted,\n\tUpdateScreenshotParams,\n} from \"../types/screenshots.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Screenshots extends BaseCollection {\n\tprotected static rootElementName = \"screenshots\";\n\tprotected static rootElementNameSingular = \"screenshot\";\n\tprotected static prefixURI = \"projects/{!:project_id}/screenshots/{:id}\";\n\tprotected static elementClass: object = Screenshot;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\traw_body: CreateScreenshotParams | CreateScreenshotParams[],\n\t\trequest_params: ProjectOnly,\n\t): Promise> {\n\t\tconst body = { screenshots: this.objToArray(raw_body) };\n\t\treturn this.doCreate(body, request_params, this.populateArrayFromJsonBulk);\n\t}\n\n\tget(\n\t\tscrenshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(screnshot_id, request_params);\n\t}\n\n\tupdate(\n\t\tscreenshot_id: string | number,\n\t\tscreenshot_params: UpdateScreenshotParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(screenshot_id, screenshot_params, request_params);\n\t}\n\n\tdelete(\n\t\tscreenshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(screenshot_id, request_params);\n\t}\n}\n","import type { Segment as SegmentInterface } from \"../interfaces/segment.js\";\nimport { BaseModel } from \"./base_model.js\";\nimport type { TranslationStatus } from \"./translation_status.js\";\n\nexport class Segment extends BaseModel implements SegmentInterface {\n\tdeclare segment_number: number;\n\tdeclare language_iso: string;\n\tdeclare modified_at: string;\n\tdeclare modified_at_timestamp: number;\n\tdeclare modified_by: number;\n\tdeclare modified_by_email: string;\n\tdeclare value: string;\n\tdeclare is_fuzzy: boolean;\n\tdeclare is_reviewed: boolean;\n\tdeclare reviewed_by: number;\n\tdeclare words: number;\n\tdeclare custom_translation_statuses: TranslationStatus[];\n}\n","import { Segment } from \"../models/segment.js\";\nimport type {\n\tGetSegmentParams,\n\tListSegmentParams,\n\tUpdateSegmentBodyParams,\n\tUpdateSegmentReqParams,\n} from \"../types/segments.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Segments extends BaseCollection {\n\tprotected static rootElementName = \"segments\";\n\tprotected static rootElementNameSingular = \"segment\";\n\tprotected static prefixURI =\n\t\t\"projects/{!:project_id}/keys/{!:key_id}/segments/{!:language_iso}/{:id}\";\n\tprotected static elementClass = Segment;\n\n\tlist(request_params: ListSegmentParams): Promise {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tsegment_number: string | number,\n\t\trequest_params: GetSegmentParams,\n\t): Promise {\n\t\treturn this.doGet(segment_number, request_params);\n\t}\n\n\tupdate(\n\t\tsegment_number: string | number,\n\t\tsegment_params: UpdateSegmentBodyParams,\n\t\trequest_params: UpdateSegmentReqParams,\n\t): Promise {\n\t\treturn this.doUpdate(segment_number, segment_params, request_params);\n\t}\n}\n","import type { Snapshot as SnapshotInterface } from \"../interfaces/snapshot.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Snapshot extends BaseModel implements SnapshotInterface {\n\tdeclare snapshot_id: number;\n\tdeclare title: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport type { Project } from \"../models/project.js\";\nimport { Snapshot } from \"../models/snapshot.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateSnapshotParams,\n\tSnapshotDeleted,\n} from \"../types/snapshots.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Snapshots extends BaseCollection {\n\tprotected static rootElementName = \"snapshots\";\n\tprotected static rootElementNameSingular = \"snapshot\";\n\tprotected static prefixURI = \"projects/{!:project_id}/snapshots/{:id}\";\n\tprotected static elementClass = Snapshot;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tsnapshot_params: CreateSnapshotParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tsnapshot_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\trestore(\n\t\tsnapshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ id: snapshot_id },\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"POST\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\t{},\n\t\t);\n\t}\n\n\tdelete(\n\t\tsnapshot_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(snapshot_id, request_params);\n\t}\n}\n","import type { Task as TaskInterface } from \"../interfaces/task.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Task extends BaseModel implements TaskInterface {\n\tdeclare task_id: number;\n\tdeclare title: string;\n\tdeclare description: string;\n\tdeclare status: string;\n\tdeclare progress: number;\n\tdeclare due_date: string;\n\tdeclare due_date_timestamp: number;\n\tdeclare keys_count: number;\n\tdeclare words_count: number;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare created_by: number;\n\tdeclare created_by_email: string;\n\tdeclare can_be_parent: boolean;\n\tdeclare task_type: string;\n\tdeclare parent_task_id: number;\n\tdeclare closing_tags: string[];\n\tdeclare do_lock_translations: boolean;\n\tdeclare languages: Array<{\n\t\tlanguage_iso: string;\n\t\tusers: Array<{\n\t\t\tuser_id: string | number;\n\t\t\temail: string;\n\t\t\tfullname: string;\n\t\t}>;\n\t\tgroups: Array<{\n\t\t\tid: string | number;\n\t\t\tname: string;\n\t\t}>;\n\t\tkeys: string[] | number[];\n\t\tstatus: string;\n\t\tprogress: number;\n\t\tinitial_tm_leverage: {\n\t\t\t\"0%+\": number;\n\t\t\t\"60%+\": number;\n\t\t\t\"75%+\": number;\n\t\t\t\"95%+\": number;\n\t\t\t\"100%\": number;\n\t\t};\n\t\ttm_leverage: {\n\t\t\tstatus: string;\n\t\t\tvalue: {\n\t\t\t\t\"0%+\": number;\n\t\t\t\t\"50%+\": number;\n\t\t\t\t\"75%+\": number;\n\t\t\t\t\"85%+\": number;\n\t\t\t\t\"95%+\": number;\n\t\t\t\t\"100%\": number;\n\t\t\t};\n\t\t};\n\t\tkeys_count: number;\n\t\twords_count: number;\n\t\tcompleted_at: string;\n\t\tcompleted_at_timestamp: number;\n\t\tcompleted_by: number;\n\t\tcompleted_by_email: string;\n\t}>;\n\tdeclare source_language_iso: string;\n\tdeclare auto_close_languages: boolean;\n\tdeclare auto_close_task: boolean;\n\tdeclare auto_close_items: boolean;\n\tdeclare completed_at: string;\n\tdeclare completed_at_timestamp: number;\n\tdeclare completed_by: number;\n\tdeclare completed_by_email: string;\n\tdeclare custom_translation_status_ids: number[];\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Task } from \"../models/task.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tCreateTaskParams,\n\tListTaskParams,\n\tTaskDeleted,\n\tUpdateTaskParams,\n} from \"../types/tasks.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Tasks extends BaseCollection {\n\tprotected static rootElementName = \"tasks\";\n\tprotected static rootElementNameSingular = \"task\";\n\tprotected static prefixURI = \"projects/{!:project_id}/tasks/{:id}\";\n\tprotected static elementClass = Task;\n\n\tlist(request_params: ListTaskParams): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\ttask_params: CreateTaskParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\ttask_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(task_id: string | number, request_params: ProjectOnly): Promise {\n\t\treturn this.doGet(task_id, request_params);\n\t}\n\n\tupdate(\n\t\ttask_id: string | number,\n\t\ttask_params: UpdateTaskParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(task_id, task_params, request_params);\n\t}\n\n\tdelete(\n\t\ttask_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(task_id, request_params);\n\t}\n}\n","import type { TeamUserBillingDetails as TeamUserBillingDetailsInterface } from \"../interfaces/team_user_billing_details.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TeamUserBillingDetails\n\textends BaseModel\n\timplements TeamUserBillingDetailsInterface\n{\n\tdeclare billing_email: string;\n\tdeclare country_code: string;\n\tdeclare zip: string;\n\tdeclare state_code: string;\n\tdeclare address1: string;\n\tdeclare address2: string;\n\tdeclare city: string;\n\tdeclare phone: string;\n\tdeclare company: string;\n\tdeclare vatnumber: string;\n}\n","import { TeamUserBillingDetails as BillingDetailsModel } from \"../models/team_user_billing_details.js\";\nimport type { BillingDetailsParams } from \"../types/billing_details.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TeamUserBillingDetails extends BaseCollection {\n\tprotected static rootElementName = \"\";\n\tprotected static prefixURI = \"teams/{!:team_id}/billing_details\";\n\tprotected static elementClass = BillingDetailsModel;\n\n\tget(team_id: string | number): Promise {\n\t\tconst params = { team_id: team_id };\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tcreate(\n\t\tbilling_details_params: BillingDetailsParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doCreate(billing_details_params, request_params);\n\t}\n\n\tupdate(\n\t\tteam_id: string | number,\n\t\tbilling_details_params: BillingDetailsParams,\n\t): Promise {\n\t\tconst params = { team_id: team_id };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJson,\n\t\t\tthis.handleReject,\n\t\t\tbilling_details_params,\n\t\t);\n\t}\n}\n","import type { TeamUser as TeamUserInterface } from \"../interfaces/team_user.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TeamUser extends BaseModel implements TeamUserInterface {\n\tdeclare user_id: number;\n\tdeclare email: string;\n\tdeclare fullname: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare role: string;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { TeamUser } from \"../models/team_user.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { TeamUserDeleted, TeamUserParams } from \"../types/team_users.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TeamUsers extends BaseCollection {\n\tprotected static rootElementName = \"team_users\";\n\tprotected static rootElementNameSingular = \"team_user\";\n\tprotected static prefixURI = \"teams/{!:team_id}/users/{:id}\";\n\tprotected static elementClass = TeamUser;\n\n\tlist(request_params: TeamWithPagination): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tteam_user_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doGet(team_user_id, request_params);\n\t}\n\n\tupdate(\n\t\tteam_user_id: string | number,\n\t\tteam_user_params: TeamUserParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doUpdate(team_user_id, team_user_params, request_params);\n\t}\n\n\tdelete(\n\t\tteam_user_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doDelete(team_user_id, request_params);\n\t}\n}\n","import type { Team as TeamInterface } from \"../interfaces/team.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Team extends BaseModel implements TeamInterface {\n\tdeclare team_id: number;\n\tdeclare name: string;\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare plan: string;\n\tdeclare quota_usage: {\n\t\tusers: number;\n\t\tkeys: number;\n\t\tprojects: number;\n\t\tmau: number;\n\t\tai_words: number;\n\t};\n\tdeclare quota_allowed: {\n\t\tusers: number;\n\t\tkeys: number;\n\t\tprojects: number;\n\t\tmau: number;\n\t\tai_words: number;\n\t};\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Team } from \"../models/team.js\";\nimport type { PaginationParams } from \"../types/common_get_params.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Teams extends BaseCollection {\n\tprotected static rootElementName = \"teams\";\n\tprotected static prefixURI = \"teams\";\n\tprotected static elementClass = Team;\n\n\tlist(request_params: PaginationParams = {}): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n}\n","import type { TranslationProvider as TranslationProviderInterface } from \"../interfaces/translation_provider.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TranslationProvider\n\textends BaseModel\n\timplements TranslationProviderInterface\n{\n\tdeclare provider_id: number;\n\tdeclare name: string;\n\tdeclare slug: string;\n\tdeclare price_pair_min: number;\n\tdeclare website_url: string;\n\tdeclare description: string;\n\tdeclare tiers: Array<{\n\t\ttier_id: number;\n\t\ttitle: string;\n\t}>;\n\tdeclare pairs: Array<{\n\t\ttier_id: number;\n\t\tfrom_lang_iso: string;\n\t\tfrom_lang_name: string;\n\t\tto_lang_iso: string;\n\t\tto_lang_name: string;\n\t\tprice_per_word: number;\n\t}>;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { TranslationProvider } from \"../models/translation_provider.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TranslationProviders extends BaseCollection {\n\tprotected static rootElementName = \"translation_providers\";\n\tprotected static prefixURI = \"teams/{!:team_id}/translation_providers/{:id}\";\n\tprotected static elementClass = TranslationProvider;\n\n\tlist(\n\t\trequest_params: TeamWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tprovider_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doGet(provider_id, request_params);\n\t}\n}\n","import type { TranslationStatus as TranslationStatusInterface } from \"../interfaces/translation_status.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class TranslationStatus\n\textends BaseModel\n\timplements TranslationStatusInterface\n{\n\tdeclare status_id: number;\n\tdeclare title: string;\n\tdeclare color: string;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { TranslationStatus } from \"../models/translation_status.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateTranslationStatusParams,\n\tTranslationStatusColors,\n\tTranslationStatusDeleted,\n\tUpdateTranslationStatusParams,\n} from \"../types/translation_statuses.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class TranslationStatuses extends BaseCollection {\n\tprotected static rootElementName = \"custom_translation_statuses\";\n\tprotected static prefixURI =\n\t\t\"projects/{!:project_id}/custom_translation_statuses/{:id}\";\n\tprotected static elementClass = TranslationStatus;\n\tprotected static rootElementNameSingular = \"custom_translation_status\";\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\ttranslation_status_params: CreateTranslationStatusParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\ttranslation_status_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\ttranslation_status_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(translation_status_id, request_params);\n\t}\n\n\tupdate(\n\t\ttranslation_status_id: string | number,\n\t\ttranslation_status_params: UpdateTranslationStatusParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\ttranslation_status_id,\n\t\t\ttranslation_status_params,\n\t\t\trequest_params,\n\t\t);\n\t}\n\n\tdelete(\n\t\ttranslation_status_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(translation_status_id, request_params);\n\t}\n\n\tavailable_colors(\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\trequest_params,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\t{},\n\t\t\t\"projects/{!:project_id}/custom_translation_statuses/colors\",\n\t\t);\n\t}\n}\n","import type { Translation as TranslationInterface } from \"../interfaces/translation.js\";\nimport type { TranslationStatus } from \"../interfaces/translation_status.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Translation extends BaseModel implements TranslationInterface {\n\tdeclare translation_id: number;\n\tdeclare key_id: number;\n\tdeclare language_iso: string;\n\tdeclare modified_at: string;\n\tdeclare modified_at_timestamp: number;\n\tdeclare modified_by: number;\n\tdeclare modified_by_email: string;\n\tdeclare translation: string;\n\tdeclare is_unverified: boolean;\n\tdeclare is_reviewed: boolean;\n\tdeclare reviewed_by: number;\n\tdeclare is_fuzzy: boolean;\n\tdeclare words: number;\n\tdeclare custom_translation_statuses: TranslationStatus[];\n\tdeclare task_id: number;\n\tdeclare segment_number: number;\n}\n","import type { CursorPaginatedResult } from \"../interfaces/cursor_paginated_result.js\";\nimport { Translation } from \"../models/translation.js\";\nimport type { ProjectOnly } from \"../types/common_get_params.js\";\nimport type {\n\tGetTranslationParams,\n\tListTranslationParams,\n\tUpdateTranslationParams,\n} from \"../types/translations.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Translations extends BaseCollection {\n\tprotected static rootElementName = \"translations\";\n\tprotected static rootElementNameSingular = \"translation\";\n\tprotected static prefixURI = \"projects/{!:project_id}/translations/{:id}\";\n\tprotected static elementClass = Translation;\n\n\tlist(\n\t\trequest_params: ListTranslationParams,\n\t): Promise> {\n\t\treturn this.doListCursor(request_params);\n\t}\n\n\tget(\n\t\ttranslation_id: string | number,\n\t\trequest_params: GetTranslationParams,\n\t): Promise {\n\t\treturn this.doGet(translation_id, request_params);\n\t}\n\n\tupdate(\n\t\ttranslation_id: string | number,\n\t\ttranslation_params: UpdateTranslationParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(translation_id, translation_params, request_params);\n\t}\n}\n","import type { UserGroup as UserGroupInterface } from \"../interfaces/user_group.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class UserGroup extends BaseModel implements UserGroupInterface {\n\tdeclare group_id: number;\n\tdeclare name: string;\n\tdeclare permissions: {\n\t\tis_admin: boolean; // deprecated\n\t\tis_reviewer: boolean; // deprecated\n\t\tadmin_rights: string[];\n\t\tlanguages: Array<{\n\t\t\tlang_id: number;\n\t\t\tlang_iso: string;\n\t\t\tlang_name: string;\n\t\t\tis_writable: boolean;\n\t\t}>;\n\t};\n\tdeclare created_at: string;\n\tdeclare created_at_timestamp: number;\n\tdeclare team_id: number;\n\tdeclare projects: string[] | number[];\n\tdeclare members: number[] | string[];\n\tdeclare role_id: number | null;\n}\n","import type { Keyable } from \"../interfaces/keyable.js\";\nimport type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { UserGroup } from \"../models/user_group.js\";\nimport type { TeamOnly } from \"../types/common_get_params.js\";\nimport type { TeamWithPagination } from \"../types/teams.js\";\nimport type {\n\tUserGroupDeleted,\n\tUserGroupParams,\n} from \"../types/user_groups.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class UserGroups extends BaseCollection {\n\tprotected static rootElementName = \"user_groups\";\n\tprotected static prefixURI = \"teams/{!:team_id}/groups/{:id}\";\n\tprotected static elementClass = UserGroup;\n\n\tlist(\n\t\trequest_params: TeamWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\tuser_group_params: UserGroupParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tuser_group_params,\n\t\t\trequest_params,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\tuser_group_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doGet(user_group_id, request_params);\n\t}\n\n\tupdate(\n\t\tuser_group_id: string | number,\n\t\tuser_group_params: UserGroupParams,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\tuser_group_id,\n\t\t\tuser_group_params,\n\t\t\trequest_params,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t);\n\t}\n\n\tdelete(\n\t\tuser_group_id: string | number,\n\t\trequest_params: TeamOnly,\n\t): Promise {\n\t\treturn this.doDelete(user_group_id, request_params);\n\t}\n\n\tadd_members_to_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tuser_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { users: user_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/members/add\",\n\t\t);\n\t}\n\n\tremove_members_from_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tuser_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { users: user_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/members/remove\",\n\t\t);\n\t}\n\n\tadd_projects_to_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tproject_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { projects: project_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/projects/add\",\n\t\t);\n\t}\n\n\tremove_projects_from_group(\n\t\tteam_id: string | number,\n\t\tgroup_id: string | number,\n\t\tproject_ids: string[] | number[],\n\t): Promise {\n\t\tconst params = {\n\t\t\tteam_id: team_id,\n\t\t\tgroup_id: group_id,\n\t\t};\n\t\tconst body = { projects: project_ids };\n\t\treturn this.createPromise(\n\t\t\t\"PUT\",\n\t\t\tparams,\n\t\t\tthis.populateGroupFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tbody,\n\t\t\t\"teams/{!:team_id}/groups/{!:group_id}/projects/remove\",\n\t\t);\n\t}\n\n\tprotected populateGroupFromJsonRoot(json: Keyable, headers: Headers): this {\n\t\tconst formatted_json = json.group;\n\t\treturn this.populateObjectFromJson(formatted_json, headers);\n\t}\n}\n","import type { Webhook as WebhookInterface } from \"../interfaces/webhook.js\";\nimport { BaseModel } from \"./base_model.js\";\n\nexport class Webhook extends BaseModel implements WebhookInterface {\n\tdeclare webhook_id: string;\n\tdeclare branch: string;\n\tdeclare url: string;\n\tdeclare secret: string;\n\tdeclare events: string[];\n\tdeclare event_lang_map: Array<{\n\t\tevent: string;\n\t\tlang_iso_codes: string[];\n\t}>;\n}\n","import type { PaginatedResult } from \"../interfaces/paginated_result.js\";\nimport { Webhook } from \"../models/webhook.js\";\nimport type {\n\tProjectOnly,\n\tProjectWithPagination,\n} from \"../types/common_get_params.js\";\nimport type {\n\tCreateWebhookParams,\n\tUpdateWebhookParams,\n\tWebhookDeleted,\n\tWebhookRegenerated,\n} from \"../types/webhooks.js\";\nimport { BaseCollection } from \"./base_collection.js\";\n\nexport class Webhooks extends BaseCollection {\n\tprotected static rootElementName = \"webhooks\";\n\tprotected static rootElementNameSingular = \"webhook\";\n\tprotected static prefixURI = \"projects/{!:project_id}/webhooks/{:id}\";\n\tprotected static elementClass = Webhook;\n\n\tlist(\n\t\trequest_params: ProjectWithPagination,\n\t): Promise> {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(\n\t\twebhook_params: CreateWebhookParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\twebhook_params,\n\t\t\trequest_params,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tget(\n\t\twebhook_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doGet(webhook_id, request_params);\n\t}\n\n\tupdate(\n\t\twebhook_id: string | number,\n\t\twebhook_params: UpdateWebhookParams,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doUpdate(webhook_id, webhook_params, request_params);\n\t}\n\n\tdelete(\n\t\twebhook_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\treturn this.doDelete(webhook_id, request_params);\n\t}\n\n\tregenerate_secret(\n\t\twebhook_id: string | number,\n\t\trequest_params: ProjectOnly,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ id: webhook_id },\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"PATCH\",\n\t\t\tparams,\n\t\t\tthis.returnBareJSON,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t\t\"projects/{!:project_id}/webhooks/{:id}/secret/regenerate\",\n\t\t);\n\t}\n}\n","import type { ClientData as ClientDataInterface } from \"../interfaces/client_data.js\";\n\nexport type ClientParams = {\n\tapiKey?: string;\n\tenableCompression?: boolean;\n\ttokenType?: string;\n\thost?: string;\n\tversion?: string;\n};\n\nexport class BaseClient {\n\treadonly clientData: ClientDataInterface = {\n\t\ttoken: \"\",\n\t\ttokenType: \"\",\n\t\tauthHeader: \"x-api-token\",\n\t\tenableCompression: false,\n\t};\n\n\t/*\n\t * Instantiate LokaliseApi to call API methods\n\t * @param params object, mandatory\n\t * @returns LokaliseApi object to work with.\n\t */\n\tconstructor(params: ClientParams) {\n\t\tconst apiKey = params.apiKey;\n\t\tif (apiKey === null || apiKey === undefined || apiKey.length === 0) {\n\t\t\tthrow new Error(\"Error: Instantiation failed: Please pass an API key\");\n\t\t}\n\t\tthis.clientData.token = apiKey;\n\t\tconst compression = params.enableCompression;\n\t\tif (compression !== null && compression !== undefined) {\n\t\t\tthis.clientData.enableCompression = compression;\n\t\t}\n\t\tthis.clientData.host = params.host;\n\t}\n}\n","import { Branches } from \"../collections/branches.js\";\nimport { Comments } from \"../collections/comments.js\";\nimport { Contributors } from \"../collections/contributors.js\";\nimport { Files } from \"../collections/files.js\";\nimport { Jwt } from \"../collections/jwt.js\";\nimport { Keys } from \"../collections/keys.js\";\nimport { Languages } from \"../collections/languages.js\";\nimport { Orders } from \"../collections/orders.js\";\nimport { PaymentCards } from \"../collections/payment_cards.js\";\nimport { PermissionTemplates } from \"../collections/permission_templates.js\";\nimport { Projects } from \"../collections/projects.js\";\nimport { QueuedProcesses } from \"../collections/queued_processes.js\";\nimport { Screenshots } from \"../collections/screenshots.js\";\nimport { Segments } from \"../collections/segments.js\";\nimport { Snapshots } from \"../collections/snapshots.js\";\nimport { Tasks } from \"../collections/tasks.js\";\nimport { TeamUserBillingDetails } from \"../collections/team_user_billing_details.js\";\nimport { TeamUsers } from \"../collections/team_users.js\";\nimport { Teams } from \"../collections/teams.js\";\nimport { TranslationProviders } from \"../collections/translation_providers.js\";\nimport { TranslationStatuses } from \"../collections/translation_statuses.js\";\nimport { Translations } from \"../collections/translations.js\";\nimport { UserGroups } from \"../collections/user_groups.js\";\nimport { Webhooks } from \"../collections/webhooks.js\";\nimport { BaseClient, ClientParams } from \"./base_client.js\";\n\nexport { ClientParams };\n\nexport class LokaliseApi extends BaseClient {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\t\tthis.clientData.version = params.version ?? \"api2\";\n\t}\n\n\tbranches(): Branches {\n\t\treturn new Branches(this.clientData);\n\t}\n\n\tcomments(): Comments {\n\t\treturn new Comments(this.clientData);\n\t}\n\n\tcontributors(): Contributors {\n\t\treturn new Contributors(this.clientData);\n\t}\n\n\tfiles(): Files {\n\t\treturn new Files(this.clientData);\n\t}\n\n\tjwt(): Jwt {\n\t\treturn new Jwt(this.clientData);\n\t}\n\n\tkeys(): Keys {\n\t\treturn new Keys(this.clientData);\n\t}\n\n\tlanguages(): Languages {\n\t\treturn new Languages(this.clientData);\n\t}\n\n\torders(): Orders {\n\t\treturn new Orders(this.clientData);\n\t}\n\n\tpaymentCards(): PaymentCards {\n\t\treturn new PaymentCards(this.clientData);\n\t}\n\n\tpermissionTemplates(): PermissionTemplates {\n\t\treturn new PermissionTemplates(this.clientData);\n\t}\n\n\tprojects(): Projects {\n\t\treturn new Projects(this.clientData);\n\t}\n\n\tqueuedProcesses(): QueuedProcesses {\n\t\treturn new QueuedProcesses(this.clientData);\n\t}\n\n\tscreenshots(): Screenshots {\n\t\treturn new Screenshots(this.clientData);\n\t}\n\n\tsegments(): Segments {\n\t\treturn new Segments(this.clientData);\n\t}\n\n\tsnapshots(): Snapshots {\n\t\treturn new Snapshots(this.clientData);\n\t}\n\n\ttasks(): Tasks {\n\t\treturn new Tasks(this.clientData);\n\t}\n\n\tteams(): Teams {\n\t\treturn new Teams(this.clientData);\n\t}\n\n\tteamUsers(): TeamUsers {\n\t\treturn new TeamUsers(this.clientData);\n\t}\n\n\tteamUserBillingDetails(): TeamUserBillingDetails {\n\t\treturn new TeamUserBillingDetails(this.clientData);\n\t}\n\n\ttranslations(): Translations {\n\t\treturn new Translations(this.clientData);\n\t}\n\n\ttranslationProviders(): TranslationProviders {\n\t\treturn new TranslationProviders(this.clientData);\n\t}\n\n\ttranslationStatuses(): TranslationStatuses {\n\t\treturn new TranslationStatuses(this.clientData);\n\t}\n\n\tuserGroups(): UserGroups {\n\t\treturn new UserGroups(this.clientData);\n\t}\n\n\twebhooks(): Webhooks {\n\t\treturn new Webhooks(this.clientData);\n\t}\n}\n","import { type ClientParams, LokaliseApi } from \"./lokalise_api.js\";\n\nexport class LokaliseApiOAuth extends LokaliseApi {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\n\t\tconst tokenType = params.tokenType;\n\t\tthis.clientData.tokenType = tokenType ?? \"Bearer\";\n\n\t\tthis.clientData.authHeader = \"Authorization\";\n\t}\n}\n","import type { OtaBundle as OtaBundleInterface } from \"../../interfaces/ota/ota_bundle.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaBundle extends BaseModel implements OtaBundleInterface {\n\tdeclare id: number;\n\tdeclare projectId: string;\n\tdeclare isPrerelease: boolean;\n\tdeclare isProduction: boolean;\n\tdeclare createdAt: string;\n\tdeclare createdBy: string;\n\tdeclare framework: string;\n\tdeclare description: string;\n\tdeclare isFrozen: boolean;\n\tdeclare lokaliseId: number;\n\tdeclare fileId: string;\n\tdeclare fileUrl: string;\n\tdeclare modifiedAt: string;\n}\n","import { BaseCollection } from \"../collections/base_collection.js\";\nimport type { Keyable } from \"../interfaces/keyable.js\";\nimport type { ApiError } from \"../models/api_error.js\";\n\nexport abstract class OtaCollection extends BaseCollection {\n\tprotected populateApiErrorFromJson(json: any): ApiError {\n\t\treturn json;\n\t}\n\n\tprotected doDelete(id: string | number, req_params: Keyable): Promise {\n\t\tconst params = {\n\t\t\t...req_params,\n\t\t\tid,\n\t\t};\n\t\treturn this.createPromise(\n\t\t\t\"DELETE\",\n\t\t\tparams,\n\t\t\tthis.returnJSONFromData,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n\n\tprotected returnJSONFromData(json: Keyable): Keyable | Array {\n\t\treturn json.data;\n\t}\n}\n","import { OtaBundle } from \"../models/ota/ota_bundle.js\";\nimport type {\n\tOtaBundleUpdateData,\n\tOtaResourceDeleted,\n\tOtaTeamProject,\n} from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaBundleManagement extends OtaCollection {\n\tprotected static rootElementName = \"data\";\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundles/{:id}\";\n\tprotected static elementClass = OtaBundle;\n\n\tlist(request_params: OtaTeamProject): Promise {\n\t\treturn this.doList(request_params);\n\t}\n\n\tget(\n\t\tbundleId: string | number,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doGet(bundleId, requestParams);\n\t}\n\n\tupdate(\n\t\tbundleId: string | number,\n\t\tbundleParams: OtaBundleUpdateData,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doUpdate(\n\t\t\tbundleId,\n\t\t\tbundleParams,\n\t\t\trequestParams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t\t\"PATCH\",\n\t\t);\n\t}\n\n\tdelete(\n\t\tbundleId: string | number,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doDelete(bundleId, requestParams);\n\t}\n}\n","import type { OtaTeamProjectFramework } from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaBundlePublishing extends OtaCollection {\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/frameworks/{!:framework}/{!:action}\";\n\n\tpublish(\n\t\tbundleId: number | string,\n\t\trequest_params: OtaTeamProjectFramework,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ action: \"publish\" },\n\t\t};\n\t\treturn this.createPromise(\"POST\", params, null, this.handleReject, {\n\t\t\tbundleId,\n\t\t});\n\t}\n\n\tstage(\n\t\tbundleId: number | string,\n\t\trequest_params: OtaTeamProjectFramework,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...{ action: \"stage\" },\n\t\t};\n\t\treturn this.createPromise(\"POST\", params, null, this.handleReject, {\n\t\t\tbundleId,\n\t\t});\n\t}\n}\n","import type { OtaFreezePeriod as OtaFreezePeriodInterface } from \"../../interfaces/ota/ota_freeze_period.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaFreezePeriod\n\textends BaseModel\n\timplements OtaFreezePeriodInterface\n{\n\tdeclare id: number;\n\tdeclare projectId: number;\n\tdeclare bundleId: number;\n\tdeclare framework: string;\n\tdeclare from: string;\n\tdeclare to: string;\n}\n","import { OtaFreezePeriod } from \"../models/ota/ota_freeze_period.js\";\nimport type {\n\tOtaFreezePeriodParams,\n\tOtaResourceDeleted,\n\tOtaTeamProject,\n\tOtaTeamProjectFramework,\n} from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaFreezePeriods extends OtaCollection {\n\tprotected static rootElementName = \"data\";\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/bundle-freezes/{:id}\";\n\tprotected static elementClass = OtaFreezePeriod;\n\n\tlist(requestParams: OtaTeamProjectFramework): Promise {\n\t\treturn this.doList(requestParams);\n\t}\n\n\tcreate(\n\t\tfreezeParams: OtaFreezePeriodParams,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doCreate(\n\t\t\tfreezeParams,\n\t\t\trequestParams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t);\n\t}\n\n\tupdate(\n\t\tfreezeId: string | number,\n\t\tfreezeParams: OtaFreezePeriodParams,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doUpdate(freezeId, freezeParams, requestParams);\n\t}\n\n\tdelete(\n\t\tfreezeId: string | number,\n\t\trequestParams: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doDelete(freezeId, requestParams);\n\t}\n}\n","import type { OtaSdkToken as OtaSdkTokenInterface } from \"../../interfaces/ota/ota_sdk_token.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaSdkToken extends BaseModel implements OtaSdkTokenInterface {\n\tdeclare id: number;\n\tdeclare token: string;\n\tdeclare projectId: number;\n\tdeclare lokaliseId: number;\n\tdeclare createdAt: string;\n}\n","import { OtaSdkToken } from \"../models/ota/ota_sdk_token.js\";\nimport type { OtaResourceDeleted, OtaTeamProject } from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaSdkTokens extends OtaCollection {\n\tprotected static rootElementName = \"data\";\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/tokens/{:id}\";\n\tprotected static elementClass = OtaSdkToken;\n\n\tlist(request_params: OtaTeamProject): Promise {\n\t\treturn this.doList(request_params);\n\t}\n\n\tcreate(request_params: OtaTeamProject): Promise {\n\t\treturn this.doCreate(null, request_params, this.populateObjectFromJsonRoot);\n\t}\n\n\tdelete(\n\t\ttokenId: string | number,\n\t\trequest_params: OtaTeamProject,\n\t): Promise {\n\t\treturn this.doDelete(tokenId, request_params);\n\t}\n}\n","import type { OtaStatistics as OtaStatisticsInterface } from \"../../interfaces/ota/ota_statistics.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaStatistics extends BaseModel implements OtaStatisticsInterface {\n\tdeclare lokaliseProjectId: string;\n\tdeclare from: string;\n\tdeclare to: string;\n\tdeclare sdk: string;\n\tdeclare daily: Array<{\n\t\tdate: string;\n\t\tdownloads: number;\n\t\ttrafficMb: number;\n\t\ttrafficBytes: string;\n\t\tframework: string;\n\t}>;\n\tdeclare monthly: Array<{\n\t\tdate: string;\n\t\tdownloads: number;\n\t\ttrafficMb: number;\n\t\ttrafficBytes: string;\n\t\tframework: string;\n\t}>;\n\tdeclare totals: {\n\t\tdownloads: number;\n\t\ttrafficMb: number;\n\t\ttrafficBytes: string;\n\t};\n}\n","import { OtaStatistics } from \"../models/ota/ota_statistics.js\";\nimport type { OtaTeamProject, OtaUsageParams } from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaUsageStatistics extends OtaCollection {\n\tprotected static prefixURI =\n\t\t\"teams/{!:teamId}/projects/{!:lokaliseProjectId}/stats\";\n\tprotected static elementClass = OtaStatistics;\n\n\tget(\n\t\tbundle_params: OtaUsageParams,\n\t\trequest_params: OtaTeamProject,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...bundle_params,\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJson,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n}\n","import { OtaBundleManagement } from \"../ota_collections/ota_bundle_management.js\";\nimport { OtaBundlePublishing } from \"../ota_collections/ota_bundle_publishing.js\";\nimport { OtaFreezePeriods } from \"../ota_collections/ota_freeze_periods.js\";\nimport { OtaSdkTokens } from \"../ota_collections/ota_sdk_tokens.js\";\nimport { OtaUsageStatistics } from \"../ota_collections/ota_usage_statistics.js\";\nimport { BaseClient, type ClientParams } from \"./base_client.js\";\n\nexport class LokaliseApiOta extends BaseClient {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\n\t\tthis.clientData.tokenType = params.tokenType ?? \"Bearer\";\n\n\t\tthis.clientData.authHeader = \"Authorization\";\n\n\t\tthis.clientData.host = this.clientData.host ?? \"https://ota.lokalise.com\";\n\n\t\tthis.clientData.version = params.version ?? \"v3\";\n\t}\n\n\totaBundleManagement(): OtaBundleManagement {\n\t\treturn new OtaBundleManagement(this.clientData);\n\t}\n\n\totaBundlePublishing(): OtaBundlePublishing {\n\t\treturn new OtaBundlePublishing(this.clientData);\n\t}\n\n\totaUsageStatistics(): OtaUsageStatistics {\n\t\treturn new OtaUsageStatistics(this.clientData);\n\t}\n\n\totaFreezePeriods(): OtaFreezePeriods {\n\t\treturn new OtaFreezePeriods(this.clientData);\n\t}\n\n\totaSdkTokens(): OtaSdkTokens {\n\t\treturn new OtaSdkTokens(this.clientData);\n\t}\n}\n","import type { OtaBundleArchive as OtaBundleArchiveInterface } from \"../../interfaces/ota/ota_bundle_archive.js\";\nimport { BaseModel } from \"./../base_model.js\";\n\nexport class OtaBundleArchive\n\textends BaseModel\n\timplements OtaBundleArchiveInterface\n{\n\tdeclare url: string;\n\tdeclare version: number;\n}\n","import { OtaBundleArchive } from \"../models/ota/ota_bundle_archive.js\";\nimport type {\n\tOtaProjectFramework,\n\tOtaRequestBundleParams,\n} from \"../types/ota.js\";\nimport { OtaCollection } from \"./ota_collection.js\";\n\nexport class OtaBundles extends OtaCollection {\n\tprotected static rootElementNameSingular = \"data\";\n\tprotected static prefixURI =\n\t\t\"lokalise/projects/{!:lokaliseProjectId}/frameworks/{!:framework}\";\n\tprotected static elementClass = OtaBundleArchive;\n\n\tget(\n\t\tbundle_params: OtaRequestBundleParams,\n\t\trequest_params: OtaProjectFramework,\n\t): Promise {\n\t\tconst params = {\n\t\t\t...request_params,\n\t\t\t...bundle_params,\n\t\t};\n\n\t\treturn this.createPromise(\n\t\t\t\"GET\",\n\t\t\tparams,\n\t\t\tthis.populateObjectFromJsonRoot,\n\t\t\tthis.handleReject,\n\t\t\tnull,\n\t\t);\n\t}\n}\n","import { OtaBundles } from \"../ota_collections/ota_bundles.js\";\nimport { BaseClient, type ClientParams } from \"./base_client.js\";\n\nexport class LokaliseOtaBundles extends BaseClient {\n\tconstructor(params: ClientParams) {\n\t\tsuper(params);\n\n\t\tthis.clientData.authHeader = \"x-ota-api-token\";\n\t\tthis.clientData.host = this.clientData.host ?? \"https://ota.lokalise.com\";\n\n\t\tthis.clientData.version = params.version ?? \"v3\";\n\t}\n\n\totaBundles(): OtaBundles {\n\t\treturn new OtaBundles(this.clientData);\n\t}\n}\n","import type { AuthData as AuthDataInterface } from \"../interfaces/auth_data.js\";\nimport { LokalisePkg } from \"../lokalise/pkg.js\";\nimport type { HttpMethod } from \"../types/http_method.js\";\n\nexport class AuthRequest {\n\tstatic async createPromise(\n\t\turi: string,\n\t\tmethod: HttpMethod,\n\t\tbody: object | object[] | null,\n\t\t{ host, version }: AuthDataInterface,\n\t): Promise {\n\t\tconst fullUri = `/${version}/${uri}`;\n\t\tconst target = new URL(fullUri, host);\n\n\t\tconst options: RequestInit = {\n\t\t\tmethod: method,\n\t\t\theaders: await AuthRequest.buildHeaders(),\n\t\t\tbody: JSON.stringify(body),\n\t\t};\n\n\t\treturn AuthRequest.fetchAndHandleResponse(target, options);\n\t}\n\n\tprivate static async fetchAndHandleResponse(\n\t\ttarget: URL,\n\t\toptions: RequestInit,\n\t): Promise {\n\t\ttry {\n\t\t\tconst response = await fetch(target, options);\n\t\t\tconst responseJSON = await response.json();\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn Promise.resolve({\n\t\t\t\t\tjson: responseJSON,\n\t\t\t\t\theaders: response.headers,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn Promise.reject({\n\t\t\t\t...{ code: response.status },\n\t\t\t\t...responseJSON,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\treturn Promise.reject({\n\t\t\t\tmessage: (err as Error).message,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate static async buildHeaders(): Promise {\n\t\tconst headers = new Headers({\n\t\t\tAccept: \"application/json\",\n\t\t\t\"User-Agent\": `node-lokalise-api/${await LokalisePkg.getVersion()}`,\n\t\t\t\"Content-type\": \"application/json\",\n\t\t});\n\n\t\treturn headers;\n\t}\n}\n","import type { AuthData as AuthDataInterface } from \"../interfaces/auth_data.js\";\nimport type { AuthError } from \"../models/auth_error.js\";\nimport type { RequestTokenResponse } from \"../models/request_token_response.js\";\nimport { AuthRequest } from \"./auth_request.js\";\n\nexport class LokaliseAuth {\n\tauthData: AuthDataInterface = {\n\t\tclient_id: \"\",\n\t\tclient_secret: \"\",\n\t};\n\n\t/*\n\t * Instantiate LokaliseAuth to work with OAuth 2 tokens\n\t * @param clientId string, mandatory\n\t * @param clientSecret string, mandatory\n\t * @returns LokaliseAuth object to work with.\n\t */\n\tconstructor(\n\t\tclientId: string,\n\t\tclientSecret: string,\n\t\thost?: string,\n\t\tversion?: string,\n\t) {\n\t\tif (\n\t\t\tclientId == null ||\n\t\t\tclientId.length === 0 ||\n\t\t\tclientSecret == null ||\n\t\t\tclientSecret.length === 0\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Error: Instantiation failed: Please pass client id and client secret\",\n\t\t\t);\n\t\t}\n\n\t\tthis.authData.client_id = clientId;\n\t\tthis.authData.client_secret = clientSecret;\n\t\tthis.authData.host = host ?? \"https://app.lokalise.com\";\n\t\tthis.authData.version = version ?? \"oauth2\";\n\t}\n\n\tauth(\n\t\tscope: string | string[],\n\t\tredirect_uri?: string,\n\t\tstate?: string,\n\t): string {\n\t\tconst scopeString = Array.isArray(scope) ? scope.join(\" \") : scope;\n\n\t\tconst params: { [key: string]: string } = {\n\t\t\tclient_id: this.authData.client_id,\n\t\t\tscope: scopeString,\n\t\t\t...(state && { state }),\n\t\t\t...(redirect_uri && { redirect_uri }),\n\t\t};\n\n\t\treturn this.buildUrl(params);\n\t}\n\n\tasync token(code: string): Promise {\n\t\tconst params = {\n\t\t\t...this.base_params(),\n\t\t\t...{\n\t\t\t\tcode: code,\n\t\t\t\tgrant_type: \"authorization_code\",\n\t\t\t},\n\t\t};\n\n\t\treturn await this.doRequest(params);\n\t}\n\n\tasync refresh(refresh_token: string): Promise {\n\t\tconst params = {\n\t\t\t...this.base_params(),\n\t\t\t...{\n\t\t\t\trefresh_token: refresh_token,\n\t\t\t\tgrant_type: \"refresh_token\",\n\t\t\t},\n\t\t};\n\n\t\treturn await this.doRequest(params);\n\t}\n\n\tprivate async doRequest(params: { [key: string]: string }): Promise {\n\t\ttry {\n\t\t\tconst data = await AuthRequest.createPromise(\n\t\t\t\t\"token\",\n\t\t\t\t\"POST\",\n\t\t\t\tparams,\n\t\t\t\tthis.authData,\n\t\t\t);\n\n\t\t\treturn data.json;\n\t\t} catch (err) {\n\t\t\treturn Promise.reject(this.handleReject(err));\n\t\t}\n\t}\n\n\tprivate buildUrl(params: { [key: string]: string }): string {\n\t\tconst url = new URL(\"auth\", this.authData.host);\n\t\turl.search = new URLSearchParams(params).toString();\n\t\treturn url.toString();\n\t}\n\n\tprivate base_params(): { [key: string]: string } {\n\t\treturn {\n\t\t\tclient_id: this.authData.client_id,\n\t\t\tclient_secret: this.authData.client_secret,\n\t\t};\n\t}\n\n\tprivate handleReject(data: unknown): AuthError {\n\t\treturn data;\n\t}\n}\n"],"mappings":"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","names":["BaseModel","params","key","Branch","BaseModel","readFile","LokalisePkg","_LokalisePkg","pkg","ApiRequest","uri","method","body","params","clientData","url","prefixUrl","headers","options","target","response","err","responseJSON","LokalisePkg","respJson","rawUri","regexp","_entity","isMandaratory","paramName","t_param","PaginatedResult","items","headers","str","CursorPaginatedResult","PaginatedResult","items","headers","BaseCollection","clientData","req_params","params","id","body","resolveFn","method","json","headers","childClass","jsonData","secondaryJson","_headers","secondary","arr","jsonArray","obj","resultArray","PaginatedResult","CursorPaginatedResult","data","rejectFn","uri","request","err","ApiRequest","raw_body","Branches","BaseCollection","Branch","request_params","branch_params","branch_id","body","params","Comment","BaseModel","Comments","BaseCollection","Comment","request_params","comment_params","body","comment_id","params","Contributor","BaseModel","Contributors","BaseCollection","Contributor","request_params","contributor_params","body","contributor_id","File","BaseModel","QueuedProcess","BaseModel","Files","BaseCollection","File","QueuedProcess","request_params","project_id","upload","download","file_id","Jwt","BaseModel","Jwt","BaseCollection","project_id","body","request_params","Key","BaseModel","Keys","BaseCollection","Key","request_params","key_params","key_id","key_ids","keys","Language","BaseModel","Languages","BaseCollection","Language","params","request_params","raw_body","body","lang_id","lang_params","Order","BaseModel","Orders","BaseCollection","Order","request_params","order_params","order_id","PaymentCard","BaseModel","PaymentCards","BaseCollection","PaymentCard","request_params","card_params","card_id","PermissionTemplate","BaseModel","PermissionTemplates","BaseCollection","PermissionTemplate","request_params","Project","BaseModel","Projects","BaseCollection","Project","request_params","project_params","project_id","QueuedProcesses","BaseCollection","QueuedProcess","request_params","process_id","Screenshot","BaseModel","Screenshots","BaseCollection","Screenshot","request_params","raw_body","body","screnshot_id","screenshot_id","screenshot_params","Segment","BaseModel","Segments","BaseCollection","Segment","request_params","segment_number","segment_params","Snapshot","BaseModel","Snapshots","BaseCollection","Snapshot","request_params","snapshot_params","snapshot_id","params","Task","BaseModel","Tasks","BaseCollection","Task","request_params","task_params","task_id","TeamUserBillingDetails","BaseModel","TeamUserBillingDetails","BaseCollection","team_id","params","billing_details_params","request_params","TeamUser","BaseModel","TeamUsers","BaseCollection","TeamUser","request_params","team_user_id","team_user_params","Team","BaseModel","Teams","BaseCollection","Team","request_params","TranslationProvider","BaseModel","TranslationProviders","BaseCollection","TranslationProvider","request_params","provider_id","TranslationStatus","BaseModel","TranslationStatuses","BaseCollection","TranslationStatus","request_params","translation_status_params","translation_status_id","Translation","BaseModel","Translations","BaseCollection","Translation","request_params","translation_id","translation_params","UserGroup","BaseModel","UserGroups","BaseCollection","UserGroup","request_params","user_group_params","user_group_id","team_id","group_id","user_ids","params","body","project_ids","json","headers","formatted_json","Webhook","BaseModel","Webhooks","BaseCollection","Webhook","request_params","webhook_params","webhook_id","params","BaseClient","params","apiKey","compression","LokaliseApi","BaseClient","params","Branches","Comments","Contributors","Files","Jwt","Keys","Languages","Orders","PaymentCards","PermissionTemplates","Projects","QueuedProcesses","Screenshots","Segments","Snapshots","Tasks","Teams","TeamUsers","TeamUserBillingDetails","Translations","TranslationProviders","TranslationStatuses","UserGroups","Webhooks","LokaliseApiOAuth","LokaliseApi","params","tokenType","OtaBundle","BaseModel","OtaCollection","BaseCollection","json","id","req_params","params","OtaBundleManagement","OtaCollection","OtaBundle","request_params","bundleId","requestParams","bundleParams","OtaBundlePublishing","OtaCollection","bundleId","request_params","params","OtaFreezePeriod","BaseModel","OtaFreezePeriods","OtaCollection","OtaFreezePeriod","requestParams","freezeParams","freezeId","OtaSdkToken","BaseModel","OtaSdkTokens","OtaCollection","OtaSdkToken","request_params","tokenId","OtaStatistics","BaseModel","OtaUsageStatistics","OtaCollection","OtaStatistics","bundle_params","request_params","params","LokaliseApiOta","BaseClient","params","OtaBundleManagement","OtaBundlePublishing","OtaUsageStatistics","OtaFreezePeriods","OtaSdkTokens","OtaBundleArchive","BaseModel","OtaBundles","OtaCollection","OtaBundleArchive","bundle_params","request_params","params","LokaliseOtaBundles","BaseClient","params","OtaBundles","AuthRequest","_AuthRequest","uri","method","body","host","version","fullUri","target","options","response","responseJSON","err","LokalisePkg","LokaliseAuth","clientId","clientSecret","host","version","scope","redirect_uri","state","scopeString","params","code","refresh_token","AuthRequest","err","url","data"]} \ No newline at end of file diff --git a/tsup.config.ts b/tsup.config.ts index d77bf416..888cef1d 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -9,4 +9,5 @@ export default defineConfig({ shims: true, sourcemap: true, clean: true, + minify: true, });