@paklo/core 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.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/dist/browser/defineProperty-ie4tC-F5.js +43 -0
  3. package/dist/browser/environment-DinhzwQn.js +139 -0
  4. package/dist/browser/environment-DinhzwQn.js.map +1 -0
  5. package/dist/browser/environment.d.ts +33 -0
  6. package/dist/browser/environment.js +3 -0
  7. package/dist/browser/github.d.ts +151 -0
  8. package/dist/browser/github.js +199 -0
  9. package/dist/browser/github.js.map +1 -0
  10. package/dist/browser/http.d.ts +121 -0
  11. package/dist/browser/http.js +248 -0
  12. package/dist/browser/http.js.map +1 -0
  13. package/dist/browser/logger-B7HLv660.js +31 -0
  14. package/dist/browser/logger-B7HLv660.js.map +1 -0
  15. package/dist/browser/logger.d.ts +23 -0
  16. package/dist/browser/logger.js +4 -0
  17. package/dist/browser/shared-data.d.ts +22 -0
  18. package/dist/browser/shared-data.js +23 -0
  19. package/dist/browser/shared-data.js.map +1 -0
  20. package/dist/browser/usage.d.ts +99 -0
  21. package/dist/browser/usage.js +383 -0
  22. package/dist/browser/usage.js.map +1 -0
  23. package/dist/node/azure.d.ts +338 -0
  24. package/dist/node/azure.js +735 -0
  25. package/dist/node/azure.js.map +1 -0
  26. package/dist/node/dependabot-BteoKZVy.js +547 -0
  27. package/dist/node/dependabot-BteoKZVy.js.map +1 -0
  28. package/dist/node/dependabot.d.ts +3 -0
  29. package/dist/node/dependabot.js +6 -0
  30. package/dist/node/environment-DX5CD-dD.js +138 -0
  31. package/dist/node/environment-DX5CD-dD.js.map +1 -0
  32. package/dist/node/environment.d.ts +33 -0
  33. package/dist/node/environment.js +3 -0
  34. package/dist/node/github.d.ts +2 -0
  35. package/dist/node/github.js +198 -0
  36. package/dist/node/github.js.map +1 -0
  37. package/dist/node/http-BG_-s47I.js +245 -0
  38. package/dist/node/http-BG_-s47I.js.map +1 -0
  39. package/dist/node/http.d.ts +121 -0
  40. package/dist/node/http.js +4 -0
  41. package/dist/node/index-3wZw74Ah.d.ts +151 -0
  42. package/dist/node/index-DP9JfUPG.d.ts +1761 -0
  43. package/dist/node/job-Crr4kh3e.js +451 -0
  44. package/dist/node/job-Crr4kh3e.js.map +1 -0
  45. package/dist/node/logger-bWnHxtAf.js +31 -0
  46. package/dist/node/logger-bWnHxtAf.js.map +1 -0
  47. package/dist/node/logger.d.ts +23 -0
  48. package/dist/node/logger.js +4 -0
  49. package/dist/node/shared-data.d.ts +22 -0
  50. package/dist/node/shared-data.js +23 -0
  51. package/dist/node/shared-data.js.map +1 -0
  52. package/dist/node/usage.d.ts +99 -0
  53. package/dist/node/usage.js +48 -0
  54. package/dist/node/usage.js.map +1 -0
  55. package/package.json +93 -0
@@ -0,0 +1,245 @@
1
+ import { t as environment } from "./environment-DX5CD-dD.js";
2
+
3
+ //#region src/http/headers.ts
4
+ const HEADER_NAME_CONTENT_DISPOSITION = "Content-Disposition";
5
+ const HEADER_NAME_CONTENT_TYPE = "Content-Type";
6
+ const HEADER_NAME_ACCEPT = "Accept";
7
+ const HEADER_NAME_USER_AGENT = "User-Agent";
8
+ const HEADER_NAME_AUTHORIZATION = "Authorization";
9
+
10
+ //#endregion
11
+ //#region src/http/multipart.ts
12
+ var MultipartFormDataBody = class {
13
+ type = "multipart/form-data";
14
+ boundary = `${Math.random().toString(36).substring(2)}`;
15
+ parts = [];
16
+ async encode() {
17
+ if (this.parts.length === 0) throw new Error("MultipartFormDataBody must have at least one part");
18
+ const data = [];
19
+ for (const part of this.parts) {
20
+ data.push(`--${this.boundary}\r\n`);
21
+ for (const [key, value] of Object.entries(part.headers)) data.push(`${key}: ${value}\r\n`);
22
+ data.push("\r\n");
23
+ data.push(part.body);
24
+ data.push("\r\n");
25
+ }
26
+ data.push(`--${this.boundary}--\r\n`);
27
+ const list = [];
28
+ for (const item of data) if (item instanceof File) list.push(Buffer.from(await item.arrayBuffer()));
29
+ else if (typeof item === "string") list.push(Buffer.from(item, "utf8"));
30
+ else list.push(item);
31
+ return Buffer.concat(list);
32
+ }
33
+ getBoundary() {
34
+ return this.boundary;
35
+ }
36
+ getContentType() {
37
+ return `${this.type}; boundary=${this.boundary}`;
38
+ }
39
+ add(name, value) {
40
+ const part = createPart(name, value);
41
+ this.parts.push(part);
42
+ }
43
+ addFile(name, file) {
44
+ const part = createPart(name, file, file.name, file.type);
45
+ this.parts.push(part);
46
+ }
47
+ };
48
+ function createPart(name, body, filename, contentType) {
49
+ const headers = {};
50
+ headers[HEADER_NAME_CONTENT_DISPOSITION] = `form-data; name="${name}"${filename ? `; filename="${filename}"` : ""}`;
51
+ if (contentType) headers[HEADER_NAME_CONTENT_TYPE] = contentType;
52
+ return {
53
+ name,
54
+ headers,
55
+ body
56
+ };
57
+ }
58
+
59
+ //#endregion
60
+ //#region src/http/inner.ts
61
+ const defaultUserAgent = `paklo/${environment.sha?.substring(0, 7) ?? "dogfood"}`;
62
+ var InnerApiClient = class {
63
+ baseUrl;
64
+ headers;
65
+ token;
66
+ /**
67
+ * Create a new API client.
68
+ * @param options The options to use for the client.
69
+ */
70
+ constructor({ baseUrl, token }) {
71
+ this.baseUrl = baseUrl;
72
+ this.headers = new Headers({ [HEADER_NAME_ACCEPT]: "application/json" });
73
+ this.token = token;
74
+ }
75
+ async get(url, options) {
76
+ return this.request({
77
+ url: this.makeUrl(url, options),
78
+ method: "GET",
79
+ ...options
80
+ });
81
+ }
82
+ async post(url, options) {
83
+ return this.request({
84
+ method: "POST",
85
+ url: this.makeUrl(url, options),
86
+ ...options
87
+ });
88
+ }
89
+ async put(url, options) {
90
+ return this.request({
91
+ method: "PUT",
92
+ url: this.makeUrl(url, options),
93
+ ...options
94
+ });
95
+ }
96
+ async patch(url, options) {
97
+ return this.request({
98
+ method: "PATCH",
99
+ url: this.makeUrl(url, options),
100
+ ...options
101
+ });
102
+ }
103
+ async delete(url, options) {
104
+ return this.request({
105
+ method: "DELETE",
106
+ url: this.makeUrl(url, options),
107
+ ...options
108
+ });
109
+ }
110
+ async request(options) {
111
+ const { method, url, payload, userAgent, headers: additionalHeaders, schema } = options;
112
+ const headers = new Headers(this.headers);
113
+ const finalUserAgent = userAgent && userAgent.length > 0 ? `${userAgent} (${defaultUserAgent})` : defaultUserAgent;
114
+ headers.set(HEADER_NAME_USER_AGENT, finalUserAgent);
115
+ if (this.token) headers.set(HEADER_NAME_AUTHORIZATION, `Bearer ${this.token}`);
116
+ if (additionalHeaders) if (additionalHeaders instanceof Headers) additionalHeaders.forEach((value, key) => headers.set(key, value));
117
+ else if (Array.isArray(additionalHeaders)) additionalHeaders.forEach(([key, value]) => headers.set(key, value));
118
+ else Object.entries(additionalHeaders).forEach(([key, value]) => headers.set(key, value));
119
+ let body;
120
+ if (skipSerialization(payload)) body = payload;
121
+ else if (payload instanceof MultipartFormDataBody) {
122
+ body = new Uint8Array(await payload.encode());
123
+ headers.set(HEADER_NAME_CONTENT_TYPE, payload.getContentType());
124
+ } else {
125
+ body = JSON.stringify(payload);
126
+ headers.set(HEADER_NAME_CONTENT_TYPE, "application/json");
127
+ }
128
+ try {
129
+ const response = await fetch(url, {
130
+ method,
131
+ headers,
132
+ body
133
+ });
134
+ const { ok: successful, status, statusText } = response;
135
+ if (!successful) try {
136
+ const rawError = await response.text();
137
+ return {
138
+ headers: response.headers,
139
+ successful,
140
+ status,
141
+ statusText,
142
+ error: JSON.parse(rawError)
143
+ };
144
+ } catch (err) {
145
+ if (err instanceof SyntaxError) return {
146
+ headers: response.headers,
147
+ successful,
148
+ status,
149
+ statusText,
150
+ error: {
151
+ title: "Unknown error",
152
+ status,
153
+ statusText: response.statusText
154
+ }
155
+ };
156
+ const error = {
157
+ title: (err instanceof Error ? err.message : void 0) ?? "Unknown error",
158
+ status: response.status,
159
+ statusText: response.statusText
160
+ };
161
+ return {
162
+ headers: response.headers,
163
+ successful,
164
+ status,
165
+ statusText,
166
+ error
167
+ };
168
+ }
169
+ const contentLength = response.headers.get("content-length");
170
+ let data = contentLength && contentLength !== "0" ? await response.json() : void 0;
171
+ if (data && schema) {
172
+ const result = await schema.safeParseAsync(data);
173
+ if (!result.success) return {
174
+ headers: response.headers,
175
+ successful: false,
176
+ status,
177
+ statusText,
178
+ data,
179
+ error: {
180
+ title: "application_error",
181
+ detail: "Schema validation error",
182
+ errors: result.error.flatten().fieldErrors,
183
+ status: response.status,
184
+ statusText: response.statusText
185
+ }
186
+ };
187
+ data = result.data;
188
+ }
189
+ return {
190
+ headers: response.headers,
191
+ data,
192
+ successful,
193
+ status,
194
+ statusText
195
+ };
196
+ } catch (err) {
197
+ return {
198
+ headers: new Headers(),
199
+ successful: false,
200
+ status: -1,
201
+ statusText: "Application Error",
202
+ error: {
203
+ title: "application_error",
204
+ detail: `Unable to fetch data. The request could not be resolved. ${err}`
205
+ }
206
+ };
207
+ }
208
+ }
209
+ makeUrl(url, options) {
210
+ if (url.startsWith("http://") || url.startsWith("https://")) return url;
211
+ return `${options?.baseUrl ?? this.baseUrl}${url}`;
212
+ }
213
+ };
214
+ /**
215
+ * Whether to skip serialization of the payload.
216
+ * @param payload The payload to check.
217
+ * @returns true if the payload should not be serialized; otherwise, false.
218
+ */
219
+ function skipSerialization(payload) {
220
+ return payload instanceof FormData || payload instanceof URLSearchParams || payload instanceof ReadableStream || payload instanceof Blob || payload instanceof ArrayBuffer || payload instanceof Buffer || typeof payload === "string" || !payload;
221
+ }
222
+ /** Http request error */
223
+ var HttpRequestError = class extends Error {
224
+ constructor(message, code) {
225
+ super(message);
226
+ this.code = code;
227
+ }
228
+ };
229
+ function isErrorTemporaryFailure(e) {
230
+ if (e instanceof HttpRequestError) switch (e.code) {
231
+ case 502: return true;
232
+ case 503: return true;
233
+ case 504: return true;
234
+ default: return false;
235
+ }
236
+ else if (e?.code) switch (e.code) {
237
+ case "ETIMEDOUT": return true;
238
+ default: return false;
239
+ }
240
+ else return false;
241
+ }
242
+
243
+ //#endregion
244
+ export { HEADER_NAME_AUTHORIZATION as a, HEADER_NAME_USER_AGENT as c, HEADER_NAME_ACCEPT as i, InnerApiClient as n, HEADER_NAME_CONTENT_DISPOSITION as o, isErrorTemporaryFailure as r, HEADER_NAME_CONTENT_TYPE as s, HttpRequestError as t };
245
+ //# sourceMappingURL=http-BG_-s47I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-BG_-s47I.js","names":["data: Array<MultipartFormDataBodyPart['body']>","list: Buffer[]","headers: Record<string, string>","body: BodyInit | undefined","error: ProblemDetails","code: number"],"sources":["../../src/http/headers.ts","../../src/http/multipart.ts","../../src/http/inner.ts"],"sourcesContent":["export const HEADER_NAME_CONTENT_DISPOSITION = 'Content-Disposition';\nexport const HEADER_NAME_CONTENT_TYPE = 'Content-Type';\nexport const HEADER_NAME_ACCEPT = 'Accept';\nexport const HEADER_NAME_USER_AGENT = 'User-Agent';\nexport const HEADER_NAME_AUTHORIZATION = 'Authorization';\n","import { HEADER_NAME_CONTENT_DISPOSITION, HEADER_NAME_CONTENT_TYPE } from './headers';\n\nexport class MultipartFormDataBody {\n private type = 'multipart/form-data';\n private boundary: string = `${Math.random().toString(36).substring(2)}`;\n private parts: Array<MultipartFormDataBodyPart> = [];\n\n public async encode(): Promise<Buffer> {\n if (this.parts.length === 0) {\n throw new Error('MultipartFormDataBody must have at least one part');\n }\n\n const data: Array<MultipartFormDataBodyPart['body']> = [];\n\n for (const part of this.parts) {\n // write boundary\n data.push(`--${this.boundary}\\r\\n`);\n\n // write headers\n for (const [key, value] of Object.entries(part.headers)) {\n data.push(`${key}: ${value}\\r\\n`);\n }\n data.push('\\r\\n');\n\n // write body\n data.push(part.body);\n data.push('\\r\\n');\n }\n\n data.push(`--${this.boundary}--\\r\\n`);\n\n const list: Buffer[] = [];\n for (const item of data) {\n if (item instanceof File) list.push(Buffer.from(await item.arrayBuffer()));\n else if (typeof item === 'string') list.push(Buffer.from(item, 'utf8'));\n else list.push(item);\n }\n return Buffer.concat(list);\n }\n\n public getBoundary(): string {\n return this.boundary;\n }\n\n public getContentType(): string {\n return `${this.type}; boundary=${this.boundary}`;\n }\n\n public add(name: string, value: string) {\n const part = createPart(name, value);\n this.parts.push(part);\n }\n\n public addFile(name: string, file: File) {\n const part = createPart(name, file, file.name, file.type);\n this.parts.push(part);\n }\n}\n\ntype MultipartFormDataBodyPart = {\n name: string;\n headers: Record<string, string>;\n body: Buffer | File | string;\n};\n\nfunction createPart(\n name: string,\n body: MultipartFormDataBodyPart['body'],\n filename?: string,\n contentType?: string,\n): MultipartFormDataBodyPart {\n const headers: Record<string, string> = {};\n headers[HEADER_NAME_CONTENT_DISPOSITION] = `form-data; name=\"${name}\"${filename ? `; filename=\"${filename}\"` : ''}`;\n if (contentType) headers[HEADER_NAME_CONTENT_TYPE] = contentType;\n return { name, headers, body };\n}\n","import type { ZodType } from 'zod/v4';\n\nimport { environment } from '@/environment';\n\nimport {\n HEADER_NAME_ACCEPT,\n HEADER_NAME_AUTHORIZATION,\n HEADER_NAME_CONTENT_TYPE,\n HEADER_NAME_USER_AGENT,\n} from './headers';\nimport { MultipartFormDataBody } from './multipart';\nimport type { ProblemDetails } from './problem';\n\nconst defaultUserAgent = `paklo/${environment.sha?.substring(0, 7) ?? 'dogfood'}`;\n\nexport type CreateInnerApiClientOptions = {\n /**\n * The base URL to use for the API.\n * @example 'https://api.paklo.app'\n */\n baseUrl: string;\n\n /** The token to use for authentication. This can be a JWT or specialized key. */\n token?: string;\n};\n\nexport type RequestOptions = {\n /**\n * Value for the `User-Agent` header.\n * This prepends the default value (e.g. `paklo/ab26320`)\n * which is important when we need to propagate the browser information to the server.\n */\n userAgent?: string;\n};\n\nexport type ResourceResponse<T = Record<string, unknown>> = {\n /** The headers of the response. */\n headers: Headers;\n\n /** Whether the request was successful. */\n successful: boolean;\n\n /** The status code of the response. */\n status: number;\n\n /** The status text of the response. */\n statusText: string;\n\n /** The data of the response. */\n data?: T;\n\n /** The error of the response. */\n error?: ProblemDetails;\n};\n\nexport type InnerRequestOptions<T> = RequestOptions & {\n /**\n * The base URL to use for the request.\n * This overrides the default base URL.\n * @example 'https://api.paklo.app'\n */\n baseUrl?: string;\n\n /** Additional headers to use for the request. */\n headers?: HeadersInit;\n\n /** The payload to use for the request. */\n payload?: Record<string, unknown> | MultipartFormDataBody | ReadableStream | XMLHttpRequestBodyInit;\n\n /** The schema to use when parsing the response. */\n schema?: ZodType<T>;\n};\n\ntype InnerRequestOptionsComplete<T> = InnerRequestOptions<T> & {\n /** The method to use for the request. */\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\n /** The URL to use for the request. */\n url: string;\n};\n\nexport class InnerApiClient {\n private readonly baseUrl: string;\n private readonly headers: Headers;\n private readonly token?: string;\n\n /**\n * Create a new API client.\n * @param options The options to use for the client.\n */\n constructor({ baseUrl, token }: CreateInnerApiClientOptions) {\n this.baseUrl = baseUrl;\n\n this.headers = new Headers({\n [HEADER_NAME_ACCEPT]: 'application/json',\n });\n\n this.token = token;\n }\n\n async get<T>(url: string, options?: InnerRequestOptions<T>) {\n return this.request<T>({\n url: this.makeUrl(url, options),\n method: 'GET',\n ...options,\n });\n }\n\n async post<T>(url: string, options?: InnerRequestOptions<T>) {\n return this.request<T>({\n method: 'POST',\n url: this.makeUrl(url, options),\n ...options,\n });\n }\n\n async put<T>(url: string, options?: InnerRequestOptions<T>) {\n return this.request<T>({\n method: 'PUT',\n url: this.makeUrl(url, options),\n ...options,\n });\n }\n\n async patch<T>(url: string, options?: InnerRequestOptions<T>) {\n return this.request<T>({\n method: 'PATCH',\n url: this.makeUrl(url, options),\n ...options,\n });\n }\n\n async delete<T>(url: string, options?: InnerRequestOptions<T>) {\n return this.request<T>({\n method: 'DELETE',\n url: this.makeUrl(url, options),\n ...options,\n });\n }\n\n async request<T>(options: InnerRequestOptionsComplete<T>): Promise<ResourceResponse<T>> {\n const { method, url, payload, userAgent, headers: additionalHeaders, schema } = options;\n\n // create headers for the request\n const headers = new Headers(this.headers);\n const finalUserAgent = userAgent && userAgent.length > 0 ? `${userAgent} (${defaultUserAgent})` : defaultUserAgent;\n headers.set(HEADER_NAME_USER_AGENT, finalUserAgent);\n\n // populate authorization header\n if (this.token) {\n headers.set(HEADER_NAME_AUTHORIZATION, `Bearer ${this.token}`);\n }\n\n // populate additional headers\n // biome-ignore-start lint/suspicious/useIterableCallbackReturn: not used\n if (additionalHeaders) {\n if (additionalHeaders instanceof Headers) {\n additionalHeaders.forEach((value, key) => headers.set(key, value as string));\n } else if (Array.isArray(additionalHeaders)) {\n additionalHeaders.forEach(([key, value]) => headers.set(key, value));\n } else {\n Object.entries(additionalHeaders).forEach(([key, value]) => headers.set(key, value as string));\n }\n }\n // biome-ignore-end lint/suspicious/useIterableCallbackReturn: not used\n\n // prepare body\n let body: BodyInit | undefined;\n if (skipSerialization(payload)) body = payload;\n else if (payload instanceof MultipartFormDataBody) {\n body = new Uint8Array(await payload.encode());\n headers.set(HEADER_NAME_CONTENT_TYPE, payload.getContentType());\n } else {\n body = JSON.stringify(payload);\n headers.set(HEADER_NAME_CONTENT_TYPE, 'application/json');\n }\n\n // make request\n try {\n const response = await fetch(url, { method, headers, body });\n const { ok: successful, status, statusText } = response;\n\n if (!successful) {\n try {\n const rawError = await response.text();\n return { headers: response.headers, successful, status, statusText, error: JSON.parse(rawError) };\n } catch (err) {\n if (err instanceof SyntaxError) {\n return {\n headers: response.headers,\n successful,\n status,\n statusText,\n error: {\n title: 'Unknown error',\n status,\n statusText: response.statusText,\n },\n };\n }\n\n const error: ProblemDetails = {\n title: (err instanceof Error ? err.message : undefined) ?? 'Unknown error',\n status: response.status,\n statusText: response.statusText,\n };\n\n return { headers: response.headers, successful, status, statusText, error };\n }\n }\n\n const contentLength = response.headers.get('content-length');\n let data = contentLength && contentLength !== '0' ? ((await response.json()) as T) : undefined;\n if (data && schema) {\n const result = await schema.safeParseAsync(data);\n if (!result.success) {\n return {\n headers: response.headers,\n successful: false,\n status,\n statusText,\n data,\n error: {\n title: 'application_error',\n detail: 'Schema validation error',\n errors: result.error.flatten().fieldErrors,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n data = result.data;\n }\n\n return { headers: response.headers, data, successful, status, statusText };\n } catch (err) {\n return {\n headers: new Headers(),\n successful: false,\n status: -1,\n statusText: 'Application Error',\n error: {\n title: 'application_error',\n detail: `Unable to fetch data. The request could not be resolved. ${err}`,\n },\n };\n }\n }\n\n private makeUrl<T>(url: string, options?: InnerRequestOptions<T>): string {\n if (url.startsWith('http://') || url.startsWith('https://')) return url;\n const baseUrl = options?.baseUrl ?? this.baseUrl;\n return `${baseUrl}${url}`;\n }\n}\n\n/**\n * Whether to skip serialization of the payload.\n * @param payload The payload to check.\n * @returns true if the payload should not be serialized; otherwise, false.\n */\nfunction skipSerialization(\n payload: InnerRequestOptions<never>['payload'],\n): payload is FormData | URLSearchParams | ReadableStream | Blob | ArrayBuffer | string | undefined {\n return (\n payload instanceof FormData ||\n payload instanceof URLSearchParams ||\n payload instanceof ReadableStream ||\n payload instanceof Blob ||\n payload instanceof ArrayBuffer ||\n payload instanceof Buffer ||\n typeof payload === 'string' ||\n !payload\n );\n}\n\n/** Http request error */\nexport class HttpRequestError extends Error {\n constructor(\n message: string,\n public code: number,\n ) {\n super(message);\n }\n}\n\nexport function isErrorTemporaryFailure(e?: { code?: string | number; message?: string } | null): boolean {\n if (e instanceof HttpRequestError) {\n // Check for common HTTP status codes that indicate a temporary failure\n // See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n switch (e.code) {\n case 502:\n return true; // 502 Bad Gateway\n case 503:\n return true; // 503 Service Unavailable\n case 504:\n return true; // 504 Gateway Timeout\n default:\n return false;\n }\n } else if (e?.code) {\n // Check for Node.js system errors that indicate a temporary failure\n // See: https://nodejs.org/api/errors.html#errors_common_system_errors\n switch (e.code) {\n case 'ETIMEDOUT':\n return true; // Operation timed out\n default:\n return false;\n }\n } else {\n return false;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { ZodType } from "zod/v4";
2
+
3
+ //#region src/http/headers.d.ts
4
+ declare const HEADER_NAME_CONTENT_DISPOSITION = "Content-Disposition";
5
+ declare const HEADER_NAME_CONTENT_TYPE = "Content-Type";
6
+ declare const HEADER_NAME_ACCEPT = "Accept";
7
+ declare const HEADER_NAME_USER_AGENT = "User-Agent";
8
+ declare const HEADER_NAME_AUTHORIZATION = "Authorization";
9
+ //#endregion
10
+ //#region src/http/multipart.d.ts
11
+ declare class MultipartFormDataBody {
12
+ private type;
13
+ private boundary;
14
+ private parts;
15
+ encode(): Promise<Buffer>;
16
+ getBoundary(): string;
17
+ getContentType(): string;
18
+ add(name: string, value: string): void;
19
+ addFile(name: string, file: File): void;
20
+ }
21
+ //#endregion
22
+ //#region src/http/problem.d.ts
23
+ interface ProblemDetails {
24
+ type?: string;
25
+ /** The name/title of the error.*/
26
+ title: string;
27
+ /** A brief explanation/definition into the nature of the error. */
28
+ detail?: string | null;
29
+ /** Any additional error arguments passed to the client. */
30
+ extras?: unknown;
31
+ /** The HTTP status code */
32
+ status?: number;
33
+ statusText?: string;
34
+ errors?: Record<string, string[] | undefined>;
35
+ traceId?: string;
36
+ }
37
+ //#endregion
38
+ //#region src/http/inner.d.ts
39
+ type CreateInnerApiClientOptions = {
40
+ /**
41
+ * The base URL to use for the API.
42
+ * @example 'https://api.paklo.app'
43
+ */
44
+ baseUrl: string;
45
+ /** The token to use for authentication. This can be a JWT or specialized key. */
46
+ token?: string;
47
+ };
48
+ type RequestOptions = {
49
+ /**
50
+ * Value for the `User-Agent` header.
51
+ * This prepends the default value (e.g. `paklo/ab26320`)
52
+ * which is important when we need to propagate the browser information to the server.
53
+ */
54
+ userAgent?: string;
55
+ };
56
+ type ResourceResponse<T$1 = Record<string, unknown>> = {
57
+ /** The headers of the response. */
58
+ headers: Headers;
59
+ /** Whether the request was successful. */
60
+ successful: boolean;
61
+ /** The status code of the response. */
62
+ status: number;
63
+ /** The status text of the response. */
64
+ statusText: string;
65
+ /** The data of the response. */
66
+ data?: T$1;
67
+ /** The error of the response. */
68
+ error?: ProblemDetails;
69
+ };
70
+ type InnerRequestOptions<T$1> = RequestOptions & {
71
+ /**
72
+ * The base URL to use for the request.
73
+ * This overrides the default base URL.
74
+ * @example 'https://api.paklo.app'
75
+ */
76
+ baseUrl?: string;
77
+ /** Additional headers to use for the request. */
78
+ headers?: HeadersInit;
79
+ /** The payload to use for the request. */
80
+ payload?: Record<string, unknown> | MultipartFormDataBody | ReadableStream | XMLHttpRequestBodyInit;
81
+ /** The schema to use when parsing the response. */
82
+ schema?: ZodType<T$1>;
83
+ };
84
+ type InnerRequestOptionsComplete<T$1> = InnerRequestOptions<T$1> & {
85
+ /** The method to use for the request. */
86
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
87
+ /** The URL to use for the request. */
88
+ url: string;
89
+ };
90
+ declare class InnerApiClient {
91
+ private readonly baseUrl;
92
+ private readonly headers;
93
+ private readonly token?;
94
+ /**
95
+ * Create a new API client.
96
+ * @param options The options to use for the client.
97
+ */
98
+ constructor({
99
+ baseUrl,
100
+ token
101
+ }: CreateInnerApiClientOptions);
102
+ get<T>(url: string, options?: InnerRequestOptions<T>): Promise<ResourceResponse<T>>;
103
+ post<T>(url: string, options?: InnerRequestOptions<T>): Promise<ResourceResponse<T>>;
104
+ put<T>(url: string, options?: InnerRequestOptions<T>): Promise<ResourceResponse<T>>;
105
+ patch<T>(url: string, options?: InnerRequestOptions<T>): Promise<ResourceResponse<T>>;
106
+ delete<T>(url: string, options?: InnerRequestOptions<T>): Promise<ResourceResponse<T>>;
107
+ request<T>(options: InnerRequestOptionsComplete<T>): Promise<ResourceResponse<T>>;
108
+ private makeUrl;
109
+ }
110
+ /** Http request error */
111
+ declare class HttpRequestError extends Error {
112
+ code: number;
113
+ constructor(message: string, code: number);
114
+ }
115
+ declare function isErrorTemporaryFailure(e?: {
116
+ code?: string | number;
117
+ message?: string;
118
+ } | null): boolean;
119
+ //#endregion
120
+ export { CreateInnerApiClientOptions, HEADER_NAME_ACCEPT, HEADER_NAME_AUTHORIZATION, HEADER_NAME_CONTENT_DISPOSITION, HEADER_NAME_CONTENT_TYPE, HEADER_NAME_USER_AGENT, HttpRequestError, InnerApiClient, InnerRequestOptions, ProblemDetails, RequestOptions, ResourceResponse, isErrorTemporaryFailure };
121
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1,4 @@
1
+ import "./environment-DX5CD-dD.js";
2
+ import { a as HEADER_NAME_AUTHORIZATION, c as HEADER_NAME_USER_AGENT, i as HEADER_NAME_ACCEPT, n as InnerApiClient, o as HEADER_NAME_CONTENT_DISPOSITION, r as isErrorTemporaryFailure, s as HEADER_NAME_CONTENT_TYPE, t as HttpRequestError } from "./http-BG_-s47I.js";
3
+
4
+ export { HEADER_NAME_ACCEPT, HEADER_NAME_AUTHORIZATION, HEADER_NAME_CONTENT_DISPOSITION, HEADER_NAME_CONTENT_TYPE, HEADER_NAME_USER_AGENT, HttpRequestError, InnerApiClient, isErrorTemporaryFailure };
@@ -0,0 +1,151 @@
1
+ import { z } from "zod/v4";
2
+
3
+ //#region src/github/ghsa.d.ts
4
+ declare const PackageEcosystemSchema: z.ZodEnum<{
5
+ COMPOSER: "COMPOSER";
6
+ ERLANG: "ERLANG";
7
+ GO: "GO";
8
+ ACTIONS: "ACTIONS";
9
+ MAVEN: "MAVEN";
10
+ NPM: "NPM";
11
+ NUGET: "NUGET";
12
+ PIP: "PIP";
13
+ PUB: "PUB";
14
+ RUBYGEMS: "RUBYGEMS";
15
+ RUST: "RUST";
16
+ SWIFT: "SWIFT";
17
+ }>;
18
+ type PackageEcosystem = z.infer<typeof PackageEcosystemSchema>;
19
+ declare const PackageSchema: z.ZodObject<{
20
+ name: z.ZodString;
21
+ version: z.ZodOptional<z.ZodNullable<z.ZodString>>;
22
+ }, z.core.$strip>;
23
+ type Package = z.infer<typeof PackageSchema>;
24
+ declare const SecurityAdvisoryIdentifierSchema: z.ZodEnum<{
25
+ CVE: "CVE";
26
+ GHSA: "GHSA";
27
+ }>;
28
+ type SecurityAdvisoryIdentifierType = z.infer<typeof SecurityAdvisoryIdentifierSchema>;
29
+ declare const SecurityAdvisorySeveritySchema: z.ZodEnum<{
30
+ LOW: "LOW";
31
+ MODERATE: "MODERATE";
32
+ HIGH: "HIGH";
33
+ CRITICAL: "CRITICAL";
34
+ }>;
35
+ type SecurityAdvisorySeverity = z.infer<typeof SecurityAdvisorySeveritySchema>;
36
+ declare const SecurityAdvisorySchema: z.ZodObject<{
37
+ identifiers: z.ZodArray<z.ZodObject<{
38
+ type: z.ZodUnion<readonly [z.ZodEnum<{
39
+ CVE: "CVE";
40
+ GHSA: "GHSA";
41
+ }>, z.ZodString]>;
42
+ value: z.ZodString;
43
+ }, z.core.$strip>>;
44
+ severity: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
45
+ LOW: "LOW";
46
+ MODERATE: "MODERATE";
47
+ HIGH: "HIGH";
48
+ CRITICAL: "CRITICAL";
49
+ }>>>;
50
+ summary: z.ZodString;
51
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
52
+ references: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
53
+ url: z.ZodString;
54
+ }, z.core.$strip>>>>;
55
+ cvss: z.ZodOptional<z.ZodNullable<z.ZodObject<{
56
+ score: z.ZodNumber;
57
+ vectorString: z.ZodString;
58
+ }, z.core.$strip>>>;
59
+ epss: z.ZodOptional<z.ZodNullable<z.ZodObject<{
60
+ percentage: z.ZodNumber;
61
+ percentile: z.ZodNumber;
62
+ }, z.core.$strip>>>;
63
+ cwes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
64
+ cweId: z.ZodString;
65
+ name: z.ZodString;
66
+ description: z.ZodString;
67
+ }, z.core.$strip>>>>;
68
+ publishedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
69
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
70
+ withdrawnAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
71
+ permalink: z.ZodOptional<z.ZodNullable<z.ZodString>>;
72
+ }, z.core.$strip>;
73
+ type SecurityAdvisory = z.infer<typeof SecurityAdvisorySchema>;
74
+ declare const FirstPatchedVersionSchema: z.ZodObject<{
75
+ identifier: z.ZodString;
76
+ }, z.core.$strip>;
77
+ type FirstPatchedVersion = z.infer<typeof FirstPatchedVersionSchema>;
78
+ declare const SecurityVulnerabilitySchema: z.ZodObject<{
79
+ package: z.ZodObject<{
80
+ name: z.ZodString;
81
+ version: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
+ }, z.core.$strip>;
83
+ advisory: z.ZodObject<{
84
+ identifiers: z.ZodArray<z.ZodObject<{
85
+ type: z.ZodUnion<readonly [z.ZodEnum<{
86
+ CVE: "CVE";
87
+ GHSA: "GHSA";
88
+ }>, z.ZodString]>;
89
+ value: z.ZodString;
90
+ }, z.core.$strip>>;
91
+ severity: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
92
+ LOW: "LOW";
93
+ MODERATE: "MODERATE";
94
+ HIGH: "HIGH";
95
+ CRITICAL: "CRITICAL";
96
+ }>>>;
97
+ summary: z.ZodString;
98
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
99
+ references: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
100
+ url: z.ZodString;
101
+ }, z.core.$strip>>>>;
102
+ cvss: z.ZodOptional<z.ZodNullable<z.ZodObject<{
103
+ score: z.ZodNumber;
104
+ vectorString: z.ZodString;
105
+ }, z.core.$strip>>>;
106
+ epss: z.ZodOptional<z.ZodNullable<z.ZodObject<{
107
+ percentage: z.ZodNumber;
108
+ percentile: z.ZodNumber;
109
+ }, z.core.$strip>>>;
110
+ cwes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
111
+ cweId: z.ZodString;
112
+ name: z.ZodString;
113
+ description: z.ZodString;
114
+ }, z.core.$strip>>>>;
115
+ publishedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
116
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
117
+ withdrawnAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
118
+ permalink: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ }, z.core.$strip>;
120
+ vulnerableVersionRange: z.ZodString;
121
+ firstPatchedVersion: z.ZodOptional<z.ZodNullable<z.ZodObject<{
122
+ identifier: z.ZodString;
123
+ }, z.core.$strip>>>;
124
+ }, z.core.$strip>;
125
+ type SecurityVulnerability = z.infer<typeof SecurityVulnerabilitySchema>;
126
+ declare function getGhsaPackageEcosystemFromDependabotPackageManager(dependabotPackageManager: string): PackageEcosystem;
127
+ /**
128
+ * GitHub GraphQL client
129
+ */
130
+ declare class GitHubGraphClient {
131
+ private readonly accessToken;
132
+ constructor(accessToken: string);
133
+ /**
134
+ * Get the list of security vulnerabilities for a given package ecosystem and list of packages
135
+ * @param packageEcosystem
136
+ * @param packages
137
+ */
138
+ getSecurityVulnerabilitiesAsync(packageEcosystem: PackageEcosystem, packages: Package[]): Promise<SecurityVulnerability[]>;
139
+ /**
140
+ * Batch requests in parallel to speed up the process when we are forced to do a N+1 query
141
+ * @param batchSize
142
+ * @param items
143
+ * @param action
144
+ * @returns
145
+ */
146
+ private batchGraphQueryAsync;
147
+ }
148
+ declare function filterVulnerabilities(securityVulnerabilities: SecurityVulnerability[]): SecurityVulnerability[];
149
+ //#endregion
150
+ export { PackageEcosystemSchema as a, SecurityAdvisoryIdentifierSchema as c, SecurityAdvisorySeverity as d, SecurityAdvisorySeveritySchema as f, getGhsaPackageEcosystemFromDependabotPackageManager as g, filterVulnerabilities as h, PackageEcosystem as i, SecurityAdvisoryIdentifierType as l, SecurityVulnerabilitySchema as m, GitHubGraphClient as n, PackageSchema as o, SecurityVulnerability as p, Package as r, SecurityAdvisory as s, FirstPatchedVersion as t, SecurityAdvisorySchema as u };
151
+ //# sourceMappingURL=index-3wZw74Ah.d.ts.map