Socket
Socket
Sign inDemoInstall

@arcjet/analyze

Package Overview
Dependencies
Maintainers
2
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@arcjet/analyze - npm Package Compare versions

Comparing version 1.0.0-alpha.21 to 1.0.0-alpha.22

wasm/interfaces/arcjet-js-req-sensitive-information-identifier.d.ts

2

_virtual/arcjet_analyze_js_req.component.core2.js

@@ -27,3 +27,3 @@ // @generated by wasm2module - DO NOT EDIT

const wasmBase64 = "data:application/wasm;base64,AGFzbQEAAAABDAJgAn9/AGACf38BfwMHBgAAAQEBAQQFAXABBgYHJAcBMAAAATEAAQEyAAIBMwADATQABAE1AAUIJGltcG9ydHMBAApJBgsAIAAgAUEAEQAACwsAIAAgAUEBEQAACwsAIAAgAUECEQEACwsAIAAgAUEDEQEACwsAIAAgAUEEEQEACwsAIAAgAUEFEQEACwAvCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BzAuMjEwLjAA7gIEbmFtZQATEndpdC1jb21wb25lbnQ6c2hpbQHRAgYAI2luZGlyZWN0LWFyY2pldDpqcy1yZXEvbG9nZ2VyLWRlYnVnASNpbmRpcmVjdC1hcmNqZXQ6anMtcmVxL2xvZ2dlci1lcnJvcgI+aW5kaXJlY3QtYXJjamV0OmpzLXJlcS9lbWFpbC12YWxpZGF0b3Itb3ZlcnJpZGVzLWlzLWZyZWUtZW1haWwDRGluZGlyZWN0LWFyY2pldDpqcy1yZXEvZW1haWwtdmFsaWRhdG9yLW92ZXJyaWRlcy1pcy1kaXNwb3NhYmxlLWVtYWlsBD9pbmRpcmVjdC1hcmNqZXQ6anMtcmVxL2VtYWlsLXZhbGlkYXRvci1vdmVycmlkZXMtaGFzLW14LXJlY29yZHMFPWluZGlyZWN0LWFyY2pldDpqcy1yZXEvZW1haWwtdmFsaWRhdG9yLW92ZXJyaWRlcy1oYXMtZ3JhdmF0YXI=";
const wasmBase64 = "data:application/wasm;base64,AGFzbQEAAAABEgNgAn9/AGACf38Bf2ADf39/AAMIBwAAAQEBAQIEBQFwAQcHBygIATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABggkaW1wb3J0cwEAClcHCwAgACABQQARAAALCwAgACABQQERAAALCwAgACABQQIRAQALCwAgACABQQMRAQALCwAgACABQQQRAQALCwAgACABQQURAQALDQAgACABIAJBBhECAAsALwlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQENd2l0LWNvbXBvbmVudAcwLjIxMC4wAK4DBG5hbWUAExJ3aXQtY29tcG9uZW50OnNoaW0BkQMHACNpbmRpcmVjdC1hcmNqZXQ6anMtcmVxL2xvZ2dlci1kZWJ1ZwEjaW5kaXJlY3QtYXJjamV0OmpzLXJlcS9sb2dnZXItZXJyb3ICPmluZGlyZWN0LWFyY2pldDpqcy1yZXEvZW1haWwtdmFsaWRhdG9yLW92ZXJyaWRlcy1pcy1mcmVlLWVtYWlsA0RpbmRpcmVjdC1hcmNqZXQ6anMtcmVxL2VtYWlsLXZhbGlkYXRvci1vdmVycmlkZXMtaXMtZGlzcG9zYWJsZS1lbWFpbAQ/aW5kaXJlY3QtYXJjamV0OmpzLXJlcS9lbWFpbC12YWxpZGF0b3Itb3ZlcnJpZGVzLWhhcy1teC1yZWNvcmRzBT1pbmRpcmVjdC1hcmNqZXQ6anMtcmVxL2VtYWlsLXZhbGlkYXRvci1vdmVycmlkZXMtaGFzLWdyYXZhdGFyBj5pbmRpcmVjdC1hcmNqZXQ6anMtcmVxL3NlbnNpdGl2ZS1pbmZvcm1hdGlvbi1pZGVudGlmaWVyLWRldGVjdA==";
/**

@@ -30,0 +30,0 @@ * Returns a WebAssembly.Module for an Arcjet Wasm binary, decoded from a base64

@@ -27,3 +27,3 @@ // @generated by wasm2module - DO NOT EDIT

const wasmBase64 = "data:application/wasm;base64,AGFzbQEAAAABDAJgAn9/AGACf38BfwIuBwABMAAAAAExAAAAATIAAQABMwABAAE0AAEAATUAAQAIJGltcG9ydHMBcAEGBgkMAQBBAAsGAAECAwQFAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMTAuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw==";
const wasmBase64 = "data:application/wasm;base64,AGFzbQEAAAABEgNgAn9/AGACf38Bf2ADf39/AAIzCAABMAAAAAExAAAAATIAAQABMwABAAE0AAEAATUAAQABNgACAAgkaW1wb3J0cwFwAQcHCQ0BAEEACwcAAQIDBAUGAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMTAuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw==";
/**

@@ -30,0 +30,0 @@ * Returns a WebAssembly.Module for an Arcjet Wasm binary, decoded from a base64

import type { ArcjetLogger, ArcjetRequestDetails } from "@arcjet/protocol";
import type { EmailValidationConfig, BotDetectionResult, BotType, EmailValidationResult } from "./wasm/arcjet_analyze_js_req.component.js";
import type { EmailValidationConfig, BotDetectionResult, BotType, EmailValidationResult, DetectedSensitiveInfoEntity, SensitiveInfoEntities, SensitiveInfoEntity, SensitiveInfoResult } from "./wasm/arcjet_analyze_js_req.component.js";
import type { ArcjetJsReqSensitiveInformationIdentifier } from "./wasm/interfaces/arcjet-js-req-sensitive-information-identifier.js";
interface AnalyzeContext {

@@ -7,2 +8,3 @@ log: ArcjetLogger;

}
type DetectSensitiveInfoFunction = typeof ArcjetJsReqSensitiveInformationIdentifier.detect;
export { type EmailValidationConfig, type BotType,

@@ -21,3 +23,3 @@ /**

*/
type BotDetectionResult, };
type BotDetectionResult, type DetectedSensitiveInfoEntity, type SensitiveInfoEntity, type DetectSensitiveInfoFunction, };
/**

@@ -33,1 +35,2 @@ * Generate a fingerprint for the client. This is used to identify the client

export declare function detectBot(context: AnalyzeContext, headers: string, patterns_add: string, patterns_remove: string): Promise<BotDetectionResult>;
export declare function detectSensitiveInfo(context: AnalyzeContext, candidate: string, entities: SensitiveInfoEntities, contextWindowSize: number, detect?: DetectSensitiveInfoFunction): Promise<SensitiveInfoResult>;

@@ -25,4 +25,10 @@ import { instantiate } from './wasm/arcjet_analyze_js_req.component.js';

}
async function init(context) {
function noOpDetect() {
return [];
}
async function init(context, detectSensitiveInfo) {
const { log } = context;
if (typeof detectSensitiveInfo !== "function") {
detectSensitiveInfo = noOpDetect;
}
const coreImports = {

@@ -54,2 +60,5 @@ "arcjet:js-req/logger": {

},
"arcjet:js-req/sensitive-information-identifier": {
detect: detectSensitiveInfo,
},
};

@@ -109,3 +118,17 @@ try {

}
async function detectSensitiveInfo(context, candidate, entities, contextWindowSize, detect) {
const analyze = await init(context, detect);
if (typeof analyze !== "undefined") {
const skipCustomDetect = typeof detect !== "function";
return analyze.detectSensitiveInfo(candidate, {
entities,
contextWindowSize,
skipCustomDetect,
});
}
else {
throw new Error("SENSITIVE_INFO rule failed to run because Wasm is not supported in this environment.");
}
}
export { detectBot, generateFingerprint, isValidEmail };
export { detectBot, detectSensitiveInfo, generateFingerprint, isValidEmail };
import type { ArcjetLogger, ArcjetRequestDetails } from "@arcjet/protocol";
import * as core from "./wasm/arcjet_analyze_js_req.component.js";
import { instantiate } from "./wasm/arcjet_analyze_js_req.component.js";
import type {

@@ -10,3 +10,8 @@ ImportObject,

EmailValidationResult,
DetectedSensitiveInfoEntity,
SensitiveInfoEntities,
SensitiveInfoEntity,
SensitiveInfoResult,
} from "./wasm/arcjet_analyze_js_req.component.js";
import type { ArcjetJsReqSensitiveInformationIdentifier } from "./wasm/interfaces/arcjet-js-req-sensitive-information-identifier.js";

@@ -30,2 +35,5 @@ import componentCoreWasm from "./wasm/arcjet_analyze_js_req.component.core.wasm?module";

type DetectSensitiveInfoFunction =
typeof ArcjetJsReqSensitiveInformationIdentifier.detect;
async function moduleFromPath(path: string): Promise<WebAssembly.Module> {

@@ -45,5 +53,16 @@ if (path === "arcjet_analyze_js_req.component.core.wasm") {

async function init(context: AnalyzeContext) {
function noOpDetect(): SensitiveInfoEntity[] {
return [];
}
async function init(
context: AnalyzeContext,
detectSensitiveInfo?: DetectSensitiveInfoFunction,
) {
const { log } = context;
if (typeof detectSensitiveInfo !== "function") {
detectSensitiveInfo = noOpDetect;
}
const coreImports: ImportObject = {

@@ -75,6 +94,9 @@ "arcjet:js-req/logger": {

},
"arcjet:js-req/sensitive-information-identifier": {
detect: detectSensitiveInfo,
},
};
try {
return core.instantiate(moduleFromPath, coreImports);
return instantiate(moduleFromPath, coreImports);
} catch {

@@ -101,2 +123,5 @@ log.debug("WebAssembly is not supported in this runtime");

type BotDetectionResult,
type DetectedSensitiveInfoEntity,
type SensitiveInfoEntity,
type DetectSensitiveInfoFunction,
};

@@ -169,1 +194,23 @@

}
export async function detectSensitiveInfo(
context: AnalyzeContext,
candidate: string,
entities: SensitiveInfoEntities,
contextWindowSize: number,
detect?: DetectSensitiveInfoFunction,
): Promise<SensitiveInfoResult> {
const analyze = await init(context, detect);
if (typeof analyze !== "undefined") {
const skipCustomDetect = typeof detect !== "function";
return analyze.detectSensitiveInfo(candidate, {
entities,
contextWindowSize,
skipCustomDetect,
});
} else {
throw new Error(
"SENSITIVE_INFO rule failed to run because Wasm is not supported in this environment.",
);
}
}
import type { ArcjetLogger, ArcjetRequestDetails } from "@arcjet/protocol";
import type { EmailValidationConfig, BotDetectionResult, BotType, EmailValidationResult } from "./wasm/arcjet_analyze_js_req.component.js";
import type { EmailValidationConfig, BotDetectionResult, BotType, EmailValidationResult, DetectedSensitiveInfoEntity, SensitiveInfoEntities, SensitiveInfoEntity, SensitiveInfoResult } from "./wasm/arcjet_analyze_js_req.component.js";
import type { ArcjetJsReqSensitiveInformationIdentifier } from "./wasm/interfaces/arcjet-js-req-sensitive-information-identifier.js";
interface AnalyzeContext {

@@ -7,2 +8,3 @@ log: ArcjetLogger;

}
type DetectSensitiveInfoFunction = typeof ArcjetJsReqSensitiveInformationIdentifier.detect;
export { type EmailValidationConfig, type BotType,

@@ -21,3 +23,3 @@ /**

*/
type BotDetectionResult, };
type BotDetectionResult, type DetectedSensitiveInfoEntity, type SensitiveInfoEntity, type DetectSensitiveInfoFunction, };
/**

@@ -33,1 +35,2 @@ * Generate a fingerprint for the client. This is used to identify the client

export declare function detectBot(context: AnalyzeContext, headers: string, patterns_add: string, patterns_remove: string): Promise<BotDetectionResult>;
export declare function detectSensitiveInfo(context: AnalyzeContext, candidate: string, entities: SensitiveInfoEntities, contextWindowSize: number, detect?: DetectSensitiveInfoFunction): Promise<SensitiveInfoResult>;

@@ -37,4 +37,10 @@ import { instantiate } from './wasm/arcjet_analyze_js_req.component.js';

}
async function init(context) {
function noOpDetect() {
return [];
}
async function init(context, detectSensitiveInfo) {
const { log } = context;
if (typeof detectSensitiveInfo !== "function") {
detectSensitiveInfo = noOpDetect;
}
const coreImports = {

@@ -66,2 +72,5 @@ "arcjet:js-req/logger": {

},
"arcjet:js-req/sensitive-information-identifier": {
detect: detectSensitiveInfo,
},
};

@@ -121,3 +130,17 @@ try {

}
async function detectSensitiveInfo(context, candidate, entities, contextWindowSize, detect) {
const analyze = await init(context, detect);
if (typeof analyze !== "undefined") {
const skipCustomDetect = typeof detect !== "function";
return analyze.detectSensitiveInfo(candidate, {
entities,
contextWindowSize,
skipCustomDetect,
});
}
else {
throw new Error("SENSITIVE_INFO rule failed to run because Wasm is not supported in this environment.");
}
}
export { detectBot, generateFingerprint, isValidEmail };
export { detectBot, detectSensitiveInfo, generateFingerprint, isValidEmail };
import type { ArcjetLogger, ArcjetRequestDetails } from "@arcjet/protocol";
import * as core from "./wasm/arcjet_analyze_js_req.component.js";
import { instantiate } from "./wasm/arcjet_analyze_js_req.component.js";
import type {

@@ -10,3 +10,8 @@ ImportObject,

EmailValidationResult,
DetectedSensitiveInfoEntity,
SensitiveInfoEntities,
SensitiveInfoEntity,
SensitiveInfoResult,
} from "./wasm/arcjet_analyze_js_req.component.js";
import type { ArcjetJsReqSensitiveInformationIdentifier } from "./wasm/interfaces/arcjet-js-req-sensitive-information-identifier.js";

@@ -30,2 +35,5 @@ import { wasm as componentCoreWasm } from "./wasm/arcjet_analyze_js_req.component.core.wasm?js";

type DetectSensitiveInfoFunction =
typeof ArcjetJsReqSensitiveInformationIdentifier.detect;
// TODO: Do we actually need this wasmCache or does `import` cache correctly?

@@ -59,5 +67,16 @@ const wasmCache = new Map<string, WebAssembly.Module>();

async function init(context: AnalyzeContext) {
function noOpDetect(): SensitiveInfoEntity[] {
return [];
}
async function init(
context: AnalyzeContext,
detectSensitiveInfo?: DetectSensitiveInfoFunction,
) {
const { log } = context;
if (typeof detectSensitiveInfo !== "function") {
detectSensitiveInfo = noOpDetect;
}
const coreImports: ImportObject = {

@@ -89,6 +108,9 @@ "arcjet:js-req/logger": {

},
"arcjet:js-req/sensitive-information-identifier": {
detect: detectSensitiveInfo,
},
};
try {
return core.instantiate(moduleFromPath, coreImports);
return instantiate(moduleFromPath, coreImports);
} catch {

@@ -115,2 +137,5 @@ log.debug("WebAssembly is not supported in this runtime");

type BotDetectionResult,
type DetectedSensitiveInfoEntity,
type SensitiveInfoEntity,
type DetectSensitiveInfoFunction,
};

@@ -183,1 +208,24 @@

}
export async function detectSensitiveInfo(
context: AnalyzeContext,
candidate: string,
entities: SensitiveInfoEntities,
contextWindowSize: number,
detect?: DetectSensitiveInfoFunction,
): Promise<SensitiveInfoResult> {
const analyze = await init(context, detect);
if (typeof analyze !== "undefined") {
const skipCustomDetect = typeof detect !== "function";
return analyze.detectSensitiveInfo(candidate, {
entities,
contextWindowSize,
skipCustomDetect,
});
} else {
throw new Error(
"SENSITIVE_INFO rule failed to run because Wasm is not supported in this environment.",
);
}
}
{
"name": "@arcjet/analyze",
"version": "1.0.0-alpha.21",
"version": "1.0.0-alpha.22",
"description": "Arcjet local analysis engine",

@@ -54,11 +54,11 @@ "license": "Apache-2.0",

"dependencies": {
"@arcjet/protocol": "1.0.0-alpha.21"
"@arcjet/protocol": "1.0.0-alpha.22"
},
"devDependencies": {
"@arcjet/eslint-config": "1.0.0-alpha.21",
"@arcjet/rollup-config": "1.0.0-alpha.21",
"@arcjet/tsconfig": "1.0.0-alpha.21",
"@bytecodealliance/jco": "1.2.4",
"@arcjet/eslint-config": "1.0.0-alpha.22",
"@arcjet/rollup-config": "1.0.0-alpha.22",
"@arcjet/tsconfig": "1.0.0-alpha.22",
"@bytecodealliance/jco": "1.4.4",
"@jest/globals": "29.7.0",
"@rollup/wasm-node": "4.20.0",
"@rollup/wasm-node": "4.21.0",
"@types/node": "18.18.0",

@@ -65,0 +65,0 @@ "jest": "29.7.0",

@@ -0,1 +1,3 @@

import type { SensitiveInfoEntity } from './interfaces/arcjet-js-req-sensitive-information-identifier.js';
export { SensitiveInfoEntity };
/**

@@ -31,3 +33,3 @@ * # Variants

validity: EmailValidity,
blocked: string[],
blocked: Array<string>,
}

@@ -37,14 +39,40 @@ export interface EmailValidationConfig {

allowDomainLiteral: boolean,
blockedEmails: string[],
blockedEmails: Array<string>,
}
export type SensitiveInfoEntities = SensitiveInfoEntitiesAllow | SensitiveInfoEntitiesDeny;
export interface SensitiveInfoEntitiesAllow {
tag: 'allow',
val: Array<SensitiveInfoEntity>,
}
export interface SensitiveInfoEntitiesDeny {
tag: 'deny',
val: Array<SensitiveInfoEntity>,
}
export interface SensitiveInfoConfig {
entities: SensitiveInfoEntities,
contextWindowSize?: number,
skipCustomDetect: boolean,
}
export interface DetectedSensitiveInfoEntity {
start: number,
end: number,
identifiedType: SensitiveInfoEntity,
}
export interface SensitiveInfoResult {
allowed: Array<DetectedSensitiveInfoEntity>,
denied: Array<DetectedSensitiveInfoEntity>,
}
import { ArcjetJsReqEmailValidatorOverrides } from './interfaces/arcjet-js-req-email-validator-overrides.js';
import { ArcjetJsReqLogger } from './interfaces/arcjet-js-req-logger.js';
import { ArcjetJsReqSensitiveInformationIdentifier } from './interfaces/arcjet-js-req-sensitive-information-identifier.js';
export interface ImportObject {
'arcjet:js-req/email-validator-overrides': typeof ArcjetJsReqEmailValidatorOverrides,
'arcjet:js-req/logger': typeof ArcjetJsReqLogger,
'arcjet:js-req/sensitive-information-identifier': typeof ArcjetJsReqSensitiveInformationIdentifier,
}
export interface Root {
detectBot(headers: string, patternsAdd: string, patternsRemove: string): BotDetectionResult,
generateFingerprint(request: string, characteristics: string[]): string,
generateFingerprint(request: string, characteristics: Array<string>): string,
isValidEmail(candidate: string, options: EmailValidationConfig): EmailValidationResult,
detectSensitiveInfo(content: string, options: SensitiveInfoConfig): SensitiveInfoResult,
}

@@ -72,6 +100,11 @@

export function instantiate(
getCoreModule: (path: string) => Promise<WebAssembly.Module>,
getCoreModule: (path: string) => WebAssembly.Module,
imports: ImportObject,
instantiateCore?: (module: WebAssembly.Module, imports: Record<string, any>) => Promise<WebAssembly.Instance>
): Promise<Root>;
instantiateCore?: (module: WebAssembly.Module, imports: Record<string, any>) => WebAssembly.Instance
): Root;
export function instantiate(
getCoreModule: (path: string) => WebAssembly.Module | Promise<WebAssembly.Module>,
imports: ImportObject,
instantiateCore?: (module: WebAssembly.Module, imports: Record<string, any>) => WebAssembly.Instance | Promise<WebAssembly.Instance>
): Root | Promise<Root>;

@@ -1,46 +0,42 @@

function clampGuest(i, min, max) {
if (i < min || i > max) throw new TypeError(`must be between ${min} and ${max}`);
return i;
}
class ComponentError extends Error {
constructor (value) {
const enumerable = typeof value !== 'string';
super(enumerable ? `${String(value)} (see error.payload)` : value);
Object.defineProperty(this, 'payload', { value, enumerable });
function instantiate(getCoreModule, imports, instantiateCore = WebAssembly.instantiate) {
function clampGuest(i, min, max) {
if (i < min || i > max) throw new TypeError(`must be between ${min} and ${max}`);
return i;
}
}
let dv = new DataView(new ArrayBuffer());
const dataView = mem => dv.buffer === mem.buffer ? dv : dv = new DataView(mem.buffer);
const utf8Decoder = new TextDecoder();
const utf8Encoder = new TextEncoder();
let utf8EncodedLen = 0;
function utf8Encode(s, realloc, memory) {
if (typeof s !== 'string') throw new TypeError('expected a string');
if (s.length === 0) {
utf8EncodedLen = 0;
return 1;
class ComponentError extends Error {
constructor (value) {
const enumerable = typeof value !== 'string';
super(enumerable ? `${String(value)} (see error.payload)` : value);
Object.defineProperty(this, 'payload', { value, enumerable });
}
}
let allocLen = 0;
let ptr = 0;
let writtenTotal = 0;
while (s.length > 0) {
ptr = realloc(ptr, allocLen, 1, allocLen += s.length * 2);
const { read, written } = utf8Encoder.encodeInto(
s,
new Uint8Array(memory.buffer, ptr + writtenTotal, allocLen - writtenTotal),
);
writtenTotal += written;
s = s.slice(read);
let dv = new DataView(new ArrayBuffer());
const dataView = mem => dv.buffer === mem.buffer ? dv : dv = new DataView(mem.buffer);
function toUint32(val) {
return val >>> 0;
}
utf8EncodedLen = writtenTotal;
return ptr;
}
async function instantiate(getCoreModule, imports, instantiateCore = WebAssembly.instantiate) {
const utf8Decoder = new TextDecoder();
const utf8Encoder = new TextEncoder();
let utf8EncodedLen = 0;
function utf8Encode(s, realloc, memory) {
if (typeof s !== 'string') throw new TypeError('expected a string');
if (s.length === 0) {
utf8EncodedLen = 0;
return 1;
}
let buf = utf8Encoder.encode(s);
let ptr = realloc(0, 0, 1, buf.length);
new Uint8Array(memory.buffer).set(buf, ptr);
utf8EncodedLen = buf.length;
return ptr;
}
const module0 = getCoreModule('arcjet_analyze_js_req.component.core.wasm');

@@ -52,345 +48,661 @@ const module1 = getCoreModule('arcjet_analyze_js_req.component.core2.wasm');

const { debug, error } = imports['arcjet:js-req/logger'];
let exports0;
let exports1;
let memory0;
function trampoline0(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
debug(result0);
}
function trampoline1(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
error(result0);
}
function trampoline2(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = isFreeEmail(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
const { detect } = imports['arcjet:js-req/sensitive-information-identifier'];
let gen = (function* init () {
let exports0;
let exports1;
let memory0;
let realloc0;
function trampoline0(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
debug(result0);
}
function trampoline1(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
error(result0);
}
function trampoline2(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = isFreeEmail(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
}
case 'no': {
enum1 = 1;
break;
}
case 'unknown': {
enum1 = 2;
break;
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
}
}
case 'no': {
enum1 = 1;
break;
return enum1;
}
function trampoline3(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = isDisposableEmail(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
}
case 'no': {
enum1 = 1;
break;
}
case 'unknown': {
enum1 = 2;
break;
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
}
}
case 'unknown': {
enum1 = 2;
break;
return enum1;
}
function trampoline4(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = hasMxRecords(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
}
case 'no': {
enum1 = 1;
break;
}
case 'unknown': {
enum1 = 2;
break;
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
}
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
return enum1;
}
function trampoline5(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = hasGravatar(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
case 'no': {
enum1 = 1;
break;
}
case 'unknown': {
enum1 = 2;
break;
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
}
}
return enum1;
}
return enum1;
}
function trampoline3(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = isDisposableEmail(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
function trampoline6(arg0, arg1, arg2) {
var len1 = arg1;
var base1 = arg0;
var result1 = [];
for (let i = 0; i < len1; i++) {
const base = base1 + i * 8;
var ptr0 = dataView(memory0).getInt32(base + 0, true);
var len0 = dataView(memory0).getInt32(base + 4, true);
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
result1.push(result0);
}
case 'no': {
enum1 = 1;
break;
}
case 'unknown': {
enum1 = 2;
break;
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
const ret = detect(result1);
var vec5 = ret;
var len5 = vec5.length;
var result5 = realloc0(0, 0, 4, len5 * 16);
for (let i = 0; i < vec5.length; i++) {
const e = vec5[i];
const base = result5 + i * 16;var variant4 = e;
if (variant4 === null || variant4=== undefined) {
dataView(memory0).setInt8(base + 0, 0, true);
} else {
const e = variant4;
dataView(memory0).setInt8(base + 0, 1, true);
var variant3 = e;
switch (variant3.tag) {
case 'email': {
dataView(memory0).setInt8(base + 4, 0, true);
break;
}
case 'phone-number': {
dataView(memory0).setInt8(base + 4, 1, true);
break;
}
case 'ip-address': {
dataView(memory0).setInt8(base + 4, 2, true);
break;
}
case 'credit-card-number': {
dataView(memory0).setInt8(base + 4, 3, true);
break;
}
case 'custom': {
const e = variant3.val;
dataView(memory0).setInt8(base + 4, 4, true);
var ptr2 = utf8Encode(e, realloc0, memory0);
var len2 = utf8EncodedLen;
dataView(memory0).setInt32(base + 12, len2, true);
dataView(memory0).setInt32(base + 8, ptr2, true);
break;
}
default: {
throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant3.tag)}\` (received \`${variant3}\`) specified for \`SensitiveInfoEntity\``);
}
}
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
}
dataView(memory0).setInt32(arg2 + 4, len5, true);
dataView(memory0).setInt32(arg2 + 0, result5, true);
}
return enum1;
}
function trampoline4(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = hasMxRecords(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
let postReturn0;
let postReturn1;
let postReturn2;
let postReturn3;
Promise.all([module0, module1, module2]).catch(() => {});
({ exports: exports0 } = yield instantiateCore(yield module1));
({ exports: exports1 } = yield instantiateCore(yield module0, {
'arcjet:js-req/email-validator-overrides': {
'has-gravatar': exports0['5'],
'has-mx-records': exports0['4'],
'is-disposable-email': exports0['3'],
'is-free-email': exports0['2'],
},
'arcjet:js-req/logger': {
debug: exports0['0'],
error: exports0['1'],
},
'arcjet:js-req/sensitive-information-identifier': {
detect: exports0['6'],
},
}));
memory0 = exports1.memory;
realloc0 = exports1.cabi_realloc;
(yield instantiateCore(yield module2, {
'': {
$imports: exports0.$imports,
'0': trampoline0,
'1': trampoline1,
'2': trampoline2,
'3': trampoline3,
'4': trampoline4,
'5': trampoline5,
'6': trampoline6,
},
}));
postReturn0 = exports1['cabi_post_detect-bot'];
postReturn1 = exports1['cabi_post_generate-fingerprint'];
postReturn2 = exports1['cabi_post_is-valid-email'];
postReturn3 = exports1['cabi_post_detect-sensitive-info'];
function detectBot(arg0, arg1, arg2) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var ptr1 = utf8Encode(arg1, realloc0, memory0);
var len1 = utf8EncodedLen;
var ptr2 = utf8Encode(arg2, realloc0, memory0);
var len2 = utf8EncodedLen;
const ret = exports1['detect-bot'](ptr0, len0, ptr1, len1, ptr2, len2);
let variant5;
switch (dataView(memory0).getUint8(ret + 0, true)) {
case 0: {
let enum3;
switch (dataView(memory0).getUint8(ret + 4, true)) {
case 0: {
enum3 = 'unspecified';
break;
}
case 1: {
enum3 = 'not-analyzed';
break;
}
case 2: {
enum3 = 'automated';
break;
}
case 3: {
enum3 = 'likely-automated';
break;
}
case 4: {
enum3 = 'likely-not-a-bot';
break;
}
case 5: {
enum3 = 'verified-bot';
break;
}
default: {
throw new TypeError('invalid discriminant specified for BotType');
}
}
variant5= {
tag: 'ok',
val: {
botType: enum3,
botScore: clampGuest(dataView(memory0).getUint8(ret + 5, true), 0, 255),
}
};
break;
}
case 1: {
var ptr4 = dataView(memory0).getInt32(ret + 4, true);
var len4 = dataView(memory0).getInt32(ret + 8, true);
var result4 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr4, len4));
variant5= {
tag: 'err',
val: result4
};
break;
}
default: {
throw new TypeError('invalid variant discriminant for expected');
}
}
case 'no': {
enum1 = 1;
break;
const retVal = variant5;
postReturn0(ret);
if (typeof retVal === 'object' && retVal.tag === 'err') {
throw new ComponentError(retVal.val);
}
case 'unknown': {
enum1 = 2;
break;
return retVal.val;
}
function generateFingerprint(arg0, arg1) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var vec2 = arg1;
var len2 = vec2.length;
var result2 = realloc0(0, 0, 4, len2 * 8);
for (let i = 0; i < vec2.length; i++) {
const e = vec2[i];
const base = result2 + i * 8;var ptr1 = utf8Encode(e, realloc0, memory0);
var len1 = utf8EncodedLen;
dataView(memory0).setInt32(base + 4, len1, true);
dataView(memory0).setInt32(base + 0, ptr1, true);
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
}
const ret = exports1['generate-fingerprint'](ptr0, len0, result2, len2);
var ptr3 = dataView(memory0).getInt32(ret + 0, true);
var len3 = dataView(memory0).getInt32(ret + 4, true);
var result3 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr3, len3));
const retVal = result3;
postReturn1(ret);
return retVal;
}
return enum1;
}
function trampoline5(arg0, arg1) {
var ptr0 = arg0;
var len0 = arg1;
var result0 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr0, len0));
const ret = hasGravatar(result0);
var val1 = ret;
let enum1;
switch (val1) {
case 'yes': {
enum1 = 0;
break;
function isValidEmail(arg0, arg1) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var {requireTopLevelDomain: v1_0, allowDomainLiteral: v1_1, blockedEmails: v1_2 } = arg1;
var vec3 = v1_2;
var len3 = vec3.length;
var result3 = realloc0(0, 0, 4, len3 * 8);
for (let i = 0; i < vec3.length; i++) {
const e = vec3[i];
const base = result3 + i * 8;var ptr2 = utf8Encode(e, realloc0, memory0);
var len2 = utf8EncodedLen;
dataView(memory0).setInt32(base + 4, len2, true);
dataView(memory0).setInt32(base + 0, ptr2, true);
}
case 'no': {
enum1 = 1;
break;
const ret = exports1['is-valid-email'](ptr0, len0, v1_0 ? 1 : 0, v1_1 ? 1 : 0, result3, len3);
let variant8;
switch (dataView(memory0).getUint8(ret + 0, true)) {
case 0: {
let enum4;
switch (dataView(memory0).getUint8(ret + 4, true)) {
case 0: {
enum4 = 'valid';
break;
}
case 1: {
enum4 = 'invalid';
break;
}
default: {
throw new TypeError('invalid discriminant specified for EmailValidity');
}
}
var len6 = dataView(memory0).getInt32(ret + 12, true);
var base6 = dataView(memory0).getInt32(ret + 8, true);
var result6 = [];
for (let i = 0; i < len6; i++) {
const base = base6 + i * 8;
var ptr5 = dataView(memory0).getInt32(base + 0, true);
var len5 = dataView(memory0).getInt32(base + 4, true);
var result5 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr5, len5));
result6.push(result5);
}
variant8= {
tag: 'ok',
val: {
validity: enum4,
blocked: result6,
}
};
break;
}
case 1: {
var ptr7 = dataView(memory0).getInt32(ret + 4, true);
var len7 = dataView(memory0).getInt32(ret + 8, true);
var result7 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr7, len7));
variant8= {
tag: 'err',
val: result7
};
break;
}
default: {
throw new TypeError('invalid variant discriminant for expected');
}
}
case 'unknown': {
enum1 = 2;
break;
const retVal = variant8;
postReturn2(ret);
if (typeof retVal === 'object' && retVal.tag === 'err') {
throw new ComponentError(retVal.val);
}
default: {
if ((ret) instanceof Error) {
console.error(ret);
return retVal.val;
}
function detectSensitiveInfo(arg0, arg1) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var {entities: v1_0, contextWindowSize: v1_1, skipCustomDetect: v1_2 } = arg1;
var variant8 = v1_0;
let variant8_0;
let variant8_1;
let variant8_2;
switch (variant8.tag) {
case 'allow': {
const e = variant8.val;
var vec4 = e;
var len4 = vec4.length;
var result4 = realloc0(0, 0, 4, len4 * 12);
for (let i = 0; i < vec4.length; i++) {
const e = vec4[i];
const base = result4 + i * 12;var variant3 = e;
switch (variant3.tag) {
case 'email': {
dataView(memory0).setInt8(base + 0, 0, true);
break;
}
case 'phone-number': {
dataView(memory0).setInt8(base + 0, 1, true);
break;
}
case 'ip-address': {
dataView(memory0).setInt8(base + 0, 2, true);
break;
}
case 'credit-card-number': {
dataView(memory0).setInt8(base + 0, 3, true);
break;
}
case 'custom': {
const e = variant3.val;
dataView(memory0).setInt8(base + 0, 4, true);
var ptr2 = utf8Encode(e, realloc0, memory0);
var len2 = utf8EncodedLen;
dataView(memory0).setInt32(base + 8, len2, true);
dataView(memory0).setInt32(base + 4, ptr2, true);
break;
}
default: {
throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant3.tag)}\` (received \`${variant3}\`) specified for \`SensitiveInfoEntity\``);
}
}
}
variant8_0 = 0;
variant8_1 = result4;
variant8_2 = len4;
break;
}
throw new TypeError(`"${val1}" is not one of the cases of validator-response`);
case 'deny': {
const e = variant8.val;
var vec7 = e;
var len7 = vec7.length;
var result7 = realloc0(0, 0, 4, len7 * 12);
for (let i = 0; i < vec7.length; i++) {
const e = vec7[i];
const base = result7 + i * 12;var variant6 = e;
switch (variant6.tag) {
case 'email': {
dataView(memory0).setInt8(base + 0, 0, true);
break;
}
case 'phone-number': {
dataView(memory0).setInt8(base + 0, 1, true);
break;
}
case 'ip-address': {
dataView(memory0).setInt8(base + 0, 2, true);
break;
}
case 'credit-card-number': {
dataView(memory0).setInt8(base + 0, 3, true);
break;
}
case 'custom': {
const e = variant6.val;
dataView(memory0).setInt8(base + 0, 4, true);
var ptr5 = utf8Encode(e, realloc0, memory0);
var len5 = utf8EncodedLen;
dataView(memory0).setInt32(base + 8, len5, true);
dataView(memory0).setInt32(base + 4, ptr5, true);
break;
}
default: {
throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant6.tag)}\` (received \`${variant6}\`) specified for \`SensitiveInfoEntity\``);
}
}
}
variant8_0 = 1;
variant8_1 = result7;
variant8_2 = len7;
break;
}
default: {
throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant8.tag)}\` (received \`${variant8}\`) specified for \`SensitiveInfoEntities\``);
}
}
}
return enum1;
}
let realloc0;
let postReturn0;
let postReturn1;
let postReturn2;
Promise.all([module0, module1, module2]).catch(() => {});
({ exports: exports0 } = await instantiateCore(await module1));
({ exports: exports1 } = await instantiateCore(await module0, {
'arcjet:js-req/email-validator-overrides': {
'has-gravatar': exports0['5'],
'has-mx-records': exports0['4'],
'is-disposable-email': exports0['3'],
'is-free-email': exports0['2'],
},
'arcjet:js-req/logger': {
debug: exports0['0'],
error: exports0['1'],
},
}));
memory0 = exports1.memory;
(await instantiateCore(await module2, {
'': {
$imports: exports0.$imports,
'0': trampoline0,
'1': trampoline1,
'2': trampoline2,
'3': trampoline3,
'4': trampoline4,
'5': trampoline5,
},
}));
realloc0 = exports1.cabi_realloc;
postReturn0 = exports1['cabi_post_detect-bot'];
postReturn1 = exports1['cabi_post_generate-fingerprint'];
postReturn2 = exports1['cabi_post_is-valid-email'];
function detectBot(arg0, arg1, arg2) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var ptr1 = utf8Encode(arg1, realloc0, memory0);
var len1 = utf8EncodedLen;
var ptr2 = utf8Encode(arg2, realloc0, memory0);
var len2 = utf8EncodedLen;
const ret = exports1['detect-bot'](ptr0, len0, ptr1, len1, ptr2, len2);
let variant5;
switch (dataView(memory0).getUint8(ret + 0, true)) {
case 0: {
let enum3;
switch (dataView(memory0).getUint8(ret + 4, true)) {
var variant9 = v1_1;
let variant9_0;
let variant9_1;
if (variant9 === null || variant9=== undefined) {
variant9_0 = 0;
variant9_1 = 0;
} else {
const e = variant9;
variant9_0 = 1;
variant9_1 = toUint32(e);
}
const ret = exports1['detect-sensitive-info'](ptr0, len0, variant8_0, variant8_1, variant8_2, variant9_0, variant9_1, v1_2 ? 1 : 0);
var len12 = dataView(memory0).getInt32(ret + 4, true);
var base12 = dataView(memory0).getInt32(ret + 0, true);
var result12 = [];
for (let i = 0; i < len12; i++) {
const base = base12 + i * 20;
let variant11;
switch (dataView(memory0).getUint8(base + 8, true)) {
case 0: {
enum3 = 'unspecified';
variant11= {
tag: 'email',
};
break;
}
case 1: {
enum3 = 'not-analyzed';
variant11= {
tag: 'phone-number',
};
break;
}
case 2: {
enum3 = 'automated';
variant11= {
tag: 'ip-address',
};
break;
}
case 3: {
enum3 = 'likely-automated';
variant11= {
tag: 'credit-card-number',
};
break;
}
case 4: {
enum3 = 'likely-not-a-bot';
var ptr10 = dataView(memory0).getInt32(base + 12, true);
var len10 = dataView(memory0).getInt32(base + 16, true);
var result10 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr10, len10));
variant11= {
tag: 'custom',
val: result10
};
break;
}
case 5: {
enum3 = 'verified-bot';
break;
}
default: {
throw new TypeError('invalid discriminant specified for BotType');
throw new TypeError('invalid variant discriminant for SensitiveInfoEntity');
}
}
variant5= {
tag: 'ok',
val: {
botType: enum3,
botScore: clampGuest(dataView(memory0).getUint8(ret + 5, true), 0, 255),
}
};
break;
result12.push({
start: dataView(memory0).getInt32(base + 0, true) >>> 0,
end: dataView(memory0).getInt32(base + 4, true) >>> 0,
identifiedType: variant11,
});
}
case 1: {
var ptr4 = dataView(memory0).getInt32(ret + 4, true);
var len4 = dataView(memory0).getInt32(ret + 8, true);
var result4 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr4, len4));
variant5= {
tag: 'err',
val: result4
};
break;
}
default: {
throw new TypeError('invalid variant discriminant for expected');
}
}
postReturn0(ret);
if (variant5.tag === 'err') {
throw new ComponentError(variant5.val);
}
return variant5.val;
}
function generateFingerprint(arg0, arg1) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var vec2 = arg1;
var len2 = vec2.length;
var result2 = realloc0(0, 0, 4, len2 * 8);
for (let i = 0; i < vec2.length; i++) {
const e = vec2[i];
const base = result2 + i * 8;var ptr1 = utf8Encode(e, realloc0, memory0);
var len1 = utf8EncodedLen;
dataView(memory0).setInt32(base + 4, len1, true);
dataView(memory0).setInt32(base + 0, ptr1, true);
}
const ret = exports1['generate-fingerprint'](ptr0, len0, result2, len2);
var ptr3 = dataView(memory0).getInt32(ret + 0, true);
var len3 = dataView(memory0).getInt32(ret + 4, true);
var result3 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr3, len3));
postReturn1(ret);
return result3;
}
function isValidEmail(arg0, arg1) {
var ptr0 = utf8Encode(arg0, realloc0, memory0);
var len0 = utf8EncodedLen;
var {requireTopLevelDomain: v1_0, allowDomainLiteral: v1_1, blockedEmails: v1_2 } = arg1;
var vec3 = v1_2;
var len3 = vec3.length;
var result3 = realloc0(0, 0, 4, len3 * 8);
for (let i = 0; i < vec3.length; i++) {
const e = vec3[i];
const base = result3 + i * 8;var ptr2 = utf8Encode(e, realloc0, memory0);
var len2 = utf8EncodedLen;
dataView(memory0).setInt32(base + 4, len2, true);
dataView(memory0).setInt32(base + 0, ptr2, true);
}
const ret = exports1['is-valid-email'](ptr0, len0, v1_0 ? 1 : 0, v1_1 ? 1 : 0, result3, len3);
let variant8;
switch (dataView(memory0).getUint8(ret + 0, true)) {
case 0: {
let enum4;
switch (dataView(memory0).getUint8(ret + 4, true)) {
var len15 = dataView(memory0).getInt32(ret + 12, true);
var base15 = dataView(memory0).getInt32(ret + 8, true);
var result15 = [];
for (let i = 0; i < len15; i++) {
const base = base15 + i * 20;
let variant14;
switch (dataView(memory0).getUint8(base + 8, true)) {
case 0: {
enum4 = 'valid';
variant14= {
tag: 'email',
};
break;
}
case 1: {
enum4 = 'invalid';
variant14= {
tag: 'phone-number',
};
break;
}
case 2: {
variant14= {
tag: 'ip-address',
};
break;
}
case 3: {
variant14= {
tag: 'credit-card-number',
};
break;
}
case 4: {
var ptr13 = dataView(memory0).getInt32(base + 12, true);
var len13 = dataView(memory0).getInt32(base + 16, true);
var result13 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr13, len13));
variant14= {
tag: 'custom',
val: result13
};
break;
}
default: {
throw new TypeError('invalid discriminant specified for EmailValidity');
throw new TypeError('invalid variant discriminant for SensitiveInfoEntity');
}
}
var len6 = dataView(memory0).getInt32(ret + 12, true);
var base6 = dataView(memory0).getInt32(ret + 8, true);
var result6 = [];
for (let i = 0; i < len6; i++) {
const base = base6 + i * 8;
var ptr5 = dataView(memory0).getInt32(base + 0, true);
var len5 = dataView(memory0).getInt32(base + 4, true);
var result5 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr5, len5));
result6.push(result5);
}
variant8= {
tag: 'ok',
val: {
validity: enum4,
blocked: result6,
}
};
break;
result15.push({
start: dataView(memory0).getInt32(base + 0, true) >>> 0,
end: dataView(memory0).getInt32(base + 4, true) >>> 0,
identifiedType: variant14,
});
}
case 1: {
var ptr7 = dataView(memory0).getInt32(ret + 4, true);
var len7 = dataView(memory0).getInt32(ret + 8, true);
var result7 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr7, len7));
variant8= {
tag: 'err',
val: result7
};
break;
const retVal = {
allowed: result12,
denied: result15,
};
postReturn3(ret);
return retVal;
}
return { detectBot, detectSensitiveInfo, generateFingerprint, isValidEmail, };
})();
let promise, resolve, reject;
function runNext (value) {
try {
let done;
do {
({ value, done } = gen.next(value));
} while (!(value instanceof Promise) && !done);
if (done) {
if (resolve) resolve(value);
else return value;
}
default: {
throw new TypeError('invalid variant discriminant for expected');
}
if (!promise) promise = new Promise((_resolve, _reject) => (resolve = _resolve, reject = _reject));
value.then(nextVal => done ? resolve() : runNext(nextVal), reject);
}
postReturn2(ret);
if (variant8.tag === 'err') {
throw new ComponentError(variant8.val);
catch (e) {
if (reject) reject(e);
else throw e;
}
return variant8.val;
}
return { detectBot, generateFingerprint, isValidEmail, };
const maybeSyncReturn = runNext(null);
return promise || maybeSyncReturn;
}
export { instantiate };
import type { ArcjetLogger, ArcjetRequestDetails } from "@arcjet/protocol";
import type { EmailValidationConfig, BotDetectionResult, BotType, EmailValidationResult } from "./wasm/arcjet_analyze_js_req.component.js";
import type { EmailValidationConfig, BotDetectionResult, BotType, EmailValidationResult, DetectedSensitiveInfoEntity, SensitiveInfoEntities, SensitiveInfoEntity, SensitiveInfoResult } from "./wasm/arcjet_analyze_js_req.component.js";
import type { ArcjetJsReqSensitiveInformationIdentifier } from "./wasm/interfaces/arcjet-js-req-sensitive-information-identifier.js";
interface AnalyzeContext {

@@ -7,2 +8,3 @@ log: ArcjetLogger;

}
type DetectSensitiveInfoFunction = typeof ArcjetJsReqSensitiveInformationIdentifier.detect;
export { type EmailValidationConfig, type BotType,

@@ -21,3 +23,3 @@ /**

*/
type BotDetectionResult, };
type BotDetectionResult, type DetectedSensitiveInfoEntity, type SensitiveInfoEntity, type DetectSensitiveInfoFunction, };
/**

@@ -33,1 +35,2 @@ * Generate a fingerprint for the client. This is used to identify the client

export declare function detectBot(context: AnalyzeContext, headers: string, patterns_add: string, patterns_remove: string): Promise<BotDetectionResult>;
export declare function detectSensitiveInfo(context: AnalyzeContext, candidate: string, entities: SensitiveInfoEntities, contextWindowSize: number, detect?: DetectSensitiveInfoFunction): Promise<SensitiveInfoResult>;

@@ -25,4 +25,10 @@ import { instantiate } from './wasm/arcjet_analyze_js_req.component.js';

}
async function init(context) {
function noOpDetect() {
return [];
}
async function init(context, detectSensitiveInfo) {
const { log } = context;
if (typeof detectSensitiveInfo !== "function") {
detectSensitiveInfo = noOpDetect;
}
const coreImports = {

@@ -54,2 +60,5 @@ "arcjet:js-req/logger": {

},
"arcjet:js-req/sensitive-information-identifier": {
detect: detectSensitiveInfo,
},
};

@@ -109,3 +118,17 @@ try {

}
async function detectSensitiveInfo(context, candidate, entities, contextWindowSize, detect) {
const analyze = await init(context, detect);
if (typeof analyze !== "undefined") {
const skipCustomDetect = typeof detect !== "function";
return analyze.detectSensitiveInfo(candidate, {
entities,
contextWindowSize,
skipCustomDetect,
});
}
else {
throw new Error("SENSITIVE_INFO rule failed to run because Wasm is not supported in this environment.");
}
}
export { detectBot, generateFingerprint, isValidEmail };
export { detectBot, detectSensitiveInfo, generateFingerprint, isValidEmail };
import type { ArcjetLogger, ArcjetRequestDetails } from "@arcjet/protocol";
import * as core from "./wasm/arcjet_analyze_js_req.component.js";
import { instantiate } from "./wasm/arcjet_analyze_js_req.component.js";
import type {

@@ -10,3 +10,8 @@ ImportObject,

EmailValidationResult,
DetectedSensitiveInfoEntity,
SensitiveInfoEntities,
SensitiveInfoEntity,
SensitiveInfoResult,
} from "./wasm/arcjet_analyze_js_req.component.js";
import type { ArcjetJsReqSensitiveInformationIdentifier } from "./wasm/interfaces/arcjet-js-req-sensitive-information-identifier.js";

@@ -30,2 +35,5 @@ import componentCoreWasm from "./wasm/arcjet_analyze_js_req.component.core.wasm";

type DetectSensitiveInfoFunction =
typeof ArcjetJsReqSensitiveInformationIdentifier.detect;
async function moduleFromPath(path: string): Promise<WebAssembly.Module> {

@@ -45,5 +53,16 @@ if (path === "arcjet_analyze_js_req.component.core.wasm") {

async function init(context: AnalyzeContext) {
function noOpDetect(): SensitiveInfoEntity[] {
return [];
}
async function init(
context: AnalyzeContext,
detectSensitiveInfo?: DetectSensitiveInfoFunction,
) {
const { log } = context;
if (typeof detectSensitiveInfo !== "function") {
detectSensitiveInfo = noOpDetect;
}
const coreImports: ImportObject = {

@@ -75,6 +94,9 @@ "arcjet:js-req/logger": {

},
"arcjet:js-req/sensitive-information-identifier": {
detect: detectSensitiveInfo,
},
};
try {
return core.instantiate(moduleFromPath, coreImports);
return instantiate(moduleFromPath, coreImports);
} catch {

@@ -101,2 +123,5 @@ log.debug("WebAssembly is not supported in this runtime");

type BotDetectionResult,
type DetectedSensitiveInfoEntity,
type SensitiveInfoEntity,
type DetectSensitiveInfoFunction,
};

@@ -169,1 +194,24 @@

}
export async function detectSensitiveInfo(
context: AnalyzeContext,
candidate: string,
entities: SensitiveInfoEntities,
contextWindowSize: number,
detect?: DetectSensitiveInfoFunction,
): Promise<SensitiveInfoResult> {
const analyze = await init(context, detect);
if (typeof analyze !== "undefined") {
const skipCustomDetect = typeof detect !== "function";
return analyze.detectSensitiveInfo(candidate, {
entities,
contextWindowSize,
skipCustomDetect,
});
} else {
throw new Error(
"SENSITIVE_INFO rule failed to run because Wasm is not supported in this environment.",
);
}
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc