mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-18 01:16:31 +00:00
[TS/JS] New gen TS code gen (#6302)
* TS/ES6 modules spike iteration 1 * Initial modularized dasherized output * Remove obsoleted parts and namespace wrapping * Use _flatbuffers_ prefix * First part of imports logic * Second part of imports logic * Fix TS/JS code removal mixup * Alias imported symbols if same name from different namespaces and some fixes * Use star import for bare imports * Fix messed up string concat * var to const and remove not needed semi * Remove some cases of ns prefixing * Add missing space * Cleanups * Completed initial import tracking logic * Compilable output * Adjust TypeScriptTest and dependents to work * Use local flatbuffers package for tests * Refactor away use of any * Remove obsolete imported_fileset and reexport_map * Still need any and fix JavaScriptTest.sh * Fix test runs out of the box * Temp add generated files * TypeScriptTest replaces JavaScriptTest and cleanups * Also remove reference to JavaScriptTest in TestAll.sh * Remove old generated ts/js files * Remove use of --js in generate_code scripts * idl_gen_js_ts to idl_gen_ts and removal of js gen * Remove obsoleted options * Fix obsolete ts test detection * Tweak ts compilation be as strict as possible * Remove jsdoc type annotation generation * Generated test ts files * Fix search and replace messup * Regenerated ts test output * Use CharToLower * Use normal for loop * Rework namespacedir * Revert "Rework namespacedir" This reverts commit 6f4eb0104ceeb86011bb076ebca901138c48e068. * Revert "Use normal for loop" This reverts commit 676b2135bfaa1853dfbb06c92b5c16a0d81bb13a. * Revert "Use CharToLower" This reverts commit 2d08648d0d72d0af201fad80d54cdc76412b35e9. * Again do rework but correct * Avoid runtime cast * Fix test runs * Also add npm install to get tsc * Bump node test versions * for range to std for loop * Clang format * Missed one clang format * Move accessor to later * Attempt to make windows version of TypeScriptTest * Want to see the output * Try to get newer node at appveyor * Style changes
This commit is contained in:
@@ -84,20 +84,39 @@ const char *BaseGenerator::FlatBuffersGeneratedWarning() {
|
||||
|
||||
std::string BaseGenerator::NamespaceDir(const Parser &parser,
|
||||
const std::string &path,
|
||||
const Namespace &ns) {
|
||||
const Namespace &ns,
|
||||
const bool dasherize) {
|
||||
EnsureDirExists(path);
|
||||
if (parser.opts.one_file) return path;
|
||||
std::string namespace_dir = path; // Either empty or ends in separator.
|
||||
auto &namespaces = ns.components;
|
||||
for (auto it = namespaces.begin(); it != namespaces.end(); ++it) {
|
||||
namespace_dir += *it + kPathSeparator;
|
||||
namespace_dir += !dasherize ? *it : ToDasherizedCase(*it);
|
||||
namespace_dir += kPathSeparator;
|
||||
EnsureDirExists(namespace_dir);
|
||||
}
|
||||
return namespace_dir;
|
||||
}
|
||||
|
||||
std::string BaseGenerator::NamespaceDir(const Namespace &ns) const {
|
||||
return BaseGenerator::NamespaceDir(parser_, path_, ns);
|
||||
std::string BaseGenerator::NamespaceDir(const Namespace &ns,
|
||||
const bool dasherize) const {
|
||||
return BaseGenerator::NamespaceDir(parser_, path_, ns, dasherize);
|
||||
}
|
||||
|
||||
std::string BaseGenerator::ToDasherizedCase(const std::string pascal_case) {
|
||||
std::string dasherized_case;
|
||||
char p = 0;
|
||||
for (size_t i = 0; i < pascal_case.length(); i++) {
|
||||
char const &c = pascal_case[i];
|
||||
if (is_alpha_upper(c)) {
|
||||
if (i > 0 && p != kPathSeparator) dasherized_case += "-";
|
||||
dasherized_case += CharToLower(c);
|
||||
} else {
|
||||
dasherized_case += c;
|
||||
}
|
||||
p = c;
|
||||
}
|
||||
return dasherized_case;
|
||||
}
|
||||
|
||||
std::string BaseGenerator::FullNamespace(const char *separator,
|
||||
|
||||
@@ -129,9 +129,6 @@ std::string FlatCompiler::GetUsageString(const char *program_name) const {
|
||||
" --object-prefix Customise class prefix for C++ object-based API.\n"
|
||||
" --object-suffix Customise class suffix for C++ object-based API.\n"
|
||||
" Default value is \"T\".\n"
|
||||
" --no-js-exports Removes Node.js style export lines in JS.\n"
|
||||
" --goog-js-export Uses goog.exports* for closure compiler exporting in JS.\n"
|
||||
" --es6-js-export Uses ECMAScript 6 export style lines in JS.\n"
|
||||
" --go-namespace Generate the overriding namespace in Golang.\n"
|
||||
" --go-import Generate the overriding import for flatbuffers in Golang\n"
|
||||
" (default is \"github.com/google/flatbuffers/go\").\n"
|
||||
@@ -157,9 +154,6 @@ std::string FlatCompiler::GetUsageString(const char *program_name) const {
|
||||
" --include-prefix Prefix this path to any generated include statements.\n"
|
||||
" PATH\n"
|
||||
" --keep-prefix Keep original prefix of schema include statement.\n"
|
||||
" --no-fb-import Don't include flatbuffers import statement for TypeScript.\n"
|
||||
" --no-ts-reexport Don't re-export imported dependencies for TypeScript.\n"
|
||||
" --short-names Use short function names for JS and TypeScript.\n"
|
||||
" --reflect-types Add minimal type reflection to code generation.\n"
|
||||
" --reflect-names Add minimal type/name reflection.\n"
|
||||
" --root-type T Select or override the default root_type\n"
|
||||
@@ -240,14 +234,6 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
opts.allow_non_utf8 = true;
|
||||
} else if (arg == "--natural-utf8") {
|
||||
opts.natural_utf8 = true;
|
||||
} else if (arg == "--no-js-exports") {
|
||||
opts.skip_js_exports = true;
|
||||
} else if (arg == "--goog-js-export") {
|
||||
opts.use_goog_js_export_format = true;
|
||||
opts.use_ES6_js_export_format = false;
|
||||
} else if (arg == "--es6-js-export") {
|
||||
opts.use_goog_js_export_format = false;
|
||||
opts.use_ES6_js_export_format = true;
|
||||
} else if (arg == "--go-namespace") {
|
||||
if (++argi >= argc) Error("missing golang namespace" + arg, true);
|
||||
opts.go_namespace = argv[argi];
|
||||
@@ -301,7 +287,6 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
} else if (arg == "--gen-all") {
|
||||
opts.generate_all = true;
|
||||
opts.include_dependence_headers = false;
|
||||
opts.reexport_ts_modules = false;
|
||||
} else if (arg == "--gen-includes") {
|
||||
// Deprecated, remove this option some time in the future.
|
||||
Warn("warning: --gen-includes is deprecated (it is now default)\n");
|
||||
@@ -337,12 +322,6 @@ int FlatCompiler::Compile(int argc, const char **argv) {
|
||||
opts.binary_schema_builtins = true;
|
||||
} else if (arg == "--bfbs-gen-embed") {
|
||||
opts.binary_schema_gen_embed = true;
|
||||
} else if (arg == "--no-fb-import") {
|
||||
opts.skip_flatbuffers_import = true;
|
||||
} else if (arg == "--no-ts-reexport") {
|
||||
opts.reexport_ts_modules = false;
|
||||
} else if (arg == "--short-names") {
|
||||
opts.js_ts_short_names = true;
|
||||
} else if (arg == "--reflect-types") {
|
||||
opts.mini_reflect = IDLOptions::kTypes;
|
||||
} else if (arg == "--reflect-names") {
|
||||
|
||||
@@ -71,17 +71,12 @@ int main(int argc, const char *argv[]) {
|
||||
flatbuffers::GenerateJavaGRPC, flatbuffers::IDLOptions::kJava,
|
||||
"Generate Java classes for tables/structs",
|
||||
flatbuffers::JavaCSharpMakeRule },
|
||||
{ flatbuffers::GenerateJSTS, "-s", "--js", "JavaScript", true, nullptr,
|
||||
flatbuffers::IDLOptions::kJs,
|
||||
"Generate JavaScript code for tables/structs",
|
||||
flatbuffers::JSTSMakeRule },
|
||||
{ flatbuffers::GenerateDart, "-d", "--dart", "Dart", true, nullptr,
|
||||
flatbuffers::IDLOptions::kDart,
|
||||
"Generate Dart classes for tables/structs", flatbuffers::DartMakeRule },
|
||||
{ flatbuffers::GenerateJSTS, "-T", "--ts", "TypeScript", true,
|
||||
{ flatbuffers::GenerateTS, "-T", "--ts", "TypeScript", true,
|
||||
flatbuffers::GenerateTSGRPC, flatbuffers::IDLOptions::kTs,
|
||||
"Generate TypeScript code for tables/structs",
|
||||
flatbuffers::JSTSMakeRule },
|
||||
"Generate TypeScript code for tables/structs", flatbuffers::TSMakeRule },
|
||||
{ flatbuffers::GenerateCSharp, "-n", "--csharp", "C#", true, nullptr,
|
||||
flatbuffers::IDLOptions::kCSharp,
|
||||
"Generate C# classes for tables/structs",
|
||||
|
||||
1486
src/idl_gen_ts.cpp
1486
src/idl_gen_ts.cpp
File diff suppressed because it is too large
Load Diff
@@ -2388,8 +2388,7 @@ bool Parser::SupportsOptionalScalars(const flatbuffers::IDLOptions &opts) {
|
||||
static FLATBUFFERS_CONSTEXPR unsigned long supported_langs =
|
||||
IDLOptions::kRust | IDLOptions::kSwift | IDLOptions::kLobster |
|
||||
IDLOptions::kKotlin | IDLOptions::kCpp | IDLOptions::kJava |
|
||||
IDLOptions::kCSharp | IDLOptions::kTs | IDLOptions::kJs |
|
||||
IDLOptions::kBinary;
|
||||
IDLOptions::kCSharp | IDLOptions::kTs | IDLOptions::kBinary;
|
||||
unsigned long langs = opts.lang_to_generate;
|
||||
return (langs > 0 && langs < IDLOptions::kMAX) && !(langs & ~supported_langs);
|
||||
}
|
||||
@@ -2402,10 +2401,9 @@ bool Parser::SupportsOptionalScalars() const {
|
||||
bool Parser::SupportsAdvancedUnionFeatures() const {
|
||||
return opts.lang_to_generate != 0 &&
|
||||
(opts.lang_to_generate &
|
||||
~(IDLOptions::kCpp | IDLOptions::kJs | IDLOptions::kTs |
|
||||
IDLOptions::kPhp | IDLOptions::kJava | IDLOptions::kCSharp |
|
||||
IDLOptions::kKotlin | IDLOptions::kBinary | IDLOptions::kSwift)) ==
|
||||
0;
|
||||
~(IDLOptions::kCpp | IDLOptions::kTs | IDLOptions::kPhp |
|
||||
IDLOptions::kJava | IDLOptions::kCSharp | IDLOptions::kKotlin |
|
||||
IDLOptions::kBinary | IDLOptions::kSwift)) == 0;
|
||||
}
|
||||
|
||||
bool Parser::SupportsAdvancedArrayFeatures() const {
|
||||
|
||||
Reference in New Issue
Block a user