diff --git a/common/changes/@adobe/ccweb-add-on-sdk-types/release-20250916_2025-09-16-09-16.json b/common/changes/@adobe/ccweb-add-on-sdk-types/release-20250916_2025-09-16-09-16.json new file mode 100644 index 0000000..b826ae7 --- /dev/null +++ b/common/changes/@adobe/ccweb-add-on-sdk-types/release-20250916_2025-09-16-09-16.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@adobe/ccweb-add-on-sdk-types", + "comment": "Update API docs and stabilize clone and duplicate node APIs", + "type": "minor" + } + ], + "packageName": "@adobe/ccweb-add-on-sdk-types" +} \ No newline at end of file diff --git a/packages/wxp-sdk-types/package.json b/packages/wxp-sdk-types/package.json index 21023fc..9817ad3 100644 --- a/packages/wxp-sdk-types/package.json +++ b/packages/wxp-sdk-types/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/ccweb-add-on-sdk-types", - "version": "1.23.0", + "version": "1.24.0", "author": "Adobe", "license": "MIT", "description": "Type definitions for Adobe Creative Cloud Web Add-on SDK.", diff --git a/packages/wxp-sdk-types/sandbox/express-document-sdk.d.ts b/packages/wxp-sdk-types/sandbox/express-document-sdk.d.ts index 0a95040..aa6ea40 100644 --- a/packages/wxp-sdk-types/sandbox/express-document-sdk.d.ts +++ b/packages/wxp-sdk-types/sandbox/express-document-sdk.d.ts @@ -105,6 +105,8 @@ declare interface ApiModuleExport { * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. * * @experimental + * Area text: both width and height are explicitly set. If text content is too long to fit, the end of the text will be + * clipped. If text content is short, the frame's bounds will occupy extra height that is just blank space. */ export declare interface AreaTextLayout { type: TextLayout.area; @@ -140,8 +142,8 @@ declare enum ArrowHeadType { } /** - * ArtboardList represents an ordered list of ArtboardNodes arranged in a timeline sequence, where they are called "scenes." - * All items in the list are children of a single {@link PageNode}. + * ArtboardList represents an ordered list of ArtboardNodes, which are the children of one {@link PageNode}. If multiple + * artboards are present, each represents a keyframe "scene" in the page's animation timeline. * * ArtboardList also provides APIs for adding/removing artboards from the page. ArtboardList is never empty: it is illegal to * remove the last remaining artboard from the list. @@ -158,13 +160,10 @@ export declare class ArtboardList extends RestrictedItemList { } /** - * An ArtboardNode represents an artboard object in the scenegraph. All user visual content must be contained on an artboard. - * Artboards are always contained on a {@link PageNode}; when a page contains multiple artboards, the artboards represent - * "scenes" in a linear timeline sequence. + * An ArtboardNode represents the topmost container of visual content within a {@link PageNode}. When a page contains + * multiple artboards, each represents a keyframe "scene" in the page's animation timeline. * * To create a new artboard, see {@link ArtboardList.addArtboard}. - * - * Please note that creating and deleting an artboard in a single frame will crash the editor. */ export declare class ArtboardNode extends VisualNode implements Readonly, ContainerNode { /** @@ -173,11 +172,13 @@ export declare class ArtboardNode extends VisualNode implements Readonly>; /** - * The node's children. Use the methods on this ItemList object to get, add, and remove children. + * The artboards's regular children (does not include any "background layer" content if present; use {@link allChildren} + * for a read-only view that includes background content). Use the methods on this `children` ItemList object to get, + * add, and remove regular children. */ get children(): ItemList; /** @@ -210,6 +211,8 @@ export declare class ArtboardNode extends VisualNode implements Readonly - * - * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. - * - * @experimental * Always throws as it's not possible to clone a single grid slot. * Use the parent grid container instead. * @@ -965,31 +969,30 @@ export declare class GridCellNode extends Node implements IMediaContainerNode { } /** - * A GridLayoutNode represents a grid layout in the scenegraph. The GridLayoutNode is used to create - * a layout grid that other content can be placed into. + * A GridLayoutNode represents a grid layout in the scenegraph. Currently, grids contain only images but in the future + * they may support other types of content as well. * * APIs to create a new grid layout are not yet available. */ export declare class GridLayoutNode extends Node implements IRectangularNode { /** - * The Grid's regular children. Does not include rectangles and skips over media constainer nodes to return fill grandchildren. - * Grid Cells are ordered by the y and then x position of their top left corner, i.e. left to right and top to bottom. - * The children cannot be added or removed. + * The GridLayout's child nodes. Nodes are returned in order sorted by the y and then x position of their top left + * corner, i.e. left to right and top to bottom. These children cannot be added or removed. */ get allChildren(): Readonly>; /** - * The background fill of the GridLayout. + * The background fill of the GridLayout. GridLayouts must always have a fill. */ set fill(fill: Fill); get fill(): Readonly; /** - * The width of the node. + * The width of the entire GridLayout node. * Must be at least {@link MIN_DIMENSION}. */ get width(): number; set width(value: number); /** - * The height of the node. + * The height of the entire GridLayout node. * Must be at least {@link MIN_DIMENSION}. */ get height(): number; @@ -1004,8 +1007,8 @@ export declare class GridLayoutNode extends Node implements IRectangularNode { */ export declare class GroupNode extends Node implements ContainerNode { /** - * The Group's regular children. Does not include the maskShape if one is present. - * Use the methods on this ItemList object to get, add, and remove children. + * The Group's regular children. Does not include the {@link maskShape} if one is present. + * Use the methods on this ItemList object to get, add, and remove regular children. */ get children(): ItemList; /** @@ -1131,20 +1134,18 @@ declare interface IStrokableNode { } /** - * ItemList represents an ordered list of API objects, representing items that are all children of the - * same parent node. (The reverse is not necessarily true, however: this list might not include all - * children that exist in the parent node. See {@link Node.allChildren} for details). + * ItemList represents an ordered list of API objects that are all children of the same parent node. It is most + * frequently encountered as {@link ArtboardNode.children} or {@link GroupNode.children}. * * ItemList also provides APIs for manipulating the list by adding items to the parent or removing items from the parent. * - * This class is used in different places for various types of items, including Nodes, Fills, and Strokes. + * Note that some parent nodes may have additional children that are *not* present in the main `children` ItemList + * (e.g. {@link GroupNode.maskShape}). Use the read-only {@link Node.allChildren} for a combined view of all children. */ export declare class ItemList extends RestrictedItemList { /** * Add one or more items to the end of the list. The last argument will become the last item in this list. Items are * removed from their previous parent, if any – or if an item is already in *this* list, its index is simply changed. - * - * @throws - if item has a different parent and item is a {@link ThreadedTextNode}, or if item's children subtree contains a {@link ThreadedTextNode}. */ append(...items: T[]): void; /** @@ -1155,24 +1156,18 @@ export declare class ItemList extends RestrictedItemList * Replace `oldItem` with `newItem` in this list. Throws if `oldItem` is not a member of this list. * `newItem` is removed from its previous parent, if any – or if it's already in *this* list, its index is simply * changed. No-op if both arguments are the same item. - * - * @throws - if newItem has a different parent and newItem is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}. */ replace(oldItem: T, newItem: T): void; /** * Insert `newItem` so it is immediately before `before` in this list: places `newItem` at the index that `before` used * to occupy, shifting `before` and all later items to higher indices. `newItem` is removed from its previous parent, * if any – or if it's already in *this* list, its index is simply changed. No-op if both arguments are the same item. - * - * @throws - if newItem has a different parent and it is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}. */ insertBefore(newItem: T, before: T): void; /** * Insert `newItem` so it is immediately after `after` in this list: places `newItem` at the index one higher than `after`, * shifting all later items to higher indices (the index of `after` remains unchanged). `newItem` is removed from its previous parent, * if any – or if it's already in *this* list, its index is simply changed. No-op if both arguments are the same item. - * - * @throws - if newItem has a different parent and it is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}. */ insertAfter(newItem: T, after: T): void; } @@ -1273,8 +1268,7 @@ export declare class LineNode extends StrokableNode { } /** - * Base interface for any item that can be used in {@link ItemList}. ItemList is used in different places to hold various - * types of items, including Nodes, Fills, and Strokes. + * Base interface for any item that can be stored in an {@link ItemList} (typically a {@link Node} type). */ export declare interface ListItem {} @@ -1307,6 +1301,7 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl /** * Get {@link AddOnData} reference for managing private metadata attached to the media resource displayed by this node. * The same media resource may be reused in multiple places in the document, and all share the same AddOnData state. + * Note: This support is not present for PSD/AI assets. An error will be thrown in that case. */ get mediaAddOnData(): AddOnData; /** @@ -1322,11 +1317,6 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl */ get height(): number; /** - * - * - * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. - * - * @experimental * Always throws as it's not possible to clone just the media rectangle alone. * Clone the entire parent MediaContainerNode instead. * @@ -1469,11 +1459,6 @@ declare class Node extends VisualNode implements INodeBounds { */ resizeToCover(width: number, height: number): void; /** - * - * - * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. - * - * @experimental * Creates a copy of this node and its entire subtree of descendants. * * The node must be attached to a page as the copy will be added as a sibling. @@ -1523,7 +1508,7 @@ export declare interface OrderedListStyleInput extends BaseParagraphListStyle { type: ParagraphListType.ordered; /** * The numbering style to use. If undefined, it defaults to a different type depending on the paragraph's indent level. - * The defaults for increasing indent are 1, a, i, I, and then they repeat. + * The defaults for increasing indent are: 1, a, i, I, and then they repeat. * These markers and the prefix/postfix strings (if any) are displayed using the same font as the start of the * paragraph's text content. */ @@ -1555,14 +1540,15 @@ export declare class PageList extends RestrictedItemList { /** * A PageNode represents a page in the document, a child of the root node of the document's "scenegraph" artwork tree - * (see {@link ExpressRootNode}). A page contains one or more artboards, representing "scenes" in a linear timeline - * sequence. Those artboards, in turn, contain all the visual content of the document. + * (see {@link ExpressRootNode}). A page contains one or more artboards, which in turn contain all the page's visual + * content. If multiple artboards are present, each represents a keyframe "scene" in the page's animation timeline. * * To create new pages, see {@link PageList.addPage}. */ export declare class PageNode extends BaseNode implements IRectangularNode { /** - * The artboards or "scenes" of a page, ordered by timeline sequence. + * The artboards or "scenes," which hold the page's visual contents. If multiple artboards are present, this list + * represents an ordered keyframe sequence in the page's animation timeline. * To create new artboards, see {@link ArtboardList.addArtboard}. */ get artboards(): ArtboardList; @@ -1644,7 +1630,7 @@ export declare interface ParagraphStyles extends BaseParagraphStyles { * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. * * @experimental - * The variant of {@link ParagraphStyles} with all optional style fields is used to apply ParagraphStyles(). When using that API, + * A variant of {@link ParagraphStyles} with all style fields optional, used for applyParagraphStyles(). When using that API, * any fields not specified are left unchanged, preserving the text's existing styles. */ export declare interface ParagraphStylesInput extends Partial { @@ -1657,7 +1643,7 @@ export declare interface ParagraphStylesInput extends Partial { /** @@ -1846,9 +1833,8 @@ export declare class RectangleNode extends FillableNode implements IRectangularN } /** - * Base for ItemLists that have restricted behavior on how items are added to the list, - * but allow items to be removed and reordered. Subclasses like ItemList may add more - * capabilities, however. + * Base for ItemLists that restrict how items are added to the list, but freely allow items to be removed and + * reordered. The {@link ItemList} subclass adds more capabilities, however. */ declare class RestrictedItemList extends ReadOnlyItemList { /** @@ -1972,10 +1958,11 @@ export declare type SolidColorStrokeWithOptionalType = Omit>; /** - * A StandaloneTextNode represents a text display frame in the scenegraph. It displays an entire piece of text. + * A StandaloneTextNode represents text that is displayed *entirely* within one single frame in the scenegraph (in + * contrast to {@link ThreadedTextNode}, where text may flow across several separate display "frames"). * The StandaloneTextNode does not directly hold the text content and styles – instead it refers to a {@link TextNodeContentModel}. * - * To create new a single-frame piece of text, see {@link Editor.createText}. + * To create a new StandaloneTextNode, see {@link Editor.createText}. */ export declare class StandaloneTextNode extends TextNode { get nextTextNode(): undefined; @@ -1986,12 +1973,12 @@ export declare class StandaloneTextNode extends TextNode { * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. * * @experimental - * Sets the layout mode of the TextNode "frame." - * - * {@link AreaTextLayout} is not supported by single-frame text. + * Sets the layout mode of this TextNode "frame" which the text content is displayed within. + * {@link AreaTextLayout} is not supported by standalone text. * - * @throws if changing text layout to/from {@link TextLayout.magicFit} or {@link TextLayout.circular} layout when the text contains font(s) unavailable to the current user. - * @throws if {@link StandaloneTextNode} is not a part of a multi-frame text content flow and the layout is {@link AreaTextLayout}. + * @throws if changing text layout to/from {@link TextLayout.magicFit} or {@link TextLayout.circular} + * layout when the text contains fonts that are unavailable to the current user, because these layouts change + * capitalization and thus alter which glyphs are displayed. */ set layout(layout: AutoWidthTextLayout | AutoHeightTextLayout); } @@ -2104,6 +2091,8 @@ export declare abstract class TextContentModel { get id(): string; /** * The complete text string, which may span multiple {@link ThreadedTextNode} "frames" in the scenegraph. + * @throws The setter throws if the existing text contains fonts unavailable to the current user. + * See {@link hasUnavailableFonts}. */ get text(): string; set text(textContent: string); @@ -2174,10 +2163,13 @@ export declare abstract class TextContentModel { */ deleteText(range: TextRange): void; /** - * The character styles are applied to different ranges of this text content. When setting character styles, any style - * properties that are not provided are reset to their defaults (contrast to {@link applyCharacterStyles} which - * preserves the text's existing styles for any fields not specified). When *getting* styles, all fields are always - * provided. + * The character styles that are applied to different ranges of this text content. Each range starts immediately after + * the previous one: they are always contiguous, and never overlap. + * + * When *setting* character styles, any style properties that are not provided are reset to their defaults (contrast to + * {@link applyCharacterStyles} which preserves the text's existing styles for any fields not specified). If the ranges + * do not cover the full length of the text, the last range is extended to cover all the remaining text. + * When *getting* styles, all fields are always provided. * * Note: existing fonts used in the document, returned by this getter, are not guaranteed to be ones the current user * has rights to edit with. The *setter* only accepts the AvailableFont type which has been verified to be usable. @@ -2206,7 +2198,7 @@ export declare abstract class TextContentModel { * those boundaries. If multiple ranges provided overlap a single paragraph, the first one to overlap is applied to the * entire paragraph. * - * @throws if the text content contains fonts unavailable to the current user and an ordered-list style is being applied. + * @throws if applying an ordered-list style when the text contains fonts that are unavailable to the current user. */ set paragraphStyleRanges(styles: readonly ParagraphStylesRangeInput[]); /** @@ -2214,12 +2206,13 @@ export declare abstract class TextContentModel { * unchanged. Does not modify any styles in the text outside this range. Contrast to the {@link characterStyleRanges} * setter, which specifies new style range(s) for the entire text at once, and resets any unspecified properties back to * default styles. - + * + * Explicitly specifying `link: undefined` will remove any hyperlinks present in the existing text. If the `link` style + * property is not specified at all, existing links are preserved. + * * @param styles - The styles to apply. - * @param range -The start and length of the character sequence to which the styles should be applied. - * The styles will be applied to the entire text content flow if not specified. - * If the specified range doesn't align well with the paragraph boundaries, the range will be expanded to cover the - * entire paragraphs, it overlaps. + * @param range - The start and length of the character sequence to which the styles should be applied. + * If no range is specified, styles will be applied to the entire text content flow. */ applyCharacterStyles(styles: CharacterStylesInput, range?: TextRange): void; /** @@ -2232,10 +2225,13 @@ export declare abstract class TextContentModel { * unchanged. Does not modify any styles in the text outside this range. Contrast to the {@link paragraphStyleRanges} * setter, which specifies new style range(s) for the entire text at once, and resets any unspecified properties back to * default styles. - + * * @param styles - The styles to apply. - * @param range - The start and length of character sequence to which the styles should be applied. - * If not specified the styles will be applied to the entire piece of text content flow. + * @param range - The start and length of character sequence to which the styles should be applied. Styles apply to any + * paragraphs that even partially overlap this range. + * If range is not specified, the styles will be applied to the entire text content flow. + * + * @throws if applying an ordered-list style when the text contains fonts that are unavailable to the current user. */ applyParagraphStyles(styles: ParagraphStylesInput, range?: TextRange): void; /** @@ -2291,9 +2287,12 @@ declare enum TextLayout { /** * TextNode is an abstract base class representing text displayed in the scenegraph, regardless of whether it's a fully - * self-contained {@link StandaloneTextNode} or one {@link ThreadedTextNode} "frame" of multiple in a larger flow. The + * self-contained {@link StandaloneTextNode} or one of multiple {@link ThreadedTextNode} "frames" in a larger flow. The * APIs on TextNode and its {@link TextNodeContentModel} allow you to generically work with text without needing to know - * which of those subtypes you are dealing with. + * which subtype you are dealing with. + * + * Note: the visual top-left corner of text is not located at its local (0,0) origin point, so it's easiest to position + * text using {@link Node.setPositionInParent} rather than setting its {@link Node.translation} directly. */ export declare abstract class TextNode extends Node { /** @@ -2303,6 +2302,9 @@ export declare abstract class TextNode extends Node { * Note: The bounding box of the orphaned TextNode may be different from the bounding box of the node placed on a * page. It is recommended to use this property only when the node is placed on a page. * + * Note: the visual top-left corner of this box is usually not (0,0). Always use `boundsLocal` or {@link topLeftLocal} + * instead of assuming (0,0). + * */ get boundsLocal(): Readonly; /** @@ -2321,6 +2323,8 @@ export declare abstract class TextNode extends Node { * Note: The top-left of the orphaned TextNode may be different from the top-left of the node placed on a * page. It is recommended to use this property only when the node is placed on a page. * + * Note: this value is usually not (0,0) due to the way text layout is defined. + * */ get topLeftLocal(): Readonly; /** @@ -2407,11 +2411,13 @@ export declare abstract class TextNode extends Node { */ export declare class TextNodeContentModel extends TextContentModel { /** - * Get ordered list of all {@link TextNode}s that display this text content in the scenegraph. The text content - * starts in the first {@link ThreadedTextNode} "frame", and then flows into the second node once it has filled the first one. The ending of the - * text content may not be visible at all, if the last {@link ThreadedTextNode} "frame" is not large enough to accommodate it. + * Get ordered list of all {@link TextNode}s that display this text content in the scenegraph. This might be a single + * {@link StandaloneTextNode} *or* a list of one or more {@link ThreadedTextNode}s. In the case of threaded text, the + * text content starts in the first {@link ThreadedTextNode} "frame", and then flows into the second node once it has + * filled the first one. The ending of the text content may not be visible at all, if the last "frame" is not large + * enough to accommodate it. * - * If there are multiple {@link ThreadedTextNode}s, all of them must be configured to use {@link AreaTextLayout}. + * All linked ThreadedTextNodes that share a single TextContentModel must remain together within the same artboard. */ get allTextNodes(): Readonly>; } @@ -2468,11 +2474,13 @@ export declare enum TextStyleSource { } /** - * A ThreadedTextNode represents a text display frame in the scenegraph. It is a subset of longer text that flows across - * multiple TextNode "frames". Because of this, the TextNode does not directly hold the text content and styles – + * A ThreadedTextNode represents a text display frame in the scenegraph which is a subset of longer text that flows across + * multiple such "frames". Because of this, the TextNode does not directly hold the text content and styles – * instead it refers to a {@link TextNodeContentModel}, which may be shared across multiple ThreadedTextNode frames. * - * APIs are not yet available to create multi-frame text flows. + * All linked ThreadedTextNodes that share a single TextContentModel must remain together within the same artboard. + * + * APIs are not yet available to create multi-frame text flows. To create *non*-threaded text, use {@link Editor.createText}. */ export declare class ThreadedTextNode extends TextNode { get nextTextNode(): ThreadedTextNode | undefined; @@ -2483,11 +2491,8 @@ export declare class ThreadedTextNode extends TextNode { * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. * * @experimental - * Sets the layout mode of the TextNode "frame." - * + * Sets the layout mode of this TextNode "frame" which the text content is displayed within. * Only {@link AreaTextLayout}, with fully fixed bounds, is currently supported by threaded text. - * - * @throws if {@link ThreadedTextNode} is part of a multi-frame text content flow and the layout is not {@link AreaTextLayout}. */ set layout(layout: AreaTextLayout); } @@ -2548,6 +2553,7 @@ export declare interface UnorderedListStyleInput extends BaseParagraphListStyle * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`. * * @experimental + * Represents a text layout the API does not yet support setting or reading the details of. */ export declare interface UnsupportedTextLayout { type: TextLayout.magicFit | TextLayout.circular; diff --git a/rush.json b/rush.json index 403f89b..193f458 100644 --- a/rush.json +++ b/rush.json @@ -25,43 +25,43 @@ "packageName": "@adobe/ccweb-add-on-core", "projectFolder": "packages/wxp-core", "reviewCategory": "production", - "shouldPublish": true + "shouldPublish": false }, { "packageName": "@adobe/create-ccweb-add-on", "projectFolder": "packages/create-ccweb-add-on", "reviewCategory": "production", - "shouldPublish": true + "shouldPublish": false }, { "packageName": "@adobe/ccweb-add-on-scaffolder", "projectFolder": "packages/wxp-add-on-scaffolder", "reviewCategory": "production", - "shouldPublish": true + "shouldPublish": false }, { "packageName": "@adobe/ccweb-add-on-scripts", "projectFolder": "packages/wxp-scripts", "reviewCategory": "production", - "shouldPublish": true + "shouldPublish": false }, { "packageName": "@adobe/ccweb-add-on-ssl", "projectFolder": "packages/wxp-ssl", "reviewCategory": "production", - "shouldPublish": true + "shouldPublish": false }, { "packageName": "@adobe/ccweb-add-on-analytics", "projectFolder": "packages/wxp-analytics", "reviewCategory": "production", - "shouldPublish": true + "shouldPublish": false }, { "packageName": "@adobe/ccweb-add-on-sdk-types", "projectFolder": "packages/wxp-sdk-types", "reviewCategory": "production", - "shouldPublish": false + "shouldPublish": true } ] }