diff --git a/.gitignore b/.gitignore index 9ec44e5f..808b78c9 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ docs/.next # Ignore debug debug/ +CLAUDE.md diff --git a/packages/evolution/package.json b/packages/evolution/package.json index 03e8f131..b7012fba 100644 --- a/packages/evolution/package.json +++ b/packages/evolution/package.json @@ -45,6 +45,7 @@ "typescript": "^5.9.2" }, "dependencies": { + "@effect/platform": "^0.90.6", "@effect/platform-node": "^0.96.0", "@noble/hashes": "^1.8.0", "@scure/base": "^1.2.6", diff --git a/packages/evolution/src/AddressDetails.ts b/packages/evolution/src/core/AddressDetails.ts similarity index 86% rename from packages/evolution/src/AddressDetails.ts rename to packages/evolution/src/core/AddressDetails.ts index 4a8919ed..28bb2bc8 100644 --- a/packages/evolution/src/AddressDetails.ts +++ b/packages/evolution/src/core/AddressDetails.ts @@ -1,6 +1,6 @@ import { Data, Effect as Eff, ParseResult, Schema } from "effect" -import * as Address from "./Address.js" +import * as AddressEras from "./AddressEras.js" import * as Bytes from "./Bytes.js" import * as Function from "./Function.js" import * as NetworkId from "./NetworkId.js" @@ -26,7 +26,7 @@ export class AddressDetails extends Schema.Class("AddressDetails Schema.Literal("RewardAccount"), Schema.Literal("ByronAddress") ), - address: Address.Address, + address: AddressEras.AddressEras, bech32: Schema.String, hex: Bytes.HexSchema }) {} @@ -36,8 +36,8 @@ export const FromBech32 = Schema.transformOrFail(Schema.String, AddressDetails, encode: (_, __, ___, toA) => ParseResult.succeed(toA.bech32), decode: (_, __, ___, fromA) => Eff.gen(function* () { - const address = yield* ParseResult.decode(Address.FromBech32)(fromA) - const hex = yield* ParseResult.encode(Address.FromHex)(address) + const address = yield* ParseResult.decode(AddressEras.FromBech32)(fromA) + const hex = yield* ParseResult.encode(AddressEras.FromHex)(address) return new AddressDetails({ networkId: address.networkId, type: address._tag, @@ -53,8 +53,8 @@ export const FromHex = Schema.transformOrFail(Bytes.HexSchema, AddressDetails, { encode: (_, __, ___, toA) => ParseResult.succeed(toA.hex), decode: (_, __, ___, fromA) => Eff.gen(function* () { - const address = yield* ParseResult.decode(Address.FromHex)(fromA) - const bech32 = yield* ParseResult.encode(Address.FromBech32)(address) + const address = yield* ParseResult.decode(AddressEras.FromHex)(fromA) + const bech32 = yield* ParseResult.encode(AddressEras.FromBech32)(address) return new AddressDetails({ networkId: address.networkId, type: address._tag, @@ -83,7 +83,7 @@ export const equals = (self: AddressDetails, that: AddressDetails): boolean => { return ( self.networkId === that.networkId && self.type === that.type && - Address.equals(self.address, that.address) && + AddressEras.equals(self.address, that.address) && self.bech32 === that.bech32 && self.hex === that.hex ) @@ -95,7 +95,7 @@ export const equals = (self: AddressDetails, that: AddressDetails): boolean => { * @since 2.0.0 * @category arbitrary */ -export const arbitrary = Address.arbitrary.map((address) => fromAddress(address)) +export const arbitrary = AddressEras.arbitrary.map((address) => fromAddress(address)) /** * Create AddressDetails from an Address. @@ -103,10 +103,10 @@ export const arbitrary = Address.arbitrary.map((address) => fromAddress(address) * @since 2.0.0 * @category constructors */ -export const fromAddress = (address: Address.Address): AddressDetails => { +export const fromAddress = (address: AddressEras.AddressEras): AddressDetails => { // Use schema encoding to get the serialized formats - const bech32 = Eff.runSync(Schema.encode(Address.FromBech32)(address)) - const hex = Eff.runSync(Schema.encode(Address.FromHex)(address)) + const bech32 = Eff.runSync(Schema.encode(AddressEras.FromBech32)(address)) + const hex = Eff.runSync(Schema.encode(AddressEras.FromHex)(address)) return new AddressDetails({ networkId: address.networkId, type: address._tag, diff --git a/packages/evolution/src/Address.ts b/packages/evolution/src/core/AddressEras.ts similarity index 97% rename from packages/evolution/src/Address.ts rename to packages/evolution/src/core/AddressEras.ts index 79e9e833..81138839 100644 --- a/packages/evolution/src/Address.ts +++ b/packages/evolution/src/core/AddressEras.ts @@ -62,7 +62,7 @@ export class AddressError extends Data.TaggedError("AddressError")<{ * @since 2.0.0 * @category model */ -export const Address = Schema.Union( +export const AddressEras = Schema.Union( BaseAddress.BaseAddress, EnterpriseAddress.EnterpriseAddress, PointerAddress.PointerAddress, @@ -70,13 +70,15 @@ export const Address = Schema.Union( ByronAddress.ByronAddress ) +export const isAddress = Schema.is(AddressEras) + /** * Type representing an address. * * @since 2.0.0 * @category model */ -export type Address = typeof Address.Type +export type AddressEras = typeof AddressEras.Type /** * Schema for encoding/decoding addresses as bytes. @@ -84,7 +86,7 @@ export type Address = typeof Address.Type * @since 2.0.0 * @category schema */ -export const FromBytes = Schema.transformOrFail(Schema.Uint8ArrayFromSelf, Address, { +export const FromBytes = Schema.transformOrFail(Schema.Uint8ArrayFromSelf, AddressEras, { strict: true, encode: (_, __, ___, toA) => { switch (toA._tag) { @@ -154,7 +156,7 @@ export const FromHex = Schema.compose(Bytes.FromHex, FromBytes) * @since 2.0.0 * @category schema */ -export const FromBech32 = Schema.transformOrFail(Schema.String, Address, { +export const FromBech32 = Schema.transformOrFail(Schema.String, AddressEras, { strict: true, encode: (_, __, ast, toA) => Eff.gen(function* () { @@ -206,7 +208,7 @@ export const FromBech32 = Schema.transformOrFail(Schema.String, Address, { * @since 2.0.0 * @category utils */ -export const equals = (a: Address, b: Address): boolean => { +export const equals = (a: AddressEras, b: AddressEras): boolean => { if (a._tag !== b._tag) { return false } diff --git a/packages/evolution/src/core/AddressStructure.ts b/packages/evolution/src/core/AddressStructure.ts new file mode 100644 index 00000000..62f0ed81 --- /dev/null +++ b/packages/evolution/src/core/AddressStructure.ts @@ -0,0 +1,281 @@ +/** + * @since 1.0.0 + */ + +import { bech32 } from "@scure/base" +import { Data, Effect as Eff, FastCheck, ParseResult, Schema } from "effect" + +import * as Bytes from "./Bytes.js" +import * as Bytes29 from "./Bytes29.js" +import * as Bytes57 from "./Bytes57.js" +import * as Credential from "./Credential.js" +import * as Function from "./Function.js" +import * as KeyHash from "./KeyHash.js" +import * as NetworkId from "./NetworkId.js" +import * as ScriptHash from "./ScriptHash.js" + +export class AddressStructureError extends Data.TaggedError("AddressStructureError")<{ + message?: string + cause?: unknown +}> {} + +/** + * @since 1.0.0 + * @category Schema + */ +export class AddressStructure extends Schema.Class("AddressStructure")({ + networkId: NetworkId.NetworkId, + paymentCredential: Credential.Credential, + stakingCredential: Schema.optional(Credential.Credential) +}) { + toString(): string { + const staking = this.stakingCredential ? `, stakingCredential: ${this.stakingCredential}` : "" + return `AddressStructure(${this.networkId === 0 ? "testnet" : "mainnet"}:${this.paymentCredential}${staking})` + } + + [Symbol.for("nodejs.util.inspect.custom")](): string { + return this.toString() + } +} + +/** + * Transform from bytes to AddressStructure + * Handles both BaseAddress (57 bytes) and EnterpriseAddress (29 bytes) + * + * @since 1.0.0 + * @category Transformations + */ +export const FromBytes = Schema.transformOrFail( + Schema.Union(Bytes57.BytesSchema, Bytes29.BytesSchema), + AddressStructure, + { + strict: true, + encode: (_, __, ___, toA) => + Eff.gen(function* () { + if (toA.stakingCredential) { + // BaseAddress encoding (57 bytes) + const paymentBit = toA.paymentCredential._tag === "KeyHash" ? 0 : 1 + const stakeBit = toA.stakingCredential._tag === "KeyHash" ? 0 : 1 + const header = (0b00 << 6) | (stakeBit << 5) | (paymentBit << 4) | (toA.networkId & 0b00001111) + const result = new Uint8Array(57) + result[0] = header + const paymentCredentialBytes = toA.paymentCredential.hash + result.set(paymentCredentialBytes, 1) + const stakeCredentialBytes = toA.stakingCredential.hash + result.set(stakeCredentialBytes, 29) + return yield* ParseResult.succeed(result) + } else { + // EnterpriseAddress encoding (29 bytes) + const paymentBit = toA.paymentCredential._tag === "KeyHash" ? 0 : 1 + const header = (0b01 << 6) | (0b1 << 5) | (paymentBit << 4) | (toA.networkId & 0b00001111) + const result = new Uint8Array(29) + result[0] = header + const paymentCredentialBytes = toA.paymentCredential.hash + result.set(paymentCredentialBytes, 1) + return yield* ParseResult.succeed(result) + } + }), + decode: (fromI, options, ast, fromA) => + Eff.gen(function* () { + const header = fromA[0] + const networkId = header & 0b00001111 + const addressTypeBits = (header >> 4) & 0b1111 + + if (fromA.length === 57) { + // BaseAddress (with staking credential) + const isPaymentKey = (addressTypeBits & 0b0001) === 0 + const paymentCredential: Credential.Credential = isPaymentKey + ? new KeyHash.KeyHash({ hash: fromA.slice(1, 29) }) + : new ScriptHash.ScriptHash({ hash: fromA.slice(1, 29) }) + + const isStakeKey = (addressTypeBits & 0b0010) === 0 + const stakingCredential: Credential.Credential = isStakeKey + ? new KeyHash.KeyHash({ hash: fromA.slice(29, 57) }) + : new ScriptHash.ScriptHash({ hash: fromA.slice(29, 57) }) + + return yield* ParseResult.decode(AddressStructure)({ + networkId, + paymentCredential, + stakingCredential + }) + } else if (fromA.length === 29) { + // EnterpriseAddress (no staking credential) + const isPaymentKey = (addressTypeBits & 0b0001) === 0 + const paymentCredential: Credential.Credential = isPaymentKey + ? new KeyHash.KeyHash({ hash: fromA.slice(1, 29) }) + : new ScriptHash.ScriptHash({ hash: fromA.slice(1, 29) }) + + return yield* ParseResult.decode(AddressStructure)({ + networkId, + paymentCredential, + stakingCredential: undefined + }) + } else { + return yield* ParseResult.fail(new ParseResult.Type(ast, fromA, "Invalid address length")) + } + }) + } +).annotations({ + identifier: "AddressStructure.FromBytes" +}) + +/** + * Transform from hex string to AddressStructure + * + * @since 1.0.0 + * @category Transformations + */ +export const FromHex = Schema.compose(Bytes.FromHex, FromBytes).annotations({ + identifier: "AddressStructure.FromHex" +}) + +/** + * Transform from Bech32 string to AddressStructure + * + * @since 1.0.0 + * @category Transformations + */ +export const FromBech32 = Schema.transformOrFail(Schema.String, AddressStructure, { + strict: true, + encode: (_, __, ___, toA) => + Eff.gen(function* () { + const prefix = toA.networkId === 0 ? "addr_test" : "addr" + const bytes = yield* ParseResult.encode(FromBytes)(toA) + const words = bech32.toWords(bytes) + return bech32.encode(prefix, words, false) + }), + decode: (fromA, _, ast) => + Eff.gen(function* () { + const result = yield* Eff.try({ + try: () => { + const decoded = bech32.decode(fromA as any, false) + const bytes = bech32.fromWords(decoded.words) + return new Uint8Array(bytes) + }, + catch: () => new ParseResult.Type(ast, fromA, `Failed to decode Bech32: ${fromA}`) + }) + return yield* ParseResult.decode(FromBytes)(result) + }) +}).annotations({ + identifier: "AddressStructure.FromBech32", + description: "Transforms Bech32 string to AddressStructure" +}) + +/** + * Check if two AddressStructure instances are equal. + * + * @since 1.0.0 + * @category Utils + */ +export const equals = (a: AddressStructure, b: AddressStructure): boolean => + a.networkId === b.networkId && + Credential.equals(a.paymentCredential, b.paymentCredential) && + ((a.stakingCredential === undefined && b.stakingCredential === undefined) || + (a.stakingCredential !== undefined && + b.stakingCredential !== undefined && + Credential.equals(a.stakingCredential, b.stakingCredential))) + +/** + * Check if AddressStructure has staking credential (BaseAddress-like) + * + * @since 1.0.0 + * @category Utils + */ +export const hasStakingCredential = (address: AddressStructure): boolean => address.stakingCredential !== undefined + +/** + * Check if AddressStructure is enterprise-like (no staking credential) + * + * @since 1.0.0 + * @category Utils + */ +export const isEnterprise = (address: AddressStructure): boolean => address.stakingCredential === undefined + +/** + * Get network ID from AddressStructure + * + * @since 1.0.0 + * @category Utils + */ +export const getNetworkId = (address: AddressStructure): NetworkId.NetworkId => address.networkId + +/** + * Sync functions using Function module utilities + * + * @since 1.0.0 + * @category Functions + */ +export const fromBech32 = Function.makeDecodeSync(FromBech32, AddressStructureError, "fromBech32") +export const toBech32 = Function.makeEncodeSync(FromBech32, AddressStructureError, "toBech32") +export const fromHex = Function.makeDecodeSync(FromHex, AddressStructureError, "fromHex") +export const toHex = Function.makeEncodeSync(FromHex, AddressStructureError, "toHex") +export const fromBytes = Function.makeDecodeSync(FromBytes, AddressStructureError, "fromBytes") +export const toBytes = Function.makeEncodeSync(FromBytes, AddressStructureError, "toBytes") + +/** + * FastCheck arbitrary generator for testing + * + * @since 1.0.0 + * @category Arbitrary + */ +export const arbitrary = FastCheck.record({ + networkId: NetworkId.arbitrary, + paymentCredential: Credential.arbitrary, + stakingCredential: FastCheck.option(Credential.arbitrary) +}).map( + (props) => + new AddressStructure({ + ...props, + stakingCredential: props.stakingCredential ?? undefined + }) +) + +export namespace Either { + /** + * Parse an AddressStructure from bytes. + * + * @since 1.0.0 + * @category parsing + */ + export const fromBytes = Function.makeDecodeEither(FromBytes, AddressStructureError) + + /** + * Parse an AddressStructure from hex string. + * + * @since 1.0.0 + * @category parsing + */ + export const fromHex = Function.makeDecodeEither(FromHex, AddressStructureError) + + /** + * Convert an AddressStructure to bytes. + * + * @since 1.0.0 + * @category encoding + */ + export const toBytes = Function.makeEncodeEither(FromBytes, AddressStructureError) + + /** + * Convert an AddressStructure to hex string. + * + * @since 1.0.0 + * @category encoding + */ + export const toHex = Function.makeEncodeEither(FromHex, AddressStructureError) + + /** + * Convert AddressStructure to Bech32 string. + * + * @since 1.0.0 + * @category encoding + */ + export const toBech32 = Function.makeEncodeEither(FromBech32, AddressStructureError) + + /** + * Parse an AddressStructure from Bech32 string. + * + * @since 1.0.0 + * @category parsing + */ + export const fromBech32 = Function.makeDecodeEither(FromBech32, AddressStructureError) +} diff --git a/packages/evolution/src/AddressTag.ts b/packages/evolution/src/core/AddressTag.ts similarity index 100% rename from packages/evolution/src/AddressTag.ts rename to packages/evolution/src/core/AddressTag.ts diff --git a/packages/evolution/src/Anchor.ts b/packages/evolution/src/core/Anchor.ts similarity index 100% rename from packages/evolution/src/Anchor.ts rename to packages/evolution/src/core/Anchor.ts diff --git a/packages/evolution/src/AssetName.ts b/packages/evolution/src/core/AssetName.ts similarity index 100% rename from packages/evolution/src/AssetName.ts rename to packages/evolution/src/core/AssetName.ts diff --git a/packages/evolution/src/AuxiliaryData.ts b/packages/evolution/src/core/AuxiliaryData.ts similarity index 100% rename from packages/evolution/src/AuxiliaryData.ts rename to packages/evolution/src/core/AuxiliaryData.ts diff --git a/packages/evolution/src/AuxiliaryDataHash.ts b/packages/evolution/src/core/AuxiliaryDataHash.ts similarity index 100% rename from packages/evolution/src/AuxiliaryDataHash.ts rename to packages/evolution/src/core/AuxiliaryDataHash.ts diff --git a/packages/evolution/src/BaseAddress.ts b/packages/evolution/src/core/BaseAddress.ts similarity index 100% rename from packages/evolution/src/BaseAddress.ts rename to packages/evolution/src/core/BaseAddress.ts diff --git a/packages/evolution/src/Bech32.ts b/packages/evolution/src/core/Bech32.ts similarity index 100% rename from packages/evolution/src/Bech32.ts rename to packages/evolution/src/core/Bech32.ts diff --git a/packages/evolution/src/BigInt.ts b/packages/evolution/src/core/BigInt.ts similarity index 100% rename from packages/evolution/src/BigInt.ts rename to packages/evolution/src/core/BigInt.ts diff --git a/packages/evolution/src/Bip32PrivateKey.ts b/packages/evolution/src/core/Bip32PrivateKey.ts similarity index 100% rename from packages/evolution/src/Bip32PrivateKey.ts rename to packages/evolution/src/core/Bip32PrivateKey.ts diff --git a/packages/evolution/src/Bip32PublicKey.ts b/packages/evolution/src/core/Bip32PublicKey.ts similarity index 100% rename from packages/evolution/src/Bip32PublicKey.ts rename to packages/evolution/src/core/Bip32PublicKey.ts diff --git a/packages/evolution/src/Block.ts b/packages/evolution/src/core/Block.ts similarity index 100% rename from packages/evolution/src/Block.ts rename to packages/evolution/src/core/Block.ts diff --git a/packages/evolution/src/BlockBodyHash.ts b/packages/evolution/src/core/BlockBodyHash.ts similarity index 100% rename from packages/evolution/src/BlockBodyHash.ts rename to packages/evolution/src/core/BlockBodyHash.ts diff --git a/packages/evolution/src/BlockHeaderHash.ts b/packages/evolution/src/core/BlockHeaderHash.ts similarity index 100% rename from packages/evolution/src/BlockHeaderHash.ts rename to packages/evolution/src/core/BlockHeaderHash.ts diff --git a/packages/evolution/src/BootstrapWitness.ts b/packages/evolution/src/core/BootstrapWitness.ts similarity index 100% rename from packages/evolution/src/BootstrapWitness.ts rename to packages/evolution/src/core/BootstrapWitness.ts diff --git a/packages/evolution/src/BoundedBytes.ts b/packages/evolution/src/core/BoundedBytes.ts similarity index 100% rename from packages/evolution/src/BoundedBytes.ts rename to packages/evolution/src/core/BoundedBytes.ts diff --git a/packages/evolution/src/ByronAddress.ts b/packages/evolution/src/core/ByronAddress.ts similarity index 100% rename from packages/evolution/src/ByronAddress.ts rename to packages/evolution/src/core/ByronAddress.ts diff --git a/packages/evolution/src/Bytes.ts b/packages/evolution/src/core/Bytes.ts similarity index 90% rename from packages/evolution/src/Bytes.ts rename to packages/evolution/src/core/Bytes.ts index efb63b3a..3cbb6c72 100644 --- a/packages/evolution/src/Bytes.ts +++ b/packages/evolution/src/core/Bytes.ts @@ -189,14 +189,12 @@ export const BytesFromHexLenient = makeBytesTransformation({ * @category composition */ export const hexLengthEquals = - (byteLength: number, moduleName: string) => + (byteLength: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((hex: string) => hex.length === byteLength * 2, { message: (issue) => - `${issue.actual} Must be exactly ${byteLength * 2} hex characters (${byteLength} bytes), got ${(issue.actual as string).length}`, - - identifier: `${moduleName}.LengthEquals${byteLength}` + `${issue.actual} Must be exactly ${byteLength * 2} hex characters (${byteLength} bytes), got ${(issue.actual as string).length}` }) ) @@ -208,7 +206,7 @@ export const hexLengthEquals = * @category composition */ export const hexLengthBetween = - (minBytes: number, maxBytes: number, moduleName: string) => + (minBytes: number, maxBytes: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter( @@ -218,8 +216,7 @@ export const hexLengthBetween = }, { message: () => - `Must be between ${minBytes} and ${maxBytes} bytes (${minBytes * 2}-${maxBytes * 2} hex characters)`, - identifier: `${moduleName}.LengthBetween${minBytes}And${maxBytes}` + `Must be between ${minBytes} and ${maxBytes} bytes (${minBytes * 2}-${maxBytes * 2} hex characters)` } ) ) @@ -232,12 +229,11 @@ export const hexLengthBetween = * @category composition */ export const hexLengthMin = - (minBytes: number, moduleName: string) => + (minBytes: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((hex: string) => hex.length >= minBytes * 2, { - message: () => `Must be at least ${minBytes} bytes (${minBytes * 2} hex characters)`, - identifier: `${moduleName}.LengthMin${minBytes}` + message: () => `Must be at least ${minBytes} bytes (${minBytes * 2} hex characters)` }) ) @@ -249,12 +245,11 @@ export const hexLengthMin = * @category composition */ export const hexLengthMax = - (maxBytes: number, moduleName: string) => + (maxBytes: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((hex: string) => hex.length <= maxBytes * 2, { - message: () => `Must be at most ${maxBytes} bytes (${maxBytes * 2} hex characters)`, - identifier: `${moduleName}.LengthMax${maxBytes}` + message: () => `Must be at most ${maxBytes} bytes (${maxBytes * 2} hex characters)` }) ) @@ -266,12 +261,11 @@ export const hexLengthMax = * @category composition */ export const hexStartsWithPrefix = - (prefix: string, moduleName: string) => + (prefix: string) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((hex: string) => hex.toLowerCase().startsWith(prefix.toLowerCase()), { - message: () => `Must start with prefix "${prefix}"`, - identifier: `${moduleName}.StartsWithPrefix` + message: () => `Must start with prefix "${prefix}"` }) ) @@ -284,13 +278,12 @@ export const hexStartsWithPrefix = * @category composition */ export const bytesLengthEquals = - (byteLength: number, moduleName: string) => + (byteLength: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((bytes: Uint8Array) => bytes.length === byteLength, { message: (issue) => - `${issue.actual} Must be exactly ${byteLength} bytes, got ${(issue.actual as Uint8Array).length}`, - identifier: `${moduleName}.BytesLengthEquals${byteLength}` + `${issue.actual} Must be exactly ${byteLength} bytes, got ${(issue.actual as Uint8Array).length}` }) ) @@ -302,12 +295,11 @@ export const bytesLengthEquals = * @category composition */ export const bytesLengthBetween = - (minBytes: number, maxBytes: number, moduleName: string) => + (minBytes: number, maxBytes: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((bytes: Uint8Array) => bytes.length >= minBytes && bytes.length <= maxBytes, { - message: () => `Must be between ${minBytes} and ${maxBytes} bytes`, - identifier: `${moduleName}.BytesLengthBetween${minBytes}And${maxBytes}` + message: () => `Must be between ${minBytes} and ${maxBytes} bytes` }) ) @@ -319,12 +311,11 @@ export const bytesLengthBetween = * @category composition */ export const bytesLengthMin = - (minBytes: number, moduleName: string) => + (minBytes: number) => >(baseSchema: S) => baseSchema.pipe( Schema.filter((bytes: Uint8Array) => bytes.length >= minBytes, { - message: () => `Must be at least ${minBytes} bytes`, - identifier: `${moduleName}.BytesLengthMin${minBytes}` + message: () => `Must be at least ${minBytes} bytes` }) ) @@ -353,7 +344,7 @@ export const bytesLengthMax = * @category composition */ export const bytesStartsWithPrefix = - (prefix: Uint8Array, moduleName: string) => + (prefix: Uint8Array) => >(baseSchema: S) => baseSchema.pipe( Schema.filter( @@ -365,8 +356,7 @@ export const bytesStartsWithPrefix = return true }, { - message: () => `Must start with prefix [${Array.from(prefix).join(", ")}]`, - identifier: `${moduleName}.BytesStartsWithPrefix` + message: () => `Must start with prefix [${Array.from(prefix).join(", ")}]` } ) ) diff --git a/packages/evolution/src/Bytes128.ts b/packages/evolution/src/core/Bytes128.ts similarity index 90% rename from packages/evolution/src/Bytes128.ts rename to packages/evolution/src/core/Bytes128.ts index b8fbf6bd..6c496a80 100644 --- a/packages/evolution/src/Bytes128.ts +++ b/packages/evolution/src/core/Bytes128.ts @@ -28,11 +28,11 @@ export class Bytes128Error extends Data.TaggedError("Bytes128Error")<{ export const BYTES_LENGTH = 128 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes16.ts b/packages/evolution/src/core/Bytes16.ts similarity index 90% rename from packages/evolution/src/Bytes16.ts rename to packages/evolution/src/core/Bytes16.ts index 2a7d600c..6c778337 100644 --- a/packages/evolution/src/Bytes16.ts +++ b/packages/evolution/src/core/Bytes16.ts @@ -28,11 +28,11 @@ export class Bytes16Error extends Data.TaggedError("Bytes16Error")<{ export const BYTES_LENGTH = 16 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes29.ts b/packages/evolution/src/core/Bytes29.ts similarity index 90% rename from packages/evolution/src/Bytes29.ts rename to packages/evolution/src/core/Bytes29.ts index ec076ad6..46d3ad3a 100644 --- a/packages/evolution/src/Bytes29.ts +++ b/packages/evolution/src/core/Bytes29.ts @@ -28,11 +28,11 @@ export class Bytes29Error extends Data.TaggedError("Bytes29Error")<{ export const BYTES_LENGTH = 29 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes32.ts b/packages/evolution/src/core/Bytes32.ts similarity index 90% rename from packages/evolution/src/Bytes32.ts rename to packages/evolution/src/core/Bytes32.ts index 88f83dad..a92ed8f5 100644 --- a/packages/evolution/src/Bytes32.ts +++ b/packages/evolution/src/core/Bytes32.ts @@ -28,11 +28,11 @@ export class Bytes32Error extends Data.TaggedError("Bytes32Error")<{ export const BYTES_LENGTH = 32 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes4.ts b/packages/evolution/src/core/Bytes4.ts similarity index 90% rename from packages/evolution/src/Bytes4.ts rename to packages/evolution/src/core/Bytes4.ts index 3676e6a5..105c1e52 100644 --- a/packages/evolution/src/Bytes4.ts +++ b/packages/evolution/src/core/Bytes4.ts @@ -28,11 +28,11 @@ export class Bytes4Error extends Data.TaggedError("Bytes4Error")<{ export const BYTES_LENGTH = 4 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes448.ts b/packages/evolution/src/core/Bytes448.ts similarity index 90% rename from packages/evolution/src/Bytes448.ts rename to packages/evolution/src/core/Bytes448.ts index fad24b9e..d8accc90 100644 --- a/packages/evolution/src/Bytes448.ts +++ b/packages/evolution/src/core/Bytes448.ts @@ -28,11 +28,11 @@ export class Bytes448Error extends Data.TaggedError("Bytes448Error")<{ export const BYTES_LENGTH = 448 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes57.ts b/packages/evolution/src/core/Bytes57.ts similarity index 90% rename from packages/evolution/src/Bytes57.ts rename to packages/evolution/src/core/Bytes57.ts index 6946422d..5b9cbadb 100644 --- a/packages/evolution/src/Bytes57.ts +++ b/packages/evolution/src/core/Bytes57.ts @@ -28,11 +28,11 @@ export class Bytes57Error extends Data.TaggedError("Bytes57Error")<{ export const BYTES_LENGTH = 57 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes64.ts b/packages/evolution/src/core/Bytes64.ts similarity index 89% rename from packages/evolution/src/Bytes64.ts rename to packages/evolution/src/core/Bytes64.ts index 6abc763d..2627beb9 100644 --- a/packages/evolution/src/Bytes64.ts +++ b/packages/evolution/src/core/Bytes64.ts @@ -17,11 +17,11 @@ export class Bytes64Error extends Data.TaggedError("Bytes64Error")<{ export const BYTES_LENGTH = 64 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) export const FromHex = Bytes.makeBytesTransformation({ @@ -33,7 +33,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -45,7 +45,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Bytes80.ts b/packages/evolution/src/core/Bytes80.ts similarity index 90% rename from packages/evolution/src/Bytes80.ts rename to packages/evolution/src/core/Bytes80.ts index b562efdf..f6007785 100644 --- a/packages/evolution/src/Bytes80.ts +++ b/packages/evolution/src/core/Bytes80.ts @@ -28,11 +28,11 @@ export class Bytes80Error extends Data.TaggedError("Bytes32Error")<{ export const BYTES_LENGTH = 80 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -58,10 +58,10 @@ export const FromHex = Bytes.makeBytesTransformation({ export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ), decode: Bytes.fromHexLenient, encode: Bytes.toHexLenientUnsafe diff --git a/packages/evolution/src/Bytes96.ts b/packages/evolution/src/core/Bytes96.ts similarity index 90% rename from packages/evolution/src/Bytes96.ts rename to packages/evolution/src/core/Bytes96.ts index f7290688..4e3ecf95 100644 --- a/packages/evolution/src/Bytes96.ts +++ b/packages/evolution/src/core/Bytes96.ts @@ -28,11 +28,11 @@ export class Bytes96Error extends Data.TaggedError("Bytes96Error")<{ export const BYTES_LENGTH = 96 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Bytes${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Bytes${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Bytes${BYTES_LENGTH}.VariableBytes${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Bytes${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/CBOR.ts b/packages/evolution/src/core/CBOR.ts similarity index 100% rename from packages/evolution/src/CBOR.ts rename to packages/evolution/src/core/CBOR.ts diff --git a/packages/evolution/src/Certificate.ts b/packages/evolution/src/core/Certificate.ts similarity index 100% rename from packages/evolution/src/Certificate.ts rename to packages/evolution/src/core/Certificate.ts diff --git a/packages/evolution/src/Codec.ts b/packages/evolution/src/core/Codec.ts similarity index 100% rename from packages/evolution/src/Codec.ts rename to packages/evolution/src/core/Codec.ts diff --git a/packages/evolution/src/Coin.ts b/packages/evolution/src/core/Coin.ts similarity index 100% rename from packages/evolution/src/Coin.ts rename to packages/evolution/src/core/Coin.ts diff --git a/packages/evolution/src/Combinator.ts b/packages/evolution/src/core/Combinator.ts similarity index 100% rename from packages/evolution/src/Combinator.ts rename to packages/evolution/src/core/Combinator.ts diff --git a/packages/evolution/src/CommitteeColdCredential.ts b/packages/evolution/src/core/CommitteeColdCredential.ts similarity index 100% rename from packages/evolution/src/CommitteeColdCredential.ts rename to packages/evolution/src/core/CommitteeColdCredential.ts diff --git a/packages/evolution/src/CommitteeHotCredential.ts b/packages/evolution/src/core/CommitteeHotCredential.ts similarity index 100% rename from packages/evolution/src/CommitteeHotCredential.ts rename to packages/evolution/src/core/CommitteeHotCredential.ts diff --git a/packages/evolution/src/Constitution.ts b/packages/evolution/src/core/Constitution.ts similarity index 100% rename from packages/evolution/src/Constitution.ts rename to packages/evolution/src/core/Constitution.ts diff --git a/packages/evolution/src/CostModel.ts b/packages/evolution/src/core/CostModel.ts similarity index 100% rename from packages/evolution/src/CostModel.ts rename to packages/evolution/src/core/CostModel.ts diff --git a/packages/evolution/src/Credential.ts b/packages/evolution/src/core/Credential.ts similarity index 100% rename from packages/evolution/src/Credential.ts rename to packages/evolution/src/core/Credential.ts diff --git a/packages/evolution/src/DRep.ts b/packages/evolution/src/core/DRep.ts similarity index 100% rename from packages/evolution/src/DRep.ts rename to packages/evolution/src/core/DRep.ts diff --git a/packages/evolution/src/DRepCredential.ts b/packages/evolution/src/core/DRepCredential.ts similarity index 100% rename from packages/evolution/src/DRepCredential.ts rename to packages/evolution/src/core/DRepCredential.ts diff --git a/packages/evolution/src/Data.ts b/packages/evolution/src/core/Data.ts similarity index 100% rename from packages/evolution/src/Data.ts rename to packages/evolution/src/core/Data.ts diff --git a/packages/evolution/src/DataJson.ts b/packages/evolution/src/core/DataJson.ts similarity index 100% rename from packages/evolution/src/DataJson.ts rename to packages/evolution/src/core/DataJson.ts diff --git a/packages/evolution/src/DatumOption.ts b/packages/evolution/src/core/DatumOption.ts similarity index 100% rename from packages/evolution/src/DatumOption.ts rename to packages/evolution/src/core/DatumOption.ts diff --git a/packages/evolution/src/DnsName.ts b/packages/evolution/src/core/DnsName.ts similarity index 100% rename from packages/evolution/src/DnsName.ts rename to packages/evolution/src/core/DnsName.ts diff --git a/packages/evolution/src/Ed25519Signature.ts b/packages/evolution/src/core/Ed25519Signature.ts similarity index 100% rename from packages/evolution/src/Ed25519Signature.ts rename to packages/evolution/src/core/Ed25519Signature.ts diff --git a/packages/evolution/src/EnterpriseAddress.ts b/packages/evolution/src/core/EnterpriseAddress.ts similarity index 100% rename from packages/evolution/src/EnterpriseAddress.ts rename to packages/evolution/src/core/EnterpriseAddress.ts diff --git a/packages/evolution/src/EpochNo.ts b/packages/evolution/src/core/EpochNo.ts similarity index 100% rename from packages/evolution/src/EpochNo.ts rename to packages/evolution/src/core/EpochNo.ts diff --git a/packages/evolution/src/FormatError.ts b/packages/evolution/src/core/FormatError.ts similarity index 100% rename from packages/evolution/src/FormatError.ts rename to packages/evolution/src/core/FormatError.ts diff --git a/packages/evolution/src/Function.ts b/packages/evolution/src/core/Function.ts similarity index 100% rename from packages/evolution/src/Function.ts rename to packages/evolution/src/core/Function.ts diff --git a/packages/evolution/src/GovernanceAction.ts b/packages/evolution/src/core/GovernanceAction.ts similarity index 100% rename from packages/evolution/src/GovernanceAction.ts rename to packages/evolution/src/core/GovernanceAction.ts diff --git a/packages/evolution/src/Hash28.ts b/packages/evolution/src/core/Hash28.ts similarity index 90% rename from packages/evolution/src/Hash28.ts rename to packages/evolution/src/core/Hash28.ts index c795346a..52567b4b 100644 --- a/packages/evolution/src/Hash28.ts +++ b/packages/evolution/src/core/Hash28.ts @@ -28,11 +28,11 @@ export class Hash28Error extends Data.TaggedError("Hash28Error")<{ export const BYTES_LENGTH = 28 export const BytesSchema = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthEquals(BYTES_LENGTH, `Hash${BYTES_LENGTH}.Hash${BYTES_LENGTH}`) + Bytes.bytesLengthEquals(BYTES_LENGTH) ) export const HexSchema = Bytes.HexSchema.pipe( - Bytes.hexLengthEquals(BYTES_LENGTH, `Hash${BYTES_LENGTH}.Hex${BYTES_LENGTH}`) + Bytes.hexLengthEquals(BYTES_LENGTH) ) /** @@ -50,7 +50,7 @@ export const FromHex = Bytes.makeBytesTransformation({ }) export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( - Bytes.bytesLengthBetween(0, BYTES_LENGTH, `Hash${BYTES_LENGTH}.VariableHash${BYTES_LENGTH}`) + Bytes.bytesLengthBetween(0, BYTES_LENGTH) ) /** @@ -62,7 +62,7 @@ export const VariableBytes = Schema.Uint8ArrayFromSelf.pipe( export const VariableBytesFromHex = Bytes.makeBytesTransformation({ id: `Hash${BYTES_LENGTH}.VariableHash${BYTES_LENGTH}FromHex`, stringSchema: Bytes.HexLenientSchema.pipe( - Bytes.hexLengthBetween(0, BYTES_LENGTH, `Hash${BYTES_LENGTH}.VariableHex${BYTES_LENGTH}`) + Bytes.hexLengthBetween(0, BYTES_LENGTH) ), uint8ArraySchema: VariableBytes, decode: Bytes.fromHexLenient, diff --git a/packages/evolution/src/Header.ts b/packages/evolution/src/core/Header.ts similarity index 100% rename from packages/evolution/src/Header.ts rename to packages/evolution/src/core/Header.ts diff --git a/packages/evolution/src/HeaderBody.ts b/packages/evolution/src/core/HeaderBody.ts similarity index 100% rename from packages/evolution/src/HeaderBody.ts rename to packages/evolution/src/core/HeaderBody.ts diff --git a/packages/evolution/src/IPv4.ts b/packages/evolution/src/core/IPv4.ts similarity index 100% rename from packages/evolution/src/IPv4.ts rename to packages/evolution/src/core/IPv4.ts diff --git a/packages/evolution/src/IPv6.ts b/packages/evolution/src/core/IPv6.ts similarity index 100% rename from packages/evolution/src/IPv6.ts rename to packages/evolution/src/core/IPv6.ts diff --git a/packages/evolution/src/KESVkey.ts b/packages/evolution/src/core/KESVkey.ts similarity index 100% rename from packages/evolution/src/KESVkey.ts rename to packages/evolution/src/core/KESVkey.ts diff --git a/packages/evolution/src/KesSignature.ts b/packages/evolution/src/core/KesSignature.ts similarity index 100% rename from packages/evolution/src/KesSignature.ts rename to packages/evolution/src/core/KesSignature.ts diff --git a/packages/evolution/src/KeyHash.ts b/packages/evolution/src/core/KeyHash.ts similarity index 100% rename from packages/evolution/src/KeyHash.ts rename to packages/evolution/src/core/KeyHash.ts diff --git a/packages/evolution/src/Language.ts b/packages/evolution/src/core/Language.ts similarity index 100% rename from packages/evolution/src/Language.ts rename to packages/evolution/src/core/Language.ts diff --git a/packages/evolution/src/Metadata.ts b/packages/evolution/src/core/Metadata.ts similarity index 100% rename from packages/evolution/src/Metadata.ts rename to packages/evolution/src/core/Metadata.ts diff --git a/packages/evolution/src/Mint.ts b/packages/evolution/src/core/Mint.ts similarity index 100% rename from packages/evolution/src/Mint.ts rename to packages/evolution/src/core/Mint.ts diff --git a/packages/evolution/src/MultiAsset.ts b/packages/evolution/src/core/MultiAsset.ts similarity index 100% rename from packages/evolution/src/MultiAsset.ts rename to packages/evolution/src/core/MultiAsset.ts diff --git a/packages/evolution/src/MultiHostName.ts b/packages/evolution/src/core/MultiHostName.ts similarity index 100% rename from packages/evolution/src/MultiHostName.ts rename to packages/evolution/src/core/MultiHostName.ts diff --git a/packages/evolution/src/NativeScriptJSON.ts b/packages/evolution/src/core/NativeScriptJSON.ts similarity index 100% rename from packages/evolution/src/NativeScriptJSON.ts rename to packages/evolution/src/core/NativeScriptJSON.ts diff --git a/packages/evolution/src/NativeScripts.ts b/packages/evolution/src/core/NativeScripts.ts similarity index 100% rename from packages/evolution/src/NativeScripts.ts rename to packages/evolution/src/core/NativeScripts.ts diff --git a/packages/evolution/src/Natural.ts b/packages/evolution/src/core/Natural.ts similarity index 100% rename from packages/evolution/src/Natural.ts rename to packages/evolution/src/core/Natural.ts diff --git a/packages/evolution/src/Network.ts b/packages/evolution/src/core/Network.ts similarity index 100% rename from packages/evolution/src/Network.ts rename to packages/evolution/src/core/Network.ts diff --git a/packages/evolution/src/NetworkId.ts b/packages/evolution/src/core/NetworkId.ts similarity index 91% rename from packages/evolution/src/NetworkId.ts rename to packages/evolution/src/core/NetworkId.ts index fbf27881..05fa1560 100644 --- a/packages/evolution/src/NetworkId.ts +++ b/packages/evolution/src/core/NetworkId.ts @@ -18,7 +18,7 @@ export class NetworkIdError extends Data.TaggedError("NetworkIdError")<{ * @since 2.0.0 * @category schemas */ -export const NetworkId = Schema.NonNegativeInt.pipe(Schema.brand("NetworkId")).annotations({ +export const NetworkId = Schema.NonNegativeInt.annotations({ identifier: "NetworkId" }) diff --git a/packages/evolution/src/NonZeroInt64.ts b/packages/evolution/src/core/NonZeroInt64.ts similarity index 100% rename from packages/evolution/src/NonZeroInt64.ts rename to packages/evolution/src/core/NonZeroInt64.ts diff --git a/packages/evolution/src/NonnegativeInterval.ts b/packages/evolution/src/core/NonnegativeInterval.ts similarity index 100% rename from packages/evolution/src/NonnegativeInterval.ts rename to packages/evolution/src/core/NonnegativeInterval.ts diff --git a/packages/evolution/src/Numeric.ts b/packages/evolution/src/core/Numeric.ts similarity index 100% rename from packages/evolution/src/Numeric.ts rename to packages/evolution/src/core/Numeric.ts diff --git a/packages/evolution/src/OperationalCert.ts b/packages/evolution/src/core/OperationalCert.ts similarity index 100% rename from packages/evolution/src/OperationalCert.ts rename to packages/evolution/src/core/OperationalCert.ts diff --git a/packages/evolution/src/PaymentAddress.ts b/packages/evolution/src/core/PaymentAddress.ts similarity index 100% rename from packages/evolution/src/PaymentAddress.ts rename to packages/evolution/src/core/PaymentAddress.ts diff --git a/packages/evolution/src/PlutusV1.ts b/packages/evolution/src/core/PlutusV1.ts similarity index 100% rename from packages/evolution/src/PlutusV1.ts rename to packages/evolution/src/core/PlutusV1.ts diff --git a/packages/evolution/src/PlutusV2.ts b/packages/evolution/src/core/PlutusV2.ts similarity index 100% rename from packages/evolution/src/PlutusV2.ts rename to packages/evolution/src/core/PlutusV2.ts diff --git a/packages/evolution/src/PlutusV3.ts b/packages/evolution/src/core/PlutusV3.ts similarity index 100% rename from packages/evolution/src/PlutusV3.ts rename to packages/evolution/src/core/PlutusV3.ts diff --git a/packages/evolution/src/Pointer.ts b/packages/evolution/src/core/Pointer.ts similarity index 100% rename from packages/evolution/src/Pointer.ts rename to packages/evolution/src/core/Pointer.ts diff --git a/packages/evolution/src/PointerAddress.ts b/packages/evolution/src/core/PointerAddress.ts similarity index 100% rename from packages/evolution/src/PointerAddress.ts rename to packages/evolution/src/core/PointerAddress.ts diff --git a/packages/evolution/src/PolicyId.ts b/packages/evolution/src/core/PolicyId.ts similarity index 100% rename from packages/evolution/src/PolicyId.ts rename to packages/evolution/src/core/PolicyId.ts diff --git a/packages/evolution/src/PoolKeyHash.ts b/packages/evolution/src/core/PoolKeyHash.ts similarity index 100% rename from packages/evolution/src/PoolKeyHash.ts rename to packages/evolution/src/core/PoolKeyHash.ts diff --git a/packages/evolution/src/PoolMetadata.ts b/packages/evolution/src/core/PoolMetadata.ts similarity index 100% rename from packages/evolution/src/PoolMetadata.ts rename to packages/evolution/src/core/PoolMetadata.ts diff --git a/packages/evolution/src/PoolParams.ts b/packages/evolution/src/core/PoolParams.ts similarity index 100% rename from packages/evolution/src/PoolParams.ts rename to packages/evolution/src/core/PoolParams.ts diff --git a/packages/evolution/src/Port.ts b/packages/evolution/src/core/Port.ts similarity index 100% rename from packages/evolution/src/Port.ts rename to packages/evolution/src/core/Port.ts diff --git a/packages/evolution/src/PositiveCoin.ts b/packages/evolution/src/core/PositiveCoin.ts similarity index 100% rename from packages/evolution/src/PositiveCoin.ts rename to packages/evolution/src/core/PositiveCoin.ts diff --git a/packages/evolution/src/PrivateKey.ts b/packages/evolution/src/core/PrivateKey.ts similarity index 100% rename from packages/evolution/src/PrivateKey.ts rename to packages/evolution/src/core/PrivateKey.ts diff --git a/packages/evolution/src/ProposalProcedure.ts b/packages/evolution/src/core/ProposalProcedure.ts similarity index 100% rename from packages/evolution/src/ProposalProcedure.ts rename to packages/evolution/src/core/ProposalProcedure.ts diff --git a/packages/evolution/src/ProposalProcedures.ts b/packages/evolution/src/core/ProposalProcedures.ts similarity index 100% rename from packages/evolution/src/ProposalProcedures.ts rename to packages/evolution/src/core/ProposalProcedures.ts diff --git a/packages/evolution/src/ProtocolParamUpdate.ts b/packages/evolution/src/core/ProtocolParamUpdate.ts similarity index 100% rename from packages/evolution/src/ProtocolParamUpdate.ts rename to packages/evolution/src/core/ProtocolParamUpdate.ts diff --git a/packages/evolution/src/ProtocolVersion.ts b/packages/evolution/src/core/ProtocolVersion.ts similarity index 100% rename from packages/evolution/src/ProtocolVersion.ts rename to packages/evolution/src/core/ProtocolVersion.ts diff --git a/packages/evolution/src/Redeemer.ts b/packages/evolution/src/core/Redeemer.ts similarity index 100% rename from packages/evolution/src/Redeemer.ts rename to packages/evolution/src/core/Redeemer.ts diff --git a/packages/evolution/src/Relay.ts b/packages/evolution/src/core/Relay.ts similarity index 100% rename from packages/evolution/src/Relay.ts rename to packages/evolution/src/core/Relay.ts diff --git a/packages/evolution/src/RewardAccount.ts b/packages/evolution/src/core/RewardAccount.ts similarity index 100% rename from packages/evolution/src/RewardAccount.ts rename to packages/evolution/src/core/RewardAccount.ts diff --git a/packages/evolution/src/RewardAddress.ts b/packages/evolution/src/core/RewardAddress.ts similarity index 100% rename from packages/evolution/src/RewardAddress.ts rename to packages/evolution/src/core/RewardAddress.ts diff --git a/packages/evolution/src/Script.ts b/packages/evolution/src/core/Script.ts similarity index 92% rename from packages/evolution/src/Script.ts rename to packages/evolution/src/core/Script.ts index 2205bd92..2c95cd28 100644 --- a/packages/evolution/src/Script.ts +++ b/packages/evolution/src/core/Script.ts @@ -1,6 +1,7 @@ import { Data, Effect as Eff, FastCheck, ParseResult, Schema } from "effect" import * as CBOR from "./CBOR.js" +import * as Function from "./Function.js" import * as NativeScripts from "./NativeScripts.js" import * as PlutusV1 from "./PlutusV1.js" import * as PlutusV2 from "./PlutusV2.js" @@ -171,3 +172,8 @@ export const arbitrary: FastCheck.Arbitrary