{"version":3,"sources":["jsdelivr-header.js","/npm/@salesflare/optimus@7.2.7/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,aAEA,MAAM,IAAM,QAAQ,cAEd,YAAc,QAAQ,iBA6BtB,qBAAwB,IAE1B,IAAK,EACD,OAGJ,GAAI,EAAa,yBAA0B,CACvC,MAAM,EAAyB,CAAE,OAAQ,EAAa,0BACtD,qBAAqB,GACrB,EAAa,yBAA2B,EAAuB,MACnE,CAEA,IAAI,EAAS,CAAC,EACd,GAAI,EAAa,EACb,EAAS,EAAa,MAErB,KAAI,EAAa,OAIlB,OAHA,EAAS,EAAa,MAI1B,CAEI,EAAO,OAAS,EAAO,IAAM,EAAO,MAAQ,MAAM,QAAQ,UAIvC,IAAnB,EAAa,EACb,EAAa,OAAS,CAClB,UAAW,MACX,MAAO,GAIX,EAAa,EAAI,CACb,UAAW,MACX,MAAO,GAEf,EAOE,iBAAoB,IAEtB,IAAK,EACD,OASJ,IAAI,EALA,EAAa,0BACb,iBAAiB,EAAa,0BAO9B,EADA,EAAa,EACK,EAAa,EAE1B,EAAa,OACA,EAAa,OAGb,EAMlB,EAAgB,QAChB,EAAgB,MAAQ,YAAY,UAAU,GAAiB,MACnE,EAGJ,QAAQ,UAAY,YAAY,UAOhC,QAAQ,IAAM,CAKV,qBAAuB,GAEZ,CAAC,EAAS,KAEb,qBAAqB,IAAI,EAAS,IAC3B,EAAE,UAOjB,iBAAmB,GAER,CAAC,EAAS,KAEb,iBAAiB,IAAI,EAAS,IACvB,EAAE","file":"/npm/@salesflare/optimus@7.2.7/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@salesflare/optimus@7.2.7/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// @ts-check\n'use strict';\n\nconst Get = require('lodash.get');\n\nconst Transformer = require('./transformer');\n\n/**\n * Hapi helper functions that exposes the transform function as\n * `.transform` (plain)\n * `.pre.optimusTransform` (hapi pre function helper)\n */\n\n/**\n * @typedef {Object} FilterObject\n * @property {String} condition\n * @property {Array.<{}>} rules\n */\n\n/**\n * @typedef {Object} Payload\n * @property {FilterObject} [q]\n * @property {FilterObject} [filter]\n * @property {FilterObject} [individual_record_filter]\n * @property {Number} [id]\n * @property {Array.<Number>} [ids]\n */\n\n/**\n * Returns a full rule object when only rules are passed\n *\n * @param {Payload} [filterObject]\n * @returns {void}\n */\nconst transformSimpleRules = (filterObject) => {\n\n    if (!filterObject) {\n        return;\n    }\n\n    if (filterObject.individual_record_filter) {\n        const individualFilterObject = { filter: filterObject.individual_record_filter };\n        transformSimpleRules(individualFilterObject);\n        filterObject.individual_record_filter = individualFilterObject.filter;\n    }\n\n    let filter = {};\n    if (filterObject.q) {\n        filter = filterObject.q;\n    }\n    else if (filterObject.filter) {\n        filter = filterObject.filter;\n    }\n    else {\n        return;\n    }\n\n    if (filter.rules || filter.id || filter.ids || !Array.isArray(filter) ) {\n        return;\n    }\n\n    if (filterObject.q === undefined) {\n        filterObject.filter = {\n            condition: 'AND',\n            rules: filter\n        };\n    }\n    else {\n        filterObject.q = {\n            condition: 'AND',\n            rules: filter\n        };\n    }\n};\n\n/**\n * @param {Payload | FilterObject} [filterObject]\n * @returns {void}\n */\nconst transformInPlace = (filterObject) => {\n\n    if (!filterObject) {\n        return;\n    }\n\n    // Handle the optional individual record filter first\n    if (filterObject.individual_record_filter) {\n        transformInPlace(filterObject.individual_record_filter);\n    }\n\n    // Make sure to work with the object that has the rules property\n    let transformObject;\n\n    if (filterObject.q) {\n        transformObject = filterObject.q;\n    }\n    else if (filterObject.filter) {\n        transformObject = filterObject.filter;\n    }\n    else {\n        transformObject = filterObject;\n    }\n\n    // We don't point the whole `filterObject` to the transformed version as this doesn't modify the original object.\n    // So if you pass 'payload' it should have the modified version on `request.payload`.\n    // This also means that if you transform more then rules alo\n    if (transformObject.rules) {\n        transformObject.rules = Transformer.transform(transformObject).rules;\n    }\n};\n\nexports.transform = Transformer.transform;\n\n/**\n * These helper functions make it easy to use in hapi 17+ pre handlers.\n * `pre: [Optimus.pre.transformInPlace('payload')]`\n * `pre: [Optimus.pre.transformSimpleRules('payload')]`\n */\nexports.pre = {\n    /**\n     * @param {String} whatToTransform any property from `request`\n     * @returns {function():Promise}\n     */\n    transformSimpleRules: (whatToTransform) => {\n\n        return (request, h) => {\n\n            transformSimpleRules(Get(request, whatToTransform));\n            return h.continue;\n        };\n    },\n    /**\n     * @param {String} whatToTransform any property from `request`\n     * @returns {function():Promise}\n     */\n    transformInPlace: (whatToTransform) => {\n\n        return (request, h) => {\n\n            transformInPlace(Get(request, whatToTransform));\n            return h.continue;\n        };\n    }\n};\n"]}