{"id":18256019,"url":"https://github.com/ull-esit-pl/flow-learning","last_synced_at":"2025-07-30T05:05:39.969Z","repository":{"id":246646309,"uuid":"821740115","full_name":"ULL-ESIT-PL/flow-learning","owner":"ULL-ESIT-PL","description":"Learning flow","archived":false,"fork":false,"pushed_at":"2024-12-23T10:36:13.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T22:29:56.012Z","etag":null,"topics":["flow","flow-compiler","flow-js","flow-typing"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ULL-ESIT-PL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-29T09:52:10.000Z","updated_at":"2024-12-23T10:36:17.000Z","dependencies_parsed_at":"2025-04-08T22:37:53.976Z","dependency_job_id":null,"html_url":"https://github.com/ULL-ESIT-PL/flow-learning","commit_stats":null,"previous_names":["ull-esit-pl/flow-learning"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ULL-ESIT-PL/flow-learning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ULL-ESIT-PL%2Fflow-learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ULL-ESIT-PL%2Fflow-learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ULL-ESIT-PL%2Fflow-learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ULL-ESIT-PL%2Fflow-learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ULL-ESIT-PL","download_url":"https://codeload.github.com/ULL-ESIT-PL/flow-learning/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ULL-ESIT-PL%2Fflow-learning/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267814650,"owners_count":24148328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flow","flow-compiler","flow-js","flow-typing"],"created_at":"2024-11-05T10:19:27.248Z","updated_at":"2025-07-30T05:05:39.936Z","avatar_url":"https://github.com/ULL-ESIT-PL.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Mark Volkmann - Flow - Am I Your Type?\n\n* [\"Flow - Am I Your Type?\"](https://www.youtube.com/watch?v=Eti6_bSRgHU\u0026t=304s)  by Mark Volkmann. Sept. 2017.\n* [flow-typed](https://flow-typed.github.io/flow-typed/#/?id=flow-typed)\n\nFlow is an open source tool written in OCaml from Facebook that is \"a static type checker, designed to find type errors in JavaScript programs\". Its parser is available as a compiled-to-JavaScript module published to [npm, named flow-parser](https://www.npmjs.com/package/flow-parser). JavaScript packages which make use of parsing Flow-typed JavaScript can use this to generate Flow's syntax tree with annotated types attached.\n\nFlow supports adding types gradually to variables, parameters, return values, object properties, and array elements. Flow even catches some errors without adding types by using type inference and flow analysis.\n\nFlow supports many types including primitives, functions (with specified signatures), arrays, objects, built-in classes, custom classes, and generic (parameterized) classes.\n\nFlow is similar to Microsoft TypeScript and mostly uses the same syntax for specifying types. However, TypeScript is also a transpiler. One benefit of using Flow is that Babel can be used for transpiling. Babel typically implements new ECMAScript features before TypeScript.\n\nThis talk covers everything you need to know to get started using Flow, including integration with Babel, ESLint, editors, and IDEs.\n\nMark Volkmann\nOBJECT COMPUTING, INC.\n\nMark Volkmann is a partner at Object Computing, Inc. (OCI) in St. Louis where he has provided software consulting and training since 1996. As a consultant, Mark has assisted many companies with JavaScript, Node.js, React, AngularJS, jQuery, and Java application development. He has created and taught many courses on topics including React, AngularJS, Node.js, jQuery, JavaScript, HTML5, CSS3, Ruby, Java, and XML. Mark is a frequent presenter at St. Louis area user groups. He has written for XML Journal and the No Fluff Just Stuff magazine. He has presented at the MidwestJS, Jfokus, Strange Loop, No Fluff Just Stuff, and XML DevCon conferences. Mark frequently writes articles on various software development topics. These can be found at https://objectcomputing.com/resources....\n\n\n## Is the facebook flow transpiler project still alive? \n\nThe Flow type checker developed by Facebook (now Meta) is still an active project in 2024. However, its popularity and community activity have declined in comparison to TypeScript. Flow is still maintained and used internally by Meta for some of its projects, but the broader JavaScript/TypeScript community has largely gravitated towards TypeScript due to its comprehensive feature set, community support, and integration with the broader JavaScript ecosystem.\n\n\nAs of my last update in May 2024, the Flow type checker developed by Facebook (now Meta) is still an active project. However, its popularity and community activity have declined in comparison to TypeScript. Flow is still maintained and used internally by Meta for some of its projects, but the broader JavaScript/TypeScript community has largely gravitated towards TypeScript due to its comprehensive feature set, community support, and integration with the broader JavaScript ecosystem.\n\n## Flow repo and Documentation\n\n1. **Official GitHub Repository**: Check the [Flow GitHub repository](https://github.com/facebook/flow) for the latest commits, releases, and issues. This will give you a clear picture of its current activity and support.\n2. **Flow Documentation**: The [official Flow documentation](https://flow.org/) is another resource to see the latest updates and guides.\n\n\n## flow-remove-types\n\n\nTo strip Flow types from a JavaScript file and get the pure JavaScript version, you can use the 'flow-remove-types' package. \nHere is the help:\n\n```\n➜  flow-learning git:(main) ✗ npx flow-remove-types --help        \nUsage: flow-remove-types [options] [sources] \n\nOptions:\n  -h, --help        Show this message\n  -v, --version     Prints the current version of flow-remove-types\n  -i, --ignore      Paths to ignore, Regular Expression\n  -x, --extensions  File extensions to transform\n  -o, --out-file    The file path to write transformed file to\n  -d, --out-dir     The directory path to write transformed files within\n  -a, --all         Transform all files, not just those with a @flow comment\n  -p, --pretty      Remove flow types without replacing with spaces, \n                    producing prettier output but may require using source maps\n      --ignore-uninitialized-fields\n                    Removes uninitialized class fields (`foo;`, `foo: string;`)\n                    completely rather than only removing the type. THIS IS NOT\n                    SPEC COMPLIANT! Instead, use `declare foo: string;` for\n                    type-only fields.\n  -m, --sourcemaps  Also output source map files. Optionally pass \"inline\"\n  -q, --quiet       Does not produce any output concerning successful progress.\n\nExamples:\n\nTransform one file:\n  flow-remove-types --out-file output.js input.js\n\nTransform many files:\n  flow-remove-types --out-dir out/ input1.js input2.js\n\nTransform files in directory:\n  flow-remove-types --out-dir out/ indir/\n\nTransform files with source maps:\n  flow-remove-types --out-dir out/ indir/ --sourcemaps\n\nTransform files with inline source maps:\n  flow-remove-types --out-dir out/ indir/ --sourcemaps inline\n\nTransform stdin:\n  cat input.js | flow-remove-types \u003e output.js\n```\n\u003e [!NOTE]\n\u003e The input code has to have the `@flow` comment to be processed by `flow-remove-types`.\n\n## Removing Flow Types from JavaScript Code\n\nHere's a simple Node.js script that demonstrates how to do this:\n\n`file=\"strip-flow-types.mjs`\n```javascript\nimport flowRemoveTypes from 'flow-remove-types';\nimport { readFileSync } from 'fs';\n\ntry {\n  const fileContent = readFileSync('example-flow.js', 'utf8');\n  const strippedFileContent = flowRemoveTypes(fileContent);\n  console.log(\"\\nStripped content from file:\");\n  console.log(strippedFileContent.toString());\n} catch (error) {\n  console.log(\"Error reading file:\", error.message);\n}\n```\n\nThis script does the following:\n\n1. We import the `flow-remove-types` package and the `readFileSync` function from the `fs` module.\n2. As an example of how to strip types from a file, we attempt to read a file named 'example-flow.js', \n3. strip its types, and print the result. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Full-esit-pl%2Fflow-learning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Full-esit-pl%2Fflow-learning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Full-esit-pl%2Fflow-learning/lists"}