@yongdall/common 0.1.0 → 0.2.0
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/{types.d.mts → index.d.mts} +5 -3
- package/index.mjs +11 -3
- package/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -20,7 +20,7 @@ type FieldValue = {
|
|
|
20
20
|
value?: any;
|
|
21
21
|
placeholder?: string | undefined;
|
|
22
22
|
};
|
|
23
|
-
type Value = string | RecursiveArray<string> | FieldValue | null;
|
|
23
|
+
type Value = string | number | boolean | RecursiveArray<string> | FieldValue | null;
|
|
24
24
|
type Field = string | [string, ...number[]];
|
|
25
25
|
type Match = [fields: Field[], value: Value | (() => Value), operator: string | null, sign?: string];
|
|
26
26
|
type Children = [fields: Field[], children: AndList];
|
|
@@ -42,6 +42,7 @@ type Param = {
|
|
|
42
42
|
offset?: number | undefined;
|
|
43
43
|
limit?: number | undefined;
|
|
44
44
|
page?: number | undefined;
|
|
45
|
+
total?: boolean | undefined;
|
|
45
46
|
placeholders?: Record<string, string> | undefined;
|
|
46
47
|
};
|
|
47
48
|
//#endregion
|
|
@@ -112,6 +113,7 @@ declare function stringify({
|
|
|
112
113
|
limit,
|
|
113
114
|
offset,
|
|
114
115
|
page,
|
|
116
|
+
total,
|
|
115
117
|
placeholders
|
|
116
118
|
}: Partial<Param>, usePage?: boolean): string;
|
|
117
119
|
//#endregion
|
|
@@ -282,7 +284,7 @@ declare function yieldPermissionConstraintFields({
|
|
|
282
284
|
* @property {string} [authenticator] 登陆器
|
|
283
285
|
* @property {boolean} [authRequired] 是否强制登陆
|
|
284
286
|
* @property {string} [skin]
|
|
285
|
-
* @property {boolean} [
|
|
287
|
+
* @property {boolean} [multiUser]
|
|
286
288
|
* @property {string} [application]
|
|
287
289
|
* @property {string} [domain]
|
|
288
290
|
* @property {string | number} [port]
|
|
@@ -341,7 +343,7 @@ type BootConfiguration = {
|
|
|
341
343
|
*/
|
|
342
344
|
authRequired?: boolean | undefined;
|
|
343
345
|
skin?: string | undefined;
|
|
344
|
-
|
|
346
|
+
multiUser?: boolean | undefined;
|
|
345
347
|
application?: string | undefined;
|
|
346
348
|
domain?: string | undefined;
|
|
347
349
|
port?: string | number | undefined;
|
package/index.mjs
CHANGED
|
@@ -545,6 +545,7 @@ function parse(search, split = "&") {
|
|
|
545
545
|
let limit = 0;
|
|
546
546
|
let offset = 0;
|
|
547
547
|
let page = 0;
|
|
548
|
+
let total = false;
|
|
548
549
|
/** @type {Record<string, string>} */
|
|
549
550
|
const placeholders = {};
|
|
550
551
|
/** @type {(Parse.Match & {groups: string[]})[]} */
|
|
@@ -577,6 +578,8 @@ function parse(search, split = "&") {
|
|
|
577
578
|
if (val && /^\d+$/.test(val)) offset = parseInt(val);
|
|
578
579
|
} else if (name === "page") {
|
|
579
580
|
if (val && /^\d+$/.test(val)) page = parseInt(val);
|
|
581
|
+
} else if (name === "total") {
|
|
582
|
+
if (val) total = true;
|
|
580
583
|
}
|
|
581
584
|
continue;
|
|
582
585
|
}
|
|
@@ -608,6 +611,7 @@ function parse(search, split = "&") {
|
|
|
608
611
|
/** @type {Param} */
|
|
609
612
|
const result = {};
|
|
610
613
|
if (values?.length) result.values = values;
|
|
614
|
+
if (total) result.total = total;
|
|
611
615
|
if (limit && limit > 0) result.limit = limit;
|
|
612
616
|
if (page && page > 0) result.page = page;
|
|
613
617
|
if (offset && offset > 0) result.offset = offset;
|
|
@@ -644,6 +648,7 @@ function merge(a, b) {
|
|
|
644
648
|
const result = {};
|
|
645
649
|
if (values?.length) result.values = values;
|
|
646
650
|
if (limit && limit > 0) result.limit = limit;
|
|
651
|
+
if (a.total || b.total) result.total = true;
|
|
647
652
|
if (page && page > 0) result.page = page;
|
|
648
653
|
if (offset && offset > 0) result.offset = offset;
|
|
649
654
|
if (select?.length) result.select = select;
|
|
@@ -662,7 +667,7 @@ function merge(a, b) {
|
|
|
662
667
|
const encodeValue = (v) => encodeURIComponent(v).replaceAll("%20", "+");
|
|
663
668
|
/**
|
|
664
669
|
*
|
|
665
|
-
* @param {string | RecursiveArray<string> | FieldValue} value
|
|
670
|
+
* @param {string | boolean | number | RecursiveArray<string> | FieldValue} value
|
|
666
671
|
*/
|
|
667
672
|
function stringifyValue(value) {
|
|
668
673
|
if (Array.isArray(value)) {
|
|
@@ -679,6 +684,8 @@ function stringifyValue(value) {
|
|
|
679
684
|
if (value.length > 1) return val;
|
|
680
685
|
return `(${val})`;
|
|
681
686
|
}
|
|
687
|
+
if (typeof value === "number") return `${value}`;
|
|
688
|
+
if (typeof value === "boolean") return value ? "1" : 0;
|
|
682
689
|
if (typeof value !== "object") return encodeValue(value);
|
|
683
690
|
const { field, placeholder } = value;
|
|
684
691
|
if (placeholder) return `?${encodeValue(placeholder)}`;
|
|
@@ -743,7 +750,7 @@ function stringifyOr(list) {
|
|
|
743
750
|
* @param {Partial<Param>} query
|
|
744
751
|
* @param {boolean} [usePage]
|
|
745
752
|
*/
|
|
746
|
-
function stringify({ values, where, orWhere, sort, select, limit, offset, page, placeholders }, usePage) {
|
|
753
|
+
function stringify({ values, where, orWhere, sort, select, limit, offset, page, total, placeholders }, usePage) {
|
|
747
754
|
/** @type {string[]} */
|
|
748
755
|
let queries = [];
|
|
749
756
|
for (const v of values || []) {
|
|
@@ -751,6 +758,7 @@ function stringify({ values, where, orWhere, sort, select, limit, offset, page,
|
|
|
751
758
|
queries.push(`=${encodeValue(v)}`);
|
|
752
759
|
}
|
|
753
760
|
if (limit && limit > 0) queries.push(`:limit=${limit}`);
|
|
761
|
+
if (total) queries.push(`:total=${total}`);
|
|
754
762
|
if (usePage) {
|
|
755
763
|
if (page && page > 0) queries.push(`:page=${page}`);
|
|
756
764
|
} else if (offset && offset > 0) queries.push(`:offset=${offset}`);
|
|
@@ -1117,7 +1125,7 @@ const findPluginIdRegex = /^(?<pluginId>(?:(?<scope>@[a-zA-Z\d_.-]+)\/)?(?<name>
|
|
|
1117
1125
|
* @property {string} [authenticator] 登陆器
|
|
1118
1126
|
* @property {boolean} [authRequired] 是否强制登陆
|
|
1119
1127
|
* @property {string} [skin]
|
|
1120
|
-
* @property {boolean} [
|
|
1128
|
+
* @property {boolean} [multiUser]
|
|
1121
1129
|
* @property {string} [application]
|
|
1122
1130
|
* @property {string} [domain]
|
|
1123
1131
|
* @property {string | number} [port]
|
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["#config","#hooks","#stringTag","#keys"],"sources":["../../packages/common/Search/util.mjs","../../packages/common/Search/exec.mjs","../../packages/common/Search/fill.mjs","../../packages/common/Search/parse.mjs","../../packages/common/Search/merge.mjs","../../packages/common/Search/stringify.mjs","../../packages/common/Search/index.mjs","../../packages/common/Hook.mjs","../../packages/common/model.mjs","../../packages/common/yieldPermissionConstraintFields.mjs","../../packages/common/index.mjs"],"sourcesContent":["\n/**\n * @template T\n * @template TReturn\n * @template TNext\n * @param {Generator<T, TReturn, TNext>} generator \n * @param {(value: T) => TNext} run \n * @param {TNext} def \n */\nexport function runGenerator(generator, run, def) {\n\t/** @type {TNext} */\n\tlet value = def;\n\tfor (; ;) {\n\t\tconst result = generator.next(value);\n\t\tif (result.done) {\n\t\t\treturn result.value;\n\t\t}\n\t\tvalue = run(result.value);\n\t}\n}\n/**\n * @template T\n * @template TReturn\n * @template TNext\n * @param {Generator<T, TReturn, TNext>} generator \n * @param {(value: T) => PromiseLike<TNext> | TNext} run \n * @param {TNext} def \n */\nexport async function asyncRunGenerator(generator, run, def) {\n\t/** @type {TNext} */\n\tlet value = def;\n\tfor (; ;) {\n\t\tconst result = generator.next(value);\n\t\tif (result.done) {\n\t\t\treturn result.value;\n\t\t}\n\t\tvalue = await run(result.value);\n\t}\n}\n","/** @import { Children, Field, Match, Or } from './types.mjs' */\nimport { asyncRunGenerator, runGenerator } from './util.mjs';\n\n\n/**\n * \n * @param {Record<string, any>[]} data \n * @param {Field[]} fields \n * @returns {any[]}\n */\nfunction select(data, fields) {\n\tlet list = data;\n\tfor (let item of fields) {\n\t\tconst [field, ...sub] = typeof item === 'string' ? [item] : item;\n\n\t\tif (!list.length) { continue; }\n\t\t/** @type {any[]} */\n\t\tconst subList = [];\n\t\tit: for (const item of list) {\n\t\t\tif (!item || typeof item !== 'object') { continue; }\n\t\t\tif (!Object.hasOwn(item, field)) { continue; }\n\t\t\tlet value = item[field];\n\t\t\tfor (const index of sub) {\n\t\t\t\tif (!Array.isArray(value)) { continue it; }\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tsubList.push(value);\n\t\t}\n\t\tlist = subList.flat(Infinity).filter(v => v && typeof v === 'object');\n\t}\n\treturn list;\n\n}\n\n/**\n * \n * @param {Record<string, any>[]} list \n * @param {string} field \n * @returns {any[]}\n */\nfunction selectValue(list, field) {\n\t/** @type {any[]} */\n\tconst subList = [];\n\tfor (const item of list) {\n\t\tif (!item || typeof item !== 'object') { continue; }\n\t\tif (!Object.hasOwn(item, field)) { continue; }\n\t\tsubList.push(item[field]);\n\t}\n\treturn subList;\n\n}\n/**\n * @typedef {object} ExecParam\n * @property {string[]} fields\n * @property {string} operator\n * @property {string?} [sign]\n * @property {any} value\n * @property {any[]} values\n */\n/**\n * \n * @param {Record<string, any>[]} data \n * @param {string[]} parentFields \n * @param {Match} match \n * @returns {Generator<ExecParam, boolean?, boolean?>}\n */\nfunction* execMatch(data, parentFields, match) {\n\tconst fields = [...match[0]];\n\tconst currentFields = [...parentFields, ...fields.map(v => typeof v === 'string' ? v : v[0])];\n\tconst last = fields.pop();\n\tif (!last) { return null; }\n\tconst lastField = typeof last === 'string' ? last : last[0];\n\tconst records = select(data, fields);\n\tif (!records.length) { return false; }\n\tconst [, value, operator, sign] = match;\n\tif (operator === null) {\n\t\tconst values = selectValue(records, lastField);\n\t\treturn sign ? values.find(v => v === null) : values.find(v => v !== null);\n\t}\n\tif (typeof value !== 'object' || !value || Array.isArray(value)) {\n\n\t\tconst values = selectValue(records, lastField);\n\t\tif (!values.length) { return false; }\n\n\t\treturn yield ({ fields: currentFields, operator, sign, value, values });\n\t}\n\n\tif (value.filter || value.table || value.placeholder) { return null; }\n\tconst field = value.field;\n\tif (!field) { return null; }\n\n\t/** @type {boolean?} */\n\tlet defResult = false;\n\tfor (const item of records) {\n\t\tif (!item || typeof item !== 'object') { continue; }\n\t\tif (!Object.hasOwn(item, field)) { continue; }\n\t\tif (!Object.hasOwn(item, lastField)) { continue; }\n\t\tdefResult = null;\n\t\tconst result = yield ({ fields: currentFields, operator, sign, value: item[field], values: [item[lastField]] });\n\t\tif (result === null) { continue; }\n\t\treturn result;\n\t}\n\treturn defResult;\n\n}\n/**\n * \n * @param {Record<string, any>[]} data \n * @param {string[]} parentFields \n * @param {Match | Children | Or} match \n * @returns {Generator<ExecParam, boolean?, boolean?>}\n */\nfunction* execItem(data, parentFields, match) {\n\tif (!Array.isArray(match)) {\n\t\tconst { and, or } = match;\n\t\treturn yield* execOr(data, parentFields, and, or);\n\t}\n\tif (match.length !== 2) {\n\t\treturn yield* execMatch(data, parentFields, match);\n\n\t}\n\t/** @type {boolean?} */\n\tlet defResult = null;\n\tconst values = select(data, match[0]);\n\tif (!values.length) { return false; }\n\tconst fields = [...parentFields, ...match[0].map(v => typeof v === 'string' ? v : v[0])];\n\tfor (const item of match[1]) {\n\t\tconst result = yield* execItem(values, fields, item);\n\t\tif (result === null) { continue; }\n\t\tif (!result) { return false; }\n\t\tdefResult = true;\n\t}\n\treturn defResult;\n}\n/**\n * \n * @param {Record<string, any>[]} list \n * @param {string[]} parentFields \n * @param {(Match | Children)[]} [and] \n * @param {(Match | Children | Or)[]} [or] \n * @returns {Generator<ExecParam, boolean?, boolean?>}\n */\nfunction* execOr(list, parentFields, and, or) {\n\t/** @type {boolean?} */\n\tlet defResult = null;\n\tif (Array.isArray(and)) {\n\t\tfor (const item of and) {\n\t\t\tconst result = yield* execItem(list, parentFields, item);\n\t\t\tif (result === null) { continue; }\n\t\t\tif (!result) { return false; }\n\t\t\tdefResult = true;\n\t\t}\n\t}\n\tif (Array.isArray(or)) {\n\t\tfor (const item of or) {\n\t\t\tconst result = yield* execItem(list, parentFields, item);\n\t\t\tif (result === null) { continue; }\n\t\t\tif (result) { return true; }\n\t\t\tdefResult = true;\n\t\t}\n\t}\n\treturn defResult;\n\n}\n\n/**\n * \n * @param {Record<string, any>} data \n * @param {(value: ExecParam) => boolean?} exec \n * @param {(Match | Children)[]} [and] \n * @param {(Match | Children | Or)[]} [or] \n */\nexport function exec(data, exec, and, or) {\n\treturn runGenerator(execOr([data].flat(), [], and, or), exec, null);\n}\n\n/**\n * \n * @param {Record<string, any>} data \n * @param {(value: ExecParam) => PromiseLike<boolean?> | boolean?} exec \n * @param {(Match | Children)[]} [and] \n * @param {(Match | Children | Or)[]} [or] \n */\nexport async function asyncExec(data, exec, and, or) {\n\treturn asyncRunGenerator(execOr([data].flat(), [], and, or), exec, null);\n}\n","/** @import { Value } from './types.mjs' */\n/** @import { Children, Field, FieldValue, Match, Or } from './types.mjs' */\n\nimport { runGenerator } from './util.mjs';\n\n\n\n\n\n\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T[]} match \n * @returns {Generator<Value | (() => Value), T[]?, Value | (() => string | null) | null>}\n */\nfunction* fillList(match) {\n\t/** @type {T[]} */\n\tlet list = [];\n\tlet has = false;\n\tfor (const child of match) {\n\t\tconst val = yield* fillMatch(child);\n\t\tlist.push(val || child);\n\t\tif (val) { has = true; }\n\t}\n\treturn has ? list : null;\n\n}\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T} match \n * @returns {Generator<Value | (() => Value), T?, Value | (() => string | null) | null>}\n */\nfunction* fillMatch(match) {\n\tif (!Array.isArray(match)) {\n\t\tconst and = match.and && (yield* fillMatches(match.and));\n\t\tconst or = match.or && (yield* fillMatches(match.or));\n\t\tif (!and && !or) { return null; }\n\t\t/** @type {Or} */\n\t\tconst item = { and: and || match.and, or: or || match.or };\n\t\treturn /** @type {T} */(item);\n\t}\n\tif (match.length === 2) {\n\t\tlet children = yield* fillMatches(match[1]);\n\t\tif (!children) { return null; }\n\t\t/** @type {Children} */\n\t\tconst item = [match[0], match[1]];\n\t\treturn /** @type {T} */(item);\n\t}\n\tconst value = yield match[1];\n\tif (value === null) { return null; }\n\t/** @type {Match} */\n\tconst item = [match[0], value, match[2], match[3]];\n\treturn /** @type {T} */(item);\n\n}\n\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T[]} match \n * @returns {Generator<Value | (() => Value), T[]?, Value | (() => string | null) | null>}\n */\nexport function* fillMatches(match) {\n\t/** @type {T[]} */\n\tconst list = [];\n\tlet has = false;\n\tfor (const child of match) {\n\t\tconst val = yield* fillMatch(child);\n\t\tlist.push(val || child);\n\t\tif (val) { has = true; }\n\t}\n\treturn has ? list : null;\n\n}\n\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T[] | null | undefined} match \n * @param {(placeholder: string) => string | (() => string | null) | null} getPlaceholder \n * @returns {T[]}\n */\nexport function fill(match, getPlaceholder) {\n\tif (!match) { return []; }\n\t/**\n\t * \n\t * @template {Value | (() => Value)} T \n\t * @param {T} match \n\t * @returns {Value | (() => string | null) | null}\n\t */\n\tfunction fillValue(match) {\n\t\tif (!match || typeof match !== 'object') { return null; }\n\t\tif (Array.isArray(match)) { return null; }\n\t\tconst placeholder = match.placeholder;\n\t\tif (!placeholder || typeof placeholder !== 'string') { return null; }\n\t\treturn getPlaceholder(placeholder);\n\t}\n\treturn runGenerator(fillList(match), fillValue, null) || match;\n}\n","/** @import { RecursiveArray } from '../types/types.mjs' */\n/** @import { Children, Field, Match, Or, Param, Value } from './types.mjs' */\n\n\n\n/**\n * @typedef {object} Parse.Field\n * @property {string} field\n * @property {string?} [group]\n * @property {number[]} sub\n */\n/**\n * @typedef {object} Parse.Match\n * @property {null} [children]\n * @property {Parse.Field[]} fields\n * @property {string?} operator\n * @property {string} [sign]\n * @property {Value} value\n */\n\n\n/**\n * @typedef {object} Parse.Children\n * @property {Parse.Field[]} fields\n * @property {(Parse.Match | Parse.Children)[]} children\n */\n\n/**\n * \n * @param {Parse.Field[]} fields \n * @returns {Field[]}\n */\nfunction compressFields(fields) {\n\treturn fields.map(\n\t\t({ field, sub }) => sub.length ? [field, ...sub] : field\n\t);\n}\n\n/**\n * \n * @param {Parse.Match | Parse.Children} v \n * @returns {Match | Children}\n */\nfunction compressAndItem(v) {\n\tif (v.children) {\n\treturn [compressFields(v.fields), v.children.map(compressAndItem)];\n\n\t}\n\tconst { fields, operator, value, sign } = v;\n\treturn [compressFields(fields), value, operator, sign];\n}\n\nconst fieldParserRegex = /^([-_\\d\\p{L}]+)((?:\\[-?\\d+\\])*)$/u;\n/**\n * \n * @param {string} l \n */\nfunction parseFields(l) {\n\t/** @type {Parse.Field[]} */\n\tconst fields = [];\n\tfor (const v of l.split('.')) {\n\t\tif (!v || v[0] === '?') { return null; }\n\t\tconst index = v.indexOf('?');\n\t\tconst r = fieldParserRegex.exec(index > 0 ? v.slice(0, index) : v);\n\t\tif (!r) { return null; }\n\t\tconst sub = r[2]?.split(/\\[|\\]/).filter(Boolean).map(v => parseInt(v) || 0) || [];\n\t\tconst group = index > 0 ? v.slice(index) : undefined;\n\t\tfields.push({ field: r[1], group, sub });\n\t}\n\treturn fields;\n\n}\n\n\n/** @param {string} v */\nconst decodeValue = v => decodeURIComponent(v.replaceAll('+', ' '));\n/**\n * \n * @param {string} s \n * @returns {string | RecursiveArray<string>?}\n */\nfunction parseArrayValue(s) {\n\t/** @type {(string | RecursiveArray<string>)[]} */\n\tconst root = [];\n\t/** @type {(string | RecursiveArray<string>)[][]} */\n\tconst stack = [];\n\tlet current = root;\n\t/** @type {string[]} */\n\tlet strings = [];\n\tlet end = false;\n\tlet must = true;\n\tfunction add() {\n\t\tcurrent.push(decodeValue(strings.join()));\n\t\tstrings = [];\n\t}\n\n\tfor (const c of s) {\n\t\tif (c === ',') {\n\t\t\tif (end) {\n\t\t\t\tend = false;\n\t\t\t} else {\n\t\t\t\tadd();\n\t\t\t}\n\t\t\tmust = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === ')') {\n\t\t\tif (must || strings.length) {\n\t\t\t\tadd();\n\t\t\t\tmust = false;\n\t\t\t}\n\t\t\tconst last = stack.pop();\n\t\t\tif (!last) { return null; }\n\t\t\tlast.push(current);\n\t\t\tcurrent = last;\n\t\t\tend = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (end) { return null; }\n\t\tmust = false;\n\t\tif (c !== '(') {\n\t\t\tstrings.push(c);\n\t\t\tcontinue;\n\t\t}\n\t\tif (strings.length) { return null; }\n\t\tstack.push(current);\n\t\tcurrent = [];\n\t}\n\tif (must || strings.length) {\n\t\tadd();\n\t}\n\tif (stack.length) { return null; }\n\treturn root.length === 1 ? root[0] : root;\n}\n\nconst valueQRegex = /^([-_\\d\\p{L}]+)@([-_\\d\\p{L}]+)/u;\n\n\n/**\n * \n * @param {string?} v \n * @returns {Value | true}\n */\nfunction parseValue(v) {\n\tif (v === null) { return true; }\n\tif (v[0] === '?') {\n\t\treturn { placeholder: decodeValue(v.slice(1)) };\n\t}\n\tif (v[0] === ':') {\n\t\treturn { field: decodeValue(v.slice(1)) };\n\t}\n\tif (v[0] === '@') {\n\t\t// TODO: \n\t\treturn null;\n\t}\n\tconst vq = valueQRegex.test(v);\n\tif (vq) {\n\t\t// TODO: \n\t\treturn null;\n\t}\n\tif (v.includes('(') || v.includes(')')) {\n\t\tconst list = parseArrayValue(v);\n\t\tif (list) { return list; }\n\t}\n\tif (v.includes(',')) {\n\t\treturn v.split(',').map(v => decodeValue(v.replaceAll('+', ' ')));\n\t}\n\treturn decodeValue(v);\n}\n/**\n * \n * @param {(Parse.Match | Parse.Children)[]} list \n * @returns {Iterable<Match | Children>}\n */\nfunction* toAnd(list) {\n\t/** @type {[(Parse.Match | Parse.Children), Parse.Field[], Parse.Field[]][]} */\n\tconst values = list.map(v => {\n\t\tconst fields = v.fields;\n\t\tconst index = fields.findLastIndex(v => v.group);\n\t\tif (index < 0 || index >= fields.length - 1) {\n\t\t\treturn [v, [], []];\n\t\t}\n\t\tconst field = fields[index];\n\t\tif (!field) { return [v, [], []]; }\n\t\treturn [{ ...v, fields: fields.slice(index + 1) }, fields.slice(0, index + 1), [...fields.slice(0, index), { ...field, group: undefined }]];\n\t});\n\tconst map = Object.groupBy(values, v => JSON.stringify(v[1]));\n\tyield* map['[]']?.map(v => compressAndItem(v[0])) || [];\n\tdelete map['[]'];\n\t/** @type {Parse.Children[]} */\n\tconst result = Object.values(map).filter(Boolean).map((list = []) => {\n\t\tif (!list?.length) { return { fields: [], children: [] }; }\n\t\treturn { fields: list[0][2] || [], children: list.map(v => v[0]) };\n\t}).filter(v => v.fields.length);\n\tif (!result.length) { return; }\n\n\tyield* toAnd(result);\n}\n\n/**\n * \n * @param {(Parse.Match & {groups: string[]})[]} list \n * @returns {Or}\n */\nfunction toOr(list) {\n\tconst map = Map.groupBy(list, v => v.groups.shift() ?? null);\n\tconst and = map.get(null) || [];\n\tconst baseOr = map.get('') || [];\n\tmap.delete(null);\n\tmap.delete('');\n\n\treturn {\n\t\tor: [\n\t\t\t...baseOr.map(v => compressAndItem(v)),\n\t\t\t...[...map.values()].map(v => toOr(v)),\n\t\t],\n\t\tand: [...toAnd(and)],\n\t};\n}\n/**\n * \n * @param {string} search \n * @returns {Param}\n */\nexport function parse(search, split = '&') {\n\t/** @type {string[]} */\n\tconst values = [];\n\t/** @type {string[]} */\n\tconst select = [];\n\t/** @type {[field: string, desc?: boolean][]} */\n\tconst sorts = [];\n\tlet limit = 0;\n\tlet offset = 0;\n\tlet page = 0;\n\t/** @type {Record<string, string>} */\n\tconst placeholders = {};\n\n\n\t/** @type {(Parse.Match & {groups: string[]})[]} */\n\tconst allMatches = [];\n\n\tfor (const s of search.split(split)) {\n\t\tif (s[0] === '=') {\n\t\t\tvalues.push(s.slice(1));\n\t\t\tcontinue;\n\t\t}\n\t\tconst index = s.indexOf('=');\n\t\tconst key = index < 0 ? s : s.slice(0, index);\n\t\tconst val = index < 0 ? null : s.slice(index + 1);\n\t\tif (index <= 0) { continue; }\n\t\tif (`.!@^*<>{}[]()+|;,\"'\\`\\\\/`.includes(key[0])) { continue; }\n\t\tif (key[0] === '?') {\n\t\t\tplaceholders[decodeValue(key.slice(1))] = decodeValue(val || '');\n\t\t\tcontinue;\n\t\t}\n\t\tif (key[0] === ':') {\n\t\t\tconst name = key.slice(1);\n\t\t\tif (!val) { continue; }\n\t\t\tif (name === 'sort') {\n\t\t\t\tsorts.push(...val.split(',').filter(Boolean).map(v => {\n\t\t\t\t\tconst desc = v[0] === '-';\n\t\t\t\t\tconst name = desc ? v.slice(1) : v;\n\t\t\t\t\treturn /** @type {[field: string, desc?: boolean]} */([decodeValue(name), desc]);\n\t\t\t\t}).filter(Boolean));\n\t\t\t} else if (name === 'select') {\n\t\t\t\tselect.push(...val.split(',').map(decodeValue).filter(Boolean));\n\t\t\t} else if (name === 'limit') {\n\t\t\t\tif (val && /^\\d+$/.test(val)) { limit = parseInt(val); }\n\t\t\t} else if (name === 'offset') {\n\t\t\t\tif (val && /^\\d+$/.test(val)) { offset = parseInt(val); }\n\t\t\t} else if (name === 'page') {\n\t\t\t\tif (val && /^\\d+$/.test(val)) { page = parseInt(val); }\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst sg = key.split('~');\n\t\tlet field = sg.pop() || '';\n\t\tlet sign = '';\n\t\tif ('!'.includes(field[field.length - 1])) {\n\t\t\tsign = '!';\n\t\t\tfield = field.slice(0, -1);\n\t\t}\n\n\t\tconst l = field.split(':', 3);\n\t\tif (l.length > 2) { continue; }\n\t\tconst fields = parseFields(l[0]);\n\t\tif (!fields) { continue; }\n\t\tconst value = parseValue(val);\n\t\tif (value === null) { continue; }\n\n\t\tconst operator = decodeValue(l[1] || '');\n\t\tconst groupIndex = sg.indexOf('');\n\t\tconst groups = groupIndex < 0 ? sg : sg.slice(0, groupIndex + 1);\n\t\tallMatches.push({\n\t\t\tgroups,\n\t\t\tfields,\n\t\t\toperator: !operator && value === true ? null : operator,\n\t\t\tsign,\n\t\t\tvalue: value === true ? null : value\n\t\t});\n\t}\n\n\tconst { and, or } = toOr(allMatches);\n\n\t/** @type {Param} */\n\tconst result = {};\n\tif (values?.length) {\n\t\tresult.values = values;\n\t}\n\tif (limit && limit > 0) {\n\t\tresult.limit = limit;\n\t}\n\tif (page && page > 0) {\n\t\tresult.page = page;\n\t}\n\tif (offset && offset > 0) {\n\t\tresult.offset = offset;\n\t}\n\tif (select?.length) {\n\t\tresult.select = select;\n\t}\n\tif (sorts?.length) {\n\t\tresult.sort = sorts;\n\t}\n\tconst where = and;\n\tif (where?.length) {\n\t\tresult.where = where;\n\t}\n\tconst orWhere = or;\n\tif (orWhere?.length) {\n\t\tresult.orWhere = orWhere;\n\t}\n\tif (Array.isArray(placeholders) && placeholders.length) {\n\t\tresult.placeholders = placeholders;\n\t}\n\n\n\treturn result\n}\n","/** @import { Param } from './types.mjs' */\n\n/**\n * \n * @param {Partial<Param>} a \n * @param {Partial<Param>} b \n * @returns {Param}\n */\nexport function merge(a, b) {\n\tconst limit = b.limit || a.limit || 10;\n\tconst page = b.page ?? a.page;\n\tconst offset = \n\tb.offset ?? (b.limit && (b.page || b.page === 0) ? (Math.floor(Math.max(b.page || 0, 1)) - 1) * b.limit : null)\n\t?? a.offset ?? (a.limit && (a.page || a.page === 0) ? (Math.floor(Math.max(a.page || 0, 1)) - 1) * a.limit : null)\n\t?? (Math.floor(Math.max(page || 0, 1)) - 1) * limit;\n\n\tconst values = [...a.values || [], ...b.values || []]\n\tconst sort = [...a.sort || [], ...b.sort || []]\n\tconst select = [...a.select || [], ...b.select || []]\n\tconst where = [...a.where || [], ...b.where || []]\n\tconst orWhere = [...a.orWhere || [], ...b.orWhere || []]\n\tconst or = [...a.or || [], ...b.or || []]\n\n\t/** @type {Param} */\n\tconst result = {};\n\tif (values?.length) {\n\t\tresult.values = values;\n\t}\n\tif (limit && limit > 0) {\n\t\tresult.limit = limit;\n\t}\n\tif (page && page > 0) {\n\t\tresult.page = page;\n\t}\n\tif (offset && offset > 0) {\n\t\tresult.offset = offset;\n\t}\n\tif (select?.length) {\n\t\tresult.select = select;\n\t}\n\tif (sort?.length) {\n\t\tresult.sort = sort;\n\t}\n\tif (where?.length) {\n\t\tresult.where = where;\n\t}\n\tif (orWhere?.length) {\n\t\tresult.orWhere = orWhere;\n\t}\n\tif (or?.length) {\n\t\tresult.or = or;\n\t}\n\n\treturn result;\n}\n","/** @import { RecursiveArray } from '../types/types.mjs' */\n/** @import { Children, Field, FieldValue, Match, Or, Param } from './types.mjs' */\n\n/** @param {string} v */\nconst encodeValue = v => encodeURIComponent(v).replaceAll('%20', '+');\n\n/**\n * \n * @param {string | RecursiveArray<string> | FieldValue} value \n */\nfunction stringifyValue(value) {\n\tif (Array.isArray(value)) {\n\t\t/**\n\t\t * \n\t\t * @param {string | RecursiveArray<string>} v \n\t\t * @returns {string}\n\t\t */\n\t\tfunction s(v) {\n\t\t\tif (Array.isArray(v)) {\n\t\t\t\treturn `(${v.map(s).join(',')})`;\n\t\t\t}\n\t\t\treturn encodeValue(v);\n\t\t}\n\t\tconst val = value.map(s).join(',');\n\t\tif (value.length > 1) { return val; }\n\t\treturn `(${val})`;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn encodeValue(value);\n\t}\n\tconst { field, placeholder } = value;\n\tif (placeholder) {\n\t\treturn `?${encodeValue(placeholder)}`;\n\t}\n\tif (field) {\n\t\treturn `:${encodeValue(field)}`;\n\t}\n\t// TODO:\n\treturn '';\n}\n\n/**\n * \n * @param {Field[]} fields \n */\nfunction stringifyFields(fields) {\n\treturn fields.map(item => {\n\t\tconst [field, ...sub] = typeof item === 'string' ? [item] : item;\n\t\t\treturn `${encodeValue(field)}${sub.map(() => `[k]`).join('')}`;\n\t\t}\n\t).join('.');\n}\n/**\n * \n * @param {Match} define \n */\nfunction stringifyDefine([fields, value, operator, sign]) {\n\tconst key = operator\n\t\t? `${stringifyFields(fields)}:${encodeValue(operator)}${sign || ''}`\n\t\t: `${stringifyFields(fields)}${sign || ''}`;\n\tif (operator === null) { return key; }\n\tif (value === null) { return ''; }\n\tif (typeof value === 'function') { return''; }\n\treturn `${key}=${stringifyValue(value)}`;\n}\n/**\n * \n * @param {(Match | Children)[]} list \n * @returns {string[]}\n */\nfunction stringifyAnd(list) {\n\tlet index = 0;\n\treturn list.flatMap(v => {\n\t\tif (v.length !== 2) {\n\t\t\treturn stringifyDefine(v);\n\t\t}\n\t\tconst list = stringifyAnd(v[1]);\n\t\tif (!list.length) { return []; }\n\t\tlet key = stringifyFields(v[0]);\n\t\tif (list.length > 1) {\n\t\t\tkey += `?${(index++).toString(36)}`;\n\t\t}\n\t\treturn list.map(v => `${key}.${v}`);\n\t}).filter(Boolean);\n}\n\n/**\n * \n * @param {(Match | Children | Or)[]} list \n * @returns {string[]}\n */\nfunction stringifyOr(list) {\n\tlet index = 0;\n\treturn list.map(v => {\n\t\tif (Array.isArray(v)) {\n\t\t\treturn stringifyAnd([v]);\n\n\t\t}\n\t\treturn [\n\t\t\t...stringifyAnd(v.and || []),\n\t\t\t...stringifyOr(v.or || []),\n\t\t];\n\t}).flatMap(list => {\n\t\tif (!list) { return []; }\n\t\tconst key = list.length === 1 ? `~` : `${(index++).toString(36)}~`;\n\t\treturn list.map(v => `${key}${v}`);\n\t});\n}\n/**\n * \n * @param {Partial<Param>} query \n * @param {boolean} [usePage] \n */\nexport function stringify({\n\tvalues,\n\twhere,\n\torWhere,\n\tsort,\n\tselect,\n\tlimit, offset, page,\n\tplaceholders,\n}, usePage) {\n\t/** @type {string[]} */\n\tlet queries = [];\n\tfor (const v of values || []) {\n\t\tif (!v) { continue; }\n\t\tqueries.push(`=${encodeValue(v)}`);\n\t}\n\tif (limit && limit > 0) {\n\t\tqueries.push(`:limit=${limit}`);\n\t}\n\tif (usePage) {\n\t\tif (page && page > 0) {\n\t\t\tqueries.push(`:page=${page}`);\n\t\t}\n\t} else {\n\t\tif (offset && offset > 0) {\n\t\t\tqueries.push(`:offset=${offset}`);\n\t\t}\n\t}\n\tif (select) {\n\t\tconst val = select.filter(Boolean).map(encodeValue).join(',');\n\t\tif (val) {\n\t\t\tqueries.push(`.select=${val}`);\n\t\t}\n\t}\n\tif (sort) {\n\t\tconst val = sort.filter(Boolean).map(v => {\n\t\t\tif (Array.isArray(v)) {\n\t\t\t\tconst [field, desc] = v;\n\t\t\t\tif (field) {\n\t\t\t\t\treturn `${desc ? '-' : ''}${encodeValue(field)}`;\n\t\t\t\t}\n\t\t\t} else if (v) {\n\t\t\t\treturn encodeValue(v);\n\t\t\t}\n\t\t\treturn '';\n\t\t}).filter(Boolean).join(',');\n\t\tif (val) {\n\t\t\tqueries.push(`.sort=${val}`);\n\t\t}\n\t}\n\tif (placeholders && typeof placeholders === 'object' && !Array.isArray(placeholders)) {\n\t\tfor (const [k, v] of Object.entries(placeholders)) {\n\t\t\tqueries.push(`?${encodeValue(k)}=${encodeValue(v)}`);\n\n\t\t}\n\t}\n\tfor (const v of stringifyAnd(where || [])) {\n\t\tqueries.push(v);\n\t}\n\tfor (const v of stringifyOr(orWhere || [])) {\n\t\tqueries.push(v);\n\t}\n\treturn queries.join('&');\n}\n","export * from './exec.mjs';\nexport * from './fill.mjs';\nexport { parse } from './parse.mjs';\nexport * from './merge.mjs';\nexport * from './stringify.mjs';\nexport * from './types.mjs';\nexport * from './util.mjs';\nexport * from './WhereLike.mjs';\n","/**\n * @template T\n * @typedef {T | readonly T[]} Hook.MaybeArray\n */\n/**\n * @template T\n * @typedef {T extends readonly any[] ? Readonly<T>\n * : T extends Record<string, any> ? Hook.MaybeArray<Hook.Define<T> | T>\n * : T extends object ? Hook.MaybeArray<Hook.Define<T> | T>\n * : Hook.MaybeArray<T>\n * } Hook.Item\n */\n/**\n * @template T\n * @typedef {T extends Record<string, any> ? { [k in keyof T]?: Hook.Item<T[k]> } : T} Hook.Define\n*/\n\n\n\n\n/** @type {*} */\nconst noopFilter = () => true;\n\n\n\n\n/**\n * \n * @param {Record<string, any>} plugin \n * @param {string[]} name \n * @returns {*[]}\n */\nfunction findHook(plugin, name) {\n\tlet list = [plugin].flat();\n\tfor (const k of name.filter(Boolean)) {\n\t\tconst values = [];\n\t\tfor (const it of list) {\n\t\t\tif (!it || typeof it !== 'object') { continue; }\n\t\t\tif (!Object.hasOwn(it, k)) { continue; }\n\t\t\tvalues.push(it[k]);\n\t\t}\n\t\tif (!values.length) { return []; }\n\t\tlist = values.flat();\n\t}\n\treturn list;\n}\n\n/**\n * \n * @template T\n * @param {any} plugin \n * @param {string[]} names \n * @returns {T | void}\n */\nfunction first(plugin, names) {\n\tif (!names.length) { return plugin; }\n\tif (!plugin || typeof plugin !== 'object') { return; }\n\tconst [name, ...keys] = names;\n\tfor (const v of [plugin].flat()) {\n\t\tconst val = first(v[name], keys);\n\t\tif (val !== undefined) { return val; }\n\t}\n}\n\n/**\n * \n * @template T\n * @param {Record<string, any>} hooks \n * @param {string[]} name \n * @returns {IterableIterator<T>}\n */\nfunction* values(hooks, name) {\n\tfor (const it of Object.values(hooks)) {\n\t\tfor (const value of findHook(it, name)) {\n\t\t\tyield value;\n\t\t}\n\t}\n}\n\n\n\n\n/**\n * @template T\n */\nexport class Hook {\n\t/**\n\t * @template {object} T\n\t * @param {Record<string, Hook.Define<T>> | (() => Record<string, Hook.Define<T>>)} [options]\n\t * @return {Hook<T>}\n\t */\n\tstatic build(options) {\n\t\tconst hook = new Hook();\n\t\treturn Hook.update(hook, options);\n\t}\n\t/**\n\t * \n\t * @template T\n\t * @param {Hook<T>} hook\n\t * @param {Record<string, Hook.Define<T>> | (() => Record<string, Hook.Define<T>>)} [options]\n\t */\n\tstatic update(hook, options) {\n\t\tlet updated = false;\n\t\tif (typeof options === 'function') {\n\t\t\tObject.defineProperty(hook.#config, 'hooks', {\n\t\t\t\tconfigurable: true,\n\t\t\t\tget() {\n\t\t\t\t\tconst r = options();\n\t\t\t\t\treturn typeof r === 'object' && r || {};\n\t\t\t\t},\n\t\t\t});\n\t\t\tupdated = true;\n\t\t} else {\n\t\t\tif (options && typeof options === 'object') {\n\t\t\t\tObject.defineProperty(hook.#config, 'hooks', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tvalue: options,\n\t\t\t\t});\n\t\t\t\tupdated = true;\n\t\t\t}\n\t\t}\n\t\tif (updated) {\n\t\t\tHook.reset(hook);\n\t\t}\n\t\treturn hook;\n\t}\n\t/**\n\t * \n\t * @template T\n\t * @param {Hook<T>} hook\n\t */\n\tstatic reset(hook) {\n\t\tconst hooks = hook.#hooks;\n\t\tconst resetFn = hook.#config.resetFn;\n\t\tresetFn.sort(([, a], [, b]) => a - b);\n\t\tconst before = resetFn.filter(([, p]) => p <= 0);\n\t\tconst after = resetFn.filter(([, p]) => p > 0);\n\t\tfor (const [fn] of before) { fn(); }\n\t\tfor (const fn of values(hooks, ['reset'])) {\n\t\t\tif (typeof fn !== 'function') { continue; }\n\t\t\tfn();\n\t\t}\n\t\tfor (const [fn] of after) { fn(); }\n\t}\n\n\t/** @type {{hooks: any; resetFn: [fn: () => void, hysteresis: number][]}} */\n\t#config = { hooks: Object.create(null), resetFn: [] };\n\t/** @type {string[]} */\n\t#keys = [];\n\t#stringTag = 'Hook';\n\t[Symbol.iterator]() { return this.entries(); }\n\t[Symbol.toStringTag]() { return this.#stringTag; }\n\t/** @param {string} hint */\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === 'number') { return NaN; }\n\t\treturn `[${this[Symbol.toStringTag]()}]`;\n\t}\n\n\tget #hooks() { return this.#config.hooks; };\n\t/**\n\t * @template {T extends readonly any[] ? never : T extends object ? string & keyof T : never} K\n\t * @param {K} key \n\t * @returns {Hook<Exclude<T extends readonly any[] ? never : T extends object ? T[K] :never, void | undefined>>}\n\t */\n\tget(key) {\n\t\tconst keys = [...this.#keys, key];\n\t\tconst hook = new Hook();\n\t\thook.#config = this.#config;\n\t\thook.#keys = keys;\n\t\thook.#stringTag = `Hook(${keys.join('.')})`;\n\t\treturn hook;\n\t}\n\t/**\n\t * @param {T extends (...args: infer A) => any ? A : []} args \n\t * @returns \n\t */\n\tcall(...args) {\n\t\tfor (const fn of this.values()) {\n\t\t\tif (typeof fn !== 'function') { continue; }\n\t\t\tfn(...args);\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param {string} plugin \n\t * @returns {T | void}\n\t */\n\tfirst(plugin) {\n\t\tconst hooks = this.#hooks;\n\t\tif (!Object.hasOwn(hooks, plugin)) { return; }\n\t\treturn first(hooks[plugin], this.#keys.filter(Boolean));\n\t}\n\n\t/**\n\t * \n\t * @param {string} plugin \n\t * @returns {IterableIterator<T extends readonly (infer V)[] ? V : T>}\n\t */\n\t*plugin(plugin) {\n\t\tconst hooks = this.#hooks;\n\t\tif (!Object.hasOwn(hooks, plugin)) { return; }\n\t\tyield* findHook(hooks[plugin], this.#keys.filter(Boolean));\n\t}\n\n\t/**\n\t * \n\t * @returns {IterableIterator<T extends readonly (infer V)[] ? V : T>}\n\t */\n\tvalues() { return values(this.#hooks, this.#keys); }\n\n\t/**\n\t * \n\t * @returns {IterableIterator<[string, T extends readonly (infer V)[] ? V : T]>}\n\t */\n\t*entries() {\n\t\tconst hooks = this.#hooks;\n\t\tconst name = this.#keys;\n\t\tfor (const [plugin, it] of Object.entries(hooks)) {\n\t\t\tfor (const value of findHook(it, name)) {\n\t\t\t\tyield [plugin, value];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @template [TX=(T extends Record<string, infer TT>? TT extends readonly (infer V)[] ? V : TT : never)]\n\t * @param {(v: *)=>v is TX} filter \n\t * @returns {IterableIterator<[plugin: string, key: string, value: TX]>}\n\t */\n\t*entriesObject(filter = noopFilter) {\n\t\tfor (const [plugin, hooksMap] of this.entries()) {\n\t\t\tif (!hooksMap || typeof hooksMap !== 'object') { continue; }\n\t\t\tfor (const [k, v] of Object.entries(hooksMap)) {\n\t\t\t\tif (!filter(v)) { continue; }\n\t\t\t\tyield [plugin, k, v];\n\t\t\t}\n\t\t}\n\t}\n\n\n\n\t/**\n\t * @template [TT=(T extends Record<string, infer TT> ? TT : never)]\n\t * @param {(v: *)=>v is TT} [filter] \n\t * @returns {Record<string, TT>}\n\t */\n\tnamed(filter = noopFilter) {\n\t\t/** @type {Record<string, TT>} */\n\t\tconst result = Object.create(null);\n\t\tfor (const hooksMap of this.values()) {\n\t\t\tif (!hooksMap || typeof hooksMap !== 'object') { continue; }\n\t\t\tfor (const [k, v] of Object.entries(hooksMap)) {\n\t\t\t\tif (!filter(v)) { continue; }\n\t\t\t\tresult[k] = v;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * \n\t * @param {() => void} fn \n\t * @param {number} [hysteresis] \n\t * @returns \n\t */\n\tlisten(fn, hysteresis) {\n\t\tif (typeof fn !== 'function') { return () => { }; }\n\t\tconst resetFn = this.#config.resetFn;\n\t\t/** @type {[() => void, number]} */\n\t\tconst it = [fn, Number.isFinite(hysteresis) && hysteresis || 0];\n\t\tresetFn.push(it);\n\t\tresetFn.sort(([, a], [, b]) => b - a);\n\t\treturn () => {\n\t\t\tconst index = resetFn.findIndex(v => v === it);\n\t\t\tif (index >= 0) {\n\t\t\t\tresetFn.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n}\n","const regex = /\\{([^}{}]+)\\}/g\n/**\n * \n * @param {string?} [pattern] \n */\nexport function getPatternFields(pattern) {\n\tif (!pattern || typeof pattern !== 'string') { return []; }\n\t/** @type {string[]} */\n\tconst fields = [];\n\tfor(let result = regex.exec(pattern); result; result = regex.exec(pattern)) {\n\t\tfields.push(result[1]);\n\t}\n\treturn fields;\n}\n\n/**\n * \n * @param {string?} [pattern] \n * @param {Record<string, any>?} [document] \n * @returns \n */\nexport function runPattern(pattern, document) {\n\tif (!pattern || typeof pattern !== 'string') { return ''; }\n\tconst doc = typeof document === 'object' && document || {};\n\treturn pattern.replace(regex, (_, v) => {\n\t\tif (Object.hasOwn(doc, v)) { return doc[v] ?? ''; }\n\t\treturn `{${v}}`;\n\t});\n}\n","/** @import { Permission } from '@yongdall/types' */\n\n\n\n\n\n/**\n *\n * @param {Permission} permission\n * @returns {Iterable<string>}\n */\nexport default function* yieldPermissionConstraintFields({ constraints, organizationField }) {\n\tif (organizationField) { yield organizationField; }\n\tif (!constraints) { return; }\n\tfor (const [field, constraint] of Object.entries(constraints)) {\n\t\tif (!constraint) { continue; }\n\t\tconst { value, values, user } = constraint;\n\t\tif (value !== undefined) {\n\t\t\tyield field;\n\t\t} else if (Array.isArray(values) && values.length) {\n\t\t\tyield field;\n\t\t} else if (values instanceof Set && values.size) {\n\t\t\tyield field;\n\t\t} else if (user) {\n\t\t\tyield field;\n\t\t}\n\t}\n}\n","export * as Search from './Search/index.mjs';\nexport { Hook } from './Hook.mjs';\nexport * from './model.mjs';\nexport { default as yieldPermissionConstraintFields } from './yieldPermissionConstraintFields.mjs';\n\n\nexport const pluginIdRegex = /^(?:(?<scope>@[a-zA-Z\\d_.-]+)\\/)?(?<name>[a-zA-Z\\d_.-]+)$/;\nexport const findPluginIdRegex = /^(?<pluginId>(?:(?<scope>@[a-zA-Z\\d_.-]+)\\/)?(?<name>[a-zA-Z\\d_.-]+))(?:\\/(?<path>[^#]*))?(?:#(?<hash>.*))?$/;\n\n/**\n * @typedef {object} Plugin\n * @property {string} [version]\n * @property {Record<string, string>} [assets]\n * @property {string} [hooks]\n * @property {string[]} [styles]\n */\n/**\n * @typedef {object} BootConfiguration\n * @property {string} [route] 路由管理器\n * @property {string} [theme] 界面主题\n * @property {string} [authenticator] 登陆器\n * @property {boolean} [authRequired] 是否强制登陆\n * @property {string} [skin]\n * @property {boolean} [single] \n * @property {string} [application] \n * @property {string} [domain] \n * @property {string | number} [port] \n * @property {string} [path] \n * @property {Record<string, string>} [pages]\n * @property {Record<string, string>} [configurationPages]\n * \n * \n * @property {string} [logo] \n * @property {string} [title] \n * @property {string} [company] \n * @property {string} [type] \n * @property {string} [help] 帮助链接\n * @property {any[]} [userMenus]\n */\n/**\n * @typedef {object} Importmap\n * @property {Record<string, string>} imports\n * @property {Record<string, Record<string, string>>} scopes\n */\n/**\n * @typedef {object} Indicator\n * @property {string} color\n * @property {string} label\n * @property {unknown} [filters]\n */\n\n/**\n *\n * @param {*} v\n * @returns {v is (...p: any[]) => any}\n */\nexport function isFunction(v) {\n\treturn typeof v === 'function';\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["#config","#hooks","#stringTag","#keys"],"sources":["../../packages/common/Search/util.mjs","../../packages/common/Search/exec.mjs","../../packages/common/Search/fill.mjs","../../packages/common/Search/parse.mjs","../../packages/common/Search/merge.mjs","../../packages/common/Search/stringify.mjs","../../packages/common/Search/index.mjs","../../packages/common/Hook.mjs","../../packages/common/model.mjs","../../packages/common/yieldPermissionConstraintFields.mjs","../../packages/common/index.mjs"],"sourcesContent":["\n/**\n * @template T\n * @template TReturn\n * @template TNext\n * @param {Generator<T, TReturn, TNext>} generator \n * @param {(value: T) => TNext} run \n * @param {TNext} def \n */\nexport function runGenerator(generator, run, def) {\n\t/** @type {TNext} */\n\tlet value = def;\n\tfor (; ;) {\n\t\tconst result = generator.next(value);\n\t\tif (result.done) {\n\t\t\treturn result.value;\n\t\t}\n\t\tvalue = run(result.value);\n\t}\n}\n/**\n * @template T\n * @template TReturn\n * @template TNext\n * @param {Generator<T, TReturn, TNext>} generator \n * @param {(value: T) => PromiseLike<TNext> | TNext} run \n * @param {TNext} def \n */\nexport async function asyncRunGenerator(generator, run, def) {\n\t/** @type {TNext} */\n\tlet value = def;\n\tfor (; ;) {\n\t\tconst result = generator.next(value);\n\t\tif (result.done) {\n\t\t\treturn result.value;\n\t\t}\n\t\tvalue = await run(result.value);\n\t}\n}\n","/** @import { Children, Field, Match, Or } from './types.mjs' */\nimport { asyncRunGenerator, runGenerator } from './util.mjs';\n\n\n/**\n * \n * @param {Record<string, any>[]} data \n * @param {Field[]} fields \n * @returns {any[]}\n */\nfunction select(data, fields) {\n\tlet list = data;\n\tfor (let item of fields) {\n\t\tconst [field, ...sub] = typeof item === 'string' ? [item] : item;\n\n\t\tif (!list.length) { continue; }\n\t\t/** @type {any[]} */\n\t\tconst subList = [];\n\t\tit: for (const item of list) {\n\t\t\tif (!item || typeof item !== 'object') { continue; }\n\t\t\tif (!Object.hasOwn(item, field)) { continue; }\n\t\t\tlet value = item[field];\n\t\t\tfor (const index of sub) {\n\t\t\t\tif (!Array.isArray(value)) { continue it; }\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tsubList.push(value);\n\t\t}\n\t\tlist = subList.flat(Infinity).filter(v => v && typeof v === 'object');\n\t}\n\treturn list;\n\n}\n\n/**\n * \n * @param {Record<string, any>[]} list \n * @param {string} field \n * @returns {any[]}\n */\nfunction selectValue(list, field) {\n\t/** @type {any[]} */\n\tconst subList = [];\n\tfor (const item of list) {\n\t\tif (!item || typeof item !== 'object') { continue; }\n\t\tif (!Object.hasOwn(item, field)) { continue; }\n\t\tsubList.push(item[field]);\n\t}\n\treturn subList;\n\n}\n/**\n * @typedef {object} ExecParam\n * @property {string[]} fields\n * @property {string} operator\n * @property {string?} [sign]\n * @property {any} value\n * @property {any[]} values\n */\n/**\n * \n * @param {Record<string, any>[]} data \n * @param {string[]} parentFields \n * @param {Match} match \n * @returns {Generator<ExecParam, boolean?, boolean?>}\n */\nfunction* execMatch(data, parentFields, match) {\n\tconst fields = [...match[0]];\n\tconst currentFields = [...parentFields, ...fields.map(v => typeof v === 'string' ? v : v[0])];\n\tconst last = fields.pop();\n\tif (!last) { return null; }\n\tconst lastField = typeof last === 'string' ? last : last[0];\n\tconst records = select(data, fields);\n\tif (!records.length) { return false; }\n\tconst [, value, operator, sign] = match;\n\tif (operator === null) {\n\t\tconst values = selectValue(records, lastField);\n\t\treturn sign ? values.find(v => v === null) : values.find(v => v !== null);\n\t}\n\tif (typeof value !== 'object' || !value || Array.isArray(value)) {\n\n\t\tconst values = selectValue(records, lastField);\n\t\tif (!values.length) { return false; }\n\n\t\treturn yield ({ fields: currentFields, operator, sign, value, values });\n\t}\n\n\tif (value.filter || value.table || value.placeholder) { return null; }\n\tconst field = value.field;\n\tif (!field) { return null; }\n\n\t/** @type {boolean?} */\n\tlet defResult = false;\n\tfor (const item of records) {\n\t\tif (!item || typeof item !== 'object') { continue; }\n\t\tif (!Object.hasOwn(item, field)) { continue; }\n\t\tif (!Object.hasOwn(item, lastField)) { continue; }\n\t\tdefResult = null;\n\t\tconst result = yield ({ fields: currentFields, operator, sign, value: item[field], values: [item[lastField]] });\n\t\tif (result === null) { continue; }\n\t\treturn result;\n\t}\n\treturn defResult;\n\n}\n/**\n * \n * @param {Record<string, any>[]} data \n * @param {string[]} parentFields \n * @param {Match | Children | Or} match \n * @returns {Generator<ExecParam, boolean?, boolean?>}\n */\nfunction* execItem(data, parentFields, match) {\n\tif (!Array.isArray(match)) {\n\t\tconst { and, or } = match;\n\t\treturn yield* execOr(data, parentFields, and, or);\n\t}\n\tif (match.length !== 2) {\n\t\treturn yield* execMatch(data, parentFields, match);\n\n\t}\n\t/** @type {boolean?} */\n\tlet defResult = null;\n\tconst values = select(data, match[0]);\n\tif (!values.length) { return false; }\n\tconst fields = [...parentFields, ...match[0].map(v => typeof v === 'string' ? v : v[0])];\n\tfor (const item of match[1]) {\n\t\tconst result = yield* execItem(values, fields, item);\n\t\tif (result === null) { continue; }\n\t\tif (!result) { return false; }\n\t\tdefResult = true;\n\t}\n\treturn defResult;\n}\n/**\n * \n * @param {Record<string, any>[]} list \n * @param {string[]} parentFields \n * @param {(Match | Children)[]} [and] \n * @param {(Match | Children | Or)[]} [or] \n * @returns {Generator<ExecParam, boolean?, boolean?>}\n */\nfunction* execOr(list, parentFields, and, or) {\n\t/** @type {boolean?} */\n\tlet defResult = null;\n\tif (Array.isArray(and)) {\n\t\tfor (const item of and) {\n\t\t\tconst result = yield* execItem(list, parentFields, item);\n\t\t\tif (result === null) { continue; }\n\t\t\tif (!result) { return false; }\n\t\t\tdefResult = true;\n\t\t}\n\t}\n\tif (Array.isArray(or)) {\n\t\tfor (const item of or) {\n\t\t\tconst result = yield* execItem(list, parentFields, item);\n\t\t\tif (result === null) { continue; }\n\t\t\tif (result) { return true; }\n\t\t\tdefResult = true;\n\t\t}\n\t}\n\treturn defResult;\n\n}\n\n/**\n * \n * @param {Record<string, any>} data \n * @param {(value: ExecParam) => boolean?} exec \n * @param {(Match | Children)[]} [and] \n * @param {(Match | Children | Or)[]} [or] \n */\nexport function exec(data, exec, and, or) {\n\treturn runGenerator(execOr([data].flat(), [], and, or), exec, null);\n}\n\n/**\n * \n * @param {Record<string, any>} data \n * @param {(value: ExecParam) => PromiseLike<boolean?> | boolean?} exec \n * @param {(Match | Children)[]} [and] \n * @param {(Match | Children | Or)[]} [or] \n */\nexport async function asyncExec(data, exec, and, or) {\n\treturn asyncRunGenerator(execOr([data].flat(), [], and, or), exec, null);\n}\n","/** @import { Value } from './types.mjs' */\n/** @import { Children, Field, FieldValue, Match, Or } from './types.mjs' */\n\nimport { runGenerator } from './util.mjs';\n\n\n\n\n\n\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T[]} match \n * @returns {Generator<Value | (() => Value), T[]?, Value | (() => string | null) | null>}\n */\nfunction* fillList(match) {\n\t/** @type {T[]} */\n\tlet list = [];\n\tlet has = false;\n\tfor (const child of match) {\n\t\tconst val = yield* fillMatch(child);\n\t\tlist.push(val || child);\n\t\tif (val) { has = true; }\n\t}\n\treturn has ? list : null;\n\n}\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T} match \n * @returns {Generator<Value | (() => Value), T?, Value | (() => string | null) | null>}\n */\nfunction* fillMatch(match) {\n\tif (!Array.isArray(match)) {\n\t\tconst and = match.and && (yield* fillMatches(match.and));\n\t\tconst or = match.or && (yield* fillMatches(match.or));\n\t\tif (!and && !or) { return null; }\n\t\t/** @type {Or} */\n\t\tconst item = { and: and || match.and, or: or || match.or };\n\t\treturn /** @type {T} */(item);\n\t}\n\tif (match.length === 2) {\n\t\tlet children = yield* fillMatches(match[1]);\n\t\tif (!children) { return null; }\n\t\t/** @type {Children} */\n\t\tconst item = [match[0], match[1]];\n\t\treturn /** @type {T} */(item);\n\t}\n\tconst value = yield match[1];\n\tif (value === null) { return null; }\n\t/** @type {Match} */\n\tconst item = [match[0], value, match[2], match[3]];\n\treturn /** @type {T} */(item);\n\n}\n\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T[]} match \n * @returns {Generator<Value | (() => Value), T[]?, Value | (() => string | null) | null>}\n */\nexport function* fillMatches(match) {\n\t/** @type {T[]} */\n\tconst list = [];\n\tlet has = false;\n\tfor (const child of match) {\n\t\tconst val = yield* fillMatch(child);\n\t\tlist.push(val || child);\n\t\tif (val) { has = true; }\n\t}\n\treturn has ? list : null;\n\n}\n\n/**\n * \n * @template {Match | Children | Or} T \n * @param {T[] | null | undefined} match \n * @param {(placeholder: string) => string | (() => string | null) | null} getPlaceholder \n * @returns {T[]}\n */\nexport function fill(match, getPlaceholder) {\n\tif (!match) { return []; }\n\t/**\n\t * \n\t * @template {Value | (() => Value)} T \n\t * @param {T} match \n\t * @returns {Value | (() => string | null) | null}\n\t */\n\tfunction fillValue(match) {\n\t\tif (!match || typeof match !== 'object') { return null; }\n\t\tif (Array.isArray(match)) { return null; }\n\t\tconst placeholder = match.placeholder;\n\t\tif (!placeholder || typeof placeholder !== 'string') { return null; }\n\t\treturn getPlaceholder(placeholder);\n\t}\n\treturn runGenerator(fillList(match), fillValue, null) || match;\n}\n","/** @import { RecursiveArray } from '../types/types.mjs' */\n/** @import { Children, Field, Match, Or, Param, Value } from './types.mjs' */\n\n\n\n/**\n * @typedef {object} Parse.Field\n * @property {string} field\n * @property {string?} [group]\n * @property {number[]} sub\n */\n/**\n * @typedef {object} Parse.Match\n * @property {null} [children]\n * @property {Parse.Field[]} fields\n * @property {string?} operator\n * @property {string} [sign]\n * @property {Value} value\n */\n\n\n/**\n * @typedef {object} Parse.Children\n * @property {Parse.Field[]} fields\n * @property {(Parse.Match | Parse.Children)[]} children\n */\n\n/**\n * \n * @param {Parse.Field[]} fields \n * @returns {Field[]}\n */\nfunction compressFields(fields) {\n\treturn fields.map(\n\t\t({ field, sub }) => sub.length ? [field, ...sub] : field\n\t);\n}\n\n/**\n * \n * @param {Parse.Match | Parse.Children} v \n * @returns {Match | Children}\n */\nfunction compressAndItem(v) {\n\tif (v.children) {\n\treturn [compressFields(v.fields), v.children.map(compressAndItem)];\n\n\t}\n\tconst { fields, operator, value, sign } = v;\n\treturn [compressFields(fields), value, operator, sign];\n}\n\nconst fieldParserRegex = /^([-_\\d\\p{L}]+)((?:\\[-?\\d+\\])*)$/u;\n/**\n * \n * @param {string} l \n */\nfunction parseFields(l) {\n\t/** @type {Parse.Field[]} */\n\tconst fields = [];\n\tfor (const v of l.split('.')) {\n\t\tif (!v || v[0] === '?') { return null; }\n\t\tconst index = v.indexOf('?');\n\t\tconst r = fieldParserRegex.exec(index > 0 ? v.slice(0, index) : v);\n\t\tif (!r) { return null; }\n\t\tconst sub = r[2]?.split(/\\[|\\]/).filter(Boolean).map(v => parseInt(v) || 0) || [];\n\t\tconst group = index > 0 ? v.slice(index) : undefined;\n\t\tfields.push({ field: r[1], group, sub });\n\t}\n\treturn fields;\n\n}\n\n\n/** @param {string} v */\nconst decodeValue = v => decodeURIComponent(v.replaceAll('+', ' '));\n/**\n * \n * @param {string} s \n * @returns {string | RecursiveArray<string>?}\n */\nfunction parseArrayValue(s) {\n\t/** @type {(string | RecursiveArray<string>)[]} */\n\tconst root = [];\n\t/** @type {(string | RecursiveArray<string>)[][]} */\n\tconst stack = [];\n\tlet current = root;\n\t/** @type {string[]} */\n\tlet strings = [];\n\tlet end = false;\n\tlet must = true;\n\tfunction add() {\n\t\tcurrent.push(decodeValue(strings.join()));\n\t\tstrings = [];\n\t}\n\n\tfor (const c of s) {\n\t\tif (c === ',') {\n\t\t\tif (end) {\n\t\t\t\tend = false;\n\t\t\t} else {\n\t\t\t\tadd();\n\t\t\t}\n\t\t\tmust = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === ')') {\n\t\t\tif (must || strings.length) {\n\t\t\t\tadd();\n\t\t\t\tmust = false;\n\t\t\t}\n\t\t\tconst last = stack.pop();\n\t\t\tif (!last) { return null; }\n\t\t\tlast.push(current);\n\t\t\tcurrent = last;\n\t\t\tend = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (end) { return null; }\n\t\tmust = false;\n\t\tif (c !== '(') {\n\t\t\tstrings.push(c);\n\t\t\tcontinue;\n\t\t}\n\t\tif (strings.length) { return null; }\n\t\tstack.push(current);\n\t\tcurrent = [];\n\t}\n\tif (must || strings.length) {\n\t\tadd();\n\t}\n\tif (stack.length) { return null; }\n\treturn root.length === 1 ? root[0] : root;\n}\n\nconst valueQRegex = /^([-_\\d\\p{L}]+)@([-_\\d\\p{L}]+)/u;\n\n\n/**\n * \n * @param {string?} v \n * @returns {Value | true}\n */\nfunction parseValue(v) {\n\tif (v === null) { return true; }\n\tif (v[0] === '?') {\n\t\treturn { placeholder: decodeValue(v.slice(1)) };\n\t}\n\tif (v[0] === ':') {\n\t\treturn { field: decodeValue(v.slice(1)) };\n\t}\n\tif (v[0] === '@') {\n\t\t// TODO: \n\t\treturn null;\n\t}\n\tconst vq = valueQRegex.test(v);\n\tif (vq) {\n\t\t// TODO: \n\t\treturn null;\n\t}\n\tif (v.includes('(') || v.includes(')')) {\n\t\tconst list = parseArrayValue(v);\n\t\tif (list) { return list; }\n\t}\n\tif (v.includes(',')) {\n\t\treturn v.split(',').map(v => decodeValue(v.replaceAll('+', ' ')));\n\t}\n\treturn decodeValue(v);\n}\n/**\n * \n * @param {(Parse.Match | Parse.Children)[]} list \n * @returns {Iterable<Match | Children>}\n */\nfunction* toAnd(list) {\n\t/** @type {[(Parse.Match | Parse.Children), Parse.Field[], Parse.Field[]][]} */\n\tconst values = list.map(v => {\n\t\tconst fields = v.fields;\n\t\tconst index = fields.findLastIndex(v => v.group);\n\t\tif (index < 0 || index >= fields.length - 1) {\n\t\t\treturn [v, [], []];\n\t\t}\n\t\tconst field = fields[index];\n\t\tif (!field) { return [v, [], []]; }\n\t\treturn [{ ...v, fields: fields.slice(index + 1) }, fields.slice(0, index + 1), [...fields.slice(0, index), { ...field, group: undefined }]];\n\t});\n\tconst map = Object.groupBy(values, v => JSON.stringify(v[1]));\n\tyield* map['[]']?.map(v => compressAndItem(v[0])) || [];\n\tdelete map['[]'];\n\t/** @type {Parse.Children[]} */\n\tconst result = Object.values(map).filter(Boolean).map((list = []) => {\n\t\tif (!list?.length) { return { fields: [], children: [] }; }\n\t\treturn { fields: list[0][2] || [], children: list.map(v => v[0]) };\n\t}).filter(v => v.fields.length);\n\tif (!result.length) { return; }\n\n\tyield* toAnd(result);\n}\n\n/**\n * \n * @param {(Parse.Match & {groups: string[]})[]} list \n * @returns {Or}\n */\nfunction toOr(list) {\n\tconst map = Map.groupBy(list, v => v.groups.shift() ?? null);\n\tconst and = map.get(null) || [];\n\tconst baseOr = map.get('') || [];\n\tmap.delete(null);\n\tmap.delete('');\n\n\treturn {\n\t\tor: [\n\t\t\t...baseOr.map(v => compressAndItem(v)),\n\t\t\t...[...map.values()].map(v => toOr(v)),\n\t\t],\n\t\tand: [...toAnd(and)],\n\t};\n}\n/**\n * \n * @param {string} search \n * @returns {Param}\n */\nexport function parse(search, split = '&') {\n\t/** @type {string[]} */\n\tconst values = [];\n\t/** @type {string[]} */\n\tconst select = [];\n\t/** @type {[field: string, desc?: boolean][]} */\n\tconst sorts = [];\n\tlet limit = 0;\n\tlet offset = 0;\n\tlet page = 0;\n\tlet total = false;\n\t/** @type {Record<string, string>} */\n\tconst placeholders = {};\n\n\n\t/** @type {(Parse.Match & {groups: string[]})[]} */\n\tconst allMatches = [];\n\n\tfor (const s of search.split(split)) {\n\t\tif (s[0] === '=') {\n\t\t\tvalues.push(s.slice(1));\n\t\t\tcontinue;\n\t\t}\n\t\tconst index = s.indexOf('=');\n\t\tconst key = index < 0 ? s : s.slice(0, index);\n\t\tconst val = index < 0 ? null : s.slice(index + 1);\n\t\tif (index <= 0) { continue; }\n\t\tif (`.!@^*<>{}[]()+|;,\"'\\`\\\\/`.includes(key[0])) { continue; }\n\t\tif (key[0] === '?') {\n\t\t\tplaceholders[decodeValue(key.slice(1))] = decodeValue(val || '');\n\t\t\tcontinue;\n\t\t}\n\t\tif (key[0] === ':') {\n\t\t\tconst name = key.slice(1);\n\t\t\tif (!val) { continue; }\n\t\t\tif (name === 'sort') {\n\t\t\t\tsorts.push(...val.split(',').filter(Boolean).map(v => {\n\t\t\t\t\tconst desc = v[0] === '-';\n\t\t\t\t\tconst name = desc ? v.slice(1) : v;\n\t\t\t\t\treturn /** @type {[field: string, desc?: boolean]} */([decodeValue(name), desc]);\n\t\t\t\t}).filter(Boolean));\n\t\t\t} else if (name === 'select') {\n\t\t\t\tselect.push(...val.split(',').map(decodeValue).filter(Boolean));\n\t\t\t} else if (name === 'limit') {\n\t\t\t\tif (val && /^\\d+$/.test(val)) { limit = parseInt(val); }\n\t\t\t} else if (name === 'offset') {\n\t\t\t\tif (val && /^\\d+$/.test(val)) { offset = parseInt(val); }\n\t\t\t} else if (name === 'page') {\n\t\t\t\tif (val && /^\\d+$/.test(val)) { page = parseInt(val); }\n\t\t\t} else if (name === 'total') {\n\t\t\t\tif (val) { total = true; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst sg = key.split('~');\n\t\tlet field = sg.pop() || '';\n\t\tlet sign = '';\n\t\tif ('!'.includes(field[field.length - 1])) {\n\t\t\tsign = '!';\n\t\t\tfield = field.slice(0, -1);\n\t\t}\n\n\t\tconst l = field.split(':', 3);\n\t\tif (l.length > 2) { continue; }\n\t\tconst fields = parseFields(l[0]);\n\t\tif (!fields) { continue; }\n\t\tconst value = parseValue(val);\n\t\tif (value === null) { continue; }\n\n\t\tconst operator = decodeValue(l[1] || '');\n\t\tconst groupIndex = sg.indexOf('');\n\t\tconst groups = groupIndex < 0 ? sg : sg.slice(0, groupIndex + 1);\n\t\tallMatches.push({\n\t\t\tgroups,\n\t\t\tfields,\n\t\t\toperator: !operator && value === true ? null : operator,\n\t\t\tsign,\n\t\t\tvalue: value === true ? null : value\n\t\t});\n\t}\n\n\tconst { and, or } = toOr(allMatches);\n\n\t/** @type {Param} */\n\tconst result = {};\n\tif (values?.length) {\n\t\tresult.values = values;\n\t}\n\tif (total) {\n\t\tresult.total = total;\n\t}\n\tif (limit && limit > 0) {\n\t\tresult.limit = limit;\n\t}\n\tif (page && page > 0) {\n\t\tresult.page = page;\n\t}\n\tif (offset && offset > 0) {\n\t\tresult.offset = offset;\n\t}\n\tif (select?.length) {\n\t\tresult.select = select;\n\t}\n\tif (sorts?.length) {\n\t\tresult.sort = sorts;\n\t}\n\tconst where = and;\n\tif (where?.length) {\n\t\tresult.where = where;\n\t}\n\tconst orWhere = or;\n\tif (orWhere?.length) {\n\t\tresult.orWhere = orWhere;\n\t}\n\tif (Array.isArray(placeholders) && placeholders.length) {\n\t\tresult.placeholders = placeholders;\n\t}\n\n\n\treturn result\n}\n","/** @import { Param } from './types.mjs' */\n\n/**\n * \n * @param {Partial<Param>} a \n * @param {Partial<Param>} b \n * @returns {Param}\n */\nexport function merge(a, b) {\n\tconst limit = b.limit || a.limit || 10;\n\tconst page = b.page ?? a.page;\n\tconst offset = \n\tb.offset ?? (b.limit && (b.page || b.page === 0) ? (Math.floor(Math.max(b.page || 0, 1)) - 1) * b.limit : null)\n\t?? a.offset ?? (a.limit && (a.page || a.page === 0) ? (Math.floor(Math.max(a.page || 0, 1)) - 1) * a.limit : null)\n\t?? (Math.floor(Math.max(page || 0, 1)) - 1) * limit;\n\n\tconst values = [...a.values || [], ...b.values || []]\n\tconst sort = [...a.sort || [], ...b.sort || []]\n\tconst select = [...a.select || [], ...b.select || []]\n\tconst where = [...a.where || [], ...b.where || []]\n\tconst orWhere = [...a.orWhere || [], ...b.orWhere || []]\n\tconst or = [...a.or || [], ...b.or || []]\n\n\t/** @type {Param} */\n\tconst result = {};\n\tif (values?.length) {\n\t\tresult.values = values;\n\t}\n\tif (limit && limit > 0) {\n\t\tresult.limit = limit;\n\t}\n\tif (a.total || b.total) {\n\t\tresult.total = true;\n\t}\n\tif (page && page > 0) {\n\t\tresult.page = page;\n\t}\n\tif (offset && offset > 0) {\n\t\tresult.offset = offset;\n\t}\n\tif (select?.length) {\n\t\tresult.select = select;\n\t}\n\tif (sort?.length) {\n\t\tresult.sort = sort;\n\t}\n\tif (where?.length) {\n\t\tresult.where = where;\n\t}\n\tif (orWhere?.length) {\n\t\tresult.orWhere = orWhere;\n\t}\n\tif (or?.length) {\n\t\tresult.or = or;\n\t}\n\n\treturn result;\n}\n","/** @import { RecursiveArray } from '../types/types.mjs' */\n/** @import { Children, Field, FieldValue, Match, Or, Param } from './types.mjs' */\n\n/** @param {string} v */\nconst encodeValue = v => encodeURIComponent(v).replaceAll('%20', '+');\n\n/**\n * \n * @param {string | boolean | number | RecursiveArray<string> | FieldValue} value \n */\nfunction stringifyValue(value) {\n\tif (Array.isArray(value)) {\n\t\t/**\n\t\t * \n\t\t * @param {string | RecursiveArray<string>} v \n\t\t * @returns {string}\n\t\t */\n\t\tfunction s(v) {\n\t\t\tif (Array.isArray(v)) {\n\t\t\t\treturn `(${v.map(s).join(',')})`;\n\t\t\t}\n\t\t\treturn encodeValue(v);\n\t\t}\n\t\tconst val = value.map(s).join(',');\n\t\tif (value.length > 1) { return val; }\n\t\treturn `(${val})`;\n\t}\n\tif (typeof value === 'number') {\n\t\treturn `${value}`;\n\t}\n\tif (typeof value === 'boolean') {\n\t\treturn value ? '1' : 0\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn encodeValue(value);\n\t}\n\tconst { field, placeholder } = value;\n\tif (placeholder) {\n\t\treturn `?${encodeValue(placeholder)}`;\n\t}\n\tif (field) {\n\t\treturn `:${encodeValue(field)}`;\n\t}\n\t// TODO:\n\treturn '';\n}\n\n/**\n * \n * @param {Field[]} fields \n */\nfunction stringifyFields(fields) {\n\treturn fields.map(item => {\n\t\tconst [field, ...sub] = typeof item === 'string' ? [item] : item;\n\t\t\treturn `${encodeValue(field)}${sub.map(() => `[k]`).join('')}`;\n\t\t}\n\t).join('.');\n}\n/**\n * \n * @param {Match} define \n */\nfunction stringifyDefine([fields, value, operator, sign]) {\n\tconst key = operator\n\t\t? `${stringifyFields(fields)}:${encodeValue(operator)}${sign || ''}`\n\t\t: `${stringifyFields(fields)}${sign || ''}`;\n\tif (operator === null) { return key; }\n\tif (value === null) { return ''; }\n\tif (typeof value === 'function') { return''; }\n\treturn `${key}=${stringifyValue(value)}`;\n}\n/**\n * \n * @param {(Match | Children)[]} list \n * @returns {string[]}\n */\nfunction stringifyAnd(list) {\n\tlet index = 0;\n\treturn list.flatMap(v => {\n\t\tif (v.length !== 2) {\n\t\t\treturn stringifyDefine(v);\n\t\t}\n\t\tconst list = stringifyAnd(v[1]);\n\t\tif (!list.length) { return []; }\n\t\tlet key = stringifyFields(v[0]);\n\t\tif (list.length > 1) {\n\t\t\tkey += `?${(index++).toString(36)}`;\n\t\t}\n\t\treturn list.map(v => `${key}.${v}`);\n\t}).filter(Boolean);\n}\n\n/**\n * \n * @param {(Match | Children | Or)[]} list \n * @returns {string[]}\n */\nfunction stringifyOr(list) {\n\tlet index = 0;\n\treturn list.map(v => {\n\t\tif (Array.isArray(v)) {\n\t\t\treturn stringifyAnd([v]);\n\n\t\t}\n\t\treturn [\n\t\t\t...stringifyAnd(v.and || []),\n\t\t\t...stringifyOr(v.or || []),\n\t\t];\n\t}).flatMap(list => {\n\t\tif (!list) { return []; }\n\t\tconst key = list.length === 1 ? `~` : `${(index++).toString(36)}~`;\n\t\treturn list.map(v => `${key}${v}`);\n\t});\n}\n/**\n * \n * @param {Partial<Param>} query \n * @param {boolean} [usePage] \n */\nexport function stringify({\n\tvalues,\n\twhere,\n\torWhere,\n\tsort,\n\tselect,\n\tlimit, offset, page, total,\n\tplaceholders,\n}, usePage) {\n\t/** @type {string[]} */\n\tlet queries = [];\n\tfor (const v of values || []) {\n\t\tif (!v) { continue; }\n\t\tqueries.push(`=${encodeValue(v)}`);\n\t}\n\tif (limit && limit > 0) {\n\t\tqueries.push(`:limit=${limit}`);\n\t}\n\tif (total) {\n\t\tqueries.push(`:total=${total}`);\n\n\t}\n\tif (usePage) {\n\t\tif (page && page > 0) {\n\t\t\tqueries.push(`:page=${page}`);\n\t\t}\n\t} else {\n\t\tif (offset && offset > 0) {\n\t\t\tqueries.push(`:offset=${offset}`);\n\t\t}\n\t}\n\tif (select) {\n\t\tconst val = select.filter(Boolean).map(encodeValue).join(',');\n\t\tif (val) {\n\t\t\tqueries.push(`.select=${val}`);\n\t\t}\n\t}\n\tif (sort) {\n\t\tconst val = sort.filter(Boolean).map(v => {\n\t\t\tif (Array.isArray(v)) {\n\t\t\t\tconst [field, desc] = v;\n\t\t\t\tif (field) {\n\t\t\t\t\treturn `${desc ? '-' : ''}${encodeValue(field)}`;\n\t\t\t\t}\n\t\t\t} else if (v) {\n\t\t\t\treturn encodeValue(v);\n\t\t\t}\n\t\t\treturn '';\n\t\t}).filter(Boolean).join(',');\n\t\tif (val) {\n\t\t\tqueries.push(`.sort=${val}`);\n\t\t}\n\t}\n\tif (placeholders && typeof placeholders === 'object' && !Array.isArray(placeholders)) {\n\t\tfor (const [k, v] of Object.entries(placeholders)) {\n\t\t\tqueries.push(`?${encodeValue(k)}=${encodeValue(v)}`);\n\n\t\t}\n\t}\n\tfor (const v of stringifyAnd(where || [])) {\n\t\tqueries.push(v);\n\t}\n\tfor (const v of stringifyOr(orWhere || [])) {\n\t\tqueries.push(v);\n\t}\n\treturn queries.join('&');\n}\n","export * from './exec.mjs';\nexport * from './fill.mjs';\nexport { parse } from './parse.mjs';\nexport * from './merge.mjs';\nexport * from './stringify.mjs';\nexport * from './types.mjs';\nexport * from './util.mjs';\nexport * from './WhereLike.mjs';\n","/**\n * @template T\n * @typedef {T | readonly T[]} Hook.MaybeArray\n */\n/**\n * @template T\n * @typedef {T extends readonly any[] ? Readonly<T>\n * : T extends Record<string, any> ? Hook.MaybeArray<Hook.Define<T> | T>\n * : T extends object ? Hook.MaybeArray<Hook.Define<T> | T>\n * : Hook.MaybeArray<T>\n * } Hook.Item\n */\n/**\n * @template T\n * @typedef {T extends Record<string, any> ? { [k in keyof T]?: Hook.Item<T[k]> } : T} Hook.Define\n*/\n\n\n\n\n/** @type {*} */\nconst noopFilter = () => true;\n\n\n\n\n/**\n * \n * @param {Record<string, any>} plugin \n * @param {string[]} name \n * @returns {*[]}\n */\nfunction findHook(plugin, name) {\n\tlet list = [plugin].flat();\n\tfor (const k of name.filter(Boolean)) {\n\t\tconst values = [];\n\t\tfor (const it of list) {\n\t\t\tif (!it || typeof it !== 'object') { continue; }\n\t\t\tif (!Object.hasOwn(it, k)) { continue; }\n\t\t\tvalues.push(it[k]);\n\t\t}\n\t\tif (!values.length) { return []; }\n\t\tlist = values.flat();\n\t}\n\treturn list;\n}\n\n/**\n * \n * @template T\n * @param {any} plugin \n * @param {string[]} names \n * @returns {T | void}\n */\nfunction first(plugin, names) {\n\tif (!names.length) { return plugin; }\n\tif (!plugin || typeof plugin !== 'object') { return; }\n\tconst [name, ...keys] = names;\n\tfor (const v of [plugin].flat()) {\n\t\tconst val = first(v[name], keys);\n\t\tif (val !== undefined) { return val; }\n\t}\n}\n\n/**\n * \n * @template T\n * @param {Record<string, any>} hooks \n * @param {string[]} name \n * @returns {IterableIterator<T>}\n */\nfunction* values(hooks, name) {\n\tfor (const it of Object.values(hooks)) {\n\t\tfor (const value of findHook(it, name)) {\n\t\t\tyield value;\n\t\t}\n\t}\n}\n\n\n\n\n/**\n * @template T\n */\nexport class Hook {\n\t/**\n\t * @template {object} T\n\t * @param {Record<string, Hook.Define<T>> | (() => Record<string, Hook.Define<T>>)} [options]\n\t * @return {Hook<T>}\n\t */\n\tstatic build(options) {\n\t\tconst hook = new Hook();\n\t\treturn Hook.update(hook, options);\n\t}\n\t/**\n\t * \n\t * @template T\n\t * @param {Hook<T>} hook\n\t * @param {Record<string, Hook.Define<T>> | (() => Record<string, Hook.Define<T>>)} [options]\n\t */\n\tstatic update(hook, options) {\n\t\tlet updated = false;\n\t\tif (typeof options === 'function') {\n\t\t\tObject.defineProperty(hook.#config, 'hooks', {\n\t\t\t\tconfigurable: true,\n\t\t\t\tget() {\n\t\t\t\t\tconst r = options();\n\t\t\t\t\treturn typeof r === 'object' && r || {};\n\t\t\t\t},\n\t\t\t});\n\t\t\tupdated = true;\n\t\t} else {\n\t\t\tif (options && typeof options === 'object') {\n\t\t\t\tObject.defineProperty(hook.#config, 'hooks', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tvalue: options,\n\t\t\t\t});\n\t\t\t\tupdated = true;\n\t\t\t}\n\t\t}\n\t\tif (updated) {\n\t\t\tHook.reset(hook);\n\t\t}\n\t\treturn hook;\n\t}\n\t/**\n\t * \n\t * @template T\n\t * @param {Hook<T>} hook\n\t */\n\tstatic reset(hook) {\n\t\tconst hooks = hook.#hooks;\n\t\tconst resetFn = hook.#config.resetFn;\n\t\tresetFn.sort(([, a], [, b]) => a - b);\n\t\tconst before = resetFn.filter(([, p]) => p <= 0);\n\t\tconst after = resetFn.filter(([, p]) => p > 0);\n\t\tfor (const [fn] of before) { fn(); }\n\t\tfor (const fn of values(hooks, ['reset'])) {\n\t\t\tif (typeof fn !== 'function') { continue; }\n\t\t\tfn();\n\t\t}\n\t\tfor (const [fn] of after) { fn(); }\n\t}\n\n\t/** @type {{hooks: any; resetFn: [fn: () => void, hysteresis: number][]}} */\n\t#config = { hooks: Object.create(null), resetFn: [] };\n\t/** @type {string[]} */\n\t#keys = [];\n\t#stringTag = 'Hook';\n\t[Symbol.iterator]() { return this.entries(); }\n\t[Symbol.toStringTag]() { return this.#stringTag; }\n\t/** @param {string} hint */\n\t[Symbol.toPrimitive](hint) {\n\t\tif (hint === 'number') { return NaN; }\n\t\treturn `[${this[Symbol.toStringTag]()}]`;\n\t}\n\n\tget #hooks() { return this.#config.hooks; };\n\t/**\n\t * @template {T extends readonly any[] ? never : T extends object ? string & keyof T : never} K\n\t * @param {K} key \n\t * @returns {Hook<Exclude<T extends readonly any[] ? never : T extends object ? T[K] :never, void | undefined>>}\n\t */\n\tget(key) {\n\t\tconst keys = [...this.#keys, key];\n\t\tconst hook = new Hook();\n\t\thook.#config = this.#config;\n\t\thook.#keys = keys;\n\t\thook.#stringTag = `Hook(${keys.join('.')})`;\n\t\treturn hook;\n\t}\n\t/**\n\t * @param {T extends (...args: infer A) => any ? A : []} args \n\t * @returns \n\t */\n\tcall(...args) {\n\t\tfor (const fn of this.values()) {\n\t\t\tif (typeof fn !== 'function') { continue; }\n\t\t\tfn(...args);\n\t\t}\n\t}\n\t/**\n\t * \n\t * @param {string} plugin \n\t * @returns {T | void}\n\t */\n\tfirst(plugin) {\n\t\tconst hooks = this.#hooks;\n\t\tif (!Object.hasOwn(hooks, plugin)) { return; }\n\t\treturn first(hooks[plugin], this.#keys.filter(Boolean));\n\t}\n\n\t/**\n\t * \n\t * @param {string} plugin \n\t * @returns {IterableIterator<T extends readonly (infer V)[] ? V : T>}\n\t */\n\t*plugin(plugin) {\n\t\tconst hooks = this.#hooks;\n\t\tif (!Object.hasOwn(hooks, plugin)) { return; }\n\t\tyield* findHook(hooks[plugin], this.#keys.filter(Boolean));\n\t}\n\n\t/**\n\t * \n\t * @returns {IterableIterator<T extends readonly (infer V)[] ? V : T>}\n\t */\n\tvalues() { return values(this.#hooks, this.#keys); }\n\n\t/**\n\t * \n\t * @returns {IterableIterator<[string, T extends readonly (infer V)[] ? V : T]>}\n\t */\n\t*entries() {\n\t\tconst hooks = this.#hooks;\n\t\tconst name = this.#keys;\n\t\tfor (const [plugin, it] of Object.entries(hooks)) {\n\t\t\tfor (const value of findHook(it, name)) {\n\t\t\t\tyield [plugin, value];\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @template [TX=(T extends Record<string, infer TT>? TT extends readonly (infer V)[] ? V : TT : never)]\n\t * @param {(v: *)=>v is TX} filter \n\t * @returns {IterableIterator<[plugin: string, key: string, value: TX]>}\n\t */\n\t*entriesObject(filter = noopFilter) {\n\t\tfor (const [plugin, hooksMap] of this.entries()) {\n\t\t\tif (!hooksMap || typeof hooksMap !== 'object') { continue; }\n\t\t\tfor (const [k, v] of Object.entries(hooksMap)) {\n\t\t\t\tif (!filter(v)) { continue; }\n\t\t\t\tyield [plugin, k, v];\n\t\t\t}\n\t\t}\n\t}\n\n\n\n\t/**\n\t * @template [TT=(T extends Record<string, infer TT> ? TT : never)]\n\t * @param {(v: *)=>v is TT} [filter] \n\t * @returns {Record<string, TT>}\n\t */\n\tnamed(filter = noopFilter) {\n\t\t/** @type {Record<string, TT>} */\n\t\tconst result = Object.create(null);\n\t\tfor (const hooksMap of this.values()) {\n\t\t\tif (!hooksMap || typeof hooksMap !== 'object') { continue; }\n\t\t\tfor (const [k, v] of Object.entries(hooksMap)) {\n\t\t\t\tif (!filter(v)) { continue; }\n\t\t\t\tresult[k] = v;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * \n\t * @param {() => void} fn \n\t * @param {number} [hysteresis] \n\t * @returns \n\t */\n\tlisten(fn, hysteresis) {\n\t\tif (typeof fn !== 'function') { return () => { }; }\n\t\tconst resetFn = this.#config.resetFn;\n\t\t/** @type {[() => void, number]} */\n\t\tconst it = [fn, Number.isFinite(hysteresis) && hysteresis || 0];\n\t\tresetFn.push(it);\n\t\tresetFn.sort(([, a], [, b]) => b - a);\n\t\treturn () => {\n\t\t\tconst index = resetFn.findIndex(v => v === it);\n\t\t\tif (index >= 0) {\n\t\t\t\tresetFn.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n}\n","const regex = /\\{([^}{}]+)\\}/g\n/**\n * \n * @param {string?} [pattern] \n */\nexport function getPatternFields(pattern) {\n\tif (!pattern || typeof pattern !== 'string') { return []; }\n\t/** @type {string[]} */\n\tconst fields = [];\n\tfor(let result = regex.exec(pattern); result; result = regex.exec(pattern)) {\n\t\tfields.push(result[1]);\n\t}\n\treturn fields;\n}\n\n/**\n * \n * @param {string?} [pattern] \n * @param {Record<string, any>?} [document] \n * @returns \n */\nexport function runPattern(pattern, document) {\n\tif (!pattern || typeof pattern !== 'string') { return ''; }\n\tconst doc = typeof document === 'object' && document || {};\n\treturn pattern.replace(regex, (_, v) => {\n\t\tif (Object.hasOwn(doc, v)) { return doc[v] ?? ''; }\n\t\treturn `{${v}}`;\n\t});\n}\n","/** @import { Permission } from '@yongdall/types' */\n\n\n\n\n\n/**\n *\n * @param {Permission} permission\n * @returns {Iterable<string>}\n */\nexport default function* yieldPermissionConstraintFields({ constraints, organizationField }) {\n\tif (organizationField) { yield organizationField; }\n\tif (!constraints) { return; }\n\tfor (const [field, constraint] of Object.entries(constraints)) {\n\t\tif (!constraint) { continue; }\n\t\tconst { value, values, user } = constraint;\n\t\tif (value !== undefined) {\n\t\t\tyield field;\n\t\t} else if (Array.isArray(values) && values.length) {\n\t\t\tyield field;\n\t\t} else if (values instanceof Set && values.size) {\n\t\t\tyield field;\n\t\t} else if (user) {\n\t\t\tyield field;\n\t\t}\n\t}\n}\n","export * as Search from './Search/index.mjs';\nexport { Hook } from './Hook.mjs';\nexport * from './model.mjs';\nexport { default as yieldPermissionConstraintFields } from './yieldPermissionConstraintFields.mjs';\n\n\nexport const pluginIdRegex = /^(?:(?<scope>@[a-zA-Z\\d_.-]+)\\/)?(?<name>[a-zA-Z\\d_.-]+)$/;\nexport const findPluginIdRegex = /^(?<pluginId>(?:(?<scope>@[a-zA-Z\\d_.-]+)\\/)?(?<name>[a-zA-Z\\d_.-]+))(?:\\/(?<path>[^#]*))?(?:#(?<hash>.*))?$/;\n\n/**\n * @typedef {object} Plugin\n * @property {string} [version]\n * @property {Record<string, string>} [assets]\n * @property {string} [hooks]\n * @property {string[]} [styles]\n */\n/**\n * @typedef {object} BootConfiguration\n * @property {string} [route] 路由管理器\n * @property {string} [theme] 界面主题\n * @property {string} [authenticator] 登陆器\n * @property {boolean} [authRequired] 是否强制登陆\n * @property {string} [skin]\n * @property {boolean} [multiUser] \n * @property {string} [application] \n * @property {string} [domain] \n * @property {string | number} [port] \n * @property {string} [path] \n * @property {Record<string, string>} [pages]\n * @property {Record<string, string>} [configurationPages]\n * \n * \n * @property {string} [logo] \n * @property {string} [title] \n * @property {string} [company] \n * @property {string} [type] \n * @property {string} [help] 帮助链接\n * @property {any[]} [userMenus]\n */\n/**\n * @typedef {object} Importmap\n * @property {Record<string, string>} imports\n * @property {Record<string, Record<string, string>>} scopes\n */\n/**\n * @typedef {object} Indicator\n * @property {string} color\n * @property {string} label\n * @property {unknown} [filters]\n */\n\n/**\n *\n * @param {*} v\n * @returns {v is (...p: any[]) => any}\n */\nexport function isFunction(v) {\n\treturn typeof v === 'function';\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED