summaryrefslogtreecommitdiffstats
path: root/src/arrow/js/DEVELOP.md
diff options
context:
space:
mode:
Diffstat (limited to 'src/arrow/js/DEVELOP.md')
-rw-r--r--src/arrow/js/DEVELOP.md120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/arrow/js/DEVELOP.md b/src/arrow/js/DEVELOP.md
new file mode 100644
index 000000000..66cefb084
--- /dev/null
+++ b/src/arrow/js/DEVELOP.md
@@ -0,0 +1,120 @@
+<!---
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+# Getting Involved
+
+Even if you do not plan to contribute to Apache Arrow itself or Arrow
+integrations in other projects, we'd be happy to have you involved:
+
+* Join the mailing list: send an email to [dev-subscribe@arrow.apache.org][1].
+ Share your ideas and use cases for the project.
+* [Follow our activity on JIRA][3]
+* [Learn the format][2]
+* Contribute code to one of the reference implementations
+
+We prefer to receive contributions in the form of GitHub pull requests.
+Please send pull requests against the [github.com/apache/arrow][4] repository.
+
+If you are looking for some ideas on what to contribute, check out the [JIRA
+issues][3] for the Apache Arrow project. Comment on the issue and/or contact
+[dev@arrow.apache.org](http://mail-archives.apache.org/mod_mbox/arrow-dev/)
+with your questions and ideas.
+
+If you’d like to report a bug but don’t have time to fix it, you can still post
+it on JIRA, or email the mailing list
+[dev@arrow.apache.org](http://mail-archives.apache.org/mod_mbox/arrow-dev/)
+
+# The package.json scripts
+
+We use [yarn](https://yarnpkg.com/) to install dependencies and run scrips.
+
+* `yarn clean` - cleans targets
+* `yarn build` - cleans and compiles all targets
+* `yarn test` - executes tests against built targets
+
+These scripts accept argument lists of targets × modules:
+
+* Available `targets` are `es5`, `es2015`, `esnext`, `ts`, and `all` (default: `all`)
+* Available `modules` are `cjs`, `esm`, `umd`, and `all` (default: `all`)
+
+Examples:
+
+* `yarn build` -- builds all ES targets in all module formats
+* `yarn build -t es5 -m all` -- builds the ES5 target in all module formats
+* `yarn build -t all -m cjs` -- builds all ES targets in the CommonJS module format
+* `yarn build -t es5 -t es2015 -m all` -- builds the ES5 and ES2015 targets in all module formats
+* `yarn build -t es5 -m cjs -m esm` -- builds the ES5 target in CommonJS and ESModules module formats
+
+This argument configuration also applies to `clean` and `test` scripts.
+
+To run tests on the bundles, you need to build them first.
+To run tests directly on the sources without bundling, use the `src` target (e.g. `yarn test -t src`).
+
+* `yarn deploy`
+
+Uses [lerna](https://github.com/lerna/lerna) to publish each build target to npm with [conventional](https://conventionalcommits.org/) [changelogs](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-cli).
+
+# Running the Performance Benchmarks
+
+You can run the benchmarks with `yarn perf`. To print the results to stderr as JSON, add the `--json` flag (e.g. `yarn perf --json 2> perf.json`).
+
+You can change the target you want to test by changing the imports in `perf/index.ts`. Note that you need to compile the bundles with `yarn build` before you can import them.
+
+# Updating the Arrow format flatbuffers generated code
+
+1. Once generated, the flatbuffers format code needs to be adjusted for our build scripts (assumes `gnu-sed`):
+
+ ```shell
+ cd $ARROW_HOME
+
+ # Create a tmpdir to store modified flatbuffers schemas
+ tmp_format_dir=$(mktemp -d)
+ cp ./format/*.fbs $tmp_format_dir
+
+ # Remove namespaces from the flatbuffers schemas
+ sed -i '+s+namespace org.apache.arrow.flatbuf;++ig' $tmp_format_dir/*.fbs
+ sed -i '+s+org.apache.arrow.flatbuf.++ig' $tmp_format_dir/*.fbs
+
+ # Generate TS source from the modified Arrow flatbuffers schemas
+ flatc --ts --no-ts-reexport -o ./js/src/fb $tmp_format_dir/{File,Schema,Message}.fbs
+
+ # Remove the tmpdir
+ rm -rf $tmp_format_dir
+
+ cd ./js/src/fb
+
+ # Rename the existing files to <filename>.bak.ts
+ mv File{,.bak}.ts && mv Schema{,.bak}.ts && mv Message{,.bak}.ts
+
+ # Remove `_generated` from the ES6 imports of the generated files
+ sed -i '+s+_generated\";+\";+ig' *_generated.ts
+ # Fix all the `flatbuffers` imports
+ sed -i '+s+./flatbuffers+flatbuffers+ig' *_generated.ts
+ # Fix the Union createTypeIdsVector typings
+ sed -i -r '+s+static createTypeIdsVector\(builder: flatbuffers.Builder, data: number\[\] \| Uint8Array+static createTypeIdsVector\(builder: flatbuffers.Builder, data: number\[\] \| Int32Array+ig' Schema_generated.ts
+ # Remove "_generated" suffix from TS files
+ mv File{_generated,}.ts && mv Schema{_generated,}.ts && mv Message{_generated,}.ts
+ ```
+
+2. Execute `yarn lint` from the `js` directory to fix the linting errors
+
+[1]: mailto:dev-subscribe@arrow.apache.org
+[2]: https://github.com/apache/arrow/tree/master/format
+[3]: https://issues.apache.org/jira/browse/ARROW
+[4]: https://github.com/apache/arrow