oc 0.50.18 → 0.50.20
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/CHANGELOG.md +3 -0
- package/dist/cli/domain/get-mocked-plugins.d.ts +1 -0
- package/dist/cli/domain/get-mocked-plugins.js +4 -1
- package/dist/cli/facade/dev.d.ts +3 -2
- package/dist/components/oc-client/_package/package.json +4 -4
- package/dist/components/oc-client/_package/server.js +1 -1
- package/dist/components/oc-client/package.json +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/registry/domain/options-sanitiser.d.ts +1 -1
- package/dist/registry/domain/plugins-initialiser.d.ts +2 -3
- package/dist/registry/domain/plugins-initialiser.js +5 -4
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/middleware/index.js +2 -3
- package/dist/registry/routes/helpers/get-component.js +41 -1
- package/dist/registry/routes/plugins.js +2 -2
- package/dist/registry/views/index.js +2 -2
- package/dist/registry/views/info.js +1 -1
- package/dist/types.d.ts +53 -4
- package/logintervals.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
## Change Log
|
|
2
2
|
|
|
3
|
+
### v0.50.20
|
|
4
|
+
- [#1426](https://github.com/opencomponents/oc/pull/1426) plugins with context
|
|
5
|
+
|
|
3
6
|
### v0.50.18
|
|
4
7
|
- [#1425](https://github.com/opencomponents/oc/pull/1425) hide log calls
|
|
5
8
|
- [#1424](https://github.com/opencomponents/oc/pull/1424) add publisher field
|
|
@@ -22,6 +22,7 @@ const defaultRegister = (_options, _dependencies, next) => {
|
|
|
22
22
|
const registerStaticMocks = (mocks, logger) => Object.entries(mocks).map(([pluginName, mockedValue]) => {
|
|
23
23
|
logger.ok(`├── ${pluginName} () => ${mockedValue}`);
|
|
24
24
|
return {
|
|
25
|
+
context: false,
|
|
25
26
|
name: pluginName,
|
|
26
27
|
register: {
|
|
27
28
|
register: defaultRegister,
|
|
@@ -46,10 +47,12 @@ const registerDynamicMocks = (ocJsonLocation, mocks, logger) => Object.entries(m
|
|
|
46
47
|
}
|
|
47
48
|
const register = pluginMock.register || defaultRegister;
|
|
48
49
|
const execute = pluginMock.execute || pluginMock;
|
|
50
|
+
const context = pluginMock.context || false;
|
|
49
51
|
logger.ok(`├── ${pluginName} () => [Function]`);
|
|
50
52
|
return {
|
|
51
53
|
name: pluginName,
|
|
52
|
-
register: { execute, register }
|
|
54
|
+
register: { execute, register },
|
|
55
|
+
context
|
|
53
56
|
};
|
|
54
57
|
})
|
|
55
58
|
.filter((pluginMock) => !!pluginMock);
|
package/dist/cli/facade/dev.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as oc from '../../index';
|
|
1
2
|
import type { Local } from '../domain/local';
|
|
2
3
|
import type { Logger } from '../logger';
|
|
3
4
|
declare const dev: ({ local, logger }: {
|
|
@@ -65,7 +66,7 @@ declare const dev: ({ local, logger }: {
|
|
|
65
66
|
error: Error;
|
|
66
67
|
};
|
|
67
68
|
}[T]) => void) => void;
|
|
68
|
-
register: <T = any>(plugin:
|
|
69
|
+
register: <T = any>(plugin: oc.Plugin<T>, callback?: ((...args: any[]) => void) | undefined) => void;
|
|
69
70
|
start: (callback: (err: unknown, data?: {
|
|
70
71
|
app: import("express").Express;
|
|
71
72
|
server: import("http").Server;
|
|
@@ -133,7 +134,7 @@ declare const dev: ({ local, logger }: {
|
|
|
133
134
|
error: Error;
|
|
134
135
|
};
|
|
135
136
|
}[T]) => void) => void;
|
|
136
|
-
register: <T = any>(plugin:
|
|
137
|
+
register: <T = any>(plugin: oc.Plugin<T>, callback?: ((...args: any[]) => void) | undefined) => void;
|
|
137
138
|
start: (callback: (err: unknown, data?: {
|
|
138
139
|
app: import("express").Express;
|
|
139
140
|
server: import("http").Server;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oc-client",
|
|
3
3
|
"description": "The OpenComponents client-side javascript client",
|
|
4
|
-
"version": "0.50.
|
|
4
|
+
"version": "0.50.20",
|
|
5
5
|
"repository": "https://github.com/opencomponents/oc/tree/master/components/oc-client",
|
|
6
6
|
"author": "Matteo Figus <matteofigus@gmail.com>",
|
|
7
7
|
"oc": {
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
],
|
|
23
23
|
"dataProvider": {
|
|
24
24
|
"type": "node.js",
|
|
25
|
-
"hashKey": "
|
|
25
|
+
"hashKey": "6c04684995c79105e102a2b34156a266d131f858",
|
|
26
26
|
"src": "server.js",
|
|
27
27
|
"size": 613
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
|
-
"version": "0.50.
|
|
30
|
+
"version": "0.50.20",
|
|
31
31
|
"packaged": true,
|
|
32
|
-
"date":
|
|
32
|
+
"date": 1755405773468
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"oc-template-es6-compiler": "^1.0.1"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=(t,s)=>{const{staticPath:e,templates:a}=t;return s(null,{staticPath:e,templates:a})},o=(t,s)=>{r(t,(e,a)=>{if(e)return s(e);if(a==null)return s(null,{__oc_emptyResponse:!0});const n=t.action?a:Object.assign({},a,{_staticPath:t.staticPath,_baseUrl:t.baseUrl,_componentName:"oc-client",_componentVersion:"0.50.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=(t,s)=>{const{staticPath:e,templates:a}=t;return s(null,{staticPath:e,templates:a})},o=(t,s)=>{r(t,(e,a)=>{if(e)return s(e);if(a==null)return s(null,{__oc_emptyResponse:!0});const n=t.action?a:Object.assign({},a,{_staticPath:t.staticPath,_baseUrl:t.baseUrl,_componentName:"oc-client",_componentVersion:"0.50.20"}),c=t.staticPath.indexOf("http")===0?t.staticPath:"https:"+t.staticPath;return s(null,Object.assign({},{component:{key:"8b7545cba94f7c029b9d46108bfe8e4e6040ea09",src:c+"template.js",props:n}}))})};exports.data=o;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oc-client",
|
|
3
3
|
"description": "The OpenComponents client-side javascript client",
|
|
4
|
-
"version": "0.50.
|
|
4
|
+
"version": "0.50.20",
|
|
5
5
|
"repository": "https://github.com/opencomponents/oc/tree/master/components/oc-client",
|
|
6
6
|
"author": "Matteo Figus <matteofigus@gmail.com>",
|
|
7
7
|
"oc": {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { compileSync } from 'oc-client-browser';
|
|
2
2
|
import type { Config } from '../../types';
|
|
3
3
|
type CompileOptions = Omit<Exclude<Parameters<typeof compileSync>[0], undefined>, 'templates'>;
|
|
4
|
-
export interface RegistryOptions<T = any> extends Partial<Omit<Config<T>, 'beforePublish' | 'discovery'>> {
|
|
4
|
+
export interface RegistryOptions<T = any> extends Partial<Omit<Config<T>, 'beforePublish' | 'discovery' | 'plugins'>> {
|
|
5
5
|
/**
|
|
6
6
|
* Configuration object to enable/disable the HTML discovery page and the API
|
|
7
7
|
*
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
type
|
|
2
|
-
export declare function init(pluginsToRegister: unknown[]): Promise<
|
|
3
|
-
export {};
|
|
1
|
+
import type { Plugins } from '../../types';
|
|
2
|
+
export declare function init(pluginsToRegister: unknown[]): Promise<Plugins>;
|
|
@@ -74,10 +74,11 @@ async function init(pluginsToRegister) {
|
|
|
74
74
|
pluginCallback(err);
|
|
75
75
|
throw err;
|
|
76
76
|
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
registered[plugin.name] = {
|
|
78
|
+
handler: plugin.register.execute,
|
|
79
|
+
description: plugin.description || '',
|
|
80
|
+
context: plugin.context || false
|
|
81
|
+
};
|
|
81
82
|
pluginCallback();
|
|
82
83
|
};
|
|
83
84
|
const terminator = async () => {
|
package/dist/registry/index.d.ts
CHANGED
|
@@ -52,7 +52,7 @@ export default function registry<T = any>(inputOptions: RegistryOptions<T>): {
|
|
|
52
52
|
error: Error;
|
|
53
53
|
};
|
|
54
54
|
}[T_1]) => void) => void;
|
|
55
|
-
register: <T_1 = any>(plugin:
|
|
55
|
+
register: <T_1 = any>(plugin: Plugin<T_1>, callback?: (...args: any[]) => void) => void;
|
|
56
56
|
start: (callback: (err: unknown, data?: {
|
|
57
57
|
app: express.Express;
|
|
58
58
|
server: http.Server;
|
package/dist/registry/index.js
CHANGED
|
@@ -69,9 +69,9 @@ function registry(inputOptions) {
|
|
|
69
69
|
};
|
|
70
70
|
const start = async (callback) => {
|
|
71
71
|
const ok = (msg) => console.log(safe_1.default.green(msg));
|
|
72
|
-
(0, router_1.create)(app, options, repository);
|
|
73
72
|
try {
|
|
74
73
|
options.plugins = await pluginsInitialiser.init(plugins);
|
|
74
|
+
(0, router_1.create)(app, options, repository);
|
|
75
75
|
const componentsInfo = await repository.init();
|
|
76
76
|
await (0, app_start_1.default)(repository, options);
|
|
77
77
|
server = node_http_1.default.createServer(app);
|
|
@@ -41,10 +41,9 @@ const bind = (app, options) => {
|
|
|
41
41
|
app.use(discovery_handler_1.default);
|
|
42
42
|
if (options.verbosity) {
|
|
43
43
|
app.use((0, morgan_1.default)('dev', {
|
|
44
|
-
skip: (req) => {
|
|
44
|
+
skip: (req, res) => {
|
|
45
45
|
// Hide logging development console calls
|
|
46
|
-
return
|
|
47
|
-
req.url.startsWith('/~actions/$$__oc__server___console__$$'));
|
|
46
|
+
return req.url.startsWith(`${res.conf.prefix}~actions/$$__oc__server___console__$$`);
|
|
48
47
|
}
|
|
49
48
|
}));
|
|
50
49
|
}
|
|
@@ -62,12 +62,49 @@ const get_component_retrieving_info_1 = __importDefault(require("./get-component
|
|
|
62
62
|
exports.stream = Symbol('stream');
|
|
63
63
|
const noop = () => { };
|
|
64
64
|
const noopConsole = Object.fromEntries(Object.keys(console).map((key) => [key, noop]));
|
|
65
|
+
/**
|
|
66
|
+
* Converts the plugins to a function that returns a record of plugins with the context applied
|
|
67
|
+
* Caches the plugins without context and applies the context to the plugins that need it
|
|
68
|
+
* to avoid creating a new function for each component if possible
|
|
69
|
+
* @param plugins - The plugins to convert
|
|
70
|
+
* @returns A function that returns a record of plugins with the context applied
|
|
71
|
+
*/
|
|
72
|
+
function pluginConverter(plugins = {}) {
|
|
73
|
+
const pluginsMap = {
|
|
74
|
+
withoutContext: {},
|
|
75
|
+
withContext: {},
|
|
76
|
+
needsContext: false
|
|
77
|
+
};
|
|
78
|
+
for (const [name, { handler, context }] of Object.entries(plugins)) {
|
|
79
|
+
if (context) {
|
|
80
|
+
pluginsMap.withContext[name] = handler;
|
|
81
|
+
pluginsMap.needsContext = true;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
pluginsMap.withoutContext[name] = handler;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return (ctx) => {
|
|
88
|
+
if (!pluginsMap.needsContext) {
|
|
89
|
+
return pluginsMap.withoutContext;
|
|
90
|
+
}
|
|
91
|
+
const pluginsWithContextApplied = {};
|
|
92
|
+
for (const [name, handler] of Object.entries(pluginsMap.withContext)) {
|
|
93
|
+
pluginsWithContextApplied[name] = handler(ctx);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
...pluginsMap.withoutContext,
|
|
97
|
+
...pluginsWithContextApplied
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
}
|
|
65
101
|
function getComponent(conf, repository) {
|
|
66
102
|
const client = (0, oc_client_1.default)({ templates: conf.templates });
|
|
67
103
|
const cache = new nice_cache_1.default({
|
|
68
104
|
verbose: !!conf.verbosity,
|
|
69
105
|
refreshInterval: conf.refreshInterval
|
|
70
106
|
});
|
|
107
|
+
const convertPlugins = pluginConverter(conf.plugins);
|
|
71
108
|
const getEnv = async (component) => {
|
|
72
109
|
const cacheKey = `${component.name}/${component.version}/.env`;
|
|
73
110
|
const cached = cache.get('file-contents', cacheKey);
|
|
@@ -376,7 +413,10 @@ function getComponent(conf, repository) {
|
|
|
376
413
|
baseUrl: conf.baseUrl,
|
|
377
414
|
env: { ...conf.env, ...env },
|
|
378
415
|
params,
|
|
379
|
-
plugins:
|
|
416
|
+
plugins: convertPlugins({
|
|
417
|
+
name: component.name,
|
|
418
|
+
version: component.version
|
|
419
|
+
}),
|
|
380
420
|
renderComponent: (0, universalify_1.fromPromise)(nestedRenderer.renderComponent),
|
|
381
421
|
renderComponents: (0, universalify_1.fromPromise)(nestedRenderer.renderComponents),
|
|
382
422
|
requestHeaders: options.headers,
|
|
@@ -4,9 +4,9 @@ exports.default = plugins;
|
|
|
4
4
|
function plugins(conf) {
|
|
5
5
|
return (_req, res) => {
|
|
6
6
|
if (res.conf.discovery.ui) {
|
|
7
|
-
const plugins = Object.entries(conf.plugins).map(([pluginName,
|
|
7
|
+
const plugins = Object.entries(conf.plugins).map(([pluginName, plugin]) => ({
|
|
8
8
|
name: pluginName,
|
|
9
|
-
description:
|
|
9
|
+
description: plugin.description
|
|
10
10
|
}));
|
|
11
11
|
res.status(200).json(plugins);
|
|
12
12
|
}
|
|
@@ -19,8 +19,8 @@ function indexView(vm) {
|
|
|
19
19
|
const scripts = `<script>
|
|
20
20
|
var q = "${encodeURIComponent(vm.q)}", componentsList = ${JSON.stringify(vm.componentsList)};
|
|
21
21
|
${index_1.default}</script>`;
|
|
22
|
-
return ((0, jsx_runtime_1.jsxs)(layout_1.default, { scripts: scripts, href: vm.href, title: vm.title, children: [(0, jsx_runtime_1.jsx)(property_1.default, { display: "Base url", value: vm.href, linked: true }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Version", value: vm.ocVersion }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Components", value: `${vm.components.length} (${getCount('experimental')} experimental, ${getCount('deprecated')} deprecated)` }), !isLocal ? ((0, jsx_runtime_1.jsx)(property_1.default, { display: "Components releases", value: vm.componentsReleases })) : (''), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Registry type", value: isLocal ? 'Local dev registry' : 'On-line registry' }), (0, jsx_runtime_1.jsxs)("h2", { id: "menuList", children: [(0, jsx_runtime_1.jsx)("a", { href: "#components-list", class: "tab-link", children: "Components" }), !isLocal ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-history", class: "tab-link", children: "History" }), ' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-templates", class: "tab-link", children: "Available templates" }), ' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-dependencies", class: "tab-link", children: "Available dependencies" }), ' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-plugins", class: "tab-link", children: "Available plugins" })] })) : ('')] }), (0, jsx_runtime_1.jsx)(components_list_1.default, { type: vm.type, components: vm.components, stateCounts: vm.stateCounts }), (0, jsx_runtime_1.jsx)(components_history_1.default, {}), (0, jsx_runtime_1.jsx)(components_templates_1.default, { templates: vm.templates }), (0, jsx_runtime_1.jsx)(components_dependencies_1.default, { availableDependencies: vm.availableDependencies }), (0, jsx_runtime_1.jsx)(components_plugins_1.default, { availablePlugins: Object.fromEntries(Object.entries(vm.availablePlugins).map(([name,
|
|
22
|
+
return ((0, jsx_runtime_1.jsxs)(layout_1.default, { scripts: scripts, href: vm.href, title: vm.title, children: [(0, jsx_runtime_1.jsx)(property_1.default, { display: "Base url", value: vm.href, linked: true }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Version", value: vm.ocVersion }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Components", value: `${vm.components.length} (${getCount('experimental')} experimental, ${getCount('deprecated')} deprecated)` }), !isLocal ? ((0, jsx_runtime_1.jsx)(property_1.default, { display: "Components releases", value: vm.componentsReleases })) : (''), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Registry type", value: isLocal ? 'Local dev registry' : 'On-line registry' }), (0, jsx_runtime_1.jsxs)("h2", { id: "menuList", children: [(0, jsx_runtime_1.jsx)("a", { href: "#components-list", class: "tab-link", children: "Components" }), !isLocal ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-history", class: "tab-link", children: "History" }), ' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-templates", class: "tab-link", children: "Available templates" }), ' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-dependencies", class: "tab-link", children: "Available dependencies" }), ' | ', (0, jsx_runtime_1.jsx)("a", { href: "#components-plugins", class: "tab-link", children: "Available plugins" })] })) : ('')] }), (0, jsx_runtime_1.jsx)(components_list_1.default, { type: vm.type, components: vm.components, stateCounts: vm.stateCounts }), (0, jsx_runtime_1.jsx)(components_history_1.default, {}), (0, jsx_runtime_1.jsx)(components_templates_1.default, { templates: vm.templates }), (0, jsx_runtime_1.jsx)(components_dependencies_1.default, { availableDependencies: vm.availableDependencies }), (0, jsx_runtime_1.jsx)(components_plugins_1.default, { availablePlugins: Object.fromEntries(Object.entries(vm.availablePlugins).map(([name, { description }]) => [
|
|
23
23
|
name,
|
|
24
|
-
|
|
24
|
+
description
|
|
25
25
|
])) })] }));
|
|
26
26
|
}
|
|
@@ -111,5 +111,5 @@ function Info(vm) {
|
|
|
111
111
|
</script>
|
|
112
112
|
${statsAvailable ? statsJs(vm.component.name, vm.componentDetail) : ''}
|
|
113
113
|
`;
|
|
114
|
-
return ((0, jsx_runtime_1.jsxs)(layout_1.default, { scripts: scripts, href: href, title: vm.title, children: [(0, jsx_runtime_1.jsx)("a", { class: "back", href: href, children: "<< All components" }), (0, jsx_runtime_1.jsxs)("h2", { children: [component.name, " \u00A0", (0, jsx_runtime_1.jsx)(component_versions_1.default, { versions: component.allVersions, selectedVersion: component.version })] }), (0, jsx_runtime_1.jsxs)("p", { class: "w-100", children: [component.description, " ", componentState()] }), statsAvailable ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h3", { children: "Stats" }), (0, jsx_runtime_1.jsx)("canvas", { id: "stats", width: "400", height: "200" })] })) : (''), (0, jsx_runtime_1.jsx)("h3", { children: "Component Info" }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Repository", value: repositoryUrl || 'not available', linked: !!repositoryUrl }), (0, jsx_runtime_1.jsx)(component_author_1.default, { name: vm.parsedAuthor.name, email: vm.parsedAuthor.email, url: vm.parsedAuthor.url }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Publish date", value: publishDate }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Publish agent", value: publishAgent }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Template", value: template }), (0, jsx_runtime_1.jsx)(ShowArray, { title: "Node.js dependencies", arr: dependencies }), (0, jsx_runtime_1.jsx)(ShowArray, { title: "Plugin dependencies", arr: component.oc.plugins }), component.oc.files.template.size ? ((0, jsx_runtime_1.jsx)(property_1.default, { display: "Template size", value: `${Math.round(component.oc.files.template.size / 1024)} kb` })) : (''), (0, jsx_runtime_1.jsx)(component_parameters_1.default, { parameters: component.oc.parameters }), (0, jsx_runtime_1.jsx)("h3", { children: "Code" }), (0, jsx_runtime_1.jsxs)("p", { children: ["You can edit the following area and then", (0, jsx_runtime_1.jsxs)("a", { href: "#refresh", class: "refresh-preview", children: [' ', "refresh", ' '] }), "to apply the change into the preview window."] }), (0, jsx_runtime_1.jsx)("div", { class: "field", children: (0, jsx_runtime_1.jsx)("p", { children: "Component's href:" }) }), (0, jsx_runtime_1.jsx)("textarea", { class: "w-100", id: "href", placeholder: "Insert component href here",
|
|
114
|
+
return ((0, jsx_runtime_1.jsxs)(layout_1.default, { scripts: scripts, href: href, title: vm.title, children: [(0, jsx_runtime_1.jsx)("a", { class: "back", href: href, children: "<< All components" }), (0, jsx_runtime_1.jsxs)("h2", { children: [component.name, " \u00A0", (0, jsx_runtime_1.jsx)(component_versions_1.default, { versions: component.allVersions, selectedVersion: component.version })] }), (0, jsx_runtime_1.jsxs)("p", { class: "w-100", children: [component.description, " ", componentState()] }), statsAvailable ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h3", { children: "Stats" }), (0, jsx_runtime_1.jsx)("canvas", { id: "stats", width: "400", height: "200" })] })) : (''), (0, jsx_runtime_1.jsx)("h3", { children: "Component Info" }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Repository", value: repositoryUrl || 'not available', linked: !!repositoryUrl }), (0, jsx_runtime_1.jsx)(component_author_1.default, { name: vm.parsedAuthor.name, email: vm.parsedAuthor.email, url: vm.parsedAuthor.url }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Publish date", value: publishDate }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Publish agent", value: publishAgent }), (0, jsx_runtime_1.jsx)(property_1.default, { display: "Template", value: template }), (0, jsx_runtime_1.jsx)(ShowArray, { title: "Node.js dependencies", arr: dependencies }), (0, jsx_runtime_1.jsx)(ShowArray, { title: "Plugin dependencies", arr: component.oc.plugins }), component.oc.files.template.size ? ((0, jsx_runtime_1.jsx)(property_1.default, { display: "Template size", value: `${Math.round(component.oc.files.template.size / 1024)} kb` })) : (''), (0, jsx_runtime_1.jsx)(component_parameters_1.default, { parameters: component.oc.parameters }), (0, jsx_runtime_1.jsx)("h3", { children: "Code" }), (0, jsx_runtime_1.jsxs)("p", { children: ["You can edit the following area and then", (0, jsx_runtime_1.jsxs)("a", { href: "#refresh", class: "refresh-preview", children: [' ', "refresh", ' '] }), "to apply the change into the preview window."] }), (0, jsx_runtime_1.jsx)("div", { class: "field", children: (0, jsx_runtime_1.jsx)("p", { children: "Component's href:" }) }), (0, jsx_runtime_1.jsx)("textarea", { class: "w-100", id: "href", placeholder: "Insert component href here", children: componentHref }), (0, jsx_runtime_1.jsx)("div", { class: "field", children: (0, jsx_runtime_1.jsx)("p", { children: "Accept-Language header:" }) }), (0, jsx_runtime_1.jsx)("input", { class: "w-100", id: "lang", type: "text", value: "*", readonly: true }), (0, jsx_runtime_1.jsxs)("h3", { children: ["Preview ", '( ', (0, jsx_runtime_1.jsx)("a", { class: "refresh-preview", href: "#refresh", children: "Refresh" }), ' | ', (0, jsx_runtime_1.jsx)("a", { class: "open-preview", href: "#open", children: "Open" }), ' )'] }), (0, jsx_runtime_1.jsx)("iframe", { class: "preview", src: `~preview/${sandBoxDefaultQs}`, title: "Component Preview" })] }));
|
|
115
115
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -100,7 +100,7 @@ export interface VM {
|
|
|
100
100
|
version: string;
|
|
101
101
|
link: string;
|
|
102
102
|
}>;
|
|
103
|
-
availablePlugins:
|
|
103
|
+
availablePlugins: Plugins;
|
|
104
104
|
components: ParsedComponent[];
|
|
105
105
|
componentsList: ComponentList[];
|
|
106
106
|
componentsReleases: number;
|
|
@@ -272,7 +272,7 @@ export interface Config<T = any> {
|
|
|
272
272
|
* Collection of plugins initialised for this registry instance.
|
|
273
273
|
* Populated via `registry.register(...)`.
|
|
274
274
|
*/
|
|
275
|
-
plugins:
|
|
275
|
+
plugins: Plugins;
|
|
276
276
|
/**
|
|
277
277
|
* Seconds between each poll of the storage adapter for changes.
|
|
278
278
|
*
|
|
@@ -382,16 +382,65 @@ export interface Template {
|
|
|
382
382
|
getInfo: () => TemplateInfo;
|
|
383
383
|
render: (options: any, cb: (err: Error | null, data: string) => void) => void;
|
|
384
384
|
}
|
|
385
|
-
|
|
386
|
-
callback?: (error?: unknown) => void;
|
|
385
|
+
interface BasePLugin<T = any> {
|
|
387
386
|
description?: string;
|
|
388
387
|
name: string;
|
|
389
388
|
options?: T;
|
|
389
|
+
register: {
|
|
390
|
+
register: (options: T, dependencies: any, next: (error?: Error) => void) => void;
|
|
391
|
+
dependencies?: string[];
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* The context object passed to the plugin's execute function
|
|
396
|
+
*/
|
|
397
|
+
export type PluginContext = {
|
|
398
|
+
/**
|
|
399
|
+
* The name of the component calling the plugin
|
|
400
|
+
*/
|
|
401
|
+
name: string;
|
|
402
|
+
/**
|
|
403
|
+
* The version of the component calling the plugin
|
|
404
|
+
*/
|
|
405
|
+
version: string;
|
|
406
|
+
};
|
|
407
|
+
export type Plugin<T = any> = BasePLugin<T> & ({
|
|
408
|
+
/**
|
|
409
|
+
* When false or undefined, the plugin's execute function will be called directly.
|
|
410
|
+
* The execute function should accept any parameters and return any value.
|
|
411
|
+
*/
|
|
412
|
+
context?: false | undefined;
|
|
390
413
|
register: {
|
|
391
414
|
register: (options: T, dependencies: any, next: (error?: Error) => void) => void;
|
|
392
415
|
execute: (...args: any[]) => any;
|
|
393
416
|
dependencies?: string[];
|
|
394
417
|
};
|
|
418
|
+
} | {
|
|
419
|
+
/**
|
|
420
|
+
* When true, the plugin's execute function will be called with a context object containing
|
|
421
|
+
* the component name and version. It should return a function that accepts parameters and returns any value.
|
|
422
|
+
* @example
|
|
423
|
+
* ```ts
|
|
424
|
+
* {
|
|
425
|
+
* register: {
|
|
426
|
+
* execute: (...args: any[]) => any
|
|
427
|
+
* }
|
|
428
|
+
* }
|
|
429
|
+
* ```
|
|
430
|
+
*/
|
|
431
|
+
context: true;
|
|
432
|
+
register: {
|
|
433
|
+
register: (options: T, dependencies: any, next: (error?: Error) => void) => void;
|
|
434
|
+
execute: (context: PluginContext) => (params: any) => any;
|
|
435
|
+
dependencies?: string[];
|
|
436
|
+
};
|
|
437
|
+
});
|
|
438
|
+
export interface Plugins {
|
|
439
|
+
[pluginName: string]: {
|
|
440
|
+
handler: (...args: unknown[]) => void;
|
|
441
|
+
description: string;
|
|
442
|
+
context: boolean;
|
|
443
|
+
};
|
|
395
444
|
}
|
|
396
445
|
declare global {
|
|
397
446
|
namespace Express {
|
package/logintervals.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"to":"v0.50.18","from":"v0.50.17"},{"to":"v0.50.17","from":"v0.50.16"},{"to":"v0.50.16","from":"v0.50.15"},{"to":"v0.50.15","from":"v0.50.14"},{"to":"v0.50.14","from":"v0.50.13"},{"to":"v0.50.13","from":"v0.50.12"},{"to":"v0.50.12","from":"v0.50.11"},{"to":"v0.50.11","from":"v0.50.10"},{"to":"v0.50.10","from":"v0.50.9"},{"to":"v0.50.9","from":"v0.50.8"},{"to":"v0.50.8","from":"v0.50.7"},{"to":"v0.50.7","from":"v0.50.6"},{"to":"v0.50.6","from":"v0.50.5"},{"to":"v0.50.5","from":"v0.50.4"},{"to":"v0.50.4","from":"v0.50.3"},{"to":"v0.50.3","from":"v0.50.2"},{"to":"v0.50.2","from":"v0.50.1"},{"to":"v0.50.1","from":"v0.50.0"},{"to":"v0.50.0","from":"v0.49.67"},{"to":"v0.49.67","from":"v0.49.66"},{"to":"v0.49.66","from":"v0.49.65"},{"to":"v0.49.65","from":"v0.49.64"},{"to":"v0.49.64","from":"v0.49.63"},{"to":"v0.49.63","from":"v0.49.62"},{"to":"v0.49.62","from":"v0.49.61"},{"to":"v0.49.61","from":"v0.49.60"},{"to":"v0.49.60","from":"v0.49.59"},{"to":"v0.49.59","from":"v0.49.58"},{"to":"v0.49.58","from":"v0.49.57"},{"to":"v0.49.57","from":"v0.49.56"},{"to":"v0.49.56","from":"v0.49.55"},{"to":"v0.49.55","from":"v0.49.54"},{"to":"v0.49.54","from":"v0.49.53"},{"to":"v0.49.53","from":"v0.49.52"},{"to":"v0.49.52","from":"v0.49.51"},{"to":"v0.49.51","from":"v0.49.50"},{"to":"v0.49.50","from":"v0.49.49"},{"to":"v0.49.49","from":"v0.49.48"},{"to":"v0.49.48","from":"v0.49.47"},{"to":"v0.49.47","from":"v0.49.46"},{"to":"v0.49.46","from":"v0.49.45"},{"to":"v0.49.45","from":"v0.49.44"},{"to":"v0.49.44","from":"v0.49.43"},{"to":"v0.49.43","from":"v0.49.42"},{"to":"v0.49.42","from":"v0.49.41"},{"to":"v0.49.41","from":"v0.49.40"},{"to":"v0.49.40","from":"v0.49.39"},{"to":"v0.49.39","from":"v0.49.38"},{"to":"v0.49.38","from":"v0.49.37"},{"to":"v0.49.37","from":"v0.49.36"},{"to":"v0.49.36","from":"v0.49.35"},{"to":"v0.49.35","from":"v0.49.34"},{"to":"v0.49.34","from":"v0.49.32"},{"to":"v0.49.32","from":"v0.49.31"},{"to":"v0.49.31","from":"v0.49.30"},{"to":"v0.49.30","from":"v0.49.29"},{"to":"v0.49.29","from":"v0.49.28"},{"to":"v0.49.28","from":"v0.49.27"},{"to":"v0.49.27","from":"v0.49.26"},{"to":"v0.49.26","from":"v0.49.25"},{"to":"v0.49.25","from":"v0.49.24"},{"to":"v0.49.24","from":"v0.49.23"},{"to":"v0.49.23","from":"v0.49.22"},{"to":"v0.49.22","from":"v0.49.21"},{"to":"v0.49.21","from":"v0.49.20"},{"to":"v0.49.20","from":"v0.49.19"},{"to":"v0.49.19","from":"v0.49.18"},{"to":"v0.49.18","from":"v0.49.17"},{"to":"v0.49.17","from":"v0.49.16"},{"to":"v0.49.16","from":"v0.49.15"},{"to":"v0.49.15","from":"v0.49.14"},{"to":"v0.49.14","from":"v0.49.12"},{"to":"v0.49.12","from":"v0.49.11"},{"to":"v0.49.11","from":"v0.49.9"},{"to":"v0.49.9","from":"v0.49.8"},{"to":"v0.49.8","from":"v0.49.7"},{"to":"v0.49.7","from":"v0.49.6"},{"to":"v0.49.6","from":"v0.49.5"},{"to":"v0.49.5","from":"v0.49.4"},{"to":"v0.49.4","from":"v0.49.3"},{"to":"v0.49.3","from":"v0.49.2"},{"to":"v0.49.2","from":"v0.49.1"},{"to":"v0.49.1","from":"v0.49.0"},{"to":"v0.49.0","from":"v0.48.23"},{"to":"v0.48.23","from":"v0.48.22"},{"to":"v0.48.22","from":"v0.48.21"},{"to":"v0.48.21","from":"v0.48.19"},{"to":"v0.48.19","from":"v0.48.18"},{"to":"v0.48.18","from":"v0.48.17"},{"to":"v0.48.17","from":"v0.48.16"},{"to":"v0.48.16","from":"v0.48.15"},{"to":"v0.48.15","from":"v0.48.14"},{"to":"v0.48.14","from":"v0.48.13"},{"to":"v0.48.13","from":"v0.48.12"},{"to":"v0.48.12","from":"v0.48.11"},{"to":"v0.48.11","from":"v0.48.10"},{"to":"v0.48.10","from":"v0.48.9"},{"to":"v0.48.9","from":"v0.48.7"},{"to":"v0.48.7","from":"v0.48.6"},{"to":"v0.48.6","from":"v0.48.5"},{"to":"v0.48.5","from":"v0.48.4"},{"to":"v0.48.4","from":"v0.48.3"},{"to":"v0.48.3","from":"v0.48.2"},{"to":"v0.48.2","from":"v0.48.1"},{"to":"v0.48.1","from":"v0.48.0"},{"to":"v0.48.0","from":"v0.47.1"},{"to":"v0.47.1","from":"v0.47.0"},{"to":"v0.47.0","from":"v0.46.0"},{"to":"v0.46.0","from":"v0.45.4"},{"to":"v0.45.4","from":"v0.45.3"},{"to":"v0.45.3","from":"v0.45.2"},{"to":"v0.45.2","from":"v0.45.1"},{"to":"v0.45.1","from":"v0.45.0"},{"to":"v0.45.0","from":"v0.44.13"},{"to":"v0.44.13","from":"v0.44.12"},{"to":"v0.44.12","from":"v0.44.11"},{"to":"v0.44.11","from":"v0.44.10"},{"to":"v0.44.10","from":"v0.44.9"},{"to":"v0.44.9","from":"v0.44.8"},{"to":"v0.44.8","from":"v0.44.7"},{"to":"v0.44.7","from":"v0.44.6"},{"to":"v0.44.6","from":"v0.44.5"},{"to":"v0.44.5","from":"v0.44.4"},{"to":"v0.44.4","from":"v0.44.3"},{"to":"v0.44.3","from":"v0.44.2"},{"to":"v0.44.2","from":"v0.44.1"},{"to":"v0.44.1","from":"v0.44.0"},{"to":"v0.44.0","from":"v0.43.2"},{"to":"v0.43.2","from":"v0.43.1"},{"to":"v0.43.1","from":"v0.43.0"},{"to":"v0.43.0","from":"v0.42.26"},{"to":"v0.42.26","from":"v0.42.25"},{"to":"v0.42.25","from":"v0.42.24"},{"to":"v0.42.24","from":"v0.42.23"},{"to":"v0.42.23","from":"v0.42.22"},{"to":"v0.42.22","from":"v0.42.21"},{"to":"v0.42.21","from":"v0.42.20"},{"to":"v0.42.20","from":"v0.42.19"},{"to":"v0.42.19","from":"v0.42.18"},{"to":"v0.42.18","from":"v0.42.17"},{"to":"v0.42.17","from":"v0.42.16"},{"to":"v0.42.16","from":"v0.42.15"},{"to":"v0.42.15","from":"v0.42.14"},{"to":"v0.42.14","from":"v0.42.13"},{"to":"v0.42.13","from":"v0.42.12"},{"to":"v0.42.12","from":"v0.42.10"},{"to":"v0.42.10","from":"v0.42.9"},{"to":"v0.42.9","from":"v0.42.8"},{"to":"v0.42.8","from":"v0.42.7"},{"to":"v0.42.7","from":"v0.42.6"},{"to":"v0.42.6","from":"v0.42.5"},{"to":"v0.42.5","from":"v0.42.4"},{"to":"v0.42.4","from":"v0.42.3"},{"to":"v0.42.3","from":"v0.42.2"},{"to":"v0.42.2","from":"v0.42.1"},{"to":"v0.42.1","from":"v0.42.0"},{"to":"v0.42.0","from":"v0.41.16"},{"to":"v0.41.16","from":"v0.41.15"},{"to":"v0.41.15","from":"v0.41.14"},{"to":"v0.41.14","from":"v0.41.13"},{"to":"v0.41.13","from":"v0.41.12"},{"to":"v0.41.12","from":"v0.41.11"},{"to":"v0.41.11","from":"v0.41.10"},{"to":"v0.41.10","from":"v0.41.9"},{"to":"v0.41.9","from":"v0.41.8"},{"to":"v0.41.8","from":"v0.41.7"},{"to":"v0.41.7","from":"v0.41.6"},{"to":"v0.41.6","from":"v0.41.5"},{"to":"v0.41.5","from":"v0.41.4"},{"to":"v0.41.4","from":"v0.41.3"},{"to":"v0.41.3","from":"v0.41.2"},{"to":"v0.41.2","from":"v0.41.1"},{"to":"v0.41.1","from":"v0.41.0"},{"to":"v0.41.0","from":"v0.40.10"},{"to":"v0.40.10","from":"v0.40.9"},{"to":"v0.40.9","from":"v0.40.8"},{"to":"v0.40.8","from":"v0.40.7"},{"to":"v0.40.7","from":"v0.40.6"},{"to":"v0.40.6","from":"v0.40.5"},{"to":"v0.40.5","from":"v0.40.4"},{"to":"v0.40.4","from":"v0.40.3"},{"to":"v0.40.3","from":"v0.40.2"},{"to":"v0.40.2","from":"v0.40.1"},{"to":"v0.40.1","from":"v0.40.0"},{"to":"v0.40.0","from":"v0.39.8"},{"to":"v0.39.8","from":"v0.39.7"},{"to":"v0.39.7","from":"v0.39.6"},{"to":"v0.39.6","from":"v0.39.5"},{"to":"v0.39.5","from":"v0.39.4"},{"to":"v0.39.4","from":"v0.39.3"},{"to":"v0.39.3","from":"v0.39.2"},{"to":"v0.39.2","from":"v0.39.1"},{"to":"v0.39.1","from":"v0.39.0"},{"to":"v0.39.0","from":"v0.38.8"},{"to":"v0.38.8","from":"v0.38.7"},{"to":"v0.38.7","from":"v0.38.6"},{"to":"v0.38.6","from":"v0.38.5"},{"to":"v0.38.5","from":"v0.38.4"},{"to":"v0.38.4","from":"v0.38.3"},{"to":"v0.38.3","from":"v0.38.2"},{"to":"v0.38.2","from":"v0.38.1"},{"to":"v0.38.1","from":"v0.38.0"},{"to":"v0.38.0","from":"v0.37.11"},{"to":"v0.37.11","from":"v0.37.10"},{"to":"v0.37.10","from":"v0.37.9"},{"to":"v0.37.9","from":"v0.37.8"},{"to":"v0.37.8","from":"v0.37.7"},{"to":"v0.37.7","from":"v0.37.6"},{"to":"v0.37.6","from":"v0.37.5"},{"to":"v0.37.5","from":"v0.37.4"},{"to":"v0.37.4","from":"v0.37.3"},{"to":"v0.37.3","from":"v0.37.2"},{"to":"v0.37.2","from":"v0.37.1"},{"to":"v0.37.1","from":"v0.37.0"},{"to":"v0.37.0","from":"v0.36.28"},{"to":"v0.36.28","from":"v0.36.27"},{"to":"v0.36.27","from":"v0.36.26"},{"to":"v0.36.26","from":"v0.36.25"},{"to":"v0.36.25","from":"v0.36.24"},{"to":"v0.36.24","from":"v0.36.23"},{"to":"v0.36.23","from":"v0.36.22"},{"to":"v0.36.22","from":"v0.36.21"},{"to":"v0.36.21","from":"v0.36.20"},{"to":"v0.36.20","from":"v0.36.19"},{"to":"v0.36.19","from":"v0.36.18"},{"to":"v0.36.18","from":"v0.36.17"},{"to":"v0.36.17","from":"v0.36.16"},{"to":"v0.36.16","from":"v0.36.15"},{"to":"v0.36.15","from":"v0.36.14"},{"to":"v0.36.14","from":"v0.36.13"},{"to":"v0.36.13","from":"v0.36.12"},{"to":"v0.36.12","from":"v0.36.11"},{"to":"v0.36.11","from":"v0.36.10"},{"to":"v0.36.10","from":"v0.36.9"},{"to":"v0.36.9","from":"v0.36.8"},{"to":"v0.36.8","from":"v0.36.7"},{"to":"v0.36.7","from":"v0.36.6"},{"to":"v0.36.6","from":"v0.36.5"},{"to":"v0.36.5","from":"v0.36.4"},{"to":"v0.36.4","from":"v0.36.3"},{"to":"v0.36.3","from":"v0.36.2"},{"to":"v0.36.2","from":"v0.36.1"},{"to":"v0.36.1","from":"v0.36.0"},{"to":"v0.36.0","from":"v0.35.6"},{"to":"v0.35.6","from":"v0.35.5"},{"to":"v0.35.5","from":"v0.35.4"},{"to":"v0.35.4","from":"v0.35.3"},{"to":"v0.35.3","from":"v0.35.2"},{"to":"v0.35.2","from":"v0.35.1"},{"to":"v0.35.1","from":"v0.35.0"},{"to":"v0.35.0","from":"v0.34.8"},{"to":"v0.34.8","from":"v0.34.7"},{"to":"v0.34.7","from":"v0.34.6"},{"to":"v0.34.6","from":"v0.34.5"},{"to":"v0.34.5","from":"v0.34.4"},{"to":"v0.34.4","from":"v0.34.3"},{"to":"v0.34.3","from":"v0.34.2"},{"to":"v0.34.2","from":"v0.34.1"},{"to":"v0.34.1","from":"v0.34.0"},{"to":"v0.34.0","from":"v0.33.31"},{"to":"v0.33.31","from":"v0.33.30"},{"to":"v0.33.30","from":"v0.33.29"},{"to":"v0.33.29","from":"v0.33.28"},{"to":"v0.33.28","from":"v0.33.27"},{"to":"v0.33.27","from":"v0.33.26"},{"to":"v0.33.26","from":"v0.33.25"},{"to":"v0.33.25","from":"v0.33.24"},{"to":"v0.33.24","from":"v0.33.23"},{"to":"v0.33.23","from":"v0.33.22"},{"to":"v0.33.22","from":"v0.33.21"},{"to":"v0.33.21","from":"v0.33.20"},{"to":"v0.33.20","from":"v0.33.19"},{"to":"v0.33.19","from":"v0.33.18"},{"to":"v0.33.18","from":"v0.33.17"},{"to":"v0.33.17","from":"v0.33.16"},{"to":"v0.33.16","from":"v0.33.15"},{"to":"v0.33.15","from":"v0.33.14"},{"to":"v0.33.14","from":"v0.33.13"},{"to":"v0.33.13","from":"v0.33.12"},{"to":"v0.33.12","from":"v0.33.11"},{"to":"v0.33.11","from":"v0.33.10"},{"to":"v0.33.10","from":"v0.33.9"},{"to":"v0.33.9","from":"v0.33.8"},{"to":"v0.33.8","from":"v0.33.7"},{"to":"v0.33.7","from":"v0.33.6"},{"to":"v0.33.6","from":"v0.33.5"},{"to":"v0.33.5","from":"v0.33.4"},{"to":"v0.33.4","from":"v0.33.3"},{"to":"v0.33.3","from":"v0.33.2"},{"to":"v0.33.2","from":"v0.33.1"},{"to":"v0.33.1","from":"v0.33.0"},{"to":"v0.33.0","from":"v0.32.6"},{"to":"v0.32.6","from":"v0.32.5"},{"to":"v0.32.5","from":"v0.32.4"},{"to":"v0.32.4","from":"v0.32.3"},{"to":"v0.32.3","from":"v0.32.2"},{"to":"v0.32.2","from":"v0.32.1"},{"to":"v0.32.1","from":"v0.32.0"},{"to":"v0.32.0","from":"v0.31.2"},{"to":"v0.31.2","from":"v0.31.1"},{"to":"v0.31.1","from":"v0.31.0"},{"to":"v0.31.0","from":"v0.30.9"},{"to":"v0.30.9","from":"v0.30.8"},{"to":"v0.30.8","from":"v0.30.7"},{"to":"v0.30.7","from":"v0.30.6"},{"to":"v0.30.6","from":"v0.30.5"},{"to":"v0.30.5","from":"v0.30.4"},{"to":"v0.30.4","from":"v0.30.3"},{"to":"v0.30.3","from":"v0.30.2"},{"to":"v0.30.2","from":"v0.30.1"},{"to":"v0.30.1","from":"v0.30.0"},{"to":"v0.30.0","from":"v0.29.4"},{"to":"v0.29.4","from":"v0.29.3"},{"to":"v0.29.3","from":"v0.29.2"},{"to":"v0.29.2","from":"v0.29.1"},{"to":"v0.29.1","from":"v0.29.0"},{"to":"v0.29.0","from":"v0.28.9"},{"to":"v0.28.9","from":"v0.28.8"},{"to":"v0.28.8","from":"v0.28.7"},{"to":"v0.28.7","from":"v0.28.6"},{"to":"v0.28.6","from":"v0.28.5"},{"to":"v0.28.5","from":"v0.28.4"},{"to":"v0.28.4","from":"v0.28.3"},{"to":"v0.28.3","from":"v0.28.2"},{"to":"v0.28.2","from":"v0.28.1"},{"to":"v0.28.1","from":"v0.28.0"},{"to":"v0.28.0","from":"v0.27.9"},{"to":"v0.27.9","from":"v0.27.8"},{"to":"v0.27.8","from":"v0.27.7"},{"to":"v0.27.7","from":"v0.27.6"},{"to":"v0.27.6","from":"v0.27.5"},{"to":"v0.27.5","from":"v0.27.4"},{"to":"v0.27.4","from":"v0.27.3"},{"to":"v0.27.3","from":"v0.27.2"},{"to":"v0.27.2","from":"v0.27.1"},{"to":"v0.27.1","from":"v0.27.0"},{"to":"v0.27.0","from":"v0.26.2"},{"to":"v0.26.2","from":"v0.26.1"},{"to":"v0.26.1","from":"v0.26.0"},{"to":"v0.26.0","from":"v0.25.0"},{"to":"v0.25.0","from":"v0.24.1"},{"to":"v0.24.1","from":"v0.24.0"},{"to":"v0.24.0","from":"v0.23.7"},{"to":"v0.23.7","from":"v0.23.6"},{"to":"v0.23.6","from":"v0.23.5"},{"to":"v0.23.5","from":"v0.23.4"},{"to":"v0.23.4","from":"v0.23.3"},{"to":"v0.23.3","from":"v0.23.2"},{"to":"v0.23.2","from":"v0.23.1"},{"to":"v0.23.1","from":"v0.23.0"},{"to":"v0.23.0","from":"v0.22.3"},{"to":"v0.22.3","from":"v0.22.2"},{"to":"v0.22.2","from":"v0.22.1"},{"to":"v0.22.1","from":"v0.22.0"},{"to":"v0.22.0","from":"v0.21.0"},{"to":"v0.21.0","from":"v0.20.5"},{"to":"v0.20.5","from":"v0.20.4"},{"to":"v0.20.4","from":"v0.20.3"},{"to":"v0.20.3","from":"v0.20.2"},{"to":"v0.20.2","from":"v0.20.1"},{"to":"v0.20.1","from":"v0.20.0"},{"to":"v0.20.0","from":"v0.19.5"},{"to":"v0.19.5","from":"v0.19.4"},{"to":"v0.19.4","from":"v0.19.3"},{"to":"v0.19.3","from":"v0.19.2"},{"to":"v0.19.2","from":"v0.19.1"},{"to":"v0.19.1","from":"v0.19.0"},{"to":"v0.19.0","from":"6181a540729a7179d7a9d41489dfc241335cf1b5"}]
|
|
1
|
+
[{"to":"v0.50.20","from":"v0.50.18"},{"to":"v0.50.18","from":"v0.50.17"},{"to":"v0.50.17","from":"v0.50.16"},{"to":"v0.50.16","from":"v0.50.15"},{"to":"v0.50.15","from":"v0.50.14"},{"to":"v0.50.14","from":"v0.50.13"},{"to":"v0.50.13","from":"v0.50.12"},{"to":"v0.50.12","from":"v0.50.11"},{"to":"v0.50.11","from":"v0.50.10"},{"to":"v0.50.10","from":"v0.50.9"},{"to":"v0.50.9","from":"v0.50.8"},{"to":"v0.50.8","from":"v0.50.7"},{"to":"v0.50.7","from":"v0.50.6"},{"to":"v0.50.6","from":"v0.50.5"},{"to":"v0.50.5","from":"v0.50.4"},{"to":"v0.50.4","from":"v0.50.3"},{"to":"v0.50.3","from":"v0.50.2"},{"to":"v0.50.2","from":"v0.50.1"},{"to":"v0.50.1","from":"v0.50.0"},{"to":"v0.50.0","from":"v0.49.67"},{"to":"v0.49.67","from":"v0.49.66"},{"to":"v0.49.66","from":"v0.49.65"},{"to":"v0.49.65","from":"v0.49.64"},{"to":"v0.49.64","from":"v0.49.63"},{"to":"v0.49.63","from":"v0.49.62"},{"to":"v0.49.62","from":"v0.49.61"},{"to":"v0.49.61","from":"v0.49.60"},{"to":"v0.49.60","from":"v0.49.59"},{"to":"v0.49.59","from":"v0.49.58"},{"to":"v0.49.58","from":"v0.49.57"},{"to":"v0.49.57","from":"v0.49.56"},{"to":"v0.49.56","from":"v0.49.55"},{"to":"v0.49.55","from":"v0.49.54"},{"to":"v0.49.54","from":"v0.49.53"},{"to":"v0.49.53","from":"v0.49.52"},{"to":"v0.49.52","from":"v0.49.51"},{"to":"v0.49.51","from":"v0.49.50"},{"to":"v0.49.50","from":"v0.49.49"},{"to":"v0.49.49","from":"v0.49.48"},{"to":"v0.49.48","from":"v0.49.47"},{"to":"v0.49.47","from":"v0.49.46"},{"to":"v0.49.46","from":"v0.49.45"},{"to":"v0.49.45","from":"v0.49.44"},{"to":"v0.49.44","from":"v0.49.43"},{"to":"v0.49.43","from":"v0.49.42"},{"to":"v0.49.42","from":"v0.49.41"},{"to":"v0.49.41","from":"v0.49.40"},{"to":"v0.49.40","from":"v0.49.39"},{"to":"v0.49.39","from":"v0.49.38"},{"to":"v0.49.38","from":"v0.49.37"},{"to":"v0.49.37","from":"v0.49.36"},{"to":"v0.49.36","from":"v0.49.35"},{"to":"v0.49.35","from":"v0.49.34"},{"to":"v0.49.34","from":"v0.49.32"},{"to":"v0.49.32","from":"v0.49.31"},{"to":"v0.49.31","from":"v0.49.30"},{"to":"v0.49.30","from":"v0.49.29"},{"to":"v0.49.29","from":"v0.49.28"},{"to":"v0.49.28","from":"v0.49.27"},{"to":"v0.49.27","from":"v0.49.26"},{"to":"v0.49.26","from":"v0.49.25"},{"to":"v0.49.25","from":"v0.49.24"},{"to":"v0.49.24","from":"v0.49.23"},{"to":"v0.49.23","from":"v0.49.22"},{"to":"v0.49.22","from":"v0.49.21"},{"to":"v0.49.21","from":"v0.49.20"},{"to":"v0.49.20","from":"v0.49.19"},{"to":"v0.49.19","from":"v0.49.18"},{"to":"v0.49.18","from":"v0.49.17"},{"to":"v0.49.17","from":"v0.49.16"},{"to":"v0.49.16","from":"v0.49.15"},{"to":"v0.49.15","from":"v0.49.14"},{"to":"v0.49.14","from":"v0.49.12"},{"to":"v0.49.12","from":"v0.49.11"},{"to":"v0.49.11","from":"v0.49.9"},{"to":"v0.49.9","from":"v0.49.8"},{"to":"v0.49.8","from":"v0.49.7"},{"to":"v0.49.7","from":"v0.49.6"},{"to":"v0.49.6","from":"v0.49.5"},{"to":"v0.49.5","from":"v0.49.4"},{"to":"v0.49.4","from":"v0.49.3"},{"to":"v0.49.3","from":"v0.49.2"},{"to":"v0.49.2","from":"v0.49.1"},{"to":"v0.49.1","from":"v0.49.0"},{"to":"v0.49.0","from":"v0.48.23"},{"to":"v0.48.23","from":"v0.48.22"},{"to":"v0.48.22","from":"v0.48.21"},{"to":"v0.48.21","from":"v0.48.19"},{"to":"v0.48.19","from":"v0.48.18"},{"to":"v0.48.18","from":"v0.48.17"},{"to":"v0.48.17","from":"v0.48.16"},{"to":"v0.48.16","from":"v0.48.15"},{"to":"v0.48.15","from":"v0.48.14"},{"to":"v0.48.14","from":"v0.48.13"},{"to":"v0.48.13","from":"v0.48.12"},{"to":"v0.48.12","from":"v0.48.11"},{"to":"v0.48.11","from":"v0.48.10"},{"to":"v0.48.10","from":"v0.48.9"},{"to":"v0.48.9","from":"v0.48.7"},{"to":"v0.48.7","from":"v0.48.6"},{"to":"v0.48.6","from":"v0.48.5"},{"to":"v0.48.5","from":"v0.48.4"},{"to":"v0.48.4","from":"v0.48.3"},{"to":"v0.48.3","from":"v0.48.2"},{"to":"v0.48.2","from":"v0.48.1"},{"to":"v0.48.1","from":"v0.48.0"},{"to":"v0.48.0","from":"v0.47.1"},{"to":"v0.47.1","from":"v0.47.0"},{"to":"v0.47.0","from":"v0.46.0"},{"to":"v0.46.0","from":"v0.45.4"},{"to":"v0.45.4","from":"v0.45.3"},{"to":"v0.45.3","from":"v0.45.2"},{"to":"v0.45.2","from":"v0.45.1"},{"to":"v0.45.1","from":"v0.45.0"},{"to":"v0.45.0","from":"v0.44.13"},{"to":"v0.44.13","from":"v0.44.12"},{"to":"v0.44.12","from":"v0.44.11"},{"to":"v0.44.11","from":"v0.44.10"},{"to":"v0.44.10","from":"v0.44.9"},{"to":"v0.44.9","from":"v0.44.8"},{"to":"v0.44.8","from":"v0.44.7"},{"to":"v0.44.7","from":"v0.44.6"},{"to":"v0.44.6","from":"v0.44.5"},{"to":"v0.44.5","from":"v0.44.4"},{"to":"v0.44.4","from":"v0.44.3"},{"to":"v0.44.3","from":"v0.44.2"},{"to":"v0.44.2","from":"v0.44.1"},{"to":"v0.44.1","from":"v0.44.0"},{"to":"v0.44.0","from":"v0.43.2"},{"to":"v0.43.2","from":"v0.43.1"},{"to":"v0.43.1","from":"v0.43.0"},{"to":"v0.43.0","from":"v0.42.26"},{"to":"v0.42.26","from":"v0.42.25"},{"to":"v0.42.25","from":"v0.42.24"},{"to":"v0.42.24","from":"v0.42.23"},{"to":"v0.42.23","from":"v0.42.22"},{"to":"v0.42.22","from":"v0.42.21"},{"to":"v0.42.21","from":"v0.42.20"},{"to":"v0.42.20","from":"v0.42.19"},{"to":"v0.42.19","from":"v0.42.18"},{"to":"v0.42.18","from":"v0.42.17"},{"to":"v0.42.17","from":"v0.42.16"},{"to":"v0.42.16","from":"v0.42.15"},{"to":"v0.42.15","from":"v0.42.14"},{"to":"v0.42.14","from":"v0.42.13"},{"to":"v0.42.13","from":"v0.42.12"},{"to":"v0.42.12","from":"v0.42.10"},{"to":"v0.42.10","from":"v0.42.9"},{"to":"v0.42.9","from":"v0.42.8"},{"to":"v0.42.8","from":"v0.42.7"},{"to":"v0.42.7","from":"v0.42.6"},{"to":"v0.42.6","from":"v0.42.5"},{"to":"v0.42.5","from":"v0.42.4"},{"to":"v0.42.4","from":"v0.42.3"},{"to":"v0.42.3","from":"v0.42.2"},{"to":"v0.42.2","from":"v0.42.1"},{"to":"v0.42.1","from":"v0.42.0"},{"to":"v0.42.0","from":"v0.41.16"},{"to":"v0.41.16","from":"v0.41.15"},{"to":"v0.41.15","from":"v0.41.14"},{"to":"v0.41.14","from":"v0.41.13"},{"to":"v0.41.13","from":"v0.41.12"},{"to":"v0.41.12","from":"v0.41.11"},{"to":"v0.41.11","from":"v0.41.10"},{"to":"v0.41.10","from":"v0.41.9"},{"to":"v0.41.9","from":"v0.41.8"},{"to":"v0.41.8","from":"v0.41.7"},{"to":"v0.41.7","from":"v0.41.6"},{"to":"v0.41.6","from":"v0.41.5"},{"to":"v0.41.5","from":"v0.41.4"},{"to":"v0.41.4","from":"v0.41.3"},{"to":"v0.41.3","from":"v0.41.2"},{"to":"v0.41.2","from":"v0.41.1"},{"to":"v0.41.1","from":"v0.41.0"},{"to":"v0.41.0","from":"v0.40.10"},{"to":"v0.40.10","from":"v0.40.9"},{"to":"v0.40.9","from":"v0.40.8"},{"to":"v0.40.8","from":"v0.40.7"},{"to":"v0.40.7","from":"v0.40.6"},{"to":"v0.40.6","from":"v0.40.5"},{"to":"v0.40.5","from":"v0.40.4"},{"to":"v0.40.4","from":"v0.40.3"},{"to":"v0.40.3","from":"v0.40.2"},{"to":"v0.40.2","from":"v0.40.1"},{"to":"v0.40.1","from":"v0.40.0"},{"to":"v0.40.0","from":"v0.39.8"},{"to":"v0.39.8","from":"v0.39.7"},{"to":"v0.39.7","from":"v0.39.6"},{"to":"v0.39.6","from":"v0.39.5"},{"to":"v0.39.5","from":"v0.39.4"},{"to":"v0.39.4","from":"v0.39.3"},{"to":"v0.39.3","from":"v0.39.2"},{"to":"v0.39.2","from":"v0.39.1"},{"to":"v0.39.1","from":"v0.39.0"},{"to":"v0.39.0","from":"v0.38.8"},{"to":"v0.38.8","from":"v0.38.7"},{"to":"v0.38.7","from":"v0.38.6"},{"to":"v0.38.6","from":"v0.38.5"},{"to":"v0.38.5","from":"v0.38.4"},{"to":"v0.38.4","from":"v0.38.3"},{"to":"v0.38.3","from":"v0.38.2"},{"to":"v0.38.2","from":"v0.38.1"},{"to":"v0.38.1","from":"v0.38.0"},{"to":"v0.38.0","from":"v0.37.11"},{"to":"v0.37.11","from":"v0.37.10"},{"to":"v0.37.10","from":"v0.37.9"},{"to":"v0.37.9","from":"v0.37.8"},{"to":"v0.37.8","from":"v0.37.7"},{"to":"v0.37.7","from":"v0.37.6"},{"to":"v0.37.6","from":"v0.37.5"},{"to":"v0.37.5","from":"v0.37.4"},{"to":"v0.37.4","from":"v0.37.3"},{"to":"v0.37.3","from":"v0.37.2"},{"to":"v0.37.2","from":"v0.37.1"},{"to":"v0.37.1","from":"v0.37.0"},{"to":"v0.37.0","from":"v0.36.28"},{"to":"v0.36.28","from":"v0.36.27"},{"to":"v0.36.27","from":"v0.36.26"},{"to":"v0.36.26","from":"v0.36.25"},{"to":"v0.36.25","from":"v0.36.24"},{"to":"v0.36.24","from":"v0.36.23"},{"to":"v0.36.23","from":"v0.36.22"},{"to":"v0.36.22","from":"v0.36.21"},{"to":"v0.36.21","from":"v0.36.20"},{"to":"v0.36.20","from":"v0.36.19"},{"to":"v0.36.19","from":"v0.36.18"},{"to":"v0.36.18","from":"v0.36.17"},{"to":"v0.36.17","from":"v0.36.16"},{"to":"v0.36.16","from":"v0.36.15"},{"to":"v0.36.15","from":"v0.36.14"},{"to":"v0.36.14","from":"v0.36.13"},{"to":"v0.36.13","from":"v0.36.12"},{"to":"v0.36.12","from":"v0.36.11"},{"to":"v0.36.11","from":"v0.36.10"},{"to":"v0.36.10","from":"v0.36.9"},{"to":"v0.36.9","from":"v0.36.8"},{"to":"v0.36.8","from":"v0.36.7"},{"to":"v0.36.7","from":"v0.36.6"},{"to":"v0.36.6","from":"v0.36.5"},{"to":"v0.36.5","from":"v0.36.4"},{"to":"v0.36.4","from":"v0.36.3"},{"to":"v0.36.3","from":"v0.36.2"},{"to":"v0.36.2","from":"v0.36.1"},{"to":"v0.36.1","from":"v0.36.0"},{"to":"v0.36.0","from":"v0.35.6"},{"to":"v0.35.6","from":"v0.35.5"},{"to":"v0.35.5","from":"v0.35.4"},{"to":"v0.35.4","from":"v0.35.3"},{"to":"v0.35.3","from":"v0.35.2"},{"to":"v0.35.2","from":"v0.35.1"},{"to":"v0.35.1","from":"v0.35.0"},{"to":"v0.35.0","from":"v0.34.8"},{"to":"v0.34.8","from":"v0.34.7"},{"to":"v0.34.7","from":"v0.34.6"},{"to":"v0.34.6","from":"v0.34.5"},{"to":"v0.34.5","from":"v0.34.4"},{"to":"v0.34.4","from":"v0.34.3"},{"to":"v0.34.3","from":"v0.34.2"},{"to":"v0.34.2","from":"v0.34.1"},{"to":"v0.34.1","from":"v0.34.0"},{"to":"v0.34.0","from":"v0.33.31"},{"to":"v0.33.31","from":"v0.33.30"},{"to":"v0.33.30","from":"v0.33.29"},{"to":"v0.33.29","from":"v0.33.28"},{"to":"v0.33.28","from":"v0.33.27"},{"to":"v0.33.27","from":"v0.33.26"},{"to":"v0.33.26","from":"v0.33.25"},{"to":"v0.33.25","from":"v0.33.24"},{"to":"v0.33.24","from":"v0.33.23"},{"to":"v0.33.23","from":"v0.33.22"},{"to":"v0.33.22","from":"v0.33.21"},{"to":"v0.33.21","from":"v0.33.20"},{"to":"v0.33.20","from":"v0.33.19"},{"to":"v0.33.19","from":"v0.33.18"},{"to":"v0.33.18","from":"v0.33.17"},{"to":"v0.33.17","from":"v0.33.16"},{"to":"v0.33.16","from":"v0.33.15"},{"to":"v0.33.15","from":"v0.33.14"},{"to":"v0.33.14","from":"v0.33.13"},{"to":"v0.33.13","from":"v0.33.12"},{"to":"v0.33.12","from":"v0.33.11"},{"to":"v0.33.11","from":"v0.33.10"},{"to":"v0.33.10","from":"v0.33.9"},{"to":"v0.33.9","from":"v0.33.8"},{"to":"v0.33.8","from":"v0.33.7"},{"to":"v0.33.7","from":"v0.33.6"},{"to":"v0.33.6","from":"v0.33.5"},{"to":"v0.33.5","from":"v0.33.4"},{"to":"v0.33.4","from":"v0.33.3"},{"to":"v0.33.3","from":"v0.33.2"},{"to":"v0.33.2","from":"v0.33.1"},{"to":"v0.33.1","from":"v0.33.0"},{"to":"v0.33.0","from":"v0.32.6"},{"to":"v0.32.6","from":"v0.32.5"},{"to":"v0.32.5","from":"v0.32.4"},{"to":"v0.32.4","from":"v0.32.3"},{"to":"v0.32.3","from":"v0.32.2"},{"to":"v0.32.2","from":"v0.32.1"},{"to":"v0.32.1","from":"v0.32.0"},{"to":"v0.32.0","from":"v0.31.2"},{"to":"v0.31.2","from":"v0.31.1"},{"to":"v0.31.1","from":"v0.31.0"},{"to":"v0.31.0","from":"v0.30.9"},{"to":"v0.30.9","from":"v0.30.8"},{"to":"v0.30.8","from":"v0.30.7"},{"to":"v0.30.7","from":"v0.30.6"},{"to":"v0.30.6","from":"v0.30.5"},{"to":"v0.30.5","from":"v0.30.4"},{"to":"v0.30.4","from":"v0.30.3"},{"to":"v0.30.3","from":"v0.30.2"},{"to":"v0.30.2","from":"v0.30.1"},{"to":"v0.30.1","from":"v0.30.0"},{"to":"v0.30.0","from":"v0.29.4"},{"to":"v0.29.4","from":"v0.29.3"},{"to":"v0.29.3","from":"v0.29.2"},{"to":"v0.29.2","from":"v0.29.1"},{"to":"v0.29.1","from":"v0.29.0"},{"to":"v0.29.0","from":"v0.28.9"},{"to":"v0.28.9","from":"v0.28.8"},{"to":"v0.28.8","from":"v0.28.7"},{"to":"v0.28.7","from":"v0.28.6"},{"to":"v0.28.6","from":"v0.28.5"},{"to":"v0.28.5","from":"v0.28.4"},{"to":"v0.28.4","from":"v0.28.3"},{"to":"v0.28.3","from":"v0.28.2"},{"to":"v0.28.2","from":"v0.28.1"},{"to":"v0.28.1","from":"v0.28.0"},{"to":"v0.28.0","from":"v0.27.9"},{"to":"v0.27.9","from":"v0.27.8"},{"to":"v0.27.8","from":"v0.27.7"},{"to":"v0.27.7","from":"v0.27.6"},{"to":"v0.27.6","from":"v0.27.5"},{"to":"v0.27.5","from":"v0.27.4"},{"to":"v0.27.4","from":"v0.27.3"},{"to":"v0.27.3","from":"v0.27.2"},{"to":"v0.27.2","from":"v0.27.1"},{"to":"v0.27.1","from":"v0.27.0"},{"to":"v0.27.0","from":"v0.26.2"},{"to":"v0.26.2","from":"v0.26.1"},{"to":"v0.26.1","from":"v0.26.0"},{"to":"v0.26.0","from":"v0.25.0"},{"to":"v0.25.0","from":"v0.24.1"},{"to":"v0.24.1","from":"v0.24.0"},{"to":"v0.24.0","from":"v0.23.7"},{"to":"v0.23.7","from":"v0.23.6"},{"to":"v0.23.6","from":"v0.23.5"},{"to":"v0.23.5","from":"v0.23.4"},{"to":"v0.23.4","from":"v0.23.3"},{"to":"v0.23.3","from":"v0.23.2"},{"to":"v0.23.2","from":"v0.23.1"},{"to":"v0.23.1","from":"v0.23.0"},{"to":"v0.23.0","from":"v0.22.3"},{"to":"v0.22.3","from":"v0.22.2"},{"to":"v0.22.2","from":"v0.22.1"},{"to":"v0.22.1","from":"v0.22.0"},{"to":"v0.22.0","from":"v0.21.0"},{"to":"v0.21.0","from":"v0.20.5"},{"to":"v0.20.5","from":"v0.20.4"},{"to":"v0.20.4","from":"v0.20.3"},{"to":"v0.20.3","from":"v0.20.2"},{"to":"v0.20.2","from":"v0.20.1"},{"to":"v0.20.1","from":"v0.20.0"},{"to":"v0.20.0","from":"v0.19.5"},{"to":"v0.19.5","from":"v0.19.4"},{"to":"v0.19.4","from":"v0.19.3"},{"to":"v0.19.3","from":"v0.19.2"},{"to":"v0.19.2","from":"v0.19.1"},{"to":"v0.19.1","from":"v0.19.0"},{"to":"v0.19.0","from":"6181a540729a7179d7a9d41489dfc241335cf1b5"}]
|