GithubHelp home page GithubHelp logo

Comments (6)

kambbado avatar kambbado commented on May 17, 2024

Upgrade to nodejs v12.18.3 and resolved the issue.

from angular-eslint.

kambbado avatar kambbado commented on May 17, 2024

Still having the issue when running ng lint, I first thought is as the node version.

Let me know if there is something I can try to help if this is a bug or if it's my configuration.

tsconfig.eslint.json
{ "extends": "./tsconfig.base.json", "include": ["src/**/*.ts", "projects/**/*.ts"] }

angular.json

 "lint": {
                    "builder": "@angular-eslint/builder:lint",
                    "options": {
                        "eslintConfig": ".eslintrc.js",
                        "tsConfig": ['./tsconfig.eslint.json'],
                        "exclude": [
                            "**/node_modules/**"
                        ]
                    }
                }

from angular-eslint.

kambbado avatar kambbado commented on May 17, 2024

running ng lint as node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng lint helped.

Now, I'm facing another issue which I cannot seem to fix it. I'm getting the following error

**preprocess: ERROR could not parse @Component() metadata**

from angular-eslint.

kambbado avatar kambbado commented on May 17, 2024

If I comment out the override rules for files: ['*.component.html'] and files: ['*.component.ts'] and run ng lint it hangs.

module.exports = {
    env: {
        'browser': true,
        'es6': true,
        'serviceworker': true
    },
    ignorePatterns: ['**/*.js'],
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:@typescript-eslint/recommended-requiring-type-checking',
        'plugin:@angular-eslint/recommended',
        'prettier',
        'prettier/@typescript-eslint'
    ],
    parser: '@typescript-eslint/parser',
    plugins: [
        '@typescript-eslint',
        '@angular-eslint',
        '@angular-eslint/template',
        'prettier'
    ],
    parserOptions: {
        ecmaVersion: 2020,
        sourceType: 'module',
        project: ['./tsconfig.**.json'],
        tsconfigRootDir: __dirname,
        warnOnUnsupportedTypeScriptVersion: false
    },
    rules: {
        '@typescript-eslint/explicit-module-boundary-types': 'off',
        '@typescript-eslint/prefer-includes': 'off',
        'prettier/prettier': [
            'error', {
                'parser': 'typescript',
                'semi': true,
                'singleQuote': true,
                'tabWidth': 2,
                'trailingComma': 'none',
                'bracketSpacing': true,
                'jsxBracketSameLine': false,
                'endOfLine': 'auto',
            }
        ],
    },
    overrides: [{
            files: ['*.ts'],
            extends: [
                'plugin:@typescript-eslint/recommended-requiring-type-checking',
                'plugin:@angular-eslint/recommended',
            ],
            parser: '@typescript-eslint/parser',
            parserOptions: {
                ecmaVersion: 2020,
                sourceType: 'module',
                project: ['./tsconfig.**.json', './projects/*/tsconfig.**.json'],
                tsconfigRootDir: __dirname,
                warnOnUnsupportedTypeScriptVersion: false
            },
            plugins: ['@typescript-eslint', '@angular-eslint'],
            rules: {
                'max-len': ['error', {
                        'code': 240
                    }
                ],
                '@angular-eslint/component-class-suffix': 'error',
                '@angular-eslint/directive-selector': [
                    'error', {
                        type: 'attribute',
                        prefix: 'app',
                        style: 'camelCase'
                    },
                ],
                '@angular-eslint/contextual-lifecycle': 'error',
                '@angular-eslint/directive-class-suffix': 'error',
                '@angular-eslint/component-selector': [
                    'error', {
                        type: 'element',
                        prefix: 'app',
                        style: 'kebab-case'
                    },
                ],
                '@angular-eslint/no-conflicting-lifecycle': 'error',
                '@angular-eslint/no-host-metadata-property': 'error',
                '@angular-eslint/no-input-rename': 'off',
                '@angular-eslint/no-inputs-metadata-property': 'error',
                '@angular-eslint/no-output-native': 'off',
                '@angular-eslint/no-output-on-prefix': 'off',
                '@angular-eslint/no-output-rename': 'off',
                '@angular-eslint/no-outputs-metadata-property': 'error',
                '@angular-eslint/template/banana-in-box': 'off',
                '@angular-eslint/template/no-negated-async': 'off',
                '@angular-eslint/use-lifecycle-interface': 'error',
                '@angular-eslint/use-pipe-transform-interface': 'error',
                '@typescript-eslint/array-type': 'off',

                '@typescript-eslint/ban-types': [
                    'warn', {
                        types: {
                            Object: {
                                message: 'Avoid using the `Object` type. Did you mean `object`?',
                            },
                            Function: {
                                message: 'Avoid using the `Function` type. Prefer a specific function type, like `() => void`.',
                            },
                            Boolean: {
                                message: 'Avoid using the `Boolean` type. Did you mean `boolean`?',
                            },
                            Number: {
                                message: 'Avoid using the `Number` type. Did you mean `number`?',
                            },
                            String: {
                                message: 'Avoid using the `String` type. Did you mean `string`?',
                            },
                            Symbol: {
                                message: 'Avoid using the `Symbol` type. Did you mean `symbol`?',
                            },
                        },
                    },
                ],
                '@typescript-eslint/consistent-type-definitions': 'error',
                '@typescript-eslint/dot-notation': 'off',
                '@typescript-eslint/explicit-member-accessibility': [
                    'off', {
                        accessibility: 'explicit',
                    },
                ],
                '@typescript-eslint/interface-name-prefix': 'off',
                '@typescript-eslint/member-delimiter-style': [
                    'off', {
                        multiline: {
                            delimiter: 'none',
                            requireLast: true,
                        },
                        singleline: {
                            delimiter: 'semi',
                            requireLast: false,
                        },
                    },
                ],
                '@typescript-eslint/member-ordering': 'off',
                '@typescript-eslint/no-empty-function': 'off',
                '@typescript-eslint/no-explicit-any': 'off',
                '@typescript-eslint/no-non-null-assertion': 'error',
                '@typescript-eslint/no-parameter-properties': 'off',
                '@typescript-eslint/no-unused-expressions': 'error',
                '@typescript-eslint/no-var-requires': 'off',
                '@typescript-eslint/prefer-for-of': 'off',
                '@typescript-eslint/prefer-function-type': 'off',
                '@typescript-eslint/semi': ['off', null],
                '@typescript-eslint/triple-slash-reference': [
                    'error', {
                        path: 'always',
                        types: 'prefer-import',
                        lib: 'always',
                    },
                ],
                '@typescript-eslint/type-annotation-spacing': 'off',
                '@typescript-eslint/unified-signatures': 'error',
                '@typescript-eslint/explicit-function-return-type': 'off',

                '@typescript-eslint/await-thenable': 'off',
                '@typescript-eslint/no-unused-vars': 'off',
                '@typescript-eslint/unbound-method': 'off',
                '@typescript-eslint/no-namespace': 'off',

                '@typescript-eslint/no-unsafe-assignment': 'off',
                '@typescript-eslint/no-unsafe-member-access': 'off',
                '@typescript-eslint/no-unsafe-call': 'off',
                '@typescript-eslint/no-floating-promises': 'off',
                '@typescript-eslint/no-unsafe-return': 'off',

                'no-debugger': 'error',
                'no-empty': 'off',
                'no-eval': 'error',
                'no-fallthrough': 'error',
                'no-invalid-this': 'off',
                'no-irregular-whitespace': 'off',
                'no-new-wrappers': 'error',

                'no-restricted-imports': [
                    'error', {
                        'paths': [
                            'rxjs/Rx',
                            'rxjs/internal/operators',
                            'rxjs/internal'
                        ]
                    }
                ],
                '@typescript-eslint/no-use-before-define': 'off',
                '@typescript-eslint/no-unused-expressions': 'off',
                '@typescript-eslint/camelcase': 'off',
                '@typescript-eslint/restrict-plus-operands': 'off',
				'@angular-eslint/component-selector': 'off'
            }
        }, {
            files: ['*.d.ts', '*.svg.ts', '**/iav/**/*.ts', '**/iav/**/*.js'],
            parser: '@typescript-eslint/parser',
            plugins: ['@angular-eslint/template'],
            processor: '@angular-eslint/template/extract-inline-html',
            parserOptions: {
                ecmaVersion: 2020,
                sourceType: 'module',
                project: ['./tsconfig.**.json'],
                tsconfigRootDir: __dirname
            },
            rules: {
                'max-len': ['error', {
                        'code': 500
                    }
                ],
                'no-redeclare': 'off',
                'no-undef': 'off',
                'no-prototype-builtins': 'off',
                'no-var': 'off',
                'no-inner-declarations': 'off',
                '@typescript-eslint/no-empty-interface': 'off',
                '@typescript-eslint/no-namespace': 'off',
                '@typescript-eslint/consistent-type-assertions': 'off',
                '@typescript-eslint/unified-signatures': 'off',

                'no-dupe-class-members': 'off',
                'prefer-spread': 'off',
                '@typescript-eslint/explicit-function-return-type': 'off',
                '@typescript-eslint/no-use-before-define': 'off',
                '@angular-eslint/component-selector': 'off',
                '@typescript-eslint/prefer-namespace-keyword': 'off',
                '@typescript-eslint/no-inferrable-types': 'off',
                '@typescript-eslint/prefer-string-starts-ends-with': 'off',
                '@typescript-eslint/prefer-includes': 'off',

                'prettier/prettier': 'off',
                'prefer-const': 'off'
            }
        // }, {
            // files: ['*.component.ts'],
            // parser: '@typescript-eslint/parser',
            // plugins: ['@angular-eslint/template',
                // 'prettier',
            // ],
            // processor: '@angular-eslint/template/extract-inline-html',
            // parserOptions: {
                // ecmaVersion: 2020,
                // sourceType: 'module',
                // project: ['./tsconfig.**.json'],
                // tsconfigRootDir: __dirname
            // },
            // rules: {
                // '@angular-eslint/component-selector': 'off'

            // }
        }, {
            // prettier
            "files": ["*.ts", "*.json"],
            "extends": ["plugin:prettier/recommended"]
        }
		// , {
            // files: ['*.component.html'],
            // parser: '@angular-eslint/template-parser',
            // plugins: ['@angular-eslint/template'],
            // parserOptions: {
                // ecmaVersion: 2020,
                // sourceType: 'module',
                // project: ['./tsconfig.**.json'],
                // tsconfigRootDir: __dirname,
                // warnOnUnsupportedTypeScriptVersion: false
            // },
            // rules: {
                // '@angular-eslint/template/banana-in-a-box': 'off',
                // '@angular-eslint/template/cyclomatic-complexity': 'off',
                // '@angular-eslint/template/no-call-expression': 'off',
                // '@angular-eslint/template/no-negated-async': 'off',
                // '@typescript-eslint/no-misused-promises': 'off',
                // '@typescript-eslint/no-unnecessary-type-assertion': 'off',
                // '@typescript-eslint/await-thenable': 'off',
                // '@typescript-eslint/prefer-regexp-exec': 'off',
                // '@typescript-eslint/prefer-string-starts-ends-with': 'off',
                // '@typescript-eslint/require-await': 'off',
                // '@typescript-eslint/unbound-method': 'off',
                // '@typescript-eslint/no-floating-promises': 'off',
                // '@typescript-eslint/no-implied-eval': 'off',
                // '@typescript-eslint/no-unsafe-assignment': 'off',
				// '@typescript-eslint/no-unsafe-call': 'off',
				// '@typescript-eslint/no-unsafe-member-access': 'off',
				 // '@typescript-eslint/no-unsafe-return':  'off',
				 // '@typescript-eslint/restrict-plus-operands': 'off',
				 // '@typescript-eslint/restrict-template-expressions': 'off',

                // '@angular-eslint/template/i18n': [
                    // 'error', {
                        // 'checkId': false,
                        // 'checkText': true,
                        // 'checkAttributes': true,
                        // 'ignoreAttributes': [
                            // 'field',
                            // 'identifier'
                        // ]
                    // }
                // ]
            // }
        // }
    ]
};

from angular-eslint.

kambbado avatar kambbado commented on May 17, 2024

Here's my work eslintrc.js file and configuration that is working,

package.json

"scripts": {
....
"lint": "node --max_old_space_size=10240 ./node_modules/@angular/cli/bin/ng lint",
}

angular.json

"lint": {
                    "builder": "@angular-eslint/builder:lint",
                    "options": {
                        "eslintConfig": ".eslintrc.js",
                        "tsConfig": ['./tsconfig.eslint.json'],
                        "exclude": [
                            "**/node_modules/**"
                        ]
                    }
                }

.eslintrc.js I had to comment out the override for files: ['*.component.ts'] in order to get lint to work


module.exports = {
    env: {
        'browser': true,
        'es6': true,
        'serviceworker': true
    },
    ignorePatterns: ['**/*.js'],
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:@typescript-eslint/recommended-requiring-type-checking',
        'plugin:@angular-eslint/recommended',
        'prettier',
        'prettier/@typescript-eslint'
    ],
    parser: '@typescript-eslint/parser',
    plugins: [
        '@typescript-eslint',
        '@angular-eslint',
        '@angular-eslint/template',
        'prettier'
    ],
    parserOptions: {
        ecmaVersion: 2020,
        sourceType: 'module',
        project: ['./tsconfig.**.json'],
        tsconfigRootDir: __dirname,
        warnOnUnsupportedTypeScriptVersion: false
    },
    rules: {
        '@typescript-eslint/explicit-module-boundary-types': 'off',
        '@typescript-eslint/prefer-includes': 'off',

        // 'prettier/prettier': 'off',

        'prettier/prettier': [
            'error', {
                printWidth: 200,
                trailingComma: "none",
                singleQuote: true,
                bracketSpacing: true,
                jsxBracketSameLine: false,
                parser: "typescript",
                useTabs: false,
                tabWidth: 2,
                arrowParens: "always",
                endOfLine: "auto",
                htmlWhitespaceSensitivity: "ignore",
                insertPragma: false,
                jsxSingleQuote: false,
                proseWrap: "preserve",
                quoteProps: "as-needed",
                requirePragma: false,
                semi: true,
                overrides: [{
                        files: ".json",
                        options: {
                            parser: "json"
                        }
                    }, {
                        files: "*.html",
                        options: {
                            parser: "angular"
                        }
                    }, {
                        files: "*.ts",
                        options: {
                            parser: "typescript"
                        }
                    }
                ]
            }
        ],
    },
    overrides: [{
            files: ['*.ts'],
            extends: [
                'plugin:@typescript-eslint/recommended-requiring-type-checking',
                'plugin:@angular-eslint/recommended',
            ],
            parser: '@typescript-eslint/parser',
            parserOptions: {
                ecmaVersion: 2020,
                sourceType: 'module',
                project: ['./tsconfig.**.json', './projects/*/tsconfig.**.json'],
                tsconfigRootDir: __dirname,
                warnOnUnsupportedTypeScriptVersion: false
            },
            plugins: ['@typescript-eslint', '@angular-eslint'],
            rules: {
                'max-len': ['error', {
                        'code': 180,
                        "comments": 240,
                        "ignoreUrls": true,
                        "ignoreComments": true,
                        "ignoreStrings": true,
                        "ignoreTrailingComments": true,
                        "ignoreTemplateLiterals": true,
                        "ignoreRegExpLiterals": true
                    }
                ],
                '@angular-eslint/component-class-suffix': 'error',
                '@angular-eslint/directive-selector': [
                    'error', {
                        type: 'attribute',
                        prefix: 'app',
                        style: 'camelCase'
                    },
                ],
                '@angular-eslint/contextual-lifecycle': 'error',
                '@angular-eslint/directive-class-suffix': 'error',
                '@angular-eslint/component-selector': [
                    'error', {
                        type: 'element',
                        prefix: 'app',
                        style: 'kebab-case'
                    },
                ],
                '@angular-eslint/no-conflicting-lifecycle': 'error',
                '@angular-eslint/no-host-metadata-property': 'error',
                '@angular-eslint/no-input-rename': 'off',
                '@angular-eslint/no-inputs-metadata-property': 'error',
                '@angular-eslint/no-output-native': 'off',
                '@angular-eslint/no-output-on-prefix': 'off',
                '@angular-eslint/no-output-rename': 'off',
                '@angular-eslint/no-outputs-metadata-property': 'error',
                '@angular-eslint/template/banana-in-box': 'off',
                '@angular-eslint/template/no-negated-async': 'off',
                '@angular-eslint/use-lifecycle-interface': 'error',
                '@angular-eslint/use-pipe-transform-interface': 'error',
                '@typescript-eslint/array-type': 'off',

                '@typescript-eslint/ban-types': [
                    'off', {
                        types: {
                            Object: {
                                message: 'Avoid using the `Object` type. Did you mean `object`?',
                            },
                            Function: {
                                message: 'Avoid using the `Function` type. Prefer a specific function type, like `() => void`.',
                            },
                            Boolean: {
                                message: 'Avoid using the `Boolean` type. Did you mean `boolean`?',
                            },
                            Number: {
                                message: 'Avoid using the `Number` type. Did you mean `number`?',
                            },
                            String: {
                                message: 'Avoid using the `String` type. Did you mean `string`?',
                            },
                            Symbol: {
                                message: 'Avoid using the `Symbol` type. Did you mean `symbol`?',
                            },
                        },
                    },
                ],
                '@typescript-eslint/consistent-type-definitions': 'error',
                '@typescript-eslint/dot-notation': 'off',
                '@typescript-eslint/explicit-member-accessibility': [
                    'off', {
                        accessibility: 'explicit',
                    },
                ],
                '@typescript-eslint/interface-name-prefix': 'off',
                '@typescript-eslint/member-delimiter-style': [
                    'off', {
                        multiline: {
                            delimiter: 'none',
                            requireLast: true,
                        },
                        singleline: {
                            delimiter: 'semi',
                            requireLast: false,
                        },
                    },
                ],
                '@typescript-eslint/member-ordering': 'off',
                '@typescript-eslint/no-empty-function': 'off',
                '@typescript-eslint/no-explicit-any': 'off',
                '@typescript-eslint/no-non-null-assertion': 'error',
                '@typescript-eslint/no-parameter-properties': 'off',
                '@typescript-eslint/no-unused-expressions': 'error',
                '@typescript-eslint/no-var-requires': 'off',
                '@typescript-eslint/prefer-for-of': 'off',
                '@typescript-eslint/prefer-function-type': 'off',
                '@typescript-eslint/semi': ['off', null],
                '@typescript-eslint/triple-slash-reference': [
                    'error', {
                        path: 'always',
                        types: 'prefer-import',
                        lib: 'always',
                    },
                ],
                '@typescript-eslint/type-annotation-spacing': 'off',
                '@typescript-eslint/unified-signatures': 'error',
                '@typescript-eslint/explicit-function-return-type': 'off',

                '@typescript-eslint/await-thenable': 'off',
                '@typescript-eslint/no-unused-vars': 'off',
                '@typescript-eslint/unbound-method': 'off',
                '@typescript-eslint/no-namespace': 'off',

                '@typescript-eslint/no-unsafe-assignment': 'off',
                '@typescript-eslint/no-unsafe-member-access': 'off',
                '@typescript-eslint/no-unsafe-call': 'off',
                '@typescript-eslint/no-floating-promises': 'off',
                '@typescript-eslint/no-unsafe-return': 'off',

                'no-debugger': 'error',
                'no-empty': 'off',
                'no-eval': 'error',
                'no-fallthrough': 'error',
                'no-invalid-this': 'off',
                'no-irregular-whitespace': 'off',
                'no-new-wrappers': 'error',
                'no-useless-escape': 'off',

                'no-restricted-imports': [
                    'error', {
                        'paths': [
                            'rxjs/Rx',
                            'rxjs/internal/operators',
                            'rxjs/internal'
                        ]
                    }
                ],
                '@typescript-eslint/no-use-before-define': 'off',
                '@typescript-eslint/no-unused-expressions': 'off',
                '@typescript-eslint/camelcase': 'off',
                '@typescript-eslint/restrict-plus-operands': 'off',
                '@angular-eslint/component-selector': 'off',
                '@angular-eslint/directive-selector': 'off',
                '@typescript-eslint/restrict-template-expressions': 'off',
            }
        }, {
            files: ['*.d.ts', '*.svg.ts', '**/iav/**/*.ts', '**/iav/**/*.js'],
            parser: '@typescript-eslint/parser',
            plugins: ['@angular-eslint/template'],
            processor: '@angular-eslint/template/extract-inline-html',
            parserOptions: {
                ecmaVersion: 2020,
                sourceType: 'module',
                project: ['./tsconfig.**.json'],
                tsconfigRootDir: __dirname
            },
            rules: {
                'max-len': ['error', {
                        'code': 500
                    }
                ],
                'no-redeclare': 'off',
                'no-undef': 'off',
                'no-prototype-builtins': 'off',
                'no-var': 'off',
                'no-inner-declarations': 'off',
                '@typescript-eslint/no-empty-interface': 'off',
                '@typescript-eslint/no-namespace': 'off',
                '@typescript-eslint/consistent-type-assertions': 'off',
                '@typescript-eslint/unified-signatures': 'off',

                'no-dupe-class-members': 'off',
                'prefer-spread': 'off',
                '@typescript-eslint/explicit-function-return-type': 'off',
                '@typescript-eslint/no-use-before-define': 'off',
                '@angular-eslint/component-selector': 'off',
                '@typescript-eslint/prefer-namespace-keyword': 'off',
                '@typescript-eslint/no-inferrable-types': 'off',
                '@typescript-eslint/prefer-string-starts-ends-with': 'off',
                '@typescript-eslint/prefer-includes': 'off',

                'prettier/prettier': 'off',
                'prefer-const': 'off'
            }
            // }, {
            // files: ['*.component.ts'],
            // parser: '@typescript-eslint/parser',
            // plugins: ['@angular-eslint/template',
            // 'prettier',
            // ],
            // processor: '@angular-eslint/template/extract-inline-html',
            // parserOptions: {
            // ecmaVersion: 2020,
            // sourceType: 'module',
            // project: ['./tsconfig.**.json'],
            // tsconfigRootDir: __dirname
            // },
            // rules: {
            // '@angular-eslint/component-selector': 'off'

            // }
        }, {
            files: ['*.component.html'],
            parser: '@angular-eslint/template-parser',
            plugins: ['@angular-eslint/template'],
            parserOptions: {
                ecmaVersion: 2020,
                sourceType: 'module',
                project: ['./tsconfig.**.json'],
                tsconfigRootDir: __dirname,
                warnOnUnsupportedTypeScriptVersion: false
            },
            rules: {
                '@angular-eslint/template/banana-in-a-box': 'off',
                '@angular-eslint/template/cyclomatic-complexity': 'off',
                '@angular-eslint/template/no-call-expression': 'off',
                '@angular-eslint/template/no-negated-async': 'off',
                '@typescript-eslint/no-misused-promises': 'off',
                '@typescript-eslint/no-unnecessary-type-assertion': 'off',
                '@typescript-eslint/await-thenable': 'off',
                '@typescript-eslint/prefer-regexp-exec': 'off',
                '@typescript-eslint/prefer-string-starts-ends-with': 'off',
                '@typescript-eslint/require-await': 'off',
                '@typescript-eslint/unbound-method': 'off',
                '@typescript-eslint/no-floating-promises': 'off',
                '@typescript-eslint/no-implied-eval': 'off',
                '@typescript-eslint/no-unsafe-assignment': 'off',
                '@typescript-eslint/no-unsafe-call': 'off',
                '@typescript-eslint/no-unsafe-member-access': 'off',
                '@typescript-eslint/no-unsafe-return': 'off',
                '@typescript-eslint/restrict-plus-operands': 'off',
                '@typescript-eslint/restrict-template-expressions': 'off',
				'prettier/prettier': 'off',
            }
        }
    ]
};

from angular-eslint.

JamesHenry avatar JamesHenry commented on May 17, 2024

I'm sorry about the OOM issues @kambbado - please can you migrate to v0.2.0-beta.1? It was added in #120

It is a major change to address specifically the issues you have mentioned. You will see that the integration-tests now include lots of separate projects (and you can also see in there how different the config now is).

There is a schematic available now in that same PR to take a current Angular CLI project and convert it to the appropriate configuration.

If you still have issues with v0.2.0-beta.1 please open a fresh issue with as much information as possible.

Thanks all 🙏

from angular-eslint.

Related Issues (20)

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.