HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/node_modules/ajv-keywords/src/definitions/regexp.ts
import type {CodeKeywordDefinition, KeywordCxt, JSONSchemaType, Name} from "ajv"
import {_} from "ajv/dist/compile/codegen"
import {usePattern} from "./_util"

interface RegexpSchema {
  pattern: string
  flags?: string
}

const regexpMetaSchema: JSONSchemaType<RegexpSchema> = {
  type: "object",
  properties: {
    pattern: {type: "string"},
    flags: {type: "string", nullable: true},
  },
  required: ["pattern"],
  additionalProperties: false,
}

const metaRegexp = /^\/(.*)\/([gimuy]*)$/

export default function getDef(): CodeKeywordDefinition {
  return {
    keyword: "regexp",
    type: "string",
    schemaType: ["string", "object"],
    code(cxt: KeywordCxt) {
      const {data, schema} = cxt
      const regx = getRegExp(schema)
      cxt.pass(_`${regx}.test(${data})`)

      function getRegExp(sch: string | RegexpSchema): Name {
        if (typeof sch == "object") return usePattern(cxt, sch.pattern, sch.flags)
        const rx = metaRegexp.exec(sch)
        if (rx) return usePattern(cxt, rx[1], rx[2])
        throw new Error("cannot parse string into RegExp")
      }
    },
    metaSchema: {
      anyOf: [{type: "string"}, regexpMetaSchema],
    },
  }
}

module.exports = getDef