@merkur/core 0.46.0 → 1.0.3
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/README.md +67 -22
- package/lib/index.cjs +1 -0
- package/lib/index.es9.cjs +1 -0
- package/lib/index.es9.mjs +1 -1
- package/lib/index.js +1 -0
- package/lib/index.mjs +1 -1
- package/lib/index.umd.js +1 -1
- package/package.json +3 -6
- package/types.d.ts +3 -2
package/README.md
CHANGED
|
@@ -38,8 +38,42 @@ To check out [live demo](https://merkur.js.org/demo) and [docs](https://merkur.j
|
|
|
38
38
|
|
|
39
39
|
Contribute to this project via [Pull-Requests](https://github.com/mjancarik/merkur/pulls).
|
|
40
40
|
|
|
41
|
-
We are
|
|
41
|
+
We are using [Changesets](https://github.com/changesets/changesets) for versioning and releasing. To add a changeset describing your changes, run `npm run changeset`.
|
|
42
42
|
|
|
43
|
+
> **Note:** The release process is documented **only** in this root README. Any per-package README sections that still describe a Lerna/Conventional Commits–based release flow are outdated and should be ignored in favour of the instructions below.
|
|
44
|
+
|
|
45
|
+
### Changeset format
|
|
46
|
+
|
|
47
|
+
Each changeset file (`.changeset/*.md`) must follow this structure:
|
|
48
|
+
|
|
49
|
+
**Frontmatter** — standard Changesets YAML listing affected package names and bump types (`patch`, `minor`, `major`).
|
|
50
|
+
|
|
51
|
+
**First line after frontmatter** — a single brief sentence summarising the change. No heading, no bold, no trailing bullet — just a plain declarative sentence. This section is not required but helps to quickly understand the change when browsing the changesets.
|
|
52
|
+
|
|
53
|
+
**Body** — three bullet points in this exact order, with no blank lines between them:
|
|
54
|
+
|
|
55
|
+
- **What** One or more sentences describing what changed: which APIs, files, or behaviours were added, removed, or fixed. Make sublists if needed to break down complex changes, but keep each bullet point as a single paragraph.
|
|
56
|
+
- **Why** One or more sentences explaining the motivation: why the change was necessary or beneficial.
|
|
57
|
+
- **How** Migration steps for consumers or contributors. If no action is required, write exactly: `Nothing.`
|
|
58
|
+
|
|
59
|
+
Additional rules:
|
|
60
|
+
- Each bullet is a single paragraph — no nested lists, no code blocks inside a bullet.
|
|
61
|
+
- Do not use headings (`##`, `###`) inside the body.
|
|
62
|
+
- Code symbols (function names, paths, package names) use backtick inline code.
|
|
63
|
+
|
|
64
|
+
Example:
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
---
|
|
68
|
+
"@merkur/example": minor
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
Add `createFoo` helper for simplified widget initialisation.
|
|
72
|
+
|
|
73
|
+
- **What** New `createFoo(options)` export in `@merkur/example` wraps the low-level `initFoo` call and applies sensible defaults for `name` and `version`.
|
|
74
|
+
- **Why** Every project was duplicating the same boilerplate to call `initFoo`; centralising it reduces setup friction and ensures consistent defaults.
|
|
75
|
+
- **How** Replace direct `initFoo` calls with `createFoo({ name, version })`. The returned object is API-compatible, so no further changes are needed.
|
|
76
|
+
```
|
|
43
77
|
|
|
44
78
|
### Release
|
|
45
79
|
|
|
@@ -48,32 +82,43 @@ To release a version you must have the right permissions, please contact one of
|
|
|
48
82
|
|
|
49
83
|
#### Regular version release
|
|
50
84
|
|
|
51
|
-
To do a regular release,
|
|
85
|
+
To do a regular release, from the `master` branch with no uncommitted changes, run:
|
|
52
86
|
|
|
53
87
|
```
|
|
54
88
|
npm run release
|
|
55
89
|
```
|
|
56
90
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
91
|
+
This runs `release:prepare` (applies pending changesets, bumps versions, updates `package-lock.json`) followed by `release:push` (commits, tags, and pushes to the repository).
|
|
92
|
+
|
|
93
|
+
Packages are published from a GitHub Action triggered when a new version tag is pushed.
|
|
94
|
+
|
|
95
|
+
#### RC (pre-release) release
|
|
96
|
+
|
|
97
|
+
1. Enter pre-release mode (only needs to be done once per RC cycle):
|
|
98
|
+
```
|
|
99
|
+
npm run release:next:init
|
|
100
|
+
```
|
|
101
|
+
This sets pre-release mode to `rc`, so subsequent version bumps produce `rc` versions (e.g. `v0.44.0-rc.0`).
|
|
102
|
+
|
|
103
|
+
2. Add a changeset describing your changes:
|
|
104
|
+
```
|
|
105
|
+
npm run changeset
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
3. Bump versions and push the RC release:
|
|
109
|
+
```
|
|
110
|
+
npm run release
|
|
111
|
+
```
|
|
112
|
+
Repeat steps 2–3 for each subsequent RC iteration (e.g. `rc.0 → rc.1`).
|
|
113
|
+
|
|
114
|
+
4. When ready to graduate to a stable release, exit pre-release mode and prepare the final version:
|
|
115
|
+
```
|
|
116
|
+
npm run release:graduate
|
|
117
|
+
```
|
|
118
|
+
Then push with:
|
|
119
|
+
```
|
|
120
|
+
npm run release:push
|
|
121
|
+
```
|
|
77
122
|
|
|
78
123
|
---
|
|
79
124
|
|
package/lib/index.cjs
CHANGED
|
@@ -216,5 +216,6 @@ exports.defineWidget = defineWidget;
|
|
|
216
216
|
exports.getMerkur = getMerkur;
|
|
217
217
|
exports.hookMethod = hookMethod;
|
|
218
218
|
exports.isFunction = isFunction;
|
|
219
|
+
exports.isRegistered = isRegistered;
|
|
219
220
|
exports.removeMerkur = removeMerkur;
|
|
220
221
|
exports.setDefaultValueForUndefined = setDefaultValueForUndefined;
|
package/lib/index.es9.cjs
CHANGED
|
@@ -213,5 +213,6 @@ exports.defineWidget = defineWidget;
|
|
|
213
213
|
exports.getMerkur = getMerkur;
|
|
214
214
|
exports.hookMethod = hookMethod;
|
|
215
215
|
exports.isFunction = isFunction;
|
|
216
|
+
exports.isRegistered = isRegistered;
|
|
216
217
|
exports.removeMerkur = removeMerkur;
|
|
217
218
|
exports.setDefaultValueForUndefined = setDefaultValueForUndefined;
|
package/lib/index.es9.mjs
CHANGED
|
@@ -203,4 +203,4 @@ function getGlobalContext() {
|
|
|
203
203
|
}
|
|
204
204
|
return {};
|
|
205
205
|
}
|
|
206
|
-
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, defineWidget, getMerkur, hookMethod, isFunction, removeMerkur, setDefaultValueForUndefined };
|
|
206
|
+
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, defineWidget, getMerkur, hookMethod, isFunction, isRegistered, removeMerkur, setDefaultValueForUndefined };
|
package/lib/index.js
CHANGED
|
@@ -216,5 +216,6 @@ exports.defineWidget = defineWidget;
|
|
|
216
216
|
exports.getMerkur = getMerkur;
|
|
217
217
|
exports.hookMethod = hookMethod;
|
|
218
218
|
exports.isFunction = isFunction;
|
|
219
|
+
exports.isRegistered = isRegistered;
|
|
219
220
|
exports.removeMerkur = removeMerkur;
|
|
220
221
|
exports.setDefaultValueForUndefined = setDefaultValueForUndefined;
|
package/lib/index.mjs
CHANGED
|
@@ -206,4 +206,4 @@ function getGlobalContext() {
|
|
|
206
206
|
return {};
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, defineWidget, getMerkur, hookMethod, isFunction, removeMerkur, setDefaultValueForUndefined };
|
|
209
|
+
export { assignMissingKeys, bindWidgetToFunctions, createMerkur, createMerkurWidget, defineWidget, getMerkur, hookMethod, isFunction, isRegistered, 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,
|
|
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={}.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=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 c=e[i](u),a=c.value}catch(e){return void t(e)}c.done?n(a):Promise.resolve(a).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 c(e){i(u,r,o,c,a,"next",e)}function a(e){i(u,r,o,c,a,"throw",e)}c(void 0)})}}function c(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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach(function(n){f(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function f(e,n,t){return(n=function(e){var n=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)}(e,"string");return"symbol"==o(n)?n:n+""}(n))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=a({},e);return n.forEach(function(e){r[e]=r[e]||function(e){try{return JSON.parse(JSON.stringify(e))}catch(n){return 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,c=!0,a=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){a=!0,u=e},f:function(){try{c||null==r.return||r.return()}finally{if(a)throw u}}}}(e.$plugins);try{for(u.s();!(i=u.n()).done;){var c=i.value;p(c[r])&&(e=yield c[r].apply(c,[e].concat(n(o))))}}catch(e){u.e(e)}finally{u.f()}return e})).apply(this,arguments)}function g(){return g=u(function*(){var e=function(e){return a(a(a(a({},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}),g.apply(this,arguments)}function b(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:b,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 g.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.isRegistered=w,e.removeMerkur=function(){delete O().__merkur__},e.setDefaultValueForUndefined=s});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merkur/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Merkur is tiny and extensible library for creating front-end microservices.",
|
|
5
5
|
"main": "lib/index",
|
|
6
6
|
"module": "lib/index",
|
|
@@ -23,11 +23,9 @@
|
|
|
23
23
|
"./lib/index.es9.mjs": "./lib/index.es9.mjs"
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
|
-
"preversion": "npm test",
|
|
27
26
|
"test": "jest --no-watchman -c ./jest.config.js",
|
|
28
27
|
"test:es:version": "es-check es11 ./lib/index.mjs --module && es-check es9 ./lib/index.es9.mjs --module && es-check es9 ./lib/index.es9.cjs --module",
|
|
29
|
-
"build": "rollup -c rollup.config.mjs"
|
|
30
|
-
"postpublish": "node ../../utils/restoreLatestTag.mjs"
|
|
28
|
+
"build": "rollup -c rollup.config.mjs"
|
|
31
29
|
},
|
|
32
30
|
"repository": {
|
|
33
31
|
"type": "git",
|
|
@@ -52,6 +50,5 @@
|
|
|
52
50
|
"registry": "https://registry.npmjs.org/",
|
|
53
51
|
"access": "public"
|
|
54
52
|
},
|
|
55
|
-
"homepage": "https://merkur.js.org/"
|
|
56
|
-
"gitHead": "87b662ef7cd7a84fc1724023607ef2cbbae2c811"
|
|
53
|
+
"homepage": "https://merkur.js.org/"
|
|
57
54
|
}
|
package/types.d.ts
CHANGED
|
@@ -69,12 +69,13 @@ export type WidgetCreate = (widgetParams: WidgetParams) => Promise<Widget>;
|
|
|
69
69
|
|
|
70
70
|
export interface Merkur {
|
|
71
71
|
$in: {
|
|
72
|
-
widgets: [];
|
|
72
|
+
widgets: Widget[];
|
|
73
73
|
widgetFactory: Record<string, MerkurCreate>;
|
|
74
74
|
};
|
|
75
75
|
$external: WidgetExternal;
|
|
76
76
|
$dependencies: WidgetDependencies;
|
|
77
77
|
create: MerkurCreate;
|
|
78
|
+
isRegistered: (name: string) => boolean;
|
|
78
79
|
register: ({
|
|
79
80
|
name,
|
|
80
81
|
version,
|
|
@@ -135,7 +136,7 @@ export declare function setDefaultValueForUndefined<T extends object>(
|
|
|
135
136
|
): T;
|
|
136
137
|
|
|
137
138
|
export declare function bindWidgetToFunctions(
|
|
138
|
-
widget:
|
|
139
|
+
widget: WidgetPartial,
|
|
139
140
|
target?: any,
|
|
140
141
|
): void;
|
|
141
142
|
|