joist-core 2.3.0-next.98 → 2.3.0-next.99

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 (313) hide show
  1. package/build/BaseEntity.cjs.map +1 -1
  2. package/build/BaseEntity.js.map +1 -1
  3. package/build/Entity.cjs.map +1 -1
  4. package/build/Entity.js.map +1 -1
  5. package/build/EntityManager.cjs.map +1 -1
  6. package/build/EntityManager.d.cts.map +1 -1
  7. package/build/EntityManager.d.mts.map +1 -1
  8. package/build/EntityManager.js.map +1 -1
  9. package/build/EntityMetadata.cjs.map +1 -1
  10. package/build/EntityMetadata.js.map +1 -1
  11. package/build/IndexManager.cjs.map +1 -1
  12. package/build/IndexManager.js.map +1 -1
  13. package/build/InstanceData.cjs.map +1 -1
  14. package/build/InstanceData.js.map +1 -1
  15. package/build/PluginManager.cjs.map +1 -1
  16. package/build/PluginManager.js.map +1 -1
  17. package/build/batchloaders/enumCollectionBatchLoader.cjs.map +1 -1
  18. package/build/batchloaders/enumCollectionBatchLoader.js.map +1 -1
  19. package/build/batchloaders/loadBatchLoader.cjs.map +1 -1
  20. package/build/batchloaders/loadBatchLoader.js.map +1 -1
  21. package/build/batchloaders/manyToManyBatchLoader.cjs.map +1 -1
  22. package/build/batchloaders/manyToManyBatchLoader.js.map +1 -1
  23. package/build/batchloaders/oneToManyBatchLoader.cjs.map +1 -1
  24. package/build/batchloaders/oneToManyBatchLoader.js.map +1 -1
  25. package/build/batchloaders/oneToOneBatchLoader.cjs.map +1 -1
  26. package/build/batchloaders/oneToOneBatchLoader.js.map +1 -1
  27. package/build/batchloaders/populateBatchLoader.cjs.map +1 -1
  28. package/build/batchloaders/populateBatchLoader.js.map +1 -1
  29. package/build/batchloaders/recursiveChildrenBatchLoader.cjs.map +1 -1
  30. package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -1
  31. package/build/batchloaders/recursiveM2mBatchLoader.cjs.map +1 -1
  32. package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -1
  33. package/build/batchloaders/recursiveParentsBatchLoader.cjs.map +1 -1
  34. package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -1
  35. package/build/changes.cjs.map +1 -1
  36. package/build/changes.js.map +1 -1
  37. package/build/config.cjs.map +1 -1
  38. package/build/config.js.map +1 -1
  39. package/build/configure.cjs.map +1 -1
  40. package/build/configure.js.map +1 -1
  41. package/build/dataloaders/fastWhereFilterHash.cjs.map +1 -1
  42. package/build/dataloaders/fastWhereFilterHash.js.map +1 -1
  43. package/build/dataloaders/findByUniqueDataLoader.cjs.map +1 -1
  44. package/build/dataloaders/findByUniqueDataLoader.d.cts.map +1 -1
  45. package/build/dataloaders/findByUniqueDataLoader.d.mts.map +1 -1
  46. package/build/dataloaders/findByUniqueDataLoader.js.map +1 -1
  47. package/build/dataloaders/findCountDataLoader.cjs.map +1 -1
  48. package/build/dataloaders/findCountDataLoader.js.map +1 -1
  49. package/build/dataloaders/findDataLoader.cjs +1 -1
  50. package/build/dataloaders/findDataLoader.cjs.map +1 -1
  51. package/build/dataloaders/findDataLoader.js +1 -1
  52. package/build/dataloaders/findDataLoader.js.map +1 -1
  53. package/build/dataloaders/findIdsDataLoader.cjs.map +1 -1
  54. package/build/dataloaders/findIdsDataLoader.js.map +1 -1
  55. package/build/dataloaders/findOrCreateDataLoader.cjs.map +1 -1
  56. package/build/dataloaders/findOrCreateDataLoader.d.cts.map +1 -1
  57. package/build/dataloaders/findOrCreateDataLoader.d.mts.map +1 -1
  58. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  59. package/build/dataloaders/findPaginatedDataLoader.cjs.map +1 -1
  60. package/build/dataloaders/findPaginatedDataLoader.js.map +1 -1
  61. package/build/dataloaders/lensDataLoader.cjs.map +1 -1
  62. package/build/dataloaders/lensDataLoader.d.cts.map +1 -1
  63. package/build/dataloaders/lensDataLoader.d.mts.map +1 -1
  64. package/build/dataloaders/lensDataLoader.js.map +1 -1
  65. package/build/dataloaders/manyToManyFindDataLoader.cjs.map +1 -1
  66. package/build/dataloaders/manyToManyFindDataLoader.d.cts.map +1 -1
  67. package/build/dataloaders/manyToManyFindDataLoader.d.mts.map +1 -1
  68. package/build/dataloaders/manyToManyFindDataLoader.js.map +1 -1
  69. package/build/dataloaders/oneToManyFindDataLoader.cjs.map +1 -1
  70. package/build/dataloaders/oneToManyFindDataLoader.d.cts.map +1 -1
  71. package/build/dataloaders/oneToManyFindDataLoader.d.mts.map +1 -1
  72. package/build/dataloaders/oneToManyFindDataLoader.js.map +1 -1
  73. package/build/defaults.cjs.map +1 -1
  74. package/build/defaults.d.cts.map +1 -1
  75. package/build/defaults.d.mts.map +1 -1
  76. package/build/defaults.js.map +1 -1
  77. package/build/drivers/EntityWriter.cjs.map +1 -1
  78. package/build/drivers/EntityWriter.js.map +1 -1
  79. package/build/drivers/IdAssigner.cjs.map +1 -1
  80. package/build/drivers/IdAssigner.js.map +1 -1
  81. package/build/drivers/driverApi.cjs.map +1 -1
  82. package/build/drivers/driverApi.js.map +1 -1
  83. package/build/fields.cjs.map +1 -1
  84. package/build/fields.js.map +1 -1
  85. package/build/flush/JoinRows.cjs.map +1 -1
  86. package/build/flush/JoinRows.js.map +1 -1
  87. package/build/flush/Todo.cjs.map +1 -1
  88. package/build/flush/Todo.js.map +1 -1
  89. package/build/getProperties.cjs.map +1 -1
  90. package/build/getProperties.js.map +1 -1
  91. package/build/index.cjs +2 -2
  92. package/build/index.cjs.map +1 -1
  93. package/build/index.js +2 -2
  94. package/build/index.js.map +1 -1
  95. package/build/json.cjs.map +1 -1
  96. package/build/json.js.map +1 -1
  97. package/build/keys.cjs.map +1 -1
  98. package/build/keys.js.map +1 -1
  99. package/build/loading/HintTree.cjs.map +1 -1
  100. package/build/loading/HintTree.js.map +1 -1
  101. package/build/loading/IsLoadedCache.cjs.map +1 -1
  102. package/build/loading/IsLoadedCache.js.map +1 -1
  103. package/build/loading/loadHints.cjs.map +1 -1
  104. package/build/loading/loadHints.js.map +1 -1
  105. package/build/loading/loadLens.cjs.map +1 -1
  106. package/build/loading/loadLens.js.map +1 -1
  107. package/build/loading/withLoaded.cjs.map +1 -1
  108. package/build/loading/withLoaded.js.map +1 -1
  109. package/build/logging/FactoryLogger.cjs.map +1 -1
  110. package/build/logging/FactoryLogger.d.cts.map +1 -1
  111. package/build/logging/FactoryLogger.d.mts.map +1 -1
  112. package/build/logging/FactoryLogger.js.map +1 -1
  113. package/build/logging/FieldLogger.cjs.map +1 -1
  114. package/build/logging/FieldLogger.d.cts.map +1 -1
  115. package/build/logging/FieldLogger.d.mts.map +1 -1
  116. package/build/logging/FieldLogger.js.map +1 -1
  117. package/build/logging/ReactionLogger.cjs.map +1 -1
  118. package/build/logging/ReactionLogger.d.cts.map +1 -1
  119. package/build/logging/ReactionLogger.d.mts.map +1 -1
  120. package/build/logging/ReactionLogger.js.map +1 -1
  121. package/build/newEntity.cjs.map +1 -1
  122. package/build/newEntity.js.map +1 -1
  123. package/build/newTestInstance.cjs.map +1 -1
  124. package/build/newTestInstance.d.cts.map +1 -1
  125. package/build/newTestInstance.d.mts.map +1 -1
  126. package/build/newTestInstance.js.map +1 -1
  127. package/build/normalizeHints.cjs.map +1 -1
  128. package/build/normalizeHints.js.map +1 -1
  129. package/build/nowUTC.cjs.map +1 -1
  130. package/build/nowUTC.js.map +1 -1
  131. package/build/plugins/ImmutableEntitiesPlugin.cjs.map +1 -1
  132. package/build/plugins/ImmutableEntitiesPlugin.js.map +1 -1
  133. package/build/preloading/JsonAggregatePreloader.cjs.map +1 -1
  134. package/build/preloading/JsonAggregatePreloader.d.cts.map +1 -1
  135. package/build/preloading/JsonAggregatePreloader.d.mts.map +1 -1
  136. package/build/preloading/JsonAggregatePreloader.js.map +1 -1
  137. package/build/preloading/canPreload.cjs.map +1 -1
  138. package/build/preloading/canPreload.js.map +1 -1
  139. package/build/preloading/partitionHint.cjs.map +1 -1
  140. package/build/preloading/partitionHint.js.map +1 -1
  141. package/build/queries/ConditionBuilder.cjs.map +1 -1
  142. package/build/queries/ConditionBuilder.js.map +1 -1
  143. package/build/queries/conditions.cjs.map +1 -1
  144. package/build/queries/conditions.js.map +1 -1
  145. package/build/queries/entityQueryUtils.cjs.map +1 -1
  146. package/build/queries/entityQueryUtils.js.map +1 -1
  147. package/build/queries/find/Aliases.cjs.map +1 -1
  148. package/build/queries/find/Aliases.d.cts.map +1 -1
  149. package/build/queries/find/Aliases.d.mts.map +1 -1
  150. package/build/queries/find/Aliases.js.map +1 -1
  151. package/build/queries/find/DeferredAlias.cjs.map +1 -1
  152. package/build/queries/find/DeferredAlias.js.map +1 -1
  153. package/build/queries/find/EntityFilter.cjs.map +1 -1
  154. package/build/queries/find/EntityFilter.js.map +1 -1
  155. package/build/queries/find/EntityGraphQLFilter.cjs.map +1 -1
  156. package/build/queries/find/EntityGraphQLFilter.js.map +1 -1
  157. package/build/queries/find/QueryParser.cjs +1 -1
  158. package/build/queries/find/QueryParser.cjs.map +1 -1
  159. package/build/queries/find/QueryParser.collectionJoins.cjs.map +1 -1
  160. package/build/queries/find/QueryParser.collectionJoins.js.map +1 -1
  161. package/build/queries/find/QueryParser.d.cts.map +1 -1
  162. package/build/queries/find/QueryParser.d.mts.map +1 -1
  163. package/build/queries/find/QueryParser.js +1 -1
  164. package/build/queries/find/QueryParser.js.map +1 -1
  165. package/build/queries/find/QueryParser.pruning.cjs.map +1 -1
  166. package/build/queries/find/QueryParser.pruning.js.map +1 -1
  167. package/build/queries/find/QueryVisitor.cjs.map +1 -1
  168. package/build/queries/find/QueryVisitor.js.map +1 -1
  169. package/build/queries/find/buildFindQuery.cjs.map +1 -1
  170. package/build/queries/find/buildFindQuery.js.map +1 -1
  171. package/build/queries/find/scopes.cjs.map +1 -1
  172. package/build/queries/find/scopes.js.map +1 -1
  173. package/build/queries/parsedConditions.cjs.map +1 -1
  174. package/build/queries/parsedConditions.js.map +1 -1
  175. package/build/queries/renderConditions.cjs.map +1 -1
  176. package/build/queries/renderConditions.js.map +1 -1
  177. package/build/queries/skipCondition.cjs.map +1 -1
  178. package/build/queries/skipCondition.js.map +1 -1
  179. package/build/queries/sql/AliasAssigner.cjs.map +1 -1
  180. package/build/queries/sql/AliasAssigner.js.map +1 -1
  181. package/build/queries/sql/Expr.cjs.map +1 -1
  182. package/build/queries/sql/Expr.js.map +1 -1
  183. package/build/queries/sql/Tables.cjs.map +1 -1
  184. package/build/queries/sql/Tables.d.cts.map +1 -1
  185. package/build/queries/sql/Tables.d.mts.map +1 -1
  186. package/build/queries/sql/Tables.js.map +1 -1
  187. package/build/queries/sql/execute.cjs.map +1 -1
  188. package/build/queries/sql/execute.js.map +1 -1
  189. package/build/queries/sql/expressions/arrayAgg.cjs.map +1 -1
  190. package/build/queries/sql/expressions/arrayAgg.js.map +1 -1
  191. package/build/queries/sql/expressions/case.cjs.map +1 -1
  192. package/build/queries/sql/expressions/case.js.map +1 -1
  193. package/build/queries/sql/expressions/coalesce.cjs.map +1 -1
  194. package/build/queries/sql/expressions/coalesce.js.map +1 -1
  195. package/build/queries/sql/expressions/codecs.cjs.map +1 -1
  196. package/build/queries/sql/expressions/codecs.js.map +1 -1
  197. package/build/queries/sql/expressions/expression.cjs.map +1 -1
  198. package/build/queries/sql/expressions/expression.d.cts.map +1 -1
  199. package/build/queries/sql/expressions/expression.d.mts.map +1 -1
  200. package/build/queries/sql/expressions/expression.js.map +1 -1
  201. package/build/queries/sql/expressions/greatest.cjs.map +1 -1
  202. package/build/queries/sql/expressions/greatest.js.map +1 -1
  203. package/build/queries/sql/expressions/least.cjs.map +1 -1
  204. package/build/queries/sql/expressions/least.js.map +1 -1
  205. package/build/queries/sql/expressions/nullIf.cjs.map +1 -1
  206. package/build/queries/sql/expressions/nullIf.js.map +1 -1
  207. package/build/queries/sql/expressions/parseExpression.cjs.map +1 -1
  208. package/build/queries/sql/expressions/parseExpression.js.map +1 -1
  209. package/build/queries/sql/expressions/types.d.cts.map +1 -1
  210. package/build/queries/sql/expressions/types.d.mts.map +1 -1
  211. package/build/queries/sql/query.cjs +1 -1
  212. package/build/queries/sql/query.cjs.map +1 -1
  213. package/build/queries/sql/query.js +1 -1
  214. package/build/queries/sql/query.js.map +1 -1
  215. package/build/queries/unnest.cjs.map +1 -1
  216. package/build/queries/unnest.js.map +1 -1
  217. package/build/queries/valueFilters.cjs.map +1 -1
  218. package/build/queries/valueFilters.d.cts.map +1 -1
  219. package/build/queries/valueFilters.d.mts.map +1 -1
  220. package/build/queries/valueFilters.js.map +1 -1
  221. package/build/reactivity/ReactionsManager.cjs.map +1 -1
  222. package/build/reactivity/ReactionsManager.js.map +1 -1
  223. package/build/reactivity/reactiveHints.cjs.map +1 -1
  224. package/build/reactivity/reactiveHints.js.map +1 -1
  225. package/build/relations/AbstractRelationImpl.cjs.map +1 -1
  226. package/build/relations/AbstractRelationImpl.js.map +1 -1
  227. package/build/relations/AsyncProperty.cjs.map +1 -1
  228. package/build/relations/AsyncProperty.js.map +1 -1
  229. package/build/relations/AsyncReactiveField.cjs.map +1 -1
  230. package/build/relations/AsyncReactiveField.js.map +1 -1
  231. package/build/relations/Collection.cjs.map +1 -1
  232. package/build/relations/Collection.js.map +1 -1
  233. package/build/relations/CustomCollection.cjs.map +1 -1
  234. package/build/relations/CustomCollection.js.map +1 -1
  235. package/build/relations/CustomReference.cjs.map +1 -1
  236. package/build/relations/CustomReference.js.map +1 -1
  237. package/build/relations/EnumCollection.cjs.map +1 -1
  238. package/build/relations/EnumCollection.js.map +1 -1
  239. package/build/relations/LazyField.cjs.map +1 -1
  240. package/build/relations/LazyField.js.map +1 -1
  241. package/build/relations/ManyToManyCollection.cjs.map +1 -1
  242. package/build/relations/ManyToManyCollection.js.map +1 -1
  243. package/build/relations/ManyToManyLargeCollection.cjs.map +1 -1
  244. package/build/relations/ManyToManyLargeCollection.js.map +1 -1
  245. package/build/relations/ManyToOneReference.cjs.map +1 -1
  246. package/build/relations/ManyToOneReference.js.map +1 -1
  247. package/build/relations/OneToManyCollection.cjs.map +1 -1
  248. package/build/relations/OneToManyCollection.js.map +1 -1
  249. package/build/relations/OneToManyLargeCollection.cjs.map +1 -1
  250. package/build/relations/OneToManyLargeCollection.js.map +1 -1
  251. package/build/relations/OneToOneReference.cjs.map +1 -1
  252. package/build/relations/OneToOneReference.js.map +1 -1
  253. package/build/relations/PolymorphicReference.cjs.map +1 -1
  254. package/build/relations/PolymorphicReference.js.map +1 -1
  255. package/build/relations/ReactiveField.cjs.map +1 -1
  256. package/build/relations/ReactiveField.js.map +1 -1
  257. package/build/relations/ReactiveGetter.cjs.map +1 -1
  258. package/build/relations/ReactiveGetter.js.map +1 -1
  259. package/build/relations/ReactiveManyToMany.cjs.map +1 -1
  260. package/build/relations/ReactiveManyToMany.js.map +1 -1
  261. package/build/relations/ReactiveManyToManyOtherSide.cjs.map +1 -1
  262. package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
  263. package/build/relations/ReactiveReference.cjs.map +1 -1
  264. package/build/relations/ReactiveReference.js.map +1 -1
  265. package/build/relations/ReadOnlyCollection.cjs.map +1 -1
  266. package/build/relations/ReadOnlyCollection.js.map +1 -1
  267. package/build/relations/RecursiveCollection.cjs.map +1 -1
  268. package/build/relations/RecursiveCollection.js.map +1 -1
  269. package/build/relations/RecursiveCycleError.cjs.map +1 -1
  270. package/build/relations/RecursiveCycleError.js.map +1 -1
  271. package/build/relations/Reference.cjs.map +1 -1
  272. package/build/relations/Reference.js.map +1 -1
  273. package/build/relations/Relation.cjs.map +1 -1
  274. package/build/relations/Relation.js.map +1 -1
  275. package/build/relations/hasAsyncMethod.cjs.map +1 -1
  276. package/build/relations/hasAsyncMethod.js.map +1 -1
  277. package/build/relations/hasManyDerived.cjs.map +1 -1
  278. package/build/relations/hasManyDerived.js.map +1 -1
  279. package/build/relations/hasManyThrough.cjs.map +1 -1
  280. package/build/relations/hasManyThrough.js.map +1 -1
  281. package/build/relations/hasOneDerived.cjs.map +1 -1
  282. package/build/relations/hasOneDerived.js.map +1 -1
  283. package/build/relations/hasOneThrough.cjs.map +1 -1
  284. package/build/relations/hasOneThrough.js.map +1 -1
  285. package/build/relations/hasProperty.cjs.map +1 -1
  286. package/build/relations/hasProperty.js.map +1 -1
  287. package/build/relations/isCascadeDelete.cjs.map +1 -1
  288. package/build/relations/isCascadeDelete.js.map +1 -1
  289. package/build/resurrection.cjs.map +1 -1
  290. package/build/resurrection.js.map +1 -1
  291. package/build/rules.cjs.map +1 -1
  292. package/build/rules.js.map +1 -1
  293. package/build/runtimeConfig.cjs.map +1 -1
  294. package/build/runtimeConfig.js.map +1 -1
  295. package/build/serde/TypeInfo.cjs.map +1 -1
  296. package/build/serde/TypeInfo.js.map +1 -1
  297. package/build/serde/columns.cjs.map +1 -1
  298. package/build/serde/columns.js.map +1 -1
  299. package/build/serde/fieldSerde.cjs.map +1 -1
  300. package/build/serde/fieldSerde.js.map +1 -1
  301. package/build/serde/serde.cjs.map +1 -1
  302. package/build/serde/serde.d.cts.map +1 -1
  303. package/build/serde/serde.d.mts.map +1 -1
  304. package/build/serde/serde.js.map +1 -1
  305. package/build/serde/temporalMappers.cjs.map +1 -1
  306. package/build/serde/temporalMappers.js.map +1 -1
  307. package/build/upsert.cjs.map +1 -1
  308. package/build/upsert.d.cts.map +1 -1
  309. package/build/upsert.d.mts.map +1 -1
  310. package/build/upsert.js.map +1 -1
  311. package/build/utils.cjs.map +1 -1
  312. package/build/utils.js.map +1 -1
  313. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEntity.cjs","names":["deTagId","getMetadata","keyToNumber","InstanceData"],"sources":["../src/BaseEntity.ts"],"sourcesContent":["import { type IdType } from \"./Entity.ts\";\nimport {\n type Entity,\n type EntityManager,\n type EntityMetadata,\n InstanceData,\n type TaggedId,\n deTagId,\n getMetadata,\n keyToNumber,\n} from \"./index.ts\";\n\n/**\n * Returns the internal `__data` tracking field for `entity`.\n *\n * This should be treated as an internal API and may change without notice.\n */\nexport function getInstanceData(entity: Entity): InstanceData {\n return BaseEntity.getInstanceData(entity);\n}\n\n/**\n * The base class for all entities.\n *\n * Currently, this just adds the `.load(lensFn)` method for declarative reference traversal.\n */\nexport abstract class BaseEntity<EM extends EntityManager, I extends IdType = IdType> implements Entity {\n public static getInstanceData(entity: Entity): InstanceData {\n return (entity as BaseEntity<any>).__data;\n }\n // We use a protected field so that subclass getters can easily access `this.__data.relations`.\n protected readonly __data!: InstanceData;\n\n /** The single-arg constructor is our psuedo-public API that can only be called by the EntityManager. */\n constructor(em: EntityManager);\n constructor(em: EntityManager, isNew?: boolean) {\n if (isNew === undefined) {\n throw new Error(\"Entities must be constructed by calling em.create or em.load\");\n }\n // This code path won't be reused for real entities, as they go through the `newEntity`\n // construction process that lazifies the relations.\n baseEntityCstr(em, this, isNew);\n }\n\n // This gives rules a way to access the fully typed object instead of their Reacted view.\n // And we make it public so that a function that takes Reacted<...> can accept a Loaded<...>\n // that sufficiently overlaps.\n get fullNonReactiveAccess(): this {\n return this;\n }\n\n /** @returns the entity's id, tagged/untagged based on your config, or a runtime error if it's new/unassigned. */\n abstract id: I;\n\n /** @returns the entity's, tagged/untagged based on your config, or undefined if it's new/unassigned. */\n abstract get idMaybe(): I | undefined;\n\n /** @returns the entity's id, always tagged, or a runtime error if it's new/unassigned. */\n abstract idTagged: TaggedId;\n\n /** @returns the entity's id, always tagged, or undefined if it's new/unassigned. */\n abstract get idTaggedMaybe(): TaggedId | undefined;\n\n /** @returns the entity's id, always untagged, or a runtime error if it's unassigned. */\n get idUntagged(): string {\n return deTagId(getMetadata(this), this.id);\n }\n\n abstract set(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setPartial(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setDeepPartial(opts: unknown): Promise<void>;\n\n /**\n * Returns whether the entity is new.\n *\n * This is not just `this.id === undefined`, because just assigning an id doesn't mean the entity\n * is no longer new; this only flips to `false` after the `flush` transaction has been committed.\n */\n get isNewEntity(): boolean {\n return this.__data.isNewEntity;\n }\n\n get isDeletedEntity(): boolean {\n return this.__data.isDeletedEntity;\n }\n\n get isDirtyEntity(): boolean {\n return this.__data.isDirtyEntity;\n }\n\n toString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.type);\n }\n\n toTaggedString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.tagName);\n }\n\n public get em(): EM {\n return this.__data.em as EM;\n }\n\n /**\n * A very simple toJSON that just returns the id.\n *\n * This is for security reasons, to avoid accidentally logging sensitive data; you\n * can specify more fields, and potentially nested return data, by using passing\n * a {@link JsonHint} to `toJSON`.\n */\n public toJSON(): object {\n return { id: this.idMaybe || null };\n }\n\n [Symbol.toStringTag](): string {\n return this.toString();\n }\n\n /**\n * Hooks into node's `console.log` to avoid sprawling output of our relations/internal state.\n *\n * See https://nodejs.org/api/util.html#custom-inspection-functions-on-objects.\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")](): string {\n return this.toString();\n }\n\n /** A bag of non-persisted state, typically for flags that control business logic behavior. */\n declare readonly transientFields: Record<string, unknown>;\n}\n\nfunction toStringWithPrefix(meta: EntityMetadata, entity: Entity, prefix: string): string {\n // Start with `Author` or `a`, depending on the caller\n let result = prefix;\n // Add `#1` if this is an em.create-d entity\n const data = getInstanceData(entity);\n const createId = data.createId;\n if (createId) {\n result += `#${createId}`;\n }\n // Add the `:1` but only after our flush is complete, otherwise the id is\n // internally assigned but not really flushed/committed to the db yet\n const dbId = entity.idTaggedMaybe;\n if (data.pendingOperation !== \"insert\" && dbId) {\n // Strip the tag because we add back the entity prefix\n result += `:${keyToNumber(meta, dbId)}`;\n }\n return result;\n}\n\n/**\n * The constructor logic for `BaseEntity` but exposed so that `newEntity` can use it too\n * on its `Object.create`-d instances.\n */\nexport function baseEntityCstr(em: EntityManager, entity: BaseEntity<any, any>, isNew: boolean): void {\n const data = new InstanceData(em, entity, (entity.constructor as any).metadata, isNew);\n // This makes it non-enumerable to avoid Jest/recursive things tripping over it\n Object.defineProperty(entity, \"__data\", { value: data, enumerable: false, writable: false, configurable: false });\n}\n"],"mappings":";;;;;;;;;;;;AAiBA,SAAgB,gBAAgB,QAA8B;CAC5D,OAAO,WAAW,gBAAgB,MAAM;AAC1C;;;;;;AAOA,IAAsB,aAAtB,MAAwG;CACtG,OAAc,gBAAgB,QAA8B;EAC1D,OAAQ,OAA2B;CACrC;CAEA;CAIA,YAAY,IAAmB,OAAiB;EAC9C,IAAI,UAAU,KAAA,GACZ,MAAM,IAAI,MAAM,8DAA8D;EAIhF,eAAe,IAAI,MAAM,KAAK;CAChC;CAKA,IAAI,wBAA8B;EAChC,OAAO;CACT;;CAeA,IAAI,aAAqB;EACvB,OAAOA,aAAAA,QAAQC,uBAAAA,YAAY,IAAI,GAAG,KAAK,EAAE;CAC3C;;;;;;;CAoBA,IAAI,cAAuB;EACzB,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,kBAA2B;EAC7B,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,gBAAyB;EAC3B,OAAO,KAAK,OAAO;CACrB;CAEA,WAAmB;EACjB,MAAM,OAAOA,uBAAAA,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,IAAI;CACjD;CAEA,iBAAyB;EACvB,MAAM,OAAOA,uBAAAA,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,OAAO;CACpD;CAEA,IAAW,KAAS;EAClB,OAAO,KAAK,OAAO;CACrB;;;;;;;;CASA,SAAwB;EACtB,OAAO,EAAE,IAAI,KAAK,WAAW,KAAK;CACpC;CAEA,CAAC,OAAO,eAAuB;EAC7B,OAAO,KAAK,SAAS;CACvB;;;;;;CAOA,CAAC,OAAO,IAAI,4BAA4B,KAAa;EACnD,OAAO,KAAK,SAAS;CACvB;AAIF;AAEA,SAAS,mBAAmB,MAAsB,QAAgB,QAAwB;CAExF,IAAI,SAAS;CAEb,MAAM,OAAO,gBAAgB,MAAM;CACnC,MAAM,WAAW,KAAK;CACtB,IAAI,UACF,UAAU,IAAI;CAIhB,MAAM,OAAO,OAAO;CACpB,IAAI,KAAK,qBAAqB,YAAY,MAExC,UAAU,IAAIC,aAAAA,YAAY,MAAM,IAAI;CAEtC,OAAO;AACT;;;;;AAMA,SAAgB,eAAe,IAAmB,QAA8B,OAAsB;CACpG,MAAM,OAAO,IAAIC,qBAAAA,aAAa,IAAI,QAAS,OAAO,YAAoB,UAAU,KAAK;CAErF,OAAO,eAAe,QAAQ,UAAU;EAAE,OAAO;EAAM,YAAY;EAAO,UAAU;EAAO,cAAc;CAAM,CAAC;AAClH"}
1
+ {"version":3,"file":"BaseEntity.cjs","names":["deTagId","getMetadata","keyToNumber","InstanceData"],"sources":["../src/BaseEntity.ts"],"sourcesContent":["import { type IdType } from \"src/Entity.ts\";\nimport {\n type Entity,\n type EntityManager,\n type EntityMetadata,\n InstanceData,\n type TaggedId,\n deTagId,\n getMetadata,\n keyToNumber,\n} from \"src/index.ts\";\n\n/**\n * Returns the internal `__data` tracking field for `entity`.\n *\n * This should be treated as an internal API and may change without notice.\n */\nexport function getInstanceData(entity: Entity): InstanceData {\n return BaseEntity.getInstanceData(entity);\n}\n\n/**\n * The base class for all entities.\n *\n * Currently, this just adds the `.load(lensFn)` method for declarative reference traversal.\n */\nexport abstract class BaseEntity<EM extends EntityManager, I extends IdType = IdType> implements Entity {\n public static getInstanceData(entity: Entity): InstanceData {\n return (entity as BaseEntity<any>).__data;\n }\n // We use a protected field so that subclass getters can easily access `this.__data.relations`.\n protected readonly __data!: InstanceData;\n\n /** The single-arg constructor is our psuedo-public API that can only be called by the EntityManager. */\n constructor(em: EntityManager);\n constructor(em: EntityManager, isNew?: boolean) {\n if (isNew === undefined) {\n throw new Error(\"Entities must be constructed by calling em.create or em.load\");\n }\n // This code path won't be reused for real entities, as they go through the `newEntity`\n // construction process that lazifies the relations.\n baseEntityCstr(em, this, isNew);\n }\n\n // This gives rules a way to access the fully typed object instead of their Reacted view.\n // And we make it public so that a function that takes Reacted<...> can accept a Loaded<...>\n // that sufficiently overlaps.\n get fullNonReactiveAccess(): this {\n return this;\n }\n\n /** @returns the entity's id, tagged/untagged based on your config, or a runtime error if it's new/unassigned. */\n abstract id: I;\n\n /** @returns the entity's, tagged/untagged based on your config, or undefined if it's new/unassigned. */\n abstract get idMaybe(): I | undefined;\n\n /** @returns the entity's id, always tagged, or a runtime error if it's new/unassigned. */\n abstract idTagged: TaggedId;\n\n /** @returns the entity's id, always tagged, or undefined if it's new/unassigned. */\n abstract get idTaggedMaybe(): TaggedId | undefined;\n\n /** @returns the entity's id, always untagged, or a runtime error if it's unassigned. */\n get idUntagged(): string {\n return deTagId(getMetadata(this), this.id);\n }\n\n abstract set(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setPartial(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setDeepPartial(opts: unknown): Promise<void>;\n\n /**\n * Returns whether the entity is new.\n *\n * This is not just `this.id === undefined`, because just assigning an id doesn't mean the entity\n * is no longer new; this only flips to `false` after the `flush` transaction has been committed.\n */\n get isNewEntity(): boolean {\n return this.__data.isNewEntity;\n }\n\n get isDeletedEntity(): boolean {\n return this.__data.isDeletedEntity;\n }\n\n get isDirtyEntity(): boolean {\n return this.__data.isDirtyEntity;\n }\n\n toString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.type);\n }\n\n toTaggedString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.tagName);\n }\n\n public get em(): EM {\n return this.__data.em as EM;\n }\n\n /**\n * A very simple toJSON that just returns the id.\n *\n * This is for security reasons, to avoid accidentally logging sensitive data; you\n * can specify more fields, and potentially nested return data, by using passing\n * a {@link JsonHint} to `toJSON`.\n */\n public toJSON(): object {\n return { id: this.idMaybe || null };\n }\n\n [Symbol.toStringTag](): string {\n return this.toString();\n }\n\n /**\n * Hooks into node's `console.log` to avoid sprawling output of our relations/internal state.\n *\n * See https://nodejs.org/api/util.html#custom-inspection-functions-on-objects.\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")](): string {\n return this.toString();\n }\n\n /** A bag of non-persisted state, typically for flags that control business logic behavior. */\n declare readonly transientFields: Record<string, unknown>;\n}\n\nfunction toStringWithPrefix(meta: EntityMetadata, entity: Entity, prefix: string): string {\n // Start with `Author` or `a`, depending on the caller\n let result = prefix;\n // Add `#1` if this is an em.create-d entity\n const data = getInstanceData(entity);\n const createId = data.createId;\n if (createId) {\n result += `#${createId}`;\n }\n // Add the `:1` but only after our flush is complete, otherwise the id is\n // internally assigned but not really flushed/committed to the db yet\n const dbId = entity.idTaggedMaybe;\n if (data.pendingOperation !== \"insert\" && dbId) {\n // Strip the tag because we add back the entity prefix\n result += `:${keyToNumber(meta, dbId)}`;\n }\n return result;\n}\n\n/**\n * The constructor logic for `BaseEntity` but exposed so that `newEntity` can use it too\n * on its `Object.create`-d instances.\n */\nexport function baseEntityCstr(em: EntityManager, entity: BaseEntity<any, any>, isNew: boolean): void {\n const data = new InstanceData(em, entity, (entity.constructor as any).metadata, isNew);\n // This makes it non-enumerable to avoid Jest/recursive things tripping over it\n Object.defineProperty(entity, \"__data\", { value: data, enumerable: false, writable: false, configurable: false });\n}\n"],"mappings":";;;;;;;;;;;;AAiBA,SAAgB,gBAAgB,QAA8B;CAC5D,OAAO,WAAW,gBAAgB,MAAM;AAC1C;;;;;;AAOA,IAAsB,aAAtB,MAAwG;CACtG,OAAc,gBAAgB,QAA8B;EAC1D,OAAQ,OAA2B;CACrC;CAEA;CAIA,YAAY,IAAmB,OAAiB;EAC9C,IAAI,UAAU,KAAA,GACZ,MAAM,IAAI,MAAM,8DAA8D;EAIhF,eAAe,IAAI,MAAM,KAAK;CAChC;CAKA,IAAI,wBAA8B;EAChC,OAAO;CACT;;CAeA,IAAI,aAAqB;EACvB,OAAOA,aAAAA,QAAQC,uBAAAA,YAAY,IAAI,GAAG,KAAK,EAAE;CAC3C;;;;;;;CAoBA,IAAI,cAAuB;EACzB,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,kBAA2B;EAC7B,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,gBAAyB;EAC3B,OAAO,KAAK,OAAO;CACrB;CAEA,WAAmB;EACjB,MAAM,OAAOA,uBAAAA,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,IAAI;CACjD;CAEA,iBAAyB;EACvB,MAAM,OAAOA,uBAAAA,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,OAAO;CACpD;CAEA,IAAW,KAAS;EAClB,OAAO,KAAK,OAAO;CACrB;;;;;;;;CASA,SAAwB;EACtB,OAAO,EAAE,IAAI,KAAK,WAAW,KAAK;CACpC;CAEA,CAAC,OAAO,eAAuB;EAC7B,OAAO,KAAK,SAAS;CACvB;;;;;;CAOA,CAAC,OAAO,IAAI,4BAA4B,KAAa;EACnD,OAAO,KAAK,SAAS;CACvB;AAIF;AAEA,SAAS,mBAAmB,MAAsB,QAAgB,QAAwB;CAExF,IAAI,SAAS;CAEb,MAAM,OAAO,gBAAgB,MAAM;CACnC,MAAM,WAAW,KAAK;CACtB,IAAI,UACF,UAAU,IAAI;CAIhB,MAAM,OAAO,OAAO;CACpB,IAAI,KAAK,qBAAqB,YAAY,MAExC,UAAU,IAAIC,aAAAA,YAAY,MAAM,IAAI;CAEtC,OAAO;AACT;;;;;AAMA,SAAgB,eAAe,IAAmB,QAA8B,OAAsB;CACpG,MAAM,OAAO,IAAIC,qBAAAA,aAAa,IAAI,QAAS,OAAO,YAAoB,UAAU,KAAK;CAErF,OAAO,eAAe,QAAQ,UAAU;EAAE,OAAO;EAAM,YAAY;EAAO,UAAU;EAAO,cAAc;CAAM,CAAC;AAClH"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEntity.js","names":[],"sources":["../src/BaseEntity.ts"],"sourcesContent":["import { type IdType } from \"./Entity.ts\";\nimport {\n type Entity,\n type EntityManager,\n type EntityMetadata,\n InstanceData,\n type TaggedId,\n deTagId,\n getMetadata,\n keyToNumber,\n} from \"./index.ts\";\n\n/**\n * Returns the internal `__data` tracking field for `entity`.\n *\n * This should be treated as an internal API and may change without notice.\n */\nexport function getInstanceData(entity: Entity): InstanceData {\n return BaseEntity.getInstanceData(entity);\n}\n\n/**\n * The base class for all entities.\n *\n * Currently, this just adds the `.load(lensFn)` method for declarative reference traversal.\n */\nexport abstract class BaseEntity<EM extends EntityManager, I extends IdType = IdType> implements Entity {\n public static getInstanceData(entity: Entity): InstanceData {\n return (entity as BaseEntity<any>).__data;\n }\n // We use a protected field so that subclass getters can easily access `this.__data.relations`.\n protected readonly __data!: InstanceData;\n\n /** The single-arg constructor is our psuedo-public API that can only be called by the EntityManager. */\n constructor(em: EntityManager);\n constructor(em: EntityManager, isNew?: boolean) {\n if (isNew === undefined) {\n throw new Error(\"Entities must be constructed by calling em.create or em.load\");\n }\n // This code path won't be reused for real entities, as they go through the `newEntity`\n // construction process that lazifies the relations.\n baseEntityCstr(em, this, isNew);\n }\n\n // This gives rules a way to access the fully typed object instead of their Reacted view.\n // And we make it public so that a function that takes Reacted<...> can accept a Loaded<...>\n // that sufficiently overlaps.\n get fullNonReactiveAccess(): this {\n return this;\n }\n\n /** @returns the entity's id, tagged/untagged based on your config, or a runtime error if it's new/unassigned. */\n abstract id: I;\n\n /** @returns the entity's, tagged/untagged based on your config, or undefined if it's new/unassigned. */\n abstract get idMaybe(): I | undefined;\n\n /** @returns the entity's id, always tagged, or a runtime error if it's new/unassigned. */\n abstract idTagged: TaggedId;\n\n /** @returns the entity's id, always tagged, or undefined if it's new/unassigned. */\n abstract get idTaggedMaybe(): TaggedId | undefined;\n\n /** @returns the entity's id, always untagged, or a runtime error if it's unassigned. */\n get idUntagged(): string {\n return deTagId(getMetadata(this), this.id);\n }\n\n abstract set(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setPartial(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setDeepPartial(opts: unknown): Promise<void>;\n\n /**\n * Returns whether the entity is new.\n *\n * This is not just `this.id === undefined`, because just assigning an id doesn't mean the entity\n * is no longer new; this only flips to `false` after the `flush` transaction has been committed.\n */\n get isNewEntity(): boolean {\n return this.__data.isNewEntity;\n }\n\n get isDeletedEntity(): boolean {\n return this.__data.isDeletedEntity;\n }\n\n get isDirtyEntity(): boolean {\n return this.__data.isDirtyEntity;\n }\n\n toString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.type);\n }\n\n toTaggedString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.tagName);\n }\n\n public get em(): EM {\n return this.__data.em as EM;\n }\n\n /**\n * A very simple toJSON that just returns the id.\n *\n * This is for security reasons, to avoid accidentally logging sensitive data; you\n * can specify more fields, and potentially nested return data, by using passing\n * a {@link JsonHint} to `toJSON`.\n */\n public toJSON(): object {\n return { id: this.idMaybe || null };\n }\n\n [Symbol.toStringTag](): string {\n return this.toString();\n }\n\n /**\n * Hooks into node's `console.log` to avoid sprawling output of our relations/internal state.\n *\n * See https://nodejs.org/api/util.html#custom-inspection-functions-on-objects.\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")](): string {\n return this.toString();\n }\n\n /** A bag of non-persisted state, typically for flags that control business logic behavior. */\n declare readonly transientFields: Record<string, unknown>;\n}\n\nfunction toStringWithPrefix(meta: EntityMetadata, entity: Entity, prefix: string): string {\n // Start with `Author` or `a`, depending on the caller\n let result = prefix;\n // Add `#1` if this is an em.create-d entity\n const data = getInstanceData(entity);\n const createId = data.createId;\n if (createId) {\n result += `#${createId}`;\n }\n // Add the `:1` but only after our flush is complete, otherwise the id is\n // internally assigned but not really flushed/committed to the db yet\n const dbId = entity.idTaggedMaybe;\n if (data.pendingOperation !== \"insert\" && dbId) {\n // Strip the tag because we add back the entity prefix\n result += `:${keyToNumber(meta, dbId)}`;\n }\n return result;\n}\n\n/**\n * The constructor logic for `BaseEntity` but exposed so that `newEntity` can use it too\n * on its `Object.create`-d instances.\n */\nexport function baseEntityCstr(em: EntityManager, entity: BaseEntity<any, any>, isNew: boolean): void {\n const data = new InstanceData(em, entity, (entity.constructor as any).metadata, isNew);\n // This makes it non-enumerable to avoid Jest/recursive things tripping over it\n Object.defineProperty(entity, \"__data\", { value: data, enumerable: false, writable: false, configurable: false });\n}\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,gBAAgB,QAA8B;CAC5D,OAAO,WAAW,gBAAgB,MAAM;AAC1C;;;;;;AAOA,IAAsB,aAAtB,MAAwG;CACtG,OAAc,gBAAgB,QAA8B;EAC1D,OAAQ,OAA2B;CACrC;CAEA;CAIA,YAAY,IAAmB,OAAiB;EAC9C,IAAI,UAAU,KAAA,GACZ,MAAM,IAAI,MAAM,8DAA8D;EAIhF,eAAe,IAAI,MAAM,KAAK;CAChC;CAKA,IAAI,wBAA8B;EAChC,OAAO;CACT;;CAeA,IAAI,aAAqB;EACvB,OAAO,QAAQ,YAAY,IAAI,GAAG,KAAK,EAAE;CAC3C;;;;;;;CAoBA,IAAI,cAAuB;EACzB,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,kBAA2B;EAC7B,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,gBAAyB;EAC3B,OAAO,KAAK,OAAO;CACrB;CAEA,WAAmB;EACjB,MAAM,OAAO,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,IAAI;CACjD;CAEA,iBAAyB;EACvB,MAAM,OAAO,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,OAAO;CACpD;CAEA,IAAW,KAAS;EAClB,OAAO,KAAK,OAAO;CACrB;;;;;;;;CASA,SAAwB;EACtB,OAAO,EAAE,IAAI,KAAK,WAAW,KAAK;CACpC;CAEA,CAAC,OAAO,eAAuB;EAC7B,OAAO,KAAK,SAAS;CACvB;;;;;;CAOA,CAAC,OAAO,IAAI,4BAA4B,KAAa;EACnD,OAAO,KAAK,SAAS;CACvB;AAIF;AAEA,SAAS,mBAAmB,MAAsB,QAAgB,QAAwB;CAExF,IAAI,SAAS;CAEb,MAAM,OAAO,gBAAgB,MAAM;CACnC,MAAM,WAAW,KAAK;CACtB,IAAI,UACF,UAAU,IAAI;CAIhB,MAAM,OAAO,OAAO;CACpB,IAAI,KAAK,qBAAqB,YAAY,MAExC,UAAU,IAAI,YAAY,MAAM,IAAI;CAEtC,OAAO;AACT;;;;;AAMA,SAAgB,eAAe,IAAmB,QAA8B,OAAsB;CACpG,MAAM,OAAO,IAAI,aAAa,IAAI,QAAS,OAAO,YAAoB,UAAU,KAAK;CAErF,OAAO,eAAe,QAAQ,UAAU;EAAE,OAAO;EAAM,YAAY;EAAO,UAAU;EAAO,cAAc;CAAM,CAAC;AAClH"}
1
+ {"version":3,"file":"BaseEntity.js","names":[],"sources":["../src/BaseEntity.ts"],"sourcesContent":["import { type IdType } from \"src/Entity.ts\";\nimport {\n type Entity,\n type EntityManager,\n type EntityMetadata,\n InstanceData,\n type TaggedId,\n deTagId,\n getMetadata,\n keyToNumber,\n} from \"src/index.ts\";\n\n/**\n * Returns the internal `__data` tracking field for `entity`.\n *\n * This should be treated as an internal API and may change without notice.\n */\nexport function getInstanceData(entity: Entity): InstanceData {\n return BaseEntity.getInstanceData(entity);\n}\n\n/**\n * The base class for all entities.\n *\n * Currently, this just adds the `.load(lensFn)` method for declarative reference traversal.\n */\nexport abstract class BaseEntity<EM extends EntityManager, I extends IdType = IdType> implements Entity {\n public static getInstanceData(entity: Entity): InstanceData {\n return (entity as BaseEntity<any>).__data;\n }\n // We use a protected field so that subclass getters can easily access `this.__data.relations`.\n protected readonly __data!: InstanceData;\n\n /** The single-arg constructor is our psuedo-public API that can only be called by the EntityManager. */\n constructor(em: EntityManager);\n constructor(em: EntityManager, isNew?: boolean) {\n if (isNew === undefined) {\n throw new Error(\"Entities must be constructed by calling em.create or em.load\");\n }\n // This code path won't be reused for real entities, as they go through the `newEntity`\n // construction process that lazifies the relations.\n baseEntityCstr(em, this, isNew);\n }\n\n // This gives rules a way to access the fully typed object instead of their Reacted view.\n // And we make it public so that a function that takes Reacted<...> can accept a Loaded<...>\n // that sufficiently overlaps.\n get fullNonReactiveAccess(): this {\n return this;\n }\n\n /** @returns the entity's id, tagged/untagged based on your config, or a runtime error if it's new/unassigned. */\n abstract id: I;\n\n /** @returns the entity's, tagged/untagged based on your config, or undefined if it's new/unassigned. */\n abstract get idMaybe(): I | undefined;\n\n /** @returns the entity's id, always tagged, or a runtime error if it's new/unassigned. */\n abstract idTagged: TaggedId;\n\n /** @returns the entity's id, always tagged, or undefined if it's new/unassigned. */\n abstract get idTaggedMaybe(): TaggedId | undefined;\n\n /** @returns the entity's id, always untagged, or a runtime error if it's unassigned. */\n get idUntagged(): string {\n return deTagId(getMetadata(this), this.id);\n }\n\n abstract set(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setPartial(opts: unknown): void;\n\n /**\n * Similar to `set` but applies \"Partial API\" semantics, i.e. `null` means unset and `undefined` means don't change.\n */\n abstract setDeepPartial(opts: unknown): Promise<void>;\n\n /**\n * Returns whether the entity is new.\n *\n * This is not just `this.id === undefined`, because just assigning an id doesn't mean the entity\n * is no longer new; this only flips to `false` after the `flush` transaction has been committed.\n */\n get isNewEntity(): boolean {\n return this.__data.isNewEntity;\n }\n\n get isDeletedEntity(): boolean {\n return this.__data.isDeletedEntity;\n }\n\n get isDirtyEntity(): boolean {\n return this.__data.isDirtyEntity;\n }\n\n toString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.type);\n }\n\n toTaggedString(): string {\n const meta = getMetadata(this);\n return toStringWithPrefix(meta, this, meta.tagName);\n }\n\n public get em(): EM {\n return this.__data.em as EM;\n }\n\n /**\n * A very simple toJSON that just returns the id.\n *\n * This is for security reasons, to avoid accidentally logging sensitive data; you\n * can specify more fields, and potentially nested return data, by using passing\n * a {@link JsonHint} to `toJSON`.\n */\n public toJSON(): object {\n return { id: this.idMaybe || null };\n }\n\n [Symbol.toStringTag](): string {\n return this.toString();\n }\n\n /**\n * Hooks into node's `console.log` to avoid sprawling output of our relations/internal state.\n *\n * See https://nodejs.org/api/util.html#custom-inspection-functions-on-objects.\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")](): string {\n return this.toString();\n }\n\n /** A bag of non-persisted state, typically for flags that control business logic behavior. */\n declare readonly transientFields: Record<string, unknown>;\n}\n\nfunction toStringWithPrefix(meta: EntityMetadata, entity: Entity, prefix: string): string {\n // Start with `Author` or `a`, depending on the caller\n let result = prefix;\n // Add `#1` if this is an em.create-d entity\n const data = getInstanceData(entity);\n const createId = data.createId;\n if (createId) {\n result += `#${createId}`;\n }\n // Add the `:1` but only after our flush is complete, otherwise the id is\n // internally assigned but not really flushed/committed to the db yet\n const dbId = entity.idTaggedMaybe;\n if (data.pendingOperation !== \"insert\" && dbId) {\n // Strip the tag because we add back the entity prefix\n result += `:${keyToNumber(meta, dbId)}`;\n }\n return result;\n}\n\n/**\n * The constructor logic for `BaseEntity` but exposed so that `newEntity` can use it too\n * on its `Object.create`-d instances.\n */\nexport function baseEntityCstr(em: EntityManager, entity: BaseEntity<any, any>, isNew: boolean): void {\n const data = new InstanceData(em, entity, (entity.constructor as any).metadata, isNew);\n // This makes it non-enumerable to avoid Jest/recursive things tripping over it\n Object.defineProperty(entity, \"__data\", { value: data, enumerable: false, writable: false, configurable: false });\n}\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,gBAAgB,QAA8B;CAC5D,OAAO,WAAW,gBAAgB,MAAM;AAC1C;;;;;;AAOA,IAAsB,aAAtB,MAAwG;CACtG,OAAc,gBAAgB,QAA8B;EAC1D,OAAQ,OAA2B;CACrC;CAEA;CAIA,YAAY,IAAmB,OAAiB;EAC9C,IAAI,UAAU,KAAA,GACZ,MAAM,IAAI,MAAM,8DAA8D;EAIhF,eAAe,IAAI,MAAM,KAAK;CAChC;CAKA,IAAI,wBAA8B;EAChC,OAAO;CACT;;CAeA,IAAI,aAAqB;EACvB,OAAO,QAAQ,YAAY,IAAI,GAAG,KAAK,EAAE;CAC3C;;;;;;;CAoBA,IAAI,cAAuB;EACzB,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,kBAA2B;EAC7B,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,gBAAyB;EAC3B,OAAO,KAAK,OAAO;CACrB;CAEA,WAAmB;EACjB,MAAM,OAAO,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,IAAI;CACjD;CAEA,iBAAyB;EACvB,MAAM,OAAO,YAAY,IAAI;EAC7B,OAAO,mBAAmB,MAAM,MAAM,KAAK,OAAO;CACpD;CAEA,IAAW,KAAS;EAClB,OAAO,KAAK,OAAO;CACrB;;;;;;;;CASA,SAAwB;EACtB,OAAO,EAAE,IAAI,KAAK,WAAW,KAAK;CACpC;CAEA,CAAC,OAAO,eAAuB;EAC7B,OAAO,KAAK,SAAS;CACvB;;;;;;CAOA,CAAC,OAAO,IAAI,4BAA4B,KAAa;EACnD,OAAO,KAAK,SAAS;CACvB;AAIF;AAEA,SAAS,mBAAmB,MAAsB,QAAgB,QAAwB;CAExF,IAAI,SAAS;CAEb,MAAM,OAAO,gBAAgB,MAAM;CACnC,MAAM,WAAW,KAAK;CACtB,IAAI,UACF,UAAU,IAAI;CAIhB,MAAM,OAAO,OAAO;CACpB,IAAI,KAAK,qBAAqB,YAAY,MAExC,UAAU,IAAI,YAAY,MAAM,IAAI;CAEtC,OAAO;AACT;;;;;AAMA,SAAgB,eAAe,IAAmB,QAA8B,OAAsB;CACpG,MAAM,OAAO,IAAI,aAAa,IAAI,QAAS,OAAO,YAAoB,UAAU,KAAK;CAErF,OAAO,eAAe,QAAQ,UAAU;EAAE,OAAO;EAAM,YAAY;EAAO,UAAU;EAAO,cAAc;CAAM,CAAC;AAClH"}
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.cjs","names":["BaseEntity"],"sources":["../src/Entity.ts"],"sourcesContent":["import { type EntityManager, type TaggedId } from \"./EntityManager.ts\";\nimport { BaseEntity } from \"./index.ts\";\n\nexport function isEntity(maybeEntity: unknown): maybeEntity is Entity {\n return maybeEntity instanceof BaseEntity;\n}\n\n/** All the types we support for entity `id` fields. */\nexport type IdType = number | string;\n\n/** A marker/base interface for all of our entity types. */\nexport interface Entity {\n /** The entity id, either tagged or untagged; the per-application `Entity` will specialize appropriately. */\n id: IdType;\n idMaybe: IdType | undefined;\n /** The entity id that is always tagged, regardless of the idType config. */\n idTagged: TaggedId;\n idTaggedMaybe: TaggedId | undefined;\n readonly em: EntityManager;\n readonly isNewEntity: boolean;\n readonly isDeletedEntity: boolean;\n readonly isDirtyEntity: boolean;\n readonly transientFields: Record<string, unknown>;\n set(opts: unknown): void;\n setPartial(opts: unknown): void;\n setDeepPartial(opts: unknown): Promise<void>;\n /**\n * Returns `type:id`, i.e. `Author:1` for persisted entities and `Author#1` for new entities.\n *\n * Once an entity is persisted, we'll return `Author#1:1` to denote \"the previously-new author #1\n * is now authors row id=1 in the database\".\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toString(): string;\n /**\n * Returns `tag:id`, i.e. `a:1` for persisted entities and `a#1` for new entities.\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toTaggedString(): string;\n}\n"],"mappings":";;;;;AAGA,SAAgB,SAAS,aAA6C;CACpE,OAAO,uBAAuBA,mBAAAA;AAChC"}
1
+ {"version":3,"file":"Entity.cjs","names":["BaseEntity"],"sources":["../src/Entity.ts"],"sourcesContent":["import { type EntityManager, type TaggedId } from \"src/EntityManager.ts\";\nimport { BaseEntity } from \"src/index.ts\";\n\nexport function isEntity(maybeEntity: unknown): maybeEntity is Entity {\n return maybeEntity instanceof BaseEntity;\n}\n\n/** All the types we support for entity `id` fields. */\nexport type IdType = number | string;\n\n/** A marker/base interface for all of our entity types. */\nexport interface Entity {\n /** The entity id, either tagged or untagged; the per-application `Entity` will specialize appropriately. */\n id: IdType;\n idMaybe: IdType | undefined;\n /** The entity id that is always tagged, regardless of the idType config. */\n idTagged: TaggedId;\n idTaggedMaybe: TaggedId | undefined;\n readonly em: EntityManager;\n readonly isNewEntity: boolean;\n readonly isDeletedEntity: boolean;\n readonly isDirtyEntity: boolean;\n readonly transientFields: Record<string, unknown>;\n set(opts: unknown): void;\n setPartial(opts: unknown): void;\n setDeepPartial(opts: unknown): Promise<void>;\n /**\n * Returns `type:id`, i.e. `Author:1` for persisted entities and `Author#1` for new entities.\n *\n * Once an entity is persisted, we'll return `Author#1:1` to denote \"the previously-new author #1\n * is now authors row id=1 in the database\".\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toString(): string;\n /**\n * Returns `tag:id`, i.e. `a:1` for persisted entities and `a#1` for new entities.\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toTaggedString(): string;\n}\n"],"mappings":";;;;;AAGA,SAAgB,SAAS,aAA6C;CACpE,OAAO,uBAAuBA,mBAAAA;AAChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","names":[],"sources":["../src/Entity.ts"],"sourcesContent":["import { type EntityManager, type TaggedId } from \"./EntityManager.ts\";\nimport { BaseEntity } from \"./index.ts\";\n\nexport function isEntity(maybeEntity: unknown): maybeEntity is Entity {\n return maybeEntity instanceof BaseEntity;\n}\n\n/** All the types we support for entity `id` fields. */\nexport type IdType = number | string;\n\n/** A marker/base interface for all of our entity types. */\nexport interface Entity {\n /** The entity id, either tagged or untagged; the per-application `Entity` will specialize appropriately. */\n id: IdType;\n idMaybe: IdType | undefined;\n /** The entity id that is always tagged, regardless of the idType config. */\n idTagged: TaggedId;\n idTaggedMaybe: TaggedId | undefined;\n readonly em: EntityManager;\n readonly isNewEntity: boolean;\n readonly isDeletedEntity: boolean;\n readonly isDirtyEntity: boolean;\n readonly transientFields: Record<string, unknown>;\n set(opts: unknown): void;\n setPartial(opts: unknown): void;\n setDeepPartial(opts: unknown): Promise<void>;\n /**\n * Returns `type:id`, i.e. `Author:1` for persisted entities and `Author#1` for new entities.\n *\n * Once an entity is persisted, we'll return `Author#1:1` to denote \"the previously-new author #1\n * is now authors row id=1 in the database\".\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toString(): string;\n /**\n * Returns `tag:id`, i.e. `a:1` for persisted entities and `a#1` for new entities.\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toTaggedString(): string;\n}\n"],"mappings":";;;;AAGA,SAAgB,SAAS,aAA6C;CACpE,OAAO,uBAAuB;AAChC"}
1
+ {"version":3,"file":"Entity.js","names":[],"sources":["../src/Entity.ts"],"sourcesContent":["import { type EntityManager, type TaggedId } from \"src/EntityManager.ts\";\nimport { BaseEntity } from \"src/index.ts\";\n\nexport function isEntity(maybeEntity: unknown): maybeEntity is Entity {\n return maybeEntity instanceof BaseEntity;\n}\n\n/** All the types we support for entity `id` fields. */\nexport type IdType = number | string;\n\n/** A marker/base interface for all of our entity types. */\nexport interface Entity {\n /** The entity id, either tagged or untagged; the per-application `Entity` will specialize appropriately. */\n id: IdType;\n idMaybe: IdType | undefined;\n /** The entity id that is always tagged, regardless of the idType config. */\n idTagged: TaggedId;\n idTaggedMaybe: TaggedId | undefined;\n readonly em: EntityManager;\n readonly isNewEntity: boolean;\n readonly isDeletedEntity: boolean;\n readonly isDirtyEntity: boolean;\n readonly transientFields: Record<string, unknown>;\n set(opts: unknown): void;\n setPartial(opts: unknown): void;\n setDeepPartial(opts: unknown): Promise<void>;\n /**\n * Returns `type:id`, i.e. `Author:1` for persisted entities and `Author#1` for new entities.\n *\n * Once an entity is persisted, we'll return `Author#1:1` to denote \"the previously-new author #1\n * is now authors row id=1 in the database\".\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toString(): string;\n /**\n * Returns `tag:id`, i.e. `a:1` for persisted entities and `a#1` for new entities.\n *\n * This is meant to be used for developer-facing logging and debugging, and not a user-facing\n * name / display name.\n */\n toTaggedString(): string;\n}\n"],"mappings":";;;;AAGA,SAAgB,SAAS,aAA6C;CACpE,OAAO,uBAAuB;AAChC"}