gog-safe 0.1.0 → 0.1.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/README.md +165 -57
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/matching.d.ts +1 -0
- package/dist/matching.js +13 -4
- package/dist/matching.js.map +1 -1
- package/dist/validators.js +1 -1
- package/dist/validators.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,69 +1,124 @@
|
|
|
1
1
|
# gog-safe
|
|
2
2
|
|
|
3
|
-
`gog-safe`
|
|
4
|
-
|
|
3
|
+
`gog-safe` は `gog` 用の安全ラッパーCLIです。
|
|
4
|
+
policy ベースで Gmail / Sheets コマンドを制御し、必要に応じてコマンド別の後処理バリデーションを実行します。
|
|
5
5
|
|
|
6
|
-
##
|
|
6
|
+
## Install
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
- If `logging.require_audit_success=true`, audit failure is fail-closed.
|
|
12
|
-
- Final safety status must be read from `safety.action` and `ok`.
|
|
13
|
-
- `allowed` means only allow/deny command decision and does not include validator result.
|
|
8
|
+
```bash
|
|
9
|
+
npm install -g gog-safe
|
|
10
|
+
```
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
インストール後:
|
|
16
13
|
|
|
17
14
|
```bash
|
|
18
|
-
|
|
19
|
-
npm run build
|
|
15
|
+
gog-safe version
|
|
20
16
|
```
|
|
21
17
|
|
|
22
|
-
##
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
1. `policy.yml` を作成:
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
version: 1
|
|
24
|
+
gog:
|
|
25
|
+
binary: gog
|
|
26
|
+
account: support@example.com
|
|
27
|
+
client: ""
|
|
28
|
+
|
|
29
|
+
execution:
|
|
30
|
+
enforce_json: true
|
|
31
|
+
enforce_no_input: true
|
|
32
|
+
timeout_ms: 30000
|
|
33
|
+
|
|
34
|
+
commands:
|
|
35
|
+
allow:
|
|
36
|
+
- "sheets get"
|
|
37
|
+
- "gmail thread get"
|
|
38
|
+
deny:
|
|
39
|
+
- "gmail send"
|
|
40
|
+
- "gmail delete"
|
|
41
|
+
|
|
42
|
+
validation:
|
|
43
|
+
rules:
|
|
44
|
+
- match: "sheets get"
|
|
45
|
+
validators: ["llm-guard"]
|
|
46
|
+
validators:
|
|
47
|
+
llm-guard:
|
|
48
|
+
type: external_command
|
|
49
|
+
command: node
|
|
50
|
+
args: ["./scripts/validator.mjs"]
|
|
51
|
+
timeout_ms: 60000
|
|
52
|
+
|
|
53
|
+
logging:
|
|
54
|
+
level: info
|
|
55
|
+
audit_file: "./gog-safe-audit.log"
|
|
56
|
+
require_audit_success: false
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. policy 検証:
|
|
23
60
|
|
|
24
61
|
```bash
|
|
25
|
-
gog-safe run --policy ./policy.yml -- sheets get --range A1:B2
|
|
26
62
|
gog-safe validate-policy --policy ./policy.yml
|
|
27
|
-
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
3. 実行:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
gog-safe run --policy ./policy.yml -- sheets get --range A1:B2
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## CLI
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
gog-safe run --policy <path> -- <gog args...>
|
|
75
|
+
gog-safe validate-policy --policy <path>
|
|
76
|
+
gog-safe print-effective-policy --policy <path>
|
|
28
77
|
gog-safe version
|
|
29
78
|
```
|
|
30
79
|
|
|
31
|
-
##
|
|
80
|
+
## Safety Model
|
|
32
81
|
|
|
33
|
-
|
|
82
|
+
- `run` は常に統一JSONを返します(成功/失敗共通)。
|
|
83
|
+
- バリデータ障害(timeout / 非JSON / exit!=0 / 契約不正)は fail-closed(`block`, `ok:false`)。
|
|
84
|
+
- 監査ログ書き込み失敗はデフォルト fail-open(`require_audit_success:false`)。
|
|
85
|
+
- `require_audit_success:true` の場合、監査ログ失敗も fail-closed。
|
|
86
|
+
- 最終可否は `safety.action` と `ok` を参照してください。
|
|
87
|
+
- `allowed` は allow/deny 判定のみを表し、validator 結果は含みません。
|
|
34
88
|
|
|
35
|
-
|
|
36
|
-
2. `~/.gog-safe/config.json` (optional)
|
|
37
|
-
3. First `.gog-safe/config.json` found while walking from current directory to parent directories (optional)
|
|
89
|
+
## Config Discovery
|
|
38
90
|
|
|
39
|
-
|
|
91
|
+
次の順で読み込み・マージします:
|
|
40
92
|
|
|
41
|
-
|
|
93
|
+
1. `policy.yml`(必須)
|
|
94
|
+
2. `~/.gog-safe/config.json`(任意)
|
|
95
|
+
3. カレントディレクトリから親へ探索して最初に見つかった `.gog-safe/config.json`(任意)
|
|
42
96
|
|
|
43
|
-
|
|
44
|
-
- `commands.deny`: union (`policy ∪ home ∪ project`)
|
|
45
|
-
- `validation.rules`: concatenation (`policy + home + project`)
|
|
46
|
-
- `validation.validators`: key merge (`project > home > policy`)
|
|
47
|
-
- `gog`, `execution`, `logging`: key override (`project > home > policy`)
|
|
97
|
+
## Merge Rules
|
|
48
98
|
|
|
49
|
-
|
|
99
|
+
- `commands.allow`: 上書き優先(`project > home > policy`)
|
|
100
|
+
- `commands.deny`: 和集合(`policy ∪ home ∪ project`)
|
|
101
|
+
- `validation.rules`: 連結(`policy + home + project`)
|
|
102
|
+
- `validation.validators`: キー単位上書き(`project > home > policy`)
|
|
103
|
+
- `gog` / `execution` / `logging`: キー単位上書き(`project > home > policy`)
|
|
50
104
|
|
|
51
|
-
|
|
105
|
+
## Run Behavior
|
|
52
106
|
|
|
53
|
-
|
|
54
|
-
- `--no-input` (when `execution.enforce_no_input=true`)
|
|
55
|
-
- `--account=<gog.account>`
|
|
56
|
-
- `--client=<gog.client>` only when `gog.client` is non-empty
|
|
107
|
+
`run` 実行時に以下を強制します:
|
|
57
108
|
|
|
58
|
-
|
|
109
|
+
- `--json`(`execution.enforce_json=true` の場合)
|
|
110
|
+
- `--no-input`(`execution.enforce_no_input=true` の場合)
|
|
111
|
+
- `--account=<gog.account>`
|
|
112
|
+
- `--client=<gog.client>`(`gog.client` が非空の場合のみ)
|
|
59
113
|
|
|
60
|
-
`
|
|
114
|
+
ユーザーが `--json` / `--no-input` / `--account` / `--client`(`--k=v` 含む)を指定した場合は拒否します。
|
|
115
|
+
`validation.rules.match` は強制フラグ付与前のユーザー `argv` に対して評価します。
|
|
61
116
|
|
|
62
|
-
v1
|
|
117
|
+
v1 ではコマンドオプション自体の妥当性バリデーション(値の正当性チェックなど)は行いません。
|
|
63
118
|
|
|
64
|
-
## Validator
|
|
119
|
+
## Validator Contract (`external_command`)
|
|
65
120
|
|
|
66
|
-
stdin
|
|
121
|
+
stdin:
|
|
67
122
|
|
|
68
123
|
```json
|
|
69
124
|
{
|
|
@@ -74,7 +129,7 @@ stdin JSON:
|
|
|
74
129
|
}
|
|
75
130
|
```
|
|
76
131
|
|
|
77
|
-
stdout
|
|
132
|
+
stdout:
|
|
78
133
|
|
|
79
134
|
```json
|
|
80
135
|
{
|
|
@@ -83,13 +138,23 @@ stdout JSON:
|
|
|
83
138
|
}
|
|
84
139
|
```
|
|
85
140
|
|
|
86
|
-
|
|
141
|
+
ルール:
|
|
142
|
+
|
|
143
|
+
- `decision` は `allow` または `block`
|
|
144
|
+
- `reason` は文字列必須(`block` は非空必須、`allow` は空文字許容)
|
|
145
|
+
- timeout / 非JSON / exit!=0 / 契約不正は `block`
|
|
146
|
+
- 複数validatorは OR-block(1つでも `block` で停止)
|
|
147
|
+
|
|
148
|
+
## Multiple Rule Matches
|
|
149
|
+
|
|
150
|
+
1つのコマンドに複数の `validation.rules` が同時にマッチした場合:
|
|
87
151
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
152
|
+
1. `rules` を定義順に走査
|
|
153
|
+
2. マッチした各 rule の `validators` を配列連結
|
|
154
|
+
3. validator 名を重複排除(最初に出た順序は維持)
|
|
155
|
+
4. その順で実行し、1つでも `block` が出たら停止
|
|
91
156
|
|
|
92
|
-
## Output
|
|
157
|
+
## Output Schema (`run`)
|
|
93
158
|
|
|
94
159
|
```json
|
|
95
160
|
{
|
|
@@ -107,15 +172,37 @@ Rules:
|
|
|
107
172
|
}
|
|
108
173
|
```
|
|
109
174
|
|
|
110
|
-
|
|
175
|
+
`gog` の出力は JSON object である必要があります(スカラー/配列はエラー扱い)。
|
|
176
|
+
|
|
177
|
+
## Audit Logging Details
|
|
178
|
+
|
|
179
|
+
- `logging.require_audit_success=false`(デフォルト):
|
|
180
|
+
- 監査ログ書き込み失敗でも実行継続(fail-open)
|
|
181
|
+
- `safety.reasons` に `audit_log_write_failed` を追加
|
|
182
|
+
- stderr に警告を出力
|
|
183
|
+
- `logging.require_audit_success=true`:
|
|
184
|
+
- 監査ログ書き込み失敗で `block` + `ok:false`(fail-closed)
|
|
185
|
+
- `run` は監査ログの成否を確定してから最終JSONを返します。
|
|
186
|
+
|
|
187
|
+
## Exit Codes (`run`)
|
|
188
|
+
|
|
189
|
+
- `0`: 最終許可(`ok:true`)
|
|
190
|
+
- `2`: policy/validator による block(fail-closed 含む)
|
|
191
|
+
- `3`: runtime/system error(spawn失敗、timeout、非0終了、非JSON、スキーマ不正など)
|
|
111
192
|
|
|
112
|
-
|
|
113
|
-
- `2`: policy/validator block (including fail-closed validator or audit when configured)
|
|
114
|
-
- `3`: runtime/system error (gog spawn/timeout/non-zero, invalid gog JSON, internal errors)
|
|
193
|
+
## Operational Examples
|
|
115
194
|
|
|
116
|
-
|
|
195
|
+
### 1) `gmail labels *` を project 側で拒否
|
|
117
196
|
|
|
118
|
-
|
|
197
|
+
`policy.yml`:
|
|
198
|
+
|
|
199
|
+
```yaml
|
|
200
|
+
commands:
|
|
201
|
+
allow:
|
|
202
|
+
- "gmail labels *"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
`<project>/.gog-safe/config.json`:
|
|
119
206
|
|
|
120
207
|
```json
|
|
121
208
|
{
|
|
@@ -125,24 +212,45 @@ Project-level deny override:
|
|
|
125
212
|
}
|
|
126
213
|
```
|
|
127
214
|
|
|
128
|
-
|
|
215
|
+
`deny` 優先のため、このプロジェクトでは `gmail labels` 系は拒否されます。
|
|
216
|
+
|
|
217
|
+
### 2) 端末共通 allow を、特定プロジェクトで上書き
|
|
218
|
+
|
|
219
|
+
`~/.gog-safe/config.json`:
|
|
129
220
|
|
|
130
221
|
```json
|
|
131
222
|
{
|
|
132
223
|
"commands": {
|
|
133
|
-
"allow": ["sheets get"]
|
|
224
|
+
"allow": ["gmail thread get", "sheets get"]
|
|
134
225
|
}
|
|
135
226
|
}
|
|
136
227
|
```
|
|
137
228
|
|
|
138
|
-
|
|
229
|
+
`<project>/.gog-safe/config.json`:
|
|
139
230
|
|
|
140
231
|
```json
|
|
141
232
|
{
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
{ "match": "sheets get", "validators": ["llm-guard"] }
|
|
145
|
-
]
|
|
233
|
+
"commands": {
|
|
234
|
+
"allow": ["sheets metadata"]
|
|
146
235
|
}
|
|
147
236
|
}
|
|
148
237
|
```
|
|
238
|
+
|
|
239
|
+
`commands.allow` は上書き優先のため、当該プロジェクトで有効なのは `["sheets metadata"]` です。
|
|
240
|
+
|
|
241
|
+
### 3) `sheets get` だけ追加バリデーション
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
validation:
|
|
245
|
+
rules:
|
|
246
|
+
- match: "sheets get"
|
|
247
|
+
validators: ["llm-guard"]
|
|
248
|
+
validators:
|
|
249
|
+
llm-guard:
|
|
250
|
+
type: external_command
|
|
251
|
+
command: node
|
|
252
|
+
args: ["./scripts/validator.mjs"]
|
|
253
|
+
timeout_ms: 60000
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
この設定では `sheets get` 実行時のみ `llm-guard` が実行され、他コマンドは未マッチなら追加検査されません。
|
package/dist/index.js
CHANGED
|
@@ -8,12 +8,19 @@ import { executeRun } from "./run.js";
|
|
|
8
8
|
function usage() {
|
|
9
9
|
return [
|
|
10
10
|
"Usage:",
|
|
11
|
+
" gog-safe docs",
|
|
11
12
|
" gog-safe run --policy <path> -- <gog args...>",
|
|
12
13
|
" gog-safe validate-policy --policy <path>",
|
|
13
14
|
" gog-safe print-effective-policy --policy <path>",
|
|
14
15
|
" gog-safe version",
|
|
15
16
|
].join("\n");
|
|
16
17
|
}
|
|
18
|
+
async function readReadme() {
|
|
19
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
20
|
+
const currentDir = path.dirname(currentFile);
|
|
21
|
+
const readmePath = path.resolve(currentDir, "..", "README.md");
|
|
22
|
+
return await readFile(readmePath, "utf8");
|
|
23
|
+
}
|
|
17
24
|
function parsePolicyOption(argv) {
|
|
18
25
|
for (let i = 0; i < argv.length; i += 1) {
|
|
19
26
|
if (argv[i] === "--policy") {
|
|
@@ -68,6 +75,10 @@ async function main() {
|
|
|
68
75
|
console.log(await readPackageVersion());
|
|
69
76
|
return 0;
|
|
70
77
|
}
|
|
78
|
+
if (command === "docs") {
|
|
79
|
+
console.log(await readReadme());
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
71
82
|
if (command === "validate-policy") {
|
|
72
83
|
const policyPath = parsePolicyOption(argv.slice(1));
|
|
73
84
|
await loadEffectivePolicy(policyPath);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,SAAS,KAAK;IACZ,OAAO;QACL,QAAQ;QACR,iDAAiD;QACjD,4CAA4C;QAC5C,mDAAmD;QACnD,oBAAoB;KACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,cAAc,CAAC,2BAA2B,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,cAAc,CAAC,2BAA2B,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/matching.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare function matchCommandPattern(pattern: string, positionals: string
|
|
|
6
6
|
export declare function parseRuleMatch(match: string): {
|
|
7
7
|
positionals: string[];
|
|
8
8
|
requiredOptions: string[];
|
|
9
|
+
hasWildcard: boolean;
|
|
9
10
|
};
|
|
10
11
|
export declare function doesRuleMatch(rule: ValidationRule, analyzed: ArgvAnalysis): boolean;
|
|
11
12
|
export declare function resolveValidatorsForCommand(rules: ValidationRule[], analyzed: ArgvAnalysis): string[];
|
package/dist/matching.js
CHANGED
|
@@ -76,7 +76,9 @@ export function parseRuleMatch(match) {
|
|
|
76
76
|
const tokens = tokenizePattern(match);
|
|
77
77
|
const positionals = [];
|
|
78
78
|
const requiredOptions = [];
|
|
79
|
-
|
|
79
|
+
const hasWildcard = tokens.length > 0 && tokens[tokens.length - 1] === "*";
|
|
80
|
+
const effective = hasWildcard ? tokens.slice(0, -1) : tokens;
|
|
81
|
+
for (const token of effective) {
|
|
80
82
|
if (!token.startsWith("--")) {
|
|
81
83
|
positionals.push(token);
|
|
82
84
|
continue;
|
|
@@ -84,12 +86,19 @@ export function parseRuleMatch(match) {
|
|
|
84
86
|
const eqIndex = token.indexOf("=");
|
|
85
87
|
requiredOptions.push(eqIndex > 0 ? token.slice(0, eqIndex) : token);
|
|
86
88
|
}
|
|
87
|
-
return { positionals, requiredOptions };
|
|
89
|
+
return { positionals, requiredOptions, hasWildcard };
|
|
88
90
|
}
|
|
89
91
|
export function doesRuleMatch(rule, analyzed) {
|
|
90
92
|
const parsed = parseRuleMatch(rule.match);
|
|
91
|
-
if (parsed.
|
|
92
|
-
|
|
93
|
+
if (parsed.hasWildcard) {
|
|
94
|
+
if (analyzed.positionals.length < parsed.positionals.length) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
if (parsed.positionals.length !== analyzed.positionals.length) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
93
102
|
}
|
|
94
103
|
for (let i = 0; i < parsed.positionals.length; i += 1) {
|
|
95
104
|
if (parsed.positionals[i] !== analyzed.positionals[i]) {
|
package/dist/matching.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matching.js","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"matching.js","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"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"}
|
package/dist/validators.js
CHANGED
|
@@ -66,7 +66,7 @@ async function runExternalValidator(config, payload) {
|
|
|
66
66
|
const reason = parsed.reason;
|
|
67
67
|
if ((decision !== "allow" && decision !== "block")
|
|
68
68
|
|| typeof reason !== "string"
|
|
69
|
-
|| reason.trim().length === 0) {
|
|
69
|
+
|| (decision === "block" && reason.trim().length === 0)) {
|
|
70
70
|
return {
|
|
71
71
|
decision: "block",
|
|
72
72
|
reason: "external_validator_invalid_contract",
|
package/dist/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAQvD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAA4B,EAC5B,MAAe;IAEf,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,iBAAiB,OAAO,EAAE;iBACnC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,iBAAiB,OAAO,EAAE;aACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,gBAAgB;KACzB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAsC,EACtC,OAKC;IAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,OAAO,EACP,MAAM,CAAC,UAAU,CAClB,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,4BAA4B;SACrC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,OAAO;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,gCAAgC;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,2BAA2B,MAAM,CAAC,QAAQ,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,oCAAoC;SAC7C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,qCAAqC;SAC9C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IACE,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC;WAC3C,OAAO,MAAM,KAAK,QAAQ;WAC1B,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|