@nifrajs/core 5.4.0 → 5.5.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 (89) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/internal/route-lanes.d.ts.map +1 -1
  5. package/dist/internal/route-lanes.js +2 -1
  6. package/dist/internal/route-lanes.js.map +1 -1
  7. package/dist/internal/route-program.d.ts +5 -0
  8. package/dist/internal/route-program.d.ts.map +1 -1
  9. package/dist/internal/route-program.js +36 -15
  10. package/dist/internal/route-program.js.map +1 -1
  11. package/dist/router/router.d.ts +3 -2
  12. package/dist/router/router.d.ts.map +1 -1
  13. package/dist/router/router.js +22 -6
  14. package/dist/router/router.js.map +1 -1
  15. package/dist/security/baseline.d.ts.map +1 -1
  16. package/dist/security/baseline.js +4 -3
  17. package/dist/security/baseline.js.map +1 -1
  18. package/dist/server/body-lane.d.ts.map +1 -1
  19. package/dist/server/body-lane.js +4 -3
  20. package/dist/server/body-lane.js.map +1 -1
  21. package/dist/server/body.d.ts +2 -0
  22. package/dist/server/body.d.ts.map +1 -1
  23. package/dist/server/body.js +5 -0
  24. package/dist/server/body.js.map +1 -1
  25. package/dist/server/cookies.d.ts.map +1 -1
  26. package/dist/server/cookies.js +9 -2
  27. package/dist/server/cookies.js.map +1 -1
  28. package/dist/server/core-copies.js +1 -1
  29. package/dist/server/idempotency-lane.d.ts +11 -12
  30. package/dist/server/idempotency-lane.d.ts.map +1 -1
  31. package/dist/server/idempotency-lane.js +301 -151
  32. package/dist/server/idempotency-lane.js.map +1 -1
  33. package/dist/server/methods.d.ts +3 -2
  34. package/dist/server/methods.d.ts.map +1 -1
  35. package/dist/server/methods.js.map +1 -1
  36. package/dist/server/multipart.d.ts.map +1 -1
  37. package/dist/server/multipart.js +42 -13
  38. package/dist/server/multipart.js.map +1 -1
  39. package/dist/server/node-outcome.d.ts.map +1 -1
  40. package/dist/server/node-outcome.js +2 -2
  41. package/dist/server/node-outcome.js.map +1 -1
  42. package/dist/server/query.d.ts +1 -1
  43. package/dist/server/query.d.ts.map +1 -1
  44. package/dist/server/query.js +13 -5
  45. package/dist/server/query.js.map +1 -1
  46. package/dist/server/request-context.d.ts.map +1 -1
  47. package/dist/server/request-context.js +3 -3
  48. package/dist/server/request-context.js.map +1 -1
  49. package/dist/server/respond.d.ts +17 -0
  50. package/dist/server/respond.d.ts.map +1 -1
  51. package/dist/server/respond.js +81 -3
  52. package/dist/server/respond.js.map +1 -1
  53. package/dist/server/runtime-core.d.ts +15 -0
  54. package/dist/server/runtime-core.d.ts.map +1 -1
  55. package/dist/server/runtime-core.js +41 -1
  56. package/dist/server/runtime-core.js.map +1 -1
  57. package/dist/server/server.d.ts +14 -5
  58. package/dist/server/server.d.ts.map +1 -1
  59. package/dist/server/server.js +179 -59
  60. package/dist/server/server.js.map +1 -1
  61. package/dist/server/transport-lane.d.ts +2 -2
  62. package/dist/server/transport-lane.d.ts.map +1 -1
  63. package/dist/server/transport-lane.js +20 -20
  64. package/dist/server/transport-lane.js.map +1 -1
  65. package/dist/static-file.d.ts +29 -6
  66. package/dist/static-file.d.ts.map +1 -1
  67. package/dist/static-file.js +43 -12
  68. package/dist/static-file.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/index.ts +1 -1
  71. package/src/internal/route-lanes.ts +18 -16
  72. package/src/internal/route-program.ts +76 -12
  73. package/src/router/router.ts +26 -5
  74. package/src/security/baseline.ts +4 -3
  75. package/src/server/body-lane.ts +4 -4
  76. package/src/server/body.ts +6 -0
  77. package/src/server/cookies.ts +7 -2
  78. package/src/server/core-copies.ts +1 -1
  79. package/src/server/idempotency-lane.ts +343 -209
  80. package/src/server/methods.ts +3 -2
  81. package/src/server/multipart.ts +62 -14
  82. package/src/server/node-outcome.ts +2 -1
  83. package/src/server/query.ts +12 -5
  84. package/src/server/request-context.ts +6 -3
  85. package/src/server/respond.ts +108 -6
  86. package/src/server/runtime-core.ts +54 -1
  87. package/src/server/server.ts +249 -99
  88. package/src/server/transport-lane.ts +28 -22
  89. package/src/static-file.ts +72 -16
@@ -462,6 +462,12 @@ export function markTransportCap(source: object, maxBytes: number): void {
462
462
  ;(source as { [TRANSPORT_CAP]?: number })[TRANSPORT_CAP] = maxBytes
463
463
  }
464
464
 
465
+ /** The cap {@link markTransportCap} set on `source`, for a copy that must keep it. */
466
+ export function transportCapOf(source: object): number | undefined {
467
+ const cap: unknown = Reflect.get(source, TRANSPORT_CAP)
468
+ return typeof cap === "number" ? cap : undefined
469
+ }
470
+
465
471
  /**
466
472
  * Enforce a marked source's transport byte cap on **direct user reads** of its request
467
473
  * (`c.req.json()`, `c.req.arrayBuffer()`, the raw `body` stream, `clone()`, ...), without swapping
@@ -78,6 +78,9 @@ export function parseCookies(header: string | null | undefined): Record<string,
78
78
  if (!header) return out
79
79
  const len = header.length
80
80
  let pos = 0
81
+ // The first "=" at or after the segment, kept while it lies in a later one, so a run of bare
82
+ // segments does not rescan the rest of the header each time. -1: none left.
83
+ let eq = header.indexOf("=")
81
84
  while (pos < len) {
82
85
  let end = header.indexOf(";", pos)
83
86
  if (end === -1) end = len
@@ -86,7 +89,7 @@ export function parseCookies(header: string | null | undefined): Record<string,
86
89
  while (start < end && header.charCodeAt(start) === 32) start++
87
90
  let stop = end
88
91
  while (stop > start && header.charCodeAt(stop - 1) === 32) stop--
89
- const eq = header.indexOf("=", start)
92
+ if (eq !== -1 && eq < start) eq = header.indexOf("=", start)
90
93
  if (eq > start && eq < stop) {
91
94
  // name: trim trailing spaces before '='; value: trim leading spaces after it
92
95
  let nameEnd = eq
@@ -125,6 +128,8 @@ export function hasDuplicateCookie(header: string | null | undefined, targetName
125
128
  let found = false
126
129
  const len = header.length
127
130
  let pos = 0
131
+ // Kept across segments as in parseCookies.
132
+ let eq = header.indexOf("=")
128
133
  while (pos < len) {
129
134
  let end = header.indexOf(";", pos)
130
135
  if (end === -1) end = len
@@ -132,7 +137,7 @@ export function hasDuplicateCookie(header: string | null | undefined, targetName
132
137
  while (start < end && header.charCodeAt(start) === 32) start++
133
138
  let stop = end
134
139
  while (stop > start && header.charCodeAt(stop - 1) === 32) stop--
135
- const eq = header.indexOf("=", start)
140
+ if (eq !== -1 && eq < start) eq = header.indexOf("=", start)
136
141
  if (eq > start && eq < stop) {
137
142
  let nameEnd = eq
138
143
  while (nameEnd > start && header.charCodeAt(nameEnd - 1) === 32) nameEnd--
@@ -23,7 +23,7 @@ if (!copies.includes(here) && copies.push(here) > 1) {
23
23
 
24
24
  /** This copy's version: a literal like the package root's `VERSION` (no fs on the edge), which
25
25
  * `scripts/version.ts` rewrites on every release and `check:publish` asserts. */
26
- const COPY_VERSION = "5.4.0"
26
+ const COPY_VERSION = "5.5.0"
27
27
 
28
28
  /** Record this copy's version beside its URL. Called by each `server()` behind the development guard,
29
29
  * so a production bundle drops it with the version; a copy that built a server has recorded one. */