@unchainedshop/plugins 2.1.1 → 2.2.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.
@@ -0,0 +1,3 @@
1
+ import { IOAuth2Adapter } from '@unchainedshop/types/accounts.js';
2
+ declare const GoogleOAuth2Adapter: IOAuth2Adapter;
3
+ export default GoogleOAuth2Adapter;
@@ -0,0 +1,139 @@
1
+ import { OAuth2Director, OAuth2Adapter } from '@unchainedshop/core-accountsjs';
2
+ const { GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET } = process.env;
3
+ const getGoggleAuthorizationCode = async ({ code, redirectUri, clientId, clientSecret, }) => {
4
+ const response = await fetch('https://oauth2.googleapis.com/token', {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/json',
8
+ },
9
+ body: JSON.stringify({
10
+ code,
11
+ client_id: clientId,
12
+ grant_type: 'authorization_code',
13
+ client_secret: clientSecret,
14
+ redirect_uri: redirectUri,
15
+ access_type: 'offline',
16
+ }),
17
+ });
18
+ return response.json();
19
+ };
20
+ const normalizeProfileData = (data) => {
21
+ const { names = [], genders = [], addresses = [], emailAddresses = [], phoneNumbers = [], birthdays = [], photos = [], } = data;
22
+ const [name] = names;
23
+ const [gender] = genders;
24
+ const [email] = emailAddresses;
25
+ const [birthday] = birthdays;
26
+ const [phone] = phoneNumbers;
27
+ const [address] = addresses;
28
+ const [photo] = photos;
29
+ return {
30
+ id: data.sub,
31
+ firstName: name?.givenName,
32
+ lastName: name?.familyName,
33
+ displayName: name?.displayName,
34
+ gender: gender?.value,
35
+ email: email?.value,
36
+ birthDate: birthday?.date
37
+ ? new Date(birthday?.date?.year ?? 0, birthdays?.date?.month ?? 0, birthday?.date?.day ?? 0)
38
+ : undefined,
39
+ phoneNumber: phone?.canonicalForm,
40
+ address: address?.formattedValue,
41
+ avatarUrl: photo?.url,
42
+ };
43
+ };
44
+ const parseGoogleIdToken = (idToken) => {
45
+ const [, base64UserInfo] = idToken.split('.');
46
+ const buff = Buffer.from(base64UserInfo, 'base64');
47
+ const data = JSON.parse(buff.toString());
48
+ return {
49
+ id: data.sub,
50
+ email: data?.email,
51
+ firstName: data?.given_name,
52
+ lastName: data?.family_name,
53
+ avatarUrl: data?.picture,
54
+ fullName: data?.name,
55
+ exp: data?.exp,
56
+ ...data,
57
+ };
58
+ };
59
+ const GoogleOAuth2Adapter = {
60
+ ...OAuth2Adapter,
61
+ key: 'google-oauth2',
62
+ label: 'Google Oauth',
63
+ version: '1',
64
+ provider: 'google',
65
+ config: {
66
+ clientId: GOOGLE_OAUTH_CLIENT_ID,
67
+ scopes: [
68
+ 'genders',
69
+ 'emailAddresses',
70
+ 'phoneNumbers',
71
+ 'addresses',
72
+ 'birthdays',
73
+ 'metadata',
74
+ 'names',
75
+ 'photos',
76
+ 'locations',
77
+ ],
78
+ },
79
+ actions: () => {
80
+ return {
81
+ ...OAuth2Adapter.actions(null),
82
+ configurationError: () => {
83
+ return '';
84
+ },
85
+ isActive: () => {
86
+ return Boolean(GOOGLE_OAUTH_CLIENT_ID && GOOGLE_OAUTH_CLIENT_SECRET);
87
+ },
88
+ getAuthorizationToken: async (authorizationCode, redirectUrl) => {
89
+ return getGoggleAuthorizationCode({
90
+ code: authorizationCode,
91
+ clientId: GoogleOAuth2Adapter.config.clientId,
92
+ redirectUri: redirectUrl,
93
+ clientSecret: GOOGLE_OAUTH_CLIENT_SECRET,
94
+ });
95
+ },
96
+ getAccountData: async ({ access_token, id_token }) => {
97
+ const response = await fetch(`https://people.googleapis.com/v1/people/me?personFields=${GoogleOAuth2Adapter.config.scopes.join(',')}`, {
98
+ headers: {
99
+ Authorization: `Bearer ${access_token}`,
100
+ },
101
+ });
102
+ if (response.status === 403)
103
+ return parseGoogleIdToken(id_token);
104
+ const profileInfoJSON = await response.json();
105
+ if (profileInfoJSON?.error)
106
+ throw new Error(profileInfoJSON?.error.message);
107
+ return normalizeProfileData(profileInfoJSON);
108
+ },
109
+ isTokenValid: async (accessToken) => {
110
+ const response = await fetch(`https://oauth2.googleapis.com/tokeninfo?id_token=${accessToken?.id_token}`);
111
+ const tokenInfo = await response.json();
112
+ if (tokenInfo.error) {
113
+ return false;
114
+ }
115
+ return true;
116
+ },
117
+ refreshToken: async ({ refresh_token }) => {
118
+ const response = await fetch('https://oauth2.googleapis.com/token', {
119
+ method: 'POST',
120
+ headers: {
121
+ 'Content-Type': 'application/json',
122
+ },
123
+ body: JSON.stringify({
124
+ client_id: GoogleOAuth2Adapter.config.clientId,
125
+ grant_type: 'refresh_token',
126
+ client_secret: GOOGLE_OAUTH_CLIENT_SECRET,
127
+ refresh_token,
128
+ access_type: 'offline',
129
+ }),
130
+ });
131
+ const refreshedAccessToken = await response.json();
132
+ return refreshedAccessToken;
133
+ },
134
+ };
135
+ },
136
+ };
137
+ OAuth2Director.registerAdapter(GoogleOAuth2Adapter);
138
+ export default GoogleOAuth2Adapter;
139
+ //# sourceMappingURL=google-oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-oauth.js","sourceRoot":"","sources":["../../src/accounts/google-oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { IOAuth2Adapter } from '@unchainedshop/types/accounts.js';
2
+ declare const LinkedInOAuthAdapter: IOAuth2Adapter;
3
+ export default LinkedInOAuthAdapter;
@@ -0,0 +1,79 @@
1
+ import { OAuth2Director, OAuth2Adapter } from '@unchainedshop/core-accountsjs';
2
+ const { LINKED_IN_OAUTH_CLIENT_ID, LINKED_IN_OAUTH_CLIENT_SECRET } = process.env;
3
+ const getLinkedInAuthorizationCode = async ({ code, redirectUri, clientId, clientSecret, }) => {
4
+ const response = await fetch('https://www.linkedin.com/oauth/v2/accessToken', {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/x-www-form-urlencoded',
8
+ },
9
+ body: new URLSearchParams({
10
+ code,
11
+ client_id: clientId,
12
+ grant_type: 'authorization_code',
13
+ client_secret: clientSecret,
14
+ redirect_uri: redirectUri,
15
+ }),
16
+ });
17
+ return response.json();
18
+ };
19
+ const normalizeProfileData = (data) => {
20
+ const { name, given_name, family_name, email, email_verified, picture, sub } = data;
21
+ return {
22
+ id: sub,
23
+ displayName: name,
24
+ firstName: given_name,
25
+ lastName: family_name,
26
+ email: email_verified ? email : undefined,
27
+ avatarUrl: picture,
28
+ };
29
+ };
30
+ const LinkedInOAuthAdapter = {
31
+ ...OAuth2Adapter,
32
+ key: 'linked-in-oauth2',
33
+ label: 'LinkedIn Oauth',
34
+ version: '1',
35
+ provider: 'linkedin',
36
+ config: {
37
+ clientId: LINKED_IN_OAUTH_CLIENT_ID,
38
+ scopes: ['r_liteprofile', 'r_emailaddress', 'email', 'openid', 'profile'],
39
+ },
40
+ actions: () => {
41
+ return {
42
+ ...OAuth2Adapter.actions(null),
43
+ configurationError: () => {
44
+ return '';
45
+ },
46
+ isActive: () => {
47
+ return Boolean(LINKED_IN_OAUTH_CLIENT_ID && LINKED_IN_OAUTH_CLIENT_SECRET);
48
+ },
49
+ getAuthorizationToken: async (authorizationCode, redirectUrl) => {
50
+ return getLinkedInAuthorizationCode({
51
+ code: authorizationCode,
52
+ clientId: LinkedInOAuthAdapter.config.clientId,
53
+ redirectUri: redirectUrl,
54
+ clientSecret: LINKED_IN_OAUTH_CLIENT_SECRET,
55
+ });
56
+ },
57
+ getAccountData: async ({ access_token }) => {
58
+ const response = await fetch('https://api.linkedin.com/v2/userinfo', {
59
+ headers: {
60
+ Authorization: `Bearer ${access_token}`,
61
+ },
62
+ });
63
+ const profileInfoJSON = await response.json();
64
+ return normalizeProfileData(profileInfoJSON);
65
+ },
66
+ isTokenValid: async ({ access_token }) => {
67
+ const response = await fetch(`https://api.linkedin.com/oauth/v2/accessTokenValidation?q=full&access_token=${access_token}`);
68
+ const tokenInfo = await response.json();
69
+ if (tokenInfo.error) {
70
+ return false;
71
+ }
72
+ return true;
73
+ },
74
+ };
75
+ },
76
+ };
77
+ OAuth2Director.registerAdapter(LinkedInOAuthAdapter);
78
+ export default LinkedInOAuthAdapter;
79
+ //# sourceMappingURL=linkedin-oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linkedin-oauth.js","sourceRoot":"","sources":["../../src/accounts/linkedin-oauth.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,8 @@ import './worker/push-notification.js';
39
39
  import './worker/update-ecb-rates.js';
40
40
  import './worker/update-coinbase-rates.js';
41
41
  import './files/gridfs/gridfs-adapter.js';
42
+ import './accounts/google-oauth.js';
43
+ import './accounts/linkedin-oauth.js';
42
44
  export declare const defaultModules: {
43
45
  appleTransactions: {
44
46
  configure: ({ db, }: {
@@ -60,6 +60,8 @@ import { configureUpdateTokenOwnership } from './worker/update-token-ownership.j
60
60
  import './files/gridfs/gridfs-adapter.js';
61
61
  import { gridfsHandler } from './files/gridfs/gridfs-webhook.js';
62
62
  import { configureGridFSFileUploadModule } from './files/gridfs/index.js';
63
+ import './accounts/google-oauth.js';
64
+ import './accounts/linkedin-oauth.js';
63
65
  const { CRYPTOPAY_WEBHOOK_PATH = '/payment/cryptopay', STRIPE_WEBHOOK_PATH = '/payment/stripe', PFCHECKOUT_WEBHOOK_PATH = '/payment/postfinance-checkout', DATATRANS_WEBHOOK_PATH = '/payment/datatrans/webhook', APPLE_IAP_WEBHOOK_PATH = '/payment/apple-iap',
64
66
  // MINIO_PUT_SERVER_PATH = '/minio',
65
67
  GRIDFS_PUT_SERVER_PATH = '/gridfs', } = process.env;
@@ -1 +1 @@
1
- {"version":3,"file":"plugins-index.js","sourceRoot":"","sources":["../src/plugins-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins-index.js","sourceRoot":"","sources":["../src/plugins-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAEtF,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,WAAW;AACX,OAAO,oBAAoB,CAAC;AAC5B,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,sBAAsB,CAAC;AAE9B,UAAU;AACV,OAAO,sBAAsB,CAAC;AAC9B,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF,cAAc;AACd,OAAO,wBAAwB,CAAC;AAChC,OAAO,6BAA6B,CAAC;AAErC,UAAU;AACV,OAAO,yCAAyC,CAAC;AACjD,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,4BAA4B,CAAC;AACpC,OAAO,0BAA0B,CAAC;AAClC,OAAO,6BAA6B,CAAC;AACrC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,2CAA2C,CAAC;AACnD,OAAO,+BAA+B,CAAC;AACvC,OAAO,gCAAgC,CAAC;AACxC,OAAO,iCAAiC,CAAC;AAEzC,kBAAkB;AAClB,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AAEnC,aAAa;AACb,OAAO,wBAAwB,CAAC;AAEhC,cAAc;AACd,OAAO,2BAA2B,CAAC;AAEnC,cAAc;AACd,OAAO,gCAAgC,CAAC;AAExC,UAAU;AACV,OAAO,yBAAyB,CAAC;AACjC,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAClC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,iBAAiB,CAAC;AACzB,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,mBAAmB;AACnB,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,4BAA4B,CAAC;AACpC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,EACJ,sBAAsB,GAAG,oBAAoB,EAC7C,mBAAmB,GAAG,iBAAiB,EACvC,uBAAuB,GAAG,+BAA+B,EACzD,sBAAsB,GAAG,4BAA4B,EACrD,sBAAsB,GAAG,oBAAoB;AAC7C,oCAAoC;AACpC,sBAAsB,GAAG,SAAS,GACnC,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,wCAAwC;AACxC,8DAA8D;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,iBAAiB,EAAE;QACjB,SAAS,EAAE,gCAAgC;KAC5C;IACD,iBAAiB,EAAE;QACjB,SAAS,EAAE,+BAA+B;KAC3C;IACD,SAAS,EAAE;QACT,SAAS,EAAE,wBAAwB;KACpC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,GAAG,EACH,EAAE,YAAY,EAAmC,EACjD,EAAE;IACF,+BAA+B,CAAC,GAAG,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;IAE5E,+BAA+B,CAAC,GAAG,EAAE,sBAAsB,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAE/F,+BAA+B,CAC7B,GAAG,EACH,mBAAmB,EACnB,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,EACzC,aAAa,CACd,CAAC;IAEF,+BAA+B,CAC7B,GAAG,EACH,uBAAuB,EACvB,OAAO,CAAC,IAAI,EAAE,EACd,0BAA0B,CAC3B,CAAC;IAEF,+BAA+B,CAC7B,GAAG,EACH,sBAAsB,EACtB,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,kBAAkB;KACzB,CAAC,EACF,gBAAgB,CACjB,CAAC;IAEF,+BAA+B,CAC7B,GAAG,EACH,sBAAsB,EACtB,OAAO,CAAC,IAAI,CAAC;QACX,MAAM,EAAE,KAAK;KACd,CAAC,EACF,eAAe,CAChB,CAAC;IAEF,mCAAmC;IACnC,SAAS;IACT,2BAA2B;IAC3B,mBAAmB;IACnB,qBAAqB;IACrB,QAAQ;IACR,iBAAiB;IACjB,KAAK;IAEL,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnC,6BAA6B,CAAC,YAAY,CAAC,CAAC;IAC5C,oCAAoC,EAAE,CAAC;AACzC,CAAC,CAAC"}
@@ -34,6 +34,7 @@ export const BulkImportWorker = {
34
34
  label: 'Bulk Import',
35
35
  version: '1.0.0',
36
36
  type: 'BULK_IMPORT',
37
+ maxParallelAllocations: 1,
37
38
  doWork: async (rawPayload, unchainedAPI) => {
38
39
  try {
39
40
  const { createShouldUpsertIfIDExists = false, skipCacheInvalidation = false } = rawPayload;
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-import.js","sourceRoot":"","sources":["../../src/worker/bulk-import.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,MAAM,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AAE9D,MAAM,2BAA2B,GAAG,KAAK,EACvC,YAAY,EACZ,gBAAgB,EAChB,YAA2B,EAC3B,EAAE;IACF,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IAEjF,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB;QACvE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAEhD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnC,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EACD,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,CACxC,CAAC;IAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,EAAE,EAAE,sBAAsB;QAC/D,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;KACjD;IAED,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAiD;IAC5E,GAAG,aAAa;IAEhB,GAAG,EAAE,0CAA0C;IAC/C,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,aAAa;IAEnB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE;QACzC,IAAI;YACF,MAAM,EAAE,4BAA4B,GAAG,KAAK,EAAE,qBAAqB,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC;YAE3F,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC;gBAChE,MAAM;gBACN,4BAA4B;gBAC5B,qBAAqB;aACtB,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,eAAe,EAAE;gBAC9B,kCAAkC;gBAClC,MAAM,2BAA2B,CAC/B,YAAY,EACZ,GAAG,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,eAAe,CAAC,EACrD,YAAY,CACb,CAAC;aACH;iBAAM,IAAI,UAAU,CAAC,SAAS,EAAE;gBAC/B,6BAA6B;gBAC7B,MAAM,2BAA2B,CAC/B,YAAY,EACZ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,EAC3F,YAAY,CACb,CAAC;aACH;iBAAM;gBACL,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;gBAC9B,IAAI,CAAC,MAAM,EAAE,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAE5D,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE;oBAC3D,MAAM,mBAAmB,CAAC;oBAC1B,OAAO,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACvD,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;aACvB;YAED,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAElD,IAAI,KAAK,EAAE;gBACT,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM;oBACN,KAAK;iBACN,CAAC;aACH;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM;aACP,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;SACH;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"bulk-import.js","sourceRoot":"","sources":["../../src/worker/bulk-import.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ const Heartbeat = {
12
12
  label: 'Heartbeat plugin to check if workers are working',
13
13
  version: '1.0.0',
14
14
  type: 'HEARTBEAT',
15
+ maxParallelAllocations: 1,
15
16
  doWork: async (input) => {
16
17
  if (input?.wait) {
17
18
  await wait(input.wait);
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/worker/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AASF,MAAM,SAAS,GAAgC;IAC7C,GAAG,aAAa;IAEhB,GAAG,EAAE,wCAAwC;IAC7C,KAAK,EAAE,kDAAkD;IACzD,OAAO,EAAE,OAAO;IAEhB,IAAI,EAAE,WAAW;IAEjB,MAAM,EAAE,KAAK,EAAE,KAAU,EAAiD,EAAE;QAC1E,IAAI,KAAK,EAAE,IAAI,EAAE;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,IAAI,KAAK,EAAE,KAAK,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK;aACd,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/worker/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AASF,MAAM,SAAS,GAAgC;IAC7C,GAAG,aAAa;IAEhB,GAAG,EAAE,wCAAwC;IAC7C,KAAK,EAAE,kDAAkD;IACzD,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,WAAW;IACjB,sBAAsB,EAAE,CAAC;IAEzB,MAAM,EAAE,KAAK,EAAE,KAAU,EAAiD,EAAE;QAC1E,IAAI,KAAK,EAAE,IAAI,EAAE;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,IAAI,KAAK,EAAE,KAAK,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK;aACd,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "2.1.1",
3
+ "version": "2.2.1",
4
4
  "main": "lib/plugins-index.js",
5
5
  "types": "lib/plugins-index.d.ts",
6
6
  "exports": {
@@ -76,39 +76,39 @@
76
76
  "express": "^4.18.2"
77
77
  },
78
78
  "devDependencies": {
79
- "@types/node": "^18.15.11",
80
- "@unchainedshop/api": "^2.1.1",
81
- "@unchainedshop/core-delivery": "^2.1.1",
82
- "@unchainedshop/core-enrollments": "^2.1.1",
83
- "@unchainedshop/core-filters": "^2.1.1",
84
- "@unchainedshop/core-messaging": "^2.1.1",
85
- "@unchainedshop/core-orders": "^2.1.1",
86
- "@unchainedshop/core-payment": "^2.1.1",
87
- "@unchainedshop/core-products": "^2.1.1",
88
- "@unchainedshop/core-quotations": "^2.1.1",
89
- "@unchainedshop/core-warehousing": "^2.1.1",
90
- "@unchainedshop/core-worker": "^2.1.1",
91
- "@unchainedshop/events": "^2.1.1",
92
- "@unchainedshop/file-upload": "^2.1.1",
93
- "@unchainedshop/logger": "^2.1.1",
94
- "@unchainedshop/types": "^2.1.1",
95
- "@unchainedshop/utils": "^2.1.1",
79
+ "@types/node": "^18.16.6",
80
+ "@unchainedshop/api": "^2.2.1",
81
+ "@unchainedshop/core-delivery": "^2.2.1",
82
+ "@unchainedshop/core-enrollments": "^2.2.1",
83
+ "@unchainedshop/core-filters": "^2.2.1",
84
+ "@unchainedshop/core-messaging": "^2.2.1",
85
+ "@unchainedshop/core-orders": "^2.2.1",
86
+ "@unchainedshop/core-payment": "^2.2.1",
87
+ "@unchainedshop/core-products": "^2.2.1",
88
+ "@unchainedshop/core-quotations": "^2.2.1",
89
+ "@unchainedshop/core-warehousing": "^2.2.1",
90
+ "@unchainedshop/core-worker": "^2.2.1",
91
+ "@unchainedshop/events": "^2.2.1",
92
+ "@unchainedshop/file-upload": "^2.2.1",
93
+ "@unchainedshop/logger": "^2.2.1",
94
+ "@unchainedshop/types": "^2.2.1",
95
+ "@unchainedshop/utils": "^2.2.1",
96
96
  "bluebird": "^3.7.2",
97
97
  "event-iterator": "^2.0.0",
98
98
  "express": "^4.18.2",
99
99
  "jest": "^29.5.0",
100
100
  "JSONStream": "^1.3.5",
101
- "minio": "^7.0.33",
102
- "mongodb": "^4.14.0",
101
+ "minio": "^7.1.0",
102
+ "mongodb": "^4.16.0",
103
103
  "node-sheets": "^1.2.0",
104
104
  "nodemailer": "^6.9.1",
105
- "open": "^8.4.2",
106
- "redis": "^4.6.5",
105
+ "open": "^9.1.0",
106
+ "redis": "^4.6.6",
107
107
  "request": "^2.88.2",
108
108
  "stripe": "^10.17.0",
109
109
  "ts-jest": "^29.1.0",
110
110
  "typescript": "^4.9.5",
111
- "web-push": "^3.5.0",
111
+ "web-push": "^3.6.1",
112
112
  "xml-js": "^1.6.11",
113
113
  "xml2js": "0.4.23"
114
114
  }
@@ -0,0 +1,175 @@
1
+ /* eslint-disable camelcase */
2
+ import { IOAuth2Adapter } from '@unchainedshop/types/accounts.js';
3
+ import { OAuth2Director, OAuth2Adapter } from '@unchainedshop/core-accountsjs';
4
+
5
+ const { GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET } = process.env;
6
+
7
+ const getGoggleAuthorizationCode = async ({
8
+ code,
9
+ redirectUri,
10
+ clientId,
11
+ clientSecret,
12
+ }): Promise<any> => {
13
+ const response = await fetch('https://oauth2.googleapis.com/token', {
14
+ method: 'POST',
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ body: JSON.stringify({
19
+ code,
20
+ client_id: clientId,
21
+ grant_type: 'authorization_code',
22
+ client_secret: clientSecret,
23
+ redirect_uri: redirectUri,
24
+ access_type: 'offline',
25
+ }),
26
+ });
27
+
28
+ return response.json();
29
+ };
30
+
31
+ const normalizeProfileData = (data) => {
32
+ const {
33
+ names = [],
34
+ genders = [],
35
+ addresses = [],
36
+ emailAddresses = [],
37
+ phoneNumbers = [],
38
+ birthdays = [],
39
+ photos = [],
40
+ } = data;
41
+ const [name] = names;
42
+ const [gender] = genders;
43
+ const [email] = emailAddresses;
44
+ const [birthday] = birthdays;
45
+ const [phone] = phoneNumbers;
46
+ const [address] = addresses;
47
+ const [photo] = photos;
48
+
49
+ return {
50
+ id: data.sub,
51
+ firstName: name?.givenName,
52
+ lastName: name?.familyName,
53
+ displayName: name?.displayName,
54
+ gender: gender?.value,
55
+ email: email?.value,
56
+ birthDate: birthday?.date
57
+ ? new Date(birthday?.date?.year ?? 0, birthdays?.date?.month ?? 0, birthday?.date?.day ?? 0)
58
+ : undefined,
59
+ phoneNumber: phone?.canonicalForm,
60
+ address: address?.formattedValue,
61
+ avatarUrl: photo?.url,
62
+ };
63
+ };
64
+
65
+ const parseGoogleIdToken = (idToken: string) => {
66
+ const [, base64UserInfo] = idToken.split('.');
67
+ const buff = Buffer.from(base64UserInfo, 'base64');
68
+ const data = JSON.parse(buff.toString());
69
+
70
+ return {
71
+ id: data.sub,
72
+ email: data?.email,
73
+ firstName: data?.given_name,
74
+ lastName: data?.family_name,
75
+ avatarUrl: data?.picture,
76
+ fullName: data?.name,
77
+ exp: data?.exp,
78
+ ...data,
79
+ };
80
+ };
81
+
82
+ const GoogleOAuth2Adapter: IOAuth2Adapter = {
83
+ ...OAuth2Adapter,
84
+ key: 'google-oauth2',
85
+ label: 'Google Oauth',
86
+ version: '1',
87
+ provider: 'google',
88
+ config: {
89
+ clientId: GOOGLE_OAUTH_CLIENT_ID,
90
+ scopes: [
91
+ 'genders',
92
+ 'emailAddresses',
93
+ 'phoneNumbers',
94
+ 'addresses',
95
+ 'birthdays',
96
+ 'metadata',
97
+ 'names',
98
+ 'photos',
99
+ 'locations',
100
+ ],
101
+ },
102
+
103
+ actions: () => {
104
+ return {
105
+ ...OAuth2Adapter.actions(null),
106
+ configurationError: () => {
107
+ return '';
108
+ },
109
+ isActive: () => {
110
+ return Boolean(GOOGLE_OAUTH_CLIENT_ID && GOOGLE_OAUTH_CLIENT_SECRET);
111
+ },
112
+ getAuthorizationToken: async (authorizationCode, redirectUrl) => {
113
+ return getGoggleAuthorizationCode({
114
+ code: authorizationCode,
115
+ clientId: GoogleOAuth2Adapter.config.clientId,
116
+ redirectUri: redirectUrl,
117
+ clientSecret: GOOGLE_OAUTH_CLIENT_SECRET,
118
+ });
119
+ },
120
+ getAccountData: async ({ access_token, id_token }: any) => {
121
+ const response = await fetch(
122
+ `https://people.googleapis.com/v1/people/me?personFields=${GoogleOAuth2Adapter.config.scopes.join(
123
+ ',',
124
+ )}`,
125
+ {
126
+ headers: {
127
+ Authorization: `Bearer ${access_token}`,
128
+ },
129
+ },
130
+ );
131
+ if (response.status === 403) return parseGoogleIdToken(id_token);
132
+ const profileInfoJSON = await response.json();
133
+ if (profileInfoJSON?.error) throw new Error(profileInfoJSON?.error.message);
134
+
135
+ return normalizeProfileData(profileInfoJSON);
136
+ },
137
+ isTokenValid: async (accessToken) => {
138
+ const response = await fetch(
139
+ `https://oauth2.googleapis.com/tokeninfo?id_token=${accessToken?.id_token}`,
140
+ );
141
+
142
+ const tokenInfo = await response.json();
143
+
144
+ if (tokenInfo.error) {
145
+ return false;
146
+ }
147
+
148
+ return true;
149
+ },
150
+ refreshToken: async ({ refresh_token }) => {
151
+ const response = await fetch('https://oauth2.googleapis.com/token', {
152
+ method: 'POST',
153
+ headers: {
154
+ 'Content-Type': 'application/json',
155
+ },
156
+ body: JSON.stringify({
157
+ client_id: GoogleOAuth2Adapter.config.clientId,
158
+ grant_type: 'refresh_token',
159
+ client_secret: GOOGLE_OAUTH_CLIENT_SECRET,
160
+ refresh_token,
161
+ access_type: 'offline',
162
+ }),
163
+ });
164
+
165
+ const refreshedAccessToken = await response.json();
166
+
167
+ return refreshedAccessToken;
168
+ },
169
+ };
170
+ },
171
+ };
172
+
173
+ OAuth2Director.registerAdapter(GoogleOAuth2Adapter);
174
+
175
+ export default GoogleOAuth2Adapter;
@@ -0,0 +1,100 @@
1
+ /* eslint-disable camelcase */
2
+ import { IOAuth2Adapter } from '@unchainedshop/types/accounts.js';
3
+ import { OAuth2Director, OAuth2Adapter } from '@unchainedshop/core-accountsjs';
4
+
5
+ const { LINKED_IN_OAUTH_CLIENT_ID, LINKED_IN_OAUTH_CLIENT_SECRET } = process.env;
6
+
7
+ const getLinkedInAuthorizationCode = async ({
8
+ code,
9
+ redirectUri,
10
+ clientId,
11
+ clientSecret,
12
+ }): Promise<any> => {
13
+ const response = await fetch('https://www.linkedin.com/oauth/v2/accessToken', {
14
+ method: 'POST',
15
+ headers: {
16
+ 'Content-Type': 'application/x-www-form-urlencoded',
17
+ },
18
+ body: new URLSearchParams({
19
+ code,
20
+ client_id: clientId,
21
+ grant_type: 'authorization_code',
22
+ client_secret: clientSecret,
23
+ redirect_uri: redirectUri,
24
+ }),
25
+ });
26
+
27
+ return response.json();
28
+ };
29
+
30
+ const normalizeProfileData = (data): any => {
31
+ const { name, given_name, family_name, email, email_verified, picture, sub } = data;
32
+ return {
33
+ id: sub,
34
+ displayName: name,
35
+ firstName: given_name,
36
+ lastName: family_name,
37
+ email: email_verified ? email : undefined,
38
+ avatarUrl: picture,
39
+ };
40
+ };
41
+
42
+ const LinkedInOAuthAdapter: IOAuth2Adapter = {
43
+ ...OAuth2Adapter,
44
+ key: 'linked-in-oauth2',
45
+ label: 'LinkedIn Oauth',
46
+ version: '1',
47
+ provider: 'linkedin',
48
+ config: {
49
+ clientId: LINKED_IN_OAUTH_CLIENT_ID,
50
+ scopes: ['r_liteprofile', 'r_emailaddress', 'email', 'openid', 'profile'],
51
+ },
52
+
53
+ actions: () => {
54
+ return {
55
+ ...OAuth2Adapter.actions(null),
56
+ configurationError: () => {
57
+ return '';
58
+ },
59
+ isActive: () => {
60
+ return Boolean(LINKED_IN_OAUTH_CLIENT_ID && LINKED_IN_OAUTH_CLIENT_SECRET);
61
+ },
62
+ getAuthorizationToken: async (authorizationCode, redirectUrl) => {
63
+ return getLinkedInAuthorizationCode({
64
+ code: authorizationCode,
65
+ clientId: LinkedInOAuthAdapter.config.clientId,
66
+ redirectUri: redirectUrl,
67
+ clientSecret: LINKED_IN_OAUTH_CLIENT_SECRET,
68
+ });
69
+ },
70
+ getAccountData: async ({ access_token }: any) => {
71
+ const response = await fetch('https://api.linkedin.com/v2/userinfo', {
72
+ headers: {
73
+ Authorization: `Bearer ${access_token}`,
74
+ },
75
+ });
76
+
77
+ const profileInfoJSON = await response.json();
78
+
79
+ return normalizeProfileData(profileInfoJSON);
80
+ },
81
+ isTokenValid: async ({ access_token }) => {
82
+ const response = await fetch(
83
+ `https://api.linkedin.com/oauth/v2/accessTokenValidation?q=full&access_token=${access_token}`,
84
+ );
85
+
86
+ const tokenInfo = await response.json();
87
+
88
+ if (tokenInfo.error) {
89
+ return false;
90
+ }
91
+
92
+ return true;
93
+ },
94
+ };
95
+ },
96
+ };
97
+
98
+ OAuth2Director.registerAdapter(LinkedInOAuthAdapter);
99
+
100
+ export default LinkedInOAuthAdapter;
@@ -72,6 +72,9 @@ import './files/gridfs/gridfs-adapter.js';
72
72
  import { gridfsHandler } from './files/gridfs/gridfs-webhook.js';
73
73
  import { configureGridFSFileUploadModule } from './files/gridfs/index.js';
74
74
 
75
+ import './accounts/google-oauth.js';
76
+ import './accounts/linkedin-oauth.js';
77
+
75
78
  const {
76
79
  CRYPTOPAY_WEBHOOK_PATH = '/payment/cryptopay',
77
80
  STRIPE_WEBHOOK_PATH = '/payment/stripe',
@@ -53,6 +53,7 @@ export const BulkImportWorker: IWorkerAdapter<any, Record<string, unknown>> = {
53
53
  label: 'Bulk Import',
54
54
  version: '1.0.0',
55
55
  type: 'BULK_IMPORT',
56
+ maxParallelAllocations: 1, // Only ever process 1 BULK_IMPORT at a time!
56
57
 
57
58
  doWork: async (rawPayload, unchainedAPI) => {
58
59
  try {
@@ -22,8 +22,8 @@ const Heartbeat: IWorkerAdapter<Arg, Result> = {
22
22
  key: 'shop.unchained.worker-plugin.heartbeat',
23
23
  label: 'Heartbeat plugin to check if workers are working',
24
24
  version: '1.0.0',
25
-
26
25
  type: 'HEARTBEAT',
26
+ maxParallelAllocations: 1,
27
27
 
28
28
  doWork: async (input: Arg): Promise<{ success: boolean; result: Result }> => {
29
29
  if (input?.wait) {