@lokalise/expert-api-s2s-client 1.12.0 → 1.14.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/ExpertPublicApiClient.d.ts +3 -1
- package/dist/ExpertPublicApiClient.d.ts.map +1 -1
- package/dist/ExpertPublicApiClient.js +45 -4
- package/dist/ExpertPublicApiClient.js.map +1 -1
- package/dist/utils/permissionsUtils.d.ts +3 -3
- package/dist/utils/permissionsUtils.d.ts.map +1 -1
- package/dist/utils/permissionsUtils.js +24 -43
- package/dist/utils/permissionsUtils.js.map +1 -1
- package/package.json +2 -2
|
@@ -13,11 +13,13 @@ type OAuth2ClientConfiguration = {
|
|
|
13
13
|
* Uses Node.js SDK for public API part and OpenID client for authentication part.
|
|
14
14
|
*/
|
|
15
15
|
export declare class ExpertPublicApiClient implements ExpertApiS2SClient {
|
|
16
|
+
private static readonly TOKEN_EXPIRY_BUFFER_MS;
|
|
16
17
|
private readonly oauth2ClientConfiguration;
|
|
17
18
|
private openIdClientConfiguration?;
|
|
18
|
-
private accessToken;
|
|
19
19
|
private lokaliseApiClient;
|
|
20
|
+
private accessToken;
|
|
20
21
|
private lastObtainedApiTokenExpiresAt?;
|
|
22
|
+
private tokenFetchPromise?;
|
|
21
23
|
constructor(apiBaseUrl: string, oauth2ClientConfiguration: OAuth2ClientConfiguration);
|
|
22
24
|
createProject(teamId: string, params: CreateProjectParams, requestContext: RequestContext): Promise<ApiProject>;
|
|
23
25
|
addContributorsToProject(projectId: string, body: AddContributorsRequestBody, requestContext: RequestContext): Promise<AddContributorsResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpertPublicApiClient.d.ts","sourceRoot":"","sources":["../src/ExpertPublicApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,mBAAmB,EAEnB,4BAA4B,EAC5B,qBAAqB,EACrB,yCAAyC,EACzC,0CAA0C,EAC1C,kBAAkB,EACnB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,KAAK,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,iCAAiC,EACjC,YAAY,EACb,MAAM,yBAAyB,CAAA;AAEhC,KAAK,yBAAyB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAOD;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA2B;IAGrE,OAAO,CAAC,yBAAyB,CAAC,CAAe;
|
|
1
|
+
{"version":3,"file":"ExpertPublicApiClient.d.ts","sourceRoot":"","sources":["../src/ExpertPublicApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,14 +9,16 @@ const TEAM_USER_GROUP_LIST_MAX_PAGES = 10;
|
|
|
9
9
|
* Uses Node.js SDK for public API part and OpenID client for authentication part.
|
|
10
10
|
*/
|
|
11
11
|
export class ExpertPublicApiClient {
|
|
12
|
+
static TOKEN_EXPIRY_BUFFER_MS = 30 * 1000; // 30 seconds
|
|
12
13
|
oauth2ClientConfiguration;
|
|
13
14
|
/* OpenID client configuration is static and can be safely re-used, we want to instantiate it only once and will keep here for re-using. */
|
|
14
15
|
openIdClientConfiguration;
|
|
15
|
-
accessToken;
|
|
16
16
|
/* Lokalise API client depends on the access token so we need to re-create it each time we obtain a new token. */
|
|
17
17
|
lokaliseApiClient;
|
|
18
18
|
/* Access token we obtain is valid for a limited time, we need to keep track of it and re-obtain when it expires. */
|
|
19
|
+
accessToken;
|
|
19
20
|
lastObtainedApiTokenExpiresAt;
|
|
21
|
+
tokenFetchPromise;
|
|
20
22
|
constructor(apiBaseUrl, oauth2ClientConfiguration) {
|
|
21
23
|
this.lokaliseApiClient = new BackendExpertHttpClient(apiBaseUrl);
|
|
22
24
|
this.accessToken = null;
|
|
@@ -84,13 +86,52 @@ export class ExpertPublicApiClient {
|
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
async refreshAuthenticationToken(requestContext) {
|
|
87
|
-
|
|
89
|
+
// If a refresh is already in-flight, reuse it to avoid duplicate token fetches
|
|
90
|
+
if (this.tokenFetchPromise) {
|
|
91
|
+
try {
|
|
92
|
+
const { accessToken, expiresAt } = await this.tokenFetchPromise;
|
|
93
|
+
this.accessToken = accessToken;
|
|
94
|
+
this.lastObtainedApiTokenExpiresAt = expiresAt;
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
const now = new Date();
|
|
98
|
+
const canUseCurrentToken = this.accessToken !== null &&
|
|
99
|
+
this.lastObtainedApiTokenExpiresAt !== undefined &&
|
|
100
|
+
this.lastObtainedApiTokenExpiresAt > now;
|
|
101
|
+
if (canUseCurrentToken) {
|
|
102
|
+
requestContext?.logger.warn({ err }, 'Failed to refresh OAuth2 access token, using current token until expiry');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
throw err;
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const needsRefresh = this.accessToken === null ||
|
|
88
110
|
(this.lastObtainedApiTokenExpiresAt !== undefined &&
|
|
89
|
-
this.lastObtainedApiTokenExpiresAt
|
|
90
|
-
|
|
111
|
+
this.lastObtainedApiTokenExpiresAt <=
|
|
112
|
+
new Date(Date.now() + ExpertPublicApiClient.TOKEN_EXPIRY_BUFFER_MS));
|
|
113
|
+
if (!needsRefresh)
|
|
114
|
+
return;
|
|
115
|
+
this.tokenFetchPromise = this.obtainNewAccessToken(requestContext);
|
|
116
|
+
try {
|
|
117
|
+
const { accessToken, expiresAt } = await this.tokenFetchPromise;
|
|
91
118
|
this.accessToken = accessToken;
|
|
92
119
|
this.lastObtainedApiTokenExpiresAt = expiresAt;
|
|
93
120
|
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
const now = new Date();
|
|
123
|
+
const canUseCurrentToken = this.accessToken !== null &&
|
|
124
|
+
this.lastObtainedApiTokenExpiresAt !== undefined &&
|
|
125
|
+
this.lastObtainedApiTokenExpiresAt > now;
|
|
126
|
+
if (canUseCurrentToken) {
|
|
127
|
+
requestContext?.logger.warn({ err }, 'Failed to refresh OAuth2 access token, using current token until expiry');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
throw err;
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
this.tokenFetchPromise = undefined;
|
|
134
|
+
}
|
|
94
135
|
}
|
|
95
136
|
async getProjectLanguages(projectId, requestContext) {
|
|
96
137
|
const project = await this.getProject(projectId, requestContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpertPublicApiClient.js","sourceRoot":"","sources":["../src/ExpertPublicApiClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAe9E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAe5F,MAAM,sBAAsB,GAAG,EAAE,CAAA;AACjC,MAAM,mCAAmC,GAAG,EAAE,CAAA;AAC9C,MAAM,wBAAwB,GAAG,EAAE,CAAA;AACnC,MAAM,8BAA8B,GAAG,EAAE,CAAA;AAEzC;;;GAGG;AACH,MAAM,OAAO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"ExpertPublicApiClient.js","sourceRoot":"","sources":["../src/ExpertPublicApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Permission } from '@lokalise/common-api-schemas';
|
|
2
2
|
import { type ProjectContributor } from '@lokalise/workspaces-api-schemas';
|
|
3
|
-
export declare function mapAdminRightsToPermissions(contributor: ProjectContributor,
|
|
4
|
-
export declare function mapLanguagesToPermissions(contributor: ProjectContributor, projectUuid: string
|
|
5
|
-
export declare function mapProjectContributorPermissions(contributor: ProjectContributor, projectUuid: string
|
|
3
|
+
export declare function mapAdminRightsToPermissions(contributor: ProjectContributor, projectUuid: string): Permission[];
|
|
4
|
+
export declare function mapLanguagesToPermissions(contributor: ProjectContributor, projectUuid: string): Permission[];
|
|
5
|
+
export declare function mapProjectContributorPermissions(contributor: ProjectContributor, projectUuid: string): Permission[];
|
|
6
6
|
//# sourceMappingURL=permissionsUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionsUtils.d.ts","sourceRoot":"","sources":["../../src/utils/permissionsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,kCAAkC,CAAA;AAEzC,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,kBAAkB,EAC/B,
|
|
1
|
+
{"version":3,"file":"permissionsUtils.d.ts","sourceRoot":"","sources":["../../src/utils/permissionsUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,kCAAkC,CAAA;AAEzC,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,MAAM,GAClB,UAAU,EAAE,CAad;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,MAAM,GAClB,UAAU,EAAE,CAkBd;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,MAAM,GAClB,UAAU,EAAE,CAKd"}
|
|
@@ -1,61 +1,42 @@
|
|
|
1
1
|
import { generateUuid7 } from '@lokalise/id-utils';
|
|
2
2
|
import { PermissionActionEnum, PermissionResourceEnum, PermissionScopeEnum, PermissionSourceNameEnum, } from '@lokalise/workspaces-api-schemas';
|
|
3
|
-
export function mapAdminRightsToPermissions(contributor,
|
|
3
|
+
export function mapAdminRightsToPermissions(contributor, projectUuid) {
|
|
4
4
|
return contributor.admin_rights.map((adminRight) => ({
|
|
5
5
|
id: generateUuid7(),
|
|
6
|
-
userId: contributor.user_uuid,
|
|
7
6
|
createdAt: new Date().toISOString(),
|
|
8
|
-
sourceName: 'expert',
|
|
9
|
-
scopeType: PermissionScopeEnum.Project,
|
|
10
|
-
scopeId: projectId,
|
|
11
|
-
resourceType: adminRight,
|
|
12
|
-
action: '',
|
|
13
|
-
resourceId: '',
|
|
14
7
|
createdBy: generateUuid7(),
|
|
8
|
+
userId: contributor.user_uuid,
|
|
9
|
+
sourceName: PermissionSourceNameEnum.Expert,
|
|
10
|
+
scopeType: PermissionScopeEnum.Project,
|
|
11
|
+
scopeId: projectUuid,
|
|
12
|
+
resourceType: PermissionResourceEnum.Project,
|
|
13
|
+
resourceId: projectUuid,
|
|
14
|
+
action: adminRight,
|
|
15
15
|
}));
|
|
16
16
|
}
|
|
17
|
-
export function mapLanguagesToPermissions(contributor, projectUuid
|
|
17
|
+
export function mapLanguagesToPermissions(contributor, projectUuid) {
|
|
18
18
|
return contributor.languages
|
|
19
19
|
.filter((language) => language.is_writable)
|
|
20
|
-
.
|
|
20
|
+
.map((language) => {
|
|
21
21
|
const resourceId = language.lang_iso.replace('_', '-');
|
|
22
|
-
return
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
resourceType: PermissionResourceEnum.Locale,
|
|
35
|
-
action: PermissionActionEnum.Review,
|
|
36
|
-
resourceId,
|
|
37
|
-
},
|
|
38
|
-
]
|
|
39
|
-
: []),
|
|
40
|
-
{
|
|
41
|
-
id: generateUuid7(),
|
|
42
|
-
createdAt: new Date().toISOString(),
|
|
43
|
-
createdBy: generateUuid7(),
|
|
44
|
-
userId: contributor.user_uuid,
|
|
45
|
-
sourceName: PermissionSourceNameEnum.TranslationStorage,
|
|
46
|
-
scopeType: PermissionScopeEnum.Project,
|
|
47
|
-
scopeId: projectUuid,
|
|
48
|
-
resourceType: PermissionResourceEnum.Locale,
|
|
49
|
-
action: PermissionActionEnum.Review,
|
|
50
|
-
resourceId,
|
|
51
|
-
},
|
|
52
|
-
];
|
|
22
|
+
return {
|
|
23
|
+
id: generateUuid7(),
|
|
24
|
+
createdAt: new Date().toISOString(),
|
|
25
|
+
createdBy: generateUuid7(),
|
|
26
|
+
userId: contributor.user_uuid,
|
|
27
|
+
sourceName: PermissionSourceNameEnum.Expert,
|
|
28
|
+
scopeType: PermissionScopeEnum.Project,
|
|
29
|
+
scopeId: projectUuid,
|
|
30
|
+
resourceType: PermissionResourceEnum.Locale,
|
|
31
|
+
action: PermissionActionEnum.Review,
|
|
32
|
+
resourceId,
|
|
33
|
+
};
|
|
53
34
|
});
|
|
54
35
|
}
|
|
55
|
-
export function mapProjectContributorPermissions(contributor, projectUuid
|
|
36
|
+
export function mapProjectContributorPermissions(contributor, projectUuid) {
|
|
56
37
|
return [
|
|
57
38
|
...mapAdminRightsToPermissions(contributor, projectUuid),
|
|
58
|
-
...mapLanguagesToPermissions(contributor, projectUuid
|
|
39
|
+
...mapLanguagesToPermissions(contributor, projectUuid),
|
|
59
40
|
];
|
|
60
41
|
}
|
|
61
42
|
//# sourceMappingURL=permissionsUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionsUtils.js","sourceRoot":"","sources":["../../src/utils/permissionsUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,kCAAkC,CAAA;AAEzC,MAAM,UAAU,2BAA2B,CACzC,WAA+B,EAC/B,
|
|
1
|
+
{"version":3,"file":"permissionsUtils.js","sourceRoot":"","sources":["../../src/utils/permissionsUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,kCAAkC,CAAA;AAEzC,MAAM,UAAU,2BAA2B,CACzC,WAA+B,EAC/B,WAAmB;IAEnB,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,aAAa,EAAE;QACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,aAAa,EAAE;QAC1B,MAAM,EAAE,WAAW,CAAC,SAAS;QAC7B,UAAU,EAAE,wBAAwB,CAAC,MAAM;QAC3C,SAAS,EAAE,mBAAmB,CAAC,OAAO;QACtC,OAAO,EAAE,WAAW;QACpB,YAAY,EAAE,sBAAsB,CAAC,OAAO;QAC5C,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,WAA+B,EAC/B,WAAmB;IAEnB,OAAO,WAAW,CAAC,SAAS;SACzB,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;SAC1C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACtD,OAAO;YACL,EAAE,EAAE,aAAa,EAAE;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,aAAa,EAAE;YAC1B,MAAM,EAAE,WAAW,CAAC,SAAS;YAC7B,UAAU,EAAE,wBAAwB,CAAC,MAAM;YAC3C,SAAS,EAAE,mBAAmB,CAAC,OAAO;YACtC,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,sBAAsB,CAAC,MAAM;YAC3C,MAAM,EAAE,oBAAoB,CAAC,MAAM;YACnC,UAAU;SACX,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,WAA+B,EAC/B,WAAmB;IAEnB,OAAO;QACL,GAAG,2BAA2B,CAAC,WAAW,EAAE,WAAW,CAAC;QACxD,GAAG,yBAAyB,CAAC,WAAW,EAAE,WAAW,CAAC;KACvD,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lokalise/expert-api-s2s-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"README.md"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@lokalise/backend-http-client": "^10.0.0",
|
|
32
32
|
"@lokalise/node-api": "^15.4.0",
|
|
33
33
|
"@lokalise/common-api-schemas": "^2.1.0",
|
|
34
|
-
"@lokalise/workspaces-api-schemas": "^5.
|
|
34
|
+
"@lokalise/workspaces-api-schemas": "^5.9.0",
|
|
35
35
|
"@lokalise/id-utils": "^3.0.1",
|
|
36
36
|
"openid-client": "^6.3.4"
|
|
37
37
|
},
|