@mindline/sync 1.0.63 → 1.0.65
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/.vs/VSWorkspaceState.json +0 -1
- package/.vs/slnx.sqlite +0 -0
- package/.vs/sync/FileContentIndex/84f0adcf-097f-4dbb-bfd0-bad019a52af3.vsidx +0 -0
- package/.vs/sync/v17/.wsuo +0 -0
- package/.vs/sync/v17/DocumentLayout.json +121 -0
- package/hybridspa.ts +16 -16
- package/index.d.ts +11 -10
- package/index.ts +119 -80
- package/package.json +1 -1
- package/tsconfig.json +27 -27
- package/tsconfig.node.json +9 -9
- package/.vs/sync/FileContentIndex/33a3ee4b-9c43-4e0d-ae64-59dc9fd9c401.vsidx +0 -0
- package/.vs/sync/FileContentIndex/4199b40e-a51a-4aab-a20d-788df6fd8a20.vsidx +0 -0
- package/.vs/sync/FileContentIndex/9661818c-cb81-4929-ad9b-3efa4622ff45.vsidx +0 -0
- package/.vs/sync/config/applicationhost.config +0 -1011
package/index.ts
CHANGED
|
@@ -28,51 +28,52 @@ export class APIResult {
|
|
|
28
28
|
array: Array<Object> | null;
|
|
29
29
|
constructor() { this.result = true; this.status = 200; this.error = ""; this.version = version; this.array = null; }
|
|
30
30
|
}
|
|
31
|
-
export class
|
|
31
|
+
export class mindlineConfig {
|
|
32
32
|
static environmentTag: string = "dev";
|
|
33
33
|
// config API endpoints
|
|
34
34
|
static adminEndpoint(): string {
|
|
35
|
-
return `https://${
|
|
35
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/admin`
|
|
36
36
|
};
|
|
37
37
|
static adminIncompleteEndpoint(): string {
|
|
38
|
-
return `https://${
|
|
38
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/incomplete-admin`;
|
|
39
39
|
};
|
|
40
40
|
static adminsEndpoint(): string {
|
|
41
|
-
return `https://${
|
|
42
|
-
};
|
|
41
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/admins`;
|
|
42
|
+
};
|
|
43
43
|
static configEndpoint(): string {
|
|
44
|
-
return `https://${
|
|
44
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/configuration`;
|
|
45
45
|
};
|
|
46
46
|
static configsEndpoint(): string {
|
|
47
|
-
return `https://${
|
|
47
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/configurations`;
|
|
48
48
|
};
|
|
49
49
|
static initEndpoint(): string {
|
|
50
|
-
return `https://${
|
|
50
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/configuration/init`;
|
|
51
51
|
};
|
|
52
52
|
static readerStartSyncEndpoint(): string {
|
|
53
|
-
return `https://${
|
|
53
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/startSync`;
|
|
54
54
|
};
|
|
55
55
|
static tenantEndpoint(): string {
|
|
56
|
-
return `https://${
|
|
56
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/tenant`;
|
|
57
57
|
};
|
|
58
58
|
static tenantsEndpoint(): string {
|
|
59
|
-
return `https://${
|
|
59
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/tenants`;
|
|
60
60
|
};
|
|
61
61
|
static workspaceEndpoint(): string {
|
|
62
|
-
return `https://${
|
|
62
|
+
return `https://${mindlineConfig.environmentTag}-configurationapi-westus.azurewebsites.net/api/v1/workspaces`;
|
|
63
63
|
};
|
|
64
64
|
// SignalR endpoint
|
|
65
65
|
static signalREndpoint(): string {
|
|
66
|
-
return `https://${
|
|
66
|
+
return `https://${mindlineConfig.environmentTag}-signalrdispatcher-westus.azurewebsites.net/statsHub`;
|
|
67
67
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
static
|
|
72
|
-
static
|
|
73
|
-
static
|
|
74
|
-
static
|
|
75
|
-
|
|
68
|
+
}
|
|
69
|
+
export class graphConfig {
|
|
70
|
+
// graph API predicates
|
|
71
|
+
static graphGroupsPredicate: string = "v1.0/groups";
|
|
72
|
+
static graphMailPredicate: string = "v1.0/me/messages";
|
|
73
|
+
static graphMePredicate: string = "v1.0/me";
|
|
74
|
+
static graphOauth2PermissionGrantsPredicate: string = "v1.0/oauth2PermissionGrants";
|
|
75
|
+
static graphServicePrincipalsPredicate: string = "v1.0/servicePrincipals";
|
|
76
|
+
static graphUsersPredicate: string = "v1.0/users";
|
|
76
77
|
static graphTenantByDomainPredicate: string = "beta/tenantRelationships/findTenantInformationByDomainName";
|
|
77
78
|
static graphTenantByIdPredicate: string = "beta/tenantRelationships/findTenantInformationByTenantId";
|
|
78
79
|
// authority values are based on the well-known OIDC auth endpoints
|
|
@@ -172,6 +173,14 @@ export class Tenant {
|
|
|
172
173
|
this.graphSP = "";
|
|
173
174
|
}
|
|
174
175
|
}
|
|
176
|
+
function getAppId(authority: string): string {
|
|
177
|
+
switch (authority) {
|
|
178
|
+
case graphConfig.authorityWW: return "63100afe-506e-4bb2-8ff7-d8d5ab373129";
|
|
179
|
+
case graphConfig.authorityUS: return "762d313c-dcfd-4582-8cc5-53cc9844f62e";
|
|
180
|
+
case graphConfig.authorityCN: return "814e0ebd-ada6-42b4-b8ae-e26f3861a0aa";
|
|
181
|
+
default: debugger; return "";
|
|
182
|
+
}
|
|
183
|
+
}
|
|
175
184
|
function getGraphEndpoint(authority: string): string {
|
|
176
185
|
switch (authority) {
|
|
177
186
|
case graphConfig.authorityWW: return "https://graph.microsoft.com/";
|
|
@@ -180,6 +189,14 @@ function getGraphEndpoint(authority: string): string {
|
|
|
180
189
|
default: debugger; return "";
|
|
181
190
|
}
|
|
182
191
|
}
|
|
192
|
+
function getLoginEndpoint(authority: string): string {
|
|
193
|
+
switch (authority) {
|
|
194
|
+
case graphConfig.authorityWW: return "https://login.microsoft.com/";
|
|
195
|
+
case graphConfig.authorityUS: return "https://login.microsoft.us/";
|
|
196
|
+
case graphConfig.authorityCN: return "https://login.partner.microsoftonline.cn/";
|
|
197
|
+
default: debugger; return "";
|
|
198
|
+
}
|
|
199
|
+
}
|
|
183
200
|
export enum TenantConfigType {
|
|
184
201
|
source = 1,
|
|
185
202
|
target = 2,
|
|
@@ -1112,7 +1129,7 @@ export class BatchArray {
|
|
|
1112
1129
|
}
|
|
1113
1130
|
// start SignalR connection based on each batchId
|
|
1114
1131
|
batchIdArray.map((batchPair: Object) => {
|
|
1115
|
-
const endpoint: string =
|
|
1132
|
+
const endpoint: string = mindlineConfig.signalREndpoint();
|
|
1116
1133
|
let endpointUrl: URL = new URL(endpoint);
|
|
1117
1134
|
endpointUrl.searchParams.append("statsId", batchPair.BatchId);
|
|
1118
1135
|
console.log(`Creating SignalR Hub for TID: ${batchPair.SourceId} ${endpointUrl.href}`);
|
|
@@ -1195,9 +1212,7 @@ export class TenantNode {
|
|
|
1195
1212
|
}
|
|
1196
1213
|
}
|
|
1197
1214
|
}
|
|
1198
|
-
//
|
|
1199
|
-
// Azure AD Graph API
|
|
1200
|
-
//
|
|
1215
|
+
// ======================= Azure AD Graph API ===============================
|
|
1201
1216
|
export async function groupsGet(instance: IPublicClientApplication, user: User | undefined, groupSearchString: string): Promise<{ groups: Group[], error: string }> {
|
|
1202
1217
|
// need a logged in user to get graph users
|
|
1203
1218
|
if (user == null || user.spacode == "") {
|
|
@@ -1208,7 +1223,8 @@ export async function groupsGet(instance: IPublicClientApplication, user: User |
|
|
|
1208
1223
|
let options = { method: "GET", headers: headers };
|
|
1209
1224
|
// make /groups endpoint call
|
|
1210
1225
|
try {
|
|
1211
|
-
let groupsEndpoint =
|
|
1226
|
+
let groupsEndpoint: string = getGraphEndpoint(user.authority) + graphConfig.graphGroupsPredicate;
|
|
1227
|
+
groupsEndpoint += `/?$filter=startsWith(displayName, '${groupSearchString}')`;
|
|
1212
1228
|
let response = await fetch(groupsEndpoint, options);
|
|
1213
1229
|
let data = await response.json();
|
|
1214
1230
|
if (typeof data.error !== "undefined") {
|
|
@@ -1221,10 +1237,10 @@ export async function groupsGet(instance: IPublicClientApplication, user: User |
|
|
|
1221
1237
|
return { groups: [], error: `Exception: ${error}` };
|
|
1222
1238
|
}
|
|
1223
1239
|
}
|
|
1224
|
-
export async function oauth2PermissionGrantsGet(options: RequestInit, spid: string, oid: string): Promise<{ grants: string, id: string, error: string }> {
|
|
1240
|
+
export async function oauth2PermissionGrantsGet(options: RequestInit, user: User, spid: string, oid: string): Promise<{ grants: string, id: string, error: string }> {
|
|
1225
1241
|
try {
|
|
1226
1242
|
// make /oauth2PermissionGrants endpoint call
|
|
1227
|
-
let spurl: string = graphConfig.
|
|
1243
|
+
let spurl: string = getGraphEndpoint(user.authority) + graphConfig.graphOauth2PermissionGrantsPredicate;
|
|
1228
1244
|
let url: URL = new URL(spurl);
|
|
1229
1245
|
url.searchParams.append("$filter", `resourceId eq '${spid}' and consentType eq 'Principal' and principalId eq '${oid}'`);
|
|
1230
1246
|
let response = await fetch(url.href, options);
|
|
@@ -1251,7 +1267,8 @@ export async function oauth2PermissionGrantsSet(instance: IPublicClientApplicati
|
|
|
1251
1267
|
}
|
|
1252
1268
|
// make /oauth2PermissionGrants endpoint call
|
|
1253
1269
|
try {
|
|
1254
|
-
let grantsurl: string =
|
|
1270
|
+
let grantsurl: string = getGraphEndpoint(loggedInUser.authority);
|
|
1271
|
+
grantsurl += graphConfig.graphOauth2PermissionGrantsPredicate + `/${id}`;
|
|
1255
1272
|
let scopesBody: string = `{ "scope": "${scopes}" }`;
|
|
1256
1273
|
const headers = await defineHeaders(instance, loggedInUser);
|
|
1257
1274
|
let options: RequestInit = { method: "PATCH", headers: headers, body: scopesBody };
|
|
@@ -1288,19 +1305,21 @@ export function requestAdminConsent(user: User, scope: string): void {
|
|
|
1288
1305
|
// https://learn.microsoft.com/EN-US/azure/active-directory/develop/scopes-oidc#client-credentials-grant-flow-and-default
|
|
1289
1306
|
// https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#request-the-permissions-from-a-directory-admin
|
|
1290
1307
|
//
|
|
1291
|
-
let adminConsentURL: string =
|
|
1308
|
+
let adminConsentURL: string = getLoginEndpoint(user.authority);
|
|
1292
1309
|
adminConsentURL += user.tid;
|
|
1293
1310
|
adminConsentURL += "/adminconsent";
|
|
1294
1311
|
let url: URL = new URL(adminConsentURL);
|
|
1295
|
-
|
|
1312
|
+
let clientId: string = getAppId(user.authority);
|
|
1313
|
+
url.searchParams.append("client_id", clientId);
|
|
1296
1314
|
url.searchParams.append("redirect_uri", window.location.origin);
|
|
1297
1315
|
url.searchParams.append("domain_hint", user.companyDomain);
|
|
1298
1316
|
window.location.assign(url.href);
|
|
1299
1317
|
}
|
|
1300
|
-
export async function servicePrincipalGet(options: RequestInit, appid: string): Promise<{ spid: string, error: string }> {
|
|
1318
|
+
export async function servicePrincipalGet(options: RequestInit, user: User, appid: string): Promise<{ spid: string, error: string }> {
|
|
1301
1319
|
try {
|
|
1302
1320
|
// make /servicePrincipals endpoint call to get the Service Principal ID
|
|
1303
|
-
let spurl: string =
|
|
1321
|
+
let spurl: string = getGraphEndpoint(user.authority);
|
|
1322
|
+
spurl += graphConfig.graphServicePrincipalsPredicate;
|
|
1304
1323
|
spurl += `(appId='${appid}')`;
|
|
1305
1324
|
let url: URL = new URL(spurl);
|
|
1306
1325
|
url.searchParams.append("$select", "id,appId,displayName");
|
|
@@ -1335,52 +1354,52 @@ export async function signIn(user: User, tasks: TaskArray): Promise<boolean> {
|
|
|
1335
1354
|
return false;
|
|
1336
1355
|
}
|
|
1337
1356
|
}
|
|
1357
|
+
// SignIn by an admin consents the app, Challenge adds incremental permissions dynamically, but requires a consented app - TEST THIS
|
|
1358
|
+
let signinURL: string = window.location.href;
|
|
1338
1359
|
switch (user.authority) {
|
|
1339
1360
|
case graphConfig.authorityWW:
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
tenantURL += "MicrosoftIdentity/Account/SignIn";
|
|
1343
|
-
let url: URL = new URL(tenantURL);
|
|
1344
|
-
url.searchParams.append("redirectUri", window.location.origin);
|
|
1345
|
-
url.searchParams.append("domainHint", "organizations");
|
|
1346
|
-
if (user.oid !== "1") { // "1" means no mail has been set by admin initially in the app, oid and mail should be same if user has set and not yet signed in
|
|
1347
|
-
url.searchParams.append("loginHint", user.mail);
|
|
1348
|
-
}
|
|
1349
|
-
tasks.setTaskStart("initialization", new Date());
|
|
1350
|
-
tasks.setTaskStart("authenticate user", new Date());
|
|
1351
|
-
window.location.assign(url.href);
|
|
1352
|
-
return true;
|
|
1361
|
+
signinURL += "MicrosoftIdentity/Account/SignIn";
|
|
1362
|
+
break;
|
|
1353
1363
|
case graphConfig.authorityUS:
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
usURL += "USGov";
|
|
1357
|
-
let urlUS: URL = new URL(usURL);
|
|
1358
|
-
urlUS.searchParams.append("redirectUri", window.location.origin);
|
|
1359
|
-
urlUS.searchParams.append("domainHint", user.companyDomain);
|
|
1360
|
-
if (user.oid !== "1") {
|
|
1361
|
-
urlUS.searchParams.append("loginHint", user.mail);
|
|
1362
|
-
}
|
|
1363
|
-
tasks.setTaskStart("initialization", new Date());
|
|
1364
|
-
tasks.setTaskStart("authenticate user", new Date());
|
|
1365
|
-
window.location.assign(urlUS.href);
|
|
1366
|
-
return true;
|
|
1364
|
+
signinURL += "USGov/SignIn";
|
|
1365
|
+
break;
|
|
1367
1366
|
case graphConfig.authorityCN:
|
|
1368
|
-
|
|
1367
|
+
signinURL += "China/SignIn";
|
|
1369
1368
|
break;
|
|
1370
1369
|
default:
|
|
1371
1370
|
// unknown authority
|
|
1372
|
-
|
|
1371
|
+
return false;
|
|
1373
1372
|
}
|
|
1374
|
-
|
|
1373
|
+
let url: URL = new URL(signinURL);
|
|
1374
|
+
url.searchParams.append("redirectUri", window.location.origin);
|
|
1375
|
+
url.searchParams.append("domainHint", "organizations");
|
|
1376
|
+
if (user.oid !== "1") { // "1" means no mail has been set by admin initially in the app, oid and mail should be same if user has set and not yet signed in
|
|
1377
|
+
url.searchParams.append("loginHint", user.mail);
|
|
1378
|
+
}
|
|
1379
|
+
tasks.setTaskStart("initialization", new Date());
|
|
1380
|
+
tasks.setTaskStart("authenticate user", new Date());
|
|
1381
|
+
window.location.assign(url.href);
|
|
1382
|
+
return true;
|
|
1375
1383
|
}
|
|
1376
1384
|
export function signInIncrementally(user: User, scope: string): void {
|
|
1377
1385
|
if (user.oid == "1") return;
|
|
1378
|
-
//
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1386
|
+
// for dynamic delegated permissions, we can use the Microsoft Identity Web Account Controller Challenge method
|
|
1387
|
+
let challengeURL: string = window.location.href;
|
|
1388
|
+
switch (user.authority) {
|
|
1389
|
+
case graphConfig.authorityWW:
|
|
1390
|
+
challengeURL += "MicrosoftIdentity/Account/Challenge";
|
|
1391
|
+
break;
|
|
1392
|
+
case graphConfig.authorityUS:
|
|
1393
|
+
challengeURL += "USGov/Challenge";
|
|
1394
|
+
break;
|
|
1395
|
+
case graphConfig.authorityCN:
|
|
1396
|
+
challengeURL += "China/Challenge";
|
|
1397
|
+
break;
|
|
1398
|
+
default:
|
|
1399
|
+
// unknown authority
|
|
1400
|
+
return;
|
|
1401
|
+
}
|
|
1402
|
+
let url: URL = new URL(challengeURL);
|
|
1384
1403
|
url.searchParams.append("redirectUri", window.location.origin);
|
|
1385
1404
|
url.searchParams.append("scope", scope);
|
|
1386
1405
|
url.searchParams.append("domainHint", "organizations");
|
|
@@ -1410,8 +1429,23 @@ export async function signOut(user: User): Promise<boolean>{
|
|
|
1410
1429
|
// OnRedirectToIdentityProviderForSignOut - this is where we set the logout_hint for user we are trying to logout
|
|
1411
1430
|
// OnSignedOutCallbackRedirect - called when the call sucessfully completes
|
|
1412
1431
|
let signoutURL: string = window.location.href;
|
|
1413
|
-
|
|
1414
|
-
|
|
1432
|
+
switch (user.authority) {
|
|
1433
|
+
case graphConfig.authorityWW:
|
|
1434
|
+
signoutURL += "MicrosoftIdentity/Account/SignOut";
|
|
1435
|
+
break;
|
|
1436
|
+
case graphConfig.authorityUS:
|
|
1437
|
+
signoutURL += "USGov/SignOut";
|
|
1438
|
+
break;
|
|
1439
|
+
case graphConfig.authorityCN:
|
|
1440
|
+
signoutURL += "China/SignOut";
|
|
1441
|
+
break;
|
|
1442
|
+
default:
|
|
1443
|
+
// unknown authority
|
|
1444
|
+
return false;
|
|
1445
|
+
}
|
|
1446
|
+
url = new URL(signoutURL);
|
|
1447
|
+
url.searchParams.append("redirectUri", window.location.origin);
|
|
1448
|
+
window.location.assign(url.href);
|
|
1415
1449
|
return true;
|
|
1416
1450
|
}
|
|
1417
1451
|
//tenantRelationshipsGetByDomain - query AAD for associated company name and id
|
|
@@ -1564,11 +1598,16 @@ export async function tenantUnauthenticatedLookup(tenant: Tenant, debug: boolean
|
|
|
1564
1598
|
if (data) {
|
|
1565
1599
|
// store tenant ID and authority
|
|
1566
1600
|
var tenantAuthEndpoint = data.authorization_endpoint;
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1601
|
+
// USGov/China tenants are registered in WW with USGov/China authority values!
|
|
1602
|
+
for (let k = 0; k < 3; k++) {
|
|
1603
|
+
var authMatches = tenantAuthEndpoint.match(regexes[k]);
|
|
1604
|
+
if (authMatches != null) {
|
|
1605
|
+
tenant.tid = authMatches[2];
|
|
1606
|
+
tenant.authority = authMatches[1];
|
|
1607
|
+
console.log(`Successful GET from openid well-known endpoint: tid: ${tenant.tid} authority: ${tenant.authority}`);
|
|
1608
|
+
return true; // success, need UX to re-render
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1572
1611
|
}
|
|
1573
1612
|
else {
|
|
1574
1613
|
console.log(`Failed JSON parse of openid well-known endpoint response ${openidEndpoint}.`);
|
|
@@ -1599,7 +1638,7 @@ export async function userDelegatedScopesGet(instance: IPublicClientApplication,
|
|
|
1599
1638
|
try {
|
|
1600
1639
|
// first, cache Graph resource ID (service principal) for this tenant if we don't have it already
|
|
1601
1640
|
if (tenant.graphSP == "") {
|
|
1602
|
-
let { spid, error } = await servicePrincipalGet(options, "00000003-0000-0000-c000-000000000000");
|
|
1641
|
+
let { spid, error } = await servicePrincipalGet(options, loggedInUser, "00000003-0000-0000-c000-000000000000");
|
|
1603
1642
|
if (error != "") {
|
|
1604
1643
|
debugger;
|
|
1605
1644
|
return { scopes: null, id: null, error: `${error}` };
|
|
@@ -1607,7 +1646,7 @@ export async function userDelegatedScopesGet(instance: IPublicClientApplication,
|
|
|
1607
1646
|
tenant.graphSP = spid;
|
|
1608
1647
|
}
|
|
1609
1648
|
// then, retrieve the delegated Graph permissions assigned to this user
|
|
1610
|
-
let { grants, id, error } = await oauth2PermissionGrantsGet(options, tenant.graphSP, loggedInUser.oid);
|
|
1649
|
+
let { grants, id, error } = await oauth2PermissionGrantsGet(options, loggedInUser, tenant.graphSP, loggedInUser.oid);
|
|
1611
1650
|
if (error != "") {
|
|
1612
1651
|
debugger;
|
|
1613
1652
|
return { scopes: null, id: null, error: `${error}` };
|
|
@@ -1657,7 +1696,9 @@ export async function usersGet(instance: IPublicClientApplication, user: User |
|
|
|
1657
1696
|
// create headers
|
|
1658
1697
|
const headers = await defineHeaders(instance, user);
|
|
1659
1698
|
let options = { method: "GET", headers: headers };
|
|
1660
|
-
let
|
|
1699
|
+
let usersEndpoint = getGraphEndpoint(user.authority);
|
|
1700
|
+
usersEndpoint += graphConfig.graphUsersPredicate;
|
|
1701
|
+
let response = await fetch(usersEndpoint, options);
|
|
1661
1702
|
let data = await response.json();
|
|
1662
1703
|
if (typeof data.error !== "undefined") {
|
|
1663
1704
|
return { users: [], error: `${data.error.code}: ${data.error.message}` };
|
|
@@ -1796,9 +1837,7 @@ export async function userAdd(instance: IPublicClientApplication, authorizedUser
|
|
|
1796
1837
|
export async function userRemove(instance: IPublicClientApplication, authorizedUser: User, user: User, workspaceId: string): Promise<APIResult> {
|
|
1797
1838
|
return adminDelete(instance, authorizedUser, user, workspaceId);
|
|
1798
1839
|
}
|
|
1799
|
-
//
|
|
1800
1840
|
// Mindline Config API internal helper functions
|
|
1801
|
-
//
|
|
1802
1841
|
function processReturnedAdmins(workspace: Workspace, ii: InitInfo, returnedAdmins: Array<Object>) {
|
|
1803
1842
|
returnedAdmins.map((item) => {
|
|
1804
1843
|
// are we already tracking this user?
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindline/sync",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.65",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"exports": "./index.ts",
|
|
7
7
|
"description": "sync is a node.js package encapsulating javscript classes required for configuring Mindline sync service.",
|
package/tsconfig.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ESNext",
|
|
4
|
-
"lib": [ "DOM", "DOM.Iterable", "ESNext" ],
|
|
5
|
-
"types": [ "vite/client", "vite-plugin-svgr/client", "node", "jest" ],
|
|
6
|
-
"allowJs": false,
|
|
7
|
-
"skipLibCheck": false,
|
|
8
|
-
"esModuleInterop": false,
|
|
9
|
-
"allowSyntheticDefaultImports": true,
|
|
10
|
-
"forceConsistentCasingInFileNames": true,
|
|
11
|
-
"module": "esnext",
|
|
12
|
-
"moduleResolution": "node",
|
|
13
|
-
"resolveJsonModule": true,
|
|
14
|
-
"isolatedModules": true,
|
|
15
|
-
"noEmit": true,
|
|
16
|
-
"jsx": "react-jsx",
|
|
17
|
-
"composite": false,
|
|
18
|
-
|
|
19
|
-
/* Linting */
|
|
20
|
-
"strict": true,
|
|
21
|
-
"noUnusedLocals": true,
|
|
22
|
-
"noUnusedParameters": true,
|
|
23
|
-
"noFallthroughCasesInSwitch": true
|
|
24
|
-
},
|
|
25
|
-
"include": ["src"],
|
|
26
|
-
"references": [{ "path": "./tsconfig.node.json" }]
|
|
27
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"lib": [ "DOM", "DOM.Iterable", "ESNext" ],
|
|
5
|
+
"types": [ "vite/client", "vite-plugin-svgr/client", "node", "jest" ],
|
|
6
|
+
"allowJs": false,
|
|
7
|
+
"skipLibCheck": false,
|
|
8
|
+
"esModuleInterop": false,
|
|
9
|
+
"allowSyntheticDefaultImports": true,
|
|
10
|
+
"forceConsistentCasingInFileNames": true,
|
|
11
|
+
"module": "esnext",
|
|
12
|
+
"moduleResolution": "node",
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"isolatedModules": true,
|
|
15
|
+
"noEmit": true,
|
|
16
|
+
"jsx": "react-jsx",
|
|
17
|
+
"composite": false,
|
|
18
|
+
|
|
19
|
+
/* Linting */
|
|
20
|
+
"strict": true,
|
|
21
|
+
"noUnusedLocals": true,
|
|
22
|
+
"noUnusedParameters": true,
|
|
23
|
+
"noFallthroughCasesInSwitch": true
|
|
24
|
+
},
|
|
25
|
+
"include": ["src"],
|
|
26
|
+
"references": [{ "path": "./tsconfig.node.json" }]
|
|
27
|
+
}
|
package/tsconfig.node.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"composite": true,
|
|
4
|
-
"skipLibCheck": true,
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"allowSyntheticDefaultImports": true
|
|
8
|
-
}
|
|
9
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"composite": true,
|
|
4
|
+
"skipLibCheck": true,
|
|
5
|
+
"module": "ESNext",
|
|
6
|
+
"moduleResolution": "node",
|
|
7
|
+
"allowSyntheticDefaultImports": true
|
|
8
|
+
}
|
|
9
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|