GithubHelp home page GithubHelp logo

bjacobel / rak Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 3.0 5.4 MB

Opinionated skeleton to quickly set up a new React app.

Home Page: https://rak.bjacobel.com

License: MIT License

JavaScript 14.50% CSS 0.15% Shell 0.49% TypeScript 84.86%
postcss react redux webpack babel eslint cloudformation bootstrap skeleton cli yarn jest

rak's Introduction

Rak

Build Status codecov Renovate

Rak (React App Kit) is an opinionated skeleton to quickly set up a project with React, Babel, Webpack & friends.

What's inside

Rak includes and configures the following components to help you build a rock-solid, scalable app with best practices and zero configuration.

Using it in a project

Rak requires Node 20. In addition, to use the automatic AWS deployment features, you'll need both an AWS account and a GitHub account.

Start a new Project with Rak by creating an empty directory and installing rak into it.

mkdir my-new-project
cd my-new-project

Next, run rak using npx. It doesn't take any arguments, and will set up a project using the name of the folder you created as the project name.

npx rak

You can also use the latest master version of rak by running:

npx bjacobel/rak

Some details about your newly created folder structure and dependencies will be printed while Rak is setting up. After it's done, commit your project to git:

git init && git add --all && git commit -m "Initial commit"

and start developing! Your next steps might include:

  • Configuring project information (like domain, name and analytics/error logging IDs) in ./config.js.
  • Pushing your repo to GitHub. (Public and private repos are supported.)
  • Setting up GitHub Actions for your repo.
    • Add your AWS_ACCESS_TOKEN_ID and AWS_SECRET_ACCESS_TOKEN to the Secrets for your repo at https://github.com/[username]/[repo]/settings/secrets
    • Also add other optional environment variables, like SENTRY_AUTH_TOKEN for deploy tracking and sourcemap support in Sentry.
  • Setting up Codecov for your repo.
    • Add a API key for Codecov to the Secrets for the repo as CODECOV_TOKEN
    • Coverage stats will be automatically uploaded, but you'll need to authorize Codecov against your GitHub account and add the app to the repo to get pull request comments with coverage information.
    • Make sure to update the badge at the top of the readme to point to your new Codecov SVG.
  • Updating the readme to remove all the stuff about the boilerplate and to say a bit about your new project.
  • Removing or modifying the example components and services to do... whatever your new app does.

Development

The offline-caching service worker doesn't play nicely with HMR or webpack-dev-werver, so it's disabled by default. To enable it, you can either build the site in production mode, or use the SW_ENABLE environment variable:

SW_ENABLE=true yarn webpack

You should see LOG from GenerateSW in the output. Don't use this option with WDS (yarn start); you'll kill your browser.

When building flat files locally, its important to serve them with a server that implements a correct 404 redirection behavior. Use:

npx http-server dist -a localhost --proxy http://localhost:8080\?

Deployment

Rak includes a CloudFormation template that can create & configure all the AWS resources it needs. You'll want to create the CloudFormation stack before you push to your master branch for the first time. To do that:

  1. Add AWS configuration to your environment. See the AWS doc on configuring the command-line interface.
  2. Add project configuration to ./config.js, including the name of your project and the domain it'll live at.
  3. Build your CloudFormation stack with yarn deploy-utils launch.

CloudFormation will create the following resources:

  • an S3 bucket to host static files
  • a CloudFront distribution to serve as a CDN
  • an AWS Certificate Manager SSL certificate, so the site can be served over HTTPS
  • A Route53 hosted domain, which contains DNS routes for your domain
  • A Route53 DNS record for your site
  • Another Route53 DNS record for www., if your site sits at a domain apex

This will take about 30 minutes. While it's going, leaving the yarn deploy-utils launch process running will tail CloudFormation events to your console. You can also log into the AWS Management Console to track the progress of your stack.

Once it's reached the CREATE_COMPLETE status:

  1. Get the nameservers (ns-xxx.awsdns-xxx.tld) for your new Route53 hosted zone, and point your domain to these nameservers in your registrar's DNS console. These changes may take a while to take effect.
  2. Push or merge your code to the master branch. GitHub Actions will test, lint, bundle and deploy your code to S3, and you should see it at your domain shortly.

Thanks to

rak's People

Contributors

bjacobel avatar dependabot[bot] avatar greenkeeper[bot] avatar greenkeeperio-bot avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rak's Issues

An in-range update of chrome-launcher is breaking the build 🚨

The devDependency chrome-launcher was updated from 0.10.5 to 0.10.6.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

chrome-launcher is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 7 commits.

  • 5cb26ea v0.10.6
  • 55397e0 deps: update yarn.lock from #142
  • 179a3f3 silence grep (#138)
  • d2f6037 fix: move unneeded ts types to devDeps (#142)
  • 984d61c docs(flags): remove a few flags that are gone.
  • 6316362 docs: fix link to chrome-launcher's flags (#128)
  • f1f6d16 Update chrome-flags-for-tools.md

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of babel-preset-env is breaking the build 🚨

Version 1.3.0 of babel-preset-env just got published.

Branch Build failing 🚨
Dependency babel-preset-env
Current Version 1.2.2
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As babel-preset-env is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes v1.3.0

v1.3.0 (2017-03-30)

πŸ› Bug Fix

We now properly check for Symbol.species support in ArrayBuffer and include the
polyfill if necessary. This should, as a side effect, fix ArrayBuffer-related
errors on IE9.

πŸ’… Polish

We've simplified things by adding electron as a target instead of doing a bunch of
things at runtime. Electron targets should now also be displayed in the debug output.

If you are targeting the node environment exclusively, the always-included web polyfills
(like dom.iterable, and a few others) will now no longer be included.

πŸ“ Documentation

🏠 Internal

  • npmignore: Add related to build data and codecov. (#216) (@yavorsky)
Commits

The new version differs by 8 commits .

  • 8b2dc4f 1.3.0
  • 6ebf857 Update changelog
  • 046f326 Add check for ArrayBuffer[Symbol.species] (#233)
  • aead61c Fill data with electron as a target. (#229)
  • 48a329b separate default builtins for platforms (#226)
  • a4d585c remove deprecated projects (#223) [skip ci]
  • 88cbe17 Merge pull request #216 from babel/update-npmignore
  • cf94af3 npmignore: Add related to build data and codecov.

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of eslint-plugin-import is breaking the build 🚨

The devDependency eslint-plugin-import was updated from 2.16.0 to 2.17.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

eslint-plugin-import is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 61 commits.

  • 0499050 bump to v2.17.0
  • f479635 [webpack] v0.11.1
  • 8a4226d Merge pull request #1320 from bradzacher/export-ts-namespaces
  • 988e12b fix(export): Support typescript namespaces
  • 70c3679 [docs] make rule names consistent
  • 6ab25ea [Tests] skip a TS test in eslint < 4
  • 405900e [Tests] fix tests from #1319
  • 2098797 [fix] export: false positives for typescript type + value export
  • 70a59fe [fix] Fix overwriting of dynamic import() CallExpression
  • e4850df [ExportMap] fix condition for checking if block comment
  • 918567d [fix] namespace: add check for null ExportMap
  • 2d21c4c Merge pull request #1297 from echenley/ech/fix-isBuiltIn-local-aliases
  • 0ff1c83 [dev deps] lock typescript to ~, since it doesn’t follow semver
  • 40bf40a [*] [deps] update resolve
  • 28dd614 Merge pull request #1304 from bradennapier/feature/typescript-export-type

There are 61 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of aws-sdk is breaking the build 🚨

The devDependency aws-sdk was updated from 2.510.0 to 2.511.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

aws-sdk is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for Release v2.511.0

See changelog for more information.

Commits

The new version differs by 1 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of prettier is breaking the build 🚨

The devDependency prettier was updated from 1.14.3 to 1.15.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

prettier is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Release Notes for Prettier 1.15: HTML, Vue, Angular and MDX Support

πŸ”— Release Notes

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of script-ext-html-webpack-plugin is breaking the build 🚨

Version 1.6.0 of script-ext-html-webpack-plugin just got published.

Branch Build failing 🚨
Dependency script-ext-html-webpack-plugin
Current Version 1.5.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As script-ext-html-webpack-plugin is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 4 commits .

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Improve Lighthouse score

Currently we score 23% on the Lighthouse test:

Lighthouse (1.4.1) results: https://rak.bjacobel.com/ β–« Progressive Web App: 23%

App can load on offline/flaky connections:
── ✘ Has a registered Service Worker
No active service worker found for this origin.
── ✘ URL responds with a 200 when offline

Page load performance is fast:
── 63 First meaningful paint (3385.9ms)
── 87 Perceptual Speed Index (2489)
- First Visual Change: 461ms
- Last Visual Change: 3676ms
── 100 Estimated Input Latency (16ms)
── 71 Time To Interactive (alpha) (3669.2ms)

Site is progressively enhanced:
── ✘ Page contains some content when its scripts are not available
The page body should render some content if its scripts are not available.

Network connection is secure:
── βœ“ Site is on HTTPS
── βœ“ Site redirects HTTP traffic to HTTPS

User can be prompted to Add to Homescreen:
── ✘ Has a registered Service Worker
No active service worker found for this origin.
── ✘ Manifest exists
No manifest found.
── ✘ Manifest contains start_url
── ✘ Manifest contains icons at least 144px
WARNING: No icons found in the manifest
── ✘ Manifest contains short_name

Installed web app will launch with custom splash screen:
── ✘ Manifest exists
No manifest found.
── ✘ Manifest contains name
── ✘ Manifest contains background_color
── ✘ Manifest contains theme_color
── ✘ Manifest contains icons at least 192px
WARNING: No icons found in the manifest

Address bar matches brand colors:
── ✘ Manifest exists
No manifest found.
── ✘ HTML has a <meta name="theme-color"> tag
No valid theme-color meta tag found.
── ✘ Manifest contains theme_color

Design is mobile-friendly:
── ✘ HTML has a <meta name="viewport"> tag
── ✘ Content is sized correctly for the viewport
The content scroll size is 981px, whereas the viewport size is 412px.

β–« Best Practices

Using modern offline features:
── βœ“ Site does not use Application Cache
── βœ“ Site does not use WebSQL DB.

Using modern protocols:
── βœ“ Site is on HTTPS
── βœ“ Site uses HTTP/2 for its own resources

Using modern CSS features:
── βœ“ Site does not use the old CSS flexbox

Using modern JavaScript features:
── βœ“ Site uses passive listeners to improve scrolling performance
── βœ“ Site does not use Mutation Events in its own scripts

Avoiding APIs that harm the user experience:
── βœ“ Site does not use document.write()
── ✘ Site does not use that delay first paint (1 resource delayed first paint by 156ms)
https://rak.bjacobel.com/main.69a0fd9a23dba37b4e4272b0de2eab0b.css (delayed first paint by 156ms)
── βœ“ Site does not use <script> in head that delays first paint
── βœ“ Site opens external anchors using rel="noopener"
── βœ“ Page does not automatically request geolocation on page load
── βœ“ Page does not automatically request notification permissions on page load

Accessibility:
── βœ“ Element aria-* attributes are allowed for this role
── βœ“ Elements with ARIA roles have the required aria-* attributes
── βœ“ Element aria-* attributes are valid and not misspelled or non-existent.
── βœ“ Element aria-* attributes have valid values
── βœ“ Background and foreground colors have a sufficient contrast ratio
── βœ“ Every image element has an alt attribute
── βœ“ Every form element has a label
── βœ“ No element has a tabindex attribute greater than 0

Other:
── ✘ Manifest's short_name won't be truncated when displayed on homescreen
── ✘ Manifest's display property is set
Manifest display property should be set.

β–« Performance Metrics

── ✘ Critical Request Chains (4)
- Longest request chain (shorter is better): 2
- Longest chain duration (shorter is better): 3655.33ms
- Longest chain transfer size (smaller is better): 19.89KB
- Initial navigation
┗━┳ / (rak.bjacobel.com)
┣━━ /main.69a0fd9a23dba37b4e4272b0de2eab0b.css (rak.bjacobel.com) - 445.28ms, 2.67KB
┣━━ /4d4192034403c39dc88b713add1dcf48.svg (rak.bjacobel.com) - 3369.16ms, 3.03KB
┣━━ v13/PRmiXeptR36kaC0GEAetxjqR_3kx9_hJXbbyU8S6IN0.woff (fonts.gstatic.com) - 3648.23ms, 20.72KB
┗━━ v13/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff (fonts.gstatic.com) - 3655.33ms, 21.20KB

── βœ“ User Timing marks and measures (0)

β–« Fancier stuff

New JavaScript features:
── βœ“ Site does not use Date.now() in its own scripts
── βœ“ Site does not use console.time() in its own scripts

Some of it is unnecessary PWA stuff (serviceworkers, etc) but some of it is speed stuff I should address.

Automatic AWS resource creation

remaining work:

  • support cloudfront http2
  • support both bare domains and subdomains
    • SAN for www
    • second alias record
  • do that thing where 404s redirect to index with a 200
  • cover most create/update/rollback cases

Server rendering

Should be easy to set up a new rak project that can render on the server too

An in-range update of react is breaking the build 🚨

There have been updates to the react monorepo:

    • The dependency react was updated from 16.6.1 to 16.6.2.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

This monorepo update includes releases of one or more dependencies which all belong to the react group definition.

react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of eslint-plugin-react is breaking the build 🚨

The devDependency eslint-plugin-react was updated from 7.14.0 to 7.14.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

eslint-plugin-react is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v7.14.1

Fixed

  • Fix prop-types crash on multiple destructuring (#2319 @golopot)
Commits

The new version differs by 3 commits.

  • 62255af Update CHANGELOG and bump version
  • 655eb01 Merge pull request #2320 from golopot/issue-2319
  • 9639d82 [Fix] prop-types: fix crash on multiple destructuring

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of aws-sdk is breaking the build 🚨

The devDependency aws-sdk was updated from 2.504.0 to 2.505.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

aws-sdk is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for Release v2.505.0

See changelog for more information.

Commits

The new version differs by 2 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of react-router is breaking the build 🚨

Version 4.0.0-beta.6 of react-router just got published.

Branch Build failing 🚨
Dependency react-router
Current Version 4.0.0-beta.5
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

As react-router is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of aws-sdk is breaking the build 🚨

The devDependency aws-sdk was updated from 2.350.0 to 2.351.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

aws-sdk is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for Release v2.351.0

See changelog for more information.

Commits

The new version differs by 3 commits.

  • 70cbaa7 Updates SDK to v2.351.0
  • 4073d3d Merge pull request #2342 from srchase/npmignore-additions
  • 13b0dd3 updated npmignore, fix for issue #2341

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of prettier is breaking the build 🚨

Version 1.3.0 of prettier just got published.

Branch Build failing 🚨
Dependency prettier
Current Version 1.2.2
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As prettier is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build failed [Details](https://travis-ci.org/bjacobel/rak/builds/228140855?utm_source=github_status&utm_medium=notification)

Release Notes 1.3.0

Facebook Adoption Update

The reason why I (@vjeux) embarked on this journey working on prettier has always been to get the entire Facebook codebase converted over. I would like to give an update on how it is going and what is the process to get there.

The first projects to adopt prettier were Jest, React and immutable-js. Those are small codebases in the order of hundreds of files that have their own infrastructure. There are 5 or less people working on them full time.

Then, Oculus and Nuclide converted their codebase over. The scale is bigger with a few thousands of files and tens of full time contributors but looks pretty similar to the first projects. The conversions went in one big codemod and that's it.

Now, the entire Facebook codebase is way bigger than this and it's not feasible to just convert everything in one go and to convince everyone that their entire codebase is going to be reformatted under their feet. So we need to find a more incremental approach.

Scaling adoption

Running prettier on a piece of code is a pretty expensive operation, it makes your pull request look bad because of a lot of unrelated changes and it causes merge conflicts for all the outstanding pull requests. So once a file has been formatted, you should do everything to make sure it remains formatted.

  • When pretty-printing a file, add @format to the first block comment like @flow.
  • Have a lint rule with autofix that checks if the file is correctly pretty printed when @format is present.
    • When running Nuclide, it's going to show as an inline warning and have a fix button.
    • When sending a pull request, it's going to show the lint failing with a [Yn] prompt that you can just press enter.
  • Update the default code templates to add @format to the header.
  • When you run code formatting via cmd-shift-c inside of Nuclide, automatically insert the @format header.
  • Disable all the stylistic rules like max-len when @format is in the header.
  • Have script to run prettier through an entire folder with everything configured as a one line operation.
  • Have a good guide to help people that want to convert their codebase over with instructions and best practices.
  • When pushing a new release of prettier, also run it through all the files with @format in order to avoid getting warnings afterwards.
  • Add tracking for the number of files with @format over time.

We finally got all those things wired up 1.5 weeks ago and the reception has been insane. Many people from various teams converted their codebase to prettier on their own. As of today, 15% of Facebook codebase has been converted over!

When I started working on prettier, I had a hunch that people were hungry for tools to solve formatting. But I had no idea that once the tooling was in place, people would rush to convert their codebase over! This is great confirmation that this project is useful to people and not just a gimmicky tool.

TypeScript Support Progress

@despairblue, @azz and @JamesHenry have been hard at work around getting TypeScript supported by prettier as it's the top requested feature. 2000 out of 11000 files in the TypeScript test suite are not yet properly printed. You can follow progress on #1480 and do not hesitate to help out!

Flow

Add trailing commas on flow generics (#1381)

The --trailing-comma=all option is supposed to add trailing commas everywhere possible, but as an oversight we forgot to do it for flow generics.

// Before
type Errors = Immutable.Map<
  Ahohohhohohohohohohohohohohooh,
  Fbt | Immutable.Map<ErrorIndex, Fbt>
>;

// After
type Errors = Immutable.Map<
Ahohohhohohohohohohohohohohooh,
Fbt | Immutable.Map<ErrorIndex, Fbt>,
>;

Inline nullable in flow generics (#1426)

The phase after printing things correctly is to tweak the output to make it closer to the way people write code in practice. Inlining optional flow types is a small thing that makes a difference.

// Before
type Cursor = Promise<
  ?{
    newCursor?: number,
    formatted: string,
  }
>;

// After
type Cursor = Promise<?{
newCursor?: number,
formatted: string,
}>;

Allow flow declarations to break on StringLiteralTypeAnnotations (#1437)

We can always find more places to add breaks when things don't fit 80 columns. This time it's around declaring a type as a constant string.

// Before
export type AdamPlacementValidationSingleErrorKey = 'SOME_FANCY_TARGETS.GLOBAL_TARGET';

// After
export type AdamPlacementValidationSingleErrorKey =
'SOME_FANCY_TARGETS.GLOBAL_TARGET';

Add space around = for flow generics default arguments (#1476)

Another example of small thing where we can improve the display of flow code. For function default arguments we put a space around = but didn't around flow generics.

// Before
class PolyDefault<T=string> {}

// After
class PolyDefault<T = string> {}

Don't break for unparenthesised single argument flow function (#1452)

I'm trying to figure out something to write here, but ... it just looks weird!

// Before
const selectorByPath:
  Path
 => SomethingSelector<
  SomethingUEditorContextType,
  SomethingUEditorContextType,
  SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */)

// After
const selectorByPath: Path => SomethingSelector<
SomethingUEditorContextType,
SomethingUEditorContextType,
SomethingBulkValue<string>
> = memoizeWithArgs(/* ... */);

Fix optional flow parenthesis (#1357)

We were a bit too lenient around parenthesis for optional flow types. In one case in the entire Facebook codebase, it generated code with different semantics. As part of this fix, we hardened the list of types that can be written without parenthesis.

// Before
type X = ?(number, number) => number => void;

// After
type X = (?(number, number) => number) => void;

Skip trailing commas with FlowShorthandWithOneArg (#1364)

It is a parse error to add a trailing comma without parenthesis for arguments of arrow function types. We found one case in Facebook codebase when this happened, it's a very rare occurrence.

// Before
type IdeConnectionFactory =
  child_process$ChildProcess,
  => FlowIDEConnection = defaultIDEConnectionFactory;

// After
type IdeConnectionFactory =
child_process$ChildProcess,
=> FlowIDEConnection = defaultIDEConnectionFactory;

Reorder flow object props (#1451)

This one is an example where the way the AST is structured is not our favor. Instead of having a list of elements inside of a type, the AST is structured in a way where normal keys and array keys each have their own group. In order to restore the initial order, we're now reading from the original source :(

// Before
type Foo = {
  [key: string]: void,
  alpha: "hello",
  beta: 10
};

// After
type Foo = {
alpha: 'hello',
[key: string]: void,
beta: 10
}

Template Literal

Proper indentation for template literals (#1385)

A long standing issue with template literals and prettier is around the indentation of code inside of ${}. It used to be the indentation of the backtick but turned out to give poor results. Instead people tend to use the indent of the ${. We changed this behavior and it magically made GraphQL queries look pretty!

// Before
Relay.createContainer({
  nodes: ({ solution_type, time_frame }) => Relay.QL`
    fragment {
      __typename
      ${OptimalSolutionsSection.getFragment("node", {
    solution_type,
    time_frame
  })}
    }
  `
})
// After
Relay.createContainer({
  nodes: ({ solution_type, time_frame }) => Relay.QL`
    fragment {
      __typename
      ${OptimalSolutionsSection.getFragment("node", {
        solution_type,
        time_frame
      })}
    }
  `
})

Do not indent calls with a single template literal argument (#873)

Template literals are very hard to deal with for a pretty printer because the spaces inside are meaningful so you can't re-indent them. We didn't know what to do for a call with a single template literal so we didn't do anything, but we kept receiving reports of people saying that prettier indented it the wrong way, so we are now inlining them. Fingers crossed it is going to cover most use cases.

// Before
insertRule(
  `*, *:before, *:after {
    box-sizing: inherit;
  }`
);

// After
insertRule(</span>*, *:before, *:after {</span> <span class="pl-s"> box-sizing: inherit;</span> <span class="pl-s">}<span class="pl-pds">);

Fix windows line ending on template literals (#1439)

We manipulate line endings in a lot of places in prettier and took great care of handling both \n and \r\n except for template literals where we forgot. Now this is fixed!

// Before
const aLongString = `

Line 1

Line 2

Line 3

`;

// After
const aLongString = </span></span> <span class="pl-s">Line 1</span> <span class="pl-s">Line 2</span> <span class="pl-s">Line 3</span> <span class="pl-s"><span class="pl-pds">;

Inline template literals as arrow body (#1485)

We already inline template literals that are tagged (eg graphql`query`) but didn't for plain template literals. For the anecdote, it turns out the code was supposed to support it but it was using TemplateElement instead of TemplateLiteral :(

// Before
const inlineStore = preloadedState =>
  `
  <script>
    window.preloadedState = ${JSON.stringify(preloadedState).replace(/</g, '\\u003c')}
  </script>
`

// After
const inlineStore = preloadedState => </span></span> <span class="pl-s"> &lt;script&gt;</span> <span class="pl-s"> window.preloadedState = <span class="pl-s1"><span class="pl-pse">${</span><span class="pl-c1">JSON</span>.<span class="pl-en">stringify</span>(preloadedState).<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>&lt;<span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-cce">\\</span>u003c<span class="pl-pds">'</span></span>)<span class="pl-pse">}</span></span></span> <span class="pl-s"> &lt;/script&gt;</span> <span class="pl-s"><span class="pl-pds">

Ternaries

Add parenthesis for unusual nested ternaries (#1386)

While working on printing nested ternaries, everyone focused on the ones with the shape of an if then else cond1 ? elem1_if : cond2 ? elem2_if : elem_else which is the most common. But, if you move move some ? and : around you can have another pattern. It looks almost the same but has a different meaning. In order to reduce confusion, we're adding parenthesis around the uncommon form.

// Before
cond1 ? cond2 ? elem2_if : elem2_else : elem1_else

// After
cond1 ? (cond2 ? elem2_if : elem2_else) : elem1_else

Only add parenthesis on ternaries inside of arrow functions if doesn't break (#1450)

There's an eslint rule no-confusing-arrows which suggests adding parenthesis for ternaries in arrow functions without brackets.

var x = a => 1 ? 2 : 3;
var x = a <= 1 ? 2 : 3;

It makes sense when code is in one line, but when it is split into multiple lines, the parenthesis are unnecessary given the indentation, so we now only put them when they serve their disambiguation purpose.

// Before
var x = a => (1 ? 2 : 3);
var x = a =>
  (1
    ? 2
    : 3);

// After
var x = a => (1 ? 2 : 3);
var x = a =>
1
? 2
: 3;

General JavaScript Improvements

Inline function declaration with single arg as object (#1173)

This one was often requested for React Stateless Functional Components (SFC). If you make use of a lot of them, it's likely going to be a big change for you.

// Before
const X = (
  props: {
    a: boolean,
  },
) => <div />;

// After
const X = (props: {
a: boolean,
}) => <div />;

Break inline object first in function arguments (#1453)

One thing we discovered early on is that people usually break the arguments of the function before breaking the return type. Unfortunately, the code responsible to inline single destructuring argument broke that assumption and it introduced bad looking code like this example. The good news is that it enables us to turn on inlining for single arguments that are typed with an object.

// Before
class X {
  async onDidInsertSuggestion({editor, triggerPosition, suggestion}): Promise<
    void
  > {
  }
}

// After
class X {
async onDidInsertSuggestion({
editor,
triggerPosition,
suggestion
}): Promise<void> {
}
}

Don't break on empty arrays and objects (#1440)

This one has been a long standing issue and is an easy fix, but was an invaluable tool: whenever someone reported that [] or {} would break, we were able to fix the example by fixing something else. So it was a great way to surface edge cases. Fortunately, this vein has now ran out and all the recent examples just look bad with no other reason than the fact that they are breaking. So it's time to finally do it!

// Before
const a = someVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeLong.Expression || [
];

// After
const a = someVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeLong.Expression || [];

Do not break on [0] (#1441)

We have a lot of issues where code breaks in array access when it doesn't look good. We don't yet have a good generic solution for it, but we can add a specific fix a common situation: [0].

// Before
queryThenMutateDOM(() => {
  title = SomeThing.call(root, "someLongStringThatPushesThisTextReall")[
    0
  ];
});

// After
queryThenMutateDOM(() => {
title = SomeThing.call(
root,
"someLongStringThatPushesThisTextReall",
)[0];
});

Indent do while condition (#1373)

We were not using the correct indentation logic for do-while condition but someone noticed, now we do!

// Before
do {}
while (someVeryLongStringA && someVeryLongStringB && someVeryLongStringC && someVeryLongStringD);

// After
do {}
while (
someVeryLongStringA &&
someVeryLongStringB &&
someVeryLongStringC &&
someVeryLongStringD
);

Preserve inline comment as last argument (#1390)

We forgot to add one case in the comment detection code when they appear last for JSX attributes and function arguments which made them go after the closing. In the case of JSX, it generated code that had a different meaning. Fortunately, since we don't usually commit commented out code it didn't affect production code, but it is not a good experience while coding.

// Before
const x = (
  <div
    attr1={1}>
//   attr3={3}
    {children}
  </div>
);

// After
const x = (
<div
attr1={1}
// attr3={3}
>
{children}
</div>
);

Break class expression returned by arrow call (#1464)

In 1.0, we made class be inline inside of arrow functions. It turns out that it doesn't work great when the class is non trivial, so we are reverting this change. We're trying really hard to avoid making trashy decisions like this where the style changes back and forth, but we allow ourselves to do it sometimes to fix mistakes!

// Before
export default (ViewComponent: Function, ContainerComponent: Function) => class
  extends React.Component {
  static propTypes = {};
};

// After
export default (ViewComponent: Function, ContainerComponent: Function) =>
class extends React.Component {
static propTypes = {};
};

Fix empty line in block with EmptyStatement (#1375)

This one was found by fuzzing. You're unlikely going to hit this in real code but it's good to know it is fixed!

// Input
if (a) {
  b;

;
}

// Before
if (a) {
b;

}

// After
if (a) {
b;

}

Commits

The new version differs by 48 commits0.

  • a81d5c1 1.3.0
  • 0785726 Inline template literals as arrow body (#1485)
  • f59aeef Break inline object first in function arguments (#1453) (#1173)
  • 8f9bb3a Break inline object first in function arguments (#1453)
  • 54b8cac Reorder flow object props (#1451)
  • c99a877 Do not break on [0] (#1441)
  • acfb14f Don't break on empty arrays and objects (#1440)
  • bafd724 Don't break for unparenthesised single argument flow function (#1452)
  • a335c26 Add space around = for flow generics default arguments (#1476)
  • 4b7d265 Fix windows line ending on template literals (#1439)
  • e392093 Only add parenthesis on ternaries inside of arrow functions if doesn't break (#1450)
  • 93cad97 Preserve inline comment as last argument (#1390)
  • 314e963 Add parenthesis for unusual nested ternaries (#1386)
  • 13f05fb Proper indentation for template literals (#1385)
  • c521406 [RFC] Do not indent calls with a single template literal argument (#873)

There are 48 commits in total.

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of extract-text-webpack-plugin is breaking the build 🚨

Version 2.1.1 of extract-text-webpack-plugin just got published.

Branch Build failing 🚨
Dependency extract-text-webpack-plugin
Current Version 2.1.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As extract-text-webpack-plugin is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details

Release Notes Release v2.1.1

2.1.1 (2017-06-08)

Bug Fixes

  • add a not null check for the content property before throwing error (#404) (58dd5d3)
  • loader: rm unnecessary this.cacheable (caching) (#530) (c3cb091)
  • don't extract from common async chunks (#508) (e595417)
  • validation schema (schema-utils) (#527) (dfeb347)
Commits

The new version differs by 13 commits.

  • 0271b39 chore(release): 2.1.1
  • e595417 fix: don't extract from common async chunks (#508)
  • a8ae003 chore(package): fix broken links && update devDependencies (#531)
  • c3cb091 fix(loader): rm unnecessary this.cacheable (caching) (#530)
  • eaa5236 docs: rm RELEASE.md (#532)
  • 671e35e chore(package): update webpack-sources v0.1.0...1.0.1 (#526)
  • dfeb347 fix: validation schema (schema-utils) (#527)
  • d0e88d0 docs(README): add lead-in description (#517)
  • 58dd5d3 fix: add a not null check for the content property before throwing error (#404)
  • 6c50d8e Update README.md (#469)
  • c63dc04 docs(README): clarify to set allChunks option when using CommonsChunkPlugin (#476)
  • c40dc64 chore(package): reduce package size (#482)
  • a284f3a docs(README): fix options table formatting (#478)

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Version 10 of node.js has been released

Version 10 of Node.js (code name Dubnium) has been released! 🎊

To see what happens to your code in Node.js 10, Greenkeeper has created a branch with the following changes:

  • Added the new Node.js version to your .travis.yml
  • The engines config in 1 of your package.json files was updated to the new Node.js version

If you’re interested in upgrading this repo to Node.js 10, you can open a PR with these changes. Please note that this issue is just intended as a friendly reminder and the PR as a possible starting point for getting your code running on Node.js 10.

More information on this issue

Greenkeeper has checked the engines key in any package.json file, the .nvmrc file, and the .travis.yml file, if present.

  • engines was only updated if it defined a single version, not a range.
  • .nvmrc was updated to Node.js 10
  • .travis.yml was only changed if there was a root-level node_js that didn’t already include Node.js 10, such as node or lts/*. In this case, the new version was appended to the list. We didn’t touch job or matrix configurations because these tend to be quite specific and complex, and it’s difficult to infer what the intentions were.

For many simpler .travis.yml configurations, this PR should suffice as-is, but depending on what you’re doing it may require additional work or may not be applicable at all. We’re also aware that you may have good reasons to not update to Node.js 10, which is why this was sent as an issue and not a pull request. Feel free to delete it without comment, I’m a humble robot and won’t feel rejected πŸ€–


FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of webpack is breaking the build 🚨

The devDependency webpack was updated from 4.35.3 to 4.36.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

webpack is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v4.36.0

Features

  • SourceMapDevToolPlugin append option now supports the default placeholders in addition to [url]
  • Arrays in resolve and parser options (Rule and Loader API) support backreferences with "..." when overriding options.
Commits

The new version differs by 42 commits.

  • 95d21bb 4.36.0
  • aa1216c Merge pull request #9422 from webpack/feature/dot-dot-dot-merge
  • b3ec775 improve merging of resolve and parsing options
  • 53a5ae2 Merge pull request #9419 from vankop/remove-valid-jsdoc-rule
  • ab75240 Merge pull request #9413 from webpack/dependabot/npm_and_yarn/ajv-6.10.2
  • 0bdabf4 Merge pull request #9418 from webpack/dependabot/npm_and_yarn/eslint-plugin-jsdoc-15.5.2
  • f207cdc remove valid jsdoc rule in favour of eslint-plugin-jsdoc
  • 31333a6 chore(deps-dev): bump eslint-plugin-jsdoc from 15.3.9 to 15.5.2
  • 036adf0 Merge pull request #9417 from webpack/dependabot/npm_and_yarn/eslint-plugin-jest-22.8.0
  • 37d4480 Merge pull request #9411 from webpack/dependabot/npm_and_yarn/simple-git-1.121.0
  • ce2a183 chore(deps-dev): bump eslint-plugin-jest from 22.7.2 to 22.8.0
  • 0beeb7e Merge pull request #9391 from vankop/create-hash-typescript
  • bf1a24a #9391 resolve super call discussion
  • bd7d95b #9391 resolve discussions, AbstractMethodError
  • 4190638 chore(deps): bump ajv from 6.10.1 to 6.10.2

There are 42 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of babel-preset-env is breaking the build 🚨

Version 1.1.9 of babel-preset-env just got published.

Branch Build failing 🚨
Dependency babel-preset-env
Current Version 1.1.8
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As babel-preset-env is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 20 commits .

  • 846b7a2 1.1.9
  • 48049aa update compat (#169)
  • d1f301e Add tests for debug output (#156)
  • 9667dae Fixes #143. Log correct targets. (#155)
  • 48bde3b Fix compat-table link in contributing.md
  • a59cf5b Update yarn lockfile (#152)
  • 27f33a1 Update README examples to fix website [skip ci] (#151)
  • 55aa7ff Use external Electron to Chromium library (#144)
  • 96efb98 Merge pull request #146 from babel/typos
  • 5fd3406 Fix few typos
  • 7acd181 Merge pull request #125 from babel/feature/extract-option-validation
  • b8c768f Extract option normalization into independant file
  • d726a5b Update yarnfile
  • 785d8ea devDeps: eslint-config-babel v5.0.0 (#139)
  • fcf220c Merge pull request #138 from yavorsky/debug-example

There are 20 commits in total. See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of react-router-dom is breaking the build 🚨

The dependency react-router-dom was updated from 4.3.1 to 4.4.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

react-router-dom is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build failed (Details).

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Find existing Route53 hosted zone instead of creating a new one

For the non-apex case, if there's already a hosted zone for the domain root, we shouldn't create a new one.

This could run into issues - eg what if you have two apps that are created using this cfn template, the first one creates a hosted zone and then the second one finds that zone and uses it, but then you delete the first stack?

Add support for CloudFront http/2 via CloudFormation template

Breaking this out into a separate ticket because it's currently blocked on the fact that CloudFormation doesn't support this parameter.

Once they do, just need to add HttpVersion: 'http2', to the CloudFront resource under DistributionConfig.

Here's the forum Q I was going to post before I used search like a not-newb and found somebody else had already gotten an answer:

Hi all,

I'm trying to get the newly announced [CloudFront HTTP/2 support|https://aws.amazon.com/blogs/aws/new-http2-support-for-cloudfront/] to work with my CloudFormation template, but I'm running into several inconsistencies.

The [CloudFront API reference document|http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html] states the existence of an HttpVersion parameter, and says that the behavior of this parameter is "Default: http2 for new web distributions". However, when creating a CloudFront distribution using CloudFormation, and not specifying the HttpVersion parameter, the created CloudFront distribution supports HTTP/1.0 and HTTP/1.1 only.

The [CloudFront DistributionConfig resource type documentation for CloudFormation|http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html] does not mention an HttpVersion parameter. Attempting to set this parameter (HttpVersion, a child of DistributionConfig as described in the API ComplexType documentation) results in the following CloudFormation error when creating the stack:

{code}Encountered unsupported property HttpVersion{code}

So it looks to me like two things are wrong:
1: new CloudFront distributions created with CloudFront do not default to the http2 HttpVersion, as claimed in the documentation
2: CloudFormation templates do not support manually specifying an HttpVersion.

Am I doing something wrong, or if I'm right and this support is missing, any estimate on when it will be added?

An in-range update of react-redux is breaking the build 🚨

The dependency react-redux was updated from 6.0.0 to 6.0.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

react-redux is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • ❌ continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v6.0.1

This is a minor release with support for react-hot-loader and a few small bug fixes for edge cases.

While you're here, please stop by #1177 to see our roadmap for the next versions of React Redux. We are aware that performance is not so hot in 6.0. Short version: We put too much traffic on React's context API, which isn't really designed for high levels of reads and writes. We're looking to reduce that load and get performance back on track in a minor release, so there won't be backwards compatibility concerns. We have a new extensive benchmark suite to keep us on track and ensure we're not regressing on speed in the future.

And yes, we know about Hooks. Check out #1179.

Changes

Commits

The new version differs by 35 commits.

  • 162b81a 6.0.1
  • d8a7ab5 Update build deps. Add React 16.8 tests.
  • 6ad2b55 Remove --save option as it isn't required anymore (#1193)
  • fac9ad1 Update Provider.md and quick-start.md (#1182)
  • 9bf2375 Update Provider.md
  • fcd5ed8 Update Provider.md
  • c198249 Update react-router usage example (#1180)
  • ab77450 Upgrade to react-is v16.7.0 (#1174)
  • 0bf4e1f Remove duplicate line in connect api documents (#1173)
  • 6e0a106 Updated: Support React-Hot-Loader compatibility (#1168)
  • 63af52f Update accessing-store.md (#1163)
  • 5199d9d Ensure that component prop 'context' really contains a React context … (#1134)
  • e7661b3 Fix spacing issues (#1153)
  • 75b90f9 Add / change docs about v6 (#1148)
  • 5088345 Add connect() API doc (#1140)

There are 35 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of aws-sdk is breaking the build 🚨

Version 2.32.0 of aws-sdk just got published.

Branch Build failing 🚨
Dependency aws-sdk
Current Version 2.31.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As aws-sdk is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details
Release Notes Release v2.32.0

See changelog for more information.

Commits

The new version differs by 2 commits .

  • 78b8b18 Updates SDK to v2.32.0
  • e6671c4 Add a means of specifying tags for s3.upload that applies to both single part and multipart uploads (#1425)

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

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.