{"version":3,"sources":["../src/query.ts"],"names":[],"mappings":"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","file":"query.mjs","sourcesContent":["import JSONbigModule from 'json-bigint';\nconst JSONbig = JSONbigModule({ useNativeBigInt: true });\n\ntype QueryTypesSingle = string | number | bigint | boolean;\nexport type QueryTypesList = string[] | number[] | bigint[] | boolean[] | Query[] | any[];\nexport type QueryTypes = QueryTypesSingle | QueryTypesList;\ntype AttributesTypes = string | string[];\n\n/**\n * Helper class to generate query strings.\n */\nexport class Query {\n  method: string;\n  attribute: AttributesTypes | undefined;\n  values: QueryTypesList | undefined;\n\n  /**\n   * Constructor for Query class.\n   *\n   * @param {string} method\n   * @param {AttributesTypes} attribute\n   * @param {QueryTypes} values\n   */\n  constructor(\n    method: string,\n    attribute?: AttributesTypes,\n    values?: QueryTypes\n  ) {\n    this.method = method;\n    this.attribute = attribute;\n\n    if (values !== undefined) {\n      if (Array.isArray(values)) {\n        this.values = values;\n      } else {\n        this.values = [values] as QueryTypesList;\n      }\n    }\n  }\n\n  /**\n   * Convert the query object to a JSON string.\n   *\n   * @returns {string}\n   */\n  toString(): string {\n    return JSONbig.stringify({\n      method: this.method,\n      attribute: this.attribute,\n      values: this.values,\n    });\n  }\n\n  /**\n   * Filter resources where attribute is equal to value.\n   *\n   * @param {string} attribute\n   * @param {QueryTypes} value\n   * @returns {string}\n   */\n  static equal = (attribute: string, value: QueryTypes): string =>\n    new Query(\"equal\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute is not equal to value.\n   *\n   * @param {string} attribute\n   * @param {QueryTypes} value\n   * @returns {string}\n   */\n  static notEqual = (attribute: string, value: QueryTypes): string =>\n    new Query(\"notEqual\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute matches a regular expression pattern.\n   *\n   * @param {string} attribute The attribute to filter on.\n   * @param {string} pattern The regular expression pattern to match.\n   * @returns {string}\n   */\n  static regex = (attribute: string, pattern: string): string =>\n    new Query(\"regex\", attribute, pattern).toString();\n\n  /**\n   * Filter resources where attribute is less than value.\n   *\n   * @param {string} attribute\n   * @param {QueryTypes} value\n   * @returns {string}\n   */\n  static lessThan = (attribute: string, value: QueryTypes): string =>\n    new Query(\"lessThan\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute is less than or equal to value.\n   *\n   * @param {string} attribute\n   * @param {QueryTypes} value\n   * @returns {string}\n   */\n  static lessThanEqual = (attribute: string, value: QueryTypes): string =>\n    new Query(\"lessThanEqual\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute is greater than value.\n   *\n   * @param {string} attribute\n   * @param {QueryTypes} value\n   * @returns {string}\n   */\n  static greaterThan = (attribute: string, value: QueryTypes): string =>\n    new Query(\"greaterThan\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute is greater than or equal to value.\n   *\n   * @param {string} attribute\n   * @param {QueryTypes} value\n   * @returns {string}\n   */\n  static greaterThanEqual = (attribute: string, value: QueryTypes): string =>\n    new Query(\"greaterThanEqual\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute is null.\n   *\n   * @param {string} attribute\n   * @returns {string}\n   */\n  static isNull = (attribute: string): string =>\n    new Query(\"isNull\", attribute).toString();\n\n  /**\n   * Filter resources where attribute is not null.\n   *\n   * @param {string} attribute\n   * @returns {string}\n   */\n  static isNotNull = (attribute: string): string =>\n    new Query(\"isNotNull\", attribute).toString();\n\n  /**\n   * Filter resources where the specified attributes exist.\n   *\n   * @param {string[]} attributes The list of attributes that must exist.\n   * @returns {string}\n   */\n  static exists = (attributes: string[]): string =>\n    new Query(\"exists\", undefined, attributes).toString();\n\n  /**\n   * Filter resources where the specified attributes do not exist.\n   *\n   * @param {string[]} attributes The list of attributes that must not exist.\n   * @returns {string}\n   */\n  static notExists = (attributes: string[]): string =>\n    new Query(\"notExists\", undefined, attributes).toString();\n\n  /**\n   * Filter resources where attribute is between start and end (inclusive).\n   *\n   * @param {string} attribute\n   * @param {string | number | bigint} start\n   * @param {string | number | bigint} end\n   * @returns {string}\n   */\n  static between = (attribute: string, start: string | number | bigint, end: string | number | bigint): string =>\n    new Query(\"between\", attribute, [start, end] as QueryTypesList).toString();\n\n  /**\n   * Filter resources where attribute starts with value.\n   *\n   * @param {string} attribute\n   * @param {string} value\n   * @returns {string}\n   */\n  static startsWith = (attribute: string, value: string): string =>\n    new Query(\"startsWith\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute ends with value.\n   *\n   * @param {string} attribute\n   * @param {string} value\n   * @returns {string}\n   */\n  static endsWith = (attribute: string, value: string): string =>\n    new Query(\"endsWith\", attribute, value).toString();\n\n  /**\n   * Specify which attributes should be returned by the API call.\n   *\n   * @param {string[]} attributes\n   * @returns {string}\n   */\n  static select = (attributes: string[]): string =>\n    new Query(\"select\", undefined, attributes).toString();\n\n  /**\n   * Filter resources by searching attribute for value.\n   * A fulltext index on attribute is required for this query to work.\n   *\n   * @param {string} attribute\n   * @param {string} value\n   * @returns {string}\n   */\n  static search = (attribute: string, value: string): string =>\n    new Query(\"search\", attribute, value).toString();\n\n  /**\n   * Sort results by attribute descending.\n   *\n   * @param {string} attribute\n   * @returns {string}\n   */\n  static orderDesc = (attribute: string): string =>\n    new Query(\"orderDesc\", attribute).toString();\n\n  /**\n   * Sort results by attribute ascending.\n   *\n   * @param {string} attribute\n   * @returns {string}\n   */\n  static orderAsc = (attribute: string): string =>\n    new Query(\"orderAsc\", attribute).toString();\n\n  /**\n   * Sort results randomly.\n   *\n   * @returns {string}\n   */\n  static orderRandom = (): string =>\n    new Query(\"orderRandom\").toString();\n\n  /**\n   * Return results after documentId.\n   *\n   * @param {string} documentId\n   * @returns {string}\n   */\n  static cursorAfter = (documentId: string): string =>\n    new Query(\"cursorAfter\", undefined, documentId).toString();\n\n  /**\n   * Return results before documentId.\n   *\n   * @param {string} documentId\n   * @returns {string}\n   */\n  static cursorBefore = (documentId: string): string =>\n    new Query(\"cursorBefore\", undefined, documentId).toString();\n\n  /**\n   * Return only limit results.\n   *\n   * @param {number} limit\n   * @returns {string}\n   */\n  static limit = (limit: number): string =>\n    new Query(\"limit\", undefined, limit).toString();\n\n  /**\n   * Filter resources by skipping the first offset results.\n   *\n   * @param {number} offset\n   * @returns {string}\n   */\n  static offset = (offset: number): string =>\n    new Query(\"offset\", undefined, offset).toString();\n\n  /**\n   * Filter resources where attribute contains the specified value.\n   * For string attributes, checks if the string contains the substring.\n   *\n   * Note: For array attributes, use {@link containsAny} or {@link containsAll} instead.\n   * @param {string} attribute\n   * @param {string | string[]} value\n   * @returns {string}\n   */\n  static contains = (attribute: string, value: string | any[]): string =>\n    new Query(\"contains\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute contains ANY of the specified values.\n   * For array and relationship attributes, matches documents where the attribute\n   * contains at least one of the given values.\n   *\n   * @param {string} attribute\n   * @param {any[]} value\n   * @returns {string}\n   */\n  static containsAny = (attribute: string, value: any[]): string =>\n    new Query(\"containsAny\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute contains ALL of the specified values.\n   * For array and relationship attributes, matches documents where the attribute\n   * contains every one of the given values.\n   *\n   * @param {string} attribute\n   * @param {any[]} value\n   * @returns {string}\n   */\n  static containsAll = (attribute: string, value: any[]): string =>\n    new Query(\"containsAll\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute does not contain the specified value.\n   *\n   * @param {string} attribute\n   * @param {string | any[]} value\n   * @returns {string}\n   */\n  static notContains = (attribute: string, value: string | any[]): string =>\n    new Query(\"notContains\", attribute, value).toString();\n\n  /**\n   * Filter resources by searching attribute for value (inverse of search).\n   * A fulltext index on attribute is required for this query to work.\n   *\n   * @param {string} attribute\n   * @param {string} value\n   * @returns {string}\n   */\n  static notSearch = (attribute: string, value: string): string =>\n    new Query(\"notSearch\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute is not between start and end (exclusive).\n   *\n   * @param {string} attribute\n   * @param {string | number | bigint} start\n   * @param {string | number | bigint} end\n   * @returns {string}\n   */\n  static notBetween = (attribute: string, start: string | number | bigint, end: string | number | bigint): string =>\n    new Query(\"notBetween\", attribute, [start, end] as QueryTypesList).toString();\n\n  /**\n   * Filter resources where attribute does not start with value.\n   *\n   * @param {string} attribute\n   * @param {string} value\n   * @returns {string}\n   */\n  static notStartsWith = (attribute: string, value: string): string =>\n    new Query(\"notStartsWith\", attribute, value).toString();\n\n  /**\n   * Filter resources where attribute does not end with value.\n   *\n   * @param {string} attribute\n   * @param {string} value\n   * @returns {string}\n   */\n  static notEndsWith = (attribute: string, value: string): string =>\n    new Query(\"notEndsWith\", attribute, value).toString();\n\n  /**\n   * Filter resources where document was created before date.\n   *\n   * @param {string} value\n   * @returns {string}\n   */\n  static createdBefore = (value: string): string =>\n    Query.lessThan(\"$createdAt\", value);\n\n  /**\n   * Filter resources where document was created after date.\n   *\n   * @param {string} value\n   * @returns {string}\n   */\n  static createdAfter = (value: string): string =>\n    Query.greaterThan(\"$createdAt\", value);\n\n  /**\n   * Filter resources where document was created between dates.\n   *\n   * @param {string} start\n   * @param {string} end\n   * @returns {string}\n   */\n  static createdBetween = (start: string, end: string): string =>\n    Query.between(\"$createdAt\", start, end);\n\n  /**\n   * Filter resources where document was updated before date.\n   *\n   * @param {string} value\n   * @returns {string}\n   */\n  static updatedBefore = (value: string): string =>\n    Query.lessThan(\"$updatedAt\", value);\n\n  /**\n   * Filter resources where document was updated after date.\n   *\n   * @param {string} value\n   * @returns {string}\n   */\n  static updatedAfter = (value: string): string =>\n    Query.greaterThan(\"$updatedAt\", value);\n\n  /**\n   * Filter resources where document was updated between dates.\n   *\n   * @param {string} start\n   * @param {string} end\n   * @returns {string}\n   */\n  static updatedBetween = (start: string, end: string): string =>\n    Query.between(\"$updatedAt\", start, end);\n\n  /**\n   * Combine multiple queries using logical OR operator.\n   *\n   * @param {string[]} queries\n   * @returns {string}\n   */\n  static or = (queries: string[]) =>\n    new Query(\"or\", undefined, queries.map((query) => JSONbig.parse(query))).toString();\n\n  /**\n   * Combine multiple queries using logical AND operator.\n   *\n   * @param {string[]} queries\n   * @returns {string}\n   */\n  static and = (queries: string[]) =>\n    new Query(\"and\", undefined, queries.map((query) => JSONbig.parse(query))).toString();\n\n  /**\n   * Filter array elements where at least one element matches all the specified queries.\n   *\n   * @param {string} attribute The attribute containing the array to filter on.\n   * @param {string[]} queries The list of query strings to match against array elements.\n   * @returns {string}\n   */\n  static elemMatch = (attribute: string, queries: string[]): string =>\n    new Query(\n      \"elemMatch\",\n      attribute,\n      queries.map((query) => JSONbig.parse(query))\n    ).toString();\n\n  /**\n   * Filter resources where attribute is at a specific distance from the given coordinates.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @param {number} distance\n   * @param {boolean} meters\n   * @returns {string}\n   */\n  static distanceEqual = (attribute: string, values: any[], distance: number, meters: boolean = true): string =>\n    new Query(\"distanceEqual\", attribute, [[values, distance, meters]] as QueryTypesList).toString();\n\n  /**\n   * Filter resources where attribute is not at a specific distance from the given coordinates.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @param {number} distance\n   * @param {boolean} meters\n   * @returns {string}\n   */\n  static distanceNotEqual = (attribute: string, values: any[], distance: number, meters: boolean = true): string =>\n    new Query(\"distanceNotEqual\", attribute, [[values, distance, meters]] as QueryTypesList).toString();\n\n  /**\n   * Filter resources where attribute is at a distance greater than the specified value from the given coordinates.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @param {number} distance\n   * @param {boolean} meters\n   * @returns {string}\n   */\n  static distanceGreaterThan = (attribute: string, values: any[], distance: number, meters: boolean = true): string =>\n    new Query(\"distanceGreaterThan\", attribute, [[values, distance, meters]] as QueryTypesList).toString();\n\n  /**\n   * Filter resources where attribute is at a distance less than the specified value from the given coordinates.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @param {number} distance\n   * @param {boolean} meters\n   * @returns {string}\n   */\n  static distanceLessThan = (attribute: string, values: any[], distance: number, meters: boolean = true): string =>\n    new Query(\"distanceLessThan\", attribute, [[values, distance, meters]] as QueryTypesList).toString();\n\n  /**\n   * Filter resources where attribute intersects with the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static intersects = (attribute: string, values: any[]): string =>\n    new Query(\"intersects\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute does not intersect with the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static notIntersects = (attribute: string, values: any[]): string =>\n    new Query(\"notIntersects\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute crosses the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static crosses = (attribute: string, values: any[]): string =>\n    new Query(\"crosses\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute does not cross the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static notCrosses = (attribute: string, values: any[]): string =>\n    new Query(\"notCrosses\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute overlaps with the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static overlaps = (attribute: string, values: any[]): string =>\n    new Query(\"overlaps\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute does not overlap with the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static notOverlaps = (attribute: string, values: any[]): string =>\n    new Query(\"notOverlaps\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute touches the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static touches = (attribute: string, values: any[]): string =>\n    new Query(\"touches\", attribute, [values]).toString();\n\n  /**\n   * Filter resources where attribute does not touch the given geometry.\n   *\n   * @param {string} attribute\n   * @param {any[]} values\n   * @returns {string}\n   */\n  static notTouches = (attribute: string, values: any[]): string =>\n    new Query(\"notTouches\", attribute, [values]).toString();\n}\n"]}