@zuplo/cli 6.69.0 → 6.69.2
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/__tests__/integration/info.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/info.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/info.integration.test.js +246 -0
- package/dist/__tests__/integration/info.integration.test.js.map +1 -0
- package/dist/__tests__/integration/jest-mocks-setup.js +6 -1
- package/dist/__tests__/integration/jest-mocks-setup.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/cmds/info.d.ts +9 -0
- package/dist/cmds/info.d.ts.map +1 -0
- package/dist/cmds/info.js +19 -0
- package/dist/cmds/info.js.map +1 -0
- package/dist/cmds/project/index.d.ts.map +1 -1
- package/dist/cmds/project/index.js +2 -1
- package/dist/cmds/project/index.js.map +1 -1
- package/dist/cmds/project/info.d.ts +10 -0
- package/dist/cmds/project/info.d.ts.map +1 -0
- package/dist/cmds/project/info.js +50 -0
- package/dist/cmds/project/info.js.map +1 -0
- package/dist/common/api/lib.d.ts +6 -1
- package/dist/common/api/lib.d.ts.map +1 -1
- package/dist/common/api/lib.js.map +1 -1
- package/dist/common/middleware/authentication.d.ts +5 -2
- package/dist/common/middleware/authentication.d.ts.map +1 -1
- package/dist/common/middleware/authentication.js +27 -20
- package/dist/common/middleware/authentication.js.map +1 -1
- package/dist/common/read-linked-config.d.ts +1 -0
- package/dist/common/read-linked-config.d.ts.map +1 -1
- package/dist/common/read-linked-config.js +1 -0
- package/dist/common/read-linked-config.js.map +1 -1
- package/dist/common/read-linked-config.test.js +15 -0
- package/dist/common/read-linked-config.test.js.map +1 -1
- package/dist/common/utils/pretty-print-environment-prompt.d.ts.map +1 -1
- package/dist/common/utils/pretty-print-environment-prompt.js +9 -15
- package/dist/common/utils/pretty-print-environment-prompt.js.map +1 -1
- package/dist/common/utils/pretty-print-environment-prompt.test.d.ts +2 -0
- package/dist/common/utils/pretty-print-environment-prompt.test.d.ts.map +1 -0
- package/dist/common/utils/pretty-print-environment-prompt.test.js +44 -0
- package/dist/common/utils/pretty-print-environment-prompt.test.js.map +1 -0
- package/dist/project/info/handler.d.ts +7 -0
- package/dist/project/info/handler.d.ts.map +1 -0
- package/dist/project/info/handler.js +109 -0
- package/dist/project/info/handler.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/node_modules/uuid/dist/cjs/v35.js +3 -0
- package/node_modules/uuid/dist/cjs/v6.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/v35.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/v6.js +3 -0
- package/node_modules/uuid/dist/esm/v35.js +3 -0
- package/node_modules/uuid/dist/esm/v6.js +3 -0
- package/node_modules/uuid/dist/esm-browser/v35.js +3 -0
- package/node_modules/uuid/dist/esm-browser/v6.js +3 -0
- package/node_modules/uuid/package.json +1 -1
- package/package.json +6 -10
- package/node_modules/as-table/.babelrc +0 -3
- package/node_modules/as-table/.eslintrc +0 -6
- package/node_modules/as-table/.travis.yml +0 -24
- package/node_modules/as-table/CHANGELOG.md +0 -3
- package/node_modules/as-table/LICENSE +0 -21
- package/node_modules/as-table/README.md +0 -113
- package/node_modules/as-table/as-table.d.ts +0 -32
- package/node_modules/as-table/as-table.js +0 -89
- package/node_modules/as-table/build/as-table.js +0 -86
- package/node_modules/as-table/package.json +0 -67
- package/node_modules/as-table/test.js +0 -223
- package/node_modules/printable-characters/.babelrc +0 -3
- package/node_modules/printable-characters/.eslintrc +0 -6
- package/node_modules/printable-characters/.gitattributes +0 -2
- package/node_modules/printable-characters/.npmignore +0 -8
- package/node_modules/printable-characters/.travis.yml +0 -24
- package/node_modules/printable-characters/CHANGELOG.md +0 -1
- package/node_modules/printable-characters/LICENSE +0 -24
- package/node_modules/printable-characters/README.md +0 -88
- package/node_modules/printable-characters/build/printable-characters.js +0 -53
- package/node_modules/printable-characters/package.json +0 -72
- package/node_modules/printable-characters/printable-characters.js +0 -44
- package/node_modules/printable-characters/test.js +0 -77
|
@@ -31,6 +31,9 @@ function v35(version, hash, value, namespace, buf, offset) {
|
|
|
31
31
|
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
32
32
|
if (buf) {
|
|
33
33
|
offset = offset || 0;
|
|
34
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
35
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
36
|
+
}
|
|
34
37
|
for (let i = 0; i < 16; ++i) {
|
|
35
38
|
buf[offset + i] = bytes[i];
|
|
36
39
|
}
|
|
@@ -9,6 +9,9 @@ function v6(options, buf, offset) {
|
|
|
9
9
|
let bytes = (0, v1_js_1.default)({ ...options, _v6: true }, new Uint8Array(16));
|
|
10
10
|
bytes = (0, v1ToV6_js_1.default)(bytes);
|
|
11
11
|
if (buf) {
|
|
12
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
13
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
14
|
+
}
|
|
12
15
|
for (let i = 0; i < 16; i++) {
|
|
13
16
|
buf[offset + i] = bytes[i];
|
|
14
17
|
}
|
|
@@ -31,6 +31,9 @@ function v35(version, hash, value, namespace, buf, offset) {
|
|
|
31
31
|
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
32
32
|
if (buf) {
|
|
33
33
|
offset = offset || 0;
|
|
34
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
35
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
36
|
+
}
|
|
34
37
|
for (let i = 0; i < 16; ++i) {
|
|
35
38
|
buf[offset + i] = bytes[i];
|
|
36
39
|
}
|
|
@@ -9,6 +9,9 @@ function v6(options, buf, offset) {
|
|
|
9
9
|
let bytes = (0, v1_js_1.default)({ ...options, _v6: true }, new Uint8Array(16));
|
|
10
10
|
bytes = (0, v1ToV6_js_1.default)(bytes);
|
|
11
11
|
if (buf) {
|
|
12
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
13
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
14
|
+
}
|
|
12
15
|
for (let i = 0; i < 16; i++) {
|
|
13
16
|
buf[offset + i] = bytes[i];
|
|
14
17
|
}
|
|
@@ -27,6 +27,9 @@ export default function v35(version, hash, value, namespace, buf, offset) {
|
|
|
27
27
|
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
28
28
|
if (buf) {
|
|
29
29
|
offset = offset || 0;
|
|
30
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
31
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
32
|
+
}
|
|
30
33
|
for (let i = 0; i < 16; ++i) {
|
|
31
34
|
buf[offset + i] = bytes[i];
|
|
32
35
|
}
|
|
@@ -7,6 +7,9 @@ function v6(options, buf, offset) {
|
|
|
7
7
|
let bytes = v1({ ...options, _v6: true }, new Uint8Array(16));
|
|
8
8
|
bytes = v1ToV6(bytes);
|
|
9
9
|
if (buf) {
|
|
10
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
11
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
12
|
+
}
|
|
10
13
|
for (let i = 0; i < 16; i++) {
|
|
11
14
|
buf[offset + i] = bytes[i];
|
|
12
15
|
}
|
|
@@ -27,6 +27,9 @@ export default function v35(version, hash, value, namespace, buf, offset) {
|
|
|
27
27
|
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
28
28
|
if (buf) {
|
|
29
29
|
offset = offset || 0;
|
|
30
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
31
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
32
|
+
}
|
|
30
33
|
for (let i = 0; i < 16; ++i) {
|
|
31
34
|
buf[offset + i] = bytes[i];
|
|
32
35
|
}
|
|
@@ -7,6 +7,9 @@ function v6(options, buf, offset) {
|
|
|
7
7
|
let bytes = v1({ ...options, _v6: true }, new Uint8Array(16));
|
|
8
8
|
bytes = v1ToV6(bytes);
|
|
9
9
|
if (buf) {
|
|
10
|
+
if (offset < 0 || offset + 16 > buf.length) {
|
|
11
|
+
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
|
|
12
|
+
}
|
|
10
13
|
for (let i = 0; i < 16; i++) {
|
|
11
14
|
buf[offset + i] = bytes[i];
|
|
12
15
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zuplo/cli",
|
|
3
|
-
"version": "6.69.
|
|
3
|
+
"version": "6.69.2",
|
|
4
4
|
"repository": "https://github.com/zuplo/zuplo",
|
|
5
5
|
"author": "Zuplo, Inc.",
|
|
6
6
|
"type": "module",
|
|
@@ -29,11 +29,10 @@
|
|
|
29
29
|
"@opentelemetry/api": "1.9.0",
|
|
30
30
|
"@sentry/node": "9.22.0",
|
|
31
31
|
"@swc/core": "1.10.18",
|
|
32
|
-
"@zuplo/core": "6.69.
|
|
32
|
+
"@zuplo/core": "6.69.2",
|
|
33
33
|
"@zuplo/editor": "1.0.20821740935",
|
|
34
|
-
"@zuplo/openapi-tools": "6.69.
|
|
35
|
-
"@zuplo/runtime": "6.69.
|
|
36
|
-
"as-table": "1.0.55",
|
|
34
|
+
"@zuplo/openapi-tools": "6.69.2",
|
|
35
|
+
"@zuplo/runtime": "6.69.2",
|
|
37
36
|
"chalk": "5.4.1",
|
|
38
37
|
"chokidar": "3.5.3",
|
|
39
38
|
"cookie": "1.0.2",
|
|
@@ -64,12 +63,11 @@
|
|
|
64
63
|
"strip-ansi": "7.1.0",
|
|
65
64
|
"tar": "7.5.11",
|
|
66
65
|
"undici": "6.24.1",
|
|
67
|
-
"uuid": "^11.1.0",
|
|
68
66
|
"workerd": "1.20241230.0",
|
|
69
67
|
"yargs": "17.7.2",
|
|
70
68
|
"zod": "^3.24.1",
|
|
71
|
-
"@zuplo/graphql": "6.69.
|
|
72
|
-
"@zuplo/otel": "6.69.
|
|
69
|
+
"@zuplo/graphql": "6.69.2",
|
|
70
|
+
"@zuplo/otel": "6.69.2"
|
|
73
71
|
},
|
|
74
72
|
"bundleDependencies": [
|
|
75
73
|
"@fastify/cors",
|
|
@@ -81,7 +79,6 @@
|
|
|
81
79
|
"@zuplo/editor",
|
|
82
80
|
"@zuplo/openapi-tools",
|
|
83
81
|
"@zuplo/runtime",
|
|
84
|
-
"as-table",
|
|
85
82
|
"chalk",
|
|
86
83
|
"chokidar",
|
|
87
84
|
"cookie",
|
|
@@ -110,7 +107,6 @@
|
|
|
110
107
|
"strip-ansi",
|
|
111
108
|
"tar",
|
|
112
109
|
"undici",
|
|
113
|
-
"uuid",
|
|
114
110
|
"yargs",
|
|
115
111
|
"zod",
|
|
116
112
|
"@zuplo/graphql",
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
language: node_js
|
|
2
|
-
node_js:
|
|
3
|
-
- '8'
|
|
4
|
-
script:
|
|
5
|
-
- set -e
|
|
6
|
-
- npm run test
|
|
7
|
-
- npm run coveralls
|
|
8
|
-
after_success:
|
|
9
|
-
- git config --global user.email "travis@travis-ci.org"
|
|
10
|
-
- git config --global user.name "Travis CI"
|
|
11
|
-
- npm config set git-tag-version=false
|
|
12
|
-
- NPM_VERSION=$(npm version patch)
|
|
13
|
-
- git commit -a -m "${NPM_VERSION:1}" -m "[ci skip]"
|
|
14
|
-
- git remote remove origin
|
|
15
|
-
- git remote add origin https://${GITHUB_TOKEN}@github.com/xpl/as-table.git
|
|
16
|
-
- git push origin HEAD:master
|
|
17
|
-
deploy:
|
|
18
|
-
provider: npm
|
|
19
|
-
email: rocket.mind@gmail.com
|
|
20
|
-
api_key:
|
|
21
|
-
secure: AVxwMF+0BKyQqTvA/9Va+G+1kgsVUKQ08LgzVhqfUv2yGgh5jWY0P5/IFLQocTuC+uef066KqTlvnWR3SWqB+am5EsqiZeFPzOHmtCgxrML2aZK8crjPoY4W/3ZfPy9H00nU9YPNVguXJY7K7MwEFXZ/SVOM1aQvr+omeqMpbnP6Cl4nQ6Hzbc/uAdUHIQG1qzoEbsnkT1EuQ39v1IQLBEoiBDkUj45bmEdETZXd9Nr42BOviFMYjba0vAn8gsuUgMj+bYXeb0XXedmRwBGjtgcNx76RwwmOXPtiC2IQs6FiDmCzZtCcoYuvrWSOFYhfEgptDeeZ080x38uhBxusYq3p0iRF+XyjWlr3w1A5JaHL8FkUfmdBxKAzKhiPTS5yDqteWL8znqGKSPjR+FJNQo5pbS5+C8I67xkcDHvigMWy30lnnjvCV7tPW4FdJ85kx+F1qNmHU0vYqVfDNet4KZofgWoS0cHMYskzl1BwWC+vofwI9/sKatDtFR25ffFg8f17nW+6vTX/n9uSqIFURUI8DhfFlxqG2giDd73KCB0uZ4Fqd0dqnmcp5qg2hQt0sIftDBOmOaX7xKbVdLbGBTAQ82KZmbQCnj0In10gJQf5O/mKD7rr2dMLHi6fvbBE/cEsWy4u/o50UQ7bDzGfXT3tJ+tktxmx1HfSf6eXilA=
|
|
22
|
-
env:
|
|
23
|
-
global:
|
|
24
|
-
secure: KbUFKSmSkbuRb0mQ1kcKL5dA8TdI2SlnZAzyXwRXF/RpK5LDGI31gmPODl7DOKHPzEUTQaIeA/8dI0p8DKM9eTfHyM+pl0kZE+e6wSTdawVlI9FoxLgyBi8hz3UWnA39/YN65uFNvFX+kSYPPeOeV5zJNUaC8CT7Y3HYKR3tGrBaKrQbCnOlXIBsmyFryUHqdapBDmrqrU69Ab1uQca/djS2ztsjYvaP61aEIAKAsUZQRtDk8mP8sUQ5o15CwcpaWp/K1efeb3AuxHjcYOHH0Ci0SZmWpO9ky+wLCPeDqEeV4ZDN4Wfp9yx5dNkV0+ifevSRR5FNS9LHREPML8jz53KzOQQOXK5Fup/SsHPHU0XT6vB2TlG0YwatMSVGY4QIRCMftMkokjFwWsP8oPbuTuVCWhHQouMxRQDPQ/z3Dn/+blASG1lw16S92ksRLc8CCGA8gUZ6CrKh82gFAfyzwAUgLhoFIPEEu2e49W/VdAzeQ1VfAb/TbjwdgX9OR8F8TR48jM3Xpk8BdPANso7t9Rk9vvIw0JxR0Ir+7ufHV1dqCPsGa5KdZjaKrHHs6P/JI+Xl+w4o/6wmn3FhORSKqGuxDJqoQ8cw49Hh5OM0uf9tKfiyUyuFdsApom4vwrOTL+ZRbbD037JH/fzp24C33oaGwOCdyY0Eb/n0LI5ufRg=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2016 Vitaly Gordon (https://github.com/xpl)
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# as-table
|
|
2
|
-
|
|
3
|
-
[](https://travis-ci.org/xpl/as-table) [](https://coveralls.io/github/xpl/as-table) [](https://npmjs.com/package/as-table) [](https://david-dm.org/xpl/as-table) [](https://scrutinizer-ci.com/g/xpl/as-table/?branch=master)
|
|
4
|
-
|
|
5
|
-
A simple function that print objects and arrays as ASCII tables. Supports ANSI styling and weird 💩 Unicode emoji symbols (they won't break the layout), thanks to [`printable-characters`](https://github.com/xpl/printable-characters).
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install as-table
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Printing objects
|
|
12
|
-
|
|
13
|
-
```javascript
|
|
14
|
-
asTable = require ('as-table')
|
|
15
|
-
|
|
16
|
-
asTable ([ { foo: true, string: 'abcde', num: 42 },
|
|
17
|
-
{ foo: false, string: 'qwertyuiop', num: 43 },
|
|
18
|
-
{ string: null, num: 44 } ])
|
|
19
|
-
```
|
|
20
|
-
```
|
|
21
|
-
foo string num
|
|
22
|
-
----------------------
|
|
23
|
-
true abcde 42
|
|
24
|
-
false qwertyuiop 43
|
|
25
|
-
null 44
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Printing arrays
|
|
29
|
-
|
|
30
|
-
```javascript
|
|
31
|
-
asTable ([['qwe', '123456789', 'zxcvbnm'],
|
|
32
|
-
['qwerty', '12', 'zxcvb'],
|
|
33
|
-
['qwertyiop', '1234567', 'z']])
|
|
34
|
-
```
|
|
35
|
-
```
|
|
36
|
-
qwe 123456789 zxcvbnm
|
|
37
|
-
qwerty 12 zxcvb
|
|
38
|
-
qwertyiop 1234567 z
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Limiting total width by proportionally trimming cells + setting columns delimiter
|
|
42
|
-
|
|
43
|
-
```javascript
|
|
44
|
-
asTable.configure ({ maxTotalWidth: 22, delimiter: ' | ' }) (data)
|
|
45
|
-
```
|
|
46
|
-
```
|
|
47
|
-
qwe | 1234… | zxc…
|
|
48
|
-
qwer… | 12 | zxc…
|
|
49
|
-
qwer… | 1234… | z
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Right align
|
|
53
|
-
|
|
54
|
-
```javascript
|
|
55
|
-
asTable.configure ({ right: true }) (data)
|
|
56
|
-
```
|
|
57
|
-
```
|
|
58
|
-
foo bar baz
|
|
59
|
-
-----------------------------
|
|
60
|
-
qwe 123456789 zxcvbnm
|
|
61
|
-
qwerty 12 zxcvb
|
|
62
|
-
qwertyiop 1234567 z
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Providing a custom object printer
|
|
66
|
-
|
|
67
|
-
```javascript
|
|
68
|
-
asTable.configure ({ print: x => (typeof x === 'boolean') ? (x ? 'yes' : 'no') : String (x) }) (data)
|
|
69
|
-
```
|
|
70
|
-
```
|
|
71
|
-
foo string num
|
|
72
|
-
--------------------
|
|
73
|
-
yes abcde 42
|
|
74
|
-
no qwertyuiop 43
|
|
75
|
-
null 44
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
The callback also receives a field name (in case of objects) or a column index (in case of arrays):
|
|
79
|
-
|
|
80
|
-
```javascript
|
|
81
|
-
asTable = require ('as-table').configure ({
|
|
82
|
-
print (x, k) {
|
|
83
|
-
if (k === 'timestamp') return new Date (x).toGMTString()
|
|
84
|
-
return String (x)
|
|
85
|
-
}
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
asTable ([ { name: 'A', timestamp: 1561202591572 },
|
|
89
|
-
{ name: 'B', timestamp: 1558524240034 } ])
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Obtaining a pre-configured function
|
|
93
|
-
|
|
94
|
-
```javascript
|
|
95
|
-
asTable = require ('as-table').configure ({ maxTotalWidth: 25, delimiter: ' | ' })
|
|
96
|
-
|
|
97
|
-
asTable (data)
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Customizing the title rendering and the header separator
|
|
101
|
-
|
|
102
|
-
With string coloring by [`ansicolor`](https://github.com/xpl/ansicolor) (just for the demo purposes, any library will fit):
|
|
103
|
-
|
|
104
|
-
```javascript
|
|
105
|
-
asTable = require ('as-table').configure ({ title: x => x.bright, delimiter: ' | '.dim.cyan, dash: '-'.bright.cyan })
|
|
106
|
-
|
|
107
|
-
console.log (
|
|
108
|
-
asTable ([ { foo: true, string: 'abcde', num: 42 },
|
|
109
|
-
{ foo: false, string: 'qwertyuiop'.bgMagenta.green.bright, num: 43 } ])
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
<img width="179" alt="screen shot 2017-07-21 at 23 46 14" src="https://user-images.githubusercontent.com/1707/28481945-dcb0f8d6-6e6e-11e7-896e-dfad40662daf.png">
|
|
113
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
declare function asTable(rows: any[][]): string
|
|
3
|
-
declare function asTable(objects: {[column: string]: any}[]): string
|
|
4
|
-
declare namespace asTable {
|
|
5
|
-
interface Config<T> {
|
|
6
|
-
maxTotalWidth: number
|
|
7
|
-
minColumnWidths?: number[]
|
|
8
|
-
delimiter?: string
|
|
9
|
-
dash: string
|
|
10
|
-
right: boolean
|
|
11
|
-
print(value: T, key?: string | number): string
|
|
12
|
-
title(value: string): string
|
|
13
|
-
}
|
|
14
|
-
type OmitPrint<T> = Pick<T, Exclude<keyof T, 'print'>> & {print: undefined}
|
|
15
|
-
type ValidValueType<O, T> = {
|
|
16
|
-
[P in keyof O]: T;
|
|
17
|
-
}
|
|
18
|
-
interface Formatter<T> extends Readonly<Config<T>> {
|
|
19
|
-
(rows: T[][]): string
|
|
20
|
-
<O extends ValidValueType<O, T>>(objects: O[]): string
|
|
21
|
-
configure(cfg: Partial<OmitPrint<Config<any>>>): Formatter<T>
|
|
22
|
-
configure<T>(cfg: Partial<Config<T>>): Formatter<T>
|
|
23
|
-
}
|
|
24
|
-
function configure<T = any>(cfg: Partial<Config<T>>): Formatter<T>
|
|
25
|
-
const maxTotalWidth: number
|
|
26
|
-
const print: StringConstructor
|
|
27
|
-
const title: StringConstructor
|
|
28
|
-
const dash: '-'
|
|
29
|
-
const right: false
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export = asTable
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const O = Object
|
|
4
|
-
, { first, strlen } = require ('printable-characters') // handles ANSI codes and invisible characters
|
|
5
|
-
, limit = (s, n) => (first (s, n - 1) + '…')
|
|
6
|
-
|
|
7
|
-
const asColumns = (rows, cfg_) => {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
zip = (arrs, f) => arrs.reduce ((a, b) => b.map ((b, i) => [...a[i] || [], b]), []).map (args => f (...args)),
|
|
12
|
-
|
|
13
|
-
/* Convert cell data to string (converting multiline text to singleline) */
|
|
14
|
-
|
|
15
|
-
cells = rows.map (r => r.map (c => c.replace (/\n/g, '\\n'))),
|
|
16
|
-
|
|
17
|
-
/* Compute column widths (per row) and max widths (per column) */
|
|
18
|
-
|
|
19
|
-
cellWidths = cells.map (r => r.map (strlen)),
|
|
20
|
-
maxWidths = zip (cellWidths, Math.max),
|
|
21
|
-
|
|
22
|
-
/* Default config */
|
|
23
|
-
|
|
24
|
-
cfg = O.assign ({
|
|
25
|
-
delimiter: ' ',
|
|
26
|
-
minColumnWidths: maxWidths.map (x => 0),
|
|
27
|
-
maxTotalWidth: 0 }, cfg_),
|
|
28
|
-
|
|
29
|
-
delimiterLength = strlen (cfg.delimiter),
|
|
30
|
-
|
|
31
|
-
/* Project desired column widths, taking maxTotalWidth and minColumnWidths in account. */
|
|
32
|
-
|
|
33
|
-
totalWidth = maxWidths.reduce ((a, b) => a + b, 0),
|
|
34
|
-
relativeWidths = maxWidths.map (w => w / totalWidth),
|
|
35
|
-
maxTotalWidth = cfg.maxTotalWidth - (delimiterLength * (maxWidths.length - 1)),
|
|
36
|
-
excessWidth = Math.max (0, totalWidth - maxTotalWidth),
|
|
37
|
-
computedWidths = zip ([cfg.minColumnWidths, maxWidths, relativeWidths],
|
|
38
|
-
(min, max, relative) => Math.max (min, Math.floor (max - excessWidth * relative))),
|
|
39
|
-
|
|
40
|
-
/* This is how many symbols we should pad or cut (per column). */
|
|
41
|
-
|
|
42
|
-
restCellWidths = cellWidths.map (widths => zip ([computedWidths, widths], (a, b) => a - b))
|
|
43
|
-
|
|
44
|
-
/* Perform final composition. */
|
|
45
|
-
|
|
46
|
-
return zip ([cells, restCellWidths], (a, b) =>
|
|
47
|
-
zip ([a, b], (str, w) => (w >= 0)
|
|
48
|
-
? (cfg.right ? (' '.repeat (w) + str) : (str + ' '.repeat (w)))
|
|
49
|
-
: (limit (str, strlen (str) + w))).join (cfg.delimiter))
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const asTable = cfg => O.assign (arr => {
|
|
53
|
-
|
|
54
|
-
/* Print arrays */
|
|
55
|
-
|
|
56
|
-
if (arr[0] && Array.isArray (arr[0])) {
|
|
57
|
-
return asColumns (arr.map (r => r.map (
|
|
58
|
-
(c, i) => (c === undefined) ? '' : cfg.print (c, i)
|
|
59
|
-
)
|
|
60
|
-
),
|
|
61
|
-
cfg).join ('\n')
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* Print objects */
|
|
65
|
-
|
|
66
|
-
const colNames = [...new Set ([].concat (...arr.map (O.keys)))],
|
|
67
|
-
columns = [colNames.map (cfg.title),
|
|
68
|
-
...arr.map (o => colNames.map (
|
|
69
|
-
key => (o[key] === undefined) ? '' : cfg.print (o[key], key)
|
|
70
|
-
)
|
|
71
|
-
)
|
|
72
|
-
],
|
|
73
|
-
lines = asColumns (columns, cfg)
|
|
74
|
-
|
|
75
|
-
return (cfg.dash ? [lines[0], cfg.dash.repeat (strlen (lines[0])), ...lines.slice (1)] : lines).join ('\n')
|
|
76
|
-
|
|
77
|
-
}, cfg, {
|
|
78
|
-
|
|
79
|
-
configure: newConfig => asTable (O.assign ({}, cfg, newConfig)),
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
module.exports = asTable ({
|
|
83
|
-
|
|
84
|
-
maxTotalWidth: Number.MAX_SAFE_INTEGER,
|
|
85
|
-
print: String,
|
|
86
|
-
title: String,
|
|
87
|
-
dash: '-',
|
|
88
|
-
right: false
|
|
89
|
-
})
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
|
|
4
|
-
|
|
5
|
-
const O = Object;
|
|
6
|
-
|
|
7
|
-
var _require = require('printable-characters');
|
|
8
|
-
|
|
9
|
-
const first = _require.first,
|
|
10
|
-
strlen = _require.strlen,
|
|
11
|
-
limit = (s, n) => first(s, n - 1) + '…';
|
|
12
|
-
|
|
13
|
-
const asColumns = (rows, cfg_) => {
|
|
14
|
-
|
|
15
|
-
const zip = (arrs, f) => arrs.reduce((a, b) => b.map((b, i) => [].concat(_toConsumableArray(a[i] || []), [b])), []).map(args => f.apply(undefined, _toConsumableArray(args))),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/* Convert cell data to string (converting multiline text to singleline) */
|
|
19
|
-
|
|
20
|
-
cells = rows.map(r => r.map(c => c.replace(/\n/g, '\\n'))),
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/* Compute column widths (per row) and max widths (per column) */
|
|
24
|
-
|
|
25
|
-
cellWidths = cells.map(r => r.map(strlen)),
|
|
26
|
-
maxWidths = zip(cellWidths, Math.max),
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/* Default config */
|
|
30
|
-
|
|
31
|
-
cfg = O.assign({
|
|
32
|
-
delimiter: ' ',
|
|
33
|
-
minColumnWidths: maxWidths.map(x => 0),
|
|
34
|
-
maxTotalWidth: 0 }, cfg_),
|
|
35
|
-
delimiterLength = strlen(cfg.delimiter),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
/* Project desired column widths, taking maxTotalWidth and minColumnWidths in account. */
|
|
39
|
-
|
|
40
|
-
totalWidth = maxWidths.reduce((a, b) => a + b, 0),
|
|
41
|
-
relativeWidths = maxWidths.map(w => w / totalWidth),
|
|
42
|
-
maxTotalWidth = cfg.maxTotalWidth - delimiterLength * (maxWidths.length - 1),
|
|
43
|
-
excessWidth = Math.max(0, totalWidth - maxTotalWidth),
|
|
44
|
-
computedWidths = zip([cfg.minColumnWidths, maxWidths, relativeWidths], (min, max, relative) => Math.max(min, Math.floor(max - excessWidth * relative))),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
/* This is how many symbols we should pad or cut (per column). */
|
|
48
|
-
|
|
49
|
-
restCellWidths = cellWidths.map(widths => zip([computedWidths, widths], (a, b) => a - b));
|
|
50
|
-
|
|
51
|
-
/* Perform final composition. */
|
|
52
|
-
|
|
53
|
-
return zip([cells, restCellWidths], (a, b) => zip([a, b], (str, w) => w >= 0 ? cfg.right ? ' '.repeat(w) + str : str + ' '.repeat(w) : limit(str, strlen(str) + w)).join(cfg.delimiter));
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const asTable = cfg => O.assign(arr => {
|
|
57
|
-
var _ref;
|
|
58
|
-
|
|
59
|
-
/* Print arrays */
|
|
60
|
-
|
|
61
|
-
if (arr[0] && Array.isArray(arr[0])) {
|
|
62
|
-
return asColumns(arr.map(r => r.map((c, i) => c === undefined ? '' : cfg.print(c, i))), cfg).join('\n');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/* Print objects */
|
|
66
|
-
|
|
67
|
-
const colNames = [].concat(_toConsumableArray(new Set((_ref = []).concat.apply(_ref, _toConsumableArray(arr.map(O.keys)))))),
|
|
68
|
-
columns = [colNames.map(cfg.title)].concat(_toConsumableArray(arr.map(o => colNames.map(key => o[key] === undefined ? '' : cfg.print(o[key], key))))),
|
|
69
|
-
lines = asColumns(columns, cfg);
|
|
70
|
-
|
|
71
|
-
return (cfg.dash ? [lines[0], cfg.dash.repeat(strlen(lines[0]))].concat(_toConsumableArray(lines.slice(1))) : lines).join('\n');
|
|
72
|
-
}, cfg, {
|
|
73
|
-
|
|
74
|
-
configure: newConfig => asTable(O.assign({}, cfg, newConfig))
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
module.exports = asTable({
|
|
78
|
-
|
|
79
|
-
maxTotalWidth: Number.MAX_SAFE_INTEGER,
|
|
80
|
-
print: String,
|
|
81
|
-
title: String,
|
|
82
|
-
dash: '-',
|
|
83
|
-
right: false
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2FzLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBRU0sVUFBSSxNQUFKOztlQUNvQixRQUFTLHNCQUFULEM7O01BQWxCLEssWUFBQSxLO01BQU8sTSxZQUFBLE07TUFDVCxLLEdBQVEsQ0FBQyxDQUFELEVBQUksQ0FBSixLQUFXLE1BQU8sQ0FBUCxFQUFVLElBQUksQ0FBZCxJQUFtQixHOztBQUU1QyxNQUFNLFlBQVksQ0FBQyxJQUFELEVBQU8sSUFBUCxLQUFnQjs7QUFFOUIsVUFFSSxNQUFNLENBQUMsSUFBRCxFQUFPLENBQVAsS0FBYSxLQUFLLE1BQUwsQ0FBYSxDQUFDLENBQUQsRUFBSSxDQUFKLEtBQVUsRUFBRSxHQUFGLENBQU8sQ0FBQyxDQUFELEVBQUksQ0FBSixrQ0FBYyxFQUFFLENBQUYsS0FBUSxFQUF0QixJQUEwQixDQUExQixFQUFQLENBQXZCLEVBQTZELEVBQTdELEVBQWlFLEdBQWpFLENBQXNFLFFBQVEsc0NBQU0sSUFBTixFQUE5RSxDQUZ2Qjs7O0FBSUE7O0FBRUksWUFBa0IsS0FBSyxHQUFMLENBQVUsS0FBSyxFQUFFLEdBQUYsQ0FBTyxLQUFLLEVBQUUsT0FBRixDQUFXLEtBQVgsRUFBa0IsS0FBbEIsQ0FBWixDQUFmLENBTnRCOzs7QUFRQTs7QUFFSSxpQkFBa0IsTUFBTSxHQUFOLENBQVcsS0FBSyxFQUFFLEdBQUYsQ0FBTyxNQUFQLENBQWhCLENBVnRCO0FBQUEsVUFXSSxZQUFrQixJQUFLLFVBQUwsRUFBaUIsS0FBSyxHQUF0QixDQVh0Qjs7O0FBYUE7O0FBRUksVUFBa0IsRUFBRSxNQUFGLENBQVU7QUFDUixtQkFBVyxJQURIO0FBRVIseUJBQWlCLFVBQVUsR0FBVixDQUFlLEtBQUssQ0FBcEIsQ0FGVDtBQUdSLHVCQUFlLENBSFAsRUFBVixFQUdzQixJQUh0QixDQWZ0QjtBQUFBLFVBb0JJLGtCQUFrQixPQUFRLElBQUksU0FBWixDQXBCdEI7OztBQXNCQTs7QUFFSSxpQkFBa0IsVUFBVSxNQUFWLENBQWtCLENBQUMsQ0FBRCxFQUFJLENBQUosS0FBVSxJQUFJLENBQWhDLEVBQW1DLENBQW5DLENBeEJ0QjtBQUFBLFVBeUJJLGlCQUFrQixVQUFVLEdBQVYsQ0FBZSxLQUFLLElBQUksVUFBeEIsQ0F6QnRCO0FBQUEsVUEwQkksZ0JBQWtCLElBQUksYUFBSixHQUFxQixtQkFBbUIsVUFBVSxNQUFWLEdBQW1CLENBQXRDLENBMUIzQztBQUFBLFVBMkJJLGNBQWtCLEtBQUssR0FBTCxDQUFVLENBQVYsRUFBYSxhQUFhLGFBQTFCLENBM0J0QjtBQUFBLFVBNEJJLGlCQUFrQixJQUFLLENBQUMsSUFBSSxlQUFMLEVBQXNCLFNBQXRCLEVBQWlDLGNBQWpDLENBQUwsRUFDRSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsUUFBWCxLQUF3QixLQUFLLEdBQUwsQ0FBVSxHQUFWLEVBQWUsS0FBSyxLQUFMLENBQVksTUFBTSxjQUFjLFFBQWhDLENBQWYsQ0FEMUIsQ0E1QnRCOzs7QUErQkE7O0FBRUkscUJBQWtCLFdBQVcsR0FBWCxDQUFnQixVQUFVLElBQUssQ0FBQyxjQUFELEVBQWlCLE1BQWpCLENBQUwsRUFBK0IsQ0FBQyxDQUFELEVBQUksQ0FBSixLQUFVLElBQUksQ0FBN0MsQ0FBMUIsQ0FqQ3RCOztBQW1DQTs7QUFFSSxXQUFPLElBQUssQ0FBQyxLQUFELEVBQVEsY0FBUixDQUFMLEVBQThCLENBQUMsQ0FBRCxFQUFJLENBQUosS0FDN0IsSUFBSyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUwsRUFBYSxDQUFDLEdBQUQsRUFBTSxDQUFOLEtBQWEsS0FBSyxDQUFOLEdBQ00sSUFBSSxLQUFKLEdBQWEsSUFBSSxNQUFKLENBQVksQ0FBWixJQUFpQixHQUE5QixHQUFzQyxNQUFNLElBQUksTUFBSixDQUFZLENBQVosQ0FEbEQsR0FFTSxNQUFPLEdBQVAsRUFBWSxPQUFRLEdBQVIsSUFBZSxDQUEzQixDQUYvQixFQUUrRCxJQUYvRCxDQUVxRSxJQUFJLFNBRnpFLENBREQsQ0FBUDtBQUlQLENBM0NEOztBQTZDQSxNQUFNLFVBQVUsT0FBTyxFQUFFLE1BQUYsQ0FBVSxPQUFPO0FBQUE7O0FBRXhDOztBQUVJLFFBQUksSUFBSSxDQUFKLEtBQVUsTUFBTSxPQUFOLENBQWUsSUFBSSxDQUFKLENBQWYsQ0FBZCxFQUFzQztBQUNsQyxlQUFPLFVBQVcsSUFBSSxHQUFKLENBQVMsS0FBSyxFQUFFLEdBQUYsQ0FDUSxDQUFDLENBQUQsRUFBSSxDQUFKLEtBQVcsTUFBTSxTQUFQLEdBQW9CLEVBQXBCLEdBQXlCLElBQUksS0FBSixDQUFXLENBQVgsRUFBYyxDQUFkLENBRDNDLENBQWQsQ0FBWCxFQUlXLEdBSlgsRUFJZ0IsSUFKaEIsQ0FJc0IsSUFKdEIsQ0FBUDtBQUtIOztBQUVMOztBQUVJLFVBQU0sd0NBQWUsSUFBSSxHQUFKLENBQVMsWUFBRyxNQUFILGdDQUFjLElBQUksR0FBSixDQUFTLEVBQUUsSUFBWCxDQUFkLEVBQVQsQ0FBZixFQUFOO0FBQUEsVUFDTSxXQUFZLFNBQVMsR0FBVCxDQUFjLElBQUksS0FBbEIsQ0FBWiw0QkFDZSxJQUFJLEdBQUosQ0FBUyxLQUFLLFNBQVMsR0FBVCxDQUNJLE9BQVEsRUFBRSxHQUFGLE1BQVcsU0FBWixHQUF5QixFQUF6QixHQUE4QixJQUFJLEtBQUosQ0FBVyxFQUFFLEdBQUYsQ0FBWCxFQUFtQixHQUFuQixDQUR6QyxDQUFkLENBRGYsRUFETjtBQUFBLFVBT00sUUFBVyxVQUFXLE9BQVgsRUFBb0IsR0FBcEIsQ0FQakI7O0FBU0EsV0FBTyxDQUFDLElBQUksSUFBSixJQUFZLE1BQU0sQ0FBTixDQUFaLEVBQXNCLElBQUksSUFBSixDQUFTLE1BQVQsQ0FBaUIsT0FBUSxNQUFNLENBQU4sQ0FBUixDQUFqQixDQUF0Qiw0QkFBOEQsTUFBTSxLQUFOLENBQWEsQ0FBYixDQUE5RCxLQUFpRixLQUFsRixFQUF5RixJQUF6RixDQUErRixJQUEvRixDQUFQO0FBRUgsQ0F6QnNCLEVBeUJwQixHQXpCb0IsRUF5QmY7O0FBRUosZUFBVyxhQUFhLFFBQVMsRUFBRSxNQUFGLENBQVUsRUFBVixFQUFjLEdBQWQsRUFBbUIsU0FBbkIsQ0FBVDtBQUZwQixDQXpCZSxDQUF2Qjs7QUE4QkEsT0FBTyxPQUFQLEdBQWlCLFFBQVM7O0FBRXRCLG1CQUFlLE9BQU8sZ0JBRkE7QUFHdEIsV0FBTyxNQUhlO0FBSXRCLFdBQU8sTUFKZTtBQUt0QixVQUFNLEdBTGdCO0FBTXRCLFdBQU87QUFOZSxDQUFULENBQWpCIiwiZmlsZSI6ImFzLXRhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IE8gPSBPYmplY3RcbiAgICAsIHsgZmlyc3QsIHN0cmxlbiB9ID0gcmVxdWlyZSAoJ3ByaW50YWJsZS1jaGFyYWN0ZXJzJykgLy8gaGFuZGxlcyBBTlNJIGNvZGVzIGFuZCBpbnZpc2libGUgY2hhcmFjdGVyc1xuICAgICwgbGltaXQgPSAocywgbikgPT4gKGZpcnN0IChzLCBuIC0gMSkgKyAn4oCmJylcblxuY29uc3QgYXNDb2x1bW5zID0gKHJvd3MsIGNmZ18pID0+IHtcbiAgICBcbiAgICBjb25zdFxuXG4gICAgICAgIHppcCA9IChhcnJzLCBmKSA9PiBhcnJzLnJlZHVjZSAoKGEsIGIpID0+IGIubWFwICgoYiwgaSkgPT4gWy4uLmFbaV0gfHwgW10sIGJdKSwgW10pLm1hcCAoYXJncyA9PiBmICguLi5hcmdzKSksXG5cbiAgICAvKiAgQ29udmVydCBjZWxsIGRhdGEgdG8gc3RyaW5nIChjb252ZXJ0aW5nIG11bHRpbGluZSB0ZXh0IHRvIHNpbmdsZWxpbmUpICovXG5cbiAgICAgICAgY2VsbHMgICAgICAgICAgID0gcm93cy5tYXAgKHIgPT4gci5tYXAgKGMgPT4gYy5yZXBsYWNlICgvXFxuL2csICdcXFxcbicpKSksXG5cbiAgICAvKiAgQ29tcHV0ZSBjb2x1bW4gd2lkdGhzIChwZXIgcm93KSBhbmQgbWF4IHdpZHRocyAocGVyIGNvbHVtbikgICAgICovXG5cbiAgICAgICAgY2VsbFdpZHRocyAgICAgID0gY2VsbHMubWFwIChyID0+IHIubWFwIChzdHJsZW4pKSxcbiAgICAgICAgbWF4V2lkdGhzICAgICAgID0gemlwIChjZWxsV2lkdGhzLCBNYXRoLm1heCksXG5cbiAgICAvKiAgRGVmYXVsdCBjb25maWcgICAgICovXG5cbiAgICAgICAgY2ZnICAgICAgICAgICAgID0gTy5hc3NpZ24gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXI6ICcgICcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluQ29sdW1uV2lkdGhzOiBtYXhXaWR0aHMubWFwICh4ID0+IDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRvdGFsV2lkdGg6IDAgfSwgY2ZnXyksXG5cbiAgICAgICAgZGVsaW1pdGVyTGVuZ3RoID0gc3RybGVuIChjZmcuZGVsaW1pdGVyKSxcblxuICAgIC8qICBQcm9qZWN0IGRlc2lyZWQgY29sdW1uIHdpZHRocywgdGFraW5nIG1heFRvdGFsV2lkdGggYW5kIG1pbkNvbHVtbldpZHRocyBpbiBhY2NvdW50LiAgICAgKi9cblxuICAgICAgICB0b3RhbFdpZHRoICAgICAgPSBtYXhXaWR0aHMucmVkdWNlICgoYSwgYikgPT4gYSArIGIsIDApLFxuICAgICAgICByZWxhdGl2ZVdpZHRocyAgPSBtYXhXaWR0aHMubWFwICh3ID0+IHcgLyB0b3RhbFdpZHRoKSxcbiAgICAgICAgbWF4VG90YWxXaWR0aCAgID0gY2ZnLm1heFRvdGFsV2lkdGggLSAoZGVsaW1pdGVyTGVuZ3RoICogKG1heFdpZHRocy5sZW5ndGggLSAxKSksXG4gICAgICAgIGV4Y2Vzc1dpZHRoICAgICA9IE1hdGgubWF4ICgwLCB0b3RhbFdpZHRoIC0gbWF4VG90YWxXaWR0aCksXG4gICAgICAgIGNvbXB1dGVkV2lkdGhzICA9IHppcCAoW2NmZy5taW5Db2x1bW5XaWR0aHMsIG1heFdpZHRocywgcmVsYXRpdmVXaWR0aHNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW4sIG1heCwgcmVsYXRpdmUpID0+IE1hdGgubWF4IChtaW4sIE1hdGguZmxvb3IgKG1heCAtIGV4Y2Vzc1dpZHRoICogcmVsYXRpdmUpKSksXG5cbiAgICAvKiAgVGhpcyBpcyBob3cgbWFueSBzeW1ib2xzIHdlIHNob3VsZCBwYWQgb3IgY3V0IChwZXIgY29sdW1uKS4gICovXG5cbiAgICAgICAgcmVzdENlbGxXaWR0aHMgID0gY2VsbFdpZHRocy5tYXAgKHdpZHRocyA9PiB6aXAgKFtjb21wdXRlZFdpZHRocywgd2lkdGhzXSwgKGEsIGIpID0+IGEgLSBiKSlcblxuICAgIC8qICBQZXJmb3JtIGZpbmFsIGNvbXBvc2l0aW9uLiAgICovXG5cbiAgICAgICAgcmV0dXJuIHppcCAoW2NlbGxzLCByZXN0Q2VsbFdpZHRoc10sIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgIHppcCAoW2EsIGJdLCAoc3RyLCB3KSA9PiAodyA+PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChjZmcucmlnaHQgPyAoJyAnLnJlcGVhdCAodykgKyBzdHIpIDogKHN0ciArICcgJy5yZXBlYXQgKHcpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAobGltaXQgKHN0ciwgc3RybGVuIChzdHIpICsgdykpKS5qb2luIChjZmcuZGVsaW1pdGVyKSlcbn1cblxuY29uc3QgYXNUYWJsZSA9IGNmZyA9PiBPLmFzc2lnbiAoYXJyID0+IHtcblxuLyogIFByaW50IGFycmF5cyAgKi9cblxuICAgIGlmIChhcnJbMF0gJiYgQXJyYXkuaXNBcnJheSAoYXJyWzBdKSkge1xuICAgICAgICByZXR1cm4gYXNDb2x1bW5zIChhcnIubWFwIChyID0+IHIubWFwIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLCBpKSA9PiAoYyA9PT0gdW5kZWZpbmVkKSA/ICcnIDogY2ZnLnByaW50IChjLCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZmcpLmpvaW4gKCdcXG4nKVxuICAgIH1cblxuLyogIFByaW50IG9iamVjdHMgICAqL1xuXG4gICAgY29uc3QgY29sTmFtZXMgPSBbLi4ubmV3IFNldCAoW10uY29uY2F0ICguLi5hcnIubWFwIChPLmtleXMpKSldLFxuICAgICAgICAgIGNvbHVtbnMgID0gW2NvbE5hbWVzLm1hcCAoY2ZnLnRpdGxlKSxcbiAgICAgICAgICAgICAgICAgICAgICAuLi5hcnIubWFwIChvID0+IGNvbE5hbWVzLm1hcCAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0+IChvW2tleV0gPT09IHVuZGVmaW5lZCkgPyAnJyA6IGNmZy5wcmludCAob1trZXldLCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgIGxpbmVzICAgID0gYXNDb2x1bW5zIChjb2x1bW5zLCBjZmcpXG5cbiAgICByZXR1cm4gKGNmZy5kYXNoID8gW2xpbmVzWzBdLCBjZmcuZGFzaC5yZXBlYXQgKHN0cmxlbiAobGluZXNbMF0pKSwgLi4ubGluZXMuc2xpY2UgKDEpXSA6IGxpbmVzKS5qb2luICgnXFxuJylcblxufSwgY2ZnLCB7XG5cbiAgICBjb25maWd1cmU6IG5ld0NvbmZpZyA9PiBhc1RhYmxlIChPLmFzc2lnbiAoe30sIGNmZywgbmV3Q29uZmlnKSksXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzVGFibGUgKHtcblxuICAgIG1heFRvdGFsV2lkdGg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgIHByaW50OiBTdHJpbmcsXG4gICAgdGl0bGU6IFN0cmluZyxcbiAgICBkYXNoOiAnLScsXG4gICAgcmlnaHQ6IGZhbHNlXG59KVxuIl19
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "as-table",
|
|
3
|
-
"version": "1.0.55",
|
|
4
|
-
"description": "A simple function that print objects / arrays as ASCII tables. Handles ANSI styling and weird 💩 Unicode emoji symbols – they won't break the layout.",
|
|
5
|
-
"main": "build/as-table.js",
|
|
6
|
-
"typings": "./as-table.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"lint": "eslint as-table.js",
|
|
9
|
-
"lint-test": "eslint test.js",
|
|
10
|
-
"babel": "babel as-table.js --source-maps inline --out-file ./build/as-table.js",
|
|
11
|
-
"build": "npm run lint && npm run lint-test && npm run babel",
|
|
12
|
-
"coveralls": "nyc report --reporter=text-lcov | coveralls",
|
|
13
|
-
"test": "npm run build && env AS_TABLE_TEST_FILE='./build/as-table' nyc --reporter=html --reporter=text mocha --reporter spec",
|
|
14
|
-
"autotest": "env AS_TABLE_TEST_FILE='./as-table' mocha --reporter spec --watch"
|
|
15
|
-
},
|
|
16
|
-
"repository": {
|
|
17
|
-
"type": "git",
|
|
18
|
-
"url": "https://github.com/xpl/as-table.git"
|
|
19
|
-
},
|
|
20
|
-
"keywords": [
|
|
21
|
-
"ASCII",
|
|
22
|
-
"table",
|
|
23
|
-
"sheet",
|
|
24
|
-
"grid",
|
|
25
|
-
"print",
|
|
26
|
-
"log",
|
|
27
|
-
"print table",
|
|
28
|
-
"object as table",
|
|
29
|
-
"array as table",
|
|
30
|
-
"text table",
|
|
31
|
-
"array table",
|
|
32
|
-
"object table",
|
|
33
|
-
"array format",
|
|
34
|
-
"columns",
|
|
35
|
-
"as table",
|
|
36
|
-
"tablefy",
|
|
37
|
-
"columns",
|
|
38
|
-
"stringify",
|
|
39
|
-
"print object",
|
|
40
|
-
"grid",
|
|
41
|
-
"tty",
|
|
42
|
-
"terminal",
|
|
43
|
-
"console",
|
|
44
|
-
"text",
|
|
45
|
-
"layout"
|
|
46
|
-
],
|
|
47
|
-
"author": "Vitaly Gordon <rocket.mind@gmail.com>",
|
|
48
|
-
"license": "MIT",
|
|
49
|
-
"bugs": {
|
|
50
|
-
"url": "https://github.com/xpl/as-table/issues"
|
|
51
|
-
},
|
|
52
|
-
"homepage": "https://github.com/xpl/as-table",
|
|
53
|
-
"devDependencies": {
|
|
54
|
-
"ansicolor": "^1.1.81",
|
|
55
|
-
"babel-cli": "^6.26.0",
|
|
56
|
-
"babel-plugin-transform-es2015-destructuring": "^6.23.0",
|
|
57
|
-
"babel-plugin-transform-es2015-spread": "^6.22.0",
|
|
58
|
-
"coveralls": "^3.0.3",
|
|
59
|
-
"eslint": "^4.19.1",
|
|
60
|
-
"istanbul": "^0.4.5",
|
|
61
|
-
"mocha": "^6.0.2",
|
|
62
|
-
"nyc": "^13.3.0"
|
|
63
|
-
},
|
|
64
|
-
"dependencies": {
|
|
65
|
-
"printable-characters": "^1.0.42"
|
|
66
|
-
}
|
|
67
|
-
}
|