1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const codegen_1 = require("ajv/dist/compile/codegen");
|
4 | const _util_1 = require("./_util");
|
5 | const regexpMetaSchema = {
|
6 | type: "object",
|
7 | properties: {
|
8 | pattern: { type: "string" },
|
9 | flags: { type: "string", nullable: true },
|
10 | },
|
11 | required: ["pattern"],
|
12 | additionalProperties: false,
|
13 | };
|
14 | const metaRegexp = /^\/(.*)\/([gimuy]*)$/;
|
15 | function getDef() {
|
16 | return {
|
17 | keyword: "regexp",
|
18 | type: "string",
|
19 | schemaType: ["string", "object"],
|
20 | code(cxt) {
|
21 | const { data, schema } = cxt;
|
22 | const regx = getRegExp(schema);
|
23 | cxt.pass((0, codegen_1._) `${regx}.test(${data})`);
|
24 | function getRegExp(sch) {
|
25 | if (typeof sch == "object")
|
26 | return (0, _util_1.usePattern)(cxt, sch.pattern, sch.flags);
|
27 | const rx = metaRegexp.exec(sch);
|
28 | if (rx)
|
29 | return (0, _util_1.usePattern)(cxt, rx[1], rx[2]);
|
30 | throw new Error("cannot parse string into RegExp");
|
31 | }
|
32 | },
|
33 | metaSchema: {
|
34 | anyOf: [{ type: "string" }, regexpMetaSchema],
|
35 | },
|
36 | };
|
37 | }
|
38 | exports.default = getDef;
|
39 | module.exports = getDef;
|
40 |
|
\ | No newline at end of file |