webpack_modules[moduleId] is not a function

Hi everyone,
[EDIT]: Here is a minimal example
I am trying out the rather new Module Federation in Nodejs.
My host app has the following setup:
module.exports = composePlugins(withNx(), (config, context) => {
    // Update the webpack config as needed here.
    // e.g. `config.plugins.push(new MyPlugin())`
    config.plugins.push(
        new NodeFederationPlugin({
            name: 'absint-api',
            library: { type: 'commonjs-module' },
            filename: 'remoteEntry.js',
            remotes: {
                dashboards: 'dashboards@http://localhost:3203/remoteEntry.js',
            },
        })
    );
    return config;
});

And my remote:
const { composePlugins, withNx } = require('@nx/webpack');
const { NodeFederationPlugin } = require('@module-federation/node');

// Nx plugins for webpack.
module.exports = composePlugins(withNx(), (config, context) => {
    // Update the webpack config as needed here.
    // e.g. `config.plugins.push(new MyPlugin())`
    config.plugins.push(
        new NodeFederationPlugin({
            name: 'dashboards',
            filename: 'remoteEntry.js',
            library: {
                type: 'commonjs-module',
            },
            exposes: {
                './Test': 'apps/plugins/dashboards/backend/src/test.ts',
            },
        })
    );
    return config;
});

The exposed module is just a simply constant:
export const test = 123;

Then somewhere in my host app I am trying to reach for the federated code like this:
import * as test from 'dashboards/Test';

console.log(test);

No matter what I try I always get
TypeError: __webpack_modules__[moduleId] is not a function
I can see that the built main.js of my host contains the result of federation plugin
module.exports = new Promise(function (resolve, reject) {
    if(!global.__remote_scope__) {
      // create a global scope for container, similar to how remotes are set on window in the browser
      global.__remote_scope__ = {
        _config: {},
      }
    }

    if (typeof global.__remote_scope__["dashboards"] !== 'undefined') return resolve(global.__remote_scope__["dashboards"]);
    global.__remote_scope__._config["dashboards"] = "http://localhost:3203/remoteEntry.js";
    var __webpack_error__ = new Error();

    __webpack_require__.l(
      "http://localhost:3203/remoteEntry.js",
      function (event) {
        if (typeof global.__remote_scope__["dashboards"] !== 'undefined') return resolve(global.__remote_scope__["dashboards"]);
         var realSrc = event && event.target && event.target.src;
        __webpack_error__.message = 'Loading script failed.\n(' + event.message + ': ' + realSrc + ')';
        __webpack_error__.name = 'ScriptExternalLoadError';
        __webpack_error__.stack = event.stack;
        reject(__webpack_error__);
      },
      "dashboards",
    );
  }).catch((e)=> {
    console.error("dashboards", 'is offline, returning fake remote');
    console.error(e);

    return {
      fake: true,
      get: (arg) => {
        console.log('faking', arg, 'module on', "dashboards");

        return Promise.resolve(() => {
          return () => null
        });
      },
      init: () => {
      }
    }
  }).then(function (remote) {
    if(remote.fake) {
      return remote;
    }
    const proxy = {
      get: (arg)=>{
        return remote.get(arg).then((f)=>{
          const m = f();
          return ()=>new Proxy(m, {
            get: (target, prop)=>{
              if(global.usedChunks) global.usedChunks.add("dashboards" + "->" + arg);
              return target[prop];
            }
          })
        })
      },
      init: function(shareScope) {
        const handler = {
          get(target, prop) {
            if (target[prop]) {
              Object.values(target[prop]).forEach(function(o) {
                if(o.from === '_N_E') {
                  o.loaded = 1
                }
              })
            }
            return target[prop]
          },
          set(target, property, value) {
            if(global.usedChunks) global.usedChunks.add("dashboards" + "->" + property);
            if (target[property]) {
              return target[property]
            }
            target[property] = value
            return true
          }
        }
        try {
          global.__remote_scope__["dashboards"].init(new Proxy(shareScope, handler))
        } catch (e) {

        }
        global.__remote_scope__["dashboards"].__initialized = true
      }
    }
    try  {
      proxy.init(__webpack_require__.S.default)
    } catch(e) {
      console.error('failed to init', "dashboards", e)
    }
    return proxy
  });

I also inspected the line where it is trying to load the module in the built main.js file
console.log(__webpack_modules__); // contains "<1 empty item>" at moduleid 71
const test = __webpack_require__(71);

The exposed entry point at http://localhost:3203/remoteEntry.js is accessible.
What am I doing wrong?
Thank you in advance :]

I would also like to ask if it is possible to load dynamic remotes, something along the lines of loadRemoteModule from nrwl/nx's angular helper, where I can specify the url of container and exposed module.

Its possible to load remotes dynamically, my module-federation/utilities package should do all that isomorphically.
what happens if your federated import is a dynamic import instead of import from?
is there an async import() somewhere higher up in the dependency tree?

what happens if your federated import is a dynamic import instead of import from?

I have tried dynamic import like
setTimeoute(async () => {
    const t = await import('test/Remote');
    console.log(t);
}, 3000);

But it still gave me the same error after 3 seconds.

is there an async import() somewhere higher up in the dependency tree?
I am unaware of any other async imports in my code. Perhaps it comes from NestJS?

Its possible to load remotes dynamically, my module-federation/utilities package should do all that isomorphically.
Thanks, I have looked at all the utils functions but I had same issues - probably will be resolved once I solve the root issue. The importRemote is for browser only, right?

have you tried declaring the module in host app?
declare module 'test/Remote' ;

have you tried declaring the module in host app?
declare module 'test/Remote' ;

Tried it just now, no success.
Also I tried the dynamic import once more:
import('remote/Test' as any).then(container => {
      console.log("CONTAINER", container);
    })

which produces
C:\Projects\node-mf-demo\dist\apps\host\webpack:\src\app\ sync:2
        var e = new Error("Cannot find module '" + req + "'");
^
Error: Cannot find module 'remote/Test'
    at webpackEmptyContext (C:\Projects\node-mf-demo\dist\apps\host\webpack:\src\app\ sync:2:1)
    at C:\Projects\node-mf-demo\dist\apps\host\webpack:\src\app\app.service.ts:11:32
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

I've edited the OP and included a minimal github example if anyone more experienced could please take a look and perhaps spot what I did wrong.

I have added the following properties to my tsconfig
{
  "compilerOptions": {
    "module": "esnext",
    "moduleResolution": "node"
  }
}

And now I have different error
remote is offline, returning fake remote

TypeError: __webpack_require__.l is not a function
    at C:\Projects\node-mf-demo\dist\apps\host\webpack:\== 'undefined') return resolve(global.__remote_scope__[\"remote\"]);\n         var realSrc = event && event.target && event.target.src;\n        __webpack_error__.message = 'Loading script failed.\n(' + event.message + ': ' + realSrc + ')';\n        __webpack_error__.name = 'ScriptExternalLoadError';\n        __webpack_error__.stack = event.stack;\n        reject(__webpack_error__);\n      },\n      \"remote\",\n    );\n  }).catch((e)=> {\n    console.error(\"remote\", 'is offline, returning fake remote');\n    console.error(e);\n\n    return {\n      fake: true,\n      get: (arg) => {\n        console.log('faking', arg, 'module on', \"remote\");\n\n        return Promise.resolve(() => {\n          return () => null\n        });\n      },\n      init: () => {\n      }\n    }\n  }).then(function (remote) {\n    if(remote.fake) {\n      return remote;\n    }\n    const proxy = {\n      get: (arg)=>{\n        return remote.get(arg).then((f)=>{\n          const m = f();\n          return ()=>new Proxy(m, {\n            get: (target, prop)=>{\n              if(global.usedChunks) global.usedChunks.add(\"remote\" + \"->\" + arg);\n              return target[prop];\n            }\n          })\n        })\n      },\n      init: function(shareScope) {\n        const handler = {\n          get(target, prop) {\n            if (target[prop]) {\n              Object.values(target[prop]).forEach(function(o) {\n                if(o.from === '_N_E') {\n                  o.loaded = 1\n                }\n              })\n            }\n            return target[prop]\n          },\n          set(target, property, value) {\n            if(global.usedChunks) global.usedChunks.add(\"remote\" + \"->\" + property);\n            if (target[property]) {\n              return target[property]\n            }\n            target[property] = value\n            return true\n          }\n        }\n        try {\n          global.__remote_scope__[\"remote\"].init(new Proxy(shareScope, handler))\n        } catch (e) {\n\n        }\n        global.__remote_scope__[\"remote\"].__initialized = true\n      }\n    }\n    try  {\n      proxy.init(__webpack_require__.S.default)\n    } catch(e) {\n      console.error('failed to init', \"remote\", e)\n    }\n    return proxy\n  })":13:1
    at new Promise (<anonymous>)
    at Object.2 (C:\Projects\node-mf-demo\dist\apps\host\webpack:\== 'undefined') return resolve(global.__remote_scope__[\"remote\"]);\n         var realSrc = event && event.target && event.target.src;\n        __webpack_error__.message = 'Loading script failed.\n(' + event.message + ': ' + realSrc + ')';\n        __webpack_error__.name = 'ScriptExternalLoadError';\n        __webpack_error__.stack = event.stack;\n        reject(__webpack_error__);\n      },\n      \"remote\",\n    );\n  }).catch((e)=> {\n    console.error(\"remote\", 'is offline, returning fake remote');\n    console.error(e);\n\n    return {\n      fake: true,\n      get: (arg) => {\n        console.log('faking', arg, 'module on', \"remote\");\n\n        return Promise.resolve(() => {\n          return () => null\n        });\n      },\n      init: () => {\n      }\n    }\n  }).then(function (remote) {\n    if(remote.fake) {\n      return remote;\n    }\n    const proxy = {\n      get: (arg)=>{\n        return remote.get(arg).then((f)=>{\n          const m = f();\n          return ()=>new Proxy(m, {\n            get: (target, prop)=>{\n              if(global.usedChunks) global.usedChunks.add(\"remote\" + \"->\" + arg);\n              return target[prop];\n            }\n          })\n        })\n      },\n      init: function(shareScope) {\n        const handler = {\n          get(target, prop) {\n            if (target[prop]) {\n
 Object.values(target[prop]).forEach(function(o) {\n                if(o.from === '_N_E') {\n                  o.loaded = 1\n                }\n              })\n            }\n            return target[prop]\n          },\n          set(target, property, value) {\n            if(global.usedChunks) global.usedChunks.add(\"remote\" + \"->\" + property);\n            if (target[property]) {\n              return target[property]\n            }\n            target[property] = value\n            return true\n          }\n        }\n        try {\n          global.__remote_scope__[\"remote\"].init(new Proxy(shareScope, handler))\n        } catch (e) {\n\n        }\n        global.__remote_scope__[\"remote\"].__initialized = true\n      }\n    }\n    try  {\n      proxy.init(__webpack_require__.S.default)\n    } catch(e) {\n      console.error('failed to init', \"remote\", e)\n    }\n    return proxy\n  })":1:1)
    at __webpack_require__ (C:\Projects\node-mf-demo\dist\apps\host\webpack:\webpack\bootstrap:19:1)
    at handleFunction (C:\Projects\node-mf-demo\dist\apps\host\webpack:\webpack\runtime\remotes loading:33:1)
    at C:\Projects\node-mf-demo\dist\apps\host\webpack:\webpack\runtime\remotes loading:52:1
    at Array.forEach (<anonymous>)
    at Object.__webpack_require__.f.remotes (C:\Projects\node-mf-demo\dist\apps\host\webpack:\webpack\runtime\remotes loading:15:1)
    at C:\Projects\node-mf-demo\dist\apps\host\webpack:\webpack\runtime\ensure chunk:6:1
    at Array.reduce (<anonymous>)

faking ./Test module on remote

same error with you, is there a way to share a funtion that can use import in a js file or a component that write with sync mode,next/dynamic only accept component type

I'm also seeing this error with the latest plugin (6.5.2-rc6.0). I have a host and 3 remotes (all NextJS apps) and none of the remoteEntry files will load in the host. It looks like the error is thrown in the __webpack_require__ function defined in remoteEntry.js and it's always the same module. I logged { __webpack_modules__, moduleId, and __webpack_modules__[moduleId] } in one of the remote's remoteEntry.js:
{
   __webpack_modules__: {
     'webpack/container/entry/search': [Function: webpack/container/entry/search],
     './amp-context': [Function: ./amp-context],
     './amp-mode': [Function: ./amp-mode],
     '../shared/lib/app-router-context': [Function: ../shared/lib/app-router-context],
     './head-manager-context': [Function: ./head-manager-context],
     '../shared/lib/image-blur-svg': [Function: ../shared/lib/image-blur-svg],
     '../shared/lib/image-config-context': [Function: ../shared/lib/image-config-context],
     '../shared/lib/image-config': [Function: ../shared/lib/image-config],
     'next/dist/shared/lib/image-loader': [Function: next/dist/shared/lib/image-loader],
     '../shared/lib/router-context': [Function: ../shared/lib/router-context],
     '../shared/lib/router/utils/add-path-prefix': [Function: ../shared/lib/router/utils/add-path-prefix],
     '../shared/lib/router/utils/format-url': [Function: ../shared/lib/router/utils/format-url],
     '../shared/lib/router/utils/is-local-url': [Function: ../shared/lib/router/utils/is-local-url],
     '../shared/lib/router/utils/parse-path': [Function: ../shared/lib/router/utils/parse-path],
     '../shared/lib/router/utils/remove-trailing-slash': [Function: ../shared/lib/router/utils/remove-trailing-slash],
     '../shared/lib/router/utils/resolve-href': [Function: ../shared/lib/router/utils/resolve-href],
     './side-effect': [Function: ./side-effect],
     '../shared/lib/utils': [Function: ../shared/lib/utils],
     '../shared/lib/utils/warn-once': [Function: ../shared/lib/utils/warn-once],
     'next/router': [Function: next/router],
     react: [Function: react],
     'webpack/sharing/consume/default/next/link/next/link': [Function (anonymous)],
     'webpack/sharing/consume/default/react/jsx-dev-runtime/react/jsx-dev-runtime': [Function (anonymous)],
     './src/components/SearchButton.module.scss': [Function: ./src/components/SearchButton.module.scss],
     '../../packages/design-system/components/Modal/Modal.module.scss': [Function: ../../packages/design-system/components/Modal/Modal.module.scss],
     './src/components/SearchButton.tsx': [Function: ./src/components/SearchButton.tsx],
     '../../node_modules/next/dist/client/image.js': [Function: ../../node_modules/next/dist/client/image.js],
     '../../node_modules/next/dist/shared/lib/head.js': [Function: ../../node_modules/next/dist/shared/lib/head.js],
     '../../packages/design-system/components/Modal/Modal.tsx': [Function: ../../packages/design-system/components/Modal/Modal.tsx],
     '../../node_modules/next/image.js': [Function: ../../node_modules/next/image.js],
<EMAIL_ADDRESS>[Function<EMAIL_ADDRESS>   },
   moduleId<EMAIL_ADDRESS>   value: undefined
 }

Not sure if this helps, but I'm happy to provide more information if needed.

@benmarch make sure the hosts own remote isn't loading.
If a host loads its own remote, it overwrites the chunk loading global that webpack uses.
In the latests RC, ive turned off chunk flushing remoteEntry files for now to mitigate any errors on my end

@ScriptedAlchemy, thanks for the quick reply.
I've done some digging and it does not appear that the host's remoteEntry file is loading. I tried adding log statements into the file, and inspecting __webpack_require__.c and __webpack_require__.m at runtime, but remoteEntry.js does not appear anywhere.
Please let me know if there is another way to verify. Thanks!

I'm also running into this error with<EMAIL_ADDRESS>used in the host NextJS application and<EMAIL_ADDRESS>in the remote React application.
Below is the following error -
TypeError: __webpack_require__.C is not a function
    at /Users/bayley/Projects/test/frontend20/.next/server/pages/about.js:3541:21
    at Object.<anonymous> (/Users/bayley/Projects/test/frontend20/.next/server/pages/about.js:3546:3)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.requirePage (/Users/bayley/Projects/test/frontend20/node_modules/next/dist/server/require.js:58:12)
    at /Users/bayley/Projects/test/frontend20/node_modules/next/dist/server/load-components.js:61:73

@benmarch book some time here:
https://calendly.com/scripted-alchemy/special-pair-programming-session

@benmarch is the server using the pure delegate or did you use it only for the browser build that has the crash. Id suggest only apply it to browser remote since we had server working this morning.
isServer ? global@url : createDeleggate()

and thanks for testing this - its enough for me to try and replicate the problem - looks like its related to what i initially feared / theorized

@ScriptedAlchemy it's hanging both ways (just replacing the browser and replacing both). I'll keep working on it.
No problem, thanks for taking the time to look into it with me. I'm glad you were able to solve it.

@benmarch try exposing something from the host or if you have exposes: {}, give it some noop file just to test another theory.
Ill investigate but may take a few days

@ScriptedAlchemy I tried exposing an empty React component from the host, but it's still hanging.
Btw, i noticed that there's a circular dependency in the utilities package between common.ts and getRuntimeRemotes.ts. It looks like some of the next modules are loading as circular modules in _app.tsx, so I'm wondering if that might be causing some unexpected side effects. I don't think the common/getRuntimeRemotes cycle is causing that, but maybe there are others.

Ah I figured out the hanging issue @ScriptedAlchemy. I was awaiting revalidate() in _document.tsx. It looks like in some cases it never resolves on the server. If i don't await it then it works just fine, but idk if it properly revalidates. Anyway, things are looking up!

@benmarch okay ill look over it and verify all code paths return a resolve of some kind. if you dont await, its usually not a issue, it will still have side effect of revalidation but ill work on fixing it so no async quirks pop up. Ive used revalidate as side effect in the past without a issue though.

Looks like i can close this issue out


[bug] fix lnet

What type of PR is this?
/kind bug

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Requirements:

[x] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Special notes for your reviewer:
Release note:
none

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+2.8%) to 80.915%

Totals

Change from base Build<PHONE_NUMBER>:
2.8%

Covered Lines:
831

Relevant Lines:
1027

💛  - Coveralls


Regression in<EMAIL_ADDRESS>compared to<EMAIL_ADDRESS>Exclusions from tsconfig.json are ignored

Information
Package + version<EMAIL_ADDRESS>Previous package + version used<EMAIL_ADDRESS>Scenario: I have a Vue component within which I have Typescript errors. I have excluded this specific file through the tsconfig.json's exclude configuration. Using version 2.0.7, this worked as expected, where the errors did not trigger any while using vue-tsc. Updating to version 2.0.11 appears to ignore the aforementioned exclusion. The result of this is that this error now shows up when running vue-tsc.
Reproduction
Steps:

Open https://stackblitz.com/edit/vitejs-vite-ksrj14?file=package.json
From the console, run npx vue-tsc. Note that the version of vue-tsc is 2.0.7. Note that the command does not output any errors.
Change the version of vue-tsc to 2.0.11, e.g. through running npm i<EMAIL_ADDRESS>--save-dev
Run npx vue-tsc again.

Expected: As the error is in src/App.vue, and this file is excluded from type checking within tsconfig.json, no errors are raised, as is previously the case.
Actual: An error is raised due to the error within src/App.vue:

Removing the empty Empty.vue file results in the App.vue being successfully ignored from type checking.

This is an expected error, the tsconfig exclude option does not prevent checking of referenced files, see https://stackoverflow.com/a/64885126.
The presence or absence of Empty.vue causing inconsistencies is an edge case. Errors in App.vue will only be found when global types are generated, but since global types will only be generated from .vue files included in tsconfig, App.vue will only report it when tsconfig includes more than one .vue file.
To ignore errors in App.vue, you may consider using @vue-ignore / @vue-skip instead.
<template>
  <!-- @vue-ignore -->
  <button :type="3"></button>
</template>


Analyzer does assignability/subtype checks much too often

This simple program:
class A {}
class B {}
main() {
  A a = new B();
}

ends up calling isSubtypeOf(B, A) 4 times:

CodeChecker._needsImplicitCast -> isSubtypeOf
CodeChecker._needsImplicitCast -> isAssignableTo -> isSubtypeOf
BestPracticesVerifier._checkForInvalidAssignment -> isAssignableTo -> isSubtypeOf
ErrorVerifier._expressionIsAssignableAtType -> isAssignableTo -> isSubtypeOf

We should be able to refactor _needsImplicitCast to avoid the extra check.
The other ones are harder; I think CodeChecker figures out implicit casts but ErrorVerifier reports errors. That means we're doing twice the work. And BestPracticesVerifier is yet another duplicate code path.
Subtype/assignability checks aren't necessarily cheap; duplicate calls should be avoided when possible.

Presumably this code will be ripped out once we move to CFE, which should handle implicit casts, and all errors required by Dart 2/strong mode. So that'll be one way to fix the performance issue :)


Fixed #24270 -- Scoped bash completion reference to source distribution.

https://code.djangoproject.com/ticket/24270 :django_bash_completion is not part of the Wheel.
Tim's suggestion:

...the best route might be to clarify the documentation to say that the script is included in the "source distribution"...

c.f. https://code.djangoproject.com/ticket/21511: wontfix: not something we want to install to PATH

Rebasing this now.


Getting Started Sample not working

inports
<script src="https://cdnjs.cloudflare.com/ajax/libs/line-chart/2.0.25/LineChart.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/line-chart/2.0.25/LineChart.min.css">

https://github.com/n3-charts/line-chart/blob/master/docs/getting-started.md
sample is not working.

Hi @Farcek
could you be more specific about what is not working? Scripts not loading, data not loading, chart not loading, etc.
You can find tons of working examples here http://n3-charts.github.io/line-chart/#/examples
Best,
Christoph

import
<script src="/bower_components/jquery/dist/jquery.js"></script>
<script src="/bower_components/foundation-sites/dist/foundation.js"></script>
<script src="/bower_components/foundation-sites/js/foundation.offcanvas.js"></script>

<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="/bower_components/angular-messages/angular-messages.js"></script>
<script src="/bower_components/angular-cookies/angular-cookies.js"></script>

<script src="/bower_components/d3/d3.min.js"></script>
<script src="/bower_components/pie-chart/dist/pie-chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/line-chart/2.0.25/LineChart.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/line-chart/2.0.25/LineChart.min.css">

controller
...
.controller('MainCtrl', function ($scope) {
        $scope.data = {
            dataset0: [
                {x: 0, val_0: 0, val_1: 0, val_2: 0, val_3: 0},
                {x: 1, val_0: 0.993, val_1: 3.894, val_2: 8.47, val_3: 14.347},
                {x: 2, val_0: 1.947, val_1: 7.174, val_2: 13.981, val_3: 19.991},
                {x: 3, val_0: 2.823, val_1: 9.32, val_2: 14.608, val_3: 13.509},
                {x: 4, val_0: 3.587, val_1: 9.996, val_2: 10.132, val_3: -1.167},
                {x: 5, val_0: 4.207, val_1: 9.093, val_2: 2.117, val_3: -15.136},
                {x: 6, val_0: 4.66, val_1: 6.755, val_2: -6.638, val_3: -19.923},
                {x: 7, val_0: 4.927, val_1: 3.35, val_2: -13.074, val_3: -12.625}
            ]
        };

        $scope.options = {
            series: [
                {
                    axis: "y",
                    dataset: "dataset0",
                    key: "val_0",
                    label: "An area series",
                    color: "#1f77b4",
                    type: ['line', 'dot', 'area'],
                    id: 'mySeries0'
                }
            ],
            axes: {x: {key: "x"}}
        };
    })
...

##partial
<div class="my-chart" ng-controller='MainCtrl'>
    <linechart data="data" options="options"></linechart>
</div>

the not working..
i flowing https://github.com/n3-charts/line-chart/blob/master/docs/getting-started.md helping page?

AND why bower not supported ?

Can you post the error messages from the console, otherwise we cannot help you. Maybe try to create a codepen and share it, so I can reproduce the error.
Bower integration is discussed here #438 and will be coming soon. However for now we are using npm

I just copied the sample over to codepen and it works great: http://codepen.io/chaosmail/pen/qZzxEE
I just saw that you are not using the sample code, but loads of other imports. Can you please try to disable those, especially <script src="/bower_components/pie-chart/dist/pie-chart.min.js"></script>

There was once an issue #295 in combination with pie charts,

ok. tnx.


Add support for com.ibm.diagnostics.healthcenter.probes.transmit

This patch adds a new property to the appmetrics.properties file com.ibm.diagnostics.healthcenter.probes.transmit which can be true or false.
If set to true probe data will be sent to the monitoring client.
If set to false the data will not be sent. false is the default.
I have added a new native method (nativeEmitCheck) that reports whether data should be transmitted. This property is checked at startup and it's value cached and the native method is only called once, at start up, with the true/false value then stored in index.js. This prevents repeated calls from Javascript to native code.
In the future the property could be extended to be a comma separated list of probes to send data for. (With true enabling all probes as now and false disabling all probes.) Changing this would not break users who wanted to continue setting true or false.
nativeEmitCheck() could be extended to take a probe name and return whether that probe was enabled. (If neccessary the no-args form could still report whether all probes were globally enabled or not.) nativeEmitCheck() is not part of the public API so could be safely changed or replaced if necessary.
This is for issue #110

I'm not yet convinced this is the right approach. We should be transmitting the data if MQTT is enabled (once there is a consumer for it). Once that's in place do we really need/want to have a global disablement of probe data (vs. a per-probe enable/disablement?).
I think we need to discuss the use cases and possible solutions to them before forging ahead with implementation.

my concern with making it reliant on MQTT is that we end up with an all or nothing approach and its tied to the transport. If we add new transports then we would have to make changes to make it work with that.  The other concern I have is that we don't at the moment have the ability to disable probes so it quite possible that users may want GC data over MQTT for example, but not the probe data.  Having it tied to the transport will not give us that flexibility.   This is also the first pass at this in the agile sense.  We can give more fine grained control in future updates

Closing as this isn't the implementation we are going to use initially.


Gracefully handle no access to Tableau Project for user

Gracefully handle no access to Tableau Project for user (see attachment)
no permissions on tableau project.pdf

Bizarrely, the Tableau Javascript API does not have any built-in way to detect when a viz fails to load. You can detect when pretty much any other operation fails, but not this most basic thing.
"Thinking out loud" on options...
#1: Message listener, per https://community.tableau.com/message/284000. Listen to incoming messages, and try to detect the ones that signal a failed viz load. I have tried this in the past and it did not work terribly well, but it might be worth giving it another shot.
#2: Hack some basic Javascript objects so that we can listen in on all AJAX calls and detect when a call to Tableau returns 404. This should work, but the potential to accidentally destroy the world is high.
#3: Accept that dataND will not handle this gracefully, and focus on making sure that the "dataND" Tableau project is accessible by everyone with access to the dataND website. Requires no code, which is nice, but limits our options.
#4: Work out a way to coordinate dataND with Tableau Server, so that dataND knows who has permissions for what. This would probably be the best solution, since we would know a user's access before they ever visit the page--we could hide the report entirely. This will require us to figure out the Tableau REST API (not to be confused with the Tableau Javascript API), but we need to figure that out anyhow.
So, leaning toward #4 for the long term; probably just fall back on #3 until we get #4 done.


Can't load content from Auth0 login page: net::ERR_BLOCKED_BY_RESPONSE

When the browserwindow opens and goes to the auth0 login URL, it tries to use a script (lock.min.js) that fails to load. The complete error is:
Failed to load resource: net::ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep
Obviously, this makes page unusable. Any idea why this might be happening?
Any help to point me in the right direction would be much appreciated.

At first glance this seems to be something to do with Cross Origin Embedder Policy

Thanks for your help. I figured that out and solved the issue by changing the headers to accept content from auth0.

Can you provide more details? What do you mean by "changing the headers"? In which request? And to what values?


Tabs Azure AD Single Sign-On Sample: resourceDisabled

I am trying to run your sample: "Microsoft Teams - Tabs Azure AD Single Sign-On Sample"
Like here
Following the steps was not hard and everything worked until I launch my app. In this case I get an error message:

Unfortunately I could not find anything with Google and because there is not a lot I could do wrong - the sample instructions are pretty clear - I think something else must be wrong.
How can I start to investigate where the error is coming from? If I inspect the window of the app with DevTools I do not get more information actually...
Just that:
main-f2e44df2875d9103.js:1 AuthenticationService: Authentication - {"context":"ShellService::requestMessage","subContext":"AuthElectron","message":"Received an error from IPC::{"eventName":"aadGetToken","error":"resourceDisabled","correlationId":"8fbcbc8e-d9eb-43ef-b70f-dbcb3b12d37a"}::isOnline-true","errorCode":"RemoteOperationFailed","correlationId":"8fbcbc8e-d9eb-43ef-b70f-dbcb3b12d37a"}

@web265p3 - just to make sure all the configs are correct, could you please try Teams Toolkit?

Please re-open if you are still facing this issue.


Is it possible to do this?

Is it possible to do hierarchical timing transitions like this?
https://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B08MbvYZK1iNTGRLb2Zud2RUNFE/animation-meaningfultransitions-hierarchicaltiming-4do_large_xhdpi.webm

I think it's from here - https://www.google.com/design/spec/animation/meaningful-transitions.html#meaningful-transitions-hierarchical-timing
I made a Delay helper, and wrapped each box with a Delay and Motion. worked out nicely -
import React, {Component} from 'react';
import {render} from 'react-dom';
import {Motion, spring} from 'react-motion';

function sleep(period){
  return new Promise(resolve => {
    setTimeout(()=> {
      resolve();
    }, period);
  });
}

// helper to delay a prop being passed by `period` ms
// also takes function-as-children
class Delay extends Component{
  static defaultProps = {
    period: 0
  };
  state = {
    value: this.props.initial
  };
  async refresh(props){
    let {value, period} = props;
    await sleep(period);
    this.setState({
      value
    });
  }
  componentDidMount() {
    this.refresh(this.props);
  }
  componentWillReceiveProps(next){
    this.refresh(next);
  }
  render(){
    return this.props.children(this.state.value);
  }
}

const boxes = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];

const styles = {
  wrap: {
    width: 600
  },
  box: {
    margin: 5,
    width: 100,
    height: 100,
    float: 'left',
    backgroundColor: 'blue',
    transformOrigin: 'center center'
  }
};

class App extends Component{
  render() {
    return (

        {boxes.map((box, i) =>

          <Delay initial={0} value={1} period={i*80}>{ delayed =>
            <Motion defaultStyle={{scale: 0}} style={{scale: spring(delayed)}}>{ val =>
              <div style={{...styles.box, transform: `scale(${val.scale})`}}>
                {box}

            }</Motion>
          }</Delay>

)}

    );
  }
}
render(<App/>, document.getElementById('app'));

Here's your demo as a Pen:
http://codepen.io/anon/pen/eJrKKX?editors=001
StaggeredMotion works well for that same effect.  The only potential wrinkle would be if you wanted to have row 2 start transitioning before row 1 is complete; it's doable, just more complicated.  (You could nest StaggeredMotion instances, one for the rows and one for the columns, if you knew which item would end up in each.)
With the Delay approach, it seems like bad things would happen if you received new props before the transition had finished.  One of the awesome things about ReactMotion (and by extension StaggeredMotion) is that it's reversible and cancelable by default.

yes agreed! Indeed, there's a class of animations that involve timing etc that isn't really suited for react-motion (at least directly) - these animations usually have their own state/sequencing logic. Fun to solve these on a case by case basis, but there's clearly a need for higher level constructs. I'm hoping the incoming atRest api makes these easier.

Any way to get this to work with TransitionMotion? I have a slide system where some slides use React Motion internally, and others use a standard Transition (and mount/unmount with TransitionMotion), all driven by React Router. I'd like to simply chain from the slide's internal animation (if it has one) to the next slide (or use a default if it has none). I have everything working, except I need to delay the new slide's in transition until the parent slide's out is complete (and then in reverse the other way).
It doesn't look like there's a way to do that without an atRest API, but I'm hoping I'm wrong?

I ended up delaying the React Router change, which triggers the second animation to give the first a chance to finish. It's not the prettiest, but it'll work for now. :-)

You could use setTimeout if you know the approximate duration of the animation to fake atRest

Here is my demo as a Pen , you can change the martix and the custom variables to view different effects.

Awesome work @devlee!!! That's super cool. I might have to try and get that in React Motion UI Pack :)

@souporserious  :) I used to make a mistake and now I have used scale instead of changing width and height ~

thanks for the example! however, I havent tested it but shouldn't you cancel the timeout if the component is going to unmount. Something like:
class Delay extends Component{
  static defaultProps = {
    period: 0
  };
  state = {
    value: this.props.initial
  };
  refresh(props){
    let {value, period} = props;
    this.timeout = setTimeout(() => this.setState({
      value
    }), period);
  }
  componentDidMount() {
    this.refresh(this.props);
  }
  componentWillReceiveProps(next){
    this.refresh(next);
  }
  componentWillUnmount(){
    clearTimeout(this.timeout);
  }
  render(){
    // function-as-children
    return this.props.children(this.state.value);
  }
}

That way if it unmount midway through an animation you wont have problems.

Hi guys, I read this thread before I wrote a demo piece for my not yet finished portfolio site.
TL:DR
GSAP, pre computed delay info, here's the demo:
http://kye.tech/pixelsv5
Background
I was thinking a lot about how to solve this grid motion problem, and this thread was a good starting point for some inspiration.
I did some tests around using react-motion for a matrix of spring like behaviour (water ripple effect), but the performance and serial nature of the spring connections didn't lend itself well to the problem I was looking to solve, in the end I pre-computed a table of delay data and used that with GSAP for it to run arbitrary motions that propagate through the tiles. you can have any number of waves running concurrently , (Click mutliple tiles)
Each time you click a tile,   Each tile sent an animation with a specific delay based in the tile clicked, its distance to every other tile and the settings of the animation. Effectively its an array of arrays, such that the delay info is different for each tile clicked. As you click more times, each tile stacks each animation its given, and adds them together, enabling waves that mix together.
I used GSAPs custom bezier drawing function to draw my own set of wave shapes (four in total) which meant I could achieve the exact motion styles I was after.
For most purposes this is overkill, but the concept of pre-computed delays based on distance to tell GSAP what to do with each tile, can be used in many different ways,
I built an interface using React to control the motion and colour of the tiles in React. The tiles are rendered with WebVR / Aframe.  Using the paramters in the motion control panel shows that you can get some pretty interesting and crazy results. Also, if you click two tiles a little distance apart, you get the classic wave interference pattern like the double slit experiment. :-)
Im pulling the inidividual RGBs out of PNGs and pushing them to the tiles.
I built a colour animation system by way of a json object that acts like a script telling GSAP how to animate the colours on the fly. Lending itself to the possibility of either slide shows or sprite animations. See sonic !
Its very heavy on computation / memory, 32 x 32 matrix with potentially 5 / 6 separate motions running through them concurrently. is 6000 GSAP animations. lol.
Hope you like. And thanks for inspiration.
http://kye.tech/pixelsv5


Search Engine blog

Fixes #232
Preview

@AlexandracmONRR
"XML" needs to be capitalized in these locations, otherwise looks good! I tested all links, and they all work and direct as expected.

@cthomasONRR thanks Christine! I've made the requested changes!

@AlexandracmONRR Suggest a rewrite for this sentence - "Our developer at the time used this spreadsheet to upload it to our Content Management System (CMS) which integrates with our database." "It" is a little unclear to me. How about "Our developer at the time used this spreadsheet to upload the redirect links to our Content Management System (CMS) which integrates with our database"....or something similar?

I would change all verbs to past tense here - "Search.gov instructed us to notify them when we launch the new website so they can replace the beta site domain with the new live site domain."

A word choice thing - take or leave it - change "would make for" to "would create" in "We initially thought that by adding as many of our URLs to the XML sitemap as possible, we would have a robust and complete sitemap that would make for an accurate search experience." And change "to verify" to "to be accepted" -

I had to look up what canonical means in this case -

@AlexandracmONRR @eelzi-ONRR @Maroyafaied This blog is awesome! As usual, I learned a ton and I think we will get a ton of views and shares.

@AlexandracmONRR I'm good with Lindsay's changes on my sentences, I put a thumps up on those comments. I'll let @eelzi-ONRR look at the last suggestion for word change.

@Maroyafaied - thank you - i just made those updates to the blog.
@eelzi-ONRR - the second comment of lindsay, I may need a bit more guidance on how to define canonical, which i looked up as "the best representative page for duplicate pages", but you may have a better way to define it for readers.

We can add this: "When Google recognizes duplicates of a page, it will prioritize the page marked as canonical in the results list".
Does that explain it well enough?

@lpgoldstein - incorporated your edits.
@eelzi-ONRR and @Maroyafaied - incorporated edits drafted by Erin.

@AlexandracmONRR I reviewed and approved :) I will send the link to the public affairs manager to let him know we'll be publishing and sharing on the list servs. I'll include you in the email incase he has any changes.

@AlexandracmONRR this is mis-spelled, it should be with an a instead of an o. Also, Chris will send us revisions in a word doc in a bit so you can wait to make the change until we get his changes.

@Maroyafaied - I've incorporated your edit and Chris M's edits into this most recent commit.

@Maroyafaied Looks good! It's ready to merge :)


Check skupack for graph definition before run a graph.

Check graph name from skupack environment before check getGraphDefinitions.
@RackHD/corecommitters

:+1: after fix indent

Great change, +1


Taxonomy Overview does not use applied filters

When you apply filters to a taxonomy, the overview page does not update to reflect.  Maybe we don't care.

this is due to the fact that we started using taxon_id instead of this.state.search where it contains all the genome ids. now I am checking whether the counted genome ids are equal to the taxonomy genome count and if not, will add an extra query param (this.state.search)
will be available soon on alpha. please reopen if you have a concern.

I figured this was the case.  The easiest way to do this is to still use state.search, but make sure that the state.search passed into overview is the taxon_id query instead of the list of id’s query.

On Aug 4, 2016, at 3:45 PM, Harry Yoo<EMAIL_ADDRESS>wrote:
this is due to the fact that we started using taxon_id instead of this.state.search where it contains all the genome ids. now I am checking whether the counted genome ids are equal to the taxonomy genome count and if not, will add an extra query param (this.state.search)
will be available soon on alpha. please reopen if you have a concern.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/PATRIC3/patric3_website/issues/822#issuecomment-237662420, or mute the thread https://github.com/notifications/unsubscribe-auth/AALobqPr5vKBLsKQIRaqMac8snvU4hUfks5qckF1gaJpZM4JbCX7.


Gonzales 3.2 - Fix brace style rule

Fixes the brace-style rule to work with the latest version of gonzales.
Note: Travis will fail as there are broken tests on gonzales-3-develop branch. Verify by checking brace-style rule test success.
DCO 1.1 Signed-off-by: Ben Griffith<EMAIL_ADDRESS>

Happy to change the comments but we don't have a standard or lint this. If I was to keep continuity (which I'm happy to do and submit a change) we have comments like the following:
//////////////////////////
// Multi-part operators
//////////////////////////

Thoughts?

I think they're just your preference :stuck_out_tongue:
We should only be using jsdoc blocks for jsdoc style comments, multiline comments for more than one line of text and normal single line comment for small single lines. I dont see the benefit of splitting sections with those type comments as its much less likely to be followed and enforced..

Actually it was a standard as joined, I've just worked towards that. You can blame Sam!
I can change them to the style above if you want but I prefer to break things up into sections as it makes it a lot easier to come back to in the future. Single line comments don't do that easily.

This has been refactored and broken up further so it's no longer necessary to comment it as much.

:+1:


from model_base import ModelBase

Hi,
very impressive implementation!
Could you please add the model_base module?
All the best,
Rico

Hi.
Could you please add the model_base module?

Hello,
Regarding this issue.I have added the model_base file and other required supporting files also and tested so closing this issue if you have any further queries and concerns you can contact me


CV method restarts model each time

I am using this code
classifier = lgb.Booster(
    params=params,
    train_set=lgb_train_set,
)

result = lgb.cv(
    init_model=classifier,
    params=params,
    train_set=lgb_train_set,
    num_boost_round=1000,
    early_stopping_rounds=20,
    verbose_eval=50,
    shuffle=True
)

It is my understanding that running the latter line multiple times would continue training the model. This would be useful if you would like to modify parameters and train it some more. Or maybe if you would like to feed in additional data. However when I try with the above it will erase and restart the model each time.
I have also posted this in https://stackoverflow.com/questions/45654998/lightgbm-continue-training-a-model to seek a workaround. But I am posting here because I think the CV method is not working as intended.

It is my understanding that running the latter line multiple times would continue training the model.
However when I try with the above it will erase and restart the model each time.

It is the expected behavior.

This would be useful if you would like to modify parameters and train it some more. Or maybe if you would like to feed in additional data.

You can't resume training with a different dataset.

But I am posting here because I think the CV method is not working as intended.

What is not working?

I am reading the source code at
https://github.com/Microsoft/LightGBM/blob/70b17a545bd90ea92b4518c5e4f3548ab8a11b15/python-package/lightgbm/basic.py#L994-L1005
which states:

Set predictor for continued training, not recommand for user to call this function.
Please set init_model in engine.train or engine.cv

So it seems to me that continued training is supported but I am not doing it right.

ping @wxchan

@fulldecent I check it yesterday, if you set init_model=None in lgb.cv, you will get different result. (w/o init model). How do you judge if it's a continued training or restart?

@fulldecent updates ?

Here is my test case:

And then immediately after, I run the same line:

My expectation was that run 2 would start with a score of 0.0677 because the knowledge from the first run would be incorporated. Instead, the second run is redoing everything from scratch.

cv is training muplite models. we can't change one gbm object (init_model) into multiple gbms object.

@wxchan init model can be used in CV.
@fulldecent from you code, you both use init_model=classfier in two runs.

@guolinke Correct I thought the CV was mutating the classifier object. This is because the CV method does not provide a classifier as an output.

@fulldecent
The lgb.CV doesn't return the lgb.Booster object. As a result, you cannot use it as the init_model.
You should use the return object of lgb.train as init_model.


Highlighting isn't working as expected

Could we can the same highlighting options that sublime text allows us to have in phpstorm for this plugin?
Sublime text also highligts bash commands where phpstorm doesn't.
In sublime text i have the following highlighting:

And in phpstorm i have the following:

Please see #90


Add ForecastingLearner and ForecastingPredictor

Issue #, if available:
Description of changes:

Add ForecastingLearner and ForecastingPredictor and tests.
Fixes to save/load logic of trainers
Minor fixes to Forecasting
Move is_fit property from tabular abstract learner to core.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@huibinshen fyi

Job PR-1764-3 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1764/3/index.html

Job PR-1764-4 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1764/4/index.html


[bug]add_delay_column() does wrong behavior when flights depart or arrive earlier than scheduled time.

this issue was not the bug about main-branch.


Where is the tutorial about how to use it?

Hi,
Where I can find the tutorial about how to use pymonad ?

This approach complicates the code a lot, I wonder if anyone uses this library in serious projects ?

https://www.miguelfarrajota.com/2021/06/monads-in-python-with-pymonad/


Add missing pay subsidy migrations

Description :sparkles:
Paysubsidy percentages were changed during the calculator rules update, but the changes to the Application and Calculator model were missing the migrations.
Issues :bug:
Testing :alembic:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

API branch is deployed to platta: https://helsinkilisa-pr2190.api.dev.hel.ninja/healthz :rocket::rocket::rocket:

APPLICANT branch is deployed to platta: https://helsinkilisa-ui-pr2190.dev.hel.ninja :rocket::rocket::rocket:

HANDLER branch is deployed to platta: https://helsinkilisa-ui-handler-pr2190.dev.hel.ninja :rocket::rocket::rocket:

TestCafe result is success for https://helsinkilisa-ui-pr2190.dev.hel.ninja :laughing::tada::tada::tada:


Bug: Can't pin OneDrive Desktop to favorites

Description
I keep my dekstop in the cloud on OneDrive. I can pin any folder in my OneDrive to my favourites except my desktop, so I have managed to recreate every link from my Quick Access list in Windows Explorer in Files, all except the desktop, but I've no idea why
Steps To Reproduce
Go to OneDrive
Right click the Desktop icon
Select 'Add to Favourites'
Requirements
Make OneDrive Dektop folder pinnable to Favourites
Files Version
<IP_ADDRESS>
Windows Version
10.0.22621.2715
Log File
debug.log

Thanks for the report, I've added this to the project board.

@KristianJ79 does it work if you pin it in File Explorer?

@KristianJ79 does it work if you pin it in File Explorer?

Hi @yaira2 You mean the Windows native File Explorer?
Yes it does.

Does it display in Files?

@yaira2 Yes. I can navigate to the folder and open it/access all the files etc. It just won't pin to the favourites bar no matter how many times I try!

I meant does it show in favorites in Files if you pin it in File Explorer?

@yaira2 Ah, I see what you mean, apologies. Yes, it's already pinned in File Explorer

@yaira2 No, that's the whole issue. It's pinned to Quick Access in Windows Explorer but won't pin to favourites in Files. I can navigate to and interact with the folder, I just can't pin it.

@yaira2 I don't know if someone has fixed the bug, but when I opened my laptop today, my Desktop icon is now magically pinned to favourites! Shall I close the matter or wait for someone else to confirm?

We recently released v3.0.15 so while we didn't specifically include a fix for this issue, it may have been fixed by another change.


feat: expose global recomputeAllPoppers helper

Currently, Floating Vue is already calling this function on the window resize event. While in some cases, user might want to trigger this manually in cases like tab switch or the others.
For example https://twoslash.netlify.app/refs/notations, when you click the Input Code on the first tab group, you will see the popup still persist.

I'm not sure I understand the link between the issue and recomputeAllPoppers. Would the correct behavior be to hide the popper?

Current behavior:
https://github.com/Akryum/floating-vue/assets/11247099/99da265f-f169-42b4-b9d5-31ae9afa29ec
Expected behavior:
https://github.com/Akryum/floating-vue/assets/11247099/62d19842-f094-4471-97aa-d5145753eb27
This PR itself does not fix the issue but adds the capability of it. Users could add the call to recomputeAllPoppers on tab switch.

A temporary workaround we have: https://github.com/twoslashes/twoslash/commit/0e8cecae215ffe43af989e394d44b447f4e25a32

Wouldn't it be better to observe visibility on target?

Wouldn't it be better to observe visibility on target?

That would do, are you ok with enabling it by default for listening to every element?


[Bug] SABnzbd - Post processing has no "Use tags from indexers" settings

Guide Name

[ ] Bazarr
[ ] Downloaders/Deluge
[ ] Downloaders/NZBGet
[ ] Downloaders/Qbittorrent
[ ] Downloaders/ruTorrent
[X] Downloaders/SABnzbd
[ ] Downloaders/Other
[ ] Guide-Sync
[ ] Hardlinks/Docker
[ ] Hardlinks/Dockstarter
[ ] Hardlinks/Native
[ ] Hardlinks/Synology
[ ] Hardlinks/TrueNAS-Core
[ ] Hardlinks/Unraid
[ ] Misc
[ ] Plex
[ ] Prowlarr
[ ] Radarr
[ ] Sonarr
[ ] Other

Description
SABnzbd Settings => Switches => Post processing no longer contains "Use tags from indexers":
https://github.com/TRaSH-Guides/Guides/blob/1875b91fdaf19a0ae9dd06685207f3f77fdfb99f/docs/Downloaders/SABnzbd/Basic-Setup.md?plain=1#L97
Not sure when it was changed, but it's not in 4.0.3
Expected Behavior
Remove the line and update the screenshot, maybe update where it was moved (if it was moved and not removed, I can't find it)
Screenshots

Additional Context
No response

Looks like it was removed in 3.7.0Alpha1 (release notes, commit removing it) and is now just always enabled, so just removing it from the guide should be sufficient.


RepresentationSystem & UnitSystem

With the refactoring of the ADM to a language-agnostic data model, there are questions of how we associate to the existing ADAPT UnitSystem and RepresentationSystem (currently only in the C# code & in XML files).
Both systems are designed as interfaces that can be overridden at implementation.   This item is for tracking the migration of this interface into the generic model.

Insofar as many components will refer to representations and units, we need a place for this as part of the ADM work.   The path of least resistance would seem to be creating one or two github repos (for the two together or each separately) and maintain the source of truth in that location.

In general, I agree. While I think they need to live in separate repos, we need to acknowledge there is a one-way dependency between them. The RepresentationSystem uses the UnitSystem in describing the default/allowed units for each representation.

I have the additions for the RepresentationSystem ready to support the deprecation of the C# enumerations, and intend to create two new Github repositories:  ADAPT-Representation and ADAPT-UnitOfMeasure.   The contents in each case will initially be the xml file which will represent the source of truth, and the associated xsd file.  Using the XML file itself as the source of truth will enable transparency in changes via file diffs.
The C# UnitSystem and RepresentationSystem assemblies should eventually become derivative projects of the new repos.

I'd love to have the contents of both available via web service. Especially the ability to sync a subset that doesn't include all the language label overhead.

@strhea Personally I'm inclined to script it into a SQLite database that could be queried locally instead of needing the overhead of service.   As I thought about it, however, both my database and your service are derivatives we both can make and cannot be the source of truth.
The benefit of the XML file is we can diff it as a text file.   If we treat the database file as a source of truth, we can't diff it.   If we make a service, who hosts it, maintains it, etc.   To comply with the license restrictions on ADAPT, we'd need the service to be open source, and then we are back to the question of what format the data is inside the service.

Agreement in Oct 5 2022 meeting that exclusive of the means of delivery, the XML files will be the source of truth and placed in their own repos.

In the end we chose JSON over XML.   We renamed Representation to Data Type Definition, and published both controlled vocabularies for both Data Type Definitions and Units of Measure here:  https://github.com/ADAPT/Standard


Sorting by nested fields

Summary
As a TinaCMS developer I want to sort by nested fields so that I can present results according to the order of those field values
Sample field definition:
{
  type: 'object',
  name: 'numbers',
  fields: [
    {
      name: 'speed',
      type: 'number',
      required: true,
    },
    {
      name: 'glide',
      type: 'number',
      required: true,
    },
    {
      name: 'turn',
      type: 'number',
      required: true,
    },
    {
      name: 'fade',
      type: 'number',
      required: true,
    },
  ],
},

Should be able to sort by numbers.speed
Expected Results

result 1
result 2
example output
UI/UX

Notes
Currently any nested fields are being excluded from indexing which prevents sorting on these fields

When we circle back to this, we'll have to decide how this behavior works for an object with templates:
Certain sub-fields may be present in some documents, but not others.


[BUG] Locatebar empty in 0.6.0

Locatebar (MOD-K) is empty when opened. No suggestions like > , ft , :
Tried to press tab and arrow keys but it seems to be not just hidden but not
generated at all.

Is there any open folder? Because that's the requirement and I think it changed the default behaviour from the last version. The only valid options from that list for non-opened folders would be the command palette, open documents and go to line. That needs to be fixed. If a folder has been opened then I'm not sure what's happening in your particular case.

Ya, no, no open folder — just the default environment.


how to install the latest eos?

I find the latest eos downloaded from this repo doesnt provide a way to install all tools properly. before, I can get nodeos, cleos, keosd and eosiocpp after I execute make install under build directory. now I have to manually link the tools to somewhere the bash can find. but eosiocpp still can't work properly. it can't find STL headers. how am i supposed to install the latest eos?

hey @breadbread1984 I also had the same issue where the eosiocpp command does not work at all, just wondering if you have solved the problem? thanks

@KennyLiu25775 the latest 1.1 version move all installed files into /usr/local/eosio . you need to add /usr/local/eosio/bin to environmental variable PATH and add /usr/local/eosio/lib to environmental variable LD_LIBRARY_PATH to make bash understand where the binaries is.

@breadbread1984 hey man sorry i am little dizzy now haha, could you explain little more on this, I am pretty new to EOS dev and C++, hope you can help me, appreciate it

you can find all tools you need under directory /usr/local/eosio/bin .

oh ok thanks buddy, appreciate it

no problem

hey buddy I am so sorry, but would you mind explaining how to "add /usr/local/eosio/bin to environmental variable PATH and add /usr/local/eosio/lib to environmental variable LD_LIBRARY_PATH"? i am not very familiar  with  shell command... :(

@KennyLiu25775 , should be this here:
export PATH=/usr/local/eosio/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/eosio/lib:$LD_LIBRARY_PATH

If you're new to all this, you may find it easier to go with docker based installation:
https://developers.eos.io/eosio-nodeos/docs/docker-quickstart


Buildpack fails on 'Download and unzip pcre' step

-----> Cleaning up...
-----> Building home from herokuish...
-----> Injecting apt repositories and packages ...
-----> Adding BUILD_ENV to build environment...
-----> .static app detected
-----> Copy static files to www
-----> Download and unzip pcre
remote: curl: (7) Failed to connect to ftp.csx.cam.ac.uk port 80: Connection refused

Looks like the curl to ftp.csx.cam.ac.uk is failing.  Maybe this is temporary, but I wanted to add a note here in case anyone else is experiencing this.

As referenced in #32, I upgraded herokuish on the host machine and the build was successful.


feat: make optional use latest index in landing page

In this PR, I added an input to doc-deploy-dev and doc-deploy-stable so we can skip when needed the step to overwrite the index.html page.
It will be used in some internal projects.
Tested here successfully.
** Correct the name of the branch used in PR#492

Approving this. Please, apply the suggestions to ensure that the multi-line description render as expected.
Once merged, I will perform a patch release.

@jorgepiloto could you add me in the contributors? It looks like I am not authorized to merge the PR.

Let's wait for #491 to be merged before doing the patch release


Public types

Do you plan on making types and interfaces like jsonLoader public (like it was with for example JsonSchemaDocument before)?
That would simplify definition of types/structs that have loaders as members or function paramerters.
If not could you suggest an alternative to achive the same without losing type safety to interface{}?

I can make the interface jsonLoader public, does that solve your issue ?

I am currently using gojsonschema to validate input for a web application and I would like to avoid to reload the schema for every request from disk. With the pre-christmas version I could just load the schemas once and put them into a map for use by the requests.
I guess I can use the jsonGoLoader to at least avoid file io for every request. So having JsonLoader public should solve the issue for me, let me try things first and I let you know.

Maybe that is what you are looking for ? https://github.com/xeipuuv/gojsonschema#validation

Yes, and if JsonLoader is public I can do things like
schemas := make(map[string]gojsonschema.JsonLoader)
schemas["someschema"] = gojsonschema.NewGoLoader(someObjectUnmarshaledFromFile)

and use the loader from the map later when validating my data. To create that map or any type with JsonLoader as member it has to be public. But I am open for different ideas if you want to keep it private. But making it public should not hurt because I guess the private loaders will always implement the JsonLoader interface anyway, right?

This works, alternatively you can create a map of gojsonschema.Schema ( public ),
this is up to you.
Now you are right, i guess it makes sense to have the JSONLoader interface made public.

Oh right, for my example a map of schemas would be more convenient.
A public Loader interface could also enable more fancy loaders like fetching from databases over non http interfaces (e.g. protobuffer interface of riak) and things like that, that do not need to be built in but could come in handy in specific use cases.

I agree


Bug: [deep-readonly] DeepReadonly doesn't cover RegExp

Versions

package
version

typescript
5.0.4

ts-essentials
9.4.2

Repro Code
export type Primitive = string | number | boolean | bigint | symbol | undefined | null;
export type Builtin = Primitive | Function | Date | Error | RegExp;
export type AnyArray<Type = any> = Array<Type> | ReadonlyArray<Type>;
export type IsTuple<Type> = Type extends readonly any[] ? (any[] extends Type ? never : Type) : never;
export type IsAny<Type> = 0 extends 1 & Type ? true : false;
export type IsUnknown<Type> = IsAny<Type> extends true ? false : unknown extends Type ? true : false;

export type DeepReadonly<Type> = Type extends Exclude<Builtin, Error>
  ? Type
  : Type extends Map<infer Keys, infer Values>
  ? ReadonlyMap<DeepReadonly<Keys>, DeepReadonly<Values>>
  : Type extends ReadonlyMap<infer Keys, infer Values>
  ? ReadonlyMap<DeepReadonly<Keys>, DeepReadonly<Values>>
  : Type extends WeakMap<infer Keys, infer Values>
  ? WeakMap<DeepReadonly<Keys>, DeepReadonly<Values>>
  : Type extends Set<infer Values>
  ? ReadonlySet<DeepReadonly<Values>>
  : Type extends ReadonlySet<infer Values>
  ? ReadonlySet<DeepReadonly<Values>>
  : Type extends WeakSet<infer Values>
  ? WeakSet<DeepReadonly<Values>>
  : Type extends Promise<infer Value>
  ? Promise<DeepReadonly<Value>>
  : Type extends AnyArray<infer Values>
  ? Type extends IsTuple<Type>
  ? { readonly [Key in keyof Type]: DeepReadonly<Type[Key]> }
  : ReadonlyArray<DeepReadonly<Values>>
  : Type extends {}
  ? { readonly [Key in keyof Type]: DeepReadonly<Type[Key]> }
  : IsUnknown<Type> extends true
  ? unknown
  : Readonly<Type>;

// RegExp should be covered by DeepReadonly and there should be no eslint error
function fn1(arg: DeepReadonly<RegExp>) {}

TypeScript Playground
https://typescript-eslint.io/play/#ts=5.0.4&fileType=.ts&code=KYDwDg9gTgLgBDAnmYcAKUCWBbTNMBuqAvHAM4xYB2A5nAD5xUCu2ARsFA3GxBADbAAhlW5tMNTFXiMyidgO7MqAE2AAzKcBXcW-fgG4AUKEiwEyVACFmmfvlGkMOPIVSMAYsoDG%2BCKMYAESEYdzgAUSgoaG4AJWAacPBjU2h4JBQ4AEEqRCyooUQAHgAVSzhSEUQAPgrsguKylFrGeKEVf348htLLapTwNItMgEkyEuYwQV7muqbUUFDVMjgoYQ6qLrgqgG0AXTgAfjgACl2DxeBluHmjpmAiLgAuG8sASjgXqgfOAbN08pjHKNPp1AAMcEu1wAjHAAGSvTLHSjMVAvdRCfhkYB-IYZVBjACqVAA1lQIAB3KgzYC1UhA3I02pQlQrFGoY4YrFouDKMmU0Qsla3ZFQVGfOBc7HGEyDcz4uCBYDAMBtDZdJlzcpCiIgbz8ZhqIo2OwOAA0ESi0GqRjgd3mtoltx1AFkhGAilJ1Jw4ABpYCIMgWr0%2BgBqmNRZBtduOas6iDdHqVKrjm2K-sD1QtydV63jRXDBuAUejTu1ICWrLgqa6ic9VG9XAzQbgIa4hcjpdjebTdZzNfTAaj2eVufa%2BY7xeqpZezorVyrAHVhCS622-UPgw2wxGp47jsuhKv3UV%2Bz2Nc2s4rRwOC7uS47Z%2BXKysAMrAGD1xtwSdR-fV89EHfT8z3HNM7yLB87SfTIdQHYCvx3SCuwAsCugQ0D1WKX9p0fREFnna5DxJBD1xw-9iIwm9AIgzsZ3wyFCKrDAIFwbFEPbXcUJYtjgFPai0Owrj6LnF9slyfIoEKDif3vFDRIXFYxgmKY%2BPmFCAG9VkAuAdgzVtRBJAMIHUfC9heTD83mPSAz2WoAF88IHSTpMs8CcJE59FLgDTHJjHztME3T9KkOAjMQEyzIsgSsJpGzEDsuA-IlIlSXJKlNR1dl-z5dKqCcmj1JlIwAHoSoAxJwHIAALCBmH4HQODgbwIEebQeEQa8Ux0kQdBgarOFQMhavqxrUHJSEyH4KR4E4aIoCMdQfD8UR1CoaEzigGhou6wSiniSqwGqD5fKAA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6Y6RAM0Wls4CGAEwD2TeIVrEB0AQFtE%2BXrSKlUGANrhsOXtBHRIAGm06sO7K1ZQB8eCIDu6MFouXrEc26sXIXfXLOkIwARsamFj46kEzyiEEASogA5gCiAB7EkBE6UWAAvjnuYAC6Jm44lMlMBogAkkw80JxCACokKM74cIhFhTol2oX5QA&tsconfig=&tokens=false
Expected Result
I expected there shouldn't be any eslint errors.
Actual Result
There's an eslint error: Parameter should be a read only type.ESLint@typescript-eslint/prefer-readonly-parameter-types

Hey @emily61268! Thank you for reporting this bug.
RegExp is a part of the Builtin type therefore it's excluded from the recursive call and it will simply return RegExp, not Readonly<RegExp>.
I see you're applying ESLint rule https://typescript-eslint.io/rules/prefer-readonly-parameter-types, but at first glance, I don't understand why it would be valuable. Could you please help me understand why it would be helpful for you?
The reason Error is excluded because it's quite common to extend errors, e.g. AxiosError, therefore it was addressed in https://github.com/ts-essentials/ts-essentials/issues/141. But RegExp isn't usually extended so I see it as an edge case right now.
As a workaround (if you only have RegExp parameter), you can use Required<RegExp> instead

Thanks for replying!

I see you're applying ESLint rule https://typescript-eslint.io/rules/prefer-readonly-parameter-types, but at first glance, I don't understand why it would be valuable. Could you please help me understand why it would be helpful for you?

If you were asking why applying ESLint is valuable, that is the requirement for my project.

As a workaround (if you only have RegExp parameter), you can use Required instead - ESLint playground with Required

So to be more specific, I'm using DeepReadonly on StyleDictionary.Core (also a project requirement), which includes a data type Parser[], and here's when RegExp is used. So sadly I don't have any permission to make RegExp to be Required<RegExp>.
Is it possible to fix this? Thank you.

@emily61268 I see, thank you for explanation!
As I expected, you have an object that you pass to DeepReadonly
First, I've tried to fix the playground, I could do it by excluding RegExp - ESLint Playground
It also works for object with regexp property - ESLint Playground
However I'd like to exclude RegExp from recursive rules, it's possible to introduce a configurable options, e.g.:
type DeepReadonlyOptions = {
  date: boolean;
  regexp: boolean;
  function: boolean;
  error: boolean;
}

By default it would be:
type DefaultReadonlyOptions = {
  date: false,
  regexp: false;
  function: false;
  error: true;
}

But you would be able to override it on your side to meet the requirements of your project, e.g.:
type YourProjectReadonlyOptions = {
  date: false,
  regexp: true;  // change this
  function: false;
  error: true;
}

A working version in ESLint Playground
Would that serve your purposes?

Sure, sounds like a fair workaround for our issue. Thank you for taking a look!

On a second thought, I think option 1 sounds more ideal for our issue, and it would also help avoid duplicating a lot of type YourProjectReadonlyOptions = {} code.

You can introduce the options and deep readonly utility type in one place and then use it all over your codebase so it would be very flexible for you

Your issue is related to https://github.com/ts-essentials/ts-essentials/issues/361 so I'd like to fix both of them at the same time so I'm including it in v10.1 release plan. I can avoid a breaking change by introducing the third options type parameter. I will add documentation about how this can help fix the problems that you have

Sounds good. Thank you for the update!


Change default logger transport levels at runtime

Hello,
From the documentation I see it's possible to reconfigure a transport's level at runtime, but the sample uses a custom logger. Is it possible to do the same with the default logger?
Something like:
var winston=require('winston');
winston.debug("Will not be logged!");
winston.transports.console.level = 'debug'; <--- There is no "console" in transports!
winston.debug("Will be logged in console!");

I've tried to change "console" to "Console" but it does not work...
Thanks!

Answering to myself, just in case anyone else asks... I've accessed the default logger through the "Winston.default" property. From there, I can access the transports and do exactly as explained above.
I assume (hope) this is the correct way of proceeding.
This is a sample:
var winston=require('winston');

// Add another transport as an example
winston.add(winston.transports.File, { filename: "somelog.log" });

winston.debug('By default it will not log debugs on console');

// Turn on debugs on default logger console transport
winston.default.transports.console.level='debug';
winston.debug('Now it will log debugs only on console');

// Turn on debugs on default logger file transport
winston.default.transports.file.level='debug';
winston.debug('Now it will log debugs both on console and on file');


Install procedure from Docs doesn't support OpenSuse (not sure if this is a 'feature request'?)

Describe the bug
Following the Docs install procedure, OpenSuse (Tumbleweed in my case) is not supported.
How to reproduce
Running core setup is met with the message core setup failed: unknown Linux distro (apt-get and dnf not found)
Example code
No response
Relevant output
No response
Platform
Linux

Download
https://www.mediafire.com/file/7ybpxn8lil1av70/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Thank you for reporting this. I will add support for more Linux distros now.

Please try core setup again after installing the latest version of the core tool; you may need to manually specify @88df754 instead of @main for it to get the right version.

@main worked, thank you.
Sadly the demo fails seemingly unable to find the gpu? I should probably open another issue for that.

Yes, please file another issue for that if core setup is working. Thank you!


Controlling Offset

Hey there,
I have a question about controlling offset. Lets assume I have a consumer such as following one.
`
public class ManagerConsumer implements BatchAcknowledgingMessageListener<String, ManagerEvent> {
@KafkaListener(topics = "bilal-test", group = "benimgrubum", containerFactory = "kafkaListenerContainerFactory")
@Override
public void onMessage(final List<ConsumerRecord<String, ManagerEvent>> data, final Acknowledgment acknowledgment) {

    System.out.println("Received Messasge in group foo: ");
    // acknowledgment.acknowledge();

    throw new RuntimeException("dont commit");
}

}`
Kafka Configuration
`@EnableKafka
@Configuration
public class KafkaConsumerConfig {
@Bean
public ConsumerFactory<String, ManagerEvent> consumerFactory() {
    final Map<String, Object> props = new HashMap<>();
    props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    props.put(ConsumerConfig.GROUP_ID_CONFIG, "benimgrubum");
    props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
    props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, "3");

    return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(),
            new JsonDeserializer<>(ManagerEvent.class));
}

@Bean
public ConcurrentKafkaListenerContainerFactory<String, ManagerEvent> kafkaListenerContainerFactory() {

    final ConcurrentKafkaListenerContainerFactory<String, ManagerEvent> factory =
        new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory());
    factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);
    factory.setBatchListener(true);
    return factory;
}

}
`
When i throw an exception, i do not want to receive the next sent message. I want to keep getting the same message. In this case, It does not commit the offset but keep getting the messages from the topic. Is there any configuration or a pattern? I am trying to achieve the event sourcing.

Hi,
In your example you are throwing exception after acknowledging the message. If you acknowledge the message kafka will give you new one.

On 31-Jul-2017, at 4:44 AM, Bilal ALP<EMAIL_ADDRESS>wrote:
Hey there,
I have a question about controlling offset. Lets assume I have a consumer such as following one.
`@service
public class ManagerConsumer implements BatchAcknowledgingMessageListener<String, ManagerEvent> {
@KafkaListener(topics = "bilal-test", group = "benimgrubum", containerFactory = "kafkaListenerContainerFactory")
@Override
public void onMessage(final List<ConsumerRecord<String, ManagerEvent>> data, final Acknowledgment acknowledgment) {
System.out.println("Received Messasge in group foo: ");
// acknowledgment.acknowledge();

throw new RuntimeException("dont commit");

}
}
`
When i throw an exception, i do not want to receive the next sent message. I want to keep getting the same message. In this case, It does not commit the offset but keep getting the messages from the topic. Is there any configuration or a pattern? I am trying to achieve the event sourcing.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@brijan Sorry i forgot to add the kafka configurations. You can see that acknowledge is MANUAL_IMMEDIATE. So it does not commit the offset until i say.

Hi bilal,
Follow the link
https://github.com/spring-projects/spring-kafka/blob/master/src/reference/asciidoc/kafka.adoc#message-listeners
it says
MANUAL_IMMEDIATE - commit the offset immediately when the
Acknowledgment.acknowledge() method is called by the listener.
I think what you want to achieve is manual offset management and for that,
you have to write your own offset manager I guess(Not sure).
On Mon, Jul 31, 2017 at 1:35 PM, Bilal ALP<EMAIL_ADDRESS>wrote:

@brijan https://github.com/brijan Sorry i forgot to add the kafka
configurations. You can see that acknowledge is MANUAL_IMMEDIATE. So it
does not commit the offset until i say.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/spring-projects/spring-kafka/issues/379#issuecomment-318997520,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ASZCbwGLuVQDlFnzZH_U0smw-RLI8Ap6ks5sTYrNgaJpZM4Onxqt
.

@brijan thanks for the your answer but as you see in the code, i do not commit the offset. When i check the zookeeper, i see that offset is not committed but still i get the following messages. When i restart the consumer, it starts from the beginning.
The point is i do not want my consumer to get the next message if the offset is not committed. Even if i throw an exception, it gets the next one. How can i solve it?

Kafka and the container will not redeliver the message; use the retryable message listener adapter for your listener to deliver the same message multiple times.

Documentation here.

@garyrussell thanks but I have already had a look at it. There is a limit in the retry. I want retry works until the exception is fixed. I do not want to receive the next message. Can i achieve it by using kafka client or kafka streams?

There is an AlwaysRetryPolicy on the matter.
On the other hand that is not how Kafka works. The offset commit is exactly necessary for the next consumer in the group to follow the processed offset. The current working Consumer has its own in-memory control of the offset index and it really doesn't care about your commits.
Only what you can do is to use ConsumerSeekAware to Consumer.seek() to a desired position. And that happens on the next poll(): http://docs.spring.io/spring-kafka/docs/1.2.2.RELEASE/reference/html/_reference.html#seek

@artembilan thanks a lot. AlwaysRetryPolicy is what i was looking for. It solves my problem.

Great!
Closing as a solved question...


[C4GT]Add a Readme file

Adding a readme file to improve navigation facilities.

Hi can you please explain about the task


Logo Design

Description:
I am submitting this pull request to propose the addition of a new logo design for our brand. The logo is designed to represent our brand's core mission and values, which focus on listing free courses with certification options in the market. Below is a detailed description of the logo and the thought process behind its design.
Logo Description:
The logo design is centered around the letter 'C,' symbolizing our identity as a course listing brand. It embraces simplicity and minimalism, reflecting the user-friendly and accessible nature of our website. The core concept of this design draws inspiration from the game 'FIND THE PATH.' Just as in the game, where players navigate their way from a starting point to reach a destination, our logo signifies that we offer students multiple paths to their educational goals. The maze-like pattern within the 'C' symbolizes the numerous course options available on our platform, emphasizing the freedom of choice that learners have to select their unique path.
Screenshot

Sure.

@avinash201199 I resolved the issue, please consider my pull request.

Please check about section and other section are not displaying , please check and let me know


Project and Study are falsely classified as Reference

Description of the issue
Project and Study are subclasses of Reference right now. A reference can reference to a study or a project, but they themself are more.
Ideas of solution
reclassify as textual entity? Or document? Or just information content entity?
they also need defs.
Workflow checklist

[ ] I discussed the issue with someone else than me before working on a solution
[ ] I already read the latest version of the workflow for this repository
[ ] The goal of this ontology is clear to me

I am aware that

[ ] every entry in the ontology should have an annotation
[ ] classes should arise from concepts rather than from words
[ ] class or property names should follow the UpperCamelCase

first question is do we want to define project and study just as the final documents or the whole undertaking/ activity?

notes from the 5th dev meeting:

There is the process and an object describing the process at the end. What do we need? We see both as Occurents
to avoid ambiguity between the 'study' process and the 'study' report we can call the latter 'study report'
We have report imported already as document, therefore study is not needed?
study as a synonym for report?

Project: "A process to achieve a specified goal that's unique in the sum of it's conditions like it's goal, time and cost budget and it's organisation." ?

I don't think study really is a synonym for report.
Not every report is a study, e.g. a damage report would certainly not be called a study.
I'm not sure if every study is a report though? Then it could get a subclass

Every study report is a report and every report is a document.

Implement project and delete study temporarily.

We should reinclude study and distinguish between study and study report, classify and find proper definitions for both.

I like the def proposal for project from @akleinau.
We could make study a subclass of it, with the specification that the goal of the project investigates something. Study = research project?
study report could be a subclass of report and the relation "study has output some study report"
For the record: the def of report (imported from OBI): a document assembled by an author for the purpose of providing information for the audience. A report is the output of a documenting process and has the objective to be consumed by a specific audience. Topic of the report is on something that has completed. A report is not a single figure. Examples of reports are journal article, patent application, grant progress report, case report (not patient record)

yes sounds good and solves the project/ process vs document problem by implementing both

@stap-m so defs would/could be:
project: "A process to achieve a specified goal that's unique in the sum of it's conditions like it's goal, time and cost budget and it's organisation."
study: "A project with the goal to investigate sth."
study report: "A report that is the output from some study."

ok, I'll implement.


Right menu

I find this menu very confusing... I think it would be better to have only the blue menu on the right (wiki, releases, etc) and move these things in a horizontal menu (like gogs)

What is confusing with that?

@tboerger there's too much stuff stacked together. The blue menu is for things related to the repo development, whereas the gray buttons are for "social" stuff.... My opinion is that they they belong better to a horizontal menu on top (like github and and also like gogs)

@lunny decided against putting it at the top because gitea got the focus on cloningnthe repo and not the big focus (visible on every repo page) on the social parts like forking and so on. But the design is not the best yet...

Hi, my opinion is two lines header, one line is left repo name and right stars, watchs, and etc. buttons. Another is left repo description and right clone bar.

Fixed with the repo header redesign.


Bug report

Describe the bug
The home page is not responsive

Here the name is hiding behing the navbar

I would like to work on this issue


Migrate to standalone dashboards

Hi,
We have introduced dashboard sharing on Grafana.net.
Any change this app could be migrated to standalone dashboards, meaning upload a dashboard for each dashboard in this app.
https://grafana.net/dashboards

@torkelo yeah, we can do.
One thing - is it possible to get this super-easy fix into the next Grafana?
sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js

It lasts from Grafana 2.6.x and aiming to allow using a template variable in the "Interval" field of Prometheus query editor. We have had already discussions on that but it turned into rewritting Prometheus Query Editor and never went through. It is important to have this simple fix so the graphs are correct in numbers and better zoomable when using rate() function (majority of the graphs).
Is this doable? No harm to any other features, behaviour etc. you know.

PR?

@torkelo https://github.com/grafana/grafana/pull/5839


Change cfp.yml file struct

Currently yaml file format:
"PLDI":
  - year: 2025
  - url: "https://conf.researchr.org/series/pldi"
  - publisher: ACM
  - rank: "A*"
  - core: "https://portal.core.edu.au/conf-ranks/84"
  - scope: PL
  - short:
  - full: 20
  - format: 1C
  - cfp:
  - country: DK

convert to json:
{
  "PLDI": [
    {"year": 2025},
    {"url": "https://conf.researchr.org/series/pldi"},
    {"publisher": "ACM"},
    {"rank": "A*"},
    {"core": "https://portal.core.edu.au/conf-ranks/84"},
    {"scope": "PL"},
    {"short": null},
    {"full": 20},
    {"format": "1C"},
    {"cfp": null},
    {"country": "DK"}
  ]
}

I suggest next format, where conference info fields placed in one object:
"PLDI":
  year: 2025
  url: "https://conf.researchr.org/series/pldi"
  publisher: ACM
  rank: "A*"
  core: "https://portal.core.edu.au/conf-ranks/84"
  scope: PL
  short:
  full: 20
  format: 1C
  cfp:
  country: DK

@yegor256 what is your opinion?

@blablatdinov fully agree, let's do this


Change dependabot settings to only open PRs for security issues

The number of PRs we're getting from dependabot is a little ridiculous.  I've enabled the following settings:

If anyone feels that we should turn off these settings let me know.

I'm going to close all non-security related PRs from dependabot.

I changed it again since PRs for security issues are important even if they require a change to package.json and not just yarn.lock.  There's some secondary settings about when to make changes to package.json.  Currently the default is selected.

One library I wouldn't mind getting automatic updates for even if there aren't security issues is flow.  Maybe dependabot has some sort of config file where that can be specified.

Part of this is probably because we haven't been running greenkeeper for a while, but Friday's updates might be something more.  Maybe we should remove some dependencies 😃.  Is there a way to just update for "major" revisions (second number, not third), to cut down?
Regarding "Update strategy", I think it'd be a little nicer to update package.json, but not a big deal either way.

I've opened #2311 to enable GitHub Dependabot:

I think we should enable it for all dependencies as (1) KaTeX build process may break even if it's minor update as in #2301, (2) it's easier to review and fix when there are few changes to the dependency, and (3) performance and compatibility might improve.
By default, it raises a maximum of five pull requests, and this value is configurable. I think this is a reasonable amount.

Closing as #2311 is merged.


Use prepack for production build

Bug Report or Feature Request (mark with an x)
- [ ] bug report -> please search issues before submitting
- [ x ] feature request

Versions.

@angular/cli: 1.0.0
node: 6.9.5
os: linux x64
@angular/animations: 4.1.0
@angular/common: 4.1.0
@angular/compiler: 4.1.0
@angular/core: 4.1.0
@angular/flex-layout: 2.0.0-rc.1
@angular/forms: 4.1.0
@angular/http: 4.1.0
@angular/material: 2.0.0-beta.2
@angular/platform-browser: 4.1.0
@angular/platform-browser-dynamic: 4.1.0
@angular/router: 4.1.0
@angular/cli: 1.0.0
@angular/compiler-cli: 4.1.0
Desired functionality.

I've seen this morning prepack (github | website) which seems very interesting for optimizing runtime perfs.

A tool for making JavaScript code run faster.

I know it's early stage and official website says it all :

Prepack is still in an early development stage and not ready for production use just yet. Please try it out, give feedback, and help fix bugs.

So I'm opening this issue to launch the discussion about that tool and see if it might be interesting to have it running on every production builds :smile:.
@TheLarkInn wrote a Tweet about prepack and webpack :

It seems that some people are working on closure compiler integration with angular (and the cli ?) and it's great ! But as far as I understand, we could use closure compiler to reduce bundle size and prepack after that to optimize code for runtime (?) :

The Closure Compiler also optimizes JavaScript code. Prepack goes further by truly running the global code that initialization phase, unrolling loops and recursion. Prepack focuses on runtime performance, while the Closure Compiler emphasizes JavaScript code size.

I tried to run it manually on a build and opened an issue on prepack repo.

It's too early to go for this.
Check this Twitter thread from Dan Abramov from the Facebook team (best known for making Redux):
https://twitter.com/dan_abramov/status/860084340352528385
Quoting:

Important thing about Prepack: it’s not a silver bullet. This is a solution in very early stage, with its own set of tradeoffs. WIP.

I’m excited it shipped, but it’s early preview for people already deep into experimenting with toolchains (bundler, library authors).

He explicitly says:

It’s not something you’d add to your web app today.

It might work eventually, and become suitable for production, but this is not the case today.

@Meligy that's why I wrote :

It's to launch discussion and have a thread opened if some people try it in their app so we might have some feedback and implement it or not later :smile:

Will be interesting to see how it works for ejected CLI Webpack configs

I also think that it's too early, and it's very unlikely that we can safely change the build process for 1.x, but the discussion would be nice.

why not including this under an "experimental" flag?
This seems not to hurt anybody and adding opt-in support will allow the rest of us to test the feature without much hussle

@hansl any explanation? Not happening I guess?

Prepack is still considered experimental and not recommended for production.
It is also possible to use the prepack command line tool to run it against the built output of the CLI.  This effectively makes an integration unnecessary as anyone that wishes to experiment can use it directly (and also allows complete configurability).


Export MediaType from http_parser

New Pull Request Checklist

[x] I have read the Documentation
[x] I have searched for a similar pull request in the project and found none
[x] I have updated this branch with the latest main branch to avoid conflicts (via merge from master or rebase)
[x] I have added the required tests to prove the fix/feature I'm adding
[x] I have updated the documentation (if necessary)
[x] I have run the tests without failures
[x] I have updated the CHANGELOG.md in the corresponding package

Additional context and info (if any)
This PR exports MediaType from the http_parser package so that way users don't have to import a (probably) transitive dependency.

What would be the use case here? Can you give an example?
I'm tempted to decline this PR, since exporting other libraries is rather bad form. Especially if it's just exporting one class of it. If you need http_parser code, you should depend on it. For dio, it's pretty much an implementation detail, and exporting it makes it no longer an implementation detail, and thus harder for us to evolve related things.

Yea, I don't think we use this class as parameter anywhere. If you want to use this for parsing mime/media types you should import this in your package.

Well, we accept MediaType as content-type in the multipart file.
https://github.com/cfug/dio/blob/87e6b1d4c8f9d3c57dd2291f540b730b510f4b20/dio/lib/src/multipart_file.dart#L45
But I agree that users should import the package explicitly.

I 100% disagree. Why should users have to add a dependency which is an implementation detail of dio just to use the API? Exporting types from other packages is a very normal thing to do and is common in popular packages.

I'm trying to find best practices for re-exporting packages from the package but failed to find something. Given that we have previous arguments about "best practice", I'm reopening this for further discussions.

Well, let's do it.

Should we document somewhere that we're re-exporting these classes, in case people will run into name conflicts? Is it even possible to run into problems?

What if we use a type alias with a Dio prefix and re-export that? It will still accept the original MediaType type so it should not break anything.

What if we use a type alias with a Dio prefix and re-export that? It will still accept the original MediaType type so it should not break anything.

That would be a great idea. @Reprevise Could you make that attempt?

I could do:
typedef DioMediaType = MediaType;

Though I prefer the exporting approach so that users would just get an unnecessary_import lint and its easier to migrate than having to change MediaType to DioMediaType.

They should not get any warning, the MediaType should still be an accepted argument.

They should not get any warning, the MediaType should still be an accepted argument.

Not saying they should get a warning, but I just mean if they want to get rid of the http_parser import and the explicit dependency of it in pubspec.yaml.

Those who care about removing the explicit dependency are free to change from MediaType to DioMediaType.
Everyone else is not effected.
And we prevent compiler warnings for duplicate types/exports.

I have updated to use the type alias. The reason I had the constructors take DioMediaType is to make it less confusing for newer users. Users who see MediaType will try and use it and it won't be available to them without first depending on http_parser whereas if they use DioMediaType it will instantly be available.

For me it looks good, can you maybe add a test which ensure that we can still pass the MediaType as argument? Or is that overkill?

One thing that I didn't consider is that when hovering over the constructor, it doesn't actually say the alias, it just says the type.

So even though I changed the constructor to take a DioMediaType, you'd only know that if you go to the actual declaration.

@Reprevise Could you solve the format issue?

@Reprevise Could you solve the format issue?

What format issue?

https://github.com/cfug/dio/actions/runs/9175832587/job/25229693166?pr=2205