deel-local-cli 1.20.2 → 1.20.4
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/README.ko.md +4 -2
- package/README.md +4 -2
- package/package.json +1 -1
- package/src/safety/secrets.js +31 -8
package/README.ko.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
[](https://github.com/jysvai/deel-local-cli/actions/workflows/test.yml)
|
|
22
22
|
[](https://github.com/jysvai/deel-local-cli/actions/workflows/codeql.yml)
|
|
23
|
-
[](docs/ko/develop.md)
|
|
24
24
|
|
|
25
25
|
[](https://www.npmjs.com/package/deel-local-cli?activeTab=dependencies)
|
|
26
26
|
[](package.json)
|
|
@@ -301,7 +301,7 @@ deel --offline
|
|
|
301
301
|
무엇이 어디로 갈 수 있는지는 켤 때 화면 맨 위에 늘 적혀 있습니다.
|
|
302
302
|
|
|
303
303
|
```
|
|
304
|
-
deel 1.20.
|
|
304
|
+
deel 1.20.4 ⌂ 이 안
|
|
305
305
|
보냄 이 컴퓨터 안 127.0.0.1:11434 ← 여기 말고는 어디로도 안 갑니다
|
|
306
306
|
```
|
|
307
307
|
|
|
@@ -1289,6 +1289,8 @@ zip 은 진짜 `unzip` 으로, tar 는 진짜 `tar` 가 만든 것을 읽혀 교
|
|
|
1289
1289
|
|
|
1290
1290
|
| 판 | 무엇이 바뀌었나 |
|
|
1291
1291
|
|---|---|
|
|
1292
|
+
| [1.20.4](docs/ko/releases/1.20.md#1204) | 붙임표 마디를 하나만 세고 있었습니다 |
|
|
1293
|
+
| [1.20.3](docs/ko/releases/1.20.md#1203) | 울타리를 옮긴 자리가 어디까지 흔들렸는지 한 판에 보이게 했습니다 |
|
|
1292
1294
|
| [1.20.2](docs/ko/releases/1.20.md#1202) | 앞 판이 막으려던 자리를 앞 판이 막고 있었습니다 |
|
|
1293
1295
|
| [1.20.1](docs/ko/releases/1.20.md#1201) | `PASSWORD=` 는 한 번도 안 잡히고 있었습니다 |
|
|
1294
1296
|
| [1.20.0](docs/ko/releases/1.20.md#1200) | 대문자로 안 적은 열쇠는 그대로 나가고 있었습니다 |
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ Vendor APIs connect too — **only when you say so**
|
|
|
20
20
|
|
|
21
21
|
[](https://github.com/jysvai/deel-local-cli/actions/workflows/test.yml)
|
|
22
22
|
[](https://github.com/jysvai/deel-local-cli/actions/workflows/codeql.yml)
|
|
23
|
-
[](docs/en/develop.md)
|
|
24
24
|
|
|
25
25
|
[](https://www.npmjs.com/package/deel-local-cli?activeTab=dependencies)
|
|
26
26
|
[](package.json)
|
|
@@ -374,7 +374,7 @@ deel --offline
|
|
|
374
374
|
The destination is printed at the top of every session:
|
|
375
375
|
|
|
376
376
|
```
|
|
377
|
-
deel 1.20.
|
|
377
|
+
deel 1.20.4 ⌂ inside
|
|
378
378
|
Sends to this machine 127.0.0.1:11434 ← nowhere else
|
|
379
379
|
```
|
|
380
380
|
|
|
@@ -1350,6 +1350,8 @@ so one run tells you everything.
|
|
|
1350
1350
|
|
|
1351
1351
|
| Version | What changed |
|
|
1352
1352
|
|---|---|
|
|
1353
|
+
| [1.20.4](docs/en/releases/1.20.md#1204) | Only one hyphen segment was being counted |
|
|
1354
|
+
| [1.20.3](docs/en/releases/1.20.md#1203) | How far a moved fence shook is now visible in one run |
|
|
1353
1355
|
| [1.20.2](docs/en/releases/1.20.md#1202) | The previous release was blocking the very thing it meant to allow |
|
|
1354
1356
|
| [1.20.1](docs/en/releases/1.20.md#1201) | `PASSWORD=` was never once caught |
|
|
1355
1357
|
| [1.20.0](docs/en/releases/1.20.md#1200) | A key not written in capitals was going out as it was |
|
package/package.json
CHANGED
package/src/safety/secrets.js
CHANGED
|
@@ -63,11 +63,19 @@ const 표 = (종류) => `«가림:${종류}»`;
|
|
|
63
63
|
* 있어야 몰래칸이다. 안 넘기면 그 선언 줄이 통째로 잘려 나가고, 남은 빈 줄에
|
|
64
64
|
* 코드의 표시가 없어 멀쩡한 코드가 가려진다(17차 리뷰).
|
|
65
65
|
*
|
|
66
|
+
* 앞에 수식하는 것이 붙어도 줄머리로 친다 — `static` · `readonly` ·
|
|
67
|
+
* `accessor` · `override`, 그리고 꾸밈표(`@inject`)와 별표(`*#gen()`).
|
|
68
|
+
* `static` 만 멀쩡했던 것은 그 낱말이 마침 `코드표시` 목록에 있어서였다.
|
|
69
|
+
* 목록에 없는 낱말(`accessor`)에서는 그대로 뭉갰다(19차 리뷰).
|
|
70
|
+
*
|
|
71
|
+
* 글자·빈칸·`@`·`*` 만 있는 앞자리는 코드의 수식어로 본다. 설정 줄이라면
|
|
72
|
+
* 그 자리에 `:` 나 `=` 나 숫자가 있다 — 글자만 있을 수가 없다.
|
|
73
|
+
*
|
|
66
74
|
* 줄머리 `#` 을 안 잘라도 설정 줄은 안 상한다 — `# API_KEY: 값` 은 잘라도
|
|
67
75
|
* 안 잘라도 코드의 표시가 없어 어차피 가려진다.
|
|
68
76
|
*/
|
|
69
77
|
const 몰래칸 = (줄, i) => /^[\p{L}_$]/u.test(줄[i + 1] ?? '')
|
|
70
|
-
&& (줄[i - 1] === '.' || /^[ \t]*$/.test(줄.slice(0, i)));
|
|
78
|
+
&& (줄[i - 1] === '.' || /^[@*A-Za-z \t]*$/.test(줄.slice(0, i)));
|
|
71
79
|
|
|
72
80
|
const 주석떼기 = (줄) => {
|
|
73
81
|
let 따 = '';
|
|
@@ -547,14 +555,23 @@ export const 갈래 = [
|
|
|
547
555
|
* 민 이름으로 받을 때 빼는 것이 셋 있다. 재 보고 뺐다.
|
|
548
556
|
*
|
|
549
557
|
* - `key` — 대소문자 가리지 않고 뺀다. `key: 값` 도 `KEY: 값` 도 그냥
|
|
550
|
-
* 짝의 이름일 때가 너무 많다. 앞머리가 붙은 `API_KEY` 는
|
|
558
|
+
* 짝의 이름일 때가 너무 많다. 앞머리가 붙은 `API_KEY` · `A_KEY` 는
|
|
559
|
+
* 본다. 앞머리에 글자가 하나는 있어야 한다 — `_KEY` 는 밑줄뿐이라
|
|
560
|
+
* 민 `KEY` 와 다를 것이 없는데 잡히고 있었다(19차 리뷰).
|
|
551
561
|
* - `PWD` — 셸의 **현재 폴더**다. `PWD` 도 `OLDPWD` 도 뺀다(밑줄이
|
|
552
562
|
* 앞에 있어야 본다). `DB_PWD` 는 그대로 본다.
|
|
553
|
-
* - 붙임표로
|
|
554
|
-
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
557
|
-
*
|
|
563
|
+
* - 붙임표로 **시작하는** 낱말 — `\b` 가 `-` 뒤에서 끊고 들어가면
|
|
564
|
+
* `id-token` 의 `token` 만 집게 된다. 그건 깃허브 액션 문법이다.
|
|
565
|
+
*
|
|
566
|
+
* 붙임표로 **이은 이름 전체**(`github-token` · `aws-access-token`)는
|
|
567
|
+
* 다르다. 마디가 몇이든 받는다 — 마디 하나만 받았더니 `aws-access-token`
|
|
568
|
+
* 이 통째로 샜다(20차 리뷰). 대소문자도 안 가린다(`db-PWD` · `auth_TOKEN`).
|
|
569
|
+
* 그래서 이름으로는 받고, **따옴표 없는 맨 값일 때만** 물린다
|
|
570
|
+
* (아래 `바꾸기` 를 보라) — `id-token: write` 의 `write` 가 맨 값이고,
|
|
571
|
+
* `github-token: 'abc123'` 의 값은 따옴표에 싸여 있다. 19차 리뷰.
|
|
572
|
+
*
|
|
573
|
+
* `X-API-KEY:` 처럼 붙임표로 이은 **머리글**은 앞자리 `헤더` 갈래가
|
|
574
|
+
* 먼저 집는다.
|
|
558
575
|
*
|
|
559
576
|
* 재 봤다. 이 저장소 파일 348개에 넣어 보니 21줄이 새로 가려졌고,
|
|
560
577
|
* **전부 진짜 열쇠였다**(`apiKey: 'sk-…'` 꼴).
|
|
@@ -564,10 +581,16 @@ export const 갈래 = [
|
|
|
564
581
|
* 것보다 낫다(1.19.0). 검사로 못 박아 둔다.
|
|
565
582
|
*/
|
|
566
583
|
id: '환경변수',
|
|
567
|
-
re: /\b(?<!-)(_?(?:[A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIALS?)|[A-Z0-9_]
|
|
584
|
+
re: /\b(?<!-)(_?(?:[A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIALS?)|[A-Z0-9_]*[A-Z0-9]_?KEY|[A-Z0-9_]*_PWD|[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*(?:[-_](?:key|token|secret|password|passwd|pwd|credentials?|KEY|TOKEN|SECRET|PASSWORD|PASSWD|PWD|CREDENTIALS?)|Key|Token|Secret|Password|Passwd|Pwd|Credentials?)|(?:password|secret|token|passwd|credentials?)))(?:(["']?[ \t]*(?::[^\n,;]{0,200}?|:[^\n]{0,200}?[>\])}][^\n,;]{0,80}?)[ \t]*=(?!=|>)\s*)((?:\(\s*)+)?(["'`])(?!«)((?:\\[^\n]|(?!\4)[^\n]){4,}?)\4((?:\s*\))+)?|(["']?\s*(?::(?![^\n]{0,200}?=[ \t]*«가림:)|=)\s*)((?:\(\s*)+)?(?:(["'`])(?!«)((?:\\[^\n]|(?!\9)[^\n]){4,}?)\9|(?!«)(?![\w$.]+\s*[([])(?!(?:string|number|boolean|bigint|symbol|object|unknown|never|void|null|undefined|true|false)\b)(?![^\n]{0,200}?}[ \t]*(?:=(?!=|>)|\)))(?!\(*\s*(?:process\.env|import\.meta\.env|globalThis\.process\.env|globalThis\.env|os\.environ|os\.getenv|ENV(?=\s*[[.(])|Deno\.env|Bun\.env)\b)([^\s"'()[\]{},;<>]{4,})(?=[ \t]*(?:[;,)\]}\r\n#]|$)))((?:\s*\))+)?)/g,
|
|
568
585
|
바꾸기: (m, 이름, 타입사이, 타입여는, 따A, 값A, 타입닫는,
|
|
569
586
|
민사이, 여는, 따B, 값B, 값C, 닫는, 자리, 전체) => {
|
|
570
587
|
// 따옴표 없는 맨 값만 「코드가 가리키는 이름인가」 를 되묻는다.
|
|
588
|
+
/*
|
|
589
|
+
* 붙임표로 이은 이름은 **따옴표에 싸인 값**일 때만 가린다.
|
|
590
|
+
* `id-token: write`(깃허브 액션)와 `github-token: 'abc123'`(진짜 비밀)이
|
|
591
|
+
* 이름으로는 안 갈리는데, 앞것의 값은 늘 맨 낱말이다.
|
|
592
|
+
*/
|
|
593
|
+
if (값C !== undefined && 이름.includes('-')) return m;
|
|
571
594
|
if (값C !== undefined) {
|
|
572
595
|
/*
|
|
573
596
|
* 짝이 여러 줄에 걸리면 이름 줄과 값 줄이 다르다. **둘 중 하나라도**
|