@jars-lt/jars-app-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,267 @@
1
+ // src/client.ts
2
+ import createClient from "openapi-fetch";
3
+
4
+ // src/errors.ts
5
+ var JarsApiError = class _JarsApiError extends Error {
6
+ status;
7
+ code;
8
+ details;
9
+ constructor(init) {
10
+ super(init.message ?? "JARS API request failed");
11
+ this.name = "JarsApiError";
12
+ this.status = init.status;
13
+ this.code = init.code;
14
+ this.details = init.details;
15
+ Object.setPrototypeOf(this, _JarsApiError.prototype);
16
+ }
17
+ };
18
+
19
+ // src/resources/shared.ts
20
+ function toQuery(params) {
21
+ return params;
22
+ }
23
+
24
+ // src/resources/partners.ts
25
+ var PartnersResource = class {
26
+ constructor(client) {
27
+ this.client = client;
28
+ }
29
+ list(params) {
30
+ return this.client.request("get", "/api/partners", { query: toQuery(params) });
31
+ }
32
+ get(id) {
33
+ return this.client.request("get", "/api/partners/{id}", { params: { id } });
34
+ }
35
+ create(body) {
36
+ return this.client.request("post", "/api/partners", { body });
37
+ }
38
+ update(id, body) {
39
+ return this.client.request("put", "/api/partners/{id}", { params: { id }, body });
40
+ }
41
+ remove(id) {
42
+ return this.client.request("delete", "/api/partners/{id}", { params: { id } });
43
+ }
44
+ };
45
+
46
+ // src/resources/products.ts
47
+ var ProductsResource = class {
48
+ constructor(client) {
49
+ this.client = client;
50
+ }
51
+ list(params) {
52
+ return this.client.request("get", "/api/products", { query: toQuery(params) });
53
+ }
54
+ get(id) {
55
+ return this.client.request("get", "/api/products/{id}", { params: { id } });
56
+ }
57
+ create(body) {
58
+ return this.client.request("post", "/api/products", { body });
59
+ }
60
+ update(id, body) {
61
+ return this.client.request("put", "/api/products/{id}", { params: { id }, body });
62
+ }
63
+ remove(id) {
64
+ return this.client.request("delete", "/api/products/{id}", { params: { id } });
65
+ }
66
+ };
67
+
68
+ // src/resources/invoices.ts
69
+ var InvoicesResource = class {
70
+ constructor(client) {
71
+ this.client = client;
72
+ }
73
+ list(params) {
74
+ return this.client.request("get", "/api/invoices", { query: toQuery(params) });
75
+ }
76
+ get(id) {
77
+ return this.client.request("get", "/api/invoices/{id}", { params: { id } });
78
+ }
79
+ create(body) {
80
+ return this.client.request("post", "/api/invoices", { body });
81
+ }
82
+ update(id, body) {
83
+ return this.client.request("put", "/api/invoices/{id}", { params: { id }, body });
84
+ }
85
+ remove(id) {
86
+ return this.client.request("delete", "/api/invoices/{id}", { params: { id } });
87
+ }
88
+ post(id) {
89
+ return this.client.request("post", "/api/invoices/{id}/post", { params: { id } });
90
+ }
91
+ unpost(id) {
92
+ return this.client.request("post", "/api/invoices/{id}/unpost", { params: { id } });
93
+ }
94
+ cancel(id) {
95
+ return this.client.request("post", "/api/invoices/{id}/cancel", { params: { id } });
96
+ }
97
+ setExternalStatus(id, externalStatus) {
98
+ return this.client.request("patch", "/api/invoices/{id}/external-status", {
99
+ params: { id },
100
+ body: { externalStatus }
101
+ });
102
+ }
103
+ };
104
+
105
+ // src/resources/journal.ts
106
+ var JournalResource = class {
107
+ constructor(client) {
108
+ this.client = client;
109
+ }
110
+ list(params) {
111
+ return this.client.request("get", "/api/journal", { query: toQuery(params) });
112
+ }
113
+ get(id) {
114
+ return this.client.request("get", "/api/journal/{id}", { params: { id } });
115
+ }
116
+ create(body) {
117
+ return this.client.request("post", "/api/journal", { body });
118
+ }
119
+ };
120
+
121
+ // src/resources/reports.ts
122
+ var ReportsResource = class {
123
+ constructor(client) {
124
+ this.client = client;
125
+ }
126
+ trialBalance(params) {
127
+ return this.client.request("get", "/api/reports/trial-balance", { query: params });
128
+ }
129
+ generalLedger(params) {
130
+ return this.client.request("get", "/api/reports/general-ledger", { query: params });
131
+ }
132
+ partnerBalance(params) {
133
+ return this.client.request("get", "/api/reports/partner-balance", { query: params });
134
+ }
135
+ cashBook(params) {
136
+ return this.client.request("get", "/api/reports/cash-book", { query: params });
137
+ }
138
+ isafExport(params) {
139
+ return this.client.request("get", "/api/reports/isaf-export", { query: params });
140
+ }
141
+ };
142
+
143
+ // src/resources/audit-logs.ts
144
+ var AuditLogsResource = class {
145
+ constructor(client) {
146
+ this.client = client;
147
+ }
148
+ list(params) {
149
+ return this.client.request("get", "/api/audit-logs", { query: toQuery(params) });
150
+ }
151
+ get(id) {
152
+ return this.client.request("get", "/api/audit-logs/{id}", { params: { id } });
153
+ }
154
+ };
155
+
156
+ // src/resources/lookups.ts
157
+ var LookupsResource = class {
158
+ constructor(client) {
159
+ this.client = client;
160
+ }
161
+ accounts(params) {
162
+ return this.client.request("get", "/api/accounts", { query: toQuery(params) });
163
+ }
164
+ vatCodes(params) {
165
+ return this.client.request("get", "/api/vat-codes", { query: toQuery(params) });
166
+ }
167
+ units(params) {
168
+ return this.client.request("get", "/api/units", { query: toQuery(params) });
169
+ }
170
+ templates(params) {
171
+ return this.client.request("get", "/api/templates", { query: toQuery(params) });
172
+ }
173
+ };
174
+
175
+ // src/client.ts
176
+ var DEFAULT_BASE_URL = "https://app.jars.lt";
177
+ function safeJson(text) {
178
+ try {
179
+ return JSON.parse(text);
180
+ } catch {
181
+ return text;
182
+ }
183
+ }
184
+ var JarsClient = class {
185
+ /** Underlying `openapi-fetch` client for advanced, fully-typed use. */
186
+ raw;
187
+ partners;
188
+ products;
189
+ invoices;
190
+ journal;
191
+ reports;
192
+ auditLogs;
193
+ lookups;
194
+ baseUrl;
195
+ authHeader;
196
+ fetchImpl;
197
+ constructor(config) {
198
+ if (!config?.apiKey) throw new Error("JarsClient: apiKey is required");
199
+ this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
200
+ this.authHeader = `Bearer ${config.apiKey}`;
201
+ this.fetchImpl = config.fetch ?? fetch;
202
+ this.raw = createClient({
203
+ baseUrl: this.baseUrl,
204
+ fetch: this.fetchImpl,
205
+ headers: { Authorization: this.authHeader }
206
+ });
207
+ this.partners = new PartnersResource(this);
208
+ this.products = new ProductsResource(this);
209
+ this.invoices = new InvoicesResource(this);
210
+ this.journal = new JournalResource(this);
211
+ this.reports = new ReportsResource(this);
212
+ this.auditLogs = new AuditLogsResource(this);
213
+ this.lookups = new LookupsResource(this);
214
+ }
215
+ async request(method, path, opts = {}) {
216
+ const finalPath = opts.params ? path.replace(/\{([^}]+)\}/g, (_, key) => {
217
+ const value = opts.params[key];
218
+ return encodeURIComponent(value ?? `{${key}}`);
219
+ }) : path;
220
+ const url = new URL(this.baseUrl + finalPath);
221
+ if (opts.query) {
222
+ for (const [key, value] of Object.entries(opts.query)) {
223
+ if (value !== void 0) url.searchParams.set(key, String(value));
224
+ }
225
+ }
226
+ const headers = new Headers({ Authorization: this.authHeader });
227
+ let body;
228
+ if (opts.body !== void 0) {
229
+ headers.set("content-type", "application/json");
230
+ body = JSON.stringify(opts.body);
231
+ }
232
+ let res;
233
+ try {
234
+ res = await this.fetchImpl(url, { method: method.toUpperCase(), headers, body });
235
+ } catch (cause) {
236
+ throw new JarsApiError({
237
+ status: 0,
238
+ message: cause instanceof Error ? cause.message : "Network error"
239
+ });
240
+ }
241
+ const text = await res.text();
242
+ const parsed = text === "" ? void 0 : safeJson(text);
243
+ if (!res.ok) {
244
+ const env = parsed ?? {};
245
+ throw new JarsApiError({
246
+ status: res.status,
247
+ message: env.error,
248
+ code: env.code,
249
+ details: env.details
250
+ });
251
+ }
252
+ return parsed;
253
+ }
254
+ };
255
+ export {
256
+ AuditLogsResource,
257
+ DEFAULT_BASE_URL,
258
+ InvoicesResource,
259
+ JarsApiError,
260
+ JarsClient,
261
+ JournalResource,
262
+ LookupsResource,
263
+ PartnersResource,
264
+ ProductsResource,
265
+ ReportsResource
266
+ };
267
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/resources/shared.ts","../src/resources/partners.ts","../src/resources/products.ts","../src/resources/invoices.ts","../src/resources/journal.ts","../src/resources/reports.ts","../src/resources/audit-logs.ts","../src/resources/lookups.ts"],"sourcesContent":["import createClient, { type Client } from 'openapi-fetch'\nimport type { paths } from './generated/types'\nimport { JarsApiError } from './errors'\nimport { PartnersResource } from './resources/partners'\nimport { ProductsResource } from './resources/products'\nimport { InvoicesResource } from './resources/invoices'\nimport { JournalResource } from './resources/journal'\nimport { ReportsResource } from './resources/reports'\nimport { AuditLogsResource } from './resources/audit-logs'\nimport { LookupsResource } from './resources/lookups'\n\n/** Default API host. The generated path keys already carry the `/api` prefix. */\nexport const DEFAULT_BASE_URL = 'https://app.jars.lt'\n\nexport type Method = 'get' | 'post' | 'put' | 'patch' | 'delete'\n\nexport interface JarsClientConfig {\n apiKey: string\n baseUrl?: string\n fetch?: typeof fetch\n}\n\nexport interface RequestOptions {\n query?: Record<string, string | number | boolean | undefined>\n body?: unknown\n params?: Record<string, string>\n}\n\ninterface ErrorEnvelope {\n error?: string\n code?: string\n details?: unknown\n}\n\n/** Parse JSON, falling back to the raw string when the body isn't valid JSON. */\nfunction safeJson(text: string): unknown {\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n}\n\nexport class JarsClient {\n /** Underlying `openapi-fetch` client for advanced, fully-typed use. */\n readonly raw: Client<paths>\n\n readonly partners: PartnersResource\n readonly products: ProductsResource\n readonly invoices: InvoicesResource\n readonly journal: JournalResource\n readonly reports: ReportsResource\n readonly auditLogs: AuditLogsResource\n readonly lookups: LookupsResource\n\n private readonly baseUrl: string\n private readonly authHeader: string\n private readonly fetchImpl: typeof fetch\n\n constructor(config: JarsClientConfig) {\n if (!config?.apiKey) throw new Error('JarsClient: apiKey is required')\n\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '')\n this.authHeader = `Bearer ${config.apiKey}`\n this.fetchImpl = config.fetch ?? fetch\n\n this.raw = createClient<paths>({\n baseUrl: this.baseUrl,\n fetch: this.fetchImpl,\n headers: { Authorization: this.authHeader },\n })\n\n this.partners = new PartnersResource(this)\n this.products = new ProductsResource(this)\n this.invoices = new InvoicesResource(this)\n this.journal = new JournalResource(this)\n this.reports = new ReportsResource(this)\n this.auditLogs = new AuditLogsResource(this)\n this.lookups = new LookupsResource(this)\n }\n\n async request<T = unknown>(method: Method, path: string, opts: RequestOptions = {}): Promise<T> {\n const finalPath = opts.params\n ? path.replace(/\\{([^}]+)\\}/g, (_, key: string) => {\n const value = opts.params![key]\n return encodeURIComponent(value ?? `{${key}}`)\n })\n : path\n\n const url = new URL(this.baseUrl + finalPath)\n if (opts.query) {\n for (const [key, value] of Object.entries(opts.query)) {\n if (value !== undefined) url.searchParams.set(key, String(value))\n }\n }\n\n const headers = new Headers({ Authorization: this.authHeader })\n let body: string | undefined\n if (opts.body !== undefined) {\n headers.set('content-type', 'application/json')\n body = JSON.stringify(opts.body)\n }\n\n let res: Response\n try {\n res = await this.fetchImpl(url, { method: method.toUpperCase(), headers, body })\n } catch (cause) {\n throw new JarsApiError({\n status: 0,\n message: cause instanceof Error ? cause.message : 'Network error',\n })\n }\n\n const text = await res.text()\n const parsed = text === '' ? undefined : safeJson(text)\n\n if (!res.ok) {\n const env = (parsed ?? {}) as ErrorEnvelope\n throw new JarsApiError({\n status: res.status,\n message: env.error,\n code: env.code,\n details: env.details,\n })\n }\n\n return parsed as T\n }\n}\n","export interface JarsApiErrorInit {\n status: number\n message?: string\n code?: string\n details?: unknown\n}\n\n/** Thrown for any non-2xx API response or a network/abort failure (status 0). */\nexport class JarsApiError extends Error {\n readonly status: number\n readonly code?: string\n readonly details?: unknown\n\n constructor(init: JarsApiErrorInit) {\n super(init.message ?? 'JARS API request failed')\n this.name = 'JarsApiError'\n this.status = init.status\n this.code = init.code\n this.details = init.details\n Object.setPrototypeOf(this, JarsApiError.prototype)\n }\n}\n","import type { RequestOptions } from '../client'\n\n/**\n * List query parameters: the documented common params (search/sort/limit)\n * plus arbitrary passthrough field filters supported by the API.\n */\nexport interface ListParams {\n search?: string\n sort?: string\n limit?: number\n [filter: string]: string | number | boolean | undefined\n}\n\nexport function toQuery(params?: ListParams): RequestOptions['query'] {\n return params as RequestOptions['query']\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport type { ListParams } from './shared'\n\nexport class PartnersResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/partners', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/partners/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/partners', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/partners/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/partners/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class ProductsResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/products', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/products/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/products', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/products/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/products/{id}', { params: { id } })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class InvoicesResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/invoices', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/invoices/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/invoices', { body })\n }\n\n update<T = unknown>(id: string, body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('put', '/api/invoices/{id}', { params: { id }, body })\n }\n\n remove<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('delete', '/api/invoices/{id}', { params: { id } })\n }\n\n post<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/post', { params: { id } })\n }\n\n unpost<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/unpost', { params: { id } })\n }\n\n cancel<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('post', '/api/invoices/{id}/cancel', { params: { id } })\n }\n\n setExternalStatus<T = unknown>(id: string, externalStatus: string | null): Promise<T> {\n return this.client.request<T>('patch', '/api/invoices/{id}/external-status', {\n params: { id },\n body: { externalStatus },\n })\n }\n}\n","import type { JarsClient } from '../client'\nimport { type ListParams, toQuery } from './shared'\n\nexport class JournalResource {\n constructor(private readonly client: JarsClient) {}\n\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/journal', { query: toQuery(params) })\n }\n\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/journal/{id}', { params: { id } })\n }\n\n create<T = unknown>(body: Record<string, unknown>): Promise<T> {\n return this.client.request<T>('post', '/api/journal', { body })\n }\n}\n","import type { JarsClient } from '../client'\n\nexport type ReportParams = Record<string, string | number | boolean | undefined>\n\nexport class ReportsResource {\n constructor(private readonly client: JarsClient) {}\n trialBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/trial-balance', { query: params })\n }\n generalLedger<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/general-ledger', { query: params })\n }\n partnerBalance<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/partner-balance', { query: params })\n }\n cashBook<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/cash-book', { query: params })\n }\n isafExport<T = unknown>(params?: ReportParams): Promise<T> {\n return this.client.request<T>('get', '/api/reports/isaf-export', { query: params })\n }\n}\n","import { type ListParams, toQuery } from './shared'\nimport type { JarsClient } from '../client'\n\nexport class AuditLogsResource {\n constructor(private readonly client: JarsClient) {}\n list<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/audit-logs', { query: toQuery(params) })\n }\n get<T = unknown>(id: string): Promise<T> {\n return this.client.request<T>('get', '/api/audit-logs/{id}', { params: { id } })\n }\n}\n","import { type ListParams, toQuery } from './shared'\nimport type { JarsClient } from '../client'\n\n/**\n * Reference data (accounts, VAT codes, units, operation templates) is\n * read-mostly. For MVP the facade exposes LIST methods only; create/update/\n * delete remain available through the raw client.\n */\nexport class LookupsResource {\n constructor(private readonly client: JarsClient) {}\n\n accounts<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/accounts', { query: toQuery(params) })\n }\n\n vatCodes<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/vat-codes', { query: toQuery(params) })\n }\n\n units<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/units', { query: toQuery(params) })\n }\n\n templates<T = unknown[]>(params?: ListParams): Promise<T> {\n return this.client.request<T>('get', '/api/templates', { query: toQuery(params) })\n }\n}\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@jars-lt/jars-app-sdk",
3
+ "version": "0.1.0",
4
+ "description": "Official TypeScript SDK for the JARS Apskaita accounting API",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": {
13
+ "types": "./dist/index.d.ts",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "require": {
17
+ "types": "./dist/index.d.cts",
18
+ "default": "./dist/index.cjs"
19
+ }
20
+ }
21
+ },
22
+ "files": ["dist", "README.md"],
23
+ "sideEffects": false,
24
+ "scripts": {
25
+ "generate": "tsx scripts/generate.ts",
26
+ "generate:check": "tsx scripts/generate.ts && git diff --exit-code -- src/generated/types.ts",
27
+ "build": "tsup",
28
+ "dev": "tsup --watch",
29
+ "clean": "rm -rf dist",
30
+ "typecheck": "tsc --noEmit",
31
+ "test": "vitest run",
32
+ "prepublishOnly": "pnpm build"
33
+ },
34
+ "keywords": ["jars", "apskaita", "accounting", "lithuania", "api", "sdk"],
35
+ "author": "UAB Sistemium",
36
+ "homepage": "https://app.jars.lt",
37
+ "dependencies": {
38
+ "openapi-fetch": "^0.13.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^22",
42
+ "openapi-typescript": "^7.4.0",
43
+ "tsup": "^8",
44
+ "tsx": "^4",
45
+ "typescript": "^5",
46
+ "vitest": "^4"
47
+ }
48
+ }