From 1eb8fa83f6ce89c07bdb9da26cb840c05c520bcc Mon Sep 17 00:00:00 2001 From: Tadas Date: Mon, 24 Jun 2024 12:25:22 +0300 Subject: [PATCH] Make ornode dev server reload when dependencies change Tried to solve the same problem for gui. Currently you have to re-save the vite.config.ts file in order for dev server to rebuild with changed dependencies. Had to add force flag and optimizeDeps.force: true to vite.config.ts to make this work. This problem is bugging a lot of vite users: https://github.com/vitejs/vite/issues/8619 . Also refactored clientToNodeTransformer to not depend on z.instanceof, because it is not reliable... --- impl/orclient/src/orclient.ts | 4 +- impl/ordao/gui/package.json | 2 +- impl/ordao/gui/src/global/orclient.ts | 4 +- impl/ordao/gui/vite.config.ts | 10 +- impl/ordao/sys/package.json | 2 +- impl/ordao/sys/src/devOrnode.js | 14 +- impl/ordao/sys/src/testOrdao.js | 2 +- impl/orec/utils/index.ts | 4 + impl/ornode/run-dev.sh | 2 +- impl/ornode/src/memOrnode.ts | 2 +- impl/ornode/src/routing.ts | 2 + impl/ortypes/src/orContext.ts | 34 +- .../transformers/clientToNodeTransformer.ts | 603 +++++++++--------- impl/respect1155/sc/index.ts | 4 + impl/ts-utils/src/index.ts | 3 +- 15 files changed, 375 insertions(+), 317 deletions(-) diff --git a/impl/orclient/src/orclient.ts b/impl/orclient/src/orclient.ts index 588b112..adac5ee 100644 --- a/impl/orclient/src/orclient.ts +++ b/impl/orclient/src/orclient.ts @@ -27,8 +27,8 @@ export interface Config { export const defaultConfig: Config = { propConfirms: 3, otherConfirms: 3, - propSubmitRetries: 3, - propResubmitInterval: 2000 + propSubmitRetries: 4, + propResubmitInterval: 3000 } export interface PutProposalRes { diff --git a/impl/ordao/gui/package.json b/impl/ordao/gui/package.json index dd9cbf5..dcd2683 100644 --- a/impl/ordao/gui/package.json +++ b/impl/ordao/gui/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --force", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" diff --git a/impl/ordao/gui/src/global/orclient.ts b/impl/ordao/gui/src/global/orclient.ts index 44e4c00..a28711e 100644 --- a/impl/ordao/gui/src/global/orclient.ts +++ b/impl/ordao/gui/src/global/orclient.ts @@ -21,13 +21,15 @@ const ctxCfg: ConfigWithOrnode = { ornode, contractRunner: bp } -export const ctx = ORContext.create(ctxCfg); +const ctx = ORContext.create(ctxCfg); ctx.catch((reason) => { console.error(`Failed creating orContext. Reason: ${JSON.stringify(reason)}`); }) export const orclient = ctx.then((context) => { + console.debug("is a 2: ", context instanceof ORContext) + context.callTest(); const orclient = new ORClient(context); // eslint-disable-next-line @typescript-eslint/no-explicit-any (window as any).cli = orclient; diff --git a/impl/ordao/gui/vite.config.ts b/impl/ordao/gui/vite.config.ts index b2184f8..62e72d8 100644 --- a/impl/ordao/gui/vite.config.ts +++ b/impl/ordao/gui/vite.config.ts @@ -5,9 +5,15 @@ import react from '@vitejs/plugin-react-swc' export default defineConfig({ plugins: [react()], optimizeDeps: { - esbuildOptions: { preserveSymlinks: true } + esbuildOptions: { preserveSymlinks: true }, + force: true, }, resolve: { - preserveSymlinks: true + preserveSymlinks: true, + }, + server: { + watch: { + followSymlinks: true + } } }) diff --git a/impl/ordao/sys/package.json b/impl/ordao/sys/package.json index 5dcbda4..5e56c31 100644 --- a/impl/ordao/sys/package.json +++ b/impl/ordao/sys/package.json @@ -51,7 +51,7 @@ "dev-gui": "node src/devGui.js", "dev-ornode": "node src/devOrnode.js", "dev-ornode-swagger-ui": "cd $npm_package_config_ornode && ORNODE_CFG_PATH=../ordao/sys/tmp/ornode-dev-cfg.json npm run swagger-ui", - "dev-servers": "npm run build-clean && concurrently --kill-others \"npm:dev-ornode\" \"npm:watch-*\" \"npm:dev-ornode-swagger-ui\" \"npm:dev-gui\"", + "dev-servers": "npm run build-clean && concurrently --kill-others \"npm:dev-ornode\" \"npm:dev-gui\" \"npm:watch-*\" \"npm:dev-ornode-swagger-ui\"", "dev": "node src/dev.js" }, "keywords": [], diff --git a/impl/ordao/sys/src/devOrnode.js b/impl/ordao/sys/src/devOrnode.js index 21f9a99..6c9452e 100644 --- a/impl/ordao/sys/src/devOrnode.js +++ b/impl/ordao/sys/src/devOrnode.js @@ -12,7 +12,19 @@ async function main() { }; jsonfile.writeFileSync("./tmp/ornode-dev-cfg.json", config); - shelljs.exec("cd $npm_package_config_ornode && ORNODE_CFG_PATH=../ordao/sys/tmp/ornode-dev-cfg.json npx nodemon dist/index.js"); + // shelljs.exec("cd $npm_package_config_ornode && ORNODE_CFG_PATH=../ordao/sys/tmp/ornode-dev-cfg.json npx nodemon --watch node_modules/ortypes node_modules/ts-utils dist/index.js"); + shelljs.exec(`cd $npm_package_config_ornode && \ + ORNODE_CFG_PATH=../ordao/sys/tmp/ornode-dev-cfg.json \ + \ + npx nodemon \ + --watch ../ortypes/dist \ + --watch ../ts-utils/dist \ + --watch ../respect1155/sc/dist \ + --watch ../orec/dist/ + --watch ./ + \ + dist/index.js` + ); } main(); \ No newline at end of file diff --git a/impl/ordao/sys/src/testOrdao.js b/impl/ordao/sys/src/testOrdao.js index 45cacad..8db47aa 100644 --- a/impl/ordao/sys/src/testOrdao.js +++ b/impl/ordao/sys/src/testOrdao.js @@ -11,7 +11,7 @@ async function main() { shelljs.exec("npm run test-deployment"); // Synchronous - const ornode = shelljs.exec("npm run ornode-dev > ./tmp/ornode-test.log", { async: true }) + const ornode = shelljs.exec("npm run dev-ornode > ./tmp/ornode-test.log", { async: true }) shelljs.exec("npm run hh-test-ordao"); diff --git a/impl/orec/utils/index.ts b/impl/orec/utils/index.ts index 956f768..9987bed 100644 --- a/impl/orec/utils/index.ts +++ b/impl/orec/utils/index.ts @@ -32,3 +32,7 @@ export function propId(msg: Orec.MessageStruct) { [msg.addr, msg.cdata, msg.memo] ); } + +export function testVersion() { + console.debug("orec: 10"); +} diff --git a/impl/ornode/run-dev.sh b/impl/ornode/run-dev.sh index a1e8504..ae5bed1 100755 --- a/impl/ornode/run-dev.sh +++ b/impl/ornode/run-dev.sh @@ -2,7 +2,7 @@ npx tsc --watch & sleep 5 -npx nodemon dist/index.js +npx nodemon --watch node_modules/ortypes node_modules/ts-utils dist/index.js # TODO: run hardhat node as well... diff --git a/impl/ornode/src/memOrnode.ts b/impl/ornode/src/memOrnode.ts index 0cdb8df..90a2a37 100644 --- a/impl/ornode/src/memOrnode.ts +++ b/impl/ornode/src/memOrnode.ts @@ -170,8 +170,8 @@ export class MemOrnode implements IORNode { // TODO: async getPeriodNum(): Promise { + this._ctx.callTest(); return this._periodNum; - } } \ No newline at end of file diff --git a/impl/ornode/src/routing.ts b/impl/ornode/src/routing.ts index 7aef223..9f5e801 100644 --- a/impl/ornode/src/routing.ts +++ b/impl/ornode/src/routing.ts @@ -6,6 +6,7 @@ import { config } from "./config.js"; import { zORNodePropStatus, zProposal, zProposalFull } from "ortypes/ornode.js"; import { zPropId } from "ortypes"; import { resultHandler } from "./resultHandler.js"; +import { testStr } from "ortypes/orContext.js"; const ornode = MemOrnode.create({ newRespect: config.contracts.newRespect, @@ -40,6 +41,7 @@ const getPeriodNum = factory.build({ output: z.object({ periodNum: z.number() }), handler: async ({ input, options, logger }) => { logger.debug(`getPeriodNumber ${JSON.stringify(input)}. options: ${JSON.stringify(options)}`); + logger.debug("Test str: ", testStr); const n = await getOrnode(); const periodNum = await n.getPeriodNum(); return { periodNum }; diff --git a/impl/ortypes/src/orContext.ts b/impl/ortypes/src/orContext.ts index 4d07461..74a075b 100644 --- a/impl/ortypes/src/orContext.ts +++ b/impl/ortypes/src/orContext.ts @@ -9,6 +9,7 @@ import { OnchainProp, PropId, zProposalState, zStage, zVoteStatus } from "./orec import { InvalidArgumentError, Url, zUrl } from "./common.js"; import { Required } from "utility-types"; import { expect } from "chai"; +import { testVersion } from "orec/utils"; export interface State { orec: Orec, @@ -17,7 +18,10 @@ export interface State { ornode?: IORNode } -export type StateWithOrnode = Required +// export type StateWithOrnode = Required +export interface StateWithOrnode extends State { + ornode: IORNode; +} export interface Config { orec: EthAddress | Orec, @@ -26,7 +30,11 @@ export interface Config { contractRunner?: ContractRunner | Url } -export type ConfigWithOrnode = Required; +export interface ConfigWithOrnode extends Config { + ornode: IORNode +} + +// export type ConfigWithOrnode = Required; export type StateForConfig = CT extends ConfigWithOrnode ? StateWithOrnode : State; @@ -84,13 +92,13 @@ export class ORContext { } } if (!runner) { - throw new InvalidArgumentError("Could not determine provider"); + throw new InvalidArgumentError("Could not determine contract runner"); } return runner; } - static async create(config: CT): Promise> { + static async create(config: CT_): Promise> { const runner = this._determineRunner(config); const network = await runner.provider?.getNetwork(); @@ -108,19 +116,25 @@ export class ORContext { console.debug("oldRespectAddr: ", oldRespAddr); const oldRespect = FractalRespectFactory.connect(oldRespAddr, runner); - const st: State = { + const st = { orec, newRespect, oldRespect, - ornode: config.ornode + ornode: config.ornode as CT_['ornode'], }; - const ctx = new ORContext(st, false); + const ctx = new ORContext(st as any, false); ctx._oldRespectAddr = oldRespAddr; await ctx.validate(); + console.debug("This is new 4"); + return ctx; } + callTest() { + testVersion(); + } + switchSigner(signer: Signer) { this._st.orec = this._st.orec.connect(signer); } @@ -183,4 +197,8 @@ export class ORContext { return r; } -} \ No newline at end of file +} + +export const zORContext = z.instanceof(ORContext); + +export const testStr = "aaaa 2!"; diff --git a/impl/ortypes/src/transformers/clientToNodeTransformer.ts b/impl/ortypes/src/transformers/clientToNodeTransformer.ts index cb2f54e..5300927 100644 --- a/impl/ortypes/src/transformers/clientToNodeTransformer.ts +++ b/impl/ortypes/src/transformers/clientToNodeTransformer.ts @@ -15,7 +15,7 @@ import { zTickRequest, } from "../orclient.js"; import { BurnRespect, BurnRespectAttachment, CustomCall, CustomCallAttachment, CustomSignal, CustomSignalAttachment, PropContent, Proposal, RespectAccount, RespectAccountAttachment, RespectBreakout, RespectBreakoutAttachment, Tick, TickAttachment, TickValid, idOfBurnRespectAttach, idOfCustomCallAttach, idOfCustomSignalAttach, idOfRespectAccountAttach, idOfRespectBreakoutAttach, zBurnRespect, zBurnRespectValid, zCustomCall, zCustomCallValid, zCustomSignal, zCustomSignalValid, zRespectAccount, zRespectAccountValid, zRespectBreakout, zRespectBreakoutValid, zTick, zTickValid } from "../ornode.js"; -import { ORContext as OrigORContext, ConfigWithOrnode } from "../orContext.js"; +import { ConfigWithOrnode, ORContext as OrigORContext } from "../orContext.js"; import { CustomSignalArgs, OrecFactory, zTickSignalType } from "../orec.js"; import { BurnRespectArgs, MintRequest, MintRespectArgs, MintRespectGroupArgs, Factory as Respect1155Factory, zBreakoutMintType, zMintRespectArgs, zUnspecifiedMintType } from "../respect1155.js"; import { propId } from "orec/utils"; @@ -24,30 +24,11 @@ import { zBreakoutMintRequest, zGroupNum, zPropType, zRankNum } from "../fractal import { zBigNumberish, zBigNumberishToBigint } from "../eth.js"; import { packTokenId } from "respect1155-sc/utils/tokenId.js"; -const ORContextClass = OrigORContext; -type ORContextType = OrigORContext; +type ORContext = OrigORContext; const respectInterface = Respect1155Factory.createInterface(); const orecInterface = OrecFactory.createInterface(); -export const zCPropContext = z.instanceof(ORContextClass); -export type CPropContext = z.infer; - -type RequestWithContext = z.ZodObject<{ - ctx: z.ZodType, - req: T -}>; -function zReqToContext(ztype: T): RequestWithContext { - return z.object({ ctx: zCPropContext, req: ztype }); -} - -export const zRespBreakoutReqCtx = zReqToContext(zRespectBreakoutRequest); -export const zRespAccountReqCtx = zReqToContext(zRespectAccountRequest); -export const zBurnRespectReqCtx = zReqToContext(zBurnRespectRequest); -export const zCustomSignalReqCtx = zReqToContext(zCustomSignalRequest); -export const zTickReqCtx = zReqToContext(zTickRequest); -export const zCustomCallReqCtx = zReqToContext(zCustomCallRequest); - const _rewards = [ 55n, 34n, 21n, 13n, 8n, 5n ]; @@ -64,320 +45,348 @@ export const zRankNumToValue = zRankNum.transform((rankNum, ctx) => { // TODO: use ipfs cids instead? // * propIds can use solidityPacked for efficiency but it makes sense to adapt attachments more for off-chain? -export const zCRespectBreakoutToMintArgs = zRespBreakoutReqCtx.transform(async (val, ctx) => { - try { - const periodNumber = val.req.meetingNum === undefined - ? await val.ctx.ornode.getPeriodNum() - : val.req.meetingNum - 1; +function mkzCRespectBreakoutToMintArgs(orctx: ORContext) { + return zRespectBreakoutRequest.transform(async (val, ctx) => { + try { + const periodNumber = val.meetingNum === undefined + ? await orctx.ornode.getPeriodNum() + : val.meetingNum - 1; + + const mintReqs: MintRequest[] = []; + + for (const [i, addr] of val.rankings.entries()) { + const value = zRankNumToValue.parse(i + 1); + const id = packTokenId({ + owner: addr, + mintType: zBreakoutMintType.value, + periodNumber + }) + mintReqs.push({ + value, id: zBigNumberishToBigint.parse(id) + }); + } + + const r: MintRespectGroupArgs = { + mintRequests: mintReqs, + data: "0x" + } + return r; + } catch (err) { + // TODO: pass the parent err in some way, instead of passing it through message... + addCustomIssue(val, ctx, err, "exception in zCRespectBreakoutToMintArgs"); + } + }).pipe(zBreakoutMintRequest); +} - const mintReqs: MintRequest[] = []; +function mkzCRespectBreakoutToProposal(orctx: ORContext) { + const _zCRespectBreakoutToMintArgs = mkzCRespectBreakoutToMintArgs(orctx); + + return zRespectBreakoutRequest.transform(async (val, ctx) => { + try { + const mintArgs = await _zCRespectBreakoutToMintArgs.parseAsync(val); + const cdata = respectInterface.encodeFunctionData( + "mintRespectGroup", + [mintArgs.mintRequests, mintArgs.data] + ); + const addr = await orctx.getNewRespectAddr(); + + const attachment: RespectBreakoutAttachment = { + propType: zPropType.Enum.respectBreakout, + groupNum: zGroupNum.parse(val.groupNum), + propTitle: val.metadata?.propTitle, + propDescription: val.metadata?.propDescription + }; + + const memo = idOfRespectBreakoutAttach(attachment); + + const content: PropContent = { addr, cdata, memo }; + const id = propId(content); + + const r: RespectBreakout = { + id, + content, + attachment + } + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCRespectBreakoutReqToProposal", + cause: err + }); + } + }).pipe(zRespectBreakoutValid); +} + +function mkzCRespectAccountReqToMintArgs(orctx: ORContext) { + return zRespectAccountRequest.transform(async (val, ctx) => { + try { + const periodNumber = val.meetingNum === undefined + ? await orctx.ornode.getPeriodNum() + : val.meetingNum - 1; + const mintType = val.mintType === undefined + ? zUnspecifiedMintType.value + : val.mintType; - for (const [i, addr] of val.req.rankings.entries()) { - const value = zRankNumToValue.parse(i + 1); const id = packTokenId({ - owner: addr, - mintType: zBreakoutMintType.value, + owner: val.account, + mintType, periodNumber - }) - mintReqs.push({ - value, id: zBigNumberishToBigint.parse(id) }); - } - const r: MintRespectGroupArgs = { - mintRequests: mintReqs, - data: "0x" + const mintReq: MintRequest = { + id: zBigNumberishToBigint.parse(id), + value: val.value + }; + + const r: MintRespectArgs = { + request: mintReq, + data: "0x" + }; + + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCRespectAccountReqToMintArgs", + cause: err + }); } - return r; - } catch (err) { - // TODO: pass the parent err in some way, instead of passing it through message... - addCustomIssue(val, ctx, err, "exception in zCRespectBreakoutToMintArgs"); - } -}).pipe(zBreakoutMintRequest); + }).pipe(zMintRespectArgs); +} -export const zCRespBreakoutReqToProposal = zRespBreakoutReqCtx.transform(async (val, ctx) => { - try { - const mintArgs = await zCRespectBreakoutToMintArgs.parseAsync(val); - const cdata = respectInterface.encodeFunctionData( - "mintRespectGroup", - [mintArgs.mintRequests, mintArgs.data] - ); - const addr = await val.ctx.getNewRespectAddr(); - - const attachment: RespectBreakoutAttachment = { - propType: zPropType.Enum.respectBreakout, - groupNum: zGroupNum.parse(val.req.groupNum), - propTitle: val.req.metadata?.propTitle, - propDescription: val.req.metadata?.propDescription - }; - - const memo = idOfRespectBreakoutAttach(attachment); - - const content: PropContent = { addr, cdata, memo }; - const id = propId(content); - - const r: RespectBreakout = { - id, - content, - attachment +function mkzCRespAccountReqToProposal(orctx: ORContext) { + const _zCRespectAccountReqToMintArgs = mkzCRespectAccountReqToMintArgs(orctx); + + return zRespectAccountRequest.transform(async (val, ctx) => { + try { + const mintArgs = await _zCRespectAccountReqToMintArgs.parseAsync(val); + const cdata = respectInterface.encodeFunctionData( + "mintRespect", + [mintArgs.request, mintArgs.data] + ); + const addr = await orctx.getNewRespectAddr(); + + const attachment: RespectAccountAttachment = { + propType: zPropType.Enum.respectAccount, + mintReason: val.reason, + mintTitle: val.title, + propTitle: val.metadata?.propTitle, + propDescription: val.metadata?.propDescription + }; + + const memo = idOfRespectAccountAttach(attachment); + + const content: PropContent = { addr, cdata, memo }; + const id = propId(content); + + const r: RespectAccount = { + id, + content, + attachment + } + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCRespectAccountReqToProposal", + cause: err + }); } - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCRespectBreakoutReqToProposal", - cause: err - }); - } -}).pipe(zRespectBreakoutValid); - -export const zCRespectAccountReqToMintArgs = zRespAccountReqCtx.transform(async (val, ctx) => { - try { - const periodNumber = val.req.meetingNum === undefined - ? await val.ctx.ornode.getPeriodNum() - : val.req.meetingNum - 1; - const mintType = val.req.mintType === undefined - ? zUnspecifiedMintType.value - : val.req.mintType; - - const id = packTokenId({ - owner: val.req.account, - mintType, - periodNumber - }); - - const mintReq: MintRequest = { - id: zBigNumberishToBigint.parse(id), - value: val.req.value - }; - - const r: MintRespectArgs = { - request: mintReq, - data: "0x" - }; - - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCRespectAccountReqToMintArgs", - cause: err - }); - } -}).pipe(zMintRespectArgs); + }).pipe(zRespectAccountValid); +} -export const zCRespAccountReqToProposal = zRespAccountReqCtx.transform(async (val, ctx) => { - try { - const mintArgs = await zCRespectAccountReqToMintArgs.parseAsync(val); - const cdata = respectInterface.encodeFunctionData( - "mintRespect", - [mintArgs.request, mintArgs.data] - ); - const addr = await val.ctx.getNewRespectAddr(); - - const attachment: RespectAccountAttachment = { - propType: zPropType.Enum.respectAccount, - mintReason: val.req.reason, - mintTitle: val.req.title, - propTitle: val.req.metadata?.propTitle, - propDescription: val.req.metadata?.propDescription - }; - - const memo = idOfRespectAccountAttach(attachment); - - const content: PropContent = { addr, cdata, memo }; - const id = propId(content); - - const r: RespectAccount = { - id, - content, - attachment +function mkzCBurnRespReqToProposal(orctx: ORContext) { + return zBurnRespectRequest.transform(async (val, ctx) => { + try { + const args: BurnRespectArgs = { + tokenId: val.tokenId, + data: "" + }; + const cdata = respectInterface.encodeFunctionData( + "burnRespect", + [args.tokenId, args.data] + ); + const addr = await orctx.getNewRespectAddr(); + + const attachment: BurnRespectAttachment = { + propType: zPropType.Enum.burnRespect, + burnReason: val.reason, + propTitle: val.metadata?.propTitle, + propDescription: val.metadata?.propDescription + }; + + const memo = idOfBurnRespectAttach(attachment); + + const content: PropContent = { addr, cdata, memo }; + const id = propId(content); + + const r: BurnRespect = { + id, + content, + attachment + } + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCBurnRespReqToProposal", + cause: err + }); } - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCRespectAccountReqToProposal", - cause: err - }); - } -}).pipe(zRespectAccountValid); + }).pipe(zBurnRespectValid); +} -export const zCBurnRespReqToProposal = zBurnRespectReqCtx.transform(async (val, ctx) => { - try { - const args: BurnRespectArgs = { - tokenId: val.req.tokenId, - data: "" - }; - const cdata = respectInterface.encodeFunctionData( - "burnRespect", - [args.tokenId, args.data] - ); - const addr = await val.ctx.getNewRespectAddr(); - - const attachment: BurnRespectAttachment = { - propType: zPropType.Enum.burnRespect, - burnReason: val.req.reason, - propTitle: val.req.metadata?.propTitle, - propDescription: val.req.metadata?.propDescription - }; - - const memo = idOfBurnRespectAttach(attachment); - - const content: PropContent = { addr, cdata, memo }; - const id = propId(content); - - const r: BurnRespect = { - id, - content, - attachment +function mkzCCustomSignalReqToProposal(orctx: ORContext) { + return zCustomSignalRequest.transform(async (val, ctx) => { + try { + const args: CustomSignalArgs = { + signalType: val.signalType, + data: val.data + }; + const cdata = orecInterface.encodeFunctionData( + "signal", + [args.signalType, args.data] + ); + const addr = await orctx.getOrecAddr(); + + const attachment: CustomSignalAttachment = { + propType: zPropType.Enum.customSignal, + link: val.link, + propTitle: val.metadata?.propTitle, + propDescription: val.metadata?.propDescription + }; + + const memo = idOfCustomSignalAttach(attachment); + + const content: PropContent = { addr, cdata, memo }; + const id = propId(content); + + const r: CustomSignal = { + id, + content, + attachment + } + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCCustomSignalReqToProposal", + cause: err + }); } - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCBurnRespReqToProposal", - cause: err - }); - } -}).pipe(zBurnRespectValid); + }).pipe(zCustomSignalValid); +} -export const zCCustomSignalReqToProposal = zCustomSignalReqCtx.transform(async (val, ctx) => { - try { - const args: CustomSignalArgs = { - signalType: val.req.signalType, - data: val.req.data - }; - const cdata = orecInterface.encodeFunctionData( - "signal", - [args.signalType, args.data] - ); - const addr = await val.ctx.getOrecAddr(); - - const attachment: CustomSignalAttachment = { - propType: zPropType.Enum.customSignal, - link: val.req.link, - propTitle: val.req.metadata?.propTitle, - propDescription: val.req.metadata?.propDescription - }; - - const memo = idOfCustomSignalAttach(attachment); - - const content: PropContent = { addr, cdata, memo }; - const id = propId(content); - - const r: CustomSignal = { - id, - content, - attachment +function mkzTickReqToProposal(orctx: ORContext) { + return zTickRequest.transform(async (val, ctx) => { + try { + const args: CustomSignalArgs = { + signalType: zTickSignalType.value, + data: val.data === undefined ? "0x" : val.data + }; + const cdata = orecInterface.encodeFunctionData( + "signal", + [args.signalType, args.data] + ); + const addr = await orctx.getOrecAddr(); + + const attachment: TickAttachment = { + propType: zPropType.Enum.tick, + link: val.link, + propTitle: val.metadata?.propTitle, + propDescription: val.metadata?.propDescription + }; + + const memo = idOfCustomSignalAttach(attachment); + + const content: PropContent = { addr, cdata, memo }; + const id = propId(content); + + const r: Tick = { + id, + content, + attachment + } + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCTickReqToProposal", + cause: err + }); } - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCCustomSignalReqToProposal", - cause: err - }); - } -}).pipe(zCustomSignalValid); + }).pipe(zTickValid); +} -export const zCTickReqToProposal = zTickReqCtx.transform(async (val, ctx) => { - try { - const args: CustomSignalArgs = { - signalType: zTickSignalType.value, - data: val.req.data === undefined ? "0x" : val.req.data - }; - const cdata = orecInterface.encodeFunctionData( - "signal", - [args.signalType, args.data] - ); - const addr = await val.ctx.getOrecAddr(); - - const attachment: TickAttachment = { - propType: zPropType.Enum.tick, - link: val.req.link, - propTitle: val.req.metadata?.propTitle, - propDescription: val.req.metadata?.propDescription - }; - - const memo = idOfCustomSignalAttach(attachment); - - const content: PropContent = { addr, cdata, memo }; - const id = propId(content); - - const r: Tick = { - id, - content, - attachment +function mkzCCustomCallReqToProposal(orctx: ORContext) { + return zCustomCallRequest.transform(async (val, ctx) => { + try { + const attachment: CustomCallAttachment = { + propType: zPropType.Enum.customCall + }; + + const memo = idOfCustomCallAttach(attachment); + + const content: PropContent = { + addr: val.address, + cdata: val.cdata, + memo + }; + const id = propId(content); + + const r: CustomCall = { + id, + content, + attachment + } + return r; + } catch (err) { + addCustomIssue(val, ctx, { + message: "exception in zCCustomCallReqToProposal", + cause: err + }); } - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCTickReqToProposal", - cause: err - }); - } -}).pipe(zTickValid); + }).pipe(zCustomCallValid); +} -export const zCCustomCallReqToProposal = zCustomCallReqCtx.transform(async (val, ctx) => { - try { - const attachment: CustomCallAttachment = { - propType: zPropType.Enum.customCall - }; - - const memo = idOfCustomCallAttach(attachment); - - const content: PropContent = { - addr: val.req.address, - cdata: val.req.cdata, - memo - }; - const id = propId(content); - - const r: CustomCall = { - id, - content, - attachment - } - return r; - } catch (err) { - addCustomIssue(val, ctx, { - message: "exception in zCCustomCallReqToProposal", - cause: err - }); - } -}).pipe(zCustomCallValid); export class ClientToNodeTransformer { - private _cctx: CPropContext - - constructor(context: CPropContext) { - this._cctx = context; + private _ctx: ORContext + private _zCRespBreakoutReqToProposal: ReturnType; + private _zCRespAccountReqToProposal: ReturnType + private _zCBurnRespReqToProposal: ReturnType; + private _zCCustomSignalReqToProposal: ReturnType; + private _zCTickReqToProposal: ReturnType; + private _zCCustomCallReqToProposal: ReturnType; + + constructor(context: ORContext) { + this._ctx = context; + + this._zCRespBreakoutReqToProposal = mkzCRespectBreakoutToProposal(this._ctx); + this._zCRespAccountReqToProposal = mkzCRespAccountReqToProposal(this._ctx); + this._zCBurnRespReqToProposal = mkzCBurnRespReqToProposal(this._ctx); + this._zCCustomSignalReqToProposal = mkzCCustomSignalReqToProposal(this._ctx); + this._zCTickReqToProposal = mkzTickReqToProposal(this._ctx); + this._zCCustomCallReqToProposal = mkzCCustomCallReqToProposal(this._ctx); } async transformRespectBreakout(req: RespectBreakoutRequest): Promise { - const c = { ctx: this._cctx, req }; - return await zCRespBreakoutReqToProposal.parseAsync(c); + return await this._zCRespBreakoutReqToProposal.parseAsync(req); } async transformRespectAccount(req: RespectAccountRequest): Promise { - const c = { ctx: this._cctx, req }; - return await zCRespAccountReqToProposal.parseAsync(c); + return await this._zCRespAccountReqToProposal.parseAsync(req); } async transformBurnRespect(req: BurnRespectRequest): Promise { - const c = { ctx: this._cctx, req }; - return await zCBurnRespReqToProposal.parseAsync(c); + return await this._zCBurnRespReqToProposal.parseAsync(req); } async transformCustomSignal(req: CustomSignalRequest): Promise { - const c = { ctx: this._cctx, req }; - return await zCCustomSignalReqToProposal.parseAsync(c); + return await this._zCCustomSignalReqToProposal.parseAsync(req); } async transformTick(req: TickRequest): Promise { - const c = { ctx: this._cctx, req }; - return await zCTickReqToProposal.parseAsync(c); + return await this._zCTickReqToProposal.parseAsync(req); } async transformCustomCall(req: CustomCallRequest): Promise { - const c = { ctx: this._cctx, req }; - return await zCCustomCallReqToProposal.parseAsync(c); + return await this._zCCustomCallReqToProposal.parseAsync(req); } } \ No newline at end of file diff --git a/impl/respect1155/sc/index.ts b/impl/respect1155/sc/index.ts index 5527d41..6604b01 100644 --- a/impl/respect1155/sc/index.ts +++ b/impl/respect1155/sc/index.ts @@ -4,3 +4,7 @@ export * from "./typechain-types/index.js"; export * from "./utils/tokenId.js"; export * from "./typechain-types/index.js"; + +export function testVersion() { + console.debug("This is respect1155 test 4"); +} diff --git a/impl/ts-utils/src/index.ts b/impl/ts-utils/src/index.ts index 65881a1..e514627 100644 --- a/impl/ts-utils/src/index.ts +++ b/impl/ts-utils/src/index.ts @@ -7,4 +7,5 @@ export type SafeRecord = Partial>; export const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); -export { ErrorWithCause } from "./ErrorWithCause.js"; \ No newline at end of file +export { ErrorWithCause } from "./ErrorWithCause.js"; +