denodrivers / mongo Goto Github PK
View Code? Open in Web Editor NEW๐ MongoDB driver for Deno ๐ฆ
Home Page: https://deno.land/x/mongo
License: MIT License
๐ MongoDB driver for Deno ๐ฆ
Home Page: https://deno.land/x/mongo
License: MIT License
We have a replica set on MongoDB configured with hosts set in the /etc/hosts file which don't exist on our development machines. When using a URL with the actual domains that are public, deno_mongo uses the information from the primary server instead of the URL. This is not the behaviour we get with Node's MongoDB or with MongoDB Compass (which both use the servers in the connection URL).
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: ServerSelectionError { message: "Server selection timeout: No available servers. Topology: { Type: ReplicaSetNoPrimary, Servers: [ { Address: premid:27017, Type: Unknown, Error: The supplied Host is unknown. (os error 11001) }, { Address: premid2:27017, Type: Unknown, Error: The supplied Host is (os error 11001) }, { Address: premid3:27017, Type: Unknown, Error: The supplied Host is (os error 11001) }, ] }" } }', src\command\find.rs:41:26
hi, I'm creating a Mongoose like ODM built top of this library. I successfully added nearly all methods except for the distinct
method can you please add that method.
https://docs.mongodb.com/manual/reference/method/db.collection.distinct/
this issue is also mentioned in #38
I fork this repo and tried to add that feature by myself but failed to do so that because I'm a beginner to rust.
I hope you add this feature.
and also version 0.8.0 doesn't seem to work on windows.
is there any way to know if the driver is successfully connected to the database or not ??
& also thanks for making this awesome module.
I tried inserting a record that already exists in Mongo and it panicked and didn't send the error correctly back to Deno.
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: WriteError(WriteError(WriteError{ code: 11000, code_name: None, message: "E11000 duplicate key error collection: test.users index: id_1 dup key: { id: null}" })) }', src/command/insert.rs:32:29 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
And here is the error for both v7 and v8
Here is my sample repo if you'd care to look
https://github.com/rikyperdana/deno-crud
In order to maintain a well-structured program, you need to provide the functionality to define a mongoDB document scheme.
Microsoft Windows [version 10.0.18363.900]
deno 1.1.3
v8 8.5.216
typescript 3.9.2
INFO load deno plugin "deno_mongo" from local "D:\WorkFolder\Devlopment\Peoples Project\Deno\deno-rest-api\.deno_plugins\deno_mongo_7117ccb53f8978e745db83130ae27b42.dll"
thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', src\command\connect.rs:63:24
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Segmentation fault
Using Deno 1.0
and mongo 0.6.0
Get following error
Compile file:///D:/practice/example.ts
error: TS2339 [ERROR]: Property 'openPlugin' does not exist on type 'typeof Deno'.
return Deno.openPlugin(localPath);
~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:64:15
Thread '<unnamed>' panicked at 'called
Result::unwrap()on an
Err value: Error { kind: ServerSelectionError { message: "Server selection timeout: No available servers. Topology: { Type: Unknown, Servers: [ { Address: localhost:27017, Type: Unknown, Error: failed to fill whole buffer }, ] }" } }'
Is it due to an old version of MongoDB? I'm using the 3.4.9
First, i'd like to thank you for the amazing job you've been doing.
I was playing with Deno and Mongo and I just realized that it was impossible for me to make projection when returning data from a find query.
const productList = await products.find({ }, {name: 1, price:1 , _id:0})
the result of my productList variable contains all products with their price and their id too ...
Am I missing something or is it something that is just not working for the moment ?
Does this project support the said function on the update query?
Cannot run the example from README.TS
import { init, MongoClient } from "https://deno.land/x/[email protected]/mod.ts";
// Initialize the plugin
await init();
const client = new MongoClient();
client.connectWithUri("mongodb://localhost:27017");
const db = client.database("testoooo");
const users = db.collection("users");
// insert
const insertId = await users.insertOne({
username: "user1",
password: "pass1"
});
// insertMany
const insertIds = await users.insertMany([
{
username: "user1",
password: "pass1"
},
{
username: "user2",
password: "pass2"
}
]);
Getting error:
error: TS2339 [ERROR]: Property 'openPlugin' does not exist on type 'typeof Deno'.
return Deno.openPlugin(localPath);
~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:64:15
It fails even with only init()
Deno Version:
deno 1.0.0
v8 8.4.300
typescript 3.9.2
Mac OS X Mojave (10.14.2)
When I try to use updateOne or findOne for invalid mongo id. It is throwing the error shown in the image and crashing the server program. I am totally new to Deno. How can I handle this error? Any kind of help will be appreciated.
Here is my the part of code for findOne
import {Friend} from '../helpers/dbconnect.ts';
export const getFriend: any = async(context: any)=> {
try{
let id: string = context.params.id;
const data :any = await Friend.findOne({_id: {"$oid": id}});
if(data){
context.response.body = data;
context.response.status = 200;
} else {
context.response.body = "not found";
context.response.status = 204;
}
}
catch(e) {
context.response.body = null;
context.response.status = 500
console.log(e);
}
}
Hello. I didn't touch my previously compiled and running code and I have an error on deno run, seemingly happens while loading the plugin and so it appears from the backtrace, I pasted it here: https://pastebin.com/S7VNTP3P
Edit:
deno 1.0.4 | v8 8.4.300 | typescript 3.9.2
The function .limit() will be nice to add, to limit the number of results. Like the mongoose one. Thanks.
use deno v1.0.0
get a problem like this error
Hey,
First of all, thanks for all the efforts on this, I like deno_mongo very much :)
Now, here's about the issue I'm encountering. I am trying to lazy-load deno_mongo
for my project denodb
which handles different types of databases. The problem being that if someone only wants to use mysql, the library shouldn't load mongodb (which comes with additional command flags unstable
and allow-plugin
at least).
After digging in the code, I found a solution to lazy-load everything:
const { MongoClient, RELEASE_URL, init } = await import("../../unstable_deps.ts");
await init(RELEASE_URL);
const client = new MongoClient();
But obviously this is when I realised, this is already being done in mod.ts
. The problem is, when lazy-loaded, the module doesn't wait on the await init(...)
instruction from that file.
Uncaught Error: The plugin must be initialized before use
So far, the only solution I found was to remove that line (with init
) from my local package mod.ts
. Otherwise, by keeping my additional await init(...)
, I am getting an error saying that I am trying to initialise the same plugin twice (which makes sense).
I am therefore asking: could something be done here so that this library could be lazy-loaded when necessary? I know this might only be my problem right now, but I am sure it might be someone else's someday.
Just let me know if you could do something about this, any thought.
Thanks for your time and keep up the good work :)
error: TS2694 [ERROR]: Namespace 'Deno' has no exported member 'PluginOp'.
let dispatcher: Deno.PluginOp | null = null;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:7:22
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'PluginOp'.
dispatcher = Mongo.ops["mongo_command"] as Deno.PluginOp;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:32:51
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'OperatingSystem'.
const PLUGIN_SUFFIX_MAP: { [os in Deno.OperatingSystem]: string } = {
~~~~~~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:9:40
TS7053 [ERROR]: Element implicitly has an 'any' type because expression of type '"darwin" | "linux" | "windows"' can't be used to index type '{ mac?: string | undefined; linux?: string | undefined;
win?: string | undefined; }'.
Property 'darwin' does not exist on type '{ mac?: string | undefined; linux?: string | undefined; win?: string | undefined; }'.
const remoteUrl = urls[os];
~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:35:21
TS2339 [ERROR]: Property 'openPlugin' does not exist on type 'typeof Deno'.
return Deno.openPlugin(localPath);
~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:58:15
Found 5 errors.
C:\Users\DC\Desktop\deno>deno run -A deno-mongo.ts
Compile file:///C:/Users/DC/Desktop/deno/deno-mongo.ts
error: TS2304 [ERROR]: Cannot find name 'getClient'.
const db = getClient().database("test");
~~~~~~~~~
at file:///C:/Users/DC/Desktop/deno/deno-mongo.ts:9:12
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'PluginOp'.
let dispatcher: Deno.PluginOp | null = null;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:7:22
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'PluginOp'.
dispatcher = Mongo.ops["mongo_command"] as Deno.PluginOp;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:32:51
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'OperatingSystem'.
const PLUGIN_SUFFIX_MAP: { [os in Deno.OperatingSystem]: string } = {
~~~~~~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:9:40
TS7053 [ERROR]: Element implicitly has an 'any' type because expression of type '"darwin" | "linux" | "windows"' can't be used to index type '{ mac?: string | undefined; linux?: string | undefined;
win?: string | undefined; }'.
Property 'darwin' does not exist on type '{ mac?: string | undefined; linux?: string | undefined; win?: string | undefined; }'.
const remoteUrl = urls[os];
~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:35:21
TS2339 [ERROR]: Property 'openPlugin' does not exist on type 'typeof Deno'.
return Deno.openPlugin(localPath);
C:\Users\DC\Desktop\deno>deno run -A deno-mongo.ts
Compile file:///C:/Users/DC/Desktop/deno/deno-mongo.ts
error: TS2304 [ERROR]: Cannot find name 'getClient'.
const db = getClient().database("test");
~~~~~~~~~
at file:///C:/Users/DC/Desktop/deno/deno-mongo.ts:9:12
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'PluginOp'.
let dispatcher: Deno.PluginOp | null = null;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:7:22
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'PluginOp'.
dispatcher = Mongo.ops["mongo_command"] as Deno.PluginOp;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:32:51
TS2694 [ERROR]: Namespace 'Deno' has no exported member 'OperatingSystem'.
const PLUGIN_SUFFIX_MAP: { [os in Deno.OperatingSystem]: string } = {
~~~~~~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:9:40
TS7053 [ERROR]: Element implicitly has an 'any' type because expression of type '"darwin" | "linux" | "windows"' can't be used to index type '{ mac?: string | undefined; linux?: string | undefined;
win?: string | undefined; }'.
Property 'darwin' does not exist on type '{ mac?: string | undefined; linux?: string | undefined; win?: string | undefined; }'.
const remoteUrl = urls[os];
~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:35:21
TS2339 [ERROR]: Property 'openPlugin' does not exist on type 'typeof Deno'.
return Deno.openPlugin(localPath);
~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:58:15
Found 6 errors.
Is there any way to use collection.distinct()?
When testing the example, this error appears in the console.
error: TS2339 [ERROR]: Property 'openPlugin' does not exist on type 'typeof Deno'.
return Deno.openPlugin(localPath);
~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:64:15
my code:
The await init()
is needed to load the plugin, but this is an implementation detail that should not be public. It could easily be removed from the public API by calling the method internally.
This way you remove a foot-gun where users may forget to call your init method.
Hey, Thanks for making amazing library , my doubt is , is there a way to know that the query you fired is successful / gets error in methods (insert ,update ,delete,find) through promises or callbacks
How can I handle query error?
I have created a unique index, but how can I detect whether the error code is 11000
It would be nice to pass a generic to db.collection so that the return type of any functions that run queries such as findOne would return the right type:
interface User {
_id: ObjectId;
username: string;
passwordHash: string;
}
const users = db.collection<User>("users");
users.findOne({ username: "thing" }) // -> Promise<User | void>
Hi, run the example program on W10 and it worked OK. But, when I want to run the same program on Debian. The following error appears:
thread '<unnamed>' panicked at 'called `Option :: unwrap ()` on a `None` value', src / command / connect.rs: 63: 24
note: run with `RUST_BACKTRACE = 1` environment variable to display a backtrace
fatal runtime error: failed to initiate panic, error 5
I have installed:
With:
Please, someone explain the error and how it is solved.
When calling ObjectId()
with a string that has a valid id somewhere in it, it returns an ObjectId
while it should throw an Error
.
For example, calling ObjectId()
with INVALID-5ec1a815005b1e3000d1e377
, 5ec1a815005b1e3000d1e377-INVALID
or INVALID-5ec1a815005b1e3000d1e377-INVALID
all return an ObjectId
, because they contain a valid id (5ec1a815005b1e3000d1e377
).
I cannot use this lib for deno 0.42.0 in local.
I believe some built in func in Deno does not support some files in deno_mongo
Deno.xxx
some func in deno 0.42.0 already remove
I tried something like :
await db.collection('todos').deleteOne({ _id: { $oid: "a" }});
And got my program to crash with the following error :
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: FromHexError(OddLength)', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/bson-0.14.1/src/bson.rs:575:39
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '' panicked at 'called Result::unwrap()
on an Err
value: FromHexError(InvalidHexCharacter { c: 's', index: 0 })', C:\Users\runneradmin.cargo\registry\src\github.com-1ecc6299db9ec823\bson-0.14.1\src\bson.rs:575:39
note: run with RUST_BACKTRACE=1
environment variable to display a backtrace
here is the error details
thread '' panicked at 'called Result::unwrap()
on an Err
value: Error { kind: WriteError(WriteError(WriteError { code: 11000, code_name: None, message: "E11000 duplicate key error collection: hops.users index: email_1 dup key: { email: "[email protected]" }" })) }', src/command/insert.rs:32:29
note: run with RUST_BACKTRACE=1
environment variable to display a backtrace
and this doesn't get into the catch block, but the app stop its execution.
how can i handle this panic at deno side.
I try to join two collections with aggregate but I didn't. My sample code is here:
const result = await articles.aggregate([
{
$lookup: {
from: "authors",
localField: "oid",
foreignField: "author_id",
as: "author",
},
},
{
$unwind: "$author",
},
]);
req.send(result);
I want an output like the one below. But for now, although there are only 3 Articles in my database, it matches these authors with all authors and brings a total of 6 records.
I think the problem is caused by the following reason. But I'm not sure.
// My output id format
"_id": {
"$oid": "5ed7abfc00f94b9c0048ba5e"
},
// what will be written in the localfield field in this section
$lookup: {
from: "authors",
localField: "oid",
foreignField: "author_id",
as: "author",
},
How can i solve this problem? I am waiting your help.
Do we have support for find and sort?
Thanks :)
Server shutdown when the following actions take place
AWS Lambda uses a Linux distribution called amazonlinux2 that uses musl instead of glibc. It would be great if deno_mongo would provide fully static builds that do not dynamically link to the libc provided by the os, so the plugin can be used on AWS Lambda. This is very simple to do in Rust: https://doc.rust-lang.org/edition-guide/rust-2018/platform-and-target-support/musl-support-for-fully-static-binaries.html
If this seems reasonable I can create a PR for this.
when trying to create an index like below,
users.createIndexes([
{
keys: { email: 1 },
options: { unique: true },
},
]);
i get this error:
api_1 | [IndexModel { keys: OrderedDocument({"email": I64(1)}), options: Some(OrderedDocument({"unique": Boolean(true)})) }]
api_1 | thread '<unnamed>' panicked at 'not implemented', <::std::macros::panic macros>:2:4
api_1 | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
am i calling it wrong, or does not implemented mean here that its not ready to be called yet?
tia
INFO load deno plugin "deno_mongo" from local "/mnt/d/projects/deno-crud/.deno_plugins/deno_mongo_90b8202cc9554c64927ac1e194abc3f6.so"
Segmentation fault (core dumped)
Running with command
deno run --allow-net --allow-write --allow-read --allow-plugin --unstable server.ts
File
import { init, MongoClient } from "https://deno.land/x/[email protected]/mod.ts";
// Initialize the plugin
await init();
const client = new MongoClient();
client.connectWithUri("mongodb://localhost:27017");
const db = client.database("test");
const users = db.collection("users");
// insert
const insertId = await users.insertOne({
username: "user1",
password: "pass1"
});
Segmentation fault
deno run --allow-read --allow-write --allow-net --allow-run --unstable --allow-plugin index.ts
INFO load deno plugin "deno_mongo" from local "/home/mick/projects/backup-project/.deno_plugins/deno_mongo_2970fbc7cebff869aa12ecd5b8a1e7e4.so"
Segmentation fault (core dumped)
MongoDB allows any value except for arrays as values in the _id
field of a document. This driver falsely assumes it is always an ObjectID.
The _id field may contain values of any BSON data type, other than an array.
from https://docs.mongodb.com/manual/core/document/#the-id-field
Hello, i'm very happy to know tha a mongo driver is available with deno but there are a couple of errors when i try to execute in widows: this is the error below
Compile https://deno.land/x/[email protected]/mod.ts
error TS2694: Namespace 'Deno' has no exported member 'PluginOp'.
let dispatcher: Deno.PluginOp | null = null;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:7:22
error TS2339: Property 'ops' does not exist on type 'number'.
dispatcher = Mongo.ops["mongo_command"] as Deno.PluginOp;
~~~
at https://deno.land/x/[email protected]/ts/util.ts:32:22
error TS2694: Namespace 'Deno' has no exported member 'PluginOp'.
dispatcher = Mongo.ops["mongo_command"] as Deno.PluginOp;
~~~~~~~~
at https://deno.land/x/[email protected]/ts/util.ts:32:51
error TS2694: Namespace 'Deno' has no exported member 'OperatingSystem'.
const PLUGIN_SUFFIX_MAP: { [os in Deno.OperatingSystem]: string } = {
~~~~~~~~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:9:40
error TS7053: Element implicitly has an 'any' type because expression of type '"darwin" | "linux" |
"windows"' can't be used to index type '{ mac?: string | undefined; linux?: string | undefined; win?: string | undefined; }'.
Property 'darwin' does not exist on type '{ mac?: string | undefined; linux?: string | undefined;
win?: string | undefined; }'.
const remoteUrl = urls[os];
~~~~~~~~
at https://deno.land/x/[email protected]/mod.ts:35:21
Found 5 errors.
How to fix it ?
I can't found any indication on how to close
client connection from database (instead of using a timeout property in clientOptions
).
If I take the example of the node mongodb-native, I think the close()
method on the Mongo client is missing (see : here) on this lib. ๐ค
Hi,
I can't start this mongo plugin with deno 1.0.5 version.
Here is the error stack
thread '<unnamed>' panicked at 'called `Option::unwrap()` on a `None` value', src/command/connect.rs:63:24
stack backtrace:
0: backtrace::backtrace::libunwind::trace
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.44/src/backtrace/libunwind.rs:86
1: backtrace::backtrace::trace_unsynchronized
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.44/src/backtrace/mod.rs:66
2: std::sys_common::backtrace::_print_fmt
at src/libstd/sys_common/backtrace.rs:78
3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
at src/libstd/sys_common/backtrace.rs:59
4: core::fmt::write
at src/libcore/fmt/mod.rs:1063
5: std::io::Write::write_fmt
at src/libstd/io/mod.rs:1426
6: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:62
7: std::sys_common::backtrace::print
at src/libstd/sys_common/backtrace.rs:49
8: std::panicking::default_hook::{{closure}}
at src/libstd/panicking.rs:204
9: std::panicking::default_hook
at src/libstd/panicking.rs:224
10: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:470
11: rust_begin_unwind
at src/libstd/panicking.rs:378
12: core::panicking::panic_fmt
at src/libcore/panicking.rs:85
13: core::panicking::panic
at src/libcore/panicking.rs:52
14: deno_mongo::command::connect::connect_with_uri
15: deno_mongo::op_command
16: <deno::ops::plugin::PluginInterface as deno_core::plugin_api::Interface>::register_op::{{closure}}
17: deno_core::core_isolate::CoreIsolateState::dispatch_op
18: deno_core::bindings::send
19: <extern "C" fn(A0) .> R as rusty_v8::support::CFnFrom<F>>::mapping::c_fn
20: _ZN2v88internal25FunctionCallbackArguments4CallENS0_15CallHandlerInfoE
21: _ZN2v88internal12_GLOBAL__N_119HandleApiCallHelperILb0EEENS0_11MaybeHandleINS0_6ObjectEEEPNS0_7IsolateENS0_6HandleINS0_10HeapObjectEEESA_NS8_INS0_20FunctionTemplateInfoEEENS8_IS4_EENS0_16BuiltinArgumentsE
22: _ZN2v88internalL26Builtin_Impl_HandleApiCallENS0_16BuiltinArgumentsEPNS0_7IsolateE
23: Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
fatal runtime error: failed to initiate panic, error 5
Aborted
Is it possible to send a fields object to find
to get back a subset of attributes?
The mongo command-line client takes a second argument like this:
db.records.find({}, {_id: 0, column1: 1, column2: 1})
Is this possible in deno_mongo?
It'd be great if there were some way to generate an ObjectId. If there is, please show me how.
Thanks
Getting error on this statement
getClient().database("db_name");
TS2304 [ERROR]: Cannot find name 'getClient'.
I want to migrate my app from node to deno. Is deno_mongo
safe for production use?
It's better to specify the status of this package somewhere.
await this.webhooksModel.insertMany([
{
...data,
nextSchedule: new Date()
}
])
await this.webhooksModels.find(
{
nextSchedule: { $lte: new Date() } // new Date(new Date().toISOString())
}
)
// returns []
If the data type was (new Date).toISOString()
it will return data with the following query
await this.webhooksModel.insertMany([
{
...data,
nextSchedule: (new Date()).toISOString()
}
])
await this.webhooksModels.find(
{
nextSchedule: { $lte: new Date(new Date().toISOString()) }
}
)
// returns [...data]
However, this will cause problems in the MongoDB itself. We are unable to sort the data if the data type was string
instead of Date
I am not able to import the mongo module after Deno v0.39.0 released. When fetching the module, it gets a 404 error like this.
error: Uncaught Other: Import 'https://deno.land/std/strings/mod.ts' failed: 404 Not Found
After I check the release note, I notice that there is a breaking change that deletes /std/strings/. Can you please make it up to v0.39.0?
First of all, I want to thank you about the module.
I jsut want to know if there any restrictions or a use case to return the id of inserted element with insertOne
and insertMany
; why we don't return the inserted element containing the different attributes with id and also for updating an element too?
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.