Skip to content

Commit

Permalink
chore: enable isolateModules in all v8 packages (#25774)
Browse files Browse the repository at this point in the history
* chore: enable isolateModules in all packages

* generate changefiles

* feat: remove obsolete useTheme knob from storybook package that were causing isolateModules errors
  • Loading branch information
Hotell authored Nov 30, 2022
1 parent 076ac58 commit c46ff8d
Show file tree
Hide file tree
Showing 82 changed files with 388 additions and 107 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/api-docs",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/azure-themes",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/bundle-size",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/codemods",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/cra-template",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/date-time-utilities",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/dom-utilities",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/eslint-plugin",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/example-data",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/font-icons-mdl2",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/foundation-legacy",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/jest-serializer-merge-styles",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/keyboard-key",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/merge-styles",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/public-docsite-setup",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-cards",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-charting",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-conformance",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-date-time",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-docsite-components",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-file-type-icons",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-icons-mdl2-branded",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/react-window-provider",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/set-version",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/test-utilities",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/theme",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "chore: enable isolateModules",
"packageName": "@fluentui/webpack-utilities",
"email": "[email protected]",
"dependentChangeType": "none"
}
3 changes: 2 additions & 1 deletion packages/a11y-testing/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"skipLibCheck": true,
"preserveConstEnums": true,
"lib": ["es2017", "dom"],
"types": ["jest"]
"types": ["jest"],
"isolatedModules": true
},
"include": ["src"]
}
101 changes: 101 additions & 0 deletions packages/api-docs/src/const-enum-overrides.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/**
* ☝️ NOTE:
* Types in this file provide const enums replacement that will compile with isolatedModules
*/

import type { ApiItemKind as _ApiItemKind } from '@microsoft/api-extractor-model';

import type { DocNodeKind as _DocNodeKind } from '@microsoft/tsdoc';

export enum ApiItemKind {
CallSignature = 'CallSignature',
Class = 'Class',
Constructor = 'Constructor',
ConstructSignature = 'ConstructSignature',
EntryPoint = 'EntryPoint',
Enum = 'Enum',
EnumMember = 'EnumMember',
Function = 'Function',
IndexSignature = 'IndexSignature',
Interface = 'Interface',
Method = 'Method',
MethodSignature = 'MethodSignature',
Model = 'Model',
Namespace = 'Namespace',
Package = 'Package',
Property = 'Property',
PropertySignature = 'PropertySignature',
TypeAlias = 'TypeAlias',
Variable = 'Variable',
None = 'None',
}

export enum DocNodeKind {
Block = 'Block',
BlockTag = 'BlockTag',
Excerpt = 'Excerpt',
FencedCode = 'FencedCode',
CodeSpan = 'CodeSpan',
Comment = 'Comment',
DeclarationReference = 'DeclarationReference',
ErrorText = 'ErrorText',
EscapedText = 'EscapedText',
HtmlAttribute = 'HtmlAttribute',
HtmlEndTag = 'HtmlEndTag',
HtmlStartTag = 'HtmlStartTag',
InheritDocTag = 'InheritDocTag',
InlineTag = 'InlineTag',
LinkTag = 'LinkTag',
MemberIdentifier = 'MemberIdentifier',
MemberReference = 'MemberReference',
MemberSelector = 'MemberSelector',
MemberSymbol = 'MemberSymbol',
Paragraph = 'Paragraph',
ParamBlock = 'ParamBlock',
ParamCollection = 'ParamCollection',
PlainText = 'PlainText',
Section = 'Section',
SoftBreak = 'SoftBreak',
}

// Following function is used to keep 3rd party types in sync with our custom ones. test on "type level"
// If anything will go wrong this will throw TSC error
//
// Why do we need this?
// To be able to use `isolateModules` we cannot use nor consume const enums.
// @ts-expect-error - this function is only for type compat test

function _testEnumsCompatibility() {
testApiItemKind();
testDocNodeKind();

function testDocNodeKind() {
// @ts-expect-error - _DocNodeKind is const enum - cannot be used with isolateModules - this does the trick
type Keys = keyof typeof _DocNodeKind;
type Keys2 = keyof typeof DocNodeKind;

let test = {} as Keys;
let test2 = {} as Keys2;

test = test2;
test2 = test;

// eslint-disable-next-line no-console
console.log(test, test2);
}

function testApiItemKind() {
// @ts-expect-error - _ApiItemKind is const enum - cannot be used with isolateModules - this does the trick
type Keys = keyof typeof _ApiItemKind;
type Keys2 = keyof typeof ApiItemKind;

let test = {} as Keys;
let test2 = {} as Keys2;

test = test2;
test2 = test;

// eslint-disable-next-line no-console
console.log(test, test2);
}
}
9 changes: 7 additions & 2 deletions packages/api-docs/src/pageJson.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ApiItem, ApiItemKind, ApiDocumentedItem, ApiModel } from '@microsoft/api-extractor-model';
import { ApiItem, ApiDocumentedItem, ApiModel } from '@microsoft/api-extractor-model';
import { ApiItemKind } from './const-enum-overrides';
import { findInlineTagByName } from './rendering';
import { ICollectedData } from './types-private';
import { ITableJson, IPageJson, PageGroups } from './types';
Expand Down Expand Up @@ -68,7 +69,11 @@ function initPageDataForItem(
groupsByPage: { [pageName: string]: string },
fallbackGroup?: string,
): void {
if (supportedApiItems.includes(apiItem.kind) && apiItem instanceof ApiDocumentedItem && apiItem.tsdocComment) {
if (
supportedApiItems.includes((apiItem.kind as unknown) as ApiItemKind) &&
apiItem instanceof ApiDocumentedItem &&
apiItem.tsdocComment
) {
const docCategoryTag = findInlineTagByName('@docCategory', apiItem.tsdocComment);

if (docCategoryTag) {
Expand Down
2 changes: 1 addition & 1 deletion packages/api-docs/src/rendering.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {
DocExcerpt,
DocInlineTag,
DocNodeKind,
DocSection,
DocComment,
DocPlainText,
Expand All @@ -14,6 +13,7 @@ import {
DocBlock,
} from '@microsoft/tsdoc';
import { ApiItem, ApiModel, ExcerptToken, IExcerptTokenRange } from '@microsoft/api-extractor-model';
import { DocNodeKind } from './const-enum-overrides';
import { ILinkToken } from './types';
import { ICollectedData } from './types-private';

Expand Down
4 changes: 2 additions & 2 deletions packages/api-docs/src/tableJson.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ import {
ApiEnum,
ApiEnumMember,
ApiInterface,
ApiItemKind,
ApiTypeAlias,
ApiDeclaredItem,
HeritageType,
ApiItem,
} from '@microsoft/api-extractor-model';
import { ApiItemKind } from './const-enum-overrides';
import { ITableJson, ITableRowJson } from './types';
import { renderDocNodeWithoutInlineTag, getTokenHyperlinks, renderNodes } from './rendering';
import { ICollectedData } from './types-private';
import { createTableRowJson, createEnumTableRowJson } from './tableRowJson';

export function createTableJson(collectedData: ICollectedData, apiItem: ApiItem): ITableJson | undefined {
switch (apiItem.kind) {
switch ((apiItem.kind as unknown) as ApiItemKind) {
case ApiItemKind.Interface: {
return createInterfacePageJson(collectedData, apiItem as ApiInterface);
}
Expand Down
Loading

0 comments on commit c46ff8d

Please sign in to comment.