@merkur/core 0.34.0 → 0.35.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/lib/index.cjs +50 -25
- package/lib/index.es9.cjs +38 -17
- package/lib/index.es9.mjs +38 -18
- package/lib/index.js +50 -25
- package/lib/index.mjs +50 -26
- package/lib/index.umd.js +1 -1
- package/package.json +4 -2
- package/tsconfig.json +16 -0
- package/types.d.ts +98 -0
package/lib/index.cjs
CHANGED
|
@@ -78,18 +78,42 @@ async function callPluginMethod(widget, method, args) {
|
|
|
78
78
|
return widget;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Typed helper to make it easier to define widget properties.
|
|
83
|
+
*
|
|
84
|
+
* @type import('@merkur/core').defineWidget
|
|
85
|
+
*/
|
|
86
|
+
function defineWidget(widgetDefinition) {
|
|
87
|
+
return widgetDefinition;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function setDefinitionDefaults(widgetDefinition) {
|
|
91
|
+
return {
|
|
92
|
+
...widgetDefinition,
|
|
93
|
+
...setDefaultValueForUndefined(
|
|
94
|
+
widgetDefinition,
|
|
95
|
+
['containerSelector'],
|
|
96
|
+
null,
|
|
97
|
+
),
|
|
98
|
+
...setDefaultValueForUndefined(widgetDefinition, [
|
|
99
|
+
'slot',
|
|
100
|
+
'$dependencies',
|
|
101
|
+
'$external',
|
|
102
|
+
]),
|
|
103
|
+
...setDefaultValueForUndefined(
|
|
104
|
+
widgetDefinition,
|
|
105
|
+
['setup', 'create'],
|
|
106
|
+
(widget) => widget,
|
|
107
|
+
),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
91
110
|
|
|
92
|
-
|
|
111
|
+
/**
|
|
112
|
+
* @type import('@merkur/core').createMerkurWidget
|
|
113
|
+
*/
|
|
114
|
+
async function createMerkurWidget(widgetDefinition = {}) {
|
|
115
|
+
const definition = setDefinitionDefaults(widgetDefinition);
|
|
116
|
+
const { setup, create } = definition;
|
|
93
117
|
|
|
94
118
|
let widget = {
|
|
95
119
|
async setup(widget, ...rest) {
|
|
@@ -102,29 +126,29 @@ async function createMerkurWidget(widgetDefinition = {}) {
|
|
|
102
126
|
|
|
103
127
|
return create(widget, ...rest);
|
|
104
128
|
},
|
|
105
|
-
$plugins: (
|
|
129
|
+
$plugins: (definition.$plugins || []).map((pluginFactory) =>
|
|
106
130
|
pluginFactory(),
|
|
107
131
|
),
|
|
108
132
|
};
|
|
109
133
|
|
|
110
134
|
// TODO refactoring
|
|
111
|
-
widget.name =
|
|
112
|
-
widget.version =
|
|
113
|
-
widget.$dependencies =
|
|
114
|
-
widget.$external =
|
|
135
|
+
widget.name = definition.name;
|
|
136
|
+
widget.version = definition.version;
|
|
137
|
+
widget.$dependencies = definition.$dependencies;
|
|
138
|
+
widget.$external = definition.$external;
|
|
115
139
|
widget.$in = {};
|
|
116
140
|
|
|
117
|
-
delete
|
|
118
|
-
delete
|
|
119
|
-
delete
|
|
120
|
-
delete
|
|
121
|
-
delete
|
|
141
|
+
delete definition.name;
|
|
142
|
+
delete definition.version;
|
|
143
|
+
delete definition.$dependencies;
|
|
144
|
+
delete definition.$external;
|
|
145
|
+
delete definition.$plugins;
|
|
122
146
|
|
|
123
|
-
delete
|
|
124
|
-
delete
|
|
147
|
+
delete definition.setup;
|
|
148
|
+
delete definition.create;
|
|
125
149
|
|
|
126
|
-
widget = await widget.setup(widget,
|
|
127
|
-
widget = await widget.create(widget,
|
|
150
|
+
widget = await widget.setup(widget, definition);
|
|
151
|
+
widget = await widget.create(widget, definition);
|
|
128
152
|
|
|
129
153
|
bindWidgetToFunctions(widget);
|
|
130
154
|
Object.seal(widget);
|
|
@@ -223,6 +247,7 @@ exports.assignMissingKeys = assignMissingKeys;
|
|
|
223
247
|
exports.bindWidgetToFunctions = bindWidgetToFunctions;
|
|
224
248
|
exports.createMerkur = createMerkur;
|
|
225
249
|
exports.createMerkurWidget = createMerkurWidget;
|
|
250
|
+
exports.defineWidget = defineWidget;
|
|
226
251
|
exports.getMerkur = getMerkur;
|
|
227
252
|
exports.hookMethod = hookMethod;
|
|
228
253
|
exports.isFunction = isFunction;
|
package/lib/index.es9.cjs
CHANGED
|
@@ -67,13 +67,33 @@ async function callPluginMethod(widget, method, args) {
|
|
|
67
67
|
}
|
|
68
68
|
return widget;
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Typed helper to make it easier to define widget properties.
|
|
73
|
+
*
|
|
74
|
+
* @type import('@merkur/core').defineWidget
|
|
75
|
+
*/
|
|
76
|
+
function defineWidget(widgetDefinition) {
|
|
77
|
+
return widgetDefinition;
|
|
78
|
+
}
|
|
79
|
+
function setDefinitionDefaults(widgetDefinition) {
|
|
80
|
+
return {
|
|
81
|
+
...widgetDefinition,
|
|
82
|
+
...setDefaultValueForUndefined(widgetDefinition, ['containerSelector'], null),
|
|
83
|
+
...setDefaultValueForUndefined(widgetDefinition, ['slot', '$dependencies', '$external']),
|
|
84
|
+
...setDefaultValueForUndefined(widgetDefinition, ['setup', 'create'], widget => widget)
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @type import('@merkur/core').createMerkurWidget
|
|
90
|
+
*/
|
|
70
91
|
async function createMerkurWidget(widgetDefinition = {}) {
|
|
71
|
-
|
|
72
|
-
widgetDefinition = setDefaultValueForUndefined(widgetDefinition, ['setup', 'create'], widget => widget);
|
|
92
|
+
const definition = setDefinitionDefaults(widgetDefinition);
|
|
73
93
|
const {
|
|
74
94
|
setup,
|
|
75
95
|
create
|
|
76
|
-
} =
|
|
96
|
+
} = definition;
|
|
77
97
|
let widget = {
|
|
78
98
|
async setup(widget, ...rest) {
|
|
79
99
|
widget = await callPluginMethod(widget, 'setup', rest);
|
|
@@ -83,24 +103,24 @@ async function createMerkurWidget(widgetDefinition = {}) {
|
|
|
83
103
|
widget = await callPluginMethod(widget, 'create', rest);
|
|
84
104
|
return create(widget, ...rest);
|
|
85
105
|
},
|
|
86
|
-
$plugins: (
|
|
106
|
+
$plugins: (definition.$plugins || []).map(pluginFactory => pluginFactory())
|
|
87
107
|
};
|
|
88
108
|
|
|
89
109
|
// TODO refactoring
|
|
90
|
-
widget.name =
|
|
91
|
-
widget.version =
|
|
92
|
-
widget.$dependencies =
|
|
93
|
-
widget.$external =
|
|
110
|
+
widget.name = definition.name;
|
|
111
|
+
widget.version = definition.version;
|
|
112
|
+
widget.$dependencies = definition.$dependencies;
|
|
113
|
+
widget.$external = definition.$external;
|
|
94
114
|
widget.$in = {};
|
|
95
|
-
delete
|
|
96
|
-
delete
|
|
97
|
-
delete
|
|
98
|
-
delete
|
|
99
|
-
delete
|
|
100
|
-
delete
|
|
101
|
-
delete
|
|
102
|
-
widget = await widget.setup(widget,
|
|
103
|
-
widget = await widget.create(widget,
|
|
115
|
+
delete definition.name;
|
|
116
|
+
delete definition.version;
|
|
117
|
+
delete definition.$dependencies;
|
|
118
|
+
delete definition.$external;
|
|
119
|
+
delete definition.$plugins;
|
|
120
|
+
delete definition.setup;
|
|
121
|
+
delete definition.create;
|
|
122
|
+
widget = await widget.setup(widget, definition);
|
|
123
|
+
widget = await widget.create(widget, definition);
|
|
104
124
|
bindWidgetToFunctions(widget);
|
|
105
125
|
Object.seal(widget);
|
|
106
126
|
return widget;
|
|
@@ -180,6 +200,7 @@ exports.assignMissingKeys = assignMissingKeys;
|
|
|
180
200
|
exports.bindWidgetToFunctions = bindWidgetToFunctions;
|
|
181
201
|
exports.createMerkur = createMerkur;
|
|
182
202
|
exports.createMerkurWidget = createMerkurWidget;
|
|
203
|
+
exports.defineWidget = defineWidget;
|
|
183
204
|
exports.getMerkur = getMerkur;
|
|
184
205
|
exports.hookMethod = hookMethod;
|
|
185
206
|
exports.isFunction = isFunction;
|
package/lib/index.es9.mjs
CHANGED
|
@@ -65,13 +65,33 @@ async function callPluginMethod(widget, method, args) {
|
|
|
65
65
|
}
|
|
66
66
|
return widget;
|
|
67
67
|
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Typed helper to make it easier to define widget properties.
|
|
71
|
+
*
|
|
72
|
+
* @type import('@merkur/core').defineWidget
|
|
73
|
+
*/
|
|
74
|
+
function defineWidget(widgetDefinition) {
|
|
75
|
+
return widgetDefinition;
|
|
76
|
+
}
|
|
77
|
+
function setDefinitionDefaults(widgetDefinition) {
|
|
78
|
+
return {
|
|
79
|
+
...widgetDefinition,
|
|
80
|
+
...setDefaultValueForUndefined(widgetDefinition, ['containerSelector'], null),
|
|
81
|
+
...setDefaultValueForUndefined(widgetDefinition, ['slot', '$dependencies', '$external']),
|
|
82
|
+
...setDefaultValueForUndefined(widgetDefinition, ['setup', 'create'], widget => widget)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @type import('@merkur/core').createMerkurWidget
|
|
88
|
+
*/
|
|
68
89
|
async function createMerkurWidget(widgetDefinition = {}) {
|
|
69
|
-
|
|
70
|
-
widgetDefinition = setDefaultValueForUndefined(widgetDefinition, ['setup', 'create'], widget => widget);
|
|
90
|
+
const definition = setDefinitionDefaults(widgetDefinition);
|
|
71
91
|
const {
|
|
72
92
|
setup,
|
|
73
93
|
create
|
|
74
|
-
} =
|
|
94
|
+
} = definition;
|
|
75
95
|
let widget = {
|
|
76
96
|
async setup(widget, ...rest) {
|
|
77
97
|
widget = await callPluginMethod(widget, 'setup', rest);
|
|
@@ -81,24 +101,24 @@ async function createMerkurWidget(widgetDefinition = {}) {
|
|
|
81
101
|
widget = await callPluginMethod(widget, 'create', rest);
|
|
82
102
|
return create(widget, ...rest);
|
|
83
103
|
},
|
|
84
|
-
$plugins: (
|
|
104
|
+
$plugins: (definition.$plugins || []).map(pluginFactory => pluginFactory())
|
|
85
105
|
};
|
|
86
106
|
|
|
87
107
|
// TODO refactoring
|
|
88
|
-
widget.name =
|
|
89
|
-
widget.version =
|
|
90
|
-
widget.$dependencies =
|
|
91
|
-
widget.$external =
|
|
108
|
+
widget.name = definition.name;
|
|
109
|
+
widget.version = definition.version;
|
|
110
|
+
widget.$dependencies = definition.$dependencies;
|
|
111
|
+
widget.$external = definition.$external;
|
|
92
112
|
widget.$in = {};
|
|
93
|
-
delete
|
|
94
|
-
delete
|
|
95
|
-
delete
|
|
96
|
-
delete
|
|
97
|
-
delete
|
|
98
|
-
delete
|
|
99
|
-
delete
|
|
100
|
-
widget = await widget.setup(widget,
|
|
101
|
-
widget = await widget.create(widget,
|
|
113
|
+
delete definition.name;
|
|
114
|
+
delete definition.version;
|
|
115
|
+
delete definition.$dependencies;
|
|
116
|
+
delete definition.$external;
|
|
117
|
+
delete definition.$plugins;
|
|
118
|
+
delete definition.setup;
|
|
119
|
+
delete definition.create;
|
|
120
|
+
widget = await widget.setup(widget, definition);
|
|
121
|
+
widget = await widget.create(widget, definition);
|
|
102
122
|
bindWidgetToFunctions(widget);
|
|
103
123
|
Object.seal(widget);
|
|
104
124
|
return widget;
|
|
@@ -174,4 +194,4 @@ function getGlobalContext() {
|
|
|
174
194
|
}
|
|
175
195
|
return {};
|
|
176
196
|
}
|
|
177
|
-
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, getMerkur, hookMethod, isFunction, removeMerkur, setDefaultValueForUndefined };
|
|
197
|
+
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, defineWidget, getMerkur, hookMethod, isFunction, removeMerkur, setDefaultValueForUndefined };
|
package/lib/index.js
CHANGED
|
@@ -78,18 +78,42 @@ async function callPluginMethod(widget, method, args) {
|
|
|
78
78
|
return widget;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Typed helper to make it easier to define widget properties.
|
|
83
|
+
*
|
|
84
|
+
* @type import('@merkur/core').defineWidget
|
|
85
|
+
*/
|
|
86
|
+
function defineWidget(widgetDefinition) {
|
|
87
|
+
return widgetDefinition;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function setDefinitionDefaults(widgetDefinition) {
|
|
91
|
+
return {
|
|
92
|
+
...widgetDefinition,
|
|
93
|
+
...setDefaultValueForUndefined(
|
|
94
|
+
widgetDefinition,
|
|
95
|
+
['containerSelector'],
|
|
96
|
+
null,
|
|
97
|
+
),
|
|
98
|
+
...setDefaultValueForUndefined(widgetDefinition, [
|
|
99
|
+
'slot',
|
|
100
|
+
'$dependencies',
|
|
101
|
+
'$external',
|
|
102
|
+
]),
|
|
103
|
+
...setDefaultValueForUndefined(
|
|
104
|
+
widgetDefinition,
|
|
105
|
+
['setup', 'create'],
|
|
106
|
+
(widget) => widget,
|
|
107
|
+
),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
91
110
|
|
|
92
|
-
|
|
111
|
+
/**
|
|
112
|
+
* @type import('@merkur/core').createMerkurWidget
|
|
113
|
+
*/
|
|
114
|
+
async function createMerkurWidget(widgetDefinition = {}) {
|
|
115
|
+
const definition = setDefinitionDefaults(widgetDefinition);
|
|
116
|
+
const { setup, create } = definition;
|
|
93
117
|
|
|
94
118
|
let widget = {
|
|
95
119
|
async setup(widget, ...rest) {
|
|
@@ -102,29 +126,29 @@ async function createMerkurWidget(widgetDefinition = {}) {
|
|
|
102
126
|
|
|
103
127
|
return create(widget, ...rest);
|
|
104
128
|
},
|
|
105
|
-
$plugins: (
|
|
129
|
+
$plugins: (definition.$plugins || []).map((pluginFactory) =>
|
|
106
130
|
pluginFactory(),
|
|
107
131
|
),
|
|
108
132
|
};
|
|
109
133
|
|
|
110
134
|
// TODO refactoring
|
|
111
|
-
widget.name =
|
|
112
|
-
widget.version =
|
|
113
|
-
widget.$dependencies =
|
|
114
|
-
widget.$external =
|
|
135
|
+
widget.name = definition.name;
|
|
136
|
+
widget.version = definition.version;
|
|
137
|
+
widget.$dependencies = definition.$dependencies;
|
|
138
|
+
widget.$external = definition.$external;
|
|
115
139
|
widget.$in = {};
|
|
116
140
|
|
|
117
|
-
delete
|
|
118
|
-
delete
|
|
119
|
-
delete
|
|
120
|
-
delete
|
|
121
|
-
delete
|
|
141
|
+
delete definition.name;
|
|
142
|
+
delete definition.version;
|
|
143
|
+
delete definition.$dependencies;
|
|
144
|
+
delete definition.$external;
|
|
145
|
+
delete definition.$plugins;
|
|
122
146
|
|
|
123
|
-
delete
|
|
124
|
-
delete
|
|
147
|
+
delete definition.setup;
|
|
148
|
+
delete definition.create;
|
|
125
149
|
|
|
126
|
-
widget = await widget.setup(widget,
|
|
127
|
-
widget = await widget.create(widget,
|
|
150
|
+
widget = await widget.setup(widget, definition);
|
|
151
|
+
widget = await widget.create(widget, definition);
|
|
128
152
|
|
|
129
153
|
bindWidgetToFunctions(widget);
|
|
130
154
|
Object.seal(widget);
|
|
@@ -223,6 +247,7 @@ exports.assignMissingKeys = assignMissingKeys;
|
|
|
223
247
|
exports.bindWidgetToFunctions = bindWidgetToFunctions;
|
|
224
248
|
exports.createMerkur = createMerkur;
|
|
225
249
|
exports.createMerkurWidget = createMerkurWidget;
|
|
250
|
+
exports.defineWidget = defineWidget;
|
|
226
251
|
exports.getMerkur = getMerkur;
|
|
227
252
|
exports.hookMethod = hookMethod;
|
|
228
253
|
exports.isFunction = isFunction;
|
package/lib/index.mjs
CHANGED
|
@@ -76,18 +76,42 @@ async function callPluginMethod(widget, method, args) {
|
|
|
76
76
|
return widget;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Typed helper to make it easier to define widget properties.
|
|
81
|
+
*
|
|
82
|
+
* @type import('@merkur/core').defineWidget
|
|
83
|
+
*/
|
|
84
|
+
function defineWidget(widgetDefinition) {
|
|
85
|
+
return widgetDefinition;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function setDefinitionDefaults(widgetDefinition) {
|
|
89
|
+
return {
|
|
90
|
+
...widgetDefinition,
|
|
91
|
+
...setDefaultValueForUndefined(
|
|
92
|
+
widgetDefinition,
|
|
93
|
+
['containerSelector'],
|
|
94
|
+
null,
|
|
95
|
+
),
|
|
96
|
+
...setDefaultValueForUndefined(widgetDefinition, [
|
|
97
|
+
'slot',
|
|
98
|
+
'$dependencies',
|
|
99
|
+
'$external',
|
|
100
|
+
]),
|
|
101
|
+
...setDefaultValueForUndefined(
|
|
102
|
+
widgetDefinition,
|
|
103
|
+
['setup', 'create'],
|
|
104
|
+
(widget) => widget,
|
|
105
|
+
),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
89
108
|
|
|
90
|
-
|
|
109
|
+
/**
|
|
110
|
+
* @type import('@merkur/core').createMerkurWidget
|
|
111
|
+
*/
|
|
112
|
+
async function createMerkurWidget(widgetDefinition = {}) {
|
|
113
|
+
const definition = setDefinitionDefaults(widgetDefinition);
|
|
114
|
+
const { setup, create } = definition;
|
|
91
115
|
|
|
92
116
|
let widget = {
|
|
93
117
|
async setup(widget, ...rest) {
|
|
@@ -100,29 +124,29 @@ async function createMerkurWidget(widgetDefinition = {}) {
|
|
|
100
124
|
|
|
101
125
|
return create(widget, ...rest);
|
|
102
126
|
},
|
|
103
|
-
$plugins: (
|
|
127
|
+
$plugins: (definition.$plugins || []).map((pluginFactory) =>
|
|
104
128
|
pluginFactory(),
|
|
105
129
|
),
|
|
106
130
|
};
|
|
107
131
|
|
|
108
132
|
// TODO refactoring
|
|
109
|
-
widget.name =
|
|
110
|
-
widget.version =
|
|
111
|
-
widget.$dependencies =
|
|
112
|
-
widget.$external =
|
|
133
|
+
widget.name = definition.name;
|
|
134
|
+
widget.version = definition.version;
|
|
135
|
+
widget.$dependencies = definition.$dependencies;
|
|
136
|
+
widget.$external = definition.$external;
|
|
113
137
|
widget.$in = {};
|
|
114
138
|
|
|
115
|
-
delete
|
|
116
|
-
delete
|
|
117
|
-
delete
|
|
118
|
-
delete
|
|
119
|
-
delete
|
|
139
|
+
delete definition.name;
|
|
140
|
+
delete definition.version;
|
|
141
|
+
delete definition.$dependencies;
|
|
142
|
+
delete definition.$external;
|
|
143
|
+
delete definition.$plugins;
|
|
120
144
|
|
|
121
|
-
delete
|
|
122
|
-
delete
|
|
145
|
+
delete definition.setup;
|
|
146
|
+
delete definition.create;
|
|
123
147
|
|
|
124
|
-
widget = await widget.setup(widget,
|
|
125
|
-
widget = await widget.create(widget,
|
|
148
|
+
widget = await widget.setup(widget, definition);
|
|
149
|
+
widget = await widget.create(widget, definition);
|
|
126
150
|
|
|
127
151
|
bindWidgetToFunctions(widget);
|
|
128
152
|
Object.seal(widget);
|
|
@@ -217,4 +241,4 @@ function getGlobalContext() {
|
|
|
217
241
|
return {};
|
|
218
242
|
}
|
|
219
243
|
|
|
220
|
-
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, getMerkur, hookMethod, isFunction, removeMerkur, setDefaultValueForUndefined };
|
|
244
|
+
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, defineWidget, getMerkur, hookMethod, isFunction, removeMerkur, setDefaultValueForUndefined };
|
package/lib/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,n){if("function"==typeof define&&define.amd)define("@merkur/core",["exports"],n);else if("undefined"!=typeof exports)n(exports);else{var t={exports:{}};n(t.exports),e.Merkur=e.Merkur||{},e.Merkur.Core=t.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){function n(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||t(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,n){if(e){if("string"==typeof e)return r(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,n):void 0}}function r(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,n,t,r,o,i,u){try{var a=e[i](u),c=a.value}catch(e){return void t(e)}a.done?n(c):Promise.resolve(c).then(r,o)}function u(e){return function(){var n=this,t=arguments;return new Promise((function(r,o){var u=e.apply(n,t);function a(e){i(u,r,o,a,c,"next",e)}function c(e){i(u,r,o,a,c,"throw",e)}a(void 0)}))}}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e,n,t){
|
|
1
|
+
!function(e,n){if("function"==typeof define&&define.amd)define("@merkur/core",["exports"],n);else if("undefined"!=typeof exports)n(exports);else{var t={exports:{}};n(t.exports),e.Merkur=e.Merkur||{},e.Merkur.Core=t.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){function n(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||t(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,n){if(e){if("string"==typeof e)return r(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,n):void 0}}function r(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,n,t,r,o,i,u){try{var a=e[i](u),c=a.value}catch(e){return void t(e)}a.done?n(c):Promise.resolve(c).then(r,o)}function u(e){return function(){var n=this,t=arguments;return new Promise((function(r,o){var u=e.apply(n,t);function a(e){i(u,r,o,a,c,"next",e)}function c(e){i(u,r,o,a,c,"throw",e)}a(void 0)}))}}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function f(e,n,t){var r;return r=function(e,n){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(n,"string"),(n="symbol"==o(r)?r:r+"")in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){return function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];return n.apply(void 0,[e].concat(r))}}function s(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=c({},e);return n.forEach((function(e){r[e]=r[e]||t})),r}function d(e,n){n=n||e,Object.keys(n).forEach((function(t){if(p(n[t])){var r=n[t];n[t]=l(e,r)}}))}function p(e){return"function"==typeof e}function y(e,n,t){return v.apply(this,arguments)}function v(){return(v=u((function*(e,r,o){var i,u=function(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=t(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,u=e},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw u}}}}(e.$plugins);try{for(u.s();!(i=u.n()).done;){var a=i.value;p(a[r])&&(e=yield a[r].apply(a,[e].concat(n(o))))}}catch(e){u.e(e)}finally{u.f()}return e}))).apply(this,arguments)}function b(){return b=u((function*(){var e=function(e){return c(c(c(c({},e),s(e,["containerSelector"],null)),s(e,["slot","$dependencies","$external"])),s(e,["setup","create"],(function(e){return e})))}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),n=e.setup,t=e.create,r={setup:function(e){var t=arguments;return u((function*(){for(var r=t.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=t[i];return e=yield y(e,"setup",o),n.apply(void 0,[e].concat(o))}))()},create:function(e){var n=arguments;return u((function*(){for(var r=n.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=n[i];return e=yield y(e,"create",o),t.apply(void 0,[e].concat(o))}))()},$plugins:(e.$plugins||[]).map((function(e){return e()}))};return r.name=e.name,r.version=e.version,r.$dependencies=e.$dependencies,r.$external=e.$external,r.$in={},delete e.name,delete e.version,delete e.$dependencies,delete e.$external,delete e.$plugins,delete e.setup,delete e.create,r=yield r.setup(r,e),d(r=yield r.create(r,e)),Object.seal(r),r})),b.apply(this,arguments)}function g(e){var n=e.name,t=e.version,r=e.createWidget;m().$in.widgetFactory[n+t]=r}function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=m(),t=e.name,r=e.version,o=n.$in.widgetFactory[t+r];if(!p(o))throw new Error('The widget with defined name and version "'.concat(t+r,'" is not defined.'));return o(e)}function m(){var e=O();return e.__merkur__||(e.__merkur__={$in:{widgets:[],widgetFactory:{}},$external:{},$dependencies:{},isRegistered:w,register:g,create:h}),e.__merkur__}function w(e){var n=m();return Boolean(Object.keys(n.$in.widgetFactory).find((function(n){return new RegExp("^".concat(e)).test(n)})))}function O(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}}Object.defineProperty(e,"__esModule",{value:!0}),e.assignMissingKeys=function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r<n;r++)t[r-1]=arguments[r];return t.forEach((function(n){Object.keys(n||{}).forEach((function(t){t in e||(e[t]=n[t])}))})),e},e.bindWidgetToFunctions=d,e.createMerkur=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.$plugins,t=void 0===n?[]:n,r=m();return t.forEach((function(e){e&&p(e.setup)&&e.setup(r)})),r},e.createMerkurWidget=function(){return b.apply(this,arguments)},e.defineWidget=function(e){return e},e.getMerkur=m,e.hookMethod=function(e,n,t){var r=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=n.split("."),r=t.pop(),o=t.reduce((function(e,n){return e[n]||{}}),e);if(!p(o[r]))throw new Error("Defined path '".concat(n,"' is incorrect. Check your widget structure."));return{target:o,methodName:r}}(e,n),o=r.target,i=r.methodName,u=l(e,o[i]);return o[i]=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return t.apply(void 0,[e,u].concat(r))},u},e.isFunction=p,e.removeMerkur=function(){delete O().__merkur__},e.setDefaultValueForUndefined=s}));
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merkur/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "Merkur is tiny and extensible library for creating front-end microservices.",
|
|
5
5
|
"main": "lib/index",
|
|
6
6
|
"module": "lib/index",
|
|
7
|
+
"types": "./types.d.ts",
|
|
7
8
|
"unpkg": "lib/index.umd.js",
|
|
8
9
|
"sideEffects": false,
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
12
|
+
"types": "./types.d.ts",
|
|
11
13
|
"import": "./lib/index.mjs",
|
|
12
14
|
"require": "./lib/index.cjs"
|
|
13
15
|
},
|
|
@@ -51,5 +53,5 @@
|
|
|
51
53
|
"access": "public"
|
|
52
54
|
},
|
|
53
55
|
"homepage": "https://merkur.js.org/",
|
|
54
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "383f29bdf67a7f4252876867687371a8d26f53f2"
|
|
55
57
|
}
|
package/tsconfig.json
ADDED
package/types.d.ts
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export interface BaseWidgetAsset {
|
|
2
|
+
type: 'stylesheet' | 'script' | 'inlineStyle';
|
|
3
|
+
optional?: boolean;
|
|
4
|
+
test?: string;
|
|
5
|
+
attr?: Record<string, string | boolean>;
|
|
6
|
+
}
|
|
7
|
+
export interface WidgetAsset extends BaseWidgetAsset {
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface SourceAsset extends BaseWidgetAsset {
|
|
12
|
+
source: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface WidgetDependencies {}
|
|
16
|
+
|
|
17
|
+
export interface Widget {
|
|
18
|
+
name: string;
|
|
19
|
+
version: string;
|
|
20
|
+
containerSelector?: string;
|
|
21
|
+
$in: WidgetInternal;
|
|
22
|
+
$external: WidgetExternal;
|
|
23
|
+
$dependencies: WidgetDependencies;
|
|
24
|
+
$plugins: WidgetPlugin[];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface WidgetProperties {
|
|
28
|
+
name: string;
|
|
29
|
+
version: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface WidgetDefinition {
|
|
33
|
+
assets: (WidgetAsset | SourceAsset)[];
|
|
34
|
+
$plugins?: Array<() => WidgetPlugin>;
|
|
35
|
+
$external: WidgetExternal;
|
|
36
|
+
$dependencies: WidgetDependencies;
|
|
37
|
+
create?: WidgetFunction;
|
|
38
|
+
setup?: WidgetFunction;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface WidgetParams {}
|
|
42
|
+
export interface WidgetInternal {}
|
|
43
|
+
export interface WidgetExternal {}
|
|
44
|
+
|
|
45
|
+
export interface WidgetPlugin {
|
|
46
|
+
create?: WidgetFunction;
|
|
47
|
+
setup?: WidgetFunction;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export type WidgetFunction = (
|
|
51
|
+
widget: Partial<Widget>,
|
|
52
|
+
...rest: unknown[]
|
|
53
|
+
) => Promise<Partial<Widget>> | Partial<Widget>;
|
|
54
|
+
|
|
55
|
+
export type MerkurCreate = (
|
|
56
|
+
widgetProperties: WidgetProperties,
|
|
57
|
+
) => Promise<Widget>;
|
|
58
|
+
|
|
59
|
+
export type WidgetCreate = (widgetParams: WidgetParams) => Promise<Widget>;
|
|
60
|
+
|
|
61
|
+
export interface Merkur {
|
|
62
|
+
$in: {
|
|
63
|
+
widgets: []; // TODO
|
|
64
|
+
widgetFactory: Record<string, MerkurCreate>;
|
|
65
|
+
};
|
|
66
|
+
$external: WidgetExternal;
|
|
67
|
+
$dependencies: WidgetDependencies;
|
|
68
|
+
create: MerkurCreate;
|
|
69
|
+
register: ({
|
|
70
|
+
name,
|
|
71
|
+
version,
|
|
72
|
+
createWidget,
|
|
73
|
+
}: {
|
|
74
|
+
name: string;
|
|
75
|
+
version: string;
|
|
76
|
+
createWidget: WidgetCreate;
|
|
77
|
+
}) => void;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Merkur API types
|
|
82
|
+
*/
|
|
83
|
+
export interface CreateMerkurWidgetArgs {}
|
|
84
|
+
export declare function createMerkurWidget<
|
|
85
|
+
T extends WidgetDefinition & CreateMerkurWidgetArgs,
|
|
86
|
+
>(widgetDefinition: T): Widget;
|
|
87
|
+
|
|
88
|
+
export interface DefineWidgetArgs {}
|
|
89
|
+
export declare function defineWidget<
|
|
90
|
+
T extends WidgetDefinition & WidgetProperties & DefineWidgetArgs,
|
|
91
|
+
>(widgetDefinition: T): T;
|
|
92
|
+
|
|
93
|
+
export declare function createMerkur(): Merkur;
|
|
94
|
+
export declare function hookMethod(
|
|
95
|
+
widget: Widget,
|
|
96
|
+
path: string,
|
|
97
|
+
handler: (widget: Widget, originalFunction: any, ...args: any[]) => any,
|
|
98
|
+
): Promise<void>;
|