From 3d07783321d20dcbbc28354b0d27762c3318bc09 Mon Sep 17 00:00:00 2001 From: Laurent Renard Date: Wed, 17 Oct 2018 15:14:54 -0400 Subject: [PATCH] better packaging --- .gitignore | 3 + .idea/vcs.xml | 6 + .npmignore | 6 - dist/bundle/index.js | 6 +- dist/bundle/index.mjs | 2 +- dist/bundle/smart-table-filter.es.js | 57 +++--- dist/bundle/smart-table-filter.es.js.map | 2 +- dist/bundle/smart-table-filter.js | 229 +++++++++++------------ dist/bundle/smart-table-filter.js.map | 2 +- dist/src/index.js | 2 +- dist/src/index.ts | 12 +- package-lock.json | 160 ++++++++-------- package.json | 19 +- src/index.ts | 12 +- 14 files changed, 257 insertions(+), 261 deletions(-) create mode 100644 .idea/vcs.xml delete mode 100644 .npmignore diff --git a/.gitignore b/.gitignore index 5148e52..a080a5d 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ jspm_packages # Optional REPL history .node_repl_history + +.idea +.DS_Store diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 08ea180..0000000 --- a/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -.idea -.circleci -test -node_modules -rollup -src \ No newline at end of file diff --git a/dist/bundle/index.js b/dist/bundle/index.js index 975b777..deda7fb 100644 --- a/dist/bundle/index.js +++ b/dist/bundle/index.js @@ -2,10 +2,8 @@ Object.defineProperty(exports, '__esModule', { value: true }); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - var smartTableOperators = require('smart-table-operators'); -var pointer = _interopDefault(require('smart-table-json-pointer')); +var smartTableJsonPointer = require('smart-table-json-pointer'); var Type; (function (Type) { @@ -81,7 +79,7 @@ const normalizeClauses = (conf) => { const filter = (filter) => { const normalizedClauses = normalizeClauses(filter); const funcList = Object.keys(normalizedClauses).map(path => { - const getter = pointer(path).get; + const getter = smartTableJsonPointer.pointer(path).get; const clauses = normalizedClauses[path].map(predicate); return smartTableOperators.compose(getter, every(clauses)); }); diff --git a/dist/bundle/index.mjs b/dist/bundle/index.mjs index ce4dfd5..f924738 100644 --- a/dist/bundle/index.mjs +++ b/dist/bundle/index.mjs @@ -1,5 +1,5 @@ import { compose } from 'smart-table-operators'; -import pointer from 'smart-table-json-pointer'; +import { pointer } from 'smart-table-json-pointer'; var Type; (function (Type) { diff --git a/dist/bundle/smart-table-filter.es.js b/dist/bundle/smart-table-filter.es.js index 4db0d14..02da066 100644 --- a/dist/bundle/smart-table-filter.es.js +++ b/dist/bundle/smart-table-filter.es.js @@ -1,35 +1,32 @@ const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args)); -function pointer(path) { - const parts = path.split('.'); - - function partial(obj = {}, parts = []) { - const p = parts.shift(); - const current = obj[p]; - return (current === undefined || parts.length === 0) ? - current : partial(current, parts); - } - - function set(target, newTree) { - let current = target; - const [leaf, ...intermediate] = parts.reverse(); - for (const key of intermediate.reverse()) { - if (current[key] === undefined) { - current[key] = {}; - current = current[key]; - } - } - current[leaf] = Object.assign(current[leaf] || {}, newTree); - return target; - } - - return { - get(target) { - return partial(target, [...parts]); - }, - set - }; -} +const pointer = (path) => { + const parts = path.split('.'); + const partial = (obj = {}, parts = []) => { + const p = parts.shift(); + const current = obj[p]; + return (current === undefined || current === null || parts.length === 0) ? + current : partial(current, parts); + }; + const set = (target, newTree) => { + let current = target; + const [leaf, ...intermediate] = parts.reverse(); + for (const key of intermediate.reverse()) { + if (current[key] === undefined) { + current[key] = {}; + current = current[key]; + } + } + current[leaf] = Object.assign(current[leaf] || {}, newTree); + return target; + }; + return { + get(target) { + return partial(target, [...parts]); + }, + set + }; +}; var Type; (function (Type) { diff --git a/dist/bundle/smart-table-filter.es.js.map b/dist/bundle/smart-table-filter.es.js.map index bd70277..42c9f0b 100644 --- a/dist/bundle/smart-table-filter.es.js.map +++ b/dist/bundle/smart-table-filter.es.js.map @@ -1 +1 @@ -{"version":3,"file":"smart-table-filter.es.js","sources":["../../node_modules/smart-table-operators/index.js","../../node_modules/smart-table-json-pointer/dist/smart-table-json-pointer.es.js","../src/index.js"],"sourcesContent":["export const swap = f => (a, b) => f(b, a);\n\nexport const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args));\n\nexport const curry = (fn, arityLeft) => {\n\tconst arity = arityLeft || fn.length;\n\treturn (...args) => {\n\t\tconst argLength = args.length || 1;\n\t\tif (arity === argLength) {\n\t\t\treturn fn(...args);\n\t\t}\n\t\tconst func = (...moreArgs) => fn(...args, ...moreArgs);\n\t\treturn curry(func, arity - args.length);\n\t};\n};\n\nexport const apply = fn => (...args) => fn(...args);\n\nexport const tap = fn => arg => {\n\tfn(arg);\n\treturn arg;\n};\n","function pointer(path) {\n\tconst parts = path.split('.');\n\n\tfunction partial(obj = {}, parts = []) {\n\t\tconst p = parts.shift();\n\t\tconst current = obj[p];\n\t\treturn (current === undefined || parts.length === 0) ?\n\t\t\tcurrent : partial(current, parts);\n\t}\n\n\tfunction set(target, newTree) {\n\t\tlet current = target;\n\t\tconst [leaf, ...intermediate] = parts.reverse();\n\t\tfor (const key of intermediate.reverse()) {\n\t\t\tif (current[key] === undefined) {\n\t\t\t\tcurrent[key] = {};\n\t\t\t\tcurrent = current[key];\n\t\t\t}\n\t\t}\n\t\tcurrent[leaf] = Object.assign(current[leaf] || {}, newTree);\n\t\treturn target;\n\t}\n\n\treturn {\n\t\tget(target) {\n\t\t\treturn partial(target, [...parts]);\n\t\t},\n\t\tset\n\t};\n}\n\nexport default pointer;\n//# sourceMappingURL=smart-table-json-pointer.es.js.map\n","import { compose } from 'smart-table-operators';\nimport pointer from 'smart-table-json-pointer';\nvar Type;\n(function (Type) {\n Type[\"BOOLEAN\"] = \"boolean\";\n Type[\"NUMBER\"] = \"number\";\n Type[\"DATE\"] = \"date\";\n Type[\"STRING\"] = \"string\";\n})(Type || (Type = {}));\nconst typeExpression = (type) => {\n switch (type) {\n case Type.BOOLEAN:\n return Boolean;\n case Type.NUMBER:\n return Number;\n case Type.DATE:\n return val => new Date(val);\n case Type.STRING:\n return compose(String, val => val.toLowerCase());\n default:\n return val => val;\n }\n};\nexport var FilterOperator;\n(function (FilterOperator) {\n FilterOperator[\"INCLUDES\"] = \"includes\";\n FilterOperator[\"IS\"] = \"is\";\n FilterOperator[\"IS_NOT\"] = \"isNot\";\n FilterOperator[\"LOWER_THAN\"] = \"lt\";\n FilterOperator[\"GREATER_THAN\"] = \"gt\";\n FilterOperator[\"GREATER_THAN_OR_EQUAL\"] = \"gte\";\n FilterOperator[\"LOWER_THAN_OR_EQUAL\"] = \"lte\";\n FilterOperator[\"EQUALS\"] = \"equals\";\n FilterOperator[\"NOT_EQUALS\"] = \"notEquals\";\n FilterOperator[\"ANY_OF\"] = \"anyOf\";\n})(FilterOperator || (FilterOperator = {}));\nconst not = fn => input => !fn(input);\nconst is = value => input => Object.is(value, input);\nconst lt = value => input => input < value;\nconst gt = value => input => input > value;\nconst equals = value => input => value === input;\nconst includes = value => input => input.includes(value);\nconst anyOf = value => input => value.includes(input);\nconst operators = {\n [\"includes\" /* INCLUDES */]: includes,\n [\"is\" /* IS */]: is,\n [\"isNot\" /* IS_NOT */]: compose(is, not),\n [\"lt\" /* LOWER_THAN */]: lt,\n [\"gte\" /* GREATER_THAN_OR_EQUAL */]: compose(lt, not),\n [\"gt\" /* GREATER_THAN */]: gt,\n [\"lte\" /* LOWER_THAN_OR_EQUAL */]: compose(gt, not),\n [\"equals\" /* EQUALS */]: equals,\n [\"notEquals\" /* NOT_EQUALS */]: compose(equals, not),\n [\"anyOf\" /* ANY_OF */]: anyOf\n};\nconst every = fns => (...args) => fns.every(fn => fn(...args));\nexport const predicate = ({ value = '', operator = \"includes\" /* INCLUDES */, type }) => {\n const typeIt = typeExpression(type);\n const operateOnTyped = compose(typeIt, operators[operator]);\n const predicateFunc = operateOnTyped(value);\n return compose(typeIt, predicateFunc);\n};\n// Avoid useless filter lookup (improve perf)\nconst normalizeClauses = (conf) => {\n const output = {};\n const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path]));\n validPath.forEach(path => {\n const validClauses = conf[path].filter(c => c.value !== '');\n if (validClauses.length > 0) {\n output[path] = validClauses;\n }\n });\n return output;\n};\nexport const filter = (filter) => {\n const normalizedClauses = normalizeClauses(filter);\n const funcList = Object.keys(normalizedClauses).map(path => {\n const getter = pointer(path).get;\n const clauses = normalizedClauses[path].map(predicate);\n return compose(getter, every(clauses));\n });\n const filterPredicate = every(funcList);\n return array => array.filter(filterPredicate);\n};\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"smart-table-filter.es.js","sources":["../../node_modules/smart-table-operators/dist/src/index.js","../../node_modules/smart-table-json-pointer/dist/src/index.js","../src/index.js"],"sourcesContent":["export const swap = (f) => (a, b) => f(b, a);\nexport const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args));\nexport const curry = (fn, arityLeft) => {\n const arity = arityLeft || fn.length;\n return (...args) => {\n const argLength = args.length || 1;\n if (arity === argLength) {\n return fn(...args);\n }\n const func = (...moreArgs) => fn(...args, ...moreArgs);\n return curry(func, arity - args.length);\n };\n};\nexport const apply = (fn) => (...args) => fn(...args);\nexport const tap = (fn) => arg => {\n fn(arg);\n return arg;\n};\n","export const pointer = (path) => {\n const parts = path.split('.');\n const partial = (obj = {}, parts = []) => {\n const p = parts.shift();\n const current = obj[p];\n return (current === undefined || current === null || parts.length === 0) ?\n current : partial(current, parts);\n };\n const set = (target, newTree) => {\n let current = target;\n const [leaf, ...intermediate] = parts.reverse();\n for (const key of intermediate.reverse()) {\n if (current[key] === undefined) {\n current[key] = {};\n current = current[key];\n }\n }\n current[leaf] = Object.assign(current[leaf] || {}, newTree);\n return target;\n };\n return {\n get(target) {\n return partial(target, [...parts]);\n },\n set\n };\n};\n","import { compose } from 'smart-table-operators';\nimport { pointer } from 'smart-table-json-pointer';\nvar Type;\n(function (Type) {\n Type[\"BOOLEAN\"] = \"boolean\";\n Type[\"NUMBER\"] = \"number\";\n Type[\"DATE\"] = \"date\";\n Type[\"STRING\"] = \"string\";\n})(Type || (Type = {}));\nconst typeExpression = (type) => {\n switch (type) {\n case Type.BOOLEAN:\n return Boolean;\n case Type.NUMBER:\n return Number;\n case Type.DATE:\n return val => new Date(val);\n case Type.STRING:\n return compose(String, val => val.toLowerCase());\n default:\n return val => val;\n }\n};\nexport var FilterOperator;\n(function (FilterOperator) {\n FilterOperator[\"INCLUDES\"] = \"includes\";\n FilterOperator[\"IS\"] = \"is\";\n FilterOperator[\"IS_NOT\"] = \"isNot\";\n FilterOperator[\"LOWER_THAN\"] = \"lt\";\n FilterOperator[\"GREATER_THAN\"] = \"gt\";\n FilterOperator[\"GREATER_THAN_OR_EQUAL\"] = \"gte\";\n FilterOperator[\"LOWER_THAN_OR_EQUAL\"] = \"lte\";\n FilterOperator[\"EQUALS\"] = \"equals\";\n FilterOperator[\"NOT_EQUALS\"] = \"notEquals\";\n FilterOperator[\"ANY_OF\"] = \"anyOf\";\n})(FilterOperator || (FilterOperator = {}));\nconst not = fn => input => !fn(input);\nconst is = value => input => Object.is(value, input);\nconst lt = value => input => input < value;\nconst gt = value => input => input > value;\nconst equals = value => input => value === input;\nconst includes = value => input => input.includes(value);\nconst anyOf = value => input => value.includes(input);\nconst operators = {\n [\"includes\" /* INCLUDES */]: includes,\n [\"is\" /* IS */]: is,\n [\"isNot\" /* IS_NOT */]: compose(is, not),\n [\"lt\" /* LOWER_THAN */]: lt,\n [\"gte\" /* GREATER_THAN_OR_EQUAL */]: compose(lt, not),\n [\"gt\" /* GREATER_THAN */]: gt,\n [\"lte\" /* LOWER_THAN_OR_EQUAL */]: compose(gt, not),\n [\"equals\" /* EQUALS */]: equals,\n [\"notEquals\" /* NOT_EQUALS */]: compose(equals, not),\n [\"anyOf\" /* ANY_OF */]: anyOf\n};\nconst every = fns => (...args) => fns.every(fn => fn(...args));\nexport const predicate = ({ value = '', operator = \"includes\" /* INCLUDES */, type }) => {\n const typeIt = typeExpression(type);\n const operateOnTyped = compose(typeIt, operators[operator]);\n const predicateFunc = operateOnTyped(value);\n return compose(typeIt, predicateFunc);\n};\n// Avoid useless filter lookup (improve perf)\nconst normalizeClauses = (conf) => {\n const output = {};\n const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path]));\n validPath.forEach(path => {\n const validClauses = conf[path].filter(c => c.value !== '');\n if (validClauses.length > 0) {\n output[path] = validClauses;\n }\n });\n return output;\n};\nexport const filter = (filter) => {\n const normalizedClauses = normalizeClauses(filter);\n const funcList = Object.keys(normalizedClauses).map(path => {\n const getter = pointer(path).get;\n const clauses = normalizedClauses[path].map(predicate);\n return compose(getter, every(clauses));\n });\n const filterPredicate = every(funcList);\n return array => array.filter(filterPredicate);\n};\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/bundle/smart-table-filter.js b/dist/bundle/smart-table-filter.js index 466fde8..6f5dcbe 100644 --- a/dist/bundle/smart-table-filter.js +++ b/dist/bundle/smart-table-filter.js @@ -1,125 +1,122 @@ var smartTableSort = (function (exports) { - 'use strict'; + 'use strict'; - const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args)); + const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args)); - function pointer(path) { - const parts = path.split('.'); + const pointer = (path) => { + const parts = path.split('.'); + const partial = (obj = {}, parts = []) => { + const p = parts.shift(); + const current = obj[p]; + return (current === undefined || current === null || parts.length === 0) ? + current : partial(current, parts); + }; + const set = (target, newTree) => { + let current = target; + const [leaf, ...intermediate] = parts.reverse(); + for (const key of intermediate.reverse()) { + if (current[key] === undefined) { + current[key] = {}; + current = current[key]; + } + } + current[leaf] = Object.assign(current[leaf] || {}, newTree); + return target; + }; + return { + get(target) { + return partial(target, [...parts]); + }, + set + }; + }; - function partial(obj = {}, parts = []) { - const p = parts.shift(); - const current = obj[p]; - return (current === undefined || parts.length === 0) ? - current : partial(current, parts); - } + var Type; + (function (Type) { + Type["BOOLEAN"] = "boolean"; + Type["NUMBER"] = "number"; + Type["DATE"] = "date"; + Type["STRING"] = "string"; + })(Type || (Type = {})); + const typeExpression = (type) => { + switch (type) { + case Type.BOOLEAN: + return Boolean; + case Type.NUMBER: + return Number; + case Type.DATE: + return val => new Date(val); + case Type.STRING: + return compose(String, val => val.toLowerCase()); + default: + return val => val; + } + }; + (function (FilterOperator) { + FilterOperator["INCLUDES"] = "includes"; + FilterOperator["IS"] = "is"; + FilterOperator["IS_NOT"] = "isNot"; + FilterOperator["LOWER_THAN"] = "lt"; + FilterOperator["GREATER_THAN"] = "gt"; + FilterOperator["GREATER_THAN_OR_EQUAL"] = "gte"; + FilterOperator["LOWER_THAN_OR_EQUAL"] = "lte"; + FilterOperator["EQUALS"] = "equals"; + FilterOperator["NOT_EQUALS"] = "notEquals"; + FilterOperator["ANY_OF"] = "anyOf"; + })(exports.FilterOperator || (exports.FilterOperator = {})); + const not = fn => input => !fn(input); + const is = value => input => Object.is(value, input); + const lt = value => input => input < value; + const gt = value => input => input > value; + const equals = value => input => value === input; + const includes = value => input => input.includes(value); + const anyOf = value => input => value.includes(input); + const operators = { + ["includes" /* INCLUDES */]: includes, + ["is" /* IS */]: is, + ["isNot" /* IS_NOT */]: compose(is, not), + ["lt" /* LOWER_THAN */]: lt, + ["gte" /* GREATER_THAN_OR_EQUAL */]: compose(lt, not), + ["gt" /* GREATER_THAN */]: gt, + ["lte" /* LOWER_THAN_OR_EQUAL */]: compose(gt, not), + ["equals" /* EQUALS */]: equals, + ["notEquals" /* NOT_EQUALS */]: compose(equals, not), + ["anyOf" /* ANY_OF */]: anyOf + }; + const every = fns => (...args) => fns.every(fn => fn(...args)); + const predicate = ({ value = '', operator = "includes" /* INCLUDES */, type }) => { + const typeIt = typeExpression(type); + const operateOnTyped = compose(typeIt, operators[operator]); + const predicateFunc = operateOnTyped(value); + return compose(typeIt, predicateFunc); + }; + // Avoid useless filter lookup (improve perf) + const normalizeClauses = (conf) => { + const output = {}; + const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path])); + validPath.forEach(path => { + const validClauses = conf[path].filter(c => c.value !== ''); + if (validClauses.length > 0) { + output[path] = validClauses; + } + }); + return output; + }; + const filter = (filter) => { + const normalizedClauses = normalizeClauses(filter); + const funcList = Object.keys(normalizedClauses).map(path => { + const getter = pointer(path).get; + const clauses = normalizedClauses[path].map(predicate); + return compose(getter, every(clauses)); + }); + const filterPredicate = every(funcList); + return array => array.filter(filterPredicate); + }; - function set(target, newTree) { - let current = target; - const [leaf, ...intermediate] = parts.reverse(); - for (const key of intermediate.reverse()) { - if (current[key] === undefined) { - current[key] = {}; - current = current[key]; - } - } - current[leaf] = Object.assign(current[leaf] || {}, newTree); - return target; - } + exports.predicate = predicate; + exports.filter = filter; - return { - get(target) { - return partial(target, [...parts]); - }, - set - }; - } - - var Type; - (function (Type) { - Type["BOOLEAN"] = "boolean"; - Type["NUMBER"] = "number"; - Type["DATE"] = "date"; - Type["STRING"] = "string"; - })(Type || (Type = {})); - const typeExpression = (type) => { - switch (type) { - case Type.BOOLEAN: - return Boolean; - case Type.NUMBER: - return Number; - case Type.DATE: - return val => new Date(val); - case Type.STRING: - return compose(String, val => val.toLowerCase()); - default: - return val => val; - } - }; - (function (FilterOperator) { - FilterOperator["INCLUDES"] = "includes"; - FilterOperator["IS"] = "is"; - FilterOperator["IS_NOT"] = "isNot"; - FilterOperator["LOWER_THAN"] = "lt"; - FilterOperator["GREATER_THAN"] = "gt"; - FilterOperator["GREATER_THAN_OR_EQUAL"] = "gte"; - FilterOperator["LOWER_THAN_OR_EQUAL"] = "lte"; - FilterOperator["EQUALS"] = "equals"; - FilterOperator["NOT_EQUALS"] = "notEquals"; - FilterOperator["ANY_OF"] = "anyOf"; - })(exports.FilterOperator || (exports.FilterOperator = {})); - const not = fn => input => !fn(input); - const is = value => input => Object.is(value, input); - const lt = value => input => input < value; - const gt = value => input => input > value; - const equals = value => input => value === input; - const includes = value => input => input.includes(value); - const anyOf = value => input => value.includes(input); - const operators = { - ["includes" /* INCLUDES */]: includes, - ["is" /* IS */]: is, - ["isNot" /* IS_NOT */]: compose(is, not), - ["lt" /* LOWER_THAN */]: lt, - ["gte" /* GREATER_THAN_OR_EQUAL */]: compose(lt, not), - ["gt" /* GREATER_THAN */]: gt, - ["lte" /* LOWER_THAN_OR_EQUAL */]: compose(gt, not), - ["equals" /* EQUALS */]: equals, - ["notEquals" /* NOT_EQUALS */]: compose(equals, not), - ["anyOf" /* ANY_OF */]: anyOf - }; - const every = fns => (...args) => fns.every(fn => fn(...args)); - const predicate = ({ value = '', operator = "includes" /* INCLUDES */, type }) => { - const typeIt = typeExpression(type); - const operateOnTyped = compose(typeIt, operators[operator]); - const predicateFunc = operateOnTyped(value); - return compose(typeIt, predicateFunc); - }; - // Avoid useless filter lookup (improve perf) - const normalizeClauses = (conf) => { - const output = {}; - const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path])); - validPath.forEach(path => { - const validClauses = conf[path].filter(c => c.value !== ''); - if (validClauses.length > 0) { - output[path] = validClauses; - } - }); - return output; - }; - const filter = (filter) => { - const normalizedClauses = normalizeClauses(filter); - const funcList = Object.keys(normalizedClauses).map(path => { - const getter = pointer(path).get; - const clauses = normalizedClauses[path].map(predicate); - return compose(getter, every(clauses)); - }); - const filterPredicate = every(funcList); - return array => array.filter(filterPredicate); - }; - - exports.predicate = predicate; - exports.filter = filter; - - return exports; + return exports; }({})); //# sourceMappingURL=smart-table-filter.js.map diff --git a/dist/bundle/smart-table-filter.js.map b/dist/bundle/smart-table-filter.js.map index 41e0c51..f24bc8b 100644 --- a/dist/bundle/smart-table-filter.js.map +++ b/dist/bundle/smart-table-filter.js.map @@ -1 +1 @@ -{"version":3,"file":"smart-table-filter.js","sources":["../../node_modules/smart-table-operators/index.js","../../node_modules/smart-table-json-pointer/dist/smart-table-json-pointer.es.js","../src/index.js"],"sourcesContent":["export const swap = f => (a, b) => f(b, a);\n\nexport const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args));\n\nexport const curry = (fn, arityLeft) => {\n\tconst arity = arityLeft || fn.length;\n\treturn (...args) => {\n\t\tconst argLength = args.length || 1;\n\t\tif (arity === argLength) {\n\t\t\treturn fn(...args);\n\t\t}\n\t\tconst func = (...moreArgs) => fn(...args, ...moreArgs);\n\t\treturn curry(func, arity - args.length);\n\t};\n};\n\nexport const apply = fn => (...args) => fn(...args);\n\nexport const tap = fn => arg => {\n\tfn(arg);\n\treturn arg;\n};\n","function pointer(path) {\n\tconst parts = path.split('.');\n\n\tfunction partial(obj = {}, parts = []) {\n\t\tconst p = parts.shift();\n\t\tconst current = obj[p];\n\t\treturn (current === undefined || parts.length === 0) ?\n\t\t\tcurrent : partial(current, parts);\n\t}\n\n\tfunction set(target, newTree) {\n\t\tlet current = target;\n\t\tconst [leaf, ...intermediate] = parts.reverse();\n\t\tfor (const key of intermediate.reverse()) {\n\t\t\tif (current[key] === undefined) {\n\t\t\t\tcurrent[key] = {};\n\t\t\t\tcurrent = current[key];\n\t\t\t}\n\t\t}\n\t\tcurrent[leaf] = Object.assign(current[leaf] || {}, newTree);\n\t\treturn target;\n\t}\n\n\treturn {\n\t\tget(target) {\n\t\t\treturn partial(target, [...parts]);\n\t\t},\n\t\tset\n\t};\n}\n\nexport default pointer;\n//# sourceMappingURL=smart-table-json-pointer.es.js.map\n","import { compose } from 'smart-table-operators';\nimport pointer from 'smart-table-json-pointer';\nvar Type;\n(function (Type) {\n Type[\"BOOLEAN\"] = \"boolean\";\n Type[\"NUMBER\"] = \"number\";\n Type[\"DATE\"] = \"date\";\n Type[\"STRING\"] = \"string\";\n})(Type || (Type = {}));\nconst typeExpression = (type) => {\n switch (type) {\n case Type.BOOLEAN:\n return Boolean;\n case Type.NUMBER:\n return Number;\n case Type.DATE:\n return val => new Date(val);\n case Type.STRING:\n return compose(String, val => val.toLowerCase());\n default:\n return val => val;\n }\n};\nexport var FilterOperator;\n(function (FilterOperator) {\n FilterOperator[\"INCLUDES\"] = \"includes\";\n FilterOperator[\"IS\"] = \"is\";\n FilterOperator[\"IS_NOT\"] = \"isNot\";\n FilterOperator[\"LOWER_THAN\"] = \"lt\";\n FilterOperator[\"GREATER_THAN\"] = \"gt\";\n FilterOperator[\"GREATER_THAN_OR_EQUAL\"] = \"gte\";\n FilterOperator[\"LOWER_THAN_OR_EQUAL\"] = \"lte\";\n FilterOperator[\"EQUALS\"] = \"equals\";\n FilterOperator[\"NOT_EQUALS\"] = \"notEquals\";\n FilterOperator[\"ANY_OF\"] = \"anyOf\";\n})(FilterOperator || (FilterOperator = {}));\nconst not = fn => input => !fn(input);\nconst is = value => input => Object.is(value, input);\nconst lt = value => input => input < value;\nconst gt = value => input => input > value;\nconst equals = value => input => value === input;\nconst includes = value => input => input.includes(value);\nconst anyOf = value => input => value.includes(input);\nconst operators = {\n [\"includes\" /* INCLUDES */]: includes,\n [\"is\" /* IS */]: is,\n [\"isNot\" /* IS_NOT */]: compose(is, not),\n [\"lt\" /* LOWER_THAN */]: lt,\n [\"gte\" /* GREATER_THAN_OR_EQUAL */]: compose(lt, not),\n [\"gt\" /* GREATER_THAN */]: gt,\n [\"lte\" /* LOWER_THAN_OR_EQUAL */]: compose(gt, not),\n [\"equals\" /* EQUALS */]: equals,\n [\"notEquals\" /* NOT_EQUALS */]: compose(equals, not),\n [\"anyOf\" /* ANY_OF */]: anyOf\n};\nconst every = fns => (...args) => fns.every(fn => fn(...args));\nexport const predicate = ({ value = '', operator = \"includes\" /* INCLUDES */, type }) => {\n const typeIt = typeExpression(type);\n const operateOnTyped = compose(typeIt, operators[operator]);\n const predicateFunc = operateOnTyped(value);\n return compose(typeIt, predicateFunc);\n};\n// Avoid useless filter lookup (improve perf)\nconst normalizeClauses = (conf) => {\n const output = {};\n const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path]));\n validPath.forEach(path => {\n const validClauses = conf[path].filter(c => c.value !== '');\n if (validClauses.length > 0) {\n output[path] = validClauses;\n }\n });\n return output;\n};\nexport const filter = (filter) => {\n const normalizedClauses = normalizeClauses(filter);\n const funcList = Object.keys(normalizedClauses).map(path => {\n const getter = pointer(path).get;\n const clauses = normalizedClauses[path].map(predicate);\n return compose(getter, every(clauses));\n });\n const filterPredicate = every(funcList);\n return array => array.filter(filterPredicate);\n};\n"],"names":["FilterOperator"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"smart-table-filter.js","sources":["../../node_modules/smart-table-operators/dist/src/index.js","../../node_modules/smart-table-json-pointer/dist/src/index.js","../src/index.js"],"sourcesContent":["export const swap = (f) => (a, b) => f(b, a);\nexport const compose = (first, ...fns) => (...args) => fns.reduce((previous, current) => current(previous), first(...args));\nexport const curry = (fn, arityLeft) => {\n const arity = arityLeft || fn.length;\n return (...args) => {\n const argLength = args.length || 1;\n if (arity === argLength) {\n return fn(...args);\n }\n const func = (...moreArgs) => fn(...args, ...moreArgs);\n return curry(func, arity - args.length);\n };\n};\nexport const apply = (fn) => (...args) => fn(...args);\nexport const tap = (fn) => arg => {\n fn(arg);\n return arg;\n};\n","export const pointer = (path) => {\n const parts = path.split('.');\n const partial = (obj = {}, parts = []) => {\n const p = parts.shift();\n const current = obj[p];\n return (current === undefined || current === null || parts.length === 0) ?\n current : partial(current, parts);\n };\n const set = (target, newTree) => {\n let current = target;\n const [leaf, ...intermediate] = parts.reverse();\n for (const key of intermediate.reverse()) {\n if (current[key] === undefined) {\n current[key] = {};\n current = current[key];\n }\n }\n current[leaf] = Object.assign(current[leaf] || {}, newTree);\n return target;\n };\n return {\n get(target) {\n return partial(target, [...parts]);\n },\n set\n };\n};\n","import { compose } from 'smart-table-operators';\nimport { pointer } from 'smart-table-json-pointer';\nvar Type;\n(function (Type) {\n Type[\"BOOLEAN\"] = \"boolean\";\n Type[\"NUMBER\"] = \"number\";\n Type[\"DATE\"] = \"date\";\n Type[\"STRING\"] = \"string\";\n})(Type || (Type = {}));\nconst typeExpression = (type) => {\n switch (type) {\n case Type.BOOLEAN:\n return Boolean;\n case Type.NUMBER:\n return Number;\n case Type.DATE:\n return val => new Date(val);\n case Type.STRING:\n return compose(String, val => val.toLowerCase());\n default:\n return val => val;\n }\n};\nexport var FilterOperator;\n(function (FilterOperator) {\n FilterOperator[\"INCLUDES\"] = \"includes\";\n FilterOperator[\"IS\"] = \"is\";\n FilterOperator[\"IS_NOT\"] = \"isNot\";\n FilterOperator[\"LOWER_THAN\"] = \"lt\";\n FilterOperator[\"GREATER_THAN\"] = \"gt\";\n FilterOperator[\"GREATER_THAN_OR_EQUAL\"] = \"gte\";\n FilterOperator[\"LOWER_THAN_OR_EQUAL\"] = \"lte\";\n FilterOperator[\"EQUALS\"] = \"equals\";\n FilterOperator[\"NOT_EQUALS\"] = \"notEquals\";\n FilterOperator[\"ANY_OF\"] = \"anyOf\";\n})(FilterOperator || (FilterOperator = {}));\nconst not = fn => input => !fn(input);\nconst is = value => input => Object.is(value, input);\nconst lt = value => input => input < value;\nconst gt = value => input => input > value;\nconst equals = value => input => value === input;\nconst includes = value => input => input.includes(value);\nconst anyOf = value => input => value.includes(input);\nconst operators = {\n [\"includes\" /* INCLUDES */]: includes,\n [\"is\" /* IS */]: is,\n [\"isNot\" /* IS_NOT */]: compose(is, not),\n [\"lt\" /* LOWER_THAN */]: lt,\n [\"gte\" /* GREATER_THAN_OR_EQUAL */]: compose(lt, not),\n [\"gt\" /* GREATER_THAN */]: gt,\n [\"lte\" /* LOWER_THAN_OR_EQUAL */]: compose(gt, not),\n [\"equals\" /* EQUALS */]: equals,\n [\"notEquals\" /* NOT_EQUALS */]: compose(equals, not),\n [\"anyOf\" /* ANY_OF */]: anyOf\n};\nconst every = fns => (...args) => fns.every(fn => fn(...args));\nexport const predicate = ({ value = '', operator = \"includes\" /* INCLUDES */, type }) => {\n const typeIt = typeExpression(type);\n const operateOnTyped = compose(typeIt, operators[operator]);\n const predicateFunc = operateOnTyped(value);\n return compose(typeIt, predicateFunc);\n};\n// Avoid useless filter lookup (improve perf)\nconst normalizeClauses = (conf) => {\n const output = {};\n const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path]));\n validPath.forEach(path => {\n const validClauses = conf[path].filter(c => c.value !== '');\n if (validClauses.length > 0) {\n output[path] = validClauses;\n }\n });\n return output;\n};\nexport const filter = (filter) => {\n const normalizedClauses = normalizeClauses(filter);\n const funcList = Object.keys(normalizedClauses).map(path => {\n const getter = pointer(path).get;\n const clauses = normalizedClauses[path].map(predicate);\n return compose(getter, every(clauses));\n });\n const filterPredicate = every(funcList);\n return array => array.filter(filterPredicate);\n};\n"],"names":["FilterOperator"],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/index.js b/dist/src/index.js index 7de0d38..d83467d 100644 --- a/dist/src/index.js +++ b/dist/src/index.js @@ -1,5 +1,5 @@ import { compose } from 'smart-table-operators'; -import pointer from 'smart-table-json-pointer'; +import { pointer } from 'smart-table-json-pointer'; var Type; (function (Type) { Type["BOOLEAN"] = "boolean"; diff --git a/dist/src/index.ts b/dist/src/index.ts index 139023b..147220c 100644 --- a/dist/src/index.ts +++ b/dist/src/index.ts @@ -1,5 +1,5 @@ import {compose} from 'smart-table-operators'; -import pointer from 'smart-table-json-pointer'; +import {pointer} from 'smart-table-json-pointer'; enum Type { BOOLEAN = 'boolean', @@ -74,12 +74,12 @@ export const predicate = ({value = '', operator = FilterOperator.INCLUDES, type} return compose(typeIt, predicateFunc); }; -export interface FilterDefinition { +export interface FilterConfiguration { [s: string]: PredicateDefinition[] } // Avoid useless filter lookup (improve perf) -const normalizeClauses = (conf: FilterDefinition) => { +const normalizeClauses = (conf: FilterConfiguration) => { const output = {}; const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path])); validPath.forEach(path => { @@ -91,14 +91,14 @@ const normalizeClauses = (conf: FilterDefinition) => { return output; }; -export const filter = (filter: FilterDefinition): (array: T[]) => T[] => { +export const filter = (filter: FilterConfiguration): (array: T[]) => T[] => { const normalizedClauses = normalizeClauses(filter); const funcList = Object.keys(normalizedClauses).map(path => { - const getter = pointer(path).get; + const getter = pointer(path).get; const clauses = normalizedClauses[path].map(predicate); return compose(getter, every(clauses)); }); const filterPredicate = every(funcList); return array => array.filter(filterPredicate); -}; \ No newline at end of file +}; diff --git a/package-lock.json b/package-lock.json index 1a0b7e6..0d3468a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,8 @@ { "name": "smart-table-filter", - "requires": true, + "version": "2.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "@types/estree": { "version": "0.0.39", @@ -10,9 +11,9 @@ "dev": true }, "@types/node": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", - "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==", + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.0.tgz", + "integrity": "sha512-3TUHC3jsBAB7qVRGxT6lWyYo2v96BMmD2PTcl47H25Lu7UXtFH/2qqmKiVrnel6Ne//0TFYf6uvNX+HW2FRkLQ==", "dev": true }, "ansi-regex": { @@ -28,9 +29,9 @@ "dev": true }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -68,6 +69,12 @@ "repeat-element": "^1.1.2" } }, + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "dev": true + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -112,9 +119,9 @@ "dev": true }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "estree-walker": { @@ -328,9 +335,9 @@ } }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -347,12 +354,12 @@ } }, "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", "dev": true, "requires": { - "vlq": "^0.2.2" + "sourcemap-codec": "^1.4.1" } }, "math-random": { @@ -432,9 +439,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "plur": { @@ -461,15 +468,15 @@ } }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { "is-number": "^4.0.0", @@ -492,17 +499,17 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -522,9 +529,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -534,18 +541,18 @@ "dev": true }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { "path-parse": "^1.0.5" } }, "rollup": { - "version": "0.63.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.63.4.tgz", - "integrity": "sha512-IGTH7u0P6bmu7cXL0g11UDYTR9WKku70cYlqVyOYdqLoQopBGmCbGC3SMeheqHymnehHe/5yf6BJ6BEoxQBVTQ==", + "version": "0.63.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.63.5.tgz", + "integrity": "sha512-dFf8LpUNzIj3oE0vCvobX6rqOzHzLBoblyFp+3znPbjiSmSvOoK2kMKx+Fv9jYduG1rvcCfCveSgEaQHjWRF6g==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -553,40 +560,32 @@ } }, "rollup-plugin-commonjs": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.3.tgz", - "integrity": "sha512-g91ZZKZwTW7F7vL6jMee38I8coj/Q9GBdTmXXeFL7ldgC1Ky5WJvHgbKlAiXXTh762qvohhExwUgeQGFh9suGg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz", + "integrity": "sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA==", "dev": true, "requires": { - "estree-walker": "^0.5.1", - "magic-string": "^0.22.4", - "resolve": "^1.5.0", - "rollup-pluginutils": "^2.0.1" + "estree-walker": "^0.5.2", + "magic-string": "^0.25.1", + "resolve": "^1.8.1", + "rollup-pluginutils": "^2.3.3" } }, "rollup-plugin-node-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz", - "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", + "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", "dev": true, "requires": { "builtin-modules": "^2.0.0", "is-module": "^1.0.0", "resolve": "^1.1.6" - }, - "dependencies": { - "builtin-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", - "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", - "dev": true - } } }, "rollup-pluginutils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz", - "integrity": "sha512-xB6hsRsjdJdIYWEyYUJy/3ki5g69wrf0luHPGNK3ZSocV6HLNfio59l3dZ3TL4xUwEKgROhFi9jOCt6c5gfUWw==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", + "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", "dev": true, "requires": { "estree-walker": "^0.5.2", @@ -594,20 +593,26 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "smart-table-json-pointer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/smart-table-json-pointer/-/smart-table-json-pointer-1.0.3.tgz", - "integrity": "sha512-dyyvAzL9SLiNaOHHOE6p+YXxBbmVGZ+GHQMyiJtcRbQRrHWQEbmvPkjUpg8SqPuR43XzAY0B0gGV12lzPHDNpQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/smart-table-json-pointer/-/smart-table-json-pointer-2.0.1.tgz", + "integrity": "sha512-ExMEJOltSd6oONwA8lMlwTgO232W6nevzME8HSGpJAwTWQ/C8RWnsVdWyh5L2QHEhmaJ2ji9Cg7cMVjYxr8S2w==" }, "smart-table-operators": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/smart-table-operators/-/smart-table-operators-2.0.4.tgz", - "integrity": "sha512-mmn2YSrhh6zXHDPj/21IzQSpGySLSOnLPSzTmCrLdOn4Qh7nSOS4ogt+3Od5RQBKei2zg4fZhzN0LSq6ilblTw==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/smart-table-operators/-/smart-table-operators-2.0.6.tgz", + "integrity": "sha512-Pcx2C0oCNFHsAlH5iN2qsC4h/siWtTkfbls2Dibo20EdupYyUb+Lp/u+EYhEvfcIqGJvFYMy78jycPrZHEDHqA==" + }, + "sourcemap-codec": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.3.tgz", + "integrity": "sha512-vFrY/x/NdsD7Yc8mpTJXuao9S8lq08Z/kOITHz6b7YbfI9xL8Spe5EvSQUHOI7SbpY8bRPr0U3kKSsPuqEGSfA==", + "dev": true }, "sprintf-js": { "version": "1.0.3", @@ -616,9 +621,9 @@ "dev": true }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -688,12 +693,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -709,6 +708,5 @@ "deep-equal": "^1.0.1" } } - }, - "version": "2.0.0" + } } diff --git a/package.json b/package.json index 8252cab..7d20bcc 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "smart-table-filter", - "version": "2.0.0", + "version": "2.0.1", "description": "takes a configuration object and returns a filter function operating on arrays", "main": "./dist/bundle/index", - "module": "./dist/bundle/index.mjs", + "module": "./dist/src/index.js", "typings": "./dist/src/index.ts", "scripts": { "test:ci": "npm run build && npm test", - "test": "rollup -c ./test/rollup.config.js | node", + "test": "rollup -c ./test/rollup.config.js | node | tap-diff", "build:clean": "rm -rf ./dist && mkdir -p ./dist/bundle && cp -r ./src ./dist/src", "build:compile": "tsc", "build:bundle": "rollup -c ./rollup/build.js && rollup -c ./rollup/cdn.js", @@ -22,6 +22,9 @@ "array", "smart-table" ], + "files": [ + "dist" + ], "author": "Laurent Renard", "license": "MIT", "bugs": { @@ -29,13 +32,13 @@ }, "homepage": "https://github.com/smart-table/smart-table-filter#readme", "dependencies": { - "smart-table-json-pointer": "^1.0.3", - "smart-table-operators": "^2.0.4" + "smart-table-json-pointer": "^2.0.1", + "smart-table-operators": "^2.0.6" }, "devDependencies": { - "rollup": "^0.63.4", - "rollup-plugin-commonjs": "^9.1.3", - "rollup-plugin-node-resolve": "^3.3.0", + "rollup": "^0.63.5", + "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-node-resolve": "^3.4.0", "tap-diff": "^0.1.1", "typescript": "^2.9.2", "zora": "^2.0.1" diff --git a/src/index.ts b/src/index.ts index 139023b..147220c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import {compose} from 'smart-table-operators'; -import pointer from 'smart-table-json-pointer'; +import {pointer} from 'smart-table-json-pointer'; enum Type { BOOLEAN = 'boolean', @@ -74,12 +74,12 @@ export const predicate = ({value = '', operator = FilterOperator.INCLUDES, type} return compose(typeIt, predicateFunc); }; -export interface FilterDefinition { +export interface FilterConfiguration { [s: string]: PredicateDefinition[] } // Avoid useless filter lookup (improve perf) -const normalizeClauses = (conf: FilterDefinition) => { +const normalizeClauses = (conf: FilterConfiguration) => { const output = {}; const validPath = Object.keys(conf).filter(path => Array.isArray(conf[path])); validPath.forEach(path => { @@ -91,14 +91,14 @@ const normalizeClauses = (conf: FilterDefinition) => { return output; }; -export const filter = (filter: FilterDefinition): (array: T[]) => T[] => { +export const filter = (filter: FilterConfiguration): (array: T[]) => T[] => { const normalizedClauses = normalizeClauses(filter); const funcList = Object.keys(normalizedClauses).map(path => { - const getter = pointer(path).get; + const getter = pointer(path).get; const clauses = normalizedClauses[path].map(predicate); return compose(getter, every(clauses)); }); const filterPredicate = every(funcList); return array => array.filter(filterPredicate); -}; \ No newline at end of file +};