source: imaps-frontend/node_modules/ajv-keywords/dist/definitions/transform.js@ 79a0317

main
Last change on this file since 79a0317 was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 4 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 3.0 KB
Line 
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const codegen_1 = require("ajv/dist/compile/codegen");
4const transform = {
5 trimStart: (s) => s.trimStart(),
6 trimEnd: (s) => s.trimEnd(),
7 trimLeft: (s) => s.trimStart(),
8 trimRight: (s) => s.trimEnd(),
9 trim: (s) => s.trim(),
10 toLowerCase: (s) => s.toLowerCase(),
11 toUpperCase: (s) => s.toUpperCase(),
12 toEnumCase: (s, cfg) => (cfg === null || cfg === void 0 ? void 0 : cfg.hash[configKey(s)]) || s,
13};
14const getDef = Object.assign(_getDef, { transform });
15function _getDef() {
16 return {
17 keyword: "transform",
18 schemaType: "array",
19 before: "enum",
20 code(cxt) {
21 const { gen, data, schema, parentSchema, it } = cxt;
22 const { parentData, parentDataProperty } = it;
23 const tNames = schema;
24 if (!tNames.length)
25 return;
26 let cfg;
27 if (tNames.includes("toEnumCase")) {
28 const config = getEnumCaseCfg(parentSchema);
29 cfg = gen.scopeValue("obj", { ref: config, code: (0, codegen_1.stringify)(config) });
30 }
31 gen.if((0, codegen_1._) `typeof ${data} == "string" && ${parentData} !== undefined`, () => {
32 gen.assign(data, transformExpr(tNames.slice()));
33 gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, data);
34 });
35 function transformExpr(ts) {
36 if (!ts.length)
37 return data;
38 const t = ts.pop();
39 if (!(t in transform))
40 throw new Error(`transform: unknown transformation ${t}`);
41 const func = gen.scopeValue("func", {
42 ref: transform[t],
43 code: (0, codegen_1._) `require("ajv-keywords/dist/definitions/transform").transform${(0, codegen_1.getProperty)(t)}`,
44 });
45 const arg = transformExpr(ts);
46 return cfg && t === "toEnumCase" ? (0, codegen_1._) `${func}(${arg}, ${cfg})` : (0, codegen_1._) `${func}(${arg})`;
47 }
48 },
49 metaSchema: {
50 type: "array",
51 items: { type: "string", enum: Object.keys(transform) },
52 },
53 };
54}
55function getEnumCaseCfg(parentSchema) {
56 // build hash table to enum values
57 const cfg = { hash: {} };
58 // requires `enum` in the same schema as transform
59 if (!parentSchema.enum)
60 throw new Error('transform: "toEnumCase" requires "enum"');
61 for (const v of parentSchema.enum) {
62 if (typeof v !== "string")
63 continue;
64 const k = configKey(v);
65 // requires all `enum` values have unique keys
66 if (cfg.hash[k]) {
67 throw new Error('transform: "toEnumCase" requires all lowercased "enum" values to be unique');
68 }
69 cfg.hash[k] = v;
70 }
71 return cfg;
72}
73function configKey(s) {
74 return s.toLowerCase();
75}
76exports.default = getDef;
77module.exports = getDef;
78//# sourceMappingURL=transform.js.map
Note: See TracBrowser for help on using the repository browser.