From c538cdf90cc90ec3f5b7b2655f1deeac2391d016 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Sat, 17 Sep 2022 10:56:31 -0700 Subject: [PATCH] Canonical of BUILD file generation for JavaScript and TypeScript --- js_build_file_generation/.bazelignore | 4 + js_build_file_generation/.bazelrc | 1 + js_build_file_generation/.bazelversion | 1 + js_build_file_generation/.gitignore | 36 ++ js_build_file_generation/.npmrc | 6 + js_build_file_generation/BUILD.bazel | 25 ++ js_build_file_generation/README.md | 33 ++ js_build_file_generation/WORKSPACE | 61 +++ .../apps/triad/BUILD.bazel | 41 ++ js_build_file_generation/apps/triad/main.ts | 7 + .../apps/triad/package.json | 6 + .../apps/triad/pivot/BUILD.bazel | 10 + .../apps/triad/pivot/index.d.ts | 1 + .../apps/triad/pivot/index.js | 5 + .../apps/triad/vibe/BUILD.bazel | 23 + .../apps/triad/vibe/index.ts | 10 + js_build_file_generation/jest.config.js | 1 + .../libs/rune/BUILD.bazel | 3 + .../libs/rune/asap/BUILD.bazel | 10 + .../libs/rune/asap/index.d.ts | 1 + .../libs/rune/asap/index.js | 5 + .../libs/rune/package.json | 5 + .../libs/rune/rebus/BUILD.bazel | 70 +++ .../libs/rune/rebus/index.spec.ts | 5 + .../libs/rune/rebus/index.ts | 3 + js_build_file_generation/package.json | 12 + .../packages/iris/BUILD.bazel | 43 ++ .../packages/iris/abra/BUILD.bazel | 10 + .../packages/iris/abra/index.d.ts | 1 + .../packages/iris/abra/index.js | 5 + .../packages/iris/index.ts | 2 + .../packages/iris/package.json | 6 + .../packages/iris/pitch/BUILD.bazel | 19 + .../packages/iris/pitch/index.ts | 3 + js_build_file_generation/pnpm-lock.yaml | 397 ++++++++++++++++++ js_build_file_generation/pnpm-workspace.yaml | 4 + js_build_file_generation/tsconfig.json | 6 + 37 files changed, 881 insertions(+) create mode 100644 js_build_file_generation/.bazelignore create mode 100644 js_build_file_generation/.bazelrc create mode 100644 js_build_file_generation/.bazelversion create mode 100644 js_build_file_generation/.gitignore create mode 100644 js_build_file_generation/.npmrc create mode 100644 js_build_file_generation/BUILD.bazel create mode 100644 js_build_file_generation/README.md create mode 100644 js_build_file_generation/WORKSPACE create mode 100644 js_build_file_generation/apps/triad/BUILD.bazel create mode 100644 js_build_file_generation/apps/triad/main.ts create mode 100644 js_build_file_generation/apps/triad/package.json create mode 100644 js_build_file_generation/apps/triad/pivot/BUILD.bazel create mode 100755 js_build_file_generation/apps/triad/pivot/index.d.ts create mode 100644 js_build_file_generation/apps/triad/pivot/index.js create mode 100644 js_build_file_generation/apps/triad/vibe/BUILD.bazel create mode 100644 js_build_file_generation/apps/triad/vibe/index.ts create mode 100644 js_build_file_generation/jest.config.js create mode 100644 js_build_file_generation/libs/rune/BUILD.bazel create mode 100644 js_build_file_generation/libs/rune/asap/BUILD.bazel create mode 100755 js_build_file_generation/libs/rune/asap/index.d.ts create mode 100644 js_build_file_generation/libs/rune/asap/index.js create mode 100644 js_build_file_generation/libs/rune/package.json create mode 100644 js_build_file_generation/libs/rune/rebus/BUILD.bazel create mode 100644 js_build_file_generation/libs/rune/rebus/index.spec.ts create mode 100644 js_build_file_generation/libs/rune/rebus/index.ts create mode 100644 js_build_file_generation/package.json create mode 100644 js_build_file_generation/packages/iris/BUILD.bazel create mode 100644 js_build_file_generation/packages/iris/abra/BUILD.bazel create mode 100755 js_build_file_generation/packages/iris/abra/index.d.ts create mode 100644 js_build_file_generation/packages/iris/abra/index.js create mode 100644 js_build_file_generation/packages/iris/index.ts create mode 100644 js_build_file_generation/packages/iris/package.json create mode 100644 js_build_file_generation/packages/iris/pitch/BUILD.bazel create mode 100644 js_build_file_generation/packages/iris/pitch/index.ts create mode 100644 js_build_file_generation/pnpm-lock.yaml create mode 100644 js_build_file_generation/pnpm-workspace.yaml create mode 100644 js_build_file_generation/tsconfig.json diff --git a/js_build_file_generation/.bazelignore b/js_build_file_generation/.bazelignore new file mode 100644 index 00000000..21577448 --- /dev/null +++ b/js_build_file_generation/.bazelignore @@ -0,0 +1,4 @@ +node_modules +apps/triad/node_modules +libs/rune/node_modules +packages/iris/node_modules diff --git a/js_build_file_generation/.bazelrc b/js_build_file_generation/.bazelrc new file mode 100644 index 00000000..b98fc097 --- /dev/null +++ b/js_build_file_generation/.bazelrc @@ -0,0 +1 @@ +test --test_output=errors diff --git a/js_build_file_generation/.bazelversion b/js_build_file_generation/.bazelversion new file mode 100644 index 00000000..6b4ab2c8 --- /dev/null +++ b/js_build_file_generation/.bazelversion @@ -0,0 +1 @@ +6.0.0rc1 \ No newline at end of file diff --git a/js_build_file_generation/.gitignore b/js_build_file_generation/.gitignore new file mode 100644 index 00000000..e4cf39e3 --- /dev/null +++ b/js_build_file_generation/.gitignore @@ -0,0 +1,36 @@ +# compiled output +dist +node_modules +bazel-* + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json \ No newline at end of file diff --git a/js_build_file_generation/.npmrc b/js_build_file_generation/.npmrc new file mode 100644 index 00000000..e1585088 --- /dev/null +++ b/js_build_file_generation/.npmrc @@ -0,0 +1,6 @@ +# Disabling pnpm [hoisting](https://pnpm.io/npmrc#hoist) by setting `hoist=false` is recommended on +# projects using rules_js so that pnpm outside of Bazel lays out a node_modules tree similar to what +# rules_js lays out under Bazel (without a hidden node_modules/.pnpm/node_modules). See +# https://github.com/aspect-build/rules_js/blob/7377f2d0387cc2a9251137929b1c53ccdb3fbcf0/docs/npm_import.md#npm_translate_lock +# documentation for more information. +hoist=false diff --git a/js_build_file_generation/BUILD.bazel b/js_build_file_generation/BUILD.bazel new file mode 100644 index 00000000..cec7ffc7 --- /dev/null +++ b/js_build_file_generation/BUILD.bazel @@ -0,0 +1,25 @@ +load("@npm//:defs.bzl", "npm_link_all_packages") +load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_rules_ts//ts:defs.bzl", "ts_config") + +npm_link_all_packages() + +# 💁 A tsconfig target to be used in ts_project targets throughout the monorepo. +# +# 💡 DESIGN: This seems like unnecessary boilerplate and by default we could just generate an sane +# default tsconfig in each ts_project target with sane defaults such as `declaration = True` +ts_config( + name = "tsconfig", + src = "tsconfig.json", + visibility = ["//visibility:public"], +) + +# 💁 A jest config target to be used in jest_target targets throughout the monorepo. +# +# 💡 DESIGN: This seems like unnecessary boilerplate and by default we could just generate an empty +# jest config in jest_test by default. +js_library( + name = "jest_config", + srcs = ["jest.config.js"], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/README.md b/js_build_file_generation/README.md new file mode 100644 index 00000000..49fd9127 --- /dev/null +++ b/js_build_file_generation/README.md @@ -0,0 +1,33 @@ +# Canonical of BUILD file generation for JavaScript and TypeScript + +Example monorepo example that is structured for JavaScript and TypeScript BUILD +file generation using the Aspect CLI. + +Library, feature and app names were generated with https://www.fantasynamegenerators.com/software-names.php + +## Structure + +Sources in this monorepo example is structured into three top-level folders: + +- apps: Applications +- libs: Shared libraries that are not linked but imported via relative paths `../../libs/foo` +- packages: Shared code that is consumed via named links and imported from node_modules `@example/foo` + +Using bazel query to list all of the targets in the repository is a quick way to see they monorepo structure: + +``` +bazel query ... | grep -v node_modules | grep -v _validate +//:tsconfig +//apps/triad:triad +//apps/triad:triad_lib +//apps/triad/pivot:pivot +//apps/triad/vibe:vibe +//libs/rune/asap:asap +//libs/rune/rebus:rebus +//packages/iris:iris +//packages/iris:iris_lib +//packages/iris/abra:abra +//packages/iris/pitch:pitch +``` + +(we filter out "node_modules" and typescript boilerplate targets "_validate" targets) diff --git a/js_build_file_generation/WORKSPACE b/js_build_file_generation/WORKSPACE new file mode 100644 index 00000000..76bf2aa4 --- /dev/null +++ b/js_build_file_generation/WORKSPACE @@ -0,0 +1,61 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "aspect_rules_js", + sha256 = "d8eabcd1e05d93147505ea806fa21089926b771d8813f01b92af5dec36617033", + strip_prefix = "rules_js-1.6.3", + url = "https://github.com/aspect-build/rules_js/archive/refs/tags/v1.6.3.tar.gz", +) + +http_archive( + name = "aspect_rules_ts", + sha256 = "1149d4cf7f210de67e0fc5cd3e8f624de3ee976ac05af4f1484e57a74c12f2dc", + strip_prefix = "rules_ts-1.0.0-rc5", + url = "https://github.com/aspect-build/rules_ts/archive/refs/tags/v1.0.0-rc5.tar.gz", +) + +http_archive( + name = "aspect_rules_jest", + sha256 = "bb3226707f9872185865a6381eb3a19311ca7b46e8ed475aad50975906a6cb6a", + strip_prefix = "rules_jest-0.10.0", + url = "https://github.com/aspect-build/rules_jest/archive/refs/tags/v0.10.0.tar.gz", +) + +load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") + +rules_js_dependencies() + +load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies", LATEST_TS_VERSION = "LATEST_VERSION") + +rules_ts_dependencies(ts_version = LATEST_TS_VERSION) + +load("@aspect_rules_jest//jest:dependencies.bzl", "rules_jest_dependencies") + +rules_jest_dependencies() + +# Fetches the npm packages for jest-cli. +load("@aspect_rules_jest//jest:repositories.bzl", "LATEST_VERSION", "jest_repositories") + +jest_repositories( + name = "jest", + jest_version = LATEST_VERSION, +) + +load("@rules_nodejs//nodejs:repositories.bzl", "DEFAULT_NODE_VERSION", "nodejs_register_toolchains") + +nodejs_register_toolchains( + name = "nodejs", + node_version = DEFAULT_NODE_VERSION, +) + +load("@aspect_rules_js//npm:npm_import.bzl", "npm_translate_lock") + +npm_translate_lock( + name = "npm", + pnpm_lock = "//:pnpm-lock.yaml", + verify_node_modules_ignored = "//:.bazelignore", +) + +load("@npm//:repositories.bzl", "npm_repositories") + +npm_repositories() diff --git a/js_build_file_generation/apps/triad/BUILD.bazel b/js_build_file_generation/apps/triad/BUILD.bazel new file mode 100644 index 00000000..5c81d0cc --- /dev/null +++ b/js_build_file_generation/apps/triad/BUILD.bazel @@ -0,0 +1,41 @@ +load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_library") +load("@aspect_rules_ts//ts:defs.bzl", "ts_project") +load("@npm//:defs.bzl", "npm_link_all_packages") + +# 💁 Creates the npm package targets in the package to depend on. Together these targets constitute +# the "node_modules" folder in the output tree. +npm_link_all_packages() + +ts_project( + name = "triad_ts", + srcs = [ + "main.ts", + ], + declaration = True, + tsconfig = "//:tsconfig", + deps = [ + "//apps/triad/pivot", + "//apps/triad/vibe", + ], +) + +js_library( + name = "triad_lib", + srcs = [ + "package.json", + ":triad_ts", + ], +) + +# 💁 A binary target to run the built application in this package. +# +# 💡 DESIGN: How does the BUILD file generator determine what package should have a js_binary +# target? golang knows because the package name is "main" and the entry point is a "main" function. +# No such convention in js. +js_binary( + name = "triad", + data = [ + ":triad_lib", + ], + entry_point = "main.js", +) diff --git a/js_build_file_generation/apps/triad/main.ts b/js_build_file_generation/apps/triad/main.ts new file mode 100644 index 00000000..1bd95b86 --- /dev/null +++ b/js_build_file_generation/apps/triad/main.ts @@ -0,0 +1,7 @@ +import { name as vibeName, info as vibeInfo } from './vibe'; +import { name as pivotName } from './pivot'; + +console.log('-Triad-'); +console.log(vibeName()); +console.log(vibeInfo()); +console.log(pivotName()); diff --git a/js_build_file_generation/apps/triad/package.json b/js_build_file_generation/apps/triad/package.json new file mode 100644 index 00000000..420a6f23 --- /dev/null +++ b/js_build_file_generation/apps/triad/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "chalk": "5.0.1", + "@example/iris": "workspace:*" + } +} diff --git a/js_build_file_generation/apps/triad/pivot/BUILD.bazel b/js_build_file_generation/apps/triad/pivot/BUILD.bazel new file mode 100644 index 00000000..9b62a694 --- /dev/null +++ b/js_build_file_generation/apps/triad/pivot/BUILD.bazel @@ -0,0 +1,10 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") + +js_library( + name = "pivot", + srcs = [ + "index.d.ts", + "index.js", + ], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/apps/triad/pivot/index.d.ts b/js_build_file_generation/apps/triad/pivot/index.d.ts new file mode 100755 index 00000000..8d0944a0 --- /dev/null +++ b/js_build_file_generation/apps/triad/pivot/index.d.ts @@ -0,0 +1 @@ +export declare function name(): string; diff --git a/js_build_file_generation/apps/triad/pivot/index.js b/js_build_file_generation/apps/triad/pivot/index.js new file mode 100644 index 00000000..3dd3cb61 --- /dev/null +++ b/js_build_file_generation/apps/triad/pivot/index.js @@ -0,0 +1,5 @@ +module.exports = { + name: function () { + return 'pivot'; + }, +}; diff --git a/js_build_file_generation/apps/triad/vibe/BUILD.bazel b/js_build_file_generation/apps/triad/vibe/BUILD.bazel new file mode 100644 index 00000000..289434b7 --- /dev/null +++ b/js_build_file_generation/apps/triad/vibe/BUILD.bazel @@ -0,0 +1,23 @@ +load("@aspect_rules_ts//ts:defs.bzl", "ts_project") +load("@aspect_rules_js//js:defs.bzl", "js_library") + +ts_project( + name = "vibe_ts", + srcs = [ + "index.ts", + ], + declaration = True, + tsconfig = "//:tsconfig", + deps = [ + "//apps/triad:node_modules/@example/iris", + "//libs/rune/asap", + ], +) + +js_library( + name = "vibe", + srcs = [ + ":vibe_ts", + ], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/apps/triad/vibe/index.ts b/js_build_file_generation/apps/triad/vibe/index.ts new file mode 100644 index 00000000..d944e66a --- /dev/null +++ b/js_build_file_generation/apps/triad/vibe/index.ts @@ -0,0 +1,10 @@ +import { pitchName } from '@example/iris'; +import { name as asapName } from '../../../libs/rune/asap'; + +export function name(): string { + return 'vibe'; +} + +export function info(): string[] { + return [pitchName(), asapName()]; +} diff --git a/js_build_file_generation/jest.config.js b/js_build_file_generation/jest.config.js new file mode 100644 index 00000000..f053ebf7 --- /dev/null +++ b/js_build_file_generation/jest.config.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/js_build_file_generation/libs/rune/BUILD.bazel b/js_build_file_generation/libs/rune/BUILD.bazel new file mode 100644 index 00000000..3cdfdc46 --- /dev/null +++ b/js_build_file_generation/libs/rune/BUILD.bazel @@ -0,0 +1,3 @@ +load("@npm//:defs.bzl", "npm_link_all_packages") + +npm_link_all_packages() diff --git a/js_build_file_generation/libs/rune/asap/BUILD.bazel b/js_build_file_generation/libs/rune/asap/BUILD.bazel new file mode 100644 index 00000000..37161d78 --- /dev/null +++ b/js_build_file_generation/libs/rune/asap/BUILD.bazel @@ -0,0 +1,10 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") + +js_library( + name = "asap", + srcs = [ + "index.d.ts", + "index.js", + ], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/libs/rune/asap/index.d.ts b/js_build_file_generation/libs/rune/asap/index.d.ts new file mode 100755 index 00000000..8d0944a0 --- /dev/null +++ b/js_build_file_generation/libs/rune/asap/index.d.ts @@ -0,0 +1 @@ +export declare function name(): string; diff --git a/js_build_file_generation/libs/rune/asap/index.js b/js_build_file_generation/libs/rune/asap/index.js new file mode 100644 index 00000000..a8b9636d --- /dev/null +++ b/js_build_file_generation/libs/rune/asap/index.js @@ -0,0 +1,5 @@ +module.exports = { + name: function () { + return 'asap'; + }, +}; diff --git a/js_build_file_generation/libs/rune/package.json b/js_build_file_generation/libs/rune/package.json new file mode 100644 index 00000000..4c487f26 --- /dev/null +++ b/js_build_file_generation/libs/rune/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "uuid": "9.0.0" + } +} diff --git a/js_build_file_generation/libs/rune/rebus/BUILD.bazel b/js_build_file_generation/libs/rune/rebus/BUILD.bazel new file mode 100644 index 00000000..532e4490 --- /dev/null +++ b/js_build_file_generation/libs/rune/rebus/BUILD.bazel @@ -0,0 +1,70 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_rules_ts//ts:defs.bzl", "ts_project") +load("@jest//jest:defs.bzl", "jest_test") + +# 💁 A TypeScript transpilation and type check target. This target type checks TypesScript files and +# generates JavaScript and declaration files that are to be included in the "library" target for +# this package. +ts_project( + name = "rebus_ts", + srcs = [ + "index.ts", + ], + declaration = True, + tsconfig = "//:tsconfig", +) + +# 💁 A JavaScript "library" target. This target includes .js files from transpilation targets and +# any other files to that make up the JavaScript "library". This typically includes all `.js`, +# `.d.ts` and `.json` files in the package. Additional file types and include/exclude patterns +# should be configurable with Aspect CLI directives. +# +# 💡 DESIGN: do we always stamp out a js_library target even if there are no additional files to +# include besides the outputs of the ts target? My feeling is yes and that is it better for +# consistency and and readability. If additional files are added to the package after the initial +# generation then a new does target does _not_ need to stamped out. +js_library( + name = "rebus", + srcs = [ + ":rebus_ts", + ], + visibility = ["//visibility:public"], +) + +# 💁 A TypeScript transpilation and type check target for *.spec.ts and *.test.ts files. This target +# type checks TypesScript files and generates JavaScript and declaration files that are to be +# included in the test "library" target for this package. +ts_project( + name = "rebus_test_ts", + srcs = [ + "index.spec.ts", + ], + declaration = True, + tsconfig = "//:tsconfig", + deps = [ + ":rebus", + "//:node_modules/@types/jest", + "//:node_modules/@types/node", + ], +) + +# 💁 A JavaScript test "library" target. This target includes .js spec & test files from +# transpilation targets and any other files to that make up the JavaScript test "library". +js_library( + name = "rebus_test_lib", + srcs = [ + ":rebus", + ":rebus_test_ts", + ], +) + +# 💁 A test target to test all spec & test files in this package +# +# 💡 DESIGN: The BUILD file generator should default to jest since it is simple and robust but +# should be configurable to use a different test target type provided it has similar semantics +# of runfiles being provided via data. +jest_test( + name = "rebus_test", + config = "//:jest_config", + data = [":rebus_test_lib"], +) diff --git a/js_build_file_generation/libs/rune/rebus/index.spec.ts b/js_build_file_generation/libs/rune/rebus/index.spec.ts new file mode 100644 index 00000000..7a78e33d --- /dev/null +++ b/js_build_file_generation/libs/rune/rebus/index.spec.ts @@ -0,0 +1,5 @@ +import { name } from './index'; + +test('rebus', () => { + expect(name()).toBe('rebus'); +}); diff --git a/js_build_file_generation/libs/rune/rebus/index.ts b/js_build_file_generation/libs/rune/rebus/index.ts new file mode 100644 index 00000000..4cc19cd6 --- /dev/null +++ b/js_build_file_generation/libs/rune/rebus/index.ts @@ -0,0 +1,3 @@ +export function name(): string { + return 'rebus'; +} diff --git a/js_build_file_generation/package.json b/js_build_file_generation/package.json new file mode 100644 index 00000000..4f75737d --- /dev/null +++ b/js_build_file_generation/package.json @@ -0,0 +1,12 @@ +{ + "name": "js_build_file_generation", + "description": "Canonical of BUILD file generation for JavaScript and Typescript", + "dependencies": { + "rxjs": "7.5.6" + }, + "devDependencies": { + "@types/jest": "29.0.3", + "@types/node": "16.x.x", + "typescript": "4.8.3" + } +} diff --git a/js_build_file_generation/packages/iris/BUILD.bazel b/js_build_file_generation/packages/iris/BUILD.bazel new file mode 100644 index 00000000..e9e86383 --- /dev/null +++ b/js_build_file_generation/packages/iris/BUILD.bazel @@ -0,0 +1,43 @@ +load("@npm//:defs.bzl", "npm_link_all_packages") +load("@aspect_rules_ts//ts:defs.bzl", "ts_project") +load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_rules_js//npm:defs.bzl", "npm_package") + +npm_link_all_packages() + +ts_project( + name = "iris_ts", + srcs = [ + "index.ts", + ], + declaration = True, + tsconfig = "//:tsconfig", + deps = [ + "//packages/iris/abra", + "//packages/iris/pitch", + ], +) + +js_library( + name = "iris_lib", + srcs = [ + "package.json", + ":iris_ts", + ], +) + +# 💁 A npm "package" target. This target creates a directory that is linkable with pnpm workspaces +# +# 🏃 COMING SOON: In the future, this will also create a runnable `.publish` target to publish the +# package to an npm registry. +# +# 💡 DESIGN: We won't need an npm_package for every "importer" in the pnpm workspace. The BUILD file +# generator will need to check the lock file to see which importers are also depended on as "links" +# by other importers/packages. +npm_package( + name = "iris", + srcs = [ + ":iris_lib", + ], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/packages/iris/abra/BUILD.bazel b/js_build_file_generation/packages/iris/abra/BUILD.bazel new file mode 100644 index 00000000..39c54243 --- /dev/null +++ b/js_build_file_generation/packages/iris/abra/BUILD.bazel @@ -0,0 +1,10 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") + +js_library( + name = "abra", + srcs = [ + "index.d.ts", + "index.js", + ], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/packages/iris/abra/index.d.ts b/js_build_file_generation/packages/iris/abra/index.d.ts new file mode 100755 index 00000000..8d0944a0 --- /dev/null +++ b/js_build_file_generation/packages/iris/abra/index.d.ts @@ -0,0 +1 @@ +export declare function name(): string; diff --git a/js_build_file_generation/packages/iris/abra/index.js b/js_build_file_generation/packages/iris/abra/index.js new file mode 100644 index 00000000..5fece5de --- /dev/null +++ b/js_build_file_generation/packages/iris/abra/index.js @@ -0,0 +1,5 @@ +module.exports = { + name: function () { + return 'abra'; + }, +}; diff --git a/js_build_file_generation/packages/iris/index.ts b/js_build_file_generation/packages/iris/index.ts new file mode 100644 index 00000000..e3e8da44 --- /dev/null +++ b/js_build_file_generation/packages/iris/index.ts @@ -0,0 +1,2 @@ +export { name as abraName } from './abra'; +export { name as pitchName } from './pitch'; diff --git a/js_build_file_generation/packages/iris/package.json b/js_build_file_generation/packages/iris/package.json new file mode 100644 index 00000000..5dc57a1d --- /dev/null +++ b/js_build_file_generation/packages/iris/package.json @@ -0,0 +1,6 @@ +{ + "name": "@example/iris", + "dependencies": { + "acorn": "8.8.0" + } +} diff --git a/js_build_file_generation/packages/iris/pitch/BUILD.bazel b/js_build_file_generation/packages/iris/pitch/BUILD.bazel new file mode 100644 index 00000000..37fd70a5 --- /dev/null +++ b/js_build_file_generation/packages/iris/pitch/BUILD.bazel @@ -0,0 +1,19 @@ +load("@aspect_rules_js//js:defs.bzl", "js_library") +load("@aspect_rules_ts//ts:defs.bzl", "ts_project") + +ts_project( + name = "pitch_ts", + srcs = [ + "index.ts", + ], + declaration = True, + tsconfig = "//:tsconfig", +) + +js_library( + name = "pitch", + srcs = [ + ":pitch_ts", + ], + visibility = ["//visibility:public"], +) diff --git a/js_build_file_generation/packages/iris/pitch/index.ts b/js_build_file_generation/packages/iris/pitch/index.ts new file mode 100644 index 00000000..41d28b5b --- /dev/null +++ b/js_build_file_generation/packages/iris/pitch/index.ts @@ -0,0 +1,3 @@ +export function name(): string { + return 'pitch'; +} diff --git a/js_build_file_generation/pnpm-lock.yaml b/js_build_file_generation/pnpm-lock.yaml new file mode 100644 index 00000000..ad3be84c --- /dev/null +++ b/js_build_file_generation/pnpm-lock.yaml @@ -0,0 +1,397 @@ +lockfileVersion: 5.4 + +importers: + + .: + specifiers: + '@types/jest': 29.0.3 + '@types/node': 16.x.x + rxjs: 7.5.6 + typescript: 4.8.3 + dependencies: + rxjs: 7.5.6 + devDependencies: + '@types/jest': 29.0.3 + '@types/node': 16.11.59 + typescript: 4.8.3 + + apps/triad: + specifiers: + '@example/iris': workspace:* + chalk: 5.0.1 + dependencies: + '@example/iris': link:../../packages/iris + chalk: 5.0.1 + + libs/rune: + specifiers: + uuid: 9.0.0 + dependencies: + uuid: 9.0.0 + + packages/iris: + specifiers: + acorn: 8.8.0 + dependencies: + acorn: 8.8.0 + +packages: + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@jest/expect-utils/29.0.3: + resolution: {integrity: sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.0.0 + dev: true + + /@jest/schemas/29.0.0: + resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.24.42 + dev: true + + /@jest/types/29.0.3: + resolution: {integrity: sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.11.59 + '@types/yargs': 17.0.12 + chalk: 4.1.2 + dev: true + + /@sinclair/typebox/0.24.42: + resolution: {integrity: sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw==} + dev: true + + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports/3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest/29.0.3: + resolution: {integrity: sha512-F6ukyCTwbfsEX5F2YmVYmM5TcTHy1q9P5rWlRbrk56KyMh3v9xRGUO3aa8+SkvMi0SHXtASJv1283enXimC0Og==} + dependencies: + expect: 29.0.3 + pretty-format: 29.0.3 + dev: true + + /@types/node/16.11.59: + resolution: {integrity: sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==} + dev: true + + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs/17.0.12: + resolution: {integrity: sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /ci-info/3.4.0: + resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /diff-sequences/29.0.0: + resolution: {integrity: sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /expect/29.0.3: + resolution: {integrity: sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.0.3 + jest-get-type: 29.0.0 + jest-matcher-utils: 29.0.3 + jest-message-util: 29.0.3 + jest-util: 29.0.3 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /jest-diff/29.0.3: + resolution: {integrity: sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.0.0 + jest-get-type: 29.0.0 + pretty-format: 29.0.3 + dev: true + + /jest-get-type/29.0.0: + resolution: {integrity: sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-matcher-utils/29.0.3: + resolution: {integrity: sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.0.3 + jest-get-type: 29.0.0 + pretty-format: 29.0.3 + dev: true + + /jest-message-util/29.0.3: + resolution: {integrity: sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.0.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.0.3 + slash: 3.0.0 + stack-utils: 2.0.5 + dev: true + + /jest-util/29.0.3: + resolution: {integrity: sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.0.3 + '@types/node': 16.11.59 + chalk: 4.1.2 + ci-info: 3.4.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pretty-format/29.0.3: + resolution: {integrity: sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /rxjs/7.5.6: + resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} + dependencies: + tslib: 2.4.0 + dev: false + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /stack-utils/2.0.5: + resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + + /typescript/4.8.3: + resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /uuid/9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + dev: false diff --git a/js_build_file_generation/pnpm-workspace.yaml b/js_build_file_generation/pnpm-workspace.yaml new file mode 100644 index 00000000..6499a2ca --- /dev/null +++ b/js_build_file_generation/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - 'apps/*' + - 'libs/*' + - 'packages/*' diff --git a/js_build_file_generation/tsconfig.json b/js_build_file_generation/tsconfig.json new file mode 100644 index 00000000..6e54807d --- /dev/null +++ b/js_build_file_generation/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true + } +}