mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 04:04:19 +00:00
[TS/JS] Entry point per namespace and reworked 1.x compatible single file build (#7510)
* [TS/JS] Entry point per namespace * Fix handling of outputpath and array_test * Attempt to fix generate_code * Fix cwd for ts in generate_code * Attempt to fixup bazel and some docs * Add --ts-flat-files to bazel build to get bundle * Move to DEFAULT_FLATC_TS_ARGS * Attempt to add esbuild * Attempt to use npm instead * Remove futile attempt to add esbuild * Attempt to as bazel esbuild * Shuffle * Upgrade bazel deps * Revert failed attempts to get bazel working * Ignore flatc tests for now * Add esbuild dependency * `package.json` Include esbuild * `WORKSPACE` Add fetching esbuild binary * Update WORKSPACE * Unfreeze Lockfile * Update WORKSPACE * Update BUILD.bazel * Rework to suggest instead of running external bundler * Add esbuild generation to test script * Prelim bundle test * Run test JavaScriptTest from flatbuffers 1.x * Deps upgrade * Clang format fix * Revert bazel changes * Fix newline * Generate with type declarations * Handle "empty" root namespace * Adjust tests for typescript_keywords.ts * Separate test procedure for old node resolution module output * Fix rel path for root level re-exports * Bazel support for esbuild-based flatc Unfortunately, we lose typing information because the new esbuild method of generating single files does not generate type information. The method used here is a bit hack-ish because it relies on parsing the console output of flatc to figure out what to do. * Try to fix bazel build for when node isn't present on host * Auto formatting fixes * Fix missing generated code Co-authored-by: Derek Bailey <derekbailey@google.com> Co-authored-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
This commit is contained in:
@@ -44,6 +44,7 @@ def check_call(args, cwd=tests_path):
|
||||
|
||||
# Execute the flatc compiler with the specified parameters
|
||||
def flatc(options, schema, prefix=None, include=None, data=None, cwd=tests_path):
|
||||
print("Invoking flatc on schema " + str(schema))
|
||||
cmd = [str(flatc_path)] + options
|
||||
if prefix:
|
||||
cmd += ["-o"] + [prefix]
|
||||
@@ -54,17 +55,23 @@ def flatc(options, schema, prefix=None, include=None, data=None, cwd=tests_path)
|
||||
cmd += [data] if isinstance(data, str) else data
|
||||
check_call(cmd)
|
||||
|
||||
# Execute esbuild with the specified parameters
|
||||
def esbuild(input, output):
|
||||
cmd = ["esbuild", input, "--outfile=" + output]
|
||||
cmd += ["--format=cjs", "--bundle", "--external:flatbuffers"]
|
||||
check_call(cmd)
|
||||
|
||||
print("Removing node_modules/ directory...")
|
||||
shutil.rmtree(Path(tests_path, "node_modules"), ignore_errors=True)
|
||||
|
||||
check_call(["npm", "install", "--silent"])
|
||||
|
||||
print("Invoking flatc...")
|
||||
flatc(
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api"],
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
|
||||
schema="../monster_test.fbs",
|
||||
include="../include_test",
|
||||
)
|
||||
esbuild("monster_test.ts", "monster_test_generated.cjs")
|
||||
|
||||
flatc(
|
||||
options=["--gen-object-api", "-b"],
|
||||
@@ -74,10 +81,11 @@ flatc(
|
||||
)
|
||||
|
||||
flatc(
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api"],
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
|
||||
schema="../union_vector/union_vector.fbs",
|
||||
prefix="union_vector",
|
||||
)
|
||||
esbuild("union_vector/union_vector.ts", "union_vector/union_vector_generated.cjs")
|
||||
|
||||
flatc(
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings"],
|
||||
@@ -91,31 +99,14 @@ flatc(
|
||||
)
|
||||
|
||||
flatc(
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api"],
|
||||
schema=[
|
||||
"typescript_keywords.fbs",
|
||||
"test_dir/typescript_include.fbs",
|
||||
"test_dir/typescript_transitive_include.fbs",
|
||||
"../../reflection/reflection.fbs",
|
||||
],
|
||||
include="../../",
|
||||
)
|
||||
|
||||
flatc(
|
||||
options=["--ts", "--reflect-names", "--ts-flat-files", "--gen-name-strings", "--gen-object-api"],
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
|
||||
schema="arrays_test_complex/arrays_test_complex.fbs",
|
||||
prefix="arrays_test_complex"
|
||||
)
|
||||
esbuild("arrays_test_complex/my-game/example.ts", "arrays_test_complex/arrays_test_complex_generated.cjs")
|
||||
|
||||
flatc(
|
||||
options=[
|
||||
"--ts",
|
||||
"--reflect-names",
|
||||
"--gen-name-strings",
|
||||
"--gen-mutable",
|
||||
"--gen-object-api",
|
||||
"--ts-flat-files",
|
||||
],
|
||||
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
|
||||
schema=[
|
||||
"typescript_keywords.fbs",
|
||||
"test_dir/typescript_include.fbs",
|
||||
@@ -124,15 +115,18 @@ flatc(
|
||||
],
|
||||
include="../../",
|
||||
)
|
||||
esbuild("typescript_keywords.ts", "typescript_keywords_generated.cjs")
|
||||
|
||||
print("Running TypeScript Compiler...")
|
||||
check_call(["tsc"])
|
||||
print("Running TypeScript Compiler in old node resolution mode for no_import_ext...")
|
||||
check_call(["tsc", "-p", "./tsconfig.node.json"])
|
||||
|
||||
NODE_CMD = ["node"]
|
||||
|
||||
print("Running TypeScript Tests...")
|
||||
check_call(NODE_CMD + ["JavaScriptTest"])
|
||||
check_call(NODE_CMD + ["JavaScriptTestv1.cjs", "./monster_test_generated.cjs"])
|
||||
check_call(NODE_CMD + ["JavaScriptUnionVectorTest"])
|
||||
check_call(NODE_CMD + ["JavaScriptFlexBuffersTest"])
|
||||
check_call(NODE_CMD + ["JavaScriptComplexArraysTest"])
|
||||
check_call(NODE_CMD + ["JavaScriptRequiredStringTest"])
|
||||
|
||||
Reference in New Issue
Block a user