lumen-framework 3.1.1 → 4.0.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 (258) hide show
  1. package/README.md +75 -109
  2. package/bin/lumen +23 -41
  3. package/dist/cli.cjs +856 -479
  4. package/dist/cli.cjs.map +4 -4
  5. package/dist/index.js +3273 -1719
  6. package/dist/index.js.map +4 -4
  7. package/dist/index.mjs +3251 -1697
  8. package/dist/index.mjs.map +4 -4
  9. package/dist/testing.js +280 -0
  10. package/dist/testing.js.map +7 -0
  11. package/dist/testing.mjs +252 -0
  12. package/dist/testing.mjs.map +7 -0
  13. package/dist/types/errors/links-only-error.d.ts +13 -0
  14. package/dist/types/errors/reserved-field-name-error.d.ts +13 -0
  15. package/dist/types/errors/unknown-attribute-error.d.ts +13 -0
  16. package/dist/types/index.d.ts +14 -0
  17. package/dist/types/interfaces.d.ts +1 -1
  18. package/dist/types/packages/application/index.d.ts +38 -45
  19. package/dist/types/packages/application/initialize.d.ts +3 -5
  20. package/dist/types/packages/application/interfaces.d.ts +13 -5
  21. package/dist/types/packages/application/utils/create-controller.d.ts +14 -4
  22. package/dist/types/packages/application/utils/create-serializer.d.ts +2 -2
  23. package/dist/types/packages/application/utils/normalize-port.d.ts +1 -3
  24. package/dist/types/packages/application/utils/resolve-visibility.d.ts +15 -0
  25. package/dist/types/packages/application/utils/restrict-open-namespaces.d.ts +19 -0
  26. package/dist/types/packages/application/utils/validate-attributes.d.ts +17 -0
  27. package/dist/types/packages/application/utils/validate-links-only.d.ts +19 -0
  28. package/dist/types/packages/application/utils/validate-namespaced-serializers.d.ts +3 -3
  29. package/dist/types/packages/application/utils/validate-reserved-names.d.ts +12 -0
  30. package/dist/types/packages/application/utils/warn-query-param-names.d.ts +10 -0
  31. package/dist/types/packages/cli/commands/dbcreate.d.ts +1 -1
  32. package/dist/types/packages/cli/commands/dbdrop.d.ts +1 -1
  33. package/dist/types/packages/cli/commands/destroy.d.ts +3 -2
  34. package/dist/types/packages/cli/commands/generate.d.ts +5 -5
  35. package/dist/types/packages/cli/commands/index.d.ts +0 -1
  36. package/dist/types/packages/cli/generator/index.d.ts +6 -6
  37. package/dist/types/packages/cli/generator/interfaces.d.ts +3 -3
  38. package/dist/types/packages/cli/generator/utils/create-generator.d.ts +2 -2
  39. package/dist/types/packages/cli/generator/utils/generate-type.d.ts +9 -9
  40. package/dist/types/packages/cli/generator/utils/migration-conflict.d.ts +4 -4
  41. package/dist/types/packages/cli/templates/pnpm-workspace.d.ts +15 -0
  42. package/dist/types/packages/cli/utils/create-spinner.d.ts +14 -0
  43. package/dist/types/packages/cli/utils/print-statements.d.ts +12 -0
  44. package/dist/types/packages/cli/utils/server-database.d.ts +27 -0
  45. package/dist/types/packages/compiler/interfaces.d.ts +1 -1
  46. package/dist/types/packages/config/interfaces.d.ts +10 -4
  47. package/dist/types/packages/controller/constants.d.ts +7 -2
  48. package/dist/types/packages/controller/errors/related-record-not-found-error.d.ts +4 -4
  49. package/dist/types/packages/controller/index.d.ts +364 -473
  50. package/dist/types/packages/controller/interfaces.d.ts +21 -6
  51. package/dist/types/packages/controller/utils/find-many.d.ts +2 -5
  52. package/dist/types/packages/controller/utils/find-one.d.ts +2 -5
  53. package/dist/types/packages/controller/utils/params-to-query.d.ts +8 -10
  54. package/dist/types/packages/controller/utils/resolve-relationships.d.ts +1 -3
  55. package/dist/types/packages/controller/utils/validate-relationships.d.ts +5 -3
  56. package/dist/types/packages/controller/visibility/errors.d.ts +21 -0
  57. package/dist/types/packages/controller/visibility/index.d.ts +51 -0
  58. package/dist/types/packages/database/attribute/index.d.ts +4 -6
  59. package/dist/types/packages/database/attribute/interfaces.d.ts +1 -1
  60. package/dist/types/packages/database/attribute/utils/create-attribute.d.ts +3 -5
  61. package/dist/types/packages/database/attribute/utils/create-getter.d.ts +2 -2
  62. package/dist/types/packages/database/attribute/utils/create-setter.d.ts +3 -5
  63. package/dist/types/packages/database/constants.d.ts +1 -0
  64. package/dist/types/packages/database/errors/index.d.ts +1 -0
  65. package/dist/types/packages/database/errors/invalid-driver-error.d.ts +1 -3
  66. package/dist/types/packages/database/errors/migrations-pending-error.d.ts +1 -3
  67. package/dist/types/packages/database/errors/model-missing-error.d.ts +1 -3
  68. package/dist/types/packages/database/errors/relationship-config-error.d.ts +10 -0
  69. package/dist/types/packages/database/errors/unique-constraint-error.d.ts +1 -1
  70. package/dist/types/packages/database/index.d.ts +9 -6
  71. package/dist/types/packages/database/initialize.d.ts +3 -5
  72. package/dist/types/packages/database/interfaces.d.ts +115 -25
  73. package/dist/types/packages/database/migration/index.d.ts +5 -7
  74. package/dist/types/packages/database/migration/interfaces.d.ts +2 -4
  75. package/dist/types/packages/database/migration/utils/generate-timestamp.d.ts +9 -1
  76. package/dist/types/packages/database/model/index.d.ts +348 -759
  77. package/dist/types/packages/database/model/initialize-class.d.ts +7 -1
  78. package/dist/types/packages/database/model/interfaces.d.ts +30 -12
  79. package/dist/types/packages/database/model/utils/attribute.d.ts +14 -0
  80. package/dist/types/packages/database/model/utils/get-columns.d.ts +1 -3
  81. package/dist/types/packages/database/model/utils/persistence.d.ts +5 -14
  82. package/dist/types/packages/database/model/utils/process-write-error.d.ts +2 -2
  83. package/dist/types/packages/database/model/utils/run-hooks.d.ts +7 -3
  84. package/dist/types/packages/database/model/utils/validate.d.ts +4 -1
  85. package/dist/types/packages/database/query/errors/record-not-found-error.d.ts +1 -1
  86. package/dist/types/packages/database/query/index.d.ts +179 -3
  87. package/dist/types/packages/database/query/runner/index.d.ts +1 -3
  88. package/dist/types/packages/database/query/runner/utils/build-results.d.ts +3 -4
  89. package/dist/types/packages/database/query/utils/format-select.d.ts +1 -3
  90. package/dist/types/packages/database/relationship/index.d.ts +7 -6
  91. package/dist/types/packages/database/relationship/interfaces.d.ts +16 -3
  92. package/dist/types/packages/database/relationship/utils/getters.d.ts +7 -13
  93. package/dist/types/packages/database/relationship/utils/inverse-setters.d.ts +5 -9
  94. package/dist/types/packages/database/relationship/utils/setters.d.ts +7 -13
  95. package/dist/types/packages/database/relationship/utils/unassociate.d.ts +1 -3
  96. package/dist/types/packages/database/relationship/utils/update-relationship.d.ts +6 -2
  97. package/dist/types/packages/database/transaction/index.d.ts +9 -10
  98. package/dist/types/packages/database/transaction/interfaces.d.ts +7 -1
  99. package/dist/types/packages/database/utils/connect.d.ts +16 -3
  100. package/dist/types/packages/database/utils/create-migrations.d.ts +1 -3
  101. package/dist/types/packages/database/utils/normalize-model-name.d.ts +1 -3
  102. package/dist/types/packages/database/utils/pending-migrations.d.ts +1 -3
  103. package/dist/types/packages/database/utils/primary-key-type.d.ts +10 -0
  104. package/dist/types/packages/database/utils/type-for-column.d.ts +3 -5
  105. package/dist/types/packages/database/utils/validate-relationships.d.ts +13 -0
  106. package/dist/types/packages/database/validation/errors/validation-error.d.ts +4 -4
  107. package/dist/types/packages/database/validation/index.d.ts +3 -5
  108. package/dist/types/packages/database/validation/interfaces.d.ts +1 -1
  109. package/dist/types/packages/freezeable/map/index.d.ts +1 -3
  110. package/dist/types/packages/freezeable/set/index.d.ts +1 -3
  111. package/dist/types/packages/freezeable/utils/freeze.d.ts +5 -15
  112. package/dist/types/packages/freezeable/utils/is-frozen.d.ts +1 -3
  113. package/dist/types/packages/fs/index.d.ts +7 -7
  114. package/dist/types/packages/fs/interfaces.d.ts +4 -4
  115. package/dist/types/packages/fs/utils/parse-path.d.ts +2 -2
  116. package/dist/types/packages/fs/watcher/interfaces.d.ts +1 -1
  117. package/dist/types/packages/jsonapi/errors/invalid-content-type-error.d.ts +3 -5
  118. package/dist/types/packages/jsonapi/errors/not-acceptable-error.d.ts +2 -4
  119. package/dist/types/packages/jsonapi/errors/unsupported-media-type-error.d.ts +2 -4
  120. package/dist/types/packages/jsonapi/index.d.ts +1 -1
  121. package/dist/types/packages/jsonapi/interfaces.d.ts +47 -36
  122. package/dist/types/packages/jsonapi/utils/has-media-type-params.d.ts +1 -1
  123. package/dist/types/packages/jsonapi/utils/is-jsonapi.d.ts +1 -1
  124. package/dist/types/packages/jsonapi/utils/media-type.d.ts +2 -2
  125. package/dist/types/packages/loader/builder/index.d.ts +3 -3
  126. package/dist/types/packages/loader/builder/interfaces.d.ts +7 -7
  127. package/dist/types/packages/loader/builder/utils/create-children-builder.d.ts +2 -2
  128. package/dist/types/packages/loader/builder/utils/create-parent-builder.d.ts +9 -2
  129. package/dist/types/packages/loader/builder/utils/sort-by-namespace.d.ts +2 -2
  130. package/dist/types/packages/loader/index.d.ts +1 -1
  131. package/dist/types/packages/loader/interfaces.d.ts +2 -2
  132. package/dist/types/packages/loader/resolver/index.d.ts +2 -2
  133. package/dist/types/packages/loader/resolver/utils/closest-ancestor.d.ts +2 -2
  134. package/dist/types/packages/loader/resolver/utils/closest-child.d.ts +2 -2
  135. package/dist/types/packages/logger/constants.d.ts +3 -3
  136. package/dist/types/packages/logger/errors/invalid-config-error.d.ts +5 -0
  137. package/dist/types/packages/logger/index.d.ts +65 -142
  138. package/dist/types/packages/logger/interfaces.d.ts +52 -10
  139. package/dist/types/packages/logger/request-logger/index.d.ts +3 -5
  140. package/dist/types/packages/logger/request-logger/interfaces.d.ts +5 -5
  141. package/dist/types/packages/logger/request-logger/templates.d.ts +5 -9
  142. package/dist/types/packages/logger/request-logger/utils/filter-params.d.ts +6 -1
  143. package/dist/types/packages/logger/request-logger/utils/log-json.d.ts +2 -4
  144. package/dist/types/packages/logger/request-logger/utils/log-text.d.ts +1 -3
  145. package/dist/types/packages/logger/request-logger/utils/params-for.d.ts +9 -0
  146. package/dist/types/packages/logger/utils/error-name.d.ts +7 -0
  147. package/dist/types/packages/logger/utils/line.d.ts +1 -3
  148. package/dist/types/packages/logger/writer/constants.d.ts +0 -1
  149. package/dist/types/packages/logger/writer/index.d.ts +6 -6
  150. package/dist/types/packages/logger/writer/interfaces.d.ts +2 -2
  151. package/dist/types/packages/logger/writer/utils/format-message.d.ts +2 -2
  152. package/dist/types/packages/lumenify/index.d.ts +20 -5
  153. package/dist/types/packages/lumenify/utils/create-response-proxy.d.ts +1 -1
  154. package/dist/types/packages/pm/cluster/index.d.ts +56 -7
  155. package/dist/types/packages/pm/cluster/interfaces.d.ts +2 -1
  156. package/dist/types/packages/pm/index.d.ts +2 -2
  157. package/dist/types/packages/router/definitions/context/index.d.ts +5 -7
  158. package/dist/types/packages/router/definitions/context/utils/create-definition-group.d.ts +3 -5
  159. package/dist/types/packages/router/definitions/context/utils/create-definition.d.ts +11 -6
  160. package/dist/types/packages/router/definitions/context/utils/normalize-resource-args.d.ts +4 -5
  161. package/dist/types/packages/router/definitions/index.d.ts +5 -9
  162. package/dist/types/packages/router/definitions/interfaces.d.ts +4 -4
  163. package/dist/types/packages/router/index.d.ts +23 -11
  164. package/dist/types/packages/router/interfaces.d.ts +4 -4
  165. package/dist/types/packages/router/namespace/index.d.ts +7 -9
  166. package/dist/types/packages/router/namespace/interfaces.d.ts +3 -3
  167. package/dist/types/packages/router/namespace/utils/normalize-name.d.ts +1 -3
  168. package/dist/types/packages/router/namespace/utils/normalize-path.d.ts +1 -3
  169. package/dist/types/packages/router/resource/index.d.ts +7 -8
  170. package/dist/types/packages/router/resource/interfaces.d.ts +12 -4
  171. package/dist/types/packages/router/resource/utils/normalize-only.d.ts +3 -5
  172. package/dist/types/packages/router/route/action/enhancers/resource.d.ts +1 -3
  173. package/dist/types/packages/router/route/action/enhancers/track-perf.d.ts +1 -3
  174. package/dist/types/packages/router/route/action/index.d.ts +7 -2
  175. package/dist/types/packages/router/route/action/interfaces.d.ts +4 -0
  176. package/dist/types/packages/router/route/action/utils/create-page-links.d.ts +21 -5
  177. package/dist/types/packages/router/route/action/utils/get-action-name.d.ts +1 -3
  178. package/dist/types/packages/router/route/action/utils/get-controller-name.d.ts +1 -3
  179. package/dist/types/packages/router/route/index.d.ts +13 -9
  180. package/dist/types/packages/router/route/interfaces.d.ts +7 -5
  181. package/dist/types/packages/router/route/params/errors/client-generated-id-error.d.ts +4 -4
  182. package/dist/types/packages/router/route/params/errors/forbidden-parameter-error.d.ts +4 -4
  183. package/dist/types/packages/router/route/params/errors/index.d.ts +1 -0
  184. package/dist/types/packages/router/route/params/errors/invalid-parameter-error.d.ts +4 -6
  185. package/dist/types/packages/router/route/params/errors/parameter-not-nullable-error.d.ts +4 -6
  186. package/dist/types/packages/router/route/params/errors/parameter-range-error.d.ts +9 -0
  187. package/dist/types/packages/router/route/params/errors/parameter-required-error.d.ts +4 -6
  188. package/dist/types/packages/router/route/params/errors/parameter-type-error.d.ts +4 -6
  189. package/dist/types/packages/router/route/params/errors/parameter-value-error.d.ts +4 -6
  190. package/dist/types/packages/router/route/params/errors/resource-mismatch-error.d.ts +4 -6
  191. package/dist/types/packages/router/route/params/index.d.ts +5 -9
  192. package/dist/types/packages/router/route/params/interfaces.d.ts +12 -8
  193. package/dist/types/packages/router/route/params/parameter/forbidden-parameter.d.ts +1 -1
  194. package/dist/types/packages/router/route/params/parameter/ignored-parameter.d.ts +14 -0
  195. package/dist/types/packages/router/route/params/parameter/index.d.ts +21 -5
  196. package/dist/types/packages/router/route/params/parameter/interfaces.d.ts +2 -2
  197. package/dist/types/packages/router/route/params/parameter/utils/validate-range.d.ts +3 -0
  198. package/dist/types/packages/router/route/params/parameter/utils/validate-value.d.ts +1 -3
  199. package/dist/types/packages/router/route/params/parameter-group/index.d.ts +3 -5
  200. package/dist/types/packages/router/route/params/parameter-group/utils/missing-params.d.ts +8 -0
  201. package/dist/types/packages/router/route/params/utils/get-data-params.d.ts +5 -1
  202. package/dist/types/packages/router/route/params/utils/get-default-collection-params.d.ts +1 -3
  203. package/dist/types/packages/router/route/params/utils/get-default-member-params.d.ts +5 -2
  204. package/dist/types/packages/router/route/params/utils/get-query-params.d.ts +3 -9
  205. package/dist/types/packages/router/route/params/utils/get-url-params.d.ts +1 -3
  206. package/dist/types/packages/router/route/params/utils/parse-column-value.d.ts +16 -0
  207. package/dist/types/packages/router/route/params/utils/validate-client-id.d.ts +1 -1
  208. package/dist/types/packages/router/route/params/utils/validate-resource-id.d.ts +1 -3
  209. package/dist/types/packages/router/route/params/utils/validate-type.d.ts +3 -5
  210. package/dist/types/packages/router/route/utils/get-dynamic-segments.d.ts +1 -3
  211. package/dist/types/packages/router/route/utils/get-static-path.d.ts +6 -2
  212. package/dist/types/packages/router/utils/create-replacer.d.ts +10 -2
  213. package/dist/types/packages/serializer/index.d.ts +243 -434
  214. package/dist/types/packages/serializer/interfaces.d.ts +19 -1
  215. package/dist/types/packages/serializer/utils/include-tree.d.ts +12 -3
  216. package/dist/types/packages/serializer/utils/load-linkage.d.ts +9 -3
  217. package/dist/types/packages/server/errors/error-list.d.ts +25 -0
  218. package/dist/types/packages/server/errors/method-not-allowed-error.d.ts +11 -0
  219. package/dist/types/packages/server/index.d.ts +9 -9
  220. package/dist/types/packages/server/interfaces.d.ts +59 -7
  221. package/dist/types/packages/server/request/constants.d.ts +2 -2
  222. package/dist/types/packages/server/request/index.d.ts +3 -5
  223. package/dist/types/packages/server/request/interfaces.d.ts +72 -8
  224. package/dist/types/packages/server/request/parser/errors/malformed-request-error.d.ts +3 -5
  225. package/dist/types/packages/server/request/parser/index.d.ts +6 -1
  226. package/dist/types/packages/server/request/parser/utils/format.d.ts +13 -11
  227. package/dist/types/packages/server/request/parser/utils/normalize-document.d.ts +13 -0
  228. package/dist/types/packages/server/request/parser/utils/parse-nested-object.d.ts +1 -3
  229. package/dist/types/packages/server/request/parser/utils/parse-read.d.ts +2 -4
  230. package/dist/types/packages/server/request/parser/utils/parse-write.d.ts +17 -1
  231. package/dist/types/packages/server/request/utils/get-domain.d.ts +1 -3
  232. package/dist/types/packages/server/responder/index.d.ts +1 -3
  233. package/dist/types/packages/server/responder/utils/content-type-for.d.ts +8 -0
  234. package/dist/types/packages/server/responder/utils/data-for.d.ts +3 -5
  235. package/dist/types/packages/server/responder/utils/normalize.d.ts +2 -3
  236. package/dist/types/packages/server/response/index.d.ts +3 -5
  237. package/dist/types/packages/server/response/interfaces.d.ts +14 -3
  238. package/dist/types/packages/server/utils/client-ip-for.d.ts +10 -0
  239. package/dist/types/packages/server/utils/create-server-error.d.ts +11 -3
  240. package/dist/types/packages/server/utils/request-id-for.d.ts +9 -0
  241. package/dist/types/packages/server/utils/set-cors-headers.d.ts +2 -2
  242. package/dist/types/packages/server/utils/source-for.d.ts +19 -3
  243. package/dist/types/packages/server/utils/status-for-error.d.ts +6 -0
  244. package/dist/types/packages/server/utils/validate-accept.d.ts +1 -1
  245. package/dist/types/packages/server/utils/validate-content-type.d.ts +8 -3
  246. package/dist/types/packages/testing/audit-visibility.d.ts +189 -0
  247. package/dist/types/packages/testing/index.d.ts +4 -0
  248. package/dist/types/packages/testing/start-app.d.ts +52 -0
  249. package/dist/types/packages/testing/utils/identifiers-in.d.ts +14 -0
  250. package/dist/types/testing.d.ts +9 -0
  251. package/dist/types/utils/chalk.d.ts +16 -0
  252. package/dist/types/utils/pick.d.ts +2 -2
  253. package/package.json +54 -26
  254. package/dist/types/packages/cli/commands/test.d.ts +0 -4
  255. package/dist/types/packages/logger/utils/sql.d.ts +0 -4
  256. package/dist/types/packages/router/route/params/parameter-group/utils/has-required-params.d.ts +0 -5
  257. package/dist/types/utils/create-query-string.d.ts +0 -6
  258. package/dist/types/utils/has-own-property.d.ts +0 -1
@@ -0,0 +1,14 @@
1
+ import Parameter from './index';
2
+ /**
3
+ * A member the resource has but the controller does not accept (e.g. a
4
+ * read-only `createdAt`). It is dropped from the validated params instead of
5
+ * being rejected, so clients that send whole resources back — ember-data
6
+ * serializes every attribute — keep working. A member the resource does not
7
+ * have at all is still a 400. See nickschot/lux#47.
8
+ *
9
+ * @internal
10
+ */
11
+ declare class IgnoredParameter extends Parameter {
12
+ constructor(path: string);
13
+ }
14
+ export default IgnoredParameter;
@@ -1,8 +1,7 @@
1
1
  import { FreezeableSet } from '../../../../freezeable';
2
- import type { Parameter$opts } from './interfaces';
3
- /**
4
- * @private
5
- */
2
+ import type { ParameterOptions } from './interfaces';
3
+ import type { ParameterLike } from '../interfaces';
4
+ /** @internal */
6
5
  declare class Parameter extends FreezeableSet<unknown> {
7
6
  path: string;
8
7
  type: string;
@@ -16,7 +15,24 @@ declare class Parameter extends FreezeableSet<unknown> {
16
15
  * serializer without relationships, where JSON:API requires a 400.)
17
16
  */
18
17
  restricted: boolean;
19
- constructor({ path, type, values, required, sanitize }: Parameter$opts);
18
+ /**
19
+ * Inclusive bounds of a `number` parameter, when given.
20
+ */
21
+ min?: number;
22
+ max?: number;
23
+ /**
24
+ * Converts a value as the client sent it into the parameter's type before
25
+ * it is validated (e.g. a JSON:API string id into a numeric primary key),
26
+ * when given. Values it does not recognize are returned as is, and so fail
27
+ * validation.
28
+ */
29
+ parse?: (value: unknown) => unknown;
30
+ /**
31
+ * For an `array` parameter, builds the parameter each element is validated
32
+ * with, given the element's path (`data.relationships.tags.data.0`).
33
+ */
34
+ items?: (path: string) => ParameterLike;
35
+ constructor({ path, type, values, min, max, parse, items, required, sanitize }: ParameterOptions);
20
36
  validate<V>(value: V): V;
21
37
  }
22
38
  export default Parameter;
@@ -1,4 +1,4 @@
1
- import type { ParameterLike$opts } from '../index';
2
- export type Parameter$opts = ParameterLike$opts & {
1
+ import type { ParameterLikeOptions } from '../index';
2
+ export type ParameterOptions = ParameterLikeOptions & {
3
3
  values?: Array<unknown>;
4
4
  };
@@ -0,0 +1,3 @@
1
+ import type Parameter from '../index';
2
+ /** @internal */
3
+ export default function validateRange(param: Parameter, value: unknown): true;
@@ -1,5 +1,3 @@
1
1
  import type Parameter from '../index';
2
- /**
3
- * @private
4
- */
2
+ /** @internal */
5
3
  export default function validateValue<V>(param: Parameter, value: V): V;
@@ -1,14 +1,12 @@
1
1
  import { FreezeableMap } from '../../../../freezeable';
2
- import type { ParameterLike, ParameterLike$opts } from '../index';
3
- /**
4
- * @private
5
- */
2
+ import type { ParameterLike, ParameterLikeOptions } from '../index';
3
+ /** @internal */
6
4
  declare class ParameterGroup extends FreezeableMap<string, ParameterLike> {
7
5
  type: string;
8
6
  path: string;
9
7
  required: boolean;
10
8
  sanitize: boolean;
11
- constructor(contents: Array<[string, ParameterLike]>, { path, required, sanitize }: ParameterLike$opts);
9
+ constructor(contents: Array<[string, ParameterLike]>, { path, required, sanitize }: ParameterLikeOptions);
12
10
  validate<V>(params: V): V;
13
11
  }
14
12
  export default ParameterGroup;
@@ -0,0 +1,8 @@
1
+ import type { ServerError } from '../../../../../server';
2
+ import type ParameterGroup from '../index';
3
+ /**
4
+ * An error for each required member of `group` that `params` lacks.
5
+ *
6
+ * @internal
7
+ */
8
+ export default function missingParams(group: ParameterGroup, params: Record<string, unknown>): Array<ServerError>;
@@ -1,6 +1,10 @@
1
1
  import type Controller from '../../../../controller';
2
2
  import type { ParameterLike } from '../interfaces';
3
3
  /**
4
- * @private
4
+ * The top level members of a request document besides `data`.
5
+ *
6
+ * @internal
5
7
  */
8
+ export declare function getDocumentParams(): Array<[string, ParameterLike]>;
9
+ /** @internal */
6
10
  export default function getDataParams(controller: Controller, method: 'PATCH' | 'POST', includeID: boolean): [string, ParameterLike];
@@ -1,6 +1,4 @@
1
1
  import type Controller from '../../../../controller';
2
- /**
3
- * @private
4
- */
2
+ /** @internal */
5
3
  declare function getDefaultCollectionParams(controller: Controller): Record<string, unknown>;
6
4
  export default getDefaultCollectionParams;
@@ -1,5 +1,8 @@
1
1
  import type Controller from '../../../../controller';
2
2
  /**
3
- * @private
3
+ * Without a fieldset, primary data loads every attribute its Serializer
4
+ * declares. Other types need no default: an absent fieldset means all fields.
5
+ *
6
+ * @internal
4
7
  */
5
- export default function getDefaultMemberParams({ model, serializer: { hasOne, hasMany, attributes } }: Controller): Record<string, unknown>;
8
+ export default function getDefaultMemberParams({ model, serializer: { attributes } }: Controller): Record<string, unknown>;
@@ -1,14 +1,8 @@
1
1
  import type Controller from '../../../../controller';
2
2
  import type { ParameterLike } from '../interfaces';
3
- /**
4
- * @private
5
- */
3
+ /** @internal */
6
4
  export declare function getCustomParams({ query }: Controller): Array<[string, ParameterLike]>;
7
- /**
8
- * @private
9
- */
5
+ /** @internal */
10
6
  export declare function getMemberQueryParams(controller: Controller): Array<[string, ParameterLike]>;
11
- /**
12
- * @private
13
- */
7
+ /** @internal */
14
8
  export declare function getCollectionQueryParams(controller: Controller): Array<[string, ParameterLike]>;
@@ -1,5 +1,3 @@
1
1
  import type { ParameterLike } from '../interfaces';
2
- /**
3
- * @private
4
- */
2
+ /** @internal */
5
3
  export default function getURLParams(dynamicSegments: Array<string>): Array<[string, ParameterLike]>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Parse an id from a request document. JSON:API ids are strings, so a numeric
3
+ * primary key takes the number a string of digits spells; anything else is
4
+ * returned as is (a number still passes, for lenient clients).
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function parseId(type: string | undefined): (value: unknown) => unknown;
9
+ /**
10
+ * The parser for attribute values written to a column of `type`, if it needs
11
+ * one. JSON has no dates, so a date column takes an ISO 8601 string; every
12
+ * other value is typed by JSON already and is validated as sent.
13
+ *
14
+ * @internal
15
+ */
16
+ export declare function parserFor(type: string | undefined): ((value: unknown) => unknown) | undefined;
@@ -3,6 +3,6 @@
3
3
  * is answered with 403 (unsupported client-generated ID) rather than the 400
4
4
  * an unknown member gets.
5
5
  *
6
- * @private
6
+ * @internal
7
7
  */
8
8
  export default function validateClientId(params: Record<string, unknown>): boolean;
@@ -1,5 +1,3 @@
1
1
  import type { Request } from '../../../../server';
2
- /**
3
- * @private
4
- */
2
+ /** @internal */
5
3
  export default function validateResourceId({ params: { id, data: { id: resourceId } } }: Request): true;
@@ -1,5 +1,3 @@
1
- import type { Parameter, ParameterGroup } from '../index';
2
- /**
3
- * @private
4
- */
5
- export default function validateType(param: Parameter | ParameterGroup, value: unknown): true;
1
+ import type { ParameterLike } from '../index';
2
+ /** @internal */
3
+ export default function validateType(param: ParameterLike, value: unknown): true;
@@ -1,4 +1,2 @@
1
- /**
2
- * @private
3
- */
1
+ /** @internal */
4
2
  export default function getDynamicSegments(path: string): Array<string>;
@@ -1,4 +1,8 @@
1
1
  /**
2
- * @private
2
+ * The route key path of `path`: each dynamic segment (`:id`) becomes
3
+ * `:dynamic`, the form `Router#resolve()` turns request paths into. Only whole
4
+ * segments are replaced — `/videos/:id` is `/videos/:dynamic`.
5
+ *
6
+ * @internal
3
7
  */
4
- export default function getStaticPath(path: string, dynamicSegments: Array<string>): string;
8
+ export default function getStaticPath(path: string): string;
@@ -1,5 +1,13 @@
1
1
  import type Controller from '../../controller';
2
+ export type Replacer = (pathname: string) => {
3
+ staticPath: string;
4
+ params: Array<string>;
5
+ };
2
6
  /**
3
- * @private
7
+ * Build the function that finds the ids in a request path: the segment after
8
+ * a resource name. An id must be an integer unless the resource's primary key
9
+ * is not numeric (e.g. a uuid), in which case any segment is one.
10
+ *
11
+ * @internal
4
12
  */
5
- export default function createReplacer(controllers: Map<string, Controller>): RegExp;
13
+ export default function createReplacer(controllers: Map<string, Controller>): Replacer;