@vnejs/module 0.0.6 → 0.0.8

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/index.d.ts ADDED
@@ -0,0 +1,69 @@
1
+ declare type GlobalState = {};
2
+
3
+ declare type SHARED = {};
4
+
5
+ type OnFunc = (event: string, func: (arg: any) => Promise<any>) => void;
6
+ type EmitFunc = (event: string, arg: any) => Promise<any[]>;
7
+ type EmitOneFunc = (event: string, arg: any) => Promise<any>;
8
+
9
+ type InjectArg = {
10
+ on: OnFunc;
11
+ emit: EmitFunc;
12
+ emitOne: EmitOneFunc;
13
+
14
+ state: GlobalState;
15
+
16
+ shared: SHARED;
17
+ media: Record<string, Record<string, string>>;
18
+ options: any;
19
+ };
20
+
21
+ declare type StateType = {};
22
+
23
+ export class Module {
24
+ isReady: Boolean;
25
+
26
+ CONST: CONST;
27
+ EVENTS: EVENTS;
28
+ PARAMS: PARAMS;
29
+ SETTINGS: SETTINGS;
30
+
31
+ on: OnFunc;
32
+ emit: EmitFunc;
33
+ emitOne: EmitOneFunc;
34
+
35
+ globalState: GlobalState;
36
+ state: StateType;
37
+
38
+ shared: SHARED;
39
+ media: Record<string, Record<string, string>>;
40
+ options: any;
41
+
42
+ inject: (arg: InjectArg) => void; // abstract
43
+
44
+ subscribe: () => void;
45
+ init: () => Promise<void>; // implement
46
+
47
+ setState: (state: StateType) => void; // abstract
48
+ updateState: (state: Partial<StateType>) => void; // abstract
49
+ setDefaultState: () => void;
50
+ setStateFromGlobalState: (state: GlobalState) => void;
51
+ getState: () => StateType;
52
+ getDefaultState: () => StateType; // implement
53
+
54
+ waitCheck: (checkFunc: () => Boolean) => Promise<void>;
55
+ waitRerenderCheck: (checkFunc: () => Boolean) => Promise<void>;
56
+ waitIsReady: () => Promise<void>;
57
+ waitTimeout: (time: number) => Promise<void>;
58
+ waitImmediate: () => Promise<void>;
59
+ waitRender: () => Promise<void>;
60
+ waitRerender: () => Promise<void>;
61
+
62
+ getIsReady: () => Boolean;
63
+ }
64
+
65
+ declare module "@vnejs/shared" {
66
+ export const VNE_MODULES: Module[];
67
+
68
+ export const regModule: (m: Module) => void;
69
+ }
package/index.js CHANGED
@@ -1,62 +1 @@
1
- import { VNE_CONST, VNE_EVENTS, VNE_SETTINGS, VNE_MODULE_EXTENSIONS } from "@vnejs/shared";
2
-
3
- export class Module {
4
- isReady = false;
5
-
6
- EVENTS = VNE_EVENTS;
7
- CONST = VNE_CONST;
8
- SETTINGS = VNE_SETTINGS;
9
-
10
- constructor() {
11
- Object.keys(VNE_MODULE_EXTENSIONS).forEach((funcName) => {
12
- this[funcName] = VNE_MODULE_EXTENSIONS[funcName].bind(this, this);
13
- });
14
- }
15
-
16
- inject = ({ on, emit, emitOne, state, shared, media, options } = {}) => {
17
- // observer
18
- this.on = on;
19
- this.emit = emit;
20
- this.emitOne = emitOne;
21
-
22
- // state
23
- this.globalState = state;
24
- this.state = this.globalState[this.name] = this.getDefaultState() || {};
25
-
26
- this.shared = shared;
27
- this.media = media;
28
- this.options = options;
29
- }; // abstract
30
- subscribe = () => {}; // implement
31
-
32
- init = async () => {}; // implement
33
-
34
- setState = (state = {}) => {
35
- this.globalState[this.name] = state;
36
- this.state = this.globalState[this.name];
37
- }; // abstract
38
-
39
- updateState = (state = {}) => this.setState({ ...this.state, ...state });
40
-
41
- setDefaultState = () => this.setState(this.getDefaultState());
42
-
43
- setStateFromGlobalState = ({ [this.name]: state }) => this.setState(state);
44
-
45
- getState = () => this.state;
46
-
47
- getDefaultState = () => ({}); // implement
48
-
49
- waitCheck = async (checkFunc) => {
50
- while (!checkFunc()) await this.waitTimeout(0);
51
- };
52
- waitRerenderCheck = async (checkFunc) => {
53
- while (!checkFunc()) await this.waitRerender();
54
- };
55
- waitIsReady = () => this.waitCheck(this.getIsReady);
56
- waitTimeout = (time) => new Promise((resolve) => setTimeout(resolve, time));
57
- waitImmediate = () => new Promise(setImmediate);
58
- waitRender = () => new Promise(requestAnimationFrame);
59
- waitRerender = () => new Promise((resolve) => requestAnimationFrame(() => setTimeout(resolve, 0)));
60
-
61
- getIsReady = () => this.isReady;
62
- }
1
+ export * from "./modules/module";
@@ -0,0 +1,57 @@
1
+ import { VNE } from "@vnejs/shared";
2
+
3
+ export class Module {
4
+ isReady = false;
5
+
6
+ EVENTS = VNE.EVENTS;
7
+ CONST = VNE.CONST;
8
+ SETTINGS = VNE.SETTINGS;
9
+ PARAMS = VNE.PARAMS;
10
+
11
+ inject = ({ on, emit, emitOne, state, shared, media, options } = {}) => {
12
+ // observer
13
+ this.on = on;
14
+ this.emit = emit;
15
+ this.emitOne = emitOne;
16
+
17
+ // state
18
+ this.globalState = state;
19
+ this.state = this.globalState[this.name] = this.getDefaultState() || {};
20
+
21
+ this.shared = shared;
22
+ this.media = media;
23
+ this.options = options;
24
+ }; // abstract
25
+ subscribe = () => {}; // implement
26
+
27
+ init = async () => {}; // implement
28
+
29
+ setState = (state = {}) => {
30
+ this.globalState[this.name] = state;
31
+ this.state = this.globalState[this.name];
32
+ }; // abstract
33
+
34
+ updateState = (state = {}) => this.setState({ ...this.state, ...state });
35
+
36
+ setDefaultState = () => this.setState(this.getDefaultState());
37
+
38
+ setStateFromGlobalState = ({ [this.name]: state }) => this.setState(state);
39
+
40
+ getState = () => this.state;
41
+
42
+ getDefaultState = () => ({}); // implement
43
+
44
+ waitCheck = async (checkFunc) => {
45
+ while (!checkFunc()) await this.waitTimeout(0);
46
+ };
47
+ waitRerenderCheck = async (checkFunc) => {
48
+ while (!checkFunc()) await this.waitRerender();
49
+ };
50
+ waitIsReady = () => this.waitCheck(this.getIsReady);
51
+ waitTimeout = (time) => new Promise((resolve) => setTimeout(resolve, time));
52
+ waitImmediate = () => new Promise(setImmediate);
53
+ waitRender = () => new Promise(requestAnimationFrame);
54
+ waitRerender = () => new Promise((resolve) => requestAnimationFrame(() => setTimeout(resolve, 0)));
55
+
56
+ getIsReady = () => this.isReady;
57
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/module",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {