@squadbase/vite-server 0.1.17-dev.7408ec4 → 0.1.17-dev.a107052
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 +43 -36
- package/dist/connectors/airtable-oauth.js +8 -0
- package/dist/connectors/airtable.js +8 -0
- package/dist/connectors/amplitude.js +8 -0
- package/dist/connectors/anthropic.js +2 -0
- package/dist/connectors/asana.js +8 -0
- package/dist/connectors/attio.js +8 -0
- package/dist/connectors/aws-billing.js +8 -0
- package/dist/connectors/azure-sql.js +8 -0
- package/dist/connectors/backlog-api-key.js +8 -0
- package/dist/connectors/clickup.js +8 -0
- package/dist/connectors/cosmosdb.js +8 -0
- package/dist/connectors/customerio.js +8 -0
- package/dist/connectors/dbt.js +8 -0
- package/dist/connectors/freshdesk.js +8 -0
- package/dist/connectors/freshsales.js +8 -0
- package/dist/connectors/freshservice.js +8 -0
- package/dist/connectors/gamma.js +8 -0
- package/dist/connectors/gemini.js +2 -0
- package/dist/connectors/github.js +8 -0
- package/dist/connectors/gmail-oauth.js +6 -0
- package/dist/connectors/gmail.js +8 -0
- package/dist/connectors/google-ads.js +8 -0
- package/dist/connectors/google-analytics-oauth.js +8 -0
- package/dist/connectors/google-analytics.js +64 -49
- package/dist/connectors/google-audit-log.js +8 -0
- package/dist/connectors/google-calendar-oauth.js +8 -0
- package/dist/connectors/google-calendar.js +8 -0
- package/dist/connectors/google-docs.js +6 -0
- package/dist/connectors/google-drive.js +6 -0
- package/dist/connectors/google-search-console-oauth.js +8 -0
- package/dist/connectors/google-sheets.js +8 -0
- package/dist/connectors/google-slides.js +6 -0
- package/dist/connectors/grafana.js +8 -0
- package/dist/connectors/hubspot-oauth.js +6 -0
- package/dist/connectors/hubspot.js +8 -0
- package/dist/connectors/influxdb.js +8 -0
- package/dist/connectors/intercom-oauth.js +6 -0
- package/dist/connectors/intercom.js +8 -0
- package/dist/connectors/jdbc.js +8 -0
- package/dist/connectors/jira-api-key.js +8 -0
- package/dist/connectors/kintone-api-token.js +8 -0
- package/dist/connectors/kintone.js +8 -0
- package/dist/connectors/linear.js +8 -0
- package/dist/connectors/linkedin-ads.js +8 -0
- package/dist/connectors/mailchimp-oauth.js +8 -0
- package/dist/connectors/mailchimp.js +8 -0
- package/dist/connectors/meta-ads-oauth.js +8 -0
- package/dist/connectors/meta-ads.js +8 -0
- package/dist/connectors/mixpanel.js +8 -0
- package/dist/connectors/monday.js +8 -0
- package/dist/connectors/mongodb.js +8 -0
- package/dist/connectors/notion-oauth.js +6 -0
- package/dist/connectors/notion.js +8 -0
- package/dist/connectors/openai.js +2 -0
- package/dist/connectors/oracle.js +8 -0
- package/dist/connectors/outlook-oauth.js +6 -0
- package/dist/connectors/powerbi-oauth.js +6 -0
- package/dist/connectors/salesforce.js +8 -0
- package/dist/connectors/semrush.js +8 -0
- package/dist/connectors/sentry.js +8 -0
- package/dist/connectors/shopify-oauth.js +6 -0
- package/dist/connectors/shopify.js +8 -0
- package/dist/connectors/sqlserver.js +8 -0
- package/dist/connectors/stripe-api-key.js +8 -0
- package/dist/connectors/stripe-oauth.js +6 -0
- package/dist/connectors/supabase.js +8 -0
- package/dist/connectors/tableau.js +8 -0
- package/dist/connectors/tiktok-ads.js +8 -0
- package/dist/connectors/wix-store.js +8 -0
- package/dist/connectors/zendesk-oauth.js +6 -0
- package/dist/connectors/zendesk.js +8 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +54 -42
- package/dist/main.js +43 -36
- package/dist/vite-plugin.js +43 -36
- package/package.json +1 -1
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -374,6 +376,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
374
376
|
}
|
|
375
377
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
376
378
|
if (step.type === "text") {
|
|
379
|
+
if (step.fetchOptions) {
|
|
380
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
381
|
+
if (options2.length === 0) {
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
377
385
|
return {
|
|
378
386
|
type: "nextQuestion",
|
|
379
387
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -365,6 +367,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
365
367
|
}
|
|
366
368
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
367
369
|
if (step.type === "text") {
|
|
370
|
+
if (step.fetchOptions) {
|
|
371
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
372
|
+
if (options2.length === 0) {
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
368
376
|
return {
|
|
369
377
|
type: "nextQuestion",
|
|
370
378
|
questionSlug: step.slug,
|
|
@@ -191,6 +191,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
191
191
|
}
|
|
192
192
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
193
193
|
if (step.type === "text") {
|
|
194
|
+
if (step.fetchOptions) {
|
|
195
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
196
|
+
if (options2.length === 0) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
194
200
|
return {
|
|
195
201
|
type: "nextQuestion",
|
|
196
202
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -478,6 +480,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
478
480
|
}
|
|
479
481
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
480
482
|
if (step.type === "text") {
|
|
483
|
+
if (step.fetchOptions) {
|
|
484
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
485
|
+
if (options2.length === 0) {
|
|
486
|
+
continue;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
481
489
|
return {
|
|
482
490
|
type: "nextQuestion",
|
|
483
491
|
questionSlug: step.slug,
|
|
@@ -21,6 +21,7 @@ var init_parameter_definition = __esm({
|
|
|
21
21
|
type;
|
|
22
22
|
secret;
|
|
23
23
|
required;
|
|
24
|
+
isDeprecated;
|
|
24
25
|
constructor(config) {
|
|
25
26
|
this.slug = config.slug;
|
|
26
27
|
this.name = config.name;
|
|
@@ -29,6 +30,7 @@ var init_parameter_definition = __esm({
|
|
|
29
30
|
this.type = config.type;
|
|
30
31
|
this.secret = config.secret;
|
|
31
32
|
this.required = config.required;
|
|
33
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -589,6 +591,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
589
591
|
}
|
|
590
592
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
591
593
|
if (step.type === "text") {
|
|
594
|
+
if (step.fetchOptions) {
|
|
595
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
596
|
+
if (options2.length === 0) {
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
592
600
|
return {
|
|
593
601
|
type: "nextQuestion",
|
|
594
602
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -271,6 +273,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
271
273
|
}
|
|
272
274
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
273
275
|
if (step.type === "text") {
|
|
276
|
+
if (step.fetchOptions) {
|
|
277
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
278
|
+
if (options2.length === 0) {
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
274
282
|
return {
|
|
275
283
|
type: "nextQuestion",
|
|
276
284
|
questionSlug: step.slug,
|
|
@@ -193,6 +193,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
193
193
|
}
|
|
194
194
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
195
195
|
if (step.type === "text") {
|
|
196
|
+
if (step.fetchOptions) {
|
|
197
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
198
|
+
if (options2.length === 0) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
196
202
|
return {
|
|
197
203
|
type: "nextQuestion",
|
|
198
204
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -285,6 +287,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
285
287
|
}
|
|
286
288
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
287
289
|
if (step.type === "text") {
|
|
290
|
+
if (step.fetchOptions) {
|
|
291
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
292
|
+
if (options2.length === 0) {
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
288
296
|
return {
|
|
289
297
|
type: "nextQuestion",
|
|
290
298
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -382,6 +384,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
382
384
|
}
|
|
383
385
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
384
386
|
if (step.type === "text") {
|
|
387
|
+
if (step.fetchOptions) {
|
|
388
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
389
|
+
if (options2.length === 0) {
|
|
390
|
+
continue;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
385
393
|
return {
|
|
386
394
|
type: "nextQuestion",
|
|
387
395
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -248,6 +250,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
248
250
|
}
|
|
249
251
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
250
252
|
if (step.type === "text") {
|
|
253
|
+
if (step.fetchOptions) {
|
|
254
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
255
|
+
if (options2.length === 0) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
251
259
|
return {
|
|
252
260
|
type: "nextQuestion",
|
|
253
261
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -396,6 +398,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
396
398
|
}
|
|
397
399
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
398
400
|
if (step.type === "text") {
|
|
401
|
+
if (step.fetchOptions) {
|
|
402
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
403
|
+
if (options2.length === 0) {
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
399
407
|
return {
|
|
400
408
|
type: "nextQuestion",
|
|
401
409
|
questionSlug: step.slug,
|
|
@@ -191,6 +191,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
191
191
|
}
|
|
192
192
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
193
193
|
if (step.type === "text") {
|
|
194
|
+
if (step.fetchOptions) {
|
|
195
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
196
|
+
if (options2.length === 0) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
194
200
|
return {
|
|
195
201
|
type: "nextQuestion",
|
|
196
202
|
questionSlug: step.slug,
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -378,6 +380,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
378
380
|
}
|
|
379
381
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
380
382
|
if (step.type === "text") {
|
|
383
|
+
if (step.fetchOptions) {
|
|
384
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
385
|
+
if (options2.length === 0) {
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
381
389
|
return {
|
|
382
390
|
type: "nextQuestion",
|
|
383
391
|
questionSlug: step.slug,
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ var init_parameter_definition = __esm({
|
|
|
21
21
|
type;
|
|
22
22
|
secret;
|
|
23
23
|
required;
|
|
24
|
+
isDeprecated;
|
|
24
25
|
constructor(config) {
|
|
25
26
|
this.slug = config.slug;
|
|
26
27
|
this.name = config.name;
|
|
@@ -29,6 +30,7 @@ var init_parameter_definition = __esm({
|
|
|
29
30
|
this.type = config.type;
|
|
30
31
|
this.secret = config.secret;
|
|
31
32
|
this.required = config.required;
|
|
33
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -804,6 +806,12 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
804
806
|
}
|
|
805
807
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
806
808
|
if (step.type === "text") {
|
|
809
|
+
if (step.fetchOptions) {
|
|
810
|
+
const options2 = await step.fetchOptions(state, runtime);
|
|
811
|
+
if (options2.length === 0) {
|
|
812
|
+
continue;
|
|
813
|
+
}
|
|
814
|
+
}
|
|
807
815
|
return {
|
|
808
816
|
type: "nextQuestion",
|
|
809
817
|
questionSlug: step.slug,
|
|
@@ -7609,7 +7617,8 @@ var parameters13 = {
|
|
|
7609
7617
|
envVarBaseKey: "GA_PROPERTY_ID",
|
|
7610
7618
|
type: "text",
|
|
7611
7619
|
secret: false,
|
|
7612
|
-
required: false
|
|
7620
|
+
required: false,
|
|
7621
|
+
isDeprecated: true
|
|
7613
7622
|
})
|
|
7614
7623
|
};
|
|
7615
7624
|
|
|
@@ -7847,40 +7856,23 @@ var googleAnalyticsSetupFlow = {
|
|
|
7847
7856
|
return [];
|
|
7848
7857
|
}
|
|
7849
7858
|
},
|
|
7850
|
-
applyAnswer: (state, answer) => ({ ...state, properties: answer })
|
|
7851
|
-
toParameterUpdates: (state) => {
|
|
7852
|
-
const first = state.properties?.find((v) => v !== ALL_PROPERTIES);
|
|
7853
|
-
return first ? [{ slug: parameters13.propertyId.slug, value: first }] : [];
|
|
7854
|
-
}
|
|
7859
|
+
applyAnswer: (state, answer) => ({ ...state, properties: answer })
|
|
7855
7860
|
},
|
|
7856
7861
|
{
|
|
7857
7862
|
slug: "manualPropertyId",
|
|
7858
|
-
type: "
|
|
7859
|
-
allowFreeText: true,
|
|
7863
|
+
type: "text",
|
|
7860
7864
|
question: {
|
|
7861
7865
|
ja: "GA4 \u30D7\u30ED\u30D1\u30C6\u30A3 ID \u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: 123456789\uFF09\u3002GA4 \u7BA1\u7406\u753B\u9762 > \u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002",
|
|
7862
7866
|
en: "Enter your GA4 Property ID (e.g., 123456789). Found in GA4 Admin > Property Settings."
|
|
7863
7867
|
},
|
|
7864
|
-
async fetchOptions(state
|
|
7868
|
+
async fetchOptions(state) {
|
|
7865
7869
|
if (state.properties?.length) return [];
|
|
7866
|
-
|
|
7867
|
-
return existing ? [{ value: existing, label: existing }] : [
|
|
7868
|
-
{
|
|
7869
|
-
value: "example",
|
|
7870
|
-
label: rt.language === "ja" ? "\u4F8B: 123456789" : "Example: 123456789"
|
|
7871
|
-
}
|
|
7872
|
-
];
|
|
7870
|
+
return [{ value: "_show", label: "" }];
|
|
7873
7871
|
},
|
|
7874
7872
|
applyAnswer: (state, answer) => ({
|
|
7875
7873
|
...state,
|
|
7876
7874
|
manualPropertyId: answer[0]
|
|
7877
|
-
})
|
|
7878
|
-
toParameterUpdates: (state) => state.manualPropertyId ? [
|
|
7879
|
-
{
|
|
7880
|
-
slug: parameters13.propertyId.slug,
|
|
7881
|
-
value: state.manualPropertyId
|
|
7882
|
-
}
|
|
7883
|
-
] : []
|
|
7875
|
+
})
|
|
7884
7876
|
}
|
|
7885
7877
|
],
|
|
7886
7878
|
async finalize(state, rt) {
|
|
@@ -7936,7 +7928,7 @@ var googleAnalyticsSetupFlow = {
|
|
|
7936
7928
|
}
|
|
7937
7929
|
return sections.join("\n");
|
|
7938
7930
|
}
|
|
7939
|
-
const propertyId = state.manualPropertyId
|
|
7931
|
+
const propertyId = state.manualPropertyId;
|
|
7940
7932
|
if (propertyId) {
|
|
7941
7933
|
sections.push(`### Property: ${propertyId}`, "");
|
|
7942
7934
|
const { dimensions, metrics } = await getMetadata(
|
|
@@ -7947,7 +7939,7 @@ var googleAnalyticsSetupFlow = {
|
|
|
7947
7939
|
return sections.join("\n");
|
|
7948
7940
|
}
|
|
7949
7941
|
sections.push(
|
|
7950
|
-
"_Could not list GA4 accounts. Please enable the Google Analytics Admin API in your GCP project
|
|
7942
|
+
"_Could not list GA4 accounts. Please enable the Google Analytics Admin API in your GCP project. Property ID can be specified per request at runtime._",
|
|
7951
7943
|
""
|
|
7952
7944
|
);
|
|
7953
7945
|
return sections.join("\n");
|
|
@@ -7961,8 +7953,9 @@ var REQUEST_TIMEOUT_MS10 = 6e4;
|
|
|
7961
7953
|
var inputSchema20 = z20.object({
|
|
7962
7954
|
toolUseIntent: z20.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
|
|
7963
7955
|
connectionId: z20.string().describe("ID of the Google Analytics connection to use"),
|
|
7956
|
+
propertyId: z20.string().describe("GA4 property ID (e.g., '123456789')"),
|
|
7964
7957
|
method: z20.enum(["GET", "POST"]).describe("HTTP method"),
|
|
7965
|
-
path: z20.string().describe("API path (e.g., 'properties/{propertyId}:runReport'). {propertyId} is
|
|
7958
|
+
path: z20.string().describe("API path (e.g., 'properties/{propertyId}:runReport'). {propertyId} is replaced with the propertyId parameter."),
|
|
7966
7959
|
body: z20.record(z20.string(), z20.unknown()).optional().describe("POST request body (JSON)")
|
|
7967
7960
|
});
|
|
7968
7961
|
var outputSchema20 = z20.discriminatedUnion("success", [
|
|
@@ -7980,10 +7973,10 @@ var requestTool3 = new ConnectorTool({
|
|
|
7980
7973
|
name: "request",
|
|
7981
7974
|
description: `Send authenticated requests to the Google Analytics Data API.
|
|
7982
7975
|
Authentication is handled automatically using a service account.
|
|
7983
|
-
{propertyId} in the path is automatically replaced with the
|
|
7976
|
+
{propertyId} in the path is automatically replaced with the propertyId parameter.`,
|
|
7984
7977
|
inputSchema: inputSchema20,
|
|
7985
7978
|
outputSchema: outputSchema20,
|
|
7986
|
-
async execute({ connectionId, method, path: path5, body }, connections) {
|
|
7979
|
+
async execute({ connectionId, propertyId, method, path: path5, body }, connections) {
|
|
7987
7980
|
const connection2 = connections.find((c) => c.id === connectionId);
|
|
7988
7981
|
if (!connection2) {
|
|
7989
7982
|
return { success: false, error: `Connection ${connectionId} not found` };
|
|
@@ -7992,7 +7985,6 @@ Authentication is handled automatically using a service account.
|
|
|
7992
7985
|
try {
|
|
7993
7986
|
const { GoogleAuth } = await import("google-auth-library");
|
|
7994
7987
|
const keyJsonBase64 = parameters13.serviceAccountKeyJsonBase64.getValue(connection2);
|
|
7995
|
-
const propertyId = parameters13.propertyId.getValue(connection2);
|
|
7996
7988
|
const credentials = JSON.parse(
|
|
7997
7989
|
Buffer.from(keyJsonBase64, "base64").toString("utf-8")
|
|
7998
7990
|
);
|
|
@@ -8052,7 +8044,7 @@ var googleAnalyticsConnector = new ConnectorPlugin({
|
|
|
8052
8044
|
systemPrompt: {
|
|
8053
8045
|
en: `### Tools
|
|
8054
8046
|
|
|
8055
|
-
- \`google-analytics-service-account_request\`: The only way to call the GA4 Data API. Use it to fetch metadata, run reports, or run realtime reports. See the GA4 Data API Reference below for available endpoints and request bodies.
|
|
8047
|
+
- \`google-analytics-service-account_request\`: The only way to call the GA4 Data API. Use it to fetch metadata, run reports, or run realtime reports. Requires a \`propertyId\` parameter. See the GA4 Data API Reference below for available endpoints and request bodies.
|
|
8056
8048
|
|
|
8057
8049
|
### Business Logic
|
|
8058
8050
|
|
|
@@ -8061,9 +8053,11 @@ The business logic type for this connector is "typescript". Use the connector SD
|
|
|
8061
8053
|
SDK methods (client created via \`connection(connectionId)\`):
|
|
8062
8054
|
- \`client.runReport(request)\` \u2014 run a GA4 report
|
|
8063
8055
|
- \`client.runRealtimeReport(request)\` \u2014 run a realtime report
|
|
8064
|
-
- \`client.getMetadata()\` \u2014 fetch available dimensions/metrics
|
|
8056
|
+
- \`client.getMetadata(request)\` \u2014 fetch available dimensions/metrics
|
|
8065
8057
|
- \`client.request(path, init?)\` \u2014 low-level authenticated fetch
|
|
8066
8058
|
|
|
8059
|
+
**IMPORTANT**: You MUST always include \`propertyId\` in every SDK method call. The property ID is obtained during the setup flow. Without it, the request will fail.
|
|
8060
|
+
|
|
8067
8061
|
\`\`\`ts
|
|
8068
8062
|
import type { Context } from "hono";
|
|
8069
8063
|
import { connection } from "@squadbase/vite-server/connectors/google-analytics";
|
|
@@ -8071,12 +8065,14 @@ import { connection } from "@squadbase/vite-server/connectors/google-analytics";
|
|
|
8071
8065
|
const ga = connection("<connectionId>");
|
|
8072
8066
|
|
|
8073
8067
|
export default async function handler(c: Context) {
|
|
8074
|
-
const { startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
|
|
8068
|
+
const { propertyId, startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
|
|
8069
|
+
propertyId: string;
|
|
8075
8070
|
startDate?: string;
|
|
8076
8071
|
endDate?: string;
|
|
8077
8072
|
}>();
|
|
8078
8073
|
|
|
8079
8074
|
const { rows } = await ga.runReport({
|
|
8075
|
+
propertyId,
|
|
8080
8076
|
dateRanges: [{ startDate, endDate }],
|
|
8081
8077
|
dimensions: [{ name: "date" }],
|
|
8082
8078
|
metrics: [{ name: "activeUsers" }, { name: "sessions" }],
|
|
@@ -8120,7 +8116,7 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
|
|
|
8120
8116
|
- Relative: \`"today"\`, \`"yesterday"\`, \`"7daysAgo"\`, \`"30daysAgo"\``,
|
|
8121
8117
|
ja: `### \u30C4\u30FC\u30EB
|
|
8122
8118
|
|
|
8123
|
-
- \`google-analytics-service-account_request\`: GA4 Data API\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u53D6\u5F97\u3001\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u3001\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u5229\u7528\u53EF\u80FD\u306A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3068\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u306F\u4E0B\u90E8\u306E\u300CGA4 Data API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
8119
|
+
- \`google-analytics-service-account_request\`: GA4 Data API\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u53D6\u5F97\u3001\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u3001\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\`propertyId\` \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u304C\u5FC5\u8981\u3067\u3059\u3002\u5229\u7528\u53EF\u80FD\u306A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3068\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u306F\u4E0B\u90E8\u306E\u300CGA4 Data API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
8124
8120
|
|
|
8125
8121
|
### Business Logic
|
|
8126
8122
|
|
|
@@ -8129,9 +8125,11 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
|
|
|
8129
8125
|
SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
|
|
8130
8126
|
- \`client.runReport(request)\` \u2014 GA4\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
|
|
8131
8127
|
- \`client.runRealtimeReport(request)\` \u2014 \u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
|
|
8132
|
-
- \`client.getMetadata()\` \u2014 \u5229\u7528\u53EF\u80FD\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3/\u30E1\u30C8\u30EA\u30AF\u30B9\u3092\u53D6\u5F97
|
|
8128
|
+
- \`client.getMetadata(request)\` \u2014 \u5229\u7528\u53EF\u80FD\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3/\u30E1\u30C8\u30EA\u30AF\u30B9\u3092\u53D6\u5F97
|
|
8133
8129
|
- \`client.request(path, init?)\` \u2014 \u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304Dfetch
|
|
8134
8130
|
|
|
8131
|
+
**\u91CD\u8981**: \u3059\u3079\u3066\u306ESDK\u30E1\u30BD\u30C3\u30C9\u547C\u3073\u51FA\u3057\u306B\u306F\u5FC5\u305A \`propertyId\` \u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u30D7\u30ED\u30D1\u30C6\u30A3ID\u306F\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30D5\u30ED\u30FC\u3067\u53D6\u5F97\u3055\u308C\u307E\u3059\u3002\u6307\u5B9A\u3057\u306A\u3044\u3068\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u5931\u6557\u3057\u307E\u3059\u3002
|
|
8132
|
+
|
|
8135
8133
|
\`\`\`ts
|
|
8136
8134
|
import type { Context } from "hono";
|
|
8137
8135
|
import { connection } from "@squadbase/vite-server/connectors/google-analytics";
|
|
@@ -8139,12 +8137,14 @@ import { connection } from "@squadbase/vite-server/connectors/google-analytics";
|
|
|
8139
8137
|
const ga = connection("<connectionId>");
|
|
8140
8138
|
|
|
8141
8139
|
export default async function handler(c: Context) {
|
|
8142
|
-
const { startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
|
|
8140
|
+
const { propertyId, startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
|
|
8141
|
+
propertyId: string;
|
|
8143
8142
|
startDate?: string;
|
|
8144
8143
|
endDate?: string;
|
|
8145
8144
|
}>();
|
|
8146
8145
|
|
|
8147
8146
|
const { rows } = await ga.runReport({
|
|
8147
|
+
propertyId,
|
|
8148
8148
|
dateRanges: [{ startDate, endDate }],
|
|
8149
8149
|
dimensions: [{ name: "date" }],
|
|
8150
8150
|
metrics: [{ name: "activeUsers" }, { name: "sessions" }],
|
|
@@ -8199,7 +8199,14 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
|
|
|
8199
8199
|
}
|
|
8200
8200
|
const propertyId = params[parameters13.propertyId.slug];
|
|
8201
8201
|
if (!propertyId) {
|
|
8202
|
-
|
|
8202
|
+
try {
|
|
8203
|
+
const sa = decodeServiceAccount(keyJsonBase64);
|
|
8204
|
+
await getAccessToken(sa);
|
|
8205
|
+
return { success: true };
|
|
8206
|
+
} catch (err) {
|
|
8207
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
8208
|
+
return { success: false, error: msg };
|
|
8209
|
+
}
|
|
8203
8210
|
}
|
|
8204
8211
|
try {
|
|
8205
8212
|
const res = await dataFetch(
|
|
@@ -41872,7 +41879,7 @@ function createAirtableClient(entry, slug) {
|
|
|
41872
41879
|
// src/connector-client/google-analytics.ts
|
|
41873
41880
|
function createGoogleAnalyticsClient(entry, slug) {
|
|
41874
41881
|
const serviceAccountJsonBase64 = resolveEnvVar(entry, "service-account-key-json-base64", slug);
|
|
41875
|
-
const
|
|
41882
|
+
const defaultPropertyId = resolveEnvVarOptional(entry, "property-id");
|
|
41876
41883
|
const serviceAccountJson = Buffer.from(serviceAccountJsonBase64, "base64").toString("utf-8");
|
|
41877
41884
|
let credentials;
|
|
41878
41885
|
try {
|
|
@@ -41884,6 +41891,11 @@ function createGoogleAnalyticsClient(entry, slug) {
|
|
|
41884
41891
|
}
|
|
41885
41892
|
return {
|
|
41886
41893
|
async runReport(request) {
|
|
41894
|
+
const { propertyId: pid, ...reportRequest } = request;
|
|
41895
|
+
const propertyId = pid || defaultPropertyId;
|
|
41896
|
+
if (!propertyId) {
|
|
41897
|
+
throw new Error("Google Analytics: propertyId is required in runReport request");
|
|
41898
|
+
}
|
|
41887
41899
|
const { BetaAnalyticsDataClient } = await import("@google-analytics/data");
|
|
41888
41900
|
const client = new BetaAnalyticsDataClient({
|
|
41889
41901
|
credentials: {
|
|
@@ -41893,11 +41905,11 @@ function createGoogleAnalyticsClient(entry, slug) {
|
|
|
41893
41905
|
});
|
|
41894
41906
|
const response = await client.runReport({
|
|
41895
41907
|
property: `properties/${propertyId}`,
|
|
41896
|
-
dateRanges:
|
|
41897
|
-
dimensions:
|
|
41898
|
-
metrics:
|
|
41899
|
-
limit:
|
|
41900
|
-
offset:
|
|
41908
|
+
dateRanges: reportRequest.dateRanges,
|
|
41909
|
+
dimensions: reportRequest.dimensions,
|
|
41910
|
+
metrics: reportRequest.metrics,
|
|
41911
|
+
limit: reportRequest.limit != null ? String(reportRequest.limit) : void 0,
|
|
41912
|
+
offset: reportRequest.offset != null ? String(reportRequest.offset) : void 0
|
|
41901
41913
|
});
|
|
41902
41914
|
const reportResponse = Array.isArray(response) ? response[0] : response;
|
|
41903
41915
|
const rawRows = reportResponse.rows;
|