bmewburn / vscode-intelephense Goto Github PK
View Code? Open in Web Editor NEWPHP intellisense for Visual Studio Code
Home Page: https://intelephense.com
License: Other
PHP intellisense for Visual Studio Code
Home Page: https://intelephense.com
License: Other
It seems intelephense is only indexing ~20 files, or in many cases 0 files for my php projects. Auto complete, symbol search, and goto definition seem to now work until I open a file, then it gets indexed and works well.
You can find my verbose output log HERE
Sorry, I do not speak english very well. The case is its extension is great but would have like to search the definitions of the commands in php in the portuguese language brazil.
That would help a lot.
I thank you
I think I would be a nice addition to your project.
Add a right click copy Reference
option in the menu.
These are needed when intellisense will not work
For example in service xml files.
It does not provide definition for Traits or Classes that use Traits
When double clicking to highlight a variable (i.e. $abc) the '$' is not selected. It is inconvenient to manually type '$' when cutting and pasting multiple lines
Thank you very much for your work
i think need three new feature
would like to seek your opinion,
Hey here is a quick video what happens when I try to comment code.
http://files.wotek.io/zSxqO1Cx5c.mp4
It adds redundant */
. I've got PHP Docblocker installed which works fine without intelphense but those two somehow don't work well together. It's not a blocker but it gets very annoying.
I know that this may be very difficult to do, so I guess that this is more of a feedback post.
In laravel and other frameworks (and non-frameworks), magic methods are used for certain features, so I would suggest that it could be possible to define a method/property using PHPDoc.
I don't believe that there is a doc comment for this, so I will make one up called: @called
in this example.
It would look something like this:
class A extends ClassWithMagic {
/**
* @called MyMethod
*/
public function scopeMyMethod() {}
}
Example of what the extended class might look like:
class ClassWithMagic {
public function __call($name, $args){
$func = 'scope' . $name;
$this->$func($args);
}
public function __get($name) {
return $this->$name;
}
}
Then it could be used something like this:
A::MyMethod();
// or
$a = new A;
$a->MyMethod();
// or
(new $a)->MyMethod();
It would know about the method due to the doc comment.
Diagnostics are currently limited to explicit parse errors reported by bmewburn/php7parser. The diagnostics provider could be improved by providing diagnostics on:
When using autocompletion on global PHP functions it automatically puts a leading backslash in front of the function. Is there a way to ommit this?
Example:
<?php
namespace Foo\Bar;
class Something {
public function something()
{
return \array_shift();
}
}
From @jjtriff bmewburn/intelephense#53
Hello:
I was trying to modify your code:
1. adding a configuration setting in package.json: "intelephense.formatter.enable": { "type": "boolean", "default": true, "description": "Enable debug logging." } 2. and asking for it before doing this._registeredHandlers.set( DocumentFormattingRequest.type.method, new LanguageFeature<TextDocumentRegistrationOptions>((options) => this.createDocumentFormattingProvider(options)) ); inside client.ts file.
but I'm not sure what will I get when doing
Workspace.getConfiguration(this._id)so I was trying to debug your extension, but I wasn't able to do it. Didn't make vscode to run in debug extension mode.
BTW: I think I'm mixing here code from two different github repos.
What I'm trying to ask is for a short guide to clone your repo, edit it, debug it, push it, and make a pull request.
Zanks in advanced
PS: this has to do with #46, so I can keep working using your wonderful extension
After the last update I have got this error:
[Info - 20:25:36] Initialising
[Info - 20:25:37] Initialised in 928 ms
[Info - 20:25:38] Indexing started.
[Error - 20:25:43] TypeError: Cannot read property 'baseClause' of undefined
at NameResolverVisitor._anonymousClassDeclaration (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\nameResolverVisitor.js:71:24)
at NameResolverVisitor.preorder (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\nameResolverVisitor.js:27:54)
at SymbolReader.preorder (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:255:49)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:126:31)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
[Error - 20:25:43] TypeError: Cannot read property 'baseClause' of undefined
at NameResolverVisitor._anonymousClassDeclaration (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\nameResolverVisitor.js:71:24)
at NameResolverVisitor.preorder (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\nameResolverVisitor.js:27:54)
at SymbolReader.preorder (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:255:49)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:126:31)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser._traverse (C:\Users\jlcal.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.0\server\node_modules\intelephense\lib\types.js:134:22)
[Info - 20:25:55] Indexing ended | 10185 files | 16.948 s
When running code formatting I get extra newlines added. This appears to happen when a comment is inside an empty code block.
To reproduce create a new php file with the following code, then format the code
<?php
if (1 == 1) {
// Every format or file save will add a new line under here
}
?>
I'm using PHP's doubling quotes to build out a string value...
i.e.
return "<li><a href='/inspection-groups/$ig->id/locations/create'>Edit Inspection</a></li>";
When running the formatter it modifies the value of the string by adding spaces before the "$".
i.e.
return "<li><a href='/inspection-groups/ $ig->id/locations/create'>Edit Inspection</a></li>";
If a variable is used inside of a string then it shouldn't be modifying the string spacing!
Please look at adding Folding Regions
This is a feature I loved in full-blown Visual Studio and would love to see it added for PHP.
I originally wrote a review of this plugin and in it, I mentioned a Sublime PHP Companion feature that I would love to see in this plugin. It has been added (thanks!), but I'm either not using it correctly, or it doesn't seem to work.
I have the new command bound to a key. I've tried starting to type a class name and hitting the hotkey for Add Use Declaration. It does pop up a dialog to enter an alias for the class (a nice feature that isn't available with Sublime PHP Companion as far as I know), but nothing happens.
I've also tried expanding the class name and hitting the hotkey. highlighting it and doing the same - all with the same result.
Is there some documentation on how to use the Add Use Declaration feature? What is the correct way to use it?
When using some built-in PHP function eg. array_combine
, the extension automatically namespaces it making it
\array_combine()
which is not necessary.
I want to be able to CTRL + click on the required file path to navigate quickly to these required files. It would be more convenient to cross check this way.
I'm always getting this error when working on my php project
RangeError: Maximum call stack size exceeded
at TypeString.merge (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\typeString.js:61:30)
at VariableTable._mergeSets (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\typeResolver.js:546:83)
at VariableTable.pruneBranches (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\typeResolver.js:521:18)
at VariableTypeVisitor.postorder (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\typeResolver.js:296:36)
at VariableTypeResolver.postorder (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\types.js:273:22)
at TreeTraverser._traverse (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\types.js:142:21)
at TreeTraverser._traverse (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\types.js:134:22)
at TreeTraverser.traverse (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\types.js:38:14)
at Context.get variableTable [as variableTable] (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\context.js:219:23)
at SimpleVariableCompletion.completions (C:\Users\user\.vscode\extensions\bmewburn.vscode-intelephense-client-0.7.2\server\node_modules\intelephense\lib\completionProvider.js:380:31)
For our large project (about 7k files in multiple directories) I create small VS Code projects containing only needed directories. Unfortunatelly, Intelephense scans only those small directories when working with small projects.
It would be great, if I could define directory to scan (different from project directory), so Intelephense would provide definitions and symbols from whole project.
Example:
whole projects lays in c:/projects/system
I'm working with directory c:/projects/system/submodule
It would be great, if I could define
"intelephense.scanDir": "c:/projects/system"
in my c:/projects/system/submodule/.vscode/settings.json
to make Intelephense scan whole large project.
Hello!
The PHP format in this extension has a weird behavior:
<?php
/*
* Copyright
*/
require 'file.php';
Is formated to:
<?php
/*
* Copyright
*/require 'file.php';
Inline Comments also strange:
<?php
// register something
$container['some'] = function () {
};
this will be insert as much blank lines as you hit the format command between comment and the $container declaration. :/
And load only relevant built in symbols.
get_loaded_extensions()
This is my console output:
[Info - 6:06:27 PM] Initialising
[Info - 6:06:30 PM] Initialised in 2409 ms
[Info - 6:06:32 PM] Indexing started.
[Warn - 6:06:34 PM] file:///home/umpirsky/Projects/yo/vendor/composer/autoload_classmap.php exceeds maximum file size.
[Warn - 6:06:34 PM] file:///home/umpirsky/Projects/yo/vendor/composer/autoload_static.php exceeds maximum file size.
And status bar label indicates it's still indexing after several hours:
It this expected?
Would be nice to have a feature that phpstorm has, when you typehint a class/interface FooBar and you start to write parameter name $f, it would provide autocompletion for $fooBar.
I have actually tried to implement this myself and kind of got it working, however I was having a really hard time compiling the whole thing, as the change needs to happen in intelephense repository, and not in the extension itself. So in the end I pretty much had to copy/paste compiled js to client/server/node_modules and gave up after a few tries.
The question is, do you think this is a feature that you would like to have, and if yes, would you point me in the right direction as to how should I setup the dev environment (or feel free to implement it yourself)
Apologies if this is in the wrong place, but I can't figure out if this is a VSCode or intelephense problem.
I'd really like to be able to "Go To Symbol in Workspace" (command-T) and type a string in the middle of a symbol (even if that slows down the match a lot) rather than having to search from the start.
E.g At the moment if I have the class "Foo_Bar" somewhere in my workspace and I search for "Bar" "Foo_Bar" doesn't show in the list, I have to remember the start of the symbol.
When placing your cursor on a variable, it will highlight everything (including strings).
Add the ability to only highlight scoped variables, which might be a start for variable name refactoring.
I want to be able to see these defines at a glance. Is there anyway to quickly view it / jump to the define?
Can you have time to parse it or implement a similar implementation?
I found that the laravel framework is very similar to the need for smart tips, thank you!
After the v0.8.0 update the cmd+click and go to definition
does not work properly
My configuration is
{
"window.zoomLevel": 0,
"gitlens.blame.line.enabled": false,
"editor.fontSize": 14,
"files.autoSave": "afterDelay",
"editor.letterSpacing": 0,
"php.suggest.basic": false,
"gitlens.codeLens.recentChange.enabled": false,
"gitlens.codeLens.enabled": false,
"extensions.ignoreRecommendations": false,
"go.formatTool": "gofmt",
"editor.wordWrap": "on",
"editor.minimap.enabled": false,
"editor.fontWeight": "normal",
"editor.fontFamily": "Monaco, 'Courier New', monospace",
"workbench.colorTheme": "Base16 Dark Tomorrow",
"intelephense.trace.server": "verbose",
"intelephense.debug.enable": true,
"emmet.showExpandedAbbreviation": "never"
}
Here a trace example
[Trace - 10:55:57] Sending request 'textDocument/definition - (23723)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
},
"position": {
"line": 93,
"character": 38
}
}
[Trace - 10:55:57] Received notification 'window/logMessage'.
Params: {
"type": 4,
"message": "[Debug - 10:55:57] onDefinition | file:///{removed path}CampaignCreator.php | {\"line\":93,\"character\":38} | 0.009 ms | 83.7 MB"
}
[Debug - 10:55:57] onDefinition | file:///{removed path}CampaignCreator.php | {"line":93,"character":38} | 0.009 ms | 83.7 MB
[Trace - 10:55:57] Received response 'textDocument/definition - (23723)' in 2ms.
No result returned.
[Trace - 10:55:57] Sending request 'documentLanguageRanges - (23724)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
}
}
[Trace - 10:55:57] Received notification 'window/logMessage'.
Params: {
"type": 4,
"message": "[Debug - 10:55:57] onDocumentLanguageRanges | 0.006 ms | 83.7 MB"
}
[Debug - 10:55:57] onDocumentLanguageRanges | 0.006 ms | 83.7 MB
[Trace - 10:55:57] Received response 'documentLanguageRanges - (23724)' in 1ms.
No result returned.
[Trace - 10:55:57] Sending request 'textDocument/hover - (23725)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
},
"position": {
"line": 93,
"character": 38
}
}
[Trace - 10:55:57] Received response 'textDocument/hover - (23725)' in 1ms.
No result returned.
[Trace - 10:55:57] Sending request 'documentLanguageRanges - (23726)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
}
}
[Trace - 10:55:57] Received notification 'window/logMessage'.
Params: {
"type": 4,
"message": "[Debug - 10:55:57] onDocumentLanguageRanges | 0.006 ms | 83.7 MB"
}
[Debug - 10:55:57] onDocumentLanguageRanges | 0.006 ms | 83.7 MB
[Trace - 10:55:57] Received response 'documentLanguageRanges - (23726)' in 2ms.
No result returned.
[Trace - 10:55:58] Sending request 'textDocument/documentHighlight - (23727)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
},
"position": {
"line": 93,
"character": 38
}
}
[Trace - 10:55:58] Received response 'textDocument/documentHighlight - (23727)' in 2ms.
No result returned.
[Trace - 10:55:58] Sending request 'documentLanguageRanges - (23728)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
}
}
[Trace - 10:55:58] Received notification 'window/logMessage'.
Params: {
"type": 4,
"message": "[Debug - 10:55:58] onDocumentLanguageRanges | 0.005 ms | 83.8 MB"
}
[Debug - 10:55:58] onDocumentLanguageRanges | 0.005 ms | 83.8 MB
[Trace - 10:55:58] Received response 'documentLanguageRanges - (23728)' in 3ms.
No result returned.
[Trace - 10:55:58] Sending request 'textDocument/definition - (23729)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
},
"position": {
"line": 93,
"character": 38
}
}
[Trace - 10:55:58] Received notification 'window/logMessage'.
Params: {
"type": 4,
"message": "[Debug - 10:55:58] onDefinition | file:///{removed path}CampaignCreator.php | {\"line\":93,\"character\":38} | 0.016 ms | 83.8 MB"
}
[Debug - 10:55:58] onDefinition | file:///{removed path}CampaignCreator.php | {"line":93,"character":38} | 0.016 ms | 83.8 MB
[Trace - 10:55:58] Received response 'textDocument/definition - (23729)' in 1ms.
No result returned.
[Trace - 10:55:58] Sending request 'documentLanguageRanges - (23730)'.
Params: {
"textDocument": {
"uri": "file:///{removed path}CampaignCreator.php"
}
}
[Trace - 10:55:58] Received notification 'window/logMessage'.
Params: {
"type": 4,
"message": "[Debug - 10:55:58] onDocumentLanguageRanges | 0.006 ms | 83.8 MB"
}
[Debug - 10:55:58] onDocumentLanguageRanges | 0.006 ms | 83.8 MB
[Trace - 10:55:58] Received response 'documentLanguageRanges - (23730)' in 2ms.
No result returned.
I found also an error
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at fs.readFile (/Users/***/.vscode/extensions/bmewburn.vscode-intelephense-client-0.8.0/server/node_modules/intelephense/lib/cache.js:68:26)
at /Users/***/.vscode/extensions/bmewburn.vscode-intelephense-client-0.8.0/server/node_modules/graceful-fs/graceful-fs.js:78:16
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:439:3)
[Info - 11:41:09] Connection to server got closed. Server will restart.
[Warn - 11:41:09] Error: Connection got disposed.
[Warn - 11:41:09] Error: Connection got disposed.
[Warn - 11:41:09] Error: Language client is not ready yet
[Warn - 11:41:09] Error: Language client is not ready yet
[Info - 11:41:10] Initialising
[Info - 11:41:12] Initialised in 2155 ms
It doesn't autocomplete/use the "Use" statement when I add classes from the vendor folder. I am using the Laravel Framework if it helps to shed more light
Ciao guys,
I tried to force a reindex by clearing intelephense cache, but it doesn't seem to help much.
I just can't search for symbols that are in new files that where not in the master branch when I first indexed and appeared after I switched to a feature branch.
All the new files are invisible to intelephense even if it seems it indexed something.
I checked #38, but my files are all .php
When a class uses a trait there is no autocomplete for the methods that it should then have access to.
i.e.
trait UserTrait {
/**
* isAdmin
*
* @return boolean
*/
public function isAdmin() {
...
}
}
class User {
use UserTrait;
}
Under the given/similar scenario there is nothing that shows up in autocomplete that would suggest that isAdmin()
method should be available for a User
object.
[Error - 8:58:23 AM] Error: Unexpected token: 149
at throwUnexpectedTokenError (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:1098:15)
at precedenceAssociativityTuple (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:115:17)
at unaryExpression (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:2430:56)
at expressionAtom (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:653:24)
at expression (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:481:19)
at returnStatement (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:1937:38)
at statement (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:1466:24)
at list (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:406:27)
at statementList (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:446:16)
at compoundStatement (/home/umpirsky/.vscode/extensions/bmewburn.vscode-intelephense-client-0.7.1/server/node_modules/php7parser/lib/parser.js:1423:47)
[Warn - 8:58:25 AM] file:///home/umpirsky/Foo/vendor/composer/autoload_classmap.php exceeds maximum file size.
[Warn - 8:58:25 AM] file:///home/umpirsky/Foo/vendor/composer/autoload_static.php exceeds maximum file size.
[Error - 8:58:25 AM] Request discover failed with message: Cannot read property 'text' of undefined
[Error - 8:58:25 AM] Request discover failed with message: Cannot read property 'text' of undefined
I'd like it if the statusbar item could be disable through the user's settings.json. It could default to enabled to maintain the current behaviour.
Could there be a way to keep the braces on the same line when formatting.
For classes and methods/functions the brace gets moved to the next line, and I would like them on the same line.
There's now an Add Use Declaration
command to condense a fully qualified name to a name (or alias) and add the corresponding use declaration. There are plans to add further commands. This issue tracks suggestions for the default keybindings for commands.
希望能添加鼠标悬停提示的功能。。
On thing what PHPstorm does very well is check your code for OOP errors like unused methods unused namespaces and mark the error when possible. I think you already have context of the classnames and the matching symbols somewhere in mem. You think this could be integrated quickly?
Is there any way (or could it be added) to have some basic formatting options?
something like...
"intelephense.format.options": {
curly {
nextLineAfterFunction: [true, false],
nextLineAfterIf: [true, false],
}
},
How those options are there isn't that important. I'd mainly just like a way to provide some basic guidance on where brackets should be placed. Possibly some control over spacing as well.
i.e. if(...){}
vs if (...) {}
with options to add a space before after parens
The reason this bugs me enough to add a request (beyond just having the end of the line bracket preference) is due to how VS Code folds code when you collapse a block.'
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.