@nativesquare/upwork 0.2.0 → 0.3.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/dist/client/index.d.ts +12 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +22 -15
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +10 -1
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/public.d.ts +10 -1
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +24 -19
- package/dist/component/public.js.map +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +39 -15
- package/src/component/_generated/component.ts +14 -4
- package/src/component/public.ts +24 -22
package/dist/client/index.d.ts
CHANGED
|
@@ -4,7 +4,12 @@ import type { HttpRouter } from "convex/server";
|
|
|
4
4
|
export type UpworkComponent = ComponentApi;
|
|
5
5
|
export declare class Upwork {
|
|
6
6
|
component: UpworkComponent;
|
|
7
|
-
|
|
7
|
+
private _clientId;
|
|
8
|
+
private _clientSecret;
|
|
9
|
+
constructor(component: UpworkComponent, options?: {
|
|
10
|
+
UPWORK_CLIENT_ID?: string;
|
|
11
|
+
UPWORK_CLIENT_SECRET?: string;
|
|
12
|
+
});
|
|
8
13
|
getAuthorizationUrl(): string;
|
|
9
14
|
exchangeAuthCode(ctx: ActionCtx, opts: {
|
|
10
15
|
code: string;
|
|
@@ -13,7 +18,10 @@ export declare class Upwork {
|
|
|
13
18
|
searchQuery?: string;
|
|
14
19
|
sortField?: string;
|
|
15
20
|
}): Promise<SearchResult>;
|
|
16
|
-
getJobPosting(ctx:
|
|
21
|
+
getJobPosting(ctx: QueryCtx, opts: {
|
|
22
|
+
upworkId: string;
|
|
23
|
+
}): Promise<JobPosting | null>;
|
|
24
|
+
fetchJobPosting(ctx: ActionCtx, opts: {
|
|
17
25
|
upworkId: string;
|
|
18
26
|
}): Promise<JobPosting | null>;
|
|
19
27
|
listJobPostings(ctx: QueryCtx, opts?: {
|
|
@@ -22,6 +30,8 @@ export declare class Upwork {
|
|
|
22
30
|
getAuthStatus(ctx: QueryCtx): Promise<AuthStatus>;
|
|
23
31
|
}
|
|
24
32
|
export declare function registerRoutes(http: HttpRouter, component: UpworkComponent, opts?: {
|
|
33
|
+
UPWORK_CLIENT_ID?: string;
|
|
34
|
+
UPWORK_CLIENT_SECRET?: string;
|
|
25
35
|
onSuccess?: string;
|
|
26
36
|
}): void;
|
|
27
37
|
export { CALLBACK_PATH } from "./types.js";
|
|
@@ -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;AAKhD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,qBAAa,MAAM;
|
|
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;IAKR,SAAS,EAAE,eAAe;IAJnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;gBAGrB,SAAS,EAAE,eAAe,EACjC,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B;IAQH,mBAAmB,IAAI,MAAM;IAcvB,gBAAgB,CACpB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IAcV,iBAAiB,CACrB,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,YAAY,CAAC;IASlB,aAAa,CACjB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACzB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMvB,eAAe,CACnB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACzB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQvB,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,CAAC,EAAE;IACL,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,QA0CF;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
|
@@ -3,22 +3,24 @@ import { httpActionGeneric } from "convex/server";
|
|
|
3
3
|
const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
4
4
|
export class Upwork {
|
|
5
5
|
component;
|
|
6
|
-
|
|
6
|
+
_clientId;
|
|
7
|
+
_clientSecret;
|
|
8
|
+
constructor(component, options) {
|
|
7
9
|
this.component = component;
|
|
10
|
+
this._clientId =
|
|
11
|
+
options?.UPWORK_CLIENT_ID ?? process.env.UPWORK_CLIENT_ID;
|
|
12
|
+
this._clientSecret =
|
|
13
|
+
options?.UPWORK_CLIENT_SECRET ?? process.env.UPWORK_CLIENT_SECRET;
|
|
8
14
|
}
|
|
9
15
|
getAuthorizationUrl() {
|
|
10
|
-
const clientId = process.env.UPWORK_CLIENT_ID;
|
|
11
16
|
const siteUrl = process.env.CONVEX_SITE_URL;
|
|
12
|
-
if (!clientId) {
|
|
13
|
-
throw new Error("Missing UPWORK_CLIENT_ID environment variable.");
|
|
14
|
-
}
|
|
15
17
|
if (!siteUrl) {
|
|
16
18
|
throw new Error("Missing CONVEX_SITE_URL environment variable.");
|
|
17
19
|
}
|
|
18
20
|
const redirectUri = `${siteUrl}${CALLBACK_PATH}`;
|
|
19
21
|
const params = new URLSearchParams({
|
|
20
22
|
response_type: "code",
|
|
21
|
-
client_id:
|
|
23
|
+
client_id: this._clientId,
|
|
22
24
|
redirect_uri: redirectUri,
|
|
23
25
|
});
|
|
24
26
|
return `${BASE_URL}/ab/account-security/oauth2/authorize?${params.toString()}`;
|
|
@@ -30,28 +32,29 @@ export class Upwork {
|
|
|
30
32
|
}
|
|
31
33
|
const redirectUri = `${siteUrl}${CALLBACK_PATH}`;
|
|
32
34
|
await ctx.runAction(this.component.public.exchangeAuthCode, {
|
|
35
|
+
clientId: this._clientId,
|
|
36
|
+
clientSecret: this._clientSecret,
|
|
33
37
|
code: opts.code,
|
|
34
38
|
redirectUri,
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
async searchJobPostings(ctx, opts) {
|
|
38
42
|
return await ctx.runAction(this.component.public.searchJobPostings, {
|
|
43
|
+
clientId: this._clientId,
|
|
44
|
+
clientSecret: this._clientSecret,
|
|
39
45
|
searchQuery: opts?.searchQuery,
|
|
40
46
|
sortField: opts?.sortField,
|
|
41
47
|
});
|
|
42
48
|
}
|
|
43
49
|
async getJobPosting(ctx, opts) {
|
|
44
|
-
|
|
45
|
-
upworkId: opts.upworkId,
|
|
46
|
-
});
|
|
47
|
-
if (cached)
|
|
48
|
-
return cached;
|
|
49
|
-
const fetched = await ctx.runAction(this.component.public.fetchJobPosting, {
|
|
50
|
+
return await ctx.runQuery(this.component.public.getJobPosting, {
|
|
50
51
|
upworkId: opts.upworkId,
|
|
51
52
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return await ctx.
|
|
53
|
+
}
|
|
54
|
+
async fetchJobPosting(ctx, opts) {
|
|
55
|
+
return await ctx.runAction(this.component.public.fetchJobPosting, {
|
|
56
|
+
clientId: this._clientId,
|
|
57
|
+
clientSecret: this._clientSecret,
|
|
55
58
|
upworkId: opts.upworkId,
|
|
56
59
|
});
|
|
57
60
|
}
|
|
@@ -65,6 +68,8 @@ export class Upwork {
|
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
70
|
export function registerRoutes(http, component, opts) {
|
|
71
|
+
const clientId = opts?.UPWORK_CLIENT_ID ?? process.env.UPWORK_CLIENT_ID;
|
|
72
|
+
const clientSecret = opts?.UPWORK_CLIENT_SECRET ?? process.env.UPWORK_CLIENT_SECRET;
|
|
68
73
|
http.route({
|
|
69
74
|
path: CALLBACK_PATH,
|
|
70
75
|
method: "GET",
|
|
@@ -77,6 +82,8 @@ export function registerRoutes(http, component, opts) {
|
|
|
77
82
|
const redirectUri = `${url.origin}${url.pathname}`;
|
|
78
83
|
try {
|
|
79
84
|
await ctx.runAction(component.public.exchangeAuthCode, {
|
|
85
|
+
clientId,
|
|
86
|
+
clientSecret,
|
|
80
87
|
code,
|
|
81
88
|
redirectUri,
|
|
82
89
|
});
|
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,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,QAAQ,GAAG,yCAAyC,CAAC;AAI3D,MAAM,OAAO,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,10 +57,14 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
57
57
|
};
|
|
58
58
|
public: {
|
|
59
59
|
exchangeAuthCode: FunctionReference<"action", "internal", {
|
|
60
|
+
clientId: string;
|
|
61
|
+
clientSecret: string;
|
|
60
62
|
code: string;
|
|
61
63
|
redirectUri: string;
|
|
62
64
|
}, any, Name>;
|
|
63
65
|
fetchJobPosting: FunctionReference<"action", "internal", {
|
|
66
|
+
clientId: string;
|
|
67
|
+
clientSecret: string;
|
|
64
68
|
upworkId: string;
|
|
65
69
|
}, any, Name>;
|
|
66
70
|
getAuthStatus: FunctionReference<"query", "internal", {}, any, Name>;
|
|
@@ -70,8 +74,13 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
70
74
|
listJobPostings: FunctionReference<"query", "internal", {
|
|
71
75
|
limit?: number;
|
|
72
76
|
}, any, Name>;
|
|
73
|
-
refreshAccessToken: FunctionReference<"action", "internal", {
|
|
77
|
+
refreshAccessToken: FunctionReference<"action", "internal", {
|
|
78
|
+
clientId: string;
|
|
79
|
+
clientSecret: string;
|
|
80
|
+
}, any, Name>;
|
|
74
81
|
searchJobPostings: FunctionReference<"action", "internal", {
|
|
82
|
+
clientId: string;
|
|
83
|
+
clientSecret: string;
|
|
75
84
|
searchQuery?: string;
|
|
76
85
|
sortField?: string;
|
|
77
86
|
}, any, Name>;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,14 +21,21 @@ type SearchResult = {
|
|
|
21
21
|
postings: JobPostingRow[];
|
|
22
22
|
hasNextPage: boolean;
|
|
23
23
|
};
|
|
24
|
-
export declare const refreshAccessToken: import("convex/server").RegisteredAction<"public", {
|
|
24
|
+
export declare const refreshAccessToken: import("convex/server").RegisteredAction<"public", {
|
|
25
|
+
clientId: string;
|
|
26
|
+
clientSecret: string;
|
|
27
|
+
}, Promise<void>>;
|
|
25
28
|
export declare const exchangeAuthCode: import("convex/server").RegisteredAction<"public", {
|
|
29
|
+
clientId: string;
|
|
30
|
+
clientSecret: string;
|
|
26
31
|
code: string;
|
|
27
32
|
redirectUri: string;
|
|
28
33
|
}, Promise<void>>;
|
|
29
34
|
export declare const searchJobPostings: import("convex/server").RegisteredAction<"public", {
|
|
30
35
|
searchQuery?: string | undefined;
|
|
31
36
|
sortField?: string | undefined;
|
|
37
|
+
clientId: string;
|
|
38
|
+
clientSecret: string;
|
|
32
39
|
}, Promise<SearchResult>>;
|
|
33
40
|
export declare const getJobPosting: import("convex/server").RegisteredQuery<"public", {
|
|
34
41
|
upworkId: string;
|
|
@@ -54,6 +61,8 @@ export declare const getJobPosting: import("convex/server").RegisteredQuery<"pub
|
|
|
54
61
|
cachedAt: number;
|
|
55
62
|
} | null>>;
|
|
56
63
|
export declare const fetchJobPosting: import("convex/server").RegisteredAction<"public", {
|
|
64
|
+
clientId: string;
|
|
65
|
+
clientSecret: string;
|
|
57
66
|
upworkId: string;
|
|
58
67
|
}, Promise<JobPostingRow | null>>;
|
|
59
68
|
export declare const listJobPostings: import("convex/server").RegisteredQuery<"public", {
|
|
@@ -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;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;UAUxB,CAAC;AA0BH,eAAO,MAAM,eAAe;;;;iCAqF1B,CAAC;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;KAc1B,CAAC;AAEH,eAAO,MAAM,aAAa,0GAYxB,CAAC"}
|
package/dist/component/public.js
CHANGED
|
@@ -2,14 +2,6 @@ import { query, action } from "./_generated/server.js";
|
|
|
2
2
|
import { api } from "./_generated/api.js";
|
|
3
3
|
import { v } from "convex/values";
|
|
4
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
|
-
}
|
|
13
5
|
function buildJobPostingsQuery(opts) {
|
|
14
6
|
const filterArg = opts.searchQuery
|
|
15
7
|
? `marketPlaceJobFilter: $marketPlaceJobFilter,`
|
|
@@ -54,9 +46,11 @@ query ${variableDefs} {
|
|
|
54
46
|
return { query, variables };
|
|
55
47
|
}
|
|
56
48
|
export const refreshAccessToken = action({
|
|
57
|
-
args: {
|
|
58
|
-
|
|
59
|
-
|
|
49
|
+
args: {
|
|
50
|
+
clientId: v.string(),
|
|
51
|
+
clientSecret: v.string(),
|
|
52
|
+
},
|
|
53
|
+
handler: async (ctx, args) => {
|
|
60
54
|
const tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
61
55
|
if (!tokens) {
|
|
62
56
|
throw new Error("No stored tokens found. Complete OAuth authorization first.");
|
|
@@ -70,8 +64,8 @@ export const refreshAccessToken = action({
|
|
|
70
64
|
},
|
|
71
65
|
body: new URLSearchParams({
|
|
72
66
|
grant_type: "refresh_token",
|
|
73
|
-
client_id: clientId,
|
|
74
|
-
client_secret: clientSecret,
|
|
67
|
+
client_id: args.clientId,
|
|
68
|
+
client_secret: args.clientSecret,
|
|
75
69
|
refresh_token: tokens.refreshToken,
|
|
76
70
|
}).toString(),
|
|
77
71
|
});
|
|
@@ -91,22 +85,23 @@ export const refreshAccessToken = action({
|
|
|
91
85
|
});
|
|
92
86
|
export const exchangeAuthCode = action({
|
|
93
87
|
args: {
|
|
88
|
+
clientId: v.string(),
|
|
89
|
+
clientSecret: v.string(),
|
|
94
90
|
code: v.string(),
|
|
95
91
|
redirectUri: v.string(),
|
|
96
92
|
},
|
|
97
93
|
handler: async (ctx, args) => {
|
|
98
|
-
const { clientId, clientSecret } = getCredentials();
|
|
99
94
|
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
100
95
|
const body = new URLSearchParams({
|
|
101
96
|
grant_type: "authorization_code",
|
|
102
|
-
client_id: clientId,
|
|
103
|
-
client_secret: clientSecret,
|
|
97
|
+
client_id: args.clientId,
|
|
98
|
+
client_secret: args.clientSecret,
|
|
104
99
|
code: args.code,
|
|
105
100
|
redirect_uri: args.redirectUri,
|
|
106
101
|
}).toString();
|
|
107
102
|
console.log("[exchangeAuthCode] POST", tokenUrl);
|
|
108
103
|
console.log("[exchangeAuthCode] redirect_uri:", args.redirectUri);
|
|
109
|
-
console.log("[exchangeAuthCode] client_id:", clientId);
|
|
104
|
+
console.log("[exchangeAuthCode] client_id:", args.clientId);
|
|
110
105
|
console.log("[exchangeAuthCode] code:", args.code);
|
|
111
106
|
const response = await fetch(tokenUrl, {
|
|
112
107
|
method: "POST",
|
|
@@ -132,6 +127,8 @@ export const exchangeAuthCode = action({
|
|
|
132
127
|
});
|
|
133
128
|
export const searchJobPostings = action({
|
|
134
129
|
args: {
|
|
130
|
+
clientId: v.string(),
|
|
131
|
+
clientSecret: v.string(),
|
|
135
132
|
searchQuery: v.optional(v.string()),
|
|
136
133
|
sortField: v.optional(v.string()),
|
|
137
134
|
},
|
|
@@ -141,7 +138,10 @@ export const searchJobPostings = action({
|
|
|
141
138
|
throw new Error("Not connected to Upwork. Complete OAuth authorization first.");
|
|
142
139
|
}
|
|
143
140
|
if (tokens.expiresAt < Date.now()) {
|
|
144
|
-
await ctx.runAction(api.public.refreshAccessToken, {
|
|
141
|
+
await ctx.runAction(api.public.refreshAccessToken, {
|
|
142
|
+
clientId: args.clientId,
|
|
143
|
+
clientSecret: args.clientSecret,
|
|
144
|
+
});
|
|
145
145
|
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
146
146
|
if (!tokens) {
|
|
147
147
|
throw new Error("Failed to refresh token.");
|
|
@@ -237,6 +237,8 @@ query($id: ID!) {
|
|
|
237
237
|
}
|
|
238
238
|
export const fetchJobPosting = action({
|
|
239
239
|
args: {
|
|
240
|
+
clientId: v.string(),
|
|
241
|
+
clientSecret: v.string(),
|
|
240
242
|
upworkId: v.string(),
|
|
241
243
|
},
|
|
242
244
|
handler: async (ctx, args) => {
|
|
@@ -245,7 +247,10 @@ export const fetchJobPosting = action({
|
|
|
245
247
|
throw new Error("Not connected to Upwork. Complete OAuth authorization first.");
|
|
246
248
|
}
|
|
247
249
|
if (tokens.expiresAt < Date.now()) {
|
|
248
|
-
await ctx.runAction(api.public.refreshAccessToken, {
|
|
250
|
+
await ctx.runAction(api.public.refreshAccessToken, {
|
|
251
|
+
clientId: args.clientId,
|
|
252
|
+
clientSecret: args.clientSecret,
|
|
253
|
+
});
|
|
249
254
|
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
250
255
|
if (!tokens) {
|
|
251
256
|
throw new Error("Failed to refresh token.");
|
|
@@ -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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"}
|
package/package.json
CHANGED
package/src/client/index.ts
CHANGED
|
@@ -9,21 +9,31 @@ const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
|
9
9
|
export type UpworkComponent = ComponentApi;
|
|
10
10
|
|
|
11
11
|
export class Upwork {
|
|
12
|
-
|
|
12
|
+
private _clientId: string;
|
|
13
|
+
private _clientSecret: string;
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
public component: UpworkComponent,
|
|
17
|
+
options?: {
|
|
18
|
+
UPWORK_CLIENT_ID?: string;
|
|
19
|
+
UPWORK_CLIENT_SECRET?: string;
|
|
20
|
+
},
|
|
21
|
+
) {
|
|
22
|
+
this._clientId =
|
|
23
|
+
options?.UPWORK_CLIENT_ID ?? process.env.UPWORK_CLIENT_ID!;
|
|
24
|
+
this._clientSecret =
|
|
25
|
+
options?.UPWORK_CLIENT_SECRET ?? process.env.UPWORK_CLIENT_SECRET!;
|
|
26
|
+
}
|
|
13
27
|
|
|
14
28
|
getAuthorizationUrl(): string {
|
|
15
|
-
const clientId = process.env.UPWORK_CLIENT_ID;
|
|
16
29
|
const siteUrl = process.env.CONVEX_SITE_URL;
|
|
17
|
-
if (!clientId) {
|
|
18
|
-
throw new Error("Missing UPWORK_CLIENT_ID environment variable.");
|
|
19
|
-
}
|
|
20
30
|
if (!siteUrl) {
|
|
21
31
|
throw new Error("Missing CONVEX_SITE_URL environment variable.");
|
|
22
32
|
}
|
|
23
33
|
const redirectUri = `${siteUrl}${CALLBACK_PATH}`;
|
|
24
34
|
const params = new URLSearchParams({
|
|
25
35
|
response_type: "code",
|
|
26
|
-
client_id:
|
|
36
|
+
client_id: this._clientId,
|
|
27
37
|
redirect_uri: redirectUri,
|
|
28
38
|
});
|
|
29
39
|
return `${BASE_URL}/ab/account-security/oauth2/authorize?${params.toString()}`;
|
|
@@ -39,6 +49,8 @@ export class Upwork {
|
|
|
39
49
|
}
|
|
40
50
|
const redirectUri = `${siteUrl}${CALLBACK_PATH}`;
|
|
41
51
|
await ctx.runAction(this.component.public.exchangeAuthCode, {
|
|
52
|
+
clientId: this._clientId,
|
|
53
|
+
clientSecret: this._clientSecret,
|
|
42
54
|
code: opts.code,
|
|
43
55
|
redirectUri,
|
|
44
56
|
});
|
|
@@ -52,26 +64,29 @@ export class Upwork {
|
|
|
52
64
|
},
|
|
53
65
|
): Promise<SearchResult> {
|
|
54
66
|
return await ctx.runAction(this.component.public.searchJobPostings, {
|
|
67
|
+
clientId: this._clientId,
|
|
68
|
+
clientSecret: this._clientSecret,
|
|
55
69
|
searchQuery: opts?.searchQuery,
|
|
56
70
|
sortField: opts?.sortField,
|
|
57
71
|
});
|
|
58
72
|
}
|
|
59
73
|
|
|
60
74
|
async getJobPosting(
|
|
61
|
-
ctx:
|
|
75
|
+
ctx: QueryCtx,
|
|
62
76
|
opts: { upworkId: string },
|
|
63
77
|
): Promise<JobPosting | null> {
|
|
64
|
-
|
|
65
|
-
upworkId: opts.upworkId,
|
|
66
|
-
});
|
|
67
|
-
if (cached) return cached;
|
|
68
|
-
|
|
69
|
-
const fetched = await ctx.runAction(this.component.public.fetchJobPosting, {
|
|
78
|
+
return await ctx.runQuery(this.component.public.getJobPosting, {
|
|
70
79
|
upworkId: opts.upworkId,
|
|
71
80
|
});
|
|
72
|
-
|
|
81
|
+
}
|
|
73
82
|
|
|
74
|
-
|
|
83
|
+
async fetchJobPosting(
|
|
84
|
+
ctx: ActionCtx,
|
|
85
|
+
opts: { upworkId: string },
|
|
86
|
+
): Promise<JobPosting | null> {
|
|
87
|
+
return await ctx.runAction(this.component.public.fetchJobPosting, {
|
|
88
|
+
clientId: this._clientId,
|
|
89
|
+
clientSecret: this._clientSecret,
|
|
75
90
|
upworkId: opts.upworkId,
|
|
76
91
|
});
|
|
77
92
|
}
|
|
@@ -94,9 +109,16 @@ export function registerRoutes(
|
|
|
94
109
|
http: HttpRouter,
|
|
95
110
|
component: UpworkComponent,
|
|
96
111
|
opts?: {
|
|
112
|
+
UPWORK_CLIENT_ID?: string;
|
|
113
|
+
UPWORK_CLIENT_SECRET?: string;
|
|
97
114
|
onSuccess?: string;
|
|
98
115
|
},
|
|
99
116
|
) {
|
|
117
|
+
const clientId =
|
|
118
|
+
opts?.UPWORK_CLIENT_ID ?? process.env.UPWORK_CLIENT_ID!;
|
|
119
|
+
const clientSecret =
|
|
120
|
+
opts?.UPWORK_CLIENT_SECRET ?? process.env.UPWORK_CLIENT_SECRET!;
|
|
121
|
+
|
|
100
122
|
http.route({
|
|
101
123
|
path: CALLBACK_PATH,
|
|
102
124
|
method: "GET",
|
|
@@ -112,6 +134,8 @@ export function registerRoutes(
|
|
|
112
134
|
|
|
113
135
|
try {
|
|
114
136
|
await ctx.runAction(component.public.exchangeAuthCode, {
|
|
137
|
+
clientId,
|
|
138
|
+
clientSecret,
|
|
115
139
|
code,
|
|
116
140
|
redirectUri,
|
|
117
141
|
});
|
|
@@ -79,14 +79,19 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
79
79
|
exchangeAuthCode: FunctionReference<
|
|
80
80
|
"action",
|
|
81
81
|
"internal",
|
|
82
|
-
{
|
|
82
|
+
{
|
|
83
|
+
clientId: string;
|
|
84
|
+
clientSecret: string;
|
|
85
|
+
code: string;
|
|
86
|
+
redirectUri: string;
|
|
87
|
+
},
|
|
83
88
|
any,
|
|
84
89
|
Name
|
|
85
90
|
>;
|
|
86
91
|
fetchJobPosting: FunctionReference<
|
|
87
92
|
"action",
|
|
88
93
|
"internal",
|
|
89
|
-
{ upworkId: string },
|
|
94
|
+
{ clientId: string; clientSecret: string; upworkId: string },
|
|
90
95
|
any,
|
|
91
96
|
Name
|
|
92
97
|
>;
|
|
@@ -108,14 +113,19 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
|
|
|
108
113
|
refreshAccessToken: FunctionReference<
|
|
109
114
|
"action",
|
|
110
115
|
"internal",
|
|
111
|
-
{},
|
|
116
|
+
{ clientId: string; clientSecret: string },
|
|
112
117
|
any,
|
|
113
118
|
Name
|
|
114
119
|
>;
|
|
115
120
|
searchJobPostings: FunctionReference<
|
|
116
121
|
"action",
|
|
117
122
|
"internal",
|
|
118
|
-
{
|
|
123
|
+
{
|
|
124
|
+
clientId: string;
|
|
125
|
+
clientSecret: string;
|
|
126
|
+
searchQuery?: string;
|
|
127
|
+
sortField?: string;
|
|
128
|
+
},
|
|
119
129
|
any,
|
|
120
130
|
Name
|
|
121
131
|
>;
|
package/src/component/public.ts
CHANGED
|
@@ -4,17 +4,6 @@ import { v } from "convex/values";
|
|
|
4
4
|
|
|
5
5
|
const BASE_URL = "https://upwork-mock-server.onrender.com";
|
|
6
6
|
|
|
7
|
-
function getCredentials(): { clientId: string; clientSecret: string } {
|
|
8
|
-
const clientId = process.env.UPWORK_CLIENT_ID;
|
|
9
|
-
const clientSecret = process.env.UPWORK_CLIENT_SECRET;
|
|
10
|
-
if (!clientId || !clientSecret) {
|
|
11
|
-
throw new Error(
|
|
12
|
-
"Missing UPWORK_CLIENT_ID or UPWORK_CLIENT_SECRET environment variables.",
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
return { clientId, clientSecret };
|
|
16
|
-
}
|
|
17
|
-
|
|
18
7
|
function buildJobPostingsQuery(opts: {
|
|
19
8
|
searchQuery?: string;
|
|
20
9
|
sortField?: string;
|
|
@@ -91,9 +80,11 @@ type SearchResult = {
|
|
|
91
80
|
};
|
|
92
81
|
|
|
93
82
|
export const refreshAccessToken = action({
|
|
94
|
-
args: {
|
|
95
|
-
|
|
96
|
-
|
|
83
|
+
args: {
|
|
84
|
+
clientId: v.string(),
|
|
85
|
+
clientSecret: v.string(),
|
|
86
|
+
},
|
|
87
|
+
handler: async (ctx, args) => {
|
|
97
88
|
const tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
98
89
|
if (!tokens) {
|
|
99
90
|
throw new Error("No stored tokens found. Complete OAuth authorization first.");
|
|
@@ -109,8 +100,8 @@ export const refreshAccessToken = action({
|
|
|
109
100
|
},
|
|
110
101
|
body: new URLSearchParams({
|
|
111
102
|
grant_type: "refresh_token",
|
|
112
|
-
client_id: clientId,
|
|
113
|
-
client_secret: clientSecret,
|
|
103
|
+
client_id: args.clientId,
|
|
104
|
+
client_secret: args.clientSecret,
|
|
114
105
|
refresh_token: tokens.refreshToken,
|
|
115
106
|
}).toString(),
|
|
116
107
|
});
|
|
@@ -134,24 +125,25 @@ export const refreshAccessToken = action({
|
|
|
134
125
|
|
|
135
126
|
export const exchangeAuthCode = action({
|
|
136
127
|
args: {
|
|
128
|
+
clientId: v.string(),
|
|
129
|
+
clientSecret: v.string(),
|
|
137
130
|
code: v.string(),
|
|
138
131
|
redirectUri: v.string(),
|
|
139
132
|
},
|
|
140
133
|
handler: async (ctx, args): Promise<void> => {
|
|
141
|
-
const { clientId, clientSecret } = getCredentials();
|
|
142
134
|
const tokenUrl = `${BASE_URL}/api/v3/oauth2/token`;
|
|
143
135
|
|
|
144
136
|
const body = new URLSearchParams({
|
|
145
137
|
grant_type: "authorization_code",
|
|
146
|
-
client_id: clientId,
|
|
147
|
-
client_secret: clientSecret,
|
|
138
|
+
client_id: args.clientId,
|
|
139
|
+
client_secret: args.clientSecret,
|
|
148
140
|
code: args.code,
|
|
149
141
|
redirect_uri: args.redirectUri,
|
|
150
142
|
}).toString();
|
|
151
143
|
|
|
152
144
|
console.log("[exchangeAuthCode] POST", tokenUrl);
|
|
153
145
|
console.log("[exchangeAuthCode] redirect_uri:", args.redirectUri);
|
|
154
|
-
console.log("[exchangeAuthCode] client_id:", clientId);
|
|
146
|
+
console.log("[exchangeAuthCode] client_id:", args.clientId);
|
|
155
147
|
console.log("[exchangeAuthCode] code:", args.code);
|
|
156
148
|
|
|
157
149
|
const response = await fetch(tokenUrl, {
|
|
@@ -182,6 +174,8 @@ export const exchangeAuthCode = action({
|
|
|
182
174
|
|
|
183
175
|
export const searchJobPostings = action({
|
|
184
176
|
args: {
|
|
177
|
+
clientId: v.string(),
|
|
178
|
+
clientSecret: v.string(),
|
|
185
179
|
searchQuery: v.optional(v.string()),
|
|
186
180
|
sortField: v.optional(v.string()),
|
|
187
181
|
},
|
|
@@ -192,7 +186,10 @@ export const searchJobPostings = action({
|
|
|
192
186
|
}
|
|
193
187
|
|
|
194
188
|
if (tokens.expiresAt < Date.now()) {
|
|
195
|
-
await ctx.runAction(api.public.refreshAccessToken, {
|
|
189
|
+
await ctx.runAction(api.public.refreshAccessToken, {
|
|
190
|
+
clientId: args.clientId,
|
|
191
|
+
clientSecret: args.clientSecret,
|
|
192
|
+
});
|
|
196
193
|
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
197
194
|
if (!tokens) {
|
|
198
195
|
throw new Error("Failed to refresh token.");
|
|
@@ -321,6 +318,8 @@ query($id: ID!) {
|
|
|
321
318
|
|
|
322
319
|
export const fetchJobPosting = action({
|
|
323
320
|
args: {
|
|
321
|
+
clientId: v.string(),
|
|
322
|
+
clientSecret: v.string(),
|
|
324
323
|
upworkId: v.string(),
|
|
325
324
|
},
|
|
326
325
|
handler: async (ctx, args): Promise<JobPostingRow | null> => {
|
|
@@ -330,7 +329,10 @@ export const fetchJobPosting = action({
|
|
|
330
329
|
}
|
|
331
330
|
|
|
332
331
|
if (tokens.expiresAt < Date.now()) {
|
|
333
|
-
await ctx.runAction(api.public.refreshAccessToken, {
|
|
332
|
+
await ctx.runAction(api.public.refreshAccessToken, {
|
|
333
|
+
clientId: args.clientId,
|
|
334
|
+
clientSecret: args.clientSecret,
|
|
335
|
+
});
|
|
334
336
|
tokens = await ctx.runQuery(api.private.getTokens, {});
|
|
335
337
|
if (!tokens) {
|
|
336
338
|
throw new Error("Failed to refresh token.");
|