UNPKG

@junobuild/cdn

Version:

A toolkit for working with modules that implement Juno's CDN functionality

8 lines (7 loc) 16.2 kB
{ "version": 3, "sources": ["../../src/api/_actor.api.ts", "../../src/api/proposal.api.ts", "../../src/api/storage.api.ts", "../../src/handlers/proposal.apply.handlers.ts", "../../src/api/ic.api.ts", "../../src/types/proposal.params.ts", "../../src/handlers/proposal.reject.handlers.ts"], "sourcesContent": ["import {\n type ConsoleActor,\n type SatelliteActor,\n getConsoleActor,\n getSatelliteActor\n} from '@junobuild/ic-client/actor';\nimport type {CdnParameters} from '../types/actor.params';\n\nexport const getCdnActor = (cdn: CdnParameters): Promise<ConsoleActor | SatelliteActor> =>\n 'satellite' in cdn ? getSatelliteActor(cdn.satellite) : getConsoleActor(cdn.console);\n", "import type {ConsoleDid} from '@junobuild/ic-client/actor';\nimport type {CdnParameters} from '../types/actor.params';\nimport type {\n CommitProposal,\n Proposal,\n ProposalId,\n ProposalType,\n RejectProposal\n} from '../types/cdn';\nimport {getCdnActor} from './_actor.api';\n\nexport const initProposal = async ({\n cdn,\n proposalType\n}: {\n proposalType: ProposalType;\n cdn: CdnParameters;\n}): Promise<[ProposalId, Proposal]> => {\n const {init_proposal} = await getCdnActor(cdn);\n return init_proposal(proposalType);\n};\n\nexport const submitProposal = async ({\n cdn,\n proposalId\n}: {\n cdn: CdnParameters;\n proposalId: ProposalId;\n}): Promise<[ProposalId, Proposal]> => {\n const {submit_proposal} = await getCdnActor(cdn);\n return submit_proposal(proposalId);\n};\n\nexport const rejectProposal = async ({\n cdn,\n proposal\n}: {\n cdn: CdnParameters;\n proposal: RejectProposal;\n}): Promise<void> => {\n const {reject_proposal} = await getCdnActor(cdn);\n await reject_proposal(proposal);\n};\n\nexport const commitProposal = async ({\n cdn,\n proposal\n}: {\n cdn: CdnParameters;\n proposal: CommitProposal;\n}): Promise<void> => {\n const {commit_proposal} = await getCdnActor(cdn);\n await commit_proposal(proposal);\n};\n\nexport const deleteProposalAssets = async ({\n cdn,\n proposalIds\n}: {\n cdn: CdnParameters;\n proposalIds: ProposalId[];\n}): Promise<void> => {\n const {delete_proposal_assets} = await getCdnActor(cdn);\n await delete_proposal_assets({proposal_ids: proposalIds});\n};\n\nexport const countProposals = async ({cdn}: {cdn: CdnParameters}): Promise<bigint> => {\n const {count_proposals} = await getCdnActor(cdn);\n return count_proposals();\n};\n\nexport const listProposals = async ({\n cdn,\n filter\n}: {\n cdn: CdnParameters;\n filter: ConsoleDid.ListProposalsParams;\n}): Promise<ConsoleDid.ListProposalResults> => {\n const {list_proposals} = await getCdnActor(cdn);\n return list_proposals(filter);\n};\n\nexport const getProposal = async ({\n cdn,\n proposalId\n}: {\n cdn: CdnParameters;\n proposalId: ProposalId;\n}): Promise<[] | [Proposal]> => {\n const {get_proposal} = await getCdnActor(cdn);\n return get_proposal(proposalId);\n};\n", "import {\n uploadAssetWithProposal as uploadAssetWithProposalStorage,\n uploadAssetsWithProposal as uploadAssetsWithProposalStorage,\n type UploadAsset,\n type UploadWithProposalParams\n} from '@junobuild/storage';\nimport type {CdnParameters} from '../types/actor.params';\nimport {getCdnActor} from './_actor.api';\n\nexport const uploadAssetWithProposal = async ({\n cdn,\n ...rest\n}: {\n asset: UploadAsset;\n cdn: CdnParameters;\n} & Omit<UploadWithProposalParams, 'actor'>): Promise<void> => {\n const actor = await getCdnActor(cdn);\n\n await uploadAssetWithProposalStorage({\n actor,\n ...rest\n });\n};\n\nexport const uploadAssetsWithProposal = async ({\n cdn,\n ...rest\n}: {\n assets: UploadAsset[];\n cdn: CdnParameters;\n} & Omit<UploadWithProposalParams, 'actor'>): Promise<void> => {\n const actor = await getCdnActor(cdn);\n\n await uploadAssetsWithProposalStorage({\n actor,\n ...rest\n });\n};\n", "import {nonNullish} from '@dfinity/utils';\nimport {createSnapshot} from '../api/ic.api';\nimport {commitProposal, deleteProposalAssets} from '../api/proposal.api';\nimport {type ApplyProposalParams, ApplyProposalProgressStep} from '../types/proposal.params';\n\nexport const executeApplyProposal = async ({\n takeSnapshot = false,\n clearProposalAssets = false,\n onProgress,\n cdn,\n proposal,\n postApply\n}: ApplyProposalParams) => {\n try {\n // 1. We take a snapshot - if the dev opted-in\n const snapshot = async () => (takeSnapshot ? await createSnapshot({cdn}) : Promise.resolve());\n await execute({fn: snapshot, onProgress, step: ApplyProposalProgressStep.TakingSnapshot});\n\n // 2. Commit the proposal\n const commit = async () => await commitProposal({cdn, proposal});\n await execute({fn: commit, onProgress, step: ApplyProposalProgressStep.CommittingProposal});\n\n // 3. Clear proposal assets if required\n const clear = async () =>\n clearProposalAssets\n ? await deleteProposalAssets({cdn, proposalIds: [proposal.proposal_id]})\n : Promise.resolve();\n await execute({fn: clear, onProgress, step: ApplyProposalProgressStep.ClearingProposalAssets});\n } finally {\n // 4. If provided, the post apply runs in any case\n const job = async () => (nonNullish(postApply) ? await postApply() : Promise.resolve());\n await execute({fn: job, onProgress, step: ApplyProposalProgressStep.PostApply});\n }\n};\n\nconst execute = async ({\n fn,\n step,\n onProgress\n}: {fn: () => Promise<void>; step: ApplyProposalProgressStep} & Pick<\n ApplyProposalParams,\n 'onProgress'\n>) => {\n onProgress?.({\n step,\n state: 'in_progress'\n });\n\n try {\n await fn();\n\n onProgress?.({\n step,\n state: 'success'\n });\n } catch (err: unknown) {\n onProgress?.({\n step,\n state: 'error'\n });\n\n throw err;\n }\n};\n", "import {\n type list_canister_snapshots_result,\n type snapshot_id,\n type take_canister_snapshot_result,\n ICManagementCanister\n} from '@dfinity/ic-management';\nimport {Principal} from '@dfinity/principal';\nimport {type ActorParameters, useOrInitAgent} from '@junobuild/ic-client/actor';\nimport type {CdnParameters} from '../types/actor.params';\n\nconst listCanisterSnapshots = async ({\n actor,\n canisterId\n}: {\n actor: ActorParameters;\n canisterId: Principal;\n}): Promise<list_canister_snapshots_result> => {\n const agent = await useOrInitAgent(actor);\n\n const {listCanisterSnapshots} = ICManagementCanister.create({\n agent\n });\n\n return listCanisterSnapshots({canisterId});\n};\n\nconst takeCanisterSnapshot = async ({\n actor,\n ...rest\n}: {\n actor: ActorParameters;\n canisterId: Principal;\n snapshotId?: snapshot_id;\n}): Promise<take_canister_snapshot_result> => {\n const agent = await useOrInitAgent(actor);\n\n const {takeCanisterSnapshot} = ICManagementCanister.create({\n agent\n });\n\n return takeCanisterSnapshot(rest);\n};\n\nexport const createSnapshot = async ({cdn}: {cdn: CdnParameters}) => {\n const mapParams = (): {actor: ActorParameters; canisterId: Principal} => {\n if ('satellite' in cdn) {\n const {\n satellite: {satelliteId, ...rest}\n } = cdn;\n return {\n canisterId:\n satelliteId instanceof Principal ? satelliteId : Principal.fromText(satelliteId),\n actor: rest\n };\n }\n\n const {\n console: {consoleId, ...rest}\n } = cdn;\n return {\n canisterId: consoleId instanceof Principal ? consoleId : Principal.fromText(consoleId),\n actor: rest\n };\n };\n\n const params = mapParams();\n\n const snapshots = await listCanisterSnapshots(params);\n\n // TODO: currently only one snapshot per canister is supported on the IC\n await takeCanisterSnapshot({\n ...params,\n snapshotId: snapshots?.[0]?.id\n });\n};\n", "import type {CdnParameters} from './actor.params';\nimport type {CommitProposal} from './cdn';\n\nexport enum ApplyProposalProgressStep {\n TakingSnapshot,\n CommittingProposal,\n ClearingProposalAssets,\n PostApply\n}\n\nexport enum RejectProposalProgressStep {\n RejectingProposal,\n ClearingProposalAssets,\n PostReject\n}\n\nexport type ProposalProgressState = 'in_progress' | 'success' | 'error';\n\nexport interface ApplyProposalProgress {\n step: ApplyProposalProgressStep;\n state: ProposalProgressState;\n}\n\nexport interface RejectProposalProgress {\n step: RejectProposalProgressStep;\n state: ProposalProgressState;\n}\n\nexport interface ApplyProposalParams {\n cdn: CdnParameters;\n proposal: CommitProposal;\n takeSnapshot?: boolean;\n clearProposalAssets?: boolean;\n postApply?: () => Promise<void>;\n onProgress?: (progress: ApplyProposalProgress) => void;\n}\n\nexport type RejectProposalParams = Omit<\n ApplyProposalParams,\n 'postApply' | 'takeSnapshot' | 'onProgress'\n> & {\n postReject?: () => Promise<void>;\n onProgress?: (progress: RejectProposalProgress) => void;\n};\n", "import {nonNullish} from '@dfinity/utils';\nimport {deleteProposalAssets, rejectProposal} from '../api/proposal.api';\nimport {type RejectProposalParams, RejectProposalProgressStep} from '../types/proposal.params';\n\nexport const executeRejectProposal = async ({\n clearProposalAssets = false,\n onProgress,\n cdn,\n proposal,\n postReject\n}: RejectProposalParams) => {\n try {\n // 1. Reject the proposal\n const reject = async () => await rejectProposal({cdn, proposal});\n await execute({fn: reject, onProgress, step: RejectProposalProgressStep.RejectingProposal});\n\n // 2. Clear proposal assets if required\n const clear = async () =>\n clearProposalAssets\n ? await deleteProposalAssets({cdn, proposalIds: [proposal.proposal_id]})\n : Promise.resolve();\n await execute({fn: clear, onProgress, step: RejectProposalProgressStep.ClearingProposalAssets});\n } finally {\n // 3. If provided, the post apply runs in any case\n const job = async () => (nonNullish(postReject) ? await postReject() : Promise.resolve());\n await execute({fn: job, onProgress, step: RejectProposalProgressStep.PostReject});\n }\n};\n\nconst execute = async ({\n fn,\n step,\n onProgress\n}: {fn: () => Promise<void>; step: RejectProposalProgressStep} & Pick<\n RejectProposalParams,\n 'onProgress'\n>) => {\n onProgress?.({\n step,\n state: 'in_progress'\n });\n\n try {\n await fn();\n\n onProgress?.({\n step,\n state: 'success'\n });\n } catch (err: unknown) {\n onProgress?.({\n step,\n state: 'error'\n });\n\n throw err;\n }\n};\n"], "mappings": "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", "names": ["getConsoleActor", "getSatelliteActor", "getCdnActor", "cdn", "initProposal", "cdn", "proposalType", "init_proposal", "getCdnActor", "submitProposal", "proposalId", "submit_proposal", "rejectProposal", "proposal", "reject_proposal", "commitProposal", "commit_proposal", "deleteProposalAssets", "proposalIds", "delete_proposal_assets", "countProposals", "count_proposals", "listProposals", "filter", "list_proposals", "getProposal", "get_proposal", "uploadAssetWithProposalStorage", "uploadAssetsWithProposalStorage", "uploadAssetWithProposal", "cdn", "rest", "actor", "getCdnActor", "uploadAssetWithProposalStorage", "uploadAssetsWithProposal", "uploadAssetsWithProposalStorage", "nonNullish", "ICManagementCanister", "Principal", "useOrInitAgent", "listCanisterSnapshots", "actor", "canisterId", "agent", "takeCanisterSnapshot", "rest", "createSnapshot", "cdn", "params", "satelliteId", "consoleId", "snapshots", "ApplyProposalProgressStep", "RejectProposalProgressStep", "executeApplyProposal", "takeSnapshot", "clearProposalAssets", "onProgress", "cdn", "proposal", "postApply", "execute", "createSnapshot", "commitProposal", "deleteProposalAssets", "nonNullish", "fn", "step", "err", "nonNullish", "executeRejectProposal", "clearProposalAssets", "onProgress", "cdn", "proposal", "postReject", "execute", "rejectProposal", "deleteProposalAssets", "nonNullish", "fn", "step", "err"] }