@squadbase/vite-server 0.1.10-dev.9dac57b → 0.1.10-dev.d23e546
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/cli/index.js +520 -89089
- package/dist/connectors/azure-sql.js +1 -20213
- package/dist/connectors/cosmosdb.js +4 -4
- package/dist/connectors/google-ads.js +82 -8
- package/dist/connectors/jdbc.js +54 -20224
- package/dist/connectors/oracle.js +10 -20215
- package/dist/connectors/sqlserver.js +1 -20213
- package/dist/index.js +589 -89168
- package/dist/main.js +574 -89153
- package/dist/vite-plugin.js +469 -89048
- package/package.json +4 -2
- package/dist/cli/cpufeatures-ORCDQN2Y.node +0 -0
- package/dist/cli/sshcrypto-P3UBA7BP.node +0 -0
- package/dist/cpufeatures-ORCDQN2Y.node +0 -0
- package/dist/sshcrypto-P3UBA7BP.node +0 -0
|
@@ -109,7 +109,7 @@ function createClient(params) {
|
|
|
109
109
|
queryOptions.partitionKey = options.partitionKey;
|
|
110
110
|
}
|
|
111
111
|
const iterator = cont.items.query(sql, queryOptions);
|
|
112
|
-
const { resources } = await iterator.
|
|
112
|
+
const { resources } = await iterator.fetchAll();
|
|
113
113
|
return resources ?? [];
|
|
114
114
|
} catch (err) {
|
|
115
115
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -445,7 +445,7 @@ Use \`TOP n\` (not \`LIMIT n\`) to bound the result. Cross-partition queries are
|
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
447
|
const iterator = cont.items.query(sql, queryOptions);
|
|
448
|
-
const { resources, requestCharge } = await iterator.
|
|
448
|
+
const { resources, requestCharge } = await iterator.fetchAll();
|
|
449
449
|
const documents = resources ?? [];
|
|
450
450
|
const truncated = documents.length > MAX_DOCUMENTS;
|
|
451
451
|
return {
|
|
@@ -522,7 +522,7 @@ export default async function handler(_c: Context) {
|
|
|
522
522
|
- Queries always target a single container and reference items via the alias \`c\` (e.g. \`SELECT c.id, c.name FROM c WHERE c.status = 'active'\`).
|
|
523
523
|
- Row limiting: use \`TOP n\` (e.g. \`SELECT TOP 100 * FROM c\`). \`LIMIT\` is **not** supported. \`OFFSET m LIMIT n\` is supported on newer accounts but \`TOP\` is the safe default.
|
|
524
524
|
- System fields are prefixed with an underscore (\`c.id\`, \`c._ts\` for the modification timestamp, \`c._etag\`).
|
|
525
|
-
- Aggregates: \`COUNT(1)\`, \`SUM\`, \`AVG\`, \`MIN\`, \`MAX\`, with \`GROUP BY\` (e.g. \`SELECT c.country, COUNT(1) AS n FROM c GROUP BY c.country\`).
|
|
525
|
+
- Aggregates: \`COUNT(1)\`, \`SUM\`, \`AVG\`, \`MIN\`, \`MAX\`, with \`GROUP BY\` (e.g. \`SELECT c.country, COUNT(1) AS n FROM c GROUP BY c.country\`). Cross-partition \`GROUP BY\` is fully supported \u2014 the connector drains all result pages internally, so trust the returned rows even for queries that span many partitions. Do **not** work around perceived missing rows by re-fetching all items and aggregating in TypeScript.
|
|
526
526
|
- Joins: only **intra-document** joins via \`JOIN\` over arrays inside the same item; there is no cross-container/cross-document join.
|
|
527
527
|
- Always bound results with \`TOP n\` and prefer scoped queries with a \`partitionKey\` value when possible \u2014 cross-partition queries cost more RUs.`,
|
|
528
528
|
ja: `### \u30C4\u30FC\u30EB
|
|
@@ -568,7 +568,7 @@ export default async function handler(_c: Context) {
|
|
|
568
568
|
- \u30AF\u30A8\u30EA\u306F\u5E38\u306B\u5358\u4E00\u30B3\u30F3\u30C6\u30CA\u3092\u5BFE\u8C61\u3068\u3057\u3001\u30A2\u30A4\u30C6\u30E0\u306F\u5225\u540D \`c\` \u3067\u53C2\u7167\u3057\u307E\u3059\uFF08\u4F8B: \`SELECT c.id, c.name FROM c WHERE c.status = 'active'\`\uFF09\u3002
|
|
569
569
|
- \u884C\u6570\u5236\u9650: \`TOP n\` \u3092\u4F7F\u7528\u3057\u307E\u3059\uFF08\u4F8B: \`SELECT TOP 100 * FROM c\`\uFF09\u3002\`LIMIT\` \u306F **\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093**\u3002\u65B0\u3057\u3044\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u306F \`OFFSET m LIMIT n\` \u304C\u4F7F\u3048\u307E\u3059\u304C\u3001\u5B89\u5168\u5074\u306E\u65E2\u5B9A\u306F \`TOP\` \u3067\u3059\u3002
|
|
570
570
|
- \u30B7\u30B9\u30C6\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u59CB\u307E\u308A\uFF08\`c.id\`\u3001\u5909\u66F4\u6642\u523B\u306E \`c._ts\`\u3001\`c._etag\`\uFF09\u3002
|
|
571
|
-
- \u96C6\u7D04: \`COUNT(1)\`\u3001\`SUM\`\u3001\`AVG\`\u3001\`MIN\`\u3001\`MAX\` \u3092 \`GROUP BY\` \u3068\u7D44\u307F\u5408\u308F\u305B\u307E\u3059\uFF08\u4F8B: \`SELECT c.country, COUNT(1) AS n FROM c GROUP BY c.country\`\uFF09\u3002
|
|
571
|
+
- \u96C6\u7D04: \`COUNT(1)\`\u3001\`SUM\`\u3001\`AVG\`\u3001\`MIN\`\u3001\`MAX\` \u3092 \`GROUP BY\` \u3068\u7D44\u307F\u5408\u308F\u305B\u307E\u3059\uFF08\u4F8B: \`SELECT c.country, COUNT(1) AS n FROM c GROUP BY c.country\`\uFF09\u3002\u30AF\u30ED\u30B9\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u306E \`GROUP BY\` \u3082\u5B8C\u5168\u306B\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u304A\u308A\u3001\u30B3\u30CD\u30AF\u30BF\u304C\u5185\u90E8\u3067\u5168\u7D50\u679C\u30DA\u30FC\u30B8\u3092\u30C9\u30EC\u30A4\u30F3\u3059\u308B\u305F\u3081\u3001\u591A\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u306B\u307E\u305F\u304C\u308B\u30AF\u30A8\u30EA\u3067\u3082\u8FD4\u3063\u3066\u304D\u305F\u884C\u6570\u3092\u305D\u306E\u307E\u307E\u4FE1\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002**\u300C\u7D50\u679C\u304C\u6B20\u3051\u3066\u3044\u308B\u3088\u3046\u306B\u898B\u3048\u308B\u300D\u304B\u3089\u3068\u3044\u3063\u3066\u5168\u4EF6\u53D6\u5F97\u2192TS \u5074\u3067\u96C6\u8A08\u3059\u308B\u8FC2\u56DE\u306F\u3057\u306A\u3044\u3053\u3068\u3002**
|
|
572
572
|
- \u7D50\u5408: \u540C\u4E00\u30A2\u30A4\u30C6\u30E0\u5185\u306E\u914D\u5217\u306B\u5BFE\u3059\u308B **\u30A4\u30F3\u30C8\u30E9\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8** \`JOIN\` \u306E\u307F\u3067\u3001\u30B3\u30F3\u30C6\u30CA\u9593\uFF0F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u9593\u306E\u7D50\u5408\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002
|
|
573
573
|
- \u7D50\u679C\u4EF6\u6570\u306F\u5FC5\u305A \`TOP n\` \u3067\u5236\u9650\u3057\u3001\u53EF\u80FD\u3067\u3042\u308C\u3070 \`partitionKey\` \u3067\u5358\u4E00\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u306B\u30B9\u30B3\u30FC\u30D7\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30AF\u30ED\u30B9\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30AF\u30A8\u30EA\u306F RU \u3092\u591A\u304F\u6D88\u8CBB\u3057\u307E\u3059\uFF09\u3002`
|
|
574
574
|
},
|
|
@@ -305,6 +305,65 @@ var AUTH_TYPES = {
|
|
|
305
305
|
|
|
306
306
|
// ../connectors/src/connectors/google-ads/tools/list-customers.ts
|
|
307
307
|
import { z } from "zod";
|
|
308
|
+
|
|
309
|
+
// ../connectors/src/connectors/google-ads/error.ts
|
|
310
|
+
var parseJsonOrNull = (text) => {
|
|
311
|
+
if (text.length === 0) return null;
|
|
312
|
+
try {
|
|
313
|
+
return JSON.parse(text);
|
|
314
|
+
} catch {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
319
|
+
var collectGoogleAdsErrorCodes = (details) => {
|
|
320
|
+
if (!Array.isArray(details)) return [];
|
|
321
|
+
const codes = [];
|
|
322
|
+
for (const detail of details) {
|
|
323
|
+
if (!isRecord(detail)) continue;
|
|
324
|
+
const errors = detail.errors;
|
|
325
|
+
if (!Array.isArray(errors)) continue;
|
|
326
|
+
for (const e of errors) {
|
|
327
|
+
if (!isRecord(e)) continue;
|
|
328
|
+
const errorCode = e.errorCode;
|
|
329
|
+
if (!isRecord(errorCode)) continue;
|
|
330
|
+
for (const [k, v] of Object.entries(errorCode)) {
|
|
331
|
+
if (typeof v === "string") codes.push(`${k}=${v}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return codes;
|
|
336
|
+
};
|
|
337
|
+
var extractGoogleAdsErrorMessage = (status, statusText, parsedBody, rawText) => {
|
|
338
|
+
const fallback = `HTTP ${status} ${statusText}`;
|
|
339
|
+
if (isRecord(parsedBody)) {
|
|
340
|
+
const errorField = parsedBody.error;
|
|
341
|
+
if (typeof errorField === "string") return errorField;
|
|
342
|
+
if (isRecord(errorField)) {
|
|
343
|
+
const message = typeof errorField.message === "string" ? errorField.message : null;
|
|
344
|
+
const errorStatus = typeof errorField.status === "string" ? errorField.status : null;
|
|
345
|
+
const codes = collectGoogleAdsErrorCodes(errorField.details);
|
|
346
|
+
const parts = [
|
|
347
|
+
fallback,
|
|
348
|
+
errorStatus,
|
|
349
|
+
message,
|
|
350
|
+
codes.length > 0 ? `[${codes.join(", ")}]` : null
|
|
351
|
+
].filter((p) => p != null && p.length > 0);
|
|
352
|
+
if (parts.length > 1) return parts.join(": ");
|
|
353
|
+
}
|
|
354
|
+
if (typeof parsedBody.message === "string") {
|
|
355
|
+
return `${fallback}: ${parsedBody.message}`;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (rawText.length > 0) {
|
|
359
|
+
const trimmed = rawText.trim();
|
|
360
|
+
const preview = trimmed.length > 500 ? `${trimmed.slice(0, 500)}\u2026` : trimmed;
|
|
361
|
+
return `${fallback}: ${preview}`;
|
|
362
|
+
}
|
|
363
|
+
return fallback;
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
// ../connectors/src/connectors/google-ads/tools/list-customers.ts
|
|
308
367
|
var REQUEST_TIMEOUT_MS = 6e4;
|
|
309
368
|
var cachedToken = null;
|
|
310
369
|
async function getProxyToken(config) {
|
|
@@ -394,12 +453,20 @@ var listCustomersTool = new ConnectorTool({
|
|
|
394
453
|
signal: controller.signal
|
|
395
454
|
})
|
|
396
455
|
);
|
|
397
|
-
const
|
|
456
|
+
const rawText = await response.text();
|
|
457
|
+
const data = parseJsonOrNull(rawText);
|
|
398
458
|
if (!response.ok) {
|
|
399
|
-
|
|
400
|
-
|
|
459
|
+
return {
|
|
460
|
+
success: false,
|
|
461
|
+
error: extractGoogleAdsErrorMessage(
|
|
462
|
+
response.status,
|
|
463
|
+
response.statusText,
|
|
464
|
+
data,
|
|
465
|
+
rawText
|
|
466
|
+
)
|
|
467
|
+
};
|
|
401
468
|
}
|
|
402
|
-
const customerIds = (data
|
|
469
|
+
const customerIds = (data?.resourceNames ?? []).map(
|
|
403
470
|
(rn) => rn.replace(/^customers\//, "")
|
|
404
471
|
);
|
|
405
472
|
const customers = [];
|
|
@@ -596,11 +663,18 @@ Authentication is handled automatically via OAuth proxy.
|
|
|
596
663
|
signal: controller.signal
|
|
597
664
|
})
|
|
598
665
|
);
|
|
599
|
-
const
|
|
666
|
+
const rawText = await response.text();
|
|
667
|
+
const data = parseJsonOrNull(rawText);
|
|
600
668
|
if (!response.ok) {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
669
|
+
return {
|
|
670
|
+
success: false,
|
|
671
|
+
error: extractGoogleAdsErrorMessage(
|
|
672
|
+
response.status,
|
|
673
|
+
response.statusText,
|
|
674
|
+
data,
|
|
675
|
+
rawText
|
|
676
|
+
)
|
|
677
|
+
};
|
|
604
678
|
}
|
|
605
679
|
return { success: true, status: response.status, data };
|
|
606
680
|
} finally {
|