@metaobjectsdev/runtime-web 1.0.5-rc.6 → 1.0.5-rc.8

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.
@@ -1,8 +1,14 @@
1
1
  /**
2
2
  * Build a bracketed qs URL fragment from a filter object.
3
3
  *
4
- * Output shape (qs's default bracketed style):
5
- * ?filter[email][like]=%25@x.com&filter[subscribed]=true&sort=createdAt:desc&limit=25&withCount=1&search=term
4
+ * Output shape (qs's bracketed style), shown DECODED:
5
+ * ?filter[email][like]=%@x.com&filter[subscribed]=true&sort=createdAt:desc&limit=25&withCount=1&search=term
6
+ *
7
+ * On the wire the brackets are percent-encoded (`filter%5Bemail%5D%5Blike%5D=…`). RFC 3986
8
+ * admits no raw `[`/`]` in a query, and Tomcat — every Spring Boot app's default server —
9
+ * answers a raw one with its own HTML 400, so the generated Java and Kotlin controllers could
10
+ * not serve a single filtered request while this sent them raw. Every server-side parser
11
+ * decodes before it reads the brackets, so the encoded form means the same thing everywhere.
6
12
  *
7
13
  * Top-level `limit`, `offset`, `sort`, `withCount`, and `search` are emitted
8
14
  * at the top level (not under `filter`). All other keys go inside `filter`.
@@ -1 +1 @@
1
- {"version":3,"file":"filter-qs.d.ts","sourceRoot":"","sources":["../src/filter-qs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAYrE"}
1
+ {"version":3,"file":"filter-qs.d.ts","sourceRoot":"","sources":["../src/filter-qs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAYrE"}
package/dist/filter-qs.js CHANGED
@@ -2,8 +2,14 @@ import qs from "qs";
2
2
  /**
3
3
  * Build a bracketed qs URL fragment from a filter object.
4
4
  *
5
- * Output shape (qs's default bracketed style):
6
- * ?filter[email][like]=%25@x.com&filter[subscribed]=true&sort=createdAt:desc&limit=25&withCount=1&search=term
5
+ * Output shape (qs's bracketed style), shown DECODED:
6
+ * ?filter[email][like]=%@x.com&filter[subscribed]=true&sort=createdAt:desc&limit=25&withCount=1&search=term
7
+ *
8
+ * On the wire the brackets are percent-encoded (`filter%5Bemail%5D%5Blike%5D=…`). RFC 3986
9
+ * admits no raw `[`/`]` in a query, and Tomcat — every Spring Boot app's default server —
10
+ * answers a raw one with its own HTML 400, so the generated Java and Kotlin controllers could
11
+ * not serve a single filtered request while this sent them raw. Every server-side parser
12
+ * decodes before it reads the brackets, so the encoded form means the same thing everywhere.
7
13
  *
8
14
  * Top-level `limit`, `offset`, `sort`, `withCount`, and `search` are emitted
9
15
  * at the top level (not under `filter`). All other keys go inside `filter`.
@@ -34,6 +40,6 @@ export function buildFilterQs(filter) {
34
40
  filterObj.or = or;
35
41
  if (and !== undefined)
36
42
  filterObj.and = and;
37
- return qs.stringify({ ...top, filter: filterObj }, { encodeValuesOnly: true });
43
+ return qs.stringify({ ...top, filter: filterObj });
38
44
  }
39
45
  //# sourceMappingURL=filter-qs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-qs.js","sourceRoot":"","sources":["../src/filter-qs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAC,MAA+B;IAC3D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAa,CAAC;IACrF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,KAAK,KAAS,SAAS;QAAE,GAAG,CAAC,KAAK,GAAO,KAAK,CAAC;IACnD,IAAI,MAAM,KAAQ,SAAS;QAAE,GAAG,CAAC,MAAM,GAAM,MAAM,CAAC;IACpD,IAAI,IAAI,KAAU,SAAS;QAAE,GAAG,CAAC,IAAI,GAAQ,IAAI,CAAC;IAClD,IAAI,SAAS,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IACvD,IAAI,MAAM,KAAQ,SAAS;QAAE,GAAG,CAAC,MAAM,GAAM,MAAM,CAAC;IACpD,MAAM,SAAS,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACzD,IAAI,EAAE,KAAM,SAAS;QAAE,SAAS,CAAC,EAAE,GAAI,EAAE,CAAC;IAC1C,IAAI,GAAG,KAAK,SAAS;QAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;IAC3C,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"filter-qs.js","sourceRoot":"","sources":["../src/filter-qs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,aAAa,CAAC,MAA+B;IAC3D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAa,CAAC;IACrF,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,KAAK,KAAS,SAAS;QAAE,GAAG,CAAC,KAAK,GAAO,KAAK,CAAC;IACnD,IAAI,MAAM,KAAQ,SAAS;QAAE,GAAG,CAAC,MAAM,GAAM,MAAM,CAAC;IACpD,IAAI,IAAI,KAAU,SAAS;QAAE,GAAG,CAAC,IAAI,GAAQ,IAAI,CAAC;IAClD,IAAI,SAAS,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IACvD,IAAI,MAAM,KAAQ,SAAS;QAAE,GAAG,CAAC,MAAM,GAAM,MAAM,CAAC;IACpD,MAAM,SAAS,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACzD,IAAI,EAAE,KAAM,SAAS;QAAE,SAAS,CAAC,EAAE,GAAI,EAAE,CAAC;IAC1C,IAAI,GAAG,KAAK,SAAS;QAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;IAC3C,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACrD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metaobjectsdev/runtime-web",
3
- "version": "1.0.5-rc.6",
3
+ "version": "1.0.5-rc.8",
4
4
  "description": "Pure framework-agnostic browser core for metaobjects: currency, filter URL serialization, fetcher contract types.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -45,7 +45,7 @@
45
45
  "access": "public"
46
46
  },
47
47
  "dependencies": {
48
- "@metaobjectsdev/metadata": "1.0.5-rc.6",
48
+ "@metaobjectsdev/metadata": "1.0.5-rc.8",
49
49
  "qs": "^6.13.0"
50
50
  },
51
51
  "devDependencies": {
package/src/filter-qs.ts CHANGED
@@ -3,8 +3,14 @@ import qs from "qs";
3
3
  /**
4
4
  * Build a bracketed qs URL fragment from a filter object.
5
5
  *
6
- * Output shape (qs's default bracketed style):
7
- * ?filter[email][like]=%25@x.com&filter[subscribed]=true&sort=createdAt:desc&limit=25&withCount=1&search=term
6
+ * Output shape (qs's bracketed style), shown DECODED:
7
+ * ?filter[email][like]=%@x.com&filter[subscribed]=true&sort=createdAt:desc&limit=25&withCount=1&search=term
8
+ *
9
+ * On the wire the brackets are percent-encoded (`filter%5Bemail%5D%5Blike%5D=…`). RFC 3986
10
+ * admits no raw `[`/`]` in a query, and Tomcat — every Spring Boot app's default server —
11
+ * answers a raw one with its own HTML 400, so the generated Java and Kotlin controllers could
12
+ * not serve a single filtered request while this sent them raw. Every server-side parser
13
+ * decodes before it reads the brackets, so the encoded form means the same thing everywhere.
8
14
  *
9
15
  * Top-level `limit`, `offset`, `sort`, `withCount`, and `search` are emitted
10
16
  * at the top level (not under `filter`). All other keys go inside `filter`.
@@ -28,5 +34,5 @@ export function buildFilterQs(filter: Record<string, unknown>): string {
28
34
  const filterObj: Record<string, unknown> = { ...fields };
29
35
  if (or !== undefined) filterObj.or = or;
30
36
  if (and !== undefined) filterObj.and = and;
31
- return qs.stringify({ ...top, filter: filterObj }, { encodeValuesOnly: true });
37
+ return qs.stringify({ ...top, filter: filterObj });
32
38
  }