aws-cdk 2.172.0 → 2.173.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/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/aws-auth/awscli-compatible.js +2 -1
- package/lib/index.js +2 -2
- package/package.json +8 -8
- package/test/api/aws-auth/awscli-compatible.test.js +1 -32
- package/test/api/logs/cli-logging.test.js +135 -0
- package/test/api/logs/logs-monitor.test.js +15 -7
- package/test/logging.test.js +0 -131
- /package/test/{logging.test.d.ts → api/logs/cli-logging.test.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aws-cdk",
|
|
3
3
|
"description": "CDK Toolkit, the command line tool for CDK apps",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.173.0",
|
|
5
5
|
"bin": {
|
|
6
6
|
"cdk": "bin/cdk"
|
|
7
7
|
},
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
},
|
|
68
68
|
"license": "Apache-2.0",
|
|
69
69
|
"devDependencies": {
|
|
70
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
71
|
-
"@aws-cdk/pkglint": "2.
|
|
72
|
-
"@aws-cdk/yargs-gen": "2.
|
|
70
|
+
"@aws-cdk/cdk-build-tools": "2.173.0-alpha.0",
|
|
71
|
+
"@aws-cdk/pkglint": "2.173.0-alpha.0",
|
|
72
|
+
"@aws-cdk/yargs-gen": "2.173.0-alpha.0",
|
|
73
73
|
"@octokit/rest": "^18.12.0",
|
|
74
74
|
"@types/archiver": "^5.3.4",
|
|
75
75
|
"@types/fs-extra": "^9.0.13",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@types/uuid": "^8.3.4",
|
|
85
85
|
"@types/wrap-ansi": "^3.0.0",
|
|
86
86
|
"@types/yargs": "^15.0.19",
|
|
87
|
-
"aws-cdk-lib": "2.
|
|
87
|
+
"aws-cdk-lib": "2.173.0",
|
|
88
88
|
"aws-sdk-client-mock": "^4.0.1",
|
|
89
89
|
"aws-sdk-client-mock-jest": "^4.0.1",
|
|
90
90
|
"axios": "^1.7.7",
|
|
@@ -100,9 +100,9 @@
|
|
|
100
100
|
"ts-mock-imports": "^1.3.16",
|
|
101
101
|
"xml-js": "^1.6.11",
|
|
102
102
|
"@aws-cdk/cloud-assembly-schema": "^38.0.0",
|
|
103
|
-
"@aws-cdk/cloudformation-diff": "2.
|
|
104
|
-
"@aws-cdk/cx-api": "2.
|
|
105
|
-
"@aws-cdk/region-info": "2.
|
|
103
|
+
"@aws-cdk/cloudformation-diff": "2.173.0",
|
|
104
|
+
"@aws-cdk/cx-api": "2.173.0",
|
|
105
|
+
"@aws-cdk/region-info": "2.173.0",
|
|
106
106
|
"@aws-sdk/client-appsync": "3.699.0",
|
|
107
107
|
"@aws-sdk/client-cloudformation": "3.699.0",
|
|
108
108
|
"@aws-sdk/client-cloudwatch-logs": "3.699.0",
|
|
@@ -211,35 +211,4 @@ describe('Session token', () => {
|
|
|
211
211
|
expect(process.env.AWS_SESSION_TOKEN).toEqual('aaa');
|
|
212
212
|
});
|
|
213
213
|
});
|
|
214
|
-
describe('Session token', () => {
|
|
215
|
-
beforeEach(() => {
|
|
216
|
-
process.env.AWS_ACCESS_KEY_ID = 'foo';
|
|
217
|
-
process.env.AWS_SECRET_ACCESS_KEY = 'bar';
|
|
218
|
-
});
|
|
219
|
-
test('does not mess up with session token env variables if they are undefined', async () => {
|
|
220
|
-
// Making sure these variables are not defined
|
|
221
|
-
delete process.env.AWS_SESSION_TOKEN;
|
|
222
|
-
delete process.env.AMAZON_SESSION_TOKEN;
|
|
223
|
-
await awscli_compatible_1.AwsCliCompatible.credentialChainBuilder();
|
|
224
|
-
expect(process.env.AWS_SESSION_TOKEN).toBeUndefined();
|
|
225
|
-
});
|
|
226
|
-
test('preserves AWS_SESSION_TOKEN if it is defined', async () => {
|
|
227
|
-
process.env.AWS_SESSION_TOKEN = 'aaa';
|
|
228
|
-
delete process.env.AMAZON_SESSION_TOKEN;
|
|
229
|
-
await awscli_compatible_1.AwsCliCompatible.credentialChainBuilder();
|
|
230
|
-
expect(process.env.AWS_SESSION_TOKEN).toEqual('aaa');
|
|
231
|
-
});
|
|
232
|
-
test('assigns AWS_SESSION_TOKEN if it is not defined but AMAZON_SESSION_TOKEN is', async () => {
|
|
233
|
-
delete process.env.AWS_SESSION_TOKEN;
|
|
234
|
-
process.env.AMAZON_SESSION_TOKEN = 'aaa';
|
|
235
|
-
await awscli_compatible_1.AwsCliCompatible.credentialChainBuilder();
|
|
236
|
-
expect(process.env.AWS_SESSION_TOKEN).toEqual('aaa');
|
|
237
|
-
});
|
|
238
|
-
test('preserves AWS_SESSION_TOKEN if both are defined', async () => {
|
|
239
|
-
process.env.AWS_SESSION_TOKEN = 'aaa';
|
|
240
|
-
process.env.AMAZON_SESSION_TOKEN = 'bbb';
|
|
241
|
-
await awscli_compatible_1.AwsCliCompatible.credentialChainBuilder();
|
|
242
|
-
expect(process.env.AWS_SESSION_TOKEN).toEqual('aaa');
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2xpLWNvbXBhdGlibGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2NsaS1jb21wYXRpYmxlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQixtRkFBK0U7QUFFL0UsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUV2QyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBRWQsMkRBQTJEO1FBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixHQUFHLFdBQVcsQ0FBQztRQUV0RCwwRUFBMEU7UUFDMUUsd0NBQXdDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFDdEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO0lBRTNDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBRTNELE1BQU0sTUFBTSxHQUFHOzs7R0FHaEIsQ0FBQztRQUVBLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBRWhFLE1BQU0sS0FBSyxHQUFHOzs7R0FHZixDQUFDO1FBRUEsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxD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Q0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw0RUFBNEUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1RixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFekMsTUFBTSxvQ0FBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRWhELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGlEQUFpRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRXpDLE1BQU0sb0NBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVoRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IEF3c0NsaUNvbXBhdGlibGUgfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpL2F3cy1hdXRoL2F3c2NsaS1jb21wYXRpYmxlJztcblxuZGVzY3JpYmUoJ0F3c0NsaUNvbXBhdGlibGUucmVnaW9uJywgKCkgPT4ge1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuXG4gICAgLy8gbWFrZSBzdXJlIHdlIGRvbid0IG1pc3Rha2VubHkgcG9pbnQgdG8gYW4gdW5yZWxhdGVkIGZpbGVcbiAgICBwcm9jZXNzLmVudi5BV1NfQ09ORklHX0ZJTEUgPSAnL2Rldi9udWxsJztcbiAgICBwcm9jZXNzLmVudi5BV1NfU0hBUkVEX0NSRURFTlRJQUxTX0ZJTEUgPSAnL2Rldi9udWxsJztcblxuICAgIC8vIHRoZXNlIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBpbmkgZmlsZXMgc28gd2UgbmVlZCB0byBkaXNhYmxlIHRoZW0gZm9yXG4gICAgLy8gdGhlIHRlc3QgdG8gaW52b2tlIHRoZSByaWdodCBmdW5jdGlvblxuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OO1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BTUFaT05fUkVHSU9OO1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT047XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFNQVpPTl9ERUZBVUxUX1JFR0lPTjtcblxuICB9KTtcblxuICB0ZXN0KCdkZWZhdWx0IHJlZ2lvbiBjYW4gYmUgc3BlY2lmaWVkIGluIGNvbmZpZycsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1yZWdpb24taW4tY29uZmlnXG4gIGA7XG5cbiAgICBhd2FpdCBleHBlY3QocmVnaW9uKHsgY29uZmlnRmlsZTogY29uZmlnIH0pKS5yZXNvbHZlcy50b0JlKCdyZWdpb24taW4tY29uZmlnJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlZmF1bHQgcmVnaW9uIGNhbiBiZSBzcGVjaWZpZWQgaW4gY3JlZGVudGlhbHMnLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjcmVkcyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1yZWdpb24taW4tY3JlZGVudGlhbHNcbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzIH0pKS5yZXNvbHZlcy50b0JlKCdyZWdpb24taW4tY3JlZGVudGlhbHMnKTtcblxuICB9KTtcblxuICB0ZXN0KCdwcm9maWxlIHJlZ2lvbiBjYW4gYmUgc3BlY2lmaWVkIGluIGNvbmZpZycsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW3Byb2ZpbGUgdXNlcjFdXG4gIHJlZ2lvbj1yZWdpb24taW4tY29uZmlnXG4gIGA7XG5cbiAgICBhd2FpdCBleHBlY3QocmVnaW9uKHsgY29uZmlnRmlsZTogY29uZmlnLCBwcm9maWxlOiAndXNlcjEnIH0pKS5yZXNvbHZlcy50b0JlKCdyZWdpb24taW4tY29uZmlnJyk7XG5cbiAgfSk7XG5cbiAgdGVzdCgncHJvZmlsZSByZWdpb24gY2FuIGJlIHNwZWNpZmllZCBpbiBjcmVkZW50aWFscycsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNyZWRzID0gYFxuICBbdXNlcjFdXG4gIHJlZ2lvbj1yZWdpb24taW4tY3JlZGVudGlhbHNcbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBwcm9maWxlOiAndXNlcjEnIH0pKS5yZXNvbHZlcy50b0JlKCdyZWdpb24taW4tY3JlZGVudGlhbHMnKTtcblxuICB9KTtcblxuICB0ZXN0KCd3aXRoIHByb2ZpbGUgfCBwcm9maWxlLXJlZ2lvbi1pbi1jcmVkZW50aWFscyBpcyBwcmlvcml0eSAxJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY29uZmlnID0gYFxuICBbZGVmYXVsdF1cbiAgcmVnaW9uPWRlZmF1bHQtcmVnaW9uLWluLWNvbmZpZ1xuXG4gIFtwcm9maWxlIHVzZXJdXG4gIHJlZ2lvbj1wcm9maWxlLXJlZ2lvbi1pbi1jb25maWdcblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHNcblxuICBbdXNlcl1cbiAgcmVnaW9uPXByb2ZpbGUtcmVnaW9uLWluLWNyZWRlbnRpYWxzXG4gIGA7XG5cbiAgICBhd2FpdCBleHBlY3QocmVnaW9uKHsgY3JlZGVudGlhbHNGaWxlOiBjcmVkcywgY29uZmlnRmlsZTogY29uZmlnLCBwcm9maWxlOiAndXNlcicgfSkpLnJlc29sdmVzLnRvQmUoJ3Byb2ZpbGUtcmVnaW9uLWluLWNyZWRlbnRpYWxzJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3dpdGggcHJvZmlsZSB8IHByb2ZpbGUtcmVnaW9uLWluLWNvbmZpZyBpcyBwcmlvcml0eSAyJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY29uZmlnID0gYFxuICBbZGVmYXVsdF1cbiAgcmVnaW9uPWRlZmF1bHQtcmVnaW9uLWluLWNvbmZpZ1xuXG4gIFtwcm9maWxlIHVzZXJdXG4gIHJlZ2lvbj1wcm9maWxlLXJlZ2lvbi1pbi1jb25maWdcblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHNcblxuICBbdXNlcl1cbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBjb25maWdGaWxlOiBjb25maWcsIHByb2ZpbGU6ICd1c2VyJyB9KSkucmVzb2x2ZXMudG9CZSgncHJvZmlsZS1yZWdpb24taW4tY29uZmlnJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3dpdGggcHJvZmlsZSB8IGRlZmF1bHQtcmVnaW9uLWluLWNyZWRlbnRpYWxzIGlzIHByaW9yaXR5IDMnLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY29uZmlnXG5cbiAgW3Byb2ZpbGUgdXNlcl1cblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHNcblxuICBbdXNlcl1cbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBjb25maWdGaWxlOiBjb25maWcsIHByb2ZpbGU6ICd1c2VyJyB9KSkucmVzb2x2ZXMudG9CZSgnZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHMnKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2l0aCBwcm9maWxlIHwgZGVmYXVsdC1yZWdpb24taW4tY29uZmlnIGlzIHByaW9yaXR5IDQnLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY29uZmlnXG5cbiAgW3Byb2ZpbGUgdXNlcl1cblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuXG4gIFt1c2VyXVxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZywgcHJvZmlsZTogJ3VzZXInIH0pKS5yZXNvbHZlcy50b0JlKCdkZWZhdWx0LXJlZ2lvbi1pbi1jb25maWcnKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2l0aCBwcm9maWxlIHwgdXMtZWFzdC0xIGlzIHByaW9yaXR5IDUnLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuXG4gIFtwcm9maWxlIHVzZXJdXG5cbiAgYDtcblxuICAgIGNvbnN0IGNyZWRzID0gYFxuICBbZGVmYXVsdF1cblxuICBbdXNlcl1cbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBjb25maWdGaWxlOiBjb25maWcsIHByb2ZpbGU6ICd1c2VyJyB9KSkucmVzb2x2ZXMudG9CZSgndXMtZWFzdC0xJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3dpdGhvdXQgcHJvZmlsZSB8IGRlZmF1bHQtcmVnaW9uLWluLWNyZWRlbnRpYWxzIGlzIHByaW9yaXR5IDEnLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY29uZmlnXG5cbiAgYDtcblxuICAgIGNvbnN0IGNyZWRzID0gYFxuICBbZGVmYXVsdF1cbiAgcmVnaW9uPWRlZmF1bHQtcmVnaW9uLWluLWNyZWRlbnRpYWxzXG5cbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBjb25maWdGaWxlOiBjb25maWcgfSkpLnJlc29sdmVzLnRvQmUoJ2RlZmF1bHQtcmVnaW9uLWluLWNyZWRlbnRpYWxzJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3dpdGhvdXQgcHJvZmlsZSB8IGRlZmF1bHQtcmVnaW9uLWluLWNvbmZpZyBpcyBwcmlvcml0eSAyJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY29uZmlnID0gYFxuICBbZGVmYXVsdF1cbiAgcmVnaW9uPWRlZmF1bHQtcmVnaW9uLWluLWNvbmZpZ1xuXG4gIGA7XG5cbiAgICBjb25zdCBjcmVkcyA9IGBcbiAgW2RlZmF1bHRdXG5cbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBjb25maWdGaWxlOiBjb25maWcgfSkpLnJlc29sdmVzLnRvQmUoJ2RlZmF1bHQtcmVnaW9uLWluLWNvbmZpZycpO1xuICB9KTtcblxuICB0ZXN0KCd3aXRob3V0IHByb2ZpbGUgfCB1cy1lYXN0LTEgaXMgcHJpb3JpdHkgMycsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW2RlZmF1bHRdXG5cbiAgYDtcblxuICAgIGNvbnN0IGNyZWRzID0gYFxuICBbZGVmYXVsdF1cblxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZyB9KSkucmVzb2x2ZXMudG9CZSgndXMtZWFzdC0xJyk7XG4gIH0pO1xuXG59KTtcblxuYXN5bmMgZnVuY3Rpb24gcmVnaW9uKG9wdHM6IHtcbiAgcmVhZG9ubHkgY29uZmlnRmlsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY3JlZGVudGlhbHNGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9maWxlPzogc3RyaW5nO1xufSkge1xuXG4gIGNvbnN0IHdvcmtkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdhd3NjbGktY29tcGF0aWJsZS50ZXN0JykpO1xuXG4gIHRyeSB7XG5cbiAgICBpZiAob3B0cy5jb25maWdGaWxlKSB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5qb2luKHdvcmtkaXIsICdjb25maWcnKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoY29uZmlnUGF0aCwgb3B0cy5jb25maWdGaWxlKTtcbiAgICAgIHByb2Nlc3MuZW52LkFXU19DT05GSUdfRklMRSA9IGNvbmZpZ1BhdGg7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuY3JlZGVudGlhbHNGaWxlKSB7XG4gICAgICBjb25zdCBjcmVkZW50aWFsc1BhdGggPSBwYXRoLmpvaW4od29ya2RpciwgJ2NyZWRlbnRpYWxzJyk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGNyZWRlbnRpYWxzUGF0aCwgb3B0cy5jcmVkZW50aWFsc0ZpbGUpO1xuICAgICAgcHJvY2Vzcy5lbnYuQVdTX1NIQVJFRF9DUkVERU5USUFMU19GSUxFID0gY3JlZGVudGlhbHNQYXRoO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLnJlZ2lvbihvcHRzLnByb2ZpbGUpO1xuXG4gIH0gZmluYWxseSB7XG4gICAgZnMucmVtb3ZlU3luYyh3b3JrZGlyKTtcbiAgfVxufVxuXG5kZXNjcmliZSgnU2Vzc2lvbiB0b2tlbicsICgpID0+IHtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgPSAnZm9vJztcbiAgICBwcm9jZXNzLmVudi5BV1NfU0VDUkVUX0FDQ0VTU19LRVkgPSAnYmFyJztcbiAgfSk7XG5cbiAgdGVzdCgnZG9lcyBub3QgbWVzcyB1cCB3aXRoIHNlc3Npb24gdG9rZW4gZW52IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bmRlZmluZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gTWFraW5nIHN1cmUgdGhlc2UgdmFyaWFibGVzIGFyZSBub3QgZGVmaW5lZFxuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTjtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuQU1BWk9OX1NFU1NJT05fVE9LRU47XG5cbiAgICBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLmNyZWRlbnRpYWxDaGFpbkJ1aWxkZXIoKTtcblxuICAgIGV4cGVjdChwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTikudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICB0ZXN0KCdwcmVzZXJ2ZXMgQVdTX1NFU1NJT05fVE9LRU4gaWYgaXQgaXMgZGVmaW5lZCcsIGFzeW5jICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTiA9ICdhYWEnO1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BTUFaT05fU0VTU0lPTl9UT0tFTjtcblxuICAgIGF3YWl0IEF3c0NsaUNvbXBhdGlibGUuY3JlZGVudGlhbENoYWluQnVpbGRlcigpO1xuXG4gICAgZXhwZWN0KHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOKS50b0VxdWFsKCdhYWEnKTtcbiAgfSk7XG5cbiAgdGVzdCgnYXNzaWducyBBV1NfU0VTU0lPTl9UT0tFTiBpZiBpdCBpcyBub3QgZGVmaW5lZCBidXQgQU1BWk9OX1NFU1NJT05fVE9LRU4gaXMnLCBhc3luYyAoKSA9PiB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOO1xuICAgIHByb2Nlc3MuZW52LkFNQVpPTl9TRVNTSU9OX1RPS0VOID0gJ2FhYSc7XG5cbiAgICBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLmNyZWRlbnRpYWxDaGFpbkJ1aWxkZXIoKTtcblxuICAgIGV4cGVjdChwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTikudG9FcXVhbCgnYWFhJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3ByZXNlcnZlcyBBV1NfU0VTU0lPTl9UT0tFTiBpZiBib3RoIGFyZSBkZWZpbmVkJywgYXN5bmMgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOID0gJ2FhYSc7XG4gICAgcHJvY2Vzcy5lbnYuQU1BWk9OX1NFU1NJT05fVE9LRU4gPSAnYmJiJztcblxuICAgIGF3YWl0IEF3c0NsaUNvbXBhdGlibGUuY3JlZGVudGlhbENoYWluQnVpbGRlcigpO1xuXG4gICAgZXhwZWN0KHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOKS50b0VxdWFsKCdhYWEnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1Nlc3Npb24gdG9rZW4nLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LkFXU19BQ0NFU1NfS0VZX0lEID0gJ2Zvbyc7XG4gICAgcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZID0gJ2Jhcic7XG4gIH0pO1xuXG4gIHRlc3QoJ2RvZXMgbm90IG1lc3MgdXAgd2l0aCBzZXNzaW9uIHRva2VuIGVudiB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5kZWZpbmVkJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIE1ha2luZyBzdXJlIHRoZXNlIHZhcmlhYmxlcyBhcmUgbm90IGRlZmluZWRcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU47XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFNQVpPTl9TRVNTSU9OX1RPS0VOO1xuXG4gICAgYXdhaXQgQXdzQ2xpQ29tcGF0aWJsZS5jcmVkZW50aWFsQ2hhaW5CdWlsZGVyKCk7XG5cbiAgICBleHBlY3QocHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4pLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJlc2VydmVzIEFXU19TRVNTSU9OX1RPS0VOIGlmIGl0IGlzIGRlZmluZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4gPSAnYWFhJztcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuQU1BWk9OX1NFU1NJT05fVE9LRU47XG5cbiAgICBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLmNyZWRlbnRpYWxDaGFpbkJ1aWxkZXIoKTtcblxuICAgIGV4cGVjdChwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTikudG9FcXVhbCgnYWFhJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2Fzc2lnbnMgQVdTX1NFU1NJT05fVE9LRU4gaWYgaXQgaXMgbm90IGRlZmluZWQgYnV0IEFNQVpPTl9TRVNTSU9OX1RPS0VOIGlzJywgYXN5bmMgKCkgPT4ge1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTjtcbiAgICBwcm9jZXNzLmVudi5BTUFaT05fU0VTU0lPTl9UT0tFTiA9ICdhYWEnO1xuXG4gICAgYXdhaXQgQXdzQ2xpQ29tcGF0aWJsZS5jcmVkZW50aWFsQ2hhaW5CdWlsZGVyKCk7XG5cbiAgICBleHBlY3QocHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4pLnRvRXF1YWwoJ2FhYScpO1xuICB9KTtcblxuICB0ZXN0KCdwcmVzZXJ2ZXMgQVdTX1NFU1NJT05fVE9LRU4gaWYgYm90aCBhcmUgZGVmaW5lZCcsIGFzeW5jICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTiA9ICdhYWEnO1xuICAgIHByb2Nlc3MuZW52LkFNQVpPTl9TRVNTSU9OX1RPS0VOID0gJ2JiYic7XG5cbiAgICBhd2FpdCBBd3NDbGlDb21wYXRpYmxlLmNyZWRlbnRpYWxDaGFpbkJ1aWxkZXIoKTtcblxuICAgIGV4cGVjdChwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTikudG9FcXVhbCgnYWFhJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2xpLWNvbXBhdGlibGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3c2NsaS1jb21wYXRpYmxlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQixtRkFBK0U7QUFFL0UsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUV2QyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBRWQsMkRBQTJEO1FBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixHQUFHLFdBQVcsQ0FBQztRQUV0RCwwRUFBMEU7UUFDMUUsd0NBQXdDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFDdEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO0lBRTNDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBRTNELE1BQU0sTUFBTSxHQUFHOzs7R0FHaEIsQ0FBQztRQUVBLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBRWhFLE1BQU0sS0FBSyxHQUFHOzs7R0FHZixDQUFDO1FBRUEsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxD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QUcsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFekMsTUFBTSxvQ0FBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRWhELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgQXdzQ2xpQ29tcGF0aWJsZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9hcGkvYXdzLWF1dGgvYXdzY2xpLWNvbXBhdGlibGUnO1xuXG5kZXNjcmliZSgnQXdzQ2xpQ29tcGF0aWJsZS5yZWdpb24nLCAoKSA9PiB7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG5cbiAgICAvLyBtYWtlIHN1cmUgd2UgZG9uJ3QgbWlzdGFrZW5seSBwb2ludCB0byBhbiB1bnJlbGF0ZWQgZmlsZVxuICAgIHByb2Nlc3MuZW52LkFXU19DT05GSUdfRklMRSA9ICcvZGV2L251bGwnO1xuICAgIHByb2Nlc3MuZW52LkFXU19TSEFSRURfQ1JFREVOVElBTFNfRklMRSA9ICcvZGV2L251bGwnO1xuXG4gICAgLy8gdGhlc2UgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGluaSBmaWxlcyBzbyB3ZSBuZWVkIHRvIGRpc2FibGUgdGhlbSBmb3JcbiAgICAvLyB0aGUgdGVzdCB0byBpbnZva2UgdGhlIHJpZ2h0IGZ1bmN0aW9uXG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFXU19SRUdJT047XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFNQVpPTl9SRUdJT047XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFXU19ERUZBVUxUX1JFR0lPTjtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuQU1BWk9OX0RFRkFVTFRfUkVHSU9OO1xuXG4gIH0pO1xuXG4gIHRlc3QoJ2RlZmF1bHQgcmVnaW9uIGNhbiBiZSBzcGVjaWZpZWQgaW4gY29uZmlnJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY29uZmlnID0gYFxuICBbZGVmYXVsdF1cbiAgcmVnaW9uPXJlZ2lvbi1pbi1jb25maWdcbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjb25maWdGaWxlOiBjb25maWcgfSkpLnJlc29sdmVzLnRvQmUoJ3JlZ2lvbi1pbi1jb25maWcnKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVmYXVsdCByZWdpb24gY2FuIGJlIHNwZWNpZmllZCBpbiBjcmVkZW50aWFscycsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNyZWRzID0gYFxuICBbZGVmYXVsdF1cbiAgcmVnaW9uPXJlZ2lvbi1pbi1jcmVkZW50aWFsc1xuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMgfSkpLnJlc29sdmVzLnRvQmUoJ3JlZ2lvbi1pbi1jcmVkZW50aWFscycpO1xuXG4gIH0pO1xuXG4gIHRlc3QoJ3Byb2ZpbGUgcmVnaW9uIGNhbiBiZSBzcGVjaWZpZWQgaW4gY29uZmlnJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY29uZmlnID0gYFxuICBbcHJvZmlsZSB1c2VyMV1cbiAgcmVnaW9uPXJlZ2lvbi1pbi1jb25maWdcbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjb25maWdGaWxlOiBjb25maWcsIHByb2ZpbGU6ICd1c2VyMScgfSkpLnJlc29sdmVzLnRvQmUoJ3JlZ2lvbi1pbi1jb25maWcnKTtcblxuICB9KTtcblxuICB0ZXN0KCdwcm9maWxlIHJlZ2lvbiBjYW4gYmUgc3BlY2lmaWVkIGluIGNyZWRlbnRpYWxzJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFt1c2VyMV1cbiAgcmVnaW9uPXJlZ2lvbi1pbi1jcmVkZW50aWFsc1xuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIHByb2ZpbGU6ICd1c2VyMScgfSkpLnJlc29sdmVzLnRvQmUoJ3JlZ2lvbi1pbi1jcmVkZW50aWFscycpO1xuXG4gIH0pO1xuXG4gIHRlc3QoJ3dpdGggcHJvZmlsZSB8IHByb2ZpbGUtcmVnaW9uLWluLWNyZWRlbnRpYWxzIGlzIHByaW9yaXR5IDEnLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY29uZmlnXG5cbiAgW3Byb2ZpbGUgdXNlcl1cbiAgcmVnaW9uPXByb2ZpbGUtcmVnaW9uLWluLWNvbmZpZ1xuXG4gIGA7XG5cbiAgICBjb25zdCBjcmVkcyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1kZWZhdWx0LXJlZ2lvbi1pbi1jcmVkZW50aWFsc1xuXG4gIFt1c2VyXVxuICByZWdpb249cHJvZmlsZS1yZWdpb24taW4tY3JlZGVudGlhbHNcbiAgYDtcblxuICAgIGF3YWl0IGV4cGVjdChyZWdpb24oeyBjcmVkZW50aWFsc0ZpbGU6IGNyZWRzLCBjb25maWdGaWxlOiBjb25maWcsIHByb2ZpbGU6ICd1c2VyJyB9KSkucmVzb2x2ZXMudG9CZSgncHJvZmlsZS1yZWdpb24taW4tY3JlZGVudGlhbHMnKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2l0aCBwcm9maWxlIHwgcHJvZmlsZS1yZWdpb24taW4tY29uZmlnIGlzIHByaW9yaXR5IDInLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY29uZmlnXG5cbiAgW3Byb2ZpbGUgdXNlcl1cbiAgcmVnaW9uPXByb2ZpbGUtcmVnaW9uLWluLWNvbmZpZ1xuXG4gIGA7XG5cbiAgICBjb25zdCBjcmVkcyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1kZWZhdWx0LXJlZ2lvbi1pbi1jcmVkZW50aWFsc1xuXG4gIFt1c2VyXVxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZywgcHJvZmlsZTogJ3VzZXInIH0pKS5yZXNvbHZlcy50b0JlKCdwcm9maWxlLXJlZ2lvbi1pbi1jb25maWcnKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2l0aCBwcm9maWxlIHwgZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHMgaXMgcHJpb3JpdHkgMycsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1kZWZhdWx0LXJlZ2lvbi1pbi1jb25maWdcblxuICBbcHJvZmlsZSB1c2VyXVxuXG4gIGA7XG5cbiAgICBjb25zdCBjcmVkcyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1kZWZhdWx0LXJlZ2lvbi1pbi1jcmVkZW50aWFsc1xuXG4gIFt1c2VyXVxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZywgcHJvZmlsZTogJ3VzZXInIH0pKS5yZXNvbHZlcy50b0JlKCdkZWZhdWx0LXJlZ2lvbi1pbi1jcmVkZW50aWFscycpO1xuICB9KTtcblxuICB0ZXN0KCd3aXRoIHByb2ZpbGUgfCBkZWZhdWx0LXJlZ2lvbi1pbi1jb25maWcgaXMgcHJpb3JpdHkgNCcsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1kZWZhdWx0LXJlZ2lvbi1pbi1jb25maWdcblxuICBbcHJvZmlsZSB1c2VyXVxuXG4gIGA7XG5cbiAgICBjb25zdCBjcmVkcyA9IGBcbiAgW2RlZmF1bHRdXG5cbiAgW3VzZXJdXG4gIGA7XG5cbiAgICBhd2FpdCBleHBlY3QocmVnaW9uKHsgY3JlZGVudGlhbHNGaWxlOiBjcmVkcywgY29uZmlnRmlsZTogY29uZmlnLCBwcm9maWxlOiAndXNlcicgfSkpLnJlc29sdmVzLnRvQmUoJ2RlZmF1bHQtcmVnaW9uLWluLWNvbmZpZycpO1xuICB9KTtcblxuICB0ZXN0KCd3aXRoIHByb2ZpbGUgfCB1cy1lYXN0LTEgaXMgcHJpb3JpdHkgNScsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW2RlZmF1bHRdXG5cbiAgW3Byb2ZpbGUgdXNlcl1cblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuXG4gIFt1c2VyXVxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZywgcHJvZmlsZTogJ3VzZXInIH0pKS5yZXNvbHZlcy50b0JlKCd1cy1lYXN0LTEnKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2l0aG91dCBwcm9maWxlIHwgZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHMgaXMgcHJpb3JpdHkgMScsIGFzeW5jICgpID0+IHtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGBcbiAgW2RlZmF1bHRdXG4gIHJlZ2lvbj1kZWZhdWx0LXJlZ2lvbi1pbi1jb25maWdcblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHNcblxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZyB9KSkucmVzb2x2ZXMudG9CZSgnZGVmYXVsdC1yZWdpb24taW4tY3JlZGVudGlhbHMnKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2l0aG91dCBwcm9maWxlIHwgZGVmYXVsdC1yZWdpb24taW4tY29uZmlnIGlzIHByaW9yaXR5IDInLCBhc3luYyAoKSA9PiB7XG5cbiAgICBjb25zdCBjb25maWcgPSBgXG4gIFtkZWZhdWx0XVxuICByZWdpb249ZGVmYXVsdC1yZWdpb24taW4tY29uZmlnXG5cbiAgYDtcblxuICAgIGNvbnN0IGNyZWRzID0gYFxuICBbZGVmYXVsdF1cblxuICBgO1xuXG4gICAgYXdhaXQgZXhwZWN0KHJlZ2lvbih7IGNyZWRlbnRpYWxzRmlsZTogY3JlZHMsIGNvbmZpZ0ZpbGU6IGNvbmZpZyB9KSkucmVzb2x2ZXMudG9CZSgnZGVmYXVsdC1yZWdpb24taW4tY29uZmlnJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3dpdGhvdXQgcHJvZmlsZSB8IHVzLWVhc3QtMSBpcyBwcmlvcml0eSAzJywgYXN5bmMgKCkgPT4ge1xuXG4gICAgY29uc3QgY29uZmlnID0gYFxuICBbZGVmYXVsdF1cblxuICBgO1xuXG4gICAgY29uc3QgY3JlZHMgPSBgXG4gIFtkZWZhdWx0XVxuXG4gIGA7XG5cbiAgICBhd2FpdCBleHBlY3QocmVnaW9uKHsgY3JlZGVudGlhbHNGaWxlOiBjcmVkcywgY29uZmlnRmlsZTogY29uZmlnIH0pKS5yZXNvbHZlcy50b0JlKCd1cy1lYXN0LTEnKTtcbiAgfSk7XG5cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiByZWdpb24ob3B0czoge1xuICByZWFkb25seSBjb25maWdGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBjcmVkZW50aWFsc0ZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG59KSB7XG5cbiAgY29uc3Qgd29ya2RpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2F3c2NsaS1jb21wYXRpYmxlLnRlc3QnKSk7XG5cbiAgdHJ5IHtcblxuICAgIGlmIChvcHRzLmNvbmZpZ0ZpbGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLmpvaW4od29ya2RpciwgJ2NvbmZpZycpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhjb25maWdQYXRoLCBvcHRzLmNvbmZpZ0ZpbGUpO1xuICAgICAgcHJvY2Vzcy5lbnYuQVdTX0NPTkZJR19GSUxFID0gY29uZmlnUGF0aDtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5jcmVkZW50aWFsc0ZpbGUpIHtcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzUGF0aCA9IHBhdGguam9pbih3b3JrZGlyLCAnY3JlZGVudGlhbHMnKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoY3JlZGVudGlhbHNQYXRoLCBvcHRzLmNyZWRlbnRpYWxzRmlsZSk7XG4gICAgICBwcm9jZXNzLmVudi5BV1NfU0hBUkVEX0NSRURFTlRJQUxTX0ZJTEUgPSBjcmVkZW50aWFsc1BhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IEF3c0NsaUNvbXBhdGlibGUucmVnaW9uKG9wdHMucHJvZmlsZSk7XG5cbiAgfSBmaW5hbGx5IHtcbiAgICBmcy5yZW1vdmVTeW5jKHdvcmtkaXIpO1xuICB9XG59XG5cbmRlc2NyaWJlKCdTZXNzaW9uIHRva2VuJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCA9ICdmb28nO1xuICAgIHByb2Nlc3MuZW52LkFXU19TRUNSRVRfQUNDRVNTX0tFWSA9ICdiYXInO1xuICB9KTtcblxuICB0ZXN0KCdkb2VzIG5vdCBtZXNzIHVwIHdpdGggc2Vzc2lvbiB0b2tlbiBlbnYgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuZGVmaW5lZCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBNYWtpbmcgc3VyZSB0aGVzZSB2YXJpYWJsZXMgYXJlIG5vdCBkZWZpbmVkXG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOO1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5BTUFaT05fU0VTU0lPTl9UT0tFTjtcblxuICAgIGF3YWl0IEF3c0NsaUNvbXBhdGlibGUuY3JlZGVudGlhbENoYWluQnVpbGRlcigpO1xuXG4gICAgZXhwZWN0KHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3ByZXNlcnZlcyBBV1NfU0VTU0lPTl9UT0tFTiBpZiBpdCBpcyBkZWZpbmVkJywgYXN5bmMgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOID0gJ2FhYSc7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LkFNQVpPTl9TRVNTSU9OX1RPS0VOO1xuXG4gICAgYXdhaXQgQXdzQ2xpQ29tcGF0aWJsZS5jcmVkZW50aWFsQ2hhaW5CdWlsZGVyKCk7XG5cbiAgICBleHBlY3QocHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4pLnRvRXF1YWwoJ2FhYScpO1xuICB9KTtcblxuICB0ZXN0KCdhc3NpZ25zIEFXU19TRVNTSU9OX1RPS0VOIGlmIGl0IGlzIG5vdCBkZWZpbmVkIGJ1dCBBTUFaT05fU0VTU0lPTl9UT0tFTiBpcycsIGFzeW5jICgpID0+IHtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU47XG4gICAgcHJvY2Vzcy5lbnYuQU1BWk9OX1NFU1NJT05fVE9LRU4gPSAnYWFhJztcblxuICAgIGF3YWl0IEF3c0NsaUNvbXBhdGlibGUuY3JlZGVudGlhbENoYWluQnVpbGRlcigpO1xuXG4gICAgZXhwZWN0KHByb2Nlc3MuZW52LkFXU19TRVNTSU9OX1RPS0VOKS50b0VxdWFsKCdhYWEnKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJlc2VydmVzIEFXU19TRVNTSU9OX1RPS0VOIGlmIGJvdGggYXJlIGRlZmluZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4gPSAnYWFhJztcbiAgICBwcm9jZXNzLmVudi5BTUFaT05fU0VTU0lPTl9UT0tFTiA9ICdiYmInO1xuXG4gICAgYXdhaXQgQXdzQ2xpQ29tcGF0aWJsZS5jcmVkZW50aWFsQ2hhaW5CdWlsZGVyKCk7XG5cbiAgICBleHBlY3QocHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4pLnRvRXF1YWwoJ2FhYScpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const logging_1 = require("../../../lib/logging");
|
|
4
|
+
describe('logging', () => {
|
|
5
|
+
// Mock streams to capture output
|
|
6
|
+
let mockStdout;
|
|
7
|
+
let mockStderr;
|
|
8
|
+
// Helper function to strip ANSI codes
|
|
9
|
+
const stripAnsi = (str) => {
|
|
10
|
+
const ansiRegex = /\u001b\[[0-9;]*[a-zA-Z]/g;
|
|
11
|
+
return str.replace(ansiRegex, '');
|
|
12
|
+
};
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
// Reset log level before each test
|
|
15
|
+
(0, logging_1.setLogLevel)(logging_1.LogLevel.INFO);
|
|
16
|
+
(0, logging_1.setCI)(false);
|
|
17
|
+
// Create mock functions to capture output
|
|
18
|
+
mockStdout = jest.fn();
|
|
19
|
+
mockStderr = jest.fn();
|
|
20
|
+
// Mock the write methods directly and strip ANSI codes
|
|
21
|
+
jest.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
|
|
22
|
+
mockStdout(stripAnsi(chunk.toString()));
|
|
23
|
+
return true;
|
|
24
|
+
});
|
|
25
|
+
jest.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
|
|
26
|
+
mockStderr(stripAnsi(chunk.toString()));
|
|
27
|
+
return true;
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
afterEach(() => {
|
|
31
|
+
jest.restoreAllMocks();
|
|
32
|
+
});
|
|
33
|
+
describe('stream selection', () => {
|
|
34
|
+
test('data() always writes to stdout', () => {
|
|
35
|
+
(0, logging_1.data)('test message');
|
|
36
|
+
expect(mockStdout).toHaveBeenCalledWith('test message\n');
|
|
37
|
+
expect(mockStderr).not.toHaveBeenCalled();
|
|
38
|
+
});
|
|
39
|
+
test('error() always writes to stderr', () => {
|
|
40
|
+
(0, logging_1.error)('test error');
|
|
41
|
+
expect(mockStderr).toHaveBeenCalledWith('test error\n');
|
|
42
|
+
expect(mockStdout).not.toHaveBeenCalled();
|
|
43
|
+
});
|
|
44
|
+
test('print() writes to stderr by default', () => {
|
|
45
|
+
(0, logging_1.print)('test print');
|
|
46
|
+
expect(mockStderr).toHaveBeenCalledWith('test print\n');
|
|
47
|
+
expect(mockStdout).not.toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
test('print() writes to stdout in CI mode', () => {
|
|
50
|
+
(0, logging_1.setCI)(true);
|
|
51
|
+
(0, logging_1.print)('test print');
|
|
52
|
+
expect(mockStdout).toHaveBeenCalledWith('test print\n');
|
|
53
|
+
expect(mockStderr).not.toHaveBeenCalled();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('log levels', () => {
|
|
57
|
+
test('respects log level settings', () => {
|
|
58
|
+
(0, logging_1.setLogLevel)(logging_1.LogLevel.ERROR);
|
|
59
|
+
(0, logging_1.error)('error message');
|
|
60
|
+
(0, logging_1.warning)('warning message');
|
|
61
|
+
(0, logging_1.print)('print message');
|
|
62
|
+
expect(mockStderr).toHaveBeenCalledWith('error message\n');
|
|
63
|
+
expect(mockStderr).not.toHaveBeenCalledWith('warning message\n');
|
|
64
|
+
expect(mockStderr).not.toHaveBeenCalledWith('print message\n');
|
|
65
|
+
});
|
|
66
|
+
test('debug messages only show at debug level', () => {
|
|
67
|
+
(0, logging_1.setLogLevel)(logging_1.LogLevel.INFO);
|
|
68
|
+
(0, logging_1.debug)('debug message');
|
|
69
|
+
expect(mockStderr).not.toHaveBeenCalled();
|
|
70
|
+
(0, logging_1.setLogLevel)(logging_1.LogLevel.DEBUG);
|
|
71
|
+
(0, logging_1.debug)('debug message');
|
|
72
|
+
expect(mockStderr).toHaveBeenCalledWith('debug message\n');
|
|
73
|
+
});
|
|
74
|
+
test('trace messages only show at trace level', () => {
|
|
75
|
+
(0, logging_1.setLogLevel)(logging_1.LogLevel.DEBUG);
|
|
76
|
+
(0, logging_1.trace)('trace message');
|
|
77
|
+
expect(mockStderr).not.toHaveBeenCalled();
|
|
78
|
+
(0, logging_1.setLogLevel)(logging_1.LogLevel.TRACE);
|
|
79
|
+
(0, logging_1.trace)('trace message');
|
|
80
|
+
expect(mockStderr).toHaveBeenCalledWith('trace message\n');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('message formatting', () => {
|
|
84
|
+
test('formats messages with multiple arguments', () => {
|
|
85
|
+
(0, logging_1.print)('Value: %d, String: %s', 42, 'test');
|
|
86
|
+
expect(mockStderr).toHaveBeenCalledWith('Value: 42, String: test\n');
|
|
87
|
+
});
|
|
88
|
+
test('handles prefix correctly', () => {
|
|
89
|
+
const prefixedLog = (0, logging_1.prefix)('PREFIX');
|
|
90
|
+
prefixedLog('test message');
|
|
91
|
+
expect(mockStderr).toHaveBeenCalledWith('PREFIX test message\n');
|
|
92
|
+
});
|
|
93
|
+
test('handles custom styles', () => {
|
|
94
|
+
(0, logging_1.success)('success message');
|
|
95
|
+
expect(mockStderr).toHaveBeenCalledWith('success message\n');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('corked logging', () => {
|
|
99
|
+
test('buffers messages when corked', async () => {
|
|
100
|
+
await (0, logging_1.withCorkedLogging)(async () => {
|
|
101
|
+
(0, logging_1.print)('message 1');
|
|
102
|
+
(0, logging_1.print)('message 2');
|
|
103
|
+
expect(mockStderr).not.toHaveBeenCalled();
|
|
104
|
+
});
|
|
105
|
+
expect(mockStderr).toHaveBeenCalledWith('message 1\n');
|
|
106
|
+
expect(mockStderr).toHaveBeenCalledWith('message 2\n');
|
|
107
|
+
});
|
|
108
|
+
test('handles nested corking correctly', async () => {
|
|
109
|
+
await (0, logging_1.withCorkedLogging)(async () => {
|
|
110
|
+
(0, logging_1.print)('outer 1');
|
|
111
|
+
await (0, logging_1.withCorkedLogging)(async () => {
|
|
112
|
+
(0, logging_1.print)('inner');
|
|
113
|
+
});
|
|
114
|
+
(0, logging_1.print)('outer 2');
|
|
115
|
+
expect(mockStderr).not.toHaveBeenCalled();
|
|
116
|
+
});
|
|
117
|
+
expect(mockStderr).toHaveBeenCalledTimes(3);
|
|
118
|
+
expect(mockStderr).toHaveBeenCalledWith('outer 1\n');
|
|
119
|
+
expect(mockStderr).toHaveBeenCalledWith('inner\n');
|
|
120
|
+
expect(mockStderr).toHaveBeenCalledWith('outer 2\n');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('timestamp and prefix handling', () => {
|
|
124
|
+
test('combines timestamp and prefix correctly', () => {
|
|
125
|
+
(0, logging_1.log)({
|
|
126
|
+
level: logging_1.LogLevel.INFO,
|
|
127
|
+
message: 'test message',
|
|
128
|
+
timestamp: true,
|
|
129
|
+
prefix: 'PREFIX',
|
|
130
|
+
});
|
|
131
|
+
expect(mockStderr).toHaveBeenCalledWith(expect.stringMatching(/^PREFIX \[\d{2}:\d{2}:\d{2}\] test message\n$/));
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWxvZ2dpbmcudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaS1sb2dnaW5nLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrREFBd0o7QUFFeEosUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDdkIsaUNBQWlDO0lBQ2pDLElBQUksVUFBcUIsQ0FBQztJQUMxQixJQUFJLFVBQXFCLENBQUM7SUFFMUIsc0NBQXNDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUM7UUFDN0MsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsbUNBQW1DO1FBQ25DLElBQUEscUJBQVcsRUFBQyxrQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUEsZUFBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsMENBQTBDO1FBQzFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkIsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUV2Qix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDcEUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNw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QUFnQixFQUFFLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDN0MsSUFBSSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtZQUNuRCxJQUFBLGFBQUcsRUFBQztnQkFDRixLQUFLLEVBQUUsa0JBQVEsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLEVBQUUsY0FBYztnQkFDdkIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsTUFBTSxFQUFFLFFBQVE7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLG9CQUFvQixDQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLENBQ3ZFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dMZXZlbCwgbG9nLCBzZXRMb2dMZXZlbCwgc2V0Q0ksIGRhdGEsIHByaW50LCBlcnJvciwgd2FybmluZywgc3VjY2VzcywgZGVidWcsIHRyYWNlLCBwcmVmaXgsIHdpdGhDb3JrZWRMb2dnaW5nIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dpbmcnO1xuXG5kZXNjcmliZSgnbG9nZ2luZycsICgpID0+IHtcbiAgLy8gTW9jayBzdHJlYW1zIHRvIGNhcHR1cmUgb3V0cHV0XG4gIGxldCBtb2NrU3Rkb3V0OiBqZXN0Lk1vY2s7XG4gIGxldCBtb2NrU3RkZXJyOiBqZXN0Lk1vY2s7XG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHN0cmlwIEFOU0kgY29kZXNcbiAgY29uc3Qgc3RyaXBBbnNpID0gKHN0cjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBhbnNpUmVnZXggPSAvXFx1MDAxYlxcW1swLTk7XSpbYS16QS1aXS9nO1xuICAgIHJldHVybiBzdHIucmVwbGFjZShhbnNpUmVnZXgsICcnKTtcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAvLyBSZXNldCBsb2cgbGV2ZWwgYmVmb3JlIGVhY2ggdGVzdFxuICAgIHNldExvZ0xldmVsKExvZ0xldmVsLklORk8pO1xuICAgIHNldENJKGZhbHNlKTtcblxuICAgIC8vIENyZWF0ZSBtb2NrIGZ1bmN0aW9ucyB0byBjYXB0dXJlIG91dHB1dFxuICAgIG1vY2tTdGRvdXQgPSBqZXN0LmZuKCk7XG4gICAgbW9ja1N0ZGVyciA9IGplc3QuZm4oKTtcblxuICAgIC8vIE1vY2sgdGhlIHdyaXRlIG1ldGhvZHMgZGlyZWN0bHkgYW5kIHN0cmlwIEFOU0kgY29kZXNcbiAgICBqZXN0LnNweU9uKHByb2Nlc3Muc3Rkb3V0LCAnd3JpdGUnKS5tb2NrSW1wbGVtZW50YXRpb24oKGNodW5rOiBhbnkpID0+IHtcbiAgICAgIG1vY2tTdGRvdXQoc3RyaXBBbnNpKGNodW5rLnRvU3RyaW5nKCkpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgamVzdC5zcHlPbihwcm9jZXNzLnN0ZGVyciwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKChjaHVuazogYW55KSA9PiB7XG4gICAgICBtb2NrU3RkZXJyKHN0cmlwQW5zaShjaHVuay50b1N0cmluZygpKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RyZWFtIHNlbGVjdGlvbicsICgpID0+IHtcbiAgICB0ZXN0KCdkYXRhKCkgYWx3YXlzIHdyaXRlcyB0byBzdGRvdXQnLCAoKSA9PiB7XG4gICAgICBkYXRhKCd0ZXN0IG1lc3NhZ2UnKTtcbiAgICAgIGV4cGVjdChtb2NrU3Rkb3V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgndGVzdCBtZXNzYWdlXFxuJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2Vycm9yKCkgYWx3YXlzIHdyaXRlcyB0byBzdGRlcnInLCAoKSA9PiB7XG4gICAgICBlcnJvcigndGVzdCBlcnJvcicpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCd0ZXN0IGVycm9yXFxuJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZG91dCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3ByaW50KCkgd3JpdGVzIHRvIHN0ZGVyciBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgcHJpbnQoJ3Rlc3QgcHJpbnQnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgndGVzdCBwcmludFxcbicpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRvdXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdwcmludCgpIHdyaXRlcyB0byBzdGRvdXQgaW4gQ0kgbW9kZScsICgpID0+IHtcbiAgICAgIHNldENJKHRydWUpO1xuICAgICAgcHJpbnQoJ3Rlc3QgcHJpbnQnKTtcbiAgICAgIGV4cGVjdChtb2NrU3Rkb3V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgndGVzdCBwcmludFxcbicpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2cgbGV2ZWxzJywgKCkgPT4ge1xuICAgIHRlc3QoJ3Jlc3BlY3RzIGxvZyBsZXZlbCBzZXR0aW5ncycsICgpID0+IHtcbiAgICAgIHNldExvZ0xldmVsKExvZ0xldmVsLkVSUk9SKTtcbiAgICAgIGVycm9yKCdlcnJvciBtZXNzYWdlJyk7XG4gICAgICB3YXJuaW5nKCd3YXJuaW5nIG1lc3NhZ2UnKTtcbiAgICAgIHByaW50KCdwcmludCBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2Vycm9yIG1lc3NhZ2VcXG4nKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS5ub3QudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3dhcm5pbmcgbWVzc2FnZVxcbicpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncHJpbnQgbWVzc2FnZVxcbicpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZGVidWcgbWVzc2FnZXMgb25seSBzaG93IGF0IGRlYnVnIGxldmVsJywgKCkgPT4ge1xuICAgICAgc2V0TG9nTGV2ZWwoTG9nTGV2ZWwuSU5GTyk7XG4gICAgICBkZWJ1ZygnZGVidWcgbWVzc2FnZScpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgICAgIHNldExvZ0xldmVsKExvZ0xldmVsLkRFQlVHKTtcbiAgICAgIGRlYnVnKCdkZWJ1ZyBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2RlYnVnIG1lc3NhZ2VcXG4nKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3RyYWNlIG1lc3NhZ2VzIG9ubHkgc2hvdyBhdCB0cmFjZSBsZXZlbCcsICgpID0+IHtcbiAgICAgIHNldExvZ0xldmVsKExvZ0xldmVsLkRFQlVHKTtcbiAgICAgIHRyYWNlKCd0cmFjZSBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgICAgc2V0TG9nTGV2ZWwoTG9nTGV2ZWwuVFJBQ0UpO1xuICAgICAgdHJhY2UoJ3RyYWNlIG1lc3NhZ2UnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgndHJhY2UgbWVzc2FnZVxcbicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWVzc2FnZSBmb3JtYXR0aW5nJywgKCkgPT4ge1xuICAgIHRlc3QoJ2Zvcm1hdHMgbWVzc2FnZXMgd2l0aCBtdWx0aXBsZSBhcmd1bWVudHMnLCAoKSA9PiB7XG4gICAgICBwcmludCgnVmFsdWU6ICVkLCBTdHJpbmc6ICVzJywgNDIsICd0ZXN0Jyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ1ZhbHVlOiA0MiwgU3RyaW5nOiB0ZXN0XFxuJyk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdoYW5kbGVzIHByZWZpeCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcmVmaXhlZExvZyA9IHByZWZpeCgnUFJFRklYJyk7XG4gICAgICBwcmVmaXhlZExvZygndGVzdCBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ1BSRUZJWCB0ZXN0IG1lc3NhZ2VcXG4nKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2hhbmRsZXMgY3VzdG9tIHN0eWxlcycsICgpID0+IHtcbiAgICAgIHN1Y2Nlc3MoJ3N1Y2Nlc3MgbWVzc2FnZScpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzdWNjZXNzIG1lc3NhZ2VcXG4nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvcmtlZCBsb2dnaW5nJywgKCkgPT4ge1xuICAgIHRlc3QoJ2J1ZmZlcnMgbWVzc2FnZXMgd2hlbiBjb3JrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB3aXRoQ29ya2VkTG9nZ2luZyhhc3luYyAoKSA9PiB7XG4gICAgICAgIHByaW50KCdtZXNzYWdlIDEnKTtcbiAgICAgICAgcHJpbnQoJ21lc3NhZ2UgMicpO1xuICAgICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ21lc3NhZ2UgMVxcbicpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdtZXNzYWdlIDJcXG4nKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2hhbmRsZXMgbmVzdGVkIGNvcmtpbmcgY29ycmVjdGx5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgd2l0aENvcmtlZExvZ2dpbmcoYXN5bmMgKCkgPT4ge1xuICAgICAgICBwcmludCgnb3V0ZXIgMScpO1xuICAgICAgICBhd2FpdCB3aXRoQ29ya2VkTG9nZ2luZyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgcHJpbnQoJ2lubmVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBwcmludCgnb3V0ZXIgMicpO1xuICAgICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDMpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdvdXRlciAxXFxuJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2lubmVyXFxuJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ291dGVyIDJcXG4nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RpbWVzdGFtcCBhbmQgcHJlZml4IGhhbmRsaW5nJywgKCkgPT4ge1xuICAgIHRlc3QoJ2NvbWJpbmVzIHRpbWVzdGFtcCBhbmQgcHJlZml4IGNvcnJlY3RseScsICgpID0+IHtcbiAgICAgIGxvZyh7XG4gICAgICAgIGxldmVsOiBMb2dMZXZlbC5JTkZPLFxuICAgICAgICBtZXNzYWdlOiAndGVzdCBtZXNzYWdlJyxcbiAgICAgICAgdGltZXN0YW1wOiB0cnVlLFxuICAgICAgICBwcmVmaXg6ICdQUkVGSVgnLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5zdHJpbmdNYXRjaGluZygvXlBSRUZJWCBcXFtcXGR7Mn06XFxkezJ9OlxcZHsyfVxcXSB0ZXN0IG1lc3NhZ2VcXG4kLyksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs");
|
|
4
|
-
const chalk_1 = require("chalk");
|
|
5
4
|
const logs_monitor_1 = require("../../../lib/api/logs/logs-monitor");
|
|
6
5
|
const util_1 = require("../../util");
|
|
7
6
|
const mock_sdk_1 = require("../../util/mock-sdk");
|
|
7
|
+
// Helper function to strip ANSI codes
|
|
8
|
+
const stripAnsi = (str) => {
|
|
9
|
+
const ansiRegex = /\u001b\[[0-9;]*[a-zA-Z]/g;
|
|
10
|
+
return str.replace(ansiRegex, '');
|
|
11
|
+
};
|
|
8
12
|
let sdk;
|
|
9
13
|
let stderrMock;
|
|
10
14
|
let monitor;
|
|
11
15
|
beforeEach(() => {
|
|
12
16
|
monitor = new logs_monitor_1.CloudWatchLogEventMonitor(new Date(T100));
|
|
13
|
-
stderrMock = jest.spyOn(process.stderr, 'write').mockImplementation(() => {
|
|
14
|
-
|
|
17
|
+
stderrMock = jest.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
|
|
18
|
+
// Strip ANSI codes when capturing output
|
|
19
|
+
if (typeof chunk === 'string') {
|
|
20
|
+
return stripAnsi(chunk);
|
|
21
|
+
}
|
|
22
|
+
return stripAnsi(chunk.toString());
|
|
15
23
|
});
|
|
16
24
|
sdk = new mock_sdk_1.MockSdk();
|
|
17
25
|
});
|
|
@@ -37,7 +45,7 @@ test('process events', async () => {
|
|
|
37
45
|
// THEN
|
|
38
46
|
const expectedLocaleTimeString = eventDate.toLocaleTimeString();
|
|
39
47
|
expect(stderrMock).toHaveBeenCalledTimes(1);
|
|
40
|
-
expect(stderrMock.mock.calls[0][0]).toContain(`[
|
|
48
|
+
expect(stripAnsi(stderrMock.mock.calls[0][0])).toContain(`[loggroup] ${expectedLocaleTimeString} message`);
|
|
41
49
|
});
|
|
42
50
|
test('process truncated events', async () => {
|
|
43
51
|
// GIVEN
|
|
@@ -62,8 +70,8 @@ test('process truncated events', async () => {
|
|
|
62
70
|
// THEN
|
|
63
71
|
const expectedLocaleTimeString = eventDate.toLocaleTimeString();
|
|
64
72
|
expect(stderrMock).toHaveBeenCalledTimes(101);
|
|
65
|
-
expect(stderrMock.mock.calls[0][0]).toContain(`[
|
|
66
|
-
expect(stderrMock.mock.calls[100][0]).toContain(`[
|
|
73
|
+
expect(stripAnsi(stderrMock.mock.calls[0][0])).toContain(`[loggroup] ${expectedLocaleTimeString} message0`);
|
|
74
|
+
expect(stripAnsi(stderrMock.mock.calls[100][0])).toContain(`[loggroup] ${expectedLocaleTimeString} >>> \`watch\` shows only the first 100 log messages - the rest have been truncated...`);
|
|
67
75
|
});
|
|
68
76
|
const T0 = 1597837230504;
|
|
69
77
|
const T100 = T0 + 100 * 1000;
|
|
@@ -75,4 +83,4 @@ function event(nr, message, timestamp) {
|
|
|
75
83
|
ingestionTime: timestamp.getTime(),
|
|
76
84
|
};
|
|
77
85
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy1tb25pdG9yLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2dzLW1vbml0b3IudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDRFQUFnRztBQUNoRyxxRUFBK0U7QUFDL0UscUNBQW1DO0FBQ25DLGtEQUFvRTtBQUVwRSxzQ0FBc0M7QUFDdEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRTtJQUN4QyxNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQztJQUM3QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLElBQUksR0FBWSxDQUFDO0FBQ2pCLElBQUksVUFBNEIsQ0FBQztBQUNqQyxJQUFJLE9BQWtDLENBQUM7QUFDdkMsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLE9BQU8sR0FBRyxJQUFJLHdDQUF5QixDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ2pGLHlDQUF5QztRQUN6QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBdUIsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUF1QixDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0gsR0FBRyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixPQUFPLENBQUMsVUFBVSxFQUFF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QUFTLENBQ3hELGNBQWMsd0JBQXdCLHdGQUF3RixDQUMvSCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUM7QUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDN0IsU0FBUyxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQWUsRUFBRSxTQUFlO0lBQ3pELE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDaEIsT0FBTztRQUNQLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFO1FBQzlCLGFBQWEsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFO0tBQ25DLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyTG9nRXZlbnRzQ29tbWFuZCwgdHlwZSBGaWx0ZXJlZExvZ0V2ZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3Vkd2F0Y2gtbG9ncyc7XG5pbXBvcnQgeyBDbG91ZFdhdGNoTG9nRXZlbnRNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS9sb2dzL2xvZ3MtbW9uaXRvcic7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgTW9ja1NkaywgbW9ja0Nsb3VkV2F0Y2hDbGllbnQgfSBmcm9tICcuLi8uLi91dGlsL21vY2stc2RrJztcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHN0cmlwIEFOU0kgY29kZXNcbmNvbnN0IHN0cmlwQW5zaSA9IChzdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGFuc2lSZWdleCA9IC9cXHUwMDFiXFxbWzAtOTtdKlthLXpBLVpdL2c7XG4gIHJldHVybiBzdHIucmVwbGFjZShhbnNpUmVnZXgsICcnKTtcbn07XG5cbmxldCBzZGs6IE1vY2tTZGs7XG5sZXQgc3RkZXJyTW9jazogamVzdC5TcHlJbnN0YW5jZTtcbmxldCBtb25pdG9yOiBDbG91ZFdhdGNoTG9nRXZlbnRNb25pdG9yO1xuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIG1vbml0b3IgPSBuZXcgQ2xvdWRXYXRjaExvZ0V2ZW50TW9uaXRvcihuZXcgRGF0ZShUMTAwKSk7XG4gIHN0ZGVyck1vY2sgPSBqZXN0LnNweU9uKHByb2Nlc3Muc3RkZXJyLCAnd3JpdGUnKS5tb2NrSW1wbGVtZW50YXRpb24oKGNodW5rOiBhbnkpID0+IHtcbiAgICAvLyBTdHJpcCBBTlNJIGNvZGVzIHdoZW4gY2FwdHVyaW5nIG91dHB1dFxuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gc3RyaXBBbnNpKGNodW5rKSBhcyB1bmtub3duIGFzIGJvb2xlYW47XG4gICAgfVxuICAgIHJldHVybiBzdHJpcEFuc2koY2h1bmsudG9TdHJpbmcoKSkgYXMgdW5rbm93biBhcyBib29sZWFuO1xuICB9KTtcbiAgc2RrID0gbmV3IE1vY2tTZGsoKTtcbn0pO1xuXG5hZnRlckVhY2goKCkgPT4ge1xuICBzdGRlcnJNb2NrLm1vY2tSZXN0b3JlKCk7XG4gIG1vbml0b3IuZGVhY3RpdmF0ZSgpO1xufSk7XG5cbnRlc3QoJ3Byb2Nlc3MgZXZlbnRzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBldmVudERhdGUgPSBuZXcgRGF0ZShUMCArIDEwMiAqIDEwMDApO1xuICBtb2NrQ2xvdWRXYXRjaENsaWVudC5vbihGaWx0ZXJMb2dFdmVudHNDb21tYW5kKS5yZXNvbHZlcyh7XG4gICAgZXZlbnRzOiBbZXZlbnQoMTAyLCAnbWVzc2FnZScsIGV2ZW50RGF0ZSldLFxuICB9KTtcblxuICBtb25pdG9yLmFkZExvZ0dyb3VwcyhcbiAgICB7XG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBhY2NvdW50OiAnMTExMTExMTExMTEnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICB9LFxuICAgIHNkayxcbiAgICBbJ2xvZ2dyb3VwJ10sXG4gICk7XG4gIC8vIFdIRU5cbiAgbW9uaXRvci5hY3RpdmF0ZSgpO1xuICAvLyBuZWVkIHRpbWUgZm9yIHRoZSBsb2cgcHJvY2Vzc2luZyB0byBvY2N1clxuICBhd2FpdCBzbGVlcCgxMDAwKTtcblxuICAvLyBUSEVOXG4gIGNvbnN0IGV4cGVjdGVkTG9jYWxlVGltZVN0cmluZyA9IGV2ZW50RGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKTtcbiAgZXhwZWN0KHN0ZGVyck1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgZXhwZWN0KHN0cmlwQW5zaShzdGRlcnJNb2NrLm1vY2suY2FsbHNbMF1bMF0pKS50b0NvbnRhaW4oYFtsb2dncm91cF0gJHtleHBlY3RlZExvY2FsZVRpbWVTdHJpbmd9IG1lc3NhZ2VgKTtcbn0pO1xuXG50ZXN0KCdwcm9jZXNzIHRydW5jYXRlZCBldmVudHMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGV2ZW50RGF0ZSA9IG5ldyBEYXRlKFQwICsgMTAyICogMTAwMCk7XG4gIGNvbnN0IGV2ZW50czogRmlsdGVyZWRMb2dFdmVudFtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHtcbiAgICBldmVudHMucHVzaChldmVudCgxMDIgKyBpLCAnbWVzc2FnZScgKyBpLCBldmVudERhdGUpKTtcbiAgfVxuXG4gIG1vY2tDbG91ZFdhdGNoQ2xpZW50Lm9uKEZpbHRlckxvZ0V2ZW50c0NvbW1hbmQpLnJlc29sdmVzKHtcbiAgICBldmVudHMsXG4gICAgbmV4dFRva2VuOiAnc29tZS10b2tlbicsXG4gIH0pO1xuICBtb25pdG9yLmFkZExvZ0dyb3VwcyhcbiAgICB7XG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBhY2NvdW50OiAnMTExMTExMTExMTEnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICB9LFxuICAgIHNkayxcbiAgICBbJ2xvZ2dyb3VwJ10sXG4gICk7XG4gIC8vIFdIRU5cbiAgbW9uaXRvci5hY3RpdmF0ZSgpO1xuICAvLyBuZWVkIHRpbWUgZm9yIHRoZSBsb2cgcHJvY2Vzc2luZyB0byBvY2N1clxuICBhd2FpdCBzbGVlcCgxMDAwKTtcblxuICAvLyBUSEVOXG4gIGNvbnN0IGV4cGVjdGVkTG9jYWxlVGltZVN0cmluZyA9IGV2ZW50RGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKTtcbiAgZXhwZWN0KHN0ZGVyck1vY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxMDEpO1xuICBleHBlY3Qoc3RyaXBBbnNpKHN0ZGVyck1vY2subW9jay5jYWxsc1swXVswXSkpLnRvQ29udGFpbihgW2xvZ2dyb3VwXSAke2V4cGVjdGVkTG9jYWxlVGltZVN0cmluZ30gbWVzc2FnZTBgKTtcbiAgZXhwZWN0KHN0cmlwQW5zaShzdGRlcnJNb2NrLm1vY2suY2FsbHNbMTAwXVswXSkpLnRvQ29udGFpbihcbiAgICBgW2xvZ2dyb3VwXSAke2V4cGVjdGVkTG9jYWxlVGltZVN0cmluZ30gPj4+IFxcYHdhdGNoXFxgIHNob3dzIG9ubHkgdGhlIGZpcnN0IDEwMCBsb2cgbWVzc2FnZXMgLSB0aGUgcmVzdCBoYXZlIGJlZW4gdHJ1bmNhdGVkLi4uYCxcbiAgKTtcbn0pO1xuXG5jb25zdCBUMCA9IDE1OTc4MzcyMzA1MDQ7XG5jb25zdCBUMTAwID0gVDAgKyAxMDAgKiAxMDAwO1xuZnVuY3Rpb24gZXZlbnQobnI6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiBGaWx0ZXJlZExvZ0V2ZW50IHtcbiAgcmV0dXJuIHtcbiAgICBldmVudElkOiBgJHtucn1gLFxuICAgIG1lc3NhZ2UsXG4gICAgdGltZXN0YW1wOiB0aW1lc3RhbXAuZ2V0VGltZSgpLFxuICAgIGluZ2VzdGlvblRpbWU6IHRpbWVzdGFtcC5nZXRUaW1lKCksXG4gIH07XG59XG4iXX0=
|
package/test/logging.test.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const logging_1 = require("../lib/logging");
|
|
4
|
-
describe('logging', () => {
|
|
5
|
-
// Mock streams to capture output
|
|
6
|
-
let mockStdout;
|
|
7
|
-
let mockStderr;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
// Reset log level before each test
|
|
10
|
-
(0, logging_1.setLogLevel)(logging_1.LogLevel.INFO);
|
|
11
|
-
(0, logging_1.setCI)(false);
|
|
12
|
-
// Create mock functions to capture output
|
|
13
|
-
mockStdout = jest.fn();
|
|
14
|
-
mockStderr = jest.fn();
|
|
15
|
-
// Mock the write methods directly
|
|
16
|
-
jest.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
|
|
17
|
-
mockStdout(chunk.toString());
|
|
18
|
-
return true;
|
|
19
|
-
});
|
|
20
|
-
jest.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
|
|
21
|
-
mockStderr(chunk.toString());
|
|
22
|
-
return true;
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
afterEach(() => {
|
|
26
|
-
jest.restoreAllMocks();
|
|
27
|
-
});
|
|
28
|
-
describe('stream selection', () => {
|
|
29
|
-
test('data() always writes to stdout', () => {
|
|
30
|
-
(0, logging_1.data)('test message');
|
|
31
|
-
expect(mockStdout).toHaveBeenCalledWith(expect.stringContaining('test message\n'));
|
|
32
|
-
expect(mockStderr).not.toHaveBeenCalled();
|
|
33
|
-
});
|
|
34
|
-
test('error() always writes to stderr', () => {
|
|
35
|
-
(0, logging_1.error)('test error');
|
|
36
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('test error\n'));
|
|
37
|
-
expect(mockStdout).not.toHaveBeenCalled();
|
|
38
|
-
});
|
|
39
|
-
test('print() writes to stderr by default', () => {
|
|
40
|
-
(0, logging_1.print)('test print');
|
|
41
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('test print\n'));
|
|
42
|
-
expect(mockStdout).not.toHaveBeenCalled();
|
|
43
|
-
});
|
|
44
|
-
test('print() writes to stdout in CI mode', () => {
|
|
45
|
-
(0, logging_1.setCI)(true);
|
|
46
|
-
(0, logging_1.print)('test print');
|
|
47
|
-
expect(mockStdout).toHaveBeenCalledWith(expect.stringContaining('test print\n'));
|
|
48
|
-
expect(mockStderr).not.toHaveBeenCalled();
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
describe('log levels', () => {
|
|
52
|
-
test('respects log level settings', () => {
|
|
53
|
-
(0, logging_1.setLogLevel)(logging_1.LogLevel.ERROR);
|
|
54
|
-
(0, logging_1.error)('error message');
|
|
55
|
-
(0, logging_1.warning)('warning message');
|
|
56
|
-
(0, logging_1.print)('print message');
|
|
57
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('error message\n'));
|
|
58
|
-
expect(mockStderr).not.toHaveBeenCalledWith(expect.stringContaining('warning message\n'));
|
|
59
|
-
expect(mockStderr).not.toHaveBeenCalledWith(expect.stringContaining('print message\n'));
|
|
60
|
-
});
|
|
61
|
-
test('debug messages only show at debug level', () => {
|
|
62
|
-
(0, logging_1.setLogLevel)(logging_1.LogLevel.INFO);
|
|
63
|
-
(0, logging_1.debug)('debug message');
|
|
64
|
-
expect(mockStderr).not.toHaveBeenCalled();
|
|
65
|
-
(0, logging_1.setLogLevel)(logging_1.LogLevel.DEBUG);
|
|
66
|
-
(0, logging_1.debug)('debug message');
|
|
67
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('debug message\n'));
|
|
68
|
-
});
|
|
69
|
-
test('trace messages only show at trace level', () => {
|
|
70
|
-
(0, logging_1.setLogLevel)(logging_1.LogLevel.DEBUG);
|
|
71
|
-
(0, logging_1.trace)('trace message');
|
|
72
|
-
expect(mockStderr).not.toHaveBeenCalled();
|
|
73
|
-
(0, logging_1.setLogLevel)(logging_1.LogLevel.TRACE);
|
|
74
|
-
(0, logging_1.trace)('trace message');
|
|
75
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('trace message\n'));
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe('message formatting', () => {
|
|
79
|
-
test('formats messages with multiple arguments', () => {
|
|
80
|
-
(0, logging_1.print)('Value: %d, String: %s', 42, 'test');
|
|
81
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('Value: 42, String: test\n'));
|
|
82
|
-
});
|
|
83
|
-
test('handles prefix correctly', () => {
|
|
84
|
-
const prefixedLog = (0, logging_1.prefix)('PREFIX');
|
|
85
|
-
prefixedLog('test message');
|
|
86
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('PREFIX test message\n'));
|
|
87
|
-
});
|
|
88
|
-
test('handles custom styles', () => {
|
|
89
|
-
(0, logging_1.success)('success message');
|
|
90
|
-
// Note: actual styling will depend on chalk, but we can verify the message is there
|
|
91
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('success message\n'));
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
describe('corked logging', () => {
|
|
95
|
-
test('buffers messages when corked', async () => {
|
|
96
|
-
await (0, logging_1.withCorkedLogging)(async () => {
|
|
97
|
-
(0, logging_1.print)('message 1');
|
|
98
|
-
(0, logging_1.print)('message 2');
|
|
99
|
-
expect(mockStderr).not.toHaveBeenCalled();
|
|
100
|
-
});
|
|
101
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('message 1\n'));
|
|
102
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('message 2\n'));
|
|
103
|
-
});
|
|
104
|
-
test('handles nested corking correctly', async () => {
|
|
105
|
-
await (0, logging_1.withCorkedLogging)(async () => {
|
|
106
|
-
(0, logging_1.print)('outer 1');
|
|
107
|
-
await (0, logging_1.withCorkedLogging)(async () => {
|
|
108
|
-
(0, logging_1.print)('inner');
|
|
109
|
-
});
|
|
110
|
-
(0, logging_1.print)('outer 2');
|
|
111
|
-
expect(mockStderr).not.toHaveBeenCalled();
|
|
112
|
-
});
|
|
113
|
-
expect(mockStderr).toHaveBeenCalledTimes(3);
|
|
114
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('outer 1\n'));
|
|
115
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('inner\n'));
|
|
116
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringContaining('outer 2\n'));
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
describe('timestamp and prefix handling', () => {
|
|
120
|
-
test('combines timestamp and prefix correctly', () => {
|
|
121
|
-
(0, logging_1.log)({
|
|
122
|
-
level: logging_1.LogLevel.INFO,
|
|
123
|
-
message: 'test message',
|
|
124
|
-
timestamp: true,
|
|
125
|
-
prefix: 'PREFIX',
|
|
126
|
-
});
|
|
127
|
-
expect(mockStderr).toHaveBeenCalledWith(expect.stringMatching(/PREFIX \[\d{2}:\d{2}:\d{2}\] test message\n/));
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9nZ2luZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBQWtKO0FBRWxKLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3ZCLGlDQUFpQztJQUNqQyxJQUFJLFVBQXFCLENBQUM7SUFDMUIsSUFBSSxVQUFxQixDQUFDO0lBRTFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxtQ0FBbUM7UUFDbkMsSUFBQSxxQkFBVyxFQUFDLGtCQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBQSxlQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFFYiwwQ0FBMEM7UUFDMUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN2QixVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRXZCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUNwRSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ3BFLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0lB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QUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dMZXZlbCwgbG9nLCBzZXRMb2dMZXZlbCwgc2V0Q0ksIGRhdGEsIHByaW50LCBlcnJvciwgd2FybmluZywgc3VjY2VzcywgZGVidWcsIHRyYWNlLCBwcmVmaXgsIHdpdGhDb3JrZWRMb2dnaW5nIH0gZnJvbSAnLi4vbGliL2xvZ2dpbmcnO1xuXG5kZXNjcmliZSgnbG9nZ2luZycsICgpID0+IHtcbiAgLy8gTW9jayBzdHJlYW1zIHRvIGNhcHR1cmUgb3V0cHV0XG4gIGxldCBtb2NrU3Rkb3V0OiBqZXN0Lk1vY2s7XG4gIGxldCBtb2NrU3RkZXJyOiBqZXN0Lk1vY2s7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgLy8gUmVzZXQgbG9nIGxldmVsIGJlZm9yZSBlYWNoIHRlc3RcbiAgICBzZXRMb2dMZXZlbChMb2dMZXZlbC5JTkZPKTtcbiAgICBzZXRDSShmYWxzZSk7XG5cbiAgICAvLyBDcmVhdGUgbW9jayBmdW5jdGlvbnMgdG8gY2FwdHVyZSBvdXRwdXRcbiAgICBtb2NrU3Rkb3V0ID0gamVzdC5mbigpO1xuICAgIG1vY2tTdGRlcnIgPSBqZXN0LmZuKCk7XG5cbiAgICAvLyBNb2NrIHRoZSB3cml0ZSBtZXRob2RzIGRpcmVjdGx5XG4gICAgamVzdC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKChjaHVuazogYW55KSA9PiB7XG4gICAgICBtb2NrU3Rkb3V0KGNodW5rLnRvU3RyaW5nKCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICBqZXN0LnNweU9uKHByb2Nlc3Muc3RkZXJyLCAnd3JpdGUnKS5tb2NrSW1wbGVtZW50YXRpb24oKGNodW5rOiBhbnkpID0+IHtcbiAgICAgIG1vY2tTdGRlcnIoY2h1bmsudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqZXN0LnJlc3RvcmVBbGxNb2NrcygpO1xuICB9KTtcbiAgZGVzY3JpYmUoJ3N0cmVhbSBzZWxlY3Rpb24nLCAoKSA9PiB7XG4gICAgdGVzdCgnZGF0YSgpIGFsd2F5cyB3cml0ZXMgdG8gc3Rkb3V0JywgKCkgPT4ge1xuICAgICAgZGF0YSgndGVzdCBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZG91dCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3Rlc3QgbWVzc2FnZVxcbicpKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZXJyb3IoKSBhbHdheXMgd3JpdGVzIHRvIHN0ZGVycicsICgpID0+IHtcbiAgICAgIGVycm9yKCd0ZXN0IGVycm9yJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3Rlc3QgZXJyb3JcXG4nKSk7XG4gICAgICBleHBlY3QobW9ja1N0ZG91dCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3ByaW50KCkgd3JpdGVzIHRvIHN0ZGVyciBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgcHJpbnQoJ3Rlc3QgcHJpbnQnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Quc3RyaW5nQ29udGFpbmluZygndGVzdCBwcmludFxcbicpKTtcbiAgICAgIGV4cGVjdChtb2NrU3Rkb3V0KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncHJpbnQoKSB3cml0ZXMgdG8gc3Rkb3V0IGluIENJIG1vZGUnLCAoKSA9PiB7XG4gICAgICBzZXRDSSh0cnVlKTtcbiAgICAgIHByaW50KCd0ZXN0IHByaW50Jyk7XG4gICAgICBleHBlY3QobW9ja1N0ZG91dCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3Rlc3QgcHJpbnRcXG4nKSk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZyBsZXZlbHMnLCAoKSA9PiB7XG4gICAgdGVzdCgncmVzcGVjdHMgbG9nIGxldmVsIHNldHRpbmdzJywgKCkgPT4ge1xuICAgICAgc2V0TG9nTGV2ZWwoTG9nTGV2ZWwuRVJST1IpO1xuICAgICAgZXJyb3IoJ2Vycm9yIG1lc3NhZ2UnKTtcbiAgICAgIHdhcm5pbmcoJ3dhcm5pbmcgbWVzc2FnZScpO1xuICAgICAgcHJpbnQoJ3ByaW50IG1lc3NhZ2UnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Quc3RyaW5nQ29udGFpbmluZygnZXJyb3IgbWVzc2FnZVxcbicpKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS5ub3QudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3dhcm5pbmcgbWVzc2FnZVxcbicpKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS5ub3QudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3ByaW50IG1lc3NhZ2VcXG4nKSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdkZWJ1ZyBtZXNzYWdlcyBvbmx5IHNob3cgYXQgZGVidWcgbGV2ZWwnLCAoKSA9PiB7XG4gICAgICBzZXRMb2dMZXZlbChMb2dMZXZlbC5JTkZPKTtcbiAgICAgIGRlYnVnKCdkZWJ1ZyBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgICAgc2V0TG9nTGV2ZWwoTG9nTGV2ZWwuREVCVUcpO1xuICAgICAgZGVidWcoJ2RlYnVnIG1lc3NhZ2UnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Quc3RyaW5nQ29udGFpbmluZygnZGVidWcgbWVzc2FnZVxcbicpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3RyYWNlIG1lc3NhZ2VzIG9ubHkgc2hvdyBhdCB0cmFjZSBsZXZlbCcsICgpID0+IHtcbiAgICAgIHNldExvZ0xldmVsKExvZ0xldmVsLkRFQlVHKTtcbiAgICAgIHRyYWNlKCd0cmFjZSBtZXNzYWdlJyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgICAgc2V0TG9nTGV2ZWwoTG9nTGV2ZWwuVFJBQ0UpO1xuICAgICAgdHJhY2UoJ3RyYWNlIG1lc3NhZ2UnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Quc3RyaW5nQ29udGFpbmluZygndHJhY2UgbWVzc2FnZVxcbicpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21lc3NhZ2UgZm9ybWF0dGluZycsICgpID0+IHtcbiAgICB0ZXN0KCdmb3JtYXRzIG1lc3NhZ2VzIHdpdGggbXVsdGlwbGUgYXJndW1lbnRzJywgKCkgPT4ge1xuICAgICAgcHJpbnQoJ1ZhbHVlOiAlZCwgU3RyaW5nOiAlcycsIDQyLCAndGVzdCcpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5zdHJpbmdDb250YWluaW5nKCdWYWx1ZTogNDIsIFN0cmluZzogdGVzdFxcbicpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2hhbmRsZXMgcHJlZml4IGNvcnJlY3RseScsICgpID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkTG9nID0gcHJlZml4KCdQUkVGSVgnKTtcbiAgICAgIHByZWZpeGVkTG9nKCd0ZXN0IG1lc3NhZ2UnKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Quc3RyaW5nQ29udGFpbmluZygnUFJFRklYIHRlc3QgbWVzc2FnZVxcbicpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2hhbmRsZXMgY3VzdG9tIHN0eWxlcycsICgpID0+IHtcbiAgICAgIHN1Y2Nlc3MoJ3N1Y2Nlc3MgbWVzc2FnZScpO1xuICAgICAgLy8gTm90ZTogYWN0dWFsIHN0eWxpbmcgd2lsbCBkZXBlbmQgb24gY2hhbGssIGJ1dCB3ZSBjYW4gdmVyaWZ5IHRoZSBtZXNzYWdlIGlzIHRoZXJlXG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ3N1Y2Nlc3MgbWVzc2FnZVxcbicpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvcmtlZCBsb2dnaW5nJywgKCkgPT4ge1xuICAgIHRlc3QoJ2J1ZmZlcnMgbWVzc2FnZXMgd2hlbiBjb3JrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB3aXRoQ29ya2VkTG9nZ2luZyhhc3luYyAoKSA9PiB7XG4gICAgICAgIHByaW50KCdtZXNzYWdlIDEnKTtcbiAgICAgICAgcHJpbnQoJ21lc3NhZ2UgMicpO1xuICAgICAgICBleHBlY3QobW9ja1N0ZGVycikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ21lc3NhZ2UgMVxcbicpKTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Quc3RyaW5nQ29udGFpbmluZygnbWVzc2FnZSAyXFxuJykpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnaGFuZGxlcyBuZXN0ZWQgY29ya2luZyBjb3JyZWN0bHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB3aXRoQ29ya2VkTG9nZ2luZyhhc3luYyAoKSA9PiB7XG4gICAgICAgIHByaW50KCdvdXRlciAxJyk7XG4gICAgICAgIGF3YWl0IHdpdGhDb3JrZWRMb2dnaW5nKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBwcmludCgnaW5uZXInKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByaW50KCdvdXRlciAyJyk7XG4gICAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMyk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ291dGVyIDFcXG4nKSk7XG4gICAgICBleHBlY3QobW9ja1N0ZGVycikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ2lubmVyXFxuJykpO1xuICAgICAgZXhwZWN0KG1vY2tTdGRlcnIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5zdHJpbmdDb250YWluaW5nKCdvdXRlciAyXFxuJykpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndGltZXN0YW1wIGFuZCBwcmVmaXggaGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgdGVzdCgnY29tYmluZXMgdGltZXN0YW1wIGFuZCBwcmVmaXggY29ycmVjdGx5JywgKCkgPT4ge1xuICAgICAgbG9nKHtcbiAgICAgICAgbGV2ZWw6IExvZ0xldmVsLklORk8sXG4gICAgICAgIG1lc3NhZ2U6ICd0ZXN0IG1lc3NhZ2UnLFxuICAgICAgICB0aW1lc3RhbXA6IHRydWUsXG4gICAgICAgIHByZWZpeDogJ1BSRUZJWCcsXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChtb2NrU3RkZXJyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9QUkVGSVggXFxbXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXF0gdGVzdCBtZXNzYWdlXFxuLyksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
File without changes
|