oc 0.50.13 → 0.50.15

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/biome.json +28 -15
  3. package/dist/cli/domain/get-components-by-dir.js +2 -2
  4. package/dist/cli/domain/handle-dependencies/install-compiler.js +1 -1
  5. package/dist/cli/domain/init-template/install-template.js +1 -1
  6. package/dist/cli/domain/local.js +1 -1
  7. package/dist/cli/domain/registry.js +3 -3
  8. package/dist/cli/facade/clean.js +1 -1
  9. package/dist/cli/facade/dev.js +7 -3
  10. package/dist/cli/facade/preview.js +1 -1
  11. package/dist/cli/facade/publish.d.ts +1 -1
  12. package/dist/cli/facade/publish.js +1 -1
  13. package/dist/cli/index.js +3 -3
  14. package/dist/cli/programmatic-api.d.ts +1 -1
  15. package/dist/components/oc-client/_package/package.json +4 -4
  16. package/dist/components/oc-client/_package/server.js +1 -1
  17. package/dist/components/oc-client/package.json +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +3 -3
  20. package/dist/registry/domain/authentication.js +1 -1
  21. package/dist/registry/domain/plugins-initialiser.js +2 -2
  22. package/dist/registry/domain/sanitiser.js +1 -1
  23. package/dist/registry/domain/storage-adapter.js +1 -1
  24. package/dist/registry/domain/validators/component-parameters.js +2 -2
  25. package/dist/registry/domain/validators/index.d.ts +1 -1
  26. package/dist/registry/domain/validators/index.js +1 -1
  27. package/dist/registry/index.js +0 -1
  28. package/dist/registry/router.js +2 -2
  29. package/dist/registry/routes/component-preview.js +1 -1
  30. package/dist/registry/routes/component.js +1 -1
  31. package/dist/registry/routes/components.js +1 -1
  32. package/dist/registry/routes/helpers/get-component-fallback.js +1 -1
  33. package/dist/registry/routes/helpers/get-component.js +1 -1
  34. package/dist/registry/routes/helpers/is-url-discoverable.js +1 -1
  35. package/dist/registry/routes/history.js +1 -1
  36. package/dist/registry/views/index.js +1 -1
  37. package/dist/registry/views/static/index.d.ts +1 -1
  38. package/dist/registry/views/static/index.js +100 -18
  39. package/dist/registry/views/static/style.d.ts +1 -1
  40. package/dist/registry/views/static/style.js +99 -28
  41. package/logintervals.md +1 -1
  42. package/package.json +10 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## Change Log
2
2
 
3
+ ### v0.50.15
4
+ - [#1421](https://github.com/opencomponents/oc/pull/1421) express 5 migration
5
+ - [#1387](https://github.com/opencomponents/oc/pull/1387) [Snyk] Security upgrade cross-spawn from 7.0.3 to 7.0.5
6
+ - [#1389](https://github.com/opencomponents/oc/pull/1389) [Snyk] Security upgrade undici from 6.19.8 to 6.21.1
7
+ - [#1419](https://github.com/opencomponents/oc/pull/1419) fix livereload so its correctly called after repackaging
8
+ - [#1418](https://github.com/opencomponents/oc/pull/1418) Leave preview open without discovery
9
+
10
+ ### v0.50.14
11
+ - [#1417](https://github.com/opencomponents/oc/pull/1417) add infinite scrolling to history
12
+
3
13
  ### v0.50.13
4
14
  - [#1416](https://github.com/opencomponents/oc/pull/1416) Add history endpoint and lazy load it on the UI
5
15
 
package/biome.json CHANGED
@@ -1,23 +1,21 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3
- "organizeImports": {
4
- "enabled": true
5
- },
6
- "javascript": {
7
- "formatter": {
8
- "trailingCommas": "none",
9
- "indentStyle": "space",
10
- "quoteStyle": "single"
11
- }
2
+ "$schema": "https://biomejs.dev/schemas/2.1.2/schema.json",
3
+ "vcs": {
4
+ "enabled": false,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": false
12
7
  },
13
8
  "files": {
14
- "ignore": [
15
- "src/components/oc-client/*",
16
- "test/fixtures/*",
17
- "package.json",
18
- "biome.json"
9
+ "ignoreUnknown": false,
10
+ "includes": [
11
+ "src/**/*",
12
+ "!src/components/oc-client/**/*"
19
13
  ]
20
14
  },
15
+ "formatter": {
16
+ "enabled": true,
17
+ "indentStyle": "tab"
18
+ },
21
19
  "linter": {
22
20
  "enabled": true,
23
21
  "rules": {
@@ -38,5 +36,20 @@
38
36
  "noExplicitAny": "off"
39
37
  }
40
38
  }
39
+ },
40
+ "javascript": {
41
+ "formatter": {
42
+ "trailingCommas": "none",
43
+ "indentStyle": "space",
44
+ "quoteStyle": "single"
45
+ }
46
+ },
47
+ "assist": {
48
+ "enabled": true,
49
+ "actions": {
50
+ "source": {
51
+ "organizeImports": "on"
52
+ }
53
+ }
41
54
  }
42
55
  }
@@ -15,7 +15,7 @@ function getComponentsByDir() {
15
15
  try {
16
16
  content = fs_extra_1.default.readJsonSync(packagePath);
17
17
  }
18
- catch (err) {
18
+ catch {
19
19
  return false;
20
20
  }
21
21
  if (!content.oc) {
@@ -34,7 +34,7 @@ function getComponentsByDir() {
34
34
  .map((component) => node_path_1.default.resolve(componentsDir, component));
35
35
  return components;
36
36
  }
37
- catch (err) {
37
+ catch {
38
38
  return [];
39
39
  }
40
40
  };
@@ -61,7 +61,7 @@ async function installCompiler(options) {
61
61
  }
62
62
  return compiler;
63
63
  }
64
- catch (err) {
64
+ catch {
65
65
  logger.err('FAIL');
66
66
  throw errorMsg;
67
67
  }
@@ -62,7 +62,7 @@ async function installTemplate(options) {
62
62
  logger.log(resources_1.default.messages.cli.installCompilerSuccess(templateType, compiler, version));
63
63
  return { ok: true };
64
64
  }
65
- catch (err) {
65
+ catch {
66
66
  throw errorMessage;
67
67
  }
68
68
  }
@@ -84,7 +84,7 @@ function local() {
84
84
  compiler: `${templateType}-compiler`
85
85
  }));
86
86
  }
87
- catch (e) {
87
+ catch {
88
88
  throw 'template type not valid';
89
89
  }
90
90
  },
@@ -77,7 +77,7 @@ function registry(opts = {}) {
77
77
  }
78
78
  return fs_extra_1.default.writeJson(settings_1.default.configFile.src, res);
79
79
  }
80
- catch (err) {
80
+ catch {
81
81
  throw 'oc registry not available';
82
82
  }
83
83
  },
@@ -91,7 +91,7 @@ function registry(opts = {}) {
91
91
  throw 'No oc registries';
92
92
  return res.registries;
93
93
  }
94
- catch (err) {
94
+ catch {
95
95
  throw 'No oc registries';
96
96
  }
97
97
  },
@@ -122,7 +122,7 @@ function registry(opts = {}) {
122
122
  try {
123
123
  parsedError = JSON.parse(String(parsedError));
124
124
  }
125
- catch (er) { }
125
+ catch { }
126
126
  }
127
127
  if (!!parsedError.code && parsedError.code === 'ECONNREFUSED') {
128
128
  errMsg = 'Connection to registry has not been established';
@@ -19,7 +19,7 @@ const clean = ({ local: { clean: { fetchList, remove } }, logger }) => {
19
19
  const lowered = result.toLowerCase().trim();
20
20
  return lowered === 'y' || lowered === 'yes';
21
21
  }
22
- catch (err) {
22
+ catch {
23
23
  return false;
24
24
  }
25
25
  };
@@ -60,7 +60,7 @@ const dev = ({ local, logger }) => (0, universalify_1.fromPromise)(async (opts)
60
60
  const optWatch = typeof opts.watch === 'undefined' ? true : opts.watch;
61
61
  let packaging = false;
62
62
  const postRequestPayloadSize = opts.postRequestPayloadSize || '100kb';
63
- const watchForChanges = ({ components, refreshLiveReload }, cb) => {
63
+ const watchForChanges = ({ components, refreshLiveReload }, packageComponents) => {
64
64
  (0, watch_1.default)(components, componentsDir, (err, changedFile, componentDir) => {
65
65
  if (err) {
66
66
  logger.err(index_1.default.errors.generic(String(err)));
@@ -71,10 +71,14 @@ const dev = ({ local, logger }) => (0, universalify_1.fromPromise)(async (opts)
71
71
  logger.warn(cliMessages.HOT_RELOADING_DISABLED);
72
72
  }
73
73
  else if (!componentDir) {
74
- cb(components, refreshLiveReload);
74
+ packageComponents(components).then(() => {
75
+ refreshLiveReload();
76
+ });
75
77
  }
76
78
  else {
77
- cb([componentDir], refreshLiveReload);
79
+ packageComponents([componentDir]).then(() => {
80
+ refreshLiveReload();
81
+ });
78
82
  }
79
83
  }
80
84
  });
@@ -12,7 +12,7 @@ const preview = ({ logger, registry }) => (0, universalify_1.fromPromise)(async
12
12
  await (0, open_1.default)(href);
13
13
  return href;
14
14
  }
15
- catch (err) {
15
+ catch {
16
16
  logger.err(index_1.default.errors.cli.COMPONENT_HREF_NOT_FOUND);
17
17
  throw index_1.default.errors.cli.COMPONENT_HREF_NOT_FOUND;
18
18
  }
@@ -1,6 +1,6 @@
1
1
  import type { Local } from '../domain/local';
2
- import type { Logger } from '../logger';
3
2
  import type { RegistryCli } from '../domain/registry';
3
+ import type { Logger } from '../logger';
4
4
  declare const publish: ({ logger, registry, local }: {
5
5
  logger: Logger;
6
6
  registry: RegistryCli;
@@ -81,7 +81,7 @@ const publish = ({ logger, registry, local }) => (0, universalify_1.fromPromise)
81
81
  try {
82
82
  errorMessage = JSON.stringify(err);
83
83
  }
84
- catch (er) {
84
+ catch {
85
85
  errorMessage = err;
86
86
  }
87
87
  }
package/dist/cli/index.js CHANGED
@@ -5,12 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const semver_1 = __importDefault(require("semver"));
7
7
  const yargs_1 = __importDefault(require("yargs"));
8
- const commands_1 = __importDefault(require("./commands"));
9
8
  const resources_1 = __importDefault(require("../resources"));
9
+ const commands_1 = __importDefault(require("./commands"));
10
10
  const local_1 = __importDefault(require("./domain/local"));
11
11
  const registry_1 = __importDefault(require("./domain/registry"));
12
- const logger_1 = __importDefault(require("./logger"));
13
- const validate_command_1 = __importDefault(require("./validate-command"));
14
12
  const clean_1 = __importDefault(require("./facade/clean"));
15
13
  const dev_1 = __importDefault(require("./facade/dev"));
16
14
  const init_1 = __importDefault(require("./facade/init"));
@@ -22,6 +20,8 @@ const registry_2 = __importDefault(require("./facade/registry"));
22
20
  const registry_add_1 = __importDefault(require("./facade/registry-add"));
23
21
  const registry_ls_1 = __importDefault(require("./facade/registry-ls"));
24
22
  const registry_remove_1 = __importDefault(require("./facade/registry-remove"));
23
+ const logger_1 = __importDefault(require("./logger"));
24
+ const validate_command_1 = __importDefault(require("./validate-command"));
25
25
  const cliFunctions = {
26
26
  clean: clean_1.default,
27
27
  dev: dev_1.default,
@@ -1,4 +1,3 @@
1
- import type { Logger } from './logger';
2
1
  import dev from './facade/dev';
3
2
  import init from './facade/init';
4
3
  import mock from './facade/mock';
@@ -8,6 +7,7 @@ import publish from './facade/publish';
8
7
  import registryAdd from './facade/registry-add';
9
8
  import registryLs from './facade/registry-ls';
10
9
  import registryRemove from './facade/registry-remove';
10
+ import type { Logger } from './logger';
11
11
  type Options<T extends (...args: any) => any> = Parameters<ReturnType<T>>[0];
12
12
  type Cb<T extends (...args: any) => any> = Parameters<ReturnType<T>>[1];
13
13
  declare const _default: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "oc-client",
3
3
  "description": "The OpenComponents client-side javascript client",
4
- "version": "0.50.13",
4
+ "version": "0.50.15",
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": "5074b06e33b2b8b5cbd42e8f6588a9dfe8bd63dc",
25
+ "hashKey": "9d5cc79c1bf4f21e1b95847f06f5ce53da115dbb",
26
26
  "src": "server.js",
27
27
  "size": 613
28
28
  }
29
29
  },
30
- "version": "0.50.13",
30
+ "version": "0.50.15",
31
31
  "packaged": true,
32
- "date": 1753433448985
32
+ "date": 1754027962777
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.13"}),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
+ "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.15"}),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.13",
4
+ "version": "0.50.15",
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,3 +1,3 @@
1
- export { default as cli } from './cli/programmatic-api';
2
1
  export { default as Client } from 'oc-client';
2
+ export { default as cli } from './cli/programmatic-api';
3
3
  export { default as Registry, RegistryOptions } from './registry';
package/dist/index.js CHANGED
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Registry = exports.Client = exports.cli = void 0;
7
- var programmatic_api_1 = require("./cli/programmatic-api");
8
- Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return __importDefault(programmatic_api_1).default; } });
6
+ exports.Registry = exports.cli = exports.Client = void 0;
9
7
  var oc_client_1 = require("oc-client");
10
8
  Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return __importDefault(oc_client_1).default; } });
9
+ var programmatic_api_1 = require("./cli/programmatic-api");
10
+ Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return __importDefault(programmatic_api_1).default; } });
11
11
  var registry_1 = require("./registry");
12
12
  Object.defineProperty(exports, "Registry", { enumerable: true, get: function () { return __importDefault(registry_1).default; } });
@@ -41,7 +41,7 @@ function validate(authConfig) {
41
41
  try {
42
42
  scheme = require(moduleName);
43
43
  }
44
- catch (err) {
44
+ catch {
45
45
  return {
46
46
  isValid: false,
47
47
  message: resources_1.default.errors.registry.CONFIGURATION_PUBLISH_AUTH_MODULE_NOT_FOUND(moduleName)
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.init = init;
7
7
  const node_util_1 = require("node:util");
8
8
  const dependency_graph_1 = require("dependency-graph");
9
- const pLimit_1 = __importDefault(require("../../utils/pLimit"));
10
9
  const resources_1 = __importDefault(require("../../resources"));
10
+ const pLimit_1 = __importDefault(require("../../utils/pLimit"));
11
11
  function validatePlugins(plugins) {
12
12
  for (let idx = 0; idx < plugins.length; idx++) {
13
13
  const plugin = plugins[idx];
@@ -32,7 +32,7 @@ function checkDependencies(plugins) {
32
32
  try {
33
33
  graph.addDependency(p.name, d);
34
34
  }
35
- catch (err) {
35
+ catch {
36
36
  throw new Error(`unknown plugin dependency: ${d}`);
37
37
  }
38
38
  }
@@ -37,7 +37,7 @@ function sanitiseComponentParameters(requestParameters, expectedParameters) {
37
37
  const result = {};
38
38
  for (const [requestParameterName, requestParameter] of Object.entries(requestParameters)) {
39
39
  if (typeof expectedParameters === 'object' &&
40
- // biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>
40
+ // biome-ignore lint/suspicious/noPrototypeBuiltins: hasOwnProperty is fine
41
41
  expectedParameters.hasOwnProperty(requestParameterName)) {
42
42
  const expectedType = expectedParameters[requestParameterName].type;
43
43
  const sanitised = sanitise.parameter(requestParameter, expectedType);
@@ -20,7 +20,7 @@ function isPromiseBased(tryFunction) {
20
20
  });
21
21
  return true;
22
22
  }
23
- catch (err) {
23
+ catch {
24
24
  return false;
25
25
  }
26
26
  }
@@ -28,7 +28,7 @@ function componentParameters(requestParameters, expectedParameters = {}) {
28
28
  }
29
29
  for (const mandatoryParameterName of mandatoryParameters) {
30
30
  if (typeof requestParameters === 'object' &&
31
- // biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>
31
+ // biome-ignore lint/suspicious/noPrototypeBuiltins: hasOwnProperty is fine
32
32
  !requestParameters.hasOwnProperty(mandatoryParameterName)) {
33
33
  if (!result.errors.mandatory) {
34
34
  result.errors.mandatory = {};
@@ -40,7 +40,7 @@ function componentParameters(requestParameters, expectedParameters = {}) {
40
40
  }
41
41
  for (const [requestParameterName, requestParameter] of Object.entries(requestParameters)) {
42
42
  if (typeof expectedParameters === 'object' &&
43
- // biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>
43
+ // biome-ignore lint/suspicious/noPrototypeBuiltins: hasOwnProperty is fine
44
44
  expectedParameters.hasOwnProperty(requestParameterName)) {
45
45
  const expectedType = expectedParameters[requestParameterName].type;
46
46
  if (!validateParameter(requestParameter, expectedType)) {
@@ -1,10 +1,10 @@
1
1
  import componentParametersValidator from './component-parameters';
2
+ import nodeVersionValidator from './node-version';
2
3
  import ocCliVersionValidator from './oc-cli-version';
3
4
  import packageJsonValidator from './package-json-validator';
4
5
  import pluginsRequirementsValidator from './plugins-requirements';
5
6
  import registryConfigurationValidator from './registry-configuration';
6
7
  import templateOcVersionValidator from './templace-oc-version';
7
- import nodeVersionValidator from './node-version';
8
8
  import uploadedPackageValidator from './uploaded-package';
9
9
  export declare function validateComponentName(componentName: string): boolean;
10
10
  export declare const validateComponentParameters: typeof componentParametersValidator;
@@ -8,12 +8,12 @@ exports.validateComponentName = validateComponentName;
8
8
  exports.validateVersion = validateVersion;
9
9
  const semver_1 = __importDefault(require("semver"));
10
10
  const component_parameters_1 = __importDefault(require("./component-parameters"));
11
+ const node_version_1 = __importDefault(require("./node-version"));
11
12
  const oc_cli_version_1 = __importDefault(require("./oc-cli-version"));
12
13
  const package_json_validator_1 = __importDefault(require("./package-json-validator"));
13
14
  const plugins_requirements_1 = __importDefault(require("./plugins-requirements"));
14
15
  const registry_configuration_1 = __importDefault(require("./registry-configuration"));
15
16
  const templace_oc_version_1 = __importDefault(require("./templace-oc-version"));
16
- const node_version_1 = __importDefault(require("./node-version"));
17
17
  const uploaded_package_1 = __importDefault(require("./uploaded-package"));
18
18
  function validateComponentName(componentName) {
19
19
  return !/[^a-zA-Z0-9\-_]/.test(componentName) && componentName !== '_package';
@@ -79,7 +79,6 @@ function registry(inputOptions) {
79
79
  if (options.keepAliveTimeout) {
80
80
  server.keepAliveTimeout = options.keepAliveTimeout;
81
81
  }
82
- // @ts-ignore Type not taking error on callback (this can error, though)
83
82
  server.listen(options.port, (err) => {
84
83
  if (err) {
85
84
  return callback(err);
@@ -31,7 +31,7 @@ function create(app, conf, repository) {
31
31
  const prefix = conf.prefix;
32
32
  if (prefix !== '/') {
33
33
  app.get('/', (_req, res) => res.redirect(prefix));
34
- app.get(prefix.substr(0, prefix.length - 1), routes.index);
34
+ app.get(prefix.substring(0, prefix.length - 1), routes.index);
35
35
  }
36
36
  app.get(`${prefix}oc-client/client.js`, routes.staticRedirector);
37
37
  app.get(`${prefix}oc-client/client.dev.js`, routes.staticRedirector);
@@ -40,7 +40,7 @@ function create(app, conf, repository) {
40
40
  app.get(`${prefix}~registry/dependencies`, routes.dependencies);
41
41
  app.get(`${prefix}~registry/history`, routes.history);
42
42
  if (conf.local) {
43
- app.get(`${prefix}:componentName/:componentVersion/${settings_1.default.registry.localStaticRedirectorPath}*`, routes.staticRedirector);
43
+ app.get(`${prefix}:componentName/:componentVersion/${settings_1.default.registry.localStaticRedirectorPath}*splat`, routes.staticRedirector);
44
44
  }
45
45
  else {
46
46
  app.put(`${prefix}:componentName/:componentVersion`, conf.beforePublish, routes.publish);
@@ -53,7 +53,7 @@ function componentPreview(err, req, res, component, templates) {
53
53
  liveReload = `<script src="http://localhost:${res.conf.liveReloadPort}/livereload.js?snipver=1"></script>`;
54
54
  }
55
55
  const isHtmlRequest = !!req.headers.accept && req.headers.accept.indexOf('text/html') >= 0;
56
- if (isHtmlRequest && !!res.conf.discovery) {
56
+ if (isHtmlRequest) {
57
57
  res.send((0, preview_1.default)({
58
58
  component,
59
59
  href: res.conf.baseUrl,
@@ -37,9 +37,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.default = component;
40
- const serialize_error_1 = require("serialize-error");
41
40
  const node_stream_1 = require("node:stream");
42
41
  const turbo_stream_1 = require("@rdevis/turbo-stream");
42
+ const serialize_error_1 = require("serialize-error");
43
43
  const resources_1 = __importDefault(require("../../resources"));
44
44
  const get_component_1 = __importStar(require("./helpers/get-component"));
45
45
  function component(conf, repository) {
@@ -55,7 +55,7 @@ function components(conf, repository) {
55
55
  }, (result) => callback(null, result));
56
56
  },
57
57
  // @ts-ignore
58
- (err, results) => {
58
+ (_err, results) => {
59
59
  try {
60
60
  setHeaders(results, res);
61
61
  res.status(200).json(results);
@@ -61,7 +61,7 @@ function getComponentFallbackForViewType(buildUrl, conf, req, res, registryError
61
61
  try {
62
62
  return callback(null, JSON.parse(fallbackResponse));
63
63
  }
64
- catch (parseError) {
64
+ catch {
65
65
  return callback({
66
66
  registryError: registryError,
67
67
  fallbackError: `Could not parse fallback response: ${fallbackResponse}`
@@ -327,7 +327,7 @@ function getComponent(conf, repository) {
327
327
  try {
328
328
  ocTemplate = repository.getTemplate(templateType);
329
329
  }
330
- catch (err) {
330
+ catch {
331
331
  return callback({
332
332
  status: 400,
333
333
  response: {
@@ -10,7 +10,7 @@ async function isUrlDiscoverable(url) {
10
10
  isDiscoverable: isHtml
11
11
  };
12
12
  }
13
- catch (err) {
13
+ catch {
14
14
  return { isDiscoverable: false };
15
15
  }
16
16
  }
@@ -18,7 +18,7 @@ function history(repository) {
18
18
  res.status(401);
19
19
  }
20
20
  }
21
- catch (error) {
21
+ catch {
22
22
  res.status(500).json({ error: 'Internal server error' });
23
23
  }
24
24
  };
@@ -10,9 +10,9 @@ const components_history_1 = __importDefault(require("./partials/components-hist
10
10
  const components_list_1 = __importDefault(require("./partials/components-list"));
11
11
  const components_plugins_1 = __importDefault(require("./partials/components-plugins"));
12
12
  const components_templates_1 = __importDefault(require("./partials/components-templates"));
13
- const index_1 = __importDefault(require("./static/index"));
14
13
  const layout_1 = __importDefault(require("./partials/layout"));
15
14
  const property_1 = __importDefault(require("./partials/property"));
15
+ const index_1 = __importDefault(require("./static/index"));
16
16
  function indexView(vm) {
17
17
  const getCount = (state) => vm.stateCounts[state] || 0;
18
18
  const isLocal = vm.type !== 'oc-registry';
@@ -1,2 +1,2 @@
1
- declare const _default: "'use strict';\n\nvar oc = oc || {};\noc.cmd = oc.cmd || [];\n\noc.cmd.push(function() {\n var componentsListChanged = function() {\n $('.componentRow').removeClass('hide');\n var s = $('.search-filter').val(),\n a = $('.author-filter').val(),\n r = new RegExp(s),\n ar = new RegExp(a, 'i'),\n selectedCheckboxes = $('input[type=checkbox]:checked'),\n hiddenStates = [],\n hidden = 0,\n i;\n\n for (i = 0; i < selectedCheckboxes.length; i++) {\n hiddenStates.push($(selectedCheckboxes[i]).attr('name'));\n }\n\n for (i = 0; i < componentsList.length; i++) {\n var matches = !s || !!componentsList[i].name.match(r),\n matchesAuthor =\n !a ||\n (componentsList[i].author.name &&\n !!componentsList[i].author.name.match(ar)),\n selector = $('#component-' + componentsList[i].name),\n isHidden = false;\n\n for (var j = 0; j < hiddenStates.length; j++) {\n if (componentsList[i].state.toLowerCase() === hiddenStates[j]) {\n isHidden = true;\n }\n }\n\n var show = matches && matchesAuthor && !isHidden;\n selector[show ? 'removeClass' : 'addClass']('hide');\n if (!show) {\n hidden += 1;\n }\n }\n\n var totalShowing = componentsList.length - hidden,\n result = 'Showing ' + totalShowing + ' components';\n\n if (s) {\n result += ' matching search query: \"' + s + '\"';\n if (a) {\n result += ' and';\n }\n }\n if (a) {\n result += ' matching author query: \"' + a + '\"';\n }\n\n $('.componentRow.header .title').text(result);\n\n return false;\n };\n\n var loadComponentsHistory = function() {\n var historyLoader = $('#history-loader');\n var historyContent = $('#history-content');\n var historyError = $('#history-error');\n\n // Show loader\n historyLoader.show();\n historyContent.hide();\n historyError.hide();\n\n // Fetch history data\n fetch('~registry/history')\n .then(function(response) {\n if (!response.ok) {\n throw new Error('Failed to fetch history');\n }\n return response.json();\n })\n .then(function(data) {\n var componentsHistory = data.componentsHistory || [];\n var historyHtml = '';\n \n for (var i = 0; i < componentsHistory.length; i++) {\n var item = componentsHistory[i];\n var templateSizeText = item.templateSize ? \n ' [' + Math.round(item.templateSize / 1024) + ' kb]' : '';\n \n historyHtml += '<a href=\"' + item.name + '/' + item.version + '/~info\">' +\n '<div class=\"componentRow row table\">' +\n '<p class=\"release\">' +\n item.publishDate + ' - Published ' + item.name + '@' + item.version +\n templateSizeText +\n '</p>' +\n '</div>' +\n '</a>';\n }\n \n historyContent.html(historyHtml);\n historyLoader.hide();\n historyContent.show();\n })\n .catch(function(error) {\n console.error('Error loading components history:', error);\n historyLoader.hide();\n historyError.show();\n });\n };\n\n var isHistoryLoaded = false;\n\n var initialiseTabs = function() {\n var selectItem = function(target) {\n var $target = $(target);\n $('.box').hide();\n $target.show();\n $('#menuList a').removeClass('selected');\n $('#menuList a[href=\"' + target + '\"]').addClass('selected');\n \n // Load history data when history tab is selected for the first time\n if (target === '#components-history' && !isHistoryLoaded) {\n loadComponentsHistory();\n isHistoryLoaded = true;\n }\n };\n\n var hash = location.href.split('#')[1] || '';\n var isHashValid = hash && $('#' + hash);\n var target = isHashValid ? '#' + hash : $($('#menuList a')[0]).attr('href');\n selectItem(target);\n\n $('#menuList a').click(function() {\n selectItem($(this).attr('href'));\n });\n };\n\n $('#filter-components')\n .submit(componentsListChanged)\n .keyup(componentsListChanged);\n $('#filter-components input[type=checkbox]').change(componentsListChanged);\n\n if (q) {\n $('.search').val(q);\n }\n\n componentsListChanged();\n initialiseTabs();\n});";
1
+ declare const _default: "'use strict';\n\nvar oc = oc || {};\noc.cmd = oc.cmd || [];\n\noc.cmd.push(function() {\n var componentsListChanged = function() {\n $('.componentRow').removeClass('hide');\n var s = $('.search-filter').val(),\n a = $('.author-filter').val(),\n r = new RegExp(s),\n ar = new RegExp(a, 'i'),\n selectedCheckboxes = $('input[type=checkbox]:checked'),\n hiddenStates = [],\n hidden = 0,\n i;\n\n for (i = 0; i < selectedCheckboxes.length; i++) {\n hiddenStates.push($(selectedCheckboxes[i]).attr('name'));\n }\n\n for (i = 0; i < componentsList.length; i++) {\n var matches = !s || !!componentsList[i].name.match(r),\n matchesAuthor =\n !a ||\n (componentsList[i].author.name &&\n !!componentsList[i].author.name.match(ar)),\n selector = $('#component-' + componentsList[i].name),\n isHidden = false;\n\n for (var j = 0; j < hiddenStates.length; j++) {\n if (componentsList[i].state.toLowerCase() === hiddenStates[j]) {\n isHidden = true;\n }\n }\n\n var show = matches && matchesAuthor && !isHidden;\n selector[show ? 'removeClass' : 'addClass']('hide');\n if (!show) {\n hidden += 1;\n }\n }\n\n var totalShowing = componentsList.length - hidden,\n result = 'Showing ' + totalShowing + ' components';\n\n if (s) {\n result += ' matching search query: \"' + s + '\"';\n if (a) {\n result += ' and';\n }\n }\n if (a) {\n result += ' matching author query: \"' + a + '\"';\n }\n\n $('.componentRow.header .title').text(result);\n\n return false;\n };\n\n var historyData = [];\n var historyRenderedCount = 0;\n var historyBatchSize = 50; // Number of items to render per batch\n var isLoadingMore = false;\n\n var renderHistoryBatch = function() {\n if (historyRenderedCount >= historyData.length || isLoadingMore) {\n return;\n }\n\n isLoadingMore = true;\n var historyContent = $('#history-content');\n var batchEnd = Math.min(historyRenderedCount + historyBatchSize, historyData.length);\n var batchHtml = '';\n\n for (var i = historyRenderedCount; i < batchEnd; i++) {\n var item = historyData[i];\n var templateSizeText = item.templateSize ? \n ' [' + Math.round(item.templateSize / 1024) + ' kb]' : '';\n \n batchHtml += '<a href=\"' + item.name + '/' + item.version + '/~info\">' +\n '<div class=\"componentRow row table\">' +\n '<p class=\"release\">' +\n item.publishDate + ' - Published ' + item.name + '@' + item.version +\n templateSizeText +\n '</p>' +\n '</div>' +\n '</a>';\n }\n\n // Append new batch to existing content\n historyContent.append(batchHtml);\n historyRenderedCount = batchEnd;\n \n // Add loading indicator if there are more items\n if (historyRenderedCount < historyData.length) {\n historyContent.append('<div id=\"history-loading-more\" class=\"loading-more\">Loading more...</div>');\n }\n \n isLoadingMore = false;\n };\n\n var setupHistoryScrollListener = function() {\n var historyContainer = $('#components-history');\n var checkScroll = function() {\n if (historyRenderedCount >= historyData.length) {\n return;\n }\n\n var containerTop = historyContainer.offset().top;\n var containerHeight = historyContainer.outerHeight();\n var scrollTop = $(window).scrollTop();\n var windowHeight = $(window).height();\n \n // Check if user scrolled close to the bottom of the history container\n var distanceFromBottom = (containerTop + containerHeight) - (scrollTop + windowHeight);\n \n if (distanceFromBottom < 200) { // Load more when 200px from bottom\n $('#history-loading-more').remove();\n renderHistoryBatch();\n }\n };\n\n $(window).on('scroll.history', checkScroll);\n \n // Also check on resize\n $(window).on('resize.history', checkScroll);\n };\n\n var loadComponentsHistory = function() {\n var historyLoader = $('#history-loader');\n var historyContent = $('#history-content');\n var historyError = $('#history-error');\n\n // Show loader\n historyLoader.show();\n historyContent.hide();\n historyError.hide();\n\n // Reset state\n historyData = [];\n historyRenderedCount = 0;\n isLoadingMore = false;\n\n // Remove any existing scroll listeners\n $(window).off('scroll.history resize.history');\n\n // Fetch history data\n fetch('~registry/history')\n .then(function(response) {\n if (!response.ok) {\n throw new Error('Failed to fetch history');\n }\n return response.json();\n })\n .then(function(data) {\n historyData = data.componentsHistory || [];\n \n // Clear content and show container\n historyContent.empty();\n historyLoader.hide();\n historyContent.show();\n \n if (historyData.length === 0) {\n historyContent.html('<p style=\"text-align: center; color: #64748b; padding: 2em;\">No components history available.</p>');\n return;\n }\n\n // Render first batch\n renderHistoryBatch();\n \n // Setup scroll listener for infinite loading\n setupHistoryScrollListener();\n })\n .catch(function(error) {\n console.error('Error loading components history:', error);\n historyLoader.hide();\n historyError.show();\n });\n };\n\n var isHistoryLoaded = false;\n\n var initialiseTabs = function() {\n var selectItem = function(target) {\n var $target = $(target);\n $('.box').hide();\n $target.show();\n $('#menuList a').removeClass('selected');\n $('#menuList a[href=\"' + target + '\"]').addClass('selected');\n \n // Clean up scroll listeners when leaving history tab\n if (target !== '#components-history') {\n $(window).off('scroll.history resize.history');\n }\n \n // Load history data when history tab is selected for the first time\n if (target === '#components-history' && !isHistoryLoaded) {\n loadComponentsHistory();\n isHistoryLoaded = true;\n }\n // Re-enable scroll listeners when returning to history tab\n else if (target === '#components-history' && isHistoryLoaded && historyRenderedCount < historyData.length) {\n setupHistoryScrollListener();\n }\n };\n\n var hash = location.href.split('#')[1] || '';\n var isHashValid = hash && $('#' + hash);\n var target = isHashValid ? '#' + hash : $($('#menuList a')[0]).attr('href');\n selectItem(target);\n\n $('#menuList a').click(function() {\n selectItem($(this).attr('href'));\n });\n };\n\n $('#filter-components')\n .submit(componentsListChanged)\n .keyup(componentsListChanged);\n $('#filter-components input[type=checkbox]').change(componentsListChanged);\n\n if (q) {\n $('.search').val(q);\n }\n\n componentsListChanged();\n initialiseTabs();\n});";
2
2
  export default _default;
@@ -61,6 +61,75 @@ oc.cmd.push(function() {
61
61
  return false;
62
62
  };
63
63
 
64
+ var historyData = [];
65
+ var historyRenderedCount = 0;
66
+ var historyBatchSize = 50; // Number of items to render per batch
67
+ var isLoadingMore = false;
68
+
69
+ var renderHistoryBatch = function() {
70
+ if (historyRenderedCount >= historyData.length || isLoadingMore) {
71
+ return;
72
+ }
73
+
74
+ isLoadingMore = true;
75
+ var historyContent = $('#history-content');
76
+ var batchEnd = Math.min(historyRenderedCount + historyBatchSize, historyData.length);
77
+ var batchHtml = '';
78
+
79
+ for (var i = historyRenderedCount; i < batchEnd; i++) {
80
+ var item = historyData[i];
81
+ var templateSizeText = item.templateSize ?
82
+ ' [' + Math.round(item.templateSize / 1024) + ' kb]' : '';
83
+
84
+ batchHtml += '<a href="' + item.name + '/' + item.version + '/~info">' +
85
+ '<div class="componentRow row table">' +
86
+ '<p class="release">' +
87
+ item.publishDate + ' - Published ' + item.name + '@' + item.version +
88
+ templateSizeText +
89
+ '</p>' +
90
+ '</div>' +
91
+ '</a>';
92
+ }
93
+
94
+ // Append new batch to existing content
95
+ historyContent.append(batchHtml);
96
+ historyRenderedCount = batchEnd;
97
+
98
+ // Add loading indicator if there are more items
99
+ if (historyRenderedCount < historyData.length) {
100
+ historyContent.append('<div id="history-loading-more" class="loading-more">Loading more...</div>');
101
+ }
102
+
103
+ isLoadingMore = false;
104
+ };
105
+
106
+ var setupHistoryScrollListener = function() {
107
+ var historyContainer = $('#components-history');
108
+ var checkScroll = function() {
109
+ if (historyRenderedCount >= historyData.length) {
110
+ return;
111
+ }
112
+
113
+ var containerTop = historyContainer.offset().top;
114
+ var containerHeight = historyContainer.outerHeight();
115
+ var scrollTop = $(window).scrollTop();
116
+ var windowHeight = $(window).height();
117
+
118
+ // Check if user scrolled close to the bottom of the history container
119
+ var distanceFromBottom = (containerTop + containerHeight) - (scrollTop + windowHeight);
120
+
121
+ if (distanceFromBottom < 200) { // Load more when 200px from bottom
122
+ $('#history-loading-more').remove();
123
+ renderHistoryBatch();
124
+ }
125
+ };
126
+
127
+ $(window).on('scroll.history', checkScroll);
128
+
129
+ // Also check on resize
130
+ $(window).on('resize.history', checkScroll);
131
+ };
132
+
64
133
  var loadComponentsHistory = function() {
65
134
  var historyLoader = $('#history-loader');
66
135
  var historyContent = $('#history-content');
@@ -71,6 +140,14 @@ oc.cmd.push(function() {
71
140
  historyContent.hide();
72
141
  historyError.hide();
73
142
 
143
+ // Reset state
144
+ historyData = [];
145
+ historyRenderedCount = 0;
146
+ isLoadingMore = false;
147
+
148
+ // Remove any existing scroll listeners
149
+ $(window).off('scroll.history resize.history');
150
+
74
151
  // Fetch history data
75
152
  fetch('~registry/history')
76
153
  .then(function(response) {
@@ -80,27 +157,23 @@ oc.cmd.push(function() {
80
157
  return response.json();
81
158
  })
82
159
  .then(function(data) {
83
- var componentsHistory = data.componentsHistory || [];
84
- var historyHtml = '';
85
-
86
- for (var i = 0; i < componentsHistory.length; i++) {
87
- var item = componentsHistory[i];
88
- var templateSizeText = item.templateSize ?
89
- ' [' + Math.round(item.templateSize / 1024) + ' kb]' : '';
90
-
91
- historyHtml += '<a href="' + item.name + '/' + item.version + '/~info">' +
92
- '<div class="componentRow row table">' +
93
- '<p class="release">' +
94
- item.publishDate + ' - Published ' + item.name + '@' + item.version +
95
- templateSizeText +
96
- '</p>' +
97
- '</div>' +
98
- '</a>';
99
- }
160
+ historyData = data.componentsHistory || [];
100
161
 
101
- historyContent.html(historyHtml);
162
+ // Clear content and show container
163
+ historyContent.empty();
102
164
  historyLoader.hide();
103
165
  historyContent.show();
166
+
167
+ if (historyData.length === 0) {
168
+ historyContent.html('<p style="text-align: center; color: #64748b; padding: 2em;">No components history available.</p>');
169
+ return;
170
+ }
171
+
172
+ // Render first batch
173
+ renderHistoryBatch();
174
+
175
+ // Setup scroll listener for infinite loading
176
+ setupHistoryScrollListener();
104
177
  })
105
178
  .catch(function(error) {
106
179
  console.error('Error loading components history:', error);
@@ -119,11 +192,20 @@ oc.cmd.push(function() {
119
192
  $('#menuList a').removeClass('selected');
120
193
  $('#menuList a[href="' + target + '"]').addClass('selected');
121
194
 
195
+ // Clean up scroll listeners when leaving history tab
196
+ if (target !== '#components-history') {
197
+ $(window).off('scroll.history resize.history');
198
+ }
199
+
122
200
  // Load history data when history tab is selected for the first time
123
201
  if (target === '#components-history' && !isHistoryLoaded) {
124
202
  loadComponentsHistory();
125
203
  isHistoryLoaded = true;
126
204
  }
205
+ // Re-enable scroll listeners when returning to history tab
206
+ else if (target === '#components-history' && isHistoryLoaded && historyRenderedCount < historyData.length) {
207
+ setupHistoryScrollListener();
208
+ }
127
209
  };
128
210
 
129
211
  var hash = location.href.split('#')[1] || '';
@@ -1,2 +1,2 @@
1
- declare const _default: "\n@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n:root {\n /* New accent-based color system */\n --color-bg-default: #ffffff;\n --color-bg-muted: #f8fafc;\n --color-bg-alt: #f1f5f9;\n --color-bg-hover: #f3f0ff;\n\n --color-text-default: #22223b;\n --color-text-muted: #64748b;\n --color-text-inverse: #ffffff;\n\n --color-primary: #7c3aed;\n --color-primary-hover: #5f3dc4;\n /* Secondary accent for informational text (author names, etc.) */\n --color-info: #3b5bdb;\n\n --color-border-default: #e0e0e0;\n --color-border-muted: #d1d5db;\n --color-border-focus: #5f3dc4;\n\n --color-warning: #ffe066;\n --color-warning-text: #7c3aed;\n --color-danger: #ffd6d6;\n --color-danger-text: #c92a2a;\n --color-state-border: #e9ecef;\n}\n\nbody {\n width: 100%;\n max-width: 1100px;\n margin: 0 auto;\n font-family: \"Inter\", \"Helvetica Neue\", Arial, sans-serif;\n background: var(--color-bg-muted);\n color: var(--color-text-default);\n line-height: 1.6;\n}\n\nh1,\nh2,\nh3 {\n color: var(--color-text-default);\n width: 100%;\n font-weight: 600;\n margin-bottom: 0.5em;\n}\n\nh1 {\n margin-top: 0;\n color: var(--color-text-default);\n border-bottom: 1px solid var(--color-border-default);\n font-size: 2.5rem;\n letter-spacing: -1px;\n padding-bottom: 0.3em;\n}\n\na {\n color: var(--color-primary);\n text-decoration: none;\n transition: color 0.2s;\n}\na:hover {\n color: var(--color-primary-hover);\n text-decoration: underline;\n}\n\n#components-list a:hover {\n text-decoration: none;\n}\n\np {\n margin-top: 0;\n}\n\n.back {\n width: 100%;\n margin-top: -20px;\n margin-bottom: 1.5em;\n display: block;\n color: var(--color-text-muted);\n font-size: 0.95em;\n}\n\n.code,\n.preview {\n width: 100%;\n background: var(--color-bg-default);\n border-radius: 10px;\n box-shadow: var(--shadow-main);\n margin-bottom: 1.5em;\n}\n\n.preview {\n height: 300px;\n border: 1px solid var(--color-border-default);\n}\n\n.table {\n width: 100%;\n}\n\n.w-100 {\n width: 100%;\n}\n\n.row {\n background: var(--color-bg-default);\n border: 1px solid var(--color-border-default);\n border-radius: 12px;\n width: 100%;\n display: flex;\n padding: 14px 0px;\n box-sizing: border-box;\n margin-bottom: 8px;\n align-items: center;\n box-shadow: var(--shadow-main);\n transition:\n box-shadow 0.2s,\n border 0.2s;\n}\n\n.row.header {\n background: var(--color-bg-alt);\n border: 1px solid var(--color-border-muted) !important;\n font-size: 1.1em;\n font-weight: 600;\n border-radius: 12px 12px 0 0;\n box-shadow: none;\n}\n\n.row.header div {\n font-weight: bold;\n margin: 0;\n align-self: flex-start;\n}\n\n.row.double {\n min-height: 60px;\n}\n\n.row div {\n word-wrap: break-word;\n}\n\n.row span {\n padding-right: 10px;\n}\n\n.componentRow {\n transition:\n box-shadow 0.2s,\n background 0.2s;\n}\n\n.componentRow:hover {\n background: var(--color-bg-hover);\n box-shadow: var(--shadow-hover);\n border-color: var(--color-primary-hover);\n}\n\n.componentRow .title .name {\n font-weight: bold;\n font-size: 1.15rem;\n margin: 0;\n width: 100%;\n color: var(--color-text-default);\n}\n\n.componentRow .release {\n font-size: 1rem;\n margin: 0;\n width: 100%;\n color: var(--color-text-default);\n}\n\n.componentRow .title .description {\n padding: 0;\n font-size: 0.98rem;\n color: var(--color-text-muted);\n}\n\n.social {\n width: 100%;\n margin-top: 20px;\n text-align: center;\n}\n\n.field {\n width: 100%;\n margin-bottom: 1em;\n}\n\n.field p,\n.field span,\n.field a {\n margin: 0;\n font-weight: 500;\n}\n\n.field p {\n color: var(--color-primary);\n font-weight: bold;\n margin-right: 10px;\n}\n\ninput[type=\"text\"],\ntextarea {\n height: 43px;\n font-family: \"Inter\", Arial, sans-serif;\n border: 1px solid var(--color-border-default);\n margin-bottom: 10px;\n font-size: 1.05rem;\n padding: 10px;\n border-radius: 8px;\n background: var(--color-bg-muted);\n box-sizing: border-box;\n transition: border 0.2s;\n}\ninput[type=\"text\"]:focus,\ntextarea:focus {\n border: 1.5px solid var(--color-primary);\n outline: none;\n}\n\n.filters {\n width: 100%;\n display: flex;\n justify-content: space-between;\n gap: 1em;\n margin-bottom: 0.5em;\n}\n\n.row > * {\n flex: 0 1 8%;\n padding: 0px 5px;\n align-self: center;\n}\n\n.row > *:last-child {\n padding-right: 10px;\n}\n\n.row > *:first-child {\n padding-left: 10px;\n}\n\n.release,\n.title,\n.filters > * {\n flex: 1 0;\n}\n\n.title {\n display: flex;\n flex-direction: column;\n}\n\n.author-filter {\n flex: 0 1 30%;\n margin-left: 15px;\n}\n\n.parameter {\n flex: 1 0;\n max-width: 25%;\n align-self: flex-start;\n}\n\n.parameter-description {\n flex: 1 0;\n max-width: 70%;\n}\n\n.author {\n flex: 0 1 15%;\n word-break: break-all;\n color: var(--color-info);\n}\n\n#href {\n height: 60px;\n}\n\n.states {\n width: 100%;\n margin-bottom: 30px;\n display: flex;\n align-items: center;\n}\n\n.states span,\n.states .state {\n margin-right: 20px;\n}\n\n.states input {\n margin-right: 6px;\n}\n\n.details-state span {\n padding: 1px 8px;\n margin-left: 10px;\n font-size: 0.95em;\n font-weight: bold;\n color: var(--color-text-inverse);\n background: var(--color-primary);\n border-radius: 8px;\n white-space: nowrap;\n}\n\n.state {\n margin-right: 10px;\n font-size: 0.95em;\n font-weight: bold;\n color: var(--color-text-inverse);\n border-radius: 8px;\n white-space: nowrap;\n padding: 2px 8px;\n}\n\n.table .state {\n background: var(--color-primary);\n height: 20px;\n}\n\n.component-state-experimental,\n.details-state .component-state-experimental,\n.table .component-state-experimental {\n background: var(--color-warning);\n color: var(--color-warning-text);\n border: 1px solid var(--color-state-border);\n}\n\n.component-state-deprecated,\n.details-state .component-state-deprecated,\n.table .component-state-deprecated {\n background: var(--color-danger);\n color: var(--color-danger-text);\n border: 1px solid var(--color-state-border);\n}\n\na.tab-link {\n color: var(--color-primary);\n font-weight: 500;\n padding: 0.1em 0.6em;\n border-radius: 8px;\n transition:\n background 0.2s,\n color 0.2s;\n font-size: 1.4rem;\n line-height: 1.2;\n vertical-align: middle;\n display: inline-block;\n}\n\na.tab-link.selected {\n background: var(--color-primary);\n color: var(--color-text-inverse);\n text-decoration: none;\n font-size: 1.5rem;\n line-height: 1.2;\n}\n\n.bold {\n font-weight: bold;\n}\n\n.hide {\n display: none !important;\n}\n\n.box {\n background: var(--color-bg-default);\n border-radius: 14px;\n box-shadow: var(--shadow-main);\n padding: 1.5em 1em;\n margin-bottom: 2em;\n}\n\n@media (max-width: 900px) {\n body {\n max-width: 100vw;\n padding: 0 0.5em;\n }\n .filters {\n flex-direction: column;\n gap: 0.5em;\n }\n .row {\n flex-direction: column;\n gap: 0.5em;\n padding: 10px 0;\n }\n .box {\n padding: 1em 0.5em;\n }\n}\n";
1
+ declare const _default: "\n@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n :root {\n /* New accent-based color system */\n --color-bg-default: #ffffff;\n --color-bg-muted: #f8fafc;\n --color-bg-alt: #f1f5f9;\n --color-bg-hover: #f3f0ff;\n\n --color-text-default: #22223b;\n --color-text-muted: #64748b;\n --color-text-inverse: #ffffff;\n\n --color-primary: #7c3aed;\n --color-primary-hover: #5f3dc4;\n /* Secondary accent for informational text (author names, etc.) */\n --color-info: #3b5bdb;\n\n --color-border-default: #e0e0e0;\n --color-border-muted: #d1d5db;\n --color-border-focus: #5f3dc4;\n\n --color-warning: #ffe066;\n --color-warning-text: #7c3aed;\n --color-danger: #ffd6d6;\n --color-danger-text: #c92a2a;\n --color-state-border: #e9ecef;\n\n /* Shadow definitions */\n --shadow-main: 0 2px 8px rgba(60, 60, 100, 0.04);\n --shadow-hover: 0 4px 16px rgba(95, 61, 196, 0.08);\n }\n\nbody {\n width: 100%;\n max-width: 1100px;\n margin: 0 auto;\n font-family: \"Inter\", \"Helvetica Neue\", Arial, sans-serif;\n background: var(--color-bg-muted);\n color: var(--color-text-default);\n line-height: 1.6;\n}\n\nh1,\nh2,\nh3 {\n color: var(--color-text-default);\n width: 100%;\n font-weight: 600;\n margin-bottom: 0.5em;\n}\n\nh1 {\n margin-top: 0;\n color: var(--color-text-default);\n border-bottom: 1px solid var(--color-border-default);\n font-size: 2.5rem;\n letter-spacing: -1px;\n padding-bottom: 0.3em;\n}\n\na {\n color: var(--color-primary);\n text-decoration: none;\n transition: color 0.2s;\n}\na:hover {\n color: var(--color-primary-hover);\n text-decoration: underline;\n}\n\n#components-list a:hover {\n text-decoration: none;\n}\n\np {\n margin-top: 0;\n}\n\n.back {\n width: 100%;\n margin-top: -20px;\n margin-bottom: 1.5em;\n display: block;\n color: var(--color-text-muted);\n font-size: 0.95em;\n}\n\n.code,\n.preview {\n width: 100%;\n background: var(--color-bg-default);\n border-radius: 10px;\n box-shadow: var(--shadow-main);\n margin-bottom: 1.5em;\n}\n\n.preview {\n height: 300px;\n border: 1px solid var(--color-border-default);\n}\n\n.table {\n width: 100%;\n}\n\n.w-100 {\n width: 100%;\n}\n\n.row {\n background: var(--color-bg-default);\n border: 1px solid var(--color-border-default);\n border-radius: 12px;\n width: 100%;\n display: flex;\n padding: 14px 0px;\n box-sizing: border-box;\n margin-bottom: 8px;\n align-items: center;\n box-shadow: var(--shadow-main);\n transition:\n box-shadow 0.2s,\n border 0.2s;\n}\n\n.row.header {\n background: var(--color-bg-alt);\n border: 1px solid var(--color-border-muted) !important;\n font-size: 1.1em;\n font-weight: 600;\n border-radius: 12px 12px 0 0;\n box-shadow: none;\n}\n\n.row.header div {\n font-weight: bold;\n margin: 0;\n align-self: flex-start;\n}\n\n.row.double {\n min-height: 60px;\n}\n\n.row div {\n word-wrap: break-word;\n}\n\n.row span {\n padding-right: 10px;\n}\n\n.componentRow {\n transition:\n box-shadow 0.2s,\n background 0.2s;\n}\n\n.componentRow:hover {\n background: var(--color-bg-hover);\n box-shadow: var(--shadow-hover);\n border-color: var(--color-primary-hover);\n}\n\n.componentRow .title .name {\n font-weight: bold;\n font-size: 1.15rem;\n margin: 0;\n width: 100%;\n color: var(--color-text-default);\n}\n\n.componentRow .release {\n font-size: 1rem;\n margin: 0;\n width: 100%;\n color: var(--color-text-default);\n}\n\n.componentRow .title .description {\n padding: 0;\n font-size: 0.98rem;\n color: var(--color-text-muted);\n}\n\n.social {\n width: 100%;\n margin-top: 20px;\n text-align: center;\n}\n\n.field {\n width: 100%;\n margin-bottom: 1em;\n}\n\n.field p,\n.field span,\n.field a {\n margin: 0;\n font-weight: 500;\n}\n\n.field p {\n color: var(--color-primary);\n font-weight: bold;\n margin-right: 10px;\n}\n\ninput[type=\"text\"],\ntextarea {\n height: 43px;\n font-family: \"Inter\", Arial, sans-serif;\n border: 1px solid var(--color-border-default);\n margin-bottom: 10px;\n font-size: 1.05rem;\n padding: 10px;\n border-radius: 8px;\n background: var(--color-bg-muted);\n box-sizing: border-box;\n transition: border 0.2s;\n}\ninput[type=\"text\"]:focus,\ntextarea:focus {\n border: 1.5px solid var(--color-primary);\n outline: none;\n}\n\n.filters {\n width: 100%;\n display: flex;\n justify-content: space-between;\n gap: 1em;\n margin-bottom: 0.5em;\n}\n\n.row > * {\n flex: 0 1 8%;\n padding: 0px 5px;\n align-self: center;\n}\n\n.row > *:last-child {\n padding-right: 10px;\n}\n\n.row > *:first-child {\n padding-left: 10px;\n}\n\n.release,\n.title,\n.filters > * {\n flex: 1 0;\n}\n\n.title {\n display: flex;\n flex-direction: column;\n}\n\n.author-filter {\n flex: 0 1 30%;\n margin-left: 15px;\n}\n\n.parameter {\n flex: 1 0;\n max-width: 25%;\n align-self: flex-start;\n}\n\n.parameter-description {\n flex: 1 0;\n max-width: 70%;\n}\n\n.author {\n flex: 0 1 15%;\n word-break: break-all;\n color: var(--color-info);\n}\n\n#href {\n height: 60px;\n}\n\n.states {\n width: 100%;\n margin-bottom: 30px;\n display: flex;\n align-items: center;\n}\n\n.states span,\n.states .state {\n margin-right: 20px;\n}\n\n.states input {\n margin-right: 6px;\n}\n\n.details-state span {\n padding: 1px 8px;\n margin-left: 10px;\n font-size: 0.95em;\n font-weight: bold;\n color: var(--color-text-inverse);\n background: var(--color-primary);\n border-radius: 8px;\n white-space: nowrap;\n}\n\n.state {\n margin-right: 10px;\n font-size: 0.95em;\n font-weight: bold;\n color: var(--color-text-inverse);\n border-radius: 8px;\n white-space: nowrap;\n padding: 2px 8px;\n}\n\n.table .state {\n background: var(--color-primary);\n height: 20px;\n}\n\n.component-state-experimental,\n.details-state .component-state-experimental,\n.table .component-state-experimental {\n background: var(--color-warning);\n color: var(--color-warning-text);\n border: 1px solid var(--color-state-border);\n}\n\n.component-state-deprecated,\n.details-state .component-state-deprecated,\n.table .component-state-deprecated {\n background: var(--color-danger);\n color: var(--color-danger-text);\n border: 1px solid var(--color-state-border);\n}\n\na.tab-link {\n color: var(--color-primary);\n font-weight: 500;\n padding: 0.1em 0.6em;\n border-radius: 8px;\n transition:\n background 0.2s,\n color 0.2s;\n font-size: 1.4rem;\n line-height: 1.2;\n vertical-align: middle;\n display: inline-block;\n}\n\na.tab-link.selected {\n background: var(--color-primary);\n color: var(--color-text-inverse);\n text-decoration: none;\n font-size: 1.5rem;\n line-height: 1.2;\n}\n\n.bold {\n font-weight: bold;\n}\n\n.hide {\n display: none !important;\n}\n\n.box {\n background: var(--color-bg-default);\n border-radius: 14px;\n box-shadow: var(--shadow-main);\n padding: 1.5em 1em;\n margin-bottom: 2em;\n}\n\n@media (max-width: 900px) {\n body {\n max-width: 100vw;\n padding: 0 0.5em;\n }\n .filters {\n flex-direction: column;\n gap: 0.5em;\n }\n .row {\n flex-direction: column;\n gap: 0.5em;\n padding: 10px 0;\n }\n .box {\n padding: 1em 0.5em;\n }\n }\n\n /* History loading states */\n .loader {\n text-align: center;\n padding: 2em;\n color: var(--color-text-muted);\n }\n\n .loader p {\n margin: 0;\n font-style: italic;\n }\n\n .loader::before {\n content: '';\n display: inline-block;\n width: 20px;\n height: 20px;\n border: 2px solid var(--color-border-muted);\n border-top: 2px solid var(--color-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n margin-right: 0.5em;\n vertical-align: middle;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .loading-more {\n text-align: center;\n padding: 1em 2em;\n color: var(--color-text-muted);\n font-style: italic;\n font-size: 0.9em;\n border-top: 1px solid var(--color-border-default);\n margin-top: 1em;\n }\n\n .loading-more::before {\n content: '';\n display: inline-block;\n width: 16px;\n height: 16px;\n border: 2px solid var(--color-border-muted);\n border-top: 2px solid var(--color-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n margin-right: 0.5em;\n vertical-align: middle;\n }\n\n #history-error {\n text-align: center;\n padding: 2em;\n color: var(--color-danger-text);\n background-color: var(--color-danger);\n border: 1px solid var(--color-state-border);\n border-radius: 6px;\n margin: 1em 0;\n }\n\n #history-error p {\n margin: 0;\n }\n ";
2
2
  export default _default;
@@ -3,32 +3,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = `
4
4
  @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap");
5
5
 
6
- :root {
7
- /* New accent-based color system */
8
- --color-bg-default: #ffffff;
9
- --color-bg-muted: #f8fafc;
10
- --color-bg-alt: #f1f5f9;
11
- --color-bg-hover: #f3f0ff;
12
-
13
- --color-text-default: #22223b;
14
- --color-text-muted: #64748b;
15
- --color-text-inverse: #ffffff;
16
-
17
- --color-primary: #7c3aed;
18
- --color-primary-hover: #5f3dc4;
19
- /* Secondary accent for informational text (author names, etc.) */
20
- --color-info: #3b5bdb;
21
-
22
- --color-border-default: #e0e0e0;
23
- --color-border-muted: #d1d5db;
24
- --color-border-focus: #5f3dc4;
25
-
26
- --color-warning: #ffe066;
27
- --color-warning-text: #7c3aed;
28
- --color-danger: #ffd6d6;
29
- --color-danger-text: #c92a2a;
30
- --color-state-border: #e9ecef;
31
- }
6
+ :root {
7
+ /* New accent-based color system */
8
+ --color-bg-default: #ffffff;
9
+ --color-bg-muted: #f8fafc;
10
+ --color-bg-alt: #f1f5f9;
11
+ --color-bg-hover: #f3f0ff;
12
+
13
+ --color-text-default: #22223b;
14
+ --color-text-muted: #64748b;
15
+ --color-text-inverse: #ffffff;
16
+
17
+ --color-primary: #7c3aed;
18
+ --color-primary-hover: #5f3dc4;
19
+ /* Secondary accent for informational text (author names, etc.) */
20
+ --color-info: #3b5bdb;
21
+
22
+ --color-border-default: #e0e0e0;
23
+ --color-border-muted: #d1d5db;
24
+ --color-border-focus: #5f3dc4;
25
+
26
+ --color-warning: #ffe066;
27
+ --color-warning-text: #7c3aed;
28
+ --color-danger: #ffd6d6;
29
+ --color-danger-text: #c92a2a;
30
+ --color-state-border: #e9ecef;
31
+
32
+ /* Shadow definitions */
33
+ --shadow-main: 0 2px 8px rgba(60, 60, 100, 0.04);
34
+ --shadow-hover: 0 4px 16px rgba(95, 61, 196, 0.08);
35
+ }
32
36
 
33
37
  body {
34
38
  width: 100%;
@@ -397,6 +401,73 @@ a.tab-link.selected {
397
401
  }
398
402
  .box {
399
403
  padding: 1em 0.5em;
404
+ }
400
405
  }
401
- }
402
- `;
406
+
407
+ /* History loading states */
408
+ .loader {
409
+ text-align: center;
410
+ padding: 2em;
411
+ color: var(--color-text-muted);
412
+ }
413
+
414
+ .loader p {
415
+ margin: 0;
416
+ font-style: italic;
417
+ }
418
+
419
+ .loader::before {
420
+ content: '';
421
+ display: inline-block;
422
+ width: 20px;
423
+ height: 20px;
424
+ border: 2px solid var(--color-border-muted);
425
+ border-top: 2px solid var(--color-primary);
426
+ border-radius: 50%;
427
+ animation: spin 1s linear infinite;
428
+ margin-right: 0.5em;
429
+ vertical-align: middle;
430
+ }
431
+
432
+ @keyframes spin {
433
+ 0% { transform: rotate(0deg); }
434
+ 100% { transform: rotate(360deg); }
435
+ }
436
+
437
+ .loading-more {
438
+ text-align: center;
439
+ padding: 1em 2em;
440
+ color: var(--color-text-muted);
441
+ font-style: italic;
442
+ font-size: 0.9em;
443
+ border-top: 1px solid var(--color-border-default);
444
+ margin-top: 1em;
445
+ }
446
+
447
+ .loading-more::before {
448
+ content: '';
449
+ display: inline-block;
450
+ width: 16px;
451
+ height: 16px;
452
+ border: 2px solid var(--color-border-muted);
453
+ border-top: 2px solid var(--color-primary);
454
+ border-radius: 50%;
455
+ animation: spin 1s linear infinite;
456
+ margin-right: 0.5em;
457
+ vertical-align: middle;
458
+ }
459
+
460
+ #history-error {
461
+ text-align: center;
462
+ padding: 2em;
463
+ color: var(--color-danger-text);
464
+ background-color: var(--color-danger);
465
+ border: 1px solid var(--color-state-border);
466
+ border-radius: 6px;
467
+ margin: 1em 0;
468
+ }
469
+
470
+ #history-error p {
471
+ margin: 0;
472
+ }
473
+ `;
package/logintervals.md CHANGED
@@ -1 +1 @@
1
- [{"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.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"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oc",
3
- "version": "0.50.13",
3
+ "version": "0.50.15",
4
4
  "description": "A framework for developing and distributing html components",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -41,12 +41,12 @@
41
41
  "oc"
42
42
  ],
43
43
  "devDependencies": {
44
- "@biomejs/biome": "1.9.4",
44
+ "@biomejs/biome": "2.1.2",
45
45
  "@types/accept-language-parser": "^1.5.6",
46
46
  "@types/async": "^3.2.24",
47
47
  "@types/cross-spawn": "^6.0.6",
48
48
  "@types/errorhandler": "^1.5.3",
49
- "@types/express": "^4.17.21",
49
+ "@types/express": "^5.0.3",
50
50
  "@types/fs-extra": "^11.0.4",
51
51
  "@types/livereload": "^0.9.5",
52
52
  "@types/morgan": "^1.9.9",
@@ -84,17 +84,17 @@
84
84
  "builtin-modules": "^3.3.0",
85
85
  "chokidar": "^3.6.0",
86
86
  "colors": "^1.4.0",
87
- "cross-spawn": "^7.0.3",
87
+ "cross-spawn": "^7.0.5",
88
88
  "dependency-graph": "^1.0.0",
89
- "dotenv": "^16.4.7",
89
+ "dotenv": "^17.2.1",
90
90
  "errorhandler": "^1.5.1",
91
- "express": "^4.21.2",
92
- "form-data": "^4.0.1",
91
+ "express": "^5.1.0",
92
+ "form-data": "^4.0.4",
93
93
  "fs-extra": "^11.2.0",
94
94
  "getport": "^0.1.0",
95
95
  "livereload": "^0.9.3",
96
96
  "lodash.isequal": "^4.5.0",
97
- "morgan": "^1.10.0",
97
+ "morgan": "^1.10.1",
98
98
  "multer": "^1.4.3",
99
99
  "nice-cache": "^0.0.5",
100
100
  "oc-client": "^4.0.2",
@@ -113,13 +113,13 @@
113
113
  "parse-author": "^2.0.0",
114
114
  "read": "^1.0.7",
115
115
  "require-package-name": "^2.0.1",
116
- "response-time": "^2.3.3",
116
+ "response-time": "^2.3.4",
117
117
  "semver": "^7.7.1",
118
118
  "semver-extra": "^3.0.0",
119
119
  "serialize-error": "^8.1.0",
120
120
  "targz": "^1.0.1",
121
121
  "try-require": "^1.2.1",
122
- "undici": "^6.19.8",
122
+ "undici": "^6.21.1",
123
123
  "universalify": "^2.0.0",
124
124
  "yargs": "^17.7.2"
125
125
  }