build: migrate adev shared-docs package to use ts_project (#61217)

Migrate the build rules for shared docs to use ts_project

PR Close #61217
This commit is contained in:
Joey Perrott
2025-05-06 20:59:30 +00:00
parent 6cd2df00ca
commit 84b66f3b04
216 changed files with 795 additions and 640 deletions
@@ -2,7 +2,7 @@
# Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml").
# This file should be checked into version control along with the pnpm-lock.yaml file.
.npmrc=-203833057
package.json=-2010611265
pnpm-lock.yaml=1052846975
package.json=281460280
pnpm-lock.yaml=2012155455
pnpm-workspace.yaml=1711114604
yarn.lock=1217123358
yarn.lock=988990941
+3 -3
View File
@@ -7,8 +7,8 @@ export const format: FormatConfig = {
'prettier': {
'matchers': [
'**/*.{yaml,yml}',
'**/*.{js,ts}',
'devtools/**/*.{js,ts,html,scss}',
'**/*.{js,ts,mjs,mts,cjs,cts}',
'devtools/**/*.{js,ts,mjs,mts,cjs,cts,html,scss}',
// Do not format d.ts files as they are generated
'!**/*.d.ts',
@@ -22,7 +22,7 @@ export const format: FormatConfig = {
'!packages/common/locales/closure-locale.ts',
'!packages/common/src/i18n/currencies.ts',
// Test cases contain non valid code.
'!packages/compiler-cli/test/compliance/test_cases/**/*.{js,ts}',
'!packages/compiler-cli/test/compliance/test_cases/**/*.{js,ts,mjs,mts,cjs,cts}',
// Ignore generated javascript file(s)
'!.github/actions/deploy-docs-site/main.js',
+11
View File
@@ -142,6 +142,17 @@ http_archive(
url = "https://github.com/aspect-build/rules_rollup/releases/download/v2.0.0/rules_rollup-v2.0.0.tar.gz",
)
http_archive(
name = "aspect_rules_jasmine",
sha256 = "0d2f9c977842685895020cac721d8cc4f1b37aae15af46128cf619741dc61529",
strip_prefix = "rules_jasmine-2.0.0",
url = "https://github.com/aspect-build/rules_jasmine/releases/download/v2.0.0/rules_jasmine-v2.0.0.tar.gz",
)
load("@aspect_rules_jasmine//jasmine:dependencies.bzl", "rules_jasmine_dependencies")
rules_jasmine_dependencies()
load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies")
aspect_bazel_lib_dependencies()
+21
View File
@@ -1,7 +1,28 @@
load("@aspect_rules_ts//ts:defs.bzl", rules_js_tsconfig = "ts_config")
load("//tools:defaults.bzl", "ng_module", "ng_package")
package(default_visibility = ["//visibility:private"])
rules_js_tsconfig(
name = "tsconfig_build",
src = "tsconfig.json",
visibility = [
"//adev/shared-docs:__subpackages__",
],
)
rules_js_tsconfig(
name = "tsconfig_test",
src = "tsconfig-test.json",
visibility = [
"//adev/shared-docs:__subpackages__",
],
deps = [
":tsconfig_build",
"//:node_modules/@types/jasmine",
],
)
ng_module(
name = "docs",
srcs = [
+7 -6
View File
@@ -1,16 +1,13 @@
load("//tools:defaults.bzl", "ts_library")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
ts_library(
ts_project(
name = "components",
srcs = [
"index.ts",
],
visibility = [
"//adev/shared-docs:__pkg__",
],
deps = [
interop_deps = [
"//adev/shared-docs/components/algolia-icon",
"//adev/shared-docs/components/breadcrumb",
"//adev/shared-docs/components/cookie-popup",
@@ -25,4 +22,8 @@ ts_library(
"//adev/shared-docs/components/top-level-banner",
"//adev/shared-docs/components/viewers",
],
tsconfig = "//adev/shared-docs:tsconfig_build",
visibility = [
"//adev/shared-docs:__pkg__",
],
)
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -30,13 +31,13 @@ sass_binary(
src = "breadcrumb.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":breadcrumb",
"//adev/shared-docs/interfaces",
"//adev/shared-docs/services",
@@ -46,6 +47,7 @@ ts_library(
"//packages/router",
"//packages/router/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -28,19 +29,20 @@ sass_binary(
src = "cookie-popup.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":cookie-popup",
"//adev/shared-docs/providers",
"//adev/shared-docs/testing",
"//packages/core",
"//packages/core/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,4 +1,5 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -22,18 +23,21 @@ ng_module(
],
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":copy-source-code-button",
"//packages/core",
"//packages/core/testing",
"//packages/platform-browser",
"@npm//@angular/cdk",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
deps = [
"//:node_modules/@angular/cdk",
],
)
@@ -1,5 +1,6 @@
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -35,13 +36,13 @@ sass_binary(
],
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":navigation-list",
"//adev/shared-docs/interfaces",
"//adev/shared-docs/services",
@@ -51,6 +52,7 @@ ts_library(
"//packages/router",
"//packages/router/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -34,13 +35,13 @@ sass_binary(
src = "search-dialog.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":search-dialog",
"//adev/shared-docs/components/algolia-icon",
"//adev/shared-docs/interfaces",
@@ -53,6 +54,7 @@ ts_library(
"//packages/router",
"//packages/router/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -27,17 +28,18 @@ sass_binary(
src = "select.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":select",
"//packages/core",
"//packages/core/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -27,17 +28,18 @@ sass_binary(
src = "slide-toggle.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":slide-toggle",
"//packages/core",
"//packages/core/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -31,13 +32,13 @@ sass_binary(
src = "table-of-contents.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":table-of-contents",
"//adev/shared-docs/interfaces",
"//adev/shared-docs/providers",
@@ -47,6 +48,7 @@ ts_library(
"//packages/router",
"//packages/router/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -29,17 +30,18 @@ sass_binary(
src = "text-field.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":text-field",
"//packages/core",
"//packages/core/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -29,18 +30,19 @@ sass_binary(
src = "top-level-banner.component.scss",
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":top-level-banner",
"//adev/shared-docs/providers",
"//packages/core",
"//packages/core/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("@io_bazel_rules_sass//:defs.bzl", "sass_binary")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -45,13 +46,13 @@ sass_binary(
],
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["**/*.spec.ts"],
),
deps = [
interop_deps = [
":viewers",
"//adev/shared-docs/components/breadcrumb",
"//adev/shared-docs/components/copy-source-code-button",
@@ -66,8 +67,11 @@ ts_library(
"//packages/platform-browser/animations",
"//packages/router",
"//packages/router/testing",
"@npm//@angular/cdk",
"@npm//@angular/material",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
deps = [
"//:node_modules/@angular/cdk",
"//:node_modules/@angular/material",
],
)
+7 -6
View File
@@ -1,18 +1,19 @@
load("//tools:defaults.bzl", "ts_library")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
ts_library(
ts_project(
name = "directives",
srcs = [
"index.ts",
],
visibility = [
"//adev/shared-docs:__subpackages__",
],
deps = [
interop_deps = [
"//adev/shared-docs/directives/click-outside",
"//adev/shared-docs/directives/external-link",
"//adev/shared-docs/directives/search-item",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
visibility = [
"//adev/shared-docs:__subpackages__",
],
)
@@ -1,4 +1,5 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -16,13 +17,13 @@ ng_module(
],
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":click-outside",
"//packages/core",
"//packages/core/testing",
@@ -30,6 +31,7 @@ ts_library(
"//packages/router",
"//packages/router/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
@@ -1,4 +1,5 @@
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module", "ts_library")
load("//tools:defaults.bzl", "karma_web_test_suite", "ng_module")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
@@ -19,13 +20,13 @@ ng_module(
],
)
ts_library(
ts_project(
name = "test_lib",
testonly = True,
srcs = glob(
["*.spec.ts"],
),
deps = [
interop_deps = [
":external-link",
"//adev/shared-docs/providers",
"//packages/core",
@@ -34,6 +35,7 @@ ts_library(
"//packages/router",
"//packages/router/testing",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
)
karma_web_test_suite(
+12 -7
View File
@@ -1,19 +1,20 @@
load("//tools:defaults.bzl", "ts_library")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:private"])
ts_library(
ts_project(
name = "interfaces",
srcs = [
"index.ts",
],
tsconfig = "//adev/shared-docs:tsconfig_build",
visibility = ["//adev/shared-docs:__subpackages__"],
deps = [
":lib",
":lib_rjs",
],
)
ts_library(
ts_project(
name = "lib",
srcs = glob(
[
@@ -24,9 +25,13 @@ ts_library(
"**/*.spec.ts",
],
),
deps = [
interop_deps = [
"//packages/core",
"@npm//@types/node",
"@npm//@webcontainer/api",
"//packages/router",
],
tsconfig = "//adev/shared-docs:tsconfig_build",
deps = [
"//:node_modules/@types/node",
"//:node_modules/@webcontainer/api",
],
)
+8 -8
View File
@@ -12,7 +12,7 @@ esbuild_esm_bundle(
define = {
"HANDLE_MERMAID": "true",
},
entry_point = "//adev/shared-docs/pipeline/guides:index.ts",
entry_point = "//adev/shared-docs/pipeline/guides:index.mts",
# JSDOM should not be bundled because it has workers and dynamic imports.
# playwright-core cannot be bundled because of its cjs usage.
external = [
@@ -33,7 +33,7 @@ esbuild_esm_bundle(
define = {
"HANDLE_MERMAID": "false",
},
entry_point = "//adev/shared-docs/pipeline/guides:index.ts",
entry_point = "//adev/shared-docs/pipeline/guides:index.mts",
# JSDOM should not be bundled because it has workers and dynamic imports.
external = [
"jsdom",
@@ -49,7 +49,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "stackblitz-bundle",
entry_point = "//adev/shared-docs/pipeline/examples/stackblitz:index.ts",
entry_point = "//adev/shared-docs/pipeline/examples/stackblitz:index.mts",
# JSDOM should not be bundled because it has workers and dynamic imports.
external = ["jsdom"],
output = "stackblitz.mjs",
@@ -63,7 +63,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "previews-bundle",
entry_point = "//adev/shared-docs/pipeline/examples/previews:index.ts",
entry_point = "//adev/shared-docs/pipeline/examples/previews:index.mts",
external = [
"typescript",
],
@@ -79,7 +79,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "zip-bundle",
entry_point = "//adev/shared-docs/pipeline/examples/zip:index.ts",
entry_point = "//adev/shared-docs/pipeline/examples/zip:index.mts",
output = "zip.mjs",
platform = "node",
target = "es2022",
@@ -91,7 +91,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "playground-bundle",
entry_point = "//adev/shared-docs/pipeline/tutorials:playground.ts",
entry_point = "//adev/shared-docs/pipeline/tutorials:playground.mts",
output = "playground.mjs",
platform = "node",
target = "es2022",
@@ -103,7 +103,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "tutorial-bundle",
entry_point = "//adev/shared-docs/pipeline/tutorials:tutorial.ts",
entry_point = "//adev/shared-docs/pipeline/tutorials:tutorial.mts",
output = "tutorial.mjs",
platform = "node",
target = "es2022",
@@ -115,7 +115,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "navigation-bundle",
entry_point = "//adev/shared-docs/pipeline/navigation:index.ts",
entry_point = "//adev/shared-docs/pipeline/navigation:index.mts",
output = "navigation.mjs",
platform = "node",
target = "es2022",
@@ -1,12 +1,12 @@
load("@angular//tools/esm-interop:index.bzl", "nodejs_binary")
load("@npm//@angular/build-tooling/bazel:defaults.bzl", "ts_library")
load("@npm//@angular/build-tooling/bazel/esbuild:index.bzl", "esbuild_esm_bundle")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//adev/shared-docs/pipeline/api-gen:__subpackages__"])
esbuild_esm_bundle(
name = "bin",
entry_point = ":index.ts",
entry_point = ":index.mts",
external = [
"@angular/compiler-cli",
"typescript",
@@ -19,22 +19,23 @@ esbuild_esm_bundle(
],
)
ts_library(
ts_project(
name = "extract_api_to_json_lib",
srcs = glob(
["**/*.ts"],
["**/*.mts"],
exclude = [
"**/*.spec.ts",
"**/*.spec.mts",
],
),
devmode_module = "commonjs",
tsconfig = "//adev:tsconfig.json",
deps = [
interop_deps = [
"@angular//packages/compiler",
"@angular//packages/compiler-cli",
"@npm//@bazel/runfiles",
"@npm//@types/node",
"@npm//typescript",
],
tsconfig = "//adev/shared-docs:tsconfig_build",
deps = [
"//:node_modules/@bazel/runfiles",
"//:node_modules/@types/node",
"//:node_modules/typescript",
],
)
@@ -19,7 +19,7 @@ import {
NgtscProgram,
} from '@angular/compiler-cli';
import ts from 'typescript';
import {EXAMPLES_PATH, interpolateCodeExamples} from './interpolate_code_examples';
import {EXAMPLES_PATH, interpolateCodeExamples} from './interpolate_code_examples.mjs';
function main() {
const [paramFilePath] = process.argv.slice(2);
@@ -1,17 +1,18 @@
load("//adev/shared-docs/pipeline/api-gen/extraction:extract_api_to_json.bzl", "extract_api_to_json")
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
load("//tools:defaults.bzl", "jasmine_node_test")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//adev/shared-docs/pipeline/api-gen:__subpackages__"])
extract_api_to_json(
name = "test",
srcs = [
"fake-source.ts",
"fake-source.mts",
"//adev/shared-docs/pipeline/api-gen/extraction/test/dummy-entry-point:dummy_package",
],
entry_point = "fake-source.ts",
entry_point = "fake-source.mts",
import_map = {
"//adev/shared-docs/pipeline/api-gen/extraction/test/dummy-entry-point:index.ts": "@angular/dummy-package",
"//adev/shared-docs/pipeline/api-gen/extraction/test/dummy-entry-point:index.mts": "@angular/dummy-package",
},
module_name = "@angular/core",
output_name = "api.json",
@@ -22,15 +23,15 @@ extract_api_to_json(
extract_api_to_json(
name = "test_with_extra_entries",
srcs = [
"fake-source.ts",
"fake-source.mts",
"//adev/shared-docs/pipeline/api-gen/extraction/test/dummy-entry-point:dummy_package",
],
entry_point = "fake-source.ts",
entry_point = "fake-source.mts",
extra_entries = [
"extra.json",
],
import_map = {
"//adev/shared-docs/pipeline/api-gen/extraction/test/dummy-entry-point:index.ts": "@angular/dummy-package",
"//adev/shared-docs/pipeline/api-gen/extraction/test/dummy-entry-point:index.mts": "@angular/dummy-package",
},
module_name = "@angular/core",
output_name = "extra_api.json",
@@ -40,20 +41,24 @@ extract_api_to_json(
filegroup(
name = "source_files",
srcs = ["fake-source.ts"],
srcs = ["fake-source.mts"],
)
ts_library(
ts_project(
name = "unit_test_lib",
testonly = True,
srcs =
glob(["*.spec.ts"]) + [
"fake-examples.ts",
glob(["*.spec.mts"]) + [
"fake-examples.mts",
],
deps = [
"//adev/shared-docs/pipeline/api-gen/extraction:extract_api_to_json_lib",
interop_deps = [
"@angular//packages/compiler-cli",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
deps = [
"//:node_modules/@types/node",
"//adev/shared-docs/pipeline/api-gen/extraction:extract_api_to_json_lib_rjs",
],
)
jasmine_node_test(
@@ -2,5 +2,5 @@ package(default_visibility = ["//adev/shared-docs/pipeline/api-gen:__subpackages
filegroup(
name = "dummy_package",
srcs = ["index.ts"],
srcs = ["index.mts"],
)
@@ -7,9 +7,9 @@
*/
import fs from 'fs';
import {interpolateCodeExamples} from '../interpolate_code_examples';
import {interpolateCodeExamples} from '../interpolate_code_examples.mjs';
import {DocEntry} from '@angular/compiler-cli';
import {mockReadFileSync} from './fake-examples';
import {mockReadFileSync} from './fake-examples.mjs';
const tsMdBlock = (code: string) => '```angular-ts\n' + code + '\n```';
const htmlMdBlock = (code: string) => '```angular-html\n' + code + '\n```';
@@ -1,12 +1,12 @@
load("@npm//@angular/build-tooling/bazel:defaults.bzl", "ts_library")
load("@angular//tools/esm-interop:index.bzl", "nodejs_binary")
load("@npm//@angular/build-tooling/bazel/esbuild:index.bzl", "esbuild_esm_bundle")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//adev/shared-docs/pipeline/api-gen:__subpackages__"])
esbuild_esm_bundle(
name = "bin",
entry_point = ":index.ts",
entry_point = ":index.mts",
external = [
"@angular/compiler-cli",
],
@@ -19,15 +19,16 @@ esbuild_esm_bundle(
],
)
ts_library(
ts_project(
name = "generate_api_manifest_lib",
srcs = glob(["**/*.ts"]),
devmode_module = "commonjs",
tsconfig = "//adev:tsconfig.json",
deps = [
srcs = glob(["**/*.mts"]),
interop_deps = [
"@angular//packages/compiler-cli",
"@npm//@bazel/runfiles",
"@npm//@types/node",
],
tsconfig = "//adev/shared-docs:tsconfig_build",
deps = [
"//:node_modules/@bazel/runfiles",
"//:node_modules/@types/node",
],
)
@@ -7,7 +7,7 @@
*/
import {readFileSync, writeFileSync} from 'fs';
import {generateManifest} from './generate_manifest';
import {generateManifest} from './generate_manifest.mjs';
import type {EntryCollection} from '@angular/compiler-cli';
function main() {
@@ -1,6 +1,7 @@
load("//adev/shared-docs/pipeline/api-gen/extraction:extract_api_to_json.bzl", "extract_api_to_json")
load("//adev/shared-docs/pipeline/api-gen/manifest:generate_api_manifest.bzl", "generate_api_manifest")
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
load("//tools:defaults.bzl", "jasmine_node_test")
load("//tools:defaults2.bzl", "ts_project")
generate_api_manifest(
name = "test",
@@ -12,24 +13,27 @@ generate_api_manifest(
extract_api_to_json(
name = "another_extraction",
srcs = ["another-fake-source.ts"],
entry_point = "another-fake-source.ts",
srcs = ["another-fake-source.mts"],
entry_point = "another-fake-source.mts",
module_name = "@angular/router",
output_name = "api.json",
private_modules = [""],
repo = "angular/angular",
)
ts_library(
ts_project(
name = "unit_test_lib",
testonly = True,
srcs = [
"manifest.spec.ts",
"manifest.spec.mts",
],
deps = [
"//adev/shared-docs/pipeline/api-gen/manifest:generate_api_manifest_lib",
interop_deps = [
"//packages/compiler-cli",
],
tsconfig = "//adev/shared-docs:tsconfig_test",
deps = [
"//adev/shared-docs/pipeline/api-gen/manifest:generate_api_manifest_lib_rjs",
],
)
jasmine_node_test(
@@ -8,7 +8,7 @@
// @ts-ignore This compiles fine, but Webstorm doesn't like the ESM import in a CJS context.
import {DocEntry, EntryType, FunctionEntry, JsDocTagEntry} from '@angular/compiler-cli';
import {generateManifest, Manifest} from '../generate_manifest';
import {generateManifest, Manifest} from '../generate_manifest.mjs';
describe('api manifest generation', () => {
it('should generate a manifest from multiple collections', () => {
@@ -1,12 +1,12 @@
load("@npm//@angular/build-tooling/bazel:defaults.bzl", "ts_library")
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
load("@npm//@angular/build-tooling/bazel/esbuild:index.bzl", "esbuild_esm_bundle")
load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//adev/shared-docs/pipeline/api-gen:__subpackages__"])
esbuild_esm_bundle(
name = "bin",
entry_point = ":index.ts",
entry_point = ":index.mts",
output = "bin.mjs",
platform = "node",
target = "es2022",
@@ -15,37 +15,37 @@ esbuild_esm_bundle(
],
)
ts_library(
ts_project(
name = "render_api_to_html_lib",
srcs = glob(
[
"**/*.ts",
"**/*.mts",
"**/*.tsx",
"shiki.d.ts",
],
exclude = [
"entities.ts",
"entities.mts",
],
),
devmode_module = "commonjs",
tsconfig = "//adev:tsconfig.json",
tsconfig = "//adev/shared-docs:tsconfig_build",
deps = [
":entities",
"@npm//@bazel/runfiles",
"@npm//@types/node",
"@npm//html-entities",
"@npm//marked",
"@npm//preact",
"@npm//preact-render-to-string",
"@npm//shiki",
":entities_rjs",
"//:node_modules/@bazel/runfiles",
"//:node_modules/@types/node",
"//:node_modules/html-entities",
"//:node_modules/marked",
"//:node_modules/preact",
"//:node_modules/preact-render-to-string",
"//:node_modules/shiki",
],
)
ts_library(
ts_project(
name = "entities",
srcs = [
"entities.ts",
"entities.mts",
],
tsconfig = "//adev:tsconfig.json",
tsconfig = "//adev/shared-docs:tsconfig_build",
visibility = [
"//adev/shared-docs/pipeline/api-gen/rendering:__pkg__",
"//docs/pipeline/guides:__pkg__",
@@ -22,9 +22,9 @@ import {
MethodEntry,
PropertyEntry,
TypeAliasEntry,
} from '../entities';
} from '../entities.mjs';
import {CliCommand} from '../cli-entities';
import {CliCommand} from '../cli-entities.mjs';
import {
ClassEntryRenderable,
@@ -38,8 +38,8 @@ import {
MemberEntryRenderable,
MethodEntryRenderable,
TypeAliasEntryRenderable,
} from './renderables';
import {HasJsDocTags} from './traits';
} from './renderables.mjs';
import {HasJsDocTags} from './traits.mjs';
/** Gets whether the given entry represents a class */
export function isClassEntry(entry: DocEntryRenderable): entry is ClassEntryRenderable;
@@ -20,11 +20,11 @@ import {
ParameterEntry,
PipeEntry,
TypeAliasEntry,
} from '../entities';
} from '../entities.mjs';
import {CliCommand, CliOption} from '../cli-entities';
import {CliCommand, CliOption} from '../cli-entities.mjs';
import {HasRenderableToc} from './traits';
import {HasRenderableToc} from './traits.mjs';
/** JsDoc tag info augmented with transformed content for rendering. */
export interface JsDocTagRenderable extends JsDocTagEntry {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {JsDocTagEntry, MemberEntry, ParameterEntry} from '../entities';
import {JsDocTagEntry, MemberEntry, ParameterEntry} from '../entities.mjs';
import {
CodeLineRenderable,
@@ -14,7 +14,7 @@ import {
LinkEntryRenderable,
MemberEntryRenderable,
ParameterEntryRenderable,
} from './renderables';
} from './renderables.mjs';
/** A doc entry that has jsdoc tags. */
export interface HasJsDocTags {
@@ -8,14 +8,14 @@
import {existsSync, mkdirSync, readFileSync, writeFileSync} from 'fs';
import path from 'path';
import {CliCommand} from './cli-entities';
import {DocEntry} from './entities';
import {isCliEntry, isHiddenEntry} from './entities/categorization';
import {configureMarkedGlobally} from './marked/configuration';
import {getRenderable} from './processing';
import {renderEntry} from './rendering';
import {initHighlighter} from './shiki/shiki';
import {setCurrentSymbol, setSymbols} from './symbol-context';
import {CliCommand} from './cli-entities.mjs';
import {DocEntry} from './entities.mjs';
import {isCliEntry, isHiddenEntry} from './entities/categorization.mjs';
import {configureMarkedGlobally} from './marked/configuration.mjs';
import {getRenderable} from './processing.mjs';
import {renderEntry} from './rendering.mjs';
import {initHighlighter} from './shiki/shiki.mjs';
import {setCurrentSymbol, setSymbols} from './symbol-context.mjs';
/** The JSON data file format for extracted API reference info. */
interface EntryCollection {
@@ -7,7 +7,7 @@
*/
import {marked} from 'marked';
import {renderer} from './renderer';
import {renderer} from './renderer.mjs';
/** Globally configures marked for rendering JsDoc content to HTML. */
export function configureMarkedGlobally() {
@@ -7,8 +7,8 @@
*/
import {Renderer, Tokens} from 'marked';
import {codeToHtml} from '../shiki/shiki';
import {SECTION_HEADING, SECTION_SUB_HEADING} from '../styling/css-classes';
import {codeToHtml} from '../shiki/shiki.mjs';
import {SECTION_HEADING, SECTION_SUB_HEADING} from '../styling/css-classes.mjs';
/**
* Custom renderer for marked that will be used to transform markdown files to HTML
@@ -6,9 +6,9 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {DocEntry} from './entities';
import {DocEntry} from './entities.mjs';
import {CliCommand} from './cli-entities';
import {CliCommand} from './cli-entities.mjs';
import {
isClassEntry,
isCliEntry,
@@ -19,26 +19,26 @@ import {
isInitializerApiFunctionEntry,
isInterfaceEntry,
isTypeAliasEntry,
} from './entities/categorization';
import {CliCommandRenderable, DocEntryRenderable} from './entities/renderables';
import {getClassRenderable} from './transforms/class-transforms';
import {getCliRenderable} from './transforms/cli-transforms';
import {getConstantRenderable} from './transforms/constant-transforms';
import {getDecoratorRenderable} from './transforms/decorator-transforms';
import {getEnumRenderable} from './transforms/enum-transforms';
import {getFunctionRenderable} from './transforms/function-transforms';
import {getInitializerApiFunctionRenderable} from './transforms/initializer-api-functions-transform';
import {getInterfaceRenderable} from './transforms/interface-transforms';
} from './entities/categorization.mjs';
import {CliCommandRenderable, DocEntryRenderable} from './entities/renderables.mjs';
import {getClassRenderable} from './transforms/class-transforms.mjs';
import {getCliRenderable} from './transforms/cli-transforms.mjs';
import {getConstantRenderable} from './transforms/constant-transforms.mjs';
import {getDecoratorRenderable} from './transforms/decorator-transforms.mjs';
import {getEnumRenderable} from './transforms/enum-transforms.mjs';
import {getFunctionRenderable} from './transforms/function-transforms.mjs';
import {getInitializerApiFunctionRenderable} from './transforms/initializer-api-functions-transform.mjs';
import {getInterfaceRenderable} from './transforms/interface-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './transforms/jsdoc-transforms';
import {addModuleName} from './transforms/module-name';
import {addRepo} from './transforms/repo';
import {getTypeAliasRenderable} from './transforms/type-alias-transforms';
} from './transforms/jsdoc-transforms.mjs';
import {addModuleName} from './transforms/module-name.mjs';
import {addRepo} from './transforms/repo.mjs';
import {getTypeAliasRenderable} from './transforms/type-alias-transforms.mjs';
export function getRenderable(
entry: DocEntry | CliCommand,
@@ -6,12 +6,12 @@
* found in the LICENSE file at https://angular.dev/license
*/
import * as blockC from './region-matchers/block-c';
import * as html from './region-matchers/html';
import * as inlineC from './region-matchers/inline-c';
import * as inlineCOnly from './region-matchers/inline-c-only';
import * as inlineHash from './region-matchers/inline-hash';
import {FileType, removeEslintComments} from './remove-eslint-comments';
import * as blockC from './region-matchers/block-c.mjs';
import * as html from './region-matchers/html.mjs';
import * as inlineC from './region-matchers/inline-c.mjs';
import * as inlineCOnly from './region-matchers/inline-c-only.mjs';
import * as inlineHash from './region-matchers/inline-hash.mjs';
import {FileType, removeEslintComments} from './remove-eslint-comments.mjs';
const WHOLE_FILE_REGION_NAME = '';
const DEFAULT_PLASTER = '. . .';
@@ -18,8 +18,8 @@ import {
isInitializerApiFunctionEntry,
isInterfaceEntry,
isTypeAliasEntry,
} from './entities/categorization';
import {CliCommandRenderable, DocEntryRenderable} from './entities/renderables';
} from './entities/categorization.mjs';
import {CliCommandRenderable, DocEntryRenderable} from './entities/renderables.mjs';
import {ClassReference} from './templates/class-reference';
import {CliCommandReference} from './templates/cli-reference';
import {ConstantReference} from './templates/constant-reference';
@@ -28,7 +28,7 @@ import {EnumReference} from './templates/enum-reference';
import {FunctionReference} from './templates/function-reference';
import {InitializerApiFunction} from './templates/initializer-api-function';
import {TypeAliasReference} from './templates/type-alias-reference';
import {setCurrentSymbol} from './symbol-context';
import {setCurrentSymbol} from './symbol-context.mjs';
/** Given a doc entry, get the transformed version of the entry for rendering. */
export function renderEntry(renderable: DocEntryRenderable | CliCommandRenderable): string {
@@ -7,7 +7,7 @@
*/
import {h} from 'preact';
import {MemberEntryRenderable} from '../entities/renderables';
import {MemberEntryRenderable} from '../entities/renderables.mjs';
import {ClassMember} from './class-member';
export function ClassMemberList(props: {members: MemberEntryRenderable[]}) {
@@ -12,15 +12,15 @@ import {
isGetterEntry,
isPropertyEntry,
isSetterEntry,
} from '../entities/categorization';
import {MemberEntryRenderable, MethodEntryRenderable} from '../entities/renderables';
} from '../entities/categorization.mjs';
import {MemberEntryRenderable, MethodEntryRenderable} from '../entities/renderables.mjs';
import {
REFERENCE_MEMBER_CARD,
REFERENCE_MEMBER_CARD_BODY,
REFERENCE_MEMBER_CARD_HEADER,
REFERENCE_MEMBER_CARD_ITEM,
} from '../styling/css-classes';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
} from '../styling/css-classes.mjs';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms.mjs';
import {ClassMethodInfo} from './class-method-info';
import {CodeSymbol} from './code-symbols';
import {DeprecatedLabel} from './deprecated-label';
@@ -7,13 +7,8 @@
*/
import {Fragment, h} from 'preact';
import {
FunctionEntryRenderable,
FunctionSignatureMetadataRenderable,
MethodEntryRenderable,
ParameterEntryRenderable,
} from '../entities/renderables';
import {PARAM_KEYWORD_CLASS_NAME, REFERENCE_MEMBER_CARD_ITEM} from '../styling/css-classes';
import {FunctionSignatureMetadataRenderable, ParameterEntryRenderable} from '../entities/renderables.mjs';
import {PARAM_KEYWORD_CLASS_NAME, REFERENCE_MEMBER_CARD_ITEM} from '../styling/css-classes.mjs';
import {DeprecatedLabel} from './deprecated-label';
import {Parameter} from './parameter';
import {RawHtml} from './raw-html';
@@ -7,25 +7,25 @@
*/
import {Fragment, h} from 'preact';
import {PipeEntry} from '../entities';
import {PipeEntry} from '../entities.mjs';
import {
ClassEntryRenderable,
DecoratorEntryRenderable,
PipeEntryRenderable,
} from '../entities/renderables';
import {codeToHtml} from '../shiki/shiki';
} from '../entities/renderables.mjs';
import {ClassMemberList} from './class-member-list';
import {HeaderApi} from './header-api';
import {
API_REFERENCE_CONTAINER,
REFERENCE_MEMBERS,
SECTION_CONTAINER,
} from '../styling/css-classes';
import {ClassMemberList} from './class-member-list';
import {HeaderApi} from './header-api';
import {RawHtml} from './raw-html';
import {SectionApi} from './section-api';
} from '../styling/css-classes.mjs';
import {SectionDescription} from './section-description';
import {SectionHeading} from './section-heading';
import {SectionUsageNotes} from './section-usage-notes';
import {SectionApi} from './section-api';
import {SectionHeading} from './section-heading';
import {codeToHtml} from '../shiki/shiki.mjs';
import {RawHtml} from './raw-html';
/** Component to render a class API reference document. */
export function ClassReference(
@@ -7,9 +7,9 @@
*/
import {Fragment, h} from 'preact';
import {CliCardRenderable} from '../entities/renderables';
import {CliCardRenderable} from '../entities/renderables.mjs';
import {DeprecatedLabel} from './deprecated-label';
import {REFERENCE_MEMBER_CARD, REFERENCE_MEMBER_CARD_BODY} from '../styling/css-classes';
import {REFERENCE_MEMBER_CARD, REFERENCE_MEMBER_CARD_BODY} from '../styling/css-classes.mjs';
export function CliCard(props: {card: CliCardRenderable}) {
return (
@@ -7,8 +7,8 @@
*/
import {Fragment, h} from 'preact';
import {CliCommandRenderable} from '../entities/renderables';
import {REFERENCE_MEMBERS} from '../styling/css-classes';
import {CliCommandRenderable} from '../entities/renderables.mjs';
import {REFERENCE_MEMBERS} from '../styling/css-classes.mjs';
import {CliCard} from './cli-card';
import {HeaderCli} from './header-cli';
import {RawHtml} from './raw-html';
@@ -7,7 +7,7 @@
*/
import {h} from 'preact';
import {CodeLineRenderable} from '../entities/renderables';
import {CodeLineRenderable} from '../entities/renderables.mjs';
import {CodeLine} from './code-line';
export function CodeLineGroup(props: {lines: CodeLineRenderable[]}) {
@@ -7,7 +7,7 @@
*/
import {h} from 'preact';
import {CodeLineRenderable} from '../entities/renderables';
import {CodeLineRenderable} from '../entities/renderables.mjs';
export function CodeLine(props: {line: CodeLineRenderable}) {
const line = props.line;
@@ -7,8 +7,8 @@
*/
import {h} from 'preact';
import {getModuleName} from '../symbol-context';
import {getLinkToModule} from '../transforms/url-transforms';
import {getModuleName} from '../symbol-context.mjs';
import {getLinkToModule} from '../transforms/url-transforms.mjs';
const symbolRegex = /([a-zA-Z_$][a-zA-Z_$0-9\.]*)/;
@@ -9,7 +9,7 @@
import {h} from 'preact';
import {renderToString} from 'preact-render-to-string';
import {CodeLineGroup} from './code-line-group';
import {HasRenderableToc} from '../entities/traits';
import {HasRenderableToc} from '../entities/traits.mjs';
export function CodeTableOfContents(props: {entry: HasRenderableToc}) {
const html = `${props.entry.beforeCodeGroups}
@@ -7,12 +7,12 @@
*/
import {h} from 'preact';
import {ConstantEntryRenderable} from '../entities/renderables';
import {ConstantEntryRenderable} from '../entities/renderables.mjs';
import {HeaderApi} from './header-api';
import {SectionDescription} from './section-description';
import {SectionUsageNotes} from './section-usage-notes';
import {SectionApi} from './section-api';
import {API_REFERENCE_CONTAINER} from '../styling/css-classes';
import {API_REFERENCE_CONTAINER} from '../styling/css-classes.mjs';
/** Component to render a constant API reference document. */
export function ConstantReference(entry: ConstantEntryRenderable) {
@@ -7,7 +7,7 @@
*/
import {Fragment, h} from 'preact';
import {PARAM_KEYWORD_CLASS_NAME} from '../styling/css-classes';
import {PARAM_KEYWORD_CLASS_NAME} from '../styling/css-classes.mjs';
export function DeprecatedLabel(props: {
entry: {isDeprecated: boolean} | {deprecationMessage: string | null};
@@ -7,7 +7,7 @@
*/
import {Fragment, h} from 'preact';
import {LinkEntryRenderable} from '../entities/renderables';
import {LinkEntryRenderable} from '../entities/renderables.mjs';
/** Component to render a function or method parameter reference doc fragment. */
export function DocsPillRow(props: {links: LinkEntryRenderable[]}) {
@@ -7,10 +7,10 @@
*/
import {h} from 'preact';
import {DocEntryRenderable} from '../entities/renderables';
import {DocEntryRenderable} from '../entities/renderables.mjs';
import {HeaderApi} from './header-api';
import {SectionDescription} from './section-description';
import {API_REFERENCE_CONTAINER} from '../styling/css-classes';
import {API_REFERENCE_CONTAINER} from '../styling/css-classes.mjs';
/** Component to render a block or element API reference document. */
export function DocsReference(entry: DocEntryRenderable) {
@@ -7,11 +7,11 @@
*/
import {h, Fragment} from 'preact';
import {EnumEntryRenderable, MemberEntryRenderable} from '../entities/renderables';
import {EnumEntryRenderable, MemberEntryRenderable} from '../entities/renderables.mjs';
import {HeaderApi} from './header-api';
import {SectionDescription} from './section-description';
import {SectionApi} from './section-api';
import {API_REFERENCE_CONTAINER, REFERENCE_MEMBERS} from '../styling/css-classes';
import {API_REFERENCE_CONTAINER, REFERENCE_MEMBERS} from '../styling/css-classes.mjs';
import {ClassMember} from './class-member';
/** Component to render a enum API reference document. */
@@ -10,16 +10,16 @@ import {Fragment, h} from 'preact';
import {
FunctionEntryRenderable,
FunctionSignatureMetadataRenderable,
} from '../entities/renderables';
} from '../entities/renderables.mjs';
import {
API_REFERENCE_CONTAINER,
REFERENCE_MEMBERS,
REFERENCE_MEMBER_CARD,
REFERENCE_MEMBER_CARD_BODY,
REFERENCE_MEMBER_CARD_HEADER,
} from '../styling/css-classes';
import {printInitializerFunctionSignatureLine} from '../transforms/code-transforms';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
} from '../styling/css-classes.mjs';
import {printInitializerFunctionSignatureLine} from '../transforms/code-transforms.mjs';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms.mjs';
import {ClassMethodInfo} from './class-method-info';
import {CodeSymbol} from './code-symbols';
import {HeaderApi} from './header-api';
@@ -7,14 +7,14 @@
*/
import {h} from 'preact';
import {EntryType, isDocEntryWithSourceInfo, PipeEntry} from '../entities';
import {DocEntryRenderable, PipeEntryRenderable} from '../entities/renderables';
import {EntryType, isDocEntryWithSourceInfo, PipeEntry} from '../entities.mjs';
import {DocEntryRenderable, PipeEntryRenderable} from '../entities/renderables.mjs';
import {
HEADER_CLASS_NAME,
HEADER_ENTRY_CATEGORY,
HEADER_ENTRY_LABEL,
HEADER_ENTRY_TITLE,
} from '../styling/css-classes';
} from '../styling/css-classes.mjs';
import {DocsPillRow} from './docs-pill-row';
/** Component to render a header of the API page. */
@@ -7,8 +7,8 @@
*/
import {h} from 'preact';
import {CliCommandRenderable} from '../entities/renderables';
import {HEADER_CLASS_NAME, HEADER_ENTRY_CATEGORY, HEADER_ENTRY_LABEL, HEADER_ENTRY_TITLE} from '../styling/css-classes';
import {CliCommandRenderable} from '../entities/renderables.mjs';
import {HEADER_CLASS_NAME, HEADER_ENTRY_CATEGORY, HEADER_ENTRY_LABEL, HEADER_ENTRY_TITLE} from '../styling/css-classes.mjs';
/** Component to render a header of the CLI page. */
export function HeaderCli(props: {command: CliCommandRenderable}) {
@@ -8,7 +8,7 @@
import {h} from 'preact';
import {RawHtml} from './raw-html';
import {codeToHtml} from '../shiki/shiki';
import {codeToHtml} from '../shiki/shiki.mjs';
/** Component to render a header of the CLI page. */
export function HighlightTypeScript(props: {code: string}) {
@@ -7,9 +7,9 @@
*/
import {h, JSX} from 'preact';
import {InitializerApiFunctionRenderable} from '../entities/renderables';
import {API_REFERENCE_CONTAINER, REFERENCE_MEMBERS} from '../styling/css-classes';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms';
import {InitializerApiFunctionRenderable} from '../entities/renderables.mjs';
import {API_REFERENCE_CONTAINER, REFERENCE_MEMBERS} from '../styling/css-classes.mjs';
import {getFunctionMetadataRenderable} from '../transforms/function-transforms.mjs';
import {signatureCard} from './function-reference';
import {HeaderApi} from './header-api';
import {SectionApi} from './section-api';
@@ -7,9 +7,9 @@
*/
import {h} from 'preact';
import {ParameterEntryRenderable} from '../entities/renderables';
import {ParameterEntryRenderable} from '../entities/renderables.mjs';
import {RawHtml} from './raw-html';
import {PARAM_GROUP_CLASS_NAME} from '../styling/css-classes';
import {PARAM_GROUP_CLASS_NAME} from '../styling/css-classes.mjs';
import {CodeSymbol} from './code-symbols';
/** Component to render a function or method parameter reference doc fragment. */
@@ -7,10 +7,10 @@
*/
import {h} from 'preact';
import {DocEntryRenderable} from '../entities/renderables';
import {HasRenderableToc} from '../entities/traits';
import {DocEntryRenderable} from '../entities/renderables.mjs';
import {HasRenderableToc} from '../entities/traits.mjs';
import {CodeTableOfContents} from './code-table-of-contents';
import {SECTION_CONTAINER} from '../styling/css-classes';
import {SECTION_CONTAINER} from '../styling/css-classes.mjs';
import {SectionHeading} from './section-heading';
const API_SECTION_NAME = 'API';
@@ -7,10 +7,10 @@
*/
import {Fragment, h} from 'preact';
import {DocEntryRenderable} from '../entities/renderables';
import {DocEntryRenderable} from '../entities/renderables.mjs';
import {RawHtml} from './raw-html';
import {CodeSymbol} from './code-symbols';
import {SECTION_CONTAINER} from '../styling/css-classes';
import {SECTION_CONTAINER} from '../styling/css-classes.mjs';
import {SectionHeading} from './section-heading';
const DESCRIPTION_SECTION_NAME = 'Description';
@@ -7,8 +7,8 @@
*/
import {h} from 'preact';
import {convertSectionNameToId} from '../transforms/reference-section-id';
import {SECTION_HEADING} from '../styling/css-classes';
import {convertSectionNameToId} from '../transforms/reference-section-id.mjs';
import {SECTION_HEADING} from '../styling/css-classes.mjs';
/** Component to render the API section. */
export function SectionHeading(props: {name: string}) {
@@ -7,9 +7,9 @@
*/
import {Fragment, h} from 'preact';
import {DocEntryRenderable} from '../entities/renderables';
import {DocEntryRenderable} from '../entities/renderables.mjs';
import {RawHtml} from './raw-html';
import {SECTION_CONTAINER} from '../styling/css-classes';
import {SECTION_CONTAINER} from '../styling/css-classes.mjs';
import {SectionHeading} from './section-heading';
const USAGE_NOTES_SECTION_NAME = 'Usage Notes';
@@ -7,12 +7,12 @@
*/
import {h} from 'preact';
import {TypeAliasEntryRenderable} from '../entities/renderables';
import {TypeAliasEntryRenderable} from '../entities/renderables.mjs';
import {HeaderApi} from './header-api';
import {SectionDescription} from './section-description';
import {SectionUsageNotes} from './section-usage-notes';
import {SectionApi} from './section-api';
import {API_REFERENCE_CONTAINER} from '../styling/css-classes';
import {API_REFERENCE_CONTAINER} from '../styling/css-classes.mjs';
/** Component to render a type alias API reference document. */
export function TypeAliasReference(entry: TypeAliasEntryRenderable) {
@@ -1,5 +1,5 @@
load("//adev/shared-docs/pipeline/api-gen/rendering:render_api_to_html.bzl", "render_api_to_html")
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
load("//tools:defaults2.bzl", "jasmine_test", "ts_project")
render_api_to_html(
name = "test",
@@ -9,28 +9,29 @@ render_api_to_html(
],
)
ts_library(
ts_project(
name = "unit_test_lib",
testonly = True,
srcs = glob(
[
"**/*.spec.ts",
"**/*.spec.mts",
],
),
tsconfig = "//adev/shared-docs:tsconfig_test",
deps = [
"//adev/shared-docs/pipeline/api-gen/rendering:render_api_to_html_lib",
"@npm//@bazel/runfiles",
"@npm//@types/jsdom",
"@npm//jsdom",
"//:node_modules/@bazel/runfiles",
"//:node_modules/@types/jsdom",
"//:node_modules/jsdom",
"//adev/shared-docs/pipeline/api-gen/rendering:render_api_to_html_lib_rjs",
],
)
jasmine_node_test(
jasmine_test(
name = "unit_tests",
data = [
"@npm//jsdom",
":unit_test_lib_rjs",
"//:node_modules/jsdom",
] + glob([
"**/*.json",
]),
deps = [":unit_test_lib"],
)
@@ -9,10 +9,10 @@
import {runfiles} from '@bazel/runfiles';
import {readFile} from 'fs/promises';
import {JSDOM} from 'jsdom';
import {configureMarkedGlobally} from '../marked/configuration';
import {getRenderable} from '../processing';
import {renderEntry} from '../rendering';
import {initHighlighter} from '../shiki/shiki';
import {configureMarkedGlobally} from '../marked/configuration.mjs';
import {getRenderable} from '../processing.mjs';
import {renderEntry} from '../rendering.mjs';
import {initHighlighter} from '../shiki/shiki.mjs';
describe('CLI docs to html', () => {
let fragment: DocumentFragment;
@@ -9,11 +9,11 @@
import {runfiles} from '@bazel/runfiles';
import {readFile} from 'fs/promises';
import {JSDOM} from 'jsdom';
import {configureMarkedGlobally} from '../marked/configuration';
import {getRenderable} from '../processing';
import {renderEntry} from '../rendering';
import {initHighlighter} from '../shiki/shiki';
import {setSymbols} from '../symbol-context';
import {configureMarkedGlobally} from '../marked/configuration.mjs';
import {getRenderable} from '../processing.mjs';
import {renderEntry} from '../rendering.mjs';
import {initHighlighter} from '../shiki/shiki.mjs';
import {setSymbols} from '../symbol-context.mjs';
// Note: The tests will probably break if the schema of the api extraction changes.
// All entries in the fake-entries are extracted from Angular's api.
@@ -8,11 +8,11 @@
import {runfiles} from '@bazel/runfiles';
import {readFile} from 'fs/promises';
import {DocEntryRenderable} from '../entities/renderables';
import {configureMarkedGlobally} from '../marked/configuration';
import {getRenderable} from '../processing';
import {initHighlighter} from '../shiki/shiki';
import {setSymbols} from '../symbol-context';
import {DocEntryRenderable} from '../entities/renderables.mjs';
import {configureMarkedGlobally} from '../marked/configuration.mjs';
import {getRenderable} from '../processing.mjs';
import {initHighlighter} from '../shiki/shiki.mjs';
import {setSymbols} from '../symbol-context.mjs';
// Note: The tests will probably break if the schema of the api extraction changes.
// All entries in the fake-entries are extracted from Angular's api.
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {makeGenericsText} from '../../transforms/code-transforms';
import {makeGenericsText} from '../../transforms/code-transforms.mjs';
describe('makeGenericsText', () => {
it('should return an empty string if no generics are provided', () => {
@@ -6,8 +6,8 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {setCurrentSymbol, setSymbols} from '../../symbol-context';
import {addHtmlAdditionalLinks} from '../../transforms/jsdoc-transforms';
import {setCurrentSymbol, setSymbols} from '../../symbol-context.mjs';
import {addHtmlAdditionalLinks} from '../../transforms/jsdoc-transforms.mjs';
// @ts-ignore This compiles fine, but Webstorm doesn't like the ESM import in a CJS context.
describe('jsdoc transforms', () => {
@@ -6,19 +6,19 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {ClassEntry} from '../entities';
import {ClassEntryRenderable} from '../entities/renderables';
import {addRenderableCodeToc} from './code-transforms';
import {ClassEntry} from '../entities.mjs';
import {ClassEntryRenderable} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addRenderableMembers} from './member-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRepo} from './repo.mjs';
/** Given an unprocessed class entry, get the fully renderable class entry. */
export function getClassRenderable(
@@ -8,12 +8,12 @@
import {marked} from 'marked';
import {CliCommand, CliOption} from '../cli-entities';
import {CliCommand, CliOption} from '../cli-entities.mjs';
import {
CliCardRenderable,
CliCommandRenderable,
CliOptionRenderable,
} from '../entities/renderables';
} from '../entities/renderables.mjs';
/** Given an unprocessed CLI entry, get the fully renderable CLI entry. */
export function getCliRenderable(command: CliCommand): CliCommandRenderable {
@@ -14,7 +14,7 @@ import {
MemberTags,
ParameterEntry,
PropertyEntry,
} from '../entities';
} from '../entities.mjs';
import {
isClassEntry,
@@ -29,14 +29,14 @@ import {
isInterfaceEntry,
isSetterEntry,
isTypeAliasEntry,
} from '../entities/categorization';
import {CodeLineRenderable} from '../entities/renderables';
import {HasModuleName, HasRenderableToc} from '../entities/traits';
import {getModuleName} from '../symbol-context';
import {codeToHtml, replaceKeywordFromShikiHtml} from '../shiki/shiki';
} from '../entities/categorization.mjs';
import {CodeLineRenderable} from '../entities/renderables.mjs';
import {HasModuleName, HasRenderableToc} from '../entities/traits.mjs';
import {getModuleName} from '../symbol-context.mjs';
import {codeToHtml, replaceKeywordFromShikiHtml} from '../shiki/shiki.mjs';
import {filterLifecycleMethods, mergeGettersAndSetters} from './member-transforms';
import {getLinkToModule} from './url-transforms';
import {filterLifecycleMethods, mergeGettersAndSetters} from './member-transforms.mjs';
import {getLinkToModule} from './url-transforms.mjs';
// Allows to generate links for code lines.
interface CodeTableOfContentsData {
@@ -6,18 +6,18 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {ConstantEntry} from '../entities';
import {ConstantEntryRenderable} from '../entities/renderables';
import {addRenderableCodeToc} from './code-transforms';
import {ConstantEntry} from '../entities.mjs';
import {ConstantEntryRenderable} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRepo} from './repo.mjs';
/** Given an unprocessed constant entry, get the fully renderable constant entry. */
export function getConstantRenderable(
@@ -6,19 +6,19 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {DecoratorEntry} from '../entities';
import {DecoratorEntryRenderable} from '../entities/renderables';
import {addRenderableCodeToc} from './code-transforms';
import {DecoratorEntry} from '../entities.mjs';
import {DecoratorEntryRenderable} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addRenderableMembers} from './member-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRepo} from './repo.mjs';
/** Given an unprocessed class entry, get the fully renderable class entry. */
export function getDecoratorRenderable(
@@ -6,19 +6,19 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {EnumEntry} from '../entities';
import {EnumEntryRenderable} from '../entities/renderables';
import {addRenderableCodeToc} from './code-transforms';
import {EnumEntry} from '../entities.mjs';
import {EnumEntryRenderable} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addRenderableMembers} from './member-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRepo} from './repo.mjs';
/** Given an unprocessed enum entry, get the fully renderable enum entry. */
export function getEnumRenderable(
@@ -6,22 +6,22 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {FunctionEntry, FunctionSignatureMetadata} from '../entities';
import {FunctionEntry, FunctionSignatureMetadata} from '../entities.mjs';
import {
FunctionEntryRenderable,
FunctionSignatureMetadataRenderable,
} from '../entities/renderables';
import {addRenderableCodeToc} from './code-transforms';
} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
import {addRenderableFunctionParams} from './params-transforms';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRenderableFunctionParams} from './params-transforms.mjs';
import {addRepo} from './repo.mjs';
/** Given an unprocessed function entry, get the fully renderable function entry. */
export function getFunctionRenderable(
@@ -6,20 +6,20 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {InitializerApiFunctionEntry} from '../entities';
import {InitializerApiFunctionEntry} from '../entities.mjs';
import {InitializerApiFunctionRenderable} from '../entities/renderables';
import {InitializerApiFunctionRenderable} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addModuleName} from './module-name';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRepo} from './repo.mjs';
export function getInitializerApiFunctionRenderable(
entry: InitializerApiFunctionEntry,
@@ -6,19 +6,19 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {InterfaceEntry} from '../entities';
import {InterfaceEntryRenderable} from '../entities/renderables';
import {addRenderableCodeToc} from './code-transforms';
import {InterfaceEntry} from '../entities.mjs';
import {InterfaceEntryRenderable} from '../entities/renderables.mjs';
import {addRenderableCodeToc} from './code-transforms.mjs';
import {
addHtmlAdditionalLinks,
addHtmlDescription,
addHtmlJsDocTagComments,
addHtmlUsageNotes,
setEntryFlags,
} from './jsdoc-transforms';
import {addRenderableMembers} from './member-transforms';
import {addModuleName} from './module-name';
import {addRepo} from './repo';
} from './jsdoc-transforms.mjs';
import {addRenderableMembers} from './member-transforms.mjs';
import {addModuleName} from './module-name.mjs';
import {addRepo} from './repo.mjs';
/** Given an unprocessed interface entry, get the fully renderable interface entry. */
export function getInterfaceRenderable(
@@ -7,15 +7,15 @@
*/
import {marked} from 'marked';
import {JsDocTagEntry} from '../entities';
import {JsDocTagEntry} from '../entities.mjs';
import {
getDeprecatedEntry,
isDeprecatedEntry,
isDeveloperPreview,
isExperimental,
} from '../entities/categorization';
import {LinkEntryRenderable} from '../entities/renderables';
} from '../entities/categorization.mjs';
import {LinkEntryRenderable} from '../entities/renderables.mjs';
import {
HasAdditionalLinks,
HasDeprecatedFlag,
@@ -27,11 +27,11 @@ import {
HasModuleName,
HasRenderableJsDocTags,
hasExperimentalFlag,
} from '../entities/traits';
} from '../entities/traits.mjs';
import {getLinkToModule} from './url-transforms';
import {addApiLinksToHtml} from './code-transforms';
import {getCurrentSymbol, getModuleName, unknownSymbolMessage} from '../symbol-context';
import {getLinkToModule} from './url-transforms.mjs';
import {addApiLinksToHtml} from './code-transforms.mjs';
import {getCurrentSymbol, getModuleName, unknownSymbolMessage} from '../symbol-context.mjs';
const JS_DOC_USAGE_NOTE_TAGS: Set<string> = new Set(['remarks', 'usageNotes', 'example']);
export const JS_DOC_SEE_TAG = 'see';

Some files were not shown because too many files have changed in this diff Show More