Git Product home page Git Product logo

better-firebase-functions's People

Contributors

asrul10 avatar dependabot[bot] avatar george43g avatar sdemjanenko avatar semantic-release-bot avatar tobsterclark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

better-firebase-functions's Issues

Issue deploying functions in nested folders?

I have a functions src folder like so

  • src
    • http
      someFunction.ts
      • stripe
        stripeFunction.ts

someFunction.ts deploys just fine with BFF. However, I receive a 400 error on the stripeFunction.ts error when using firebase deploy --only functions.

This is the error I receive in my console, however the recommended command doesn't work either. If I move stripeFunction to the http folder, then it deploys fine, but not from the stripe folder.

Functions deploy had errors with the following functions:
        http-stripe\stripeFunction

To try redeploying those functions, run:
    firebase deploy --only functions:http.stripe\stripeFunction

Not sure on slow times

Hi! I really appreciate the work you did here. I took part of the weekend to implement this in my app that had 50 functions. Wasn't terrible, and I was really excited to see the kind of improvements in execution time.

πŸ˜… Well, I think cold boot times went up across the board.

This is my index.ts
`import { exportFunctions } from 'better-firebase-functions';

import camelCase from 'camelcase';
import { sep } from 'path';

function funcNameFromRelPath(relPath) {
let isFunction = false;
if (relPath.indexOf('https/') === 0) {
isFunction = true;
}

const relPathArray = relPath.split(sep); /* ? /
const fileName = relPathArray.pop(); /
? */
const relDirPathFunctionNameChunk = relPathArray.map((pathFragment) => camelCase(pathFragment)).join('-');
const fileNameFunctionNameChunk = isFunction ? fileName.split('.')[0] : camelCase(fileName.split('.')[0]);
const funcName = relDirPathFunctionNameChunk
? ${relDirPathFunctionNameChunk}-${fileNameFunctionNameChunk}
: fileNameFunctionNameChunk;
const final = isFunction ? funcName.replace('https-', '') : funcName.replace(sep, '-');
return final;
}

exportFunctions({
__filename,
exports,
functionDirectoryPath: './firestore',
funcNameFromRelPath,
searchGlob: '**/*.[jt]s',
enableLogger: true,
});
`

I needed this to be backwards compatible with the function names used in the app, and so I could test this all on a staging server before pushing to the production app.

With logger enabled, I get this when I run my tests:
[better-firebase-functions] Directory Glob Search: 6.141ms
[better-firebase-functions] Load & Export Modules (Deployment): 2045.671ms

Does that seem... normal?

For example, I have a /users/ onUpdate trigger that was consistently 1.5+ seconds. I removed all code from it, deployed, and when it so my file was literally just:

`
const functions = require('firebase-functions');

export default functions.firestore.document('users/{userID}').onUpdate(async (change, context) => {

});
`

and still was hitting 1.5. That can't really be the normal cost to come from cold boot for any function, is it?

All help and thoughts appreciated! Thank you!

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you can benefit from your bug fixes and new features again.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can fix this πŸ’ͺ.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here are some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two Factor Authentication for your account, set its level to "Authorization only" in your account settings. semantic-release cannot publish with the default "
Authorization and writes" level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot πŸ“¦πŸš€

Functions call singleton every invocation

As this package uses eval('require') does that mean that a singleton created every time the function gets executed? We're having a problem with a setup function being called lots of times in the app and we're wondering if this library may cause the problem by the way it requires files?

Javascript - firebase deploy just exits

Hey! This is a really sweet package and I would like to use it in my JS project. I couldn't find much reference to JS in the docs and I'm a bit of a beginner so I apologise if this question is straightforward.

I set up the folder structure as mentioned:
image

And inside of index.js all I have is, taken from this issue, :

const admin = require('firebase-admin');
admin.initializeApp();
require('better-firebase-functions').exportFunctions({__filename, exports: module.exports});

All my functions are structured like below:

"use strict";
const functions = require("firebase-functions");
const admin = require("firebase-admin");

module.exports.default = functions.firestore
  .document("items/{item}")
  .onCreate(async (doc, context) => {
    const db = admin.firestore();
    return db.doc("GLOBAL_DATA/GENERAL_DATA").update({
      itemCodes: admin.firestore.FieldValue.arrayUnion(doc.id),
      batchNumbers: admin.firestore.FieldValue.arrayUnion(
        doc.data().generalData.batchNumber
      )
    });
  });

But if I run firebase deploy it starts up and then exits:

firebase deploy --only functions

PS C:\Users\simeon.ramjit\Documents\projects\plant-order-form\functions> firebase deploy --only functions:scheduled
=== Deploying to 'plant-order-form'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint C:\Users\simeon.ramjit\Documents\projects\plant-order-form\functions
> eslint .

+  functions: Finished running predeploy script.
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
+  functions: required API cloudbuild.googleapis.com is enabled
+  functions: required API cloudfunctions.googleapis.com is enabled
i  functions: preparing functions directory for uploading...
PS C:\Users\simeon.ramjit\Documents\projects\plant-order-form\functions> 

I'm running Node v10 and I tried putting the api folder into a folder named src flag I'd appreciate any assistance on this.

Not finding functions

Hi, none of my functions are building with this. I'm using as follows:

import { exportFunctions } from 'better-firebase-functions';

exportFunctions({
  // standard node var (leave as is).
  __filename,
  // standard node var (leave as is).
  exports,
  // define root functions folder relative to this file.
  functionDirectoryPath: './app/functions/*',
  searchGlob: '**/*.f.ts',
})

Normally I use ng build to handle the build, not sure if that matters.

Is this repository unattended? Error generating function names within nested folders

I've been working with Firebase functions and using this package which is awesome. However, I'm facing an issue now, when you use nested folder structure:

image

The emulator throws an error
! Error adding trigger: FirebaseError: HTTP Error: 404, Not Found

and within the log you can find

INFO: Unknown request URI: /emulator/v1/projects/myfirebaseproject/triggers/db-users/onCreate-0

As you can see the generated function does not correspond to the structure, it should generate db-users-onCreate which is not the case.

Thing is, I found some other issues like this, which are not being attended. Actually the repo's last commit was 11-17 months ago. I'm wondering if its being deprecated or?

Only one function gets deployed

When I run firebase deploy only the very first function in the project structure is getting deployed. I am using the exact project structure that you recommend in your Medium article. If I uncomment the function that is being deployed successfully, the very next function in the project structure which is located in a different sub-directory to the initial function that is being deployed gets deployed... and so on. So exportFunctions is able to traverse through my entire project directory however it only deploys the very first function it finds.

Unable to deploy v2 function with uppercase letter in function name

I'm working to update my functions to v2. I'm running into an issue with deploying v2 functions that have an uppercase letter in the function name. V1 functions with an uppercase letter in the function name deploy fine. V2 Functions with names that are all lowercase deploy fine. I know firebase-tools just released an update to support uppercase letters in v2 function names - I'm using that version.

The error I get is "Function 'myFunction' is not defined in the provided module."

If I don't use this package, I'm able to deploy a v2 function defined as:

exports.myFunction = onCall(() => { return true; })

...so it seems there's no issue on the Firebase side with v2 functions with uppercase letters in the function name.

Functions all work fine in the emulator (including v2 functions with an uppercase letter in the function name).

Anyone been able to deploy v2 functions with an uppercase letter in the function name using this package?

JS ESM Compatibility?

Hello, I have been trying to use this library for a few hours and can't get it to work. Here's what I am doing:

I generally use the ESM (type=module) setting in my node.js projects. However, it seems the exports setting of this library is giving me heart aches πŸ™ˆ.

This is my index.js:

import bff from 'better-firebase-functions'
import { fileURLToPath } from 'node:url'
const __filename = fileURLToPath(import.meta.url)

const result = bff.exportFunctions({
  enableLogger: true,
  __filename,
  exports: module.exports,
  // exportPathMode: true,
})
console.log('BFF RESULT:', result)

Note that I already found a way to replace the __filename since that appears to be missing in ESM, but no matter what I set for the exports parameter, I never get it to work. module.exports is not defined and the same is true if I just use exports.

  • Does anyone know of a solution for this?
  • Is it possible in some way to use Better Firebase Functions with ESM / import?

Thank you, I am looking forward to reading from you.

Cheers, Chris

Clarify/improve support for pure JS (no TS) projects

It's never explicitly stated either way, but I read the readme as implying that pure JS projects (not using TypeScript or Babel) are supported by this library:

  • "/// entry point, index.js/ts"
  • "For JS projects that cant use [...], just use equivalent [...]"

That said, I had no luck getting it working. I've tried with different versions of node, but I'm getting fairly a different (long) list of errors each time. Mostly SyntaxErrors on import statements, which made me think that it's a JS vs. TS (or rather: expectation of full ES6 support) situation. However, I also got a MODULE_NOT_FOUND for unicode-13.0.0 and a SyntaxError: Invalid regular expression: /[_.\- ]+([\p{Alpha}\p{N}_]|$)/: Invalid escape in funcNameFromRelPathDefault() of node_modules\better-firebase-functions\lib\index.js:1:40863.

This is after creating a new project (firebase init), not selecting TS, creating the following index.js and then running firebase functions:shell.

const bff = require('better-firebase-functions');
bff.exportFunctions({ __filename, module.exports });

Am I doing something wrong? Or is TypeScript simply a requirement to use better-firebase-functions? Then I would appreciate if that could be clarified in the readme.

If it is supported, then I would appreciate basic instructions for setting up a new project that way.

Firebase-functions v4 breaks better-firebase-functions: No functions are detected during deployment

After updating to firebase-functions 4.0.1 and trying to deploy the functions, firebase doesn't find any cloud functions anymore. It shows the following error:

The following functions are found in your project but do not exist in your local source code:
        auth-onCreate(europe-west1)
…
If you are renaming a function or changing its region, it is recommended that you create the new function first before deleting the old one to prevent event loss. For more info, visit https://firebase.google.com/docs/functions/manage-functions#modify

? Would you like to proceed with deletion? Selecting no will continue the rest of the deployments. No

index.ts

import { exportFunctions } from 'better-firebase-functions';
import camelCase from 'camelcase';

exportFunctions({
  __filename,
  exports,
  functionDirectoryPath: './api',
  funcNameFromRelPath: myFuncNameAlgo,
});

function myFuncNameAlgo(relPath: string): string {
  const sep = '/';
  const relPathArray = relPath.split(sep); /* ? */
  const fileName = relPathArray.pop(); /* ? */
  const relDirPathFunctionNameChunk = relPathArray.map((pathFragment) => camelCase(pathFragment)).join(sep);
  const fileNameFunctionNameChunk = camelCase(fileName!.split('.')[0]);
  const funcName = relDirPathFunctionNameChunk ? `${relDirPathFunctionNameChunk}${sep}${fileNameFunctionNameChunk}` : fileNameFunctionNameChunk;
  return funcName.split(sep).join('-');
}

With firebase-functions 3.24.1 deployment works and the functions are picked up correctly.

The transpiled JS files look as expected and correctly use exports.default

Sample function (TS->JS)

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const functions = __importStar(require("firebase-functions"));
exports.default = functions
    .region('europe-west1')
    .auth.user()
    .onCreate((user) => {
    …
    return Promise.resolve();
});

Is there any way to debug what's going wrong?

exportFunctions has an issue creating unique functions

I've been trying to use better-firebase-functions following the instructions from medium as well as here.

The issue I'm experiencing is that the ts modules are not exported as unique functions but rather as their folder.

Not sure what I'm doing wrong. Are there any logs I can inspect to see what's going on?
Thanks for giving any pointers!

The file structure:
Screen Shot 2020-07-04 at 10 43 10 AM

index.ts

import { exportFunctions } from 'better-firebase-functions'
exportFunctions({ __filename, exports });

Output when running firebase deploy --only functions


i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /Users/benedikt/vestico/firebase/functions
> eslint .

Running command: npm --prefix "$RESOURCE_DIR" run build

> functions@ build /Users/benedikt/vestico/firebase/functions
> tslint --project tsconfig.json && ./node_modules/.bin/tsc

βœ”  functions: Finished running predeploy script.
i  functions: ensuring necessary APIs are enabled...
βœ”  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (84.72 KB) for uploading
βœ”  functions: functions folder uploaded successfully
i  functions: creating Node.js 10 (Beta) function api-auth(europe-west1)...
i  functions: creating Node.js 10 (Beta) function api-db(europe-west1)...
i  functions: creating Node.js 10 (Beta) function api-db(europe-west1)...
i  functions: creating Node.js 10 (Beta) function api-db(europe-west1)...
i  functions: creating Node.js 10 (Beta) function api-http(europe-west1)...
i  functions: creating Node.js 10 (Beta) function api-http(europe-west1)...

The following functions are found in your project but do not exist in your local source code:
        api-auth(europe-west1)
        api-db(europe-west1)
        api-http(europe-west1)

If you are renaming a function or changing its region, it is recommended that you create the new function first before deleting the old one to prevent event loss. For more info, visit https://firebase.google.com/docs/functions/manage-functions#modify

? Would you like to proceed with deletion? Selecting no will continue the rest of the deployments. Yes
i  functions: deleting function api-auth(europe-west1)...
i  functions: deleting function api-db(europe-west1)...
i  functions: deleting function api-http(europe-west1)...
⚠  functions: failed to create function api-http
HTTP Error: 409, Function api-http in region europe-west1 in project vestico-dev already exists
⚠  functions: failed to create function api-db
HTTP Error: 409, Function api-db in region europe-west1 in project vestico-dev already exists
⚠  functions: failed to create function api-db
HTTP Error: 409, Function api-db in region europe-west1 in project vestico-dev already exists
⚠  functions: failed to create function api-db
HTTP Error: 409, Function api-db in region europe-west1 in project vestico-dev already exists
⚠  functions: failed to create function api-auth
HTTP Error: 409, Function api-auth in region europe-west1 in project vestico-dev already exists
⚠  functions: failed to create function api-http
HTTP Error: 409, Function api-http in region europe-west1 in project vestico-dev already exists
βœ”  functions[api-db(europe-west1)]: Successful delete operation. 
βœ”  functions[api-http(europe-west1)]: Successful delete operation. 
βœ”  functions[api-auth(europe-west1)]: Successful delete operation. 


Functions deploy had errors with the following functions:
        api-auth
        api-db
        api-db
        api-db
        api-http
        api-http


To try redeploying those functions, run:
    firebase deploy --only functions:api-auth,functions:api-db,functions:api-db,functions:api-db,functions:api-http,functions:api-http


To continue deploying other features (such as database), run:
    firebase deploy --except functions

Error: Functions did not deploy properly.

Output when running firebase serve:

=== Serving from '/Users/benedikt/vestico/firebase'...

⚠  Your requested "node" version "10" doesn't match your global version "12"
βœ”  functions: functions emulator started at http://localhost:5001
i  functions: Watching "/Users/benedikt/vestico/firebase/functions" for Cloud Functions...
i  hosting: Serving hosting files from: public
βœ”  hosting: Local server: http://localhost:5000
βœ”  functions[api-http/bodyDoubles/computeFromPosts]: http function initialized (http://localhost:5001/vestico-dev/europe-west1/api-http/bodyDoubles/computeFromPosts).
βœ”  functions[api-http/startRedeem]: http function initialized (http://localhost:5001/vestico-dev/europe-west1/api-http/startRedeem).
i  functions[api-auth/onCreate]: function ignored because the auth emulator does not exist or is not running.
i  functions[api-db/pointsActions/onCreate]: function ignored because the firestore emulator does not exist or is not running.
i  functions[api-db/pointsActions/onUpdate]: function ignored because the firestore emulator does not exist or is not running.
i  functions[api-db/redeemRequests/onCreate]: function ignored because the firestore emulator does not exist or is not running.

Function in nested folder not working

Hi there!

I'm trying to export functions from the following folder structure:

- src/
   -https/
       -recipe/
            create.func.ts
            read.func.ts

I was expecting the output to be two functions named:

https-recipe-create
https-recipe-read

Instead, it seems to take into account only the first two folder level and generate two functions

https-recipe
https-recipe

Which of course cannot be deployed:

HTTP Error: 409, Function https-recipe in region europe-west1 in project myapp already exists

Weird thing is that, if I remove one level of nesting (remove /recipe in between), they deploy properly.

Am I missing anything?

Cheers! πŸ˜ƒ

Cloud Firestore triggers shows HTTP Error 400

I have a project with 59 functions, all of the functions deploy successfully except the Cloud Firestore triggers.

⚠  functions: failed to update function bookingsOnUpdate
HTTP Error: 400, The request has errors

Running firebase deploy --debug --only functions:bookingsOnCreate shows:

<<< HTTP RESPONSE BODY {"error":{"code":400,"message":"The request has errors","status":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.BadRequest","fieldViolations":[{"field":"event_trigger","description":"Expected value not-a-project to equal #############"}]}]}}

Where ############# is the project name.

There is also:

[2020-05-30T10:05:11.879Z] Trigger is:  {"eventTrigger":{"resource":"projects/not-a-project/databases/(default)/documents/bookings/{id}","eventType":"providers/cloud.firestore/eventTypes/document.create","service":"firestore.googleapis.com"}}

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you can benefit from your bug fixes and new features again.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can fix this πŸ’ͺ.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here are some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two Factor Authentication for your account, set its level to "Authorization only" in your account settings. semantic-release cannot publish with the default "
Authorization and writes" level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot πŸ“¦πŸš€

Provide naming convention that is not derived from filename

In my project my functions are laid out as such:

-src
 |- index.ts // imports & rexports all functions
 |- plaid/index.ts
 |- stripe/index.ts
 |- splitwise/index.ts
 |- transactions/index.ts
 |- auth/index.ts

Plaid, Stripe & Splitwise are 3rd party services that my application interfaces with and mostly have https functions defined within although there are also different types of triggers. transactions & auth refer to data in my application and are either firestore or user triggers.

Each of these subfolders has a single index.ts because none of them have gotten big enough to warrant splitting into multiple files. Inside this file there are often utility functions that are used across multiple functions for the same service.

I have 20 functions across all of these files/services.

If I understand correctly, to use better-firebase-functions I would need to split my 5 files up into 20 files (1 for each functions) + more files that would hold utility functions for a specific service.

The main reason I have ended up here is to try and speed up the cold start of my functions, and I plan to explore that a bit more fully before I resort to reorganizing my entire functions code base.

I'm leaving this here in case I'm missing something and there is a way for me to use this lib without reorganzing everything, or in the hopes that this feedback helps you adapt this library to suit more people's needs.

TypeScrpit not compiling

Hello, I am trying to use this module you have developed but my TypeScript files are not compiling. Whenever I deploy to firebase it simply uses the .js files that were already compiled from before and nothing gets updated. I added the two lines you instruct to add to my index.ts (those are the only two lines) and I set all of my triggers to be the default. They are the only functions in their respective files (it's a small project with 4 triggers).

I was using Node 10 but I downgraded to Node 8 to see if that helped but it did not. I tried installing your Node 8 branch but I get the following:
Could not install from "github.com:gramstr/better-firebase-functions.git#node8" as it does not contain a package.json file.

EDIT: Okay, I found the issue but I am not sure how to resolve it. Perhaps you can help. I am referencing an external local module which I have created so that I can share some code between multiple projects. I reference the external module in the tsconfig.json of my main project like this:
"references": [ { "path": "../../SharedCode" } ]

I import a method from the shared code in my main project like this:
import { getParams } from '../../../../SharedCode/src';

The shared code has a method which is exported like this:
export const getParams = (nameArray: string[]): { [names: string]: Params } => { // some code here }

The index.ts of SharedCode exports the file with getParams like this:
export * from './shared_code'

How can I modify my approach, if possible, to work with your module?

does not work with firebase min instances

To save everyone else a bunch of time - it seems that this library is not compatible with min instances. We tested this side by side: a function exported directly is fine, but one exported via this library, for some weird reason, is not.

not working when setting up multiple regions

The follwing doesn't work:

export default functions.region(...regions).https.onCall(.....)

but removing the region option works:

export default functions.https.onCall(.....)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.