Skip to content

Commit 49abd17

Browse files
committed
fix: remove cml
1 parent 0892d09 commit 49abd17

File tree

1 file changed

+0
-154
lines changed

1 file changed

+0
-154
lines changed

packages/evolution/src/DataJson.ts

Lines changed: 0 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import * as CML from "@anastasia-labs/cardano-multiplatform-lib-nodejs"
2-
import type { Record, SchemaAST } from "effect"
31
import { pipe, Schema } from "effect"
42
import type { ParseIssue } from "effect/ParseResult"
53

@@ -112,155 +110,3 @@ export const isConstr = Schema.is(Constr)
112110

113111
// export const Data = Schema.Union(Integer, ByteArray, List, Map, Constr);
114112
export const Data: Schema.Schema<Data> = Schema.Union(Integer, ByteArray, List, Map, Constr)
115-
116-
export const mkByteArray = (bytes: string): ByteArray => ByteArray.make({ bytes })
117-
118-
export const mkMap = (map: Record<string, Data>): Readonly<Map> => Map.make(map)
119-
120-
export const mkInteger = (int: number): Integer => Integer.make({ int })
121-
122-
// export const mkConstr = <T extends Data>(
123-
// constructor: number,
124-
// fields: readonly T[]
125-
// ): { readonly constructor: number; readonly fields: readonly T[] } => ({
126-
// constructor,
127-
// fields
128-
// });
129-
export const mkConstr = <T extends Data>(
130-
constructor: number,
131-
fields: ReadonlyArray<T>
132-
): { readonly constructor: number; readonly fields: ReadonlyArray<T> } => ({
133-
constructor,
134-
fields
135-
})
136-
/**
137-
* Converts TypeScript data into CBOR hex string
138-
*
139-
* @since 1.0.0
140-
*/
141-
export const toCBOR = <Source, Target extends Data>(
142-
input: unknown,
143-
schema?: Schema.Schema<Source, Target>,
144-
options: {
145-
canonical?: boolean
146-
parseOptions?: SchemaAST.ParseOptions
147-
} = {}
148-
): string => {
149-
const { canonical = false } = options
150-
const toCMLPlutusData = (data: Data): CML.PlutusData => {
151-
if (isInteger(data)) {
152-
return CML.PlutusData.new_integer(CML.BigInteger.from_str(data.int.toString()))
153-
} else if (isByteArray(data)) {
154-
return CML.PlutusData.new_bytes(Bytes.Codec.Encode.bytes(data.bytes))
155-
} else if (isList(data)) {
156-
const list = CML.PlutusDataList.new()
157-
data.forEach((item) => list.add(toCMLPlutusData(item)))
158-
return CML.PlutusData.new_list(list)
159-
} else if (isMap(data)) {
160-
const map = CML.PlutusMap.new()
161-
Object.entries(data).forEach(([key, value]) => {
162-
const plutusKey = CML.PlutusData.new_bytes(Bytes.Codec.Encode.bytes(key))
163-
map.set(plutusKey, toCMLPlutusData(value))
164-
})
165-
return CML.PlutusData.new_map(map)
166-
} else if (isConstr(data)) {
167-
const fields = CML.PlutusDataList.new()
168-
data.fields.forEach((item) => fields.add(toCMLPlutusData(item)))
169-
return CML.PlutusData.new_constr_plutus_data(CML.ConstrPlutusData.new(BigInt(data.constructor), fields))
170-
} else {
171-
throw new Error(`Unsupported data type: ${data}`)
172-
}
173-
}
174-
175-
const data: Data = schema ? toData(input, schema, options.parseOptions) : toData(input, Data)
176-
const cmlPlutusData = toCMLPlutusData(data)
177-
return canonical ? cmlPlutusData.to_canonical_cbor_hex() : cmlPlutusData.to_cardano_node_format().to_cbor_hex()
178-
}
179-
180-
/**
181-
* Decodes a CBOR hex string to a TypeScript type
182-
*
183-
* @since 1.0.0
184-
*/
185-
export function fromCBOR(input: string): Data
186-
export function fromCBOR<Source, Target extends Data>(input: string, schema: Schema.Schema<Source, Target>): Source
187-
export function fromCBOR<Source, Target extends Data>(
188-
input: string,
189-
schema?: Schema.Schema<Source, Target>
190-
): Source | Data {
191-
const data = resolveCBOR(input)
192-
return schema ? fromData(data, schema) : data
193-
}
194-
195-
export const resolveCBOR = (input: string): Data => {
196-
let data: CML.PlutusData
197-
try {
198-
data = CML.PlutusData.from_cbor_hex(input)
199-
} catch {
200-
throw new Error(`Failed to resolve CBOR input: ${input}`)
201-
}
202-
switch (data.kind()) {
203-
case CML.PlutusDataKind.Integer:
204-
return Integer.make({ int: Number(data.as_integer()!.to_str()) })
205-
case CML.PlutusDataKind.Bytes:
206-
return ByteArray.make({
207-
bytes: Bytes.Codec.Decode.bytes(data.as_bytes()!)
208-
})
209-
case CML.PlutusDataKind.List: {
210-
const list = data.as_list()!
211-
const array = []
212-
for (let i = 0; i < list.len(); i++) {
213-
array.push(resolveCBOR(list.get(i).to_cbor_hex()))
214-
}
215-
return array
216-
}
217-
case CML.PlutusDataKind.Map: {
218-
const plutusMap = data.as_map()!
219-
const map: Record<string, Data> = {}
220-
const keys = plutusMap.keys()
221-
for (let i = 0; i < keys.len(); i++) {
222-
const keyData = resolveCBOR(keys.get(i).to_cbor_hex())
223-
const key = isByteArray(keyData) ? keyData.bytes : String(keyData)
224-
const val = resolveCBOR(plutusMap.get(keys.get(i))!.to_cbor_hex())
225-
map[key] = val
226-
}
227-
return map
228-
}
229-
case CML.PlutusDataKind.ConstrPlutusData: {
230-
const constrData = data.as_constr_plutus_data()!
231-
const fields = []
232-
const list = constrData.fields()
233-
for (let i = 0; i < list.len(); i++) {
234-
fields.push(resolveCBOR(list.get(i).to_cbor_hex()))
235-
}
236-
return Constr.make({
237-
constructor: Number(constrData.alternative()),
238-
fields
239-
})
240-
}
241-
default:
242-
throw new Error(`Unsupported type: ${data.kind()}`)
243-
}
244-
}
245-
246-
/**
247-
* Decodes an unknown value from Plutus Data Constructor to a TypeScript type
248-
*
249-
* @since 1.0.0
250-
*/
251-
export const fromData = <Source, Target extends Data>(
252-
input: unknown,
253-
schema: Schema.Schema<Source, Target>,
254-
options: SchemaAST.ParseOptions = {}
255-
): Source => Schema.decodeUnknownSync(schema, options)(input)
256-
257-
/**
258-
* Encodes a TypeScript value to Plutus Data Constructor
259-
*
260-
* @since 1.0.0
261-
*/
262-
export const toData = <Source, Target extends Data>(
263-
input: unknown,
264-
schema: Schema.Schema<Source, Target>,
265-
options?: SchemaAST.ParseOptions
266-
): Target => Schema.encodeUnknownSync(schema, options)(input)

0 commit comments

Comments
 (0)