gateproof 0.2.2 → 0.5.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 +1396 -320
- package/dist/cloudflare/index.d.ts +4 -6
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +9 -43
- package/dist/cloudflare/index.js.map +1 -1
- package/dist/index.d.ts +263 -66
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1327 -204
- package/dist/index.js.map +1 -1
- package/package.json +18 -40
- package/dist/act.d.ts +0 -33
- package/dist/act.d.ts.map +0 -1
- package/dist/act.js +0 -25
- package/dist/act.js.map +0 -1
- package/dist/action-executors.d.ts +0 -22
- package/dist/action-executors.d.ts.map +0 -1
- package/dist/action-executors.js +0 -135
- package/dist/action-executors.js.map +0 -1
- package/dist/assert.d.ts +0 -39
- package/dist/assert.d.ts.map +0 -1
- package/dist/assert.js +0 -88
- package/dist/assert.js.map +0 -1
- package/dist/cli/gateproof.d.ts +0 -3
- package/dist/cli/gateproof.d.ts.map +0 -1
- package/dist/cli/gateproof.js +0 -472
- package/dist/cli/gateproof.js.map +0 -1
- package/dist/cloudflare/analytics.d.ts +0 -9
- package/dist/cloudflare/analytics.d.ts.map +0 -1
- package/dist/cloudflare/analytics.js +0 -98
- package/dist/cloudflare/analytics.js.map +0 -1
- package/dist/cloudflare/cli-stream.d.ts +0 -7
- package/dist/cloudflare/cli-stream.d.ts.map +0 -1
- package/dist/cloudflare/cli-stream.js +0 -85
- package/dist/cloudflare/cli-stream.js.map +0 -1
- package/dist/cloudflare/polling-backend.d.ts +0 -18
- package/dist/cloudflare/polling-backend.d.ts.map +0 -1
- package/dist/cloudflare/polling-backend.js +0 -53
- package/dist/cloudflare/polling-backend.js.map +0 -1
- package/dist/cloudflare/workers-logs.d.ts +0 -9
- package/dist/cloudflare/workers-logs.d.ts.map +0 -1
- package/dist/cloudflare/workers-logs.js +0 -51
- package/dist/cloudflare/workers-logs.js.map +0 -1
- package/dist/constants.d.ts +0 -11
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -11
- package/dist/constants.js.map +0 -1
- package/dist/http-backend.d.ts +0 -23
- package/dist/http-backend.d.ts.map +0 -1
- package/dist/http-backend.js +0 -124
- package/dist/http-backend.js.map +0 -1
- package/dist/observe.d.ts +0 -26
- package/dist/observe.d.ts.map +0 -1
- package/dist/observe.js +0 -84
- package/dist/observe.js.map +0 -1
- package/dist/prd/define-prd.d.ts +0 -7
- package/dist/prd/define-prd.d.ts.map +0 -1
- package/dist/prd/define-prd.js +0 -8
- package/dist/prd/define-prd.js.map +0 -1
- package/dist/prd/index.d.ts +0 -5
- package/dist/prd/index.d.ts.map +0 -1
- package/dist/prd/index.js +0 -4
- package/dist/prd/index.js.map +0 -1
- package/dist/prd/runner.d.ts +0 -22
- package/dist/prd/runner.d.ts.map +0 -1
- package/dist/prd/runner.js +0 -221
- package/dist/prd/runner.js.map +0 -1
- package/dist/prd/scope-check.d.ts +0 -28
- package/dist/prd/scope-check.d.ts.map +0 -1
- package/dist/prd/scope-check.js +0 -135
- package/dist/prd/scope-check.js.map +0 -1
- package/dist/prd/types.d.ts +0 -22
- package/dist/prd/types.d.ts.map +0 -1
- package/dist/prd/types.js +0 -2
- package/dist/prd/types.js.map +0 -1
- package/dist/provider.d.ts +0 -6
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -2
- package/dist/provider.js.map +0 -1
- package/dist/report.d.ts +0 -67
- package/dist/report.d.ts.map +0 -1
- package/dist/report.js +0 -51
- package/dist/report.js.map +0 -1
- package/dist/test-helpers.d.ts +0 -12
- package/dist/test-helpers.d.ts.map +0 -1
- package/dist/test-helpers.js +0 -33
- package/dist/test-helpers.js.map +0 -1
- package/dist/types.d.ts +0 -41
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -22
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -49
- package/dist/utils.js.map +0 -1
- package/dist/validation.d.ts +0 -6
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -38
- package/dist/validation.js.map +0 -1
package/dist/test-helpers.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Test utilities for gateproof
|
|
3
|
-
* Shared helpers used across test files
|
|
4
|
-
*/
|
|
5
|
-
import { Effect, Queue, Runtime } from "effect";
|
|
6
|
-
import { createObserveResource } from "./observe";
|
|
7
|
-
/**
|
|
8
|
-
* Creates a test observe resource from a queue
|
|
9
|
-
* Used in test files to simulate log streams
|
|
10
|
-
*/
|
|
11
|
-
export function createTestObserveResource(queue) {
|
|
12
|
-
const backend = {
|
|
13
|
-
start: () => Effect.succeed({
|
|
14
|
-
async *[Symbol.asyncIterator]() {
|
|
15
|
-
const runtime = Runtime.defaultRuntime;
|
|
16
|
-
while (true) {
|
|
17
|
-
try {
|
|
18
|
-
const log = await Runtime.runPromise(runtime)(Queue.take(queue).pipe(Effect.timeout("100 millis"), Effect.catchAll(() => Effect.succeed(null))));
|
|
19
|
-
if (log === null)
|
|
20
|
-
break;
|
|
21
|
-
yield log;
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}),
|
|
29
|
-
stop: () => Effect.void
|
|
30
|
-
};
|
|
31
|
-
return createObserveResource(backend);
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=test-helpers.js.map
|
package/dist/test-helpers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAgB,MAAM,WAAW,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAuB;IAC/D,MAAM,OAAO,GAAY;QACvB,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAqB;YAC9C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;gBACvC,OAAO,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACpB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAC5B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAkB,CAAC,CAAC,CAC1D,CACF,CAAC;wBACF,IAAI,GAAG,KAAK,IAAI;4BAAE,MAAM;wBACxB,MAAM,GAAG,CAAC;oBACZ,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;QACF,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;KACxB,CAAC;IACF,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export interface Log {
|
|
2
|
-
requestId?: string;
|
|
3
|
-
timestamp?: string;
|
|
4
|
-
stage?: string;
|
|
5
|
-
action?: string;
|
|
6
|
-
status?: "start" | "success" | "error" | "info";
|
|
7
|
-
error?: {
|
|
8
|
-
tag: string;
|
|
9
|
-
message: string;
|
|
10
|
-
stack?: string;
|
|
11
|
-
};
|
|
12
|
-
data?: Record<string, unknown>;
|
|
13
|
-
durationMs?: number;
|
|
14
|
-
[k: string]: unknown;
|
|
15
|
-
}
|
|
16
|
-
export interface LogFilter {
|
|
17
|
-
requestId?: string;
|
|
18
|
-
stage?: string;
|
|
19
|
-
action?: string;
|
|
20
|
-
status?: "start" | "success" | "error" | "info";
|
|
21
|
-
since?: Date;
|
|
22
|
-
until?: Date;
|
|
23
|
-
}
|
|
24
|
-
export type LogStream = AsyncIterable<Log>;
|
|
25
|
-
export interface GateResult {
|
|
26
|
-
status: "success" | "failed" | "timeout";
|
|
27
|
-
durationMs: number;
|
|
28
|
-
logs: Log[];
|
|
29
|
-
evidence: {
|
|
30
|
-
requestIds: string[];
|
|
31
|
-
stagesSeen: string[];
|
|
32
|
-
actionsSeen: string[];
|
|
33
|
-
errorTags: string[];
|
|
34
|
-
};
|
|
35
|
-
error?: Error;
|
|
36
|
-
}
|
|
37
|
-
export interface ObserveConfig {
|
|
38
|
-
backend: string;
|
|
39
|
-
[k: string]: unknown;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IAChD,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IAChD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;CACd;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for gateproof gates
|
|
3
|
-
* These utilities reduce boilerplate and standardize common patterns
|
|
4
|
-
*/
|
|
5
|
-
import { type GateSpec, type GateResult } from "./index";
|
|
6
|
-
import { type Backend } from "./observe";
|
|
7
|
-
/**
|
|
8
|
-
* Creates an empty backend that yields no logs
|
|
9
|
-
* Useful for gates that validate HTTP endpoints without log observation
|
|
10
|
-
*/
|
|
11
|
-
export declare function createEmptyBackend(): Backend;
|
|
12
|
-
/**
|
|
13
|
-
* Creates an observe resource from an empty backend
|
|
14
|
-
* Convenience wrapper for the common pattern
|
|
15
|
-
*/
|
|
16
|
-
export declare function createEmptyObserveResource(): import("./observe").ObserveResource;
|
|
17
|
-
/**
|
|
18
|
-
* Runs a gate with standardized error handling
|
|
19
|
-
* Returns a result object with consistent structure even on errors
|
|
20
|
-
*/
|
|
21
|
-
export declare function runGateWithErrorHandling(gate: GateSpec, name: string): Promise<GateResult>;
|
|
22
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAQ,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAGhE;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,wCAEzC;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,CAAC,CAcrB"}
|
package/dist/utils.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for gateproof gates
|
|
3
|
-
* These utilities reduce boilerplate and standardize common patterns
|
|
4
|
-
*/
|
|
5
|
-
import { Effect } from "effect";
|
|
6
|
-
import { Gate } from "./index";
|
|
7
|
-
import { createObserveResource } from "./observe";
|
|
8
|
-
/**
|
|
9
|
-
* Creates an empty backend that yields no logs
|
|
10
|
-
* Useful for gates that validate HTTP endpoints without log observation
|
|
11
|
-
*/
|
|
12
|
-
export function createEmptyBackend() {
|
|
13
|
-
return {
|
|
14
|
-
start: () => Effect.succeed({
|
|
15
|
-
async *[Symbol.asyncIterator]() {
|
|
16
|
-
return;
|
|
17
|
-
},
|
|
18
|
-
}),
|
|
19
|
-
stop: () => Effect.void,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Creates an observe resource from an empty backend
|
|
24
|
-
* Convenience wrapper for the common pattern
|
|
25
|
-
*/
|
|
26
|
-
export function createEmptyObserveResource() {
|
|
27
|
-
return createObserveResource(createEmptyBackend());
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Runs a gate with standardized error handling
|
|
31
|
-
* Returns a result object with consistent structure even on errors
|
|
32
|
-
*/
|
|
33
|
-
export async function runGateWithErrorHandling(gate, name) {
|
|
34
|
-
try {
|
|
35
|
-
return await Gate.run(gate);
|
|
36
|
-
}
|
|
37
|
-
catch (unknownError) {
|
|
38
|
-
const error = unknownError instanceof Error ? unknownError : new Error(String(unknownError));
|
|
39
|
-
console.error(` ❌ Error: ${error.message}`);
|
|
40
|
-
return {
|
|
41
|
-
status: "failed",
|
|
42
|
-
durationMs: 0,
|
|
43
|
-
logs: [],
|
|
44
|
-
evidence: { actionsSeen: [], errorTags: [], requestIds: [], stagesSeen: [] },
|
|
45
|
-
error: error instanceof Error ? error : new Error(String(error)),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,IAAI,EAAkC,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAgB,MAAM,WAAW,CAAC;AAGhE;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CACV,MAAM,CAAC,OAAO,CAAqB;YACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC3B,OAAO;YACT,CAAC;SACF,CAAC;QACF,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;KACxB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,qBAAqB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAc,EACd,IAAY;IAEZ,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,QAAiB;YACzB,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5E,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/validation.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
import { GateError } from "./index";
|
|
3
|
-
export declare function validateWorkerName(name: string): Effect.Effect<string, GateError>;
|
|
4
|
-
export declare function validateUrl(url: string): Effect.Effect<string, GateError>;
|
|
5
|
-
export declare function validateCommand(command: string): Effect.Effect<string, GateError>;
|
|
6
|
-
//# sourceMappingURL=validation.d.ts.map
|
package/dist/validation.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAQjF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAUzE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAgBjF"}
|
package/dist/validation.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
import { GateError } from "./index";
|
|
3
|
-
export function validateWorkerName(name) {
|
|
4
|
-
if (!name || typeof name !== "string") {
|
|
5
|
-
return Effect.fail(new GateError({ cause: new Error("Worker name must be a non-empty string") }));
|
|
6
|
-
}
|
|
7
|
-
if (!/^[a-z0-9_-]+$/i.test(name)) {
|
|
8
|
-
return Effect.fail(new GateError({ cause: new Error("Worker name contains invalid characters") }));
|
|
9
|
-
}
|
|
10
|
-
return Effect.succeed(name);
|
|
11
|
-
}
|
|
12
|
-
export function validateUrl(url) {
|
|
13
|
-
try {
|
|
14
|
-
const parsed = new URL(url);
|
|
15
|
-
if (!["http:", "https:"].includes(parsed.protocol)) {
|
|
16
|
-
return Effect.fail(new GateError({ cause: new Error("URL must use http or https protocol") }));
|
|
17
|
-
}
|
|
18
|
-
return Effect.succeed(url);
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return Effect.fail(new GateError({ cause: new Error("Invalid URL format") }));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export function validateCommand(command) {
|
|
25
|
-
if (!command || typeof command !== "string") {
|
|
26
|
-
return Effect.fail(new GateError({ cause: new Error("Command must be a non-empty string") }));
|
|
27
|
-
}
|
|
28
|
-
// Extremely strict shell safety: block common shell metacharacters and expansion patterns
|
|
29
|
-
const dangerous = /[;&|`$(){}[\]<>\\'"\n\r\t]/;
|
|
30
|
-
const envExpansion = /\$\w+|\$\{[^}]+\}/;
|
|
31
|
-
if (dangerous.test(command) || envExpansion.test(command)) {
|
|
32
|
-
return Effect.fail(new GateError({
|
|
33
|
-
cause: new Error("Command contains potentially dangerous shell characters")
|
|
34
|
-
}));
|
|
35
|
-
}
|
|
36
|
-
return Effect.succeed(command);
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=validation.js.map
|
package/dist/validation.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IACD,0FAA0F;IAC1F,MAAM,SAAS,GACb,4BAA4B,CAAC;IAC/B,MAAM,YAAY,GAAG,mBAAmB,CAAC;IACzC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,SAAS,CAAC;YACZ,KAAK,EAAE,IAAI,KAAK,CAAC,yDAAyD,CAAC;SAC5E,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
|