Comparing version 1.0.0-alpha.22 to 1.0.0-alpha.23
@@ -99,4 +99,5 @@ import type { ArcjetRule, ArcjetLogger } from "@arcjet/protocol"; | ||
type DetectSensitiveInfoEntities<T> = (tokens: string[]) => Array<ArcjetSensitiveInfoType | T | undefined>; | ||
type SensitiveInfoOptionsAllow<Detect extends DetectSensitiveInfoEntities<CustomEntities>, CustomEntities extends string> = { | ||
allow: Array<ArcjetSensitiveInfoType | Exclude<ReturnType<Detect>[number], undefined>>; | ||
type ValidEntities<Detect> = Array<undefined extends Detect ? ArcjetSensitiveInfoType : Detect extends DetectSensitiveInfoEntities<infer CustomEntities> ? ArcjetSensitiveInfoType | CustomEntities : never>; | ||
type SensitiveInfoOptionsAllow<Detect> = { | ||
allow: ValidEntities<Detect>; | ||
deny?: never; | ||
@@ -107,5 +108,5 @@ contextWindowSize?: number; | ||
}; | ||
type SensitiveInfoOptionsDeny<Detect extends DetectSensitiveInfoEntities<CustomEntities>, CustomEntities extends string> = { | ||
type SensitiveInfoOptionsDeny<Detect> = { | ||
allow?: never; | ||
deny: Array<ArcjetSensitiveInfoType | Exclude<ReturnType<Detect>[number], undefined>>; | ||
deny: ValidEntities<Detect>; | ||
contextWindowSize?: number; | ||
@@ -115,3 +116,3 @@ mode?: ArcjetMode; | ||
}; | ||
export type SensitiveInfoOptions<Detect extends DetectSensitiveInfoEntities<CustomEntities>, CustomEntities extends string> = SensitiveInfoOptionsAllow<Detect, CustomEntities> | SensitiveInfoOptionsDeny<Detect, CustomEntities>; | ||
export type SensitiveInfoOptions<Detect> = SensitiveInfoOptionsAllow<Detect> | SensitiveInfoOptionsDeny<Detect>; | ||
type PlainObject = { | ||
@@ -164,3 +165,3 @@ [key: string]: unknown; | ||
export declare function slidingWindow<const Characteristics extends readonly string[] = []>(options?: SlidingWindowRateLimitOptions<Characteristics>, ...additionalOptions: SlidingWindowRateLimitOptions<Characteristics>[]): Primitive<Simplify<CharacteristicProps<Characteristics>>>; | ||
export declare function sensitiveInfo<const Detect extends DetectSensitiveInfoEntities<CustomEntities>, const CustomEntities extends string>(options: SensitiveInfoOptions<Detect, CustomEntities>, ...additionalOptions: SensitiveInfoOptions<Detect, CustomEntities>[]): Primitive<{}>; | ||
export declare function sensitiveInfo<const Detect extends DetectSensitiveInfoEntities<CustomEntities> | undefined, const CustomEntities extends string>(options: SensitiveInfoOptions<Detect>, ...additionalOptions: SensitiveInfoOptions<Detect>[]): Primitive<{}>; | ||
export declare function validateEmail(options?: EmailOptions, ...additionalOptions: EmailOptions[]): Primitive<{ | ||
@@ -167,0 +168,0 @@ email: string; |
14
index.js
@@ -92,2 +92,14 @@ import { ArcjetRuleResult, ArcjetErrorReason, ArcjetSensitiveInfoReason, ArcjetEmailReason, ArcjetBotType, ArcjetBotReason, ArcjetErrorDecision, ArcjetReason, ArcjetDenyDecision } from '@arcjet/protocol'; | ||
} | ||
function toAnalyzeRequest(request) { | ||
const headers = {}; | ||
if (typeof request.headers !== "undefined") { | ||
for (const [key, value] of request.headers.entries()) { | ||
headers[key] = value; | ||
} | ||
} | ||
return { | ||
...request, | ||
headers, | ||
}; | ||
} | ||
function extraProps(details) { | ||
@@ -567,3 +579,3 @@ const extra = new Map(); | ||
}; | ||
const fingerprint = await analyze.generateFingerprint(baseContext, details); | ||
const fingerprint = await analyze.generateFingerprint(baseContext, toAnalyzeRequest(details)); | ||
log.debug("fingerprint (%s): %s", rt, fingerprint); | ||
@@ -570,0 +582,0 @@ log.timeEnd?.("fingerprint"); |
66
index.ts
@@ -220,2 +220,16 @@ import type { | ||
function toAnalyzeRequest(request: Partial<ArcjetRequestDetails>) { | ||
const headers: Record<string, string> = {}; | ||
if (typeof request.headers !== "undefined") { | ||
for (const [key, value] of request.headers.entries()) { | ||
headers[key] = value; | ||
} | ||
} | ||
return { | ||
...request, | ||
headers, | ||
}; | ||
} | ||
function extraProps<Props extends PlainObject>( | ||
@@ -326,9 +340,18 @@ details: ArcjetRequest<Props>, | ||
type SensitiveInfoOptionsAllow< | ||
Detect extends DetectSensitiveInfoEntities<CustomEntities>, | ||
CustomEntities extends string, | ||
> = { | ||
allow: Array< | ||
ArcjetSensitiveInfoType | Exclude<ReturnType<Detect>[number], undefined> | ||
>; | ||
type ValidEntities<Detect> = Array< | ||
// Via https://www.reddit.com/r/typescript/comments/17up72w/comment/k958cb0/ | ||
// Conditional types distribute over unions. If you have ((string | undefined) | ||
// extends undefined ? 1 : 0) it is evaluated separately for each member of | ||
// the union, then union-ed together again. The result is (string extends | ||
// undefined ? 1 : 0) | (undefined extends undefined ? 1 : 0) which simplifies | ||
// to 0 | 1 | ||
undefined extends Detect | ||
? ArcjetSensitiveInfoType | ||
: Detect extends DetectSensitiveInfoEntities<infer CustomEntities> | ||
? ArcjetSensitiveInfoType | CustomEntities | ||
: never | ||
>; | ||
type SensitiveInfoOptionsAllow<Detect> = { | ||
allow: ValidEntities<Detect>; | ||
deny?: never; | ||
@@ -340,10 +363,5 @@ contextWindowSize?: number; | ||
type SensitiveInfoOptionsDeny< | ||
Detect extends DetectSensitiveInfoEntities<CustomEntities>, | ||
CustomEntities extends string, | ||
> = { | ||
type SensitiveInfoOptionsDeny<Detect> = { | ||
allow?: never; | ||
deny: Array< | ||
ArcjetSensitiveInfoType | Exclude<ReturnType<Detect>[number], undefined> | ||
>; | ||
deny: ValidEntities<Detect>; | ||
contextWindowSize?: number; | ||
@@ -354,8 +372,5 @@ mode?: ArcjetMode; | ||
export type SensitiveInfoOptions< | ||
Detect extends DetectSensitiveInfoEntities<CustomEntities>, | ||
CustomEntities extends string, | ||
> = | ||
| SensitiveInfoOptionsAllow<Detect, CustomEntities> | ||
| SensitiveInfoOptionsDeny<Detect, CustomEntities>; | ||
export type SensitiveInfoOptions<Detect> = | ||
| SensitiveInfoOptionsAllow<Detect> | ||
| SensitiveInfoOptionsDeny<Detect>; | ||
@@ -645,7 +660,7 @@ const Priority = { | ||
export function sensitiveInfo< | ||
const Detect extends DetectSensitiveInfoEntities<CustomEntities>, | ||
const Detect extends DetectSensitiveInfoEntities<CustomEntities> | undefined, | ||
const CustomEntities extends string, | ||
>( | ||
options: SensitiveInfoOptions<Detect, CustomEntities>, | ||
...additionalOptions: SensitiveInfoOptions<Detect, CustomEntities>[] | ||
options: SensitiveInfoOptions<Detect>, | ||
...additionalOptions: SensitiveInfoOptions<Detect>[] | ||
): Primitive<{}> { | ||
@@ -1165,3 +1180,6 @@ const rules: ArcjetSensitiveInfoRule<{}>[] = []; | ||
const fingerprint = await analyze.generateFingerprint(baseContext, details); | ||
const fingerprint = await analyze.generateFingerprint( | ||
baseContext, | ||
toAnalyzeRequest(details), | ||
); | ||
log.debug("fingerprint (%s): %s", rt, fingerprint); | ||
@@ -1168,0 +1186,0 @@ log.timeEnd?.("fingerprint"); |
{ | ||
"name": "arcjet", | ||
"version": "1.0.0-alpha.22", | ||
"version": "1.0.0-alpha.23", | ||
"description": "Arcjet TypeScript and JavaScript SDK core", | ||
@@ -43,15 +43,15 @@ "license": "Apache-2.0", | ||
"dependencies": { | ||
"@arcjet/analyze": "1.0.0-alpha.22", | ||
"@arcjet/duration": "1.0.0-alpha.22", | ||
"@arcjet/headers": "1.0.0-alpha.22", | ||
"@arcjet/protocol": "1.0.0-alpha.22", | ||
"@arcjet/runtime": "1.0.0-alpha.22" | ||
"@arcjet/analyze": "1.0.0-alpha.23", | ||
"@arcjet/duration": "1.0.0-alpha.23", | ||
"@arcjet/headers": "1.0.0-alpha.23", | ||
"@arcjet/protocol": "1.0.0-alpha.23", | ||
"@arcjet/runtime": "1.0.0-alpha.23" | ||
}, | ||
"devDependencies": { | ||
"@arcjet/eslint-config": "1.0.0-alpha.22", | ||
"@arcjet/rollup-config": "1.0.0-alpha.22", | ||
"@arcjet/tsconfig": "1.0.0-alpha.22", | ||
"@arcjet/eslint-config": "1.0.0-alpha.23", | ||
"@arcjet/rollup-config": "1.0.0-alpha.23", | ||
"@arcjet/tsconfig": "1.0.0-alpha.23", | ||
"@edge-runtime/jest-environment": "3.0.2", | ||
"@jest/globals": "29.7.0", | ||
"@rollup/wasm-node": "4.21.0", | ||
"@rollup/wasm-node": "4.21.2", | ||
"@types/node": "18.18.0", | ||
@@ -58,0 +58,0 @@ "jest": "29.7.0", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
96661
2285
+ Added@arcjet/analyze@1.0.0-alpha.23(transitive)
+ Added@arcjet/duration@1.0.0-alpha.23(transitive)
+ Added@arcjet/headers@1.0.0-alpha.23(transitive)
+ Added@arcjet/protocol@1.0.0-alpha.23(transitive)
+ Added@arcjet/runtime@1.0.0-alpha.23(transitive)
- Removed@arcjet/analyze@1.0.0-alpha.22(transitive)
- Removed@arcjet/duration@1.0.0-alpha.22(transitive)
- Removed@arcjet/headers@1.0.0-alpha.22(transitive)
- Removed@arcjet/protocol@1.0.0-alpha.22(transitive)
- Removed@arcjet/runtime@1.0.0-alpha.22(transitive)