mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-07 12:33:47 +08:00
This change makes it easier to run the script from directly `roll_py.deps` without having to fetch the dependencies first. This also makes it easier to track which dependencies our tooling have. Change-Id: I1ce55074ee6a1fffa6f2a2f05a56d0d74b4aca90 Bug: 1255619 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3431346 Reviewed-by: Mathias Bynens <mathias@chromium.org> Commit-Queue: Johan Bay <jobay@chromium.org>
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
import { Container } from "./container.js";
|
|
import { Attribute } from "./attribute.js";
|
|
import { Operation } from "./operation.js";
|
|
import { validationError } from "../error.js";
|
|
import { autofixAddExposedWindow } from "./helpers.js";
|
|
import { Constant } from "./constant.js";
|
|
|
|
export class Namespace extends Container {
|
|
/**
|
|
* @param {import("../tokeniser").Tokeniser} tokeniser
|
|
* @param {object} [options]
|
|
* @param {import("../tokeniser.js").Token} [options.partial]
|
|
*/
|
|
static parse(tokeniser, { partial } = {}) {
|
|
const tokens = { partial };
|
|
tokens.base = tokeniser.consume("namespace");
|
|
if (!tokens.base) {
|
|
return;
|
|
}
|
|
return Container.parse(
|
|
tokeniser,
|
|
new Namespace({ source: tokeniser.source, tokens }),
|
|
{
|
|
allowedMembers: [
|
|
[Attribute.parse, { noInherit: true, readonly: true }],
|
|
[Constant.parse],
|
|
[Operation.parse, { regular: true }],
|
|
],
|
|
}
|
|
);
|
|
}
|
|
|
|
get type() {
|
|
return "namespace";
|
|
}
|
|
|
|
*validate(defs) {
|
|
if (
|
|
!this.partial &&
|
|
this.extAttrs.every((extAttr) => extAttr.name !== "Exposed")
|
|
) {
|
|
const message = `Namespaces must have [Exposed] extended attribute. \
|
|
To fix, add, for example, [Exposed=Window]. Please also consider carefully \
|
|
if your namespace should also be exposed in a Worker scope. Refer to the \
|
|
[WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) \
|
|
for more information.`;
|
|
yield validationError(
|
|
this.tokens.name,
|
|
this,
|
|
"require-exposed",
|
|
message,
|
|
{
|
|
autofix: autofixAddExposedWindow(this),
|
|
}
|
|
);
|
|
}
|
|
yield* super.validate(defs);
|
|
}
|
|
}
|