@dezhouzhang/archery-query-mcp 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 (66) hide show
  1. package/README.md +48 -0
  2. package/dist/archeryClient.d.ts +16 -0
  3. package/dist/archeryClient.d.ts.map +1 -0
  4. package/dist/archeryClient.js +207 -0
  5. package/dist/archeryClient.js.map +1 -0
  6. package/dist/archeryHttpSupport.d.ts +8 -0
  7. package/dist/archeryHttpSupport.d.ts.map +1 -0
  8. package/dist/archeryHttpSupport.js +47 -0
  9. package/dist/archeryHttpSupport.js.map +1 -0
  10. package/dist/archeryMappers.d.ts +10 -0
  11. package/dist/archeryMappers.d.ts.map +1 -0
  12. package/dist/archeryMappers.js +205 -0
  13. package/dist/archeryMappers.js.map +1 -0
  14. package/dist/archeryShared.d.ts +32 -0
  15. package/dist/archeryShared.d.ts.map +1 -0
  16. package/dist/archeryShared.js +9 -0
  17. package/dist/archeryShared.js.map +1 -0
  18. package/dist/cli.d.ts +3 -0
  19. package/dist/cli.d.ts.map +1 -0
  20. package/dist/cli.js +38 -0
  21. package/dist/cli.js.map +1 -0
  22. package/dist/clouds.d.ts +9 -0
  23. package/dist/clouds.d.ts.map +1 -0
  24. package/dist/clouds.js +23 -0
  25. package/dist/clouds.js.map +1 -0
  26. package/dist/config.d.ts +30 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +75 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/httpServer.d.ts +9 -0
  31. package/dist/httpServer.d.ts.map +1 -0
  32. package/dist/httpServer.js +87 -0
  33. package/dist/httpServer.js.map +1 -0
  34. package/dist/mcpServer.d.ts +5 -0
  35. package/dist/mcpServer.d.ts.map +1 -0
  36. package/dist/mcpServer.js +22 -0
  37. package/dist/mcpServer.js.map +1 -0
  38. package/dist/policy.d.ts +4 -0
  39. package/dist/policy.d.ts.map +1 -0
  40. package/dist/policy.js +91 -0
  41. package/dist/policy.js.map +1 -0
  42. package/dist/responses.d.ts +31 -0
  43. package/dist/responses.d.ts.map +1 -0
  44. package/dist/responses.js +2 -0
  45. package/dist/responses.js.map +1 -0
  46. package/dist/scope.d.ts +21 -0
  47. package/dist/scope.d.ts.map +1 -0
  48. package/dist/scope.js +44 -0
  49. package/dist/scope.js.map +1 -0
  50. package/dist/services.d.ts +39 -0
  51. package/dist/services.d.ts.map +1 -0
  52. package/dist/services.js +171 -0
  53. package/dist/services.js.map +1 -0
  54. package/dist/store.d.ts +8 -0
  55. package/dist/store.d.ts.map +1 -0
  56. package/dist/store.js +17 -0
  57. package/dist/store.js.map +1 -0
  58. package/dist/tools.d.ts +65 -0
  59. package/dist/tools.d.ts.map +1 -0
  60. package/dist/tools.js +98 -0
  61. package/dist/tools.js.map +1 -0
  62. package/dist/types.d.ts +78 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +2 -0
  65. package/dist/types.js.map +1 -0
  66. package/package.json +37 -0
package/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # archery-query-mcp-node
2
+
3
+ DBHub-style npm MCP server for querying Archery through the Archery web gateway.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @dezhouzhang/archery-query-mcp
9
+ ```
10
+
11
+ ## Credentials
12
+
13
+ Credentials are read only from runtime environment variables:
14
+
15
+ ```bash
16
+ MCP_ARCHERY_LOGIN_USERNAME=your-user
17
+ MCP_ARCHERY_LOGIN_PASSWORD=your-password
18
+ ```
19
+
20
+ ## Stdio mode
21
+
22
+ ```bash
23
+ archery-query-mcp --transport stdio
24
+ ```
25
+
26
+ ## HTTP mode
27
+
28
+ ```bash
29
+ archery-query-mcp --transport http --port 8080
30
+ ```
31
+
32
+ HTTP endpoint: `POST /mcp`.
33
+
34
+ ## Archery auth mode
35
+
36
+ Default auth mode is `simulated-login`, which logs in with
37
+ `MCP_ARCHERY_LOGIN_USERNAME` / `MCP_ARCHERY_LOGIN_PASSWORD` at runtime. This mode
38
+ requires an HTTPS Archery base URL. The `huawei` cloud currently uses HTTP, so run it
39
+ only with a trusted gateway/session deployment and `--archery-auth-mode personal-session`.
40
+
41
+ ## Tools
42
+
43
+ - `archery_prepare_query`
44
+ - `archery_execute_query`
45
+ - `archery_describe_table`
46
+ - `archery_query_history`
47
+
48
+ The server keeps the same safety model as the Java version: read-only SQL only, automatic limit insertion, prepare/execute confirmation, and Archery-only data access.
@@ -0,0 +1,16 @@
1
+ import { type ArcheryHttpClientOptions } from "./archeryShared.js";
2
+ import type { ArcheryClient, HistoryResult, QueryResult, QueryScope, TableMetadata } from "./types.js";
3
+ export type { ArcheryHttpClientOptions } from "./archeryShared.js";
4
+ export declare class HttpArcheryClient implements ArcheryClient {
5
+ #private;
6
+ constructor(options: ArcheryHttpClientOptions);
7
+ executeQuery(scope: QueryScope, sql: string, maxRows: number): Promise<QueryResult>;
8
+ describeTable(scope: QueryScope, schemaName: string, tableName: string): Promise<TableMetadata>;
9
+ queryHistory(scope: QueryScope, search: string, limit: number): Promise<HistoryResult>;
10
+ }
11
+ export declare class StubArcheryClient implements ArcheryClient {
12
+ executeQuery(scope: QueryScope, sql: string, maxRows: number): Promise<QueryResult>;
13
+ describeTable(): Promise<TableMetadata>;
14
+ queryHistory(): Promise<HistoryResult>;
15
+ }
16
+ //# sourceMappingURL=archeryClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryClient.d.ts","sourceRoot":"","sources":["../src/archeryClient.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,wBAAwB,EAI9B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EAEb,WAAW,EACX,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAElE,qBAAa,iBAAkB,YAAW,aAAa;;gBAIzC,OAAO,EAAE,wBAAwB;IAUvC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiBnF,aAAa,CACjB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC;IA4BnB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAoI7F;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAC/C,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAenF,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAIvC,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;CAG7C"}
@@ -0,0 +1,207 @@
1
+ import ky, {} from "ky";
2
+ import { cleanHeaders, createCookieJar, extractCsrfToken, extractSqlApiToken, sameOriginHeaders, stripSlash, } from "./archeryHttpSupport.js";
3
+ import { mapDescribedTableMetadata, mapHistory, mapQueryResponse, mapTableInfoMetadata, safeHistoryFailure, safeMetadataFailure, safeQueryFailure, } from "./archeryMappers.js";
4
+ import { UnsupportedCloudError, } from "./archeryShared.js";
5
+ import { CLOUD_BASE_URLS } from "./clouds.js";
6
+ export class HttpArcheryClient {
7
+ #clients;
8
+ #options;
9
+ constructor(options) {
10
+ this.#options = options;
11
+ this.#clients = new Map(Object.entries(CLOUD_BASE_URLS).map(([cloudName, baseUrl]) => [
12
+ cloudName,
13
+ ky.create({ prefixUrl: baseUrl, timeout: 120_000, retry: 0, redirect: "manual" }),
14
+ ]));
15
+ }
16
+ async executeQuery(scope, sql, maxRows) {
17
+ const form = queryForm(scope, sql, maxRows);
18
+ if (this.#options.authMode !== "simulated-login") {
19
+ return this.#postQuery(scope.cloudName, form, maxRows, null);
20
+ }
21
+ const session = await this.#authenticatedSession(scope.cloudName);
22
+ if (session === null)
23
+ return safeQueryFailure();
24
+ const sqlPage = await this.#getText(scope.cloudName, "sqlquery/", session);
25
+ if (sqlPage === null)
26
+ return safeQueryFailure();
27
+ return this.#postQuery(scope.cloudName, form, maxRows, {
28
+ Cookie: session.headerValue() ?? "",
29
+ "X-CSRFToken": extractCsrfToken(sqlPage) ?? session.csrfToken() ?? "",
30
+ "X-Client-Trace": extractSqlApiToken(sqlPage) ?? "",
31
+ ...sameOriginHeaders(CLOUD_BASE_URLS[scope.cloudName], "/sqlquery/"),
32
+ });
33
+ }
34
+ async describeTable(scope, schemaName, tableName) {
35
+ const session = await this.#sessionForMetadata(scope.cloudName);
36
+ if (this.#options.authMode === "simulated-login" && session === null)
37
+ return safeMetadataFailure();
38
+ const form = describeForm(scope, schemaName, tableName);
39
+ const legacy = await this.#postJson(scope.cloudName, "instance/describetable/", form, session);
40
+ const legacyMetadata = mapDescribedTableMetadata(legacy, "archery:instance/describetable");
41
+ if (legacyMetadata !== null)
42
+ return legacyMetadata;
43
+ const tableInfo = await this.#getJson(scope.cloudName, "data_dictionary/table_info/", { instance_name: scope.instanceName, db_name: scope.dbName, tb_name: tableName }, session);
44
+ const tableInfoMetadata = mapTableInfoMetadata(tableInfo);
45
+ if (tableInfoMetadata !== null)
46
+ return tableInfoMetadata;
47
+ const api = await this.#postJson(scope.cloudName, "api/v1/sqlquery/describetable/", form, session);
48
+ return (mapDescribedTableMetadata(api, "archery:api/v1/sqlquery/describetable") ??
49
+ safeMetadataFailure());
50
+ }
51
+ async queryHistory(scope, search, limit) {
52
+ const session = await this.#sessionForMetadata(scope.cloudName);
53
+ if (this.#options.authMode === "simulated-login" && session === null)
54
+ return safeHistoryFailure();
55
+ const requestedLimit = limit <= 0 ? 20 : Math.min(limit, 100);
56
+ const body = await this.#getJson(scope.cloudName, "api/v1/sqlquery/logs/", { limit: requestedLimit.toString(), offset: "0", search }, session);
57
+ return mapHistory(body, scope.instanceName, scope.dbName, requestedLimit);
58
+ }
59
+ async #sessionForMetadata(cloudName) {
60
+ return this.#options.authMode === "simulated-login"
61
+ ? this.#authenticatedSession(cloudName)
62
+ : null;
63
+ }
64
+ async #postQuery(cloudName, form, maxRows, headers) {
65
+ try {
66
+ const response = await this.#client(cloudName).post(stripSlash(this.#options.queryPath), {
67
+ body: form,
68
+ headers: cleanHeaders({
69
+ ...headers,
70
+ "X-Requested-With": "XMLHttpRequest",
71
+ Accept: "application/json, text/javascript, */*; q=0.01",
72
+ }),
73
+ });
74
+ return mapQueryResponse(await response.json(), maxRows);
75
+ }
76
+ catch {
77
+ return safeQueryFailure();
78
+ }
79
+ }
80
+ async #authenticatedSession(cloudName) {
81
+ if (!CLOUD_BASE_URLS[cloudName].startsWith("https://"))
82
+ return null;
83
+ if (this.#options.username === null || this.#options.password === null)
84
+ return null;
85
+ const jar = createCookieJar();
86
+ const loginPage = await this.#getText(cloudName, "login/", jar);
87
+ if (loginPage === null)
88
+ return null;
89
+ const csrfToken = extractCsrfToken(loginPage) ?? jar.csrfToken();
90
+ const form = new URLSearchParams({
91
+ username: this.#options.username,
92
+ password: this.#options.password,
93
+ });
94
+ if (csrfToken !== null)
95
+ form.set("csrfmiddlewaretoken", csrfToken);
96
+ try {
97
+ const response = await this.#client(cloudName).post("authenticate/", {
98
+ body: form,
99
+ headers: cleanHeaders({
100
+ Cookie: jar.headerValue() ?? "",
101
+ "X-CSRFToken": csrfToken ?? "",
102
+ "X-Requested-With": "XMLHttpRequest",
103
+ Accept: "application/json, text/javascript, */*; q=0.01",
104
+ }),
105
+ });
106
+ jar.store(response.headers);
107
+ return jar.hasSession() ? jar : null;
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ }
113
+ async #getText(cloudName, path, jar) {
114
+ try {
115
+ const response = await this.#client(cloudName).get(path, {
116
+ headers: cleanHeaders({ Cookie: jar.headerValue() ?? "" }),
117
+ });
118
+ jar.store(response.headers);
119
+ return await response.text();
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ }
125
+ async #getJson(cloudName, path, searchParams, jar) {
126
+ try {
127
+ const response = await this.#client(cloudName).get(path, {
128
+ searchParams,
129
+ headers: cleanHeaders({
130
+ Cookie: jar?.headerValue() ?? "",
131
+ "X-Requested-With": "XMLHttpRequest",
132
+ Accept: "application/json, text/javascript, */*; q=0.01",
133
+ }),
134
+ });
135
+ jar?.store(response.headers);
136
+ return await response.json();
137
+ }
138
+ catch {
139
+ return null;
140
+ }
141
+ }
142
+ async #postJson(cloudName, path, form, jar) {
143
+ try {
144
+ const response = await this.#client(cloudName).post(path, {
145
+ body: form,
146
+ headers: cleanHeaders({
147
+ Cookie: jar?.headerValue() ?? "",
148
+ "X-CSRFToken": jar?.csrfToken() ?? "",
149
+ "X-Requested-With": "XMLHttpRequest",
150
+ Accept: "application/json, text/javascript, */*; q=0.01",
151
+ }),
152
+ });
153
+ jar?.store(response.headers);
154
+ return await response.json();
155
+ }
156
+ catch {
157
+ return null;
158
+ }
159
+ }
160
+ #client(cloudName) {
161
+ const client = this.#clients.get(cloudName);
162
+ if (client === undefined)
163
+ throw new UnsupportedCloudError(cloudName);
164
+ return client;
165
+ }
166
+ }
167
+ export class StubArcheryClient {
168
+ async executeQuery(scope, sql, maxRows) {
169
+ return {
170
+ status: "ok",
171
+ columns: ["cloud", "instance", "db", "sql", "maxRows"],
172
+ rows: [
173
+ { cloud: scope.cloudName, instance: scope.instanceName, db: scope.dbName, sql, maxRows },
174
+ ],
175
+ rowCount: 1,
176
+ durationMs: 0,
177
+ masked: false,
178
+ message: "stub",
179
+ archeryQueryLogId: null,
180
+ };
181
+ }
182
+ async describeTable() {
183
+ return { columns: [], source: "stub" };
184
+ }
185
+ async queryHistory() {
186
+ return { matches: [], total: 0, truncated: false };
187
+ }
188
+ }
189
+ function queryForm(scope, sql, maxRows) {
190
+ return new URLSearchParams({
191
+ instance_name: scope.instanceName,
192
+ db_name: scope.dbName,
193
+ schema_name: "",
194
+ tb_name: "",
195
+ sql_content: sql,
196
+ limit_num: Math.max(maxRows, 0).toString(),
197
+ });
198
+ }
199
+ function describeForm(scope, schemaName, tableName) {
200
+ return new URLSearchParams({
201
+ instance_name: scope.instanceName,
202
+ db_name: scope.dbName,
203
+ schema_name: schemaName,
204
+ tb_name: tableName,
205
+ });
206
+ }
207
+ //# sourceMappingURL=archeryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryClient.js","sourceRoot":"","sources":["../src/archeryClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CookieJar } from "./archeryShared.js";
2
+ export declare function createCookieJar(): CookieJar;
3
+ export declare function cleanHeaders(headers: Record<string, string>): Record<string, string>;
4
+ export declare function stripSlash(path: string): string;
5
+ export declare function sameOriginHeaders(baseUrl: string, refererPath: string): Record<string, string>;
6
+ export declare function extractCsrfToken(body: string): string | null;
7
+ export declare function extractSqlApiToken(body: string): string | null;
8
+ //# sourceMappingURL=archeryHttpSupport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryHttpSupport.d.ts","sourceRoot":"","sources":["../src/archeryHttpSupport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,wBAAgB,eAAe,IAAI,SAAS,CAoB3C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK9F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9D"}
@@ -0,0 +1,47 @@
1
+ export function createCookieJar() {
2
+ const cookies = new Map();
3
+ return {
4
+ headerValue: () => cookies.size === 0
5
+ ? null
6
+ : [...cookies.entries()].map(([key, value]) => `${key}=${value}`).join("; "),
7
+ csrfToken: () => cookies.get("csrftoken") ?? null,
8
+ hasSession: () => [...cookies.keys()].some((key) => key.toLowerCase().includes("session")),
9
+ store: (headers) => {
10
+ for (const cookie of headers.getSetCookie()) {
11
+ const firstPart = cookie.split(";", 1)[0];
12
+ if (firstPart === undefined)
13
+ continue;
14
+ const separator = firstPart.indexOf("=");
15
+ if (separator > 0) {
16
+ cookies.set(firstPart.slice(0, separator), firstPart.slice(separator + 1));
17
+ }
18
+ }
19
+ },
20
+ };
21
+ }
22
+ export function cleanHeaders(headers) {
23
+ return Object.fromEntries(Object.entries(headers).filter(([, value]) => value.length > 0));
24
+ }
25
+ export function stripSlash(path) {
26
+ return path.replace(/^\/+/, "");
27
+ }
28
+ export function sameOriginHeaders(baseUrl, refererPath) {
29
+ return {
30
+ Referer: new URL(refererPath, baseUrl).toString(),
31
+ Origin: new URL(baseUrl).origin,
32
+ };
33
+ }
34
+ export function extractCsrfToken(body) {
35
+ return (extractFirst(body, /name=["']csrfmiddlewaretoken["'][^>]*value=["']([^"']+)["']/i) ??
36
+ extractFirst(body, /csrfmiddlewaretoken["']?\s*[:=]\s*["']([^"']+)["']/i));
37
+ }
38
+ export function extractSqlApiToken(body) {
39
+ return (extractFirst(body, /window\.SQL_API_TOKEN\s*=\s*["']([^"']+)["']/i) ??
40
+ extractFirst(body, /SQL_API_TOKEN["']?\s*[:=]\s*["']([^"']+)["']/i) ??
41
+ extractFirst(body, /sqlApiToken["']?\s*[:=]\s*["']([^"']+)["']/i));
42
+ }
43
+ function extractFirst(body, pattern) {
44
+ const match = pattern.exec(body);
45
+ return match?.[1] ?? null;
46
+ }
47
+ //# sourceMappingURL=archeryHttpSupport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryHttpSupport.js","sourceRoot":"","sources":["../src/archeryHttpSupport.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAChB,OAAO,CAAC,IAAI,KAAK,CAAC;YAChB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChF,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1F,KAAK,EAAE,CAAC,OAAgB,EAAE,EAAE;YAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzC,IAAI,SAAS,KAAK,SAAS;oBAAE,SAAQ;gBACrC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACxC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC5E,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA+B;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,WAAmB;IACpE,OAAO;QACL,OAAO,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE;QACjD,MAAM,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM;KAChC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,CACL,YAAY,CAAC,IAAI,EAAE,8DAA8D,CAAC;QAClF,YAAY,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAC1E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CACL,YAAY,CAAC,IAAI,EAAE,+CAA+C,CAAC;QACnE,YAAY,CAAC,IAAI,EAAE,+CAA+C,CAAC;QACnE,YAAY,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAClE,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,OAAe;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ArcheryQueryResponse } from "./archeryShared.js";
2
+ import type { HistoryResult, JsonValue, QueryResult, TableMetadata } from "./types.js";
3
+ export declare function mapQueryResponse(response: ArcheryQueryResponse | null, maxRows: number): QueryResult;
4
+ export declare function safeQueryFailure(): QueryResult;
5
+ export declare function safeMetadataFailure(): TableMetadata;
6
+ export declare function safeHistoryFailure(): HistoryResult;
7
+ export declare function mapTableInfoMetadata(body: JsonValue | null): TableMetadata | null;
8
+ export declare function mapDescribedTableMetadata(body: JsonValue | null, source: string): TableMetadata | null;
9
+ export declare function mapHistory(body: JsonValue | null, instanceName: string, dbName: string, limit: number): HistoryResult;
10
+ //# sourceMappingURL=archeryMappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryMappers.d.ts","sourceRoot":"","sources":["../src/archeryMappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAEV,aAAa,EAEb,SAAS,EACT,WAAW,EAEX,aAAa,EACd,MAAM,YAAY,CAAA;AAEnB,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,oBAAoB,GAAG,IAAI,EACrC,OAAO,EAAE,MAAM,GACd,WAAW,CAkBb;AAED,wBAAgB,gBAAgB,IAAI,WAAW,CAE9C;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAKjF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,MAAM,EAAE,MAAM,GACb,aAAa,GAAG,IAAI,CAKtB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,aAAa,CAoBf"}
@@ -0,0 +1,205 @@
1
+ export function mapQueryResponse(response, maxRows) {
2
+ if (response === null)
3
+ return failedQuery("Empty Archery response");
4
+ if ((response.status ?? -1) !== 0)
5
+ return failedQuery(redact(response.msg ?? ""));
6
+ if (response.data === undefined)
7
+ return failedQuery("Archery response did not include data");
8
+ const columns = response.data.column_list ?? [];
9
+ const rows = mapRows(columns, response.data.rows ?? [], maxRows);
10
+ const status = queryStatus(response.data.status);
11
+ const affectedRows = response.data.affected_rows ?? 0;
12
+ return {
13
+ status,
14
+ columns,
15
+ rows,
16
+ rowCount: affectedRows > 0 ? affectedRows : rows.length,
17
+ durationMs: Math.round((response.data.query_time ?? 0) * 1000),
18
+ masked: response.data.masked ?? response.data.is_masked ?? false,
19
+ message: blank(response.msg) ? status : response.msg,
20
+ archeryQueryLogId: null,
21
+ };
22
+ }
23
+ export function safeQueryFailure() {
24
+ return failedQuery("Archery query request failed; details redacted");
25
+ }
26
+ export function safeMetadataFailure() {
27
+ return { columns: [], source: "archery-metadata-request-failed" };
28
+ }
29
+ export function safeHistoryFailure() {
30
+ return { matches: [], total: 0, truncated: false };
31
+ }
32
+ export function mapTableInfoMetadata(body) {
33
+ if (!archeryStatusOk(body))
34
+ return null;
35
+ const desc = jsonObject(jsonObject(body)["data"])["desc"] ?? null;
36
+ const columns = mapColumnSection(desc);
37
+ return columns.length === 0 ? null : { columns, source: "archery:data_dictionary/table_info" };
38
+ }
39
+ export function mapDescribedTableMetadata(body, source) {
40
+ if (!archeryStatusOk(body))
41
+ return null;
42
+ const data = jsonObject(body)["data"] ?? null;
43
+ const columns = [...mapCreateTableColumns(data), ...mapColumnSection(data)];
44
+ return columns.length === 0 ? null : { columns, source };
45
+ }
46
+ export function mapHistory(body, instanceName, dbName, limit) {
47
+ const bodyObject = jsonObject(body);
48
+ const rows = arrayValue(bodyObject["rows"]);
49
+ const matches = [];
50
+ for (const row of rows) {
51
+ const object = jsonObject(row);
52
+ const rowInstance = primitiveText(object["instance_name"]);
53
+ const rowDb = primitiveText(object["db_name"]);
54
+ if (rowInstance !== instanceName || rowDb !== dbName)
55
+ continue;
56
+ matches.push({
57
+ id: primitiveText(object["id"]),
58
+ sqlPreview: sqlPreview(primitiveText(object["sqllog"])),
59
+ instanceName: rowInstance,
60
+ dbName: rowDb,
61
+ createdAt: primitiveText(object["create_time"]),
62
+ });
63
+ if (matches.length >= limit)
64
+ break;
65
+ }
66
+ const total = typeof bodyObject["total"] === "number" ? bodyObject["total"] : rows.length;
67
+ return { matches, total: matches.length, truncated: total > rows.length };
68
+ }
69
+ function mapRows(columns, sourceRows, maxRows) {
70
+ const limit = maxRows <= 0 ? 0 : Math.min(maxRows, sourceRows.length);
71
+ return sourceRows
72
+ .slice(0, limit)
73
+ .map((sourceRow) => Object.fromEntries(columns.map((column, index) => [column, sourceRow[index] ?? null])));
74
+ }
75
+ function failedQuery(message) {
76
+ return {
77
+ status: "error",
78
+ columns: [],
79
+ rows: [],
80
+ rowCount: 0,
81
+ durationMs: 0,
82
+ masked: false,
83
+ message,
84
+ archeryQueryLogId: null,
85
+ };
86
+ }
87
+ function redact(message) {
88
+ if (blank(message))
89
+ return "Archery query failed";
90
+ return /password|cookie|csrf|xsrf|session|token/i.test(message)
91
+ ? "Archery query failed; details redacted"
92
+ : message;
93
+ }
94
+ function queryStatus(value) {
95
+ if (value === null || value === undefined)
96
+ return "ok";
97
+ if (typeof value === "number")
98
+ return "ok";
99
+ return blank(value) ? "ok" : value;
100
+ }
101
+ function blank(value) {
102
+ return value === undefined || value.trim().length === 0;
103
+ }
104
+ function archeryStatusOk(body) {
105
+ return jsonObject(body)["status"] === 0;
106
+ }
107
+ function mapColumnSection(section) {
108
+ const object = jsonObject(section);
109
+ const columnNames = stringArray(object["column_list"]);
110
+ const rows = arrayValue(object["rows"]);
111
+ if (columnNames.length === 0 || rows.length === 0)
112
+ return [];
113
+ const nameIndex = firstColumnIndex(columnNames, ["field", "column_name", "column", "name"]);
114
+ const typeIndex = firstColumnIndex(columnNames, ["type", "data_type", "column_type"]);
115
+ const effectiveNameIndex = nameIndex < 0 ? 0 : nameIndex;
116
+ return rows.flatMap((row) => {
117
+ const name = cellText(row, columnNames, effectiveNameIndex);
118
+ if (name.length === 0)
119
+ return [];
120
+ return [
121
+ { name, type: typeIndex >= 0 ? cellText(row, columnNames, typeIndex) : "", sensitive: false },
122
+ ];
123
+ });
124
+ }
125
+ function mapCreateTableColumns(data) {
126
+ const object = jsonObject(data);
127
+ const columnNames = stringArray(object["column_list"]);
128
+ const rows = arrayValue(object["rows"]);
129
+ const createSqlIndex = firstColumnIndex(columnNames, [
130
+ "create table",
131
+ "create_table",
132
+ "create sql",
133
+ "create_sql",
134
+ ]);
135
+ return createSqlIndex < 0
136
+ ? []
137
+ : rows.flatMap((row) => parseCreateTableColumns(cellText(row, columnNames, createSqlIndex)));
138
+ }
139
+ function parseCreateTableColumns(createSql) {
140
+ if (createSql.trim().length === 0)
141
+ return [];
142
+ return createSql
143
+ .replace(/\\r\\n/g, "\n")
144
+ .replace(/\\n/g, "\n")
145
+ .split(/\r?\n/)
146
+ .flatMap((line) => {
147
+ const match = /^`([^`]+)`\s+([^\s,]+)/.exec(line.trim());
148
+ if (match === null)
149
+ return [];
150
+ const name = match[1];
151
+ const type = match[2];
152
+ return name === undefined || type === undefined ? [] : [{ name, type, sensitive: false }];
153
+ });
154
+ }
155
+ function firstColumnIndex(columns, candidates) {
156
+ const normalized = new Map(columns.map((column, index) => [normalizeColumnName(column), index]));
157
+ for (const candidate of candidates) {
158
+ const index = normalized.get(normalizeColumnName(candidate));
159
+ if (index !== undefined)
160
+ return index;
161
+ }
162
+ return -1;
163
+ }
164
+ function normalizeColumnName(value) {
165
+ return value
166
+ .toLowerCase()
167
+ .replace(/[^a-z0-9]+/g, "_")
168
+ .replace(/^_|_$/g, "");
169
+ }
170
+ function cellText(row, columnNames, index) {
171
+ const rowArray = arrayValue(row);
172
+ if (rowArray.length > 0)
173
+ return primitiveText(rowArray[index]);
174
+ const rowObject = jsonObject(row);
175
+ return primitiveText(rowObject[columnNames[index] ?? ""]);
176
+ }
177
+ function sqlPreview(sql) {
178
+ const preview = sql
179
+ .replace(/'([^'\\]|\\.)*'/g, "'?'")
180
+ .replace(/"([^"\\]|\\.)*"/g, '"?"')
181
+ .replace(/\b\d+(?:\.\d+)?\b/g, "?")
182
+ .replace(/\s+/g, " ")
183
+ .trim();
184
+ return preview.length <= 240 ? preview : `${preview.slice(0, 237)}...`;
185
+ }
186
+ function jsonObject(value) {
187
+ return isJsonObject(value) ? value : {};
188
+ }
189
+ function isJsonObject(value) {
190
+ return value !== null && value !== undefined && typeof value === "object" && !Array.isArray(value);
191
+ }
192
+ function arrayValue(value) {
193
+ return Array.isArray(value) ? value : [];
194
+ }
195
+ function stringArray(value) {
196
+ return arrayValue(value).flatMap((item) => (typeof item === "string" ? [item] : []));
197
+ }
198
+ function primitiveText(value) {
199
+ if (typeof value === "string")
200
+ return value;
201
+ if (typeof value === "number" || typeof value === "boolean")
202
+ return String(value);
203
+ return "";
204
+ }
205
+ //# sourceMappingURL=archeryMappers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryMappers.js","sourceRoot":"","sources":["../src/archeryMappers.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,gBAAgB,CAC9B,QAAqC,EACrC,OAAe;IAEf,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC,wBAAwB,CAAC,CAAA;IACnE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;IACjF,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC,uCAAuC,CAAC,CAAA;IAC5F,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;IACrD,OAAO;QACL,MAAM;QACN,OAAO;QACP,IAAI;QACJ,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;QACvD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9D,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK;QAChE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG;QACpD,iBAAiB,EAAE,IAAI;KACxB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,WAAW,CAAC,gDAAgD,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAsB;IACzD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;IACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAA;AAChG,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAsB,EACtB,MAAc;IAEd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;IAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3E,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAsB,EACtB,YAAoB,EACpB,MAAc,EACd,KAAa;IAEb,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9C,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,KAAK,MAAM;YAAE,SAAQ;QAC9D,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SAChD,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;YAAE,MAAK;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;IACzF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;AAC3E,CAAC;AAED,SAAS,OAAO,CACd,OAA0B,EAC1B,UAA6C,EAC7C,OAAe;IAEf,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACrE,OAAO,UAAU;SACd,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CACvF,CAAA;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO;QACL,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,KAAK;QACb,OAAO;QACP,iBAAiB,EAAE,IAAI;KACxB,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,OAAe;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,sBAAsB,CAAA;IACjD,OAAO,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7D,CAAC,CAAC,wCAAwC;QAC1C,CAAC,CAAC,OAAO,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,KAAyC;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;AACpC,CAAC;AAED,SAAS,KAAK,CAAC,KAAyB;IACtC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,IAAsB;IAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACvC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC5D,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3F,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;IACrF,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9F,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAsB;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACvC,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,EAAE;QACnD,cAAc;QACd,cAAc;QACd,YAAY;QACZ,YAAY;KACb,CAAC,CAAA;IACF,OAAO,cAAc,GAAG,CAAC;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;AAChG,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB;IAChD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC5C,OAAO,SAAS;SACb,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;SACxB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;SACrB,KAAK,CAAC,OAAO,CAAC;SACd,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3F,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA0B,EAAE,UAA6B;IACjF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAChG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAA;QAC5D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;IACvC,CAAC;IACD,OAAO,CAAC,CAAC,CAAA;AACX,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAc,EAAE,WAA8B,EAAE,KAAa;IAC7E,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,OAAO,GAAG,GAAG;SAChB,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC;SAClC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC;SAClC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;SAClC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAA;IACT,OAAO,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;AACxE,CAAC;AAED,SAAS,UAAU,CAAC,KAAmC;IACrD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACzC,CAAC;AAED,SAAS,YAAY,CACnB,KAAmC;IAEnC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACpG,CAAC;AAED,SAAS,UAAU,CAAC,KAA4B;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,KAA4B;IAC/C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtF,CAAC;AAED,SAAS,aAAa,CAAC,KAA4B;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACjF,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { JsonValue } from "./types.js";
2
+ export type ArcheryHttpClientOptions = {
3
+ readonly authMode: "personal-session" | "simulated-login";
4
+ readonly queryPath: string;
5
+ readonly username: string | null;
6
+ readonly password: string | null;
7
+ };
8
+ export type CookieJar = {
9
+ readonly headerValue: () => string | null;
10
+ readonly csrfToken: () => string | null;
11
+ readonly hasSession: () => boolean;
12
+ readonly store: (headers: Headers) => void;
13
+ };
14
+ export type ArcheryQueryResponse = {
15
+ readonly status?: number;
16
+ readonly msg?: string;
17
+ readonly data?: {
18
+ readonly column_list?: readonly string[];
19
+ readonly rows?: readonly (readonly JsonValue[])[];
20
+ readonly status?: string | number | null;
21
+ readonly affected_rows?: number | null;
22
+ readonly query_time?: number | null;
23
+ readonly is_masked?: boolean;
24
+ readonly masked?: boolean;
25
+ };
26
+ };
27
+ export declare class UnsupportedCloudError extends Error {
28
+ readonly cloudName: string;
29
+ readonly name = "UnsupportedCloudError";
30
+ constructor(cloudName: string);
31
+ }
32
+ //# sourceMappingURL=archeryShared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryShared.d.ts","sourceRoot":"","sources":["../src/archeryShared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,iBAAiB,CAAA;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,CAAA;QACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;QACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;QAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAA;CACF,CAAA;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAElC,QAAQ,CAAC,SAAS,EAAE,MAAM;IADtC,QAAQ,CAAC,IAAI,2BAA0B;gBAClB,SAAS,EAAE,MAAM;CAGvC"}
@@ -0,0 +1,9 @@
1
+ export class UnsupportedCloudError extends Error {
2
+ cloudName;
3
+ name = "UnsupportedCloudError";
4
+ constructor(cloudName) {
5
+ super(`unsupported Archery cloud: ${cloudName}`);
6
+ this.cloudName = cloudName;
7
+ }
8
+ }
9
+ //# sourceMappingURL=archeryShared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archeryShared.js","sourceRoot":"","sources":["../src/archeryShared.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAEzB;IADZ,IAAI,GAAG,uBAAuB,CAAA;IACvC,YAAqB,SAAiB;QACpC,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;QAD7B,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF"}