@zapier/zapier-sdk 0.52.0 → 0.54.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.
- package/CHANGELOG.md +20 -0
- package/README.md +57 -0
- package/dist/experimental.cjs +121 -39
- package/dist/experimental.d.mts +31 -2
- package/dist/experimental.d.ts +28 -0
- package/dist/experimental.d.ts.map +1 -1
- package/dist/experimental.js +2 -0
- package/dist/experimental.mjs +121 -40
- package/dist/{index-DcdtPei-.d.mts → index-SDDmBk2j.d.mts} +105 -10
- package/dist/{index-DcdtPei-.d.ts → index-SDDmBk2j.d.ts} +105 -10
- package/dist/index.cjs +75 -27
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +75 -28
- package/dist/plugins/triggers/ackTriggerInboxMessages/index.d.ts.map +1 -1
- package/dist/plugins/triggers/ackTriggerInboxMessages/index.js +2 -1
- package/dist/plugins/triggers/createTriggerInbox/index.d.ts.map +1 -1
- package/dist/plugins/triggers/createTriggerInbox/index.js +1 -4
- package/dist/plugins/triggers/ensureTriggerInbox/index.d.ts.map +1 -1
- package/dist/plugins/triggers/ensureTriggerInbox/index.js +1 -4
- package/dist/plugins/triggers/leaseTriggerInboxMessages/index.d.ts.map +1 -1
- package/dist/plugins/triggers/leaseTriggerInboxMessages/index.js +5 -1
- package/dist/plugins/triggers/listTriggers/index.d.ts +70 -0
- package/dist/plugins/triggers/listTriggers/index.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggers/index.js +25 -0
- package/dist/plugins/triggers/listTriggers/schemas.d.ts +11 -0
- package/dist/plugins/triggers/listTriggers/schemas.d.ts.map +1 -0
- package/dist/plugins/triggers/listTriggers/schemas.js +18 -0
- package/dist/plugins/triggers/releaseTriggerInboxMessages/index.d.ts.map +1 -1
- package/dist/plugins/triggers/releaseTriggerInboxMessages/index.js +2 -1
- package/dist/resolvers/appKey.d.ts +7 -2
- package/dist/resolvers/appKey.d.ts.map +1 -1
- package/dist/resolvers/appKey.js +46 -3
- package/dist/resolvers/index.d.ts +1 -0
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -0
- package/dist/resolvers/triggerMessages.d.ts +6 -0
- package/dist/resolvers/triggerMessages.d.ts.map +1 -0
- package/dist/resolvers/triggerMessages.js +22 -0
- package/dist/schemas/App.d.ts.map +1 -1
- package/dist/schemas/App.js +2 -11
- package/dist/utils/domain-utils.d.ts +4 -0
- package/dist/utils/domain-utils.d.ts.map +1 -1
- package/dist/utils/domain-utils.js +5 -0
- package/dist/utils/schema-utils.d.ts +80 -8
- package/dist/utils/schema-utils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/createTriggerInbox/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAA0B,MAAM,WAAW,CAAC;AAU7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAInE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;aAIpB;QACP,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/createTriggerInbox/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAA0B,MAAM,WAAW,CAAC;AAU7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAInE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;aAIpB;QACP,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2E/C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,UAAU,CACvD,OAAO,wBAAwB,CAChC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -38,15 +38,12 @@ export const createTriggerInboxPlugin = definePlugin((sdk) => createPluginMethod
|
|
|
38
38
|
app_key: selectedApi,
|
|
39
39
|
action_key: actionKey,
|
|
40
40
|
inputs,
|
|
41
|
+
connection_id: resolvedConnectionId ?? null,
|
|
41
42
|
},
|
|
42
43
|
};
|
|
43
44
|
if (notificationUrl !== undefined) {
|
|
44
45
|
requestBody.notification_url = notificationUrl;
|
|
45
46
|
}
|
|
46
|
-
if (resolvedConnectionId !== undefined &&
|
|
47
|
-
resolvedConnectionId !== null) {
|
|
48
|
-
requestBody.subscription.connection_id = resolvedConnectionId;
|
|
49
|
-
}
|
|
50
47
|
const rawResponse = await api.post("/trigger-inbox/api/v1/inboxes", requestBody, { authRequired: true });
|
|
51
48
|
return { data: TriggerInboxItemSchema.parse(rawResponse) };
|
|
52
49
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/ensureTriggerInbox/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAA0B,MAAM,WAAW,CAAC;AAa7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAcnE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;aAIpB;QACP,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/ensureTriggerInbox/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAA0B,MAAM,WAAW,CAAC;AAa7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAcnE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;aAIpB;QACP,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2F/C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,UAAU,CACvD,OAAO,wBAAwB,CAChC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -51,15 +51,12 @@ export const ensureTriggerInboxPlugin = definePlugin((sdk) => createPluginMethod
|
|
|
51
51
|
app_key: selectedApi,
|
|
52
52
|
action_key: actionKey,
|
|
53
53
|
inputs,
|
|
54
|
+
connection_id: resolvedConnectionId ?? null,
|
|
54
55
|
},
|
|
55
56
|
};
|
|
56
57
|
if (notificationUrl !== undefined) {
|
|
57
58
|
requestBody.notification_url = notificationUrl;
|
|
58
59
|
}
|
|
59
|
-
if (resolvedConnectionId !== undefined &&
|
|
60
|
-
resolvedConnectionId !== null) {
|
|
61
|
-
requestBody.subscription.connection_id = resolvedConnectionId;
|
|
62
|
-
}
|
|
63
60
|
const rawResponse = await api.post("/trigger-inbox/api/v1/inboxes", requestBody, {
|
|
64
61
|
authRequired: true,
|
|
65
62
|
customErrorHandler: ({ status, data }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/leaseTriggerInboxMessages/index.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/leaseTriggerInboxMessages/index.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD3C,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG,UAAU,CAC9D,OAAO,+BAA+B,CACvC,CAAC"}
|
|
@@ -34,7 +34,11 @@ export const leaseTriggerInboxMessagesPlugin = definePlugin((sdk) => createPlugi
|
|
|
34
34
|
itemType: "TriggerInboxLease",
|
|
35
35
|
inputSchema: LeaseTriggerInboxMessagesSchema,
|
|
36
36
|
outputSchema: LeaseTriggerInboxMessagesItemSchema,
|
|
37
|
-
resolvers: {
|
|
37
|
+
resolvers: {
|
|
38
|
+
inbox: triggerInboxResolver,
|
|
39
|
+
leaseLimit: { type: "static", inputType: "text" },
|
|
40
|
+
leaseSeconds: { type: "static", inputType: "text" },
|
|
41
|
+
},
|
|
38
42
|
handler: async ({ sdk, options }) => {
|
|
39
43
|
const { inbox, leaseLimit, leaseSeconds, signal } = options;
|
|
40
44
|
const inboxId = await resolveTriggerInboxId({
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export declare const listTriggersPlugin: (sdk: {
|
|
2
|
+
listActions: (options?: (({
|
|
3
|
+
app: string;
|
|
4
|
+
actionType?: "filter" | "write" | "read" | "read_bulk" | "run" | "search" | "search_and_write" | "search_or_write" | undefined;
|
|
5
|
+
pageSize?: number | undefined;
|
|
6
|
+
maxItems?: number | undefined;
|
|
7
|
+
cursor?: string | undefined;
|
|
8
|
+
} | {
|
|
9
|
+
appKey: string;
|
|
10
|
+
actionType?: "filter" | "write" | "read" | "read_bulk" | "run" | "search" | "search_and_write" | "search_or_write" | undefined;
|
|
11
|
+
pageSize?: number | undefined;
|
|
12
|
+
maxItems?: number | undefined;
|
|
13
|
+
cursor?: string | undefined;
|
|
14
|
+
}) & {
|
|
15
|
+
cursor?: string;
|
|
16
|
+
pageSize?: number;
|
|
17
|
+
maxItems?: number;
|
|
18
|
+
}) | undefined) => import("../../..").PaginatedSdkResult<{
|
|
19
|
+
description: string;
|
|
20
|
+
key: string;
|
|
21
|
+
app_key: string;
|
|
22
|
+
action_type: "filter" | "write" | "read" | "read_bulk" | "run" | "search" | "search_and_write" | "search_or_write";
|
|
23
|
+
title: string;
|
|
24
|
+
type: "action";
|
|
25
|
+
id?: string | undefined;
|
|
26
|
+
is_important?: boolean | undefined;
|
|
27
|
+
is_hidden?: boolean | undefined;
|
|
28
|
+
app_version?: string | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
} & {
|
|
31
|
+
context: {
|
|
32
|
+
meta: {
|
|
33
|
+
listActions: import("../../..").PluginMeta;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
} & {
|
|
37
|
+
context: {
|
|
38
|
+
meta: Record<string, import("../../..").PluginMeta>;
|
|
39
|
+
};
|
|
40
|
+
}) => {
|
|
41
|
+
listTriggers: (options?: ({
|
|
42
|
+
app: string;
|
|
43
|
+
pageSize?: number | undefined;
|
|
44
|
+
maxItems?: number | undefined;
|
|
45
|
+
cursor?: string | undefined;
|
|
46
|
+
} & {
|
|
47
|
+
cursor?: string;
|
|
48
|
+
pageSize?: number;
|
|
49
|
+
maxItems?: number;
|
|
50
|
+
}) | undefined) => import("../../..").PaginatedSdkResult<{
|
|
51
|
+
description: string;
|
|
52
|
+
key: string;
|
|
53
|
+
app_key: string;
|
|
54
|
+
action_type: "filter" | "write" | "read" | "read_bulk" | "run" | "search" | "search_and_write" | "search_or_write";
|
|
55
|
+
title: string;
|
|
56
|
+
type: "action";
|
|
57
|
+
id?: string | undefined;
|
|
58
|
+
is_important?: boolean | undefined;
|
|
59
|
+
is_hidden?: boolean | undefined;
|
|
60
|
+
app_version?: string | undefined;
|
|
61
|
+
}>;
|
|
62
|
+
} & {
|
|
63
|
+
context: {
|
|
64
|
+
meta: {
|
|
65
|
+
listTriggers: import("../../..").PluginMeta;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
export type ListTriggersPluginProvides = ReturnType<typeof listTriggersPlugin>;
|
|
70
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/listTriggers/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwB9B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { definePlugin, createPaginatedPluginMethod, } from "../../../utils/plugin-utils";
|
|
2
|
+
import { ListTriggersSchema } from "./schemas";
|
|
3
|
+
import { ActionItemSchema } from "../../../schemas/Action";
|
|
4
|
+
import { appKeyResolver } from "../../../resolvers";
|
|
5
|
+
import { triggersDefaults } from "../shared";
|
|
6
|
+
import { DEFAULT_PAGE_SIZE } from "../../../constants";
|
|
7
|
+
export const listTriggersPlugin = definePlugin((sdk) => createPaginatedPluginMethod(sdk, {
|
|
8
|
+
...triggersDefaults,
|
|
9
|
+
name: "listTriggers",
|
|
10
|
+
type: "list",
|
|
11
|
+
itemType: "Action",
|
|
12
|
+
inputSchema: ListTriggersSchema,
|
|
13
|
+
outputSchema: ActionItemSchema,
|
|
14
|
+
defaultPageSize: DEFAULT_PAGE_SIZE,
|
|
15
|
+
resolvers: { app: appKeyResolver },
|
|
16
|
+
handler: async ({ sdk, options, }) => {
|
|
17
|
+
// Thin pass-through to listActions with actionType pinned to "read".
|
|
18
|
+
// Awaiting the paginated method returns the first page.
|
|
19
|
+
const result = await sdk.listActions({
|
|
20
|
+
...options,
|
|
21
|
+
actionType: "read",
|
|
22
|
+
});
|
|
23
|
+
return { data: result.data, nextCursor: result.nextCursor };
|
|
24
|
+
},
|
|
25
|
+
}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ListTriggersSchema: z.ZodObject<{
|
|
3
|
+
app: z.ZodString & {
|
|
4
|
+
_def: z.core.$ZodStringDef & import("../../..").PositionalMetadata;
|
|
5
|
+
};
|
|
6
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
maxItems: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type ListTriggersOptions = z.infer<typeof ListTriggersSchema>;
|
|
11
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/listTriggers/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;;;;;;iBAiBoB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AppPropertySchema } from "../../../types/properties";
|
|
3
|
+
export const ListTriggersSchema = z
|
|
4
|
+
.object({
|
|
5
|
+
app: AppPropertySchema.describe("App key of triggers to list (e.g., 'SlackCLIAPI' or slug like 'github')"),
|
|
6
|
+
pageSize: z
|
|
7
|
+
.number()
|
|
8
|
+
.min(1)
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("Number of triggers per page"),
|
|
11
|
+
maxItems: z
|
|
12
|
+
.number()
|
|
13
|
+
.min(1)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe("Maximum total items to return across all pages"),
|
|
16
|
+
cursor: z.string().optional().describe("Cursor to start from"),
|
|
17
|
+
})
|
|
18
|
+
.describe("List all triggers for a specific app");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/releaseTriggerInboxMessages/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/triggers/releaseTriggerInboxMessages/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0C7C,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG,UAAU,CAChE,OAAO,iCAAiC,CACzC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { definePlugin, createPluginMethod } from "../../../utils/plugin-utils";
|
|
2
2
|
import { ReleaseTriggerInboxMessagesSchema, ReleaseTriggerInboxMessagesItemSchema, } from "./schemas";
|
|
3
|
-
import { triggerInboxResolver } from "../../../resolvers";
|
|
3
|
+
import { triggerInboxResolver, triggerMessagesResolver, } from "../../../resolvers";
|
|
4
4
|
import { resolveTriggerInboxId } from "../utils";
|
|
5
5
|
import { triggersDefaults } from "../shared";
|
|
6
6
|
export const releaseTriggerInboxMessagesPlugin = definePlugin((sdk) => createPluginMethod(sdk, {
|
|
@@ -16,6 +16,7 @@ export const releaseTriggerInboxMessagesPlugin = definePlugin((sdk) => createPlu
|
|
|
16
16
|
// most recent leaseTriggerInboxMessages caller knows the ID.
|
|
17
17
|
// Static resolver prompts for free-text input.
|
|
18
18
|
lease: { type: "static", inputType: "text" },
|
|
19
|
+
messages: triggerMessagesResolver,
|
|
19
20
|
},
|
|
20
21
|
handler: async ({ sdk, options }) => {
|
|
21
22
|
const { inbox, lease, messages } = options;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { DynamicResolver } from "../utils/schema-utils";
|
|
2
|
+
import type { AppItem } from "../plugins/listApps/schemas";
|
|
3
|
+
type AppKeyResolver = DynamicResolver<AppItem, {
|
|
4
|
+
search?: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const appKeyResolver: AppKeyResolver;
|
|
7
|
+
export {};
|
|
3
8
|
//# sourceMappingURL=appKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appKey.d.ts","sourceRoot":"","sources":["../../src/resolvers/appKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"appKey.d.ts","sourceRoot":"","sources":["../../src/resolvers/appKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAI3D,KAAK,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc,EAAE,cA6C5B,CAAC"}
|
package/dist/resolvers/appKey.js
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
|
+
import { ZapierAppNotFoundError, ZapierNotFoundError } from "../types/errors";
|
|
2
|
+
import { getAppKeyList } from "../utils/domain-utils";
|
|
1
3
|
export const appKeyResolver = {
|
|
2
|
-
type: "
|
|
3
|
-
inputType: "
|
|
4
|
-
placeholder: "
|
|
4
|
+
type: "dynamic",
|
|
5
|
+
inputType: "search",
|
|
6
|
+
placeholder: "e.g., 'slack' or 'SlackCLIAPI' or 'mail'",
|
|
7
|
+
// Try the user's typed string as an exact app locator first; getApp accepts
|
|
8
|
+
// a slug, key, or implementation id. If that hits, short-circuit with the
|
|
9
|
+
// input — every variant the user could have typed is already a valid value
|
|
10
|
+
// anywhere else app is required, so no canonicalization needed here. If
|
|
11
|
+
// getApp 404s, fall back to a search; any other error (auth, network,
|
|
12
|
+
// rate-limit) propagates so the user sees the real problem.
|
|
13
|
+
fetch: async (sdk, { search }) => {
|
|
14
|
+
if (!search)
|
|
15
|
+
return [];
|
|
16
|
+
try {
|
|
17
|
+
await sdk.getApp({ app: search });
|
|
18
|
+
return search;
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
// ZapierAppNotFoundError and ZapierNotFoundError are independent
|
|
22
|
+
// siblings under ZapierError, not parent/child — so neither
|
|
23
|
+
// instanceof check subsumes the other. getApp throws the
|
|
24
|
+
// app-specific class today; the generic one stays here for 404s
|
|
25
|
+
// that arrive through other layers (e.g. an intermediate plugin
|
|
26
|
+
// wrapping the error, or a future endpoint refactor that drops
|
|
27
|
+
// the app-specific class). Any other class (auth, network, rate
|
|
28
|
+
// limit) propagates so the user sees the real problem.
|
|
29
|
+
if (!(err instanceof ZapierAppNotFoundError) &&
|
|
30
|
+
!(err instanceof ZapierNotFoundError)) {
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const page = await sdk.listApps({ search });
|
|
35
|
+
return page.data;
|
|
36
|
+
},
|
|
37
|
+
prompt: (apps) => ({
|
|
38
|
+
type: "list",
|
|
39
|
+
name: "app",
|
|
40
|
+
message: "Select app:",
|
|
41
|
+
choices: apps.map((app) => ({
|
|
42
|
+
name: app.title
|
|
43
|
+
? `${app.title} (${getAppKeyList(app).join(", ")})`
|
|
44
|
+
: app.key,
|
|
45
|
+
value: app.key,
|
|
46
|
+
})),
|
|
47
|
+
}),
|
|
5
48
|
};
|
|
@@ -12,6 +12,7 @@ export { clientCredentialsNameResolver } from "./clientCredentialsName";
|
|
|
12
12
|
export { clientIdResolver } from "./clientId";
|
|
13
13
|
export { tableIdResolver } from "./tableId";
|
|
14
14
|
export { triggerInboxResolver } from "./triggerInbox";
|
|
15
|
+
export { triggerMessagesResolver } from "./triggerMessages";
|
|
15
16
|
export { tableRecordIdResolver, tableRecordIdsResolver } from "./tableRecordId";
|
|
16
17
|
export { tableFieldIdsResolver } from "./tableFieldIds";
|
|
17
18
|
export { tableNameResolver } from "./tableName";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAGxB,mDAAmD;AACnD,OAAO,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAClF,0DAA0D;AAC1D,OAAO,EAAE,2BAA2B,IAAI,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAGxB,mDAAmD;AACnD,OAAO,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAClF,0DAA0D;AAC1D,OAAO,EAAE,2BAA2B,IAAI,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/resolvers/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export { clientCredentialsNameResolver } from "./clientCredentialsName";
|
|
|
14
14
|
export { clientIdResolver } from "./clientId";
|
|
15
15
|
export { tableIdResolver } from "./tableId";
|
|
16
16
|
export { triggerInboxResolver } from "./triggerInbox";
|
|
17
|
+
export { triggerMessagesResolver } from "./triggerMessages";
|
|
17
18
|
export { tableRecordIdResolver, tableRecordIdsResolver } from "./tableRecordId";
|
|
18
19
|
export { tableFieldIdsResolver } from "./tableFieldIds";
|
|
19
20
|
export { tableNameResolver } from "./tableName";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DynamicResolver } from "../utils/schema-utils";
|
|
2
|
+
import type { TriggerMessageItem } from "../schemas/TriggerMessage";
|
|
3
|
+
export declare const triggerMessagesResolver: DynamicResolver<TriggerMessageItem, {
|
|
4
|
+
inbox: string;
|
|
5
|
+
}>;
|
|
6
|
+
//# sourceMappingURL=triggerMessages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerMessages.d.ts","sourceRoot":"","sources":["../../src/resolvers/triggerMessages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAcpE,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,kBAAkB,EAClB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAwBlB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { toIterable } from "../utils/pagination-utils";
|
|
2
|
+
export const triggerMessagesResolver = {
|
|
3
|
+
type: "dynamic",
|
|
4
|
+
depends: ["inbox"],
|
|
5
|
+
fetch: async (sdk, params) => toIterable(sdk.listTriggerInboxMessages({
|
|
6
|
+
inbox: params.inbox,
|
|
7
|
+
})),
|
|
8
|
+
prompt: (messages) => ({
|
|
9
|
+
type: "checkbox",
|
|
10
|
+
name: "messages",
|
|
11
|
+
message: "Select messages:",
|
|
12
|
+
// Only leased messages are eligible to ack or release. Acked messages
|
|
13
|
+
// are gone from the inbox already; available/quarantined ones can't be
|
|
14
|
+
// operated on by these methods.
|
|
15
|
+
choices: messages
|
|
16
|
+
.filter((message) => message.status === "leased")
|
|
17
|
+
.map((message) => ({
|
|
18
|
+
name: `${message.id} (${message.status}, lease_count: ${message.message_attributes.lease_count})`,
|
|
19
|
+
value: message.id,
|
|
20
|
+
})),
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/schemas/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAK7B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMtE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/schemas/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAK7B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMtE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUxB,CAAC;AAMH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/schemas/App.js
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
import { withFormatter } from "../utils/schema-utils";
|
|
2
2
|
import { AppItemSchema as AppItemSchemaBase } from "@zapier/zapier-sdk-core/v0/schemas/apps";
|
|
3
|
-
import {
|
|
3
|
+
import { getAppKeyList } from "../utils/domain-utils";
|
|
4
4
|
// ============================================================================
|
|
5
5
|
// App Item Schema (wraps core schema with SDK-specific formatting)
|
|
6
6
|
// ============================================================================
|
|
7
7
|
export const AppItemSchema = withFormatter(AppItemSchemaBase, {
|
|
8
8
|
format: (item) => {
|
|
9
|
-
// Create additional keys if slug exists
|
|
10
|
-
const additionalKeys = [];
|
|
11
|
-
if (item.slug && item.slug !== item.key) {
|
|
12
|
-
additionalKeys.push(item.slug);
|
|
13
|
-
const snakeCaseSlug = toSnakeCase(item.slug);
|
|
14
|
-
if (snakeCaseSlug !== item.slug && snakeCaseSlug !== item.key) {
|
|
15
|
-
additionalKeys.push(snakeCaseSlug);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
9
|
return {
|
|
19
10
|
title: item.title,
|
|
20
11
|
key: item.key,
|
|
21
|
-
keys:
|
|
12
|
+
keys: getAppKeyList(item),
|
|
22
13
|
description: item.description,
|
|
23
14
|
details: [],
|
|
24
15
|
};
|
|
@@ -89,4 +89,8 @@ export declare function isUuid(appKey: string): boolean;
|
|
|
89
89
|
export declare function toAppLocator(appKey: string): AppLocator;
|
|
90
90
|
export declare function isResolvedAppLocator(appLocator: AppLocator): appLocator is ResolvedAppLocator;
|
|
91
91
|
export declare function toImplementationId(appLocator: ResolvedAppLocator): string;
|
|
92
|
+
export declare function getAppKeyList(app: {
|
|
93
|
+
key: string;
|
|
94
|
+
slug: string;
|
|
95
|
+
}): string[];
|
|
92
96
|
//# sourceMappingURL=domain-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-utils.d.ts","sourceRoot":"","sources":["../../src/utils/domain-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"domain-utils.d.ts","sourceRoot":"","sources":["../../src/utils/domain-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAO3E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,GACN,EAAE;IACD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAiCvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,GACnB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAQ9B;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAYT;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAsB9D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CA8B5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;IAC9D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAgCA;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;IACrD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAUA;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI9C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAkBvD;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,GACrB,UAAU,IAAI,kBAAkB,CAElC;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAEzE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAK1E"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Domain utility functions for working with app identifiers and data normalization
|
|
3
3
|
*/
|
|
4
4
|
import { ZapierValidationError, ZapierConfigurationError, } from "../types/errors";
|
|
5
|
+
import { toSnakeCase } from "./string-utils";
|
|
5
6
|
/**
|
|
6
7
|
* Checks if a string value looks like a direct connection ID rather than a named alias.
|
|
7
8
|
* Returns true for numeric strings and UUIDs.
|
|
@@ -241,3 +242,7 @@ export function isResolvedAppLocator(appLocator) {
|
|
|
241
242
|
export function toImplementationId(appLocator) {
|
|
242
243
|
return `${appLocator.implementationName}@${appLocator.version || "latest"}`;
|
|
243
244
|
}
|
|
245
|
+
export function getAppKeyList(app) {
|
|
246
|
+
const keys = new Set([app.slug, toSnakeCase(app.slug), app.key].filter(Boolean));
|
|
247
|
+
return Array.from(keys);
|
|
248
|
+
}
|
|
@@ -37,8 +37,17 @@ export interface PromptConfig {
|
|
|
37
37
|
}>;
|
|
38
38
|
default?: unknown;
|
|
39
39
|
filter?: (value: unknown) => unknown;
|
|
40
|
+
/**
|
|
41
|
+
* Return `true` for valid; a string for a custom invalid message; or
|
|
42
|
+
* `false` for invalid with a generic fallback message ("X: invalid
|
|
43
|
+
* value."). Prefer returning a string so users see something specific.
|
|
44
|
+
*/
|
|
40
45
|
validate?: (value: unknown) => boolean | string;
|
|
41
46
|
}
|
|
47
|
+
/** A PromptConfig narrowed to single-select list mode. */
|
|
48
|
+
export type ListPromptConfig = PromptConfig & {
|
|
49
|
+
type: "list";
|
|
50
|
+
};
|
|
42
51
|
export interface Resolver {
|
|
43
52
|
type: string;
|
|
44
53
|
depends?: readonly string[] | string[];
|
|
@@ -66,15 +75,11 @@ export interface ConstantResolver extends Resolver {
|
|
|
66
75
|
type: "constant";
|
|
67
76
|
value: unknown;
|
|
68
77
|
}
|
|
69
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Fields shared by both variants of {@link DynamicResolver}.
|
|
80
|
+
*/
|
|
81
|
+
interface DynamicResolverBase<TItem, TParams> extends Resolver {
|
|
70
82
|
type: "dynamic";
|
|
71
|
-
fetch: (sdk: ZapierSdk, resolvedParams: TParams) => PromiseLike<TItem[] | {
|
|
72
|
-
data: TItem[];
|
|
73
|
-
nextCursor?: string;
|
|
74
|
-
} | AsyncIterable<{
|
|
75
|
-
data: TItem[];
|
|
76
|
-
nextCursor?: string;
|
|
77
|
-
}>>;
|
|
78
83
|
prompt: (items: TItem[], params: TParams) => PromptConfig;
|
|
79
84
|
/** Capabilities that expand results. The parameter resolver shows a hint for any that aren't enabled. */
|
|
80
85
|
requireCapabilities?: string[];
|
|
@@ -89,6 +94,72 @@ export interface DynamicResolver<TItem = unknown, TParams = Record<string, unkno
|
|
|
89
94
|
resolvedValue: unknown;
|
|
90
95
|
} | null>;
|
|
91
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* The classic dynamic-resolver variant: `fetch` returns a list of items
|
|
99
|
+
* that the CLI renders as a search-filterable dropdown. The user picks one.
|
|
100
|
+
*/
|
|
101
|
+
export interface DynamicListResolver<TItem, TParams> extends DynamicResolverBase<TItem, TParams> {
|
|
102
|
+
/** Explicitly absent on the list variant — set `inputType: "search"` to opt into the search variant. */
|
|
103
|
+
inputType?: never;
|
|
104
|
+
/** Only meaningful for the search variant; set to `never` here so TS catches misuse. */
|
|
105
|
+
placeholder?: never;
|
|
106
|
+
fetch: (sdk: ZapierSdk, resolvedParams: TParams) => PromiseLike<TItem[] | {
|
|
107
|
+
data: TItem[];
|
|
108
|
+
nextCursor?: string;
|
|
109
|
+
} | AsyncIterable<{
|
|
110
|
+
data: TItem[];
|
|
111
|
+
nextCursor?: string;
|
|
112
|
+
}>>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The search-input variant: the CLI prompts the user for free-form text
|
|
116
|
+
* first, then calls `fetch` with `{ ...resolvedParams, search }`.
|
|
117
|
+
*
|
|
118
|
+
* `fetch` can short-circuit by returning a primitive (`string | number`),
|
|
119
|
+
* which the CLI treats as an exact match — no dropdown is rendered. Any
|
|
120
|
+
* other return (array, page, async iterable) is rendered as the normal
|
|
121
|
+
* search-filterable dropdown.
|
|
122
|
+
*
|
|
123
|
+
* The `search` key is injected by the CLI at call time; it isn't part of
|
|
124
|
+
* `TParams` because callers that invoke `fetch` directly (outside the CLI)
|
|
125
|
+
* are responsible for passing it themselves. Search-mode resolvers should
|
|
126
|
+
* type `TParams` as `{ search?: string; ...otherDeps }` to make this
|
|
127
|
+
* explicit.
|
|
128
|
+
*/
|
|
129
|
+
export interface DynamicSearchResolver<TItem, TParams> extends Omit<DynamicResolverBase<TItem, TParams>, "prompt"> {
|
|
130
|
+
inputType: "search";
|
|
131
|
+
/**
|
|
132
|
+
* Hint text appended to the search prompt's message. NOT used as
|
|
133
|
+
* inquirer's `default` value, because inquirer prefills `default` as
|
|
134
|
+
* editable text that the user has to delete before typing.
|
|
135
|
+
*/
|
|
136
|
+
placeholder?: string;
|
|
137
|
+
/**
|
|
138
|
+
* Search-mode always renders a single-select @inquirer/search dropdown,
|
|
139
|
+
* so `prompt` must return a list-typed PromptConfig. Checkbox/confirm
|
|
140
|
+
* configs would be silently ignored at runtime; the type narrows so
|
|
141
|
+
* misuse fails at compile time.
|
|
142
|
+
*
|
|
143
|
+
* Note: a primitive return from `fetch` (string | number) is treated
|
|
144
|
+
* as an exact match and short-circuits without running this prompt or
|
|
145
|
+
* the resolver's validate/filter. Canonicalize inside `fetch` if the
|
|
146
|
+
* exact-match path needs normalization.
|
|
147
|
+
*/
|
|
148
|
+
prompt: (items: TItem[], params: TParams) => ListPromptConfig;
|
|
149
|
+
fetch: (sdk: ZapierSdk, resolvedParams: TParams) => PromiseLike<string | number | TItem[] | {
|
|
150
|
+
data: TItem[];
|
|
151
|
+
nextCursor?: string;
|
|
152
|
+
} | AsyncIterable<{
|
|
153
|
+
data: TItem[];
|
|
154
|
+
nextCursor?: string;
|
|
155
|
+
}>>;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* A dynamic resolver — either a classic list (`inputType` absent) or a
|
|
159
|
+
* search-input variant (`inputType: "search"`). The discriminator is the
|
|
160
|
+
* `inputType` field; TS narrows to the right variant when you check it.
|
|
161
|
+
*/
|
|
162
|
+
export type DynamicResolver<TItem = unknown, TParams = Record<string, unknown>> = DynamicListResolver<TItem, TParams> | DynamicSearchResolver<TItem, TParams>;
|
|
92
163
|
export interface ResolverFieldItem {
|
|
93
164
|
type: string;
|
|
94
165
|
key: string;
|
|
@@ -129,4 +200,5 @@ export declare function withPositional<T extends z.ZodType>(schema: T): T & {
|
|
|
129
200
|
_def: T["_def"] & PositionalMetadata;
|
|
130
201
|
};
|
|
131
202
|
export declare function isPositional(schema: z.ZodType): boolean;
|
|
203
|
+
export {};
|
|
132
204
|
//# sourceMappingURL=schema-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../src/utils/schema-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../src/utils/schema-utils.ts"],"names":[],"mappings":"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"}
|