@jskit-ai/connectors-catalog 0.2.2 → 0.2.4
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/README.md +4 -4
- package/docs/ai.md +3 -3
- package/docs/airtable.md +1 -1
- package/docs/algolia.md +2 -2
- package/docs/amazon-redshift.md +2 -2
- package/docs/apollo-io.md +2 -2
- package/docs/asana.md +2 -2
- package/docs/ashby.md +1 -1
- package/docs/attention.md +2 -2
- package/docs/aws-athena.md +1 -1
- package/docs/aws-credentials.md +3 -3
- package/docs/aws-s3.md +1 -1
- package/docs/bigquery.md +2 -2
- package/docs/brevo.md +2 -2
- package/docs/calendly.md +3 -3
- package/docs/canva.md +2 -2
- package/docs/chargebee.md +2 -2
- package/docs/clay.md +2 -2
- package/docs/clickhouse.md +1 -1
- package/docs/confidence-flags.md +1 -1
- package/docs/contentful.md +1 -1
- package/docs/dbt-semantic-layer.md +2 -2
- package/docs/elevenlabs.md +2 -2
- package/docs/firebase-cloud-messaging.md +3 -3
- package/docs/firecrawl.md +4 -4
- package/docs/fireflies.md +1 -1
- package/docs/gatewayapi.md +1 -1
- package/docs/gemini-enterprise.md +1 -1
- package/docs/github-api.md +1 -1
- package/docs/gitlab-api.md +1 -1
- package/docs/gmail.md +1 -1
- package/docs/gong.md +1 -1
- package/docs/google-ads.md +3 -3
- package/docs/google-analytics.md +2 -2
- package/docs/google-docs.md +1 -1
- package/docs/google-drive.md +1 -1
- package/docs/google-maps-platform.md +2 -2
- package/docs/google-search-console.md +1 -1
- package/docs/google-sheets.md +1 -1
- package/docs/google-slides.md +2 -2
- package/docs/granola.md +2 -2
- package/docs/hex.md +2 -2
- package/docs/heygen.md +2 -2
- package/docs/inngest.md +1 -1
- package/docs/klipy.md +1 -1
- package/docs/lightspeed.md +2 -2
- package/docs/linear.md +1 -1
- package/docs/linkedin.md +2 -2
- package/docs/mailgun.md +1 -1
- package/docs/microsoft-excel.md +2 -2
- package/docs/microsoft-fabric.md +1 -1
- package/docs/microsoft-outlook.md +1 -1
- package/docs/microsoft-powerpoint.md +1 -1
- package/docs/microsoft-teams.md +1 -1
- package/docs/microsoft-word.md +1 -1
- package/docs/notion.md +1 -1
- package/docs/oura.md +3 -3
- package/docs/paddle.md +3 -3
- package/docs/pipedrive.md +2 -2
- package/docs/prestashop.md +1 -1
- package/docs/replicate.md +1 -1
- package/docs/resend.md +1 -1
- package/docs/salesforce.md +1 -1
- package/docs/sanity.md +3 -3
- package/docs/semrush.md +2 -2
- package/docs/sentry.md +1 -1
- package/docs/slack.md +1 -1
- package/docs/snowflake.md +5 -5
- package/docs/storyblok.md +1 -1
- package/docs/stripe.md +2 -2
- package/docs/tally.md +1 -1
- package/docs/telegram.md +2 -2
- package/docs/tiktok.md +3 -3
- package/docs/twilio.md +3 -3
- package/docs/twitch.md +2 -2
- package/docs/wave.md +3 -3
- package/docs/wix.md +13 -13
- package/docs/wordpress-com.md +1 -1
- package/docs/wordpress-self-hosted.md +1 -1
- package/docs/workday.md +2 -2
- package/docs/x-twitter.md +3 -3
- package/docs/xero.md +3 -3
- package/docs/zoho-books.md +2 -2
- package/docs/zoho-crm.md +2 -2
- package/package.json +4 -3
- package/patterns/ai-connections/PATTERN.md +16 -1
- package/patterns/ai-connections/example/ai-model.js +12 -3
- package/patterns/ai-connections/example/perplexity-answer.js +15 -4
- package/patterns/api-key-connection/PATTERN.md +9 -1
- package/patterns/api-key-connection/example/connections.js +5 -2
- package/patterns/aws-storage-queries/PATTERN.md +13 -3
- package/patterns/aws-storage-queries/example/s3-transfer.js +14 -3
- package/patterns/event-delivery/PATTERN.md +1 -1
- package/patterns/firebase-messaging/PATTERN.md +10 -0
- package/patterns/firebase-messaging/example/server/notifications.js +8 -0
- package/patterns/google-ads-search/PATTERN.md +18 -7
- package/patterns/google-ads-search/example/ads-setup.js +13 -5
- package/patterns/oauth-connection/PATTERN.md +1 -1
- package/patterns/paddle-catalogue/PATTERN.md +11 -2
- package/patterns/paddle-catalogue/example/create-products.js +5 -2
- package/patterns/public-image/PATTERN.md +10 -1
- package/patterns/public-image/example/logo-url.js +4 -1
- package/patterns/redshift-queries/PATTERN.md +1 -1
- package/patterns/source-scanning/PATTERN.md +13 -2
- package/patterns/source-scanning/example/source-scanner.js +9 -0
- package/src/server/ai.js +19 -5
- package/src/server/apify.js +2 -2
- package/src/server/asana.js +6 -6
- package/src/server/ashby.js +2 -1
- package/src/server/attention.js +12 -11
- package/src/server/awsTransport.js +6 -0
- package/src/server/bigquery.js +5 -4
- package/src/server/brevo.js +2 -1
- package/src/server/clay.js +2 -1
- package/src/server/clickhouse.js +2 -1
- package/src/server/confidence.js +6 -1
- package/src/server/connectorValues.js +33 -0
- package/src/server/databricks.js +7 -7
- package/src/server/dbt-semantic-layer.js +5 -5
- package/src/server/elevenlabs.js +2 -2
- package/src/server/firebase-cloud-messaging.js +2 -2
- package/src/server/gemini-enterprise.js +5 -5
- package/src/server/google-ads-search.js +68 -48
- package/src/server/google-ads.js +15 -17
- package/src/server/google-drive.js +7 -7
- package/src/server/google-maps-platform.js +4 -2
- package/src/server/google-search-console.js +4 -3
- package/src/server/google.js +8 -4
- package/src/server/googleAdsApi.js +14 -0
- package/src/server/granola.js +2 -2
- package/src/server/hubspot.js +2 -1
- package/src/server/incident-io.js +3 -2
- package/src/server/lexware.js +5 -4
- package/src/server/lightspeed.js +7 -5
- package/src/server/linkedin.js +2 -2
- package/src/server/mcpTransport.js +8 -4
- package/src/server/microsoft-fabric.js +3 -3
- package/src/server/microsoft-onedrive.js +2 -2
- package/src/server/microsoft-onenote.js +4 -3
- package/src/server/microsoft-outlook.js +6 -6
- package/src/server/microsoft-sharepoint.js +4 -2
- package/src/server/microsoft-teams.js +2 -1
- package/src/server/microsoft.js +20 -13
- package/src/server/notion.js +2 -1
- package/src/server/pipedrive.js +2 -1
- package/src/server/salesforce.js +12 -12
- package/src/server/semrush.js +9 -8
- package/src/server/snowflake.js +20 -20
- package/src/server/storyblok.js +2 -1
- package/src/server/tally.js +2 -1
- package/src/server/telegram.js +2 -6
- package/src/server/tiktok.js +3 -3
- package/src/server/twilio.js +3 -2
- package/src/server/twitch.js +5 -3
- package/src/server/types.js +13 -0
- package/src/server/wix.js +20 -878
- package/src/server/wixBookings.js +449 -0
- package/src/server/wixCms.js +132 -0
- package/src/server/wixStores.js +296 -0
- package/src/server/wixValues.js +35 -0
- package/src/server/wiz.js +18 -4
- package/src/server/woocommerce.js +1 -1
- package/src/server/wordpress-com.js +2 -1
- package/src/server/workday.js +9 -9
- package/src/server/x-twitter.js +2 -1
- package/src/server/xero.js +40 -40
- package/src/server/zoho-books.js +6 -6
- package/src/server/zoho-crm.js +5 -5
- package/src/shared/confidence.js +6 -1
- package/src/shared/dbt-semantic-layer.js +1 -1
- package/src/shared/figma.js +1 -1
- package/src/shared/google.js +8 -4
- package/src/shared/googleScope.js +4 -0
- package/src/shared/microsoft-fabric.js +4 -5
- package/src/shared/microsoft.js +8 -3
- package/src/shared/salesforce.js +1 -1
- package/src/shared/tokens.js +7 -3
- package/src/shared/uuid.js +13 -0
- package/src/shared/wix.js +4 -3
- package/src/shared/zoho-books.js +3 -4
- package/src/shared/zoho-crm.js +1 -1
- package/src/shared/{zoho-regions.js → zoho.js} +4 -1
- package/test/ai.test.js +1 -1
- package/test/brevo.test.js +1 -1
- package/test/chargebee.test.js +1 -1
- package/test/google-ads.test.js +8 -4
- package/test/linkedin.test.js +1 -1
- package/test/resend.test.js +2 -2
- package/test/salesforce.test.js +1 -1
- package/test/snowflake.test.js +7 -7
- package/test/tiktok.test.js +1 -1
- package/test/wiz.test.js +1 -1
package/src/server/tiktok.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ConnectorError } from "@jskit-ai/connectors-core/server";
|
|
2
2
|
import { tiktokDefinition } from "../shared/tiktok.js";
|
|
3
3
|
import { jsonOperation } from "./jsonOperation.js";
|
|
4
|
+
import { isCount } from "./connectorValues.js";
|
|
4
5
|
|
|
5
6
|
const textId = (value) => typeof value === "string" && value.length > 0 && value.length <= 1024 && !/[\p{Cc}]/u.test(value);
|
|
6
|
-
const count = (value) => Number.isSafeInteger(value) && value >= 0;
|
|
7
7
|
|
|
8
8
|
function checkReply(value) {
|
|
9
9
|
const code = value?.error?.code ?? value?.code;
|
|
@@ -55,14 +55,14 @@ const tiktokProvider = Object.freeze({
|
|
|
55
55
|
"profile.extended": profileOperation(["username", "bio_description", "profile_deep_link", "is_verified"], "user.info.profile", (user) =>
|
|
56
56
|
["username", "bio_description", "profile_deep_link"].every((field) => typeof user?.[field] === "string") && typeof user?.is_verified === "boolean"),
|
|
57
57
|
"profile.stats": profileOperation(["follower_count", "following_count", "likes_count", "video_count"], "user.info.stats", (user) =>
|
|
58
|
-
["follower_count", "following_count", "likes_count", "video_count"].every((field) =>
|
|
58
|
+
["follower_count", "following_count", "likes_count", "video_count"].every((field) => isCount(user?.[field]))),
|
|
59
59
|
"videos.list": {
|
|
60
60
|
...jsonOperation("https://open.tiktokapis.com/v2/video/list/?fields=id,title,cover_image_url", {
|
|
61
61
|
max_count: { type: "integer", min: 1, max: 20, defaultTo: 10 },
|
|
62
62
|
cursor: { type: "integer", min: 0, max: Number.MAX_SAFE_INTEGER }
|
|
63
63
|
}, (value) => value?.error?.code === "ok" && Array.isArray(value.data?.videos) && value.data.videos.length <= 20 &&
|
|
64
64
|
value.data.videos.every((video) => textId(video?.id) && typeof video.title === "string" && typeof video.cover_image_url === "string") &&
|
|
65
|
-
typeof value.data.has_more === "boolean" &&
|
|
65
|
+
typeof value.data.has_more === "boolean" && isCount(value.data.cursor), "POST"),
|
|
66
66
|
scopes: ["video.list"]
|
|
67
67
|
}
|
|
68
68
|
},
|
package/src/server/twilio.js
CHANGED
|
@@ -14,13 +14,14 @@ const callbackUrl = { type: "string", maxLength: 2048, validator: value => {
|
|
|
14
14
|
try { const url = new URL(value); return url.protocol === "https:" && !url.username && !url.password && !url.hash || "Use an HTTPS URL without credentials or a fragment."; }
|
|
15
15
|
catch { return "Use an absolute HTTPS URL."; }
|
|
16
16
|
} };
|
|
17
|
-
function
|
|
17
|
+
function acceptAnyValues() {}
|
|
18
|
+
function resourceOperation(resource, method, fields, checkInput = acceptAnyValues) {
|
|
18
19
|
const schema = createSchema(fields);
|
|
19
20
|
return {
|
|
20
21
|
scopes: [],
|
|
21
22
|
request(input, settings) {
|
|
22
23
|
const { resourceSid, ...values } = validateSchemaPayload({ schema, mode: "replace" }, input, { statusCode: 422 });
|
|
23
|
-
checkInput
|
|
24
|
+
checkInput(values, settings);
|
|
24
25
|
const url = `${origins[settings.region]}/2010-04-01/Accounts/${settings.accountSid}/${resource}${resourceSid ? `/${resourceSid}` : ""}.json`;
|
|
25
26
|
if (method === "GET") return { method, url };
|
|
26
27
|
return { method, url, headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams(values).toString() };
|
package/src/server/twitch.js
CHANGED
|
@@ -2,6 +2,7 @@ import { ConnectorError } from "@jskit-ai/connectors-core/server";
|
|
|
2
2
|
import { twitchDefinition } from "../shared/twitch.js";
|
|
3
3
|
import { jsonOperation } from "./jsonOperation.js";
|
|
4
4
|
import { createSchema } from "json-rest-schema";
|
|
5
|
+
import { isRecord } from "@jskit-ai/kernel/shared/support/normalize";
|
|
5
6
|
|
|
6
7
|
const validationUrl = "https://id.twitch.tv/oauth2/validate";
|
|
7
8
|
const userId = (value) => typeof value === "string" && /^[1-9]\d*$/u.test(value);
|
|
@@ -27,16 +28,17 @@ const choiceList = max => ({ type: "array", required: true,
|
|
|
27
28
|
validator: values => values.length >= 2 && values.length <= max || `Use between two and ${max} choices.` });
|
|
28
29
|
const interactionResult = value => Array.isArray(value?.data) && value.data.every(item =>
|
|
29
30
|
typeof item?.id === "string" && userId(item.broadcaster_id) && typeof item.status === "string");
|
|
30
|
-
function
|
|
31
|
+
function acceptAnyBody() {}
|
|
32
|
+
function helixOperation(path, fields, scopes, validateResult, method = "GET", checkInput = acceptAnyBody) {
|
|
31
33
|
const operation = jsonOperation(`https://api.twitch.tv/helix/${path}`, fields, validateResult, method === "GET" ? "GET" : "POST");
|
|
32
34
|
return { ...operation, scopes, request(input) {
|
|
33
35
|
const request = operation.request(input);
|
|
34
|
-
checkInput
|
|
36
|
+
checkInput(request.body);
|
|
35
37
|
return { ...request, method };
|
|
36
38
|
} };
|
|
37
39
|
}
|
|
38
40
|
const page = (value, record) => Array.isArray(value?.data) && value.data.every(record) &&
|
|
39
|
-
|
|
41
|
+
isRecord(value.pagination) &&
|
|
40
42
|
(value.pagination.cursor === undefined || typeof value.pagination.cursor === "string");
|
|
41
43
|
function analyticsOperation(kind, identity) {
|
|
42
44
|
const date = { type: "string", validator: value => /^\d{4}-\d{2}-\d{2}T00:00:00Z$/u.test(value) &&
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// The types of the services connectors-catalog builds, for code that receives them,
|
|
2
|
+
// and the contracts of what an application passes them.
|
|
3
|
+
|
|
4
|
+
/** @typedef {ReturnType<typeof import("./ai.js").createAiConnectionResolver>} AiConnectionResolver */
|
|
5
|
+
/** @typedef {ReturnType<typeof import("./google-ads-search.js").createGoogleAdsSearchService>} GoogleAdsSearchService */
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The application's choice of what to scan for an authorized owner: an
|
|
9
|
+
* immutable source snapshot and its revision, never a path from the browser.
|
|
10
|
+
* @typedef {(owner: import("@jskit-ai/connectors-core/server/types").ConnectionOwner, request: { integrationId: string, signal?: AbortSignal }) => Promise<{ directory: string, revision: string }>} WizScanTargetResolver
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export {};
|