From bce557cc2dc767628bed6aac87301a1be7c5431b Mon Sep 17 00:00:00 2001 From: rxliuli Date: Tue, 4 Nov 2025 05:03:50 +0800 Subject: init commit --- src/jet/svelte.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/jet/svelte.ts (limited to 'src/jet/svelte.ts') diff --git a/src/jet/svelte.ts b/src/jet/svelte.ts new file mode 100644 index 0000000..f1870ca --- /dev/null +++ b/src/jet/svelte.ts @@ -0,0 +1,45 @@ +import { getContext } from 'svelte'; +import type { Opt } from '@jet/environment'; +import type { ActionOutcome } from '@jet/engine'; + +import type { ActionModel } from '~/jet/models'; +import type { Jet } from '~/jet/jet'; + +export const CONTEXT_NAME = 'jet'; + +/** + * Gets the current Jet instance from the Svelte context. + * + * @return jet The current instance of Jet + */ +export function getJet(): Jet { + const jet = getContext>(CONTEXT_NAME); + + if (!jet) { + throw new Error('getJet called before Jet.load'); + } + + return jet; +} + +/** + * Jet helper to expose jet.perform in single location + * + * @return Promise + */ +type ActionUndefined = 'noActionProvided'; + +export function getJetPerform(): ( + action: ActionModel, +) => Promise { + const jet = getJet(); + + return (action: ActionModel) => { + if (!action) { + //TODO: rdar://73165545 (Error Handling Across App) + return Promise.resolve('noActionProvided'); + } + + return jet.perform(action); + }; +} -- cgit v1.2.3