@learncard/chapi-plugin 1.0.26 → 1.0.28
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/chapi-plugin.cjs.development.js +86 -25
- package/dist/chapi-plugin.cjs.development.js.map +4 -4
- package/dist/chapi-plugin.cjs.production.min.js +1 -1
- package/dist/chapi-plugin.cjs.production.min.js.map +4 -4
- package/dist/chapi-plugin.esm.js +85 -25
- package/dist/chapi-plugin.esm.js.map +4 -4
- package/package.json +4 -4
@@ -1,3 +1,4 @@
|
|
1
|
+
"use strict";
|
1
2
|
var __defProp = Object.defineProperty;
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
@@ -280,7 +281,9 @@ var Injector = class {
|
|
280
281
|
throw new TypeError("`name` must be a non-empty string.");
|
281
282
|
}
|
282
283
|
if (!(definition && typeof definition === "object" && Array.isArray(definition.functions))) {
|
283
|
-
throw new TypeError(
|
284
|
+
throw new TypeError(
|
285
|
+
"`definition.function` must be an array of function names or function definition objects to be defined."
|
286
|
+
);
|
284
287
|
}
|
285
288
|
const self = this;
|
286
289
|
const api = {};
|
@@ -289,7 +292,11 @@ var Injector = class {
|
|
289
292
|
fn = { name: fn, options: {} };
|
290
293
|
}
|
291
294
|
api[fn.name] = async function() {
|
292
|
-
return self.client.send(
|
295
|
+
return self.client.send(
|
296
|
+
name + "." + fn.name,
|
297
|
+
[...arguments],
|
298
|
+
fn.options
|
299
|
+
);
|
293
300
|
};
|
294
301
|
});
|
295
302
|
self._apis[name] = api;
|
@@ -466,13 +473,17 @@ var WebApp = class {
|
|
466
473
|
}
|
467
474
|
async show() {
|
468
475
|
if (!this._connected) {
|
469
|
-
throw new Error(
|
476
|
+
throw new Error(
|
477
|
+
'Cannot "show" yet; not connected. Did you call ".connect()"?'
|
478
|
+
);
|
470
479
|
}
|
471
480
|
return this._control.show();
|
472
481
|
}
|
473
482
|
async hide() {
|
474
483
|
if (!this._connected) {
|
475
|
-
throw new Error(
|
484
|
+
throw new Error(
|
485
|
+
'Cannot "hide" yet; not connected. Did you call ".connect()?"'
|
486
|
+
);
|
476
487
|
}
|
477
488
|
return this._control.hide();
|
478
489
|
}
|
@@ -546,9 +557,11 @@ var WebAppWindowInlineDialog = class extends WebAppWindowDialog {
|
|
546
557
|
this.dialog.className = this.dialog.className + " " + className;
|
547
558
|
}
|
548
559
|
const style = document.createElement("style");
|
549
|
-
style.appendChild(
|
560
|
+
style.appendChild(
|
561
|
+
document.createTextNode(`dialog.web-app-window::backdrop {
|
550
562
|
background-color: transparent;
|
551
|
-
}`)
|
563
|
+
}`)
|
564
|
+
);
|
552
565
|
this.container = document.createElement("div");
|
553
566
|
applyStyle(this.container, {
|
554
567
|
position: "relative",
|
@@ -731,7 +744,13 @@ var WebAppWindow = class {
|
|
731
744
|
this.dialog = dialog = handle._dialog;
|
732
745
|
}
|
733
746
|
this._private._readyPromise = new Promise((resolve, reject) => {
|
734
|
-
this._timeoutId = setTimeout(
|
747
|
+
this._timeoutId = setTimeout(
|
748
|
+
() => reject(new DOMException(
|
749
|
+
"Loading Web application window timed out.",
|
750
|
+
"TimeoutError"
|
751
|
+
)),
|
752
|
+
timeout
|
753
|
+
);
|
735
754
|
this._private._resolveReady = (value) => {
|
736
755
|
clearTimeout(this.timeoutId);
|
737
756
|
this._timeoutId = null;
|
@@ -748,7 +767,10 @@ var WebAppWindow = class {
|
|
748
767
|
};
|
749
768
|
this._private.destroy = () => {
|
750
769
|
if (this._timeoutId) {
|
751
|
-
this._private._rejectReady(new DOMException(
|
770
|
+
this._private._rejectReady(new DOMException(
|
771
|
+
"Web application window closed before ready.",
|
772
|
+
"AbortError"
|
773
|
+
));
|
752
774
|
}
|
753
775
|
if (!this._destroyed) {
|
754
776
|
this.dialog.destroy();
|
@@ -952,10 +974,20 @@ var CredentialHandlerService = class {
|
|
952
974
|
this._credentialHandler = credentialHandler;
|
953
975
|
}
|
954
976
|
async request(credentialRequestEvent) {
|
955
|
-
return await this._credentialHandler._emitter.emit(
|
977
|
+
return await this._credentialHandler._emitter.emit(
|
978
|
+
new CredentialRequestEvent(Object.assign(
|
979
|
+
{ credentialHandler: this._credentialHandler },
|
980
|
+
credentialRequestEvent
|
981
|
+
))
|
982
|
+
);
|
956
983
|
}
|
957
984
|
async store(credentialStoreEvent) {
|
958
|
-
return await this._credentialHandler._emitter.emit(
|
985
|
+
return await this._credentialHandler._emitter.emit(
|
986
|
+
new CredentialStoreEvent(Object.assign(
|
987
|
+
{ credentialHandler: this._credentialHandler },
|
988
|
+
credentialStoreEvent
|
989
|
+
))
|
990
|
+
);
|
959
991
|
}
|
960
992
|
};
|
961
993
|
__name(CredentialHandlerService, "CredentialHandlerService");
|
@@ -970,7 +1002,12 @@ var CredentialHandler = class extends WebApp {
|
|
970
1002
|
super(mediatorOrigin, inline);
|
971
1003
|
this._emitter = new EventEmitter({
|
972
1004
|
async waitUntil(event) {
|
973
|
-
return event._promise || Promise.reject(
|
1005
|
+
return event._promise || Promise.reject(
|
1006
|
+
new DOMException(
|
1007
|
+
'No "credentialrequest" event handler found.',
|
1008
|
+
"NotFoundError"
|
1009
|
+
)
|
1010
|
+
);
|
974
1011
|
}
|
975
1012
|
});
|
976
1013
|
}
|
@@ -982,13 +1019,19 @@ var CredentialHandler = class extends WebApp {
|
|
982
1019
|
}
|
983
1020
|
addEventListener(eventType, fn) {
|
984
1021
|
if (!EVENT_TYPES.includes(eventType)) {
|
985
|
-
throw new DOMException(
|
1022
|
+
throw new DOMException(
|
1023
|
+
`Unsupported event type "${eventType}"`,
|
1024
|
+
"NotSupportedError"
|
1025
|
+
);
|
986
1026
|
}
|
987
1027
|
return this._emitter.addEventListener(eventType, fn);
|
988
1028
|
}
|
989
1029
|
removeEventListener(eventType, fn) {
|
990
1030
|
if (!EVENT_TYPES.includes(eventType)) {
|
991
|
-
throw new DOMException(
|
1031
|
+
throw new DOMException(
|
1032
|
+
`Unsupported event type "${eventType}"`,
|
1033
|
+
"NotSupportedError"
|
1034
|
+
);
|
992
1035
|
}
|
993
1036
|
return this._emitter.removeEventListener(eventType, fn);
|
994
1037
|
}
|
@@ -1055,7 +1098,9 @@ var CredentialManager = class {
|
|
1055
1098
|
this.hints = new CredentialHints(url, injector);
|
1056
1099
|
}
|
1057
1100
|
static async requestPermission() {
|
1058
|
-
const status = await navigator.credentialsPolyfill.permissions.request(
|
1101
|
+
const status = await navigator.credentialsPolyfill.permissions.request(
|
1102
|
+
{ name: "credentialhandler" }
|
1103
|
+
);
|
1059
1104
|
return status.state;
|
1060
1105
|
}
|
1061
1106
|
};
|
@@ -1113,7 +1158,9 @@ var CredentialHandlers = class {
|
|
1113
1158
|
return await this._remote.hasRegistration("credential", url);
|
1114
1159
|
}
|
1115
1160
|
_deprecateNotice() {
|
1116
|
-
console.warn(
|
1161
|
+
console.warn(
|
1162
|
+
'Credential handler registration APIs are deprecated. The credential handler specified in "manifest.json" is now automatically registered when a user grants permission to install a credential handler via "CredentialManager.requestPermission()".'
|
1163
|
+
);
|
1117
1164
|
}
|
1118
1165
|
};
|
1119
1166
|
__name(CredentialHandlers, "CredentialHandlers");
|
@@ -1234,7 +1281,9 @@ async function load(options = {
|
|
1234
1281
|
} else if (options && typeof options === "object" && typeof options.mediatorOrigin === "string") {
|
1235
1282
|
mediatorUrl = `${options.mediatorOrigin}/mediator`;
|
1236
1283
|
} else {
|
1237
|
-
throw new Error(
|
1284
|
+
throw new Error(
|
1285
|
+
'"options.mediatorOrigin" must be a string expressing the origin of the mediator.'
|
1286
|
+
);
|
1238
1287
|
}
|
1239
1288
|
const appContext = new WebAppContext();
|
1240
1289
|
const injector = appContext.createWindow(mediatorUrl, {
|
@@ -1242,9 +1291,11 @@ async function load(options = {
|
|
1242
1291
|
timeout: 3e4
|
1243
1292
|
});
|
1244
1293
|
const style = document.createElement("style");
|
1245
|
-
style.appendChild(document.createTextNode(
|
1294
|
+
style.appendChild(document.createTextNode(
|
1295
|
+
`dialog.web-app-window.credential-mediator > .web-app-window-backdrop {
|
1246
1296
|
background-color: rgba(0, 0, 0, 0.25);
|
1247
|
-
}`
|
1297
|
+
}`
|
1298
|
+
));
|
1248
1299
|
document.body.appendChild(style);
|
1249
1300
|
const polyfill = {};
|
1250
1301
|
polyfill.permissions = new PermissionManager(injector);
|
@@ -1255,8 +1306,12 @@ async function load(options = {
|
|
1255
1306
|
polyfill.WebCredential = WebCredential2;
|
1256
1307
|
navigator.credentialsPolyfill = polyfill;
|
1257
1308
|
if ("credentials" in navigator) {
|
1258
|
-
navigator.credentials.get = polyfill.credentials.get.bind(
|
1259
|
-
|
1309
|
+
navigator.credentials.get = polyfill.credentials.get.bind(
|
1310
|
+
polyfill.credentials
|
1311
|
+
);
|
1312
|
+
navigator.credentials.store = polyfill.credentials.store.bind(
|
1313
|
+
polyfill.credentials
|
1314
|
+
);
|
1260
1315
|
} else {
|
1261
1316
|
navigator.credentials = polyfill.credentials;
|
1262
1317
|
}
|
@@ -1286,7 +1341,7 @@ function _assertSecureContext() {
|
|
1286
1341
|
}
|
1287
1342
|
__name(_assertSecureContext, "_assertSecureContext");
|
1288
1343
|
|
1289
|
-
// ../../../node_modules/.pnpm/web-credential-handler@2.0.
|
1344
|
+
// ../../../node_modules/.pnpm/web-credential-handler@2.0.2/node_modules/web-credential-handler/CredentialEventProxy.js
|
1290
1345
|
var PROXY_EVENT_TIMEOUT = 6e4;
|
1291
1346
|
var CredentialEventProxy = class extends WebApp {
|
1292
1347
|
constructor() {
|
@@ -1320,7 +1375,7 @@ var CredentialEventProxy = class extends WebApp {
|
|
1320
1375
|
};
|
1321
1376
|
__name(CredentialEventProxy, "CredentialEventProxy");
|
1322
1377
|
|
1323
|
-
// ../../../node_modules/.pnpm/web-credential-handler@2.0.
|
1378
|
+
// ../../../node_modules/.pnpm/web-credential-handler@2.0.2/node_modules/web-credential-handler/index.js
|
1324
1379
|
var DEFAULT_MEDIATOR = "https://authn.io";
|
1325
1380
|
async function installHandler() {
|
1326
1381
|
const CredentialManager2 = navigator.credentialsPolyfill.CredentialManager;
|
@@ -1367,7 +1422,9 @@ __name(listener, "listener");
|
|
1367
1422
|
async function createResponse({ event, get, store }) {
|
1368
1423
|
const result = await (get || store)({ event });
|
1369
1424
|
if (!(result && typeof result === "object")) {
|
1370
|
-
throw new TypeError(
|
1425
|
+
throw new TypeError(
|
1426
|
+
'Return value of "get" or "store" hook must be an object.'
|
1427
|
+
);
|
1371
1428
|
}
|
1372
1429
|
if (result.type === "response") {
|
1373
1430
|
return { dataType: result.dataType, data: result.data };
|
@@ -1392,7 +1449,9 @@ async function createResponse({ event, get, store }) {
|
|
1392
1449
|
hintKey: event.hintKey
|
1393
1450
|
});
|
1394
1451
|
}
|
1395
|
-
throw new Error(
|
1452
|
+
throw new Error(
|
1453
|
+
'Return value of "get" or "store" must have a type of "response" or "redirect".'
|
1454
|
+
);
|
1396
1455
|
}
|
1397
1456
|
__name(createResponse, "createResponse");
|
1398
1457
|
|
@@ -1432,7 +1491,9 @@ var getCHAPIPlugin = /* @__PURE__ */ __name(async () => {
|
|
1432
1491
|
methods: {
|
1433
1492
|
installChapiHandler: async () => installHandler(),
|
1434
1493
|
activateChapiHandler: async (_learnCard, {
|
1435
|
-
mediatorOrigin = `https://authn.io/mediator?${encodeURIComponent(
|
1494
|
+
mediatorOrigin = `https://authn.io/mediator?${encodeURIComponent(
|
1495
|
+
window.location.origin
|
1496
|
+
)}`,
|
1436
1497
|
get,
|
1437
1498
|
store
|
1438
1499
|
}) => {
|