github-settings-as-code 3.1.0 → 4.0.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/README.md +61 -39
- package/dist/cmd/repo-settings.mjs +17 -2
- package/dist/cmd/repo-settings.mjs.map +1 -1
- package/dist/github/actions-settings/apply.d.mts.map +1 -1
- package/dist/github/actions-settings/apply.mjs +0 -4
- package/dist/github/actions-settings/apply.mjs.map +1 -1
- package/dist/github/actions-settings/backup.d.mts +1 -1
- package/dist/github/actions-settings/backup.d.mts.map +1 -1
- package/dist/github/actions-settings/backup.mjs +4 -4
- package/dist/github/actions-settings/backup.mjs.map +1 -1
- package/dist/github/actions-settings/constants.d.mts +1 -1
- package/dist/github/clear-json-files.d.mts +17 -0
- package/dist/github/clear-json-files.d.mts.map +1 -0
- package/dist/github/clear-json-files.mjs +29 -0
- package/dist/github/clear-json-files.mjs.map +1 -0
- package/dist/github/constants.d.mts +3 -0
- package/dist/github/constants.d.mts.map +1 -1
- package/dist/github/constants.mjs +3 -0
- package/dist/github/constants.mjs.map +1 -1
- package/dist/github/environments/api/get-environments.d.mts +16 -0
- package/dist/github/environments/api/get-environments.d.mts.map +1 -0
- package/dist/github/environments/api/get-environments.mjs +98 -0
- package/dist/github/environments/api/get-environments.mjs.map +1 -0
- package/dist/github/environments/api/index.d.mts +3 -0
- package/dist/github/environments/api/index.d.mts.map +1 -0
- package/dist/github/environments/api/index.mjs +3 -0
- package/dist/github/environments/api/index.mjs.map +1 -0
- package/dist/github/environments/api/set-environment.d.mts +10 -0
- package/dist/github/environments/api/set-environment.d.mts.map +1 -0
- package/dist/github/environments/api/set-environment.mjs +73 -0
- package/dist/github/environments/api/set-environment.mjs.map +1 -0
- package/dist/github/environments/apply.d.mts +11 -0
- package/dist/github/environments/apply.d.mts.map +1 -0
- package/dist/github/environments/apply.mjs +63 -0
- package/dist/github/environments/apply.mjs.map +1 -0
- package/dist/github/environments/backup.d.mts +10 -0
- package/dist/github/environments/backup.d.mts.map +1 -0
- package/dist/github/environments/backup.mjs +30 -0
- package/dist/github/environments/backup.mjs.map +1 -0
- package/dist/github/environments/constants.d.mts +354 -0
- package/dist/github/environments/constants.d.mts.map +1 -0
- package/dist/github/environments/constants.mjs +62 -0
- package/dist/github/environments/constants.mjs.map +1 -0
- package/dist/github/environments/index.d.mts +6 -0
- package/dist/github/environments/index.d.mts.map +1 -0
- package/dist/github/environments/index.mjs +6 -0
- package/dist/github/environments/index.mjs.map +1 -0
- package/dist/github/environments/read-environment-contents.d.mts +3 -0
- package/dist/github/environments/read-environment-contents.d.mts.map +1 -0
- package/dist/github/environments/read-environment-contents.mjs +31 -0
- package/dist/github/environments/read-environment-contents.mjs.map +1 -0
- package/dist/github/index.d.mts +4 -0
- package/dist/github/index.d.mts.map +1 -1
- package/dist/github/index.mjs +4 -0
- package/dist/github/index.mjs.map +1 -1
- package/dist/github/pages/apply.d.mts.map +1 -1
- package/dist/github/pages/apply.mjs +0 -2
- package/dist/github/pages/apply.mjs.map +1 -1
- package/dist/github/pages/backup.d.mts +11 -1
- package/dist/github/pages/backup.d.mts.map +1 -1
- package/dist/github/pages/backup.mjs +18 -5
- package/dist/github/pages/backup.mjs.map +1 -1
- package/dist/github/repository/apply.d.mts.map +1 -1
- package/dist/github/repository/apply.mjs +0 -4
- package/dist/github/repository/apply.mjs.map +1 -1
- package/dist/github/repository/backup.d.mts.map +1 -1
- package/dist/github/repository/backup.mjs +4 -4
- package/dist/github/repository/backup.mjs.map +1 -1
- package/dist/github/ruleset/apply.d.mts.map +1 -1
- package/dist/github/ruleset/apply.mjs +9 -9
- package/dist/github/ruleset/apply.mjs.map +1 -1
- package/dist/github/ruleset/backup.d.mts +7 -0
- package/dist/github/ruleset/backup.d.mts.map +1 -1
- package/dist/github/ruleset/backup.mjs +20 -7
- package/dist/github/ruleset/backup.mjs.map +1 -1
- package/dist/github/ruleset/read-rule-set-contents.d.mts +0 -1
- package/dist/github/ruleset/read-rule-set-contents.d.mts.map +1 -1
- package/dist/github/ruleset/read-rule-set-contents.mjs +0 -1
- package/dist/github/ruleset/read-rule-set-contents.mjs.map +1 -1
- package/dist/github/settings-file-path.d.mts +14 -0
- package/dist/github/settings-file-path.d.mts.map +1 -0
- package/dist/github/settings-file-path.mjs +41 -0
- package/dist/github/settings-file-path.mjs.map +1 -0
- package/dist/github/variables/api/list-repo-variables.d.mts.map +1 -1
- package/dist/github/variables/api/list-repo-variables.mjs +3 -1
- package/dist/github/variables/api/list-repo-variables.mjs.map +1 -1
- package/dist/github/variables/apply.d.mts +9 -0
- package/dist/github/variables/apply.d.mts.map +1 -1
- package/dist/github/variables/apply.mjs +31 -17
- package/dist/github/variables/apply.mjs.map +1 -1
- package/dist/github/variables/backup.d.mts +20 -0
- package/dist/github/variables/backup.d.mts.map +1 -0
- package/dist/github/variables/backup.mjs +35 -0
- package/dist/github/variables/backup.mjs.map +1 -0
- package/dist/github/variables/constants.d.mts +65 -0
- package/dist/github/variables/constants.d.mts.map +1 -0
- package/dist/github/variables/constants.mjs +48 -0
- package/dist/github/variables/constants.mjs.map +1 -0
- package/dist/github/variables/index.d.mts +2 -0
- package/dist/github/variables/index.d.mts.map +1 -1
- package/dist/github/variables/index.mjs +2 -0
- package/dist/github/variables/index.mjs.map +1 -1
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.d.mts +10 -0
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.mjs +25 -0
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/api/index.d.mts +3 -0
- package/dist/github/vulnerability-alerts/api/index.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/api/index.mjs +3 -0
- package/dist/github/vulnerability-alerts/api/index.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.d.mts +10 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.mjs +19 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/apply.d.mts +11 -0
- package/dist/github/vulnerability-alerts/apply.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/apply.mjs +45 -0
- package/dist/github/vulnerability-alerts/apply.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/backup.d.mts +5 -0
- package/dist/github/vulnerability-alerts/backup.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/backup.mjs +22 -0
- package/dist/github/vulnerability-alerts/backup.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/constants.d.mts +72 -0
- package/dist/github/vulnerability-alerts/constants.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/constants.mjs +21 -0
- package/dist/github/vulnerability-alerts/constants.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/index.d.mts +5 -0
- package/dist/github/vulnerability-alerts/index.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/index.mjs +5 -0
- package/dist/github/vulnerability-alerts/index.mjs.map +1 -0
- package/package.json +29 -28
- package/src/cmd/repo-settings.mts +22 -2
- package/src/github/actions-settings/apply.mts +0 -9
- package/src/github/actions-settings/backup.mts +6 -11
- package/src/github/actions-settings/constants.mts +1 -1
- package/src/github/clear-json-files.mts +31 -0
- package/src/github/clear-json-files.test.mts +78 -0
- package/src/github/constants.mts +9 -0
- package/src/github/environments/api/get-environments.mts +155 -0
- package/src/github/environments/api/index.mts +2 -0
- package/src/github/environments/api/set-environment.mts +106 -0
- package/src/github/environments/apply.mts +82 -0
- package/src/github/environments/backup.mts +39 -0
- package/src/github/environments/constants.mts +78 -0
- package/src/github/environments/index.mts +5 -0
- package/src/github/environments/read-environment-contents.mts +49 -0
- package/src/github/index.mts +4 -0
- package/src/github/pages/apply.mts +0 -6
- package/src/github/pages/backup.mts +21 -12
- package/src/github/repository/apply.mts +0 -9
- package/src/github/repository/backup.mts +5 -10
- package/src/github/ruleset/apply.mts +10 -18
- package/src/github/ruleset/backup.mts +23 -13
- package/src/github/ruleset/read-rule-set-contents.mts +0 -4
- package/src/github/ruleset/schema.test.mts +0 -13
- package/src/github/settings-file-path.mts +51 -0
- package/src/github/settings-file-path.test.mts +70 -0
- package/src/github/variables/api/list-repo-variables.mts +3 -1
- package/src/github/variables/apply.mts +54 -27
- package/src/github/variables/backup.mts +47 -0
- package/src/github/variables/constants.mts +61 -0
- package/src/github/variables/constants.test.mts +110 -0
- package/src/github/variables/index.mts +2 -0
- package/src/github/vulnerability-alerts/api/get-vulnerability-alerts.mts +31 -0
- package/src/github/vulnerability-alerts/api/index.mts +2 -0
- package/src/github/vulnerability-alerts/api/set-vulnerability-alerts.mts +31 -0
- package/src/github/vulnerability-alerts/apply.mts +71 -0
- package/src/github/vulnerability-alerts/backup.mts +31 -0
- package/src/github/vulnerability-alerts/constants.mts +25 -0
- package/src/github/vulnerability-alerts/index.mts +4 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import 'dotenv/config';
|
|
3
|
+
import { listRepoVariables } from './api/index.mjs';
|
|
4
|
+
import { type RepositoryVariables } from './constants.mjs';
|
|
5
|
+
/**
|
|
6
|
+
* repository variable の現在値を宣言ファイルへ撮り直す。
|
|
7
|
+
*
|
|
8
|
+
* 宣言していないものも含めて live にあるものを全部書く。 backup は「いま何が
|
|
9
|
+
* あるか」を写す操作なので、 GUI で足された変数もここで宣言に入る。要らない
|
|
10
|
+
* ものは撮り直したあとに宣言から外し、 GitHub 側でも消す。
|
|
11
|
+
*/
|
|
12
|
+
export declare const backupVariables: (fmt?: boolean) => Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* API の配列を `settings.json` と同じ record に畳む。
|
|
15
|
+
*
|
|
16
|
+
* `created_at` / `updated_at` はここで落ちる。値が変わっていなくても動くので、
|
|
17
|
+
* 残すと宣言ファイルが毎日変わり、ドリフト検査が本当の変更を報せなくなる。
|
|
18
|
+
*/
|
|
19
|
+
export declare const toDeclaration: (variables: Awaited<ReturnType<typeof listRepoVariables>>) => RepositoryVariables;
|
|
20
|
+
//# sourceMappingURL=backup.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/variables/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAMvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SAAe,OAAO,KAAU,OAAO,CAAC,IAAI,CAcvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,cACb,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,KACvD,mBACoE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import 'dotenv/config';
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { formatUncommittedFiles, isDirectlyExecuted } from 'ts-repo-utils';
|
|
6
|
+
import { clearJsonFilesIn } from '../clear-json-files.mjs';
|
|
7
|
+
import { settingsJsonName, variablesDir } from '../constants.mjs';
|
|
8
|
+
import { listRepoVariables } from './api/index.mjs';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
export const backupVariables = async (fmt = true) => {
|
|
17
|
+
const variables = await listRepoVariables();
|
|
18
|
+
await clearJsonFilesIn(variablesDir);
|
|
19
|
+
|
|
20
|
+
await fs.writeFile(path.resolve(variablesDir, settingsJsonName), JSON.stringify(toDeclaration(variables), undefined, 2));
|
|
21
|
+
if (fmt) {
|
|
22
|
+
await formatUncommittedFiles();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
export const toDeclaration = (variables) => Object.fromEntries(variables.map(({ name, value }) => [name, value]));
|
|
32
|
+
if (isDirectlyExecuted(import.meta.url)) {
|
|
33
|
+
await backupVariables();
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=backup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/variables/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,GAAG,GAAY,IAAI,EAAiB,EAAE;IAC1E,MAAM,SAAS,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAE5C,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAErC,mEAAmE;IACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAC5C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CACvD,CAAC;IAEF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,SAAwD,EACnC,EAAE,CACvB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAExE,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as t from 'ts-fortress';
|
|
2
|
+
/**
|
|
3
|
+
* `repo-settings/variables/settings.json` の型。
|
|
4
|
+
*
|
|
5
|
+
* Settings > Secrets and variables > Actions > Variables に対応する
|
|
6
|
+
* (`GET|POST /repos/{owner}/{repo}/actions/variables`,
|
|
7
|
+
* `PATCH /repos/{owner}/{repo}/actions/variables/{name}`)。
|
|
8
|
+
*
|
|
9
|
+
* 変数名をキー、値を値にした素の record にしてある。 API が返す配列
|
|
10
|
+
* (`{ name, value, created_at, updated_at }[]`) をそのまま写さないのは、
|
|
11
|
+
* `created_at` / `updated_at` が値の変化なしに動くためで、宣言に入れると
|
|
12
|
+
* 毎日ドリフトとして出てしまう。ここで持つのは宣言できるものだけ。
|
|
13
|
+
*
|
|
14
|
+
* **ここに秘密を書かないこと。** repository variable は API でも Actions の
|
|
15
|
+
* ログでも平文で読める。秘密は secret 側で、そちらはこのツールの管理外にある。
|
|
16
|
+
*/
|
|
17
|
+
export declare const RepositoryVariables: Readonly<{
|
|
18
|
+
typeName: string;
|
|
19
|
+
defaultValue: {
|
|
20
|
+
readonly [x: string]: string;
|
|
21
|
+
};
|
|
22
|
+
is: (a: unknown) => a is {
|
|
23
|
+
readonly [x: string]: string;
|
|
24
|
+
};
|
|
25
|
+
assertIs: (a: unknown) => asserts a is {
|
|
26
|
+
readonly [x: string]: string;
|
|
27
|
+
};
|
|
28
|
+
cast: (a: unknown) => {
|
|
29
|
+
readonly [x: string]: string;
|
|
30
|
+
};
|
|
31
|
+
fill: (a: unknown) => {
|
|
32
|
+
readonly [x: string]: string;
|
|
33
|
+
};
|
|
34
|
+
prune: <B extends {
|
|
35
|
+
readonly [x: string]: string;
|
|
36
|
+
}>(a: B) => {
|
|
37
|
+
readonly [x: string]: string;
|
|
38
|
+
};
|
|
39
|
+
validate: (a: unknown) => t.Result<{
|
|
40
|
+
readonly [x: string]: string;
|
|
41
|
+
}, readonly Readonly<{
|
|
42
|
+
path: readonly string[];
|
|
43
|
+
actualValue: unknown;
|
|
44
|
+
expectedType: string;
|
|
45
|
+
typeName: string;
|
|
46
|
+
details?: t.ValidationErrorDetails | undefined;
|
|
47
|
+
}>[]>;
|
|
48
|
+
optional?: true;
|
|
49
|
+
}>;
|
|
50
|
+
export type RepositoryVariables = t.TypeOf<typeof RepositoryVariables>;
|
|
51
|
+
/**
|
|
52
|
+
* GitHub が受け付けない変数名を、送る前にすべて挙げて落とす。
|
|
53
|
+
*
|
|
54
|
+
* 名前は `PATCH .../actions/variables/{name}` のパスに入る。 octokit が URL
|
|
55
|
+
* エンコードするので注入にはならないが、弾かれる名前は 422 になり、それが
|
|
56
|
+
* 起きるのは**何本か書き込んだ後**である。 environments の `assertConsistent`
|
|
57
|
+
* と同じ理由でここに置いてある — 1 本目を送る前に全部の名前を見ておけば、
|
|
58
|
+
* この種の間違いで中途半端に適用された状態にはならない。
|
|
59
|
+
*
|
|
60
|
+
* 規則は GitHub の documentation のとおり: 英数字と `_` のみ、先頭に数字は
|
|
61
|
+
* 不可、`GITHUB_` 始まりは予約。名前の大文字小文字は区別されないので、
|
|
62
|
+
* 予約接頭辞の判定も区別しない。
|
|
63
|
+
*/
|
|
64
|
+
export declare const assertVariableNamesAreValid: (variables: RepositoryVariables) => void;
|
|
65
|
+
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/github/variables/constants.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B,cAC3B,mBAAmB,KAC7B,IAeF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Arr } from 'ts-data-forge';
|
|
2
|
+
import * as t from 'ts-fortress';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
export const RepositoryVariables = t.keyValueRecord(t.string(), t.string(), {
|
|
19
|
+
typeName: 'RepositoryVariables',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
export const assertVariableNamesAreValid = (variables) => {
|
|
35
|
+
const offenders = Object.keys(variables).filter((name) => !isValidVariableName(name));
|
|
36
|
+
if (Arr.isNonEmpty(offenders)) {
|
|
37
|
+
throw new Error([
|
|
38
|
+
`repository variable の名前として使えないものがあります: ${offenders
|
|
39
|
+
.map((name) => JSON.stringify(name))
|
|
40
|
+
.join(', ')}。`,
|
|
41
|
+
'英数字と "_" のみが使え、先頭に数字は置けず、"GITHUB_" 始まりは予約されています。',
|
|
42
|
+
].join('\n'));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const variableNamePattern = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
47
|
+
const isValidVariableName = (name) => variableNamePattern.test(name) && !name.toUpperCase().startsWith('GITHUB_');
|
|
48
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/github/variables/constants.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;IAC1E,QAAQ,EAAE,qBAAqB;CAChC,CAAC,CAAC;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAA8B,EACxB,EAAE;IACR,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAC7C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CACrC,CAAC;IAEF,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb;YACE,0CAA0C,SAAS;iBAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnC,IAAI,CAAC,IAAI,CAAC,GAAG;YAChB,kDAAkD;SACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAExD,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE,CACpD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/github/variables/index.mts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/github/variables/index.mts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/github/variables/index.mts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/github/variables/index.mts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VulnerabilityAlertsSettings } from '../constants.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Dependabot alerts が有効かどうかを取得する。
|
|
4
|
+
*
|
|
5
|
+
* このエンドポイントは body を返さない: 有効なら 204、無効なら 404。
|
|
6
|
+
* octokit は 404 を例外にするので、それを `enabled: false` として扱う。
|
|
7
|
+
* 「無効」と「読めなかった」は区別する必要があるため、 404 以外は投げ直す。
|
|
8
|
+
*/
|
|
9
|
+
export declare const getVulnerabilityAlerts: () => Promise<VulnerabilityAlertsSettings>;
|
|
10
|
+
//# sourceMappingURL=get-vulnerability-alerts.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-vulnerability-alerts.d.mts","sourceRoot":"","sources":["../../../../src/github/vulnerability-alerts/api/get-vulnerability-alerts.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QACvB,OAAO,CAAC,2BAA2B,CAgB5C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { hasKey, isRecord } from 'ts-data-forge';
|
|
2
|
+
import { octokitHeaders, OWNER, REPO } from '../../constants.mjs';
|
|
3
|
+
import { octokit } from '../../octokit.mjs';
|
|
4
|
+
import { VulnerabilityAlertsSettings } from '../constants.mjs';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export const getVulnerabilityAlerts = async () => {
|
|
13
|
+
try {
|
|
14
|
+
|
|
15
|
+
await octokit.request('GET /repos/{owner}/{repo}/vulnerability-alerts', { owner: OWNER, repo: REPO, headers: octokitHeaders });
|
|
16
|
+
return VulnerabilityAlertsSettings.fill({ enabled: true });
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (isRecord(error) && hasKey(error, 'status') && error.status === 404) {
|
|
20
|
+
return VulnerabilityAlertsSettings.fill({ enabled: false });
|
|
21
|
+
}
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=get-vulnerability-alerts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-vulnerability-alerts.mjs","sourceRoot":"","sources":["../../../../src/github/vulnerability-alerts/api/get-vulnerability-alerts.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,KAAK,IAA0C,EAAE;IAC/C,IAAI,CAAC;QACH,sGAAsG;QACtG,MAAM,OAAO,CAAC,OAAO,CACnB,gDAAuE,EACvE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;QAEF,OAAO,2BAA2B,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvE,OAAO,2BAA2B,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../src/github/vulnerability-alerts/api/index.mts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../src/github/vulnerability-alerts/api/index.mts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type VulnerabilityAlertsSettings } from '../constants.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Dependabot alerts を JSON の内容に合わせる。
|
|
4
|
+
*
|
|
5
|
+
* 有効化と無効化で別メソッドなので、書き込みは 1 回で済むように分岐する。
|
|
6
|
+
* `enabled: false` はきちんと無効化する — 宣言が現状に合わせて黙るなら、
|
|
7
|
+
* ファイルを読んでも何が有効なのか分からなくなる。
|
|
8
|
+
*/
|
|
9
|
+
export declare const setVulnerabilityAlerts: (settings: VulnerabilityAlertsSettings) => Promise<void>;
|
|
10
|
+
//# sourceMappingURL=set-vulnerability-alerts.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-vulnerability-alerts.d.mts","sourceRoot":"","sources":["../../../../src/github/vulnerability-alerts/api/set-vulnerability-alerts.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,aACvB,2BAA2B,KACpC,OAAO,CAAC,IAAI,CAgBd,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { octokitHeaders, OWNER, REPO } from '../../constants.mjs';
|
|
2
|
+
import { octokit } from '../../octokit.mjs';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export const setVulnerabilityAlerts = async (settings) => {
|
|
11
|
+
if (settings.enabled) {
|
|
12
|
+
|
|
13
|
+
await octokit.request('PUT /repos/{owner}/{repo}/vulnerability-alerts', { owner: OWNER, repo: REPO, headers: octokitHeaders });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
await octokit.request('DELETE /repos/{owner}/{repo}/vulnerability-alerts', { owner: OWNER, repo: REPO, headers: octokitHeaders });
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=set-vulnerability-alerts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-vulnerability-alerts.mjs","sourceRoot":"","sources":["../../../../src/github/vulnerability-alerts/api/set-vulnerability-alerts.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,QAAqC,EACtB,EAAE;IACjB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,uEAAuE;QACvE,MAAM,OAAO,CAAC,OAAO,CACnB,gDAAuE,EACvE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;QAEF,OAAO;IACT,CAAC;IAED,wEAAwE;IACxE,MAAM,OAAO,CAAC,OAAO,CACnB,mDAA0E,EAC1E,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import 'dotenv/config';
|
|
3
|
+
/**
|
|
4
|
+
* `repo-settings/vulnerability-alerts/settings.json` を Dependabot alerts に反映する。
|
|
5
|
+
*
|
|
6
|
+
* 設定ファイルを置いていない repository では何もしない。 pages と同じ理由 —
|
|
7
|
+
* この package は他の repository からも使われるので、ファイルの不在を
|
|
8
|
+
* 「無効にせよ」と読むと、宣言していない設定を勝手に落としてしまう。
|
|
9
|
+
*/
|
|
10
|
+
export declare const applyVulnerabilityAlerts: () => Promise<void>;
|
|
11
|
+
//# sourceMappingURL=apply.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAiBvB;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CAsB7D,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import 'dotenv/config';
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import * as t from 'ts-fortress';
|
|
6
|
+
import { formatUncommittedFiles, isDirectlyExecuted, pathExists, Result, } from 'ts-repo-utils';
|
|
7
|
+
import { settingsJsonName, vulnerabilityAlertsDir } from '../constants.mjs';
|
|
8
|
+
import { getVulnerabilityAlerts, setVulnerabilityAlerts, } from './api/index.mjs';
|
|
9
|
+
import { VulnerabilityAlertsSettings } from './constants.mjs';
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
export const applyVulnerabilityAlerts = async () => {
|
|
18
|
+
const settingsPath = path.resolve(vulnerabilityAlertsDir, settingsJsonName);
|
|
19
|
+
if (!(await pathExists(settingsPath))) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const settings = await readSettings(settingsPath);
|
|
23
|
+
await setVulnerabilityAlerts(settings);
|
|
24
|
+
|
|
25
|
+
{
|
|
26
|
+
const applied = await getVulnerabilityAlerts();
|
|
27
|
+
const str = JSON.stringify(applied, undefined, 2);
|
|
28
|
+
|
|
29
|
+
await fs.writeFile(settingsPath, str);
|
|
30
|
+
await formatUncommittedFiles();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const readSettings = async (settingsPath) => {
|
|
34
|
+
|
|
35
|
+
const settingsText = await fs.readFile(settingsPath, { encoding: 'utf8' });
|
|
36
|
+
const validationResult = VulnerabilityAlertsSettings.validate(JSON.parse(settingsText));
|
|
37
|
+
if (Result.isErr(validationResult)) {
|
|
38
|
+
throw new Error(t.validationErrorsToMessages(validationResult.value).join('\n'));
|
|
39
|
+
}
|
|
40
|
+
return validationResult.value;
|
|
41
|
+
};
|
|
42
|
+
if (isDirectlyExecuted(import.meta.url)) {
|
|
43
|
+
await applyVulnerabilityAlerts();
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=apply.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,IAAmB,EAAE;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;IAE5E,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEvC,0BAA0B;IAC1B,CAAC;QACC,MAAM,OAAO,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAE/C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAElD,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAEtC,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EACxB,YAAoB,EACkB,EAAE;IACxC,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE3E,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,QAAQ,CAC3D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CACzB,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,CAAC,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,wBAAwB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAQvB,0CAA0C;AAC1C,eAAO,MAAM,yBAAyB,SAC/B,OAAO,KACX,OAAO,CAAC,IAAI,CAcd,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import 'dotenv/config';
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { formatUncommittedFiles, isDirectlyExecuted } from 'ts-repo-utils';
|
|
6
|
+
import { clearJsonFilesIn } from '../clear-json-files.mjs';
|
|
7
|
+
import { settingsJsonName, vulnerabilityAlertsDir } from '../constants.mjs';
|
|
8
|
+
import { getVulnerabilityAlerts } from './api/index.mjs';
|
|
9
|
+
|
|
10
|
+
export const backupVulnerabilityAlerts = async (fmt = true) => {
|
|
11
|
+
const settings = await getVulnerabilityAlerts();
|
|
12
|
+
await clearJsonFilesIn(vulnerabilityAlertsDir);
|
|
13
|
+
|
|
14
|
+
await fs.writeFile(path.resolve(vulnerabilityAlertsDir, settingsJsonName), JSON.stringify(settings, undefined, 2));
|
|
15
|
+
if (fmt) {
|
|
16
|
+
await formatUncommittedFiles();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
if (isDirectlyExecuted(import.meta.url)) {
|
|
20
|
+
await backupVulnerabilityAlerts();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=backup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAAG,GAAY,IAAI,EACJ,EAAE;IACjB,MAAM,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAEhD,MAAM,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAE/C,mEAAmE;IACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,EACtD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CACvC,CAAC;IAEF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,yBAAyB,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as t from 'ts-fortress';
|
|
2
|
+
/**
|
|
3
|
+
* `repo-settings/vulnerability-alerts/settings.json` の型。
|
|
4
|
+
*
|
|
5
|
+
* Settings > Advanced Security > Dependabot alerts に対応する。
|
|
6
|
+
*
|
|
7
|
+
* `security_and_analysis` とは別の API
|
|
8
|
+
* (`GET|PUT|DELETE /repos/{owner}/{repo}/vulnerability-alerts`) で、
|
|
9
|
+
* 値も JSON body ではなく 204 / 404 で返ってくる。そのため
|
|
10
|
+
* `repository-settings/settings.json` には載せられず、 pages と同じく
|
|
11
|
+
* 独立した設定ファイルにしている。
|
|
12
|
+
*
|
|
13
|
+
* `repository-settings/settings.json` の `dependabot_security_updates` は
|
|
14
|
+
* これとは別物 — あちらは「脆弱な依存を直す PR を自動で作るか」で、
|
|
15
|
+
* この repository では `pnpm-update` が lockfile を持っているため無効のまま。
|
|
16
|
+
* ここで管理するのは「既知の脆弱性を知らせるか」だけ。
|
|
17
|
+
*/
|
|
18
|
+
export declare const VulnerabilityAlertsSettings: Readonly<{
|
|
19
|
+
typeName: string;
|
|
20
|
+
defaultValue: Readonly<{
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
is: (a: unknown) => a is Readonly<{
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
}>;
|
|
26
|
+
assertIs: (a: unknown) => asserts a is Readonly<{
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
cast: (a: unknown) => Readonly<{
|
|
30
|
+
enabled: boolean;
|
|
31
|
+
}>;
|
|
32
|
+
fill: (a: unknown) => Readonly<{
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
}>;
|
|
35
|
+
prune: <B extends Readonly<{
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
}>>(a: B) => Readonly<{
|
|
38
|
+
enabled: boolean;
|
|
39
|
+
}>;
|
|
40
|
+
validate: (a: unknown) => t.Result<Readonly<{
|
|
41
|
+
enabled: boolean;
|
|
42
|
+
}>, readonly Readonly<{
|
|
43
|
+
path: readonly string[];
|
|
44
|
+
actualValue: unknown;
|
|
45
|
+
expectedType: string;
|
|
46
|
+
typeName: string;
|
|
47
|
+
details?: t.ValidationErrorDetails | undefined;
|
|
48
|
+
}>[]>;
|
|
49
|
+
optional?: true;
|
|
50
|
+
}> & Readonly<{
|
|
51
|
+
shape: {
|
|
52
|
+
readonly enabled: Readonly<{
|
|
53
|
+
typeName: string;
|
|
54
|
+
defaultValue: boolean;
|
|
55
|
+
is: (a: unknown) => a is boolean;
|
|
56
|
+
assertIs: (a: unknown) => asserts a is boolean;
|
|
57
|
+
cast: (a: unknown) => boolean;
|
|
58
|
+
fill: (a: unknown) => boolean;
|
|
59
|
+
prune: <B extends boolean>(a: B) => boolean;
|
|
60
|
+
validate: (a: unknown) => t.Result<boolean, readonly Readonly<{
|
|
61
|
+
path: readonly string[];
|
|
62
|
+
actualValue: unknown;
|
|
63
|
+
expectedType: string;
|
|
64
|
+
typeName: string;
|
|
65
|
+
details?: t.ValidationErrorDetails | undefined;
|
|
66
|
+
}>[]>;
|
|
67
|
+
optional?: true;
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
}>;
|
|
71
|
+
export type VulnerabilityAlertsSettings = t.TypeOf<typeof VulnerabilityAlertsSettings>;
|
|
72
|
+
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEtC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAChD,OAAO,2BAA2B,CACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CAC1B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/index.mts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/github/vulnerability-alerts/index.mts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|