@lyku/lockstep-core 1.3.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HandlerModel.d.ts +1 -1
- package/HandlerModel.d.ts.map +1 -1
- package/HttpRoute.d.ts +2 -2
- package/HttpRoute.d.ts.map +1 -1
- package/MongoCollectionModel.d.ts +1 -1
- package/MongoCollectionModel.d.ts.map +1 -1
- package/MongoDatabaseModel.d.ts +2 -2
- package/MongoDatabaseModel.d.ts.map +1 -1
- package/README.md +1 -58
- package/SCHEMA-VERSIONING.md +114 -0
- package/TsonHandlerModel.d.ts +1 -1
- package/TsonHandlerModel.d.ts.map +1 -1
- package/WebSocketRoute.d.ts +1 -1
- package/WebSocketRoute.d.ts.map +1 -1
- package/bson/AllOfBsonSchema.d.ts +2 -2
- package/bson/AllOfBsonSchema.d.ts.map +1 -1
- package/bson/AnyOfBsonSchema.d.ts +2 -2
- package/bson/AnyOfBsonSchema.d.ts.map +1 -1
- package/bson/ArrayBsonSchema.d.ts +1 -1
- package/bson/ArrayBsonSchema.d.ts.map +1 -1
- package/bson/BooleanBsonSchema.d.ts +1 -1
- package/bson/BooleanBsonSchema.d.ts.map +1 -1
- package/bson/BsonSchemaOrPrimitive.d.ts +14 -14
- package/bson/BsonSchemaOrPrimitive.d.ts.map +1 -1
- package/bson/DateBsonSchema.d.ts +1 -1
- package/bson/DateBsonSchema.d.ts.map +1 -1
- package/bson/DecimalBsonSchema.d.ts +1 -1
- package/bson/DecimalBsonSchema.d.ts.map +1 -1
- package/bson/DoubleBsonSchema.d.ts +1 -1
- package/bson/DoubleBsonSchema.d.ts.map +1 -1
- package/bson/EmailBsonSchema.d.ts +1 -1
- package/bson/EmailBsonSchema.d.ts.map +1 -1
- package/bson/EnumBsonSchema.d.ts +3 -3
- package/bson/EnumBsonSchema.d.ts.map +1 -1
- package/bson/EnumBsonSchemaOf.d.ts +2 -2
- package/bson/EnumBsonSchemaOf.d.ts.map +1 -1
- package/bson/FromBsonSchema.d.ts +11 -11
- package/bson/FromBsonSchema.d.ts.map +1 -1
- package/bson/FromObjectBsonSchema.d.ts +3 -3
- package/bson/FromObjectBsonSchema.d.ts.map +1 -1
- package/bson/FromObjectSchema.d.ts +3 -3
- package/bson/FromObjectSchema.d.ts.map +1 -1
- package/bson/FromPropertyBsonSchemas.d.ts +2 -2
- package/bson/FromPropertyBsonSchemas.d.ts.map +1 -1
- package/bson/IntBsonSchema.d.ts +1 -1
- package/bson/IntBsonSchema.d.ts.map +1 -1
- package/bson/LongBsonSchema.d.ts +1 -1
- package/bson/LongBsonSchema.d.ts.map +1 -1
- package/bson/MapBsonSchema.d.ts +5 -5
- package/bson/MapBsonSchema.d.ts.map +1 -1
- package/bson/NumberBsonSchema.d.ts +4 -4
- package/bson/NumberBsonSchema.d.ts.map +1 -1
- package/bson/NumberBsonSchemaBase.d.ts +1 -1
- package/bson/NumberBsonSchemaBase.d.ts.map +1 -1
- package/bson/ObjectBsonSchema.d.ts +1 -1
- package/bson/ObjectBsonSchema.d.ts.map +1 -1
- package/bson/ObjectIdBsonSchema.d.ts +1 -1
- package/bson/ObjectIdBsonSchema.d.ts.map +1 -1
- package/bson/OneOfBsonSchema.d.ts +2 -2
- package/bson/OneOfBsonSchema.d.ts.map +1 -1
- package/bson/OnlyOptionalBson.d.ts +3 -3
- package/bson/OnlyOptionalBson.d.ts.map +1 -1
- package/bson/OnlyRequiredBson.d.ts +3 -3
- package/bson/OnlyRequiredBson.d.ts.map +1 -1
- package/bson/PrimitiveOrFromBsonSchema.d.ts +2 -2
- package/bson/PrimitiveOrFromBsonSchema.d.ts.map +1 -1
- package/bson/RequiredPropOfBson.d.ts +1 -1
- package/bson/RequiredPropOfBson.d.ts.map +1 -1
- package/bson/StringBsonSchema.d.ts +1 -1
- package/bson/StringBsonSchema.d.ts.map +1 -1
- package/bson/UidBsonSchema.d.ts +1 -1
- package/bson/UidBsonSchema.d.ts.map +1 -1
- package/bson/UnionBsonSchema.d.ts +10 -10
- package/bson/UnionBsonSchema.d.ts.map +1 -1
- package/bson/UuidV4BsonSchema.d.ts +1 -1
- package/bson/UuidV4BsonSchema.d.ts.map +1 -1
- package/bson/UuidV5BsonSchema.d.ts +1 -1
- package/bson/UuidV5BsonSchema.d.ts.map +1 -1
- package/bson/WholeNumberBsonSchema.d.ts +1 -1
- package/bson/WholeNumberBsonSchema.d.ts.map +1 -1
- package/bson2json/allOfBsonToJson.d.ts +2 -2
- package/bson2json/allOfBsonToJson.d.ts.map +1 -1
- package/bson2json/anyOfBsonToJson.d.ts +2 -2
- package/bson2json/anyOfBsonToJson.d.ts.map +1 -1
- package/bson2json/arrayBsonToJson.d.ts +2 -2
- package/bson2json/arrayBsonToJson.d.ts.map +1 -1
- package/bson2json/booleanBsonToJson.d.ts +2 -2
- package/bson2json/booleanBsonToJson.d.ts.map +1 -1
- package/bson2json/bsonToJson.d.ts +2 -2
- package/bson2json/bsonToJson.d.ts.map +1 -1
- package/bson2json/bsonToJson.js.map +1 -1
- package/bson2json/dateBsonToJson.d.ts +2 -2
- package/bson2json/dateBsonToJson.d.ts.map +1 -1
- package/bson2json/enumBsonToJson.d.ts +2 -2
- package/bson2json/enumBsonToJson.d.ts.map +1 -1
- package/bson2json/numberBsonToJson.d.ts +2 -2
- package/bson2json/numberBsonToJson.d.ts.map +1 -1
- package/bson2json/objectBsonToJson.d.ts +2 -2
- package/bson2json/objectBsonToJson.d.ts.map +1 -1
- package/bson2json/objectIdBsonToJson.d.ts +2 -2
- package/bson2json/objectIdBsonToJson.d.ts.map +1 -1
- package/bson2json/oneOfBsonToJson.d.ts +2 -2
- package/bson2json/oneOfBsonToJson.d.ts.map +1 -1
- package/bson2json/stringBsonToJson.d.ts +2 -2
- package/bson2json/stringBsonToJson.d.ts.map +1 -1
- package/bson2json/stripBsonType.d.ts +1 -1
- package/bson2json/stripBsonType.d.ts.map +1 -1
- package/bson2json/wholeBsonToJson.d.ts +2 -2
- package/bson2json/wholeBsonToJson.d.ts.map +1 -1
- package/diagrams/generate.js +23 -8
- package/diagrams/generate.js.map +1 -1
- package/generators/generateJsonModels.d.ts +15 -0
- package/generators/generateJsonModels.d.ts.map +1 -1
- package/generators/generateJsonModels.js +73 -19
- package/generators/generateJsonModels.js.map +1 -1
- package/generic/NumberJsonSchemaBase.d.ts +1 -1
- package/generic/NumberJsonSchemaBase.d.ts.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +15 -8
- package/index.js.map +1 -1
- package/json/ArrayJsonSchema.d.ts +2 -2
- package/json/ArrayJsonSchema.d.ts.map +1 -1
- package/json/BooleanJsonSchema.d.ts +1 -1
- package/json/BooleanJsonSchema.d.ts.map +1 -1
- package/json/EnumJsonSchema.d.ts +1 -1
- package/json/EnumJsonSchema.d.ts.map +1 -1
- package/json/EnumJsonSchemaOf.d.ts +2 -2
- package/json/EnumJsonSchemaOf.d.ts.map +1 -1
- package/json/ExclusiveJsonSchema.d.ts +2 -2
- package/json/ExclusiveJsonSchema.d.ts.map +1 -1
- package/json/FromJsonSchema.d.ts +10 -10
- package/json/FromJsonSchema.d.ts.map +1 -1
- package/json/FromObjectJsonSchema.d.ts +3 -3
- package/json/FromObjectJsonSchema.d.ts.map +1 -1
- package/json/FromPropertySchemasJson.d.ts +2 -2
- package/json/FromPropertySchemasJson.d.ts.map +1 -1
- package/json/IntegerJsonSchema.d.ts +1 -1
- package/json/IntegerJsonSchema.d.ts.map +1 -1
- package/json/IntersectionJsonSchema.d.ts +2 -2
- package/json/IntersectionJsonSchema.d.ts.map +1 -1
- package/json/JsonSchema.d.ts +11 -11
- package/json/JsonSchema.d.ts.map +1 -1
- package/json/JsonSchemaOrPrimitive.d.ts +2 -2
- package/json/JsonSchemaOrPrimitive.d.ts.map +1 -1
- package/json/MapJsonSchema.d.ts +5 -5
- package/json/MapJsonSchema.d.ts.map +1 -1
- package/json/NumberJsonSchema.d.ts +1 -1
- package/json/NumberJsonSchema.d.ts.map +1 -1
- package/json/ObjectIdJsonSchema.d.ts +1 -1
- package/json/ObjectIdJsonSchema.d.ts.map +1 -1
- package/json/ObjectJsonSchema.d.ts +2 -2
- package/json/ObjectJsonSchema.d.ts.map +1 -1
- package/json/OneOfJsonSchema.d.ts +2 -2
- package/json/OneOfJsonSchema.d.ts.map +1 -1
- package/json/OnlyOptionalJson.d.ts +3 -3
- package/json/OnlyOptionalJson.d.ts.map +1 -1
- package/json/OnlyRequiredJson.d.ts +3 -3
- package/json/OnlyRequiredJson.d.ts.map +1 -1
- package/json/PrimitiveOrFromJsonSchema.d.ts +3 -3
- package/json/PrimitiveOrFromJsonSchema.d.ts.map +1 -1
- package/json/RequiredPropOfJson.d.ts +1 -1
- package/json/RequiredPropOfJson.d.ts.map +1 -1
- package/json/StringJsonSchema.d.ts +1 -1
- package/json/StringJsonSchema.d.ts.map +1 -1
- package/json/UidJsonSchema.d.ts +1 -1
- package/json/UidJsonSchema.d.ts.map +1 -1
- package/json/UnionJsonSchema.d.ts +2 -2
- package/json/UnionJsonSchema.d.ts.map +1 -1
- package/json/UuidV4JsonSchema.d.ts +1 -1
- package/json/UuidV4JsonSchema.d.ts.map +1 -1
- package/json/UuidV5JsonSchema.d.ts +1 -1
- package/json/UuidV5JsonSchema.d.ts.map +1 -1
- package/json/WholeNumberSchema.d.ts +1 -1
- package/json/WholeNumberSchema.d.ts.map +1 -1
- package/jsonToType/jsonToType.d.ts +1 -1
- package/jsonToType/jsonToType.d.ts.map +1 -1
- package/package.json +51 -50
- package/pipeline.svg +1 -0
- package/postgres/FromPostgresPropertySchemas.d.ts +2 -2
- package/postgres/FromPostgresPropertySchemas.d.ts.map +1 -1
- package/postgres/PostgresColumnBase.d.ts +1 -1
- package/postgres/PostgresColumnBase.d.ts.map +1 -1
- package/postgres/PostgresColumnModel.d.ts +3 -3
- package/postgres/PostgresColumnModel.d.ts.map +1 -1
- package/postgres/PostgresDatabaseModel.d.ts +2 -2
- package/postgres/PostgresDatabaseModel.d.ts.map +1 -1
- package/postgres/PostgresRecordModel.d.ts +5 -4
- package/postgres/PostgresRecordModel.d.ts.map +1 -1
- package/postgres/PostgresTableModel.d.ts +10 -4
- package/postgres/PostgresTableModel.d.ts.map +1 -1
- package/postgres/RequiredPropOf.d.ts +1 -1
- package/postgres/RequiredPropOf.d.ts.map +1 -1
- package/postgres/columns/Array.d.ts +2 -2
- package/postgres/columns/Array.d.ts.map +1 -1
- package/postgres/columns/Boolean.d.ts +1 -1
- package/postgres/columns/Boolean.d.ts.map +1 -1
- package/postgres/columns/Bytea.d.ts +1 -1
- package/postgres/columns/Bytea.d.ts.map +1 -1
- package/postgres/columns/Enum.d.ts +1 -1
- package/postgres/columns/Enum.d.ts.map +1 -1
- package/postgres/columns/Jsonb.d.ts +2 -2
- package/postgres/columns/Jsonb.d.ts.map +1 -1
- package/postgres/columns/numeric/BigInt.d.ts +1 -1
- package/postgres/columns/numeric/BigInt.d.ts.map +1 -1
- package/postgres/columns/numeric/BigSerial.d.ts +1 -1
- package/postgres/columns/numeric/BigSerial.d.ts.map +1 -1
- package/postgres/columns/numeric/Double.d.ts +1 -1
- package/postgres/columns/numeric/Double.d.ts.map +1 -1
- package/postgres/columns/numeric/Integer.d.ts +1 -1
- package/postgres/columns/numeric/Integer.d.ts.map +1 -1
- package/postgres/columns/numeric/Money.d.ts +1 -1
- package/postgres/columns/numeric/Money.d.ts.map +1 -1
- package/postgres/columns/numeric/NumberBase.d.ts +1 -1
- package/postgres/columns/numeric/NumberBase.d.ts.map +1 -1
- package/postgres/columns/numeric/Numeric.d.ts +1 -1
- package/postgres/columns/numeric/Numeric.d.ts.map +1 -1
- package/postgres/columns/numeric/Real.d.ts +1 -1
- package/postgres/columns/numeric/Real.d.ts.map +1 -1
- package/postgres/columns/numeric/Serial.d.ts +1 -1
- package/postgres/columns/numeric/Serial.d.ts.map +1 -1
- package/postgres/columns/numeric/SmallInt.d.ts +1 -1
- package/postgres/columns/numeric/SmallInt.d.ts.map +1 -1
- package/postgres/columns/numeric/SmallSerial.d.ts +1 -1
- package/postgres/columns/numeric/SmallSerial.d.ts.map +1 -1
- package/postgres/columns/numeric/Snowflake.d.ts +16 -0
- package/postgres/columns/numeric/Snowflake.d.ts.map +1 -0
- package/postgres/columns/numeric/Snowflake.js +2 -0
- package/postgres/columns/numeric/Snowflake.js.map +1 -0
- package/postgres/columns/numeric/index.d.ts +1 -0
- package/postgres/columns/numeric/index.d.ts.map +1 -1
- package/postgres/columns/numeric/index.js +1 -0
- package/postgres/columns/numeric/index.js.map +1 -1
- package/postgres/columns/temporal/Date.d.ts +1 -1
- package/postgres/columns/temporal/Date.d.ts.map +1 -1
- package/postgres/columns/temporal/Time.d.ts +1 -1
- package/postgres/columns/temporal/Time.d.ts.map +1 -1
- package/postgres/columns/temporal/Timestamp.d.ts +1 -1
- package/postgres/columns/temporal/Timestamp.d.ts.map +1 -1
- package/postgres/columns/temporal/TimestampBase.d.ts +1 -1
- package/postgres/columns/temporal/TimestampBase.d.ts.map +1 -1
- package/postgres/columns/temporal/Timestamptz.d.ts +1 -1
- package/postgres/columns/temporal/Timestamptz.d.ts.map +1 -1
- package/postgres/columns/textual/Char.d.ts +1 -1
- package/postgres/columns/textual/Char.d.ts.map +1 -1
- package/postgres/columns/textual/Text.d.ts +1 -1
- package/postgres/columns/textual/Text.d.ts.map +1 -1
- package/postgres/columns/textual/Varchar.d.ts +1 -1
- package/postgres/columns/textual/Varchar.d.ts.map +1 -1
- package/postgres/postgresColumnToJson.d.ts +2 -2
- package/postgres/postgresColumnToJson.d.ts.map +1 -1
- package/postgres/postgresColumnToTson.d.ts +2 -2
- package/postgres/postgresColumnToTson.d.ts.map +1 -1
- package/postgres/postgresColumnToTson.js +1 -0
- package/postgres/postgresColumnToTson.js.map +1 -1
- package/postgres/postgresRecordToTson.d.ts +2 -2
- package/postgres/postgresRecordToTson.d.ts.map +1 -1
- package/postgres/postgresRecordToTson.js +5 -0
- package/postgres/postgresRecordToTson.js.map +1 -1
- package/schemaVersion.d.ts +20 -0
- package/schemaVersion.d.ts.map +1 -0
- package/schemaVersion.js +27 -0
- package/schemaVersion.js.map +1 -0
- package/tson/ArrayTsonSchema.d.ts +2 -2
- package/tson/ArrayTsonSchema.d.ts.map +1 -1
- package/tson/BigIntTsonSchema.d.ts +1 -1
- package/tson/BigIntTsonSchema.d.ts.map +1 -1
- package/tson/BooleanTsonSchema.d.ts +1 -1
- package/tson/BooleanTsonSchema.d.ts.map +1 -1
- package/tson/DateTsonSchema.d.ts +1 -1
- package/tson/DateTsonSchema.d.ts.map +1 -1
- package/tson/EnumTsonSchema.d.ts +1 -1
- package/tson/EnumTsonSchema.d.ts.map +1 -1
- package/tson/EnumTsonSchemaOf.d.ts +2 -2
- package/tson/EnumTsonSchemaOf.d.ts.map +1 -1
- package/tson/ExclusiveTsonSchema.d.ts +2 -2
- package/tson/ExclusiveTsonSchema.d.ts.map +1 -1
- package/tson/FromObjectTsonSchema.d.ts +3 -3
- package/tson/FromObjectTsonSchema.d.ts.map +1 -1
- package/tson/FromPropertySchemasTson.d.ts +2 -2
- package/tson/FromPropertySchemasTson.d.ts.map +1 -1
- package/tson/FromTsonSchema.d.ts +10 -10
- package/tson/FromTsonSchema.d.ts.map +1 -1
- package/tson/IntersectionTsonSchema.d.ts +2 -2
- package/tson/IntersectionTsonSchema.d.ts.map +1 -1
- package/tson/MapTsonSchema.d.ts +5 -5
- package/tson/MapTsonSchema.d.ts.map +1 -1
- package/tson/NumberTsonSchema.d.ts +1 -1
- package/tson/NumberTsonSchema.d.ts.map +1 -1
- package/tson/ObjectTsonSchema.d.ts +3 -2
- package/tson/ObjectTsonSchema.d.ts.map +1 -1
- package/tson/OneOfTsonSchema.d.ts +2 -2
- package/tson/OneOfTsonSchema.d.ts.map +1 -1
- package/tson/OnlyOptionalTson.d.ts +3 -3
- package/tson/OnlyOptionalTson.d.ts.map +1 -1
- package/tson/OnlyRequiredTson.d.ts +3 -3
- package/tson/OnlyRequiredTson.d.ts.map +1 -1
- package/tson/PrimitiveOrFromTsonSchema.d.ts +3 -3
- package/tson/PrimitiveOrFromTsonSchema.d.ts.map +1 -1
- package/tson/RequiredPropOfTson.d.ts +1 -1
- package/tson/RequiredPropOfTson.d.ts.map +1 -1
- package/tson/StringTsonSchema.d.ts +1 -1
- package/tson/StringTsonSchema.d.ts.map +1 -1
- package/tson/TsonSchema.d.ts +13 -13
- package/tson/TsonSchema.d.ts.map +1 -1
- package/tson/TsonSchemaOrPrimitive.d.ts +2 -2
- package/tson/TsonSchemaOrPrimitive.d.ts.map +1 -1
- package/tson/UnionTsonSchema.d.ts +2 -2
- package/tson/UnionTsonSchema.d.ts.map +1 -1
- package/tson/parseBON.d.ts.map +1 -1
- package/tson/parseBON.js +0 -15
- package/tson/parseBON.js.map +1 -1
- package/tson/stringifyBON.js +1 -1
- package/tson/stringifyBON.js.map +1 -1
- package/tsonToType.d.ts +1 -1
- package/tsonToType.d.ts.map +1 -1
- package/tsonValidator/buildArrayValidator.d.ts +1 -1
- package/tsonValidator/buildArrayValidator.d.ts.map +1 -1
- package/tsonValidator/buildBigintValidator.d.ts +1 -1
- package/tsonValidator/buildBigintValidator.d.ts.map +1 -1
- package/tsonValidator/buildBooleanValidator.d.ts +2 -2
- package/tsonValidator/buildBooleanValidator.d.ts.map +1 -1
- package/tsonValidator/buildDateValidator.d.ts +2 -2
- package/tsonValidator/buildDateValidator.d.ts.map +1 -1
- package/tsonValidator/buildEnumValidator.d.ts +2 -2
- package/tsonValidator/buildEnumValidator.d.ts.map +1 -1
- package/tsonValidator/buildNumberValidator.d.ts +1 -1
- package/tsonValidator/buildNumberValidator.d.ts.map +1 -1
- package/tsonValidator/buildObjectValidator.d.ts +2 -2
- package/tsonValidator/buildObjectValidator.d.ts.map +1 -1
- package/tsonValidator/buildOneOfValidator.d.ts +1 -1
- package/tsonValidator/buildOneOfValidator.d.ts.map +1 -1
- package/tsonValidator/buildStringValidator.d.ts +1 -1
- package/tsonValidator/buildStringValidator.d.ts.map +1 -1
- package/tsonValidator/buildValidator.d.ts +2 -2
- package/tsonValidator/buildValidator.d.ts.map +1 -1
- package/tsonValidator/testUtils.d.ts +1 -1
- package/tsonValidator/testUtils.d.ts.map +1 -1
- package/typeverters/bsonToType.d.ts +1 -1
- package/typeverters/bsonToType.d.ts.map +1 -1
- package/typeverters/postgresColumnToKysely.d.ts +1 -1
- package/typeverters/postgresColumnToKysely.d.ts.map +1 -1
- package/typeverters/postgresColumnToKysely.js +1 -0
- package/typeverters/postgresColumnToKysely.js.map +1 -1
- package/typeverters/postgresColumnToType.d.ts +1 -1
- package/typeverters/postgresColumnToType.d.ts.map +1 -1
- package/typeverters/postgresColumnToType.js +3 -0
- package/typeverters/postgresColumnToType.js.map +1 -1
- package/typeverters/postgresRecordToKysely.d.ts +1 -1
- package/typeverters/postgresRecordToKysely.d.ts.map +1 -1
- package/typeverters/postgresRecordToType.d.ts +1 -1
- package/typeverters/postgresRecordToType.d.ts.map +1 -1
- package/version-check.d.ts +33 -0
- package/version-check.d.ts.map +1 -0
- package/version-check.js +119 -0
- package/version-check.js.map +1 -0
- package/versionCheck.d.ts +52 -0
- package/versionCheck.d.ts.map +1 -0
- package/versionCheck.js +137 -0
- package/versionCheck.js.map +1 -0
- package/vitest.config.d.ts +3 -0
- package/vitest.config.d.ts.map +1 -0
- package/vitest.config.js +13 -0
- package/vitest.config.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresColumnToKysely.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToKysely.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresColumnToKysely.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToKysely.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,mBAAmB,EACnE,GAAG,CAAC,KACF,MAiDF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresColumnToKysely.js","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToKysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,CAAI,EACK,EAAE;IACX,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,KAAK,OAAO;YACX,OAAO,SAAS,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACpD,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,mBAAmB;YACvB,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,kBAAkB,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,mBAAmB,CAAC;QAC5B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YACjB,OAAO,mBAAmB,CAAC;QAC5B,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa;YACjB,OAAO,MAAM,CAAC;QACf,KAAK,OAAO;YACX,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD;YACC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"postgresColumnToKysely.js","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToKysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,CAAI,EACK,EAAE;IACX,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,KAAK,OAAO;YACX,OAAO,SAAS,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACpD,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,mBAAmB;YACvB,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,kBAAkB,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,mBAAmB,CAAC;QAC5B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YACjB,OAAO,mBAAmB,CAAC;QAC5B,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa;YACjB,OAAO,MAAM,CAAC;QACf,KAAK,OAAO;YACX,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD;YACC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresColumnToType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresColumnToType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,mBAAmB,EACjE,GAAG,CAAC,KACF,MAqCF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresColumnToType.js","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,CAAI,EACK,EAAE;IACX,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,OAAO;YACX,OAAO,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,mBAAmB;YACvB,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,kBAAkB,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;
|
|
1
|
+
{"version":3,"file":"postgresColumnToType.js","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresColumnToType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,CAAI,EACK,EAAE;IACX,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,OAAO;YACX,OAAO,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,mBAAmB;YACvB,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACb,OAAO,SAAS,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,kBAAkB,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACb,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf,KAAK,OAAO;YACX,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD;YACC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresRecordToKysely.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresRecordToKysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresRecordToKysely.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresRecordToKysely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,mBAAmB,EACnE,GAAG,CAAC,KACF,MAMF,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { PostgresRecordModel } from '../postgres';
|
|
1
|
+
import { type PostgresRecordModel } from '../postgres';
|
|
2
2
|
export declare const postgresRecordToType: <S extends PostgresRecordModel>(s: S, insertable: boolean) => string;
|
|
3
3
|
//# sourceMappingURL=postgresRecordToType.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresRecordToType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresRecordToType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresRecordToType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-core/typeverters/postgresRecordToType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,mBAAmB,EACjE,GAAG,CAAC,EACJ,YAAY,OAAO,KACjB,MAaF,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* lockstep-version-check — the OFFERED, optional biconditional schema-version
|
|
4
|
+
* check (SCHEMA-VERSIONING.md). NOT installed as a git hook; run it yourself in
|
|
5
|
+
* precommit/prepush/CI. Nothing is stored — the base schema is read transiently
|
|
6
|
+
* from git history each run.
|
|
7
|
+
*
|
|
8
|
+
* lockstep-version-check --models <path> [--base <git-ref>] [--require-version-on-new]
|
|
9
|
+
*
|
|
10
|
+
* --models <path> module exporting a { name: modelDefinition } map
|
|
11
|
+
* (same shape the `lockstep generate` CLI consumes).
|
|
12
|
+
* --base <git-ref> ref to compare against (default: HEAD). Use the
|
|
13
|
+
* PR base in CI, HEAD for a precommit check.
|
|
14
|
+
* --require-version-on-new also fail if a newly-added model has no version.
|
|
15
|
+
*
|
|
16
|
+
* Exit 0 = no violations; exit 1 = violations (or usage error).
|
|
17
|
+
*
|
|
18
|
+
* NOTE / KNOWN LIMITATION (found by smoke-testing against real Lyku history):
|
|
19
|
+
* base models are loaded by checking out `base` as a git worktree and importing
|
|
20
|
+
* the models module from it. A bare worktree has the source but NOT the
|
|
21
|
+
* workspace's per-lib node_modules symlinks, so a models module that imports
|
|
22
|
+
* sibling workspace packages (e.g. @lyku/*) fails to resolve from the worktree
|
|
23
|
+
* ("Cannot find module '@lyku/helpers'"). A repo-root node_modules symlink does
|
|
24
|
+
* not fix it when deps resolve via per-lib symlinks rather than hoisting.
|
|
25
|
+
*
|
|
26
|
+
* Until base-acquisition is reworked, run this where the base ref's deps are
|
|
27
|
+
* installed — e.g. CI that checks out the base branch into a full, installed
|
|
28
|
+
* tree and invokes the check there — rather than the bare-worktree shortcut.
|
|
29
|
+
* The biconditional + canonical-hash core (versionCheck.ts) is runtime-
|
|
30
|
+
* independent and fully unit-tested; only base-acquisition is affected.
|
|
31
|
+
*/
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=version-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../libs/lockstep-core/version-check.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG"}
|
package/version-check.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable security/detect-object-injection -- arg keys are program-defined, not external-input indexing */
|
|
3
|
+
/**
|
|
4
|
+
* lockstep-version-check — the OFFERED, optional biconditional schema-version
|
|
5
|
+
* check (SCHEMA-VERSIONING.md). NOT installed as a git hook; run it yourself in
|
|
6
|
+
* precommit/prepush/CI. Nothing is stored — the base schema is read transiently
|
|
7
|
+
* from git history each run.
|
|
8
|
+
*
|
|
9
|
+
* lockstep-version-check --models <path> [--base <git-ref>] [--require-version-on-new]
|
|
10
|
+
*
|
|
11
|
+
* --models <path> module exporting a { name: modelDefinition } map
|
|
12
|
+
* (same shape the `lockstep generate` CLI consumes).
|
|
13
|
+
* --base <git-ref> ref to compare against (default: HEAD). Use the
|
|
14
|
+
* PR base in CI, HEAD for a precommit check.
|
|
15
|
+
* --require-version-on-new also fail if a newly-added model has no version.
|
|
16
|
+
*
|
|
17
|
+
* Exit 0 = no violations; exit 1 = violations (or usage error).
|
|
18
|
+
*
|
|
19
|
+
* NOTE / KNOWN LIMITATION (found by smoke-testing against real Lyku history):
|
|
20
|
+
* base models are loaded by checking out `base` as a git worktree and importing
|
|
21
|
+
* the models module from it. A bare worktree has the source but NOT the
|
|
22
|
+
* workspace's per-lib node_modules symlinks, so a models module that imports
|
|
23
|
+
* sibling workspace packages (e.g. @lyku/*) fails to resolve from the worktree
|
|
24
|
+
* ("Cannot find module '@lyku/helpers'"). A repo-root node_modules symlink does
|
|
25
|
+
* not fix it when deps resolve via per-lib symlinks rather than hoisting.
|
|
26
|
+
*
|
|
27
|
+
* Until base-acquisition is reworked, run this where the base ref's deps are
|
|
28
|
+
* installed — e.g. CI that checks out the base branch into a full, installed
|
|
29
|
+
* tree and invokes the check there — rather than the bare-worktree shortcut.
|
|
30
|
+
* The biconditional + canonical-hash core (versionCheck.ts) is runtime-
|
|
31
|
+
* independent and fully unit-tested; only base-acquisition is affected.
|
|
32
|
+
*/
|
|
33
|
+
import { resolve, relative, join } from 'node:path';
|
|
34
|
+
import { execFileSync } from 'node:child_process';
|
|
35
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
36
|
+
import { checkModels, isModelLike } from './versionCheck';
|
|
37
|
+
function parseArgs(argv) {
|
|
38
|
+
const args = {};
|
|
39
|
+
for (let i = 0; i < argv.length; i++) {
|
|
40
|
+
const arg = argv[i];
|
|
41
|
+
if (arg.startsWith('--')) {
|
|
42
|
+
const key = arg.slice(2);
|
|
43
|
+
const next = argv[i + 1];
|
|
44
|
+
if (next && !next.startsWith('--')) {
|
|
45
|
+
args[key] = next;
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
args[key] = 'true';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return args;
|
|
54
|
+
}
|
|
55
|
+
function required(args, key) {
|
|
56
|
+
const val = args[key];
|
|
57
|
+
if (!val) {
|
|
58
|
+
console.error(`Missing required argument: --${key}`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
return val;
|
|
62
|
+
}
|
|
63
|
+
function git(gitArgs) {
|
|
64
|
+
return execFileSync('git', gitArgs, { encoding: 'utf8' }).trim();
|
|
65
|
+
}
|
|
66
|
+
async function loadModels(path) {
|
|
67
|
+
const mod = (await import(path));
|
|
68
|
+
// Mirror the generate CLI: the module's exports ARE the model map. Keep only
|
|
69
|
+
// model-like entries so exported helpers/enums don't get compared.
|
|
70
|
+
const out = {};
|
|
71
|
+
for (const [k, v] of Object.entries(mod))
|
|
72
|
+
if (isModelLike(v))
|
|
73
|
+
out[k] = v;
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
async function main() {
|
|
77
|
+
const args = parseArgs(process.argv.slice(2));
|
|
78
|
+
const modelsPath = required(args, 'models');
|
|
79
|
+
const base = args['base'] || 'HEAD';
|
|
80
|
+
const requireVersionOnNew = args['require-version-on-new'] === 'true';
|
|
81
|
+
const repoRoot = git(['rev-parse', '--show-toplevel']);
|
|
82
|
+
const modelsAbs = resolve(modelsPath);
|
|
83
|
+
const modelsRel = relative(repoRoot, modelsAbs);
|
|
84
|
+
const current = await loadModels(modelsAbs);
|
|
85
|
+
// Worktree the base ref INSIDE the repo so checked-out modules resolve the
|
|
86
|
+
// repo's node_modules. Always cleaned up.
|
|
87
|
+
const wt = mkdtempSync(join(repoRoot, '.lockstep-vcheck-'));
|
|
88
|
+
let result;
|
|
89
|
+
try {
|
|
90
|
+
git(['worktree', 'add', '--quiet', '--detach', wt, base]);
|
|
91
|
+
const baseModels = await loadModels(join(wt, modelsRel));
|
|
92
|
+
result = checkModels(baseModels, current, { requireVersionOnNew });
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
try {
|
|
96
|
+
git(['worktree', 'remove', '--force', wt]);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
rmSync(wt, { recursive: true, force: true });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const { violations, checked, added, removed } = result;
|
|
103
|
+
console.error(`version-check: ${checked} model(s) compared vs ${base}` +
|
|
104
|
+
(added.length ? `, ${added.length} added` : '') +
|
|
105
|
+
(removed.length ? `, ${removed.length} removed` : ''));
|
|
106
|
+
if (violations.length === 0) {
|
|
107
|
+
console.error('version-check: OK — schema-change ⟺ version-bump holds.');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
console.error(`\nversion-check: ${violations.length} violation(s):`);
|
|
111
|
+
for (const v of violations)
|
|
112
|
+
console.error(` • [${v.kind}] ${v.model}: ${v.detail}`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
main().catch((err) => {
|
|
116
|
+
console.error(err);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../../libs/lockstep-core/version-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keys excluded from the structure hash:
|
|
3
|
+
* - documentation metadata (title/description/examples/notes/docs) — editing a
|
|
4
|
+
* doc string must not look like a schema change.
|
|
5
|
+
* - `version` itself — it is compared separately; including it would make every
|
|
6
|
+
* bump also register as a structure change, defeating the biconditional.
|
|
7
|
+
* `default` is deliberately NOT excluded: a column default is a real DDL/schema
|
|
8
|
+
* change that should require a bump.
|
|
9
|
+
*/
|
|
10
|
+
export declare const HASH_EXCLUDED_KEYS: Set<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Canonical form: recursively drop excluded keys and sort object keys. Array
|
|
13
|
+
* ORDER is preserved (arrays are treated as ordered — reordering `required` or
|
|
14
|
+
* `enum` is conservatively treated as a change rather than risk equating
|
|
15
|
+
* genuinely-ordered arrays).
|
|
16
|
+
*/
|
|
17
|
+
export declare function canonicalize(value: unknown): unknown;
|
|
18
|
+
/** Deterministic structure hash of a model (docs + version excluded). */
|
|
19
|
+
export declare function structureHash(model: unknown): string;
|
|
20
|
+
/** The model's authored version string, or undefined if it has none. */
|
|
21
|
+
export declare function modelVersion(model: unknown): string | undefined;
|
|
22
|
+
/** A model-like value: an object carrying a `properties` map (record model). */
|
|
23
|
+
export declare function isModelLike(value: unknown): boolean;
|
|
24
|
+
export type ViolationKind = 'changed-not-bumped' | 'bumped-not-changed' | 'missing-version-on-new';
|
|
25
|
+
export type ModelViolation = {
|
|
26
|
+
readonly model: string;
|
|
27
|
+
readonly kind: ViolationKind;
|
|
28
|
+
readonly detail: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Decide one model present in BOTH base and current. The biconditional is
|
|
32
|
+
* enforced only once a model is versioned on BOTH sides — first-time adoption
|
|
33
|
+
* (no base version → current version) and not-yet-adopted models are exempt, so
|
|
34
|
+
* the check doesn't fire on the rollout itself.
|
|
35
|
+
*/
|
|
36
|
+
export declare function decideExisting(name: string, base: unknown, current: unknown): ModelViolation | null;
|
|
37
|
+
export type CheckResult = {
|
|
38
|
+
readonly violations: readonly ModelViolation[];
|
|
39
|
+
readonly checked: number;
|
|
40
|
+
readonly added: readonly string[];
|
|
41
|
+
readonly removed: readonly string[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Run the biconditional over two model maps (name → model definition). Only
|
|
45
|
+
* model-like entries are considered (exported helpers/constants are ignored).
|
|
46
|
+
*
|
|
47
|
+
* @param opts.requireVersionOnNew flag a newly-added model that has no version.
|
|
48
|
+
*/
|
|
49
|
+
export declare function checkModels(base: Record<string, unknown>, current: Record<string, unknown>, opts?: {
|
|
50
|
+
requireVersionOnNew?: boolean;
|
|
51
|
+
}): CheckResult;
|
|
52
|
+
//# sourceMappingURL=versionCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionCheck.d.ts","sourceRoot":"","sources":["../../../libs/lockstep-core/versionCheck.ts"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,aAO7B,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAYpD;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIpD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAM/D;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnD;AAED,MAAM,MAAM,aAAa,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,GACd,cAAc,GAAG,IAAI,CAsBvB;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,GAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,WAAW,CA2Bb"}
|
package/versionCheck.js
ADDED
|
@@ -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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../../../libs/lockstep-core/vitest.config.ts"],"names":[],"mappings":";AAEA,wBAUG"}
|
package/vitest.config.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
export default defineConfig({
|
|
3
|
+
test: {
|
|
4
|
+
globals: true,
|
|
5
|
+
environment: 'node',
|
|
6
|
+
include: ['**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
|
7
|
+
coverage: {
|
|
8
|
+
provider: 'v8',
|
|
9
|
+
reporter: ['text'],
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=vitest.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../../../libs/lockstep-core/vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC3B,IAAI,EAAE;QACL,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,CAAC,kDAAkD,CAAC;QAC7D,QAAQ,EAAE;YACT,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,MAAM,CAAC;SAClB;KACD;CACD,CAAC,CAAC"}
|