@lyku/lockstep-core 1.4.0 → 1.5.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 (356) hide show
  1. package/HandlerModel.d.ts +1 -1
  2. package/HandlerModel.d.ts.map +1 -1
  3. package/HttpRoute.d.ts +2 -2
  4. package/HttpRoute.d.ts.map +1 -1
  5. package/MongoCollectionModel.d.ts +1 -1
  6. package/MongoCollectionModel.d.ts.map +1 -1
  7. package/MongoDatabaseModel.d.ts +2 -2
  8. package/MongoDatabaseModel.d.ts.map +1 -1
  9. package/SCHEMA-VERSIONING.md +114 -0
  10. package/TsonHandlerModel.d.ts +1 -1
  11. package/TsonHandlerModel.d.ts.map +1 -1
  12. package/WebSocketRoute.d.ts +1 -1
  13. package/WebSocketRoute.d.ts.map +1 -1
  14. package/bson/AllOfBsonSchema.d.ts +2 -2
  15. package/bson/AllOfBsonSchema.d.ts.map +1 -1
  16. package/bson/AnyOfBsonSchema.d.ts +2 -2
  17. package/bson/AnyOfBsonSchema.d.ts.map +1 -1
  18. package/bson/ArrayBsonSchema.d.ts +1 -1
  19. package/bson/ArrayBsonSchema.d.ts.map +1 -1
  20. package/bson/BooleanBsonSchema.d.ts +1 -1
  21. package/bson/BooleanBsonSchema.d.ts.map +1 -1
  22. package/bson/BsonSchemaOrPrimitive.d.ts +14 -14
  23. package/bson/BsonSchemaOrPrimitive.d.ts.map +1 -1
  24. package/bson/DateBsonSchema.d.ts +1 -1
  25. package/bson/DateBsonSchema.d.ts.map +1 -1
  26. package/bson/DecimalBsonSchema.d.ts +1 -1
  27. package/bson/DecimalBsonSchema.d.ts.map +1 -1
  28. package/bson/DoubleBsonSchema.d.ts +1 -1
  29. package/bson/DoubleBsonSchema.d.ts.map +1 -1
  30. package/bson/EmailBsonSchema.d.ts +1 -1
  31. package/bson/EmailBsonSchema.d.ts.map +1 -1
  32. package/bson/EnumBsonSchema.d.ts +3 -3
  33. package/bson/EnumBsonSchema.d.ts.map +1 -1
  34. package/bson/EnumBsonSchemaOf.d.ts +2 -2
  35. package/bson/EnumBsonSchemaOf.d.ts.map +1 -1
  36. package/bson/FromBsonSchema.d.ts +11 -11
  37. package/bson/FromBsonSchema.d.ts.map +1 -1
  38. package/bson/FromObjectBsonSchema.d.ts +3 -3
  39. package/bson/FromObjectBsonSchema.d.ts.map +1 -1
  40. package/bson/FromObjectSchema.d.ts +3 -3
  41. package/bson/FromObjectSchema.d.ts.map +1 -1
  42. package/bson/FromPropertyBsonSchemas.d.ts +2 -2
  43. package/bson/FromPropertyBsonSchemas.d.ts.map +1 -1
  44. package/bson/IntBsonSchema.d.ts +1 -1
  45. package/bson/IntBsonSchema.d.ts.map +1 -1
  46. package/bson/LongBsonSchema.d.ts +1 -1
  47. package/bson/LongBsonSchema.d.ts.map +1 -1
  48. package/bson/MapBsonSchema.d.ts +5 -5
  49. package/bson/MapBsonSchema.d.ts.map +1 -1
  50. package/bson/NumberBsonSchema.d.ts +4 -4
  51. package/bson/NumberBsonSchema.d.ts.map +1 -1
  52. package/bson/NumberBsonSchemaBase.d.ts +1 -1
  53. package/bson/NumberBsonSchemaBase.d.ts.map +1 -1
  54. package/bson/ObjectBsonSchema.d.ts +1 -1
  55. package/bson/ObjectBsonSchema.d.ts.map +1 -1
  56. package/bson/ObjectIdBsonSchema.d.ts +1 -1
  57. package/bson/ObjectIdBsonSchema.d.ts.map +1 -1
  58. package/bson/OneOfBsonSchema.d.ts +2 -2
  59. package/bson/OneOfBsonSchema.d.ts.map +1 -1
  60. package/bson/OnlyOptionalBson.d.ts +3 -3
  61. package/bson/OnlyOptionalBson.d.ts.map +1 -1
  62. package/bson/OnlyRequiredBson.d.ts +3 -3
  63. package/bson/OnlyRequiredBson.d.ts.map +1 -1
  64. package/bson/PrimitiveOrFromBsonSchema.d.ts +2 -2
  65. package/bson/PrimitiveOrFromBsonSchema.d.ts.map +1 -1
  66. package/bson/RequiredPropOfBson.d.ts +1 -1
  67. package/bson/RequiredPropOfBson.d.ts.map +1 -1
  68. package/bson/StringBsonSchema.d.ts +1 -1
  69. package/bson/StringBsonSchema.d.ts.map +1 -1
  70. package/bson/UidBsonSchema.d.ts +1 -1
  71. package/bson/UidBsonSchema.d.ts.map +1 -1
  72. package/bson/UnionBsonSchema.d.ts +10 -10
  73. package/bson/UnionBsonSchema.d.ts.map +1 -1
  74. package/bson/UuidV4BsonSchema.d.ts +1 -1
  75. package/bson/UuidV4BsonSchema.d.ts.map +1 -1
  76. package/bson/UuidV5BsonSchema.d.ts +1 -1
  77. package/bson/UuidV5BsonSchema.d.ts.map +1 -1
  78. package/bson/WholeNumberBsonSchema.d.ts +1 -1
  79. package/bson/WholeNumberBsonSchema.d.ts.map +1 -1
  80. package/bson2json/allOfBsonToJson.d.ts +2 -2
  81. package/bson2json/allOfBsonToJson.d.ts.map +1 -1
  82. package/bson2json/anyOfBsonToJson.d.ts +2 -2
  83. package/bson2json/anyOfBsonToJson.d.ts.map +1 -1
  84. package/bson2json/arrayBsonToJson.d.ts +2 -2
  85. package/bson2json/arrayBsonToJson.d.ts.map +1 -1
  86. package/bson2json/booleanBsonToJson.d.ts +2 -2
  87. package/bson2json/booleanBsonToJson.d.ts.map +1 -1
  88. package/bson2json/bsonToJson.d.ts +2 -2
  89. package/bson2json/bsonToJson.d.ts.map +1 -1
  90. package/bson2json/bsonToJson.js.map +1 -1
  91. package/bson2json/dateBsonToJson.d.ts +2 -2
  92. package/bson2json/dateBsonToJson.d.ts.map +1 -1
  93. package/bson2json/enumBsonToJson.d.ts +2 -2
  94. package/bson2json/enumBsonToJson.d.ts.map +1 -1
  95. package/bson2json/numberBsonToJson.d.ts +2 -2
  96. package/bson2json/numberBsonToJson.d.ts.map +1 -1
  97. package/bson2json/objectBsonToJson.d.ts +2 -2
  98. package/bson2json/objectBsonToJson.d.ts.map +1 -1
  99. package/bson2json/objectIdBsonToJson.d.ts +2 -2
  100. package/bson2json/objectIdBsonToJson.d.ts.map +1 -1
  101. package/bson2json/oneOfBsonToJson.d.ts +2 -2
  102. package/bson2json/oneOfBsonToJson.d.ts.map +1 -1
  103. package/bson2json/stringBsonToJson.d.ts +2 -2
  104. package/bson2json/stringBsonToJson.d.ts.map +1 -1
  105. package/bson2json/stripBsonType.d.ts +1 -1
  106. package/bson2json/stripBsonType.d.ts.map +1 -1
  107. package/bson2json/wholeBsonToJson.d.ts +2 -2
  108. package/bson2json/wholeBsonToJson.d.ts.map +1 -1
  109. package/generators/generateJsonModels.d.ts +15 -0
  110. package/generators/generateJsonModels.d.ts.map +1 -1
  111. package/generators/generateJsonModels.js +73 -19
  112. package/generators/generateJsonModels.js.map +1 -1
  113. package/generic/NumberJsonSchemaBase.d.ts +1 -1
  114. package/generic/NumberJsonSchemaBase.d.ts.map +1 -1
  115. package/index.d.ts +9 -8
  116. package/index.d.ts.map +1 -1
  117. package/index.js +15 -8
  118. package/index.js.map +1 -1
  119. package/json/ArrayJsonSchema.d.ts +2 -2
  120. package/json/ArrayJsonSchema.d.ts.map +1 -1
  121. package/json/BooleanJsonSchema.d.ts +1 -1
  122. package/json/BooleanJsonSchema.d.ts.map +1 -1
  123. package/json/EnumJsonSchema.d.ts +1 -1
  124. package/json/EnumJsonSchema.d.ts.map +1 -1
  125. package/json/EnumJsonSchemaOf.d.ts +2 -2
  126. package/json/EnumJsonSchemaOf.d.ts.map +1 -1
  127. package/json/ExclusiveJsonSchema.d.ts +2 -2
  128. package/json/ExclusiveJsonSchema.d.ts.map +1 -1
  129. package/json/FromJsonSchema.d.ts +10 -10
  130. package/json/FromJsonSchema.d.ts.map +1 -1
  131. package/json/FromObjectJsonSchema.d.ts +3 -3
  132. package/json/FromObjectJsonSchema.d.ts.map +1 -1
  133. package/json/FromPropertySchemasJson.d.ts +2 -2
  134. package/json/FromPropertySchemasJson.d.ts.map +1 -1
  135. package/json/IntegerJsonSchema.d.ts +1 -1
  136. package/json/IntegerJsonSchema.d.ts.map +1 -1
  137. package/json/IntersectionJsonSchema.d.ts +2 -2
  138. package/json/IntersectionJsonSchema.d.ts.map +1 -1
  139. package/json/JsonSchema.d.ts +11 -11
  140. package/json/JsonSchema.d.ts.map +1 -1
  141. package/json/JsonSchemaOrPrimitive.d.ts +2 -2
  142. package/json/JsonSchemaOrPrimitive.d.ts.map +1 -1
  143. package/json/MapJsonSchema.d.ts +5 -5
  144. package/json/MapJsonSchema.d.ts.map +1 -1
  145. package/json/NumberJsonSchema.d.ts +1 -1
  146. package/json/NumberJsonSchema.d.ts.map +1 -1
  147. package/json/ObjectIdJsonSchema.d.ts +1 -1
  148. package/json/ObjectIdJsonSchema.d.ts.map +1 -1
  149. package/json/ObjectJsonSchema.d.ts +2 -2
  150. package/json/ObjectJsonSchema.d.ts.map +1 -1
  151. package/json/OneOfJsonSchema.d.ts +2 -2
  152. package/json/OneOfJsonSchema.d.ts.map +1 -1
  153. package/json/OnlyOptionalJson.d.ts +3 -3
  154. package/json/OnlyOptionalJson.d.ts.map +1 -1
  155. package/json/OnlyRequiredJson.d.ts +3 -3
  156. package/json/OnlyRequiredJson.d.ts.map +1 -1
  157. package/json/PrimitiveOrFromJsonSchema.d.ts +3 -3
  158. package/json/PrimitiveOrFromJsonSchema.d.ts.map +1 -1
  159. package/json/RequiredPropOfJson.d.ts +1 -1
  160. package/json/RequiredPropOfJson.d.ts.map +1 -1
  161. package/json/StringJsonSchema.d.ts +1 -1
  162. package/json/StringJsonSchema.d.ts.map +1 -1
  163. package/json/UidJsonSchema.d.ts +1 -1
  164. package/json/UidJsonSchema.d.ts.map +1 -1
  165. package/json/UnionJsonSchema.d.ts +2 -2
  166. package/json/UnionJsonSchema.d.ts.map +1 -1
  167. package/json/UuidV4JsonSchema.d.ts +1 -1
  168. package/json/UuidV4JsonSchema.d.ts.map +1 -1
  169. package/json/UuidV5JsonSchema.d.ts +1 -1
  170. package/json/UuidV5JsonSchema.d.ts.map +1 -1
  171. package/json/WholeNumberSchema.d.ts +1 -1
  172. package/json/WholeNumberSchema.d.ts.map +1 -1
  173. package/jsonToType/jsonToType.d.ts +1 -1
  174. package/jsonToType/jsonToType.d.ts.map +1 -1
  175. package/package.json +3 -2
  176. package/postgres/FromPostgresPropertySchemas.d.ts +2 -2
  177. package/postgres/FromPostgresPropertySchemas.d.ts.map +1 -1
  178. package/postgres/PostgresColumnBase.d.ts +1 -1
  179. package/postgres/PostgresColumnBase.d.ts.map +1 -1
  180. package/postgres/PostgresColumnModel.d.ts +3 -3
  181. package/postgres/PostgresColumnModel.d.ts.map +1 -1
  182. package/postgres/PostgresDatabaseModel.d.ts +2 -2
  183. package/postgres/PostgresDatabaseModel.d.ts.map +1 -1
  184. package/postgres/PostgresRecordModel.d.ts +5 -4
  185. package/postgres/PostgresRecordModel.d.ts.map +1 -1
  186. package/postgres/PostgresTableModel.d.ts +10 -4
  187. package/postgres/PostgresTableModel.d.ts.map +1 -1
  188. package/postgres/RequiredPropOf.d.ts +1 -1
  189. package/postgres/RequiredPropOf.d.ts.map +1 -1
  190. package/postgres/columns/Array.d.ts +2 -2
  191. package/postgres/columns/Array.d.ts.map +1 -1
  192. package/postgres/columns/Boolean.d.ts +1 -1
  193. package/postgres/columns/Boolean.d.ts.map +1 -1
  194. package/postgres/columns/Bytea.d.ts +1 -1
  195. package/postgres/columns/Bytea.d.ts.map +1 -1
  196. package/postgres/columns/Enum.d.ts +1 -1
  197. package/postgres/columns/Enum.d.ts.map +1 -1
  198. package/postgres/columns/Jsonb.d.ts +13 -2
  199. package/postgres/columns/Jsonb.d.ts.map +1 -1
  200. package/postgres/columns/numeric/BigInt.d.ts +1 -1
  201. package/postgres/columns/numeric/BigInt.d.ts.map +1 -1
  202. package/postgres/columns/numeric/BigSerial.d.ts +1 -1
  203. package/postgres/columns/numeric/BigSerial.d.ts.map +1 -1
  204. package/postgres/columns/numeric/Double.d.ts +1 -1
  205. package/postgres/columns/numeric/Double.d.ts.map +1 -1
  206. package/postgres/columns/numeric/Integer.d.ts +1 -1
  207. package/postgres/columns/numeric/Integer.d.ts.map +1 -1
  208. package/postgres/columns/numeric/Money.d.ts +1 -1
  209. package/postgres/columns/numeric/Money.d.ts.map +1 -1
  210. package/postgres/columns/numeric/NumberBase.d.ts +1 -1
  211. package/postgres/columns/numeric/NumberBase.d.ts.map +1 -1
  212. package/postgres/columns/numeric/Numeric.d.ts +1 -1
  213. package/postgres/columns/numeric/Numeric.d.ts.map +1 -1
  214. package/postgres/columns/numeric/Real.d.ts +1 -1
  215. package/postgres/columns/numeric/Real.d.ts.map +1 -1
  216. package/postgres/columns/numeric/Serial.d.ts +1 -1
  217. package/postgres/columns/numeric/Serial.d.ts.map +1 -1
  218. package/postgres/columns/numeric/SmallInt.d.ts +1 -1
  219. package/postgres/columns/numeric/SmallInt.d.ts.map +1 -1
  220. package/postgres/columns/numeric/SmallSerial.d.ts +1 -1
  221. package/postgres/columns/numeric/SmallSerial.d.ts.map +1 -1
  222. package/postgres/columns/numeric/Snowflake.d.ts +16 -0
  223. package/postgres/columns/numeric/Snowflake.d.ts.map +1 -0
  224. package/postgres/columns/numeric/Snowflake.js +2 -0
  225. package/postgres/columns/numeric/Snowflake.js.map +1 -0
  226. package/postgres/columns/numeric/index.d.ts +1 -0
  227. package/postgres/columns/numeric/index.d.ts.map +1 -1
  228. package/postgres/columns/numeric/index.js +1 -0
  229. package/postgres/columns/numeric/index.js.map +1 -1
  230. package/postgres/columns/temporal/Date.d.ts +1 -1
  231. package/postgres/columns/temporal/Date.d.ts.map +1 -1
  232. package/postgres/columns/temporal/Time.d.ts +1 -1
  233. package/postgres/columns/temporal/Time.d.ts.map +1 -1
  234. package/postgres/columns/temporal/Timestamp.d.ts +1 -1
  235. package/postgres/columns/temporal/Timestamp.d.ts.map +1 -1
  236. package/postgres/columns/temporal/TimestampBase.d.ts +1 -1
  237. package/postgres/columns/temporal/TimestampBase.d.ts.map +1 -1
  238. package/postgres/columns/temporal/Timestamptz.d.ts +1 -1
  239. package/postgres/columns/temporal/Timestamptz.d.ts.map +1 -1
  240. package/postgres/columns/textual/Char.d.ts +1 -1
  241. package/postgres/columns/textual/Char.d.ts.map +1 -1
  242. package/postgres/columns/textual/Text.d.ts +1 -1
  243. package/postgres/columns/textual/Text.d.ts.map +1 -1
  244. package/postgres/columns/textual/Varchar.d.ts +1 -1
  245. package/postgres/columns/textual/Varchar.d.ts.map +1 -1
  246. package/postgres/postgresColumnToJson.d.ts +2 -2
  247. package/postgres/postgresColumnToJson.d.ts.map +1 -1
  248. package/postgres/postgresColumnToTson.d.ts +2 -2
  249. package/postgres/postgresColumnToTson.d.ts.map +1 -1
  250. package/postgres/postgresColumnToTson.js +1 -0
  251. package/postgres/postgresColumnToTson.js.map +1 -1
  252. package/postgres/postgresRecordToTson.d.ts +2 -2
  253. package/postgres/postgresRecordToTson.d.ts.map +1 -1
  254. package/postgres/postgresRecordToTson.js +5 -0
  255. package/postgres/postgresRecordToTson.js.map +1 -1
  256. package/schemaVersion.d.ts +20 -0
  257. package/schemaVersion.d.ts.map +1 -0
  258. package/schemaVersion.js +27 -0
  259. package/schemaVersion.js.map +1 -0
  260. package/tson/ArrayTsonSchema.d.ts +2 -2
  261. package/tson/ArrayTsonSchema.d.ts.map +1 -1
  262. package/tson/BigIntTsonSchema.d.ts +1 -1
  263. package/tson/BigIntTsonSchema.d.ts.map +1 -1
  264. package/tson/BooleanTsonSchema.d.ts +1 -1
  265. package/tson/BooleanTsonSchema.d.ts.map +1 -1
  266. package/tson/DateTsonSchema.d.ts +1 -1
  267. package/tson/DateTsonSchema.d.ts.map +1 -1
  268. package/tson/EnumTsonSchema.d.ts +1 -1
  269. package/tson/EnumTsonSchema.d.ts.map +1 -1
  270. package/tson/EnumTsonSchemaOf.d.ts +2 -2
  271. package/tson/EnumTsonSchemaOf.d.ts.map +1 -1
  272. package/tson/ExclusiveTsonSchema.d.ts +2 -2
  273. package/tson/ExclusiveTsonSchema.d.ts.map +1 -1
  274. package/tson/FromObjectTsonSchema.d.ts +3 -3
  275. package/tson/FromObjectTsonSchema.d.ts.map +1 -1
  276. package/tson/FromPropertySchemasTson.d.ts +2 -2
  277. package/tson/FromPropertySchemasTson.d.ts.map +1 -1
  278. package/tson/FromTsonSchema.d.ts +10 -10
  279. package/tson/FromTsonSchema.d.ts.map +1 -1
  280. package/tson/IntersectionTsonSchema.d.ts +2 -2
  281. package/tson/IntersectionTsonSchema.d.ts.map +1 -1
  282. package/tson/MapTsonSchema.d.ts +5 -5
  283. package/tson/MapTsonSchema.d.ts.map +1 -1
  284. package/tson/NumberTsonSchema.d.ts +1 -1
  285. package/tson/NumberTsonSchema.d.ts.map +1 -1
  286. package/tson/ObjectTsonSchema.d.ts +3 -2
  287. package/tson/ObjectTsonSchema.d.ts.map +1 -1
  288. package/tson/OneOfTsonSchema.d.ts +2 -2
  289. package/tson/OneOfTsonSchema.d.ts.map +1 -1
  290. package/tson/OnlyOptionalTson.d.ts +3 -3
  291. package/tson/OnlyOptionalTson.d.ts.map +1 -1
  292. package/tson/OnlyRequiredTson.d.ts +3 -3
  293. package/tson/OnlyRequiredTson.d.ts.map +1 -1
  294. package/tson/PrimitiveOrFromTsonSchema.d.ts +3 -3
  295. package/tson/PrimitiveOrFromTsonSchema.d.ts.map +1 -1
  296. package/tson/RequiredPropOfTson.d.ts +1 -1
  297. package/tson/RequiredPropOfTson.d.ts.map +1 -1
  298. package/tson/StringTsonSchema.d.ts +1 -1
  299. package/tson/StringTsonSchema.d.ts.map +1 -1
  300. package/tson/TsonSchema.d.ts +13 -13
  301. package/tson/TsonSchema.d.ts.map +1 -1
  302. package/tson/TsonSchemaOrPrimitive.d.ts +2 -2
  303. package/tson/TsonSchemaOrPrimitive.d.ts.map +1 -1
  304. package/tson/UnionTsonSchema.d.ts +2 -2
  305. package/tson/UnionTsonSchema.d.ts.map +1 -1
  306. package/tson/parseBON.d.ts.map +1 -1
  307. package/tson/parseBON.js +0 -15
  308. package/tson/parseBON.js.map +1 -1
  309. package/tson/stringifyBON.js +1 -1
  310. package/tson/stringifyBON.js.map +1 -1
  311. package/tsonToType.d.ts +1 -1
  312. package/tsonToType.d.ts.map +1 -1
  313. package/tsonValidator/buildArrayValidator.d.ts +1 -1
  314. package/tsonValidator/buildArrayValidator.d.ts.map +1 -1
  315. package/tsonValidator/buildBigintValidator.d.ts +1 -1
  316. package/tsonValidator/buildBigintValidator.d.ts.map +1 -1
  317. package/tsonValidator/buildBooleanValidator.d.ts +2 -2
  318. package/tsonValidator/buildBooleanValidator.d.ts.map +1 -1
  319. package/tsonValidator/buildDateValidator.d.ts +2 -2
  320. package/tsonValidator/buildDateValidator.d.ts.map +1 -1
  321. package/tsonValidator/buildEnumValidator.d.ts +2 -2
  322. package/tsonValidator/buildEnumValidator.d.ts.map +1 -1
  323. package/tsonValidator/buildNumberValidator.d.ts +1 -1
  324. package/tsonValidator/buildNumberValidator.d.ts.map +1 -1
  325. package/tsonValidator/buildObjectValidator.d.ts +2 -2
  326. package/tsonValidator/buildObjectValidator.d.ts.map +1 -1
  327. package/tsonValidator/buildOneOfValidator.d.ts +1 -1
  328. package/tsonValidator/buildOneOfValidator.d.ts.map +1 -1
  329. package/tsonValidator/buildStringValidator.d.ts +1 -1
  330. package/tsonValidator/buildStringValidator.d.ts.map +1 -1
  331. package/tsonValidator/buildValidator.d.ts +2 -2
  332. package/tsonValidator/buildValidator.d.ts.map +1 -1
  333. package/tsonValidator/testUtils.d.ts +1 -1
  334. package/tsonValidator/testUtils.d.ts.map +1 -1
  335. package/typeverters/bsonToType.d.ts +1 -1
  336. package/typeverters/bsonToType.d.ts.map +1 -1
  337. package/typeverters/postgresColumnToKysely.d.ts +1 -1
  338. package/typeverters/postgresColumnToKysely.d.ts.map +1 -1
  339. package/typeverters/postgresColumnToKysely.js +1 -0
  340. package/typeverters/postgresColumnToKysely.js.map +1 -1
  341. package/typeverters/postgresColumnToType.d.ts +1 -1
  342. package/typeverters/postgresColumnToType.d.ts.map +1 -1
  343. package/typeverters/postgresColumnToType.js +3 -0
  344. package/typeverters/postgresColumnToType.js.map +1 -1
  345. package/typeverters/postgresRecordToKysely.d.ts +1 -1
  346. package/typeverters/postgresRecordToKysely.d.ts.map +1 -1
  347. package/typeverters/postgresRecordToType.d.ts +1 -1
  348. package/typeverters/postgresRecordToType.d.ts.map +1 -1
  349. package/version-check.d.ts +33 -0
  350. package/version-check.d.ts.map +1 -0
  351. package/version-check.js +119 -0
  352. package/version-check.js.map +1 -0
  353. package/versionCheck.d.ts +52 -0
  354. package/versionCheck.d.ts.map +1 -0
  355. package/versionCheck.js +137 -0
  356. package/versionCheck.js.map +1 -0
@@ -0,0 +1,137 @@
1
+ /* eslint-disable security/detect-object-injection -- keys come from Object.keys of the same object; no external-input indexing */
2
+ // Pure core of the schema-version biconditional check (SCHEMA-VERSIONING.md).
3
+ //
4
+ // Asserts, per versioned model: schema-bytes-changed ⟺ version-changed — in
5
+ // BOTH directions. A change without a bump ships a stale reconcile key; a bump
6
+ // without a change ("phantom bump") needlessly invalidates every client's
7
+ // replicas of that model. Doc-metadata edits must NOT count as schema changes
8
+ // (or they'd trigger false bumps and refetch storms).
9
+ //
10
+ // This module is pure and deterministic — no git, no fs, no process. The bin
11
+ // (version-check.ts) is a thin shell that loads the two model maps (current
12
+ // working tree + a base git ref) and feeds them here. All the correctness lives
13
+ // here so it can be unit-tested without git.
14
+ import { stringifyBON } from './tson/stringifyBON';
15
+ import { createHash } from 'node:crypto';
16
+ /**
17
+ * Keys excluded from the structure hash:
18
+ * - documentation metadata (title/description/examples/notes/docs) — editing a
19
+ * doc string must not look like a schema change.
20
+ * - `version` itself — it is compared separately; including it would make every
21
+ * bump also register as a structure change, defeating the biconditional.
22
+ * `default` is deliberately NOT excluded: a column default is a real DDL/schema
23
+ * change that should require a bump.
24
+ */
25
+ export const HASH_EXCLUDED_KEYS = new Set([
26
+ 'version',
27
+ 'title',
28
+ 'description',
29
+ 'examples',
30
+ 'notes',
31
+ 'docs',
32
+ ]);
33
+ /**
34
+ * Canonical form: recursively drop excluded keys and sort object keys. Array
35
+ * ORDER is preserved (arrays are treated as ordered — reordering `required` or
36
+ * `enum` is conservatively treated as a change rather than risk equating
37
+ * genuinely-ordered arrays).
38
+ */
39
+ export function canonicalize(value) {
40
+ if (Array.isArray(value))
41
+ return value.map(canonicalize);
42
+ if (value !== null && typeof value === 'object') {
43
+ const src = value;
44
+ const out = {};
45
+ for (const key of Object.keys(src).sort()) {
46
+ if (HASH_EXCLUDED_KEYS.has(key))
47
+ continue;
48
+ out[key] = canonicalize(src[key]);
49
+ }
50
+ return out;
51
+ }
52
+ return value;
53
+ }
54
+ /** Deterministic structure hash of a model (docs + version excluded). */
55
+ export function structureHash(model) {
56
+ return createHash('sha256')
57
+ .update(stringifyBON(canonicalize(model)))
58
+ .digest('hex');
59
+ }
60
+ /** The model's authored version string, or undefined if it has none. */
61
+ export function modelVersion(model) {
62
+ if (model !== null && typeof model === 'object' && 'version' in model) {
63
+ const v = model.version;
64
+ return typeof v === 'string' ? v : undefined;
65
+ }
66
+ return undefined;
67
+ }
68
+ /** A model-like value: an object carrying a `properties` map (record model). */
69
+ export function isModelLike(value) {
70
+ return (value !== null &&
71
+ typeof value === 'object' &&
72
+ 'properties' in value);
73
+ }
74
+ /**
75
+ * Decide one model present in BOTH base and current. The biconditional is
76
+ * enforced only once a model is versioned on BOTH sides — first-time adoption
77
+ * (no base version → current version) and not-yet-adopted models are exempt, so
78
+ * the check doesn't fire on the rollout itself.
79
+ */
80
+ export function decideExisting(name, base, current) {
81
+ const baseV = modelVersion(base);
82
+ const curV = modelVersion(current);
83
+ // Not policed unless versioned on both sides (adoption/un-adoption exempt).
84
+ if (baseV === undefined || curV === undefined)
85
+ return null;
86
+ const structureChanged = structureHash(base) !== structureHash(current);
87
+ const versionChanged = baseV !== curV;
88
+ if (structureChanged && !versionChanged)
89
+ return {
90
+ model: name,
91
+ kind: 'changed-not-bumped',
92
+ detail: `schema changed but version is still ${JSON.stringify(curV)} — bump it (minor for a compatible addition, major for a breaking change)`,
93
+ };
94
+ if (!structureChanged && versionChanged)
95
+ return {
96
+ model: name,
97
+ kind: 'bumped-not-changed',
98
+ detail: `version changed ${JSON.stringify(baseV)} → ${JSON.stringify(curV)} but the schema is byte-identical — a phantom bump needlessly invalidates every client's replicas of "${name}"`,
99
+ };
100
+ return null;
101
+ }
102
+ /**
103
+ * Run the biconditional over two model maps (name → model definition). Only
104
+ * model-like entries are considered (exported helpers/constants are ignored).
105
+ *
106
+ * @param opts.requireVersionOnNew flag a newly-added model that has no version.
107
+ */
108
+ export function checkModels(base, current, opts = {}) {
109
+ const violations = [];
110
+ const added = [];
111
+ const removed = [];
112
+ let checked = 0;
113
+ for (const name of Object.keys(current)) {
114
+ if (!isModelLike(current[name]))
115
+ continue;
116
+ if (!(name in base) || !isModelLike(base[name])) {
117
+ added.push(name);
118
+ if (opts.requireVersionOnNew && modelVersion(current[name]) === undefined)
119
+ violations.push({
120
+ model: name,
121
+ kind: 'missing-version-on-new',
122
+ detail: `new model "${name}" has no version — declare one (e.g. "1.0")`,
123
+ });
124
+ continue;
125
+ }
126
+ checked++;
127
+ const v = decideExisting(name, base[name], current[name]);
128
+ if (v)
129
+ violations.push(v);
130
+ }
131
+ for (const name of Object.keys(base)) {
132
+ if (isModelLike(base[name]) && !(name in current))
133
+ removed.push(name);
134
+ }
135
+ return { violations, checked, added, removed };
136
+ }
137
+ //# sourceMappingURL=versionCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionCheck.js","sourceRoot":"","sources":["../../../libs/lockstep-core/versionCheck.ts"],"names":[],"mappings":"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"}