@joker.front/core 1.2.170 → 1.2.237

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joker.front/core",
3
- "version": "1.2.170",
3
+ "version": "1.2.237",
4
4
  "description": "",
5
5
  "main": "./dist/bundle.js",
6
6
  "module": "./dist/bundle.es.js",
@@ -20,10 +20,11 @@
20
20
  ],
21
21
  "scripts": {
22
22
  "test": "jest",
23
- "test:temp": "jest test/parser/cmd.spec.ts",
23
+ "test:temp": "jest test/other/function-this.spec.ts",
24
24
  "build": "joker_build_library --sourcemap=false",
25
+ "build:prod": "joker_build_library --sourcemap=false --terser",
25
26
  "release": "npm run test && npm run build && joker_release_library",
26
- "release:prod": "npm run test && npm run build && npm publish --access public --registry https://registry.npmjs.org/"
27
+ "release:prod": "npm run test && npm run build:prod && npm publish --access public --registry https://registry.npmjs.org/"
27
28
  },
28
29
  "author": "Zohar",
29
30
  "license": "MIT",
@@ -39,9 +40,9 @@
39
40
  "@joker.front/ast": "^1.3.22"
40
41
  },
41
42
  "devDependencies": {
42
- "@joker.front/library-cli": "^1.2.8",
43
+ "@joker.front/library-cli": "^1.2.13",
43
44
  "@joker.front/sfc": "^1.1.5",
44
- "@joker.front/shared": "^1.5.15",
45
+ "@joker.front/shared": "^1.5.25",
45
46
  "@types/jest": "^27.5.2",
46
47
  "@types/node": "^20.5.7",
47
48
  "@typescript-eslint/parser": "^5.58.0",
@@ -6,10 +6,12 @@ declare const PROPS_DATA_KEY: unique symbol;
6
6
  declare const PROPS_DATA_PROXY: unique symbol;
7
7
  declare const PRIVATE_WATCHERS: unique symbol;
8
8
  declare const EVENT_DATA_KEY: unique symbol;
9
- declare const PARSER_TEMPLATE_TARGET: unique symbol;
9
+ declare const IS_DESTROY: unique symbol;
10
+ export declare const PARSER_TEMPLATE_TARGET: unique symbol;
10
11
  export type TemplateType = Array<AST.Node> | ((h: typeof RENDER_HANDLER) => Array<AST.Node>);
11
12
  export declare const SCOPE_ID: unique symbol;
12
13
  export declare const JOKER_COMPONENT_TAG: unique symbol;
14
+ declare const TRANSFORM_FUNCTION_FLAG: unique symbol;
13
15
  export type ComponentConstructor = typeof Component<any>;
14
16
  export type ImportComponentConstructor = () => Promise<{
15
17
  default: ComponentConstructor;
@@ -63,6 +65,8 @@ export declare class Component<T extends DefaultKeyVal = {}> implements ICompone
63
65
  private [PROPS_DATA_PROXY]?;
64
66
  private [PRIVATE_WATCHERS];
65
67
  private [EVENT_DATA_KEY];
68
+ private [IS_DESTROY];
69
+ private [TRANSFORM_FUNCTION_FLAG];
66
70
  /**
67
71
  * @param propData prop参数
68
72
  * @param sections 渲染部分区域
@@ -125,9 +129,9 @@ export declare class Component<T extends DefaultKeyVal = {}> implements ICompone
125
129
  * @param express
126
130
  * @param callBack
127
131
  * @param forceCallBack 即使值相同也要强制触发callback
128
- * @returns 销毁watcher
132
+ * @returns [wathcer值, 销毁watcher]
129
133
  */
130
- $watch(express: () => any, callBack: (nv?: any, ov?: any) => void, forceCallBack?: boolean): () => void;
134
+ $watch(express: () => any, callBack: (nv?: any, ov?: any) => void, forceCallBack?: boolean): [any, () => void];
131
135
  /**
132
136
  * 事件注册
133
137
  * @param eventName
@@ -205,6 +209,8 @@ export declare class ComponentContainer extends Component<{
205
209
  mounted(): void;
206
210
  private propsVaule;
207
211
  created(): void;
212
+ initProps(): void;
213
+ filterProps(p: string): false | undefined;
208
214
  loadComponent(componentName?: string): Promise<void>;
209
215
  beforeDestroy(): void;
210
216
  removeCache(componentName?: string): void;
@@ -3,13 +3,38 @@ export type EventCallBackItem<T> = {
3
3
  once?: Boolean;
4
4
  };
5
5
  export type EventCallBackType<T> = (e: {
6
+ eventName: string | number | Symbol;
6
7
  stopPropagation: Function;
7
8
  callTimes: Number;
8
- }, params: T) => boolean | void;
9
+ }, params: T) => boolean | void | Promise<boolean | void>;
9
10
  export declare class EventBus<T extends Record<string, any>> {
10
11
  private eventDatas;
11
- on<K extends keyof T>(eventName: K, callBack: EventCallBackType<T[K]>): void;
12
- once<K extends keyof T>(eventName: K, callBack: EventCallBackType<T[K]>): void;
12
+ /**
13
+ * 注册事件
14
+ * @param eventName
15
+ * @param callBack
16
+ * @returns 事件销毁
17
+ */
18
+ on<K extends keyof T>(eventName: K | "*", callBack: EventCallBackType<T[K]>): () => void;
19
+ /**
20
+ * 注册一次性事件(指触发一次)
21
+ * @param eventName
22
+ * @param callBack
23
+ * @returns 事件销毁
24
+ */
25
+ once<K extends keyof T>(eventName: K, callBack: EventCallBackType<T[K]>): () => void;
26
+ /**
27
+ * 销毁事件
28
+ * @param eventName
29
+ * @param callBack
30
+ * @returns
31
+ */
13
32
  off<K extends keyof T>(eventName?: K, callBack?: EventCallBackType<T[K]>): void;
14
- trigger<K extends keyof T>(eventName: K, param?: T[K]): false | undefined;
33
+ /**
34
+ * 触发事件
35
+ * @param eventName
36
+ * @param param
37
+ * @returns
38
+ */
39
+ trigger<K extends keyof T>(eventName: K, param?: T[K]): Promise<false | undefined>;
15
40
  }
@@ -0,0 +1,11 @@
1
+ export { AST, RENDER_HANDLER, EXPRESSHANDLERTAG, createCodeFunction, createCommand, createComment, createElement, createFuntionBody, createText, createComponent } from "@joker.front/ast";
2
+ export * from "./component";
3
+ export * from "./parser/vnode";
4
+ export { ParserTemplate, NodeChangeType } from "./parser/index";
5
+ export * from "./observer/watcher";
6
+ export { Dep } from "./observer/dep";
7
+ export * from "./observer/index";
8
+ export * from "./utils/DI";
9
+ export * from "./event-bus";
10
+ export { registerGlobalFunction } from "./global";
11
+ export { Render } from "./parser/render";
package/types/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- export { AST, RENDER_HANDLER, createCodeFunction, createCommand, createComment, createElement, createFuntionBody, createText, createComponent } from "@joker.front/ast";
1
+ export * from "./hmr";
2
+ export { AST, RENDER_HANDLER, EXPRESSHANDLERTAG, createCodeFunction, createCommand, createComment, createElement, createFuntionBody, createText, createComponent } from "@joker.front/ast";
2
3
  export * from "./component";
3
4
  export * from "./parser/vnode";
4
5
  export { ParserTemplate, NodeChangeType } from "./parser/index";
5
6
  export * from "./observer/watcher";
6
- export { Dep, registerOtherWindowDep, removeOtherWindowDep } from "./observer/dep";
7
+ export { Dep } from "./observer/dep";
7
8
  export * from "./observer/index";
8
9
  export * from "./utils/DI";
9
- export * from "./hmr";
10
10
  export * from "./event-bus";
11
- export { registerGlobalFunction } from "./global";
11
+ export { registerGlobalFunction, __GLONAL_FUNTIONS__ } from "./global";
12
+ export { Render } from "./parser/render";
@@ -1,6 +1,4 @@
1
1
  import { Watcher } from "./watcher";
2
- export declare function registerOtherWindowDep(dep: typeof Dep): void;
3
- export declare function removeOtherWindowDep(dep: typeof Dep): void;
4
2
  /**
5
3
  * 作为观察者和对象代理中间的关系桥
6
4
  * 数据变更时:Ob->dep->watcher
@@ -8,9 +8,11 @@ export declare class Watcher<T extends object = any> {
8
8
  private ob;
9
9
  private updateCallBack;
10
10
  private forceCallBack?;
11
+ id: string;
11
12
  private getter;
12
13
  value: any;
13
14
  isDestroy: boolean;
15
+ updating: boolean;
14
16
  /**
15
17
  * 运行时的关系收集
16
18
  *
@@ -3,4 +3,5 @@ import { IParser } from "../parser";
3
3
  import { VNode } from "../vnode";
4
4
  export declare class ParserCode extends IParser<AST.PropertyOrFunctionCommand, VNode.Text | VNode.Html> {
5
5
  parser(): void;
6
+ changeValue(val: any): void;
6
7
  }
@@ -17,6 +17,7 @@ export declare class ParserList extends IParser<AST.ForCommand, VNode.List> {
17
17
  * @param index
18
18
  */
19
19
  private destroyOldChildrens;
20
+ private checkObEqual;
20
21
  }
21
22
  export declare class ParserListeItem extends IParser<AST.ForCommand, VNode.ListItem> {
22
23
  parser(): void;
@@ -19,5 +19,4 @@ export declare class ParserComponent extends IParser<(AST.Element | AST.Componen
19
19
  private renderChildren;
20
20
  private getSections;
21
21
  protected beforeDestroy(keepalive?: boolean): void;
22
- private transformPropValue;
23
22
  }
@@ -67,6 +67,8 @@ export declare class ParserTemplate {
67
67
  * 销毁
68
68
  */
69
69
  destroy(keepalive?: boolean): void;
70
+ /** 清除所有监听,用于优化嵌套组件销毁时 自定义销毁事件再次触发watcher问题 */
71
+ destroyWathcers(): void;
70
72
  reSetAsts(asts: AST.Node[], keepalive?: boolean): void;
71
73
  nodeTransition(node: VNode.Node | undefined, mode: "enter" | "leave", name?: string, callBack?: Function, type?: "transition" | "animation"): boolean;
72
74
  }
@@ -35,6 +35,7 @@ export declare abstract class IParser<T extends AST.Node, N extends VNode.Node>
35
35
  * 销毁流程
36
36
  */
37
37
  destroy(keepalive?: boolean): void;
38
+ destroyWathcers(): void;
38
39
  private destroyOtherData;
39
40
  /**
40
41
  * 销毁所有子集VNode
@@ -5,6 +5,7 @@ export declare namespace Render {
5
5
  * 注入TagId
6
6
  */
7
7
  const IRENDERIOCTAGID: unique symbol;
8
+ let ROOT_CONTAINER: string;
8
9
  /**
9
10
  * 备注:在渲染时执行appendNode,最终执行一次mount挂载
10
11
  * 不会出现根目录append的场景,因为指令group会优先占位
@@ -43,19 +43,20 @@ export declare namespace VNode {
43
43
  * @param breakWhenVRoot 是否过滤到当前视图根时中断
44
44
  * @returns
45
45
  */
46
- closest<T extends VNode.Node = VNode.Node>(filter: (node: VNode.Node) => boolean | void, breakWhenVRoot?: boolean): T | undefined;
46
+ closest<T extends VNode.Node = VNode.Element & VNode.Component>(filter: (node: VNode.Node) => any | any, breakWhenVRoot?: boolean): T | undefined;
47
47
  /**
48
48
  * 返回所有匹配的子元素
49
49
  * @param filter 返回true则记录,返回false则跳过该元素的子集
50
50
  * @returns
51
51
  */
52
- find(filter: (node: VNode.Node) => boolean | void, childrens?: Array<VNode.Node>, _out?: Array<VNode.Node>): Array<VNode.Node>;
52
+ find<T extends VNode.Node = VNode.Element & VNode.Component>(filter: (node: VNode.Node) => true | any, childrens?: Array<VNode.Node>, _out?: Array<VNode.Node>): Array<T>;
53
53
  /**
54
54
  * 是否包含
55
55
  * @param filter 返回true则记录,返回false则跳过该元素的子集
56
56
  * @returns
57
57
  */
58
- contains(filter: (node: VNode.Node) => boolean | void, childrens?: Array<VNode.Node>): boolean;
58
+ contains(filter: (node: VNode.Node) => true | any, childrens?: Array<VNode.Node>): boolean;
59
+ first<T extends VNode.Node = VNode.Element & VNode.Component>(filter: (node: VNode.Node) => true | any, childrens?: Array<VNode.Node>): T | undefined;
59
60
  }
60
61
  /**
61
62
  * 根节点
@@ -78,8 +79,9 @@ export declare namespace VNode {
78
79
  */
79
80
  class Html extends Node {
80
81
  html: string;
82
+ notShadow?: boolean | undefined;
81
83
  static: boolean;
82
- constructor(html: string, parent: Node);
84
+ constructor(html: string, parent: Node, notShadow?: boolean | undefined);
83
85
  }
84
86
  /**
85
87
  * 注释节点
@@ -107,7 +109,7 @@ export declare namespace VNode {
107
109
  _assistEventCache?: Array<[string, (e: any) => void]>;
108
110
  constructor(tagName: string, parent: Node);
109
111
  }
110
- type Event<T = undefined> = {
112
+ type Event<T = undefined, N extends VNode.Node = VNode.Element | VNode.Component | VNode.Root> = {
111
113
  /**
112
114
  * 事件名称
113
115
  */
@@ -117,7 +119,7 @@ export declare namespace VNode {
117
119
  */
118
120
  event?: any;
119
121
  /** 触发事件目标元素 */
120
- target?: Node;
122
+ target?: N;
121
123
  /** 阻止默认事件 */
122
124
  preventDefault(): void;
123
125
  /** 阻止事件传播 */
@@ -147,7 +149,8 @@ export declare namespace VNode {
147
149
  * 当前组件第一个element vnode
148
150
  */
149
151
  get firstElement(): Element | undefined;
150
- private findElement;
152
+ /** 获取根element 节点 */
153
+ get rootElements(): Element[];
151
154
  }
152
155
  /**
153
156
  * 条件节点
@@ -1,2 +1,2 @@
1
- export declare function createObject(source: Object): any;
2
- export declare function getObjectRootProtorype(source: any): Object;
1
+ export declare function resolveDeepPromisesInPlace(obj: any, deep?: boolean): Promise<any> | undefined;
2
+ export declare function isGetterProperty(obj: object, prop: string): false | (() => any) | undefined;