laravel-query-builder-js 1.0.1
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/LICENSE +21 -0
- package/README.md +388 -0
- package/dist/index.cjs +676 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +143 -0
- package/dist/index.d.ts +143 -0
- package/dist/index.js +672 -0
- package/dist/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/map-obj/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/lower-case/src/index.ts","../node_modules/no-case/src/index.ts","../node_modules/dot-case/src/index.ts","../node_modules/snake-case/src/index.ts","../node_modules/snakecase-keys/index.js","../src/base-query-builder.ts","../src/include-query-builder.ts","../src/query-builder.ts"],"names":["__assign","input","re","init_dist","snakeCase","map","split","get","pullAt","isEmpty","isFunction","has","set","merge","mergeWith","snakecaseKeys","import_snakecase_keys","cloneDeep"],"mappings":"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","file":"index.cjs","sourcesContent":["'use strict';\n\nconst isObject = value => typeof value === 'object' && value !== null;\nconst mapObjectSkip = Symbol('skip');\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value) &&\n\t!(value instanceof RegExp) &&\n\t!(value instanceof Error) &&\n\t!(value instanceof Date);\n\nconst mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tconst mapResult = mapper(key, value, object);\n\n\t\tif (mapResult === mapObjectSkip) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [newKey, newValue, {shouldRecurse = true} = {}] = mapResult;\n\n\t\t// Drop `__proto__` keys.\n\t\tif (newKey === '__proto__') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (options.deep && shouldRecurse && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue) ?\n\t\t\t\tmapArray(newValue) :\n\t\t\t\tmapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nmodule.exports = (object, mapper, options) => {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\treturn mapObject(object, mapper, options);\n};\n\nmodule.exports.mapObjectSkip = mapObjectSkip;\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Locale character mapping rules.\n */\ninterface Locale {\n regexp: RegExp;\n map: Record<string, string>;\n}\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nconst SUPPORTED_LOCALE: Record<string, Locale> = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str: string, locale: string) {\n const lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang) return lowerCase(str.replace(lang.regexp, (m) => lang.map[m]));\n return lowerCase(str);\n}\n\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str: string) {\n return str.toLowerCase();\n}\n","import { lowerCase } from \"lower-case\";\n\nexport interface Options {\n splitRegexp?: RegExp | RegExp[];\n stripRegexp?: RegExp | RegExp[];\n delimiter?: string;\n transform?: (part: string, index: number, parts: string[]) => string;\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nconst DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n\n// Remove all non-word characters.\nconst DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input: string, options: Options = {}) {\n const {\n splitRegexp = DEFAULT_SPLIT_REGEXP,\n stripRegexp = DEFAULT_STRIP_REGEXP,\n transform = lowerCase,\n delimiter = \" \",\n } = options;\n\n let result = replace(\n replace(input, splitRegexp, \"$1\\0$2\"),\n stripRegexp,\n \"\\0\"\n );\n let start = 0;\n let end = result.length;\n\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\") start++;\n while (result.charAt(end - 1) === \"\\0\") end--;\n\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input: string, re: RegExp | RegExp[], value: string) {\n if (re instanceof RegExp) return input.replace(re, value);\n return re.reduce((input, re) => input.replace(re, value), input);\n}\n","import { noCase, Options } from \"no-case\";\n\nexport { Options };\n\nexport function dotCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \".\",\n ...options,\n });\n}\n","import { dotCase, Options } from \"dot-case\";\n\nexport { Options };\n\nexport function snakeCase(input: string, options: Options = {}) {\n return dotCase(input, {\n delimiter: \"_\",\n ...options,\n });\n}\n","'use strict'\n\nconst map = require('map-obj')\nconst { snakeCase } = require('snake-case')\n\nconst PlainObjectConstructor = {}.constructor\n\nmodule.exports = function (obj, options) {\n if (Array.isArray(obj)) {\n if (obj.some(item => item.constructor !== PlainObjectConstructor)) {\n throw new Error('obj must be array of plain objects')\n }\n } else {\n if (obj.constructor !== PlainObjectConstructor) {\n throw new Error('obj must be an plain object')\n }\n }\n\n options = Object.assign({ deep: true, exclude: [], parsingOptions: {} }, options)\n\n const convertCase = options.snakeCase || ((key) => snakeCase(key, options.parsingOptions))\n\n return map(obj, function (key, val) {\n return [\n matches(options.exclude, key) ? key : convertCase(key),\n val,\n mapperOptions(key, val, options)\n ]\n }, options)\n}\n\nfunction matches (patterns, value) {\n return patterns.some(function (pattern) {\n return typeof pattern === 'string'\n ? pattern === value\n : pattern.test(value)\n })\n}\n\nfunction mapperOptions (key, val, options) {\n return options.shouldRecurse\n ? { shouldRecurse: options.shouldRecurse(key, val) }\n : undefined\n}\n","import {\n get,\n has,\n isEmpty,\n mergeWith,\n pullAt,\n set,\n isFunction,\n split,\n merge,\n snakeCase,\n} from \"lodash\";\nimport { withRelation } from \"./include-query-builder\";\n\n/**\n * All comparison / relationship operators understood by the backend.\n */\nexport type Op =\n | \"%\"\n | \"has\"\n | \">\"\n | \"<\"\n | \"=\"\n | \"!=\"\n | \"<>\"\n | \">=\"\n | \"<=\"\n | \"null\"\n | \"not_null\"\n | \"LIKE\"\n | \"like\"\n | \"BETWEEN\"\n | \"IN\"\n | \"in\"\n | \"has|=\"\n | \"has|<\"\n | \"has|>\"\n | \"any\"\n | \"any|like\"\n | \"ANY\"\n | \"doesntHave\"\n | \"_like_\";\n\nexport interface QueryFilter {\n field: string | string[];\n op: Op;\n value?: string | number | boolean;\n}\n\nexport interface QuerySort {\n [key: string]: \"asc\" | \"desc\";\n}\n\nexport interface QueryInclude {\n name: string;\n aggregate?: string;\n select?: string[];\n filter?: QueryFilterGroup;\n sort?: QuerySort;\n include?: withRelation[];\n}\n\nexport type QueryFilterGroup = {\n and?: QueryFilter[];\n or?: QueryFilter[];\n};\n\nexport interface Query {\n name?: string;\n select?: string[];\n aggregate?: string;\n filter?: QueryFilter | QueryFilterGroup;\n sort?: QuerySort;\n include?: (QueryInclude | withRelation)[];\n page?: number | null;\n limit?: number | null;\n}\n\n/**\n * A callback that receives a nested builder to compose grouped\n * (parenthesised) `and` / `or` conditions.\n */\nexport type NestedBuilderFn = (builder: BaseQueryBuilder<Query>) => void;\n\n/**\n * The fluent core shared by {@link QueryBuilder} and {@link withRelation}.\n * Holds the select / filter / sort / include state and exposes the\n * chainable methods used to mutate it.\n */\nexport class BaseQueryBuilder<T extends Query> {\n protected query: T = {\n name: \"\",\n select: [],\n filter: {},\n sort: {},\n include: [],\n page: null,\n limit: null,\n } as T;\n\n constructor(name: string = \"\") {\n this.query.name = name;\n }\n\n select(fields: string | string[]): this {\n if (typeof fields === \"string\") {\n return this.select(split(fields, \",\"));\n }\n this.query.select = fields.map((str) => snakeCase(str));\n return this;\n }\n\n resetSelect(): this {\n this.query.select = [];\n return this;\n }\n\n addSelect(fields: string[] | string): this {\n if (typeof fields === \"string\") {\n this.addSelect(split(fields, \",\"));\n }\n if (Array.isArray(fields)) {\n this.query.select!.push(...fields);\n }\n return this;\n }\n\n clearClauses(condition: \"and\" | \"or\", field: string | string[], op?: Op): this {\n let index = -1;\n if (typeof field === \"string\") {\n index = get(this.query, `filter.${condition}`, []).findIndex(\n (f: QueryFilter | QueryFilterGroup) => {\n if (!op) {\n return get(f, \"field\") === field;\n }\n\n return get(f, \"field\") === field && get(f, \"op\") === op;\n }\n );\n }\n\n if (Array.isArray(field)) {\n index = get(this.query, `filter.${condition}`, []).findIndex(\n (item: QueryFilter) =>\n Array.isArray(item.field) &&\n item.field.length === field.length &&\n item.field.every((_field, i) => _field == field[i])\n );\n }\n\n if (index !== -1) {\n pullAt(this.query.filter![condition], index);\n if (isEmpty(this.query.filter![condition])) delete this.query.filter![condition];\n }\n\n return this;\n }\n\n clearOrWhere(field: string | string[] | Function, op?: Op): this {\n if (isFunction(field) && typeof field === \"function\") {\n // Handling function-based filters\n const nestedBuilder = new BaseQueryBuilder<T>(this.query.name);\n field(nestedBuilder);\n const nestedFilter: any = nestedBuilder.getQuery().filter;\n this.removeFunctionBaseWhereClauses(this.query.filter, nestedFilter);\n } else this.clearClauses(\"or\", field as string | string[], op);\n return this;\n }\n\n removeFunctionBaseWhereClauses(baseFilter: any, nestedFilter: any): void {\n const areFiltersEqual = (filter1: any, filter2: any): boolean => {\n if (filter1.field !== filter2.field || filter1.op !== filter2.op) {\n return false;\n }\n\n if (filter1.value && filter2.value) {\n if (Array.isArray(filter1.value) && Array.isArray(filter2.value)) {\n if (filter1.value.length !== filter2.value.length) {\n return false;\n }\n for (let i = 0; i < filter1.value.length; i++) {\n if (!areFiltersEqual(filter1.value[i], filter2.value[i])) {\n return false;\n }\n }\n } else if (JSON.stringify(filter1.value) !== JSON.stringify(filter2.value)) {\n return false;\n }\n }\n\n return true;\n };\n\n const iterateAndRemove = (filters: any[], filterToRemove: any): any[] => {\n return filters.filter((filter) => {\n if (areFiltersEqual(filter, filterToRemove)) {\n return false;\n }\n\n if (filter.and) {\n filter.and = iterateAndRemove(filter.and, filterToRemove);\n }\n if (filter.or) {\n filter.or = iterateAndRemove(filter.or, filterToRemove);\n }\n\n return true;\n });\n };\n\n if (baseFilter.and) {\n baseFilter.and = iterateAndRemove(baseFilter.and, nestedFilter);\n if (isEmpty(baseFilter.and)) delete baseFilter.and;\n }\n if (baseFilter.or) {\n baseFilter.or = iterateAndRemove(baseFilter.or, nestedFilter);\n if (isEmpty(baseFilter.or)) delete baseFilter.or;\n }\n }\n\n clearWhere(field: string | string[] | Function, op?: Op): this {\n if (isFunction(field) && typeof field === \"function\") {\n // Handling function-based filters\n const nestedBuilder = new BaseQueryBuilder<T>(this.query.name);\n field(nestedBuilder);\n const nestedFilter: any = nestedBuilder.getQuery().filter;\n this.removeFunctionBaseWhereClauses(this.query.filter, nestedFilter);\n } else {\n this.clearClauses(\"and\", field as string | string[], op);\n }\n return this;\n }\n\n addFilter(condition: \"and\" | \"or\", filter: QueryFilter | QueryFilterGroup): this {\n const _filter = filter as QueryFilter;\n if (get(_filter, \"field\") && get(_filter, \"op\")) {\n this.clearClauses(condition, _filter.field, _filter.op);\n }\n\n if (!has(this.query.filter, condition)) {\n set(this.query.filter as object, condition, []);\n }\n\n (this.query.filter as any)[condition].push(filter);\n return this;\n }\n\n filter(filter: QueryFilterGroup): this {\n this.query.filter = filter;\n return this;\n }\n\n resetFilter(): this {\n this.query.filter = {};\n return this;\n }\n\n whereNotNull(field: string): this {\n return this.where(field, \"not_null\");\n }\n\n whereNull(field: string): this {\n return this.where(field, \"null\");\n }\n\n where(\n field: string | Function | string[],\n op?: Op,\n value?: string | number | boolean | Function | string[]\n ): this {\n if (\n isFunction(value) &&\n typeof value === \"function\" &&\n !isFunction(field) &&\n typeof field != \"function\"\n ) {\n const nestedBuilder = new BaseQueryBuilder<T>(this.query.name);\n value(nestedBuilder);\n const nestedFilter: any = nestedBuilder.getQuery().filter;\n return this.addFilter(\"and\", { field, op, value: nestedFilter } as any);\n }\n\n // if Field is function\n if (isFunction(field) && typeof field === \"function\") {\n // Handling function-based filters\n const nestedBuilder = new BaseQueryBuilder<T>(this.query.name);\n field(nestedBuilder);\n const nestedFilter: any = nestedBuilder.getQuery().filter;\n return this.addFilter(\"and\", nestedFilter);\n }\n\n if (\n (typeof field === \"string\" || Array.isArray(field)) &&\n op !== undefined &&\n value !== undefined\n ) {\n const _value = value as string;\n return this.addFilter(\"and\", { field, op, value: _value });\n }\n\n if (typeof field === \"string\" && op !== undefined && value === undefined) {\n return this.addFilter(\"and\", { field, op });\n }\n\n return this;\n }\n\n whereIn(\n field: string | Function | string[],\n value: string | number | boolean | Function | string[]\n ): this {\n return this.where(field, \"in\", value);\n }\n\n orWhere(\n field: string | string[] | Function,\n op?: Op,\n value?: string | number | boolean | Function | string[]\n ): this {\n if (\n isFunction(value) &&\n typeof value === \"function\" &&\n !isFunction(field) &&\n typeof field != \"function\"\n ) {\n const nestedBuilder = new BaseQueryBuilder<T>(this.query.name);\n value(nestedBuilder);\n const nestedFilter: any = nestedBuilder.getQuery().filter;\n return this.addFilter(\"or\", { field, op, value: nestedFilter } as any);\n }\n\n // if Field is function\n if (isFunction(field) && typeof field === \"function\") {\n // Handling function-based filters\n const nestedBuilder = new BaseQueryBuilder<T>(this.query.name);\n field(nestedBuilder);\n const nestedFilter: any = nestedBuilder.getQuery().filter;\n return this.addFilter(\"or\", nestedFilter);\n }\n\n if (\n (typeof field === \"string\" || Array.isArray(field)) &&\n op !== undefined &&\n value !== undefined\n ) {\n const _value = value as string;\n return this.addFilter(\"or\", { field, op, value: _value });\n }\n\n if (typeof field === \"string\" && op !== undefined && value === undefined) {\n return this.addFilter(\"or\", { field, op });\n }\n\n if (Array.isArray(field)) {\n // Iterate over each field and apply orWhere separately\n field.forEach((singleField) => this.orWhere(singleField, op, value));\n return this;\n }\n\n return this;\n }\n\n sort(sort: QuerySort): this {\n this.query.sort = sort;\n return this;\n }\n\n addSort(sort: QuerySort): this {\n this.query.sort = merge({}, this.query.sort, sort);\n return this;\n }\n\n resetSort(): this {\n this.query.sort = {};\n return this;\n }\n\n addInclude(include: QueryInclude | withRelation | (QueryInclude | withRelation)[]): this {\n if (!Array.isArray(include)) {\n return this.addInclude([include]);\n }\n this.query.include!.push(...include);\n return this;\n }\n\n include(include: QueryInclude | withRelation | (QueryInclude | withRelation)[]): this {\n if (!Array.isArray(include)) {\n return this.include([include]);\n }\n this.query.include = include;\n return this;\n }\n\n resetInclude(): this {\n this.query.include = [];\n return this;\n }\n\n paginate(page: number = 1, limit: number = 15): this {\n this.fromPage(page);\n this.query.limit = limit;\n return this;\n }\n\n fromPage(page: number = 1): this {\n this.query.page = page;\n return this;\n }\n\n resetQuery(): this {\n this.resetSelect();\n this.resetFilter();\n this.resetSort();\n this.resetInclude();\n this.paginate();\n return this;\n }\n\n addQueryBuilder(queryBuilder: BaseQueryBuilder<T>): this {\n const otherQuery = queryBuilder.getQuery();\n\n // Merge select fields\n this.query.select = [...new Set([...this.query.select!, ...otherQuery.select!])];\n\n // Merge filters (merge and/or conditions)\n this.query.filter = mergeWith(this.query.filter, otherQuery.filter, (objValue, srcValue) => {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n });\n\n // Merge sort fields\n this.query.sort = { ...this.query.sort, ...otherQuery.sort };\n\n // Merge includes\n this.query.include = [...new Set([...this.query.include!, ...otherQuery.include!])];\n\n return this;\n }\n\n getQuery(): T {\n return this.query;\n }\n}\n","import { isEmpty, map } from \"lodash\";\n\nimport { BaseQueryBuilder, QueryInclude } from \"./base-query-builder\";\nimport snakecaseKeys from \"snakecase-keys\";\n\n/**\n * Builds an eager-loaded relation (Laravel `with`) with its own nested\n * select / filter / sort / include. Instances are added to a parent query\n * via {@link BaseQueryBuilder.addInclude} / {@link BaseQueryBuilder.include}.\n */\nexport class withRelation extends BaseQueryBuilder<QueryInclude> {\n protected query: QueryInclude = {\n name: \"\",\n select: [],\n aggregate: \"\",\n filter: {},\n sort: {},\n include: [],\n };\n\n constructor(name?: string) {\n super(name);\n this.query.name = name!;\n }\n\n static create(name: string): withRelation {\n return new withRelation(name);\n }\n\n static new(name: string): withRelation {\n return withRelation.create(name);\n }\n\n aggregate(value: string): this {\n this.query.aggregate = value;\n return this;\n }\n\n new(name?: string): withRelation {\n return withRelation.create(name!);\n }\n\n getQuery(): QueryInclude {\n return this.query;\n }\n\n clone(): withRelation {\n const clone = new withRelation(this.query.name);\n clone.query = { ...this.query };\n return clone;\n }\n\n /**\n * Serialise this relation (and any nested relations) into the plain\n * object shape the backend expects.\n */\n toQueryObject(): Record<string, any> {\n const query: any = {};\n\n query.name = this.query.name;\n if (!isEmpty(this.query.select)) {\n query.select = this.query.select;\n }\n\n if (!isEmpty(this.query.filter)) {\n query.filter = this.query.filter;\n }\n\n if (!isEmpty(this.query.sort)) {\n query.sort = snakecaseKeys(this.query.sort as Record<string, any>);\n }\n if (!isEmpty(this.query.aggregate)) {\n query.aggregate = this.query.aggregate;\n }\n\n if (!isEmpty(this.query.include)) {\n query.include = map(this.query.include, (_include) => {\n if (_include instanceof withRelation) {\n return _include.toQueryObject();\n }\n return _include;\n });\n }\n\n return query;\n }\n}\n","import { cloneDeep, isEmpty, map } from \"lodash\";\nimport { withRelation } from \"./include-query-builder\";\nimport { BaseQueryBuilder, Query } from \"./base-query-builder\";\nimport snakecaseKeys from \"snakecase-keys\";\n\n/**\n * The main entry point. A fluent, Laravel-style query builder that\n * serialises `select` / `filter` / `sort` / `include` / pagination state\n * into query params (or a query string) for your API.\n *\n * @example\n * ```ts\n * const query = new QueryBuilder()\n * .where(\"state\", \"=\", \"Open\")\n * .whereIn(\"type\", [\"Buyer\", \"Tenant\"])\n * .sort({ createdAt: \"desc\" })\n * .paginate(1, 25);\n *\n * const params = query.toParams(); // { filter, sort, page, limit }\n * const qs = query.toQueryParams(); // \"filter=...&sort=...&page=1&limit=25\"\n * ```\n */\nexport class QueryBuilder extends BaseQueryBuilder<Query> {\n protected query: Query = {\n name: \"\",\n select: [],\n filter: {},\n sort: {},\n include: [],\n page: null,\n limit: null,\n };\n\n get limit(): number | null | undefined {\n return this.query.limit;\n }\n\n set limit(value: number) {\n this.query.limit = value;\n }\n\n get page(): number | null | undefined {\n return this.query.page;\n }\n\n set page(value: number) {\n this.query.page = value;\n }\n\n constructor(name?: string) {\n super(name);\n }\n\n static create(name?: string): QueryBuilder {\n return new QueryBuilder(name);\n }\n\n static new(name?: string): QueryBuilder {\n return QueryBuilder.create(name);\n }\n\n new(name?: string): QueryBuilder {\n return QueryBuilder.create(name);\n }\n\n static withRelation(name: string): withRelation {\n return withRelation.create(name);\n }\n\n withRelation(name: string): withRelation {\n return withRelation.create(name);\n }\n\n getQuery(): Query {\n return this.query;\n }\n\n clone(): QueryBuilder {\n const clone = new QueryBuilder();\n // Deep copy the query object to prevent shared references\n clone.query = cloneDeep(this.query);\n return clone;\n }\n\n nextPage(): this {\n this.query.page = (this.query.page || 1) + 1;\n return this;\n }\n\n previousPage(): this {\n this.query.page = (this.query.page || 2) - 1;\n return this;\n }\n\n resetPage(): this {\n this.query.page = 1;\n return this;\n }\n\n /**\n * Serialise into a `Record<string, string>` of query params. Filter,\n * select, sort and include values are JSON-stringified.\n */\n toParams(): Record<string, string> {\n const query: any = {};\n\n if (!isEmpty(this.query.select)) {\n query.select = JSON.stringify(this.query.select);\n }\n\n if (!isEmpty(this.query.filter)) {\n query.filter = JSON.stringify(this.query.filter);\n }\n\n if (!isEmpty(this.query.sort)) {\n query.sort = JSON.stringify(snakecaseKeys(this.query.sort as Record<string, any>));\n }\n\n if (!isEmpty(this.query.sort)) {\n query.aggregate = JSON.stringify(this.query);\n }\n\n if (!isEmpty(this.query.include)) {\n const include = map(this.query.include, (_include) => {\n if (_include instanceof withRelation) {\n return _include.toQueryObject();\n }\n\n return _include;\n });\n\n query.include = JSON.stringify(include);\n }\n\n if (this.query.page) {\n query.page = this.query.page;\n }\n\n if (this.query.limit) {\n query.limit = this.query.limit;\n }\n\n return query;\n }\n\n /**\n * Serialise into a URL-encoded query string, e.g.\n * `filter=...&sort=...&page=1&limit=25`.\n */\n toQueryParams(): string {\n const queryParams: string[] = [];\n if (!isEmpty(this.query.select)) {\n queryParams.push(`select=${encodeURIComponent(JSON.stringify(this.query.select))}`);\n }\n\n if (!isEmpty(this.query.filter)) {\n queryParams.push(`filter=${encodeURIComponent(JSON.stringify(this.query.filter))}`);\n }\n\n if (!isEmpty(this.query.sort)) {\n queryParams.push(\n `sort=${encodeURIComponent(JSON.stringify(snakecaseKeys(this.query.sort as Record<string, any>)))}`\n );\n }\n\n if (!isEmpty(this.query.include)) {\n const include = map(this.query.include, (_include) => {\n if (_include instanceof withRelation) {\n return _include.toQueryObject();\n }\n\n return _include;\n });\n queryParams.push(`include=${encodeURIComponent(JSON.stringify(include))}`);\n }\n\n if (this.query.page) {\n queryParams.push(`page=${this.query.page}`);\n }\n\n if (this.query.limit) {\n queryParams.push(`limit=${this.query.limit}`);\n }\n\n // Join all parameters with '&'\n return queryParams.join(\"&\");\n }\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All comparison / relationship operators understood by the backend.
|
|
3
|
+
*/
|
|
4
|
+
type Op = "%" | "has" | ">" | "<" | "=" | "!=" | "<>" | ">=" | "<=" | "null" | "not_null" | "LIKE" | "like" | "BETWEEN" | "IN" | "in" | "has|=" | "has|<" | "has|>" | "any" | "any|like" | "ANY" | "doesntHave" | "_like_";
|
|
5
|
+
interface QueryFilter {
|
|
6
|
+
field: string | string[];
|
|
7
|
+
op: Op;
|
|
8
|
+
value?: string | number | boolean;
|
|
9
|
+
}
|
|
10
|
+
interface QuerySort {
|
|
11
|
+
[key: string]: "asc" | "desc";
|
|
12
|
+
}
|
|
13
|
+
interface QueryInclude {
|
|
14
|
+
name: string;
|
|
15
|
+
aggregate?: string;
|
|
16
|
+
select?: string[];
|
|
17
|
+
filter?: QueryFilterGroup;
|
|
18
|
+
sort?: QuerySort;
|
|
19
|
+
include?: withRelation[];
|
|
20
|
+
}
|
|
21
|
+
type QueryFilterGroup = {
|
|
22
|
+
and?: QueryFilter[];
|
|
23
|
+
or?: QueryFilter[];
|
|
24
|
+
};
|
|
25
|
+
interface Query {
|
|
26
|
+
name?: string;
|
|
27
|
+
select?: string[];
|
|
28
|
+
aggregate?: string;
|
|
29
|
+
filter?: QueryFilter | QueryFilterGroup;
|
|
30
|
+
sort?: QuerySort;
|
|
31
|
+
include?: (QueryInclude | withRelation)[];
|
|
32
|
+
page?: number | null;
|
|
33
|
+
limit?: number | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A callback that receives a nested builder to compose grouped
|
|
37
|
+
* (parenthesised) `and` / `or` conditions.
|
|
38
|
+
*/
|
|
39
|
+
type NestedBuilderFn = (builder: BaseQueryBuilder<Query>) => void;
|
|
40
|
+
/**
|
|
41
|
+
* The fluent core shared by {@link QueryBuilder} and {@link withRelation}.
|
|
42
|
+
* Holds the select / filter / sort / include state and exposes the
|
|
43
|
+
* chainable methods used to mutate it.
|
|
44
|
+
*/
|
|
45
|
+
declare class BaseQueryBuilder<T extends Query> {
|
|
46
|
+
protected query: T;
|
|
47
|
+
constructor(name?: string);
|
|
48
|
+
select(fields: string | string[]): this;
|
|
49
|
+
resetSelect(): this;
|
|
50
|
+
addSelect(fields: string[] | string): this;
|
|
51
|
+
clearClauses(condition: "and" | "or", field: string | string[], op?: Op): this;
|
|
52
|
+
clearOrWhere(field: string | string[] | Function, op?: Op): this;
|
|
53
|
+
removeFunctionBaseWhereClauses(baseFilter: any, nestedFilter: any): void;
|
|
54
|
+
clearWhere(field: string | string[] | Function, op?: Op): this;
|
|
55
|
+
addFilter(condition: "and" | "or", filter: QueryFilter | QueryFilterGroup): this;
|
|
56
|
+
filter(filter: QueryFilterGroup): this;
|
|
57
|
+
resetFilter(): this;
|
|
58
|
+
whereNotNull(field: string): this;
|
|
59
|
+
whereNull(field: string): this;
|
|
60
|
+
where(field: string | Function | string[], op?: Op, value?: string | number | boolean | Function | string[]): this;
|
|
61
|
+
whereIn(field: string | Function | string[], value: string | number | boolean | Function | string[]): this;
|
|
62
|
+
orWhere(field: string | string[] | Function, op?: Op, value?: string | number | boolean | Function | string[]): this;
|
|
63
|
+
sort(sort: QuerySort): this;
|
|
64
|
+
addSort(sort: QuerySort): this;
|
|
65
|
+
resetSort(): this;
|
|
66
|
+
addInclude(include: QueryInclude | withRelation | (QueryInclude | withRelation)[]): this;
|
|
67
|
+
include(include: QueryInclude | withRelation | (QueryInclude | withRelation)[]): this;
|
|
68
|
+
resetInclude(): this;
|
|
69
|
+
paginate(page?: number, limit?: number): this;
|
|
70
|
+
fromPage(page?: number): this;
|
|
71
|
+
resetQuery(): this;
|
|
72
|
+
addQueryBuilder(queryBuilder: BaseQueryBuilder<T>): this;
|
|
73
|
+
getQuery(): T;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Builds an eager-loaded relation (Laravel `with`) with its own nested
|
|
78
|
+
* select / filter / sort / include. Instances are added to a parent query
|
|
79
|
+
* via {@link BaseQueryBuilder.addInclude} / {@link BaseQueryBuilder.include}.
|
|
80
|
+
*/
|
|
81
|
+
declare class withRelation extends BaseQueryBuilder<QueryInclude> {
|
|
82
|
+
protected query: QueryInclude;
|
|
83
|
+
constructor(name?: string);
|
|
84
|
+
static create(name: string): withRelation;
|
|
85
|
+
static new(name: string): withRelation;
|
|
86
|
+
aggregate(value: string): this;
|
|
87
|
+
new(name?: string): withRelation;
|
|
88
|
+
getQuery(): QueryInclude;
|
|
89
|
+
clone(): withRelation;
|
|
90
|
+
/**
|
|
91
|
+
* Serialise this relation (and any nested relations) into the plain
|
|
92
|
+
* object shape the backend expects.
|
|
93
|
+
*/
|
|
94
|
+
toQueryObject(): Record<string, any>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* The main entry point. A fluent, Laravel-style query builder that
|
|
99
|
+
* serialises `select` / `filter` / `sort` / `include` / pagination state
|
|
100
|
+
* into query params (or a query string) for your API.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* const query = new QueryBuilder()
|
|
105
|
+
* .where("state", "=", "Open")
|
|
106
|
+
* .whereIn("type", ["Buyer", "Tenant"])
|
|
107
|
+
* .sort({ createdAt: "desc" })
|
|
108
|
+
* .paginate(1, 25);
|
|
109
|
+
*
|
|
110
|
+
* const params = query.toParams(); // { filter, sort, page, limit }
|
|
111
|
+
* const qs = query.toQueryParams(); // "filter=...&sort=...&page=1&limit=25"
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
declare class QueryBuilder extends BaseQueryBuilder<Query> {
|
|
115
|
+
protected query: Query;
|
|
116
|
+
get limit(): number | null | undefined;
|
|
117
|
+
set limit(value: number);
|
|
118
|
+
get page(): number | null | undefined;
|
|
119
|
+
set page(value: number);
|
|
120
|
+
constructor(name?: string);
|
|
121
|
+
static create(name?: string): QueryBuilder;
|
|
122
|
+
static new(name?: string): QueryBuilder;
|
|
123
|
+
new(name?: string): QueryBuilder;
|
|
124
|
+
static withRelation(name: string): withRelation;
|
|
125
|
+
withRelation(name: string): withRelation;
|
|
126
|
+
getQuery(): Query;
|
|
127
|
+
clone(): QueryBuilder;
|
|
128
|
+
nextPage(): this;
|
|
129
|
+
previousPage(): this;
|
|
130
|
+
resetPage(): this;
|
|
131
|
+
/**
|
|
132
|
+
* Serialise into a `Record<string, string>` of query params. Filter,
|
|
133
|
+
* select, sort and include values are JSON-stringified.
|
|
134
|
+
*/
|
|
135
|
+
toParams(): Record<string, string>;
|
|
136
|
+
/**
|
|
137
|
+
* Serialise into a URL-encoded query string, e.g.
|
|
138
|
+
* `filter=...&sort=...&page=1&limit=25`.
|
|
139
|
+
*/
|
|
140
|
+
toQueryParams(): string;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { BaseQueryBuilder, type NestedBuilderFn, type Op, type Query, QueryBuilder, type QueryFilter, type QueryFilterGroup, type QueryInclude, type QuerySort, withRelation };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All comparison / relationship operators understood by the backend.
|
|
3
|
+
*/
|
|
4
|
+
type Op = "%" | "has" | ">" | "<" | "=" | "!=" | "<>" | ">=" | "<=" | "null" | "not_null" | "LIKE" | "like" | "BETWEEN" | "IN" | "in" | "has|=" | "has|<" | "has|>" | "any" | "any|like" | "ANY" | "doesntHave" | "_like_";
|
|
5
|
+
interface QueryFilter {
|
|
6
|
+
field: string | string[];
|
|
7
|
+
op: Op;
|
|
8
|
+
value?: string | number | boolean;
|
|
9
|
+
}
|
|
10
|
+
interface QuerySort {
|
|
11
|
+
[key: string]: "asc" | "desc";
|
|
12
|
+
}
|
|
13
|
+
interface QueryInclude {
|
|
14
|
+
name: string;
|
|
15
|
+
aggregate?: string;
|
|
16
|
+
select?: string[];
|
|
17
|
+
filter?: QueryFilterGroup;
|
|
18
|
+
sort?: QuerySort;
|
|
19
|
+
include?: withRelation[];
|
|
20
|
+
}
|
|
21
|
+
type QueryFilterGroup = {
|
|
22
|
+
and?: QueryFilter[];
|
|
23
|
+
or?: QueryFilter[];
|
|
24
|
+
};
|
|
25
|
+
interface Query {
|
|
26
|
+
name?: string;
|
|
27
|
+
select?: string[];
|
|
28
|
+
aggregate?: string;
|
|
29
|
+
filter?: QueryFilter | QueryFilterGroup;
|
|
30
|
+
sort?: QuerySort;
|
|
31
|
+
include?: (QueryInclude | withRelation)[];
|
|
32
|
+
page?: number | null;
|
|
33
|
+
limit?: number | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A callback that receives a nested builder to compose grouped
|
|
37
|
+
* (parenthesised) `and` / `or` conditions.
|
|
38
|
+
*/
|
|
39
|
+
type NestedBuilderFn = (builder: BaseQueryBuilder<Query>) => void;
|
|
40
|
+
/**
|
|
41
|
+
* The fluent core shared by {@link QueryBuilder} and {@link withRelation}.
|
|
42
|
+
* Holds the select / filter / sort / include state and exposes the
|
|
43
|
+
* chainable methods used to mutate it.
|
|
44
|
+
*/
|
|
45
|
+
declare class BaseQueryBuilder<T extends Query> {
|
|
46
|
+
protected query: T;
|
|
47
|
+
constructor(name?: string);
|
|
48
|
+
select(fields: string | string[]): this;
|
|
49
|
+
resetSelect(): this;
|
|
50
|
+
addSelect(fields: string[] | string): this;
|
|
51
|
+
clearClauses(condition: "and" | "or", field: string | string[], op?: Op): this;
|
|
52
|
+
clearOrWhere(field: string | string[] | Function, op?: Op): this;
|
|
53
|
+
removeFunctionBaseWhereClauses(baseFilter: any, nestedFilter: any): void;
|
|
54
|
+
clearWhere(field: string | string[] | Function, op?: Op): this;
|
|
55
|
+
addFilter(condition: "and" | "or", filter: QueryFilter | QueryFilterGroup): this;
|
|
56
|
+
filter(filter: QueryFilterGroup): this;
|
|
57
|
+
resetFilter(): this;
|
|
58
|
+
whereNotNull(field: string): this;
|
|
59
|
+
whereNull(field: string): this;
|
|
60
|
+
where(field: string | Function | string[], op?: Op, value?: string | number | boolean | Function | string[]): this;
|
|
61
|
+
whereIn(field: string | Function | string[], value: string | number | boolean | Function | string[]): this;
|
|
62
|
+
orWhere(field: string | string[] | Function, op?: Op, value?: string | number | boolean | Function | string[]): this;
|
|
63
|
+
sort(sort: QuerySort): this;
|
|
64
|
+
addSort(sort: QuerySort): this;
|
|
65
|
+
resetSort(): this;
|
|
66
|
+
addInclude(include: QueryInclude | withRelation | (QueryInclude | withRelation)[]): this;
|
|
67
|
+
include(include: QueryInclude | withRelation | (QueryInclude | withRelation)[]): this;
|
|
68
|
+
resetInclude(): this;
|
|
69
|
+
paginate(page?: number, limit?: number): this;
|
|
70
|
+
fromPage(page?: number): this;
|
|
71
|
+
resetQuery(): this;
|
|
72
|
+
addQueryBuilder(queryBuilder: BaseQueryBuilder<T>): this;
|
|
73
|
+
getQuery(): T;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Builds an eager-loaded relation (Laravel `with`) with its own nested
|
|
78
|
+
* select / filter / sort / include. Instances are added to a parent query
|
|
79
|
+
* via {@link BaseQueryBuilder.addInclude} / {@link BaseQueryBuilder.include}.
|
|
80
|
+
*/
|
|
81
|
+
declare class withRelation extends BaseQueryBuilder<QueryInclude> {
|
|
82
|
+
protected query: QueryInclude;
|
|
83
|
+
constructor(name?: string);
|
|
84
|
+
static create(name: string): withRelation;
|
|
85
|
+
static new(name: string): withRelation;
|
|
86
|
+
aggregate(value: string): this;
|
|
87
|
+
new(name?: string): withRelation;
|
|
88
|
+
getQuery(): QueryInclude;
|
|
89
|
+
clone(): withRelation;
|
|
90
|
+
/**
|
|
91
|
+
* Serialise this relation (and any nested relations) into the plain
|
|
92
|
+
* object shape the backend expects.
|
|
93
|
+
*/
|
|
94
|
+
toQueryObject(): Record<string, any>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* The main entry point. A fluent, Laravel-style query builder that
|
|
99
|
+
* serialises `select` / `filter` / `sort` / `include` / pagination state
|
|
100
|
+
* into query params (or a query string) for your API.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* const query = new QueryBuilder()
|
|
105
|
+
* .where("state", "=", "Open")
|
|
106
|
+
* .whereIn("type", ["Buyer", "Tenant"])
|
|
107
|
+
* .sort({ createdAt: "desc" })
|
|
108
|
+
* .paginate(1, 25);
|
|
109
|
+
*
|
|
110
|
+
* const params = query.toParams(); // { filter, sort, page, limit }
|
|
111
|
+
* const qs = query.toQueryParams(); // "filter=...&sort=...&page=1&limit=25"
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
declare class QueryBuilder extends BaseQueryBuilder<Query> {
|
|
115
|
+
protected query: Query;
|
|
116
|
+
get limit(): number | null | undefined;
|
|
117
|
+
set limit(value: number);
|
|
118
|
+
get page(): number | null | undefined;
|
|
119
|
+
set page(value: number);
|
|
120
|
+
constructor(name?: string);
|
|
121
|
+
static create(name?: string): QueryBuilder;
|
|
122
|
+
static new(name?: string): QueryBuilder;
|
|
123
|
+
new(name?: string): QueryBuilder;
|
|
124
|
+
static withRelation(name: string): withRelation;
|
|
125
|
+
withRelation(name: string): withRelation;
|
|
126
|
+
getQuery(): Query;
|
|
127
|
+
clone(): QueryBuilder;
|
|
128
|
+
nextPage(): this;
|
|
129
|
+
previousPage(): this;
|
|
130
|
+
resetPage(): this;
|
|
131
|
+
/**
|
|
132
|
+
* Serialise into a `Record<string, string>` of query params. Filter,
|
|
133
|
+
* select, sort and include values are JSON-stringified.
|
|
134
|
+
*/
|
|
135
|
+
toParams(): Record<string, string>;
|
|
136
|
+
/**
|
|
137
|
+
* Serialise into a URL-encoded query string, e.g.
|
|
138
|
+
* `filter=...&sort=...&page=1&limit=25`.
|
|
139
|
+
*/
|
|
140
|
+
toQueryParams(): string;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export { BaseQueryBuilder, type NestedBuilderFn, type Op, type Query, QueryBuilder, type QueryFilter, type QueryFilterGroup, type QueryInclude, type QuerySort, withRelation };
|