@dotsetlabs/tollgate 0.2.2 → 0.3.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 +138 -0
- package/dist/analyzers/filesystem.d.ts +5 -0
- package/dist/analyzers/filesystem.d.ts.map +1 -1
- package/dist/analyzers/filesystem.js +61 -7
- package/dist/analyzers/filesystem.js.map +1 -1
- package/dist/analyzers/loader.d.ts +5 -0
- package/dist/analyzers/loader.d.ts.map +1 -1
- package/dist/analyzers/loader.js +112 -6
- package/dist/analyzers/loader.js.map +1 -1
- package/dist/analyzers/prompt-injection.d.ts +1 -0
- package/dist/analyzers/prompt-injection.d.ts.map +1 -1
- package/dist/analyzers/prompt-injection.js +48 -2
- package/dist/analyzers/prompt-injection.js.map +1 -1
- package/dist/analyzers/shell.d.ts +8 -0
- package/dist/analyzers/shell.d.ts.map +1 -1
- package/dist/analyzers/shell.js +109 -8
- package/dist/analyzers/shell.js.map +1 -1
- package/dist/analyzers/sql.d.ts.map +1 -1
- package/dist/analyzers/sql.js +8 -7
- package/dist/analyzers/sql.js.map +1 -1
- package/dist/approval/interactive.d.ts +1 -1
- package/dist/approval/interactive.d.ts.map +1 -1
- package/dist/approval/interactive.js +13 -1
- package/dist/approval/interactive.js.map +1 -1
- package/dist/approval/rate-limiter.d.ts +115 -0
- package/dist/approval/rate-limiter.d.ts.map +1 -0
- package/dist/approval/rate-limiter.js +200 -0
- package/dist/approval/rate-limiter.js.map +1 -0
- package/dist/approval/url-validator.d.ts +51 -0
- package/dist/approval/url-validator.d.ts.map +1 -0
- package/dist/approval/url-validator.js +184 -0
- package/dist/approval/url-validator.js.map +1 -0
- package/dist/approval/webhook.d.ts +48 -0
- package/dist/approval/webhook.d.ts.map +1 -1
- package/dist/approval/webhook.js +89 -0
- package/dist/approval/webhook.js.map +1 -1
- package/dist/audit/integrity.d.ts +107 -0
- package/dist/audit/integrity.d.ts.map +1 -0
- package/dist/audit/integrity.js +191 -0
- package/dist/audit/integrity.js.map +1 -0
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/audit/logger.js +6 -5
- package/dist/audit/logger.js.map +1 -1
- package/dist/audit/redaction.js +6 -4
- package/dist/audit/redaction.js.map +1 -1
- package/dist/cli/commands/guard.d.ts +97 -0
- package/dist/cli/commands/guard.d.ts.map +1 -0
- package/dist/cli/commands/guard.js +456 -0
- package/dist/cli/commands/guard.js.map +1 -0
- package/dist/cli/commands/serve.js +1 -1
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/input-validation.d.ts +83 -0
- package/dist/cli/input-validation.d.ts.map +1 -0
- package/dist/cli/input-validation.js +237 -0
- package/dist/cli/input-validation.js.map +1 -0
- package/dist/cli/ui.js +2 -2
- package/dist/cli/ui.js.map +1 -1
- package/dist/guard/alternatives/index.d.ts +68 -0
- package/dist/guard/alternatives/index.d.ts.map +1 -0
- package/dist/guard/alternatives/index.js +224 -0
- package/dist/guard/alternatives/index.js.map +1 -0
- package/dist/guard/alternatives/registry.d.ts +16 -0
- package/dist/guard/alternatives/registry.d.ts.map +1 -0
- package/dist/guard/alternatives/registry.js +518 -0
- package/dist/guard/alternatives/registry.js.map +1 -0
- package/dist/guard/alternatives/types.d.ts +86 -0
- package/dist/guard/alternatives/types.d.ts.map +1 -0
- package/dist/guard/alternatives/types.js +5 -0
- package/dist/guard/alternatives/types.js.map +1 -0
- package/dist/guard/approval/enhanced-terminal.d.ts +110 -0
- package/dist/guard/approval/enhanced-terminal.d.ts.map +1 -0
- package/dist/guard/approval/enhanced-terminal.js +387 -0
- package/dist/guard/approval/enhanced-terminal.js.map +1 -0
- package/dist/guard/config.d.ts +80 -0
- package/dist/guard/config.d.ts.map +1 -0
- package/dist/guard/config.js +260 -0
- package/dist/guard/config.js.map +1 -0
- package/dist/guard/context/directory.d.ts +35 -0
- package/dist/guard/context/directory.d.ts.map +1 -0
- package/dist/guard/context/directory.js +243 -0
- package/dist/guard/context/directory.js.map +1 -0
- package/dist/guard/context/environment.d.ts +31 -0
- package/dist/guard/context/environment.d.ts.map +1 -0
- package/dist/guard/context/environment.js +204 -0
- package/dist/guard/context/environment.js.map +1 -0
- package/dist/guard/context/git.d.ts +52 -0
- package/dist/guard/context/git.d.ts.map +1 -0
- package/dist/guard/context/git.js +278 -0
- package/dist/guard/context/git.js.map +1 -0
- package/dist/guard/context/index.d.ts +64 -0
- package/dist/guard/context/index.d.ts.map +1 -0
- package/dist/guard/context/index.js +227 -0
- package/dist/guard/context/index.js.map +1 -0
- package/dist/guard/context/project.d.ts +47 -0
- package/dist/guard/context/project.d.ts.map +1 -0
- package/dist/guard/context/project.js +281 -0
- package/dist/guard/context/project.js.map +1 -0
- package/dist/guard/context/types.d.ts +152 -0
- package/dist/guard/context/types.d.ts.map +1 -0
- package/dist/guard/context/types.js +7 -0
- package/dist/guard/context/types.js.map +1 -0
- package/dist/guard/engine.d.ts +107 -0
- package/dist/guard/engine.d.ts.map +1 -0
- package/dist/guard/engine.js +430 -0
- package/dist/guard/engine.js.map +1 -0
- package/dist/guard/enhanced-engine.d.ts +151 -0
- package/dist/guard/enhanced-engine.d.ts.map +1 -0
- package/dist/guard/enhanced-engine.js +622 -0
- package/dist/guard/enhanced-engine.js.map +1 -0
- package/dist/guard/hooks/index.d.ts +50 -0
- package/dist/guard/hooks/index.d.ts.map +1 -0
- package/dist/guard/hooks/index.js +325 -0
- package/dist/guard/hooks/index.js.map +1 -0
- package/dist/guard/index.d.ts +29 -0
- package/dist/guard/index.d.ts.map +1 -0
- package/dist/guard/index.js +31 -0
- package/dist/guard/index.js.map +1 -0
- package/dist/guard/learning/index.d.ts +136 -0
- package/dist/guard/learning/index.d.ts.map +1 -0
- package/dist/guard/learning/index.js +314 -0
- package/dist/guard/learning/index.js.map +1 -0
- package/dist/guard/learning/pattern-extractor.d.ts +50 -0
- package/dist/guard/learning/pattern-extractor.d.ts.map +1 -0
- package/dist/guard/learning/pattern-extractor.js +372 -0
- package/dist/guard/learning/pattern-extractor.js.map +1 -0
- package/dist/guard/learning/rule-suggester.d.ts +67 -0
- package/dist/guard/learning/rule-suggester.d.ts.map +1 -0
- package/dist/guard/learning/rule-suggester.js +345 -0
- package/dist/guard/learning/rule-suggester.js.map +1 -0
- package/dist/guard/learning/types.d.ts +211 -0
- package/dist/guard/learning/types.d.ts.map +1 -0
- package/dist/guard/learning/types.js +18 -0
- package/dist/guard/learning/types.js.map +1 -0
- package/dist/guard/preview/effects.d.ts +15 -0
- package/dist/guard/preview/effects.d.ts.map +1 -0
- package/dist/guard/preview/effects.js +413 -0
- package/dist/guard/preview/effects.js.map +1 -0
- package/dist/guard/preview/index.d.ts +49 -0
- package/dist/guard/preview/index.d.ts.map +1 -0
- package/dist/guard/preview/index.js +196 -0
- package/dist/guard/preview/index.js.map +1 -0
- package/dist/guard/preview/parser.d.ts +34 -0
- package/dist/guard/preview/parser.d.ts.map +1 -0
- package/dist/guard/preview/parser.js +292 -0
- package/dist/guard/preview/parser.js.map +1 -0
- package/dist/guard/preview/types.d.ts +140 -0
- package/dist/guard/preview/types.d.ts.map +1 -0
- package/dist/guard/preview/types.js +5 -0
- package/dist/guard/preview/types.js.map +1 -0
- package/dist/guard/reversibility/index.d.ts +88 -0
- package/dist/guard/reversibility/index.d.ts.map +1 -0
- package/dist/guard/reversibility/index.js +310 -0
- package/dist/guard/reversibility/index.js.map +1 -0
- package/dist/guard/types.d.ts +192 -0
- package/dist/guard/types.d.ts.map +1 -0
- package/dist/guard/types.js +8 -0
- package/dist/guard/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/manager.d.ts.map +1 -1
- package/dist/orchestrator/manager.js +6 -1
- package/dist/orchestrator/manager.js.map +1 -1
- package/dist/policy/engine.d.ts.map +1 -1
- package/dist/policy/engine.js +11 -3
- package/dist/policy/engine.js.map +1 -1
- package/dist/policy/parser.d.ts.map +1 -1
- package/dist/policy/parser.js +3 -0
- package/dist/policy/parser.js.map +1 -1
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/proxy/server.js +8 -6
- package/dist/proxy/server.js.map +1 -1
- package/dist/session/manager.d.ts +2 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +106 -88
- package/dist/session/manager.js.map +1 -1
- package/dist/session/signing.d.ts +88 -0
- package/dist/session/signing.d.ts.map +1 -0
- package/dist/session/signing.js +166 -0
- package/dist/session/signing.js.map +1 -0
- package/dist/session/types.d.ts +2 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js.map +1 -1
- package/dist/utils/security-logger.d.ts +146 -0
- package/dist/utils/security-logger.d.ts.map +1 -0
- package/dist/utils/security-logger.js +222 -0
- package/dist/utils/security-logger.js.map +1 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +7 -1
- package/dist/wizard.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Context Types for Shell Guardian
|
|
3
|
+
*
|
|
4
|
+
* Rich context information for intelligent command risk assessment.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Enhanced guard context with project, git, and environment information.
|
|
8
|
+
*/
|
|
9
|
+
export interface EnhancedGuardContext {
|
|
10
|
+
/** The shell command to evaluate */
|
|
11
|
+
command: string;
|
|
12
|
+
/** Shell type (bash, zsh, fish) */
|
|
13
|
+
shell?: string;
|
|
14
|
+
/** Current working directory */
|
|
15
|
+
cwd?: string;
|
|
16
|
+
/** Dry run mode - analyze without prompting */
|
|
17
|
+
dryRun?: boolean;
|
|
18
|
+
/** Detected project information */
|
|
19
|
+
project?: ProjectContext;
|
|
20
|
+
/** Git repository status */
|
|
21
|
+
git?: GitContext;
|
|
22
|
+
/** Directory sensitivity information */
|
|
23
|
+
directory?: DirectoryContext;
|
|
24
|
+
/** Environment detection (dev/prod/CI) */
|
|
25
|
+
environment?: EnvironmentContext;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Detected project type.
|
|
29
|
+
*/
|
|
30
|
+
export type ProjectType = 'nodejs' | 'python' | 'go' | 'rust' | 'ruby' | 'java' | 'dotnet' | 'php' | 'unknown';
|
|
31
|
+
/**
|
|
32
|
+
* Project context information.
|
|
33
|
+
*/
|
|
34
|
+
export interface ProjectContext {
|
|
35
|
+
/** Detected project type */
|
|
36
|
+
type: ProjectType;
|
|
37
|
+
/** Project root directory */
|
|
38
|
+
root: string;
|
|
39
|
+
/** Path to manifest file (package.json, go.mod, etc.) */
|
|
40
|
+
manifestPath?: string;
|
|
41
|
+
/** Path to lock file if present */
|
|
42
|
+
lockfilePath?: string;
|
|
43
|
+
/** Directories that can be safely deleted and regenerated */
|
|
44
|
+
regenerableDirs: string[];
|
|
45
|
+
/** Directories containing source code */
|
|
46
|
+
sourceDirs: string[];
|
|
47
|
+
/** Project name from manifest */
|
|
48
|
+
name?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Git repository context.
|
|
52
|
+
*/
|
|
53
|
+
export interface GitContext {
|
|
54
|
+
/** Whether this is a git repository */
|
|
55
|
+
isRepo: boolean;
|
|
56
|
+
/** Git repository root */
|
|
57
|
+
root?: string;
|
|
58
|
+
/** Current branch name */
|
|
59
|
+
branch?: string;
|
|
60
|
+
/** Whether there are uncommitted changes */
|
|
61
|
+
hasUncommittedChanges: boolean;
|
|
62
|
+
/** List of untracked files */
|
|
63
|
+
untrackedFiles: string[];
|
|
64
|
+
/** List of modified (unstaged) files */
|
|
65
|
+
modifiedFiles: string[];
|
|
66
|
+
/** List of staged files */
|
|
67
|
+
stagedFiles: string[];
|
|
68
|
+
/** Files that would be affected by the command and are tracked */
|
|
69
|
+
affectedTrackedFiles?: string[];
|
|
70
|
+
/** Whether HEAD is detached */
|
|
71
|
+
isDetached?: boolean;
|
|
72
|
+
/** Number of commits ahead of remote */
|
|
73
|
+
ahead?: number;
|
|
74
|
+
/** Number of commits behind remote */
|
|
75
|
+
behind?: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Directory sensitivity context.
|
|
79
|
+
*/
|
|
80
|
+
export interface DirectoryContext {
|
|
81
|
+
/** Sensitivity score from 0 (safe) to 100 (critical) */
|
|
82
|
+
sensitivity: number;
|
|
83
|
+
/** Reasons for the sensitivity score */
|
|
84
|
+
sensitivityReasons: string[];
|
|
85
|
+
/** Whether inside user's home directory */
|
|
86
|
+
isHome: boolean;
|
|
87
|
+
/** Whether this is a system directory */
|
|
88
|
+
isSystem: boolean;
|
|
89
|
+
/** Whether inside the detected project */
|
|
90
|
+
isInProject: boolean;
|
|
91
|
+
/** Whether this is a temporary directory */
|
|
92
|
+
isTemp: boolean;
|
|
93
|
+
/** Specific sensitive paths that would be affected */
|
|
94
|
+
sensitivePaths?: string[];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Environment context.
|
|
98
|
+
*/
|
|
99
|
+
export interface EnvironmentContext {
|
|
100
|
+
/** Detected environment type */
|
|
101
|
+
type: 'development' | 'ci' | 'production' | 'unknown';
|
|
102
|
+
/** Machine hostname */
|
|
103
|
+
hostname: string;
|
|
104
|
+
/** Whether running in a container */
|
|
105
|
+
isContainer: boolean;
|
|
106
|
+
/** Whether connected via SSH */
|
|
107
|
+
isSSH: boolean;
|
|
108
|
+
/** Whether running as root */
|
|
109
|
+
isRoot: boolean;
|
|
110
|
+
/** Indicators that led to environment detection */
|
|
111
|
+
indicators: string[];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Project signature for detection.
|
|
115
|
+
*/
|
|
116
|
+
export interface ProjectSignature {
|
|
117
|
+
/** Files that indicate this project type */
|
|
118
|
+
manifestFiles: string[];
|
|
119
|
+
/** Lock files for this project type */
|
|
120
|
+
lockFiles: string[];
|
|
121
|
+
/** Directories that can be regenerated */
|
|
122
|
+
regenerableDirs: string[];
|
|
123
|
+
/** Common source directories */
|
|
124
|
+
sourceDirs: string[];
|
|
125
|
+
/** Command to regenerate dependencies */
|
|
126
|
+
regenerateCommand?: string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Context provider options.
|
|
130
|
+
*/
|
|
131
|
+
export interface ContextProviderOptions {
|
|
132
|
+
/** Maximum depth to search for project root */
|
|
133
|
+
maxProjectSearchDepth?: number;
|
|
134
|
+
/** Whether to include git context */
|
|
135
|
+
includeGit?: boolean;
|
|
136
|
+
/** Whether to include environment context */
|
|
137
|
+
includeEnvironment?: boolean;
|
|
138
|
+
/** Custom sensitive paths to check */
|
|
139
|
+
customSensitivePaths?: string[];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Result of context enhancement.
|
|
143
|
+
*/
|
|
144
|
+
export interface ContextEnhancementResult {
|
|
145
|
+
/** The enhanced context */
|
|
146
|
+
context: EnhancedGuardContext;
|
|
147
|
+
/** Time taken to gather context in ms */
|
|
148
|
+
gatherTimeMs: number;
|
|
149
|
+
/** Any warnings during context gathering */
|
|
150
|
+
warnings?: string[];
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/guard/context/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/guard/context/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard Engine - Core orchestrator for AI Shell Guardian
|
|
3
|
+
*
|
|
4
|
+
* The GuardEngine evaluates shell commands through multiple stages:
|
|
5
|
+
* 1. Fast path - Skip analysis for known-safe commands
|
|
6
|
+
* 2. Allowlist - Exact match bypass
|
|
7
|
+
* 3. Denylist - Pattern-based blocking
|
|
8
|
+
* 4. Analysis - Risk classification via ShellAnalyzer
|
|
9
|
+
* 5. Custom rules - Pattern-based policy overrides
|
|
10
|
+
* 6. Session grants - Check for existing approvals
|
|
11
|
+
* 7. Risk policy - Map risk level to action
|
|
12
|
+
* 8. Approval - Prompt user if needed
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const engine = new GuardEngine({ config: loadGuardConfig() });
|
|
17
|
+
* const result = await engine.evaluate({ command: 'rm -rf node_modules' });
|
|
18
|
+
*
|
|
19
|
+
* if (result.allowed) {
|
|
20
|
+
* // Execute the command
|
|
21
|
+
* } else {
|
|
22
|
+
* console.log(`Blocked: ${result.reason}`);
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import type { AnalysisResult } from '../analyzers/types.js';
|
|
27
|
+
import { SessionManager } from '../session/manager.js';
|
|
28
|
+
import { AuditLogger } from '../audit/logger.js';
|
|
29
|
+
import type { GuardConfig, GuardContext, GuardResult, GuardEngineOptions } from './types.js';
|
|
30
|
+
/**
|
|
31
|
+
* GuardEngine orchestrates command validation and approval.
|
|
32
|
+
*/
|
|
33
|
+
export declare class GuardEngine {
|
|
34
|
+
private readonly config;
|
|
35
|
+
private readonly analyzer;
|
|
36
|
+
private readonly sessionManager;
|
|
37
|
+
private readonly approvalHandler;
|
|
38
|
+
private readonly auditLogger;
|
|
39
|
+
private readonly compiledRules;
|
|
40
|
+
private readonly compiledDenylist;
|
|
41
|
+
private readonly fastPathPrefixes;
|
|
42
|
+
constructor(options: GuardEngineOptions);
|
|
43
|
+
/**
|
|
44
|
+
* Evaluate a command and determine if it should be allowed to execute.
|
|
45
|
+
*
|
|
46
|
+
* @param context - The command context to evaluate
|
|
47
|
+
* @returns Result indicating whether command is allowed and why
|
|
48
|
+
*/
|
|
49
|
+
evaluate(context: GuardContext): Promise<GuardResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Analyze a command without prompting (for preview/display).
|
|
52
|
+
*/
|
|
53
|
+
analyze(command: string): AnalysisResult;
|
|
54
|
+
/**
|
|
55
|
+
* Check if command matches fast path prefixes.
|
|
56
|
+
*/
|
|
57
|
+
private matchesFastPath;
|
|
58
|
+
/**
|
|
59
|
+
* Check if command is in the allowlist.
|
|
60
|
+
*/
|
|
61
|
+
private isAllowlisted;
|
|
62
|
+
/**
|
|
63
|
+
* Check if command matches any denylist pattern.
|
|
64
|
+
*/
|
|
65
|
+
private matchesDenylist;
|
|
66
|
+
/**
|
|
67
|
+
* Check if command matches any custom rule.
|
|
68
|
+
*/
|
|
69
|
+
private matchCustomRule;
|
|
70
|
+
/**
|
|
71
|
+
* Extract the primary command for session scoping.
|
|
72
|
+
*/
|
|
73
|
+
private extractCommandCategory;
|
|
74
|
+
/**
|
|
75
|
+
* Prompt user for approval.
|
|
76
|
+
*/
|
|
77
|
+
private promptApproval;
|
|
78
|
+
/**
|
|
79
|
+
* Create a GuardResult with consistent structure.
|
|
80
|
+
*/
|
|
81
|
+
private createResult;
|
|
82
|
+
/**
|
|
83
|
+
* Log a guard decision to the audit log.
|
|
84
|
+
*/
|
|
85
|
+
private logDecision;
|
|
86
|
+
/**
|
|
87
|
+
* Get session manager for external access (e.g., CLI commands).
|
|
88
|
+
*/
|
|
89
|
+
getSessionManager(): SessionManager;
|
|
90
|
+
/**
|
|
91
|
+
* Get audit logger for external access (e.g., CLI commands).
|
|
92
|
+
*/
|
|
93
|
+
getAuditLogger(): AuditLogger | null;
|
|
94
|
+
/**
|
|
95
|
+
* Get current configuration.
|
|
96
|
+
*/
|
|
97
|
+
getConfig(): GuardConfig;
|
|
98
|
+
/**
|
|
99
|
+
* Clean up resources.
|
|
100
|
+
*/
|
|
101
|
+
close(): void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create a GuardEngine with default configuration.
|
|
105
|
+
*/
|
|
106
|
+
export declare function createGuardEngine(options?: Partial<GuardEngineOptions>): GuardEngine;
|
|
107
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/guard/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAI7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAGjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IAGzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;gBAEnC,OAAO,EAAE,kBAAkB;IAmCvC;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IA0M3D;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAIxC;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;YACW,cAAc;IAkC5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,WAAW;IAyCzB;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAQpF"}
|