qweery 0.0.3 → 0.0.4

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.
package/dist/index.cjs CHANGED
@@ -141,9 +141,19 @@ var Qweery = class Qweery {
141
141
  query(options) {
142
142
  let result = new Where(this.data).filter(options.where || {});
143
143
  if (options.skip) result = result.slice(options.skip);
144
- if (options.limit) result = result.slice(0, options.limit);
144
+ if (options.take) result = result.slice(0, options.take);
145
+ if (options.select?.length) result = result.map((item) => options.select.reduce((acc, key) => {
146
+ acc[key] = item[key];
147
+ return acc;
148
+ }, {}));
145
149
  return result;
146
150
  }
151
+ select(...keys) {
152
+ return new Qweery(keys.length ? this.data.map((item) => keys.reduce((acc, key) => {
153
+ acc[key] = item[key];
154
+ return acc;
155
+ }, {})) : this.data);
156
+ }
147
157
  where(options) {
148
158
  return new Qweery(new Where(this.data).filter(options || {}));
149
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"sourcesContent":["export class Primitive {\n public static satisfiesValue<T>(value: T, options: Primitive.Filters<T>): boolean {\n if (Primitive.isDefined(options.equals) && value !== options.equals) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === options.notEquals) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesString(value: Primitive.String, options: Primitive.StringFilters<Primitive.String>): boolean {\n if (options.caseInsensitive) value = value.toLowerCase();\n\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.startsWith) && !value.startsWith(options.startsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.endsWith) && !value.endsWith(options.endsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includes) && !value.includes(options.includes)) {\n return false;\n }\n\n if (Primitive.isDefined(options.matches) && !options.matches.test(value)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesNumerical(value: Primitive.Numerical, options: Primitive.NumericalFilters<Primitive.Numerical>): boolean {\n value = Primitive.normalizeNumericalValue(value);\n\n if (Primitive.isDefined(options.equals) && value !== Primitive.normalizeNumericalValue(options.equals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === Primitive.normalizeNumericalValue(options.notEquals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThan) && value <= Primitive.normalizeNumericalValue(options.greaterThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThanOrEqual) && value < Primitive.normalizeNumericalValue(options.greaterThanOrEqual)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThan) && value >= Primitive.normalizeNumericalValue(options.lessThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThanOrEqual) && value > Primitive.normalizeNumericalValue(options.lessThanOrEqual)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesArray(value: Primitive.Array, options: Primitive.ArrayFilters<Primitive.Array>): boolean {\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesEvery) && !options.includesEvery.every(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesSome) && !options.includesSome.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesNone) && options.includesNone.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.length) && !Primitive.statisfiesNumerical(value.length, options.length)) {\n return false;\n }\n\n return true;\n }\n}\n\nexport namespace Primitive {\n export function normalizeNumericalValue(value: Primitive.Numerical): number|bigint {\n return value instanceof Date ? value.getTime() : value;\n }\n\n export function isNumerical(value: unknown): value is Primitive.Numerical {\n return typeof value === 'number' || typeof value === 'bigint' || value instanceof Date;\n }\n\n export function isDefined<T>(value: T): value is Exclude<T, undefined> {\n return value !== undefined;\n }\n\n export type String = string;\n export type Numerical = number|bigint|Date;\n export type Array = any[]|readonly any[];\n\n export type FilterType<V> = V extends String\n ? StringFilters<V>\n : V extends Numerical\n ? NumericalFilters<V>\n : V extends Array\n ? ArrayFilters<V>\n : Filters<V>;\n\n export interface Filters<V>{\n equals?: V;\n notEquals?: V;\n }\n\n export interface NumericalFilters<V extends Numerical> extends Filters<V> {\n greaterThan?: V;\n greaterThanOrEqual?: V;\n lessThan?: V;\n lessThanOrEqual?: V;\n }\n\n export interface StringFilters<V extends String> extends Filters<V> {\n includes?: V;\n startsWith?: V;\n endsWith?: V;\n caseInsensitive?: boolean;\n matches?: RegExp;\n }\n\n export interface ArrayFilters<V extends Array> extends Filters<V> {\n includesEvery?: V[number][];\n includesSome?: V[number][];\n includesNone?: V[number][];\n length?: NumericalFilters<number>;\n }\n}","import type { ValueOrArray } from '../helpers/types.js';\nimport { Primitive } from './Primitive.js';\nimport type { Qweery } from './Qweery.js';\n\nexport class Where<T extends Qweery.Object> {\n public readonly data: T[];\n\n public constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public filter(options: Where.Options<T>): T[] {\n return this.data.filter((_, index) => this.satisfiesItem(options, index));\n }\n\n public satisfiesItem(options: Where.Options<T>, index: number): boolean {\n const item = this.data.at(index);\n if (!item) return false;\n\n let value = true;\n\n for (const key in options) {\n if (Where.isLogicalOperator(key)) {\n const conditions = options[key as keyof T] as ValueOrArray<Where.Options<T>>;\n\n switch (key) {\n case '$NOT':\n value = value && !(\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$AND':\n value = value && (\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$OR':\n value = Array.isArray(conditions)\n ? value && conditions.some(condition => this.satisfiesItem(condition, index))\n : value || this.satisfiesItem(conditions, index);\n break;\n }\n\n continue;\n }\n\n\n const filter = options[key as keyof T] as Where.Filter<T, keyof T>;\n const itemValue = item[key as keyof T];\n\n if (filter instanceof Function) {\n value = value && filter(itemValue, item, index, this.data);\n continue;\n }\n\n if (typeof filter === 'object') {\n if (typeof itemValue === 'string') {\n value = value && Primitive.statisfiesString(itemValue, filter as Primitive.StringFilters<Primitive.String>);\n continue;\n }\n\n if (Array.isArray(itemValue)) {\n value = value && Primitive.statisfiesArray(itemValue, filter as Primitive.ArrayFilters<Primitive.Array>);\n continue;\n }\n\n if (Primitive.isNumerical(itemValue)) {\n value = value && Primitive.statisfiesNumerical(itemValue, filter as Primitive.NumericalFilters<Primitive.Numerical>);\n continue;\n }\n\n value = value && Primitive.satisfiesValue(itemValue, filter as Primitive.Filters<any>);\n continue;\n }\n\n value = value && (itemValue === filter);\n }\n\n return value;\n }\n}\n\nexport namespace Where {\n export type KeyFilters<T extends Qweery.Object> = {\n [K in keyof T]?: Filter<T, K>;\n }\n\n export type Filter<T extends Qweery.Object, K extends keyof T> = \n |T[K]\n |((value: T[K], object: T, index: number, array: T[]) => boolean)\n |(Primitive.FilterType<T[K]> & LogicalOperators<T>)\n\n export interface LogicalOperators<T extends Qweery.Object> extends Partial<Record<'$AND'|'$OR'|'$NOT', ValueOrArray<Options<T>>>>{\n //\n }\n\n export type Options<T extends Qweery.Object> = KeyFilters<T> & LogicalOperators<T>;\n\n export function isLogicalOperator(value: unknown): value is keyof LogicalOperators<any> {\n return value === '$AND' || value === '$OR' || value === '$NOT';\n }\n}\n\nconst w = new Where([\n { name: 'Alice', age: 30, sports: ['Football', 'Basketball'] },\n { name: 'Bob', age: 25, sports: ['Football', 'Basketball'] },\n { name: 'Charlie', age: 35, sports: ['Football', 'Basketball'] }\n]);","import { Where } from './Where.js';\n\nexport class Qweery<T extends Qweery.Object> {\n protected readonly data: T[];\n\n constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public query(options: {\n where?: Where.Options<T>;\n skip?: number;\n limit?: number;\n }): T[] {\n\n let result = new Where(this.data).filter(options.where || {});\n\n if (options.skip) {\n result = result.slice(options.skip);\n }\n\n if (options.limit) {\n result = result.slice(0, options.limit);\n }\n\n return result;\n }\n\n public where(options: Where.Options<T>): Qweery<T> {\n return new Qweery(new Where(this.data).filter(options || {}));\n }\n\n public skip(count: number): Qweery<T> {\n return new Qweery(this.data.slice(count));\n }\n\n public take(count: number): Qweery<T> {\n return new Qweery(this.data.slice(0, count));\n }\n\n public count(): number {\n return this.data.length;\n }\n\n public first(): T|undefined {\n return this.data[0];\n }\n\n public last(): T|undefined {\n return this.data[this.data.length - 1];\n }\n\n public toArray(): T[] {\n return this.data;\n }\n}\n\nexport namespace Qweery {\n export type Object = object;\n}"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"sourcesContent":["export class Primitive {\n public static satisfiesValue<T>(value: T, options: Primitive.Filters<T>): boolean {\n if (Primitive.isDefined(options.equals) && value !== options.equals) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === options.notEquals) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesString(value: Primitive.String, options: Primitive.StringFilters<Primitive.String>): boolean {\n if (options.caseInsensitive) value = value.toLowerCase();\n\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.startsWith) && !value.startsWith(options.startsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.endsWith) && !value.endsWith(options.endsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includes) && !value.includes(options.includes)) {\n return false;\n }\n\n if (Primitive.isDefined(options.matches) && !options.matches.test(value)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesNumerical(value: Primitive.Numerical, options: Primitive.NumericalFilters<Primitive.Numerical>): boolean {\n value = Primitive.normalizeNumericalValue(value);\n\n if (Primitive.isDefined(options.equals) && value !== Primitive.normalizeNumericalValue(options.equals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === Primitive.normalizeNumericalValue(options.notEquals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThan) && value <= Primitive.normalizeNumericalValue(options.greaterThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThanOrEqual) && value < Primitive.normalizeNumericalValue(options.greaterThanOrEqual)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThan) && value >= Primitive.normalizeNumericalValue(options.lessThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThanOrEqual) && value > Primitive.normalizeNumericalValue(options.lessThanOrEqual)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesArray(value: Primitive.Array, options: Primitive.ArrayFilters<Primitive.Array>): boolean {\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesEvery) && !options.includesEvery.every(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesSome) && !options.includesSome.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesNone) && options.includesNone.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.length) && !Primitive.statisfiesNumerical(value.length, options.length)) {\n return false;\n }\n\n return true;\n }\n}\n\nexport namespace Primitive {\n export function normalizeNumericalValue(value: Primitive.Numerical): number|bigint {\n return value instanceof Date ? value.getTime() : value;\n }\n\n export function isNumerical(value: unknown): value is Primitive.Numerical {\n return typeof value === 'number' || typeof value === 'bigint' || value instanceof Date;\n }\n\n export function isDefined<T>(value: T): value is Exclude<T, undefined> {\n return value !== undefined;\n }\n\n export type String = string;\n export type Numerical = number|bigint|Date;\n export type Array = any[]|readonly any[];\n\n export type FilterType<V> = V extends String\n ? StringFilters<V>\n : V extends Numerical\n ? NumericalFilters<V>\n : V extends Array\n ? ArrayFilters<V>\n : Filters<V>;\n\n export interface Filters<V>{\n equals?: V;\n notEquals?: V;\n }\n\n export interface NumericalFilters<V extends Numerical> extends Filters<V> {\n greaterThan?: V;\n greaterThanOrEqual?: V;\n lessThan?: V;\n lessThanOrEqual?: V;\n }\n\n export interface StringFilters<V extends String> extends Filters<V> {\n includes?: V;\n startsWith?: V;\n endsWith?: V;\n caseInsensitive?: boolean;\n matches?: RegExp;\n }\n\n export interface ArrayFilters<V extends Array> extends Filters<V> {\n includesEvery?: V[number][];\n includesSome?: V[number][];\n includesNone?: V[number][];\n length?: NumericalFilters<number>;\n }\n}","import type { ValueOrArray } from '../helpers/types.js';\nimport { Primitive } from './Primitive.js';\nimport type { Qweery } from './Qweery.js';\n\nexport class Where<T extends Qweery.Object> {\n public readonly data: T[];\n\n public constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public filter(options: Where.Options<T>): T[] {\n return this.data.filter((_, index) => this.satisfiesItem(options, index));\n }\n\n public satisfiesItem(options: Where.Options<T>, index: number): boolean {\n const item = this.data.at(index);\n if (!item) return false;\n\n let value = true;\n\n for (const key in options) {\n if (Where.isLogicalOperator(key)) {\n const conditions = options[key as keyof T] as ValueOrArray<Where.Options<T>>;\n\n switch (key) {\n case '$NOT':\n value = value && !(\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$AND':\n value = value && (\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$OR':\n value = Array.isArray(conditions)\n ? value && conditions.some(condition => this.satisfiesItem(condition, index))\n : value || this.satisfiesItem(conditions, index);\n break;\n }\n\n continue;\n }\n\n\n const filter = options[key as keyof T] as Where.Filter<T, keyof T>;\n const itemValue = item[key as keyof T];\n\n if (filter instanceof Function) {\n value = value && filter(itemValue, item, index, this.data);\n continue;\n }\n\n if (typeof filter === 'object') {\n if (typeof itemValue === 'string') {\n value = value && Primitive.statisfiesString(itemValue, filter as Primitive.StringFilters<Primitive.String>);\n continue;\n }\n\n if (Array.isArray(itemValue)) {\n value = value && Primitive.statisfiesArray(itemValue, filter as Primitive.ArrayFilters<Primitive.Array>);\n continue;\n }\n\n if (Primitive.isNumerical(itemValue)) {\n value = value && Primitive.statisfiesNumerical(itemValue, filter as Primitive.NumericalFilters<Primitive.Numerical>);\n continue;\n }\n\n value = value && Primitive.satisfiesValue(itemValue, filter as Primitive.Filters<any>);\n continue;\n }\n\n value = value && (itemValue === filter);\n }\n\n return value;\n }\n}\n\nexport namespace Where {\n export type KeyFilters<T extends Qweery.Object> = {\n [K in keyof T]?: Filter<T, K>;\n }\n\n export type Filter<T extends Qweery.Object, K extends keyof T> = \n |T[K]\n |((value: T[K], object: T, index: number, array: T[]) => boolean)\n |(Primitive.FilterType<T[K]> & LogicalOperators<T>)\n\n export interface LogicalOperators<T extends Qweery.Object> extends Partial<Record<'$AND'|'$OR'|'$NOT', ValueOrArray<Options<T>>>>{\n //\n }\n\n export type Options<T extends Qweery.Object> = KeyFilters<T> & LogicalOperators<T>;\n\n export function isLogicalOperator(value: unknown): value is keyof LogicalOperators<any> {\n return value === '$AND' || value === '$OR' || value === '$NOT';\n }\n}\n\nconst w = new Where([\n { name: 'Alice', age: 30, sports: ['Football', 'Basketball'] },\n { name: 'Bob', age: 25, sports: ['Football', 'Basketball'] },\n { name: 'Charlie', age: 35, sports: ['Football', 'Basketball'] }\n]);","import { Where } from './Where.js';\n\nexport class Qweery<T extends Qweery.Object> {\n protected readonly data: T[];\n\n constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public query<K extends keyof T>(options: {\n select?: K[];\n where?: Where.Options<Pick<T, K>>;\n skip?: number;\n take?: number;\n }): Pick<T, K>[] {\n\n let result = new Where<Pick<T, K>>(this.data).filter(options.where || {});\n\n if (options.skip) {\n result = result.slice(options.skip);\n }\n\n if (options.take) {\n result = result.slice(0, options.take);\n }\n\n if (options.select?.length) {\n result = result.map(\n item => options.select!.reduce((acc, key) => {\n acc[key] = item[key];\n return acc;\n }, {} as Pick<T, K>)\n );\n }\n\n return result;\n }\n\n public select<K extends keyof T>(...keys: K[]): Qweery<Pick<T, K>> {\n return new Qweery(\n keys.length\n ? this.data.map(\n item => keys.reduce((acc, key) => {\n acc[key] = item[key];\n return acc;\n }, {} as Pick<T, K>)\n )\n : this.data\n );\n }\n\n public where(options: Where.Options<T>): Qweery<T> {\n return new Qweery(new Where(this.data).filter(options || {}));\n }\n\n public skip(count: number): Qweery<T> {\n return new Qweery(this.data.slice(count));\n }\n\n public take(count: number): Qweery<T> {\n return new Qweery(this.data.slice(0, count));\n }\n\n public count(): number {\n return this.data.length;\n }\n\n public first(): T|undefined {\n return this.data[0];\n }\n\n public last(): T|undefined {\n return this.data[this.data.length - 1];\n }\n\n public toArray(): T[] {\n return this.data;\n }\n}\n\nexport namespace Qweery {\n export type Object = object;\n}"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -60,11 +60,13 @@ declare namespace Where {
60
60
  declare class Qweery<T extends Qweery.Object> {
61
61
  protected readonly data: T[];
62
62
  constructor(data: Iterable<T>);
63
- query(options: {
64
- where?: Where.Options<T>;
63
+ query<K extends keyof T>(options: {
64
+ select?: K[];
65
+ where?: Where.Options<Pick<T, K>>;
65
66
  skip?: number;
66
- limit?: number;
67
- }): T[];
67
+ take?: number;
68
+ }): Pick<T, K>[];
69
+ select<K extends keyof T>(...keys: K[]): Qweery<Pick<T, K>>;
68
70
  where(options: Where.Options<T>): Qweery<T>;
69
71
  skip(count: number): Qweery<T>;
70
72
  take(count: number): Qweery<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/helpers/types.ts","../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/helpers/types.ts","../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -60,11 +60,13 @@ declare namespace Where {
60
60
  declare class Qweery<T extends Qweery.Object> {
61
61
  protected readonly data: T[];
62
62
  constructor(data: Iterable<T>);
63
- query(options: {
64
- where?: Where.Options<T>;
63
+ query<K extends keyof T>(options: {
64
+ select?: K[];
65
+ where?: Where.Options<Pick<T, K>>;
65
66
  skip?: number;
66
- limit?: number;
67
- }): T[];
67
+ take?: number;
68
+ }): Pick<T, K>[];
69
+ select<K extends keyof T>(...keys: K[]): Qweery<Pick<T, K>>;
68
70
  where(options: Where.Options<T>): Qweery<T>;
69
71
  skip(count: number): Qweery<T>;
70
72
  take(count: number): Qweery<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/helpers/types.ts","../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/helpers/types.ts","../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -139,9 +139,19 @@ var Qweery = class Qweery {
139
139
  query(options) {
140
140
  let result = new Where(this.data).filter(options.where || {});
141
141
  if (options.skip) result = result.slice(options.skip);
142
- if (options.limit) result = result.slice(0, options.limit);
142
+ if (options.take) result = result.slice(0, options.take);
143
+ if (options.select?.length) result = result.map((item) => options.select.reduce((acc, key) => {
144
+ acc[key] = item[key];
145
+ return acc;
146
+ }, {}));
143
147
  return result;
144
148
  }
149
+ select(...keys) {
150
+ return new Qweery(keys.length ? this.data.map((item) => keys.reduce((acc, key) => {
151
+ acc[key] = item[key];
152
+ return acc;
153
+ }, {})) : this.data);
154
+ }
145
155
  where(options) {
146
156
  return new Qweery(new Where(this.data).filter(options || {}));
147
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"sourcesContent":["export class Primitive {\n public static satisfiesValue<T>(value: T, options: Primitive.Filters<T>): boolean {\n if (Primitive.isDefined(options.equals) && value !== options.equals) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === options.notEquals) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesString(value: Primitive.String, options: Primitive.StringFilters<Primitive.String>): boolean {\n if (options.caseInsensitive) value = value.toLowerCase();\n\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.startsWith) && !value.startsWith(options.startsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.endsWith) && !value.endsWith(options.endsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includes) && !value.includes(options.includes)) {\n return false;\n }\n\n if (Primitive.isDefined(options.matches) && !options.matches.test(value)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesNumerical(value: Primitive.Numerical, options: Primitive.NumericalFilters<Primitive.Numerical>): boolean {\n value = Primitive.normalizeNumericalValue(value);\n\n if (Primitive.isDefined(options.equals) && value !== Primitive.normalizeNumericalValue(options.equals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === Primitive.normalizeNumericalValue(options.notEquals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThan) && value <= Primitive.normalizeNumericalValue(options.greaterThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThanOrEqual) && value < Primitive.normalizeNumericalValue(options.greaterThanOrEqual)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThan) && value >= Primitive.normalizeNumericalValue(options.lessThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThanOrEqual) && value > Primitive.normalizeNumericalValue(options.lessThanOrEqual)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesArray(value: Primitive.Array, options: Primitive.ArrayFilters<Primitive.Array>): boolean {\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesEvery) && !options.includesEvery.every(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesSome) && !options.includesSome.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesNone) && options.includesNone.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.length) && !Primitive.statisfiesNumerical(value.length, options.length)) {\n return false;\n }\n\n return true;\n }\n}\n\nexport namespace Primitive {\n export function normalizeNumericalValue(value: Primitive.Numerical): number|bigint {\n return value instanceof Date ? value.getTime() : value;\n }\n\n export function isNumerical(value: unknown): value is Primitive.Numerical {\n return typeof value === 'number' || typeof value === 'bigint' || value instanceof Date;\n }\n\n export function isDefined<T>(value: T): value is Exclude<T, undefined> {\n return value !== undefined;\n }\n\n export type String = string;\n export type Numerical = number|bigint|Date;\n export type Array = any[]|readonly any[];\n\n export type FilterType<V> = V extends String\n ? StringFilters<V>\n : V extends Numerical\n ? NumericalFilters<V>\n : V extends Array\n ? ArrayFilters<V>\n : Filters<V>;\n\n export interface Filters<V>{\n equals?: V;\n notEquals?: V;\n }\n\n export interface NumericalFilters<V extends Numerical> extends Filters<V> {\n greaterThan?: V;\n greaterThanOrEqual?: V;\n lessThan?: V;\n lessThanOrEqual?: V;\n }\n\n export interface StringFilters<V extends String> extends Filters<V> {\n includes?: V;\n startsWith?: V;\n endsWith?: V;\n caseInsensitive?: boolean;\n matches?: RegExp;\n }\n\n export interface ArrayFilters<V extends Array> extends Filters<V> {\n includesEvery?: V[number][];\n includesSome?: V[number][];\n includesNone?: V[number][];\n length?: NumericalFilters<number>;\n }\n}","import type { ValueOrArray } from '../helpers/types.js';\nimport { Primitive } from './Primitive.js';\nimport type { Qweery } from './Qweery.js';\n\nexport class Where<T extends Qweery.Object> {\n public readonly data: T[];\n\n public constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public filter(options: Where.Options<T>): T[] {\n return this.data.filter((_, index) => this.satisfiesItem(options, index));\n }\n\n public satisfiesItem(options: Where.Options<T>, index: number): boolean {\n const item = this.data.at(index);\n if (!item) return false;\n\n let value = true;\n\n for (const key in options) {\n if (Where.isLogicalOperator(key)) {\n const conditions = options[key as keyof T] as ValueOrArray<Where.Options<T>>;\n\n switch (key) {\n case '$NOT':\n value = value && !(\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$AND':\n value = value && (\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$OR':\n value = Array.isArray(conditions)\n ? value && conditions.some(condition => this.satisfiesItem(condition, index))\n : value || this.satisfiesItem(conditions, index);\n break;\n }\n\n continue;\n }\n\n\n const filter = options[key as keyof T] as Where.Filter<T, keyof T>;\n const itemValue = item[key as keyof T];\n\n if (filter instanceof Function) {\n value = value && filter(itemValue, item, index, this.data);\n continue;\n }\n\n if (typeof filter === 'object') {\n if (typeof itemValue === 'string') {\n value = value && Primitive.statisfiesString(itemValue, filter as Primitive.StringFilters<Primitive.String>);\n continue;\n }\n\n if (Array.isArray(itemValue)) {\n value = value && Primitive.statisfiesArray(itemValue, filter as Primitive.ArrayFilters<Primitive.Array>);\n continue;\n }\n\n if (Primitive.isNumerical(itemValue)) {\n value = value && Primitive.statisfiesNumerical(itemValue, filter as Primitive.NumericalFilters<Primitive.Numerical>);\n continue;\n }\n\n value = value && Primitive.satisfiesValue(itemValue, filter as Primitive.Filters<any>);\n continue;\n }\n\n value = value && (itemValue === filter);\n }\n\n return value;\n }\n}\n\nexport namespace Where {\n export type KeyFilters<T extends Qweery.Object> = {\n [K in keyof T]?: Filter<T, K>;\n }\n\n export type Filter<T extends Qweery.Object, K extends keyof T> = \n |T[K]\n |((value: T[K], object: T, index: number, array: T[]) => boolean)\n |(Primitive.FilterType<T[K]> & LogicalOperators<T>)\n\n export interface LogicalOperators<T extends Qweery.Object> extends Partial<Record<'$AND'|'$OR'|'$NOT', ValueOrArray<Options<T>>>>{\n //\n }\n\n export type Options<T extends Qweery.Object> = KeyFilters<T> & LogicalOperators<T>;\n\n export function isLogicalOperator(value: unknown): value is keyof LogicalOperators<any> {\n return value === '$AND' || value === '$OR' || value === '$NOT';\n }\n}\n\nconst w = new Where([\n { name: 'Alice', age: 30, sports: ['Football', 'Basketball'] },\n { name: 'Bob', age: 25, sports: ['Football', 'Basketball'] },\n { name: 'Charlie', age: 35, sports: ['Football', 'Basketball'] }\n]);","import { Where } from './Where.js';\n\nexport class Qweery<T extends Qweery.Object> {\n protected readonly data: T[];\n\n constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public query(options: {\n where?: Where.Options<T>;\n skip?: number;\n limit?: number;\n }): T[] {\n\n let result = new Where(this.data).filter(options.where || {});\n\n if (options.skip) {\n result = result.slice(options.skip);\n }\n\n if (options.limit) {\n result = result.slice(0, options.limit);\n }\n\n return result;\n }\n\n public where(options: Where.Options<T>): Qweery<T> {\n return new Qweery(new Where(this.data).filter(options || {}));\n }\n\n public skip(count: number): Qweery<T> {\n return new Qweery(this.data.slice(count));\n }\n\n public take(count: number): Qweery<T> {\n return new Qweery(this.data.slice(0, count));\n }\n\n public count(): number {\n return this.data.length;\n }\n\n public first(): T|undefined {\n return this.data[0];\n }\n\n public last(): T|undefined {\n return this.data[this.data.length - 1];\n }\n\n public toArray(): T[] {\n return this.data;\n }\n}\n\nexport namespace Qweery {\n export type Object = object;\n}"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/classes/Primitive.ts","../src/classes/Where.ts","../src/classes/Qweery.ts"],"sourcesContent":["export class Primitive {\n public static satisfiesValue<T>(value: T, options: Primitive.Filters<T>): boolean {\n if (Primitive.isDefined(options.equals) && value !== options.equals) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === options.notEquals) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesString(value: Primitive.String, options: Primitive.StringFilters<Primitive.String>): boolean {\n if (options.caseInsensitive) value = value.toLowerCase();\n\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.startsWith) && !value.startsWith(options.startsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.endsWith) && !value.endsWith(options.endsWith)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includes) && !value.includes(options.includes)) {\n return false;\n }\n\n if (Primitive.isDefined(options.matches) && !options.matches.test(value)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesNumerical(value: Primitive.Numerical, options: Primitive.NumericalFilters<Primitive.Numerical>): boolean {\n value = Primitive.normalizeNumericalValue(value);\n\n if (Primitive.isDefined(options.equals) && value !== Primitive.normalizeNumericalValue(options.equals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.notEquals) && value === Primitive.normalizeNumericalValue(options.notEquals)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThan) && value <= Primitive.normalizeNumericalValue(options.greaterThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.greaterThanOrEqual) && value < Primitive.normalizeNumericalValue(options.greaterThanOrEqual)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThan) && value >= Primitive.normalizeNumericalValue(options.lessThan)) {\n return false;\n }\n\n if (Primitive.isDefined(options.lessThanOrEqual) && value > Primitive.normalizeNumericalValue(options.lessThanOrEqual)) {\n return false;\n }\n\n return true;\n }\n\n public static statisfiesArray(value: Primitive.Array, options: Primitive.ArrayFilters<Primitive.Array>): boolean {\n if (!this.satisfiesValue(value, options)) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesEvery) && !options.includesEvery.every(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesSome) && !options.includesSome.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.includesNone) && options.includesNone.some(item => value.includes(item))) {\n return false;\n }\n\n if (Primitive.isDefined(options.length) && !Primitive.statisfiesNumerical(value.length, options.length)) {\n return false;\n }\n\n return true;\n }\n}\n\nexport namespace Primitive {\n export function normalizeNumericalValue(value: Primitive.Numerical): number|bigint {\n return value instanceof Date ? value.getTime() : value;\n }\n\n export function isNumerical(value: unknown): value is Primitive.Numerical {\n return typeof value === 'number' || typeof value === 'bigint' || value instanceof Date;\n }\n\n export function isDefined<T>(value: T): value is Exclude<T, undefined> {\n return value !== undefined;\n }\n\n export type String = string;\n export type Numerical = number|bigint|Date;\n export type Array = any[]|readonly any[];\n\n export type FilterType<V> = V extends String\n ? StringFilters<V>\n : V extends Numerical\n ? NumericalFilters<V>\n : V extends Array\n ? ArrayFilters<V>\n : Filters<V>;\n\n export interface Filters<V>{\n equals?: V;\n notEquals?: V;\n }\n\n export interface NumericalFilters<V extends Numerical> extends Filters<V> {\n greaterThan?: V;\n greaterThanOrEqual?: V;\n lessThan?: V;\n lessThanOrEqual?: V;\n }\n\n export interface StringFilters<V extends String> extends Filters<V> {\n includes?: V;\n startsWith?: V;\n endsWith?: V;\n caseInsensitive?: boolean;\n matches?: RegExp;\n }\n\n export interface ArrayFilters<V extends Array> extends Filters<V> {\n includesEvery?: V[number][];\n includesSome?: V[number][];\n includesNone?: V[number][];\n length?: NumericalFilters<number>;\n }\n}","import type { ValueOrArray } from '../helpers/types.js';\nimport { Primitive } from './Primitive.js';\nimport type { Qweery } from './Qweery.js';\n\nexport class Where<T extends Qweery.Object> {\n public readonly data: T[];\n\n public constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public filter(options: Where.Options<T>): T[] {\n return this.data.filter((_, index) => this.satisfiesItem(options, index));\n }\n\n public satisfiesItem(options: Where.Options<T>, index: number): boolean {\n const item = this.data.at(index);\n if (!item) return false;\n\n let value = true;\n\n for (const key in options) {\n if (Where.isLogicalOperator(key)) {\n const conditions = options[key as keyof T] as ValueOrArray<Where.Options<T>>;\n\n switch (key) {\n case '$NOT':\n value = value && !(\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$AND':\n value = value && (\n Array.isArray(conditions)\n ? conditions.every(condition => this.satisfiesItem(condition, index))\n : this.satisfiesItem(conditions, index)\n );\n break;\n case '$OR':\n value = Array.isArray(conditions)\n ? value && conditions.some(condition => this.satisfiesItem(condition, index))\n : value || this.satisfiesItem(conditions, index);\n break;\n }\n\n continue;\n }\n\n\n const filter = options[key as keyof T] as Where.Filter<T, keyof T>;\n const itemValue = item[key as keyof T];\n\n if (filter instanceof Function) {\n value = value && filter(itemValue, item, index, this.data);\n continue;\n }\n\n if (typeof filter === 'object') {\n if (typeof itemValue === 'string') {\n value = value && Primitive.statisfiesString(itemValue, filter as Primitive.StringFilters<Primitive.String>);\n continue;\n }\n\n if (Array.isArray(itemValue)) {\n value = value && Primitive.statisfiesArray(itemValue, filter as Primitive.ArrayFilters<Primitive.Array>);\n continue;\n }\n\n if (Primitive.isNumerical(itemValue)) {\n value = value && Primitive.statisfiesNumerical(itemValue, filter as Primitive.NumericalFilters<Primitive.Numerical>);\n continue;\n }\n\n value = value && Primitive.satisfiesValue(itemValue, filter as Primitive.Filters<any>);\n continue;\n }\n\n value = value && (itemValue === filter);\n }\n\n return value;\n }\n}\n\nexport namespace Where {\n export type KeyFilters<T extends Qweery.Object> = {\n [K in keyof T]?: Filter<T, K>;\n }\n\n export type Filter<T extends Qweery.Object, K extends keyof T> = \n |T[K]\n |((value: T[K], object: T, index: number, array: T[]) => boolean)\n |(Primitive.FilterType<T[K]> & LogicalOperators<T>)\n\n export interface LogicalOperators<T extends Qweery.Object> extends Partial<Record<'$AND'|'$OR'|'$NOT', ValueOrArray<Options<T>>>>{\n //\n }\n\n export type Options<T extends Qweery.Object> = KeyFilters<T> & LogicalOperators<T>;\n\n export function isLogicalOperator(value: unknown): value is keyof LogicalOperators<any> {\n return value === '$AND' || value === '$OR' || value === '$NOT';\n }\n}\n\nconst w = new Where([\n { name: 'Alice', age: 30, sports: ['Football', 'Basketball'] },\n { name: 'Bob', age: 25, sports: ['Football', 'Basketball'] },\n { name: 'Charlie', age: 35, sports: ['Football', 'Basketball'] }\n]);","import { Where } from './Where.js';\n\nexport class Qweery<T extends Qweery.Object> {\n protected readonly data: T[];\n\n constructor(data: Iterable<T>) {\n this.data = Array.from(data);\n }\n\n public query<K extends keyof T>(options: {\n select?: K[];\n where?: Where.Options<Pick<T, K>>;\n skip?: number;\n take?: number;\n }): Pick<T, K>[] {\n\n let result = new Where<Pick<T, K>>(this.data).filter(options.where || {});\n\n if (options.skip) {\n result = result.slice(options.skip);\n }\n\n if (options.take) {\n result = result.slice(0, options.take);\n }\n\n if (options.select?.length) {\n result = result.map(\n item => options.select!.reduce((acc, key) => {\n acc[key] = item[key];\n return acc;\n }, {} as Pick<T, K>)\n );\n }\n\n return result;\n }\n\n public select<K extends keyof T>(...keys: K[]): Qweery<Pick<T, K>> {\n return new Qweery(\n keys.length\n ? this.data.map(\n item => keys.reduce((acc, key) => {\n acc[key] = item[key];\n return acc;\n }, {} as Pick<T, K>)\n )\n : this.data\n );\n }\n\n public where(options: Where.Options<T>): Qweery<T> {\n return new Qweery(new Where(this.data).filter(options || {}));\n }\n\n public skip(count: number): Qweery<T> {\n return new Qweery(this.data.slice(count));\n }\n\n public take(count: number): Qweery<T> {\n return new Qweery(this.data.slice(0, count));\n }\n\n public count(): number {\n return this.data.length;\n }\n\n public first(): T|undefined {\n return this.data[0];\n }\n\n public last(): T|undefined {\n return this.data[this.data.length - 1];\n }\n\n public toArray(): T[] {\n return this.data;\n }\n}\n\nexport namespace Qweery {\n export type Object = object;\n}"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qweery",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "license": "MIT",
5
5
  "description": "A simple type-safe ORM like query builder for structured arrays",
6
6
  "type": "module",