@ablogcms/url 3.2.28-beta.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.
Files changed (49) hide show
  1. package/README.md +24 -0
  2. package/dist/acms.d.ts +16 -0
  3. package/dist/acms.mjs +1 -0
  4. package/dist/acms.mjs.map +1 -0
  5. package/dist/acmsField.d.ts +13 -0
  6. package/dist/acmsField.mjs +9 -0
  7. package/dist/acmsField.mjs.map +1 -0
  8. package/dist/acmsLink.d.ts +44 -0
  9. package/dist/acmsLink.mjs +81 -0
  10. package/dist/acmsLink.mjs.map +1 -0
  11. package/dist/acmsPath.d.ts +2 -0
  12. package/dist/acmsPath.mjs +9 -0
  13. package/dist/acmsPath.mjs.map +1 -0
  14. package/dist/chunk-GHGJBKQU.mjs +192 -0
  15. package/dist/chunk-GHGJBKQU.mjs.map +1 -0
  16. package/dist/chunk-HZZTSXXP.mjs +226 -0
  17. package/dist/chunk-HZZTSXXP.mjs.map +1 -0
  18. package/dist/chunk-OJI2ZTVL.mjs +23 -0
  19. package/dist/chunk-OJI2ZTVL.mjs.map +1 -0
  20. package/dist/chunk-OUKSKSZA.mjs +295 -0
  21. package/dist/chunk-OUKSKSZA.mjs.map +1 -0
  22. package/dist/chunk-PHGYMRZK.mjs +22 -0
  23. package/dist/chunk-PHGYMRZK.mjs.map +1 -0
  24. package/dist/chunk-XTN64CHF.mjs +73 -0
  25. package/dist/chunk-XTN64CHF.mjs.map +1 -0
  26. package/dist/chunk-ZDAAXRTI.mjs +43 -0
  27. package/dist/chunk-ZDAAXRTI.mjs.map +1 -0
  28. package/dist/createAcmsContextFromFormData.d.ts +5 -0
  29. package/dist/createAcmsContextFromFormData.mjs +63 -0
  30. package/dist/createAcmsContextFromFormData.mjs.map +1 -0
  31. package/dist/createAcmsPathHelper.d.ts +9 -0
  32. package/dist/createAcmsPathHelper.mjs +13 -0
  33. package/dist/createAcmsPathHelper.mjs.map +1 -0
  34. package/dist/defaults.d.ts +17 -0
  35. package/dist/defaults.mjs +7 -0
  36. package/dist/defaults.mjs.map +1 -0
  37. package/dist/index.d.ts +7 -0
  38. package/dist/index.mjs +43 -0
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/parseAcmsPath.d.ts +2 -0
  41. package/dist/parseAcmsPath.mjs +11 -0
  42. package/dist/parseAcmsPath.mjs.map +1 -0
  43. package/dist/types.d.ts +105 -0
  44. package/dist/types.mjs +15 -0
  45. package/dist/types.mjs.map +1 -0
  46. package/dist/utils.d.ts +11 -0
  47. package/dist/utils.mjs +11 -0
  48. package/dist/utils.mjs.map +1 -0
  49. package/package.json +90 -0
@@ -0,0 +1,226 @@
1
+ import {
2
+ formatDate,
3
+ mergeConfig
4
+ } from "./chunk-XTN64CHF.mjs";
5
+ import {
6
+ defaultAcmsPathSegments
7
+ } from "./chunk-OJI2ZTVL.mjs";
8
+
9
+ // src/acmsPath.ts
10
+ import { stringify } from "qs";
11
+ import { encodeUri } from "@ablogcms/utils";
12
+ import { isNumber, isString } from "@ablogcms/utils/type-guard";
13
+ import isDateString from "@ablogcms/utils/is-date-string";
14
+ function isAcmsPathParams(params) {
15
+ if ("blog" in params) {
16
+ return true;
17
+ }
18
+ if ("category" in params) {
19
+ return true;
20
+ }
21
+ if ("entry" in params) {
22
+ return true;
23
+ }
24
+ if ("user" in params) {
25
+ return true;
26
+ }
27
+ if ("unit" in params) {
28
+ return true;
29
+ }
30
+ return false;
31
+ }
32
+ function toAcmsPathParams(context) {
33
+ return {
34
+ blog: context.bid,
35
+ category: context.cid,
36
+ entry: context.eid,
37
+ user: context.uid,
38
+ unit: context.utid,
39
+ tag: context.tag,
40
+ field: context.field,
41
+ span: context.span,
42
+ date: context.date,
43
+ page: context.page,
44
+ order: context.order,
45
+ limit: context.limit,
46
+ keyword: context.keyword,
47
+ admin: context.admin,
48
+ tpl: context.tpl,
49
+ api: context.api,
50
+ searchParams: context.searchParams
51
+ };
52
+ }
53
+ function twoDigits(num) {
54
+ return num < 10 ? `0${num}` : num;
55
+ }
56
+ var defaultOptions = {
57
+ segments: defaultAcmsPathSegments,
58
+ apiVersion: "v2"
59
+ };
60
+ function acmsPath(paramsOrCtx, options = {}) {
61
+ const params = isAcmsPathParams(paramsOrCtx) ? paramsOrCtx : toAcmsPathParams(paramsOrCtx);
62
+ const { segments, apiVersion } = mergeConfig(defaultOptions, options);
63
+ let path = [
64
+ "blog",
65
+ "admin",
66
+ "category",
67
+ "entry",
68
+ "user",
69
+ "unit",
70
+ "span",
71
+ "date",
72
+ "keyword",
73
+ "tag",
74
+ "field",
75
+ "page",
76
+ "order",
77
+ "limit",
78
+ "tpl",
79
+ "api"
80
+ ].reduce((path2, key) => {
81
+ const param = params[key];
82
+ if (param == null) {
83
+ return path2;
84
+ }
85
+ if (key === "blog") {
86
+ const param2 = params[key];
87
+ if (isNumber(param2)) {
88
+ if (isNaN(param2) || param2 === 0) {
89
+ return path2;
90
+ }
91
+ return `${path2}/${segments.bid}/${param2}`;
92
+ }
93
+ if (param2 === "") {
94
+ return path2;
95
+ }
96
+ return `${path2}/${param2.split("/").map(encodeUri).join("/")}`;
97
+ }
98
+ if (key === "category") {
99
+ const param2 = params[key];
100
+ if (isNumber(param2)) {
101
+ if (isNaN(param2) || param2 === 0) {
102
+ return path2;
103
+ }
104
+ return `${path2}/${segments.cid}/${param2}`;
105
+ }
106
+ if (Array.isArray(param2)) {
107
+ return `${path2}/${param2.map(encodeUri).join("/")}`;
108
+ }
109
+ if (param2 === "") {
110
+ return path2;
111
+ }
112
+ return `${path2}/${encodeUri(param2)}`;
113
+ }
114
+ if (key === "entry") {
115
+ const param2 = params[key];
116
+ if (isNumber(param2)) {
117
+ if (isNaN(param2) || param2 === 0) {
118
+ return path2;
119
+ }
120
+ return `${path2}/${segments.eid}/${param2}`;
121
+ }
122
+ if (param2 === "") {
123
+ return path2;
124
+ }
125
+ return `${path2}/${encodeUri(param2)}`;
126
+ }
127
+ if (key === "user") {
128
+ const param2 = params[key];
129
+ if (isNaN(param2) || param2 === 0) {
130
+ return path2;
131
+ }
132
+ return `${path2}/${segments.uid}/${param2}`;
133
+ }
134
+ if (key === "unit") {
135
+ const param2 = params[key];
136
+ if (param2 === "") {
137
+ return path2;
138
+ }
139
+ return `${path2}/${segments.utid}/${param2}`;
140
+ }
141
+ if (key === "field") {
142
+ const param2 = params[key];
143
+ const slug = typeof param2 !== "string" ? param2.toString() : param2;
144
+ if (slug === "") {
145
+ return path2;
146
+ }
147
+ return `${path2}/${segments.field}/${slug.split("/").map(encodeUri).join("/")}`;
148
+ }
149
+ if (key === "span") {
150
+ const param2 = params[key];
151
+ const { start, end } = {
152
+ ...{ start: "1000-01-01 00:00:00", end: "9999-12-31 23:59:59" },
153
+ ...param2
154
+ };
155
+ if (isString(start) && !isDateString(start)) {
156
+ throw new Error(`Invalid start date: ${start}`);
157
+ }
158
+ if (isString(end) && !isDateString(end)) {
159
+ throw new Error(`Invalid end date: ${end}`);
160
+ }
161
+ return `${path2}/${encodeUri(formatDate(new Date(start)))}/${segments.span}/${encodeUri(formatDate(new Date(end)))}`;
162
+ }
163
+ if (key === "date") {
164
+ if (params.span != null) {
165
+ return path2;
166
+ }
167
+ const param2 = params[key];
168
+ const { year, month, day } = param2;
169
+ return [year, month, day].reduce((path3, param3) => {
170
+ if (param3 == null) {
171
+ return path3;
172
+ }
173
+ if (isNaN(param3)) {
174
+ return path3;
175
+ }
176
+ return `${path3}/${twoDigits(param3)}`;
177
+ }, path2);
178
+ }
179
+ if (key === "page") {
180
+ const param2 = params[key];
181
+ if (isNaN(param2) || param2 === 0) {
182
+ return path2;
183
+ }
184
+ return param2 === 1 ? path2 : `${path2}/${segments.page}/${param2}`;
185
+ }
186
+ if (key === "tpl") {
187
+ const param2 = params[key];
188
+ if (param2 === "") {
189
+ return path2;
190
+ }
191
+ return `${path2}/${segments.tpl}/${param2.split("/").map(encodeUri).join("/")}`;
192
+ }
193
+ if (key === "api") {
194
+ const param2 = params[key];
195
+ if (param2 === "") {
196
+ return path2;
197
+ }
198
+ const versionPath = apiVersion === "v1" ? "" : `/${apiVersion}`;
199
+ return `${path2}/${segments.api}${versionPath}/${encodeUri(param2)}`;
200
+ }
201
+ if (Array.isArray(param)) {
202
+ const components = param.map(encodeUri).filter((component) => component !== "");
203
+ return components.length > 0 ? `${path2}/${segments[key]}/${components.join("/")}` : path2;
204
+ }
205
+ if (param !== "") {
206
+ if (isNumber(param) && isNaN(param)) {
207
+ return path2;
208
+ }
209
+ return `${path2}/${segments[key]}/${encodeUri(param)}`;
210
+ }
211
+ return path2;
212
+ }, "");
213
+ if (!/\.[^/.]+$/.test(path)) {
214
+ path += "/";
215
+ }
216
+ const queryString = params.searchParams instanceof URLSearchParams ? params.searchParams.toString() : stringify(params.searchParams, { format: "RFC1738" });
217
+ if (queryString.length > 0) {
218
+ path += `?${queryString}`;
219
+ }
220
+ return path.startsWith("/") ? path.slice(1) : path;
221
+ }
222
+
223
+ export {
224
+ acmsPath
225
+ };
226
+ //# sourceMappingURL=chunk-HZZTSXXP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/acmsPath.ts"],"sourcesContent":["import { stringify } from 'qs';\nimport { encodeUri } from '@ablogcms/utils';\nimport { isNumber, isString } from '@ablogcms/utils/type-guard';\nimport isDateString from '@ablogcms/utils/is-date-string';\nimport { defaultAcmsPathSegments } from './defaults';\nimport type {\n AcmsContext,\n AcmsContextWithSearchParams,\n AcmsPathConfig,\n AcmsPathOptions,\n AcmsPathParams,\n AcmsPathSegments,\n} from './types';\nimport { formatDate, mergeConfig } from './utils';\n\nfunction isAcmsPathParams(params: AcmsPathParams | AcmsContext): params is AcmsPathParams {\n if ('blog' in params) {\n return true;\n }\n\n if ('category' in params) {\n return true;\n }\n\n if ('entry' in params) {\n return true;\n }\n\n if ('user' in params) {\n return true;\n }\n\n if ('unit' in params) {\n return true;\n }\n\n return false;\n}\n\nfunction toAcmsPathParams(context: AcmsContextWithSearchParams): AcmsPathParams {\n return {\n blog: context.bid,\n category: context.cid,\n entry: context.eid,\n user: context.uid,\n unit: context.utid,\n tag: context.tag,\n field: context.field,\n span: context.span,\n date: context.date,\n page: context.page,\n order: context.order,\n limit: context.limit,\n keyword: context.keyword,\n admin: context.admin,\n tpl: context.tpl,\n api: context.api,\n searchParams: context.searchParams,\n };\n}\n\nfunction twoDigits(num: number) {\n return num < 10 ? `0${num}` : num;\n}\n\nconst defaultOptions = {\n segments: defaultAcmsPathSegments,\n apiVersion: 'v2',\n} as const satisfies AcmsPathConfig;\n\nexport default function acmsPath(\n paramsOrCtx: AcmsPathParams | AcmsContextWithSearchParams,\n options: AcmsPathOptions = {}\n) {\n const params = isAcmsPathParams(paramsOrCtx) ? paramsOrCtx : toAcmsPathParams(paramsOrCtx);\n const { segments, apiVersion } = mergeConfig(defaultOptions, options) as AcmsPathConfig;\n let path = [\n 'blog',\n 'admin',\n 'category',\n 'entry',\n 'user',\n 'unit',\n 'span',\n 'date',\n 'keyword',\n 'tag',\n 'field',\n 'page',\n 'order',\n 'limit',\n 'tpl',\n 'api',\n ].reduce((path, key) => {\n const param = params[key as keyof AcmsPathParams];\n if (param == null) {\n return path;\n }\n\n if (key === 'blog') {\n const param = params[key]!;\n if (isNumber(param)) {\n if (isNaN(param) || param === 0) {\n return path;\n }\n return `${path}/${segments.bid}/${param}`;\n }\n if (param === '') {\n return path;\n }\n return `${path}/${param.split('/').map(encodeUri).join('/')}`;\n }\n\n if (key === 'category') {\n const param = params[key]!;\n if (isNumber(param)) {\n if (isNaN(param) || param === 0) {\n return path;\n }\n return `${path}/${segments.cid}/${param}`;\n }\n if (Array.isArray(param)) {\n return `${path}/${param.map(encodeUri).join('/')}`;\n }\n if (param === '') {\n return path;\n }\n return `${path}/${encodeUri(param)}`;\n }\n\n if (key === 'entry') {\n const param = params[key]!;\n if (isNumber(param)) {\n if (isNaN(param) || param === 0) {\n return path;\n }\n return `${path}/${segments.eid}/${param}`;\n }\n if (param === '') {\n return path;\n }\n return `${path}/${encodeUri(param)}`;\n }\n\n if (key === 'user') {\n const param = params[key]!;\n if (isNaN(param) || param === 0) {\n return path;\n }\n return `${path}/${segments.uid}/${param}`;\n }\n\n if (key === 'unit') {\n const param = params[key]!;\n if (param === '') {\n return path;\n }\n return `${path}/${segments.utid}/${param}`;\n }\n\n if (key === 'field') {\n const param = params[key]!;\n const slug = typeof param !== 'string' ? param.toString() : param;\n if (slug === '') {\n return path;\n }\n return `${path}/${segments.field}/${slug.split('/').map(encodeUri).join('/')}`;\n }\n\n if (key === 'span') {\n const param = params[key]!;\n const { start, end } = {\n ...{ start: '1000-01-01 00:00:00', end: '9999-12-31 23:59:59' },\n ...param,\n };\n if (isString(start) && !isDateString(start)) {\n throw new Error(`Invalid start date: ${start}`);\n }\n if (isString(end) && !isDateString(end)) {\n throw new Error(`Invalid end date: ${end}`);\n }\n return `${path}/${encodeUri(formatDate(new Date(start)))}/${\n segments.span\n }/${encodeUri(formatDate(new Date(end)))}`;\n }\n\n if (key === 'date') {\n if (params.span != null) {\n return path;\n }\n const param = params[key]!;\n const { year, month, day } = param;\n return [year, month, day].reduce((path, param) => {\n if (param == null) {\n return path;\n }\n if (isNaN(param)) {\n return path;\n }\n return `${path}/${twoDigits(param)}`;\n }, path);\n }\n\n if (key === 'page') {\n const param = params[key]!;\n if (isNaN(param) || param === 0) {\n return path;\n }\n return param === 1 ? path : `${path}/${segments.page}/${param}`;\n }\n\n if (key === 'tpl') {\n const param = params[key]!;\n if (param === '') {\n return path;\n }\n return `${path}/${segments.tpl}/${param.split('/').map(encodeUri).join('/')}`;\n }\n\n if (key === 'api') {\n const param = params[key]!;\n if (param === '') {\n return path;\n }\n const versionPath = apiVersion === 'v1' ? '' : `/${apiVersion}`;\n return `${path}/${segments.api}${versionPath}/${encodeUri(param)}`;\n }\n\n if (Array.isArray(param)) {\n const components = (param as string[]).map(encodeUri).filter((component) => component !== '');\n return components.length > 0\n ? `${path}/${segments[key as keyof AcmsPathSegments]}/${components.join('/')}`\n : path;\n }\n\n if (param !== '') {\n if (isNumber(param) && isNaN(param)) {\n return path;\n }\n return `${path}/${segments[key as keyof AcmsPathSegments]}/${encodeUri(param as string | number)}`;\n }\n return path;\n }, '');\n\n if (!/\\.[^/.]+$/.test(path)) {\n // 拡張子がない場合は末尾にスラッシュを付与する\n path += '/';\n }\n\n const queryString =\n params.searchParams instanceof URLSearchParams\n ? params.searchParams.toString()\n : stringify(params.searchParams, { format: 'RFC1738' });\n if (queryString.length > 0) {\n path += `?${queryString}`;\n }\n\n // 相対パスでの指定ができるように先頭のスラッシュを削除する\n // ex: new URL(acmsPath({ blog: 'blog' }), 'https://example.com/hoge/') => https://example.com/hoge/blog\n return path.startsWith('/') ? path.slice(1) : path;\n}\n"],"mappings":"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","names":["path","param"]}
@@ -0,0 +1,23 @@
1
+ // src/defaults.ts
2
+ var defaultAcmsPathSegments = {
3
+ bid: "bid",
4
+ cid: "cid",
5
+ eid: "eid",
6
+ uid: "uid",
7
+ utid: "utid",
8
+ tag: "tag",
9
+ field: "field",
10
+ span: "-",
11
+ page: "page",
12
+ order: "order",
13
+ limit: "limit",
14
+ keyword: "keyword",
15
+ admin: "admin",
16
+ tpl: "tpl",
17
+ api: "api"
18
+ };
19
+
20
+ export {
21
+ defaultAcmsPathSegments
22
+ };
23
+ //# sourceMappingURL=chunk-OJI2ZTVL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/defaults.ts"],"sourcesContent":["import { type AcmsPathSegments } from './types';\n\nexport const defaultAcmsPathSegments = {\n bid: 'bid',\n cid: 'cid',\n eid: 'eid',\n uid: 'uid',\n utid: 'utid',\n tag: 'tag',\n field: 'field',\n span: '-',\n page: 'page',\n order: 'order',\n limit: 'limit',\n keyword: 'keyword',\n admin: 'admin',\n tpl: 'tpl',\n api: 'api',\n} as const satisfies AcmsPathSegments;\n"],"mappings":";AAEO,IAAM,0BAA0B;AAAA,EACrC,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,KAAK;AAAA,EACL,KAAK;AACP;","names":[]}
@@ -0,0 +1,295 @@
1
+ import {
2
+ isAcmsFilter,
3
+ isConnector,
4
+ isOperator,
5
+ isSeparator
6
+ } from "./chunk-ZDAAXRTI.mjs";
7
+ import {
8
+ splitPath
9
+ } from "./chunk-XTN64CHF.mjs";
10
+
11
+ // src/acmsField.ts
12
+ import { parseFormData } from "parse-nested-form-data";
13
+ import { unique } from "@ablogcms/utils/array";
14
+ var AcmsFieldList = class _AcmsFieldList {
15
+ fields = [];
16
+ constructor(fields = []) {
17
+ this.fields = fields;
18
+ }
19
+ push(field) {
20
+ this.fields.push(field);
21
+ }
22
+ pop() {
23
+ return this.fields.pop();
24
+ }
25
+ shift() {
26
+ return this.fields.shift();
27
+ }
28
+ unshift(field) {
29
+ this.fields.unshift(field);
30
+ }
31
+ getFields() {
32
+ return this.fields;
33
+ }
34
+ toString() {
35
+ const queries = [];
36
+ this.fields.forEach((field) => {
37
+ const { key, filters, separator } = field;
38
+ const values = filters.map((filter) => filter.value);
39
+ const operators = filters.map((filter) => filter.operator);
40
+ const connectors = filters.map((filter) => filter.connector);
41
+ const count = Math.max(values.length, operators.length, connectors.length);
42
+ if (count === 0) {
43
+ return;
44
+ }
45
+ let empty = 0;
46
+ const buf = [];
47
+ for (let i = 0; i < count; i++) {
48
+ const value = values[i] ?? "";
49
+ const operator = operators[i] ?? "";
50
+ const connector = connectors[i] ?? "";
51
+ switch (operator) {
52
+ case "eq":
53
+ case "neq":
54
+ case "lt":
55
+ case "lte":
56
+ case "gt":
57
+ case "gte":
58
+ case "lk":
59
+ case "nlk":
60
+ case "re":
61
+ case "nre":
62
+ if (value !== "") {
63
+ for (let j = 0; j < empty; j++) {
64
+ buf.push("");
65
+ }
66
+ empty = 0;
67
+ if (connector === "or") {
68
+ if (operator !== "eq") {
69
+ buf.push("or");
70
+ buf.push(operator);
71
+ }
72
+ buf.push(String(value));
73
+ } else {
74
+ buf.push(operator);
75
+ buf.push(String(value));
76
+ }
77
+ } else {
78
+ empty++;
79
+ }
80
+ break;
81
+ case "em":
82
+ case "nem":
83
+ for (let j = 0; j < empty; j++) {
84
+ buf.push("");
85
+ }
86
+ empty = 0;
87
+ if (connector === "or") {
88
+ buf.push("or");
89
+ }
90
+ buf.push(operator);
91
+ break;
92
+ default:
93
+ buf.push("");
94
+ }
95
+ }
96
+ const aryTmp = [];
97
+ if (buf.length > 0) {
98
+ aryTmp.push(separator ?? "_and_");
99
+ aryTmp.push(key);
100
+ buf.forEach((token) => {
101
+ aryTmp.push(token);
102
+ });
103
+ queries.push(...aryTmp);
104
+ }
105
+ });
106
+ if (queries.length > 0 && ["_or_", "_and_", "and"].includes(queries[0])) {
107
+ queries.shift();
108
+ }
109
+ return queries.join("/");
110
+ }
111
+ static fromString(input) {
112
+ const tokens = splitPath(input);
113
+ let filter = {};
114
+ let key = null;
115
+ let connector = null;
116
+ let operator = null;
117
+ let value = null;
118
+ let separator;
119
+ let tmpSeparator = null;
120
+ const fields = [];
121
+ while (tokens.length > 0) {
122
+ const token = tokens.shift();
123
+ if (token === void 0) {
124
+ continue;
125
+ }
126
+ if (key === null) {
127
+ key = token;
128
+ if (tmpSeparator != null && isSeparator(tmpSeparator)) {
129
+ separator = tmpSeparator;
130
+ } else {
131
+ separator = "_and_";
132
+ }
133
+ fields.push({
134
+ key,
135
+ filters: [],
136
+ separator
137
+ });
138
+ tmpSeparator = null;
139
+ continue;
140
+ }
141
+ if (token === "") {
142
+ if (connector === null) {
143
+ connector = null;
144
+ operator = null;
145
+ } else if (operator === null) {
146
+ operator = "eq";
147
+ }
148
+ }
149
+ if (operator === null) {
150
+ switch (token) {
151
+ case "eq":
152
+ operator = token;
153
+ connector = "or";
154
+ break;
155
+ case "neq":
156
+ case "lt":
157
+ case "lte":
158
+ case "gt":
159
+ case "gte":
160
+ case "lk":
161
+ case "nlk":
162
+ case "re":
163
+ case "nre":
164
+ operator = token;
165
+ break;
166
+ case "em":
167
+ case "nem":
168
+ operator = token;
169
+ value = "";
170
+ break;
171
+ default:
172
+ break;
173
+ }
174
+ if (operator !== null) {
175
+ if (connector === null) {
176
+ connector = "and";
177
+ }
178
+ if (value === null) {
179
+ continue;
180
+ }
181
+ }
182
+ }
183
+ if (connector === null) {
184
+ if (token === "or") {
185
+ connector = token;
186
+ continue;
187
+ } else {
188
+ connector = "or";
189
+ if (operator === null) {
190
+ operator = "eq";
191
+ }
192
+ value = token;
193
+ }
194
+ }
195
+ if (value === null) {
196
+ if (operator === null) {
197
+ operator = "eq";
198
+ }
199
+ value = token;
200
+ } else if (["and", "_and_", "_or_"].includes(token)) {
201
+ tmpSeparator = token === "and" ? "_and_" : token;
202
+ key = null;
203
+ connector = null;
204
+ operator = null;
205
+ value = null;
206
+ continue;
207
+ }
208
+ if (key !== "") {
209
+ if (isOperator(operator)) {
210
+ filter = {
211
+ ...filter,
212
+ operator
213
+ };
214
+ }
215
+ if (value !== null) {
216
+ filter = {
217
+ ...filter,
218
+ value
219
+ };
220
+ }
221
+ if (isConnector(connector)) {
222
+ filter = {
223
+ ...filter,
224
+ connector
225
+ };
226
+ }
227
+ const current = fields.find((field) => field.key === key);
228
+ if (current !== void 0 && isAcmsFilter(filter)) {
229
+ current.filters = [...current.filters, filter];
230
+ }
231
+ }
232
+ connector = null;
233
+ operator = null;
234
+ value = null;
235
+ }
236
+ return new _AcmsFieldList(fields);
237
+ }
238
+ static fromFormData(formData) {
239
+ const data = parseFormData(formData);
240
+ if (!Array.isArray(data.field)) {
241
+ return new _AcmsFieldList();
242
+ }
243
+ if (!data.field.every((f) => typeof f === "string")) {
244
+ return new _AcmsFieldList();
245
+ }
246
+ const fieldNames = unique(data.field.filter((fieldName) => fieldName !== ""));
247
+ const fields = fieldNames.map((fieldName) => {
248
+ const operatorKey = `${fieldName}@operator`;
249
+ const connectorKey = `${fieldName}@connector`;
250
+ const separatorKey = `${fieldName}@separator`;
251
+ const valueKey = fieldName;
252
+ const operators = data[operatorKey] || [];
253
+ const connectors = data[connectorKey] || [];
254
+ const values = data[valueKey] || [];
255
+ const separator = data[separatorKey] || "_and_";
256
+ const count = Math.max(operators.length, connectors.length, values.length);
257
+ if (count === 0) {
258
+ return { key: fieldName, filters: [] };
259
+ }
260
+ let defaultConnector = "and";
261
+ let defaultOperator = "eq";
262
+ if (connectors.length === 0 && operators.length === 0) {
263
+ defaultConnector = "or";
264
+ }
265
+ if (connectors.length > 0 && isConnector(connectors[0])) {
266
+ defaultConnector = connectors[0];
267
+ }
268
+ if (operators.length > 0 && isOperator(operators[0])) {
269
+ defaultOperator = operators[0];
270
+ }
271
+ const filters = [];
272
+ for (let i = 0; i < count; i++) {
273
+ const value = values[i];
274
+ const operator = isOperator(operators[i]) ? operators[i] : defaultOperator;
275
+ const connector = isConnector(connectors[i]) ? connectors[i] : defaultConnector;
276
+ filters.push({
277
+ value,
278
+ operator,
279
+ connector
280
+ });
281
+ }
282
+ return {
283
+ key: fieldName,
284
+ filters,
285
+ separator
286
+ };
287
+ });
288
+ return new _AcmsFieldList(fields);
289
+ }
290
+ };
291
+
292
+ export {
293
+ AcmsFieldList
294
+ };
295
+ //# sourceMappingURL=chunk-OUKSKSZA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/acmsField.ts"],"sourcesContent":["import { parseFormData } from 'parse-nested-form-data';\nimport { unique } from '@ablogcms/utils/array';\nimport {\n isSeparator,\n type AcmsField,\n type AcmsFilter,\n type Connector,\n type Operator,\n type Separator,\n isConnector,\n isOperator,\n isAcmsFilter,\n} from './types';\nimport { splitPath } from './utils';\n\nexport default class AcmsFieldList {\n private fields: AcmsField[] = [];\n\n public constructor(fields: AcmsField[] = []) {\n this.fields = fields;\n }\n\n public push(field: AcmsField) {\n this.fields.push(field);\n }\n\n public pop(): AcmsField | undefined {\n return this.fields.pop();\n }\n\n public shift(): AcmsField | undefined {\n return this.fields.shift();\n }\n\n public unshift(field: AcmsField) {\n this.fields.unshift(field);\n }\n\n public getFields(): AcmsField[] {\n return this.fields;\n }\n\n public toString(): string {\n const queries: string[] = [];\n\n this.fields.forEach((field) => {\n const { key, filters, separator } = field;\n\n const values = filters.map((filter) => filter.value);\n const operators = filters.map((filter) => filter.operator);\n const connectors = filters.map((filter) => filter.connector);\n\n const count = Math.max(values.length, operators.length, connectors.length);\n if (count === 0) {\n return; // フィルタが空の場合はスキップ\n }\n\n let empty = 0;\n const buf: string[] = [];\n\n for (let i = 0; i < count; i++) {\n const value = values[i] ?? '';\n const operator = operators[i] ?? '';\n const connector = connectors[i] ?? '';\n\n switch (operator) {\n case 'eq':\n case 'neq':\n case 'lt':\n case 'lte':\n case 'gt':\n case 'gte':\n case 'lk':\n case 'nlk':\n case 're':\n case 'nre':\n if (value !== '') {\n // 空のトークンがあれば埋める\n for (let j = 0; j < empty; j++) {\n buf.push('');\n }\n empty = 0;\n\n if (connector === 'or') {\n if (operator !== 'eq') {\n buf.push('or');\n buf.push(operator);\n }\n buf.push(String(value));\n } else {\n buf.push(operator);\n buf.push(String(value));\n }\n } else {\n empty++;\n }\n break;\n case 'em':\n case 'nem':\n // 空のトークンがあれば埋める\n for (let j = 0; j < empty; j++) {\n buf.push('');\n }\n empty = 0;\n\n if (connector === 'or') {\n buf.push('or');\n }\n buf.push(operator);\n break;\n default:\n buf.push('');\n }\n }\n\n const aryTmp: string[] = [];\n if (buf.length > 0) {\n // セパレーターが 'or' であれば _or_、それ以外は _and_ とする\n aryTmp.push(separator ?? '_and_');\n aryTmp.push(key);\n\n // バッファに貯めたトークンを追加\n buf.forEach((token) => {\n aryTmp.push(token);\n });\n\n // 結果に追加\n queries.push(...aryTmp);\n }\n });\n\n // 不要な '_or_' や '_and_' を取り除く\n if (queries.length > 0 && ['_or_', '_and_', 'and'].includes(queries[0])) {\n queries.shift();\n }\n\n // スラッシュで結合して文字列を返す\n return queries.join('/');\n }\n\n public static fromString(input: string): AcmsFieldList {\n const tokens = splitPath(input);\n\n let filter: Partial<AcmsFilter> = {};\n let key: string | null = null;\n let connector: Connector | null = null;\n let operator: Operator | null = null;\n let value: string | null = null;\n let separator: Separator | null;\n let tmpSeparator: Separator | null = null;\n\n const fields: AcmsField[] = [];\n\n while (tokens.length > 0) {\n const token = tokens.shift();\n\n if (token === undefined) {\n continue;\n }\n\n // ① keyの判定処理\n // keyが未定義の場合、このトークンをフィールド名として扱う\n if (key === null) {\n key = token;\n\n if (tmpSeparator != null && isSeparator(tmpSeparator)) {\n separator = tmpSeparator;\n } else {\n separator = '_and_';\n }\n\n // 新しいフィールドのエントリを作成し、結果配列に追加\n fields.push({\n key,\n filters: [],\n separator,\n });\n\n tmpSeparator = null; // 一時セパレーターをリセット\n continue;\n }\n\n // トークンが空の場合、operatorが未定義ならデフォルト値を設定\n if (token === '') {\n if (connector === null) {\n connector = null;\n operator = null;\n } else if (operator === null) {\n operator = 'eq';\n }\n }\n\n // ② operator(演算子)の判定処理\n // operatorが未定義の場合、次のトークンをoperatorとして処理\n if (operator === null) {\n switch (token) {\n case 'eq':\n operator = token;\n connector = 'or'; // eqの場合、connectorは強制的にor\n break;\n case 'neq':\n case 'lt':\n case 'lte':\n case 'gt':\n case 'gte':\n case 'lk':\n case 'nlk':\n case 're':\n case 'nre':\n operator = token;\n break;\n case 'em':\n case 'nem':\n operator = token;\n value = ''; // em, nemの場合、値は空文字列\n break;\n default:\n break;\n }\n\n // operatorが見つかった場合、connectorが未定義ならデフォルト値を設定\n if (operator !== null) {\n if (connector === null) {\n connector = 'and';\n }\n if (value === null) {\n continue; // 次のトークンを処理するためcontinue\n }\n }\n }\n\n // ③ connector(or)の判定処理\n // PHP 側 Field_Search::parse() と挙動を揃え、connector として認識するのは 'or' のみ。\n // 裸の `and` は後段の separator 判定('and' | '_and_' | '_or_')で処理されるよう、\n // ここでは else 分岐に流して value 経由でフィールド境界トークンに到達させる。\n if (connector === null) {\n if (token === 'or') {\n // 'or'が見つかった場合、それをconnectorとして設定\n connector = token;\n continue;\n } else {\n // 'or'が見つからなかった場合\n connector = 'or';\n if (operator === null) {\n // phpとの変更点\n operator = 'eq';\n }\n value = token; // 値としてトークンを設定\n }\n }\n\n // 値が未定義の場合、デフォルトのoperator 'eq'を設定して値を設定\n if (value === null) {\n if (operator === null) {\n // 値及び演算子がない場合は eq として扱う\n operator = 'eq';\n }\n value = token;\n } else if (['and', '_and_', '_or_'].includes(token)) {\n // セパレーターが見つかった場合、一時的なセパレーターとして設定\n tmpSeparator = token === 'and' ? '_and_' : (token as Separator);\n\n // 次のフィールドの処理のためにリセット\n key = null;\n connector = null;\n operator = null;\n value = null;\n\n continue;\n }\n\n if (key !== '') {\n if (isOperator(operator)) {\n filter = {\n ...filter,\n operator,\n };\n }\n if (value !== null) {\n filter = {\n ...filter,\n value,\n };\n }\n\n if (isConnector(connector)) {\n filter = {\n ...filter,\n connector,\n };\n }\n\n const current = fields.find((field) => field.key === key);\n if (current !== undefined && isAcmsFilter(filter)) {\n current.filters = [...current.filters, filter];\n }\n }\n\n // 次のトークンの処理のためにリセット\n connector = null;\n operator = null;\n value = null;\n }\n\n return new AcmsFieldList(fields);\n }\n\n public static fromFormData(formData: FormData): AcmsFieldList {\n const data = parseFormData(formData) as { field?: string[]; [key: string]: any }; // eslint-disable-line @typescript-eslint/no-explicit-any\n if (!Array.isArray(data.field)) {\n return new AcmsFieldList();\n }\n\n if (!data.field.every((f) => typeof f === 'string')) {\n return new AcmsFieldList();\n }\n\n const fieldNames = unique(data.field.filter((fieldName) => fieldName !== ''));\n const fields: AcmsField[] = fieldNames.map((fieldName) => {\n const operatorKey = `${fieldName}@operator`;\n const connectorKey = `${fieldName}@connector`;\n const separatorKey = `${fieldName}@separator`;\n const valueKey = fieldName;\n\n const operators = data[operatorKey] || [];\n const connectors = data[connectorKey] || [];\n const values = data[valueKey] || [];\n const separator = data[separatorKey] || '_and_';\n\n const count = Math.max(operators.length, connectors.length, values.length);\n if (count === 0) {\n return { key: fieldName, filters: [] };\n }\n\n let defaultConnector: Connector = 'and';\n let defaultOperator: Operator = 'eq';\n\n if (connectors.length === 0 && operators.length === 0) {\n defaultConnector = 'or';\n }\n if (connectors.length > 0 && isConnector(connectors[0])) {\n defaultConnector = connectors[0];\n }\n\n if (operators.length > 0 && isOperator(operators[0])) {\n // 不正な operator が指定された場合は 'eq' にフォールバックする(PHP 側 Field_Search::fromPost と挙動を揃える)。\n defaultOperator = operators[0];\n }\n\n const filters: AcmsFilter[] = [];\n for (let i = 0; i < count; i++) {\n const value = values[i];\n const operator: Operator = isOperator(operators[i]) ? operators[i] : defaultOperator;\n const connector: Connector = isConnector(connectors[i]) ? connectors[i] : defaultConnector;\n\n filters.push({\n value,\n operator,\n connector,\n });\n }\n\n return {\n key: fieldName,\n filters,\n separator,\n };\n });\n\n return new AcmsFieldList(fields);\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,22 @@
1
+ import {
2
+ parseAcmsPath
3
+ } from "./chunk-GHGJBKQU.mjs";
4
+ import {
5
+ acmsPath
6
+ } from "./chunk-HZZTSXXP.mjs";
7
+ import {
8
+ mergeConfig
9
+ } from "./chunk-XTN64CHF.mjs";
10
+
11
+ // src/createAcmsPathHelper.ts
12
+ function createAcmsPathHelper(segments) {
13
+ return {
14
+ acmsPath: (paramsOrCtx, options = {}) => acmsPath(paramsOrCtx, mergeConfig({ segments }, options)),
15
+ parseAcmsPath: (path, options = {}) => parseAcmsPath(path, mergeConfig({ segments }, options))
16
+ };
17
+ }
18
+
19
+ export {
20
+ createAcmsPathHelper
21
+ };
22
+ //# sourceMappingURL=chunk-PHGYMRZK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/createAcmsPathHelper.ts"],"sourcesContent":["import { mergeConfig } from './utils';\nimport { AcmsPathSegments } from './types';\nimport acmsPath from './acmsPath';\nimport parseAcmsPath from './parseAcmsPath';\n\ninterface AcmsPathHelper {\n acmsPath: typeof acmsPath;\n parseAcmsPath: typeof parseAcmsPath;\n}\n\nexport default function createAcmsPathHelper(segments?: AcmsPathSegments): AcmsPathHelper {\n return {\n acmsPath: (paramsOrCtx, options = {}) => acmsPath(paramsOrCtx, mergeConfig({ segments }, options)),\n parseAcmsPath: (path, options = {}) => parseAcmsPath(path, mergeConfig({ segments }, options)),\n };\n}\n"],"mappings":";;;;;;;;;;;AAUe,SAAR,qBAAsC,UAA6C;AACxF,SAAO;AAAA,IACL,UAAU,CAAC,aAAa,UAAU,CAAC,MAAM,SAAS,aAAa,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC;AAAA,IACjG,eAAe,CAAC,MAAM,UAAU,CAAC,MAAM,cAAc,MAAM,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC;AAAA,EAC/F;AACF;","names":[]}