@nativesquare/upwork 0.1.0 → 0.2.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/README.md +150 -94
- package/dist/client/index.d.ts +7 -18
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +38 -21
- package/dist/client/index.js.map +1 -1
- package/dist/client/types.d.ts +0 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js +0 -1
- package/dist/client/types.js.map +1 -1
- package/dist/component/_generated/component.d.ts +7 -11
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/private.d.ts +2 -2
- package/dist/component/public.d.ts +28 -12
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +113 -25
- package/dist/component/public.js.map +1 -1
- package/dist/component/schema.d.ts +2 -2
- package/package.json +1 -1
- package/src/client/index.ts +46 -41
- package/src/client/types.ts +0 -2
- package/src/component/_generated/component.ts +17 -15
- package/src/component/public.ts +144 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"AAqEA,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,kBAAkB,uEAwC7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;iBA8C3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;yBAqG5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;UAUxB,CAAC;AA0BH,eAAO,MAAM,eAAe;;iCAgF1B,CAAC;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;KAc1B,CAAC;AAEH,eAAO,MAAM,aAAa,0GAYxB,CAAC"}
|
package/dist/component/public.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { query, action } from "./_generated/server.js";
|
|
2
2
|
import { api } from "./_generated/api.js";
|
|
3
3
|
import { v } from "convex/values";
|
|
4
|
+
const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
5
|
+
function getCredentials() {
|
|
6
|
+
const clientId = process.env.UPWORK_CLIENT_ID;
|
|
7
|
+
const clientSecret = process.env.UPWORK_CLIENT_SECRET;
|
|
8
|
+
if (!clientId || !clientSecret) {
|
|
9
|
+
throw new Error("Missing UPWORK_CLIENT_ID or UPWORK_CLIENT_SECRET environment variables.");
|
|
10
|
+
}
|
|
11
|
+
return { clientId, clientSecret };
|
|
12
|
+
}
|
|
4
13
|
function buildJobPostingsQuery(opts) {
|
|
5
14
|
const filterArg = opts.searchQuery
|
|
6
15
|
? `marketPlaceJobFilter: $marketPlaceJobFilter,`
|
|
@@ -45,17 +54,14 @@ query ${variableDefs} {
|
|
|
45
54
|
return { query, variables };
|
|
46
55
|
}
|
|
47
56
|
export const refreshAccessToken = action({
|
|
48
|
-
args: {
|
|
49
|
-
|
|
50
|
-
clientSecret
|
|
51
|
-
baseUrl: v.string(),
|
|
52
|
-
},
|
|
53
|
-
handler: async (ctx, args) => {
|
|
57
|
+
args: {},
|
|
58
|
+
handler: async (ctx) => {
|
|
59
|
+
const { clientId, clientSecret } = getCredentials();
|
|
54
60
|
const tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
55
61
|
if (!tokens) {
|
|
56
62
|
throw new Error("No stored tokens found. Complete OAuth authorization first.");
|
|
57
63
|
}
|
|
58
|
-
const tokenUrl = `${
|
|
64
|
+
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
59
65
|
const response = await fetch(tokenUrl, {
|
|
60
66
|
method: "POST",
|
|
61
67
|
headers: {
|
|
@@ -64,8 +70,8 @@ export const refreshAccessToken = action({
|
|
|
64
70
|
},
|
|
65
71
|
body: new URLSearchParams({
|
|
66
72
|
grant_type: "refresh_token",
|
|
67
|
-
client_id:
|
|
68
|
-
client_secret:
|
|
73
|
+
client_id: clientId,
|
|
74
|
+
client_secret: clientSecret,
|
|
69
75
|
refresh_token: tokens.refreshToken,
|
|
70
76
|
}).toString(),
|
|
71
77
|
});
|
|
@@ -85,24 +91,22 @@ export const refreshAccessToken = action({
|
|
|
85
91
|
});
|
|
86
92
|
export const exchangeAuthCode = action({
|
|
87
93
|
args: {
|
|
88
|
-
clientId: v.string(),
|
|
89
|
-
clientSecret: v.string(),
|
|
90
94
|
code: v.string(),
|
|
91
95
|
redirectUri: v.string(),
|
|
92
|
-
baseUrl: v.string(),
|
|
93
96
|
},
|
|
94
97
|
handler: async (ctx, args) => {
|
|
95
|
-
const
|
|
98
|
+
const { clientId, clientSecret } = getCredentials();
|
|
99
|
+
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
96
100
|
const body = new URLSearchParams({
|
|
97
101
|
grant_type: "authorization_code",
|
|
98
|
-
client_id:
|
|
99
|
-
client_secret:
|
|
102
|
+
client_id: clientId,
|
|
103
|
+
client_secret: clientSecret,
|
|
100
104
|
code: args.code,
|
|
101
105
|
redirect_uri: args.redirectUri,
|
|
102
106
|
}).toString();
|
|
103
107
|
console.log("[exchangeAuthCode] POST", tokenUrl);
|
|
104
108
|
console.log("[exchangeAuthCode] redirect_uri:", args.redirectUri);
|
|
105
|
-
console.log("[exchangeAuthCode] client_id:",
|
|
109
|
+
console.log("[exchangeAuthCode] client_id:", clientId);
|
|
106
110
|
console.log("[exchangeAuthCode] code:", args.code);
|
|
107
111
|
const response = await fetch(tokenUrl, {
|
|
108
112
|
method: "POST",
|
|
@@ -128,9 +132,6 @@ export const exchangeAuthCode = action({
|
|
|
128
132
|
});
|
|
129
133
|
export const searchJobPostings = action({
|
|
130
134
|
args: {
|
|
131
|
-
clientId: v.string(),
|
|
132
|
-
clientSecret: v.string(),
|
|
133
|
-
baseUrl: v.string(),
|
|
134
135
|
searchQuery: v.optional(v.string()),
|
|
135
136
|
sortField: v.optional(v.string()),
|
|
136
137
|
},
|
|
@@ -140,17 +141,13 @@ export const searchJobPostings = action({
|
|
|
140
141
|
throw new Error("Not connected to Upwork. Complete OAuth authorization first.");
|
|
141
142
|
}
|
|
142
143
|
if (tokens.expiresAt < Date.now()) {
|
|
143
|
-
await ctx.runAction(api.public.refreshAccessToken, {
|
|
144
|
-
clientId: args.clientId,
|
|
145
|
-
clientSecret: args.clientSecret,
|
|
146
|
-
baseUrl: args.baseUrl,
|
|
147
|
-
});
|
|
144
|
+
await ctx.runAction(api.public.refreshAccessToken, {});
|
|
148
145
|
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
149
146
|
if (!tokens) {
|
|
150
147
|
throw new Error("Failed to refresh token.");
|
|
151
148
|
}
|
|
152
149
|
}
|
|
153
|
-
const graphqlUrl = `${
|
|
150
|
+
const graphqlUrl = `${BASE_URL}/graphql`;
|
|
154
151
|
const { query, variables } = buildJobPostingsQuery({
|
|
155
152
|
searchQuery: args.searchQuery,
|
|
156
153
|
sortField: args.sortField,
|
|
@@ -209,6 +206,97 @@ export const searchJobPostings = action({
|
|
|
209
206
|
};
|
|
210
207
|
},
|
|
211
208
|
});
|
|
209
|
+
export const getJobPosting = query({
|
|
210
|
+
args: { upworkId: v.string() },
|
|
211
|
+
handler: async (ctx, args) => {
|
|
212
|
+
return ((await ctx.db
|
|
213
|
+
.query("jobPostings")
|
|
214
|
+
.withIndex("byUpworkId", (q) => q.eq("upworkId", args.upworkId))
|
|
215
|
+
.first()) ?? null);
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
function buildJobPostingQuery(upworkId) {
|
|
219
|
+
const query = `
|
|
220
|
+
query($id: ID!) {
|
|
221
|
+
marketplaceJobPosting(id: $id) {
|
|
222
|
+
id
|
|
223
|
+
title
|
|
224
|
+
description
|
|
225
|
+
category { id name }
|
|
226
|
+
subcategory { id name }
|
|
227
|
+
skills { name }
|
|
228
|
+
experienceLevel
|
|
229
|
+
duration
|
|
230
|
+
budget { amount currency }
|
|
231
|
+
createdDateTime
|
|
232
|
+
publishedDateTime
|
|
233
|
+
client { totalHires companyName }
|
|
234
|
+
}
|
|
235
|
+
}`;
|
|
236
|
+
return { query, variables: { id: upworkId } };
|
|
237
|
+
}
|
|
238
|
+
export const fetchJobPosting = action({
|
|
239
|
+
args: {
|
|
240
|
+
upworkId: v.string(),
|
|
241
|
+
},
|
|
242
|
+
handler: async (ctx, args) => {
|
|
243
|
+
let tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
244
|
+
if (!tokens) {
|
|
245
|
+
throw new Error("Not connected to Upwork. Complete OAuth authorization first.");
|
|
246
|
+
}
|
|
247
|
+
if (tokens.expiresAt < Date.now()) {
|
|
248
|
+
await ctx.runAction(api.public.refreshAccessToken, {});
|
|
249
|
+
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
250
|
+
if (!tokens) {
|
|
251
|
+
throw new Error("Failed to refresh token.");
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const graphqlUrl = `${BASE_URL}/graphql`;
|
|
255
|
+
const { query, variables } = buildJobPostingQuery(args.upworkId);
|
|
256
|
+
const response = await fetch(graphqlUrl, {
|
|
257
|
+
method: "POST",
|
|
258
|
+
headers: {
|
|
259
|
+
"Content-Type": "application/json",
|
|
260
|
+
Authorization: `Bearer ${tokens.accessToken}`,
|
|
261
|
+
},
|
|
262
|
+
body: JSON.stringify({ query, variables }),
|
|
263
|
+
});
|
|
264
|
+
if (!response.ok) {
|
|
265
|
+
const text = await response.text();
|
|
266
|
+
throw new Error(`Upwork GraphQL request failed (${response.status}): ${text}`);
|
|
267
|
+
}
|
|
268
|
+
const result = await response.json();
|
|
269
|
+
if (result.errors?.length) {
|
|
270
|
+
throw new Error(`Upwork GraphQL errors: ${result.errors.map((e) => e.message).join(", ")}`);
|
|
271
|
+
}
|
|
272
|
+
const node = result.data?.marketplaceJobPosting;
|
|
273
|
+
if (!node)
|
|
274
|
+
return null;
|
|
275
|
+
const budget = node.budget;
|
|
276
|
+
const client = node.client;
|
|
277
|
+
const category = node.category;
|
|
278
|
+
const subcategory = node.subcategory;
|
|
279
|
+
const skills = node.skills ?? [];
|
|
280
|
+
const posting = {
|
|
281
|
+
upworkId: String(node.id),
|
|
282
|
+
title: String(node.title ?? ""),
|
|
283
|
+
description: String(node.description ?? ""),
|
|
284
|
+
category: category?.name ?? undefined,
|
|
285
|
+
subcategory: subcategory?.name ?? undefined,
|
|
286
|
+
skills: skills.map((s) => ({ name: s.name })),
|
|
287
|
+
experienceLevel: String(node.experienceLevel ?? ""),
|
|
288
|
+
duration: node.duration != null ? String(node.duration) : undefined,
|
|
289
|
+
budgetAmount: budget?.amount != null ? String(budget.amount) : undefined,
|
|
290
|
+
budgetCurrency: budget?.currency != null ? String(budget.currency) : undefined,
|
|
291
|
+
createdDateTime: String(node.createdDateTime ?? ""),
|
|
292
|
+
publishedDateTime: String(node.publishedDateTime ?? ""),
|
|
293
|
+
clientTotalHires: client?.totalHires ?? undefined,
|
|
294
|
+
clientCompanyName: client?.companyName ?? undefined,
|
|
295
|
+
};
|
|
296
|
+
await ctx.runMutation(api.private.upsertJobPostings, { postings: [posting] });
|
|
297
|
+
return posting;
|
|
298
|
+
},
|
|
299
|
+
});
|
|
212
300
|
const TWENTY_THREE_HOURS_MS = 23 * 60 * 60 * 1000;
|
|
213
301
|
export const listJobPostings = query({
|
|
214
302
|
args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
declare const _default: import("convex/server").SchemaDefinition<{
|
|
2
2
|
oauthTokens: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
3
3
|
accessToken: string;
|
|
4
|
-
refreshToken: string;
|
|
5
4
|
expiresAt: number;
|
|
5
|
+
refreshToken: string;
|
|
6
6
|
tokenType: string;
|
|
7
7
|
}, {
|
|
8
8
|
accessToken: import("convex/values").VString<string, "required">;
|
|
9
9
|
refreshToken: import("convex/values").VString<string, "required">;
|
|
10
10
|
expiresAt: import("convex/values").VFloat64<number, "required">;
|
|
11
11
|
tokenType: import("convex/values").VString<string, "required">;
|
|
12
|
-
}, "required", "accessToken" | "
|
|
12
|
+
}, "required", "accessToken" | "expiresAt" | "refreshToken" | "tokenType">, {}, {}, {}>;
|
|
13
13
|
jobPostings: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
14
14
|
category?: string | undefined;
|
|
15
15
|
subcategory?: string | undefined;
|
package/package.json
CHANGED
package/src/client/index.ts
CHANGED
|
@@ -1,65 +1,78 @@
|
|
|
1
1
|
import type { ComponentApi } from "../component/_generated/component.js";
|
|
2
2
|
import type { ActionCtx, QueryCtx, JobPosting, SearchResult, AuthStatus } from "./types.js";
|
|
3
|
-
import {
|
|
3
|
+
import { CALLBACK_PATH } from "./types.js";
|
|
4
4
|
import type { HttpRouter } from "convex/server";
|
|
5
5
|
import { httpActionGeneric } from "convex/server";
|
|
6
6
|
|
|
7
|
+
const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
8
|
+
|
|
7
9
|
export type UpworkComponent = ComponentApi;
|
|
8
10
|
|
|
9
11
|
export class Upwork {
|
|
10
12
|
constructor(public component: UpworkComponent) {}
|
|
11
13
|
|
|
12
|
-
getAuthorizationUrl(
|
|
13
|
-
clientId
|
|
14
|
-
siteUrl
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
getAuthorizationUrl(): string {
|
|
15
|
+
const clientId = process.env.UPWORK_CLIENT_ID;
|
|
16
|
+
const siteUrl = process.env.CONVEX_SITE_URL;
|
|
17
|
+
if (!clientId) {
|
|
18
|
+
throw new Error("Missing UPWORK_CLIENT_ID environment variable.");
|
|
19
|
+
}
|
|
20
|
+
if (!siteUrl) {
|
|
21
|
+
throw new Error("Missing CONVEX_SITE_URL environment variable.");
|
|
22
|
+
}
|
|
23
|
+
const redirectUri = `${siteUrl}${CALLBACK_PATH}`;
|
|
19
24
|
const params = new URLSearchParams({
|
|
20
25
|
response_type: "code",
|
|
21
|
-
client_id:
|
|
26
|
+
client_id: clientId,
|
|
22
27
|
redirect_uri: redirectUri,
|
|
23
28
|
});
|
|
24
|
-
return `${
|
|
29
|
+
return `${BASE_URL}/ab/account-security/oauth2/authorize?${params.toString()}`;
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
async exchangeAuthCode(
|
|
28
33
|
ctx: ActionCtx,
|
|
29
|
-
opts: {
|
|
30
|
-
clientId: string;
|
|
31
|
-
clientSecret: string;
|
|
32
|
-
code: string;
|
|
33
|
-
siteUrl: string;
|
|
34
|
-
baseUrl?: string;
|
|
35
|
-
},
|
|
34
|
+
opts: { code: string },
|
|
36
35
|
): Promise<void> {
|
|
37
|
-
const
|
|
36
|
+
const siteUrl = process.env.CONVEX_SITE_URL;
|
|
37
|
+
if (!siteUrl) {
|
|
38
|
+
throw new Error("Missing CONVEX_SITE_URL environment variable.");
|
|
39
|
+
}
|
|
40
|
+
const redirectUri = `${siteUrl}${CALLBACK_PATH}`;
|
|
38
41
|
await ctx.runAction(this.component.public.exchangeAuthCode, {
|
|
39
|
-
clientId: opts.clientId,
|
|
40
|
-
clientSecret: opts.clientSecret,
|
|
41
42
|
code: opts.code,
|
|
42
43
|
redirectUri,
|
|
43
|
-
baseUrl: opts.baseUrl ?? DEFAULT_BASE_URL,
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
async searchJobPostings(
|
|
48
48
|
ctx: ActionCtx,
|
|
49
|
-
opts
|
|
50
|
-
clientId: string;
|
|
51
|
-
clientSecret: string;
|
|
49
|
+
opts?: {
|
|
52
50
|
searchQuery?: string;
|
|
53
51
|
sortField?: string;
|
|
54
|
-
baseUrl?: string;
|
|
55
52
|
},
|
|
56
53
|
): Promise<SearchResult> {
|
|
57
54
|
return await ctx.runAction(this.component.public.searchJobPostings, {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
55
|
+
searchQuery: opts?.searchQuery,
|
|
56
|
+
sortField: opts?.sortField,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async getJobPosting(
|
|
61
|
+
ctx: ActionCtx,
|
|
62
|
+
opts: { upworkId: string },
|
|
63
|
+
): Promise<JobPosting | null> {
|
|
64
|
+
const cached = await ctx.runQuery(this.component.public.getJobPosting, {
|
|
65
|
+
upworkId: opts.upworkId,
|
|
66
|
+
});
|
|
67
|
+
if (cached) return cached;
|
|
68
|
+
|
|
69
|
+
const fetched = await ctx.runAction(this.component.public.fetchJobPosting, {
|
|
70
|
+
upworkId: opts.upworkId,
|
|
71
|
+
});
|
|
72
|
+
if (!fetched) return null;
|
|
73
|
+
|
|
74
|
+
return await ctx.runQuery(this.component.public.getJobPosting, {
|
|
75
|
+
upworkId: opts.upworkId,
|
|
63
76
|
});
|
|
64
77
|
}
|
|
65
78
|
|
|
@@ -80,15 +93,10 @@ export class Upwork {
|
|
|
80
93
|
export function registerRoutes(
|
|
81
94
|
http: HttpRouter,
|
|
82
95
|
component: UpworkComponent,
|
|
83
|
-
opts
|
|
84
|
-
clientId: string;
|
|
85
|
-
clientSecret: string;
|
|
86
|
-
baseUrl?: string;
|
|
96
|
+
opts?: {
|
|
87
97
|
onSuccess?: string;
|
|
88
98
|
},
|
|
89
99
|
) {
|
|
90
|
-
const baseUrl = opts.baseUrl ?? DEFAULT_BASE_URL;
|
|
91
|
-
|
|
92
100
|
http.route({
|
|
93
101
|
path: CALLBACK_PATH,
|
|
94
102
|
method: "GET",
|
|
@@ -104,18 +112,15 @@ export function registerRoutes(
|
|
|
104
112
|
|
|
105
113
|
try {
|
|
106
114
|
await ctx.runAction(component.public.exchangeAuthCode, {
|
|
107
|
-
clientId: opts.clientId,
|
|
108
|
-
clientSecret: opts.clientSecret,
|
|
109
115
|
code,
|
|
110
116
|
redirectUri,
|
|
111
|
-
baseUrl,
|
|
112
117
|
});
|
|
113
118
|
} catch (error) {
|
|
114
119
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
115
120
|
return new Response(`OAuth callback failed: ${message}`, { status: 500 });
|
|
116
121
|
}
|
|
117
122
|
|
|
118
|
-
if (opts
|
|
123
|
+
if (opts?.onSuccess) {
|
|
119
124
|
return new Response(null, {
|
|
120
125
|
status: 302,
|
|
121
126
|
headers: { Location: opts.onSuccess },
|
|
@@ -127,5 +132,5 @@ export function registerRoutes(
|
|
|
127
132
|
});
|
|
128
133
|
}
|
|
129
134
|
|
|
130
|
-
export {
|
|
135
|
+
export { CALLBACK_PATH } from "./types.js";
|
|
131
136
|
export type { JobPosting, SearchResult, AuthStatus } from "./types.js";
|
package/src/client/types.ts
CHANGED
|
@@ -79,17 +79,25 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
79
79
|
exchangeAuthCode: FunctionReference<
|
|
80
80
|
"action",
|
|
81
81
|
"internal",
|
|
82
|
-
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
82
|
+
{ code: string; redirectUri: string },
|
|
83
|
+
any,
|
|
84
|
+
Name
|
|
85
|
+
>;
|
|
86
|
+
fetchJobPosting: FunctionReference<
|
|
87
|
+
"action",
|
|
88
|
+
"internal",
|
|
89
|
+
{ upworkId: string },
|
|
89
90
|
any,
|
|
90
91
|
Name
|
|
91
92
|
>;
|
|
92
93
|
getAuthStatus: FunctionReference<"query", "internal", {}, any, Name>;
|
|
94
|
+
getJobPosting: FunctionReference<
|
|
95
|
+
"query",
|
|
96
|
+
"internal",
|
|
97
|
+
{ upworkId: string },
|
|
98
|
+
any,
|
|
99
|
+
Name
|
|
100
|
+
>;
|
|
93
101
|
listJobPostings: FunctionReference<
|
|
94
102
|
"query",
|
|
95
103
|
"internal",
|
|
@@ -100,20 +108,14 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
100
108
|
refreshAccessToken: FunctionReference<
|
|
101
109
|
"action",
|
|
102
110
|
"internal",
|
|
103
|
-
{
|
|
111
|
+
{},
|
|
104
112
|
any,
|
|
105
113
|
Name
|
|
106
114
|
>;
|
|
107
115
|
searchJobPostings: FunctionReference<
|
|
108
116
|
"action",
|
|
109
117
|
"internal",
|
|
110
|
-
{
|
|
111
|
-
baseUrl: string;
|
|
112
|
-
clientId: string;
|
|
113
|
-
clientSecret: string;
|
|
114
|
-
searchQuery?: string;
|
|
115
|
-
sortField?: string;
|
|
116
|
-
},
|
|
118
|
+
{ searchQuery?: string; sortField?: string },
|
|
117
119
|
any,
|
|
118
120
|
Name
|
|
119
121
|
>;
|