helm-viewer 0.1.4 → 0.2.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/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +31 -4
- package/binary/index.html +59 -31
- package/binary/index.js +743 -26
- package/helm-viewer-0.2.0.rc1.tgz +0 -0
- package/helm-viewer-0.2.0.tgz +0 -0
- package/package.json +5 -4
- package/helm-viewer-0.1.3.tgz +0 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.2.0 | 2023-06-21
|
|
4
|
+
|
|
5
|
+
#### Docs
|
|
6
|
+
|
|
7
|
+
- Improve docs
|
|
8
|
+
|
|
9
|
+
## 0.2.0rc-1 | 2023-06-21
|
|
10
|
+
|
|
11
|
+
This is the first published feature. The report provides a way to see yaml files in the chart and to see each file's details.
|
|
12
|
+
|
|
13
|
+
#### Features
|
|
14
|
+
|
|
15
|
+
- Integation of Monaco editor to have a beautiful yaml view
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Tchoupinax
|
|
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.
|
package/README.md
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
# helm-viewer
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
- Github: https://github.com/Tchoupinax/helm-viewer
|
|
4
|
+
- NPM: https://www.npmjs.com/package/helm-viewer
|
|
5
|
+
|
|
6
|
+
## Motivation
|
|
7
|
+
|
|
8
|
+
When you are writing a [helm Chart](https://helm.sh/docs/topics/charts/), you often want to generate the template and check what is the final result. To reach this goal, helm provides this command : `helm template`.
|
|
9
|
+
|
|
10
|
+
However, the output of this command is a huge raw text and it is mainly painful.
|
|
4
11
|
|
|
12
|
+
This project aims to give you the right tool to build helm chart.
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Install globally
|
|
18
|
+
npm i -g helm-viewer
|
|
5
19
|
```
|
|
6
|
-
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# When you are in a chart helm folder
|
|
25
|
+
helm-viewer
|
|
26
|
+
|
|
27
|
+
# To target a specific path
|
|
28
|
+
helm-viewer path/of/the/chart
|
|
7
29
|
```
|
|
8
30
|
|
|
9
|
-
|
|
31
|
+
It will analyze the helm chart and generate a HTML report, automatically opened in your favorite browser.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Development
|
|
35
|
+
## Generate the binary
|
|
10
36
|
|
|
11
37
|
```
|
|
12
|
-
|
|
38
|
+
just
|
|
13
39
|
```
|
|
40
|
+
|
package/binary/index.html
CHANGED
|
@@ -18,16 +18,19 @@
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
</script>
|
|
21
|
-
|
|
22
|
-
<script type='text/javascript' src="assets/vue.global.js"></script>
|
|
21
|
+
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
|
|
23
22
|
</head>
|
|
24
23
|
<body>
|
|
25
|
-
<div id="app" class="flex">
|
|
26
|
-
<
|
|
24
|
+
<div id="app" class="flex h-screen">
|
|
25
|
+
<div class="w-1/5 bg-blue-50 h-full">
|
|
27
26
|
<div class="p-2">
|
|
28
27
|
<h1 class="italic text-4xl font-thin ml-4 mb-8">>> Computed files</h1>
|
|
29
28
|
|
|
30
|
-
<div
|
|
29
|
+
<div
|
|
30
|
+
v-if="data.templated"
|
|
31
|
+
v-for="template of Object.keys(data.templated)"
|
|
32
|
+
class="mb-8"
|
|
33
|
+
>
|
|
31
34
|
<p class="text-3xl font-thin">
|
|
32
35
|
{{ template }}
|
|
33
36
|
</p>
|
|
@@ -42,7 +45,10 @@
|
|
|
42
45
|
</div>
|
|
43
46
|
</div>
|
|
44
47
|
|
|
45
|
-
<div
|
|
48
|
+
<div
|
|
49
|
+
v-if="data.sources"
|
|
50
|
+
class="bg-green-100"
|
|
51
|
+
>
|
|
46
52
|
<h1 class="italic text-4xl font-thin ml-4 mb-8">>> Sources</h1>
|
|
47
53
|
<div class="mb-1" v-for="file of Object.keys(data.sources).filter(n => n !== 'templates')">
|
|
48
54
|
<p
|
|
@@ -52,10 +58,14 @@
|
|
|
52
58
|
{{ file }}
|
|
53
59
|
</p>
|
|
54
60
|
</div>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<div
|
|
61
|
+
|
|
62
|
+
<p v-if="data.sources['templates']" class="text-xl ml-8 font-thin">templates</p>
|
|
63
|
+
|
|
64
|
+
<div
|
|
65
|
+
v-if="data.sources['templates']"
|
|
66
|
+
v-for="file of Object.keys(data.sources['templates'])"
|
|
67
|
+
class="mb-1 ml-6"
|
|
68
|
+
>
|
|
59
69
|
<p
|
|
60
70
|
class="text-xl ml-8 font-thin"
|
|
61
71
|
@click="displaySourceFile(file, true)"
|
|
@@ -64,22 +74,9 @@
|
|
|
64
74
|
</p>
|
|
65
75
|
</div>
|
|
66
76
|
</div>
|
|
67
|
-
</
|
|
77
|
+
</div>
|
|
68
78
|
|
|
69
|
-
<div class="w-
|
|
70
|
-
<pre v-if="source && templateFile && fileName">
|
|
71
|
-
<template v-if="source === 'templated'">
|
|
72
|
-
{{ data["templated"][templateFile][fileName ]}}
|
|
73
|
-
</template>
|
|
74
|
-
<template v-else === 'templated'">
|
|
75
|
-
<template v-if="isSourceTemplate">
|
|
76
|
-
{{ data["sources"]["templates"][fileName ]}}
|
|
77
|
-
</template>
|
|
78
|
-
<template v-else>
|
|
79
|
-
{{ data["sources"][fileName ]}}
|
|
80
|
-
</template>
|
|
81
|
-
</template>
|
|
82
|
-
</pre>
|
|
79
|
+
<div id="container" class="w-4/5">
|
|
83
80
|
</div>
|
|
84
81
|
</div>
|
|
85
82
|
|
|
@@ -89,9 +86,9 @@
|
|
|
89
86
|
createApp({
|
|
90
87
|
data() {
|
|
91
88
|
return {
|
|
92
|
-
templateFile:
|
|
93
|
-
fileName:
|
|
94
|
-
source:
|
|
89
|
+
templateFile: undefined,
|
|
90
|
+
fileName: undefined,
|
|
91
|
+
source: undefined,
|
|
95
92
|
isSourceTemplate: false,
|
|
96
93
|
}
|
|
97
94
|
},
|
|
@@ -104,17 +101,48 @@
|
|
|
104
101
|
},
|
|
105
102
|
methods: {
|
|
106
103
|
displayTemplatedFile(templateFile, fileName) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
document.getElementById('container').innerHTML = ""
|
|
105
|
+
require(["vs/editor/editor.main"], () => {
|
|
106
|
+
monaco.editor.create(document.getElementById('container'), {
|
|
107
|
+
value: this.data["templated"][templateFile][fileName],
|
|
108
|
+
language: 'yaml',
|
|
109
|
+
theme: 'vs-dark',
|
|
110
|
+
});
|
|
111
|
+
});
|
|
110
112
|
},
|
|
111
113
|
displaySourceFile(fileName, isTemplate = false) {
|
|
112
114
|
this.source = "source"
|
|
113
115
|
this.fileName = fileName
|
|
114
116
|
this.isSourceTemplate = isTemplate
|
|
117
|
+
|
|
118
|
+
if (isTemplate) {
|
|
119
|
+
document.getElementById('container').innerHTML = ""
|
|
120
|
+
require(["vs/editor/editor.main"], () => {
|
|
121
|
+
monaco.editor.create(document.getElementById('container'), {
|
|
122
|
+
value: this.data["sources"]["templates"][fileName],
|
|
123
|
+
language: 'yaml',
|
|
124
|
+
theme: 'vs-dark',
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
} else {
|
|
128
|
+
document.getElementById('container').innerHTML = ""
|
|
129
|
+
require(["vs/editor/editor.main"], () => {
|
|
130
|
+
monaco.editor.create(document.getElementById('container'), {
|
|
131
|
+
value: this.data["sources"][fileName],
|
|
132
|
+
language: 'yaml',
|
|
133
|
+
theme: 'vs-dark',
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
115
137
|
}
|
|
116
138
|
}
|
|
117
139
|
}).mount('#app')
|
|
118
140
|
</script>
|
|
141
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs/loader.min.js"></script>
|
|
142
|
+
<script>
|
|
143
|
+
// require is provided by loader.min.js.
|
|
144
|
+
require.config({ paths: { 'vs': 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.26.1/min/vs' }});
|
|
145
|
+
|
|
146
|
+
</script>
|
|
119
147
|
</body>
|
|
120
148
|
</html>
|
package/binary/index.js
CHANGED
|
@@ -5745,17 +5745,18 @@ const fs_1 = __nccwpck_require__(7147);
|
|
|
5745
5745
|
const js_yaml_1 = __importDefault(__nccwpck_require__(1917));
|
|
5746
5746
|
const path_1 = __nccwpck_require__(1017);
|
|
5747
5747
|
function saveTemplatedYamlToFiles(helmTemplate) {
|
|
5748
|
+
var _a, _b;
|
|
5748
5749
|
const dataFileJSON = { templated: {} };
|
|
5749
5750
|
const files = helmTemplate.split('---');
|
|
5750
5751
|
for (const file of files) {
|
|
5751
5752
|
const jsonFile = js_yaml_1.default.load(file);
|
|
5752
5753
|
if (jsonFile) {
|
|
5753
|
-
const key = jsonFile.kind + "_" + jsonFile.metadata.name.replaceAll('-', "_");
|
|
5754
|
+
const key = jsonFile.kind + "_" + ((_a = jsonFile === null || jsonFile === void 0 ? void 0 : jsonFile.metadata) === null || _a === void 0 ? void 0 : _a.name.replaceAll('-', "_"));
|
|
5754
5755
|
(0, fs_1.writeFileSync)(`./tmp/templated/${key}.yaml`, file);
|
|
5755
5756
|
if (!dataFileJSON["templated"][jsonFile.kind]) {
|
|
5756
5757
|
dataFileJSON["templated"][jsonFile.kind] = {};
|
|
5757
5758
|
}
|
|
5758
|
-
dataFileJSON["templated"][jsonFile.kind][jsonFile.metadata.name.replaceAll('-', "_")] = file;
|
|
5759
|
+
dataFileJSON["templated"][jsonFile.kind][(_b = jsonFile === null || jsonFile === void 0 ? void 0 : jsonFile.metadata) === null || _b === void 0 ? void 0 : _b.name.replaceAll('-', "_")] = file;
|
|
5759
5760
|
}
|
|
5760
5761
|
}
|
|
5761
5762
|
(0, fs_1.writeFileSync)('tmp/global-data.json', JSON.stringify(dataFileJSON, null, 2));
|
|
@@ -5818,16 +5819,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5818
5819
|
};
|
|
5819
5820
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5820
5821
|
const is_chart_folder_1 = __nccwpck_require__(2620);
|
|
5821
|
-
const execa_1 = __nccwpck_require__(
|
|
5822
|
+
const execa_1 = __nccwpck_require__(4349);
|
|
5822
5823
|
const save_yaml_1 = __nccwpck_require__(8895);
|
|
5823
5824
|
const fs_1 = __nccwpck_require__(7147);
|
|
5824
5825
|
const open_1 = __importDefault(__nccwpck_require__(5768));
|
|
5825
5826
|
const crypto_1 = __nccwpck_require__(6113);
|
|
5827
|
+
const chalk_1 = __importDefault(__nccwpck_require__(385));
|
|
5826
5828
|
function run() {
|
|
5827
5829
|
var _a, _b;
|
|
5828
5830
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5829
5831
|
const currentPath = (_b = (_a = process.argv) === null || _a === void 0 ? void 0 : _a.at(2)) !== null && _b !== void 0 ? _b : process.cwd();
|
|
5830
|
-
console.log(`path detected ${currentPath}`);
|
|
5832
|
+
console.log(chalk_1.default.bgCyanBright(`path detected ${currentPath}`));
|
|
5831
5833
|
(0, fs_1.rmSync)('tmp', { recursive: true, force: true });
|
|
5832
5834
|
(0, fs_1.mkdirSync)('tmp/templated', { recursive: true });
|
|
5833
5835
|
(0, fs_1.mkdirSync)('tmp/sources', { recursive: true });
|
|
@@ -5835,14 +5837,27 @@ function run() {
|
|
|
5835
5837
|
console.log('Not a chart folder');
|
|
5836
5838
|
process.exit(1);
|
|
5837
5839
|
}
|
|
5838
|
-
|
|
5840
|
+
let stdout;
|
|
5841
|
+
try {
|
|
5842
|
+
({ stdout } = yield (0, execa_1.$) `helm template ${currentPath}`);
|
|
5843
|
+
}
|
|
5844
|
+
catch (err) {
|
|
5845
|
+
console.log("\n");
|
|
5846
|
+
console.log(chalk_1.default.bgRedBright("The computation of the chart failed. (message below)"));
|
|
5847
|
+
console.log(err.message);
|
|
5848
|
+
console.log("\n");
|
|
5849
|
+
process.exit(1);
|
|
5850
|
+
}
|
|
5839
5851
|
(0, save_yaml_1.saveTemplatedYamlToFiles)(stdout);
|
|
5840
5852
|
(0, save_yaml_1.saveSourcesYamlToFiles)(currentPath);
|
|
5841
5853
|
const JSON = (0, fs_1.readFileSync)('tmp/global-data.json', 'utf-8');
|
|
5854
|
+
if (process.env.NODE_ENV === "development") {
|
|
5855
|
+
(0, fs_1.mkdirSync)('src/assets', { recursive: true });
|
|
5856
|
+
(0, fs_1.writeFileSync)('src/assets/global-data.js', `const DATA = ${JSON}`);
|
|
5857
|
+
}
|
|
5842
5858
|
let file = (0, fs_1.readFileSync)(__nccwpck_require__.ab + "index.html", 'utf-8');
|
|
5843
5859
|
file = file
|
|
5844
|
-
.replace('<script src="assets/global-data.js"></script>', `<script>const DATA = ${JSON};</script>`)
|
|
5845
|
-
.replace('<!--<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>-->', '<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>');
|
|
5860
|
+
.replace('<script src="assets/global-data.js"></script>', `<script>const DATA = ${JSON};</script>`);
|
|
5846
5861
|
const id = (0, crypto_1.randomUUID)();
|
|
5847
5862
|
(0, fs_1.writeFileSync)(`tmp/index-${id}.html`, file);
|
|
5848
5863
|
(0, open_1.default)(`tmp/index-${id}.html`);
|
|
@@ -5910,6 +5925,22 @@ module.exports = require("node:fs");
|
|
|
5910
5925
|
|
|
5911
5926
|
/***/ }),
|
|
5912
5927
|
|
|
5928
|
+
/***/ 612:
|
|
5929
|
+
/***/ ((module) => {
|
|
5930
|
+
|
|
5931
|
+
"use strict";
|
|
5932
|
+
module.exports = require("node:os");
|
|
5933
|
+
|
|
5934
|
+
/***/ }),
|
|
5935
|
+
|
|
5936
|
+
/***/ 7742:
|
|
5937
|
+
/***/ ((module) => {
|
|
5938
|
+
|
|
5939
|
+
"use strict";
|
|
5940
|
+
module.exports = require("node:process");
|
|
5941
|
+
|
|
5942
|
+
/***/ }),
|
|
5943
|
+
|
|
5913
5944
|
/***/ 2037:
|
|
5914
5945
|
/***/ ((module) => {
|
|
5915
5946
|
|
|
@@ -5942,7 +5973,693 @@ module.exports = require("util");
|
|
|
5942
5973
|
|
|
5943
5974
|
/***/ }),
|
|
5944
5975
|
|
|
5945
|
-
/***/
|
|
5976
|
+
/***/ 385:
|
|
5977
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
5978
|
+
|
|
5979
|
+
"use strict";
|
|
5980
|
+
// ESM COMPAT FLAG
|
|
5981
|
+
__nccwpck_require__.r(__webpack_exports__);
|
|
5982
|
+
|
|
5983
|
+
// EXPORTS
|
|
5984
|
+
__nccwpck_require__.d(__webpack_exports__, {
|
|
5985
|
+
"Chalk": () => (/* binding */ Chalk),
|
|
5986
|
+
"backgroundColorNames": () => (/* reexport */ backgroundColorNames),
|
|
5987
|
+
"backgroundColors": () => (/* reexport */ backgroundColorNames),
|
|
5988
|
+
"chalkStderr": () => (/* binding */ chalkStderr),
|
|
5989
|
+
"colorNames": () => (/* reexport */ colorNames),
|
|
5990
|
+
"colors": () => (/* reexport */ colorNames),
|
|
5991
|
+
"default": () => (/* binding */ source),
|
|
5992
|
+
"foregroundColorNames": () => (/* reexport */ foregroundColorNames),
|
|
5993
|
+
"foregroundColors": () => (/* reexport */ foregroundColorNames),
|
|
5994
|
+
"modifierNames": () => (/* reexport */ modifierNames),
|
|
5995
|
+
"modifiers": () => (/* reexport */ modifierNames),
|
|
5996
|
+
"supportsColor": () => (/* binding */ stdoutColor),
|
|
5997
|
+
"supportsColorStderr": () => (/* binding */ stderrColor)
|
|
5998
|
+
});
|
|
5999
|
+
|
|
6000
|
+
;// CONCATENATED MODULE: ./node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
6001
|
+
const ANSI_BACKGROUND_OFFSET = 10;
|
|
6002
|
+
|
|
6003
|
+
const wrapAnsi16 = (offset = 0) => code => `\u001B[${code + offset}m`;
|
|
6004
|
+
|
|
6005
|
+
const wrapAnsi256 = (offset = 0) => code => `\u001B[${38 + offset};5;${code}m`;
|
|
6006
|
+
|
|
6007
|
+
const wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`;
|
|
6008
|
+
|
|
6009
|
+
const styles = {
|
|
6010
|
+
modifier: {
|
|
6011
|
+
reset: [0, 0],
|
|
6012
|
+
// 21 isn't widely supported and 22 does the same thing
|
|
6013
|
+
bold: [1, 22],
|
|
6014
|
+
dim: [2, 22],
|
|
6015
|
+
italic: [3, 23],
|
|
6016
|
+
underline: [4, 24],
|
|
6017
|
+
overline: [53, 55],
|
|
6018
|
+
inverse: [7, 27],
|
|
6019
|
+
hidden: [8, 28],
|
|
6020
|
+
strikethrough: [9, 29],
|
|
6021
|
+
},
|
|
6022
|
+
color: {
|
|
6023
|
+
black: [30, 39],
|
|
6024
|
+
red: [31, 39],
|
|
6025
|
+
green: [32, 39],
|
|
6026
|
+
yellow: [33, 39],
|
|
6027
|
+
blue: [34, 39],
|
|
6028
|
+
magenta: [35, 39],
|
|
6029
|
+
cyan: [36, 39],
|
|
6030
|
+
white: [37, 39],
|
|
6031
|
+
|
|
6032
|
+
// Bright color
|
|
6033
|
+
blackBright: [90, 39],
|
|
6034
|
+
gray: [90, 39], // Alias of `blackBright`
|
|
6035
|
+
grey: [90, 39], // Alias of `blackBright`
|
|
6036
|
+
redBright: [91, 39],
|
|
6037
|
+
greenBright: [92, 39],
|
|
6038
|
+
yellowBright: [93, 39],
|
|
6039
|
+
blueBright: [94, 39],
|
|
6040
|
+
magentaBright: [95, 39],
|
|
6041
|
+
cyanBright: [96, 39],
|
|
6042
|
+
whiteBright: [97, 39],
|
|
6043
|
+
},
|
|
6044
|
+
bgColor: {
|
|
6045
|
+
bgBlack: [40, 49],
|
|
6046
|
+
bgRed: [41, 49],
|
|
6047
|
+
bgGreen: [42, 49],
|
|
6048
|
+
bgYellow: [43, 49],
|
|
6049
|
+
bgBlue: [44, 49],
|
|
6050
|
+
bgMagenta: [45, 49],
|
|
6051
|
+
bgCyan: [46, 49],
|
|
6052
|
+
bgWhite: [47, 49],
|
|
6053
|
+
|
|
6054
|
+
// Bright color
|
|
6055
|
+
bgBlackBright: [100, 49],
|
|
6056
|
+
bgGray: [100, 49], // Alias of `bgBlackBright`
|
|
6057
|
+
bgGrey: [100, 49], // Alias of `bgBlackBright`
|
|
6058
|
+
bgRedBright: [101, 49],
|
|
6059
|
+
bgGreenBright: [102, 49],
|
|
6060
|
+
bgYellowBright: [103, 49],
|
|
6061
|
+
bgBlueBright: [104, 49],
|
|
6062
|
+
bgMagentaBright: [105, 49],
|
|
6063
|
+
bgCyanBright: [106, 49],
|
|
6064
|
+
bgWhiteBright: [107, 49],
|
|
6065
|
+
},
|
|
6066
|
+
};
|
|
6067
|
+
|
|
6068
|
+
const modifierNames = Object.keys(styles.modifier);
|
|
6069
|
+
const foregroundColorNames = Object.keys(styles.color);
|
|
6070
|
+
const backgroundColorNames = Object.keys(styles.bgColor);
|
|
6071
|
+
const colorNames = [...foregroundColorNames, ...backgroundColorNames];
|
|
6072
|
+
|
|
6073
|
+
function assembleStyles() {
|
|
6074
|
+
const codes = new Map();
|
|
6075
|
+
|
|
6076
|
+
for (const [groupName, group] of Object.entries(styles)) {
|
|
6077
|
+
for (const [styleName, style] of Object.entries(group)) {
|
|
6078
|
+
styles[styleName] = {
|
|
6079
|
+
open: `\u001B[${style[0]}m`,
|
|
6080
|
+
close: `\u001B[${style[1]}m`,
|
|
6081
|
+
};
|
|
6082
|
+
|
|
6083
|
+
group[styleName] = styles[styleName];
|
|
6084
|
+
|
|
6085
|
+
codes.set(style[0], style[1]);
|
|
6086
|
+
}
|
|
6087
|
+
|
|
6088
|
+
Object.defineProperty(styles, groupName, {
|
|
6089
|
+
value: group,
|
|
6090
|
+
enumerable: false,
|
|
6091
|
+
});
|
|
6092
|
+
}
|
|
6093
|
+
|
|
6094
|
+
Object.defineProperty(styles, 'codes', {
|
|
6095
|
+
value: codes,
|
|
6096
|
+
enumerable: false,
|
|
6097
|
+
});
|
|
6098
|
+
|
|
6099
|
+
styles.color.close = '\u001B[39m';
|
|
6100
|
+
styles.bgColor.close = '\u001B[49m';
|
|
6101
|
+
|
|
6102
|
+
styles.color.ansi = wrapAnsi16();
|
|
6103
|
+
styles.color.ansi256 = wrapAnsi256();
|
|
6104
|
+
styles.color.ansi16m = wrapAnsi16m();
|
|
6105
|
+
styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
|
|
6106
|
+
styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
|
|
6107
|
+
styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
|
|
6108
|
+
|
|
6109
|
+
// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js
|
|
6110
|
+
Object.defineProperties(styles, {
|
|
6111
|
+
rgbToAnsi256: {
|
|
6112
|
+
value(red, green, blue) {
|
|
6113
|
+
// We use the extended greyscale palette here, with the exception of
|
|
6114
|
+
// black and white. normal palette only has 4 greyscale shades.
|
|
6115
|
+
if (red === green && green === blue) {
|
|
6116
|
+
if (red < 8) {
|
|
6117
|
+
return 16;
|
|
6118
|
+
}
|
|
6119
|
+
|
|
6120
|
+
if (red > 248) {
|
|
6121
|
+
return 231;
|
|
6122
|
+
}
|
|
6123
|
+
|
|
6124
|
+
return Math.round(((red - 8) / 247) * 24) + 232;
|
|
6125
|
+
}
|
|
6126
|
+
|
|
6127
|
+
return 16
|
|
6128
|
+
+ (36 * Math.round(red / 255 * 5))
|
|
6129
|
+
+ (6 * Math.round(green / 255 * 5))
|
|
6130
|
+
+ Math.round(blue / 255 * 5);
|
|
6131
|
+
},
|
|
6132
|
+
enumerable: false,
|
|
6133
|
+
},
|
|
6134
|
+
hexToRgb: {
|
|
6135
|
+
value(hex) {
|
|
6136
|
+
const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
|
|
6137
|
+
if (!matches) {
|
|
6138
|
+
return [0, 0, 0];
|
|
6139
|
+
}
|
|
6140
|
+
|
|
6141
|
+
let [colorString] = matches;
|
|
6142
|
+
|
|
6143
|
+
if (colorString.length === 3) {
|
|
6144
|
+
colorString = [...colorString].map(character => character + character).join('');
|
|
6145
|
+
}
|
|
6146
|
+
|
|
6147
|
+
const integer = Number.parseInt(colorString, 16);
|
|
6148
|
+
|
|
6149
|
+
return [
|
|
6150
|
+
/* eslint-disable no-bitwise */
|
|
6151
|
+
(integer >> 16) & 0xFF,
|
|
6152
|
+
(integer >> 8) & 0xFF,
|
|
6153
|
+
integer & 0xFF,
|
|
6154
|
+
/* eslint-enable no-bitwise */
|
|
6155
|
+
];
|
|
6156
|
+
},
|
|
6157
|
+
enumerable: false,
|
|
6158
|
+
},
|
|
6159
|
+
hexToAnsi256: {
|
|
6160
|
+
value: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
|
|
6161
|
+
enumerable: false,
|
|
6162
|
+
},
|
|
6163
|
+
ansi256ToAnsi: {
|
|
6164
|
+
value(code) {
|
|
6165
|
+
if (code < 8) {
|
|
6166
|
+
return 30 + code;
|
|
6167
|
+
}
|
|
6168
|
+
|
|
6169
|
+
if (code < 16) {
|
|
6170
|
+
return 90 + (code - 8);
|
|
6171
|
+
}
|
|
6172
|
+
|
|
6173
|
+
let red;
|
|
6174
|
+
let green;
|
|
6175
|
+
let blue;
|
|
6176
|
+
|
|
6177
|
+
if (code >= 232) {
|
|
6178
|
+
red = (((code - 232) * 10) + 8) / 255;
|
|
6179
|
+
green = red;
|
|
6180
|
+
blue = red;
|
|
6181
|
+
} else {
|
|
6182
|
+
code -= 16;
|
|
6183
|
+
|
|
6184
|
+
const remainder = code % 36;
|
|
6185
|
+
|
|
6186
|
+
red = Math.floor(code / 36) / 5;
|
|
6187
|
+
green = Math.floor(remainder / 6) / 5;
|
|
6188
|
+
blue = (remainder % 6) / 5;
|
|
6189
|
+
}
|
|
6190
|
+
|
|
6191
|
+
const value = Math.max(red, green, blue) * 2;
|
|
6192
|
+
|
|
6193
|
+
if (value === 0) {
|
|
6194
|
+
return 30;
|
|
6195
|
+
}
|
|
6196
|
+
|
|
6197
|
+
// eslint-disable-next-line no-bitwise
|
|
6198
|
+
let result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));
|
|
6199
|
+
|
|
6200
|
+
if (value === 2) {
|
|
6201
|
+
result += 60;
|
|
6202
|
+
}
|
|
6203
|
+
|
|
6204
|
+
return result;
|
|
6205
|
+
},
|
|
6206
|
+
enumerable: false,
|
|
6207
|
+
},
|
|
6208
|
+
rgbToAnsi: {
|
|
6209
|
+
value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
|
|
6210
|
+
enumerable: false,
|
|
6211
|
+
},
|
|
6212
|
+
hexToAnsi: {
|
|
6213
|
+
value: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
|
|
6214
|
+
enumerable: false,
|
|
6215
|
+
},
|
|
6216
|
+
});
|
|
6217
|
+
|
|
6218
|
+
return styles;
|
|
6219
|
+
}
|
|
6220
|
+
|
|
6221
|
+
const ansiStyles = assembleStyles();
|
|
6222
|
+
|
|
6223
|
+
/* harmony default export */ const ansi_styles = (ansiStyles);
|
|
6224
|
+
|
|
6225
|
+
// EXTERNAL MODULE: external "node:process"
|
|
6226
|
+
var external_node_process_ = __nccwpck_require__(7742);
|
|
6227
|
+
// EXTERNAL MODULE: external "node:os"
|
|
6228
|
+
var external_node_os_ = __nccwpck_require__(612);
|
|
6229
|
+
;// CONCATENATED MODULE: external "node:tty"
|
|
6230
|
+
const external_node_tty_namespaceObject = require("node:tty");
|
|
6231
|
+
;// CONCATENATED MODULE: ./node_modules/chalk/source/vendor/supports-color/index.js
|
|
6232
|
+
|
|
6233
|
+
|
|
6234
|
+
|
|
6235
|
+
|
|
6236
|
+
// From: https://github.com/sindresorhus/has-flag/blob/main/index.js
|
|
6237
|
+
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : external_node_process_.argv) {
|
|
6238
|
+
const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
|
|
6239
|
+
const position = argv.indexOf(prefix + flag);
|
|
6240
|
+
const terminatorPosition = argv.indexOf('--');
|
|
6241
|
+
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
|
6242
|
+
}
|
|
6243
|
+
|
|
6244
|
+
const {env} = external_node_process_;
|
|
6245
|
+
|
|
6246
|
+
let flagForceColor;
|
|
6247
|
+
if (
|
|
6248
|
+
hasFlag('no-color')
|
|
6249
|
+
|| hasFlag('no-colors')
|
|
6250
|
+
|| hasFlag('color=false')
|
|
6251
|
+
|| hasFlag('color=never')
|
|
6252
|
+
) {
|
|
6253
|
+
flagForceColor = 0;
|
|
6254
|
+
} else if (
|
|
6255
|
+
hasFlag('color')
|
|
6256
|
+
|| hasFlag('colors')
|
|
6257
|
+
|| hasFlag('color=true')
|
|
6258
|
+
|| hasFlag('color=always')
|
|
6259
|
+
) {
|
|
6260
|
+
flagForceColor = 1;
|
|
6261
|
+
}
|
|
6262
|
+
|
|
6263
|
+
function envForceColor() {
|
|
6264
|
+
if ('FORCE_COLOR' in env) {
|
|
6265
|
+
if (env.FORCE_COLOR === 'true') {
|
|
6266
|
+
return 1;
|
|
6267
|
+
}
|
|
6268
|
+
|
|
6269
|
+
if (env.FORCE_COLOR === 'false') {
|
|
6270
|
+
return 0;
|
|
6271
|
+
}
|
|
6272
|
+
|
|
6273
|
+
return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
|
|
6274
|
+
}
|
|
6275
|
+
}
|
|
6276
|
+
|
|
6277
|
+
function translateLevel(level) {
|
|
6278
|
+
if (level === 0) {
|
|
6279
|
+
return false;
|
|
6280
|
+
}
|
|
6281
|
+
|
|
6282
|
+
return {
|
|
6283
|
+
level,
|
|
6284
|
+
hasBasic: true,
|
|
6285
|
+
has256: level >= 2,
|
|
6286
|
+
has16m: level >= 3,
|
|
6287
|
+
};
|
|
6288
|
+
}
|
|
6289
|
+
|
|
6290
|
+
function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {
|
|
6291
|
+
const noFlagForceColor = envForceColor();
|
|
6292
|
+
if (noFlagForceColor !== undefined) {
|
|
6293
|
+
flagForceColor = noFlagForceColor;
|
|
6294
|
+
}
|
|
6295
|
+
|
|
6296
|
+
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
|
|
6297
|
+
|
|
6298
|
+
if (forceColor === 0) {
|
|
6299
|
+
return 0;
|
|
6300
|
+
}
|
|
6301
|
+
|
|
6302
|
+
if (sniffFlags) {
|
|
6303
|
+
if (hasFlag('color=16m')
|
|
6304
|
+
|| hasFlag('color=full')
|
|
6305
|
+
|| hasFlag('color=truecolor')) {
|
|
6306
|
+
return 3;
|
|
6307
|
+
}
|
|
6308
|
+
|
|
6309
|
+
if (hasFlag('color=256')) {
|
|
6310
|
+
return 2;
|
|
6311
|
+
}
|
|
6312
|
+
}
|
|
6313
|
+
|
|
6314
|
+
// Check for Azure DevOps pipelines.
|
|
6315
|
+
// Has to be above the `!streamIsTTY` check.
|
|
6316
|
+
if ('TF_BUILD' in env && 'AGENT_NAME' in env) {
|
|
6317
|
+
return 1;
|
|
6318
|
+
}
|
|
6319
|
+
|
|
6320
|
+
if (haveStream && !streamIsTTY && forceColor === undefined) {
|
|
6321
|
+
return 0;
|
|
6322
|
+
}
|
|
6323
|
+
|
|
6324
|
+
const min = forceColor || 0;
|
|
6325
|
+
|
|
6326
|
+
if (env.TERM === 'dumb') {
|
|
6327
|
+
return min;
|
|
6328
|
+
}
|
|
6329
|
+
|
|
6330
|
+
if (external_node_process_.platform === 'win32') {
|
|
6331
|
+
// Windows 10 build 10586 is the first Windows release that supports 256 colors.
|
|
6332
|
+
// Windows 10 build 14931 is the first release that supports 16m/TrueColor.
|
|
6333
|
+
const osRelease = external_node_os_.release().split('.');
|
|
6334
|
+
if (
|
|
6335
|
+
Number(osRelease[0]) >= 10
|
|
6336
|
+
&& Number(osRelease[2]) >= 10_586
|
|
6337
|
+
) {
|
|
6338
|
+
return Number(osRelease[2]) >= 14_931 ? 3 : 2;
|
|
6339
|
+
}
|
|
6340
|
+
|
|
6341
|
+
return 1;
|
|
6342
|
+
}
|
|
6343
|
+
|
|
6344
|
+
if ('CI' in env) {
|
|
6345
|
+
if ('GITHUB_ACTIONS' in env) {
|
|
6346
|
+
return 3;
|
|
6347
|
+
}
|
|
6348
|
+
|
|
6349
|
+
if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
|
|
6350
|
+
return 1;
|
|
6351
|
+
}
|
|
6352
|
+
|
|
6353
|
+
return min;
|
|
6354
|
+
}
|
|
6355
|
+
|
|
6356
|
+
if ('TEAMCITY_VERSION' in env) {
|
|
6357
|
+
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
|
|
6358
|
+
}
|
|
6359
|
+
|
|
6360
|
+
if (env.COLORTERM === 'truecolor') {
|
|
6361
|
+
return 3;
|
|
6362
|
+
}
|
|
6363
|
+
|
|
6364
|
+
if (env.TERM === 'xterm-kitty') {
|
|
6365
|
+
return 3;
|
|
6366
|
+
}
|
|
6367
|
+
|
|
6368
|
+
if ('TERM_PROGRAM' in env) {
|
|
6369
|
+
const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
|
|
6370
|
+
|
|
6371
|
+
switch (env.TERM_PROGRAM) {
|
|
6372
|
+
case 'iTerm.app': {
|
|
6373
|
+
return version >= 3 ? 3 : 2;
|
|
6374
|
+
}
|
|
6375
|
+
|
|
6376
|
+
case 'Apple_Terminal': {
|
|
6377
|
+
return 2;
|
|
6378
|
+
}
|
|
6379
|
+
// No default
|
|
6380
|
+
}
|
|
6381
|
+
}
|
|
6382
|
+
|
|
6383
|
+
if (/-256(color)?$/i.test(env.TERM)) {
|
|
6384
|
+
return 2;
|
|
6385
|
+
}
|
|
6386
|
+
|
|
6387
|
+
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
|
6388
|
+
return 1;
|
|
6389
|
+
}
|
|
6390
|
+
|
|
6391
|
+
if ('COLORTERM' in env) {
|
|
6392
|
+
return 1;
|
|
6393
|
+
}
|
|
6394
|
+
|
|
6395
|
+
return min;
|
|
6396
|
+
}
|
|
6397
|
+
|
|
6398
|
+
function createSupportsColor(stream, options = {}) {
|
|
6399
|
+
const level = _supportsColor(stream, {
|
|
6400
|
+
streamIsTTY: stream && stream.isTTY,
|
|
6401
|
+
...options,
|
|
6402
|
+
});
|
|
6403
|
+
|
|
6404
|
+
return translateLevel(level);
|
|
6405
|
+
}
|
|
6406
|
+
|
|
6407
|
+
const supportsColor = {
|
|
6408
|
+
stdout: createSupportsColor({isTTY: external_node_tty_namespaceObject.isatty(1)}),
|
|
6409
|
+
stderr: createSupportsColor({isTTY: external_node_tty_namespaceObject.isatty(2)}),
|
|
6410
|
+
};
|
|
6411
|
+
|
|
6412
|
+
/* harmony default export */ const supports_color = (supportsColor);
|
|
6413
|
+
|
|
6414
|
+
;// CONCATENATED MODULE: ./node_modules/chalk/source/utilities.js
|
|
6415
|
+
// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.
|
|
6416
|
+
function stringReplaceAll(string, substring, replacer) {
|
|
6417
|
+
let index = string.indexOf(substring);
|
|
6418
|
+
if (index === -1) {
|
|
6419
|
+
return string;
|
|
6420
|
+
}
|
|
6421
|
+
|
|
6422
|
+
const substringLength = substring.length;
|
|
6423
|
+
let endIndex = 0;
|
|
6424
|
+
let returnValue = '';
|
|
6425
|
+
do {
|
|
6426
|
+
returnValue += string.slice(endIndex, index) + substring + replacer;
|
|
6427
|
+
endIndex = index + substringLength;
|
|
6428
|
+
index = string.indexOf(substring, endIndex);
|
|
6429
|
+
} while (index !== -1);
|
|
6430
|
+
|
|
6431
|
+
returnValue += string.slice(endIndex);
|
|
6432
|
+
return returnValue;
|
|
6433
|
+
}
|
|
6434
|
+
|
|
6435
|
+
function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
|
|
6436
|
+
let endIndex = 0;
|
|
6437
|
+
let returnValue = '';
|
|
6438
|
+
do {
|
|
6439
|
+
const gotCR = string[index - 1] === '\r';
|
|
6440
|
+
returnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\r\n' : '\n') + postfix;
|
|
6441
|
+
endIndex = index + 1;
|
|
6442
|
+
index = string.indexOf('\n', endIndex);
|
|
6443
|
+
} while (index !== -1);
|
|
6444
|
+
|
|
6445
|
+
returnValue += string.slice(endIndex);
|
|
6446
|
+
return returnValue;
|
|
6447
|
+
}
|
|
6448
|
+
|
|
6449
|
+
;// CONCATENATED MODULE: ./node_modules/chalk/source/index.js
|
|
6450
|
+
|
|
6451
|
+
|
|
6452
|
+
|
|
6453
|
+
|
|
6454
|
+
const {stdout: stdoutColor, stderr: stderrColor} = supports_color;
|
|
6455
|
+
|
|
6456
|
+
const GENERATOR = Symbol('GENERATOR');
|
|
6457
|
+
const STYLER = Symbol('STYLER');
|
|
6458
|
+
const IS_EMPTY = Symbol('IS_EMPTY');
|
|
6459
|
+
|
|
6460
|
+
// `supportsColor.level` → `ansiStyles.color[name]` mapping
|
|
6461
|
+
const levelMapping = [
|
|
6462
|
+
'ansi',
|
|
6463
|
+
'ansi',
|
|
6464
|
+
'ansi256',
|
|
6465
|
+
'ansi16m',
|
|
6466
|
+
];
|
|
6467
|
+
|
|
6468
|
+
const source_styles = Object.create(null);
|
|
6469
|
+
|
|
6470
|
+
const applyOptions = (object, options = {}) => {
|
|
6471
|
+
if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
|
|
6472
|
+
throw new Error('The `level` option should be an integer from 0 to 3');
|
|
6473
|
+
}
|
|
6474
|
+
|
|
6475
|
+
// Detect level if not set manually
|
|
6476
|
+
const colorLevel = stdoutColor ? stdoutColor.level : 0;
|
|
6477
|
+
object.level = options.level === undefined ? colorLevel : options.level;
|
|
6478
|
+
};
|
|
6479
|
+
|
|
6480
|
+
class Chalk {
|
|
6481
|
+
constructor(options) {
|
|
6482
|
+
// eslint-disable-next-line no-constructor-return
|
|
6483
|
+
return chalkFactory(options);
|
|
6484
|
+
}
|
|
6485
|
+
}
|
|
6486
|
+
|
|
6487
|
+
const chalkFactory = options => {
|
|
6488
|
+
const chalk = (...strings) => strings.join(' ');
|
|
6489
|
+
applyOptions(chalk, options);
|
|
6490
|
+
|
|
6491
|
+
Object.setPrototypeOf(chalk, createChalk.prototype);
|
|
6492
|
+
|
|
6493
|
+
return chalk;
|
|
6494
|
+
};
|
|
6495
|
+
|
|
6496
|
+
function createChalk(options) {
|
|
6497
|
+
return chalkFactory(options);
|
|
6498
|
+
}
|
|
6499
|
+
|
|
6500
|
+
Object.setPrototypeOf(createChalk.prototype, Function.prototype);
|
|
6501
|
+
|
|
6502
|
+
for (const [styleName, style] of Object.entries(ansi_styles)) {
|
|
6503
|
+
source_styles[styleName] = {
|
|
6504
|
+
get() {
|
|
6505
|
+
const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
|
|
6506
|
+
Object.defineProperty(this, styleName, {value: builder});
|
|
6507
|
+
return builder;
|
|
6508
|
+
},
|
|
6509
|
+
};
|
|
6510
|
+
}
|
|
6511
|
+
|
|
6512
|
+
source_styles.visible = {
|
|
6513
|
+
get() {
|
|
6514
|
+
const builder = createBuilder(this, this[STYLER], true);
|
|
6515
|
+
Object.defineProperty(this, 'visible', {value: builder});
|
|
6516
|
+
return builder;
|
|
6517
|
+
},
|
|
6518
|
+
};
|
|
6519
|
+
|
|
6520
|
+
const getModelAnsi = (model, level, type, ...arguments_) => {
|
|
6521
|
+
if (model === 'rgb') {
|
|
6522
|
+
if (level === 'ansi16m') {
|
|
6523
|
+
return ansi_styles[type].ansi16m(...arguments_);
|
|
6524
|
+
}
|
|
6525
|
+
|
|
6526
|
+
if (level === 'ansi256') {
|
|
6527
|
+
return ansi_styles[type].ansi256(ansi_styles.rgbToAnsi256(...arguments_));
|
|
6528
|
+
}
|
|
6529
|
+
|
|
6530
|
+
return ansi_styles[type].ansi(ansi_styles.rgbToAnsi(...arguments_));
|
|
6531
|
+
}
|
|
6532
|
+
|
|
6533
|
+
if (model === 'hex') {
|
|
6534
|
+
return getModelAnsi('rgb', level, type, ...ansi_styles.hexToRgb(...arguments_));
|
|
6535
|
+
}
|
|
6536
|
+
|
|
6537
|
+
return ansi_styles[type][model](...arguments_);
|
|
6538
|
+
};
|
|
6539
|
+
|
|
6540
|
+
const usedModels = ['rgb', 'hex', 'ansi256'];
|
|
6541
|
+
|
|
6542
|
+
for (const model of usedModels) {
|
|
6543
|
+
source_styles[model] = {
|
|
6544
|
+
get() {
|
|
6545
|
+
const {level} = this;
|
|
6546
|
+
return function (...arguments_) {
|
|
6547
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansi_styles.color.close, this[STYLER]);
|
|
6548
|
+
return createBuilder(this, styler, this[IS_EMPTY]);
|
|
6549
|
+
};
|
|
6550
|
+
},
|
|
6551
|
+
};
|
|
6552
|
+
|
|
6553
|
+
const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
|
|
6554
|
+
source_styles[bgModel] = {
|
|
6555
|
+
get() {
|
|
6556
|
+
const {level} = this;
|
|
6557
|
+
return function (...arguments_) {
|
|
6558
|
+
const styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansi_styles.bgColor.close, this[STYLER]);
|
|
6559
|
+
return createBuilder(this, styler, this[IS_EMPTY]);
|
|
6560
|
+
};
|
|
6561
|
+
},
|
|
6562
|
+
};
|
|
6563
|
+
}
|
|
6564
|
+
|
|
6565
|
+
const proto = Object.defineProperties(() => {}, {
|
|
6566
|
+
...source_styles,
|
|
6567
|
+
level: {
|
|
6568
|
+
enumerable: true,
|
|
6569
|
+
get() {
|
|
6570
|
+
return this[GENERATOR].level;
|
|
6571
|
+
},
|
|
6572
|
+
set(level) {
|
|
6573
|
+
this[GENERATOR].level = level;
|
|
6574
|
+
},
|
|
6575
|
+
},
|
|
6576
|
+
});
|
|
6577
|
+
|
|
6578
|
+
const createStyler = (open, close, parent) => {
|
|
6579
|
+
let openAll;
|
|
6580
|
+
let closeAll;
|
|
6581
|
+
if (parent === undefined) {
|
|
6582
|
+
openAll = open;
|
|
6583
|
+
closeAll = close;
|
|
6584
|
+
} else {
|
|
6585
|
+
openAll = parent.openAll + open;
|
|
6586
|
+
closeAll = close + parent.closeAll;
|
|
6587
|
+
}
|
|
6588
|
+
|
|
6589
|
+
return {
|
|
6590
|
+
open,
|
|
6591
|
+
close,
|
|
6592
|
+
openAll,
|
|
6593
|
+
closeAll,
|
|
6594
|
+
parent,
|
|
6595
|
+
};
|
|
6596
|
+
};
|
|
6597
|
+
|
|
6598
|
+
const createBuilder = (self, _styler, _isEmpty) => {
|
|
6599
|
+
// Single argument is hot path, implicit coercion is faster than anything
|
|
6600
|
+
// eslint-disable-next-line no-implicit-coercion
|
|
6601
|
+
const builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));
|
|
6602
|
+
|
|
6603
|
+
// We alter the prototype because we must return a function, but there is
|
|
6604
|
+
// no way to create a function with a different prototype
|
|
6605
|
+
Object.setPrototypeOf(builder, proto);
|
|
6606
|
+
|
|
6607
|
+
builder[GENERATOR] = self;
|
|
6608
|
+
builder[STYLER] = _styler;
|
|
6609
|
+
builder[IS_EMPTY] = _isEmpty;
|
|
6610
|
+
|
|
6611
|
+
return builder;
|
|
6612
|
+
};
|
|
6613
|
+
|
|
6614
|
+
const applyStyle = (self, string) => {
|
|
6615
|
+
if (self.level <= 0 || !string) {
|
|
6616
|
+
return self[IS_EMPTY] ? '' : string;
|
|
6617
|
+
}
|
|
6618
|
+
|
|
6619
|
+
let styler = self[STYLER];
|
|
6620
|
+
|
|
6621
|
+
if (styler === undefined) {
|
|
6622
|
+
return string;
|
|
6623
|
+
}
|
|
6624
|
+
|
|
6625
|
+
const {openAll, closeAll} = styler;
|
|
6626
|
+
if (string.includes('\u001B')) {
|
|
6627
|
+
while (styler !== undefined) {
|
|
6628
|
+
// Replace any instances already present with a re-opening code
|
|
6629
|
+
// otherwise only the part of the string until said closing code
|
|
6630
|
+
// will be colored, and the rest will simply be 'plain'.
|
|
6631
|
+
string = stringReplaceAll(string, styler.close, styler.open);
|
|
6632
|
+
|
|
6633
|
+
styler = styler.parent;
|
|
6634
|
+
}
|
|
6635
|
+
}
|
|
6636
|
+
|
|
6637
|
+
// We can move both next actions out of loop, because remaining actions in loop won't have
|
|
6638
|
+
// any/visible effect on parts we add here. Close the styling before a linebreak and reopen
|
|
6639
|
+
// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92
|
|
6640
|
+
const lfIndex = string.indexOf('\n');
|
|
6641
|
+
if (lfIndex !== -1) {
|
|
6642
|
+
string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
|
|
6643
|
+
}
|
|
6644
|
+
|
|
6645
|
+
return openAll + string + closeAll;
|
|
6646
|
+
};
|
|
6647
|
+
|
|
6648
|
+
Object.defineProperties(createChalk.prototype, source_styles);
|
|
6649
|
+
|
|
6650
|
+
const chalk = createChalk();
|
|
6651
|
+
const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});
|
|
6652
|
+
|
|
6653
|
+
|
|
6654
|
+
|
|
6655
|
+
|
|
6656
|
+
|
|
6657
|
+
/* harmony default export */ const source = (chalk);
|
|
6658
|
+
|
|
6659
|
+
|
|
6660
|
+
/***/ }),
|
|
6661
|
+
|
|
6662
|
+
/***/ 4349:
|
|
5946
6663
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
5947
6664
|
|
|
5948
6665
|
"use strict";
|
|
@@ -5965,8 +6682,8 @@ const external_node_buffer_namespaceObject = require("node:buffer");
|
|
|
5965
6682
|
const external_node_path_namespaceObject = require("node:path");
|
|
5966
6683
|
;// CONCATENATED MODULE: external "node:child_process"
|
|
5967
6684
|
const external_node_child_process_namespaceObject = require("node:child_process");
|
|
5968
|
-
|
|
5969
|
-
|
|
6685
|
+
// EXTERNAL MODULE: external "node:process"
|
|
6686
|
+
var external_node_process_ = __nccwpck_require__(7742);
|
|
5970
6687
|
// EXTERNAL MODULE: ./node_modules/cross-spawn/index.js
|
|
5971
6688
|
var cross_spawn = __nccwpck_require__(2746);
|
|
5972
6689
|
;// CONCATENATED MODULE: ./node_modules/strip-final-newline/index.js
|
|
@@ -6009,9 +6726,9 @@ function pathKey(options = {}) {
|
|
|
6009
6726
|
|
|
6010
6727
|
function npmRunPath(options = {}) {
|
|
6011
6728
|
const {
|
|
6012
|
-
cwd =
|
|
6013
|
-
path: path_ =
|
|
6014
|
-
execPath =
|
|
6729
|
+
cwd = external_node_process_.cwd(),
|
|
6730
|
+
path: path_ = external_node_process_.env[pathKey()],
|
|
6731
|
+
execPath = external_node_process_.execPath,
|
|
6015
6732
|
} = options;
|
|
6016
6733
|
|
|
6017
6734
|
let previous;
|
|
@@ -6031,7 +6748,7 @@ function npmRunPath(options = {}) {
|
|
|
6031
6748
|
return [...result, path_].join(external_node_path_namespaceObject.delimiter);
|
|
6032
6749
|
}
|
|
6033
6750
|
|
|
6034
|
-
function npmRunPathEnv({env =
|
|
6751
|
+
function npmRunPathEnv({env = external_node_process_.env, ...options} = {}) {
|
|
6035
6752
|
env = {...env};
|
|
6036
6753
|
|
|
6037
6754
|
const path = pathKey({env});
|
|
@@ -6157,8 +6874,8 @@ onetime.callCount = function_ => {
|
|
|
6157
6874
|
|
|
6158
6875
|
/* harmony default export */ const node_modules_onetime = (onetime);
|
|
6159
6876
|
|
|
6160
|
-
|
|
6161
|
-
|
|
6877
|
+
// EXTERNAL MODULE: external "node:os"
|
|
6878
|
+
var external_node_os_ = __nccwpck_require__(612);
|
|
6162
6879
|
;// CONCATENATED MODULE: ./node_modules/human-signals/build/src/realtime.js
|
|
6163
6880
|
|
|
6164
6881
|
const getRealtimeSignals=()=>{
|
|
@@ -6480,7 +7197,7 @@ standard
|
|
|
6480
7197
|
})=>{
|
|
6481
7198
|
const{
|
|
6482
7199
|
signals:{[name]:constantSignal}
|
|
6483
|
-
}=
|
|
7200
|
+
}=external_node_os_.constants;
|
|
6484
7201
|
const supported=constantSignal!==undefined;
|
|
6485
7202
|
const number=supported?constantSignal:defaultNumber;
|
|
6486
7203
|
return{name,number,description,supported,action,forced,standard};
|
|
@@ -6546,7 +7263,7 @@ standard
|
|
|
6546
7263
|
|
|
6547
7264
|
|
|
6548
7265
|
const findSignalByNumber=(number,signals)=>{
|
|
6549
|
-
const signal=signals.find(({name})=>
|
|
7266
|
+
const signal=signals.find(({name})=>external_node_os_.constants.signals[name]===number);
|
|
6550
7267
|
|
|
6551
7268
|
if(signal!==undefined){
|
|
6552
7269
|
return signal;
|
|
@@ -6730,7 +7447,7 @@ const setKillTimeout = (kill, signal, options, killResult) => {
|
|
|
6730
7447
|
|
|
6731
7448
|
const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult;
|
|
6732
7449
|
|
|
6733
|
-
const isSigterm = signal => signal ===
|
|
7450
|
+
const isSigterm = signal => signal === external_node_os_.constants.signals.SIGTERM
|
|
6734
7451
|
|| (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');
|
|
6735
7452
|
|
|
6736
7453
|
const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {
|
|
@@ -7182,7 +7899,7 @@ const logCommand = (escapedCommand, {verbose}) => {
|
|
|
7182
7899
|
return;
|
|
7183
7900
|
}
|
|
7184
7901
|
|
|
7185
|
-
|
|
7902
|
+
external_node_process_.stderr.write(`[${getTimestamp()}] ${escapedCommand}\n`);
|
|
7186
7903
|
};
|
|
7187
7904
|
|
|
7188
7905
|
;// CONCATENATED MODULE: ./node_modules/execa/index.js
|
|
@@ -7206,7 +7923,7 @@ const logCommand = (escapedCommand, {verbose}) => {
|
|
|
7206
7923
|
const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;
|
|
7207
7924
|
|
|
7208
7925
|
const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {
|
|
7209
|
-
const env = extendEnv ? {...
|
|
7926
|
+
const env = extendEnv ? {...external_node_process_.env, ...envOption} : envOption;
|
|
7210
7927
|
|
|
7211
7928
|
if (preferLocal) {
|
|
7212
7929
|
return npmRunPathEnv({env, cwd: localDir, execPath});
|
|
@@ -7227,8 +7944,8 @@ const handleArguments = (file, args, options = {}) => {
|
|
|
7227
7944
|
stripFinalNewline: true,
|
|
7228
7945
|
extendEnv: true,
|
|
7229
7946
|
preferLocal: false,
|
|
7230
|
-
localDir: options.cwd ||
|
|
7231
|
-
execPath:
|
|
7947
|
+
localDir: options.cwd || external_node_process_.cwd(),
|
|
7948
|
+
execPath: external_node_process_.execPath,
|
|
7232
7949
|
encoding: 'utf8',
|
|
7233
7950
|
reject: true,
|
|
7234
7951
|
cleanup: true,
|
|
@@ -7242,7 +7959,7 @@ const handleArguments = (file, args, options = {}) => {
|
|
|
7242
7959
|
|
|
7243
7960
|
options.stdio = normalizeStdio(options);
|
|
7244
7961
|
|
|
7245
|
-
if (
|
|
7962
|
+
if (external_node_process_.platform === 'win32' && external_node_path_namespaceObject.basename(file, '.exe') === 'cmd') {
|
|
7246
7963
|
// #116
|
|
7247
7964
|
args.unshift('/q');
|
|
7248
7965
|
}
|
|
@@ -7471,10 +8188,10 @@ function execaNode(scriptPath, args, options = {}) {
|
|
|
7471
8188
|
}
|
|
7472
8189
|
|
|
7473
8190
|
const stdio = normalizeStdioNode(options);
|
|
7474
|
-
const defaultExecArgv =
|
|
8191
|
+
const defaultExecArgv = external_node_process_.execArgv.filter(arg => !arg.startsWith('--inspect'));
|
|
7475
8192
|
|
|
7476
8193
|
const {
|
|
7477
|
-
nodePath =
|
|
8194
|
+
nodePath = external_node_process_.execPath,
|
|
7478
8195
|
nodeOptions = defaultExecArgv,
|
|
7479
8196
|
} = options;
|
|
7480
8197
|
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helm-viewer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Quick tool to easily view your helm charts.",
|
|
5
5
|
"author": "Tchoupinax <corentinfiloche@hotmail.fr> (https://corentinfiloche.xyz)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,14 +25,15 @@
|
|
|
25
25
|
"pack": "npm pack --dry-run",
|
|
26
26
|
"publish": "npm publish",
|
|
27
27
|
"=== RUN ==============================================": "",
|
|
28
|
-
"run": "npx vite-node src/index.ts",
|
|
28
|
+
"run": "NODE_ENV=development npx vite-node src/index.ts -- ~/Downloads/traefik-helm-chart/traefik",
|
|
29
29
|
"=== BUILD ============================================": "",
|
|
30
30
|
"build": "tsc",
|
|
31
31
|
"=== CLEAN ============================================": "",
|
|
32
|
-
"clear": "rm -rf dist binary tmp compiled",
|
|
33
|
-
"clean": "rm -rf dist binary tmp compiled"
|
|
32
|
+
"clear": "rm -rf dist binary tmp compiled src/assets",
|
|
33
|
+
"clean": "rm -rf dist binary tmp compiled src/assets"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
+
"chalk": "5.2.0",
|
|
36
37
|
"execa": "7.1.1",
|
|
37
38
|
"open": "8.4.2"
|
|
38
39
|
},
|
package/helm-viewer-0.1.3.tgz
DELETED
|
Binary file
|