@wix/filter-builder 1.0.108 → 1.0.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","_interopRequireDefault","require","_","expect","chai","inAnd","args","$and","describe","filter","filterBuilder","it","now","Date","filterWithEncoder","encoder","wixDataEncoder","eq","getFilterModel","to","be","eql","x","$date","toJSON","ne","$ne","gt","$gt","ge","$gte","lt","$lt","le","$lte","isNotEmpty","isEmpty","startsWith","$startsWith","endsWith","$endsWith","contains","$contains","hasSome","$hasSome","hasAll","$hasAll","not","throw","Error","filterTreeGetters","forEach","filterTreeGetter","_build","or","and","between","a","$or","f","y","z","filterTree","$not","field","startDate","endDate","setYear","getYear","invalidExamples","undefined","first","second","firstType","secondType","newFilter","setFilterModel","equal","invalidFilter","invalidArguments"],"sources":["../../../src/__tests__/filter.spec.ts"],"sourcesContent":["import chai from 'chai'\nimport { filterBuilder, wixDataEncoder } from '..'\n\nconst expect = chai.expect\n\nfunction inAnd(...args) {\n return { $and: args }\n}\n\ndescribe('filter', function () {\n const filter = filterBuilder()\n\n describe('custom encoders', function () {\n it('encode date with wixDataEncoder', function () {\n const now = new Date()\n const filterWithEncoder = filterBuilder({ encoder: wixDataEncoder })\n\n expect(filterWithEncoder.eq('x', now).getFilterModel()).to.be.eql({\n x: { $date: now.toJSON() },\n })\n })\n\n it('encode with custom encoder', function () {\n const encoder = () => 3\n const filterWithEncoder = filterBuilder({ encoder })\n\n expect(filterWithEncoder.eq('x', 'a').getFilterModel()).to.be.eql({\n x: 3,\n })\n })\n })\n\n describe('filter comparison operators', function () {\n it('should produce the correct filter tree', function () {\n expect(filter.eq('x', 1).getFilterModel()).to.be.eql({ x: 1 })\n expect(filter.ne('x', 1).getFilterModel()).to.be.eql({ x: { $ne: 1 } })\n expect(filter.gt('x', 1).getFilterModel()).to.be.eql({ x: { $gt: 1 } })\n expect(filter.ge('x', 1).getFilterModel()).to.be.eql({ x: { $gte: 1 } })\n expect(filter.lt('x', 1).getFilterModel()).to.be.eql({ x: { $lt: 1 } })\n expect(filter.le('x', 1).getFilterModel()).to.be.eql({ x: { $lte: 1 } })\n expect(filter.isNotEmpty('x').getFilterModel()).to.be.eql({\n x: { $ne: null },\n })\n expect(filter.isEmpty('x').getFilterModel()).to.be.eql({ x: null })\n expect(filter.startsWith('x', 'A').getFilterModel()).to.be.eql({\n x: { $startsWith: 'A' },\n })\n expect(filter.endsWith('x', 'A').getFilterModel()).to.be.eql({\n x: { $endsWith: 'A' },\n })\n expect(filter.contains('x', 'A').getFilterModel()).to.be.eql({\n x: { $contains: 'A' },\n })\n expect(filter.hasSome('x', [1, 2]).getFilterModel()).to.be.eql({\n x: { $hasSome: [1, 2] },\n })\n expect(filter.hasSome('x', 1, 2).getFilterModel()).to.be.eql({\n x: { $hasSome: [1, 2] },\n })\n expect(filter.hasAll('x', [1, 2]).getFilterModel()).to.be.eql({\n x: { $hasAll: [1, 2] },\n })\n expect(filter.hasAll('x', 1, 2).getFilterModel()).to.be.eql({\n x: { $hasAll: [1, 2] },\n })\n })\n\n it('should accept valid arguments for all types of queries', function () {\n expect(() => filter.eq('x', 0)).to.not.throw(Error)\n expect(() => filter.ne('x', 0)).to.not.throw(Error)\n expect(() => filter.gt('x', 0)).to.not.throw(Error)\n expect(() => filter.ge('x', 0)).to.not.throw(Error)\n expect(() => filter.lt('x', 0)).to.not.throw(Error)\n expect(() => filter.le('x', 0)).to.not.throw(Error)\n expect(() => filter.startsWith('x', '')).to.not.throw(Error)\n expect(() => filter.endsWith('x', '')).to.not.throw(Error)\n expect(() => filter.contains('x', '')).to.not.throw(Error)\n })\n\n const filterTreeGetters = ['_build', 'getFilterModel']\n filterTreeGetters.forEach(function (filterTreeGetter) {\n describe(filterTreeGetter, function () {\n it('should throw error if builder is called with too little arguments', function () {\n expect(() => filter.eq('x')._build()).to.throw(\n 'Invalid .eq usage. .eq requires two parameters.'\n )\n expect(() => filter.ne('x')._build()).to.throw(\n 'Invalid .ne usage. .ne requires two parameters.'\n )\n expect(() => filter.gt('x')._build()).to.throw(\n 'Invalid .gt usage. .gt requires two parameters.'\n )\n expect(() => filter.ge('x')._build()).to.throw(\n 'Invalid .ge usage. .ge requires two parameters.'\n )\n expect(() => filter.lt('x')._build()).to.throw(\n 'Invalid .lt usage. .lt requires two parameters.'\n )\n expect(() => filter.le('x')._build()).to.throw(\n 'Invalid .le usage. .le requires two parameters.'\n )\n expect(() => filter.startsWith('x')._build()).to.throw(\n 'Invalid .startsWith usage. .startsWith requires two parameters.'\n )\n expect(() => filter.endsWith('x')._build()).to.throw(\n 'Invalid .endsWith usage. .endsWith requires two parameters.'\n )\n expect(() => filter.contains('x')._build()).to.throw(\n 'Invalid .contains usage. .contains requires two parameters.'\n )\n // @ts-expect-error\n expect(() => filter.isNotEmpty()._build()).to.throw(\n 'Invalid .isNotEmpty usage. .isNotEmpty requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.isEmpty()._build()).to.throw(\n 'Invalid .isEmpty usage. .isEmpty requires one parameter.'\n )\n expect(() => filter.isNotEmpty(1)._build()).to.throw(\n 'Invalid .isNotEmpty field value [Number]. .isNotEmpty field must be a String.'\n )\n expect(() => filter.isEmpty(1)._build()).to.throw(\n 'Invalid .isEmpty field value [Number]. .isEmpty field must be a String.'\n )\n // @ts-expect-error\n expect(() => filter.or()._build()).to.throw(\n 'Invalid .or usage. .or requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.and()._build()).to.throw(\n 'Invalid .and usage. .and requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.not()._build()).to.throw(\n 'Invalid .not usage. .not requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.between()._build()).to.throw(\n 'Invalid .between usage. .between requires three parameters.'\n )\n // @ts-expect-error\n expect(() => filter.between('x')._build()).to.throw(\n 'Invalid .between usage. .between requires three parameters.'\n )\n // @ts-expect-error\n expect(() => filter.between('x', 'x')._build()).to.throw(\n 'Invalid .between usage. .between requires three parameters.'\n )\n expect(() => filter.hasSome('x')._build()).to.throw(\n 'Invalid .hasSome usage. .hasSome requires at least two parameters.'\n )\n expect(() => filter.hasAll('x')._build()).to.throw(\n 'Invalid .hasAll usage. .hasAll requires at least two parameters.'\n )\n })\n\n it('should validate the type of the other query', function () {\n expect(() => filter.or(null)._build()).to.throw(\n 'Invalid .or parameter [Null]. .or expects FilterBuilder only.'\n )\n expect(() => filter.or({})._build()).to.throw(\n 'Invalid .or parameter [Object]. .or expects FilterBuilder only.'\n )\n expect(() => filter.or([])._build()).to.throw(\n 'Invalid .or parameter [Array]. .or expects FilterBuilder only.'\n )\n expect(() => filter.not(null)._build()).to.throw(\n 'Invalid .not parameter [Null]. .not expects FilterBuilder only'\n )\n expect(() => filter.not({})._build()).to.throw(\n 'Invalid .not parameter [Object]. .not expects FilterBuilder only'\n )\n expect(() => filter.not([])._build()).to.throw(\n 'Invalid .not parameter [Array]. .not expects FilterBuilder only'\n )\n })\n\n it('should return filter tree', function () {\n expect(\n filter.ge('a', 'b').eq('a', 1).le('a', 4)[filterTreeGetter]()\n ).to.be.eql({\n $and: [{ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } }],\n })\n expect(\n filter\n .eq('a', 1)\n .lt('a', 2)\n .or(filter.ge('a', 'b'))\n [filterTreeGetter]()\n ).to.be.eql({\n $or: [\n { $and: [{ a: 1 }, { a: { $lt: 2 } }] },\n { a: { $gte: 'b' } },\n ],\n })\n expect(filter.eq('a', 3).ne('a', 2)[filterTreeGetter]()).to.be.eql(\n inAnd({ a: 3 }, { a: { $ne: 2 } })\n )\n })\n })\n })\n })\n\n describe('filter.or', function () {\n it('should produce correct filter tree', function () {\n const f = filter.eq('x', 1).or(filter.eq('y', 2))\n\n expect(f.getFilterModel()).to.be.eql({ $or: [{ x: 1 }, { y: 2 }] })\n expect(f.eq('z', 3).getFilterModel()).to.be.eql(\n inAnd({ $or: [{ x: 1 }, { y: 2 }] }, { z: 3 })\n )\n })\n\n it('should produce valid query if used directly', function () {\n const f = filter.or(filter.eq('x', 1))\n\n expect(f.filterTree).to.be.eql(inAnd({ $or: [inAnd({ x: 1 })] }))\n })\n })\n\n describe('filter.and', function () {\n it('should produce correct filter tree', function () {\n const f = filter.eq('x', 1).and(filter.eq('y', 2))\n\n expect(f.getFilterModel()).to.be.eql({ x: 1, y: 2 })\n expect(f.eq('x', 3).getFilterModel()).to.be.eql({\n $and: [{ x: 1 }, { y: 2 }, { x: 3 }],\n })\n })\n\n it('should produce valid query if used directly', function () {\n const f = filter.and(filter.eq('x', 1))\n\n expect(f.filterTree).to.be.eql(inAnd({ $and: [{ x: 1 }] }))\n })\n })\n\n describe('filter.not', function () {\n it('should produce the correct filter tree', function () {\n const f = filter.eq('x', 1).not(filter.eq('y', 2).eq('z', 3))\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ x: 1 }, { $not: [{ y: 2, z: 3 }] })\n )\n })\n })\n\n describe('between', function () {\n it('should produce the correct filter tree for numbers', function () {\n const f = filter.between('field', 1, 3)\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ field: { $gte: 1 } }, { field: { $lt: 3 } })\n )\n })\n\n it('should produce the correct filter tree for dates', function () {\n const startDate: any = new Date()\n const endDate: any = new Date()\n endDate.setYear(startDate.getYear() + 1)\n const f = filter.between('field', startDate, endDate)\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ field: { $gte: startDate } }, { field: { $lt: endDate } })\n )\n })\n\n it('should produce the correct filter tree for strings', function () {\n const f = filter.between('field', 'start', 'end')\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ field: { $gte: 'start' } }, { field: { $lt: 'end' } })\n )\n })\n\n describe('validation', function () {\n const filterTreeGetters = ['_build', 'getFilterModel']\n filterTreeGetters.forEach(function (filterTreeGetter) {\n describe(filterTreeGetter, function () {\n const invalidExamples = [\n [1, new Date(), 'Number', 'Date'],\n [1, '2015-02-02', 'Number', 'String'],\n [new Date(), '2015-01-01', 'Date', 'String'],\n [null, new Date(), 'Null', 'Date'],\n [undefined, new Date(), 'Undefined', 'Date'],\n ]\n\n invalidExamples.forEach(function ([\n first,\n second,\n firstType,\n secondType,\n ]) {\n it(\n \"should reject invalid query.between('x',\" +\n first +\n ',' +\n second +\n ')',\n function () {\n expect(function () {\n filter.between('x', first, second)[filterTreeGetter]()\n }).to.throw(\n `Invalid .between parameter values [${firstType}] and [${secondType}]. Both parameters must be of the same type.`\n )\n expect(function () {\n filter.between('x', second, first)[filterTreeGetter]()\n }).to.throw(\n `Invalid .between parameter values [${secondType}] and [${firstType}]. Both parameters must be of the same type.`\n )\n }\n )\n })\n })\n })\n })\n })\n\n describe('setFilterModel', function () {\n it('should return a new filter instance with the new filterTree value set', function () {\n const newFilter = filter.setFilterModel(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n\n expect(newFilter).not.to.equal(filter)\n })\n\n it('should set filterTree to the filterModel value when the value is a valid filterTree', function () {\n const newFilter = filter.setFilterModel(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n\n expect(newFilter.getFilterModel()).to.be.eql(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n })\n\n it('should set filterTree to the filterModel value even when the value is not a valid filterTree', function () {\n const newFilter = filter.setFilterModel(5)\n\n expect(newFilter.getFilterModel()).to.be.eql(5)\n })\n\n it('should set invalidArguments to an empty array when the value is a valid filterTree', function () {\n const invalidFilter = filter.eq('x')\n const newFilter = invalidFilter.setFilterModel(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n\n expect(newFilter.invalidArguments).to.be.eql([])\n })\n\n it('should set invalidArguments to an empty array when the value is not a valid filterTree', function () {\n const invalidFilter = filter.eq('x')\n const newFilter = invalidFilter.setFilterModel(5)\n\n expect(newFilter.invalidArguments).to.be.eql([])\n })\n })\n})\n"],"mappings":"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"}
1
+ {"version":3,"names":["_chai","_interopRequireDefault","require","_","expect","chai","inAnd","args","$and","describe","filter","filterBuilder","it","now","Date","filterWithEncoder","encoder","wixDataEncoder","eq","getFilterModel","to","be","eql","x","$date","toJSON","ne","$ne","gt","$gt","ge","$gte","lt","$lt","le","$lte","isNotEmpty","isEmpty","startsWith","$startsWith","endsWith","$endsWith","contains","$contains","hasSome","$hasSome","hasAll","$hasAll","not","throw","Error","filterTreeGetters","forEach","filterTreeGetter","_build","or","and","between","a","$or","f","y","z","filterTree","$not","field","startDate","endDate","setYear","getYear","invalidExamples","undefined","first","second","firstType","secondType","newFilter","setFilterModel","equal","invalidFilter","invalidArguments"],"sources":["../../../src/__tests__/filter.spec.ts"],"sourcesContent":["import chai from 'chai'\nimport { filterBuilder, wixDataEncoder } from '..'\n\nconst expect = chai.expect\n\nfunction inAnd(...args) {\n return { $and: args }\n}\n\ndescribe('filter', function () {\n const filter = filterBuilder()\n\n describe('custom encoders', function () {\n it('encode date with wixDataEncoder', function () {\n const now = new Date()\n const filterWithEncoder = filterBuilder({ encoder: wixDataEncoder })\n\n expect(filterWithEncoder.eq('x', now).getFilterModel()).to.be.eql({\n x: { $date: now.toJSON() },\n })\n })\n\n it('encode with custom encoder', function () {\n const encoder = () => 3\n const filterWithEncoder = filterBuilder({ encoder })\n\n expect(filterWithEncoder.eq('x', 'a').getFilterModel()).to.be.eql({\n x: 3,\n })\n })\n })\n\n describe('filter comparison operators', function () {\n it('should produce the correct filter tree', function () {\n expect(filter.eq('x', 1).getFilterModel()).to.be.eql({ x: 1 })\n expect(filter.ne('x', 1).getFilterModel()).to.be.eql({ x: { $ne: 1 } })\n expect(filter.gt('x', 1).getFilterModel()).to.be.eql({ x: { $gt: 1 } })\n expect(filter.ge('x', 1).getFilterModel()).to.be.eql({ x: { $gte: 1 } })\n expect(filter.lt('x', 1).getFilterModel()).to.be.eql({ x: { $lt: 1 } })\n expect(filter.le('x', 1).getFilterModel()).to.be.eql({ x: { $lte: 1 } })\n expect(filter.isNotEmpty('x').getFilterModel()).to.be.eql({\n x: { $ne: null },\n })\n expect(filter.isEmpty('x').getFilterModel()).to.be.eql({ x: null })\n expect(filter.startsWith('x', 'A').getFilterModel()).to.be.eql({\n x: { $startsWith: 'A' },\n })\n expect(filter.endsWith('x', 'A').getFilterModel()).to.be.eql({\n x: { $endsWith: 'A' },\n })\n expect(filter.contains('x', 'A').getFilterModel()).to.be.eql({\n x: { $contains: 'A' },\n })\n expect(filter.hasSome('x', [1, 2]).getFilterModel()).to.be.eql({\n x: { $hasSome: [1, 2] },\n })\n expect(filter.hasSome('x', 1, 2).getFilterModel()).to.be.eql({\n x: { $hasSome: [1, 2] },\n })\n expect(filter.hasAll('x', [1, 2]).getFilterModel()).to.be.eql({\n x: { $hasAll: [1, 2] },\n })\n expect(filter.hasAll('x', 1, 2).getFilterModel()).to.be.eql({\n x: { $hasAll: [1, 2] },\n })\n })\n\n it('should accept valid arguments for all types of queries', function () {\n expect(() => filter.eq('x', 0)).to.not.throw(Error)\n expect(() => filter.ne('x', 0)).to.not.throw(Error)\n expect(() => filter.gt('x', 0)).to.not.throw(Error)\n expect(() => filter.ge('x', 0)).to.not.throw(Error)\n expect(() => filter.lt('x', 0)).to.not.throw(Error)\n expect(() => filter.le('x', 0)).to.not.throw(Error)\n expect(() => filter.startsWith('x', '')).to.not.throw(Error)\n expect(() => filter.endsWith('x', '')).to.not.throw(Error)\n expect(() => filter.contains('x', '')).to.not.throw(Error)\n })\n\n const filterTreeGetters = ['_build', 'getFilterModel']\n filterTreeGetters.forEach(function (filterTreeGetter) {\n describe(filterTreeGetter, function () {\n it('should throw error if builder is called with too little arguments', function () {\n expect(() => filter.eq('x')._build()).to.throw(\n 'Invalid .eq usage. .eq requires two parameters.'\n )\n expect(() => filter.ne('x')._build()).to.throw(\n 'Invalid .ne usage. .ne requires two parameters.'\n )\n expect(() => filter.gt('x')._build()).to.throw(\n 'Invalid .gt usage. .gt requires two parameters.'\n )\n expect(() => filter.ge('x')._build()).to.throw(\n 'Invalid .ge usage. .ge requires two parameters.'\n )\n expect(() => filter.lt('x')._build()).to.throw(\n 'Invalid .lt usage. .lt requires two parameters.'\n )\n expect(() => filter.le('x')._build()).to.throw(\n 'Invalid .le usage. .le requires two parameters.'\n )\n expect(() => filter.startsWith('x')._build()).to.throw(\n 'Invalid .startsWith usage. .startsWith requires two parameters.'\n )\n expect(() => filter.endsWith('x')._build()).to.throw(\n 'Invalid .endsWith usage. .endsWith requires two parameters.'\n )\n expect(() => filter.contains('x')._build()).to.throw(\n 'Invalid .contains usage. .contains requires two parameters.'\n )\n // @ts-expect-error\n expect(() => filter.isNotEmpty()._build()).to.throw(\n 'Invalid .isNotEmpty usage. .isNotEmpty requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.isEmpty()._build()).to.throw(\n 'Invalid .isEmpty usage. .isEmpty requires one parameter.'\n )\n expect(() => filter.isNotEmpty(1)._build()).to.throw(\n 'Invalid .isNotEmpty field value [Number]. .isNotEmpty field must be a String.'\n )\n expect(() => filter.isEmpty(1)._build()).to.throw(\n 'Invalid .isEmpty field value [Number]. .isEmpty field must be a String.'\n )\n // @ts-expect-error\n expect(() => filter.or()._build()).to.throw(\n 'Invalid .or usage. .or requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.and()._build()).to.throw(\n 'Invalid .and usage. .and requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.not()._build()).to.throw(\n 'Invalid .not usage. .not requires one parameter.'\n )\n // @ts-expect-error\n expect(() => filter.between()._build()).to.throw(\n 'Invalid .between usage. .between requires three parameters.'\n )\n // @ts-expect-error\n expect(() => filter.between('x')._build()).to.throw(\n 'Invalid .between usage. .between requires three parameters.'\n )\n // @ts-expect-error\n expect(() => filter.between('x', 'x')._build()).to.throw(\n 'Invalid .between usage. .between requires three parameters.'\n )\n expect(() => filter.hasSome('x')._build()).to.throw(\n 'Invalid .hasSome usage. .hasSome requires at least two parameters.'\n )\n expect(() => filter.hasAll('x')._build()).to.throw(\n 'Invalid .hasAll usage. .hasAll requires at least two parameters.'\n )\n })\n\n it('should validate the type of the other query', function () {\n expect(() => filter.or(null)._build()).to.throw(\n 'Invalid .or parameter [Null]. .or expects FilterBuilder only.'\n )\n expect(() => filter.or({})._build()).to.throw(\n 'Invalid .or parameter [Object]. .or expects FilterBuilder only.'\n )\n expect(() => filter.or([])._build()).to.throw(\n 'Invalid .or parameter [Array]. .or expects FilterBuilder only.'\n )\n expect(() => filter.not(null)._build()).to.throw(\n 'Invalid .not parameter [Null]. .not expects FilterBuilder only'\n )\n expect(() => filter.not({})._build()).to.throw(\n 'Invalid .not parameter [Object]. .not expects FilterBuilder only'\n )\n expect(() => filter.not([])._build()).to.throw(\n 'Invalid .not parameter [Array]. .not expects FilterBuilder only'\n )\n })\n\n it('should return filter tree', function () {\n expect(\n filter.ge('a', 'b').eq('a', 1).le('a', 4)[filterTreeGetter]()\n ).to.be.eql({\n $and: [{ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } }],\n })\n expect(\n filter\n .eq('a', 1)\n .lt('a', 2)\n .or(filter.ge('a', 'b'))\n [filterTreeGetter]()\n ).to.be.eql({\n $or: [\n { $and: [{ a: 1 }, { a: { $lt: 2 } }] },\n { a: { $gte: 'b' } },\n ],\n })\n expect(filter.eq('a', 3).ne('a', 2)[filterTreeGetter]()).to.be.eql(\n inAnd({ a: 3 }, { a: { $ne: 2 } })\n )\n })\n })\n })\n })\n\n describe('filter.or', function () {\n it('should produce correct filter tree', function () {\n const f = filter.eq('x', 1).or(filter.eq('y', 2))\n\n expect(f.getFilterModel()).to.be.eql({ $or: [{ x: 1 }, { y: 2 }] })\n expect(f.eq('z', 3).getFilterModel()).to.be.eql(\n inAnd({ $or: [{ x: 1 }, { y: 2 }] }, { z: 3 })\n )\n })\n\n it('should produce valid query if used directly', function () {\n const f = filter.or(filter.eq('x', 1))\n\n expect(f.filterTree).to.be.eql(inAnd({ $or: [inAnd({ x: 1 })] }))\n })\n })\n\n describe('filter.and', function () {\n it('should produce correct filter tree', function () {\n const f = filter.eq('x', 1).and(filter.eq('y', 2))\n\n expect(f.getFilterModel()).to.be.eql({ x: 1, y: 2 })\n expect(f.eq('x', 3).getFilterModel()).to.be.eql({\n $and: [{ x: 1 }, { y: 2 }, { x: 3 }],\n })\n })\n\n it('should produce valid query if used directly', function () {\n const f = filter.and(filter.eq('x', 1))\n\n expect(f.filterTree).to.be.eql(inAnd({ $and: [{ x: 1 }] }))\n })\n })\n\n describe('filter.not', function () {\n it('should produce the correct filter tree', function () {\n const f = filter.eq('x', 1).not(filter.eq('y', 2).eq('z', 3))\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ x: 1 }, { $not: [{ y: 2, z: 3 }] })\n )\n })\n })\n\n describe('between', function () {\n it('should produce the correct filter tree for numbers', function () {\n const f = filter.between('field', 1, 3)\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ field: { $gte: 1 } }, { field: { $lt: 3 } })\n )\n })\n\n it('should produce the correct filter tree for dates', function () {\n const startDate: any = new Date()\n const endDate: any = new Date()\n endDate.setYear(startDate.getYear() + 1)\n const f = filter.between('field', startDate, endDate)\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ field: { $gte: startDate } }, { field: { $lt: endDate } })\n )\n })\n\n it('should produce the correct filter tree for strings', function () {\n const f = filter.between('field', 'start', 'end')\n\n expect(f.getFilterModel()).to.be.eql(\n inAnd({ field: { $gte: 'start' } }, { field: { $lt: 'end' } })\n )\n })\n\n describe('validation', function () {\n const filterTreeGetters = ['_build', 'getFilterModel']\n filterTreeGetters.forEach(function (filterTreeGetter) {\n describe(filterTreeGetter, function () {\n const invalidExamples = [\n [1, new Date(), 'Number', 'Date'],\n [1, '2015-02-02', 'Number', 'String'],\n [new Date(), '2015-01-01', 'Date', 'String'],\n [null, new Date(), 'Null', 'Date'],\n [undefined, new Date(), 'Undefined', 'Date'],\n ]\n\n invalidExamples.forEach(function ([\n first,\n second,\n firstType,\n secondType,\n ]) {\n it(\n \"should reject invalid query.between('x',\" +\n first +\n ',' +\n second +\n ')',\n function () {\n expect(function () {\n filter.between('x', first, second)[filterTreeGetter]()\n }).to.throw(\n `Invalid .between parameter values [${firstType}] and [${secondType}]. Both parameters must be of the same type.`\n )\n expect(function () {\n filter.between('x', second, first)[filterTreeGetter]()\n }).to.throw(\n `Invalid .between parameter values [${secondType}] and [${firstType}]. Both parameters must be of the same type.`\n )\n }\n )\n })\n })\n })\n })\n })\n\n describe('setFilterModel', function () {\n it('should return a new filter instance with the new filterTree value set', function () {\n const newFilter = filter.setFilterModel(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n\n expect(newFilter).not.to.equal(filter)\n })\n\n it('should set filterTree to the filterModel value when the value is a valid filterTree', function () {\n const newFilter = filter.setFilterModel(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n\n expect(newFilter.getFilterModel()).to.be.eql(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n })\n\n it('should set filterTree to the filterModel value even when the value is not a valid filterTree', function () {\n const newFilter = filter.setFilterModel(5)\n\n expect(newFilter.getFilterModel()).to.be.eql(5)\n })\n\n it('should set invalidArguments to an empty array when the value is a valid filterTree', function () {\n const invalidFilter = filter.eq('x')\n const newFilter = invalidFilter.setFilterModel(\n inAnd({ a: { $gte: 'b' } }, { a: 1 }, { a: { $lte: 4 } })\n )\n\n expect(newFilter.invalidArguments).to.be.eql([])\n })\n\n it('should set invalidArguments to an empty array when the value is not a valid filterTree', function () {\n const invalidFilter = filter.eq('x')\n const newFilter = invalidFilter.setFilterModel(5)\n\n expect(newFilter.invalidArguments).to.be.eql([])\n })\n })\n})\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","_interopRequireDefault","require","_queryOptimiser","expect","chai","describe","testCase","$and","a","b","$lte","it","actualOutput","optimised","to","be","eql","$or","x","Date","description","input","expectedOutput"],"sources":["../../../src/__tests__/query-optimizer.spec.ts"],"sourcesContent":["import chai from 'chai'\nimport { optimisedQuery as optimised } from '../query-optimiser'\n\nconst expect = chai.expect\n\ndescribe('query optimisations', () => {\n describe('$and with single element', () => {\n testCase('gets unwrapped', { $and: [{ a: 1 }] }, { a: 1 })\n })\n\n describe('$and with object pieces', () => {\n testCase(\n 'gets unwrapped as object',\n { $and: [{ a: 1 }, { b: 2 }] },\n { a: 1, b: 2 }\n )\n testCase(\n 'remains if keys overlap',\n { $and: [{ a: 1 }, { b: 2 }, { a: 1 }] },\n { $and: [{ a: 1 }, { b: 2 }, { a: 1 }] }\n )\n testCase(\n \"nested operators don't get merged\",\n { $and: [{ a: 1 }, { $lte: 4 }, { b: 2 }] },\n { $and: [{ a: 1, b: 2 }, { $lte: 4 }] }\n )\n it('merges empty objects', () => {\n const actualOutput = optimised({ $and: [{}, {}, {}] })\n expect(actualOutput).to.be.eql({})\n })\n })\n\n describe('empty $and', () => {\n testCase('is removed', { $and: [{ $and: [] }] }, {})\n testCase('is removed when nested', { $and: [{ $and: [] }] }, {})\n })\n\n describe('nested $and', () => {\n testCase(\n 'get flattened',\n {\n $and: [{ a: 1 }, { $and: [{ a: 1 }] }, { $and: [{ a: 1 }, { a: 1 }] }],\n },\n { $and: [{ a: 1 }, { a: 1 }, { a: 1 }, { a: 1 }] }\n )\n })\n\n describe('nested $or', () => {\n testCase(\n 'get flattened',\n { $or: [{ a: 1 }, { $or: [{ a: 1 }] }, { $or: [{ a: 1 }, { a: 1 }] }] },\n { $or: [{ a: 1 }, { a: 1 }, { a: 1 }, { a: 1 }] }\n )\n })\n\n describe('type compatibility', () => {\n testCase(\n 'maintains date objects',\n { x: [new Date('2020-01-01T00:00:00Z')] },\n { x: [new Date('2020-01-01T00:00:00Z')] }\n )\n })\n})\n\nfunction testCase(description, input, expectedOutput) {\n it(description, () => {\n const actualOutput = optimised(input)\n expect(actualOutput).to.be.eql(expectedOutput)\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_chai","_interopRequireDefault","require","_queryOptimiser","expect","chai","describe","testCase","$and","a","b","$lte","it","actualOutput","optimised","to","be","eql","$or","x","Date","description","input","expectedOutput"],"sources":["../../../src/__tests__/query-optimizer.spec.ts"],"sourcesContent":["import chai from 'chai'\nimport { optimisedQuery as optimised } from '../query-optimiser'\n\nconst expect = chai.expect\n\ndescribe('query optimisations', () => {\n describe('$and with single element', () => {\n testCase('gets unwrapped', { $and: [{ a: 1 }] }, { a: 1 })\n })\n\n describe('$and with object pieces', () => {\n testCase(\n 'gets unwrapped as object',\n { $and: [{ a: 1 }, { b: 2 }] },\n { a: 1, b: 2 }\n )\n testCase(\n 'remains if keys overlap',\n { $and: [{ a: 1 }, { b: 2 }, { a: 1 }] },\n { $and: [{ a: 1 }, { b: 2 }, { a: 1 }] }\n )\n testCase(\n \"nested operators don't get merged\",\n { $and: [{ a: 1 }, { $lte: 4 }, { b: 2 }] },\n { $and: [{ a: 1, b: 2 }, { $lte: 4 }] }\n )\n it('merges empty objects', () => {\n const actualOutput = optimised({ $and: [{}, {}, {}] })\n expect(actualOutput).to.be.eql({})\n })\n })\n\n describe('empty $and', () => {\n testCase('is removed', { $and: [{ $and: [] }] }, {})\n testCase('is removed when nested', { $and: [{ $and: [] }] }, {})\n })\n\n describe('nested $and', () => {\n testCase(\n 'get flattened',\n {\n $and: [{ a: 1 }, { $and: [{ a: 1 }] }, { $and: [{ a: 1 }, { a: 1 }] }],\n },\n { $and: [{ a: 1 }, { a: 1 }, { a: 1 }, { a: 1 }] }\n )\n })\n\n describe('nested $or', () => {\n testCase(\n 'get flattened',\n { $or: [{ a: 1 }, { $or: [{ a: 1 }] }, { $or: [{ a: 1 }, { a: 1 }] }] },\n { $or: [{ a: 1 }, { a: 1 }, { a: 1 }, { a: 1 }] }\n )\n })\n\n describe('type compatibility', () => {\n testCase(\n 'maintains date objects',\n { x: [new Date('2020-01-01T00:00:00Z')] },\n { x: [new Date('2020-01-01T00:00:00Z')] }\n )\n })\n})\n\nfunction testCase(description, input, expectedOutput) {\n it(description, () => {\n const actualOutput = optimised(input)\n expect(actualOutput).to.be.eql(expectedOutput)\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_typeUtils","require","clone","obj","temp","isDate","Date","getTime","constructor","key"],"sources":["../../src/clone.ts"],"sourcesContent":["import { isDate } from './type-utils'\n\nexport default function clone(obj) {\n if (obj == null || typeof obj !== 'object') {\n return obj\n }\n\n let temp: any = null\n\n if (isDate(obj)) {\n temp = new Date(obj.getTime())\n } else {\n temp = obj.constructor()\n for (const key in obj) {\n temp[key] = clone(obj[key])\n }\n }\n\n return temp\n}\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEe,SAASC,KAAKA,CAACC,GAAG,EAAE;EACjC,IAAIA,GAAG,IAAI,IAAI,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC1C,OAAOA,GAAG;EACZ;EAEA,IAAIC,IAAS,GAAG,IAAI;EAEpB,IAAI,IAAAC,iBAAM,EAACF,GAAG,CAAC,EAAE;IACfC,IAAI,GAAG,IAAIE,IAAI,CAACH,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;EAChC,CAAC,MAAM;IACLH,IAAI,GAAGD,GAAG,CAACK,WAAW,CAAC,CAAC;IACxB,KAAK,MAAMC,GAAG,IAAIN,GAAG,EAAE;MACrBC,IAAI,CAACK,GAAG,CAAC,GAAGP,KAAK,CAACC,GAAG,CAACM,GAAG,CAAC,CAAC;IAC7B;EACF;EAEA,OAAOL,IAAI;AACb"}
1
+ {"version":3,"names":["_typeUtils","require","clone","obj","temp","isDate","Date","getTime","constructor","key"],"sources":["../../src/clone.ts"],"sourcesContent":["import { isDate } from './type-utils'\n\nexport default function clone(obj) {\n if (obj == null || typeof obj !== 'object') {\n return obj\n }\n\n let temp: any = null\n\n if (isDate(obj)) {\n temp = new Date(obj.getTime())\n } else {\n temp = obj.constructor()\n for (const key in obj) {\n temp[key] = clone(obj[key])\n }\n }\n\n return temp\n}\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEe,SAASC,KAAKA,CAACC,GAAG,EAAE;EACjC,IAAIA,GAAG,IAAI,IAAI,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC1C,OAAOA,GAAG;EACZ;EAEA,IAAIC,IAAS,GAAG,IAAI;EAEpB,IAAI,IAAAC,iBAAM,EAACF,GAAG,CAAC,EAAE;IACfC,IAAI,GAAG,IAAIE,IAAI,CAACH,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;EAChC,CAAC,MAAM;IACLH,IAAI,GAAGD,GAAG,CAACK,WAAW,CAAC,CAAC;IACxB,KAAK,MAAMC,GAAG,IAAIN,GAAG,EAAE;MACrBC,IAAI,CAACK,GAAG,CAAC,GAAGP,KAAK,CAACC,GAAG,CAACM,GAAG,CAAC,CAAC;IAC7B;EACF;EAEA,OAAOL,IAAI;AACb","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_filterMixin","_interopRequireDefault","require","FilterBuilder","filterMixin","constructorName","_build","getFilterModel","exports","filterBuilder","params","_default","default"],"sources":["../../src/filter-builder.ts"],"sourcesContent":["import filterMixin from './filter-mixin'\n\nexport class FilterBuilder extends filterMixin() {\n get constructorName() {\n return 'FilterBuilder'\n }\n\n _build() {\n return this.getFilterModel()\n }\n}\n\nexport function filterBuilder(params = {}) {\n return new FilterBuilder(params)\n}\n\nexport default filterBuilder\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,MAAMC,aAAa,SAAS,IAAAC,oBAAW,EAAC,CAAC,CAAC;EAC/C,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAO,eAAe;EACxB;EAEAC,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAACC,cAAc,CAAC,CAAC;EAC9B;AACF;AAACC,OAAA,CAAAL,aAAA,GAAAA,aAAA;AAEM,SAASM,aAAaA,CAACC,MAAM,GAAG,CAAC,CAAC,EAAE;EACzC,OAAO,IAAIP,aAAa,CAACO,MAAM,CAAC;AAClC;AAAC,IAAAC,QAAA,GAAAH,OAAA,CAAAI,OAAA,GAEcH,aAAa"}
1
+ {"version":3,"names":["_filterMixin","_interopRequireDefault","require","FilterBuilder","filterMixin","constructorName","_build","getFilterModel","exports","filterBuilder","params","_default","default"],"sources":["../../src/filter-builder.ts"],"sourcesContent":["import filterMixin from './filter-mixin'\n\nexport class FilterBuilder extends filterMixin() {\n get constructorName() {\n return 'FilterBuilder'\n }\n\n _build() {\n return this.getFilterModel()\n }\n}\n\nexport function filterBuilder(params = {}) {\n return new FilterBuilder(params)\n}\n\nexport default filterBuilder\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,MAAMC,aAAa,SAAS,IAAAC,oBAAW,EAAC,CAAC,CAAC;EAC/C,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAO,eAAe;EACxB;EAEAC,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAACC,cAAc,CAAC,CAAC;EAC9B;AACF;AAACC,OAAA,CAAAL,aAAA,GAAAA,aAAA;AAEM,SAASM,aAAaA,CAACC,MAAM,GAAG,CAAC,CAAC,EAAE;EACzC,OAAO,IAAIP,aAAa,CAACO,MAAM,CAAC;AAClC;AAAC,IAAAC,QAAA,GAAAH,OAAA,CAAAI,OAAA,GAEcH,aAAa","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","_filterValidator","_queryOptimiser","filterMixin","Base","constructor","obj","_defineProperty2","default","filterTree","$and","invalidArguments","encoder","eq","args","_binaryAnd","ne","ge","_AndLogicalEquivalence","gt","le","lt","isNotEmpty","field","newInvalidArguments","valid","arityIsOne","arguments","validFieldName","validateAndAggregate","_copy","isEmpty","startsWith","_AndStringOperand","endsWith","contains","hasSome","_AndSetOperand","hasAll","or","orQuery","isInstanceOfSameClass","prefix","isEmptyAnd","inAnd","$or","concat","and","andQuery","not","notQuery","newFilterTree","clone","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","arityIsThree","sameType","typeIsStringNumberOrDate","getFilterModel","length","Error","join","optimisedQuery","setFilterModel","filterModel","filterOperatorSymbol","operatorName","operand","Array","prototype","slice","call","arityIsTwo","_makeNewFilter","filterOperatorName","typeIsString","rawOperands","operands","isArray","arityIsAtLeastTwo","typeIsStringNumberOrDateForAll","serializableOperand","undefined","newFilter","_buildFilter","push","result","isEmptyObject","_encode","isFunction","FilterValidator","isConjunctiveFormFilter","Object","keys","reduce","aggr","val","node","_default","exports"],"sources":["../../src/filter-mixin.ts"],"sourcesContent":["import { isArray, isFunction } from './type-utils'\nimport clone from './clone'\nimport { FilterValidator } from './filter-validator'\nimport { Validator } from './validator'\nimport { optimisedQuery } from './query-optimiser'\n\nconst filterMixin = (Base: any = class {}) =>\n class extends Base {\n filterTree\n invalidArguments\n encoder\n\n constructor(obj: { filterTree?; invalidArguments?; encoder? } = {}) {\n super(obj)\n this.filterTree = obj.filterTree || { $and: [] }\n this.invalidArguments = obj.invalidArguments || []\n this.encoder = obj.encoder || {}\n }\n\n eq(...args) {\n return this._binaryAnd('$eq', '.eq', args)\n }\n\n ne(...args) {\n return this._binaryAnd('$ne', '.ne', args)\n }\n\n ge(...args) {\n return this._AndLogicalEquivalence('$gte', '.ge', args)\n }\n\n gt(...args) {\n return this._AndLogicalEquivalence('$gt', '.gt', args)\n }\n\n le(...args) {\n return this._AndLogicalEquivalence('$lte', '.le', args)\n }\n\n lt(...args) {\n return this._AndLogicalEquivalence('$lt', '.lt', args)\n }\n\n isNotEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isNotEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.ne(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n isEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.eq(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n startsWith(...args) {\n return this._AndStringOperand('$startsWith', '.startsWith', args)\n }\n\n endsWith(...args) {\n return this._AndStringOperand('$endsWith', '.endsWith', args)\n }\n\n contains(...args) {\n return this._AndStringOperand('$contains', '.contains', args)\n }\n\n hasSome(...args) {\n return this._AndSetOperand('$hasSome', '.hasSome', args)\n }\n\n hasAll(...args) {\n return this._AndSetOperand('$hasAll', '.hasAll', args)\n }\n\n or(orQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.or')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(orQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd({ $or: [...prefix, orQuery.filterTree] }),\n newInvalidArguments.concat(orQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n and(andQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.and')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(andQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd(...prefix, andQuery.filterTree),\n newInvalidArguments.concat(andQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n not(notQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.not')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(notQuery)\n .validateAndAggregate()\n\n if (valid) {\n const newFilterTree = clone(this.filterTree)\n const notClause = { $not: [notQuery.filterTree] }\n const resultingFilter = inAndOptimized(newFilterTree, notClause)\n\n return this._copy(\n resultingFilter,\n newInvalidArguments.concat(notQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n between(field, rangeStart, rangeEnd) {\n const [newInvalidArguments, valid] = this._filterValidator('.between')\n .arityIsThree(arguments)\n .sameType(rangeStart, rangeEnd)\n .typeIsStringNumberOrDate(rangeStart)\n .typeIsStringNumberOrDate(rangeEnd)\n .validateAndAggregate()\n\n if (valid) {\n return this.ge(field, rangeStart).lt(field, rangeEnd)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n getFilterModel() {\n if (this.invalidArguments.length > 0) {\n throw new Error(this.invalidArguments.join(' '))\n }\n return optimisedQuery(this.filterTree)\n }\n\n setFilterModel(filterModel) {\n return this._copy(filterModel, [])\n }\n\n _binaryAnd(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDate(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndStringOperand(filterOperatorName, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsString(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndSetOperand(filterOperatorName, operatorName, args) {\n const [field, ...rawOperands] = Array.prototype.slice.call(args)\n const operands = isArray(rawOperands[0]) ? rawOperands[0] : rawOperands\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsAtLeastTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDateForAll(operands)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operands\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _makeNewFilter(field, filterOperatorName, operand) {\n const newFilterTree = clone(this.filterTree)\n\n // filters with 'undefined' value are lost during serialization,\n // e.g. { val: { $ne: undefined } | translates to { val: {} }\n // Replacing 'undefined' with 'null' retains the filter.\n const serializableOperand = operand === undefined ? null : operand\n const newFilter = this._buildFilter(\n field,\n filterOperatorName,\n serializableOperand\n )\n\n if (isArray(newFilterTree.$and)) {\n newFilterTree.$and.push(newFilter)\n return newFilterTree\n } else {\n const result = isEmptyObject(newFilterTree)\n ? inAnd(newFilter)\n : inAnd(newFilterTree, newFilter)\n return result\n }\n }\n\n _buildFilter(field, filterOperatorName, operand) {\n if (filterOperatorName !== '$eq') {\n const newFilter = {}\n newFilter[field] = {}\n newFilter[field][filterOperatorName] = this._encode(operand)\n return newFilter\n } else {\n const newFilter = {}\n newFilter[field] = this._encode(operand)\n return newFilter\n }\n }\n\n _encode(operand) {\n if (isFunction(this.encoder)) {\n return this.encoder(operand)\n } else {\n return operand\n }\n }\n\n _copy(filterTree, invalidArguments) {\n // @ts-ignore-next-line\n return new this.constructor({ ...this, filterTree, invalidArguments })\n }\n\n _filterValidator(filterOperatorName): Validator {\n return new FilterValidator(\n filterOperatorName,\n this.invalidArguments,\n this.constructor\n )\n }\n }\n\nfunction isConjunctiveFormFilter(filterTree) {\n return isArray(filterTree.$and)\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0\n}\n\nfunction inAnd(...args) {\n return {\n $and: args,\n }\n}\n\nfunction inAndOptimized(...args) {\n return {\n $and: args.reduce(\n (aggr, val) =>\n isConjunctiveFormFilter(val)\n ? aggr.concat(val.$and)\n : aggr.concat([val]),\n []\n ),\n }\n}\n\nfunction isEmptyAnd(node) {\n return node && node.$and && node.$and.length === 0\n}\n\nexport default filterMixin\n"],"mappings":"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"}
1
+ {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","_filterValidator","_queryOptimiser","filterMixin","Base","constructor","obj","_defineProperty2","default","filterTree","$and","invalidArguments","encoder","eq","args","_binaryAnd","ne","ge","_AndLogicalEquivalence","gt","le","lt","isNotEmpty","field","newInvalidArguments","valid","arityIsOne","arguments","validFieldName","validateAndAggregate","_copy","isEmpty","startsWith","_AndStringOperand","endsWith","contains","hasSome","_AndSetOperand","hasAll","or","orQuery","isInstanceOfSameClass","prefix","isEmptyAnd","inAnd","$or","concat","and","andQuery","not","notQuery","newFilterTree","clone","notClause","$not","resultingFilter","inAndOptimized","between","rangeStart","rangeEnd","arityIsThree","sameType","typeIsStringNumberOrDate","getFilterModel","length","Error","join","optimisedQuery","setFilterModel","filterModel","filterOperatorSymbol","operatorName","operand","Array","prototype","slice","call","arityIsTwo","_makeNewFilter","filterOperatorName","typeIsString","rawOperands","operands","isArray","arityIsAtLeastTwo","typeIsStringNumberOrDateForAll","serializableOperand","undefined","newFilter","_buildFilter","push","result","isEmptyObject","_encode","isFunction","FilterValidator","isConjunctiveFormFilter","Object","keys","reduce","aggr","val","node","_default","exports"],"sources":["../../src/filter-mixin.ts"],"sourcesContent":["import { isArray, isFunction } from './type-utils'\nimport clone from './clone'\nimport { FilterValidator } from './filter-validator'\nimport { Validator } from './validator'\nimport { optimisedQuery } from './query-optimiser'\n\nconst filterMixin = (Base: any = class {}) =>\n class extends Base {\n filterTree\n invalidArguments\n encoder\n\n constructor(obj: { filterTree?; invalidArguments?; encoder? } = {}) {\n super(obj)\n this.filterTree = obj.filterTree || { $and: [] }\n this.invalidArguments = obj.invalidArguments || []\n this.encoder = obj.encoder || {}\n }\n\n eq(...args) {\n return this._binaryAnd('$eq', '.eq', args)\n }\n\n ne(...args) {\n return this._binaryAnd('$ne', '.ne', args)\n }\n\n ge(...args) {\n return this._AndLogicalEquivalence('$gte', '.ge', args)\n }\n\n gt(...args) {\n return this._AndLogicalEquivalence('$gt', '.gt', args)\n }\n\n le(...args) {\n return this._AndLogicalEquivalence('$lte', '.le', args)\n }\n\n lt(...args) {\n return this._AndLogicalEquivalence('$lt', '.lt', args)\n }\n\n isNotEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isNotEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.ne(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n isEmpty(field) {\n const [newInvalidArguments, valid] = this._filterValidator('.isEmpty')\n .arityIsOne(arguments)\n .validFieldName(field)\n .validateAndAggregate()\n\n if (valid) {\n return this.eq(field, null)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n startsWith(...args) {\n return this._AndStringOperand('$startsWith', '.startsWith', args)\n }\n\n endsWith(...args) {\n return this._AndStringOperand('$endsWith', '.endsWith', args)\n }\n\n contains(...args) {\n return this._AndStringOperand('$contains', '.contains', args)\n }\n\n hasSome(...args) {\n return this._AndSetOperand('$hasSome', '.hasSome', args)\n }\n\n hasAll(...args) {\n return this._AndSetOperand('$hasAll', '.hasAll', args)\n }\n\n or(orQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.or')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(orQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd({ $or: [...prefix, orQuery.filterTree] }),\n newInvalidArguments.concat(orQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n and(andQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.and')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(andQuery)\n .validateAndAggregate()\n\n if (valid) {\n const prefix = isEmptyAnd(this.filterTree) ? [] : [this.filterTree]\n return this._copy(\n inAnd(...prefix, andQuery.filterTree),\n newInvalidArguments.concat(andQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n not(notQuery) {\n const [newInvalidArguments, valid] = this._filterValidator('.not')\n .arityIsOne(arguments)\n .isInstanceOfSameClass(notQuery)\n .validateAndAggregate()\n\n if (valid) {\n const newFilterTree = clone(this.filterTree)\n const notClause = { $not: [notQuery.filterTree] }\n const resultingFilter = inAndOptimized(newFilterTree, notClause)\n\n return this._copy(\n resultingFilter,\n newInvalidArguments.concat(notQuery.invalidArguments)\n )\n } else {\n return this._copy(this.filterTree, newInvalidArguments)\n }\n }\n\n between(field, rangeStart, rangeEnd) {\n const [newInvalidArguments, valid] = this._filterValidator('.between')\n .arityIsThree(arguments)\n .sameType(rangeStart, rangeEnd)\n .typeIsStringNumberOrDate(rangeStart)\n .typeIsStringNumberOrDate(rangeEnd)\n .validateAndAggregate()\n\n if (valid) {\n return this.ge(field, rangeStart).lt(field, rangeEnd)\n }\n\n return this._copy(this.filterTree, newInvalidArguments)\n }\n\n getFilterModel() {\n if (this.invalidArguments.length > 0) {\n throw new Error(this.invalidArguments.join(' '))\n }\n return optimisedQuery(this.filterTree)\n }\n\n setFilterModel(filterModel) {\n return this._copy(filterModel, [])\n }\n\n _binaryAnd(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndLogicalEquivalence(filterOperatorSymbol, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDate(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorSymbol,\n operand\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndStringOperand(filterOperatorName, operatorName, args) {\n const [field, operand] = Array.prototype.slice.call(args)\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsTwo(args)\n .validFieldName(field)\n .typeIsString(operand)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operand\n )\n\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _AndSetOperand(filterOperatorName, operatorName, args) {\n const [field, ...rawOperands] = Array.prototype.slice.call(args)\n const operands = isArray(rawOperands[0]) ? rawOperands[0] : rawOperands\n\n const [newInvalidArguments] = this._filterValidator(operatorName)\n .arityIsAtLeastTwo(args)\n .validFieldName(field)\n .typeIsStringNumberOrDateForAll(operands)\n .validateAndAggregate()\n\n const newFilterTree = this._makeNewFilter(\n field,\n filterOperatorName,\n operands\n )\n return this._copy(newFilterTree, newInvalidArguments)\n }\n\n _makeNewFilter(field, filterOperatorName, operand) {\n const newFilterTree = clone(this.filterTree)\n\n // filters with 'undefined' value are lost during serialization,\n // e.g. { val: { $ne: undefined } | translates to { val: {} }\n // Replacing 'undefined' with 'null' retains the filter.\n const serializableOperand = operand === undefined ? null : operand\n const newFilter = this._buildFilter(\n field,\n filterOperatorName,\n serializableOperand\n )\n\n if (isArray(newFilterTree.$and)) {\n newFilterTree.$and.push(newFilter)\n return newFilterTree\n } else {\n const result = isEmptyObject(newFilterTree)\n ? inAnd(newFilter)\n : inAnd(newFilterTree, newFilter)\n return result\n }\n }\n\n _buildFilter(field, filterOperatorName, operand) {\n if (filterOperatorName !== '$eq') {\n const newFilter = {}\n newFilter[field] = {}\n newFilter[field][filterOperatorName] = this._encode(operand)\n return newFilter\n } else {\n const newFilter = {}\n newFilter[field] = this._encode(operand)\n return newFilter\n }\n }\n\n _encode(operand) {\n if (isFunction(this.encoder)) {\n return this.encoder(operand)\n } else {\n return operand\n }\n }\n\n _copy(filterTree, invalidArguments) {\n // @ts-ignore-next-line\n return new this.constructor({ ...this, filterTree, invalidArguments })\n }\n\n _filterValidator(filterOperatorName): Validator {\n return new FilterValidator(\n filterOperatorName,\n this.invalidArguments,\n this.constructor\n )\n }\n }\n\nfunction isConjunctiveFormFilter(filterTree) {\n return isArray(filterTree.$and)\n}\n\nfunction isEmptyObject(obj) {\n return Object.keys(obj).length === 0\n}\n\nfunction inAnd(...args) {\n return {\n $and: args,\n }\n}\n\nfunction inAndOptimized(...args) {\n return {\n $and: args.reduce(\n (aggr, val) =>\n isConjunctiveFormFilter(val)\n ? aggr.concat(val.$and)\n : aggr.concat([val]),\n []\n ),\n }\n}\n\nfunction isEmptyAnd(node) {\n return node && node.$and && node.$and.length === 0\n}\n\nexport default filterMixin\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","FilterValidator","constructor","operatorName","previousInvalidArguments","ctor","_defineProperty2","default","_validations","_invalidArguments","clone","typeIsString","value","addValidation","isString","typeForDisplay","typeIsStringNumberOrDate","isDateStringOrNumber","sameType","first","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","obj","arityIsOne","args","length","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_appendIfInvalid","message","exports","isNumber","isDate"],"sources":["../../src/filter-validator.ts"],"sourcesContent":["import { typeForDisplay, isDate, isString, isNumber } from './type-utils'\nimport clone from './clone'\nimport { Validator } from './validator'\n\nexport class FilterValidator implements Validator {\n private ctor\n private _invalidArguments: string[]\n public _validations: Validation[]\n public operatorName?: string\n\n constructor(operatorName, previousInvalidArguments, ctor) {\n this._validations = []\n this.operatorName = operatorName\n this.ctor = ctor\n this._invalidArguments = clone(previousInvalidArguments)\n }\n\n typeIsString(value) {\n return this.addValidation(\n () => isString(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () =>\n `Invalid ${this.operatorName} parameter values [${typeForDisplay(\n first\n )}] and [${typeForDisplay(\n second\n )}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`\n )\n }\n\n validFieldName(field) {\n return this.addValidation(\n () => isString(field),\n () =>\n `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${\n this.operatorName\n } field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () =>\n `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${\n this.operatorName\n } expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`\n )\n }\n\n arityIsTwo(args) {\n return this.addValidation(\n () => args.length === 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`\n )\n }\n\n arityIsThree(args) {\n return this.addValidation(\n () => args.length === 3,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`\n )\n }\n\n arityIsAtLeastTwo(args) {\n return this.addValidation(\n () => args.length >= 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`\n )\n }\n\n addValidation(predicateFn, messageFn) {\n this._validations.push({\n predicateFn,\n messageFn,\n })\n return this\n }\n\n validateAndAggregate(): [string[], boolean] {\n const valid = this._validations.every(({ predicateFn, messageFn }) =>\n this._appendIfInvalid(predicateFn(), messageFn())\n )\n return [this._invalidArguments, valid]\n }\n\n _appendIfInvalid(valid, message) {\n if (!valid) {\n this._invalidArguments.push(message)\n return false\n }\n return true\n }\n}\n\nfunction isDateStringOrNumber(value) {\n return isString(value) || isNumber(value) || isDate(value)\n}\n\ninterface Validation {\n predicateFn: Function\n messageFn: Function\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_typeUtils","require","_clone","_interopRequireDefault","FilterValidator","constructor","operatorName","previousInvalidArguments","ctor","_defineProperty2","default","_validations","_invalidArguments","clone","typeIsString","value","addValidation","isString","typeForDisplay","typeIsStringNumberOrDate","isDateStringOrNumber","sameType","first","second","typeIsStringNumberOrDateForAll","values","every","validFieldName","field","isInstanceOfSameClass","obj","arityIsOne","args","length","arityIsTwo","arityIsThree","arityIsAtLeastTwo","predicateFn","messageFn","push","validateAndAggregate","valid","_appendIfInvalid","message","exports","isNumber","isDate"],"sources":["../../src/filter-validator.ts"],"sourcesContent":["import { typeForDisplay, isDate, isString, isNumber } from './type-utils'\nimport clone from './clone'\nimport { Validator } from './validator'\n\nexport class FilterValidator implements Validator {\n private ctor\n private _invalidArguments: string[]\n public _validations: Validation[]\n public operatorName?: string\n\n constructor(operatorName, previousInvalidArguments, ctor) {\n this._validations = []\n this.operatorName = operatorName\n this.ctor = ctor\n this._invalidArguments = clone(previousInvalidArguments)\n }\n\n typeIsString(value) {\n return this.addValidation(\n () => isString(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. ${this.operatorName} parameter must be a String.`\n )\n }\n\n typeIsStringNumberOrDate(value) {\n return this.addValidation(\n () => isDateStringOrNumber(value),\n () =>\n `Invalid ${this.operatorName} parameter value [${typeForDisplay(\n value\n )}]. Valid ${\n this.operatorName\n } parameter types are String, Number or Date.`\n )\n }\n\n sameType(first, second) {\n return this.addValidation(\n () => typeForDisplay(first) === typeForDisplay(second),\n () =>\n `Invalid ${this.operatorName} parameter values [${typeForDisplay(\n first\n )}] and [${typeForDisplay(\n second\n )}]. Both parameters must be of the same type.`\n )\n }\n\n typeIsStringNumberOrDateForAll(values) {\n return this.addValidation(\n () => values.every(isDateStringOrNumber),\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} supports only Number, String or Date items.`\n )\n }\n\n validFieldName(field) {\n return this.addValidation(\n () => isString(field),\n () =>\n `Invalid ${this.operatorName} field value [${typeForDisplay(field)}]. ${\n this.operatorName\n } field must be a String.`\n )\n }\n\n isInstanceOfSameClass(obj) {\n return this.addValidation(\n () => obj instanceof this.ctor,\n () =>\n `Invalid ${this.operatorName} parameter [${typeForDisplay(obj)}]. ${\n this.operatorName\n } expects FilterBuilder only.`\n )\n }\n\n arityIsOne(args) {\n return this.addValidation(\n () => args.length === 1,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires one parameter.`\n )\n }\n\n arityIsTwo(args) {\n return this.addValidation(\n () => args.length === 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires two parameters.`\n )\n }\n\n arityIsThree(args) {\n return this.addValidation(\n () => args.length === 3,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires three parameters.`\n )\n }\n\n arityIsAtLeastTwo(args) {\n return this.addValidation(\n () => args.length >= 2,\n () =>\n `Invalid ${this.operatorName} usage. ${this.operatorName} requires at least two parameters.`\n )\n }\n\n addValidation(predicateFn, messageFn) {\n this._validations.push({\n predicateFn,\n messageFn,\n })\n return this\n }\n\n validateAndAggregate(): [string[], boolean] {\n const valid = this._validations.every(({ predicateFn, messageFn }) =>\n this._appendIfInvalid(predicateFn(), messageFn())\n )\n return [this._invalidArguments, valid]\n }\n\n _appendIfInvalid(valid, message) {\n if (!valid) {\n this._invalidArguments.push(message)\n return false\n }\n return true\n }\n}\n\nfunction isDateStringOrNumber(value) {\n return isString(value) || isNumber(value) || isDate(value)\n}\n\ninterface Validation {\n predicateFn: Function\n messageFn: Function\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_filterBuilder","require","exports","filterBuilder","_filterMixin","_interopRequireDefault","filterMixin","default","_queryOptimiser","optimiseQuery","optimisedQuery","_validator","Validator","_wixDataEncoder","wixDataEncoder","_default"],"sources":["../../src/index.ts"],"sourcesContent":["import { filterBuilder } from './filter-builder'\nimport filterMixin from './filter-mixin'\nimport { optimisedQuery as optimiseQuery } from './query-optimiser'\nimport { Validator } from './validator'\nimport { wixDataEncoder } from './wix-data-encoder'\n\nexport { filterMixin, filterBuilder, optimiseQuery, Validator, wixDataEncoder }\n\nexport default filterBuilder\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAgDC,OAAA,CAAAC,aAAA,GAAAH,cAAA,CAAAG,aAAA;AAChD,IAAAC,YAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAwCC,OAAA,CAAAI,WAAA,GAAAF,YAAA,CAAAG,OAAA;AACxC,IAAAC,eAAA,GAAAP,OAAA;AAAmEC,OAAA,CAAAO,aAAA,GAAAD,eAAA,CAAAE,cAAA;AACnE,IAAAC,UAAA,GAAAV,OAAA;AAAuCC,OAAA,CAAAU,SAAA,GAAAD,UAAA,CAAAC,SAAA;AACvC,IAAAC,eAAA,GAAAZ,OAAA;AAAmDC,OAAA,CAAAY,cAAA,GAAAD,eAAA,CAAAC,cAAA;AAAA,IAAAC,QAAA,GAAAb,OAAA,CAAAK,OAAA,GAIpCJ,4BAAa"}
1
+ {"version":3,"names":["_filterBuilder","require","exports","filterBuilder","_filterMixin","_interopRequireDefault","filterMixin","default","_queryOptimiser","optimiseQuery","optimisedQuery","_validator","Validator","_wixDataEncoder","wixDataEncoder","_default"],"sources":["../../src/index.ts"],"sourcesContent":["import { filterBuilder } from './filter-builder'\nimport filterMixin from './filter-mixin'\nimport { optimisedQuery as optimiseQuery } from './query-optimiser'\nimport { Validator } from './validator'\nimport { wixDataEncoder } from './wix-data-encoder'\n\nexport { filterMixin, filterBuilder, optimiseQuery, Validator, wixDataEncoder }\n\nexport default filterBuilder\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAgDC,OAAA,CAAAC,aAAA,GAAAH,cAAA,CAAAG,aAAA;AAChD,IAAAC,YAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAwCC,OAAA,CAAAI,WAAA,GAAAF,YAAA,CAAAG,OAAA;AACxC,IAAAC,eAAA,GAAAP,OAAA;AAAmEC,OAAA,CAAAO,aAAA,GAAAD,eAAA,CAAAE,cAAA;AACnE,IAAAC,UAAA,GAAAV,OAAA;AAAuCC,OAAA,CAAAU,SAAA,GAAAD,UAAA,CAAAC,SAAA;AACvC,IAAAC,eAAA,GAAAZ,OAAA;AAAmDC,OAAA,CAAAY,cAAA,GAAAD,eAAA,CAAAC,cAAA;AAAA,IAAAC,QAAA,GAAAb,OAAA,CAAAK,OAAA,GAIpCJ,4BAAa","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","newQuery","fullyOptimised","Array","isArray","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","length","newElements","element","queryAfterOptimisingEntries","changedStage1","fullEntriesOptimisation","queryAfterFullOptimisation","changedStage2","fullObjectOptimisation","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","entriesAsObject","key","value","newValue","reduce","acc","node","optimisation","newNode","args","$and","basicObjects","operatorObjects","forEach","arg","isOperator","haveOverlappingFields","combinedBasicObjects","assign","keys","every","name","startsWith","objects","nonUniqueKeys","it","a","b","uniqueKeys","unique","values","dict","v","hasNestedAnds","find","newArgs","result","current","and","$or","hasNestedOrs","or","obj","Date"],"sources":["../../src/query-optimiser.ts"],"sourcesContent":["const optimisations = [\n optimisedUnaryAnd,\n optimisedEmptyAnd,\n optimisedAndsAsObjects,\n optimisedNestedAnds,\n optimisedNestedOrs,\n]\n\nexport function optimisedQuery(query) {\n const [newQuery] = fullyOptimised(query)\n return newQuery\n}\n\nfunction fullyOptimised(query) {\n if (Array.isArray(query)) {\n return fullyOptimisedArray(query)\n }\n if (\n typeof query === 'object' &&\n query !== null &&\n !instanceOfIgnoredType(query)\n ) {\n return fullyOptimisedObject(query)\n }\n return [query, false]\n}\n\nfunction fullyOptimisedArray(query) {\n const optimisedElements = query.map(fullyOptimised)\n const somethingChanged =\n 0 < optimisedElements.filter(([, elementChanged]) => elementChanged).length\n const newElements = optimisedElements.map(([element]) => element)\n return [newElements, somethingChanged]\n}\n\nfunction fullyOptimisedObject(query) {\n const [queryAfterOptimisingEntries, changedStage1] =\n fullEntriesOptimisation(query)\n const [queryAfterFullOptimisation, changedStage2] = fullObjectOptimisation(\n queryAfterOptimisingEntries\n )\n const changed = changedStage1 || changedStage2\n return [queryAfterFullOptimisation, changed]\n\n function fullObjectOptimisation(query) {\n const updatedQuery = applyFirstOptimisation(query)\n if (!updatedQuery) {\n return [query, false]\n }\n const [finalQuery] = fullyOptimised(updatedQuery)\n return [finalQuery, true]\n }\n\n function fullEntriesOptimisation(query) {\n const changedEntries = Object.entries(query)\n .map(entryOptimisation)\n .filter(([, , changed]) => changed)\n const newQuery = { ...query, ...entriesAsObject(changedEntries) }\n const changed = !!changedEntries.length\n return [newQuery, changed]\n }\n\n function entryOptimisation([key, value]) {\n const [newValue, changed] = fullyOptimised(value)\n return [key, newValue, changed]\n }\n\n function entriesAsObject(entries) {\n return entries.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n}\n\nfunction applyFirstOptimisation(node) {\n for (const optimisation of optimisations) {\n const newNode = optimisation(node)\n if (newNode) {\n return newNode\n }\n }\n}\n\nfunction optimisedUnaryAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 1) {\n return args[0]\n }\n}\n\nfunction optimisedEmptyAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 0) {\n return {}\n }\n return null\n}\n\nfunction optimisedAndsAsObjects(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n let basicObjects: any[] = []\n let operatorObjects: any[] = []\n\n args.forEach((arg) => {\n if (isOperator(arg)) {\n operatorObjects = [...operatorObjects, arg]\n } else {\n basicObjects = [...basicObjects, arg]\n }\n })\n\n if (basicObjects.length <= 1 || haveOverlappingFields(basicObjects)) {\n return\n }\n const combinedBasicObjects = Object.assign({}, ...basicObjects)\n\n return { $and: [combinedBasicObjects, ...operatorObjects] }\n\n function isOperator(node) {\n const keys = Object.keys(node)\n return keys.every((name) => name.startsWith('$')) && keys.length > 0\n }\n\n function haveOverlappingFields(objects) {\n const nonUniqueKeys = objects\n .map((it) => Object.keys(it))\n .reduce((a, b) => [...a, ...b], [])\n const uniqueKeys = unique(nonUniqueKeys)\n return uniqueKeys.length !== nonUniqueKeys.length\n }\n\n function unique(values) {\n const dict = {}\n values.forEach((v) => (dict[v] = true))\n return Object.keys(dict)\n }\n}\n\nfunction optimisedNestedAnds(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n const hasNestedAnds = !!args.find((it) => it.$and)\n if (!hasNestedAnds) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const and = current.$and\n if (!and) {\n return [...result, current]\n }\n return [...result, ...and]\n }, [])\n return { $and: newArgs }\n}\n\nfunction optimisedNestedOrs(node) {\n const args = node.$or\n if (!args) {\n return\n }\n\n const hasNestedOrs = !!args.find((it) => it.$or)\n if (!hasNestedOrs) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const or = current.$or\n if (!or) {\n return [...result, current]\n }\n return [...result, ...or]\n }, [])\n return { $or: newArgs }\n}\n\nfunction instanceOfIgnoredType(obj) {\n return obj instanceof Date\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["optimisations","optimisedUnaryAnd","optimisedEmptyAnd","optimisedAndsAsObjects","optimisedNestedAnds","optimisedNestedOrs","optimisedQuery","query","newQuery","fullyOptimised","Array","isArray","fullyOptimisedArray","instanceOfIgnoredType","fullyOptimisedObject","optimisedElements","map","somethingChanged","filter","elementChanged","length","newElements","element","queryAfterOptimisingEntries","changedStage1","fullEntriesOptimisation","queryAfterFullOptimisation","changedStage2","fullObjectOptimisation","changed","updatedQuery","applyFirstOptimisation","finalQuery","changedEntries","Object","entries","entryOptimisation","entriesAsObject","key","value","newValue","reduce","acc","node","optimisation","newNode","args","$and","basicObjects","operatorObjects","forEach","arg","isOperator","haveOverlappingFields","combinedBasicObjects","assign","keys","every","name","startsWith","objects","nonUniqueKeys","it","a","b","uniqueKeys","unique","values","dict","v","hasNestedAnds","find","newArgs","result","current","and","$or","hasNestedOrs","or","obj","Date"],"sources":["../../src/query-optimiser.ts"],"sourcesContent":["const optimisations = [\n optimisedUnaryAnd,\n optimisedEmptyAnd,\n optimisedAndsAsObjects,\n optimisedNestedAnds,\n optimisedNestedOrs,\n]\n\nexport function optimisedQuery(query) {\n const [newQuery] = fullyOptimised(query)\n return newQuery\n}\n\nfunction fullyOptimised(query) {\n if (Array.isArray(query)) {\n return fullyOptimisedArray(query)\n }\n if (\n typeof query === 'object' &&\n query !== null &&\n !instanceOfIgnoredType(query)\n ) {\n return fullyOptimisedObject(query)\n }\n return [query, false]\n}\n\nfunction fullyOptimisedArray(query) {\n const optimisedElements = query.map(fullyOptimised)\n const somethingChanged =\n 0 < optimisedElements.filter(([, elementChanged]) => elementChanged).length\n const newElements = optimisedElements.map(([element]) => element)\n return [newElements, somethingChanged]\n}\n\nfunction fullyOptimisedObject(query) {\n const [queryAfterOptimisingEntries, changedStage1] =\n fullEntriesOptimisation(query)\n const [queryAfterFullOptimisation, changedStage2] = fullObjectOptimisation(\n queryAfterOptimisingEntries\n )\n const changed = changedStage1 || changedStage2\n return [queryAfterFullOptimisation, changed]\n\n function fullObjectOptimisation(query) {\n const updatedQuery = applyFirstOptimisation(query)\n if (!updatedQuery) {\n return [query, false]\n }\n const [finalQuery] = fullyOptimised(updatedQuery)\n return [finalQuery, true]\n }\n\n function fullEntriesOptimisation(query) {\n const changedEntries = Object.entries(query)\n .map(entryOptimisation)\n .filter(([, , changed]) => changed)\n const newQuery = { ...query, ...entriesAsObject(changedEntries) }\n const changed = !!changedEntries.length\n return [newQuery, changed]\n }\n\n function entryOptimisation([key, value]) {\n const [newValue, changed] = fullyOptimised(value)\n return [key, newValue, changed]\n }\n\n function entriesAsObject(entries) {\n return entries.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n}\n\nfunction applyFirstOptimisation(node) {\n for (const optimisation of optimisations) {\n const newNode = optimisation(node)\n if (newNode) {\n return newNode\n }\n }\n}\n\nfunction optimisedUnaryAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 1) {\n return args[0]\n }\n}\n\nfunction optimisedEmptyAnd(node) {\n const args = node.$and\n if (Array.isArray(args) && args.length === 0) {\n return {}\n }\n return null\n}\n\nfunction optimisedAndsAsObjects(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n let basicObjects: any[] = []\n let operatorObjects: any[] = []\n\n args.forEach((arg) => {\n if (isOperator(arg)) {\n operatorObjects = [...operatorObjects, arg]\n } else {\n basicObjects = [...basicObjects, arg]\n }\n })\n\n if (basicObjects.length <= 1 || haveOverlappingFields(basicObjects)) {\n return\n }\n const combinedBasicObjects = Object.assign({}, ...basicObjects)\n\n return { $and: [combinedBasicObjects, ...operatorObjects] }\n\n function isOperator(node) {\n const keys = Object.keys(node)\n return keys.every((name) => name.startsWith('$')) && keys.length > 0\n }\n\n function haveOverlappingFields(objects) {\n const nonUniqueKeys = objects\n .map((it) => Object.keys(it))\n .reduce((a, b) => [...a, ...b], [])\n const uniqueKeys = unique(nonUniqueKeys)\n return uniqueKeys.length !== nonUniqueKeys.length\n }\n\n function unique(values) {\n const dict = {}\n values.forEach((v) => (dict[v] = true))\n return Object.keys(dict)\n }\n}\n\nfunction optimisedNestedAnds(node) {\n const args = node.$and\n if (!args) {\n return\n }\n\n const hasNestedAnds = !!args.find((it) => it.$and)\n if (!hasNestedAnds) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const and = current.$and\n if (!and) {\n return [...result, current]\n }\n return [...result, ...and]\n }, [])\n return { $and: newArgs }\n}\n\nfunction optimisedNestedOrs(node) {\n const args = node.$or\n if (!args) {\n return\n }\n\n const hasNestedOrs = !!args.find((it) => it.$or)\n if (!hasNestedOrs) {\n return\n }\n\n const newArgs = args.reduce((result, current) => {\n const or = current.$or\n if (!or) {\n return [...result, current]\n }\n return [...result, ...or]\n }, [])\n return { $or: newArgs }\n}\n\nfunction instanceOfIgnoredType(obj) {\n return obj instanceof Date\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_kindOf","_interopRequireDefault","require","isObject","obj","getKind","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","typeForDisplay","upperCaseFirst","isUndefined","isNull","str","first","slice","toUpperCase","rest","length"],"sources":["../../src/type-utils.ts"],"sourcesContent":["import getKind from 'kind-of'\n\nexport function isObject(obj) {\n return getKind(obj) === 'object'\n}\n\nexport function isArray(arr) {\n return getKind(arr) === 'array'\n}\n\nexport function isDate(obj) {\n return getKind(obj) === 'date'\n}\n\nexport function isNumber(obj) {\n return getKind(obj) === 'number'\n}\n\nexport function isBoolean(obj) {\n return getKind(obj) === 'boolean'\n}\n\nexport function isString(obj) {\n return getKind(obj) === 'string'\n}\n\nexport function isFunction(obj) {\n return getKind(obj) === 'function'\n}\n\nexport function typeForDisplay(obj) {\n return upperCaseFirst(getKind(obj))\n}\n\nexport function isUndefined(obj) {\n return getKind(obj) === 'undefined'\n}\n\nexport function isNull(obj) {\n return getKind(obj) === 'null'\n}\n\nfunction upperCaseFirst(str) {\n if (!isString(str)) {\n return str\n }\n const first = str.slice(0, 1).toUpperCase()\n const rest = str.slice(1, str.length)\n return first + rest\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,SAASC,QAAQA,CAACC,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASE,OAAOA,CAACC,GAAG,EAAE;EAC3B,OAAO,IAAAF,eAAO,EAACE,GAAG,CAAC,KAAK,OAAO;AACjC;AAEO,SAASC,MAAMA,CAACJ,GAAG,EAAE;EAC1B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,MAAM;AAChC;AAEO,SAASK,QAAQA,CAACL,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASM,SAASA,CAACN,GAAG,EAAE;EAC7B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,SAAS;AACnC;AAEO,SAASO,QAAQA,CAACP,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASQ,UAAUA,CAACR,GAAG,EAAE;EAC9B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,UAAU;AACpC;AAEO,SAASS,cAAcA,CAACT,GAAG,EAAE;EAClC,OAAOU,cAAc,CAAC,IAAAT,eAAO,EAACD,GAAG,CAAC,CAAC;AACrC;AAEO,SAASW,WAAWA,CAACX,GAAG,EAAE;EAC/B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,WAAW;AACrC;AAEO,SAASY,MAAMA,CAACZ,GAAG,EAAE;EAC1B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,MAAM;AAChC;AAEA,SAASU,cAAcA,CAACG,GAAG,EAAE;EAC3B,IAAI,CAACN,QAAQ,CAACM,GAAG,CAAC,EAAE;IAClB,OAAOA,GAAG;EACZ;EACA,MAAMC,KAAK,GAAGD,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC3C,MAAMC,IAAI,GAAGJ,GAAG,CAACE,KAAK,CAAC,CAAC,EAAEF,GAAG,CAACK,MAAM,CAAC;EACrC,OAAOJ,KAAK,GAAGG,IAAI;AACrB"}
1
+ {"version":3,"names":["_kindOf","_interopRequireDefault","require","isObject","obj","getKind","isArray","arr","isDate","isNumber","isBoolean","isString","isFunction","typeForDisplay","upperCaseFirst","isUndefined","isNull","str","first","slice","toUpperCase","rest","length"],"sources":["../../src/type-utils.ts"],"sourcesContent":["import getKind from 'kind-of'\n\nexport function isObject(obj) {\n return getKind(obj) === 'object'\n}\n\nexport function isArray(arr) {\n return getKind(arr) === 'array'\n}\n\nexport function isDate(obj) {\n return getKind(obj) === 'date'\n}\n\nexport function isNumber(obj) {\n return getKind(obj) === 'number'\n}\n\nexport function isBoolean(obj) {\n return getKind(obj) === 'boolean'\n}\n\nexport function isString(obj) {\n return getKind(obj) === 'string'\n}\n\nexport function isFunction(obj) {\n return getKind(obj) === 'function'\n}\n\nexport function typeForDisplay(obj) {\n return upperCaseFirst(getKind(obj))\n}\n\nexport function isUndefined(obj) {\n return getKind(obj) === 'undefined'\n}\n\nexport function isNull(obj) {\n return getKind(obj) === 'null'\n}\n\nfunction upperCaseFirst(str) {\n if (!isString(str)) {\n return str\n }\n const first = str.slice(0, 1).toUpperCase()\n const rest = str.slice(1, str.length)\n return first + rest\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,SAASC,QAAQA,CAACC,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASE,OAAOA,CAACC,GAAG,EAAE;EAC3B,OAAO,IAAAF,eAAO,EAACE,GAAG,CAAC,KAAK,OAAO;AACjC;AAEO,SAASC,MAAMA,CAACJ,GAAG,EAAE;EAC1B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,MAAM;AAChC;AAEO,SAASK,QAAQA,CAACL,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASM,SAASA,CAACN,GAAG,EAAE;EAC7B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,SAAS;AACnC;AAEO,SAASO,QAAQA,CAACP,GAAG,EAAE;EAC5B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,QAAQ;AAClC;AAEO,SAASQ,UAAUA,CAACR,GAAG,EAAE;EAC9B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,UAAU;AACpC;AAEO,SAASS,cAAcA,CAACT,GAAG,EAAE;EAClC,OAAOU,cAAc,CAAC,IAAAT,eAAO,EAACD,GAAG,CAAC,CAAC;AACrC;AAEO,SAASW,WAAWA,CAACX,GAAG,EAAE;EAC/B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,WAAW;AACrC;AAEO,SAASY,MAAMA,CAACZ,GAAG,EAAE;EAC1B,OAAO,IAAAC,eAAO,EAACD,GAAG,CAAC,KAAK,MAAM;AAChC;AAEA,SAASU,cAAcA,CAACG,GAAG,EAAE;EAC3B,IAAI,CAACN,QAAQ,CAACM,GAAG,CAAC,EAAE;IAClB,OAAOA,GAAG;EACZ;EACA,MAAMC,KAAK,GAAGD,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC3C,MAAMC,IAAI,GAAGJ,GAAG,CAACE,KAAK,CAAC,CAAC,EAAEF,GAAG,CAACK,MAAM,CAAC;EACrC,OAAOJ,KAAK,GAAGG,IAAI;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/validator.ts"],"sourcesContent":["export interface Validator {\n typeIsString(value): Validator\n typeIsStringNumberOrDate(value): Validator\n sameType(first, second): Validator\n typeIsStringNumberOrDateForAll(values): Validator\n validFieldName(field): Validator\n isInstanceOfSameClass(obj): Validator\n arityIsOne(args): Validator\n arityIsTwo(args): Validator\n arityIsThree(args): Validator\n arityIsAtLeastTwo(args): Validator\n validateAndAggregate(): [string[], boolean]\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../src/validator.ts"],"sourcesContent":["export interface Validator {\n typeIsString(value): Validator\n typeIsStringNumberOrDate(value): Validator\n sameType(first, second): Validator\n typeIsStringNumberOrDateForAll(values): Validator\n validFieldName(field): Validator\n isInstanceOfSameClass(obj): Validator\n arityIsOne(args): Validator\n arityIsTwo(args): Validator\n arityIsThree(args): Validator\n arityIsAtLeastTwo(args): Validator\n validateAndAggregate(): [string[], boolean]\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_typeUtils","require","wixDataEncoder","operand","isDate","$date","toJSON"],"sources":["../../src/wix-data-encoder.ts"],"sourcesContent":["import { isDate } from './type-utils'\n\nexport function wixDataEncoder(operand) {\n if (isDate(operand)) {\n return { $date: operand.toJSON() }\n } else {\n return operand\n }\n}\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,cAAcA,CAACC,OAAO,EAAE;EACtC,IAAI,IAAAC,iBAAM,EAACD,OAAO,CAAC,EAAE;IACnB,OAAO;MAAEE,KAAK,EAAEF,OAAO,CAACG,MAAM,CAAC;IAAE,CAAC;EACpC,CAAC,MAAM;IACL,OAAOH,OAAO;EAChB;AACF"}
1
+ {"version":3,"names":["_typeUtils","require","wixDataEncoder","operand","isDate","$date","toJSON"],"sources":["../../src/wix-data-encoder.ts"],"sourcesContent":["import { isDate } from './type-utils'\n\nexport function wixDataEncoder(operand) {\n if (isDate(operand)) {\n return { $date: operand.toJSON() }\n } else {\n return operand\n }\n}\n"],"mappings":";;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,cAAcA,CAACC,OAAO,EAAE;EACtC,IAAI,IAAAC,iBAAM,EAACD,OAAO,CAAC,EAAE;IACnB,OAAO;MAAEE,KAAK,EAAEF,OAAO,CAACG,MAAM,CAAC;IAAE,CAAC;EACpC,CAAC,MAAM;IACL,OAAOH,OAAO;EAChB;AACF","ignoreList":[]}
@@ -178,38 +178,32 @@ function isBuffer(val) {
178
178
 
179
179
  /***/ }),
180
180
 
181
- /***/ 668:
182
- /*!********************************************************************************************************!*\
183
- !*** ../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/defineProperty.js ***!
184
- \********************************************************************************************************/
181
+ /***/ 212:
182
+ /*!*******************************************************************!*\
183
+ !*** ../../node_modules/@babel/runtime/helpers/defineProperty.js ***!
184
+ \*******************************************************************/
185
185
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
186
186
 
187
- var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 403);
188
- function _defineProperty(obj, key, value) {
189
- key = toPropertyKey(key);
190
- if (key in obj) {
191
- Object.defineProperty(obj, key, {
192
- value: value,
193
- enumerable: true,
194
- configurable: true,
195
- writable: true
196
- });
197
- } else {
198
- obj[key] = value;
199
- }
200
- return obj;
187
+ var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 347);
188
+ function _defineProperty(e, r, t) {
189
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
190
+ value: t,
191
+ enumerable: !0,
192
+ configurable: !0,
193
+ writable: !0
194
+ }) : e[r] = t, e;
201
195
  }
202
196
  module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
203
197
 
204
198
  /***/ }),
205
199
 
206
- /***/ 350:
207
- /*!*****************************************************************************************************!*\
208
- !*** ../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/toPrimitive.js ***!
209
- \*****************************************************************************************************/
200
+ /***/ 878:
201
+ /*!****************************************************************!*\
202
+ !*** ../../node_modules/@babel/runtime/helpers/toPrimitive.js ***!
203
+ \****************************************************************/
210
204
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
211
205
 
212
- var _typeof = (__webpack_require__(/*! ./typeof.js */ 311)["default"]);
206
+ var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
213
207
  function toPrimitive(t, r) {
214
208
  if ("object" != _typeof(t) || !t) return t;
215
209
  var e = t[Symbol.toPrimitive];
@@ -224,36 +218,36 @@ module.exports = toPrimitive, module.exports.__esModule = true, module.exports["
224
218
 
225
219
  /***/ }),
226
220
 
227
- /***/ 403:
228
- /*!*******************************************************************************************************!*\
229
- !*** ../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
230
- \*******************************************************************************************************/
221
+ /***/ 347:
222
+ /*!******************************************************************!*\
223
+ !*** ../../node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
224
+ \******************************************************************/
231
225
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
232
226
 
233
- var _typeof = (__webpack_require__(/*! ./typeof.js */ 311)["default"]);
234
- var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 350);
227
+ var _typeof = (__webpack_require__(/*! ./typeof.js */ 319)["default"]);
228
+ var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 878);
235
229
  function toPropertyKey(t) {
236
230
  var i = toPrimitive(t, "string");
237
- return "symbol" == _typeof(i) ? i : String(i);
231
+ return "symbol" == _typeof(i) ? i : i + "";
238
232
  }
239
233
  module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
240
234
 
241
235
  /***/ }),
242
236
 
243
- /***/ 311:
244
- /*!************************************************************************************************!*\
245
- !*** ../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/typeof.js ***!
246
- \************************************************************************************************/
237
+ /***/ 319:
238
+ /*!***********************************************************!*\
239
+ !*** ../../node_modules/@babel/runtime/helpers/typeof.js ***!
240
+ \***********************************************************/
247
241
  /***/ ((module) => {
248
242
 
249
243
  function _typeof(o) {
250
244
  "@babel/helpers - typeof";
251
245
 
252
- return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
246
+ return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
253
247
  return typeof o;
254
248
  } : function (o) {
255
249
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
256
- }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
250
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
257
251
  }
258
252
  module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
259
253
 
@@ -347,8 +341,8 @@ __webpack_require__.d(__webpack_exports__, {
347
341
  wixDataEncoder: () => (/* reexport */ wixDataEncoder)
348
342
  });
349
343
 
350
- // EXTERNAL MODULE: ../../node_modules/@wix/babel-preset-yoshi/node_modules/@babel/runtime/helpers/defineProperty.js
351
- var defineProperty = __webpack_require__(668);
344
+ // EXTERNAL MODULE: ../../node_modules/@babel/runtime/helpers/defineProperty.js
345
+ var defineProperty = __webpack_require__(212);
352
346
  var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
353
347
  // EXTERNAL MODULE: ../node_modules/kind-of/index.js
354
348
  var kind_of = __webpack_require__(555);