@juo/blocks 1.12.0 → 1.13.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ExtensionRoot-9XfhG8YM.js → ExtensionRoot-peABLAZZ.js} +15 -3
- package/dist/block-B6s9jL7l.js +966 -0
- package/dist/block.d.ts +50 -0
- package/dist/block.d.ts.map +1 -1
- package/dist/block.devtools.test.d.ts +2 -0
- package/dist/block.devtools.test.d.ts.map +1 -0
- package/dist/{bridge-w5KQ-czl.js → bridge-r7Yk8fjY.js} +34 -25
- package/dist/context.d.ts.map +1 -1
- package/dist/context.devtools.test.d.ts +2 -0
- package/dist/context.devtools.test.d.ts.map +1 -0
- package/dist/core.js +1877 -377
- package/dist/devtools/env.d.ts +3 -0
- package/dist/devtools/env.d.ts.map +1 -0
- package/dist/devtools/hook.d.ts +35 -0
- package/dist/devtools/hook.d.ts.map +1 -0
- package/dist/devtools/index.d.ts +4 -0
- package/dist/devtools/index.d.ts.map +1 -0
- package/dist/devtools/protocol.d.ts +91 -0
- package/dist/devtools/protocol.d.ts.map +1 -0
- package/dist/devtools.js +44 -0
- package/dist/editor/bridge.d.ts +7 -0
- package/dist/editor/bridge.d.ts.map +1 -1
- package/dist/editor/components.d.ts.map +1 -1
- package/dist/editor/main.d.ts +2 -1
- package/dist/editor/main.d.ts.map +1 -1
- package/dist/editor/messages.d.ts +13 -2
- package/dist/editor/messages.d.ts.map +1 -1
- package/dist/editor/messages.test.d.ts +2 -0
- package/dist/editor/messages.test.d.ts.map +1 -0
- package/dist/editor/overlays.d.ts +14 -0
- package/dist/editor/overlays.d.ts.map +1 -0
- package/dist/editor/overlays.test.d.ts +2 -0
- package/dist/editor/overlays.test.d.ts.map +1 -0
- package/dist/editor.js +64 -45
- package/dist/{juo-workflow-CkyZRq60.js → juo-workflow-DY4rd256.js} +74 -873
- package/dist/main.d.ts +3 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/overlay-wrapper.d.ts +69 -0
- package/dist/overlay-wrapper.d.ts.map +1 -0
- package/dist/overlay-wrapper.test.d.ts +2 -0
- package/dist/overlay-wrapper.test.d.ts.map +1 -0
- package/dist/overlays/OverlayService.d.ts +34 -0
- package/dist/overlays/OverlayService.d.ts.map +1 -0
- package/dist/overlays/OverlayService.test.d.ts +2 -0
- package/dist/overlays/OverlayService.test.d.ts.map +1 -0
- package/dist/preact.js +1 -1
- package/dist/react.js +1 -1
- package/dist/registry.devtools.test.d.ts +2 -0
- package/dist/registry.devtools.test.d.ts.map +1 -0
- package/dist/services/customer/adapter.d.ts +8 -0
- package/dist/services/customer/adapter.d.ts.map +1 -0
- package/dist/services/customer/customerService.d.ts +3 -2
- package/dist/services/customer/customerService.d.ts.map +1 -1
- package/dist/services/customer/index.d.ts +1 -0
- package/dist/services/customer/index.d.ts.map +1 -1
- package/dist/services/customer/types.d.ts +4 -1
- package/dist/services/customer/types.d.ts.map +1 -1
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/login/adapter.d.ts +32 -0
- package/dist/services/login/adapter.d.ts.map +1 -0
- package/dist/services/login/index.d.ts +3 -1
- package/dist/services/login/index.d.ts.map +1 -1
- package/dist/services/login/loginService.d.ts +6 -2
- package/dist/services/login/loginService.d.ts.map +1 -1
- package/dist/services/order/adapter.d.ts +9 -0
- package/dist/services/order/adapter.d.ts.map +1 -0
- package/dist/services/order/index.d.ts +5 -0
- package/dist/services/order/index.d.ts.map +1 -0
- package/dist/services/order/orderService.d.ts +7 -0
- package/dist/services/order/orderService.d.ts.map +1 -0
- package/dist/services/order/types.d.ts +21 -0
- package/dist/services/order/types.d.ts.map +1 -0
- package/dist/services/product/adapter.d.ts +27 -2
- package/dist/services/product/adapter.d.ts.map +1 -1
- package/dist/services/product/adapter.test.d.ts +2 -0
- package/dist/services/product/adapter.test.d.ts.map +1 -0
- package/dist/services/product/index.d.ts +1 -1
- package/dist/services/product/index.d.ts.map +1 -1
- package/dist/services/product/productService.d.ts.map +1 -1
- package/dist/services/product/types.d.ts +68 -0
- package/dist/services/product/types.d.ts.map +1 -1
- package/dist/services/schedules/adapter.d.ts +47 -0
- package/dist/services/schedules/adapter.d.ts.map +1 -0
- package/dist/services/schedules/adapter.test.d.ts +2 -0
- package/dist/services/schedules/adapter.test.d.ts.map +1 -0
- package/dist/services/schedules/index.d.ts +5 -0
- package/dist/services/schedules/index.d.ts.map +1 -0
- package/dist/services/schedules/schedulesService.d.ts +11 -0
- package/dist/services/schedules/schedulesService.d.ts.map +1 -0
- package/dist/services/schedules/schedulesService.test.d.ts +2 -0
- package/dist/services/schedules/schedulesService.test.d.ts.map +1 -0
- package/dist/services/schedules/types.d.ts +101 -0
- package/dist/services/schedules/types.d.ts.map +1 -0
- package/dist/services/settings/index.d.ts +3 -0
- package/dist/services/settings/index.d.ts.map +1 -0
- package/dist/services/settings/settingsService.d.ts +7 -0
- package/dist/services/settings/settingsService.d.ts.map +1 -0
- package/dist/services/settings/settingsService.test.d.ts +2 -0
- package/dist/services/settings/settingsService.test.d.ts.map +1 -0
- package/dist/services/settings/types.d.ts +35 -0
- package/dist/services/settings/types.d.ts.map +1 -0
- package/dist/services/shop/index.d.ts +3 -0
- package/dist/services/shop/index.d.ts.map +1 -0
- package/dist/services/shop/shopService.d.ts +12 -0
- package/dist/services/shop/shopService.d.ts.map +1 -0
- package/dist/services/shop/shopService.test.d.ts +2 -0
- package/dist/services/shop/shopService.test.d.ts.map +1 -0
- package/dist/services/shop/types.d.ts +7 -0
- package/dist/services/shop/types.d.ts.map +1 -0
- package/dist/services/subscription/adapter.d.ts +58 -2
- package/dist/services/subscription/adapter.d.ts.map +1 -1
- package/dist/services/subscription/adapter.test.d.ts +2 -0
- package/dist/services/subscription/adapter.test.d.ts.map +1 -0
- package/dist/services/subscription/index.d.ts +1 -1
- package/dist/services/subscription/index.d.ts.map +1 -1
- package/dist/services/subscription/subscriptionService.d.ts +1 -6
- package/dist/services/subscription/subscriptionService.d.ts.map +1 -1
- package/dist/services/subscription/types.d.ts +216 -9
- package/dist/services/subscription/types.d.ts.map +1 -1
- package/dist/services/subscription/types.test.d.ts +2 -0
- package/dist/services/subscription/types.test.d.ts.map +1 -0
- package/dist/theme-state.d.ts +2 -1
- package/dist/theme-state.d.ts.map +1 -1
- package/dist/theme-state.params.test.d.ts +2 -0
- package/dist/theme-state.params.test.d.ts.map +1 -0
- package/dist/theme-state.translations.test.d.ts +2 -0
- package/dist/theme-state.translations.test.d.ts.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/vue/block.d.ts.map +1 -1
- package/dist/vue.js +25 -4
- package/dist/web-components/ExtensionRoot.d.ts +1 -0
- package/dist/web-components/ExtensionRoot.d.ts.map +1 -1
- package/dist/web-components-editor.js +4 -3
- package/dist/web-components-runtime.js +3 -2
- package/package.json +1 -1
package/dist/main.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export type { Block, BlockInstance, BlockDefinition, BlockLocaleFile, BlockRenderer, BlockPreset, BlockPresets, } from './block';
|
|
2
|
-
export { attachEmptyTracking, backfillInstanceDefaults, createBlockInstance, createBlockInstanceFromJSON, createBlockInstanceFromObject, createCeRenderer, defineBlock, defineBlockRuntime, getDefinedBlocks, hasRenderedContent, isStubDefinition, withWrapper, registerBlock, SelectedBlockContext, createSelectedBlock, BlockWrapperEvent, serializeBlocks, onRegisterBlock, } from './block';
|
|
2
|
+
export { attachEmptyTracking, backfillInstanceDefaults, createBlockInstance, createBlockInstanceFromJSON, createBlockInstanceFromObject, createCeRenderer, defineBlock, defineBlockRuntime, getDefinedBlocks, hasRenderedContent, isStubDefinition, withWrapper, registerBlock, SelectedBlockContext, createSelectedBlock, BlockWrapperEvent, serializeBlocks, onRegisterBlock, getDevtoolsBlockState, setDevtoolsBlockProp, __recordDevtoolsInstance, __recordDevtoolsPropSetter, } from './block';
|
|
3
3
|
export { ThemeStateContext, createThemeState, indexOverrides, type TranslationCatalogs, type TranslationMode, type TranslationScope, type TranslationOverride, type ThemeLocaleState, type ThemeState, type ThemeSurface, type ThemeSurfaceState, type GlobalStyles, type GlobalStyleColors, type ThemeType, DEFAULT_GLOBAL_STYLES, } from './theme-state';
|
|
4
4
|
export { TranslationContext, createTranslationService, type TranslationServiceOptions, type TranslationService, } from './translation';
|
|
5
5
|
export { ContextRequestEvent, ContextProvideEvent, type ContextCallback, createContext, injectContext, provideContext, subscribeContext, type ContextType, type UnknownContext, } from './context';
|
|
6
6
|
export { StateContext, createState } from './state';
|
|
7
|
+
export { defineOverlayWrapper, type OverlayLayout } from './overlay-wrapper';
|
|
8
|
+
export { OverlayServiceContext, createOverlayService, type OverlayService, type OverlayState, type OverlayRegistryEntry, } from './overlays/OverlayService';
|
|
7
9
|
export { waitForDevBlocksUrl, loadBlockRegistry } from './registry';
|
|
8
10
|
export * from './utils';
|
|
9
11
|
export * from './services';
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,eAAe,EACpB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpE,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,GACV,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { BlockDefinition } from './block';
|
|
2
|
+
/**
|
|
3
|
+
* Layout chrome for an overlay surface. The host (`OverlayHost.vue`) reads this
|
|
4
|
+
* value off the wrapper block's `props.layout` and picks `UiSidebarShell` or
|
|
5
|
+
* `UiModalShell` accordingly — same data-driven pattern `WorkflowOverlay.vue`
|
|
6
|
+
* uses for workflow flow root blocks.
|
|
7
|
+
*/
|
|
8
|
+
export type OverlayLayout = "modal" | "sidebar";
|
|
9
|
+
/**
|
|
10
|
+
* Defines a wrapper block for an overlay surface.
|
|
11
|
+
*
|
|
12
|
+
* The overlay surface is rendered by `<juo-extension-root surface="overlay"
|
|
13
|
+
* name="content">`, which reads `blocks[0].slots.content`. That means the
|
|
14
|
+
* surface root must be a *parent* block with a populated `content` slot —
|
|
15
|
+
* resolving an overlay leaf block directly leaves the surface root with
|
|
16
|
+
* empty slots and `juo-extension-root` renders nothing.
|
|
17
|
+
*
|
|
18
|
+
* `defineOverlayWrapper` produces such a parent: a no-render block whose
|
|
19
|
+
* `initialValue` puts a single instance of the `content` block into its
|
|
20
|
+
* `content` slot, mirroring the page-surface pattern (`MainPage.slots.*`).
|
|
21
|
+
*
|
|
22
|
+
* The `layout` opt is forwarded onto the wrapper's `props.layout` and is
|
|
23
|
+
* read by `OverlayHost.vue` to pick the chrome (sidebar vs modal) — same
|
|
24
|
+
* convention `WorkflowOverlay.vue` uses for flow root blocks. Defaults to
|
|
25
|
+
* `"sidebar"` to preserve behavior for callers that omit it.
|
|
26
|
+
*
|
|
27
|
+
* The `canAbort` opt is forwarded onto the wrapper's `props.canAbort` and is
|
|
28
|
+
* read by `OverlayHost.vue` to (a) drive `<UiModalContent :show-close>` so the
|
|
29
|
+
* corner X is present in modal chrome, and (b) gate `handleClose` so backdrop
|
|
30
|
+
* click, Esc, and the chrome X uniformly respect non-dismissable overlays.
|
|
31
|
+
* Defaults to `true`. Same gate `WorkflowOverlay.handleClose` uses.
|
|
32
|
+
*
|
|
33
|
+
* Usage:
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* const MyFeatureBlock = defineBlock("my_feature", { ...leaf renderer... });
|
|
37
|
+
* const MyFeatureOverlayBlock = defineOverlayWrapper({
|
|
38
|
+
* name: "my_feature_overlay",
|
|
39
|
+
* content: "my_feature",
|
|
40
|
+
* layout: "modal",
|
|
41
|
+
* });
|
|
42
|
+
* registerBlock(MyFeatureBlock);
|
|
43
|
+
* registerBlock(MyFeatureOverlayBlock);
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* Then callers open the overlay via:
|
|
47
|
+
*
|
|
48
|
+
* ```ts
|
|
49
|
+
* themeState.$.resolve("overlay", "my_feature_overlay");
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* The wrapper's `renderer` is a no-op because `<juo-extension-root>` only
|
|
53
|
+
* reads its slot — the wrapper itself is never rendered as a block.
|
|
54
|
+
*
|
|
55
|
+
* Open-time params: callers may pass JSON-safe params as the 3rd arg to
|
|
56
|
+
* `themeState.resolve("overlay", name, params)`. They are merged onto the
|
|
57
|
+
* wrapper's `content` block instance props (see `theme-state.ts` `resolve`),
|
|
58
|
+
* so the content leaf can read per-open data (e.g. the generic Confirmation
|
|
59
|
+
* block's `action`/`title`/`message`). Never pass callbacks — props cross the
|
|
60
|
+
* render boundary and must stay JSON-safe.
|
|
61
|
+
*/
|
|
62
|
+
export declare function defineOverlayWrapper(opts: {
|
|
63
|
+
name: string;
|
|
64
|
+
content: string;
|
|
65
|
+
layout?: OverlayLayout;
|
|
66
|
+
canAbort?: boolean;
|
|
67
|
+
title?: string;
|
|
68
|
+
}): BlockDefinition;
|
|
69
|
+
//# sourceMappingURL=overlay-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-wrapper.d.ts","sourceRoot":"","sources":["../src/overlay-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAyChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,eAAe,CAelB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-wrapper.test.d.ts","sourceRoot":"","sources":["../src/overlay-wrapper.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReadonlySignal } from '@preact/signals-core';
|
|
2
|
+
import { BlockDefinition } from '../block';
|
|
3
|
+
import { ThemeState } from '../theme-state';
|
|
4
|
+
import { OverlayLayout } from '../overlay-wrapper';
|
|
5
|
+
import { OverlayRegistryEntry } from '../editor/overlays';
|
|
6
|
+
export type { OverlayRegistryEntry };
|
|
7
|
+
export interface OverlayState {
|
|
8
|
+
name: string;
|
|
9
|
+
layout: OverlayLayout;
|
|
10
|
+
canAbort: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface OverlayService {
|
|
13
|
+
/** Editor registry: the flat, global overlay list for the editor dropdown. */
|
|
14
|
+
getEditableOverlays(): Record<string, OverlayRegistryEntry>;
|
|
15
|
+
/** Open an overlay surface (full `overlay:<id>` name), optionally parameterized. */
|
|
16
|
+
open(name: string, params?: Record<string, unknown>): void;
|
|
17
|
+
/** Close the current overlay surface. */
|
|
18
|
+
close(): void;
|
|
19
|
+
/** The overlay currently showing, or null (incl. when a workflow overlay is up). */
|
|
20
|
+
current: ReadonlySignal<OverlayState | null>;
|
|
21
|
+
}
|
|
22
|
+
export declare const OverlayServiceContext: {
|
|
23
|
+
__context__: OverlayService;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Owns non-workflow overlay state over the shared `themeState.overlay` surface.
|
|
27
|
+
* Symmetric to `WorkflowService`; never invoked on the workflow path. `current`
|
|
28
|
+
* filters to `overlay:` roots so workflow roots (which share the surface) read
|
|
29
|
+
* as null.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createOverlayService(themeState: ThemeState, options?: {
|
|
32
|
+
getBlocks?: () => BlockDefinition[];
|
|
33
|
+
}): OverlayService;
|
|
34
|
+
//# sourceMappingURL=OverlayService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverlayService.d.ts","sourceRoot":"","sources":["../../src/overlays/OverlayService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAIrC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC5D,oFAAoF;IACpF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3D,yCAAyC;IACzC,KAAK,IAAI,IAAI,CAAC;IACd,oFAAoF;IACpF,OAAO,EAAE,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,qBAAqB;;CACiB,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,eAAe,EAAE,CAAA;CAAO,GACpD,cAAc,CAiChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverlayService.test.d.ts","sourceRoot":"","sources":["../../src/overlays/OverlayService.test.ts"],"names":[],"mappings":""}
|
package/dist/preact.js
CHANGED
|
@@ -6,7 +6,7 @@ import { useState, useRef, useEffect, useContext as useContext$1, useMemo } from
|
|
|
6
6
|
import { g as getSignalValue, s as setSignalValue, w as wrapContext, c as createSlotChildren } from "./block-VhmfGB3N.js";
|
|
7
7
|
import { t } from "./block-VhmfGB3N.js";
|
|
8
8
|
import { createContext, h, render } from "preact";
|
|
9
|
-
import {
|
|
9
|
+
import { c as createEditorBridge } from "./bridge-r7Yk8fjY.js";
|
|
10
10
|
function toState(signal) {
|
|
11
11
|
const [value, setValue] = useState(() => getSignalValue(signal));
|
|
12
12
|
const disposeRef = useRef(null);
|
package/dist/react.js
CHANGED
|
@@ -6,7 +6,7 @@ import React, { useSyncExternalStore, createContext, useState, useContext as use
|
|
|
6
6
|
import { g as getSignalValue, s as setSignalValue, w as wrapContext, c as createSlotChildren } from "./block-VhmfGB3N.js";
|
|
7
7
|
import { t } from "./block-VhmfGB3N.js";
|
|
8
8
|
import { createRoot } from "react-dom/client";
|
|
9
|
-
import {
|
|
9
|
+
import { c as createEditorBridge } from "./bridge-r7Yk8fjY.js";
|
|
10
10
|
function toState(signal) {
|
|
11
11
|
const subscribe = (callback) => {
|
|
12
12
|
const dispose = effect(() => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.devtools.test.d.ts","sourceRoot":"","sources":["../src/registry.devtools.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Customer } from './types';
|
|
2
|
+
import { ApiFetcher, Result } from '../../utils';
|
|
3
|
+
export interface CustomerAdapter {
|
|
4
|
+
getCurrent(): Promise<Result<Customer | null>>;
|
|
5
|
+
}
|
|
6
|
+
export declare function createMockCustomerAdapter(): CustomerAdapter;
|
|
7
|
+
export declare function createApiCustomerAdapter(fetcher: ApiFetcher): CustomerAdapter;
|
|
8
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/customer/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;CAChD;AAED,wBAAgB,yBAAyB,IAAI,eAAe,CAO3D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,CAyB7E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CustomerAdapter } from './adapter';
|
|
2
2
|
import { CustomerService } from './types';
|
|
3
3
|
type CreateCustomerServiceOptions = {
|
|
4
|
+
adapter: CustomerAdapter;
|
|
4
5
|
/**
|
|
5
6
|
* Absolute storefront URL for account / orders (Header `<a href>` + `target="_parent"`).
|
|
6
7
|
* Called once when the service is created; hosts that need reactivity (portal) update
|
|
@@ -8,7 +9,7 @@ type CreateCustomerServiceOptions = {
|
|
|
8
9
|
*/
|
|
9
10
|
getAccountOrdersUrl: () => string;
|
|
10
11
|
};
|
|
11
|
-
export declare function createCustomerService(options: CreateCustomerServiceOptions):
|
|
12
|
+
export declare function createCustomerService(options: CreateCustomerServiceOptions): CustomerService;
|
|
12
13
|
export declare const CustomerServiceContext: {
|
|
13
14
|
__context__: CustomerService;
|
|
14
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customerService.d.ts","sourceRoot":"","sources":["../../../src/services/customer/customerService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"customerService.d.ts","sourceRoot":"","sources":["../../../src/services/customer/customerService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,4BAA4B,GAAG;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,eAAe,CAajB;AAED,eAAO,MAAM,sBAAsB;;CACkB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { type CustomerService, type Customer } from './types';
|
|
2
2
|
export { createCustomerService, CustomerServiceContext, } from './customerService';
|
|
3
|
+
export { type CustomerAdapter, createMockCustomerAdapter, createApiCustomerAdapter, } from './adapter';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/customer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/customer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,WAAW,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Signal } from '@preact/signals-core';
|
|
2
|
+
import { Result } from '../../utils';
|
|
2
3
|
/** Signed-in customer identity for blocks such as Header (name / email display). */
|
|
3
4
|
export type Customer = {
|
|
4
5
|
id: string;
|
|
5
6
|
name: string;
|
|
6
|
-
email
|
|
7
|
+
email?: string;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
7
9
|
};
|
|
8
10
|
export type CustomerService = {
|
|
9
11
|
current: Signal<Customer | null>;
|
|
12
|
+
getCurrent(): Promise<Result<Customer | null>>;
|
|
10
13
|
accountOrdersUrl: Signal<string>;
|
|
11
14
|
};
|
|
12
15
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/customer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/customer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACjC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/C,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAClC,CAAC"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -3,5 +3,8 @@ export * from './login';
|
|
|
3
3
|
export * from './orders';
|
|
4
4
|
export * from './product';
|
|
5
5
|
export * from './router';
|
|
6
|
+
export * from './schedules';
|
|
7
|
+
export * from './settings';
|
|
8
|
+
export * from './shop';
|
|
6
9
|
export * from './subscription';
|
|
7
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ApiFetcher, Result } from '../../utils';
|
|
2
|
+
export type AuthTokens = {
|
|
3
|
+
access_token: string;
|
|
4
|
+
refresh_token: string;
|
|
5
|
+
expires_in: number;
|
|
6
|
+
};
|
|
7
|
+
export interface LoginAdapter {
|
|
8
|
+
passwordlessStart(params: {
|
|
9
|
+
email: string;
|
|
10
|
+
lang: string;
|
|
11
|
+
}): Promise<Result<void>>;
|
|
12
|
+
authenticate(params: {
|
|
13
|
+
email: string;
|
|
14
|
+
code: string;
|
|
15
|
+
} | {
|
|
16
|
+
code: string;
|
|
17
|
+
} | {
|
|
18
|
+
refreshToken: string;
|
|
19
|
+
}): Promise<Result<AuthTokens>>;
|
|
20
|
+
getAuthorizeUrl(params: {
|
|
21
|
+
connection: "facebook" | "google-oauth2";
|
|
22
|
+
state: string;
|
|
23
|
+
shop: string;
|
|
24
|
+
appUrl: string;
|
|
25
|
+
}): string;
|
|
26
|
+
}
|
|
27
|
+
export declare function createMockLoginAdapter(): LoginAdapter;
|
|
28
|
+
export declare function createApiLoginAdapter(fetcher: ApiFetcher, opts: {
|
|
29
|
+
shopDomain: string;
|
|
30
|
+
appUrl: string;
|
|
31
|
+
}): LoginAdapter;
|
|
32
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/login/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1B,YAAY,CACV,MAAM,EACF;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC/B;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/B,eAAe,CAAC,MAAM,EAAE;QACtB,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC;QACzC,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,MAAM,CAAC;CACZ;AAED,wBAAgB,sBAAsB,IAAI,YAAY,CAuBrD;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C,YAAY,CAoHd"}
|
|
@@ -13,11 +13,13 @@ type LoginService = {
|
|
|
13
13
|
};
|
|
14
14
|
isAuthenticated: Signal<boolean>;
|
|
15
15
|
getToken(): Promise<string | null>;
|
|
16
|
+
getAuthHeaders(): Promise<Record<string, string>>;
|
|
16
17
|
handleQueryParams(query: URLSearchParams): Promise<Result<void, ErrorDetails>>;
|
|
17
18
|
logout(): Promise<Result>;
|
|
18
19
|
};
|
|
19
20
|
export declare const LoginServiceContext: {
|
|
20
21
|
__context__: LoginService;
|
|
21
22
|
};
|
|
22
|
-
export { loginService, type LoginServiceDependencies, type ErrorFormatter, AuthenticationError, AuthenticationErrorReason, } from './loginService';
|
|
23
|
+
export { loginService, createLoginService, type LoginServiceDependencies, type ErrorFormatter, AuthenticationError, AuthenticationErrorReason, } from './loginService';
|
|
24
|
+
export { type LoginAdapter, type AuthTokens, createApiLoginAdapter, createMockLoginAdapter, } from './adapter';
|
|
23
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE;QACZ,KAAK,EAAE;YACL,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1E,CAAC;KACH,CAAC;IAEF,MAAM,EAAE;QACN,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;KAC3D,CAAC;IAEF,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnC,iBAAiB,CACf,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CACe,CAAC;AAEhD,OAAO,EACL,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE;QACZ,KAAK,EAAE;YACL,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1E,CAAC;KACH,CAAC;IAEF,MAAM,EAAE;QACN,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;KAC3D,CAAC;IAEF,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,iBAAiB,CACf,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CACe,CAAC;AAEhD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Signal } from '@preact/signals-core';
|
|
2
|
+
import { LoginAdapter } from './adapter';
|
|
2
3
|
export declare enum AuthenticationErrorReason {
|
|
3
4
|
Expired = "expired",
|
|
4
5
|
IncorrectCode = "wrong-code",
|
|
@@ -28,14 +29,15 @@ export type ErrorFormatter = (error: unknown | AuthenticationError) => {
|
|
|
28
29
|
message: string;
|
|
29
30
|
};
|
|
30
31
|
export interface LoginServiceDependencies {
|
|
31
|
-
|
|
32
|
+
adapter: LoginAdapter;
|
|
32
33
|
formatError: ErrorFormatter;
|
|
33
34
|
router: RouterService;
|
|
34
35
|
shop: ShopService;
|
|
35
36
|
onLoginSuccess?: () => Promise<void>;
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
|
-
* @deprecated Use `createLoginService` instead
|
|
39
|
+
* @deprecated Use `createLoginService` instead.
|
|
40
|
+
* Constructs a real API adapter from `shop.rootUrl` for backward compatibility.
|
|
39
41
|
*/
|
|
40
42
|
export declare function loginService(deps: {
|
|
41
43
|
formatError: ErrorFormatter;
|
|
@@ -59,6 +61,7 @@ export declare function loginService(deps: {
|
|
|
59
61
|
};
|
|
60
62
|
isAuthenticated: Signal<boolean>;
|
|
61
63
|
getToken(): Promise<string | null>;
|
|
64
|
+
getAuthHeaders(): Promise<Record<string, string>>;
|
|
62
65
|
handleQueryParams(query: URLSearchParams): Promise<import('../../utils').Result<void, import('../../utils').ErrorDetails>>;
|
|
63
66
|
logout(): Promise<import('../../utils').Result>;
|
|
64
67
|
};
|
|
@@ -75,6 +78,7 @@ export declare function createLoginService(init: LoginServiceDependencies): {
|
|
|
75
78
|
};
|
|
76
79
|
isAuthenticated: Signal<boolean>;
|
|
77
80
|
getToken(): Promise<string | null>;
|
|
81
|
+
getAuthHeaders(): Promise<Record<string, string>>;
|
|
78
82
|
handleQueryParams(query: URLSearchParams): Promise<import('../../utils').Result<void, import('../../utils').ErrorDetails>>;
|
|
79
83
|
logout(): Promise<import('../../utils').Result>;
|
|
80
84
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginService.d.ts","sourceRoot":"","sources":["../../../src/services/login/loginService.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"loginService.d.ts","sourceRoot":"","sources":["../../../src/services/login/loginService.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAI9C,oBAAY,yBAAyB;IACnC,OAAO,YAAY;IACnB,aAAa,eAAe;IAC5B,YAAY,mBAAmB;IAC/B,OAAO,aAAa;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAG5B,MAAM,EAAE,yBAAyB,EACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMjC;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AA0BD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,KAAK;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;EAmBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;EAmNhE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Order } from './types';
|
|
2
|
+
import { ApiFetcher, Result } from '../../utils';
|
|
3
|
+
export interface OrderAdapter {
|
|
4
|
+
getHistory(): Promise<Result<Order[]>>;
|
|
5
|
+
getById(id: string): Promise<Result<Order | null>>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createMockOrderAdapter(): OrderAdapter;
|
|
8
|
+
export declare function createApiOrderAdapter(fetcher: ApiFetcher): OrderAdapter;
|
|
9
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/order/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAa,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;CACpD;AA+BD,wBAAgB,sBAAsB,IAAI,YAAY,CAiCrD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY,CA2BvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/order/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { OrderAdapter } from './adapter';
|
|
2
|
+
import { OrderService } from './types';
|
|
3
|
+
export declare const OrderServiceContext: {
|
|
4
|
+
__context__: OrderService;
|
|
5
|
+
};
|
|
6
|
+
export declare function createOrderService(adapter: OrderAdapter): OrderService;
|
|
7
|
+
//# sourceMappingURL=orderService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderService.d.ts","sourceRoot":"","sources":["../../../src/services/order/orderService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,mBAAmB;;CAAgD,CAAC;AAEjF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAKtE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Result } from '../../utils';
|
|
2
|
+
export interface OrderItem {
|
|
3
|
+
id: string;
|
|
4
|
+
productId: string;
|
|
5
|
+
variantId: string;
|
|
6
|
+
quantity: number;
|
|
7
|
+
metadata?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface Order {
|
|
10
|
+
id: string;
|
|
11
|
+
customerId: string;
|
|
12
|
+
items: OrderItem[];
|
|
13
|
+
deliveryDate: string | null;
|
|
14
|
+
status: "pending" | "confirmed" | "delivered" | "skipped";
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export type OrderService = {
|
|
18
|
+
getHistory(): Promise<Result<Order[]>>;
|
|
19
|
+
getById(id: string): Promise<Result<Order | null>>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/order/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;CACpD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PaginatedList } from '../../utils';
|
|
2
|
-
import { Product, WithVariants } from './types';
|
|
1
|
+
import { ApiFetcher, PaginatedList } from '../../utils';
|
|
2
|
+
import { AvailableProduct, Box, Product, WithVariants } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Adapter interface for product operations.
|
|
5
5
|
* Implementations should handle API calls, error handling, and data transformation.
|
|
@@ -15,6 +15,31 @@ export interface ProductAdapter {
|
|
|
15
15
|
after: string;
|
|
16
16
|
};
|
|
17
17
|
}): Promise<PaginatedList<WithVariants<Product>>>;
|
|
18
|
+
getProductsByIds(params: {
|
|
19
|
+
ids: string[];
|
|
20
|
+
}): Promise<Product[]>;
|
|
21
|
+
getBoxVariants(params: {
|
|
22
|
+
ids: string[];
|
|
23
|
+
subscriptionId: string;
|
|
24
|
+
}): Promise<AvailableProduct[]>;
|
|
25
|
+
getAvailableProducts(params: {
|
|
26
|
+
subscriptionId: string;
|
|
27
|
+
lineId: string;
|
|
28
|
+
q?: string;
|
|
29
|
+
mode?: "same-product" | "other-products";
|
|
30
|
+
action: "swap" | "add";
|
|
31
|
+
pagination?: {
|
|
32
|
+
before: string;
|
|
33
|
+
} | {
|
|
34
|
+
after: string;
|
|
35
|
+
};
|
|
36
|
+
}): Promise<AvailableProduct[]>;
|
|
37
|
+
getBox(params: {
|
|
38
|
+
id: string;
|
|
39
|
+
}): Promise<Box | null>;
|
|
18
40
|
}
|
|
19
41
|
export declare function createMockProductAdapter(): ProductAdapter;
|
|
42
|
+
export declare function createApiProductAdapter(fetcher: ApiFetcher, opts?: {
|
|
43
|
+
currencyCode: string;
|
|
44
|
+
}): ProductAdapter;
|
|
20
45
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/product/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/product/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5F;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE3D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAEzE,MAAM,CAAC,IAAI,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAElD,gBAAgB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhE,cAAc,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE/F,oBAAoB,CAAC,MAAM,EAAE;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;QACzC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,UAAU,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEhC,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;CACrD;AAED,wBAAgB,wBAAwB,IAAI,cAAc,CAmRzD;AAoED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,UAAU,EACnB,IAAI,GAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAA4B,GACvD,cAAc,CA4JhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.test.d.ts","sourceRoot":"","sources":["../../../src/services/product/adapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { ProductAdapter } from './adapter';
|
|
2
|
-
export { createMockProductAdapter } from './adapter';
|
|
2
|
+
export { createMockProductAdapter, createApiProductAdapter } from './adapter';
|
|
3
3
|
export { createProductService, ProductServiceContext } from './productService';
|
|
4
4
|
export * from './types';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/product/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/product/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,cAAc,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"productService.d.ts","sourceRoot":"","sources":["../../../src/services/product/productService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,qBAAqB;;CACiB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,GACtB,WAAW,CAAC,OAAO,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"productService.d.ts","sourceRoot":"","sources":["../../../src/services/product/productService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,qBAAqB;;CACiB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,GACtB,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAsB3C"}
|
|
@@ -1,4 +1,33 @@
|
|
|
1
1
|
import { Image, PaginatedList, PriceWithCurrency } from '../../utils';
|
|
2
|
+
export interface AvailableProductVariant {
|
|
3
|
+
id: string;
|
|
4
|
+
availableForSale: boolean;
|
|
5
|
+
title: string;
|
|
6
|
+
currentPrice: {
|
|
7
|
+
amount: number;
|
|
8
|
+
currencyCode: string;
|
|
9
|
+
};
|
|
10
|
+
basePrice: {
|
|
11
|
+
amount: number;
|
|
12
|
+
currencyCode: string;
|
|
13
|
+
};
|
|
14
|
+
image?: {
|
|
15
|
+
url: string;
|
|
16
|
+
altText?: string;
|
|
17
|
+
};
|
|
18
|
+
recurring?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface AvailableProduct {
|
|
21
|
+
id: string;
|
|
22
|
+
title: string;
|
|
23
|
+
description: string;
|
|
24
|
+
featuredImage?: {
|
|
25
|
+
url: string;
|
|
26
|
+
altText?: string;
|
|
27
|
+
};
|
|
28
|
+
hasOnlyDefaultVariant: boolean;
|
|
29
|
+
variants: AvailableProductVariant[];
|
|
30
|
+
}
|
|
2
31
|
export interface Product {
|
|
3
32
|
id: string;
|
|
4
33
|
title: string;
|
|
@@ -7,6 +36,7 @@ export interface Product {
|
|
|
7
36
|
collections: {
|
|
8
37
|
handle: string;
|
|
9
38
|
}[];
|
|
39
|
+
metadata?: Record<string, unknown>;
|
|
10
40
|
}
|
|
11
41
|
export interface PurchaseOption {
|
|
12
42
|
name: string;
|
|
@@ -23,10 +53,33 @@ export interface ProductVariant {
|
|
|
23
53
|
price: PriceWithCurrency;
|
|
24
54
|
subscriptionPrice?: PriceWithCurrency;
|
|
25
55
|
purchaseOptions?: PurchaseOption[];
|
|
56
|
+
metadata?: Record<string, unknown>;
|
|
26
57
|
}
|
|
27
58
|
export type WithVariants<T> = T & {
|
|
28
59
|
variants: PaginatedList<ProductVariant>;
|
|
29
60
|
};
|
|
61
|
+
export interface BoxTier {
|
|
62
|
+
value: number;
|
|
63
|
+
threshold: number;
|
|
64
|
+
}
|
|
65
|
+
export interface BoxVariantGroup {
|
|
66
|
+
id: string;
|
|
67
|
+
variants: {
|
|
68
|
+
id: string;
|
|
69
|
+
}[];
|
|
70
|
+
}
|
|
71
|
+
export interface Box {
|
|
72
|
+
id: string;
|
|
73
|
+
title: string;
|
|
74
|
+
minProductsCount: number;
|
|
75
|
+
parentProduct: string;
|
|
76
|
+
tiers: BoxTier[];
|
|
77
|
+
variants: BoxVariantGroup[];
|
|
78
|
+
freeVariants: BoxVariantGroup[];
|
|
79
|
+
thresholdType: "LINES_COUNT" | "CART_TOTAL";
|
|
80
|
+
type: "FIXED_AMOUNT" | "PERCENTAGE" | "PRICE";
|
|
81
|
+
restrictQuantityToTiers: boolean;
|
|
82
|
+
}
|
|
30
83
|
export type ProductService<T extends WithVariants<Product> = WithVariants<Product>> = {
|
|
31
84
|
getById(id: string): Promise<T | null>;
|
|
32
85
|
getByVariantId(variantId: string): Promise<T | null>;
|
|
@@ -38,5 +91,20 @@ export type ProductService<T extends WithVariants<Product> = WithVariants<Produc
|
|
|
38
91
|
after: string;
|
|
39
92
|
};
|
|
40
93
|
}): Promise<PaginatedList<T>>;
|
|
94
|
+
getProductsByIds(ids: string[]): Promise<Product[]>;
|
|
95
|
+
getBoxVariants(ids: string[], subscriptionId: string): Promise<AvailableProduct[]>;
|
|
96
|
+
getAvailableProducts(params: {
|
|
97
|
+
subscriptionId: string;
|
|
98
|
+
lineId: string;
|
|
99
|
+
q?: string;
|
|
100
|
+
mode?: "same-product" | "other-products";
|
|
101
|
+
action: "swap" | "add";
|
|
102
|
+
pagination?: {
|
|
103
|
+
before: string;
|
|
104
|
+
} | {
|
|
105
|
+
after: string;
|
|
106
|
+
};
|
|
107
|
+
}): Promise<AvailableProduct[]>;
|
|
108
|
+
getBox(id: string): Promise<Box | null>;
|
|
41
109
|
};
|
|
42
110
|
//# sourceMappingURL=types.d.ts.map
|