diff --git a/packages/babel-types/README.md b/packages/babel-types/README.md index 417ba98145..a6cdf3593f 100644 --- a/packages/babel-types/README.md +++ b/packages/babel-types/README.md @@ -1519,7 +1519,7 @@ Aliases: `UserWhitespacable`, `Property`, `ObjectMember` ### objectTypeAnnotation ```javascript -t.objectTypeAnnotation(properties, indexers, callProperties, exact) +t.objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) ``` See also `t.isObjectTypeAnnotation(node, opts)` and `t.assertObjectTypeAnnotation(node, opts)`. @@ -1529,6 +1529,7 @@ Aliases: `Flow`, `FlowType` - `properties`: `Array` (required) - `indexers`: `Array` (default: `null`) - `callProperties`: `Array` (default: `null`) + - `internalSlots`: `Array` (default: `null`) - `exact`: `boolean` (default: `false`) --- @@ -1564,6 +1565,23 @@ Aliases: `Flow`, `UserWhitespacable` --- +### objectTypeInternalSlot +```javascript +t.objectTypeInternalSlot(id, value, optional, static, method) +``` + +See also `t.isObjectTypeInternalSlot(node, opts)` and `t.assertObjectTypeInternalSlot(node, opts)`. + +Aliases: `Flow`, `UserWhitespacable` + + - `id`: `Identifier` (required) + - `value`: `FlowType` (required) + - `optional`: `boolean` (required) + - `static`: `boolean` (required) + - `method`: `boolean` (required) + +--- + ### objectTypeProperty ```javascript t.objectTypeProperty(key, value, variance) diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index bfc46770eb..da4d956f2d 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -456,6 +456,12 @@ export function assertObjectTypeAnnotation( ): void { assert("ObjectTypeAnnotation", node, opts); } +export function assertObjectTypeInternalSlot( + node: Object, + opts?: Object = {}, +): void { + assert("ObjectTypeInternalSlot", node, opts); +} export function assertObjectTypeCallProperty( node: Object, opts?: Object = {}, diff --git a/packages/babel-types/src/builders/generated/index.js b/packages/babel-types/src/builders/generated/index.js index b3c07aa47d..ce88f96cf7 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -421,6 +421,10 @@ export function ObjectTypeAnnotation(...args: Array): Object { return builder("ObjectTypeAnnotation", ...args); } export { ObjectTypeAnnotation as objectTypeAnnotation }; +export function ObjectTypeInternalSlot(...args: Array): Object { + return builder("ObjectTypeInternalSlot", ...args); +} +export { ObjectTypeInternalSlot as objectTypeInternalSlot }; export function ObjectTypeCallProperty(...args: Array): Object { return builder("ObjectTypeCallProperty", ...args); } diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index a9b28a5023..06f1d9b5a0 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -1491,6 +1491,20 @@ export function isObjectTypeAnnotation(node: Object, opts?: Object): boolean { return false; } +export function isObjectTypeInternalSlot(node: Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "ObjectTypeInternalSlot") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} export function isObjectTypeCallProperty(node: Object, opts?: Object): boolean { if (!node) return false; @@ -3610,6 +3624,7 @@ export function isUserWhitespacable(node: Object, opts?: Object): boolean { nodeType === "UserWhitespacable" || "ObjectMethod" === nodeType || "ObjectProperty" === nodeType || + "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || @@ -3832,6 +3847,7 @@ export function isFlow(node: Object, opts?: Object): boolean { "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || + "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType ||