mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
build: consolidate domino bundling in platform-server
Move the domino bundling logic and related shims into a centralized third_party directory within packages/platform-server. This avoids duplication of the bundling logic and ensures consistent shimming across the platform-server package and its entry points.
Following a conversation with OSS licensing, this change also includes the domino LICENSE file in the generated npm package to comply with licensing requirements for bundled third-party code.
```
├── fesm2022
│ ├── init.mjs
│ ├── init.mjs.map
│ ├── platform-server.mjs
│ ├── platform-server.mjs.map
│ ├── _server-chunk.mjs
│ ├── _server-chunk.mjs.map
│ ├── testing.mjs
│ └── testing.mjs.map
├── LICENSE
├── package.json
├── README.md
├── third_party
│ └── domino
│ ├── bundled-domino.d.ts
│ ├── bundled-domino.mjs
│ ├── bundled-domino.mjs.map
│ └── LICENSE
└── types
├── init.d.ts
├── platform-server.d.ts
└── testing.d.ts
```
This commit is contained in:
@@ -61,7 +61,6 @@ ts_project(
|
||||
"//packages/common",
|
||||
"//packages/compiler",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
load("@aspect_rules_js//js:defs.bzl", "js_library")
|
||||
load("@npm//:rollup/package_json.bzl", rollup = "bin")
|
||||
load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs", "ng_package", "ng_project", "tsec_test")
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
@@ -11,10 +9,8 @@ ng_project(
|
||||
"*.ts",
|
||||
"src/**/*.ts",
|
||||
],
|
||||
exclude = ["src/bundled-domino.d.ts"],
|
||||
),
|
||||
deps = [
|
||||
":bundled_domino_lib",
|
||||
"//:node_modules/@types/node",
|
||||
"//:node_modules/rxjs",
|
||||
"//:node_modules/xhr2",
|
||||
@@ -22,34 +18,7 @@ ng_project(
|
||||
"//packages/common/http",
|
||||
"//packages/core",
|
||||
"//packages/platform-browser",
|
||||
],
|
||||
)
|
||||
|
||||
rollup.rollup(
|
||||
name = "bundled_domino",
|
||||
srcs = [
|
||||
"//:node_modules/@rollup/plugin-commonjs",
|
||||
"//:node_modules/domino",
|
||||
],
|
||||
outs = [
|
||||
"src/bundled-domino.mjs",
|
||||
],
|
||||
args = [
|
||||
"--format=esm",
|
||||
"--plugin=@rollup/plugin-commonjs",
|
||||
"--input=node_modules/domino/lib/index.js",
|
||||
"--sourcemap=false",
|
||||
"--file=packages/platform-server/src/bundled-domino.mjs",
|
||||
],
|
||||
progress_message = "Bundling domino",
|
||||
silent_on_success = True,
|
||||
)
|
||||
|
||||
js_library(
|
||||
name = "bundled_domino_lib",
|
||||
srcs = [
|
||||
"src/bundled-domino.d.ts",
|
||||
":bundled_domino",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -65,11 +34,20 @@ ng_package(
|
||||
],
|
||||
externals = [
|
||||
"xhr2",
|
||||
"../../third_party/domino/bundled-domino",
|
||||
"../third_party/domino/bundled-domino",
|
||||
],
|
||||
nested_packages = [
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
package = "@angular/platform-server",
|
||||
side_effect_entry_points = [
|
||||
"@angular/platform-server/init",
|
||||
],
|
||||
substitutions = {
|
||||
# Needed for the FESM files.
|
||||
"\\./(.+)/third_party/domino/bundled-domino": "../third_party/domino/bundled-domino.mjs",
|
||||
},
|
||||
tags = [
|
||||
"release-with-framework",
|
||||
],
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
load("@aspect_rules_js//js:defs.bzl", "js_library")
|
||||
load("@npm//:rollup/package_json.bzl", rollup = "bin")
|
||||
load("//tools:defaults.bzl", "ng_project", "tsec_test")
|
||||
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
@@ -14,35 +12,7 @@ ng_project(
|
||||
exclude = ["src/bundled-domino.d.ts"],
|
||||
),
|
||||
deps = [
|
||||
":bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
rollup.rollup(
|
||||
name = "bundled_domino",
|
||||
srcs = [
|
||||
"//:node_modules/@rollup/plugin-commonjs",
|
||||
"//:node_modules/domino",
|
||||
],
|
||||
outs = [
|
||||
"src/bundled-domino.mjs",
|
||||
],
|
||||
args = [
|
||||
"--format=esm",
|
||||
"--plugin=@rollup/plugin-commonjs",
|
||||
"--input=node_modules/domino/lib/index.js",
|
||||
"--sourcemap=false",
|
||||
"--file=packages/platform-server/init/src/bundled-domino.mjs",
|
||||
],
|
||||
progress_message = "Bundling domino",
|
||||
silent_on_success = True,
|
||||
)
|
||||
|
||||
js_library(
|
||||
name = "bundled_domino_lib",
|
||||
srcs = [
|
||||
"src/bundled-domino.d.ts",
|
||||
":bundled_domino",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.dev/license
|
||||
*/
|
||||
|
||||
import domino from './bundled-domino';
|
||||
import domino from '../../third_party/domino/bundled-domino';
|
||||
|
||||
/**
|
||||
* Apply the necessary shims to make DOM globals (such as `Element`, `HTMLElement`, etc.) available
|
||||
|
||||
@@ -6,7 +6,7 @@ ts_project(
|
||||
srcs = glob(["**/*.ts"]),
|
||||
deps = [
|
||||
"//packages/platform-server/init",
|
||||
"//packages/platform-server/init:bundled_domino_lib",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.dev/license
|
||||
*/
|
||||
import domino from '../src/bundled-domino';
|
||||
import domino from '../../third_party/domino/bundled-domino';
|
||||
import {applyShims} from '../src/shims';
|
||||
|
||||
describe('applyShims()', () => {
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google LLC All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.dev/license
|
||||
*/
|
||||
|
||||
import domino from 'domino';
|
||||
|
||||
export default domino;
|
||||
@@ -9,7 +9,7 @@
|
||||
import {ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/common';
|
||||
import {ɵBrowserDomAdapter as BrowserDomAdapter} from '@angular/platform-browser';
|
||||
|
||||
import domino from './bundled-domino';
|
||||
import domino from '../third_party/domino/bundled-domino';
|
||||
|
||||
export function setDomTypes() {
|
||||
// Make all Domino types available in the global env.
|
||||
|
||||
@@ -43,7 +43,7 @@ ts_project(
|
||||
"//packages/platform-browser",
|
||||
"//packages/platform-browser/animations",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server:bundled_domino_lib",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
"//packages/private/testing",
|
||||
"//packages/router",
|
||||
],
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
import {BrowserModule, withEventReplay, withIncrementalHydration} from '@angular/platform-browser';
|
||||
import {renderModule, ServerModule} from '../index';
|
||||
import {getHydrationInfoFromTransferState, ssr} from './hydration_utils';
|
||||
import domino from '../src/bundled-domino';
|
||||
import domino from '../third_party/domino/bundled-domino';
|
||||
|
||||
describe('transfer_state', () => {
|
||||
const defaultExpectedOutput =
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
load("@aspect_rules_js//js:defs.bzl", "js_library")
|
||||
load("@npm//:rollup/package_json.bzl", rollup = "bin")
|
||||
|
||||
package(default_visibility = ["//visibility:private"])
|
||||
|
||||
rollup.rollup(
|
||||
name = "bundled_domino",
|
||||
srcs = [
|
||||
"//:node_modules/@rollup/plugin-commonjs",
|
||||
"//:node_modules/domino",
|
||||
],
|
||||
outs = [
|
||||
"bundled-domino.mjs",
|
||||
"bundled-domino.mjs.map",
|
||||
],
|
||||
args = [
|
||||
"--format=esm",
|
||||
"--plugin=@rollup/plugin-commonjs",
|
||||
"--input=node_modules/domino/lib/index.js",
|
||||
"--sourcemap=true",
|
||||
"--file=packages/platform-server/third_party/domino/bundled-domino.mjs",
|
||||
],
|
||||
progress_message = "Bundling domino",
|
||||
silent_on_success = True,
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "bundled_domino_license",
|
||||
srcs = [
|
||||
"//:node_modules/domino/dir",
|
||||
],
|
||||
outs = ["LICENSE"],
|
||||
cmd = """
|
||||
cp "$(location //:node_modules/domino/dir)/LICENSE" $@
|
||||
""",
|
||||
)
|
||||
|
||||
js_library(
|
||||
name = "bundled_domino_lib",
|
||||
srcs = [
|
||||
"bundled-domino.d.ts",
|
||||
":bundled_domino",
|
||||
":bundled_domino_license",
|
||||
],
|
||||
visibility = [
|
||||
"//packages/platform-server:__subpackages__",
|
||||
"//packages/private/testing:__pkg__",
|
||||
"//tools/testing:__pkg__",
|
||||
],
|
||||
deps = [
|
||||
"//:node_modules/domino",
|
||||
],
|
||||
)
|
||||
+5
@@ -6,6 +6,11 @@
|
||||
* found in the LICENSE file at https://angular.dev/license
|
||||
*/
|
||||
|
||||
|
||||
declare module 'domino' {
|
||||
export const impl: any;
|
||||
}
|
||||
|
||||
import domino from 'domino';
|
||||
|
||||
export default domino;
|
||||
@@ -18,6 +18,6 @@ ng_project(
|
||||
"//packages/core",
|
||||
"//packages/core/testing",
|
||||
"//packages/platform-browser",
|
||||
"//packages/platform-server:bundled_domino_lib",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -95,19 +95,20 @@ let savedRequestAnimationFrame: ((callback: FrameRequestCallback) => number) | u
|
||||
let savedNode: typeof Node | undefined = undefined;
|
||||
let requestAnimationFrameCount = 0;
|
||||
let domino:
|
||||
| (typeof import('../../../platform-server/src/bundled-domino'))['default']
|
||||
| (typeof import('../../../platform-server/third_party/domino/bundled-domino'))['default']
|
||||
| null
|
||||
| undefined = undefined;
|
||||
|
||||
async function loadDominoOrNull(): Promise<
|
||||
(typeof import('../../../platform-server/src/bundled-domino'))['default'] | null
|
||||
(typeof import('../../../platform-server/third_party/domino/bundled-domino'))['default'] | null
|
||||
> {
|
||||
if (domino !== undefined) {
|
||||
return domino;
|
||||
}
|
||||
|
||||
try {
|
||||
return (domino = (await import('../../../platform-server/src/bundled-domino')).default);
|
||||
return (domino = (await import('../../../platform-server/third_party/domino/bundled-domino'))
|
||||
.default);
|
||||
} catch {
|
||||
return (domino = null);
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@ ts_project(
|
||||
"//packages/core",
|
||||
"//packages/core/testing",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server:bundled_domino_lib",
|
||||
"//packages/platform-server/testing",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -66,8 +66,8 @@ ts_project(
|
||||
"//packages/compiler",
|
||||
"//packages/core/testing",
|
||||
"//packages/platform-server",
|
||||
"//packages/platform-server:bundled_domino_lib",
|
||||
"//packages/platform-server/testing",
|
||||
"//packages/platform-server/third_party/domino:bundled_domino_lib",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import {NgModule, provideZonelessChangeDetection} from '@angular/core';
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing';
|
||||
import {ɵDominoAdapter as DominoAdapter} from '@angular/platform-server';
|
||||
import domino from '../../packages/platform-server/src/bundled-domino';
|
||||
import domino from '../../packages/platform-server/third_party/domino/bundled-domino';
|
||||
|
||||
@NgModule({
|
||||
providers: [provideZonelessChangeDetection()],
|
||||
|
||||
@@ -16,7 +16,7 @@ import {TestBed} from '@angular/core/testing';
|
||||
import {NgModule, provideZonelessChangeDetection} from '@angular/core';
|
||||
import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing';
|
||||
import {ɵDominoAdapter as DominoAdapter} from '@angular/platform-server';
|
||||
import domino from '../../packages/platform-server/src/bundled-domino';
|
||||
import domino from '../../packages/platform-server/third_party/domino/bundled-domino';
|
||||
|
||||
@NgModule({
|
||||
providers: [provideZonelessChangeDetection()],
|
||||
|
||||
Reference in New Issue
Block a user