@ibyar/core 1.2.2 → 2.0.1
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/LICENSE +1 -1
- package/annotation/decorators.d.ts +2 -1
- package/annotation/decorators.d.ts.map +1 -1
- package/annotation/decorators.js +3 -0
- package/annotation/decorators.js.map +1 -1
- package/annotation/options.d.ts +7 -5
- package/annotation/options.d.ts.map +1 -1
- package/annotation/options.js.map +1 -1
- package/component/component.d.ts +2 -2
- package/component/component.d.ts.map +1 -1
- package/component/component.js +5 -2
- package/component/component.js.map +1 -1
- package/component/reflect.d.ts.map +1 -1
- package/di/inject.d.ts +7 -0
- package/di/inject.d.ts.map +1 -0
- package/di/inject.js +9 -0
- package/di/inject.js.map +1 -0
- package/di/provider.d.ts +21 -0
- package/di/provider.d.ts.map +1 -0
- package/di/provider.js +57 -0
- package/di/provider.js.map +1 -0
- package/di/token.d.ts +7 -0
- package/di/token.d.ts.map +1 -0
- package/di/token.js +11 -0
- package/di/token.js.map +1 -0
- package/di/tokens.d.ts +8 -0
- package/di/tokens.d.ts.map +1 -0
- package/di/tokens.js +8 -0
- package/di/tokens.js.map +1 -0
- package/di/types.d.ts +1 -0
- package/di/types.d.ts.map +1 -0
- package/di/types.js +2 -0
- package/di/types.js.map +1 -0
- package/directive/directive.d.ts +2 -1
- package/directive/directive.d.ts.map +1 -1
- package/directive/directive.js +3 -1
- package/directive/directive.js.map +1 -1
- package/directive/parser.d.ts +2 -1
- package/directive/parser.d.ts.map +1 -1
- package/directive/parser.js +26 -19
- package/directive/parser.js.map +1 -1
- package/html/expression.d.ts.map +1 -1
- package/html/expression.js +4 -1
- package/html/expression.js.map +1 -1
- package/index.d.ts +3 -1
- package/index.d.ts.map +1 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/linker/template-ref.d.ts.map +1 -1
- package/linker/view-ref.d.ts.map +1 -1
- package/package.json +9 -8
- package/providers/provider.d.ts +2 -2
- package/providers/provider.d.ts.map +1 -1
- package/providers/provider.js +4 -4
- package/providers/provider.js.map +1 -1
- package/signals/proposal-signals.d.ts +4 -0
- package/signals/proposal-signals.d.ts.map +1 -0
- package/signals/proposal-signals.js +11 -0
- package/signals/proposal-signals.js.map +1 -0
- package/signals/proposal-sugnal.d.ts +1 -0
- package/signals/proposal-sugnal.d.ts.map +1 -0
- package/signals/proposal-sugnal.js +2 -0
- package/signals/proposal-sugnal.js.map +1 -0
- package/signals/signals.js +8 -8
- package/signals/signals.js.map +1 -1
- package/typedoc.json +8 -0
- package/view/base-view.js.map +1 -1
- package/view/render.d.ts.map +1 -1
- package/view/render.js +7 -3
- package/view/render.js.map +1 -1
- package/zone/task.d.ts +0 -61
- package/zone/task.d.ts.map +1 -1
- package/zone/task.js +127 -116
- package/zone/task.js.map +1 -1
package/zone/task.js
CHANGED
|
@@ -1,117 +1,128 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
// /// <reference types='zone.js' />
|
|
3
|
+
// import { ReactiveScopeControl, Context, Stack } from '@ibyar/expressions';
|
|
4
|
+
// const notScheduled: 'notScheduled' = 'notScheduled',
|
|
5
|
+
// scheduling: 'scheduling' = 'scheduling',
|
|
6
|
+
// scheduled: 'scheduled' = 'scheduled',
|
|
7
|
+
// running: 'running' = 'running',
|
|
8
|
+
// canceling: 'canceling' = 'canceling',
|
|
9
|
+
// unknown: 'unknown' = 'unknown';
|
|
10
|
+
// const microTask: 'microTask' = 'microTask',
|
|
11
|
+
// macroTask: 'macroTask' = 'macroTask',
|
|
12
|
+
// eventTask: 'eventTask' = 'eventTask';
|
|
13
|
+
// export abstract class AbstractTask<T extends TaskType> implements Task {
|
|
14
|
+
// public runCount: number = 0;
|
|
15
|
+
// _zone: Zone | null = null;
|
|
16
|
+
// _state: TaskState = 'notScheduled';
|
|
17
|
+
// constructor(
|
|
18
|
+
// public type: T,
|
|
19
|
+
// public source: string,
|
|
20
|
+
// public callback: Function,
|
|
21
|
+
// public data?: TaskData,
|
|
22
|
+
// public scheduleFn?: (task: Task) => void,
|
|
23
|
+
// public cancelFn?: (task: Task) => void) {
|
|
24
|
+
// if (!callback) {
|
|
25
|
+
// throw new Error('callback is not defined');
|
|
26
|
+
// }
|
|
27
|
+
// }
|
|
28
|
+
// get zone(): Zone {
|
|
29
|
+
// return this._zone!;
|
|
30
|
+
// }
|
|
31
|
+
// get state(): TaskState {
|
|
32
|
+
// return this._state;
|
|
33
|
+
// }
|
|
34
|
+
// public cancelScheduleRequest() {
|
|
35
|
+
// this._transitionTo(notScheduled, scheduling);
|
|
36
|
+
// }
|
|
37
|
+
// _transitionTo(toState: TaskState, fromState1: TaskState, fromState2?: TaskState) {
|
|
38
|
+
// if (this._state === fromState1 || this._state === fromState2) {
|
|
39
|
+
// this._state = toState;
|
|
40
|
+
// } else {
|
|
41
|
+
// throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \'' + fromState2 + '\'' : ''}, was '${this._state}'.`);
|
|
42
|
+
// }
|
|
43
|
+
// }
|
|
44
|
+
// public toString() {
|
|
45
|
+
// if (this.data && typeof this.data.handleId !== 'undefined') {
|
|
46
|
+
// return this.data.handleId.toString();
|
|
47
|
+
// } else {
|
|
48
|
+
// return Object.prototype.toString.call(this);
|
|
49
|
+
// }
|
|
50
|
+
// }
|
|
51
|
+
// public toJSON() {
|
|
52
|
+
// return {
|
|
53
|
+
// type: this.type,
|
|
54
|
+
// state: this.state,
|
|
55
|
+
// source: this.source,
|
|
56
|
+
// zone: this.zone.name,
|
|
57
|
+
// runCount: this.runCount
|
|
58
|
+
// };
|
|
59
|
+
// }
|
|
60
|
+
// abstract invoke(task: any, target: any, args: any): any;
|
|
61
|
+
// }
|
|
62
|
+
// export class ScopeTask<T extends TaskType> extends AbstractTask<T> {
|
|
63
|
+
// static microTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {
|
|
64
|
+
// return new ScopeTask(scope, microTask, source, callback, data, customSchedule, undefined);
|
|
65
|
+
// }
|
|
66
|
+
// static macroTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
|
|
67
|
+
// return new ScopeTask(scope, macroTask, source, callback, data, customSchedule, customCancel);
|
|
68
|
+
// }
|
|
69
|
+
// static eventTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
|
|
70
|
+
// return new ScopeTask(scope, eventTask, source, callback, data, customSchedule, customCancel);
|
|
71
|
+
// }
|
|
72
|
+
// constructor(
|
|
73
|
+
// public scope: ReactiveScopeControl<any>,
|
|
74
|
+
// type: T,
|
|
75
|
+
// source: string,
|
|
76
|
+
// callback: Function,
|
|
77
|
+
// data?: TaskData,
|
|
78
|
+
// scheduleFn?: (task: Task) => void,
|
|
79
|
+
// cancelFn?: (task: Task) => void) {
|
|
80
|
+
// super(type, source, callback, data, scheduleFn, cancelFn);
|
|
81
|
+
// }
|
|
82
|
+
// invoke(task: any, target: any, args: any) {
|
|
83
|
+
// try {
|
|
84
|
+
// this.runCount++;
|
|
85
|
+
// this.scope.detach();
|
|
86
|
+
// return this.zone.runTask(task, target, args);
|
|
87
|
+
// } finally {
|
|
88
|
+
// this.scope.reattach();
|
|
89
|
+
// }
|
|
90
|
+
// }
|
|
91
|
+
// public toJSON() {
|
|
92
|
+
// return Object.assign(super.toJSON(), { scope: this.scope });
|
|
93
|
+
// }
|
|
94
|
+
// }
|
|
95
|
+
// export class StackTask<T extends TaskType> extends AbstractTask<T> {
|
|
96
|
+
// static microTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {
|
|
97
|
+
// return new StackTask(stack, microTask, source, callback, data, customSchedule, undefined);
|
|
98
|
+
// }
|
|
99
|
+
// static macroTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
|
|
100
|
+
// return new StackTask(stack, macroTask, source, callback, data, customSchedule, customCancel);
|
|
101
|
+
// }
|
|
102
|
+
// static eventTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {
|
|
103
|
+
// return new StackTask(stack, eventTask, source, callback, data, customSchedule, customCancel);
|
|
104
|
+
// }
|
|
105
|
+
// constructor(
|
|
106
|
+
// public stack: Stack,
|
|
107
|
+
// type: T,
|
|
108
|
+
// source: string,
|
|
109
|
+
// callback: Function,
|
|
110
|
+
// data: TaskData | undefined,
|
|
111
|
+
// scheduleFn: ((task: Task) => void) | undefined,
|
|
112
|
+
// cancelFn: ((task: Task) => void) | undefined) {
|
|
113
|
+
// super(type, source, callback, data, scheduleFn, cancelFn);
|
|
114
|
+
// }
|
|
115
|
+
// invoke(task: any, target: any, args: any) {
|
|
116
|
+
// try {
|
|
117
|
+
// this.runCount++;
|
|
118
|
+
// this.stack.detach();
|
|
119
|
+
// return this.zone.runTask(task, target, args);
|
|
120
|
+
// } finally {
|
|
121
|
+
// this.stack.reattach();
|
|
122
|
+
// }
|
|
123
|
+
// }
|
|
124
|
+
// public toJSON() {
|
|
125
|
+
// return Object.assign(super.toJSON(), { stack: this.stack });
|
|
126
|
+
// }
|
|
127
|
+
// }
|
|
117
128
|
//# sourceMappingURL=task.js.map
|
package/zone/task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/core/zone/task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/core/zone/task.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,6EAA6E;AAE7E,uDAAuD;AACvD,4CAA4C;AAC5C,yCAAyC;AACzC,mCAAmC;AACnC,yCAAyC;AACzC,mCAAmC;AAEnC,8CAA8C;AAC9C,yCAAyC;AACzC,yCAAyC;AAEzC,2EAA2E;AAE3E,gCAAgC;AAChC,8BAA8B;AAC9B,uCAAuC;AAEvC,gBAAgB;AAChB,oBAAoB;AACpB,2BAA2B;AAC3B,+BAA+B;AAC/B,4BAA4B;AAC5B,8CAA8C;AAC9C,8CAA8C;AAC9C,qBAAqB;AACrB,iDAAiD;AACjD,MAAM;AACN,KAAK;AAEL,sBAAsB;AACtB,wBAAwB;AACxB,KAAK;AAEL,4BAA4B;AAC5B,wBAAwB;AACxB,KAAK;AAEL,oCAAoC;AACpC,kDAAkD;AAClD,KAAK;AAEL,sFAAsF;AACtF,oEAAoE;AACpE,4BAA4B;AAC5B,aAAa;AACb,oMAAoM;AACpM,MAAM;AACN,KAAK;AAEL,uBAAuB;AACvB,kEAAkE;AAClE,2CAA2C;AAC3C,aAAa;AACb,kDAAkD;AAClD,MAAM;AACN,KAAK;AACL,qBAAqB;AACrB,aAAa;AACb,sBAAsB;AACtB,wBAAwB;AACxB,0BAA0B;AAC1B,2BAA2B;AAC3B,6BAA6B;AAC7B,OAAO;AACP,KAAK;AAEL,4DAA4D;AAC5D,IAAI;AAEJ,uEAAuE;AACvE,oJAAoJ;AACpJ,+FAA+F;AAC/F,KAAK;AACL,yLAAyL;AACzL,kGAAkG;AAClG,KAAK;AACL,yLAAyL;AACzL,kGAAkG;AAClG,KAAK;AAEL,gBAAgB;AAChB,6CAA6C;AAC7C,aAAa;AACb,oBAAoB;AACpB,wBAAwB;AACxB,qBAAqB;AACrB,uCAAuC;AACvC,uCAAuC;AACvC,+DAA+D;AAC/D,KAAK;AACL,+CAA+C;AAC/C,UAAU;AACV,sBAAsB;AACtB,0BAA0B;AAC1B,mDAAmD;AACnD,gBAAgB;AAChB,4BAA4B;AAC5B,MAAM;AACN,KAAK;AACL,qBAAqB;AACrB,iEAAiE;AACjE,KAAK;AACL,IAAI;AAEJ,uEAAuE;AAEvE,gIAAgI;AAChI,+FAA+F;AAC/F,KAAK;AACL,qKAAqK;AACrK,kGAAkG;AAClG,KAAK;AACL,qKAAqK;AACrK,kGAAkG;AAClG,KAAK;AAEL,gBAAgB;AAChB,yBAAyB;AACzB,aAAa;AACb,oBAAoB;AACpB,wBAAwB;AACxB,gCAAgC;AAChC,oDAAoD;AACpD,oDAAoD;AACpD,+DAA+D;AAC/D,KAAK;AACL,+CAA+C;AAC/C,UAAU;AACV,sBAAsB;AACtB,0BAA0B;AAC1B,mDAAmD;AACnD,gBAAgB;AAChB,4BAA4B;AAC5B,MAAM;AACN,KAAK;AACL,qBAAqB;AACrB,iEAAiE;AACjE,KAAK;AACL,IAAI","sourcesContent":["// /// <reference types='zone.js' />\n// import { ReactiveScopeControl, Context, Stack } from '@ibyar/expressions';\n\n// const notScheduled: 'notScheduled' = 'notScheduled',\n// \tscheduling: 'scheduling' = 'scheduling',\n// \tscheduled: 'scheduled' = 'scheduled',\n// \trunning: 'running' = 'running',\n// \tcanceling: 'canceling' = 'canceling',\n// \tunknown: 'unknown' = 'unknown';\n\n// const microTask: 'microTask' = 'microTask',\n// \tmacroTask: 'macroTask' = 'macroTask',\n// \teventTask: 'eventTask' = 'eventTask';\n\n// export abstract class AbstractTask<T extends TaskType> implements Task {\n\n// \tpublic runCount: number = 0;\n// \t_zone: Zone | null = null;\n// \t_state: TaskState = 'notScheduled';\n\n// \tconstructor(\n// \t\tpublic type: T,\n// \t\tpublic source: string,\n// \t\tpublic callback: Function,\n// \t\tpublic data?: TaskData,\n// \t\tpublic scheduleFn?: (task: Task) => void,\n// \t\tpublic cancelFn?: (task: Task) => void) {\n// \t\tif (!callback) {\n// \t\t\tthrow new Error('callback is not defined');\n// \t\t}\n// \t}\n\n// \tget zone(): Zone {\n// \t\treturn this._zone!;\n// \t}\n\n// \tget state(): TaskState {\n// \t\treturn this._state;\n// \t}\n\n// \tpublic cancelScheduleRequest() {\n// \t\tthis._transitionTo(notScheduled, scheduling);\n// \t}\n\n// \t_transitionTo(toState: TaskState, fromState1: TaskState, fromState2?: TaskState) {\n// \t\tif (this._state === fromState1 || this._state === fromState2) {\n// \t\t\tthis._state = toState;\n// \t\t} else {\n// \t\t\tthrow new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \\'' + fromState2 + '\\'' : ''}, was '${this._state}'.`);\n// \t\t}\n// \t}\n\n// \tpublic toString() {\n// \t\tif (this.data && typeof this.data.handleId !== 'undefined') {\n// \t\t\treturn this.data.handleId.toString();\n// \t\t} else {\n// \t\t\treturn Object.prototype.toString.call(this);\n// \t\t}\n// \t}\n// \tpublic toJSON() {\n// \t\treturn {\n// \t\t\ttype: this.type,\n// \t\t\tstate: this.state,\n// \t\t\tsource: this.source,\n// \t\t\tzone: this.zone.name,\n// \t\t\trunCount: this.runCount\n// \t\t};\n// \t}\n\n// \tabstract invoke(task: any, target: any, args: any): any;\n// }\n\n// export class ScopeTask<T extends TaskType> extends AbstractTask<T> {\n// \tstatic microTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {\n// \t\treturn new ScopeTask(scope, microTask, source, callback, data, customSchedule, undefined);\n// \t}\n// \tstatic macroTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new ScopeTask(scope, macroTask, source, callback, data, customSchedule, customCancel);\n// \t}\n// \tstatic eventTask(scope: ReactiveScopeControl<any>, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new ScopeTask(scope, eventTask, source, callback, data, customSchedule, customCancel);\n// \t}\n\n// \tconstructor(\n// \t\tpublic scope: ReactiveScopeControl<any>,\n// \t\ttype: T,\n// \t\tsource: string,\n// \t\tcallback: Function,\n// \t\tdata?: TaskData,\n// \t\tscheduleFn?: (task: Task) => void,\n// \t\tcancelFn?: (task: Task) => void) {\n// \t\tsuper(type, source, callback, data, scheduleFn, cancelFn);\n// \t}\n// \tinvoke(task: any, target: any, args: any) {\n// \t\ttry {\n// \t\t\tthis.runCount++;\n// \t\t\tthis.scope.detach();\n// \t\t\treturn this.zone.runTask(task, target, args);\n// \t\t} finally {\n// \t\t\tthis.scope.reattach();\n// \t\t}\n// \t}\n// \tpublic toJSON() {\n// \t\treturn Object.assign(super.toJSON(), { scope: this.scope });\n// \t}\n// }\n\n// export class StackTask<T extends TaskType> extends AbstractTask<T> {\n\n// \tstatic microTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void) {\n// \t\treturn new StackTask(stack, microTask, source, callback, data, customSchedule, undefined);\n// \t}\n// \tstatic macroTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new StackTask(stack, macroTask, source, callback, data, customSchedule, customCancel);\n// \t}\n// \tstatic eventTask(stack: Stack, source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void, customCancel?: (task: Task) => void) {\n// \t\treturn new StackTask(stack, eventTask, source, callback, data, customSchedule, customCancel);\n// \t}\n\n// \tconstructor(\n// \t\tpublic stack: Stack,\n// \t\ttype: T,\n// \t\tsource: string,\n// \t\tcallback: Function,\n// \t\tdata: TaskData | undefined,\n// \t\tscheduleFn: ((task: Task) => void) | undefined,\n// \t\tcancelFn: ((task: Task) => void) | undefined) {\n// \t\tsuper(type, source, callback, data, scheduleFn, cancelFn);\n// \t}\n// \tinvoke(task: any, target: any, args: any) {\n// \t\ttry {\n// \t\t\tthis.runCount++;\n// \t\t\tthis.stack.detach();\n// \t\t\treturn this.zone.runTask(task, target, args);\n// \t\t} finally {\n// \t\t\tthis.stack.reattach();\n// \t\t}\n// \t}\n// \tpublic toJSON() {\n// \t\treturn Object.assign(super.toJSON(), { stack: this.stack });\n// \t}\n// }\n"]}
|