epos 1.5.1 → 1.6.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.
@@ -1,71 +1,155 @@
1
- import type * as Mobx from 'mobx';
2
- import type * as MobxReactLite from 'mobx-react-lite';
3
- import type * as React from 'react';
4
- import type * as ReactDom from 'react-dom';
5
- import type * as ReactDomClient from 'react-dom/client';
6
- import type * as ReactJsxRuntime from 'react/jsx-runtime';
7
- type Fn = (...args: unknown[]) => unknown;
8
- export type Epos = {
9
- on(name: string, callback: Fn, thisValue?: unknown): void;
10
- off(name: string, callback?: Fn): void;
11
- once(name: string, callback: Fn, thisValue?: unknown): void;
12
- send(name: string, ...args: unknown[]): Promise<unknown>;
13
- call(name: string, ...args: unknown[]): Promise<unknown>;
14
- connect(): void;
15
- disconnect(): void;
16
- transaction(): void;
17
- autorun(): void;
18
- reaction(): void;
19
- root: HTMLElement;
20
- shadow: ShadowRoot;
21
- component(): void;
22
- render(): void;
23
- portal(): void;
24
- useState(): void;
25
- useAutorun(): void;
26
- useReaction(): void;
27
- fetch(): void;
28
- browser(): void;
29
- storage: {
30
- get(): void;
31
- set(): void;
32
- delete(): void;
33
- keys(): void;
34
- clear(): void;
35
- connect(): void;
1
+ import type * as mobx from 'mobx';
2
+ import type * as mobxReactLite from 'mobx-react-lite';
3
+ import type * as react from 'react';
4
+ import type * as reactDom from 'react-dom';
5
+ import type * as reactDomClient from 'react-dom/client';
6
+ import type * as reactJsxRuntime from 'react/jsx-runtime';
7
+ import type * as yjs from 'yjs';
8
+ type Fn<T = any> = (...args: any[]) => T;
9
+ type Cls<T = any> = new (...args: any[]) => T;
10
+ type State = Record<string, StateValue>;
11
+ type Versioner = Record<number, (state: State) => void>;
12
+ type ClassName = string | null | boolean | undefined | ClassName[];
13
+ type StateValue = undefined | null | boolean | number | string | Blob | Unit | StateValue[] | {
14
+ [key: string]: StateValue;
15
+ };
16
+ type Storage = {
17
+ /** Get value from storage. */
18
+ get<T = unknown>(key: string): Promise<T>;
19
+ /** Set value in storage. */
20
+ set<T = unknown>(key: string, value: T): Promise<void>;
21
+ /** Delete value from storage. */
22
+ delete(key: string): Promise<void>;
23
+ /** Get all keys from storage. */
24
+ keys(): Promise<string[]>;
25
+ /** Clear storage. Deletes all keys and storage itself. */
26
+ clear(): Promise<void>;
27
+ };
28
+ declare class Unit<TRoot = unknown> {
29
+ /** Reference to the root unit. */
30
+ $: TRoot;
31
+ log: Fn<void> & {
32
+ warn: Fn<void>;
33
+ error: Fn<void>;
34
+ };
35
+ constructor(parent?: Unit<TRoot> | null);
36
+ /** Find ancestor unit by its class. */
37
+ up<T extends Unit<TRoot>>(Ancestor: Cls<T>): T | null;
38
+ up<T extends Unit<TRoot>, K extends keyof T>(Ancestor: Cls<T>, key: K): T[K] | null;
39
+ autorun: typeof mobx.autorun;
40
+ reaction: typeof mobx.reaction;
41
+ setTimeout: typeof self.setTimeout;
42
+ setInterval: typeof self.setInterval;
43
+ static v: Record<number, (this: Unit, unit: Unit) => void>;
44
+ }
45
+ export interface Epos {
46
+ /** Listen for an event. */
47
+ on(eventName: string, callback: Fn, thisValue?: unknown): void;
48
+ /** Remove event listener. */
49
+ off(eventName: string, callback?: Fn): void;
50
+ /** Listen for an event once. */
51
+ once(eventName: string, callback: Fn, thisValue?: unknown): void;
52
+ /** Send an event to all remote listeners (local listeners are ignored). */
53
+ send<T = unknown>(eventName: string, ...args: unknown[]): Promise<T>;
54
+ /** Emit event locally (calls local listeners only). */
55
+ emit<T = unknown>(eventName: string, ...args: unknown[]): Promise<T>;
56
+ /** Connect to the state. */
57
+ connect: {
58
+ <T extends State = {}>(): Promise<T>;
59
+ <T extends State = {}>(initial: () => T): Promise<T>;
60
+ <T extends State = {}>(initial: () => T, versioner: Versioner): Promise<T>;
61
+ <T extends State = {}>(name: string): Promise<T>;
62
+ <T extends State = {}>(name: string, initial: () => T): Promise<T>;
63
+ <T extends State = {}>(name: string, initial: () => T, versioner: Versioner): Promise<T>;
36
64
  };
37
- assets: {
38
- use(): void;
39
- useUrl(): void;
40
- get(): void;
41
- getUrl(): void;
42
- load(): void;
43
- offload(): void;
44
- list(): void;
65
+ /** Disconnect from the state. */
66
+ disconnect(name?: string): void;
67
+ /** Create local state (no sync). */
68
+ local<T extends State = {}>(state?: T): T;
69
+ /** Get the list of all state names. */
70
+ states(): Promise<string[]>;
71
+ /** Destroy state. */
72
+ destroy(name?: string): Promise<void>;
73
+ /** Performs any state changes in a batch. */
74
+ transaction: (fn: () => void) => void;
75
+ /** @see https://mobx.js.org/reactions.html#autorun */
76
+ autorun: typeof mobx.autorun;
77
+ /** @see https://mobx.js.org/reactions.html#reaction */
78
+ reaction: typeof mobx.reaction;
79
+ root: HTMLElement;
80
+ shadow: HTMLElement;
81
+ component: {
82
+ <P>(fn: react.FC<P>): typeof fn;
83
+ <P>(name: string, fn: react.FC<P>): typeof fn;
45
84
  };
46
- env: {
47
- name: string;
48
- tabId: number;
49
- is: {
50
- tab: boolean;
51
- hub: boolean;
52
- web: boolean;
53
- view: boolean;
54
- popup: boolean;
55
- panel: boolean;
56
- background: boolean;
57
- foreground: boolean;
58
- };
85
+ render(node: react.ReactNode, container?: reactDomClient.Container): void;
86
+ portal: typeof reactDom.createPortal;
87
+ useState: typeof mobxReactLite.useLocalObservable;
88
+ useAutorun(...args: Parameters<typeof mobx.autorun>): void;
89
+ useReaction(...args: Parameters<typeof mobx.reaction>): void;
90
+ Unit: typeof Unit;
91
+ /** Register unit class. */
92
+ register(Unit: Cls<Unit>): void;
93
+ fetch: typeof window.fetch;
94
+ browser: typeof chrome;
95
+ /** Get value from the storage. */
96
+ get<T = unknown>(key: string, storageName?: string): Promise<T>;
97
+ /** Set value in the storage. */
98
+ set<T = unknown>(key: string, value: T, storageName?: string): Promise<void>;
99
+ /** Delete value from the storage. */
100
+ delete(key: string, storageName?: string): Promise<void>;
101
+ /** Get all keys from the storage. */
102
+ keys(storageName?: string): Promise<string[]>;
103
+ /** Clear storage. Removes all keys and storage itself. */
104
+ clear(storageName?: string): Promise<void>;
105
+ /** Create storage API. */
106
+ storage(name: string): Promise<Storage>;
107
+ /** Get list of all storage names. */
108
+ storages(): Promise<string[]>;
109
+ /** Get asset URL. Asset must be loaded first. */
110
+ url(path: string): Promise<string>;
111
+ /** Load asset to memory. Pass '*' to load all assets. */
112
+ load(path: string): Promise<void>;
113
+ /** Unload asset from memory. Pass '*' to unload all assets.*/
114
+ unload(path: string): void;
115
+ /** Get list of all available asset paths. */
116
+ assets(): Promise<string[]>;
117
+ /** Current tab ID. */
118
+ tabId: number;
119
+ is: {
120
+ /** True if running in a tab. */
121
+ tab: boolean;
122
+ /** True if running on on a hub page (<hub>). */
123
+ hub: boolean;
124
+ /** True if running on any page except hub. */
125
+ web: boolean;
126
+ /** True if running in a popup or in side panel (<popup> or <panel>). */
127
+ shell: boolean;
128
+ /** True if running in a popup (<popup>). */
129
+ popup: boolean;
130
+ /** True if running in a side panel (<panel>). */
131
+ panel: boolean;
132
+ /** True if running in background (<background>). */
133
+ background: boolean;
134
+ /** True if running in foreground */
135
+ foreground: boolean;
59
136
  };
60
- mobx: typeof Mobx;
61
- mobxReactLite: typeof MobxReactLite;
62
- react: typeof React;
63
- reactDom: typeof ReactDom;
64
- reactDomClient: typeof ReactDomClient;
65
- reactJsxRuntime: typeof ReactJsxRuntime;
66
- };
137
+ mobx: typeof mobx;
138
+ mobxReactLite: typeof mobxReactLite;
139
+ react: typeof react;
140
+ reactDom: typeof reactDom;
141
+ reactDomClient: typeof reactDomClient;
142
+ reactJsxRuntime: typeof reactJsxRuntime;
143
+ yjs: typeof yjs;
144
+ }
67
145
  declare global {
68
146
  var epos: Epos;
147
+ namespace React {
148
+ interface HTMLAttributes<T> {
149
+ class?: ClassName;
150
+ [key: `$${string}`]: boolean;
151
+ }
152
+ }
69
153
  }
70
154
  declare const _epos: Epos;
71
155
  export { _epos as epos };
@@ -1,3 +1,3 @@
1
- declare const _default: any;
1
+ declare const _default: typeof import("react-dom/client");
2
2
  export default _default;
3
- export declare const createRoot: any, hydrateRoot: any;
3
+ export declare const createRoot: typeof import("react-dom/client").createRoot, hydrateRoot: typeof import("react-dom/client").hydrateRoot;
@@ -1,2 +1,2 @@
1
- export default epos.reactDOMClient;
2
- export const { createRoot, hydrateRoot } = epos.reactDOMClient;
1
+ export default epos.reactDomClient;
2
+ export const { createRoot, hydrateRoot } = epos.reactDomClient;
@@ -1,3 +1,3 @@
1
- declare const _default: any;
1
+ declare const _default: typeof import("react-dom");
2
2
  export default _default;
3
- export declare const createPortal: any, flushSync: any, preconnect: any, prefetchDNS: any, preinit: any, preinitModule: any, preload: any, preloadModule: any, requestFormReset: any, unstable_batchedUpdates: any, useFormState: any, useFormStatus: any, version: any;
3
+ export declare const createPortal: typeof import("react-dom").createPortal, flushSync: typeof import("react-dom").flushSync, preconnect: typeof import("react-dom").preconnect, prefetchDNS: typeof import("react-dom").prefetchDNS, preinit: typeof import("react-dom").preinit, preinitModule: typeof import("react-dom").preinitModule, preload: typeof import("react-dom").preload, preloadModule: typeof import("react-dom").preloadModule, requestFormReset: typeof import("react-dom").requestFormReset, unstable_batchedUpdates: typeof import("react-dom").unstable_batchedUpdates, useFormState: typeof import("react-dom").useFormState, useFormStatus: typeof import("react-dom").useFormStatus, version: string;
@@ -1,2 +1,2 @@
1
- export default epos.reactDOM;
2
- export const { createPortal, flushSync, preconnect, prefetchDNS, preinit, preinitModule, preload, preloadModule, requestFormReset, unstable_batchedUpdates, useFormState, useFormStatus, version, } = epos.reactDOM;
1
+ export default epos.reactDom;
2
+ export const { createPortal, flushSync, preconnect, prefetchDNS, preinit, preinitModule, preload, preloadModule, requestFormReset, unstable_batchedUpdates, useFormState, useFormStatus, version, } = epos.reactDom;
@@ -1,3 +1,3 @@
1
1
  declare const _default: typeof import("react/jsx-runtime");
2
2
  export default _default;
3
- export declare const Fragment: import("react").ExoticComponent<import("react").FragmentProps>, jsx: typeof import("react/jsx-runtime").jsx, jsxs: typeof import("react/jsx-runtime").jsxs;
3
+ export declare const Fragment: React.ExoticComponent<React.FragmentProps>, jsx: typeof import("react/jsx-runtime").jsx, jsxs: typeof import("react/jsx-runtime").jsxs;
@@ -1,11 +1,11 @@
1
- declare const _default: typeof import("react");
1
+ declare const _default: typeof React;
2
2
  export default _default;
3
- export declare const act: typeof import("react").act, cache: typeof import("react").cache, Children: {
3
+ export declare const act: typeof React.act, cache: typeof React.cache, Children: {
4
4
  map<T, C>(children: C | readonly C[], fn: (child: C, index: number) => T): C extends null | undefined ? C : Array<Exclude<T, boolean | null | undefined>>;
5
5
  forEach<C>(children: C | readonly C[], fn: (child: C, index: number) => void): void;
6
6
  count(children: any): number;
7
7
  only<C>(children: C): C extends any[] ? never : C;
8
- toArray(children: import("react").ReactNode | import("react").ReactNode[]): Array<Exclude<import("react").ReactNode, boolean | null | undefined>>;
9
- }, cloneElement: typeof import("react").cloneElement, Component: typeof import("react").Component, createContext: typeof import("react").createContext, createElement: typeof import("react").createElement, createRef: typeof import("react").createRef, forwardRef: typeof import("react").forwardRef, Fragment: import("react").ExoticComponent<import("react").FragmentProps>, isValidElement: typeof import("react").isValidElement, lazy: typeof import("react").lazy, memo: typeof import("react").memo, Profiler: import("react").ExoticComponent<import("react").ProfilerProps>, PureComponent: typeof import("react").PureComponent, startTransition: typeof import("react").startTransition, StrictMode: import("react").ExoticComponent<{
10
- children?: import("react").ReactNode | undefined;
11
- }>, Suspense: import("react").ExoticComponent<import("react").SuspenseProps>, use: typeof import("react").use, useActionState: typeof import("react").useActionState, useCallback: typeof import("react").useCallback, useContext: typeof import("react").useContext, useDebugValue: typeof import("react").useDebugValue, useDeferredValue: typeof import("react").useDeferredValue, useEffect: typeof import("react").useEffect, useId: typeof import("react").useId, useImperativeHandle: typeof import("react").useImperativeHandle, useInsertionEffect: typeof import("react").useInsertionEffect, useLayoutEffect: typeof import("react").useLayoutEffect, useMemo: typeof import("react").useMemo, useOptimistic: typeof import("react").useOptimistic, useReducer: typeof import("react").useReducer, useRef: typeof import("react").useRef, useState: typeof import("react").useState, useSyncExternalStore: typeof import("react").useSyncExternalStore, useTransition: typeof import("react").useTransition, version: string;
8
+ toArray(children: React.ReactNode | React.ReactNode[]): Array<Exclude<React.ReactNode, boolean | null | undefined>>;
9
+ }, cloneElement: typeof React.cloneElement, Component: typeof React.Component, createContext: typeof React.createContext, createElement: typeof React.createElement, createRef: typeof React.createRef, forwardRef: typeof React.forwardRef, Fragment: React.ExoticComponent<React.FragmentProps>, isValidElement: typeof React.isValidElement, lazy: typeof React.lazy, memo: typeof React.memo, Profiler: React.ExoticComponent<React.ProfilerProps>, PureComponent: typeof React.PureComponent, startTransition: typeof React.startTransition, StrictMode: React.ExoticComponent<{
10
+ children?: React.ReactNode | undefined;
11
+ }>, Suspense: React.ExoticComponent<React.SuspenseProps>, use: typeof React.use, useActionState: typeof React.useActionState, useCallback: typeof React.useCallback, useContext: typeof React.useContext, useDebugValue: typeof React.useDebugValue, useDeferredValue: typeof React.useDeferredValue, useEffect: typeof React.useEffect, useId: typeof React.useId, useImperativeHandle: typeof React.useImperativeHandle, useInsertionEffect: typeof React.useInsertionEffect, useLayoutEffect: typeof React.useLayoutEffect, useMemo: typeof React.useMemo, useOptimistic: typeof React.useOptimistic, useReducer: typeof React.useReducer, useRef: typeof React.useRef, useState: typeof React.useState, useSyncExternalStore: typeof React.useSyncExternalStore, useTransition: typeof React.useTransition, version: string;
@@ -5,22 +5,22 @@ export function epos() {
5
5
  enforce: 'pre',
6
6
  resolveId(source) {
7
7
  if (source === 'react') {
8
- return path.resolve(import.meta.dirname, './lib-react.js');
8
+ return path.resolve(import.meta.dirname, './lib/lib-react.js');
9
9
  }
10
10
  if (source === 'react/jsx-runtime') {
11
- return path.resolve(import.meta.dirname, './lib-react-jsx-runtime.js');
11
+ return path.resolve(import.meta.dirname, './lib/lib-react-jsx-runtime.js');
12
12
  }
13
13
  if (source === 'react-dom') {
14
- return path.resolve(import.meta.dirname, './lib-react-dom.js');
14
+ return path.resolve(import.meta.dirname, './lib/lib-react-dom.js');
15
15
  }
16
16
  if (source === 'react-dom/client') {
17
- return path.resolve(import.meta.dirname, './lib-react-dom-client.js');
17
+ return path.resolve(import.meta.dirname, './lib/lib-react-dom-client.js');
18
18
  }
19
19
  if (source === 'mobx') {
20
- return path.resolve(import.meta.dirname, './lib-mobx.js');
20
+ return path.resolve(import.meta.dirname, './lib/lib-mobx.js');
21
21
  }
22
22
  if (source === 'mobx-react') {
23
- return path.resolve(import.meta.dirname, './lib-mobx-react.js');
23
+ return path.resolve(import.meta.dirname, './lib/lib-mobx-react.js');
24
24
  }
25
25
  return null;
26
26
  },
package/package.json CHANGED
@@ -1,29 +1,27 @@
1
1
  {
2
2
  "name": "epos",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "author": "imkost",
6
6
  "description": "",
7
7
  "keywords": [],
8
8
  "license": "MIT",
9
9
  "scripts": {
10
- "dev": "rimraf dist; tsc --watch",
11
- "build": "rimraf dist; tsc",
10
+ "dev": "dropcap tsc -w",
11
+ "build": "dropcap tsc",
12
12
  "lint": "eslint ./src",
13
- "release": "npm version patch && npm publish"
13
+ "release": "npm run build && npm publish",
14
+ "release:patch": "npm version patch && npm run release"
14
15
  },
15
16
  "exports": {
16
17
  ".": {
17
18
  "import": "./dist/epos/epos.js"
18
19
  },
19
- "./vite": {
20
+ "./plugin-vite": {
20
21
  "import": "./dist/plugin/plugin-vite.js"
21
22
  },
22
- "./esbuild": {
23
+ "./plugin-esbuild": {
23
24
  "import": "./dist/plugin/plugin-esbuild.js"
24
- },
25
- "./manifest": {
26
- "import": "./dist/manifest/manifest.js"
27
25
  }
28
26
  },
29
27
  "files": [
@@ -31,14 +29,16 @@
31
29
  "epos.schema.json"
32
30
  ],
33
31
  "devDependencies": {
34
- "@types/chrome": "^0.1.1",
35
- "@types/react": "^19.1.8",
36
- "@types/react-dom": "^19.1.6",
32
+ "@types/chrome": "^0.1.3",
33
+ "@types/react": "^19.1.10",
34
+ "@types/react-dom": "^19.1.7",
35
+ "dropcap": "^1.0.15",
37
36
  "esbuild": "^0.25.8",
38
37
  "mobx": "^6.13.7",
39
38
  "mobx-react-lite": "^4.1.0",
40
- "react": "^19.1.0",
39
+ "react": "^19.1.1",
41
40
  "rimraf": "^6.0.1",
42
- "vite": "^7.0.6"
41
+ "vite": "^7.1.2",
42
+ "yjs": "^13.6.27"
43
43
  }
44
44
  }
@@ -1,6 +0,0 @@
1
- export type Manifest = {
2
- name: string;
3
- [key: string]: any;
4
- };
5
- export declare function defineManifest(manifest: Manifest): Manifest;
6
- export default defineManifest;
@@ -1,4 +0,0 @@
1
- export function defineManifest(manifest) {
2
- return manifest;
3
- }
4
- export default defineManifest;