@nativesquare/upwork 0.1.0 → 0.1.1
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/client/index.d.ts +1 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +13 -8
- 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 +0 -3
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/private.d.ts +2 -2
- package/dist/component/public.d.ts +1 -4
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +4 -7
- 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 +14 -12
- package/src/client/types.ts +0 -2
- package/src/component/_generated/component.ts +1 -3
- package/src/component/public.ts +5 -7
package/dist/client/index.d.ts
CHANGED
|
@@ -8,21 +8,18 @@ export declare class Upwork {
|
|
|
8
8
|
getAuthorizationUrl(opts: {
|
|
9
9
|
clientId: string;
|
|
10
10
|
siteUrl: string;
|
|
11
|
-
baseUrl?: string;
|
|
12
11
|
}): string;
|
|
13
12
|
exchangeAuthCode(ctx: ActionCtx, opts: {
|
|
14
13
|
clientId: string;
|
|
15
14
|
clientSecret: string;
|
|
16
15
|
code: string;
|
|
17
16
|
siteUrl: string;
|
|
18
|
-
baseUrl?: string;
|
|
19
17
|
}): Promise<void>;
|
|
20
18
|
searchJobPostings(ctx: ActionCtx, opts: {
|
|
21
19
|
clientId: string;
|
|
22
20
|
clientSecret: string;
|
|
23
21
|
searchQuery?: string;
|
|
24
22
|
sortField?: string;
|
|
25
|
-
baseUrl?: string;
|
|
26
23
|
}): Promise<SearchResult>;
|
|
27
24
|
listJobPostings(ctx: QueryCtx, opts?: {
|
|
28
25
|
limit?: number;
|
|
@@ -32,9 +29,8 @@ export declare class Upwork {
|
|
|
32
29
|
export declare function registerRoutes(http: HttpRouter, component: UpworkComponent, opts: {
|
|
33
30
|
clientId: string;
|
|
34
31
|
clientSecret: string;
|
|
35
|
-
baseUrl?: string;
|
|
36
32
|
onSuccess?: string;
|
|
37
33
|
}): void;
|
|
38
|
-
export {
|
|
34
|
+
export { CALLBACK_PATH } from "./types.js";
|
|
39
35
|
export type { JobPosting, SearchResult, AuthStatus } from "./types.js";
|
|
40
36
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKhD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,qBAAa,MAAM;IACE,SAAS,EAAE,eAAe;gBAA1B,SAAS,EAAE,eAAe;IAE7C,mBAAmB,CAAC,IAAI,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,MAAM;IAUJ,gBAAgB,CACpB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,IAAI,CAAC;IAUV,iBAAiB,CACrB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,YAAY,CAAC;IASlB,eAAe,CACnB,GAAG,EAAE,QAAQ,EACb,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC;IAMlB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAGxD;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,QA+CF;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CALLBACK_PATH } from "./types.js";
|
|
2
2
|
import { httpActionGeneric } from "convex/server";
|
|
3
|
+
const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
3
4
|
export class Upwork {
|
|
4
5
|
component;
|
|
5
6
|
constructor(component) {
|
|
6
7
|
this.component = component;
|
|
7
8
|
}
|
|
8
9
|
getAuthorizationUrl(opts) {
|
|
9
|
-
const base = opts.baseUrl ?? DEFAULT_BASE_URL;
|
|
10
10
|
const redirectUri = `${opts.siteUrl}${CALLBACK_PATH}`;
|
|
11
11
|
const params = new URLSearchParams({
|
|
12
12
|
response_type: "code",
|
|
13
13
|
client_id: opts.clientId,
|
|
14
14
|
redirect_uri: redirectUri,
|
|
15
15
|
});
|
|
16
|
-
return `${
|
|
16
|
+
return `${BASE_URL}/ab/account-security/oauth2/authorize?${params.toString()}`;
|
|
17
17
|
}
|
|
18
18
|
async exchangeAuthCode(ctx, opts) {
|
|
19
19
|
const redirectUri = `${opts.siteUrl}${CALLBACK_PATH}`;
|
|
@@ -22,14 +22,12 @@ export class Upwork {
|
|
|
22
22
|
clientSecret: opts.clientSecret,
|
|
23
23
|
code: opts.code,
|
|
24
24
|
redirectUri,
|
|
25
|
-
baseUrl: opts.baseUrl ?? DEFAULT_BASE_URL,
|
|
26
25
|
});
|
|
27
26
|
}
|
|
28
27
|
async searchJobPostings(ctx, opts) {
|
|
29
28
|
return await ctx.runAction(this.component.public.searchJobPostings, {
|
|
30
29
|
clientId: opts.clientId,
|
|
31
30
|
clientSecret: opts.clientSecret,
|
|
32
|
-
baseUrl: opts.baseUrl ?? DEFAULT_BASE_URL,
|
|
33
31
|
searchQuery: opts.searchQuery,
|
|
34
32
|
sortField: opts.sortField,
|
|
35
33
|
});
|
|
@@ -44,7 +42,15 @@ export class Upwork {
|
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
44
|
export function registerRoutes(http, component, opts) {
|
|
47
|
-
const
|
|
45
|
+
const missing = [];
|
|
46
|
+
if (!opts.clientId)
|
|
47
|
+
missing.push("clientId");
|
|
48
|
+
if (!opts.clientSecret)
|
|
49
|
+
missing.push("clientSecret");
|
|
50
|
+
if (missing.length > 0) {
|
|
51
|
+
throw new Error(`registerRoutes: missing required options: ${missing.join(", ")}. ` +
|
|
52
|
+
`Make sure UPWORK_CLIENT_ID and UPWORK_CLIENT_SECRET environment variables are set.`);
|
|
53
|
+
}
|
|
48
54
|
http.route({
|
|
49
55
|
path: CALLBACK_PATH,
|
|
50
56
|
method: "GET",
|
|
@@ -61,7 +67,6 @@ export function registerRoutes(http, component, opts) {
|
|
|
61
67
|
clientSecret: opts.clientSecret,
|
|
62
68
|
code,
|
|
63
69
|
redirectUri,
|
|
64
|
-
baseUrl,
|
|
65
70
|
});
|
|
66
71
|
}
|
|
67
72
|
catch (error) {
|
|
@@ -78,5 +83,5 @@ export function registerRoutes(http, component, opts) {
|
|
|
78
83
|
}),
|
|
79
84
|
});
|
|
80
85
|
}
|
|
81
|
-
export {
|
|
86
|
+
export { CALLBACK_PATH } from "./types.js";
|
|
82
87
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -29,6 +29,5 @@ export type SearchResult = {
|
|
|
29
29
|
hasNextPage: boolean;
|
|
30
30
|
};
|
|
31
31
|
export type AuthStatus = "connected" | "disconnected" | "expired";
|
|
32
|
-
export declare const DEFAULT_BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
33
32
|
export declare const CALLBACK_PATH = "/upwork/callback";
|
|
34
33
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,kBAAkB,CAAC,gBAAgB,CAAC,EACpC,UAAU,GAAG,aAAa,CAC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,IAAI,CAC1B,gBAAgB,CAAC,gBAAgB,CAAC,EAClC,UAAU,GAAG,aAAa,GAAG,WAAW,CACzC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,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;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC;IACtD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;AAElE,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,kBAAkB,CAAC,gBAAgB,CAAC,EACpC,UAAU,GAAG,aAAa,CAC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,IAAI,CAC1B,gBAAgB,CAAC,gBAAgB,CAAC,EAClC,UAAU,GAAG,aAAa,GAAG,WAAW,CACzC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,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;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC;IACtD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;AAElE,eAAO,MAAM,aAAa,qBAAqB,CAAC"}
|
package/dist/client/types.js
CHANGED
package/dist/client/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC"}
|
|
@@ -57,7 +57,6 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
57
57
|
};
|
|
58
58
|
public: {
|
|
59
59
|
exchangeAuthCode: FunctionReference<"action", "internal", {
|
|
60
|
-
baseUrl: string;
|
|
61
60
|
clientId: string;
|
|
62
61
|
clientSecret: string;
|
|
63
62
|
code: string;
|
|
@@ -68,12 +67,10 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
68
67
|
limit?: number;
|
|
69
68
|
}, any, Name>;
|
|
70
69
|
refreshAccessToken: FunctionReference<"action", "internal", {
|
|
71
|
-
baseUrl: string;
|
|
72
70
|
clientId: string;
|
|
73
71
|
clientSecret: string;
|
|
74
72
|
}, any, Name>;
|
|
75
73
|
searchJobPostings: FunctionReference<"action", "internal", {
|
|
76
|
-
baseUrl: string;
|
|
77
74
|
clientId: string;
|
|
78
75
|
clientSecret: string;
|
|
79
76
|
searchQuery?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IAC3E;IACE,OAAO,EAAE;QACP,SAAS,EAAE,iBAAiB,CAC1B,OAAO,EACP,UAAU,EACV,EAAE,EACF;YACE,aAAa,EAAE,MAAM,CAAC;YACtB,GAAG,EAAE,MAAM,CAAC;YACZ,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC;SACnB,GAAG,IAAI,EACR,IAAI,CACL,CAAC;QACF,WAAW,EAAE,iBAAiB,CAC5B,UAAU,EACV,UAAU,EACV;YACE,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC;SACnB,EACD,IAAI,EACJ,IAAI,CACL,CAAC;QACF,iBAAiB,EAAE,iBAAiB,CAClC,UAAU,EACV,UAAU,EACV;YACE,QAAQ,EAAE,KAAK,CAAC;gBACd,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,cAAc,CAAC,EAAE,MAAM,CAAC;gBACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAC1B,eAAe,EAAE,MAAM,CAAC;gBACxB,WAAW,EAAE,MAAM,CAAC;gBACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,eAAe,EAAE,MAAM,CAAC;gBACxB,iBAAiB,EAAE,MAAM,CAAC;gBAC1B,MAAM,EAAE,KAAK,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC,CAAC;gBAChC,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,KAAK,EAAE,MAAM,CAAC;gBACd,QAAQ,EAAE,MAAM,CAAC;aAClB,CAAC,CAAC;SACJ,EACD,IAAI,EACJ,IAAI,CACL,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,gBAAgB,EAAE,iBAAiB,CACjC,QAAQ,EACR,UAAU,EACV;YACE,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IAC3E;IACE,OAAO,EAAE;QACP,SAAS,EAAE,iBAAiB,CAC1B,OAAO,EACP,UAAU,EACV,EAAE,EACF;YACE,aAAa,EAAE,MAAM,CAAC;YACtB,GAAG,EAAE,MAAM,CAAC;YACZ,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC;SACnB,GAAG,IAAI,EACR,IAAI,CACL,CAAC;QACF,WAAW,EAAE,iBAAiB,CAC5B,UAAU,EACV,UAAU,EACV;YACE,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC;SACnB,EACD,IAAI,EACJ,IAAI,CACL,CAAC;QACF,iBAAiB,EAAE,iBAAiB,CAClC,UAAU,EACV,UAAU,EACV;YACE,QAAQ,EAAE,KAAK,CAAC;gBACd,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,cAAc,CAAC,EAAE,MAAM,CAAC;gBACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAC1B,eAAe,EAAE,MAAM,CAAC;gBACxB,WAAW,EAAE,MAAM,CAAC;gBACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,eAAe,EAAE,MAAM,CAAC;gBACxB,iBAAiB,EAAE,MAAM,CAAC;gBAC1B,MAAM,EAAE,KAAK,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC,CAAC;gBAChC,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,KAAK,EAAE,MAAM,CAAC;gBACd,QAAQ,EAAE,MAAM,CAAC;aAClB,CAAC,CAAC;SACJ,EACD,IAAI,EACJ,IAAI,CACL,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,gBAAgB,EAAE,iBAAiB,CACjC,QAAQ,EACR,UAAU,EACV;YACE,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC;YACrB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;SACrB,EACD,GAAG,EACH,IAAI,CACL,CAAC;QACF,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrE,eAAe,EAAE,iBAAiB,CAChC,OAAO,EACP,UAAU,EACV;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAClB,GAAG,EACH,IAAI,CACL,CAAC;QACF,kBAAkB,EAAE,iBAAiB,CACnC,QAAQ,EACR,UAAU,EACV;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,EAC1C,GAAG,EACH,IAAI,CACL,CAAC;QACF,iBAAiB,EAAE,iBAAiB,CAClC,QAAQ,EACR,UAAU,EACV;YACE,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC;YACrB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,EACD,GAAG,EACH,IAAI,CACL,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export declare const storeTokens: import("convex/server").RegisteredMutation<"public", {
|
|
2
2
|
accessToken: string;
|
|
3
|
-
refreshToken: string;
|
|
4
3
|
expiresAt: number;
|
|
4
|
+
refreshToken: string;
|
|
5
5
|
tokenType: string;
|
|
6
6
|
}, Promise<null>>;
|
|
7
7
|
export declare const getTokens: import("convex/server").RegisteredQuery<"public", {}, Promise<{
|
|
8
8
|
_id: import("convex/values").GenericId<"oauthTokens">;
|
|
9
9
|
_creationTime: number;
|
|
10
10
|
accessToken: string;
|
|
11
|
-
refreshToken: string;
|
|
12
11
|
expiresAt: number;
|
|
12
|
+
refreshToken: string;
|
|
13
13
|
tokenType: string;
|
|
14
14
|
} | null>>;
|
|
15
15
|
export declare const upsertJobPostings: import("convex/server").RegisteredMutation<"public", {
|
|
@@ -24,12 +24,10 @@ type SearchResult = {
|
|
|
24
24
|
export declare const refreshAccessToken: import("convex/server").RegisteredAction<"public", {
|
|
25
25
|
clientId: string;
|
|
26
26
|
clientSecret: string;
|
|
27
|
-
baseUrl: string;
|
|
28
27
|
}, Promise<void>>;
|
|
29
28
|
export declare const exchangeAuthCode: import("convex/server").RegisteredAction<"public", {
|
|
30
29
|
clientId: string;
|
|
31
30
|
clientSecret: string;
|
|
32
|
-
baseUrl: string;
|
|
33
31
|
code: string;
|
|
34
32
|
redirectUri: string;
|
|
35
33
|
}, Promise<void>>;
|
|
@@ -38,7 +36,6 @@ export declare const searchJobPostings: import("convex/server").RegisteredAction
|
|
|
38
36
|
sortField?: string | undefined;
|
|
39
37
|
clientId: string;
|
|
40
38
|
clientSecret: string;
|
|
41
|
-
baseUrl: string;
|
|
42
39
|
}, Promise<SearchResult>>;
|
|
43
40
|
export declare const listJobPostings: import("convex/server").RegisteredQuery<"public", {
|
|
44
41
|
limit?: number | undefined;
|
|
@@ -63,6 +60,6 @@ export declare const listJobPostings: import("convex/server").RegisteredQuery<"p
|
|
|
63
60
|
publishedDateTime: string;
|
|
64
61
|
cachedAt: number;
|
|
65
62
|
}[]>>;
|
|
66
|
-
export declare const getAuthStatus: import("convex/server").RegisteredQuery<"public", {}, Promise<"
|
|
63
|
+
export declare const getAuthStatus: import("convex/server").RegisteredQuery<"public", {}, Promise<"connected" | "disconnected" | "expired">>;
|
|
67
64
|
export {};
|
|
68
65
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -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":"AA0DA,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;;;iBA0C7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBA+C3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;yBA0G5B,CAAC;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;KAc1B,CAAC;AAEH,eAAO,MAAM,aAAa,0GAYxB,CAAC"}
|
package/dist/component/public.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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";
|
|
4
5
|
function buildJobPostingsQuery(opts) {
|
|
5
6
|
const filterArg = opts.searchQuery
|
|
6
7
|
? `marketPlaceJobFilter: $marketPlaceJobFilter,`
|
|
@@ -48,14 +49,13 @@ export const refreshAccessToken = action({
|
|
|
48
49
|
args: {
|
|
49
50
|
clientId: v.string(),
|
|
50
51
|
clientSecret: v.string(),
|
|
51
|
-
baseUrl: v.string(),
|
|
52
52
|
},
|
|
53
53
|
handler: async (ctx, args) => {
|
|
54
54
|
const tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
55
55
|
if (!tokens) {
|
|
56
56
|
throw new Error("No stored tokens found. Complete OAuth authorization first.");
|
|
57
57
|
}
|
|
58
|
-
const tokenUrl = `${
|
|
58
|
+
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
59
59
|
const response = await fetch(tokenUrl, {
|
|
60
60
|
method: "POST",
|
|
61
61
|
headers: {
|
|
@@ -89,10 +89,9 @@ export const exchangeAuthCode = action({
|
|
|
89
89
|
clientSecret: v.string(),
|
|
90
90
|
code: v.string(),
|
|
91
91
|
redirectUri: v.string(),
|
|
92
|
-
baseUrl: v.string(),
|
|
93
92
|
},
|
|
94
93
|
handler: async (ctx, args) => {
|
|
95
|
-
const tokenUrl = `${
|
|
94
|
+
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
96
95
|
const body = new URLSearchParams({
|
|
97
96
|
grant_type: "authorization_code",
|
|
98
97
|
client_id: args.clientId,
|
|
@@ -130,7 +129,6 @@ export const searchJobPostings = action({
|
|
|
130
129
|
args: {
|
|
131
130
|
clientId: v.string(),
|
|
132
131
|
clientSecret: v.string(),
|
|
133
|
-
baseUrl: v.string(),
|
|
134
132
|
searchQuery: v.optional(v.string()),
|
|
135
133
|
sortField: v.optional(v.string()),
|
|
136
134
|
},
|
|
@@ -143,14 +141,13 @@ export const searchJobPostings = action({
|
|
|
143
141
|
await ctx.runAction(api.public.refreshAccessToken, {
|
|
144
142
|
clientId: args.clientId,
|
|
145
143
|
clientSecret: args.clientSecret,
|
|
146
|
-
baseUrl: args.baseUrl,
|
|
147
144
|
});
|
|
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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/component/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,SAAS,qBAAqB,CAAC,IAG9B;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW;QAChC,CAAC,CAAC,8CAA8C;QAChD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC;IAE9C,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW;QACnC,CAAC,CAAC,6DAA6D;QAC/D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,SAAS,CAAC,oBAAoB,GAAG;YAC/B,aAAa,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;SAClD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACR,YAAY;;MAEd,SAAS;;+BAEgB,SAAS;;;;;;;;;;;;;;;;;;;;;EAqBtC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAyBD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
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,9 +1,11 @@
|
|
|
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 {
|
|
@@ -12,16 +14,14 @@ export class Upwork {
|
|
|
12
14
|
getAuthorizationUrl(opts: {
|
|
13
15
|
clientId: string;
|
|
14
16
|
siteUrl: string;
|
|
15
|
-
baseUrl?: string;
|
|
16
17
|
}): string {
|
|
17
|
-
const base = opts.baseUrl ?? DEFAULT_BASE_URL;
|
|
18
18
|
const redirectUri = `${opts.siteUrl}${CALLBACK_PATH}`;
|
|
19
19
|
const params = new URLSearchParams({
|
|
20
20
|
response_type: "code",
|
|
21
21
|
client_id: opts.clientId,
|
|
22
22
|
redirect_uri: redirectUri,
|
|
23
23
|
});
|
|
24
|
-
return `${
|
|
24
|
+
return `${BASE_URL}/ab/account-security/oauth2/authorize?${params.toString()}`;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
async exchangeAuthCode(
|
|
@@ -31,7 +31,6 @@ export class Upwork {
|
|
|
31
31
|
clientSecret: string;
|
|
32
32
|
code: string;
|
|
33
33
|
siteUrl: string;
|
|
34
|
-
baseUrl?: string;
|
|
35
34
|
},
|
|
36
35
|
): Promise<void> {
|
|
37
36
|
const redirectUri = `${opts.siteUrl}${CALLBACK_PATH}`;
|
|
@@ -40,7 +39,6 @@ export class Upwork {
|
|
|
40
39
|
clientSecret: opts.clientSecret,
|
|
41
40
|
code: opts.code,
|
|
42
41
|
redirectUri,
|
|
43
|
-
baseUrl: opts.baseUrl ?? DEFAULT_BASE_URL,
|
|
44
42
|
});
|
|
45
43
|
}
|
|
46
44
|
|
|
@@ -51,13 +49,11 @@ export class Upwork {
|
|
|
51
49
|
clientSecret: string;
|
|
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
55
|
clientId: opts.clientId,
|
|
59
56
|
clientSecret: opts.clientSecret,
|
|
60
|
-
baseUrl: opts.baseUrl ?? DEFAULT_BASE_URL,
|
|
61
57
|
searchQuery: opts.searchQuery,
|
|
62
58
|
sortField: opts.sortField,
|
|
63
59
|
});
|
|
@@ -83,11 +79,18 @@ export function registerRoutes(
|
|
|
83
79
|
opts: {
|
|
84
80
|
clientId: string;
|
|
85
81
|
clientSecret: string;
|
|
86
|
-
baseUrl?: string;
|
|
87
82
|
onSuccess?: string;
|
|
88
83
|
},
|
|
89
84
|
) {
|
|
90
|
-
const
|
|
85
|
+
const missing = [];
|
|
86
|
+
if (!opts.clientId) missing.push("clientId");
|
|
87
|
+
if (!opts.clientSecret) missing.push("clientSecret");
|
|
88
|
+
if (missing.length > 0) {
|
|
89
|
+
throw new Error(
|
|
90
|
+
`registerRoutes: missing required options: ${missing.join(", ")}. ` +
|
|
91
|
+
`Make sure UPWORK_CLIENT_ID and UPWORK_CLIENT_SECRET environment variables are set.`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
91
94
|
|
|
92
95
|
http.route({
|
|
93
96
|
path: CALLBACK_PATH,
|
|
@@ -108,7 +111,6 @@ export function registerRoutes(
|
|
|
108
111
|
clientSecret: opts.clientSecret,
|
|
109
112
|
code,
|
|
110
113
|
redirectUri,
|
|
111
|
-
baseUrl,
|
|
112
114
|
});
|
|
113
115
|
} catch (error) {
|
|
114
116
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
@@ -127,5 +129,5 @@ export function registerRoutes(
|
|
|
127
129
|
});
|
|
128
130
|
}
|
|
129
131
|
|
|
130
|
-
export {
|
|
132
|
+
export { CALLBACK_PATH } from "./types.js";
|
|
131
133
|
export type { JobPosting, SearchResult, AuthStatus } from "./types.js";
|
package/src/client/types.ts
CHANGED
|
@@ -80,7 +80,6 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
80
80
|
"action",
|
|
81
81
|
"internal",
|
|
82
82
|
{
|
|
83
|
-
baseUrl: string;
|
|
84
83
|
clientId: string;
|
|
85
84
|
clientSecret: string;
|
|
86
85
|
code: string;
|
|
@@ -100,7 +99,7 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
100
99
|
refreshAccessToken: FunctionReference<
|
|
101
100
|
"action",
|
|
102
101
|
"internal",
|
|
103
|
-
{
|
|
102
|
+
{ clientId: string; clientSecret: string },
|
|
104
103
|
any,
|
|
105
104
|
Name
|
|
106
105
|
>;
|
|
@@ -108,7 +107,6 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
108
107
|
"action",
|
|
109
108
|
"internal",
|
|
110
109
|
{
|
|
111
|
-
baseUrl: string;
|
|
112
110
|
clientId: string;
|
|
113
111
|
clientSecret: string;
|
|
114
112
|
searchQuery?: string;
|
package/src/component/public.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { query, action } from "./_generated/server.js";
|
|
|
2
2
|
import { api } from "./_generated/api.js";
|
|
3
3
|
import { v } from "convex/values";
|
|
4
4
|
|
|
5
|
+
const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
6
|
+
|
|
5
7
|
function buildJobPostingsQuery(opts: {
|
|
6
8
|
searchQuery?: string;
|
|
7
9
|
sortField?: string;
|
|
@@ -81,7 +83,6 @@ export const refreshAccessToken = action({
|
|
|
81
83
|
args: {
|
|
82
84
|
clientId: v.string(),
|
|
83
85
|
clientSecret: v.string(),
|
|
84
|
-
baseUrl: v.string(),
|
|
85
86
|
},
|
|
86
87
|
handler: async (ctx, args) => {
|
|
87
88
|
const tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
@@ -89,7 +90,7 @@ export const refreshAccessToken = action({
|
|
|
89
90
|
throw new Error("No stored tokens found. Complete OAuth authorization first.");
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
const tokenUrl = `${
|
|
93
|
+
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
93
94
|
|
|
94
95
|
const response = await fetch(tokenUrl, {
|
|
95
96
|
method: "POST",
|
|
@@ -128,10 +129,9 @@ export const exchangeAuthCode = action({
|
|
|
128
129
|
clientSecret: v.string(),
|
|
129
130
|
code: v.string(),
|
|
130
131
|
redirectUri: v.string(),
|
|
131
|
-
baseUrl: v.string(),
|
|
132
132
|
},
|
|
133
133
|
handler: async (ctx, args): Promise<void> => {
|
|
134
|
-
const tokenUrl = `${
|
|
134
|
+
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
135
135
|
|
|
136
136
|
const body = new URLSearchParams({
|
|
137
137
|
grant_type: "authorization_code",
|
|
@@ -176,7 +176,6 @@ export const searchJobPostings = action({
|
|
|
176
176
|
args: {
|
|
177
177
|
clientId: v.string(),
|
|
178
178
|
clientSecret: v.string(),
|
|
179
|
-
baseUrl: v.string(),
|
|
180
179
|
searchQuery: v.optional(v.string()),
|
|
181
180
|
sortField: v.optional(v.string()),
|
|
182
181
|
},
|
|
@@ -190,7 +189,6 @@ export const searchJobPostings = action({
|
|
|
190
189
|
await ctx.runAction(api.public.refreshAccessToken, {
|
|
191
190
|
clientId: args.clientId,
|
|
192
191
|
clientSecret: args.clientSecret,
|
|
193
|
-
baseUrl: args.baseUrl,
|
|
194
192
|
});
|
|
195
193
|
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
196
194
|
if (!tokens) {
|
|
@@ -198,7 +196,7 @@ export const searchJobPostings = action({
|
|
|
198
196
|
}
|
|
199
197
|
}
|
|
200
198
|
|
|
201
|
-
const graphqlUrl = `${
|
|
199
|
+
const graphqlUrl = `${BASE_URL}/graphql`;
|
|
202
200
|
|
|
203
201
|
const { query, variables } = buildJobPostingsQuery({
|
|
204
202
|
searchQuery: args.searchQuery,
|