cake-build / cake-rider Goto Github PK
View Code? Open in Web Editor NEWAdds support for the Cake build tool in Rider.
Home Page: https://cakebuild.net/
License: MIT License
Adds support for the Cake build tool in Rider.
Home Page: https://cakebuild.net/
License: MIT License
it's set to cake-contrib, correct would be cake-build.
Not really fussed about what we use, but I think it would be good to have some verification that things are still building as we expect it to.
When this happens, the task should be executed.
> Task :runIde
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.ReflectionUtil to method sun.java2d.SunGraphicsEnvironment.isUIScaleEnabled()
WARNING: Please consider reporting this to the maintainers of com.intellij.util.ReflectionUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
This is rather disturbing, as the warning is very red and looks very error-like
Check whether those features are doable or not.
Incomplete list:
possible options include:
Readme.md
Integrations
section of https://cakebuild.net/gh-pages
using the com.intellij.defaultLiveTemplatesProvider
extension point
The Readme should contain a link to https://github.com/cake-build/cake/discussions
This will include configurable runners.
To take advantage of updating of issues when milestone is closed, and also so apply a SHA to all uploaded artifacts in the GitHub Release.
Only when editing Cake files.
Cake for VS does this:
A starting point could be https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000225424-Editor-opacity-programmatically-
java.lang.NullPointerException
at net.cakebuild.toolwindow.CakeTasksWindow$MyTreeCellRenderer.getTreeCellRendererComponent(CakeTasksWindow.kt:167)
at com.intellij.ui.tree.ui.DefaultTreeUI.getRenderer(DefaultTreeUI.java:166)
at com.intellij.ui.tree.ui.DefaultTreeUI$1.getNodeDimensions(DefaultTreeUI.java:380)
at java.desktop/javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:493)
at java.desktop/javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1344)
at java.desktop/javax.swing.tree.VariableHeightLayoutCache.updateNodeSizes(VariableHeightLayoutCache.java:903)
at java.desktop/javax.swing.tree.VariableHeightLayoutCache.invalidateSizes(VariableHeightLayoutCache.java:371)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI.setCellRenderer(BasicTreeUI.java:465)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.propertyChange(BasicTreeUI.java:3816)
at com.intellij.ui.tree.ui.DefaultTreeUI$4.propertyChange(DefaultTreeUI.java:487)
at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:341)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:266)
at java.desktop/java.awt.Component.firePropertyChange(Component.java:8754)
at java.desktop/javax.swing.JTree.setCellRenderer(JTree.java:775)
at net.cakebuild.toolwindow.CakeTasksWindow.<init>(CakeTasksWindow.kt:33)
at net.cakebuild.toolwindow.CakeTasksWindowFactory.createToolWindowContent(CakeTasksWindowFactory.kt:12)
at com.intellij.openapi.wm.impl.ToolWindowImpl.createContentIfNeeded$intellij_platform_ide_impl(ToolWindowImpl.kt:506)
at com.intellij.openapi.wm.impl.ToolWindowImpl.scheduleContentInitializationIfNeeded$intellij_platform_ide_impl(ToolWindowImpl.kt:486)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doShowWindow(ToolWindowManagerImpl.kt:980)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpl(ToolWindowManagerImpl.kt:926)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activateToolWindow(ToolWindowManagerImpl.kt:632)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activateToolWindow$default(ToolWindowManagerImpl.kt:613)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activated$intellij_platform_ide_impl(ToolWindowManagerImpl.kt:1838)
at com.intellij.openapi.wm.impl.StripeButton.lambda$new$0(StripeButton.java:65)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:401)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:270)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6652)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
at com.intellij.openapi.wm.impl.StripeButton.processMouseEvent(StripeButton.java:319)
at java.desktop/java.awt.Component.processEvent(Component.java:6417)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:976)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:911)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:840)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:454)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:773)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:453)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:507)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
and plugin change-notes
should point to GitHub releases-page.
cake-vs
and cake-vscode
automatically install a cake runner, if none is found.
cake-rider
should do this, too.
Steps to reproduce
build.cake
.build.cake
Currently readme.md
shows a "mock" of how the plugin looks in the marketplace.
That should be updated.
Also, the release channels should be described.
Similar to #75, I'm not sure if this is a job that the extension can do, but it would be great if the list that appears on adding a new file included an item for creating a Cake build script.
I receive following error when I try to use plugin on macOS:
"Error running 'build.cake: Clean':
Cannot run program "dotnet-cake" (in directory "xxx): error=2, No such file or directory"
What am I missing? :)
as decided in #29 :
Add a reference to https://cakebuild.net/docs/integrations/editors/rider/ and insert a section to keep the "changes since the last release" in.
when the first step of #8 (comment) has been done and an organization with the JetBrains marketplace has been created.
Mention Anna's original extension, and how she is now working with us to create this official extension.
Is it possible to pass custom arguments to Cake script from Run Configuration? I've checked https://cakebuild.net/docs/integrations/editors/rider/run-configurations#creating-run-configurations but didn't find a way to do it. I would like to pass custom argument to my script.
In Cake for VSCode the default runner is ~/.dotnet/tools/dotnet-cake
while here it currently is dotnet-cake
, relying on the fact that globally installed dotnet tools are always in PATH
.
We should update the default runner to ~/.dotnet/tools/dotnet-cake
(same as in Cake for VSCode) and the default on windows to %USERPROFILE%\.dotnet\tools\dotnet-cake.exe
The EAP is out now: https://blog.jetbrains.com/dotnet/2021/02/01/rider-2021-1-eap/
Also, we should think about "which" versions to support.
https://plugins.jetbrains.com/docs/marketplace/product-versions-in-use-statistics.html suggests to target the current and the last tow releases.
It makes sense to support the latest major release, as well as at least two previous major releases (in this case, you are covering the majority of the users - on average, it's somewhat 80%.) This % doesn't change from product to product much.
So I would suggest to currently (as of today) support 2020.1
, 2020.2
and the current 2020.3
as well as the EAP 2021.1-EAP
- when 2021.1
is released I suggest to drop support for 2020.1
and only support 2020.2
, 2020.3
and 2021.1
.
Cake for rider : 0.2.0
OS: Ubuntu 20.04 & POPOS 20.10
Rider : 2020.3.4
After installing Cake for Rider the cake tasks in the Cake Tool Window are not loaded.
Logs:
Cannot init toolwindow net.cakebuild.toolwindow.CakeTasksWindowFactory@4848054e
java.lang.NullPointerException
at net.cakebuild.toolwindow.CakeTasksWindow$MyTreeCellRenderer.getTreeCellRendererComponent(CakeTasksWindow.kt:167)
at com.intellij.ui.tree.ui.DefaultTreeUI.getRenderer(DefaultTreeUI.java:166)
at com.intellij.ui.tree.ui.DefaultTreeUI$1.getNodeDimensions(DefaultTreeUI.java:380)
at java.desktop/javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:493)
at java.desktop/javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1344)
at java.desktop/javax.swing.tree.VariableHeightLayoutCache.updateNodeSizes(VariableHeightLayoutCache.java:903)
at java.desktop/javax.swing.tree.VariableHeightLayoutCache.invalidateSizes(VariableHeightLayoutCache.java:371)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI.setCellRenderer(BasicTreeUI.java:465)
at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.propertyChange(BasicTreeUI.java:3816)
at com.intellij.ui.tree.ui.DefaultTreeUI$4.propertyChange(DefaultTreeUI.java:487)
at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:341)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:266)
at java.desktop/java.awt.Component.firePropertyChange(Component.java:8754)
at java.desktop/javax.swing.JTree.setCellRenderer(JTree.java:775)
at net.cakebuild.toolwindow.CakeTasksWindow.<init>(CakeTasksWindow.kt:33)
at net.cakebuild.toolwindow.CakeTasksWindowFactory.createToolWindowContent(CakeTasksWindowFactory.kt:12)
at com.intellij.openapi.wm.impl.ToolWindowImpl.createContentIfNeeded$intellij_platform_ide_impl(ToolWindowImpl.kt:506)
at com.intellij.openapi.wm.impl.ToolWindowImpl.scheduleContentInitializationIfNeeded$intellij_platform_ide_impl(ToolWindowImpl.kt:486)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doShowWindow(ToolWindowManagerImpl.kt:980)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpl(ToolWindowManagerImpl.kt:926)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpl$default(ToolWindowManagerImpl.kt:915)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doRegisterToolWindow(ToolWindowManagerImpl.kt:1054)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.initToolWindows(ToolWindowManagerImpl.kt:486)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.access$initToolWindows(ToolWindowManagerImpl.kt:90)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$beforeProjectOpened$2.run(ToolWindowManagerImpl.kt:423)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:216)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:24)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:199)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:324)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:85)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:134)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:47)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:190)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:976)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:843)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:454)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:773)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:453)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:501)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Add a new section here:
currently *.cake scripts have default icons.
They should have little cake-icons.
@gep13
Cake-VsCode uses "red" icons:
While Cake-Vs uses the "normal" icons:
I'd like the the same as Cake-Vs (i.e. the default Cake icon). Any objections to that?
should be possible using the com.intellij.projectTemplate
extension point.
some setups look like this:
build.ps1
build.cake
src
my-project.sln
In that case, when the sln
is opened in Rider, the build.cake
is not known to Cake-Rider
.
One possible solution would be to add a reference to the build.cake
to the csproj
(Something like <None Include="$(SolutionDir)/../build.cake" Link="build.cake" />
) and have Cake-Rider
pick that up automatically.
Another solution could be to add "additional search-paths" to the Cake-Rider
configuration. (So the search for Cake scripts would start in the root folder, not in the src
folder.)
Cake for VS Code can show a code outline.
This should be possible in rider using a Structure View Factory
Hello guys,
after recent update I got an exception when starting Rider.
Not sure if exception itself will tell you anything, but looks like Cake plugin is failing when there are no cake scripts in project.
This is my guess, my project does not have any cake files.
I don't have any task in Cake Tasks window.
Edit: My project doesn't actually have any cake files.
kotlin.KotlinNullPointerException
at net.cakebuild.actions.CakeTasksTreeAction.getWindow(CakeTasksTreeAction.kt:11)
at net.cakebuild.actions.CakeTasksTreeAction$TaskOnlyActions.update(CakeTasksTreeAction.kt:39)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:178)
at com.intellij.ide.util.gotoByName.GotoActionModel.updateActionBeforeShow(GotoActionModel.java:337)
at com.intellij.ide.util.gotoByName.GotoActionModel$ActionWrapper.lambda$getPresentation$0(GotoActionModel.java:701)
at com.intellij.ide.util.gotoByName.GotoActionModel.lambda$updateOnEdt$4(GotoActionModel.java:495)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:216)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:24)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:199)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:324)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:85)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:134)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:47)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:190)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:976)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:843)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:454)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:773)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:453)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:822)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:501)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
On the release page the generated text is:
You can download this release from the marketplace.
That is missing/ignoring the fact that the release will be manually approved by JetBrains.
The text should be something like "You can download this release from the marketplace, after it has been approved."
for some reason AppVeyor is configured to build on main
, not on master
This will likely include creating a cake-build account, somewhere, that we can use for publishing the extension.
@anna-dolbina are you able to provide any insight here on exactly what is required?
Can the submission process be automated?
Similar to what we do on both of the other extensions, so that we have a consistent contribution experience.
Cake for VS Code does this by providing Code Lens:
This could be possible in rider using Code Vision which seemingly is a part of Inlay Hints
Alternatively, a Line Marker Provider could also be a possibility.
Compatibility verification for Rider 2020.3 lists 4 usages of deprecated API
Rider RD-203.5981.141 (2020.3) Compatible. 4 usages of deprecated API
4 deprecated API usages
Cake Rider 0.1.0-alpha.1 uses deprecated API, which may be removed in future releases leading to binary and source code incompatibilities
- Deprecated methods usages (3)
- ConfigurationFactory.isConfigurationSingletonByDefault() (1)
- Deprecated method ConfigurationFactory.isConfigurationSingletonByDefault() is overridden in class CakeConfigurationFactory
- RunManager.addConfiguration(...) (1)
- Deprecated method RunManager.addConfiguration(...) is invoked in CakeProject.CakeTask.run(...)
- IconLoader.getIcon(String) (1)
- Deprecated method IconLoader.getIcon(String) is invoked in CakeIcons.()
- Deprecated constructor usage (1)
- NotificationGroup.(...) (1)
- Deprecated constructor NotificationGroup.(...) is invoked in CakeBalloonNotifications.()
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.