@microsoft/teamsfx 0.6.3-alpha.26aa11b7c.0 → 0.6.3-alpha.42a29d71b.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/index.esm2017.js +117 -10
- package/dist/index.esm2017.js.map +1 -1
- package/dist/index.esm2017.mjs +192 -35
- package/dist/index.esm2017.mjs.map +1 -1
- package/dist/index.esm5.js +121 -9
- package/dist/index.esm5.js.map +1 -1
- package/dist/index.node.cjs.js +197 -33
- package/dist/index.node.cjs.js.map +1 -1
- package/package.json +3 -3
- package/types/teamsfx.d.ts +1366 -1262
package/dist/index.esm2017.mjs
CHANGED
|
@@ -71,6 +71,10 @@ var ErrorCode;
|
|
|
71
71
|
* Identity type error.
|
|
72
72
|
*/
|
|
73
73
|
ErrorCode["IdentityTypeNotSupported"] = "IdentityTypeNotSupported";
|
|
74
|
+
/**
|
|
75
|
+
* Authentication info already exists error.
|
|
76
|
+
*/
|
|
77
|
+
ErrorCode["AuthorizationInfoAlreadyExists"] = "AuthorizationInfoAlreadyExists";
|
|
74
78
|
})(ErrorCode || (ErrorCode = {}));
|
|
75
79
|
/**
|
|
76
80
|
* @internal
|
|
@@ -92,9 +96,14 @@ ErrorMessage.FailToAcquireTokenOnBehalfOfUser = "Failed to acquire access token
|
|
|
92
96
|
ErrorMessage.OnlyMSTeamsChannelSupported = "{0} is only supported in MS Teams Channel";
|
|
93
97
|
// IdentityTypeNotSupported Error
|
|
94
98
|
ErrorMessage.IdentityTypeNotSupported = "{0} identity is not supported in {1}";
|
|
99
|
+
// AuthorizationInfoError
|
|
100
|
+
ErrorMessage.AuthorizationHeaderAlreadyExists = "Authorization header already exists!";
|
|
101
|
+
ErrorMessage.BasicCredentialAlreadyExists = "Basic credential already exists!";
|
|
95
102
|
// InvalidParameter Error
|
|
96
103
|
ErrorMessage.EmptyParameter = "Parameter {0} is empty";
|
|
97
104
|
ErrorMessage.DuplicateHttpsOptionProperty = "Axios HTTPS agent already defined value for property {0}";
|
|
105
|
+
ErrorMessage.DuplicateApiKeyInHeader = "The request already defined api key in request header with name {0}.";
|
|
106
|
+
ErrorMessage.DuplicateApiKeyInQueryParam = "The request already defined api key in query parameter with name {0}.";
|
|
98
107
|
/**
|
|
99
108
|
* Error class with code and message thrown by the SDK.
|
|
100
109
|
*
|
|
@@ -1419,7 +1428,6 @@ function createApiClient(apiEndpoint, authProvider) {
|
|
|
1419
1428
|
}
|
|
1420
1429
|
|
|
1421
1430
|
// Copyright (c) Microsoft Corporation.
|
|
1422
|
-
// Licensed under the MIT license.
|
|
1423
1431
|
/**
|
|
1424
1432
|
* Provider that handles Bearer Token authentication
|
|
1425
1433
|
*
|
|
@@ -1427,7 +1435,7 @@ function createApiClient(apiEndpoint, authProvider) {
|
|
|
1427
1435
|
*/
|
|
1428
1436
|
class BearerTokenAuthProvider {
|
|
1429
1437
|
/**
|
|
1430
|
-
* @param getToken Function that returns the content of bearer token used in http request
|
|
1438
|
+
* @param { () => Promise<string> } getToken - Function that returns the content of bearer token used in http request
|
|
1431
1439
|
*
|
|
1432
1440
|
* @beta
|
|
1433
1441
|
*/
|
|
@@ -1437,9 +1445,13 @@ class BearerTokenAuthProvider {
|
|
|
1437
1445
|
/**
|
|
1438
1446
|
* Adds authentication info to http requests
|
|
1439
1447
|
*
|
|
1440
|
-
* @param config - Contains all the request information and can be updated to include extra authentication info.
|
|
1448
|
+
* @param { AxiosRequestConfig } config - Contains all the request information and can be updated to include extra authentication info.
|
|
1441
1449
|
* Refer https://axios-http.com/docs/req_config for detailed document.
|
|
1442
1450
|
*
|
|
1451
|
+
* @returns Updated axios request config.
|
|
1452
|
+
*
|
|
1453
|
+
* @throws {@link ErrorCode|AuthorizationInfoAlreadyExists} - when Authorization header already exists in request configuration.
|
|
1454
|
+
*
|
|
1443
1455
|
* @beta
|
|
1444
1456
|
*/
|
|
1445
1457
|
async AddAuthenticationInfo(config) {
|
|
@@ -1448,13 +1460,152 @@ class BearerTokenAuthProvider {
|
|
|
1448
1460
|
config.headers = {};
|
|
1449
1461
|
}
|
|
1450
1462
|
if (config.headers["Authorization"]) {
|
|
1451
|
-
throw new
|
|
1463
|
+
throw new ErrorWithCode(ErrorMessage.AuthorizationHeaderAlreadyExists, ErrorCode.AuthorizationInfoAlreadyExists);
|
|
1452
1464
|
}
|
|
1453
1465
|
config.headers["Authorization"] = `Bearer ${token}`;
|
|
1454
1466
|
return config;
|
|
1455
1467
|
}
|
|
1456
1468
|
}
|
|
1457
1469
|
|
|
1470
|
+
// Copyright (c) Microsoft Corporation.
|
|
1471
|
+
/**
|
|
1472
|
+
* Provider that handles Basic authentication
|
|
1473
|
+
*
|
|
1474
|
+
* @beta
|
|
1475
|
+
*/
|
|
1476
|
+
class BasicAuthProvider {
|
|
1477
|
+
/**
|
|
1478
|
+
*
|
|
1479
|
+
* @param { string } userName - Username used in basic auth
|
|
1480
|
+
* @param { string } password - Password used in basic auth
|
|
1481
|
+
*
|
|
1482
|
+
* @throws {@link ErrorCode|InvalidParameter} - when username or password is empty.
|
|
1483
|
+
* @throws {@link ErrorCode|RuntimeNotSupported} when runtime is browser.
|
|
1484
|
+
*
|
|
1485
|
+
* @beta
|
|
1486
|
+
*/
|
|
1487
|
+
constructor(userName, password) {
|
|
1488
|
+
if (!userName) {
|
|
1489
|
+
throw new ErrorWithCode(formatString(ErrorMessage.EmptyParameter, "username"), ErrorCode.InvalidParameter);
|
|
1490
|
+
}
|
|
1491
|
+
if (!password) {
|
|
1492
|
+
throw new ErrorWithCode(formatString(ErrorMessage.EmptyParameter, "password"), ErrorCode.InvalidParameter);
|
|
1493
|
+
}
|
|
1494
|
+
this.userName = userName;
|
|
1495
|
+
this.password = password;
|
|
1496
|
+
}
|
|
1497
|
+
/**
|
|
1498
|
+
* Adds authentication info to http requests
|
|
1499
|
+
*
|
|
1500
|
+
* @param { AxiosRequestConfig } config - Contains all the request information and can be updated to include extra authentication info.
|
|
1501
|
+
* Refer https://axios-http.com/docs/req_config for detailed document.
|
|
1502
|
+
*
|
|
1503
|
+
* @returns Updated axios request config.
|
|
1504
|
+
*
|
|
1505
|
+
* @throws {@link ErrorCode|AuthorizationInfoAlreadyExists} - when Authorization header or auth property already exists in request configuration.
|
|
1506
|
+
* @throws {@link ErrorCode|RuntimeNotSupported} when runtime is browser.
|
|
1507
|
+
*
|
|
1508
|
+
* @beta
|
|
1509
|
+
*/
|
|
1510
|
+
async AddAuthenticationInfo(config) {
|
|
1511
|
+
if (config.headers && config.headers["Authorization"]) {
|
|
1512
|
+
throw new ErrorWithCode(ErrorMessage.AuthorizationHeaderAlreadyExists, ErrorCode.AuthorizationInfoAlreadyExists);
|
|
1513
|
+
}
|
|
1514
|
+
if (config.auth) {
|
|
1515
|
+
throw new ErrorWithCode(ErrorMessage.BasicCredentialAlreadyExists, ErrorCode.AuthorizationInfoAlreadyExists);
|
|
1516
|
+
}
|
|
1517
|
+
config.auth = {
|
|
1518
|
+
username: this.userName,
|
|
1519
|
+
password: this.password,
|
|
1520
|
+
};
|
|
1521
|
+
return config;
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
// Copyright (c) Microsoft Corporation.
|
|
1526
|
+
/**
|
|
1527
|
+
* Provider that handles API Key authentication
|
|
1528
|
+
*
|
|
1529
|
+
* @beta
|
|
1530
|
+
*/
|
|
1531
|
+
class ApiKeyProvider {
|
|
1532
|
+
/**
|
|
1533
|
+
*
|
|
1534
|
+
* @param { string } keyName - The name of request header or query parameter that specifies API Key
|
|
1535
|
+
* @param { string } keyValue - The value of API Key
|
|
1536
|
+
* @param { ApiKeyLocation } keyLocation - The location of API Key: request header or query parameter.
|
|
1537
|
+
*
|
|
1538
|
+
* @throws {@link ErrorCode|InvalidParameter} - when key name or key value is empty.
|
|
1539
|
+
* @throws {@link ErrorCode|RuntimeNotSupported} when runtime is browser.
|
|
1540
|
+
*
|
|
1541
|
+
* @beta
|
|
1542
|
+
*/
|
|
1543
|
+
constructor(keyName, keyValue, keyLocation) {
|
|
1544
|
+
if (!keyName) {
|
|
1545
|
+
throw new ErrorWithCode(formatString(ErrorMessage.EmptyParameter, "keyName"), ErrorCode.InvalidParameter);
|
|
1546
|
+
}
|
|
1547
|
+
if (!keyValue) {
|
|
1548
|
+
throw new ErrorWithCode(formatString(ErrorMessage.EmptyParameter, "keyVaule"), ErrorCode.InvalidParameter);
|
|
1549
|
+
}
|
|
1550
|
+
this.keyName = keyName;
|
|
1551
|
+
this.keyValue = keyValue;
|
|
1552
|
+
this.keyLocation = keyLocation;
|
|
1553
|
+
}
|
|
1554
|
+
/**
|
|
1555
|
+
* Adds authentication info to http requests
|
|
1556
|
+
*
|
|
1557
|
+
* @param { AxiosRequestConfig } config - Contains all the request information and can be updated to include extra authentication info.
|
|
1558
|
+
* Refer https://axios-http.com/docs/req_config for detailed document.
|
|
1559
|
+
*
|
|
1560
|
+
* @returns Updated axios request config.
|
|
1561
|
+
*
|
|
1562
|
+
* @throws {@link ErrorCode|AuthorizationInfoAlreadyExists} - when API key already exists in request header or url query parameter.
|
|
1563
|
+
* @throws {@link ErrorCode|RuntimeNotSupported} when runtime is browser.
|
|
1564
|
+
*
|
|
1565
|
+
* @beta
|
|
1566
|
+
*/
|
|
1567
|
+
async AddAuthenticationInfo(config) {
|
|
1568
|
+
switch (this.keyLocation) {
|
|
1569
|
+
case ApiKeyLocation.Header:
|
|
1570
|
+
if (!config.headers) {
|
|
1571
|
+
config.headers = {};
|
|
1572
|
+
}
|
|
1573
|
+
if (config.headers[this.keyName]) {
|
|
1574
|
+
throw new ErrorWithCode(formatString(ErrorMessage.DuplicateApiKeyInHeader, this.keyName), ErrorCode.AuthorizationInfoAlreadyExists);
|
|
1575
|
+
}
|
|
1576
|
+
config.headers[this.keyName] = this.keyValue;
|
|
1577
|
+
break;
|
|
1578
|
+
case ApiKeyLocation.QueryParams:
|
|
1579
|
+
if (!config.params) {
|
|
1580
|
+
config.params = {};
|
|
1581
|
+
}
|
|
1582
|
+
const url = new URL(config.url, config.baseURL);
|
|
1583
|
+
if (config.params[this.keyName] || url.searchParams.has(this.keyName)) {
|
|
1584
|
+
throw new ErrorWithCode(formatString(ErrorMessage.DuplicateApiKeyInQueryParam, this.keyName), ErrorCode.AuthorizationInfoAlreadyExists);
|
|
1585
|
+
}
|
|
1586
|
+
config.params[this.keyName] = this.keyValue;
|
|
1587
|
+
break;
|
|
1588
|
+
}
|
|
1589
|
+
return config;
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
/**
|
|
1593
|
+
* Define available location for API Key location
|
|
1594
|
+
*
|
|
1595
|
+
* @beta
|
|
1596
|
+
*/
|
|
1597
|
+
var ApiKeyLocation;
|
|
1598
|
+
(function (ApiKeyLocation) {
|
|
1599
|
+
/**
|
|
1600
|
+
* The API Key is placed in request header
|
|
1601
|
+
*/
|
|
1602
|
+
ApiKeyLocation[ApiKeyLocation["Header"] = 0] = "Header";
|
|
1603
|
+
/**
|
|
1604
|
+
* The API Key is placed in query parameter
|
|
1605
|
+
*/
|
|
1606
|
+
ApiKeyLocation[ApiKeyLocation["QueryParams"] = 1] = "QueryParams";
|
|
1607
|
+
})(ApiKeyLocation || (ApiKeyLocation = {}));
|
|
1608
|
+
|
|
1458
1609
|
// Copyright (c) Microsoft Corporation.
|
|
1459
1610
|
/**
|
|
1460
1611
|
* Provider that handles Certificate authentication
|
|
@@ -1466,6 +1617,8 @@ class CertificateAuthProvider {
|
|
|
1466
1617
|
*
|
|
1467
1618
|
* @param { SecureContextOptions } certOption - information about the cert used in http requests
|
|
1468
1619
|
*
|
|
1620
|
+
* @throws {@link ErrorCode|InvalidParameter} - when cert option is empty.
|
|
1621
|
+
*
|
|
1469
1622
|
* @beta
|
|
1470
1623
|
*/
|
|
1471
1624
|
constructor(certOption) {
|
|
@@ -1509,15 +1662,14 @@ class CertificateAuthProvider {
|
|
|
1509
1662
|
*
|
|
1510
1663
|
* @param { string | Buffer } cert - The cert chain in PEM format
|
|
1511
1664
|
* @param { string | Buffer } key - The private key for the cert chain
|
|
1512
|
-
* @param { string
|
|
1513
|
-
* @param { string? | Buffer? } ca - Overrides the trusted CA certificates
|
|
1665
|
+
* @param { {passphrase?: string; ca?: string | Buffer} } options - Optional settings when create the cert options.
|
|
1514
1666
|
*
|
|
1515
1667
|
* @returns Instance of SecureContextOptions
|
|
1516
1668
|
*
|
|
1517
1669
|
* @throws {@link ErrorCode|InvalidParameter} - when any parameter is empty
|
|
1518
1670
|
*
|
|
1519
1671
|
*/
|
|
1520
|
-
function createPemCertOption(cert, key,
|
|
1672
|
+
function createPemCertOption(cert, key, options) {
|
|
1521
1673
|
if (cert.length === 0) {
|
|
1522
1674
|
throw new ErrorWithCode(formatString(ErrorMessage.EmptyParameter, "cert"), ErrorCode.InvalidParameter);
|
|
1523
1675
|
}
|
|
@@ -1527,32 +1679,48 @@ function createPemCertOption(cert, key, passphrase, ca) {
|
|
|
1527
1679
|
return {
|
|
1528
1680
|
cert,
|
|
1529
1681
|
key,
|
|
1530
|
-
passphrase,
|
|
1531
|
-
ca,
|
|
1682
|
+
passphrase: options === null || options === void 0 ? void 0 : options.passphrase,
|
|
1683
|
+
ca: options === null || options === void 0 ? void 0 : options.ca,
|
|
1532
1684
|
};
|
|
1533
1685
|
}
|
|
1534
1686
|
/**
|
|
1535
1687
|
* Helper to create SecureContextOptions from PFX format cert
|
|
1536
1688
|
*
|
|
1537
1689
|
* @param { string | Buffer } pfx - The content of .pfx file
|
|
1538
|
-
* @param { string
|
|
1690
|
+
* @param { {passphrase?: string} } options - Optional settings when create the cert options.
|
|
1539
1691
|
*
|
|
1540
1692
|
* @returns Instance of SecureContextOptions
|
|
1541
1693
|
*
|
|
1542
1694
|
* @throws {@link ErrorCode|InvalidParameter} - when any parameter is empty
|
|
1543
1695
|
*
|
|
1544
1696
|
*/
|
|
1545
|
-
function createPfxCertOption(pfx,
|
|
1697
|
+
function createPfxCertOption(pfx, options) {
|
|
1546
1698
|
if (pfx.length === 0) {
|
|
1547
1699
|
throw new ErrorWithCode(formatString(ErrorMessage.EmptyParameter, "pfx"), ErrorCode.InvalidParameter);
|
|
1548
1700
|
}
|
|
1549
1701
|
return {
|
|
1550
1702
|
pfx,
|
|
1551
|
-
passphrase,
|
|
1703
|
+
passphrase: options === null || options === void 0 ? void 0 : options.passphrase,
|
|
1552
1704
|
};
|
|
1553
1705
|
}
|
|
1554
1706
|
|
|
1555
1707
|
// Copyright (c) Microsoft Corporation.
|
|
1708
|
+
// Following keys are used by SDK internally
|
|
1709
|
+
const ReservedKey = new Set([
|
|
1710
|
+
"authorityHost",
|
|
1711
|
+
"tenantId",
|
|
1712
|
+
"clientId",
|
|
1713
|
+
"clientSecret",
|
|
1714
|
+
"initiateLoginEndpoint",
|
|
1715
|
+
"applicationIdUri",
|
|
1716
|
+
"apiEndpoint",
|
|
1717
|
+
"apiName",
|
|
1718
|
+
"sqlServerEndpoint",
|
|
1719
|
+
"sqlUsername",
|
|
1720
|
+
"sqlPassword",
|
|
1721
|
+
"sqlDatabaseName",
|
|
1722
|
+
"sqlIdentityId",
|
|
1723
|
+
]);
|
|
1556
1724
|
/**
|
|
1557
1725
|
* A class providing credential and configuration.
|
|
1558
1726
|
* @beta
|
|
@@ -1726,10 +1894,10 @@ class TeamsFx {
|
|
|
1726
1894
|
this.configuration.set("sqlDatabaseName", env.SQL_DATABASE_NAME);
|
|
1727
1895
|
this.configuration.set("sqlIdentityId", env.IDENTITY_ID);
|
|
1728
1896
|
Object.keys(env).forEach((key) => {
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
this.configuration.set(key.substring(8), value);
|
|
1897
|
+
if (ReservedKey.has(key)) {
|
|
1898
|
+
internalLogger.warn(`The name of environment variable ${key} is preserved. Will not load it as configuration.`);
|
|
1732
1899
|
}
|
|
1900
|
+
this.configuration.set(key, env[key]);
|
|
1733
1901
|
});
|
|
1734
1902
|
}
|
|
1735
1903
|
}
|
|
@@ -1763,13 +1931,6 @@ class NotificationMiddleware {
|
|
|
1763
1931
|
await this.conversationReferenceStore.set(reference);
|
|
1764
1932
|
break;
|
|
1765
1933
|
}
|
|
1766
|
-
case ActivityType.CurrentBotMessaged: {
|
|
1767
|
-
const reference = TurnContext.getConversationReference(context.activity);
|
|
1768
|
-
if (!(await this.conversationReferenceStore.check(reference))) {
|
|
1769
|
-
await this.conversationReferenceStore.set(reference);
|
|
1770
|
-
}
|
|
1771
|
-
break;
|
|
1772
|
-
}
|
|
1773
1934
|
case ActivityType.CurrentBotUninstalled:
|
|
1774
1935
|
case ActivityType.TeamDeleted: {
|
|
1775
1936
|
const reference = TurnContext.getConversationReference(context.activity);
|
|
@@ -1791,9 +1952,6 @@ class NotificationMiddleware {
|
|
|
1791
1952
|
return ActivityType.CurrentBotUninstalled;
|
|
1792
1953
|
}
|
|
1793
1954
|
}
|
|
1794
|
-
else if (activityType === "message") {
|
|
1795
|
-
return ActivityType.CurrentBotMessaged;
|
|
1796
|
-
}
|
|
1797
1955
|
else if (activityType === "conversationUpdate") {
|
|
1798
1956
|
const eventType = (_b = activity.channelData) === null || _b === void 0 ? void 0 : _b.eventType;
|
|
1799
1957
|
if (eventType === "teamDeleted") {
|
|
@@ -2566,8 +2724,8 @@ class MessageBuilder {
|
|
|
2566
2724
|
/**
|
|
2567
2725
|
* Build a bot message activity attached with adaptive card.
|
|
2568
2726
|
*
|
|
2569
|
-
* @param getCardData Function to prepare your card data.
|
|
2570
2727
|
* @param cardTemplate The adaptive card template.
|
|
2728
|
+
* @param data card data used to render the template.
|
|
2571
2729
|
* @returns A bot message activity attached with an adaptive card.
|
|
2572
2730
|
*
|
|
2573
2731
|
* @example
|
|
@@ -2592,19 +2750,18 @@ class MessageBuilder {
|
|
|
2592
2750
|
* title: string,
|
|
2593
2751
|
* description: string
|
|
2594
2752
|
* };
|
|
2595
|
-
* const card = MessageBuilder.attachAdaptiveCard<CardData>(
|
|
2596
|
-
*
|
|
2597
|
-
*
|
|
2598
|
-
*
|
|
2599
|
-
*
|
|
2753
|
+
* const card = MessageBuilder.attachAdaptiveCard<CardData>(
|
|
2754
|
+
* cardTemplate, {
|
|
2755
|
+
* title: "sample card title",
|
|
2756
|
+
* description: "sample card description"
|
|
2757
|
+
* });
|
|
2600
2758
|
* ```
|
|
2601
2759
|
*
|
|
2602
2760
|
* @beta
|
|
2603
2761
|
*/
|
|
2604
|
-
static attachAdaptiveCard(
|
|
2605
|
-
const cardData = getCardData();
|
|
2762
|
+
static attachAdaptiveCard(cardTemplate, data) {
|
|
2606
2763
|
return {
|
|
2607
|
-
attachments: [CardFactory.adaptiveCard(AdaptiveCards.declare(cardTemplate).render(
|
|
2764
|
+
attachments: [CardFactory.adaptiveCard(AdaptiveCards.declare(cardTemplate).render(data))],
|
|
2608
2765
|
};
|
|
2609
2766
|
}
|
|
2610
2767
|
/**
|
|
@@ -2711,5 +2868,5 @@ class MessageBuilder {
|
|
|
2711
2868
|
}
|
|
2712
2869
|
}
|
|
2713
2870
|
|
|
2714
|
-
export { AppCredential, BearerTokenAuthProvider, CertificateAuthProvider, Channel, CommandBot, ConversationBot, ErrorCode, ErrorWithCode, IdentityType, LogLevel, Member, MessageBuilder, MsGraphAuthProvider, NotificationBot, OnBehalfOfUserCredential, TeamsBotInstallation, TeamsBotSsoPrompt, TeamsFx, TeamsUserCredential, createApiClient, createMicrosoftGraphClient, createPemCertOption, createPfxCertOption, getLogLevel, getTediousConnectionConfig, sendAdaptiveCard, sendMessage, setLogFunction, setLogLevel, setLogger };
|
|
2871
|
+
export { ApiKeyLocation, ApiKeyProvider, AppCredential, BasicAuthProvider, BearerTokenAuthProvider, CertificateAuthProvider, Channel, CommandBot, ConversationBot, ErrorCode, ErrorWithCode, IdentityType, LogLevel, Member, MessageBuilder, MsGraphAuthProvider, NotificationBot, OnBehalfOfUserCredential, TeamsBotInstallation, TeamsBotSsoPrompt, TeamsFx, TeamsUserCredential, createApiClient, createMicrosoftGraphClient, createPemCertOption, createPfxCertOption, getLogLevel, getTediousConnectionConfig, sendAdaptiveCard, sendMessage, setLogFunction, setLogLevel, setLogger };
|
|
2715
2872
|
//# sourceMappingURL=index.esm2017.mjs.map
|