@rvoh/dream 2.35.0 → 2.36.1

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 (302) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/src/Dream.js +260 -55
  3. package/dist/cjs/src/bin/index.js +13 -0
  4. package/dist/cjs/src/cli/index.js +28 -17
  5. package/dist/cjs/src/db/migration-helpers/DreamMigrationHelpers.js +23 -21
  6. package/dist/cjs/src/decorators/Decorators.js +26 -4
  7. package/dist/cjs/src/decorators/field/Encrypted.js +35 -6
  8. package/dist/cjs/src/dream/DreamClassTransactionBuilder.js +6 -6
  9. package/dist/cjs/src/dream/DreamInstanceTransactionBuilder.js +63 -27
  10. package/dist/cjs/src/dream/LeftJoinLoadBuilder.js +3 -3
  11. package/dist/cjs/src/dream/LoadBuilder.js +1 -1
  12. package/dist/cjs/src/dream/Query.js +542 -167
  13. package/dist/cjs/src/dream/QueryDriver/Base.js +72 -0
  14. package/dist/cjs/src/dream/QueryDriver/Kysely.js +216 -50
  15. package/dist/cjs/src/dream/internal/associations/assertRecognizedAssociationConditionKeys.js +48 -0
  16. package/dist/cjs/src/dream/internal/associations/associationQuery.js +4 -0
  17. package/dist/cjs/src/dream/internal/reload.js +6 -1
  18. package/dist/cjs/src/dream/internal/saveDream.js +8 -2
  19. package/dist/cjs/src/dream/internal/sqlResultToDreamInstance.js +2 -0
  20. package/dist/cjs/src/dream/internal/undestroyDream.js +1 -1
  21. package/dist/cjs/src/dream-app/index.js +38 -0
  22. package/dist/cjs/src/encrypt/InternalEncrypt.js +77 -4
  23. package/dist/cjs/src/encrypt/defaultEncryptedColumnName.js +10 -0
  24. package/dist/cjs/src/encrypt/index.js +76 -9
  25. package/dist/cjs/src/errors/DoNotSetEncryptedFieldsDirectly.js +4 -0
  26. package/dist/cjs/src/errors/associations/UnrecognizedAssociationConditionKeys.js +25 -0
  27. package/dist/cjs/src/helpers/Env.js +28 -0
  28. package/dist/cjs/src/helpers/cli/generateDreamContent.js +2 -1
  29. package/dist/cjs/src/helpers/cli/generateFactoryContent.js +1 -1
  30. package/dist/cjs/src/helpers/cli/generateMigrationContent.js +9 -9
  31. package/dist/cjs/src/helpers/cli/generateSerializerContent.js +21 -8
  32. package/dist/cjs/src/serializer/SerializerRenderer.js +65 -13
  33. package/dist/cjs/src/serializer/builders/DreamSerializerBuilder.js +54 -38
  34. package/dist/cjs/src/serializer/builders/ObjectSerializerBuilder.js +34 -14
  35. package/dist/cjs/src/serializer/helpers/serializersForAssociatedClass.js +43 -0
  36. package/dist/esm/src/Dream.js +260 -55
  37. package/dist/esm/src/bin/index.js +13 -0
  38. package/dist/esm/src/cli/index.js +28 -17
  39. package/dist/esm/src/db/migration-helpers/DreamMigrationHelpers.js +23 -21
  40. package/dist/esm/src/decorators/Decorators.js +26 -4
  41. package/dist/esm/src/decorators/field/Encrypted.js +35 -6
  42. package/dist/esm/src/dream/DreamClassTransactionBuilder.js +6 -6
  43. package/dist/esm/src/dream/DreamInstanceTransactionBuilder.js +63 -27
  44. package/dist/esm/src/dream/LeftJoinLoadBuilder.js +3 -3
  45. package/dist/esm/src/dream/LoadBuilder.js +1 -1
  46. package/dist/esm/src/dream/Query.js +542 -167
  47. package/dist/esm/src/dream/QueryDriver/Base.js +72 -0
  48. package/dist/esm/src/dream/QueryDriver/Kysely.js +216 -50
  49. package/dist/esm/src/dream/internal/associations/assertRecognizedAssociationConditionKeys.js +48 -0
  50. package/dist/esm/src/dream/internal/associations/associationQuery.js +4 -0
  51. package/dist/esm/src/dream/internal/reload.js +6 -1
  52. package/dist/esm/src/dream/internal/saveDream.js +8 -2
  53. package/dist/esm/src/dream/internal/sqlResultToDreamInstance.js +2 -0
  54. package/dist/esm/src/dream/internal/undestroyDream.js +1 -1
  55. package/dist/esm/src/dream-app/index.js +38 -0
  56. package/dist/esm/src/encrypt/InternalEncrypt.js +77 -4
  57. package/dist/esm/src/encrypt/defaultEncryptedColumnName.js +10 -0
  58. package/dist/esm/src/encrypt/index.js +76 -9
  59. package/dist/esm/src/errors/DoNotSetEncryptedFieldsDirectly.js +4 -0
  60. package/dist/esm/src/errors/associations/UnrecognizedAssociationConditionKeys.js +25 -0
  61. package/dist/esm/src/helpers/Env.js +28 -0
  62. package/dist/esm/src/helpers/cli/generateDreamContent.js +2 -1
  63. package/dist/esm/src/helpers/cli/generateFactoryContent.js +1 -1
  64. package/dist/esm/src/helpers/cli/generateMigrationContent.js +9 -9
  65. package/dist/esm/src/helpers/cli/generateSerializerContent.js +21 -8
  66. package/dist/esm/src/serializer/SerializerRenderer.js +65 -13
  67. package/dist/esm/src/serializer/builders/DreamSerializerBuilder.js +54 -38
  68. package/dist/esm/src/serializer/builders/ObjectSerializerBuilder.js +34 -14
  69. package/dist/esm/src/serializer/helpers/serializersForAssociatedClass.js +43 -0
  70. package/dist/types/src/Dream.d.ts +208 -42
  71. package/dist/types/src/bin/index.d.ts +7 -1
  72. package/dist/types/src/cli/index.d.ts +13 -0
  73. package/dist/types/src/db/migration-helpers/DreamMigrationHelpers.d.ts +2 -2
  74. package/dist/types/src/decorators/Decorators.d.ts +26 -3
  75. package/dist/types/src/decorators/field/Encrypted.d.ts +6 -1
  76. package/dist/types/src/dream/DreamClassTransactionBuilder.d.ts +9 -9
  77. package/dist/types/src/dream/DreamInstanceTransactionBuilder.d.ts +52 -25
  78. package/dist/types/src/dream/LeftJoinLoadBuilder.d.ts +4 -4
  79. package/dist/types/src/dream/LoadBuilder.d.ts +1 -1
  80. package/dist/types/src/dream/Query.d.ts +272 -33
  81. package/dist/types/src/dream/QueryDriver/Base.d.ts +63 -1
  82. package/dist/types/src/dream/QueryDriver/Kysely.d.ts +85 -1
  83. package/dist/types/src/dream/internal/associations/assertRecognizedAssociationConditionKeys.d.ts +29 -0
  84. package/dist/types/src/dream-app/index.d.ts +56 -2
  85. package/dist/types/src/encrypt/InternalEncrypt.d.ts +29 -1
  86. package/dist/types/src/encrypt/defaultEncryptedColumnName.d.ts +7 -0
  87. package/dist/types/src/encrypt/index.d.ts +75 -6
  88. package/dist/types/src/errors/associations/UnrecognizedAssociationConditionKeys.d.ts +8 -0
  89. package/dist/types/src/helpers/Env.d.ts +28 -0
  90. package/dist/types/src/package-exports/openapi.d.ts +1 -1
  91. package/dist/types/src/package-exports/types.d.ts +2 -2
  92. package/dist/types/src/serializer/SerializerRenderer.d.ts +13 -0
  93. package/dist/types/src/serializer/builders/DreamSerializerBuilder.d.ts +59 -55
  94. package/dist/types/src/serializer/builders/ObjectSerializerBuilder.d.ts +40 -19
  95. package/dist/types/src/serializer/helpers/serializersForAssociatedClass.d.ts +17 -0
  96. package/dist/types/src/types/lifecycle.d.ts +6 -0
  97. package/dist/types/src/types/openapi.d.ts +52 -29
  98. package/dist/types/src/types/serializer.d.ts +43 -2
  99. package/dist/types/src/types/types/lifecycle.ts +6 -0
  100. package/dist/types/src/types/types/openapi.ts +51 -37
  101. package/dist/types/src/types/types/serializer.ts +62 -2
  102. package/dist/types/src/types/types/variadic.ts +99 -43
  103. package/dist/types/src/types/variadic.d.ts +29 -3
  104. package/docs/assets/hierarchy.js +1 -1
  105. package/docs/assets/highlight.css +4 -11
  106. package/docs/assets/navigation.js +1 -1
  107. package/docs/assets/search.js +1 -1
  108. package/docs/classes/db.DreamMigrationHelpers.html +13 -13
  109. package/docs/classes/db.KyselyQueryDriver.html +85 -46
  110. package/docs/classes/db.PostgresQueryDriver.html +86 -47
  111. package/docs/classes/db.QueryDriverBase.html +84 -45
  112. package/docs/classes/errors.CannotSaveMissingDream.html +2 -2
  113. package/docs/classes/errors.CheckConstraintViolation.html +3 -3
  114. package/docs/classes/errors.ColumnOverflow.html +3 -3
  115. package/docs/classes/errors.CreateOrFindByFailedToCreateAndFind.html +3 -3
  116. package/docs/classes/errors.DataIncompatibleWithDatabaseField.html +3 -3
  117. package/docs/classes/errors.DataTypeColumnTypeMismatch.html +3 -3
  118. package/docs/classes/errors.DecryptionError.html +2 -2
  119. package/docs/classes/errors.DecryptionParseError.html +2 -2
  120. package/docs/classes/errors.DecryptionRotationError.html +3 -3
  121. package/docs/classes/errors.GlobalNameNotSet.html +3 -3
  122. package/docs/classes/errors.InvalidCalendarDate.html +2 -2
  123. package/docs/classes/errors.InvalidClockTime.html +2 -2
  124. package/docs/classes/errors.InvalidClockTimeTz.html +2 -2
  125. package/docs/classes/errors.InvalidDateTime.html +2 -2
  126. package/docs/classes/errors.MissingSerializersDefinition.html +3 -3
  127. package/docs/classes/errors.NonLoadedAssociation.html +3 -3
  128. package/docs/classes/errors.NotNullViolation.html +3 -3
  129. package/docs/classes/errors.RecordNotFound.html +3 -3
  130. package/docs/classes/errors.SortableScopeDidNotStabilize.html +3 -3
  131. package/docs/classes/errors.SortableScopeLockWaitTimedOut.html +3 -3
  132. package/docs/classes/errors.ValidationError.html +3 -3
  133. package/docs/classes/index.CalendarDate.html +33 -33
  134. package/docs/classes/index.ClockTime.html +32 -32
  135. package/docs/classes/index.ClockTimeTz.html +35 -35
  136. package/docs/classes/index.DateTime.html +86 -86
  137. package/docs/classes/index.Decorators.html +37 -23
  138. package/docs/classes/index.Dream.html +270 -142
  139. package/docs/classes/index.DreamApp.html +40 -10
  140. package/docs/classes/index.DreamTransaction.html +3 -3
  141. package/docs/classes/index.Env.html +16 -2
  142. package/docs/classes/index.Query.html +331 -129
  143. package/docs/classes/system.CliFileWriter.html +4 -4
  144. package/docs/classes/system.DreamBin.html +6 -2
  145. package/docs/classes/system.DreamCLI.html +7 -7
  146. package/docs/classes/system.DreamImporter.html +2 -2
  147. package/docs/classes/system.DreamLogos.html +2 -2
  148. package/docs/classes/system.DreamSerializerBuilder.html +52 -34
  149. package/docs/classes/system.ObjectSerializerBuilder.html +41 -22
  150. package/docs/classes/system.PathHelpers.html +4 -4
  151. package/docs/classes/utils.Encrypt.html +54 -10
  152. package/docs/classes/utils.Range.html +2 -2
  153. package/docs/functions/db.closeAllDbConnections.html +1 -1
  154. package/docs/functions/db.dreamDbConnections.html +1 -1
  155. package/docs/functions/db.untypedDb.html +1 -1
  156. package/docs/functions/db.validateColumn.html +1 -1
  157. package/docs/functions/db.validateTable.html +1 -1
  158. package/docs/functions/errors.pgErrorType.html +1 -1
  159. package/docs/functions/index.DreamSerializer.html +1 -1
  160. package/docs/functions/index.ObjectSerializer.html +1 -1
  161. package/docs/functions/index.ReplicaSafe.html +1 -1
  162. package/docs/functions/index.STI.html +1 -1
  163. package/docs/functions/index.SoftDelete.html +1 -1
  164. package/docs/functions/utils.camelize.html +1 -1
  165. package/docs/functions/utils.capitalize.html +1 -1
  166. package/docs/functions/utils.cloneDeepSafe.html +1 -1
  167. package/docs/functions/utils.compact.html +1 -1
  168. package/docs/functions/utils.groupBy.html +1 -1
  169. package/docs/functions/utils.hyphenize.html +1 -1
  170. package/docs/functions/utils.intersection.html +1 -1
  171. package/docs/functions/utils.isEmpty.html +1 -1
  172. package/docs/functions/utils.normalizeUnicode.html +1 -1
  173. package/docs/functions/utils.pascalize.html +1 -1
  174. package/docs/functions/utils.percent.html +1 -1
  175. package/docs/functions/utils.range.html +1 -1
  176. package/docs/functions/utils.round.html +1 -1
  177. package/docs/functions/utils.sanitizeString.html +1 -1
  178. package/docs/functions/utils.snakeify.html +1 -1
  179. package/docs/functions/utils.sort.html +1 -1
  180. package/docs/functions/utils.sortBy.html +1 -1
  181. package/docs/functions/utils.sortObjectByKey.html +1 -1
  182. package/docs/functions/utils.sortObjectByValue.html +1 -1
  183. package/docs/functions/utils.uncapitalize.html +1 -1
  184. package/docs/functions/utils.uniq.html +1 -1
  185. package/docs/hierarchy.html +1 -1
  186. package/docs/index.html +1 -1
  187. package/docs/interfaces/openapi.OpenapiDescription.html +2 -2
  188. package/docs/interfaces/openapi.OpenapiSchemaProperties.html +1 -1
  189. package/docs/interfaces/openapi.OpenapiSchemaPropertiesShorthand.html +1 -1
  190. package/docs/interfaces/openapi.OpenapiTypeFieldObject.html +1 -1
  191. package/docs/interfaces/types.BelongsToStatement.html +2 -2
  192. package/docs/interfaces/types.DecoratorContext.html +2 -2
  193. package/docs/interfaces/types.DecryptCallbacks.html +6 -0
  194. package/docs/interfaces/types.DreamAppInitOptions.html +2 -2
  195. package/docs/interfaces/types.DreamAppOpts.html +2 -2
  196. package/docs/interfaces/types.DreamDbConfig.html +6 -6
  197. package/docs/interfaces/types.DurationObject.html +2 -2
  198. package/docs/interfaces/types.EncryptOptions.html +2 -2
  199. package/docs/interfaces/types.EncryptionLegacyKeyUsedEvent.html +10 -0
  200. package/docs/interfaces/types.InternalAnyTypedSerializerRendersMany.html +2 -2
  201. package/docs/interfaces/types.InternalAnyTypedSerializerRendersOne.html +2 -2
  202. package/docs/interfaces/types.SerializerRendererOpts.html +2 -2
  203. package/docs/modules/openapi.html +1 -1
  204. package/docs/modules/types.html +1 -1
  205. package/docs/types/openapi.CommonOpenapiSchemaObjectFields.html +1 -1
  206. package/docs/types/openapi.OpenapiAllTypes.html +1 -1
  207. package/docs/types/openapi.OpenapiFormats.html +1 -1
  208. package/docs/types/openapi.OpenapiNumberFormats.html +1 -1
  209. package/docs/types/openapi.OpenapiPrimitiveBaseTypes.html +1 -1
  210. package/docs/types/openapi.OpenapiPrimitiveTypes.html +1 -1
  211. package/docs/types/openapi.OpenapiSchemaArray.html +1 -1
  212. package/docs/types/openapi.OpenapiSchemaArrayShorthand.html +1 -1
  213. package/docs/types/openapi.OpenapiSchemaBase.html +1 -1
  214. package/docs/types/openapi.OpenapiSchemaBody.html +1 -1
  215. package/docs/types/openapi.OpenapiSchemaBodyShorthand.html +1 -1
  216. package/docs/types/openapi.OpenapiSchemaCombinatorFields.html +4 -0
  217. package/docs/types/openapi.OpenapiSchemaCommonFields.html +5 -1
  218. package/docs/types/openapi.OpenapiSchemaExpressionAllOf.html +1 -2
  219. package/docs/types/openapi.OpenapiSchemaExpressionAnyOf.html +1 -2
  220. package/docs/types/openapi.OpenapiSchemaExpressionOneOf.html +1 -2
  221. package/docs/types/openapi.OpenapiSchemaExpressionRef.html +2 -2
  222. package/docs/types/openapi.OpenapiSchemaExpressionRefSchemaShorthand.html +2 -2
  223. package/docs/types/openapi.OpenapiSchemaInteger.html +1 -1
  224. package/docs/types/openapi.OpenapiSchemaNull.html +4 -2
  225. package/docs/types/openapi.OpenapiSchemaNumber.html +1 -1
  226. package/docs/types/openapi.OpenapiSchemaObject.html +1 -1
  227. package/docs/types/openapi.OpenapiSchemaObjectAllOf.html +5 -1
  228. package/docs/types/openapi.OpenapiSchemaObjectAllOfShorthand.html +2 -1
  229. package/docs/types/openapi.OpenapiSchemaObjectBase.html +1 -1
  230. package/docs/types/openapi.OpenapiSchemaObjectBaseShorthand.html +1 -1
  231. package/docs/types/openapi.OpenapiSchemaObjectShorthand.html +1 -1
  232. package/docs/types/openapi.OpenapiSchemaPrimitiveGeneric.html +1 -1
  233. package/docs/types/openapi.OpenapiSchemaShorthandExpressionAllOf.html +1 -2
  234. package/docs/types/openapi.OpenapiSchemaShorthandExpressionAnyOf.html +1 -2
  235. package/docs/types/openapi.OpenapiSchemaShorthandExpressionOneOf.html +1 -2
  236. package/docs/types/openapi.OpenapiSchemaShorthandExpressionSerializableRef.html +2 -2
  237. package/docs/types/openapi.OpenapiSchemaShorthandExpressionSerializerRef.html +2 -2
  238. package/docs/types/openapi.OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  239. package/docs/types/openapi.OpenapiSchemaString.html +1 -1
  240. package/docs/types/openapi.OpenapiShorthandAllTypes.html +1 -1
  241. package/docs/types/openapi.OpenapiShorthandPrimitiveBaseTypes.html +1 -1
  242. package/docs/types/openapi.OpenapiShorthandPrimitiveTypes.html +1 -1
  243. package/docs/types/openapi.OpenapiTypeField.html +1 -1
  244. package/docs/types/system.DreamAppAllowedPackageManagersEnum.html +1 -1
  245. package/docs/types/types.CalendarDateDurationUnit.html +1 -1
  246. package/docs/types/types.CalendarDateObject.html +1 -1
  247. package/docs/types/types.Camelized.html +1 -1
  248. package/docs/types/types.ClockTimeObject.html +1 -1
  249. package/docs/types/types.DbConnectionType.html +1 -1
  250. package/docs/types/types.DbTypes.html +1 -1
  251. package/docs/types/types.DreamAssociationMetadata.html +1 -1
  252. package/docs/types/types.DreamAttributes.html +1 -1
  253. package/docs/types/types.DreamClassAssociationAndStatement.html +1 -1
  254. package/docs/types/types.DreamClassColumn.html +1 -1
  255. package/docs/types/types.DreamColumn.html +1 -1
  256. package/docs/types/types.DreamColumnNames.html +1 -1
  257. package/docs/types/types.DreamLogLevel.html +1 -1
  258. package/docs/types/types.DreamLogger.html +2 -2
  259. package/docs/types/types.DreamModelSerializerType.html +1 -1
  260. package/docs/types/types.DreamOrViewModelClassSerializerKey.html +1 -1
  261. package/docs/types/types.DreamOrViewModelSerializerKey.html +1 -1
  262. package/docs/types/types.DreamParamSafeAttributes.html +1 -1
  263. package/docs/types/types.DreamParamSafeColumnNames.html +1 -1
  264. package/docs/types/types.DreamSerializable.html +1 -1
  265. package/docs/types/types.DreamSerializableArray.html +1 -1
  266. package/docs/types/types.DreamSerializerKey.html +1 -1
  267. package/docs/types/types.DreamSerializers.html +1 -1
  268. package/docs/types/types.DreamVirtualColumns.html +1 -1
  269. package/docs/types/types.DurationUnit.html +1 -1
  270. package/docs/types/types.EncryptAlgorithm.html +1 -1
  271. package/docs/types/types.HasManyStatement.html +1 -1
  272. package/docs/types/types.HasOneStatement.html +1 -1
  273. package/docs/types/types.Hyphenized.html +1 -1
  274. package/docs/types/types.Pascalized.html +1 -1
  275. package/docs/types/types.PrimaryKeyType.html +1 -1
  276. package/docs/types/types.RoundingPrecision.html +1 -1
  277. package/docs/types/types.SerializerCasing.html +1 -1
  278. package/docs/types/types.SimpleObjectSerializerType.html +1 -1
  279. package/docs/types/types.Snakeified.html +1 -1
  280. package/docs/types/types.StrictInterface.html +1 -1
  281. package/docs/types/types.UpdateableAssociationProperties.html +1 -1
  282. package/docs/types/types.UpdateableProperties.html +1 -1
  283. package/docs/types/types.ValidationType.html +1 -1
  284. package/docs/types/types.ViewModel.html +2 -2
  285. package/docs/types/types.ViewModelClass.html +1 -1
  286. package/docs/types/types.WeekdayName.html +1 -1
  287. package/docs/types/types.WhereStatementForDream.html +1 -1
  288. package/docs/types/types.WhereStatementForDreamClass.html +1 -1
  289. package/docs/variables/index.DreamConst.html +1 -1
  290. package/docs/variables/index.ops.html +1 -1
  291. package/docs/variables/openapi.openapiPrimitiveTypes.html +1 -1
  292. package/docs/variables/openapi.openapiShorthandPrimitiveTypes.html +1 -1
  293. package/docs/variables/system.DreamAppAllowedPackageManagersEnumValues.html +1 -1
  294. package/docs/variables/system.primaryKeyTypes.html +1 -1
  295. package/package.json +1 -1
  296. package/dist/cjs/src/serializer/helpers/serializerForAssociatedClass.js +0 -37
  297. package/dist/esm/src/serializer/helpers/serializerForAssociatedClass.js +0 -37
  298. package/dist/types/src/serializer/helpers/serializerForAssociatedClass.d.ts +0 -9
  299. package/docs/types/openapi.OpenapiSchemaObjectAnyOf.html +0 -1
  300. package/docs/types/openapi.OpenapiSchemaObjectAnyOfShorthand.html +0 -1
  301. package/docs/types/openapi.OpenapiSchemaObjectOneOf.html +0 -1
  302. package/docs/types/openapi.OpenapiSchemaObjectOneOfShorthand.html +0 -1
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ObjectSerializerBuilder | @rvoh/dream</title><meta name="description" content="Documentation for @rvoh/dream"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@rvoh/dream</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/system.html">system</a></li><li><a href="" aria-current="page">ObjectSerializerBuilder</a></li></ul><h1>Class ObjectSerializerBuilder&lt;MaybeNullDataType, PassthroughDataType, DataType&gt;</h1></div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="maybenulldatatype"><span class="tsd-kind-type-parameter">MaybeNullDataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></span></li><li><span id="passthroughdatatype"><span class="tsd-kind-type-parameter">PassthroughDataType</span></span></li><li><span id="datatype"><span class="tsd-kind-type-parameter">DataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span> = <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L16">src/serializer/builders/ObjectSerializerBuilder.ts:16</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ObjectSerializerBuilder | @rvoh/dream</title><meta name="description" content="Documentation for @rvoh/dream"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@rvoh/dream</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/system.html">system</a></li><li><a href="" aria-current="page">ObjectSerializerBuilder</a></li></ul><h1>Class ObjectSerializerBuilder&lt;MaybeNullDataType, PassthroughDataType, DataType&gt;</h1></div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="maybenulldatatype"><span class="tsd-kind-type-parameter">MaybeNullDataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></span></li><li><span id="passthroughdatatype"><span class="tsd-kind-type-parameter">PassthroughDataType</span></span></li><li><span id="datatype"><span class="tsd-kind-type-parameter">DataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span> = <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L16">src/serializer/builders/ObjectSerializerBuilder.ts:16</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
2
2
  </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#attributes" class="tsd-index-link tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>attributes</span></a>
3
3
  <a href="#data" class="tsd-index-link tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>data</span></a>
4
4
  <a href="#passthroughdata" class="tsd-index-link tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>passthrough<wbr/>Data</span></a>
@@ -8,7 +8,7 @@
8
8
  <a href="#render" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>render</span></a>
9
9
  <a href="#rendersmany" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>renders<wbr/>Many</span></a>
10
10
  <a href="#rendersone" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>renders<wbr/>One</span></a>
11
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructorobjectserializerbuilder"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">ObjectSerializerBuilder</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#constructorobjectserializerbuildermaybenulldatatype">MaybeNullDataType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#constructorobjectserializerbuilderpassthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#constructorobjectserializerbuilderdatatype">DataType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">data</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">passthroughData</span><span class="tsd-signature-symbol">?:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#constructorobjectserializerbuilder" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="constructorobjectserializerbuildermaybenulldatatype"><span class="tsd-kind-type-parameter">MaybeNullDataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></span></li><li><span id="constructorobjectserializerbuilderpassthroughdatatype"><span class="tsd-kind-type-parameter">PassthroughDataType</span></span></li><li><span id="constructorobjectserializerbuilderdatatype"><span class="tsd-kind-type-parameter">DataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> = <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">data</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a></span></li><li><span><span class="tsd-kind-parameter">passthroughData</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol"> = ...</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L29">src/serializer/builders/ObjectSerializerBuilder.ts:29</a></li></ul></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member tsd-is-protected"><h3 class="tsd-anchor-link" id="attributes"><code class="tsd-tag">Protected</code><span>attributes</span><a href="#attributes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">attributes</span><span class="tsd-signature-symbol">:</span> (<br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">InternalAnyTypedSerializerAttribute</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">InternalAnyTypedSerializerDelegatedAttribute</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">InternalAnyTypedSerializerCustomAttribute</span><br/>    <span class="tsd-signature-symbol">|</span> <a href="../interfaces/types.InternalAnyTypedSerializerRendersOne.html" class="tsd-signature-type tsd-kind-interface">InternalAnyTypedSerializerRendersOne</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span><br/>    <span class="tsd-signature-symbol">|</span> <a href="../interfaces/types.InternalAnyTypedSerializerRendersMany.html" class="tsd-signature-type tsd-kind-interface">InternalAnyTypedSerializerRendersMany</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span><br/>)<span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> = []</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L21">src/serializer/builders/ObjectSerializerBuilder.ts:21</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-is-protected"><h3 class="tsd-anchor-link" id="data"><code class="tsd-tag">Protected</code><span>data</span><a href="#data" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">data</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L30">src/serializer/builders/ObjectSerializerBuilder.ts:30</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-is-protected"><h3 class="tsd-anchor-link" id="passthroughdata"><code class="tsd-tag">Protected</code><span>passthrough<wbr/>Data</span><a href="#passthroughdata" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">passthroughData</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L31">src/serializer/builders/ObjectSerializerBuilder.ts:31</a></li></ul></aside></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="attribute"><span>attribute</span><a href="#attribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="attribute-1"><span class="tsd-kind-call-signature">attribute</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#attributeattributename">AttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#attributeattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">NonAutomaticSerializerAttributeOptionsWithPossibleDecimalRenderOption</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#attribute-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes an attribute from the data object in the serialized output.</p>
11
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructorobjectserializerbuilder"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">ObjectSerializerBuilder</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#constructorobjectserializerbuildermaybenulldatatype">MaybeNullDataType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#constructorobjectserializerbuilderpassthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#constructorobjectserializerbuilderdatatype">DataType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">data</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">passthroughData</span><span class="tsd-signature-symbol">?:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#constructorobjectserializerbuilder" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="constructorobjectserializerbuildermaybenulldatatype"><span class="tsd-kind-type-parameter">MaybeNullDataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span></span></li><li><span id="constructorobjectserializerbuilderpassthroughdatatype"><span class="tsd-kind-type-parameter">PassthroughDataType</span></span></li><li><span id="constructorobjectserializerbuilderdatatype"><span class="tsd-kind-type-parameter">DataType</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span> = <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">data</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a></span></li><li><span><span class="tsd-kind-parameter">passthroughData</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol"> = ...</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L29">src/serializer/builders/ObjectSerializerBuilder.ts:29</a></li></ul></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member tsd-is-protected"><h3 class="tsd-anchor-link" id="attributes"><code class="tsd-tag">Protected</code><span>attributes</span><a href="#attributes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">attributes</span><span class="tsd-signature-symbol">:</span> (<br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">InternalAnyTypedSerializerAttribute</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">InternalAnyTypedSerializerDelegatedAttribute</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">InternalAnyTypedSerializerCustomAttribute</span><br/>    <span class="tsd-signature-symbol">|</span> <a href="../interfaces/types.InternalAnyTypedSerializerRendersOne.html" class="tsd-signature-type tsd-kind-interface">InternalAnyTypedSerializerRendersOne</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span><br/>    <span class="tsd-signature-symbol">|</span> <a href="../interfaces/types.InternalAnyTypedSerializerRendersMany.html" class="tsd-signature-type tsd-kind-interface">InternalAnyTypedSerializerRendersMany</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span><br/>)<span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> = []</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L21">src/serializer/builders/ObjectSerializerBuilder.ts:21</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-is-protected"><h3 class="tsd-anchor-link" id="data"><code class="tsd-tag">Protected</code><span>data</span><a href="#data" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">data</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L30">src/serializer/builders/ObjectSerializerBuilder.ts:30</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-is-protected"><h3 class="tsd-anchor-link" id="passthroughdata"><code class="tsd-tag">Protected</code><span>passthrough<wbr/>Data</span><a href="#passthroughdata" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">passthroughData</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L31">src/serializer/builders/ObjectSerializerBuilder.ts:31</a></li></ul></aside></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="attribute"><span>attribute</span><a href="#attribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="attribute-1"><span class="tsd-kind-call-signature">attribute</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#attributeattributename">AttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#attributeattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">NonAutomaticSerializerAttributeOptionsWithPossibleDecimalRenderOption</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#attribute-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes an attribute from the data object in the serialized output.</p>
12
12
  <p>For ObjectSerializer, the <code>openapi</code> option is always required since type
13
13
  inference is not available for plain objects or ViewModels.</p>
14
14
  </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="attributeattributename"><span class="tsd-kind-type-parameter">AttributeName</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">name</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#attributeattributename">AttributeName</a></span><div class="tsd-comment tsd-typography"><p>The attribute name from the data object</p>
@@ -27,28 +27,34 @@ serialize as <code>null</code></li>
27
27
  <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-7">// Required OpenAPI schema</span><br/><span class="hl-1">.</span><span class="hl-5">attribute</span><span class="hl-1">(</span><span class="hl-6">&#39;email&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1">, </span><span class="hl-4">format:</span><span class="hl-1"> </span><span class="hl-6">&#39;email&#39;</span><span class="hl-1"> }</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// With default value</span><br/><span class="hl-1">.</span><span class="hl-5">attribute</span><span class="hl-1">(</span><span class="hl-6">&#39;status&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">default:</span><span class="hl-1"> </span><span class="hl-6">&#39;active&#39;</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// Rename output key</span><br/><span class="hl-1">.</span><span class="hl-5">attribute</span><span class="hl-1">(</span><span class="hl-6">&#39;email&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">as:</span><span class="hl-1"> </span><span class="hl-6">&#39;userEmail&#39;</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// Round decimal to 2 places</span><br/><span class="hl-1">.</span><span class="hl-5">attribute</span><span class="hl-1">(</span><span class="hl-6">&#39;price&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> </span><span class="hl-6">&#39;decimal&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">precision:</span><span class="hl-1"> </span><span class="hl-8">2</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// Mark as optional in OpenAPI (omitted from response when undefined)</span><br/><span class="hl-1">.</span><span class="hl-5">attribute</span><span class="hl-1">(</span><span class="hl-6">&#39;nickname&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">required:</span><span class="hl-1"> </span><span class="hl-0">false</span><br/><span class="hl-1">})</span>
28
28
  </code><button type="button">Copy</button></pre>
29
29
 
30
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L84">src/serializer/builders/ObjectSerializerBuilder.ts:84</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="customattribute"><span>custom<wbr/>Attribute</span><a href="#customattribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="customattribute-1"><span class="tsd-kind-call-signature">customAttribute</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">fn</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Omit</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">NonAutomaticSerializerAttributeOptions</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">&quot;as&quot;</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-symbol">{</span><br/>        <span class="tsd-kind-property">flatten</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#customattribute-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes a computed value in the serialized output.</p>
30
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L84">src/serializer/builders/ObjectSerializerBuilder.ts:84</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="customattribute"><span>custom<wbr/>Attribute</span><a href="#customattribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="customattribute-1"><span class="tsd-kind-call-signature">customAttribute</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">fn</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">CustomAttributeOptions</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#customattribute-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes a computed value in the serialized output.</p>
31
31
  <p>Executes a callback function to generate a custom attribute value.
32
32
  The <code>openapi</code> option is always required since the return type cannot be inferred.</p>
33
- <p>Unlike DreamSerializerBuilder's <code>customAttribute</code>, this version does not support <code>as</code>
34
- or <code>precision</code>.</p>
33
+ <p>The callback's return value renders as is, so any fallback belongs in the callback.</p>
35
34
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">name</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The attribute name for the computed value</p>
36
35
  </div></li><li><span><span class="tsd-kind-parameter">fn</span>: <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">unknown</span></span><div class="tsd-comment tsd-typography"><p>Callback function that returns the computed value</p>
37
- </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">Omit</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">NonAutomaticSerializerAttributeOptions</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">&quot;as&quot;</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">flatten</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span></span><div class="tsd-comment tsd-typography"><p>Configuration options:</p>
36
+ </div></li><li><span><span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-type">CustomAttributeOptions</span></span><div class="tsd-comment tsd-typography"><p>Configuration options:</p>
38
37
  <ul>
39
38
  <li><code>openapi</code> - (required) OpenAPI schema definition for the computed value</li>
40
- <li><code>default</code> - Value to use when the callback returns undefined</li>
41
39
  <li><code>flatten</code> - When <code>true</code>, spreads the returned object's properties directly into the
42
- parent serialized output instead of nesting them under <code>name</code>; the <code>openapi</code> option
43
- should then define each flattened property individually</li>
40
+ parent serialized output instead of nesting them under <code>name</code>. The <code>openapi</code> option
41
+ then describes the whole returned object, not each property, because Psychic adds it
42
+ to the parent's schema as an <code>allOf</code> branch: either an object schema with full
43
+ property bodies (<code>type: 'object'</code>, <code>properties</code>, and <code>required</code> listing the keys that
44
+ are always present), or <code>{ $serializer: SomeSerializer }</code> when the callback returns
45
+ what that serializer renders. A serializer ref with <code>many: true</code> does not type-check
46
+ here, since a list has no properties to spread. A <code>null</code> or <code>undefined</code> return adds no
47
+ keys. Attributes render in declaration order, so a key the returned object shares with
48
+ another attribute takes the value of whichever is declared later; under the <code>allOf</code>,
49
+ that value must match both schemas</li>
44
50
  <li><code>required</code> - Set to <code>false</code> to mark the attribute as optional in the OpenAPI schema;
45
51
  when omitted, attributes are required by default</li>
46
52
  </ul>
47
53
  </div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span></h4><p>The serializer builder for method chaining</p>
48
- <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-1">Example<a href="#example-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-7">// Simple computed value</span><br/><span class="hl-1">.</span><span class="hl-5">customAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;fullName&#39;</span><span class="hl-1">, () </span><span class="hl-0">=&gt;</span><br/><span class="hl-1"> </span><span class="hl-6">`</span><span class="hl-0">${</span><span class="hl-4">user</span><span class="hl-11">.</span><span class="hl-4">firstName</span><span class="hl-0">}</span><span class="hl-6"> </span><span class="hl-0">${</span><span class="hl-4">user</span><span class="hl-11">.</span><span class="hl-4">lastName</span><span class="hl-0">}</span><span class="hl-6">`</span><span class="hl-1">,</span><br/><span class="hl-1"> { </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1"> } }</span><br/><span class="hl-1">)</span><br/><br/><span class="hl-7">// Flattened object properties</span><br/><span class="hl-1">.</span><span class="hl-5">customAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;coordinates&#39;</span><span class="hl-1">, () </span><span class="hl-0">=&gt;</span><span class="hl-1"> ({ </span><span class="hl-4">lat:</span><span class="hl-1"> </span><span class="hl-8">40.7</span><span class="hl-1">, </span><span class="hl-4">lng:</span><span class="hl-1"> -</span><span class="hl-8">74.0</span><span class="hl-1"> }), {</span><br/><span class="hl-1"> </span><span class="hl-4">flatten:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">lat:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;number&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">lng:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;number&#39;</span><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">})</span>
54
+ <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-1">Example<a href="#example-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-7">// Simple computed value</span><br/><span class="hl-1">.</span><span class="hl-5">customAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;fullName&#39;</span><span class="hl-1">, () </span><span class="hl-0">=&gt;</span><br/><span class="hl-1"> </span><span class="hl-6">`</span><span class="hl-0">${</span><span class="hl-4">user</span><span class="hl-10">.</span><span class="hl-4">firstName</span><span class="hl-0">}</span><span class="hl-6"> </span><span class="hl-0">${</span><span class="hl-4">user</span><span class="hl-10">.</span><span class="hl-4">lastName</span><span class="hl-0">}</span><span class="hl-6">`</span><span class="hl-1">,</span><br/><span class="hl-1"> { </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1"> } }</span><br/><span class="hl-1">)</span><br/><br/><span class="hl-7">// Flattened object properties: `openapi` describes the whole returned object</span><br/><span class="hl-1">.</span><span class="hl-5">customAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;coordinates&#39;</span><span class="hl-1">, () </span><span class="hl-0">=&gt;</span><span class="hl-1"> ({ </span><span class="hl-4">lat:</span><span class="hl-1"> </span><span class="hl-8">40.7</span><span class="hl-1">, </span><span class="hl-4">lng:</span><span class="hl-1"> -</span><span class="hl-8">74.0</span><span class="hl-1"> }), {</span><br/><span class="hl-1"> </span><span class="hl-4">flatten:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;object&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">required:</span><span class="hl-1"> [</span><span class="hl-6">&#39;lat&#39;</span><span class="hl-1">, </span><span class="hl-6">&#39;lng&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-4">properties:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">lat:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;number&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">lng:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;number&#39;</span><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">})</span>
49
55
  </code><button type="button">Copy</button></pre>
50
56
 
51
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L232">src/serializer/builders/ObjectSerializerBuilder.ts:232</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="delegatedattribute"><span>delegated<wbr/>Attribute</span><a href="#delegatedattribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="delegatedattribute-1"><span class="tsd-kind-call-signature">delegatedAttribute</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetname">TargetName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetobject">TargetObject</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetname">TargetName</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeattributename">AttributeName</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetobject">TargetObject</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetobject">TargetObject</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">never</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">targetName</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetname">TargetName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">NonAutomaticSerializerAttributeOptions</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-symbol">{</span><br/>        <span class="tsd-kind-property">precision</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.RoundingPrecision.html" class="tsd-signature-type tsd-kind-type-alias">RoundingPrecision</a><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">optional</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#delegatedattribute-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes an attribute from a nested object in the serialized output.</p>
57
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L243">src/serializer/builders/ObjectSerializerBuilder.ts:243</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="delegatedattribute"><span>delegated<wbr/>Attribute</span><a href="#delegatedattribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="delegatedattribute-1"><span class="tsd-kind-call-signature">delegatedAttribute</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetname">TargetName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetobject">TargetObject</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetname">TargetName</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeattributename">AttributeName</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetobject">TargetObject</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">object</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetobject">TargetObject</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">never</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">targetName</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributetargetname">TargetName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#delegatedattributeattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">NonAutomaticSerializerAttributeOptions</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-symbol">{</span><br/>        <span class="tsd-kind-property">precision</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.RoundingPrecision.html" class="tsd-signature-type tsd-kind-type-alias">RoundingPrecision</a><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">optional</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#delegatedattribute-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes an attribute from a nested object in the serialized output.</p>
52
58
  <p>Accesses <code>targetName.name</code> on the data object. The <code>openapi</code> option is always
53
59
  required. When the target object or the delegated attribute is null/undefined,
54
60
  the resolution order is:</p>
@@ -76,9 +82,10 @@ In OpenAPI, the field is marked as not required.</li>
76
82
  (e.g., delegating <code>'profile', 'avatarUrl'</code> with <code>as: 'avatar'</code> outputs the value
77
83
  under <code>avatar</code>)</li>
78
84
  <li><code>default</code> - Value to use when the target object or its attribute is null/undefined</li>
79
- <li><code>optional</code> - Set to <code>true</code> to mark the value as nullable in the OpenAPI schema
80
- (wraps the type in <code>anyOf: [schema, { type: 'null' }]</code>). OpenAPI-only — the
81
- key is still rendered (as <code>null</code>)</li>
85
+ <li><code>optional</code> - Set to <code>true</code> to mark the value as nullable in the OpenAPI schema:
86
+ Psychic adds <code>null</code> to the rendered schema (e.g., <code>type: 'string'</code> becomes
87
+ <code>type: ['string', 'null']</code>, and a <code>$ref</code> becomes <code>anyOf: [{ $ref }, { type: 'null' }]</code>).
88
+ OpenAPI-only — the key is still rendered (as <code>null</code>)</li>
82
89
  <li><code>precision</code> - Round decimal values to the specified number of decimal places (0–9)
83
90
  during rendering; does not affect the OpenAPI shape</li>
84
91
  <li><code>required</code> - Set to <code>false</code> to omit the key from the rendered output when the
@@ -89,7 +96,7 @@ OpenAPI schema</li>
89
96
  <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-2">Example<a href="#example-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-7">// Delegate to user.email</span><br/><span class="hl-1">.</span><span class="hl-5">delegatedAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;user&#39;</span><span class="hl-1">, </span><span class="hl-6">&#39;email&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1">, </span><span class="hl-4">format:</span><span class="hl-1"> </span><span class="hl-6">&#39;email&#39;</span><span class="hl-1"> }</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// With default value for null target or attribute</span><br/><span class="hl-1">.</span><span class="hl-5">delegatedAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;profile&#39;</span><span class="hl-1">, </span><span class="hl-6">&#39;displayName&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> { </span><span class="hl-4">type:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">default:</span><span class="hl-1"> </span><span class="hl-6">&#39;Anonymous User&#39;</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// Rename the output key</span><br/><span class="hl-1">.</span><span class="hl-5">delegatedAttribute</span><span class="hl-1">(</span><span class="hl-6">&#39;profile&#39;</span><span class="hl-1">, </span><span class="hl-6">&#39;avatarUrl&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">openapi:</span><span class="hl-1"> </span><span class="hl-6">&#39;string&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">as:</span><span class="hl-1"> </span><span class="hl-6">&#39;avatar&#39;</span><br/><span class="hl-1">})</span>
90
97
  </code><button type="button">Copy</button></pre>
91
98
 
92
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L155">src/serializer/builders/ObjectSerializerBuilder.ts:155</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="render"><span>render</span><a href="#render" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="render-1"><span class="tsd-kind-call-signature">render</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">passthrough</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">opts</span><span class="tsd-signature-symbol">?:</span> <a href="../interfaces/types.SerializerRendererOpts.html" class="tsd-signature-type tsd-kind-interface">SerializerRendererOpts</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><a href="#render-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Executes the serializer and returns the serialized output.</p>
99
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L156">src/serializer/builders/ObjectSerializerBuilder.ts:156</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="render"><span>render</span><a href="#render" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="render-1"><span class="tsd-kind-call-signature">render</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">passthrough</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">opts</span><span class="tsd-signature-symbol">?:</span> <a href="../interfaces/types.SerializerRendererOpts.html" class="tsd-signature-type tsd-kind-interface">SerializerRendererOpts</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><a href="#render-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Executes the serializer and returns the serialized output.</p>
93
100
  <p>Processes all defined attributes, custom attributes, delegated attributes,
94
101
  and associations to produce the final serialized object.</p>
95
102
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">passthrough</span>: <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> = {}</span></span><div class="tsd-comment tsd-typography"><p>Additional data to pass through to nested serializers
@@ -99,7 +106,7 @@ and associations to produce the final serialized object.</p>
99
106
  <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-3">Example<a href="#example-3" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-2">result</span><span class="hl-1"> = </span><span class="hl-5">UserViewModelSerializer</span><span class="hl-1">(</span><span class="hl-4">userVm</span><span class="hl-1">).</span><span class="hl-5">render</span><span class="hl-1">()</span><br/><span class="hl-7">// Returns: { id: &#39;123&#39;, email: &#39;user@example.com&#39;, ... }</span><br/><br/><span class="hl-7">// With passthrough data for nested serializers</span><br/><span class="hl-0">const</span><span class="hl-1"> </span><span class="hl-2">result</span><span class="hl-1"> = </span><span class="hl-5">UserViewModelSerializer</span><span class="hl-1">(</span><span class="hl-4">userVm</span><span class="hl-1">).</span><span class="hl-5">render</span><span class="hl-1">({ </span><span class="hl-4">currentUserId:</span><span class="hl-1"> </span><span class="hl-6">&#39;456&#39;</span><span class="hl-1"> })</span>
100
107
  </code><button type="button">Copy</button></pre>
101
108
 
102
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L486">src/serializer/builders/ObjectSerializerBuilder.ts:486</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="rendersmany"><span>renders<wbr/>Many</span><a href="#rendersmany" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="rendersmany-1"><span class="tsd-kind-call-signature">rendersMany</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> (<br/>        <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>        <span class="tsd-signature-symbol">|</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>    )<span class="tsd-signature-symbol">[]</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span><span class="tsd-signature-symbol">[]</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span> <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyserializeroptions">SerializerOptions</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>            <span class="tsd-kind-property">dreamClass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>            <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>                <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>                <span class="tsd-kind-property">viewModelClass</span><span class="tsd-signature-symbol">:</span> <a href="../types/types.ViewModelClass.html" class="tsd-signature-type tsd-kind-type-alias">ViewModelClass</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">as</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&amp;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyserializeroptions">SerializerOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#rendersmany-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes an array of associated objects in the serialized output.</p>
109
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L505">src/serializer/builders/ObjectSerializerBuilder.ts:505</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="rendersmany"><span>renders<wbr/>Many</span><a href="#rendersmany" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="rendersmany-1"><span class="tsd-kind-call-signature">rendersMany</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> (<br/>        <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>        <span class="tsd-signature-symbol">|</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>    )<span class="tsd-signature-symbol">[]</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span><span class="tsd-signature-symbol">[]</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span> <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyserializeroptions">SerializerOptions</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>            <span class="tsd-kind-property">dreamClass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>            <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>                <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>                <span class="tsd-kind-property">viewModelClass</span><span class="tsd-signature-symbol">:</span> <a href="../types/types.ViewModelClass.html" class="tsd-signature-type tsd-kind-type-alias">ViewModelClass</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">as</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&amp;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyserializeroptions">SerializerOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#rendersmany-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes an array of associated objects in the serialized output.</p>
103
110
  <p>For ObjectSerializer, explicit serializer configuration is always required
104
111
  since association schemas cannot be inferred from plain objects.</p>
105
112
  </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="rendersmanyprovidedmodeltype"><span class="tsd-kind-type-parameter">ProvidedModelType</span> = <span class="tsd-signature-type">undefined</span></span></li><li><span id="rendersmanyprovidedattributename"><span class="tsd-kind-type-parameter">ProvidedAttributeName</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>    <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>    <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span></span></li><li><span id="rendersmanyactualdatatype"><span class="tsd-kind-type-parameter">ActualDataType</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a> <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedmodeltype">ProvidedModelType</a></span></li><li><span id="rendersmanyattributename"><span class="tsd-kind-type-parameter">AttributeName</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>    <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">DreamPropertiesToExclude</span><span class="tsd-signature-symbol">&gt;</span><br/>    <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a></span></li><li><span id="rendersmanyassociatedmodeltype"><span class="tsd-kind-type-parameter">AssociatedModelType</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> (<a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a> <span class="tsd-signature-symbol">|</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a>)<span class="tsd-signature-symbol">[]</span><br/>    <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span><span class="tsd-signature-symbol">[]</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span> <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><br/>    <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span></span></li><li><span id="rendersmanyserializeroptions"><span class="tsd-kind-type-parameter">SerializerOptions</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>    <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>        <span class="tsd-kind-property">dreamClass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">}</span><br/>    <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>            <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-kind-property">viewModelClass</span><span class="tsd-signature-symbol">:</span> <a href="../types/types.ViewModelClass.html" class="tsd-signature-type tsd-kind-type-alias">ViewModelClass</a><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">name</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersmanyattributename">AttributeName</a></span><div class="tsd-comment tsd-typography"><p>The association property name (should resolve to an array)</p>
@@ -126,7 +133,7 @@ since association schemas cannot be inferred from plain objects.</p>
126
133
  <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-4">Example<a href="#example-4" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-7">// With explicit serializer function</span><br/><span class="hl-1">.</span><span class="hl-5">rendersMany</span><span class="hl-1">(</span><span class="hl-6">&#39;articles&#39;</span><span class="hl-1">, { </span><span class="hl-4">serializer:</span><span class="hl-1"> </span><span class="hl-4">ArticleSerializer</span><span class="hl-1"> })</span><br/><br/><span class="hl-7">// With Dream class reference and serializer key</span><br/><span class="hl-1">.</span><span class="hl-5">rendersMany</span><span class="hl-1">(</span><span class="hl-6">&#39;posts&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">dreamClass:</span><span class="hl-1"> </span><span class="hl-4">Post</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">serializerKey:</span><span class="hl-1"> </span><span class="hl-6">&#39;summary&#39;</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// With ViewModel class reference</span><br/><span class="hl-1">.</span><span class="hl-5">rendersMany</span><span class="hl-1">(</span><span class="hl-6">&#39;comments&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">viewModelClass:</span><span class="hl-1"> </span><span class="hl-4">CommentViewModel</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">serializer:</span><span class="hl-1"> </span><span class="hl-4">CommentViewModelSerializer</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// Rename output key</span><br/><span class="hl-1">.</span><span class="hl-5">rendersMany</span><span class="hl-1">(</span><span class="hl-6">&#39;articles&#39;</span><span class="hl-1">, { </span><span class="hl-4">serializer:</span><span class="hl-1"> </span><span class="hl-4">ArticleSerializer</span><span class="hl-1">, </span><span class="hl-4">as:</span><span class="hl-1"> </span><span class="hl-6">&#39;posts&#39;</span><span class="hl-1"> })</span>
127
134
  </code><button type="button">Copy</button></pre>
128
135
 
129
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L408">src/serializer/builders/ObjectSerializerBuilder.ts:408</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="rendersone"><span>renders<wbr/>One</span><a href="#rendersone" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="rendersone-1"><span class="tsd-kind-call-signature">rendersOne</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneserializeroptions">SerializerOptions</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>            <span class="tsd-kind-property">dreamClass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>            <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>                <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>                <span class="tsd-kind-property">viewModelClass</span><span class="tsd-signature-symbol">:</span> <a href="../types/types.ViewModelClass.html" class="tsd-signature-type tsd-kind-type-alias">ViewModelClass</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">as</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">flatten</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">optional</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&amp;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneserializeroptions">SerializerOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#rendersone-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes a single associated object in the serialized output.</p>
136
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L427">src/serializer/builders/ObjectSerializerBuilder.ts:427</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="rendersone"><span>renders<wbr/>One</span><a href="#rendersone" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="rendersone-1"><span class="tsd-kind-call-signature">rendersOne</span><span class="tsd-signature-symbol">&lt;</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a> <span class="tsd-signature-keyword">extends</span><br/>        <span class="tsd-signature-type">string</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-symbol">=</span> <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>    <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneserializeroptions">SerializerOptions</a> <span class="tsd-signature-symbol">=</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>            <span class="tsd-kind-property">dreamClass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>            <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>                <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>                <span class="tsd-kind-property">viewModelClass</span><span class="tsd-signature-symbol">:</span> <a href="../types/types.ViewModelClass.html" class="tsd-signature-type tsd-kind-type-alias">ViewModelClass</a><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-signature-symbol">}</span><br/>            <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">as</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">flatten</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">optional</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&amp;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneserializeroptions">SerializerOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">ObjectSerializerBuilder</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#maybenulldatatype">MaybeNullDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#passthroughdatatype">PassthroughDataType</a><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a><span class="tsd-signature-symbol">&gt;</span><a href="#rendersone-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Includes a single associated object in the serialized output.</p>
130
137
  <p>For ObjectSerializer, explicit serializer configuration is always required
131
138
  since association schemas cannot be inferred from plain objects.</p>
132
139
  </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="rendersoneprovidedmodeltype"><span class="tsd-kind-type-parameter">ProvidedModelType</span> = <span class="tsd-signature-type">undefined</span></span></li><li><span id="rendersoneprovidedattributename"><span class="tsd-kind-type-parameter">ProvidedAttributeName</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a></span></li><li><span id="rendersoneactualdatatype"><span class="tsd-kind-type-parameter">ActualDataType</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">?</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#datatype">DataType</a> <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedmodeltype">ProvidedModelType</a></span></li><li><span id="rendersoneattributename"><span class="tsd-kind-type-parameter">AttributeName</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">symbol</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">undefined</span><br/>    <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><br/>    <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneprovidedattributename">ProvidedAttributeName</a> <span class="tsd-signature-symbol">&amp;</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a></span></li><li><span id="rendersoneassociatedmodeltype"><span class="tsd-kind-type-parameter">AssociatedModelType</span> = <span class="tsd-signature-type">Exclude</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneactualdatatype">ActualDataType</a><span class="tsd-signature-symbol">[</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">&gt;</span></span></li><li><span id="rendersoneserializeroptions"><span class="tsd-kind-type-parameter">SerializerOptions</span> = <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><br/>    <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>        <span class="tsd-kind-property">dreamClass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <a href="index.Dream.html" class="tsd-signature-type tsd-kind-class">Dream</a><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">}</span><br/>    <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a> <span class="tsd-signature-keyword">extends</span> <a href="../types/types.ViewModel.html" class="tsd-signature-type tsd-kind-type-alias">ViewModel</a><br/>        <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span><br/>            <span class="tsd-kind-property">serializerKey</span><span class="tsd-signature-symbol">?:</span> <a href="../types/types.DreamOrViewModelSerializerKey.html" class="tsd-signature-type tsd-kind-type-alias">DreamOrViewModelSerializerKey</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneassociatedmodeltype">AssociatedModelType</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>            <span class="tsd-kind-property">viewModelClass</span><span class="tsd-signature-symbol">:</span> <a href="../types/types.ViewModelClass.html" class="tsd-signature-type tsd-kind-type-alias">ViewModelClass</a><span class="tsd-signature-symbol">;</span><br/>        <span class="tsd-signature-symbol">}</span><br/>        <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">serializer</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">SerializerType</span> <span class="tsd-signature-symbol">}</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">name</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#rendersoneattributename">AttributeName</a></span><div class="tsd-comment tsd-typography"><p>The association property name</p>
@@ -134,9 +141,18 @@ since association schemas cannot be inferred from plain objects.</p>
134
141
  <ul>
135
142
  <li><code>as</code> - Rename the association key in the serialized output</li>
136
143
  <li><code>flatten</code> - When <code>true</code>, spreads the rendered association's attributes directly into
137
- the parent serialized output instead of nesting them under <code>name</code>. Be aware of
138
- attribute shadowing: if the parent and flattened association share attribute names
139
- (e.g., <code>id</code>), the flattened association's values overwrite the parent's</li>
144
+ the parent serialized output instead of nesting them under <code>name</code>. Attributes render in
145
+ declaration order, so when the parent and the association share a key (e.g., <code>id</code>),
146
+ whichever is declared later wins: the association's value replaces an attribute declared
147
+ before the <code>rendersOne</code>, and an attribute declared after it replaces the association's.
148
+ When the association is <code>null</code>, every key its serializer declares renders as <code>null</code>
149
+ (for a polymorphic <code>BelongsTo</code>, every key the serializer of any of its target classes
150
+ declares, and for an association to an STI base, every key the serializer of any of its
151
+ STI children declares), in the same order (so an <code>id</code> declared before the <code>rendersOne</code> becomes
152
+ <code>null</code>); nothing in that serializer is rendered, so its custom attribute callbacks do
153
+ not run, and a flattened <code>customAttribute</code> in it adds no keys. Psychic adds the association's OpenAPI
154
+ schema to the parent's as an <code>allOf</code> branch, so a shared key's value must match both
155
+ schemas, whichever declaration wins</li>
140
156
  <li><code>optional</code> - When <code>true</code>, allows the association to be null/missing without causing
141
157
  an <code>OpenapiResponseValidationFailure</code> during Psychic controller unit specs. By default,
142
158
  <code>rendersOne</code> expects the association to be present (mirroring the <code>optional</code> option on
@@ -159,7 +175,10 @@ an <code>OpenapiResponseValidationFailure</code> during Psychic controller unit
159
175
  </ul>
160
176
  </div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><code class="tsd-tag">Optional</code><span class="tsd-kind-property">as</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><p>Rename the association key in the serialized output.</p>
161
177
  </div></li><li class="tsd-parameter"><h5><code class="tsd-tag">Optional</code><span class="tsd-kind-property">flatten</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>If <code>true</code>, the rendered association's attributes are merged directly into
162
- the parent object instead of being nested under the association key.</p>
178
+ the parent object instead of being nested under the association key. A key
179
+ the parent shares with the association takes the value of whichever is
180
+ declared later, and when the association is <code>null</code>, every key its serializer
181
+ declares renders as <code>null</code>. See the <code>flatten</code> option of <code>rendersOne</code>.</p>
163
182
  </div></li><li class="tsd-parameter"><h5><code class="tsd-tag">Optional</code><span class="tsd-kind-property">optional</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>If <code>true</code>, the association is treated as nullable in the OpenAPI spec,
164
183
  allowing <code>null</code> when the association doesn't resolve. Set this for
165
184
  associations that may not exist.</p>
@@ -167,4 +186,4 @@ associations that may not exist.</p>
167
186
  <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-5">Example<a href="#example-5" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-7">// With explicit serializer function</span><br/><span class="hl-1">.</span><span class="hl-5">rendersOne</span><span class="hl-1">(</span><span class="hl-6">&#39;owner&#39;</span><span class="hl-1">, { </span><span class="hl-4">serializer:</span><span class="hl-1"> </span><span class="hl-4">CustomOwnerSerializer</span><span class="hl-1"> })</span><br/><br/><span class="hl-7">// With Dream class reference and serializer key</span><br/><span class="hl-1">.</span><span class="hl-5">rendersOne</span><span class="hl-1">(</span><span class="hl-6">&#39;creator&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">dreamClass:</span><span class="hl-1"> </span><span class="hl-4">User</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">serializerKey:</span><span class="hl-1"> </span><span class="hl-6">&#39;summary&#39;</span><br/><span class="hl-1">})</span><br/><br/><span class="hl-7">// Allow null association</span><br/><span class="hl-1">.</span><span class="hl-5">rendersOne</span><span class="hl-1">(</span><span class="hl-6">&#39;approver&#39;</span><span class="hl-1">, { </span><span class="hl-4">serializer:</span><span class="hl-1"> </span><span class="hl-4">UserSerializer</span><span class="hl-1">, </span><span class="hl-4">optional:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1"> })</span><br/><br/><span class="hl-7">// Flatten into parent object</span><br/><span class="hl-1">.</span><span class="hl-5">rendersOne</span><span class="hl-1">(</span><span class="hl-6">&#39;profile&#39;</span><span class="hl-1">, { </span><span class="hl-4">serializer:</span><span class="hl-1"> </span><span class="hl-4">ProfileSerializer</span><span class="hl-1">, </span><span class="hl-4">flatten:</span><span class="hl-1"> </span><span class="hl-0">true</span><span class="hl-1"> })</span>
168
187
  </code><button type="button">Copy</button></pre>
169
188
 
170
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/63da0959d7560499144c359a6fd730183c188db9/src/serializer/builders/ObjectSerializerBuilder.ts#L296">src/serializer/builders/ObjectSerializerBuilder.ts:296</a></li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#attributes" class="tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>attributes</span></a><a href="#data" class="tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>data</span></a><a href="#passthroughdata" class="tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>passthrough<wbr/>Data</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#attribute"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>attribute</span></a><a href="#customattribute"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>custom<wbr/>Attribute</span></a><a href="#delegatedattribute"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>delegated<wbr/>Attribute</span></a><a href="#render"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>render</span></a><a href="#rendersmany"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>renders<wbr/>Many</span></a><a href="#rendersone"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>renders<wbr/>One</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@rvoh/dream</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
189
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/e7dbbff031e1947fdc6a3d4e1ae3c55a25442b5b/src/serializer/builders/ObjectSerializerBuilder.ts#L312">src/serializer/builders/ObjectSerializerBuilder.ts:312</a></li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#attributes" class="tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>attributes</span></a><a href="#data" class="tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>data</span></a><a href="#passthroughdata" class="tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>passthrough<wbr/>Data</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#attribute"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>attribute</span></a><a href="#customattribute"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>custom<wbr/>Attribute</span></a><a href="#delegatedattribute"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>delegated<wbr/>Attribute</span></a><a href="#render"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>render</span></a><a href="#rendersmany"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>renders<wbr/>Many</span></a><a href="#rendersone"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>renders<wbr/>One</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@rvoh/dream</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>