diff --git a/.changeset/clean-numbers-fly.md b/.changeset/clean-numbers-fly.md new file mode 100644 index 00000000000..41cc90fcf56 --- /dev/null +++ b/.changeset/clean-numbers-fly.md @@ -0,0 +1,78 @@ +--- +"@uifabricshared/foundation-composable": patch +"@fluentui-react-native/experimental-appearance-additions": patch +"@uifabricshared/theming-react-native": patch +"@uifabricshared/foundation-settings": patch +"@fluentui-react-native/experimental-activity-indicator": patch +"@fluentui-react-native/experimental-native-font-metrics": patch +"@uifabricshared/foundation-compose": patch +"@fluentui-react-native/experimental-native-date-picker": patch +"@uifabricshared/foundation-tokens": patch +"@fluentui-react-native/themed-stylesheet": patch +"@uifabricshared/themed-settings": patch +"@fluentui-react-native/contextual-menu": patch +"@uifabricshared/theme-registry": patch +"@fluentui-react-native/vibrancy-view": patch +"@fluentui-react-native/focus-trap-zone": patch +"@fluentui-react-native/notification": patch +"@uifabricshared/theming-ramp": patch +"@fluentui-react-native/experimental-menu-button": patch +"@fluentui-react-native/interactive-hooks": patch +"@fluentui-react-native/persona-coin": patch +"@fluentui-react-native/menu-button": patch +"@fluentui-react-native/radio-group": patch +"@fluentui-react-native/experimental-checkbox": patch +"@fluentui-react-native/dropdown": patch +"@fluentui-react-native/experimental-expander": patch +"@fluentui-react-native/overflow": patch +"@fluentui-react-native/composition": patch +"@fluentui-react-native/use-styling": patch +"@fluentui-react-native/android-theme": patch +"@fluentui-react-native/default-theme": patch +"@fluentui-react-native/theming-utils": patch +"@fluentui-react-native/focus-zone": patch +"@fluentui-react-native/pressable": patch +"@fluentui-react-native/separator": patch +"@fluentui-react-native/popover": patch +"@fluentui-react-native/experimental-shimmer": patch +"@fluentui-react-native/spinner": patch +"@fluentui-react-native/tooltip": patch +"@fluentui-react-native/use-tokens": patch +"@fluentui-react-native/theme-tokens": patch +"@fluentui-react-native/checkbox": patch +"@fluentui-react-native/dependency-profiles": patch +"@fluentui-react-native/experimental-avatar": patch +"@fluentui-react-native/drawer": patch +"@fluentui-react-native/experimental-shadow": patch +"@fluentui-react-native/framework": patch +"@fluentui-react-native/use-slots": patch +"@fluentui-react-native/apple-theme": patch +"@fluentui-react-native/theme-types": patch +"@fluentui-react-native/win32-theme": patch +"@fluentui-react-native/callout": patch +"@fluentui-react-native/divider": patch +"@fluentui-react-native/persona": patch +"@fluentui-react-native/tablist": patch +"@fluentui-react-native/use-slot": patch +"@fluentui-react-native/avatar": patch +"@fluentui-react-native/button": patch +"@fluentui-react-native/switch": patch +"@fluentui-react-native/badge": patch +"@fluentui-react-native/input": patch +"@fluentui-react-native/stack": patch +"@fluentui-react-native/chip": patch +"@fluentui-react-native/icon": patch +"@fluentui-react-native/link": patch +"@fluentui-react-native/menu": patch +"@fluentui-react-native/text": patch +"@fluentui-react-native/theme": patch +"@fluentui-react-native/framework-base": patch +"@fluentui/react-native": patch +"@fluentui-react-native/adapters": patch +"@fluentui-react-native/styling-utils": patch +"@fluentui-react-native/tokens": patch +"@fluentui-react-native/tester": patch +"@fluentui-react-native/codemods": patch +--- + +Update packages to esm, with new builds with project references diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000000..87957ae6d6c --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1 @@ +See [AGENTS.md](../AGENTS.md) for guidance on working with code in this repository. diff --git a/.github/workflows/changesets-version.yml b/.github/workflows/changesets-version.yml index 5f890a4d036..a8570b92cf3 100644 --- a/.github/workflows/changesets-version.yml +++ b/.github/workflows/changesets-version.yml @@ -20,7 +20,7 @@ jobs: persist-credentials: false - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 - name: Install dependencies run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 74b2da03047..aa72be2da9f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,7 +39,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0300b1f5080..8976dc9d51c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -15,12 +15,12 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: node-version: 22 @@ -36,10 +36,10 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: platform: android node-version: 22 @@ -62,18 +62,17 @@ jobs: macos: name: macOS PR - runs-on: macos-latest + runs-on: macos-26 timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: platform: macos node-version: 22 - xcode-developer-dir: /Applications/Xcode_16.4.app - name: Install dependencies run: yarn @@ -99,37 +98,36 @@ jobs: CCACHE_DISABLE: 1 # Disable macOS E2E test to unblock 0.81 checkin - #- name: Prepare E2E macOS tests - # run: yarn e2eprep:macos - # working-directory: apps/E2E - - #- name: Run E2E macOS tests - # run: yarn e2etest:macos - # working-directory: apps/E2E - - #- name: Upload E2E macOS artifacts - # if: ${{ always() }} - # uses: actions/upload-artifact@v4 - # with: - # name: E2E_macos_Dump - # path: | - # apps/E2E/reports - # apps/E2E/errorShots + - name: Prepare E2E macOS tests + run: yarn e2eprep:macos + working-directory: apps/E2E + + - name: Run E2E macOS tests + run: yarn e2etest:macos + working-directory: apps/E2E + + - name: Upload E2E macOS artifacts + if: ${{ always() }} + uses: actions/upload-artifact@v7 + with: + name: E2E_macos_Dump + path: | + apps/E2E/reports + apps/E2E/errorShots ios: name: iOS PR - runs-on: macos-latest + runs-on: macos-26 timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: platform: ios node-version: 22 - xcode-developer-dir: /Applications/Xcode_16.4.app - name: Install dependencies run: yarn @@ -168,12 +166,12 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 5 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: platform: windows node-version: 22 @@ -204,7 +202,7 @@ jobs: working-directory: apps/E2E - name: Start packager - run: cmd /c "start yarn start" + run: cmd /c "start /B cmd /c yarn start ^> packager.log 2^>^&1" working-directory: apps/fluent-tester # First build of RNW may fail with Cannot open include file: 'CppWinRTIncludes.h' error @@ -221,12 +219,13 @@ jobs: - name: Upload E2E Windows artifacts if: ${{ always() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: E2E_RNW_Dump path: | apps/E2E/reports apps/E2E/errorShots + apps/fluent-tester/packager.log win32: name: Win32 PR @@ -234,10 +233,10 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: platform: windows node-version: 22 @@ -269,7 +268,7 @@ jobs: - name: Upload E2E Win32 artifacts if: ${{ always() }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: E2E_win32_Dump path: | @@ -312,10 +311,10 @@ jobs: has-tarballs: ${{ steps.check.outputs.has-tarballs }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: node-version: 22 @@ -340,7 +339,7 @@ jobs: - name: Upload packed tarballs if: steps.check.outputs.has-tarballs == 'true' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: packed-tarballs-dry-run path: _packed/ @@ -353,10 +352,10 @@ jobs: if: needs.publish-dry-run-pack.outputs.has-tarballs == 'true' steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: node-version: 22 @@ -364,7 +363,7 @@ jobs: run: yarn - name: Download packed tarballs - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: packed-tarballs-dry-run path: _packed/ @@ -378,10 +377,10 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up toolchain - uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.0.14 + uses: microsoft/react-native-test-app/.github/actions/setup-toolchain@5.2.3 with: node-version: 22 diff --git a/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch b/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch new file mode 100644 index 00000000000..c8ed2442ac3 --- /dev/null +++ b/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch @@ -0,0 +1,12 @@ +diff --git a/package.json b/package.json +index e3ae6f57a9e873a489a9f15bc16ec5e27131df02..30b6c1c1714372c533e096eb8fb12b8e1de7a1c0 100644 +--- a/package.json ++++ b/package.json +@@ -42,7 +42,6 @@ + "yargs": "^14.0.0" + }, + "dependencies": { +- "@types/react-native": "^0.68.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { diff --git a/.yarn/plugins/@rnx-kit/yarn-plugin-ignore.cjs b/.yarn/plugins/@rnx-kit/yarn-plugin-ignore.cjs new file mode 100644 index 00000000000..0c752c44eda --- /dev/null +++ b/.yarn/plugins/@rnx-kit/yarn-plugin-ignore.cjs @@ -0,0 +1,153 @@ +/* eslint-disable */ +//prettier-ignore +module.exports = { +name: "@rnx-kit/yarn-plugin-ignore", +factory: function (require) { +"use strict"; +var plugin = (() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + + // src/index.ts + var index_exports = {}; + __export(index_exports, { + IgnoreFetcher: () => IgnoreFetcher, + IgnoreResolver: () => IgnoreResolver, + default: () => index_default + }); + + // src/IgnoreFetcher.ts + var import_fslib = __require("@yarnpkg/fslib"); + var fs = __toESM(__require("fs"), 1); + + // src/constants.ts + var IGNORE_PROTOCOL = "ignore:"; + var STUB_MODULE = `module.exports = {}; +`; + var STUB_PACKAGE = `{ + "name": "@rnx-kit/yarn-plugin-ignore/stub", + "version": "0.0.0", + "description": "Stub package for '@rnx-kit/yarn-plugin-ignore'", + "main": "index.js" +} +`; + + // src/IgnoreFetcher.ts + var IgnoreFetcher = class { + supports(locator) { + return locator.reference.startsWith(IGNORE_PROTOCOL); + } + getLocalPath() { + return null; + } + async fetch(_locator, opts) { + const base = opts.project.cwd; + const sourceFs = new import_fslib.CwdFS(base); + const localPath = import_fslib.ppath.resolve( + base, + "node_modules", + ".generated", + "@rnx-kit", + "yarn-plugin-ignore-stub" + ); + const nativePath = import_fslib.npath.fromPortablePath(localPath); + if (!fs.existsSync(nativePath)) { + fs.mkdirSync(nativePath, { recursive: true, mode: 493 }); + fs.writeFileSync(import_fslib.npath.join(nativePath, "package.json"), STUB_PACKAGE); + fs.writeFileSync(import_fslib.npath.join(nativePath, "index.js"), STUB_MODULE); + } + return { + packageFs: new import_fslib.CwdFS(localPath, { baseFs: sourceFs }), + prefixPath: import_fslib.PortablePath.dot, + discardFromLookup: true, + localPath + }; + } + }; + + // src/IgnoreResolver.ts + var import_core = __require("@yarnpkg/core"); + var import_node_assert = __require("assert"); + var IgnoreResolver = class { + supportsDescriptor(descriptor) { + return descriptor.range.startsWith(IGNORE_PROTOCOL); + } + supportsLocator(locator) { + return locator.reference.startsWith(IGNORE_PROTOCOL); + } + shouldPersistResolution() { + return false; + } + bindDescriptor(descriptor, _fromLocator) { + return descriptor; + } + getResolutionDependencies() { + return {}; + } + async getCandidates(descriptor, _dependencies, _opts) { + return [import_core.structUtils.makeLocator(descriptor, IGNORE_PROTOCOL)]; + } + async getSatisfying(_descriptor, _dependencies, locators, _opts) { + (0, import_node_assert.equal)(locators.length, 1, "Expected a single locator candidate"); + return { locators, sorted: true }; + } + async resolve(locator, opts) { + const manifest = new import_core.Manifest(); + return { + ...locator, + version: "0.0.0", + languageName: opts.project.configuration.get("defaultLanguageName"), + linkType: import_core.LinkType.SOFT, + conditions: null, + dependencies: manifest.dependencies, + peerDependencies: manifest.peerDependencies, + dependenciesMeta: manifest.dependenciesMeta, + peerDependenciesMeta: manifest.peerDependenciesMeta, + bin: manifest.bin + }; + } + }; + + // src/index.ts + var plugin = { + fetchers: [IgnoreFetcher], + resolvers: [IgnoreResolver] + }; + var index_default = plugin; + return __toCommonJS(index_exports); +})(); +return plugin; +} +}; +//# sourceMappingURL=yarn-plugin-ignore.cjs.map diff --git a/.yarnrc.yml b/.yarnrc.yml index fe6da470220..9213df21c83 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -19,17 +19,17 @@ catalog: "@rnx-kit/lint-package": ^0.1.0 "@rnx-kit/metro-config": ^2.2.4 "@rnx-kit/metro-resolver-symlinks": ^0.2.11 - "@rnx-kit/metro-serializer": "^2.0.3" - "@rnx-kit/metro-serializer-esbuild": "^0.3.2" + "@rnx-kit/metro-serializer": ^2.0.3 + "@rnx-kit/metro-serializer-esbuild": ^0.3.2 "@rnx-kit/oxlint-config": ^1.0.3 "@rnx-kit/reporter": ^0.1.0 "@rnx-kit/tools-packages": ^0.1.3 "@rnx-kit/tools-react-native": ^2.3.7 - "@rnx-kit/tools-workspaces": ^0.2.3 "@rnx-kit/tools-typescript": ^0.1.3 + "@rnx-kit/tools-workspaces": ^0.2.3 "@rnx-kit/tsconfig": ^3.0.3 - "@rnx-kit/types-kit-config": "^1.0.0" - "@rnx-kit/types-node": "^1.0.0" + "@rnx-kit/types-kit-config": ^1.0.0 + "@rnx-kit/types-node": ^1.0.0 "@types/jasmine": 5.1.13 "@types/node": ^22.19.7 "@wdio/appium-service": ^9.24.0 @@ -313,5 +313,8 @@ plugins: - checksum: 672e525b81762c6162366bd3ffec5e86ab8fac2655ef0267047e86a0f32e79a4bde0f170bc30479663f40aa3f006d91f8dc3289f679dd4dc5ae5a5d12ba3ad0b path: .yarn/plugins/@rnx-kit/yarn-plugin-dynamic-extensions.cjs spec: "https://raw.githubusercontent.com/microsoft/rnx-kit/main/incubator/yarn-plugin-dynamic-extensions/index.js" + - checksum: 8d8252c376e41a67ca509b2778f3fb92164aa91828459ae8a6aa0e13f1b6f9843586d0983ba9a200f6d813d37efc171474c8dbc85b0dff01df56c0d476c238ce + path: .yarn/plugins/@rnx-kit/yarn-plugin-ignore.cjs + spec: "https://raw.githubusercontent.com/microsoft/rnx-kit/main/incubator/yarn-plugin-ignore/dist/yarn-plugin-ignore.cjs" yarnPath: .yarn/releases/yarn-4.13.0.cjs diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000000..19fb94bc8dc --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,273 @@ +# AGENTS.md + +This file provides guidance to coding agents (Claude Code and others) when working with code in this repository. + +## Project Overview + +This is the **FluentUI React Native** repository, a monorepo containing React Native components that implement Microsoft's Fluent Design System. The repository supports multiple platforms including iOS, Android, macOS, Windows, and Win32. + +## Repository Architecture + +### High-Level Structure + +``` +/apps/ - Demo and test applications + /fluent-tester/ - Main test app for component development + /E2E/ - End-to-end testing setup using Appium/WebDriverIO + /win32/ - Win32-specific test app + /component-generator/ - Tool to generate new components +/packages/ - Core library packages + /components/ - UI component implementations (Button, Checkbox, Avatar, etc.) + /framework/ - Core theming and composition framework + /composition/ - Component composition factory (current approach) + /theme/ - Theme system + /use-tokens/ - Token-based styling hooks + /use-slots/ - Slot-based component composition + /theming/ - Theme definitions for different platforms + /android-theme/ + /apple-theme/ + /default-theme/ + /win32-theme/ + /experimental/ - Components under active development + /deprecated/ - Old framework code (foundation-compose, foundation-composable) + /utils/ - Shared utilities and tools +/scripts/ - Build and development scripts (fluentui-scripts CLI) +/docs/ - Component and theming documentation +``` + +### Key Framework Concepts + +**Composition Framework**: The repository uses `@fluentui-react-native/composition` (located at `packages/framework/composition/`) for building components. This is the current approach and is simpler than the older foundation-compose/foundation-composable frameworks in `/deprecated/`. + +**Slots**: The slot pattern is used to compose higher-order components. A slot represents an inner component (actual entry in the render tree). For example, a Button might have slots for `root`, `icon`, and `content`. This allows advanced customization scenarios. Components wrapping a single native component typically have one slot. + +**Tokens**: Design tokens handle styling and customization. Tokens are design-time values set via theme or component customization (e.g., "brandColor"). Tokens can also be props (specified via "TokensThatAreAlsoProps"). This system enables simpler customization and better memoization. + +**Platform-Specific Files**: Components use platform-specific files with extensions like `.ios.ts`, `.android.ts`, `.win32.ts`, `.macos.ts` for platform-specific implementations. + +**Legacy vs V1**: Many components have both legacy and V1 implementations (e.g., `Button` and `ButtonV1`). The V1 versions use the newer composition framework and are preferred. + +## Build System & Commands + +The repository builds as a **single unified TypeScript project-references graph** compiled by **tsgo** (`@typescript/native-preview`). The root `tsconfig.json` lists every package's `tsconfig.json` under `references`, and `yarn build` runs `tsgo -b` over that graph, building each package in dependency order. **Lage** orchestrates the non-build tasks (bundle, test, lint, clean), and **Yarn 4 (Berry)** in **pnpm mode** manages dependencies (configured in `.yarnrc.yml`). + +### Primary Commands (from the repo root) + +```bash +yarn build # Unified TypeScript build of all packages (tsgo -b); emits each package's lib/ +yarn build --clean # Remove build outputs (tsgo -b --clean); follow with `yarn build` for a full rebuild +yarn lage test # Build + run tests across packages +yarn lage lint # Lint across packages +yarn lint-fix # Lint with autofix (cross-env FURN_FIX_MODE=true lage lint) +yarn bundle:repo # Bundle all packages (lage bundle) +yarn lage buildci # CI aggregate graph: lint-repo, check-publishing, build, test, lint +yarn clean # Clean build artifacts (lage clean) +yarn format # Format code with oxfmt +yarn format:check # Check formatting without writing +``` + +### Repo-Level Checks & Housekeeping + +```bash +yarn lint-repo # Repo-wide structural lint (scripts/src/tasks/lintRepo.ts) +yarn lint-lockfile # Validate the Yarn lockfile +yarn check-publishing # Validate package publishing configuration +yarn change # Create a change file for the current branch +yarn change:check # Verify required change files exist +yarn docs # Start the documentation site +``` + +### Lage Configuration + +The task pipeline is defined in `lage.config.mjs`: + +- Tasks declare dependency ordering (e.g. `test` dependsOn `build`) +- `buildci` is the aggregate CI alias (lint-repo, check-publishing, build, test, lint) +- Lage caches task outputs; add `--no-cache` to bypass caching and `--verbose` for detailed output + +### Package-Level Commands + +Each package's own `build` script is `tsgo -b` (it builds that package together with its referenced dependencies). Other per-package tasks run through the `fluentui-scripts` CLI (in `/scripts/`): + +- `yarn build` - tsgo project-references build (emits to `lib/`) +- `yarn lint` - ESLint (`fluentui-scripts lint`) +- `yarn test` - Jest tests where present (`fluentui-scripts jest`) +- `yarn depcheck` - Unused-dependency check (`fluentui-scripts depcheck`) +- `yarn format` / `yarn format:fix` - Check / fix formatting + +`fluentui-scripts` also retains a `build` command that can emit dual ESM (`lib/`) and CommonJS (`lib-commonjs/`) output driven by per-package build config, but packages on this branch build with `tsgo -b` directly. + +## TypeScript Configuration + +The repo uses **TypeScript 5.8+** via **tsgo** (`@typescript/native-preview`), which is automatically added as a dev dependency to every package that has a `tsconfig.json` through dynamic package extensions (`scripts/dynamic.extensions.mts`). + +The whole repo compiles as one **composite project-references graph**: the root `tsconfig.json` lists every package under `references`, `tsgo -b` builds them in dependency order, and each package caches incremental state in `.cache/tsconfig.tsbuildinfo`. + +### Key TypeScript Settings + +- Base config: `scripts/configs/tsconfig/tsconfig.json` → extends `tsconfig.strict.json` → `@rnx-kit/tsconfig/tsconfig.nodenext.json` +- `target` / `lib`: `esnext` +- `module`: `esnext`, `moduleResolution`: `bundler` (ESM) +- `jsx`: `react-jsx` +- `rewriteRelativeImportExtensions: true` (ESM relative-import extension rewriting) +- `composite: true` (required for project references), `outDir: lib` +- Strict mode, relaxed for legacy compatibility (`strictNullChecks`, `noImplicitAny`, and `strictBindCallApply` are disabled in the base config) + +### Compatibility Notes + +- `suppressImplicitAnyIndexErrors` was removed in TS 5.8+ +- `Platform.OS` doesn't include `'win32'` in the React Native types even though react-native-windows supports it at runtime — use `Platform.OS === ('win32' as any)` +- The platform React Native forks (`react-native`, `react-native-windows`, `react-native-macos`, `@office-iss/react-native-win32`) have overlapping but divergent type definitions. Do **not** import more than one fork into a single program's type graph (it produces order-dependent type confusion under the unified build). Keep fork imports in `.win32.ts` / `.windows.ts` / `.macos.ts` files, or redeclare the needed shapes platform-neutrally. + +### Framework Type System + +The composition framework uses precise types for better type safety: + +- **`SlotFn`**: Slot functions return `React.ReactElement | null` (not `ReactNode`) + - This reflects the actual behavior: slots always return elements via staged render or `React.createElement` + - Provides better type inference when accessing slot props (e.g., `Slots.root({}).props`) +- **`FinalRender`**: Final render functions in staged components return `JSX.Element | null` + - Used in composition framework's `useRender` functions + - Ensures type compatibility between staged components and the composition system + +## Development Workflow + +### Setting Up Development Environment + +1. Clone repository +2. Run `yarn` to install dependencies +3. Run `yarn build` to build all packages +4. Launch FluentUI Tester app for component testing (see `/apps/fluent-tester/README.md`) + +### Component Development + +**Component Location**: Components are in `/packages/components/` (stable) or `/packages/experimental/` (under development). + +**Component Structure**: Each component typically has: + +- `package.json` - Package definition with workspace dependencies +- `src/index.ts` - Main export file +- `src/.tsx` - Component implementation (requires `/** @jsxImportSource @fluentui-react-native/framework-base */` pragma) +- `src/.types.ts` - TypeScript type definitions +- `src/.styling.ts` - Styling and token definitions +- `src/..ts` - Platform-specific implementations +- `SPEC.md` - Component specification and usage documentation +- `MIGRATION.md` - Migration guide (for V1 components) +- `tsconfig.json`, `babel.config.js`, `jest.config.js`, `eslint.config.js` + +**Using Composition Framework**: Use `@fluentui-react-native/composition` for new components. For simpler components without slots/tokens, use the `stagedComponent` pattern from `@fluentui-react-native/use-slot`. + +**JSX Runtime**: All components use the modern automatic JSX runtime: + +- Add `/** @jsxImportSource @fluentui-react-native/framework-base */` at the top of `.tsx` files +- The custom jsx-runtime intercepts JSX calls to optimize slot rendering +- No need to import `withSlots` - it's handled automatically by the runtime +- Components using React Fragments (`<>...`) work automatically (Fragment is re-exported from the jsx-runtime) +- Packages using the jsx-runtime need `@fluentui-react-native/framework-base` in `devDependencies` + +**TypeScript Patterns**: + +- Slot functions automatically return `React.ReactElement`, so you can access `.props` directly without type assertions +- When checking for win32 platform: `Platform.OS === ('win32' as any)` - TypeScript doesn't recognize 'win32' but react-native-windows supports it +- Final render functions should return `FinalRender` with children as rest parameters: `(props: TProps, ...children: React.ReactNode[])` + +**Native Modules**: Components with native code (iOS/Android/Windows): + +- Typically have one root slot wrapping the native component +- Use `codegenNativeComponent` for new architecture compatibility +- May use `constantsToExport` for default values from native side +- iOS/macOS: Include `.podspec` files +- Must be added to FluentTester's Podfile (transitive dependencies aren't autolinked) + +### Creating a New Component + +1. Create directory: `/packages/components/` or `/packages/experimental/` +2. Copy structure from existing component (e.g., Shimmer, Button) +3. Update `package.json` with correct name and dependencies (use `workspace:*` for internal packages) +4. Add the new package's `tsconfig.json` to the root `tsconfig.json` `references` so it joins the unified build +5. Create source files in `src/` +6. Add test page to FluentTester at `/apps/fluent-tester/src/TestComponents//` +7. Register test page in `testPages.tsx` and platform-specific `testPages..tsx` +8. Add E2E tests (see E2E Testing section) +9. Run `yarn` and `yarn build` from root +10. For Apple platforms: run `pod install` in test app directories + +### Theming + +Platform-specific themes are in `/packages/theming/`: + +- `android-theme/` - Android theming +- `apple-theme/` - iOS and macOS theming +- `win32-theme/` - Win32 theming +- `default-theme/` - Cross-platform defaults +- `theme-tokens/` - Token definitions +- `theme-types/` - TypeScript types for themes + +Components require `ThemeProvider` from `@fluentui-react-native/theme` to work properly. + +### Testing + +**Manual Testing**: Use FluentUI Tester app (`/apps/fluent-tester/`) for interactive component testing. Test pages are in `/apps/fluent-tester/src/TestComponents/`. + +**E2E Testing**: Required for all new components. Uses Appium + WebDriverIO. + +- E2E tests live in `/apps/E2E/src//` +- Each component needs: + - Page Object (`PageObject..ts`) - Interface to interact with test page + - Spec Document (`Spec..ts`) - Jasmine test cases + - Constants file in test component (`/apps/fluent-tester/src/TestComponents//consts.ts`) +- Test pages must include: + - `testID` on first section matching page object's `_pageName` + - Optional `e2eSections` prop for dedicated E2E test elements +- Run E2E tests: `yarn e2etest:` from `/apps/E2E/` + +**Unit Tests**: Component-specific Jest tests where present, typically in `src/` directories. Run them with `yarn test` in a package or `yarn lage test` from the root. + +### Platform-Specific Development + +**iOS/macOS**: + +- May wrap native controls from FluentUI Apple +- Requires `.podspec` files for native modules +- Run `pod install` after adding dependencies + +**Android**: + +- Platform-specific styling and tokens +- Uses `accessibilityLabel` for E2E selectors (other platforms use `testID`) + +**Win32**: + +- Separate test app at `/apps/win32/` +- Uses WinAppDriver for E2E testing + +**Windows (UWP)**: + +- Separate test app configuration +- Legacy support + +## Version Management + +**Changesets**: Used for change logs and versioning. + +- Run `yarn change` to create a change file when modifying packages +- Change files are required before merging PRs (validated in CI via `yarn change:check`) +- Changesets config in `.changeset/config.json` +- Major versions are disallowed (validated in CI via `.github/scripts/validate-changesets.mts`) +- Version bump PRs are created automatically by GitHub Actions; `yarn changeset:version` applies version bumps +- Publishing happens in Azure Pipelines using `changeset publish` + +## Important Notes + +- This is an **alpha-stage** library under active development +- **Requires TypeScript 5.8+** with `@typescript/native-preview` (tsgo); the unified build runs `tsgo -b` over the root project-references graph +- **Uses Yarn 4 in pnpm mode** for dependency management (configured in `.yarnrc.yml`) +- **Uses modern automatic JSX runtime** - all components should use `@jsxImportSource @fluentui-react-native/framework-base` +- **Dynamic package extensions**: Common dev dependencies (TypeScript/tsgo, Jest, ESLint, Prettier) are automatically added via `scripts/dynamic.extensions.mts` +- New packages must be added to the root `tsconfig.json` `references` to join the unified build +- Follow existing component patterns for consistency +- Test components using FluentUI Tester app before submitting PRs +- Platform differences should be documented in component `SPEC.md` files +- Use the newer composition framework (`@fluentui-react-native/composition`) for new components, not the deprecated foundation frameworks +- When importing V1 components, consider aliasing: `import { ButtonV1 as Button }` +- Slot functions return `React.ReactElement` - you can safely access `.props` without type assertions diff --git a/CLAUDE.md b/CLAUDE.md index ac47cd97c0f..7a9c7c03ddb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,271 +1,3 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## Project Overview - -This is the **FluentUI React Native** repository, a monorepo containing React Native components that implement Microsoft's Fluent Design System. The repository supports multiple platforms including iOS, Android, macOS, Windows, and Win32. - -## Repository Architecture - -### High-Level Structure - -``` -/apps/ - Demo and test applications - /fluent-tester/ - Main test app for component development - /E2E/ - End-to-end testing setup using Appium/WebDriverIO - /win32/ - Win32-specific test app - /component-generator/ - Tool to generate new components -/packages/ - Core library packages - /components/ - UI component implementations (Button, Checkbox, Avatar, etc.) - /framework/ - Core theming and composition framework - /composition/ - Component composition factory (current approach) - /theme/ - Theme system - /use-tokens/ - Token-based styling hooks - /use-slots/ - Slot-based component composition - /theming/ - Theme definitions for different platforms - /android-theme/ - /apple-theme/ - /default-theme/ - /win32-theme/ - /experimental/ - Components under active development - /deprecated/ - Old framework code (foundation-compose, foundation-composable) - /utils/ - Shared utilities and tools -/scripts/ - Build and development scripts (fluentui-scripts CLI) -/docs/ - Component and theming documentation -``` - -### Key Framework Concepts - -**Composition Framework**: The repository uses `@fluentui-react-native/composition` (located at `packages/framework/composition/`) for building components. This is the current approach and is simpler than the older foundation-compose/foundation-composable frameworks in `/deprecated/`. - -**Slots**: The slot pattern is used to compose higher-order components. A slot represents an inner component (actual entry in the render tree). For example, a Button might have slots for `root`, `icon`, and `content`. This allows advanced customization scenarios. Components wrapping a single native component typically have one slot. - -**Tokens**: Design tokens handle styling and customization. Tokens are design-time values set via theme or component customization (e.g., "brandColor"). Tokens can also be props (specified via "TokensThatAreAlsoProps"). This system enables simpler customization and better memoization. - -**Platform-Specific Files**: Components use platform-specific files with extensions like `.ios.ts`, `.android.ts`, `.win32.ts`, `.macos.ts` for platform-specific implementations. - -**Legacy vs V1**: Many components have both legacy and V1 implementations (e.g., `Button` and `ButtonV1`). The V1 versions use the newer composition framework and are preferred. - -## Build System & Commands - -The project uses **Yarn 4** (Berry) in **pnpm mode** with **Lage** as the task runner for orchestrating builds across the monorepo. The pnpm mode provides better disk space efficiency and stricter dependency management. - -### Primary Commands - -```bash -yarn build # TypeScript build for all packages (outputs to lib/ and lib-commonjs/) -yarn test # Build, lint, and run tests across all packages -yarn lint # Lint across all packages -yarn lage bundle # Bundle all packages -yarn bundle:repo # Convenience wrapper for the repo bundle graph -yarn lage buildci # Configured CI graph alias from lage.config.mjs -yarn clean # Clean build artifacts -``` - -### Development Commands - -```bash -yarn format # Format code with oxfmt -yarn depcheck # Check for unused dependencies across packages -yarn depcheck-fix # Fix depcheck issues automatically -yarn align-deps # Align React Native dependencies using @rnx-kit/align-deps -yarn changeset # Generate changeset files (required before PR merge) -``` - -### Lage Configuration - -The build pipeline is defined in `lage.config.js`: - -- Tasks have dependency ordering (e.g., `test` depends on `build`) -- Lage uses caching to avoid redundant steps -- Add `--no-cache` to bypass caching -- Add `--verbose` for detailed output - -### Package-Level Commands - -Individual packages use `fluentui-scripts` (in `/scripts/`) which provides: - -- `yarn build` - TypeScript compilation to `lib/` (ESM) and `lib-commonjs/` (CJS) - - The build script automatically sets `--moduleResolution` to match `--module` for TypeScript 5.8+ compatibility - - ESM builds use `--module esnext --moduleResolution bundler` - - CJS builds use `--module node16 --moduleResolution node16` -- `yarn lint` - ESLint -- `yarn lint-package` - Lint package configuration (includes align-deps and depcheck) - - Use `--fix` flag to automatically fix issues - - Validates dependencies, scripts, entry points, and build configuration -- `yarn test` - Jest tests (where applicable) -- `yarn depcheck` - Check for unused dependencies -- `yarn format` - Check code formatting -- `yarn format:fix` - Fix code formatting - -## TypeScript Configuration - -The repository uses **TypeScript 5.8+** with **@typescript/native-preview** for improved performance and React Native compatibility. The native preview is automatically added to packages with a `tsconfig.json` via dynamic package extensions. - -### Key TypeScript Settings - -- Base configuration in `/scripts/configs/tsconfig.json` -- Module system: `node16` with matching `moduleResolution: node16` -- Target: `es2022` -- Strict mode enabled (with some exceptions for legacy code compatibility) -- **TypeScript Native Preview**: Packages automatically receive `@typescript/native-preview` as a development dependency - -### TypeScript 5.8+ Compatibility Notes - -- The `suppressImplicitAnyIndexErrors` option has been removed (deprecated in TS 5.8+) -- Module resolution must match module format when using Node16 resolution -- Stricter type checking for platform values (e.g., `Platform.OS` doesn't include 'win32' in React Native types, but react-native-windows does support it at runtime) -- TypeScript native preview provides better performance for large React Native codebases - -### Framework Type System - -The composition framework uses precise types for better type safety: - -- **`SlotFn`**: Slot functions return `React.ReactElement | null` (not `ReactNode`) - - This reflects the actual behavior: slots always return elements via staged render or `React.createElement` - - Provides better type inference when accessing slot props (e.g., `Slots.root({}).props`) -- **`FinalRender`**: Final render functions in staged components return `JSX.Element | null` - - Used in composition framework's `useRender` functions - - Ensures type compatibility between staged components and the composition system - -## Development Workflow - -### Setting Up Development Environment - -1. Clone repository -2. Run `yarn` to install dependencies -3. Run `yarn build` to build all packages -4. Launch FluentUI Tester app for component testing (see `/apps/fluent-tester/README.md`) - -### Component Development - -**Component Location**: Components are in `/packages/components/` (stable) or `/packages/experimental/` (under development). - -**Component Structure**: Each component typically has: - -- `package.json` - Package definition with workspace dependencies -- `src/index.ts` - Main export file -- `src/.tsx` - Component implementation (requires `/** @jsxImportSource @fluentui-react-native/framework-base */` pragma) -- `src/.types.ts` - TypeScript type definitions -- `src/.styling.ts` - Styling and token definitions -- `src/..ts` - Platform-specific implementations -- `SPEC.md` - Component specification and usage documentation -- `MIGRATION.md` - Migration guide (for V1 components) -- `tsconfig.json`, `babel.config.js`, `jest.config.js`, `eslint.config.js` - -**Using Composition Framework**: Use `@fluentui-react-native/composition` for new components. For simpler components without slots/tokens, use the `stagedComponent` pattern from `@fluentui-react-native/use-slot`. - -**JSX Runtime**: All components use the modern automatic JSX runtime: - -- Add `/** @jsxImportSource @fluentui-react-native/framework-base */` at the top of `.tsx` files -- The custom jsx-runtime intercepts JSX calls to optimize slot rendering -- No need to import `withSlots` - it's handled automatically by the runtime -- Components using React Fragments (`<>...`) work automatically (Fragment is re-exported from the jsx-runtime) -- Packages using the jsx-runtime need `@fluentui-react-native/framework-base` in `devDependencies` - -**TypeScript Patterns**: - -- Slot functions automatically return `React.ReactElement`, so you can access `.props` directly without type assertions -- When checking for win32 platform: `Platform.OS === ('win32' as any)` - TypeScript doesn't recognize 'win32' but react-native-windows supports it -- Final render functions should return `FinalRender` with children as rest parameters: `(props: TProps, ...children: React.ReactNode[])` - -**Native Modules**: Components with native code (iOS/Android/Windows): - -- Typically have one root slot wrapping the native component -- Use `codegenNativeComponent` for new architecture compatibility -- May use `constantsToExport` for default values from native side -- iOS/macOS: Include `.podspec` files -- Must be added to FluentTester's Podfile (transitive dependencies aren't autolinked) - -### Creating a New Component - -1. Create directory: `/packages/components/` or `/packages/experimental/` -2. Copy structure from existing component (e.g., Shimmer, Button) -3. Update `package.json` with correct name and dependencies (use `workspace:*` for internal packages) -4. Create source files in `src/` -5. Add test page to FluentTester at `/apps/fluent-tester/src/TestComponents//` -6. Register test page in `testPages.tsx` and platform-specific `testPages..tsx` -7. Add E2E tests (see E2E Testing section) -8. Run `yarn` and `yarn build` from root -9. For Apple platforms: run `pod install` in test app directories - -### Theming - -Platform-specific themes are in `/packages/theming/`: - -- `android-theme/` - Android theming -- `apple-theme/` - iOS and macOS theming -- `win32-theme/` - Win32 theming -- `default-theme/` - Cross-platform defaults -- `theme-tokens/` - Token definitions -- `theme-types/` - TypeScript types for themes - -Components require `ThemeProvider` from `@fluentui-react-native/theme` to work properly. - -### Testing - -**Manual Testing**: Use FluentUI Tester app (`/apps/fluent-tester/`) for interactive component testing. Test pages are in `/apps/fluent-tester/src/TestComponents/`. - -**E2E Testing**: Required for all new components. Uses Appium + WebDriverIO. - -- E2E tests live in `/apps/E2E/src//` -- Each component needs: - - Page Object (`PageObject..ts`) - Interface to interact with test page - - Spec Document (`Spec..ts`) - Jasmine test cases - - Constants file in test component (`/apps/fluent-tester/src/TestComponents//consts.ts`) -- Test pages must include: - - `testID` on first section matching page object's `_pageName` - - Optional `e2eSections` prop for dedicated E2E test elements -- Run E2E tests: `yarn e2etest:` from `/apps/E2E/` - -**Unit Tests**: Component-specific Jest tests where present, typically in `src/` directories. - -### Platform-Specific Development - -**iOS/macOS**: - -- May wrap native controls from FluentUI Apple -- Requires `.podspec` files for native modules -- Run `pod install` after adding dependencies - -**Android**: - -- Platform-specific styling and tokens -- Uses `accessibilityLabel` for E2E selectors (other platforms use `testID`) - -**Win32**: - -- Separate test app at `/apps/win32/` -- Uses WinAppDriver for E2E testing - -**Windows (UWP)**: - -- Separate test app configuration -- Legacy support - -## Version Management - -**Changesets**: Used for change logs and versioning. - -- Run `yarn changeset` to create changeset files when modifying packages -- Changesets are required before merging PRs (validated in CI) -- Changesets config in `.changeset/config.json` -- Major versions are disallowed (validated in CI via `.github/scripts/validate-changesets.mts`) -- Version bump PRs are created automatically by GitHub Actions -- Publishing happens in Azure Pipelines using `changeset publish` - -## Important Notes - -- This is an **alpha-stage** library under active development -- **Requires TypeScript 5.8+** with `@typescript/native-preview` for proper type checking and module resolution -- **Uses Yarn 4 in pnpm mode** for dependency management (configured in `.yarnrc.yml`) -- **Uses modern automatic JSX runtime** - all components should use `@jsxImportSource @fluentui-react-native/framework-base` -- **Dynamic package extensions**: Common dev dependencies (TypeScript, Jest, ESLint, Prettier) are automatically added via `scripts/dynamic.extensions.mjs` -- **Integrated linting**: `yarn lint-package` now includes align-deps and depcheck validation -- Follow existing component patterns for consistency -- Test components using FluentUI Tester app before submitting PRs -- Platform differences should be documented in component `SPEC.md` files -- Use the newer composition framework (`@fluentui-react-native/composition`) for new components, not the deprecated foundation frameworks -- When importing V1 components, consider aliasing: `import { ButtonV1 as Button }` -- Slot functions return `React.ReactElement` - you can safely access `.props` without type assertions +See @AGENTS.md for guidance on working with code in this repository. diff --git a/apps/E2E/launchE2EWindows.ps1 b/apps/E2E/launchE2EWindows.ps1 index 47946aca9f0..33173aa008e 100644 --- a/apps/E2E/launchE2EWindows.ps1 +++ b/apps/E2E/launchE2EWindows.ps1 @@ -1,12 +1,7 @@ param ([switch]$enableDumpFiles = $false) -#Find package name of the react test app -$pkgName = (Get-AppxPackage -Name "40411fc5-8e92-4d46-b68d-b62df44b1366").PackageFamilyName - -Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/C", "start", "shell:AppsFolder\$pkgName!App" - - if ($enableDumpFiles) { + # Register WER local dumps BEFORE launching the app so first-launch crashes are captured. reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /f reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ReactApp.exe" /v DumpType /t REG_DWORD /d 2 /f reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ReactApp.exe" /v DumpFolder /t REG_EXPAND_SZ /d "$PSScriptRoot\errorShots" /f @@ -15,21 +10,63 @@ if ($enableDumpFiles) { Start-Sleep -Seconds 5 } -for ($i = 1; $i -le 10; $i++) { +#Find package name of the react test app +$pkgName = (Get-AppxPackage -Name "40411fc5-8e92-4d46-b68d-b62df44b1366").PackageFamilyName +Write-Host "Launching app: shell:AppsFolder\$pkgName!App" + +# Record the time we launched so we can scope event-log queries to this run. +$launchTime = Get-Date + +Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/C", "start", "shell:AppsFolder\$pkgName!App" + +$proc = $null +for ($i = 1; $i -le 30; $i++) { - if (Get-Process ReactApp -ErrorAction Ignore) - { - Write-Host "ReactApp is running" + $proc = Get-Process ReactApp -ErrorAction Ignore | Where-Object { $_.MainWindowHandle -ne 0 } | Select-Object -First 1 + if ($proc) { + Write-Host "ReactApp is running (PID=$($proc.Id), MainWindowHandle=0x$($proc.MainWindowHandle.ToString('x')))" break; } - Write-Host "Waiting for app to start..." + Write-Host "Waiting for app to start... ($i/30)" #Give app chance to create window Start-Sleep -Seconds 1 } +if (-not $proc) { + Write-Host "##[error]ReactApp did not produce a top-level window within 30s. Capturing diagnostics." + + Write-Host "----- Running processes named ReactApp* or React* -----" + Get-Process | Where-Object { $_.ProcessName -like 'React*' -or $_.ProcessName -like 'ReactApp*' } | Format-Table Id, ProcessName, MainWindowHandle, StartTime -AutoSize | Out-String | Write-Host + + Write-Host "----- WER LocalDumps registry -----" + reg query "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /s 2>&1 | Write-Host + + Write-Host "----- WER dump files captured -----" + Get-ChildItem "$PSScriptRoot\errorShots" -ErrorAction SilentlyContinue | Format-Table Name, Length, LastWriteTime -AutoSize | Out-String | Write-Host + + Write-Host "----- Application event log: WER / AppCrash entries since launch -----" + try { + Get-WinEvent -FilterHashtable @{LogName='Application'; StartTime=$launchTime; ProviderName=@('Windows Error Reporting','Application Error','.NET Runtime')} -ErrorAction Stop | + Select-Object -First 20 TimeCreated, ProviderName, Id, LevelDisplayName, Message | + Format-List | Out-String | Write-Host + } catch { + Write-Host "No matching Application events: $_" + } + + Write-Host "----- Packager log (if captured) -----" + $packagerLog = Join-Path $PSScriptRoot '..\fluent-tester\packager.log' + if (Test-Path $packagerLog) { + Get-Content $packagerLog -Tail 200 | Out-String | Write-Host + } else { + Write-Host "No packager log found at $packagerLog" + } + + throw "ReactApp.exe did not start a top-level window. See diagnostics above." +} + #Set env var for wdio.conf.windows to use as appium:appTopLevelWindow -$env:E2ETEST_APP_TOP_LEVEL_WINDOW = "0x" +(Get-Process ReactApp -ErrorAction Stop).MainWindowHandle.ToString("x") +$env:E2ETEST_APP_TOP_LEVEL_WINDOW = "0x" + $proc.MainWindowHandle.ToString('x') yarn "e2etest:windows" \ No newline at end of file diff --git a/apps/E2E/package.json b/apps/E2E/package.json index 94a0569bbb4..9214d8cbcae 100644 --- a/apps/E2E/package.json +++ b/apps/E2E/package.json @@ -13,7 +13,7 @@ "src/**/*", "dist/*" ], - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -21,14 +21,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "e2eprep:android": "cross-env APPIUM_HOME=.appium yarn exec appium driver install uiautomator2", "e2eprep:ios": "cross-env APPIUM_HOME=.appium yarn exec appium driver install xcuitest", "e2eprep:macos": "cross-env APPIUM_HOME=.appium yarn exec appium driver install mac2", diff --git a/apps/E2E/tsconfig.json b/apps/E2E/tsconfig.json index 698ce482488..97bea26d4a5 100644 --- a/apps/E2E/tsconfig.json +++ b/apps/E2E/tsconfig.json @@ -1,11 +1,19 @@ { "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { - "module": "Node16", - "moduleResolution": "Node16", "outDir": "lib", "types": ["@types/jasmine", "@wdio/globals/types", "@wdio/jasmine-framework", "node"], - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../packages/components/FocusZone/tsconfig.json" + }, + { + "path": "../../scripts/tsconfig.json" + } + ] } diff --git a/apps/component-generator/component-templates/ComponentTemplate/package.json b/apps/component-generator/component-templates/ComponentTemplate/package.json index 016d02b073b..f669d064962 100644 --- a/apps/component-generator/component-templates/ComponentTemplate/package.json +++ b/apps/component-generator/component-templates/ComponentTemplate/package.json @@ -19,7 +19,6 @@ "depcheck": "fluentui-scripts depcheck", "just": "fluentui-scripts", "lint": "fluentui-scripts lint", - "lint-package": "fluentui-scripts lint-package", "test": "fluentui-scripts jest", "update-snapshots": "fluentui-scripts jest -u", "format": "fluentui-scripts format", diff --git a/apps/fluent-tester/ios/Podfile b/apps/fluent-tester/ios/Podfile index 35817242e67..1044a51bb8c 100644 --- a/apps/fluent-tester/ios/Podfile +++ b/apps/fluent-tester/ios/Podfile @@ -15,7 +15,25 @@ react_native_path = "#{__dir__}/../node_modules/react-native" # (node-modules mode) # react_native_path = "#{__dir__}/../../../node_modules/react-native" -use_test_app! do |target| +# fmt 11.0.2 (pinned by React Native 0.81) fails to compile with Xcode 26 / Apple Clang 21, which is +# stricter about `consteval` (fixed upstream in fmt 11.1). Force fmt's compile-time consteval +# format-string checking off so the bundled fmt builds. This is ABI-safe and avoids a version bump +# (multiple pods pin fmt = 11.0.2). Re-applied on every `pod install`. +def patch_fmt_consteval(installer) + fmt_base = File.join(installer.sandbox.root.to_s, 'fmt', 'include', 'fmt', 'base.h') + return unless File.exist?(fmt_base) + + contents = File.read(fmt_base) + patched = contents.gsub('# define FMT_USE_CONSTEVAL 1', '# define FMT_USE_CONSTEVAL 0') + return if patched == contents + + # CocoaPods marks pod sources read-only; make the file writable before patching. + File.chmod(0o644, fmt_base) + File.write(fmt_base, patched) + Pod::UI.puts '[FluentTester] Patched fmt base.h to disable consteval (Xcode 26 / Clang 21 workaround)' +end + +use_test_app!(:post_install => ->(installer) { patch_fmt_consteval(installer) }) do |target| target.app do platform :ios, '16.0' end diff --git a/apps/fluent-tester/macos/Podfile b/apps/fluent-tester/macos/Podfile index beded05f9f2..87593c051a7 100644 --- a/apps/fluent-tester/macos/Podfile +++ b/apps/fluent-tester/macos/Podfile @@ -15,7 +15,25 @@ react_native_path = "#{__dir__}/../node_modules/react-native" # (node-modules mode) # react_native_path = "#{__dir__}/../../../node_modules/react-native" -use_test_app! do |target| +# fmt 11.0.2 (pinned by React Native 0.81) fails to compile with Xcode 26 / Apple Clang 21, which is +# stricter about `consteval` (fixed upstream in fmt 11.1). Force fmt's compile-time consteval +# format-string checking off so the bundled fmt builds. This is ABI-safe and avoids a version bump +# (multiple pods pin fmt = 11.0.2). Re-applied on every `pod install`. +def patch_fmt_consteval(installer) + fmt_base = File.join(installer.sandbox.root.to_s, 'fmt', 'include', 'fmt', 'base.h') + return unless File.exist?(fmt_base) + + contents = File.read(fmt_base) + patched = contents.gsub('# define FMT_USE_CONSTEVAL 1', '# define FMT_USE_CONSTEVAL 0') + return if patched == contents + + # CocoaPods marks pod sources read-only; make the file writable before patching. + File.chmod(0o644, fmt_base) + File.write(fmt_base, patched) + Pod::UI.puts '[FluentTester] Patched fmt base.h to disable consteval (Xcode 26 / Clang 21 workaround)' +end + +use_test_app!(:post_install => ->(installer) { patch_fmt_consteval(installer) }) do |target| target.app do platform :osx, '14' end diff --git a/apps/fluent-tester/macos/Podfile.lock b/apps/fluent-tester/macos/Podfile.lock index 32753ceb53e..afcdbfd3791 100644 --- a/apps/fluent-tester/macos/Podfile.lock +++ b/apps/fluent-tester/macos/Podfile.lock @@ -2663,7 +2663,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd - DoubleConversion: 5b92c4507c560bb62e7aa1acdf2785ea3ff08b3b + DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 FBLazyVector: 0e3076dbb16169b0afc2d701a24a526423b5e76b fmt: 24e7591456deb60b4a77518f83d9a916ac84223f @@ -2673,7 +2673,7 @@ SPEC CHECKSUMS: FRNMenuButton: 709f3218ce9a421c154ea0570acbeb3f535629d3 FRNRadioButton: a0e58ac8a7be290778a30add5bdf41dc245e3483 FRNVibrancyView: 96debdb9a1d2d9315c25748450a33fe2cb8b6321 - glog: ba31c1afa7dcf1915a109861bccdb4421be6175b + glog: 0b31c25149b9d350b2666c7d459229861a00ec07 hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 MicrosoftFluentUI: dde98d8ed3fc306d9ddd0a6f0bc0c1f24fe5275e RCT-Folly: c803cf33238782d5fd21a5e02d44f64068e0e130 @@ -2747,6 +2747,6 @@ SPEC CHECKSUMS: SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 6048a55441c73f8e3916a8eac6b83886708c77f9 -PODFILE CHECKSUM: e6d871d112097146bbd727b9adf20f8ad89c66a0 +PODFILE CHECKSUM: 9142426f666c393ccea255cd25936728beda6e75 COCOAPODS: 1.16.2 diff --git a/apps/fluent-tester/package.json b/apps/fluent-tester/package.json index 17c1881d8f9..c69b06be209 100644 --- a/apps/fluent-tester/package.json +++ b/apps/fluent-tester/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "apps/fluent-tester" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,15 +18,13 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.tsx" } }, "scripts": { "android": "rnx-cli run --platform android", - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "bundle": "rnx-cli bundle --dev false", "bundle:android": "rnx-cli bundle --dev false --platform android", "bundle:ios": "rnx-cli bundle --dev false --platform ios", @@ -93,7 +91,7 @@ "oxc-resolver": "catalog:", "path-dirname": "^1.0.2", "react-native-svg-transformer": "^1.0.0", - "react-native-test-app": "^5.1.10", + "react-native-test-app": "^5.2.3", "react-test-renderer": "19.1.4", "webdriverio": "catalog:" }, diff --git a/apps/fluent-tester/tsconfig.json b/apps/fluent-tester/tsconfig.json index 9154d37a5b9..04998cb3f25 100644 --- a/apps/fluent-tester/tsconfig.json +++ b/apps/fluent-tester/tsconfig.json @@ -4,7 +4,53 @@ "outDir": "lib", "allowSyntheticDefaultImports": true, "types": ["@types/jasmine", "@wdio/globals/types", "@wdio/jasmine-framework", "node"], - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../packages/components/Callout/tsconfig.json" + }, + { + "path": "../../packages/experimental/AppearanceAdditions/tsconfig.json" + }, + { + "path": "../../packages/experimental/Avatar/tsconfig.json" + }, + { + "path": "../../packages/experimental/Checkbox/tsconfig.json" + }, + { + "path": "../../packages/experimental/NativeDatePicker/tsconfig.json" + }, + { + "path": "../../packages/experimental/NativeFontMetrics/tsconfig.json" + }, + { + "path": "../../packages/experimental/Shimmer/tsconfig.json" + }, + { + "path": "../../packages/components/FocusZone/tsconfig.json" + }, + { + "path": "../../packages/components/MenuButton/tsconfig.json" + }, + { + "path": "../../packages/components/RadioGroup/tsconfig.json" + }, + { + "path": "../../scripts/tsconfig.json" + }, + { + "path": "../tester-core/tsconfig.json" + }, + { + "path": "../../packages/experimental/Tooltip/tsconfig.json" + }, + { + "path": "../../packages/experimental/VibrancyView/tsconfig.json" + } + ] } diff --git a/apps/tester-core/assets/MoreHorizontalFilled.svg.d.ts b/apps/tester-core/assets/MoreHorizontalFilled.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/MoreHorizontalFilled.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/assets/accessible-icon-brands.svg.d.ts b/apps/tester-core/assets/accessible-icon-brands.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/accessible-icon-brands.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/assets/dismissIcon.svg.d.ts b/apps/tester-core/assets/dismissIcon.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/dismissIcon.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/assets/filledIcon.svg.d.ts b/apps/tester-core/assets/filledIcon.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/filledIcon.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/assets/outlineIcon.svg.d.ts b/apps/tester-core/assets/outlineIcon.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/outlineIcon.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/assets/play_button.svg.d.ts b/apps/tester-core/assets/play_button.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/play_button.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/assets/test.svg.d.ts b/apps/tester-core/assets/test.svg.d.ts new file mode 100644 index 00000000000..344b23de548 --- /dev/null +++ b/apps/tester-core/assets/test.svg.d.ts @@ -0,0 +1,4 @@ +import type * as React from 'react'; +import type { SvgProps } from 'react-native-svg'; +declare const content: React.FC; +export default content; diff --git a/apps/tester-core/package.json b/apps/tester-core/package.json index 09d852f3853..7031b0da378 100644 --- a/apps/tester-core/package.json +++ b/apps/tester-core/package.json @@ -11,7 +11,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "apps/fluent-tester-core" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -19,14 +19,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", @@ -82,7 +80,7 @@ "@fluentui-react-native/vibrancy-view": "workspace:*", "@fluentui-react-native/win32-theme": "workspace:*", "@fluentui/react-native": "workspace:*", - "@fluentui/react-native-icons": "^2.0.316", + "@fluentui/react-native-icons": "patch:@fluentui/react-native-icons@npm%3A2.0.322#~/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch", "@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/free-solid-svg-icons": "^6.2.0", "@fortawesome/react-native-fontawesome": "^0.3.0", @@ -122,7 +120,7 @@ "react-native-macos": "^0.81.0", "react-native-svg": "^15.12.1", "react-native-svg-transformer": "^1.0.0", - "react-native-test-app": "^5.1.10", + "react-native-test-app": "^5.2.3", "react-native-windows": "^0.81.0", "react-test-renderer": "19.1.4", "webdriverio": "catalog:" diff --git a/apps/tester-core/src/@types/RNTester/index.d.ts b/apps/tester-core/src/@types/RNTester/index.d.ts deleted file mode 100644 index 6a0b0b83775..00000000000 --- a/apps/tester-core/src/@types/RNTester/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare module '*.svg' { - import type { SvgProps } from 'react-native-svg'; - const content: React.FC; - export default content; -} diff --git a/apps/tester-core/tsconfig.json b/apps/tester-core/tsconfig.json index 9154d37a5b9..dae5108bc46 100644 --- a/apps/tester-core/tsconfig.json +++ b/apps/tester-core/tsconfig.json @@ -4,7 +4,161 @@ "outDir": "lib", "allowSyntheticDefaultImports": true, "types": ["@types/jasmine", "@wdio/globals/types", "@wdio/jasmine-framework", "node"], - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../packages/utils/adapters/tsconfig.json" + }, + { + "path": "../../packages/theming/android-theme/tsconfig.json" + }, + { + "path": "../../packages/theming/apple-theme/tsconfig.json" + }, + { + "path": "../../packages/components/Avatar/tsconfig.json" + }, + { + "path": "../../packages/components/Badge/tsconfig.json" + }, + { + "path": "../../packages/components/Button/tsconfig.json" + }, + { + "path": "../../packages/components/Callout/tsconfig.json" + }, + { + "path": "../../packages/components/Chip/tsconfig.json" + }, + { + "path": "../../packages/theming/default-theme/tsconfig.json" + }, + { + "path": "../../packages/components/Divider/tsconfig.json" + }, + { + "path": "../../packages/experimental/Drawer/tsconfig.json" + }, + { + "path": "../../packages/experimental/Dropdown/tsconfig.json" + }, + { + "path": "../E2E/tsconfig.json" + }, + { + "path": "../../packages/experimental/ActivityIndicator/tsconfig.json" + }, + { + "path": "../../packages/experimental/AppearanceAdditions/tsconfig.json" + }, + { + "path": "../../packages/experimental/Avatar/tsconfig.json" + }, + { + "path": "../../packages/experimental/Checkbox/tsconfig.json" + }, + { + "path": "../../packages/experimental/Expander/tsconfig.json" + }, + { + "path": "../../packages/experimental/MenuButton/tsconfig.json" + }, + { + "path": "../../packages/experimental/NativeDatePicker/tsconfig.json" + }, + { + "path": "../../packages/experimental/NativeFontMetrics/tsconfig.json" + }, + { + "path": "../../packages/experimental/Shadow/tsconfig.json" + }, + { + "path": "../../packages/experimental/Shimmer/tsconfig.json" + }, + { + "path": "../../packages/components/FocusZone/tsconfig.json" + }, + { + "path": "../../packages/framework-base/tsconfig.json" + }, + { + "path": "../../packages/framework/framework/tsconfig.json" + }, + { + "path": "../../packages/components/Icon/tsconfig.json" + }, + { + "path": "../../packages/components/Input/tsconfig.json" + }, + { + "path": "../../packages/utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../packages/components/MenuButton/tsconfig.json" + }, + { + "path": "../../packages/components/Menu/tsconfig.json" + }, + { + "path": "../../packages/components/Notification/tsconfig.json" + }, + { + "path": "../../packages/experimental/Overflow/tsconfig.json" + }, + { + "path": "../../packages/components/RadioGroup/tsconfig.json" + }, + { + "path": "../../scripts/tsconfig.json" + }, + { + "path": "../../packages/components/Separator/tsconfig.json" + }, + { + "path": "../../packages/experimental/Spinner/tsconfig.json" + }, + { + "path": "../../packages/components/Stack/tsconfig.json" + }, + { + "path": "../../packages/components/Switch/tsconfig.json" + }, + { + "path": "../../packages/components/TabList/tsconfig.json" + }, + { + "path": "../../packages/components/Text/tsconfig.json" + }, + { + "path": "../../packages/theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../packages/theming/theme-types/tsconfig.json" + }, + { + "path": "../../packages/framework/theme/tsconfig.json" + }, + { + "path": "../../packages/framework/themed-stylesheet/tsconfig.json" + }, + { + "path": "../../packages/theming/theming-utils/tsconfig.json" + }, + { + "path": "../../packages/experimental/Tooltip/tsconfig.json" + }, + { + "path": "../../packages/experimental/VibrancyView/tsconfig.json" + }, + { + "path": "../../packages/theming/win32-theme/tsconfig.json" + }, + { + "path": "../../packages/libraries/core/tsconfig.json" + } + ] } diff --git a/apps/win32-81/targets/tsconfig.check.json b/apps/win32-81/targets/tsconfig.check.json new file mode 100644 index 00000000000..824fb07903d --- /dev/null +++ b/apps/win32-81/targets/tsconfig.check.json @@ -0,0 +1,10 @@ +{ + "extends": "@fluentui-react-native/scripts/tsconfig", + "compilerOptions": { + "rootDir": "..", + "noEmit": true, + "composite": true, + "tsBuildInfoFile": "../.cache/tsconfig.tsbuildinfo" + }, + "include": ["../index.js", "../src"] +} diff --git a/apps/win32/package.json b/apps/win32/package.json index 3ff14d17f57..f1a7fdc0706 100644 --- a/apps/win32/package.json +++ b/apps/win32/package.json @@ -19,8 +19,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "bundle": "rnx-cli bundle --dev false", "bundle-dev": "rnx-cli bundle", "clean": "fluentui-scripts clean", @@ -61,7 +60,7 @@ "metro-config": "^0.83.3", "oxc-resolver": "catalog:", "react-native-svg-transformer": "^1.0.0", - "react-native-test-app": "^5.1.10", + "react-native-test-app": "^5.2.3", "react-test-renderer": "19.1.4", "rimraf": "catalog:" }, diff --git a/apps/win32/targets/tsconfig.check.json b/apps/win32/targets/tsconfig.check.json new file mode 100644 index 00000000000..824fb07903d --- /dev/null +++ b/apps/win32/targets/tsconfig.check.json @@ -0,0 +1,10 @@ +{ + "extends": "@fluentui-react-native/scripts/tsconfig", + "compilerOptions": { + "rootDir": "..", + "noEmit": true, + "composite": true, + "tsBuildInfoFile": "../.cache/tsconfig.tsbuildinfo" + }, + "include": ["../index.js", "../src"] +} diff --git a/apps/win32/tsconfig.json b/apps/win32/tsconfig.json index 866cca9fb58..931e1d606dd 100644 --- a/apps/win32/tsconfig.json +++ b/apps/win32/tsconfig.json @@ -1,7 +1,14 @@ { - "extends": "@fluentui-react-native/scripts/tsconfig", - "compilerOptions": { - "noEmit": true - }, - "include": ["index.js"] + "files": [], + "references": [ + { + "path": "../../scripts/tsconfig.json" + }, + { + "path": "../tester-core/tsconfig.json" + }, + { + "path": "./targets/tsconfig.check.json" + } + ] } diff --git a/lage.config.mjs b/lage.config.mjs index 1d1ed2d5aaf..b3927c79493 100644 --- a/lage.config.mjs +++ b/lage.config.mjs @@ -3,24 +3,6 @@ const config = { npmClient: 'yarn', pipeline: { // ── Per-package tasks ────────────────────────────────────────────────── - 'build-cjs': { - // cjs builds need to wait for the esm builds to produce the type definitions - dependsOn: ['^build-core', '^build-cjs'], - inputs: ['*', 'src/**/*', 'assets/**/*'], - outputs: ['lib-commonjs/**/*'], - }, - 'build-core': { - // the core build does esm builds (which produce type definitions used by both cjs and esm builds) - // this also handles noEmit packages which should be run in sequence with other packages - dependsOn: ['^build-core'], - inputs: ['*', 'src/**/*', 'assets/**/*'], - outputs: ['lib/**/*'], - }, - 'build-all': { - dependsOn: ['build-core', 'build-cjs'], - inputs: ['*', 'src/**/*', 'assets/**/*'], - outputs: ['lib/**/*', 'lib-commonjs/**/*'], - }, bundle: { inputs: ['**/*', '!node_modules/**/*', '!dist/**/*', '!lib/**/*', '!lib-commonjs/**/*'], outputs: ['dist/**/*'], @@ -33,7 +15,12 @@ const config = { outputs: [], }, test: { - dependsOn: ['build-all'], + // The unified build is a single root target, not a per-package `build`. + // A bare 'build' would resolve to #build, + // which doesn't exist, so lage silently drops the edge. Point at the + // specific root target with the packageName#task syntax so every + // package's tests wait for the whole-repo build to finish. + dependsOn: ['@fluentui-react-native/root#build'], inputs: [], outputs: [], }, @@ -41,6 +28,10 @@ const config = { // ── Root-only tasks (scripts exist only in the root package.json) ────── // These run once for the whole repo. Sub-packages do not have these scripts, // so lage naturally scopes them to the root workspace. + build: { + // tsgo project level build has its own caching + cache: false, + }, 'check-publishing': { cache: false, }, @@ -56,7 +47,7 @@ const config = { // ── Pipeline aliases ─────────────────────────────────────────────────── 'repo-checks': ['lint-repo', 'check-publishing'], - buildci: ['lint-repo', 'check-publishing', 'build-all', 'test', 'lint'], + buildci: ['lint-repo', 'check-publishing', 'build', 'test', 'lint'], // ── Worker tasks ─────────────────────────────────────────────────────── 'test-links': { @@ -70,7 +61,7 @@ const config = { cache: false, }, pack: { - dependsOn: ['build-all', '^pack'], + dependsOn: ['@fluentui-react-native/root#build', '^pack'], type: 'worker', options: { worker: 'scripts/src/worker/pack.mts', diff --git a/package.json b/package.json index 916d2d5fd1f..be5a86fe3e7 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "scripts" ], "scripts": { - "build": "lage build-all", + "build": "tsgo -b", "clean-all": "node ./scripts/src/preinstall/clean-all.ts", "docs": "yarn workspace fluent-rn-website start", "bundle:repo": "lage bundle", @@ -43,6 +43,7 @@ "@changesets/cli": "^2.30.0", "@rnx-kit/align-deps": "catalog:", "@rnx-kit/lint-lockfile": "catalog:", + "@typescript/native-preview": "7.0.0-dev.20260610.1", "@yarnpkg/types": "^4.0.1", "babel-jest": "^29.7.0", "cross-env": "catalog:", @@ -56,6 +57,8 @@ "zx": "^8.2.4" }, "resolutions": { + "@fluentui/react-native-icons/@types/react-native": "ignore:", + "@types/react": "19.1.17", "axios": "^1.13.5", "expect-webdriverio": "patch:expect-webdriverio@npm%3A5.6.1#~/.yarn/patches/expect-webdriverio-npm-5.6.1-69666d39e9.patch", "unicorn-magic": "^0.4.0" diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 3e9c5a5698b..d06fcd7654e 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -13,7 +13,7 @@ "bin": { "transform": "./transform.js" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -21,14 +21,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/codemods/transform.js b/packages/codemods/transform.js index 0cc65676f39..17decfabc50 100755 --- a/packages/codemods/transform.js +++ b/packages/codemods/transform.js @@ -1,3 +1,3 @@ #!/usr/bin/env node -require('./lib-commonjs/index'); +require('./lib/index'); diff --git a/packages/codemods/tsconfig.json b/packages/codemods/tsconfig.json index 42bfd821523..240b7f62d19 100644 --- a/packages/codemods/tsconfig.json +++ b/packages/codemods/tsconfig.json @@ -2,8 +2,18 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, "include": ["src"], - "exclude": ["src/transforms/__testfixtures__"] + "exclude": ["src/transforms/__testfixtures__"], + "references": [ + { + "path": "../../scripts/tsconfig.json" + }, + { + "path": "../utils/test-tools/tsconfig.json" + } + ] } diff --git a/packages/components/Avatar/package.json b/packages/components/Avatar/package.json index 48a3645d57c..8a5d57797cb 100644 --- a/packages/components/Avatar/package.json +++ b/packages/components/Avatar/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Avatar" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Avatar/tsconfig.json b/packages/components/Avatar/tsconfig.json index 83975437e4d..c684ace317e 100644 --- a/packages/components/Avatar/tsconfig.json +++ b/packages/components/Avatar/tsconfig.json @@ -2,7 +2,41 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../Badge/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/Badge/package.json b/packages/components/Badge/package.json index 6f280330b78..a9f8fbcafcc 100644 --- a/packages/components/Badge/package.json +++ b/packages/components/Badge/package.json @@ -6,7 +6,7 @@ "license": "MIT", "author": "Microsoft ", "sideEffects": false, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -14,14 +14,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Badge/tsconfig.json b/packages/components/Badge/tsconfig.json index 83975437e4d..9b78ddabde5 100644 --- a/packages/components/Badge/tsconfig.json +++ b/packages/components/Badge/tsconfig.json @@ -2,7 +2,50 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../experimental/Shadow/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/Button/package.json b/packages/components/Button/package.json index 2631ac6c2d1..c307c6a44a2 100644 --- a/packages/components/Button/package.json +++ b/packages/components/Button/package.json @@ -10,7 +10,7 @@ "directory": "packages/components/Button" }, "sideEffects": false, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Button/tsconfig.json b/packages/components/Button/tsconfig.json index 83975437e4d..12099925689 100644 --- a/packages/components/Button/tsconfig.json +++ b/packages/components/Button/tsconfig.json @@ -2,7 +2,71 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../experimental/ActivityIndicator/tsconfig.json" + }, + { + "path": "../../experimental/Shadow/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../Pressable/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/styling/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Callout/package.json b/packages/components/Callout/package.json index 92614d14877..4454c66e1f5 100644 --- a/packages/components/Callout/package.json +++ b/packages/components/Callout/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Callout" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Callout/tsconfig.json b/packages/components/Callout/tsconfig.json index 83975437e4d..ddfe16077f8 100644 --- a/packages/components/Callout/tsconfig.json +++ b/packages/components/Callout/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Checkbox/package.json b/packages/components/Checkbox/package.json index cd63cb5e056..a6b36c7cad5 100644 --- a/packages/components/Checkbox/package.json +++ b/packages/components/Checkbox/package.json @@ -10,7 +10,7 @@ "directory": "packages/components/Checkbox" }, "sideEffects": false, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Checkbox/tsconfig.json b/packages/components/Checkbox/tsconfig.json index 83975437e4d..af417107554 100644 --- a/packages/components/Checkbox/tsconfig.json +++ b/packages/components/Checkbox/tsconfig.json @@ -2,7 +2,59 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../Pressable/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/styling/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Chip/package.json b/packages/components/Chip/package.json index 7cdd1e1e8e0..dbc68a6b263 100644 --- a/packages/components/Chip/package.json +++ b/packages/components/Chip/package.json @@ -5,7 +5,7 @@ "homepage": "https://github.com/microsoft/fluentui-react-native", "license": "MIT", "author": "Microsoft ", - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -13,14 +13,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Chip/tsconfig.json b/packages/components/Chip/tsconfig.json index 83975437e4d..409b52dd0a6 100644 --- a/packages/components/Chip/tsconfig.json +++ b/packages/components/Chip/tsconfig.json @@ -2,7 +2,44 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/ContextualMenu/package.json b/packages/components/ContextualMenu/package.json index 79a8b2fb9a1..8c2529a530d 100644 --- a/packages/components/ContextualMenu/package.json +++ b/packages/components/ContextualMenu/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/ContextualMenu" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/ContextualMenu/tsconfig.json b/packages/components/ContextualMenu/tsconfig.json index 83975437e4d..f7ec15b5610 100644 --- a/packages/components/ContextualMenu/tsconfig.json +++ b/packages/components/ContextualMenu/tsconfig.json @@ -2,7 +2,50 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../Callout/tsconfig.json" + }, + { + "path": "../FocusZone/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../Pressable/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Divider/package.json b/packages/components/Divider/package.json index e392d175a96..5b891009365 100644 --- a/packages/components/Divider/package.json +++ b/packages/components/Divider/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Divider" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Divider/tsconfig.json b/packages/components/Divider/tsconfig.json index 83975437e4d..fefddb0bef4 100644 --- a/packages/components/Divider/tsconfig.json +++ b/packages/components/Divider/tsconfig.json @@ -2,7 +2,35 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + } + ] } diff --git a/packages/components/FocusTrapZone/package.json b/packages/components/FocusTrapZone/package.json index 9e7b8d0c63d..689a538e046 100644 --- a/packages/components/FocusTrapZone/package.json +++ b/packages/components/FocusTrapZone/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/FocusTrapZone" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/FocusTrapZone/tsconfig.json b/packages/components/FocusTrapZone/tsconfig.json index 83975437e4d..d113dc54594 100644 --- a/packages/components/FocusTrapZone/tsconfig.json +++ b/packages/components/FocusTrapZone/tsconfig.json @@ -2,7 +2,26 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/FocusZone/package.json b/packages/components/FocusZone/package.json index d71f5692fbb..fd62a2febb8 100644 --- a/packages/components/FocusZone/package.json +++ b/packages/components/FocusZone/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/FocusZone" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/FocusZone/tsconfig.json b/packages/components/FocusZone/tsconfig.json index 83975437e4d..d113dc54594 100644 --- a/packages/components/FocusZone/tsconfig.json +++ b/packages/components/FocusZone/tsconfig.json @@ -2,7 +2,26 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Icon/package.json b/packages/components/Icon/package.json index 5bd9a5005c2..04e48f295f4 100644 --- a/packages/components/Icon/package.json +++ b/packages/components/Icon/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Icon" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Icon/tsconfig.json b/packages/components/Icon/tsconfig.json index 83975437e4d..d23888c3c4e 100644 --- a/packages/components/Icon/tsconfig.json +++ b/packages/components/Icon/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + } + ] } diff --git a/packages/components/Input/package.json b/packages/components/Input/package.json index dab038d5366..156a0bc8b8a 100644 --- a/packages/components/Input/package.json +++ b/packages/components/Input/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Input" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Input/tsconfig.json b/packages/components/Input/tsconfig.json index bdc4474a2f4..46bd60b4e7b 100644 --- a/packages/components/Input/tsconfig.json +++ b/packages/components/Input/tsconfig.json @@ -2,7 +2,44 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src", "svgs.d.ts"] + "include": ["src", "svgs.d.ts"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/styling/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/Link/package.json b/packages/components/Link/package.json index 68c85417aa1..01683e1f610 100644 --- a/packages/components/Link/package.json +++ b/packages/components/Link/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Link" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Link/tsconfig.json b/packages/components/Link/tsconfig.json index 83975437e4d..aeefb9bbeec 100644 --- a/packages/components/Link/tsconfig.json +++ b/packages/components/Link/tsconfig.json @@ -2,7 +2,47 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Menu/package.json b/packages/components/Menu/package.json index 4bf66999cc5..319b304ce4f 100644 --- a/packages/components/Menu/package.json +++ b/packages/components/Menu/package.json @@ -10,7 +10,7 @@ "directory": "packages/components/menu" }, "sideEffects": false, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Menu/tsconfig.json b/packages/components/Menu/tsconfig.json index 83975437e4d..d549493b695 100644 --- a/packages/components/Menu/tsconfig.json +++ b/packages/components/Menu/tsconfig.json @@ -2,7 +2,56 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../Button/tsconfig.json" + }, + { + "path": "../Callout/tsconfig.json" + }, + { + "path": "../FocusZone/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/MenuButton/package.json b/packages/components/MenuButton/package.json index 8d1359fe6d7..595dc59dec3 100644 --- a/packages/components/MenuButton/package.json +++ b/packages/components/MenuButton/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/MenuButton" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/MenuButton/tsconfig.json b/packages/components/MenuButton/tsconfig.json index 83975437e4d..7726b449a0f 100644 --- a/packages/components/MenuButton/tsconfig.json +++ b/packages/components/MenuButton/tsconfig.json @@ -2,7 +2,38 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../Button/tsconfig.json" + }, + { + "path": "../ContextualMenu/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Notification/package.json b/packages/components/Notification/package.json index 343624df634..092771d3924 100644 --- a/packages/components/Notification/package.json +++ b/packages/components/Notification/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Notification" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Notification/tsconfig.json b/packages/components/Notification/tsconfig.json index 83975437e4d..d499c8781ea 100644 --- a/packages/components/Notification/tsconfig.json +++ b/packages/components/Notification/tsconfig.json @@ -2,7 +2,59 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../Button/tsconfig.json" + }, + { + "path": "../../experimental/AppearanceAdditions/tsconfig.json" + }, + { + "path": "../../experimental/Shadow/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../Pressable/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/Persona/package.json b/packages/components/Persona/package.json index 9ad141111f6..900c8a4bd75 100644 --- a/packages/components/Persona/package.json +++ b/packages/components/Persona/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Persona" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Persona/tsconfig.json b/packages/components/Persona/tsconfig.json index 83975437e4d..132cc6b683e 100644 --- a/packages/components/Persona/tsconfig.json +++ b/packages/components/Persona/tsconfig.json @@ -2,7 +2,41 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../PersonaCoin/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-tokens/tsconfig.json" + } + ] } diff --git a/packages/components/PersonaCoin/package.json b/packages/components/PersonaCoin/package.json index 90e49c43c69..36f10f81a71 100644 --- a/packages/components/PersonaCoin/package.json +++ b/packages/components/PersonaCoin/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/PersonaCoin" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/PersonaCoin/tsconfig.json b/packages/components/PersonaCoin/tsconfig.json index 83975437e4d..030965d9253 100644 --- a/packages/components/PersonaCoin/tsconfig.json +++ b/packages/components/PersonaCoin/tsconfig.json @@ -2,7 +2,41 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-tokens/tsconfig.json" + } + ] } diff --git a/packages/components/Pressable/package.json b/packages/components/Pressable/package.json index bc4a7f00a5d..45fa004b77e 100644 --- a/packages/components/Pressable/package.json +++ b/packages/components/Pressable/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Pressable" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Pressable/tsconfig.json b/packages/components/Pressable/tsconfig.json index 83975437e4d..d113dc54594 100644 --- a/packages/components/Pressable/tsconfig.json +++ b/packages/components/Pressable/tsconfig.json @@ -2,7 +2,26 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/RadioGroup/package.json b/packages/components/RadioGroup/package.json index 26d4146a7fb..169642ca8d8 100644 --- a/packages/components/RadioGroup/package.json +++ b/packages/components/RadioGroup/package.json @@ -10,7 +10,7 @@ "directory": "packages/components/RadioGroup" }, "sideEffects": false, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/RadioGroup/tsconfig.json b/packages/components/RadioGroup/tsconfig.json index 83975437e4d..22c5916baad 100644 --- a/packages/components/RadioGroup/tsconfig.json +++ b/packages/components/RadioGroup/tsconfig.json @@ -2,7 +2,56 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../FocusZone/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../Pressable/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/components/Separator/package.json b/packages/components/Separator/package.json index 6b3dd7af339..c638375ae9b 100644 --- a/packages/components/Separator/package.json +++ b/packages/components/Separator/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Separator" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Separator/tsconfig.json b/packages/components/Separator/tsconfig.json index 83975437e4d..bbd99cf74d5 100644 --- a/packages/components/Separator/tsconfig.json +++ b/packages/components/Separator/tsconfig.json @@ -2,7 +2,26 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/Stack/package.json b/packages/components/Stack/package.json index 9444773711e..72f8256efb6 100644 --- a/packages/components/Stack/package.json +++ b/packages/components/Stack/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Stack" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Stack/tsconfig.json b/packages/components/Stack/tsconfig.json index 83975437e4d..25fc2ef620a 100644 --- a/packages/components/Stack/tsconfig.json +++ b/packages/components/Stack/tsconfig.json @@ -2,7 +2,41 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-settings/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-tokens/tsconfig.json" + } + ] } diff --git a/packages/components/Switch/package.json b/packages/components/Switch/package.json index c2c634e2ee1..4e1a7b9e2c5 100644 --- a/packages/components/Switch/package.json +++ b/packages/components/Switch/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Switch" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Switch/tsconfig.json b/packages/components/Switch/tsconfig.json index 83975437e4d..36924fb2db3 100644 --- a/packages/components/Switch/tsconfig.json +++ b/packages/components/Switch/tsconfig.json @@ -2,7 +2,38 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/TabList/package.json b/packages/components/TabList/package.json index 9f0ead420a4..e195630b15f 100644 --- a/packages/components/TabList/package.json +++ b/packages/components/TabList/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/TabList" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/TabList/tsconfig.json b/packages/components/TabList/tsconfig.json index 83975437e4d..34d69ae3221 100644 --- a/packages/components/TabList/tsconfig.json +++ b/packages/components/TabList/tsconfig.json @@ -2,7 +2,47 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../FocusZone/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../Icon/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../Text/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/components/Text/package.json b/packages/components/Text/package.json index 97916c340b4..099e3b9bce9 100644 --- a/packages/components/Text/package.json +++ b/packages/components/Text/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/text" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/components/Text/tsconfig.json b/packages/components/Text/tsconfig.json index 83975437e4d..e278ea19255 100644 --- a/packages/components/Text/tsconfig.json +++ b/packages/components/Text/tsconfig.json @@ -2,7 +2,38 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../deprecated/foundation-compose/tsconfig.json" + } + ] } diff --git a/packages/dependency-profiles/package.json b/packages/dependency-profiles/package.json index 93199bd5ae8..26bda20baea 100644 --- a/packages/dependency-profiles/package.json +++ b/packages/dependency-profiles/package.json @@ -13,7 +13,6 @@ ], "main": "src/index.js", "scripts": { - "build": "fluentui-scripts build", "update-profile": "node update-profile.mts" }, "devDependencies": { diff --git a/packages/deprecated/foundation-composable/package.json b/packages/deprecated/foundation-composable/package.json index 0e23a87612b..e2b9b3b1b1c 100644 --- a/packages/deprecated/foundation-composable/package.json +++ b/packages/deprecated/foundation-composable/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/foundation-composable" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/foundation-composable/tsconfig.json b/packages/deprecated/foundation-composable/tsconfig.json index 83975437e4d..75d9ae1b274 100644 --- a/packages/deprecated/foundation-composable/tsconfig.json +++ b/packages/deprecated/foundation-composable/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/deprecated/foundation-compose/package.json b/packages/deprecated/foundation-compose/package.json index 895af280f4e..c8de85a30bb 100644 --- a/packages/deprecated/foundation-compose/package.json +++ b/packages/deprecated/foundation-compose/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/foundation-compose" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/foundation-compose/tsconfig.json b/packages/deprecated/foundation-compose/tsconfig.json index 83975437e4d..9e7eac8f5db 100644 --- a/packages/deprecated/foundation-compose/tsconfig.json +++ b/packages/deprecated/foundation-compose/tsconfig.json @@ -2,7 +2,38 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../theming/default-theme/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + }, + { + "path": "../foundation-composable/tsconfig.json" + }, + { + "path": "../foundation-settings/tsconfig.json" + }, + { + "path": "../foundation-tokens/tsconfig.json" + }, + { + "path": "../themed-settings/tsconfig.json" + }, + { + "path": "../theming-ramp/tsconfig.json" + } + ] } diff --git a/packages/deprecated/foundation-settings/package.json b/packages/deprecated/foundation-settings/package.json index 7ee895b3c3e..5557ae5f5d9 100644 --- a/packages/deprecated/foundation-settings/package.json +++ b/packages/deprecated/foundation-settings/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/foundation-settings" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/foundation-settings/tsconfig.json b/packages/deprecated/foundation-settings/tsconfig.json index 83975437e4d..256f00585b8 100644 --- a/packages/deprecated/foundation-settings/tsconfig.json +++ b/packages/deprecated/foundation-settings/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/deprecated/foundation-tokens/package.json b/packages/deprecated/foundation-tokens/package.json index e3d2df732dd..24b61e081ed 100644 --- a/packages/deprecated/foundation-tokens/package.json +++ b/packages/deprecated/foundation-tokens/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/foundation-tokens" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/foundation-tokens/tsconfig.json b/packages/deprecated/foundation-tokens/tsconfig.json index ad1c74a21b7..8311dc51972 100644 --- a/packages/deprecated/foundation-tokens/tsconfig.json +++ b/packages/deprecated/foundation-tokens/tsconfig.json @@ -3,7 +3,23 @@ "compilerOptions": { "outDir": "lib", "types": ["node", "jest", "react"], - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/deprecated/theme-registry/package.json b/packages/deprecated/theme-registry/package.json index 7ef9f876f5e..96c54b89d0f 100644 --- a/packages/deprecated/theme-registry/package.json +++ b/packages/deprecated/theme-registry/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/theme-registry" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/theme-registry/tsconfig.json b/packages/deprecated/theme-registry/tsconfig.json index 83975437e4d..256f00585b8 100644 --- a/packages/deprecated/theme-registry/tsconfig.json +++ b/packages/deprecated/theme-registry/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/deprecated/themed-settings/package.json b/packages/deprecated/themed-settings/package.json index 441ef63d7bf..faec69dd192 100644 --- a/packages/deprecated/themed-settings/package.json +++ b/packages/deprecated/themed-settings/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/themed-settings" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/themed-settings/tsconfig.json b/packages/deprecated/themed-settings/tsconfig.json index 83975437e4d..75d9ae1b274 100644 --- a/packages/deprecated/themed-settings/tsconfig.json +++ b/packages/deprecated/themed-settings/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/deprecated/theming-ramp/package.json b/packages/deprecated/theming-ramp/package.json index 6049243303c..7a8b6a7e5f1 100644 --- a/packages/deprecated/theming-ramp/package.json +++ b/packages/deprecated/theming-ramp/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/theming-ramp" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/theming-ramp/tsconfig.json b/packages/deprecated/theming-ramp/tsconfig.json index 83975437e4d..d126a981c36 100644 --- a/packages/deprecated/theming-ramp/tsconfig.json +++ b/packages/deprecated/theming-ramp/tsconfig.json @@ -2,7 +2,26 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + }, + { + "path": "../foundation-settings/tsconfig.json" + } + ] } diff --git a/packages/deprecated/theming-react-native/config/pre-copy.json b/packages/deprecated/theming-react-native/config/pre-copy.json index 0a70d644ed7..bcc3651b3b8 100644 --- a/packages/deprecated/theming-react-native/config/pre-copy.json +++ b/packages/deprecated/theming-react-native/config/pre-copy.json @@ -2,6 +2,6 @@ "copyTo": { "lib": ["src/**/*.json"], "lib-amd": ["src/**/*.json"], - "lib-commonjs": ["src/**/*.json"] + "lib": ["src/**/*.json"] } } diff --git a/packages/deprecated/theming-react-native/jest/setup.js b/packages/deprecated/theming-react-native/jest/setup.js index b47c89e6ce9..48ad158af08 100644 --- a/packages/deprecated/theming-react-native/jest/setup.js +++ b/packages/deprecated/theming-react-native/jest/setup.js @@ -1 +1 @@ -jest.mock('../lib-commonjs/NativeModule/ThemingModule'); +jest.mock('../lib/NativeModule/ThemingModule'); diff --git a/packages/deprecated/theming-react-native/package.json b/packages/deprecated/theming-react-native/package.json index 470ef4ef5cd..25e13756d4e 100644 --- a/packages/deprecated/theming-react-native/package.json +++ b/packages/deprecated/theming-react-native/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/deprecated/theming-react-native" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/deprecated/theming-react-native/tsconfig.json b/packages/deprecated/theming-react-native/tsconfig.json index 83975437e4d..d0aa7ff62de 100644 --- a/packages/deprecated/theming-react-native/tsconfig.json +++ b/packages/deprecated/theming-react-native/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../theming/default-theme/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/win32-theme/tsconfig.json" + }, + { + "path": "../theme-registry/tsconfig.json" + }, + { + "path": "../theming-ramp/tsconfig.json" + } + ] } diff --git a/packages/experimental/ActivityIndicator/package.json b/packages/experimental/ActivityIndicator/package.json index cd5bb9af6df..6beda690851 100644 --- a/packages/experimental/ActivityIndicator/package.json +++ b/packages/experimental/ActivityIndicator/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/ActivityIndicator" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/ActivityIndicator/tsconfig.json b/packages/experimental/ActivityIndicator/tsconfig.json index 83975437e4d..696958d8141 100644 --- a/packages/experimental/ActivityIndicator/tsconfig.json +++ b/packages/experimental/ActivityIndicator/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/AppearanceAdditions/package.json b/packages/experimental/AppearanceAdditions/package.json index 76ea08431c7..e72e3453dad 100644 --- a/packages/experimental/AppearanceAdditions/package.json +++ b/packages/experimental/AppearanceAdditions/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/AppearanceAdditions" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/AppearanceAdditions/tsconfig.json b/packages/experimental/AppearanceAdditions/tsconfig.json index 83975437e4d..be88a1fa63a 100644 --- a/packages/experimental/AppearanceAdditions/tsconfig.json +++ b/packages/experimental/AppearanceAdditions/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/Avatar/package.json b/packages/experimental/Avatar/package.json index 50a0bf29e57..9de2b0efe85 100644 --- a/packages/experimental/Avatar/package.json +++ b/packages/experimental/Avatar/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Avatar" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Avatar/tsconfig.json b/packages/experimental/Avatar/tsconfig.json index 118241a66d9..4a3937b0b84 100644 --- a/packages/experimental/Avatar/tsconfig.json +++ b/packages/experimental/Avatar/tsconfig.json @@ -2,8 +2,21 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, "include": ["src"], - "exclude": ["src/__tests__/Avatar.test.jsx"] + "exclude": ["src/__tests__/Avatar.test.jsx"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/Checkbox/package.json b/packages/experimental/Checkbox/package.json index 97f6b4ecfba..125c6017089 100644 --- a/packages/experimental/Checkbox/package.json +++ b/packages/experimental/Checkbox/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Checkbox" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Checkbox/tsconfig.json b/packages/experimental/Checkbox/tsconfig.json index 83975437e4d..a05d00f41c0 100644 --- a/packages/experimental/Checkbox/tsconfig.json +++ b/packages/experimental/Checkbox/tsconfig.json @@ -2,7 +2,23 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../components/Checkbox/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/Drawer/package.json b/packages/experimental/Drawer/package.json index c6c0de84691..30fee7241d5 100644 --- a/packages/experimental/Drawer/package.json +++ b/packages/experimental/Drawer/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/components/Drawer" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Drawer/tsconfig.json b/packages/experimental/Drawer/tsconfig.json index bdc4474a2f4..6b1ef66e012 100644 --- a/packages/experimental/Drawer/tsconfig.json +++ b/packages/experimental/Drawer/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src", "svgs.d.ts"] + "include": ["src", "svgs.d.ts"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/experimental/Dropdown/package.json b/packages/experimental/Dropdown/package.json index 8d1de2fbfc6..9b5e561d593 100644 --- a/packages/experimental/Dropdown/package.json +++ b/packages/experimental/Dropdown/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/dropdown" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Dropdown/tsconfig.json b/packages/experimental/Dropdown/tsconfig.json index 83975437e4d..6878593d4df 100644 --- a/packages/experimental/Dropdown/tsconfig.json +++ b/packages/experimental/Dropdown/tsconfig.json @@ -2,7 +2,41 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../components/Button/tsconfig.json" + }, + { + "path": "../../components/Callout/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../../components/Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + } + ] } diff --git a/packages/experimental/Expander/package.json b/packages/experimental/Expander/package.json index 26a49b565ef..5a4e49544e7 100644 --- a/packages/experimental/Expander/package.json +++ b/packages/experimental/Expander/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Expander" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "lint": "fluentui-scripts lint", diff --git a/packages/experimental/Expander/tsconfig.json b/packages/experimental/Expander/tsconfig.json index 83975437e4d..696958d8141 100644 --- a/packages/experimental/Expander/tsconfig.json +++ b/packages/experimental/Expander/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/MenuButton/package.json b/packages/experimental/MenuButton/package.json index ff28681241f..bd6a638baa8 100644 --- a/packages/experimental/MenuButton/package.json +++ b/packages/experimental/MenuButton/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/MenuButton" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/MenuButton/tsconfig.json b/packages/experimental/MenuButton/tsconfig.json index 83975437e4d..481f89ad5cf 100644 --- a/packages/experimental/MenuButton/tsconfig.json +++ b/packages/experimental/MenuButton/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../components/Button/tsconfig.json" + }, + { + "path": "../../components/ContextualMenu/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + } + ] } diff --git a/packages/experimental/NativeDatePicker/package.json b/packages/experimental/NativeDatePicker/package.json index 6e5db5a98ed..cfd9346ed0f 100644 --- a/packages/experimental/NativeDatePicker/package.json +++ b/packages/experimental/NativeDatePicker/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/NativeDatePicker" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/NativeDatePicker/tsconfig.json b/packages/experimental/NativeDatePicker/tsconfig.json index 83975437e4d..ff8fae9384a 100644 --- a/packages/experimental/NativeDatePicker/tsconfig.json +++ b/packages/experimental/NativeDatePicker/tsconfig.json @@ -2,7 +2,14 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/NativeFontMetrics/package.json b/packages/experimental/NativeFontMetrics/package.json index a4848f8566d..12dd77c27cc 100644 --- a/packages/experimental/NativeFontMetrics/package.json +++ b/packages/experimental/NativeFontMetrics/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/NativeFontMetrics" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/NativeFontMetrics/tsconfig.json b/packages/experimental/NativeFontMetrics/tsconfig.json index 83975437e4d..ff8fae9384a 100644 --- a/packages/experimental/NativeFontMetrics/tsconfig.json +++ b/packages/experimental/NativeFontMetrics/tsconfig.json @@ -2,7 +2,14 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/Overflow/package.json b/packages/experimental/Overflow/package.json index 6453bebda64..103f4746765 100644 --- a/packages/experimental/Overflow/package.json +++ b/packages/experimental/Overflow/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Overflow" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Overflow/src/Overflow/Overflow.types.ts b/packages/experimental/Overflow/src/Overflow/Overflow.types.ts index 412bb7ccfbf..849004dd54c 100644 --- a/packages/experimental/Overflow/src/Overflow/Overflow.types.ts +++ b/packages/experimental/Overflow/src/Overflow/Overflow.types.ts @@ -1,6 +1,4 @@ -import type { View, ViewProps, ViewStyle } from 'react-native'; - -import type { LayoutRectangle } from '@office-iss/react-native-win32'; +import type { View, ViewProps, ViewStyle, LayoutRectangle } from 'react-native'; import type { OverflowItemEntry, OverflowUpdatePayload } from '../overflowManager.types'; diff --git a/packages/experimental/Overflow/tsconfig.json b/packages/experimental/Overflow/tsconfig.json index 83975437e4d..b45be32a9fe 100644 --- a/packages/experimental/Overflow/tsconfig.json +++ b/packages/experimental/Overflow/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../components/Button/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../components/Menu/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + } + ] } diff --git a/packages/experimental/Popover/package.json b/packages/experimental/Popover/package.json index fa873817f39..8660717f9a0 100644 --- a/packages/experimental/Popover/package.json +++ b/packages/experimental/Popover/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/popover" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Popover/tsconfig.json b/packages/experimental/Popover/tsconfig.json index 83975437e4d..5b3c4ec53b6 100644 --- a/packages/experimental/Popover/tsconfig.json +++ b/packages/experimental/Popover/tsconfig.json @@ -2,7 +2,23 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/experimental/Shadow/package.json b/packages/experimental/Shadow/package.json index 5c1f18bd49f..45196d5a932 100644 --- a/packages/experimental/Shadow/package.json +++ b/packages/experimental/Shadow/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Shadow" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Shadow/tsconfig.json b/packages/experimental/Shadow/tsconfig.json index 83975437e4d..d3dc5e02f95 100644 --- a/packages/experimental/Shadow/tsconfig.json +++ b/packages/experimental/Shadow/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../components/Pressable/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + } + ] } diff --git a/packages/experimental/Shimmer/package.json b/packages/experimental/Shimmer/package.json index 5651fb5ff69..f818f7e825b 100644 --- a/packages/experimental/Shimmer/package.json +++ b/packages/experimental/Shimmer/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Shimmer" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Shimmer/tsconfig.json b/packages/experimental/Shimmer/tsconfig.json index 83975437e4d..79f47ac5f70 100644 --- a/packages/experimental/Shimmer/tsconfig.json +++ b/packages/experimental/Shimmer/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theming-utils/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/experimental/Spinner/package.json b/packages/experimental/Spinner/package.json index 33494e0f63f..4a67e1ba4ae 100644 --- a/packages/experimental/Spinner/package.json +++ b/packages/experimental/Spinner/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Spinner" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Spinner/tsconfig.json b/packages/experimental/Spinner/tsconfig.json index 83975437e4d..2735862d93f 100644 --- a/packages/experimental/Spinner/tsconfig.json +++ b/packages/experimental/Spinner/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../framework/framework/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../components/Text/tsconfig.json" + }, + { + "path": "../../theming/theme-tokens/tsconfig.json" + }, + { + "path": "../../framework/use-styling/tsconfig.json" + } + ] } diff --git a/packages/experimental/Tooltip/package.json b/packages/experimental/Tooltip/package.json index ec967322179..42aa3a481de 100644 --- a/packages/experimental/Tooltip/package.json +++ b/packages/experimental/Tooltip/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/Tooltip" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/Tooltip/tsconfig.json b/packages/experimental/Tooltip/tsconfig.json index 83975437e4d..49358c976ee 100644 --- a/packages/experimental/Tooltip/tsconfig.json +++ b/packages/experimental/Tooltip/tsconfig.json @@ -2,7 +2,26 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../components/Button/tsconfig.json" + }, + { + "path": "../../components/Callout/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + } + ] } diff --git a/packages/experimental/VibrancyView/package.json b/packages/experimental/VibrancyView/package.json index 87d631417e9..a5c636a5e06 100644 --- a/packages/experimental/VibrancyView/package.json +++ b/packages/experimental/VibrancyView/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/experimental/VibrancyView" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/experimental/VibrancyView/tsconfig.json b/packages/experimental/VibrancyView/tsconfig.json index 83975437e4d..ca97ae183d9 100644 --- a/packages/experimental/VibrancyView/tsconfig.json +++ b/packages/experimental/VibrancyView/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../utils/adapters/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/framework-base/package.json b/packages/framework-base/package.json index 436d245c01d..e993d961900 100644 --- a/packages/framework-base/package.json +++ b/packages/framework-base/package.json @@ -31,8 +31,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework-base/tsconfig.json b/packages/framework-base/tsconfig.json index b0dd41f41f6..af17d65ef19 100644 --- a/packages/framework-base/tsconfig.json +++ b/packages/framework-base/tsconfig.json @@ -4,7 +4,14 @@ "outDir": "lib", "allowJs": true, "checkJs": true, - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../scripts/tsconfig.json" + } + ] } diff --git a/packages/framework/composition/package.json b/packages/framework/composition/package.json index 847a7bf23c2..58860fe5939 100644 --- a/packages/framework/composition/package.json +++ b/packages/framework/composition/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/composition/tsconfig.json b/packages/framework/composition/tsconfig.json index 83975437e4d..2c2ad363105 100644 --- a/packages/framework/composition/tsconfig.json +++ b/packages/framework/composition/tsconfig.json @@ -2,7 +2,23 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../use-slots/tsconfig.json" + }, + { + "path": "../use-styling/tsconfig.json" + } + ] } diff --git a/packages/framework/framework/package.json b/packages/framework/framework/package.json index 48b793d3c01..4e30b472130 100644 --- a/packages/framework/framework/package.json +++ b/packages/framework/framework/package.json @@ -23,8 +23,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/framework/tsconfig.json b/packages/framework/framework/tsconfig.json index a79de74998f..6e084a6344a 100644 --- a/packages/framework/framework/tsconfig.json +++ b/packages/framework/framework/tsconfig.json @@ -6,7 +6,41 @@ "strictNullChecks": true, "noImplicitAny": true, "rootDir": "src", - "outDir": "lib" + "outDir": "lib", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../composition/tsconfig.json" + }, + { + "path": "../../theming/default-theme/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + }, + { + "path": "../use-slot/tsconfig.json" + }, + { + "path": "../use-slots/tsconfig.json" + }, + { + "path": "../use-styling/tsconfig.json" + }, + { + "path": "../use-tokens/tsconfig.json" + } + ] } diff --git a/packages/framework/theme/package.json b/packages/framework/theme/package.json index b75f4db8dcd..4d88bd5e342 100644 --- a/packages/framework/theme/package.json +++ b/packages/framework/theme/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/theme/tsconfig.json b/packages/framework/theme/tsconfig.json index 83975437e4d..1a38cb58221 100644 --- a/packages/framework/theme/tsconfig.json +++ b/packages/framework/theme/tsconfig.json @@ -2,7 +2,23 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../utils/test-tools/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + } + ] } diff --git a/packages/framework/themed-stylesheet/package.json b/packages/framework/themed-stylesheet/package.json index 5621bd3356e..06b07d4030f 100644 --- a/packages/framework/themed-stylesheet/package.json +++ b/packages/framework/themed-stylesheet/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/themed-stylesheet/tsconfig.json b/packages/framework/themed-stylesheet/tsconfig.json index 83975437e4d..256f00585b8 100644 --- a/packages/framework/themed-stylesheet/tsconfig.json +++ b/packages/framework/themed-stylesheet/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/framework/use-slot/package.json b/packages/framework/use-slot/package.json index 23779a72159..c81e3b611c0 100644 --- a/packages/framework/use-slot/package.json +++ b/packages/framework/use-slot/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/use-slot/tsconfig.json b/packages/framework/use-slot/tsconfig.json index 83975437e4d..256f00585b8 100644 --- a/packages/framework/use-slot/tsconfig.json +++ b/packages/framework/use-slot/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/framework/use-slots/package.json b/packages/framework/use-slots/package.json index dc27e0050c3..391e5614559 100644 --- a/packages/framework/use-slots/package.json +++ b/packages/framework/use-slots/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/use-slots/tsconfig.json b/packages/framework/use-slots/tsconfig.json index 83975437e4d..8b3713018f7 100644 --- a/packages/framework/use-slots/tsconfig.json +++ b/packages/framework/use-slots/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../use-slot/tsconfig.json" + } + ] } diff --git a/packages/framework/use-styling/package.json b/packages/framework/use-styling/package.json index 86128415c5c..8326754cf23 100644 --- a/packages/framework/use-styling/package.json +++ b/packages/framework/use-styling/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/use-styling/tsconfig.json b/packages/framework/use-styling/tsconfig.json index 83975437e4d..b759587b6bc 100644 --- a/packages/framework/use-styling/tsconfig.json +++ b/packages/framework/use-styling/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../use-tokens/tsconfig.json" + } + ] } diff --git a/packages/framework/use-tokens/package.json b/packages/framework/use-tokens/package.json index 5c1e6ef9cab..e36ca923f17 100644 --- a/packages/framework/use-tokens/package.json +++ b/packages/framework/use-tokens/package.json @@ -24,8 +24,7 @@ } }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/framework/use-tokens/tsconfig.json b/packages/framework/use-tokens/tsconfig.json index 83975437e4d..256f00585b8 100644 --- a/packages/framework/use-tokens/tsconfig.json +++ b/packages/framework/use-tokens/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/libraries/core/package.json b/packages/libraries/core/package.json index 1cfd1c78200..2454c432bd2 100644 --- a/packages/libraries/core/package.json +++ b/packages/libraries/core/package.json @@ -9,7 +9,7 @@ "directory": "packages/libraries/core" }, "sideEffects": false, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/libraries/core/tsconfig.json b/packages/libraries/core/tsconfig.json index a080618044e..52b506823bf 100644 --- a/packages/libraries/core/tsconfig.json +++ b/packages/libraries/core/tsconfig.json @@ -11,7 +11,62 @@ "skipLibCheck": true, "noUnusedLocals": true, "strict": true, - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../components/Button/tsconfig.json" + }, + { + "path": "../../components/Callout/tsconfig.json" + }, + { + "path": "../../components/Checkbox/tsconfig.json" + }, + { + "path": "../../components/ContextualMenu/tsconfig.json" + }, + { + "path": "../../components/FocusTrapZone/tsconfig.json" + }, + { + "path": "../../components/FocusZone/tsconfig.json" + }, + { + "path": "../../utils/interactive-hooks/tsconfig.json" + }, + { + "path": "../../components/Link/tsconfig.json" + }, + { + "path": "../../components/MenuButton/tsconfig.json" + }, + { + "path": "../../components/PersonaCoin/tsconfig.json" + }, + { + "path": "../../components/Persona/tsconfig.json" + }, + { + "path": "../../components/Pressable/tsconfig.json" + }, + { + "path": "../../components/RadioGroup/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../components/Separator/tsconfig.json" + }, + { + "path": "../../components/TabList/tsconfig.json" + }, + { + "path": "../../components/Text/tsconfig.json" + } + ] } diff --git a/packages/theming/android-theme/package.json b/packages/theming/android-theme/package.json index a3819f8acb2..34f405d453a 100644 --- a/packages/theming/android-theme/package.json +++ b/packages/theming/android-theme/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/android-theme" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/android-theme/tsconfig.json b/packages/theming/android-theme/tsconfig.json index 97fa2342172..5beddb127c1 100644 --- a/packages/theming/android-theme/tsconfig.json +++ b/packages/theming/android-theme/tsconfig.json @@ -3,7 +3,29 @@ "compilerOptions": { "outDir": "lib", "resolveJsonModule": true, - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../theme-tokens/tsconfig.json" + }, + { + "path": "../theme-types/tsconfig.json" + }, + { + "path": "../../framework/theme/tsconfig.json" + }, + { + "path": "../theming-utils/tsconfig.json" + } + ] } diff --git a/packages/theming/apple-theme/package.json b/packages/theming/apple-theme/package.json index a7ddc2b6313..e17200077b7 100644 --- a/packages/theming/apple-theme/package.json +++ b/packages/theming/apple-theme/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/apple-theme" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/apple-theme/tsconfig.json b/packages/theming/apple-theme/tsconfig.json index 97fa2342172..051281582e3 100644 --- a/packages/theming/apple-theme/tsconfig.json +++ b/packages/theming/apple-theme/tsconfig.json @@ -3,7 +3,35 @@ "compilerOptions": { "outDir": "lib", "resolveJsonModule": true, - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../default-theme/tsconfig.json" + }, + { + "path": "../../experimental/AppearanceAdditions/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../theme-tokens/tsconfig.json" + }, + { + "path": "../theme-types/tsconfig.json" + }, + { + "path": "../../framework/theme/tsconfig.json" + }, + { + "path": "../theming-utils/tsconfig.json" + } + ] } diff --git a/packages/theming/default-theme/package.json b/packages/theming/default-theme/package.json index a0aa64a15eb..1c9e2ae4ea7 100644 --- a/packages/theming/default-theme/package.json +++ b/packages/theming/default-theme/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/default-theme" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/default-theme/tsconfig.json b/packages/theming/default-theme/tsconfig.json index 83975437e4d..31622752c06 100644 --- a/packages/theming/default-theme/tsconfig.json +++ b/packages/theming/default-theme/tsconfig.json @@ -2,7 +2,29 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../theme-tokens/tsconfig.json" + }, + { + "path": "../theme-types/tsconfig.json" + }, + { + "path": "../../framework/theme/tsconfig.json" + }, + { + "path": "../theming-utils/tsconfig.json" + } + ] } diff --git a/packages/theming/theme-tokens/package.json b/packages/theming/theme-tokens/package.json index 6cd28431722..652db1e7179 100644 --- a/packages/theming/theme-tokens/package.json +++ b/packages/theming/theme-tokens/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/theme-tokens" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/theme-tokens/tsconfig.json b/packages/theming/theme-tokens/tsconfig.json index 97fa2342172..57fe92088b5 100644 --- a/packages/theming/theme-tokens/tsconfig.json +++ b/packages/theming/theme-tokens/tsconfig.json @@ -3,7 +3,17 @@ "compilerOptions": { "outDir": "lib", "resolveJsonModule": true, - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../theme-types/tsconfig.json" + } + ] } diff --git a/packages/theming/theme-types/package.json b/packages/theming/theme-types/package.json index 3eac827780e..9474c1d52e3 100644 --- a/packages/theming/theme-types/package.json +++ b/packages/theming/theme-types/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/theme-types" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/theme-types/tsconfig.json b/packages/theming/theme-types/tsconfig.json index 83975437e4d..ff8fae9384a 100644 --- a/packages/theming/theme-types/tsconfig.json +++ b/packages/theming/theme-types/tsconfig.json @@ -2,7 +2,14 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/theming/theming-utils/package.json b/packages/theming/theming-utils/package.json index a79b3be98b1..ccd131372b6 100644 --- a/packages/theming/theming-utils/package.json +++ b/packages/theming/theming-utils/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/theming-utils" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/theming-utils/tsconfig.json b/packages/theming/theming-utils/tsconfig.json index 83975437e4d..3090ce813b6 100644 --- a/packages/theming/theming-utils/tsconfig.json +++ b/packages/theming/theming-utils/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../theme-types/tsconfig.json" + }, + { + "path": "../../utils/tokens/tsconfig.json" + } + ] } diff --git a/packages/theming/win32-theme/package.json b/packages/theming/win32-theme/package.json index 6916effd88b..1faee271dc2 100644 --- a/packages/theming/win32-theme/package.json +++ b/packages/theming/win32-theme/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/theming/win32-theme" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/theming/win32-theme/tsconfig.json b/packages/theming/win32-theme/tsconfig.json index 97fa2342172..583d056fbcb 100644 --- a/packages/theming/win32-theme/tsconfig.json +++ b/packages/theming/win32-theme/tsconfig.json @@ -3,7 +3,32 @@ "compilerOptions": { "outDir": "lib", "resolveJsonModule": true, - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../default-theme/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../theme-tokens/tsconfig.json" + }, + { + "path": "../theme-types/tsconfig.json" + }, + { + "path": "../../framework/theme/tsconfig.json" + }, + { + "path": "../theming-utils/tsconfig.json" + } + ] } diff --git a/packages/utils/adapters/package.json b/packages/utils/adapters/package.json index 7e3311d16ec..77ec5d2e3ee 100644 --- a/packages/utils/adapters/package.json +++ b/packages/utils/adapters/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/utils/adapters" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,19 +17,18 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", "lint": "fluentui-scripts lint", - "test": "fluentui-scripts jest", + "test": "fluentui-scripts jest && yarn verify-drift", + "verify-drift": "tsgo --noEmit -p src/__drift__/tsconfig.win32.json && tsgo --noEmit -p src/__drift__/tsconfig.windows.json && tsgo --noEmit -p src/__drift__/tsconfig.macos.json", "update-snapshots": "fluentui-scripts jest -u" }, "devDependencies": { diff --git a/packages/utils/adapters/src/__drift__/driftHelpers.ts b/packages/utils/adapters/src/__drift__/driftHelpers.ts new file mode 100644 index 00000000000..5907d3c849a --- /dev/null +++ b/packages/utils/adapters/src/__drift__/driftHelpers.ts @@ -0,0 +1,23 @@ +/** + * Type-level helpers for the drift tests. These files are excluded from the package's normal build + * (see `../../tsconfig.json` "exclude") and are checked in isolation, one fork at a time, by the + * per-fork tsconfigs in this directory. They exist solely to fail compilation if the platform-neutral + * redeclarations in `../platformProps.ts` fall out of alignment with the real React Native fork types. + */ + +/** + * Keys present on the fork type but missing from our local redeclaration — i.e. props a fork has + * added that we no longer cover. This is the critical direction: an uncovered prop would be silently + * dropped by the prop filters. Checked strictly (no allowance). + */ +export type MissingKeys = Exclude; + +/** + * Keys present on our local redeclaration but not on the fork type. `Allowed` excludes the canonical + * `react-native` base props (the forks sometimes lag behind core RN) and any props the filter masks + * intentionally inject because the fork's *types* omit a prop that exists at runtime. + */ +export type ExtraKeys = Exclude; + +/** Compiles only when `T` is `never`; otherwise the offending keys appear in the error message. */ +export type AssertNoKeyDrift = T; diff --git a/packages/utils/adapters/src/__drift__/macos.drift.ts b/packages/utils/adapters/src/__drift__/macos.drift.ts new file mode 100644 index 00000000000..66f896e443f --- /dev/null +++ b/packages/utils/adapters/src/__drift__/macos.drift.ts @@ -0,0 +1,26 @@ +/** + * Drift test for `react-native-macos`. Checked in isolation by `tsconfig.macos.json`. + * Fails to compile if `ViewPropsMacOS`/`TextPropsMacOS`/`ImagePropsMacOS` in `../platformProps.ts` + * no longer cover the same fork-specific prop keys. `ExtraKeys` allows the canonical `react-native` + * base props, plus the props the macOS filter masks intentionally inject because the fork's *types* + * omit them even though they exist at runtime (`onPreferredScrollerStyleDidChange` on View; + * `enableFocusRing`/`tooltip` on Text — see the comments in `../filters.macos.ts`). + */ +import type RN from 'react-native'; +import type { ViewProps, TextProps, ImageProps } from 'react-native-macos'; +import type { ViewPropsMacOS, TextPropsMacOS, ImagePropsMacOS } from '../platformProps'; +import type { AssertNoKeyDrift, MissingKeys, ExtraKeys } from './driftHelpers'; + +// Props the macOS View mask passes that react-native-macos omits from its *types* (injected at runtime). +type MacOSViewInjected = 'onPreferredScrollerStyleDidChange' | 'passthroughAllKeyEvents' | 'tooltip' | 'validKeysDown' | 'validKeysUp'; +// Props the macOS Text mask passes that react-native-macos omits from its *types* (injected at runtime). +type MacOSTextInjected = 'enableFocusRing' | 'focusable' | 'onMouseEnter' | 'onMouseLeave' | 'tooltip'; + +export type _viewMissing = AssertNoKeyDrift>; +export type _viewExtra = AssertNoKeyDrift>; + +export type _textMissing = AssertNoKeyDrift>; +export type _textExtra = AssertNoKeyDrift>; + +export type _imageMissing = AssertNoKeyDrift>; +export type _imageExtra = AssertNoKeyDrift>; diff --git a/packages/utils/adapters/src/__drift__/tsconfig.macos.json b/packages/utils/adapters/src/__drift__/tsconfig.macos.json new file mode 100644 index 00000000000..5e975c76af8 --- /dev/null +++ b/packages/utils/adapters/src/__drift__/tsconfig.macos.json @@ -0,0 +1,10 @@ +{ + "extends": "@fluentui-react-native/scripts/tsconfig", + "compilerOptions": { + "noEmit": true, + "composite": false, + "rootDir": "../..", + "types": ["node"] + }, + "include": ["macos.drift.ts"] +} diff --git a/packages/utils/adapters/src/__drift__/tsconfig.win32.json b/packages/utils/adapters/src/__drift__/tsconfig.win32.json new file mode 100644 index 00000000000..9afff4455a7 --- /dev/null +++ b/packages/utils/adapters/src/__drift__/tsconfig.win32.json @@ -0,0 +1,10 @@ +{ + "extends": "@fluentui-react-native/scripts/tsconfig", + "compilerOptions": { + "noEmit": true, + "composite": false, + "rootDir": "../..", + "types": ["node"] + }, + "include": ["win32.drift.ts"] +} diff --git a/packages/utils/adapters/src/__drift__/tsconfig.windows.json b/packages/utils/adapters/src/__drift__/tsconfig.windows.json new file mode 100644 index 00000000000..c1eeac03920 --- /dev/null +++ b/packages/utils/adapters/src/__drift__/tsconfig.windows.json @@ -0,0 +1,10 @@ +{ + "extends": "@fluentui-react-native/scripts/tsconfig", + "compilerOptions": { + "noEmit": true, + "composite": false, + "rootDir": "../..", + "types": ["node"] + }, + "include": ["windows.drift.ts"] +} diff --git a/packages/utils/adapters/src/__drift__/win32.drift.ts b/packages/utils/adapters/src/__drift__/win32.drift.ts new file mode 100644 index 00000000000..81dc2043155 --- /dev/null +++ b/packages/utils/adapters/src/__drift__/win32.drift.ts @@ -0,0 +1,19 @@ +/** + * Drift test for `@office-iss/react-native-win32`. Checked in isolation by `tsconfig.win32.json`. + * Fails to compile if `ViewPropsWin32`/`TextPropsWin32`/`ImagePropsWin32` in `../platformProps.ts` + * no longer cover the same fork-specific prop keys. `ExtraKeys` allows the canonical `react-native` + * base props since the fork can lag behind core RN. + */ +import type RN from 'react-native'; +import type { ViewProps, TextProps, ImageProps } from '@office-iss/react-native-win32'; +import type { ViewPropsWin32, TextPropsWin32, ImagePropsWin32 } from '../platformProps'; +import type { AssertNoKeyDrift, MissingKeys, ExtraKeys } from './driftHelpers'; + +export type _viewMissing = AssertNoKeyDrift>; +export type _viewExtra = AssertNoKeyDrift>; + +export type _textMissing = AssertNoKeyDrift>; +export type _textExtra = AssertNoKeyDrift>; + +export type _imageMissing = AssertNoKeyDrift>; +export type _imageExtra = AssertNoKeyDrift>; diff --git a/packages/utils/adapters/src/__drift__/windows.drift.ts b/packages/utils/adapters/src/__drift__/windows.drift.ts new file mode 100644 index 00000000000..e97f9d4481a --- /dev/null +++ b/packages/utils/adapters/src/__drift__/windows.drift.ts @@ -0,0 +1,19 @@ +/** + * Drift test for `react-native-windows`. Checked in isolation by `tsconfig.windows.json`. + * Fails to compile if `ViewPropsWindows`/`TextPropsWindows`/`ImagePropsWindows` in + * `../platformProps.ts` no longer cover the same fork-specific prop keys. `ExtraKeys` allows the + * canonical `react-native` base props since the fork can lag behind core RN. + */ +import type RN from 'react-native'; +import type { ViewProps, TextProps, ImageProps } from 'react-native-windows'; +import type { ViewPropsWindows, TextPropsWindows, ImagePropsWindows } from '../platformProps'; +import type { AssertNoKeyDrift, MissingKeys, ExtraKeys } from './driftHelpers'; + +export type _viewMissing = AssertNoKeyDrift>; +export type _viewExtra = AssertNoKeyDrift>; + +export type _textMissing = AssertNoKeyDrift>; +export type _textExtra = AssertNoKeyDrift>; + +export type _imageMissing = AssertNoKeyDrift>; +export type _imageExtra = AssertNoKeyDrift>; diff --git a/packages/utils/adapters/src/filters.macos.ts b/packages/utils/adapters/src/filters.macos.ts index cf480f42658..e40c877bb5a 100644 --- a/packages/utils/adapters/src/filters.macos.ts +++ b/packages/utils/adapters/src/filters.macos.ts @@ -1,4 +1,4 @@ -import type { ImageProps, TextProps, ViewProps } from 'react-native-macos'; +import type { ImagePropsMacOS as ImageProps, TextPropsMacOS as TextProps, ViewPropsMacOS as ViewProps } from './platformProps'; import type { IFilterMask } from './filter.types'; import { getRnVersion, getImageMaskBase, getTextMaskBase, getViewMaskBase } from './filters.base'; diff --git a/packages/utils/adapters/src/filters.win32.ts b/packages/utils/adapters/src/filters.win32.ts index b1945880bd0..db29e85b3f0 100644 --- a/packages/utils/adapters/src/filters.win32.ts +++ b/packages/utils/adapters/src/filters.win32.ts @@ -1,4 +1,4 @@ -import type { ImageProps, TextProps, ViewProps } from '@office-iss/react-native-win32'; +import type { ImagePropsWin32 as ImageProps, TextPropsWin32 as TextProps, ViewPropsWin32 as ViewProps } from './platformProps'; import type { IFilterMask } from './filter.types'; import { getViewMaskBase, getImageMaskBase, getTextMaskBase } from './filters.base'; diff --git a/packages/utils/adapters/src/filters.windows.ts b/packages/utils/adapters/src/filters.windows.ts index 6d16b71d6b7..6f8d85eeaf2 100644 --- a/packages/utils/adapters/src/filters.windows.ts +++ b/packages/utils/adapters/src/filters.windows.ts @@ -1,4 +1,4 @@ -import type { ImageProps, TextProps, ViewProps } from 'react-native-windows'; +import type { ImagePropsWindows as ImageProps, TextPropsWindows as TextProps, ViewPropsWindows as ViewProps } from './platformProps'; import type { IFilterMask } from './filter.types'; import { getViewMaskBase, getImageMaskBase, getTextMaskBase, getRnVersion } from './filters.base'; diff --git a/packages/utils/adapters/src/imageProps.ts b/packages/utils/adapters/src/imageProps.ts index 7d2770872fa..e1fc0fae590 100644 --- a/packages/utils/adapters/src/imageProps.ts +++ b/packages/utils/adapters/src/imageProps.ts @@ -1,23 +1,17 @@ import type { ImageProps, ImageStyle, StyleProp } from 'react-native'; -import type { ImageProps as ImagePropsWindows, ImageStyle as ImageStyleWindows } from 'react-native-windows'; -import type { ImageProps as ImagePropsMacOS, ImageStyle as ImageStyleMacOS } from 'react-native-macos'; -import type { ImageProps as ImagePropsWin32, ImageStyle as ImageStyleWin32 } from '@office-iss/react-native-win32'; +import type { ImageAdditions, CursorValue } from './platformProps'; /** - * Build up the styles type by combining the base ImageStyle with platform specific extensions, - * omitting any overlapping keys to prevent conflicts. + * Build up the styles type by combining the base ImageStyle with the cross-platform extensions + * the React Native forks add (currently just `cursor`). */ -type ImageStyleWithMacOS = ImageStyle & Omit; -type ImageStyleWithWindows = ImageStyleWithMacOS & Omit; -export type IImageStyle = ImageStyleWithWindows & Omit; +export type IImageStyle = ImageStyle & { cursor?: CursorValue }; /** - * Build up the props type by combining the base ImageProps with platform specific extensions, + * Build up the props type by combining the base ImageProps with the platform-neutral fork additions, * omitting any overlapping keys to prevent conflicts and adding in the resolved style type */ -type ImagePropsWithMacOS = Omit & Omit; -type ImagePropsWithWindows = ImagePropsWithMacOS & Omit; -export type IImageProps = ImagePropsWithWindows & - Omit & { +export type IImageProps = Omit & + Omit & { style?: StyleProp; }; diff --git a/packages/utils/adapters/src/index.ts b/packages/utils/adapters/src/index.ts index f319fdcecc6..a1ed788f4c4 100644 --- a/packages/utils/adapters/src/index.ts +++ b/packages/utils/adapters/src/index.ts @@ -2,3 +2,6 @@ export { filterImageProps, filterTextProps, filterViewProps } from './filterProp export type { ITextProps, ITextStyle } from './textProps'; export type { IImageProps, IImageStyle } from './imageProps'; export type { IViewProps, IViewStyle, NativeKeyEvent, KeyEventHandler, HandledKeyEvent } from './viewProps'; +// Re-exported so the cross-platform prop/style types above remain nameable in consumers' +// generated declaration files (the `Omit<*Additions, ...>` they use references these). +export type { ViewAdditions, TextAdditions, ImageAdditions, CursorValue, AccessibilityAnnotationInfo } from './platformProps'; diff --git a/packages/utils/adapters/src/platformProps.ts b/packages/utils/adapters/src/platformProps.ts new file mode 100644 index 00000000000..860c06058c3 --- /dev/null +++ b/packages/utils/adapters/src/platformProps.ts @@ -0,0 +1,294 @@ +import type RN from 'react-native'; +import type { NativeSyntheticEvent } from 'react-native'; + +/** + * Platform-neutral redeclarations of the prop/style extensions that the React Native forks + * (`react-native-windows`, `react-native-macos`, `@office-iss/react-native-win32`) add on top of + * the base `react-native` types. + * + * These are intentionally declared here WITHOUT importing the fork packages so that nothing + * reachable from the package entrypoint pulls multiple react-native forks into a single program + * (which causes non-deterministic type "confusion" in the unified build). The fork packages are + * referenced only from the isolated drift tests under `src/__drift__`, which fail to compile if + * these redeclarations fall out of alignment with the real fork types. + * + * The per-platform `*Additions` interfaces below mirror exactly the keys each platform's filter mask + * adds on top of the base mask, so `RN.Props & Additions` reproduces the + * fork's prop key set. Event payloads are unified across platforms (a superset) rather than + * redeclared per-fork; only the prop KEYS need to match the forks. + */ + +// --- Shared event payloads (superset across platforms) ------------------------------------------- + +export interface INativeKeyboardEvent { + altKey: boolean; + ctrlKey: boolean; + metaKey: boolean; + shiftKey: boolean; + key: string; + code?: string; +} + +export type IKeyboardEvent = NativeSyntheticEvent; +export type IKeyboardEventHandler = (args: IKeyboardEvent) => void; + +/** + * A key descriptor accepted by `keyDownEvents`/`keyUpEvents`. Superset of the macOS `HandledKeyEvent` + * plus the Windows/Win32 `code`/`eventPhase` fields. + */ +export interface HandledKeyEvent { + altKey?: boolean; + ctrlKey?: boolean; + metaKey?: boolean; + shiftKey?: boolean; + key: string; + code?: string; + // 0 = None, 1 = Capturing, 2 = AtTarget, 3 = Bubbling (react-native-windows EventPhase) + eventPhase?: 0 | 1 | 2 | 3; +} + +export type NativeKeyEvent = NativeSyntheticEvent; +export type KeyEventHandler = (event: NativeKeyEvent) => void; + +export type IMouseEvent = NativeSyntheticEvent; +export type IMouseEventHandler = (args: IMouseEvent) => void; + +export type IFocusEvent = NativeSyntheticEvent; +export type IFocusEventHandler = (ev: IFocusEvent) => void; + +export type IDragEvent = NativeSyntheticEvent; +export type IDragEventHandler = (args: IDragEvent) => void; + +export type AccessibilityAnnotationInfo = Readonly<{ + typeID: string; + typeName?: string; + author?: string; + dateTime?: string; + target?: string; + replyCount?: number; +}>; + +export type CursorValue = 'auto' | 'pointer'; + +export type DraggedType = 'fileUrl' | 'image' | 'string'; +export type DraggedTypesType = DraggedType | DraggedType[]; + +export type TextWin32TextStyle = + | 'None' + | 'SmallStandard' + | 'SmallSecondary' + | 'MediumStandard' + | 'MediumSecondary' + | 'MediumApp' + | 'MediumBold' + | 'MediumBoldApp' + | 'LargeStandard' + | 'LargePlusStandard' + | 'ExtraLargeStandard' + | 'HugeStandard'; + +// --- Win32 (@office-iss/react-native-win32) additions -------------------------------------------- + +export interface ViewAdditionsWin32 { + accessibilityAccessKey?: string; + accessibilityAnnotation?: AccessibilityAnnotationInfo; + accessibilityControls?: string; + accessibilityDescribedBy?: string; + accessibilityDescription?: string; + accessibilityItemType?: string; + accessibilityLevel?: number; + accessibilityPositionInSet?: number; + accessibilitySetSize?: number; + animationClass?: string; + cursor?: CursorValue; + enableFocusRing?: boolean; + keyDownEvents?: HandledKeyEvent[]; + keyUpEvents?: HandledKeyEvent[]; + onBlurCapture?: IFocusEventHandler; + onFocusCapture?: IFocusEventHandler; + onKeyDown?: IKeyboardEventHandler; + onKeyDownCapture?: IKeyboardEventHandler; + onKeyUp?: IKeyboardEventHandler; + onKeyUpCapture?: IKeyboardEventHandler; + onMouseEnter?: IMouseEventHandler; + onMouseLeave?: IMouseEventHandler; + tooltip?: string; + 'aria-controls'?: string; + 'aria-describedby'?: string; + 'aria-description'?: string; + 'aria-level'?: number; + 'aria-multiselectable'?: boolean; + 'aria-posinset'?: number; + 'aria-required'?: boolean; + 'aria-setsize'?: number; +} + +export interface TextAdditionsWin32 { + accessibilityAccessKey?: string; + accessibilityAnnotation?: AccessibilityAnnotationInfo; + accessibilityControls?: string; + accessibilityDescribedBy?: string; + accessibilityDescription?: string; + accessibilityItemType?: string; + accessibilityLevel?: number; + accessibilityPositionInSet?: number; + accessibilitySetSize?: number; + focusable?: boolean; + keyDownEvents?: HandledKeyEvent[]; + keyUpEvents?: HandledKeyEvent[]; + onBlur?: IFocusEventHandler; + onBlurCapture?: IFocusEventHandler; + onFocus?: IFocusEventHandler; + onFocusCapture?: IFocusEventHandler; + onKeyDown?: IKeyboardEventHandler; + onKeyDownCapture?: IKeyboardEventHandler; + onKeyUp?: IKeyboardEventHandler; + onKeyUpCapture?: IKeyboardEventHandler; + textStyle?: TextWin32TextStyle; + tooltip?: string; + 'aria-controls'?: string; + 'aria-describedby'?: string; + 'aria-description'?: string; + 'aria-level'?: number; + 'aria-multiselectable'?: boolean; + 'aria-posinset'?: number; + 'aria-required'?: boolean; + 'aria-setsize'?: number; +} + +export interface ImageAdditionsWin32 { + accessibilityAccessKey?: string; + accessibilityAnnotation?: AccessibilityAnnotationInfo; + accessibilityControls?: string; + accessibilityDescribedBy?: string; + accessibilityDescription?: string; + accessibilityItemType?: string; + accessibilityLevel?: number; + accessibilityPositionInSet?: number; + accessibilitySetSize?: number; + 'aria-controls'?: string; + 'aria-describedby'?: string; + 'aria-description'?: string; + 'aria-level'?: number; + 'aria-multiselectable'?: boolean; + 'aria-posinset'?: number; + 'aria-required'?: boolean; + 'aria-setsize'?: number; +} + +// --- Windows (react-native-windows) additions ---------------------------------------------------- + +export interface ViewAdditionsWindows { + accessibilityAccessKey?: string; + accessibilityAnnotation?: AccessibilityAnnotationInfo; + accessibilityDescription?: string; + accessibilityItemType?: string; + accessibilityLevel?: number; + accessibilityPosInSet?: number; + accessibilitySetSize?: number; + enableFocusRing?: boolean; + keyDownEvents?: HandledKeyEvent[]; + keyUpEvents?: HandledKeyEvent[]; + onKeyDown?: IKeyboardEventHandler; + onKeyDownCapture?: IKeyboardEventHandler; + onKeyUp?: IKeyboardEventHandler; + onKeyUpCapture?: IKeyboardEventHandler; + onMouseEnter?: IMouseEventHandler; + onMouseLeave?: IMouseEventHandler; + tooltip?: string; + 'aria-description'?: string; + 'aria-level'?: number; + 'aria-posinset'?: number; + 'aria-setsize'?: number; +} + +export interface TextAdditionsWindows { + accessibilityAccessKey?: string; + accessibilityAnnotation?: AccessibilityAnnotationInfo; + accessibilityDescription?: string; + accessibilityItemType?: string; + accessibilityLevel?: number; + accessibilityPosInSet?: number; + accessibilitySetSize?: number; + disabled?: boolean; + textBreakStrategy?: 'simple' | 'highQuality' | 'balanced'; + tooltip?: string; + 'aria-description'?: string; + 'aria-level'?: number; + 'aria-posinset'?: number; + 'aria-setsize'?: number; +} + +export interface ImageAdditionsWindows { + accessibilityAccessKey?: string; + accessibilityAnnotation?: AccessibilityAnnotationInfo; + accessibilityDescription?: string; + accessibilityItemType?: string; + accessibilityLevel?: number; + accessibilityPosInSet?: number; + accessibilitySetSize?: number; + 'aria-description'?: string; + 'aria-level'?: number; + 'aria-posinset'?: number; + 'aria-setsize'?: number; +} + +// --- macOS (react-native-macos) additions -------------------------------------------------------- + +export interface ViewAdditionsMacOS { + acceptsFirstMouse?: boolean; + allowsVibrancy?: boolean; + draggedTypes?: DraggedTypesType; + enableFocusRing?: boolean; + keyDownEvents?: HandledKeyEvent[]; + keyUpEvents?: HandledKeyEvent[]; + mouseDownCanMoveWindow?: boolean; + onDoubleClick?: IMouseEventHandler; + onDragEnter?: IDragEventHandler; + onDragLeave?: IDragEventHandler; + onDrop?: IDragEventHandler; + onKeyDown?: IKeyboardEventHandler; + onKeyUp?: IKeyboardEventHandler; + onMouseEnter?: IMouseEventHandler; + onMouseLeave?: IMouseEventHandler; + onPreferredScrollerStyleDidChange?: (event: NativeSyntheticEvent) => void; + passthroughAllKeyEvents?: boolean; + tooltip?: string; + // macOS `validKeysDown`/`validKeysUp` are arrays of key names (e.g. "Enter", " "), not key events. + validKeysDown?: string[]; + validKeysUp?: string[]; +} + +export interface TextAdditionsMacOS { + disabled?: boolean; + enableFocusRing?: boolean; + focusable?: boolean; + onMouseEnter?: IMouseEventHandler; + onMouseLeave?: IMouseEventHandler; + textBreakStrategy?: 'simple' | 'highQuality' | 'balanced'; + tooltip?: string; +} + +export interface ImageAdditionsMacOS { + tooltip?: string; +} + +// --- Full per-platform prop types (used by the filter masks; key set mirrors each fork) ---------- + +export type ViewPropsWin32 = RN.ViewProps & ViewAdditionsWin32; +export type ViewPropsWindows = RN.ViewProps & ViewAdditionsWindows; +export type ViewPropsMacOS = RN.ViewProps & ViewAdditionsMacOS; + +export type TextPropsWin32 = RN.TextProps & TextAdditionsWin32; +export type TextPropsWindows = RN.TextProps & TextAdditionsWindows; +export type TextPropsMacOS = RN.TextProps & TextAdditionsMacOS; + +export type ImagePropsWin32 = RN.ImageProps & ImageAdditionsWin32; +export type ImagePropsWindows = RN.ImageProps & ImageAdditionsWindows; +export type ImagePropsMacOS = RN.ImageProps & ImageAdditionsMacOS; + +// --- Combined additions (used to build the cross-platform consumer types) ------------------------ + +export type ViewAdditions = ViewAdditionsWin32 & ViewAdditionsWindows & ViewAdditionsMacOS; +export type TextAdditions = TextAdditionsWin32 & TextAdditionsWindows & TextAdditionsMacOS; +export type ImageAdditions = ImageAdditionsWin32 & ImageAdditionsWindows & ImageAdditionsMacOS; diff --git a/packages/utils/adapters/src/textProps.ts b/packages/utils/adapters/src/textProps.ts index 6a3330f8a32..06718250a02 100644 --- a/packages/utils/adapters/src/textProps.ts +++ b/packages/utils/adapters/src/textProps.ts @@ -1,23 +1,17 @@ import type { TextProps, TextStyle, StyleProp } from 'react-native'; -import type { TextProps as TextPropsWindows, TextStyle as TextStyleWindows } from 'react-native-windows'; -import type { TextProps as TextPropsMacOS, TextStyle as TextStyleMacOS } from 'react-native-macos'; -import type { TextProps as TextPropsWin32, TextStyle as TextStyleWin32 } from '@office-iss/react-native-win32'; +import type { TextAdditions, CursorValue } from './platformProps'; /** - * Build up the styles type by combining the base TextStyle with platform specific extensions, - * omitting any overlapping keys to prevent conflicts. + * Build up the styles type by combining the base TextStyle with the cross-platform extensions + * the React Native forks add (currently just `cursor`). */ -type TextStyleWithMacOS = TextStyle & Omit; -type TextStyleWithWindows = TextStyleWithMacOS & Omit; -export type ITextStyle = TextStyleWithWindows & Omit; +export type ITextStyle = TextStyle & { cursor?: CursorValue }; /** - * Build up the props type by combining the base TextProps with platform specific extensions, + * Build up the props type by combining the base TextProps with the platform-neutral fork additions, * omitting any overlapping keys to prevent conflicts and adding in the resolved style type */ -type TextPropsWithMacOS = Omit & Omit; -type TextPropsWithWindows = TextPropsWithMacOS & Omit; -export type ITextProps = TextPropsWithWindows & - Omit & { +export type ITextProps = Omit & + Omit & { style?: StyleProp; }; diff --git a/packages/utils/adapters/src/viewProps.ts b/packages/utils/adapters/src/viewProps.ts index 085b2ed285c..52d06a344c5 100644 --- a/packages/utils/adapters/src/viewProps.ts +++ b/packages/utils/adapters/src/viewProps.ts @@ -1,43 +1,43 @@ import type RN from 'react-native'; -import type Windows from 'react-native-windows'; -import type MacOS from 'react-native-macos'; -import type Win32 from '@office-iss/react-native-win32'; -import type { EventPhase } from 'react-native-windows'; +import type { + ViewAdditions, + CursorValue, + AccessibilityAnnotationInfo, + HandledKeyEvent, + NativeKeyEvent, + KeyEventHandler, +} from './platformProps'; -/** - * Build up the styles type by combining the base ViewStyle with platform specific extensions, - * omitting any overlapping keys to prevent conflicts. - */ - -export type IViewStyle = RN.ViewStyle & Omit; +export type { HandledKeyEvent, NativeKeyEvent, KeyEventHandler }; /** - * Set up a merged key event to use + * Build up the styles type by combining the base ViewStyle with the cross-platform extensions + * the React Native forks add (currently just `cursor`). */ - -export interface HandledKeyEvent extends MacOS.HandledKeyEvent { - code?: string; - eventPhase?: typeof EventPhase.None | typeof EventPhase.Capturing | typeof EventPhase.AtTarget | typeof EventPhase.Bubbling; -} -export type NativeKeyEvent = RN.NativeSyntheticEvent; -export type KeyEventHandler = (event: NativeKeyEvent) => void; +export type IViewStyle = RN.ViewStyle & { cursor?: CursorValue }; // list of props to do special handling for type ExcludedViewProps = 'style' | 'accessibilityRole' | 'accessibilityState' | 'keyDownEvents' | 'keyUpEvents' | 'onKeyDown' | 'onKeyUp'; -// merge the view props from each platform, defaulting to React Native base props in case of overlap -type MergedViewProps = RN.ViewProps & Omit; + +// merge the base React Native view props with the platform-neutral fork additions, defaulting to +// the base props in case of overlap +type MergedViewProps = RN.ViewProps & Omit; /** * The complete set of view props accepted by Fluent UI components with additional cross-platform props added */ export interface IViewProps extends Omit { - // annotation for Win32 is the same as windows with one additional optional property - accessibilityAnnotation?: Win32.ViewProps['accessibilityAnnotation']; - // accessible role should union the types, use adapters to fork settings - accessibilityRole?: RN.AccessibilityRole & Windows.AccessibilityRole & Win32.AccessibilityRole & MacOS.AccessibilityRole; - // merge structs for accessibilityState - accessibilityState?: RN.AccessibilityState & Windows.AccessibilityState & Win32.AccessibilityState & MacOS.AccessibilityState; - // keyboard events + // accessibility annotation is a Win32/Windows concept + accessibilityAnnotation?: AccessibilityAnnotationInfo; + // accessibility role is the common (base) set across platforms + accessibilityRole?: RN.AccessibilityRole; + // merge structs for accessibilityState with the desktop additions + accessibilityState?: RN.AccessibilityState & { + multiselectable?: boolean; + required?: boolean; + readOnly?: boolean; + }; + // keyboard events (unified across platforms) onKeyDown?: KeyEventHandler; onKeyUp?: KeyEventHandler; keyDownEvents?: HandledKeyEvent[]; diff --git a/packages/utils/adapters/tsconfig.json b/packages/utils/adapters/tsconfig.json index 83975437e4d..ce2d7894903 100644 --- a/packages/utils/adapters/tsconfig.json +++ b/packages/utils/adapters/tsconfig.json @@ -2,7 +2,15 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "exclude": ["src/__drift__"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/utils/interactive-hooks/package.json b/packages/utils/interactive-hooks/package.json index 8f4eddbaae4..461ec794491 100644 --- a/packages/utils/interactive-hooks/package.json +++ b/packages/utils/interactive-hooks/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/utils/interactive-hooks" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/utils/interactive-hooks/tsconfig.json b/packages/utils/interactive-hooks/tsconfig.json index 83975437e4d..e7d430457d1 100644 --- a/packages/utils/interactive-hooks/tsconfig.json +++ b/packages/utils/interactive-hooks/tsconfig.json @@ -2,7 +2,23 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../adapters/tsconfig.json" + }, + { + "path": "../../framework-base/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../test-tools/tsconfig.json" + } + ] } diff --git a/packages/utils/styling/package.json b/packages/utils/styling/package.json index a845321e17f..b087e47a16e 100644 --- a/packages/utils/styling/package.json +++ b/packages/utils/styling/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/utils/styling" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/utils/styling/tsconfig.json b/packages/utils/styling/tsconfig.json index 83975437e4d..ff8fae9384a 100644 --- a/packages/utils/styling/tsconfig.json +++ b/packages/utils/styling/tsconfig.json @@ -2,7 +2,14 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + } + ] } diff --git a/packages/utils/test-tools/package.json b/packages/utils/test-tools/package.json index a2aaa125055..424dda8fd18 100644 --- a/packages/utils/test-tools/package.json +++ b/packages/utils/test-tools/package.json @@ -10,7 +10,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/utils/test-tools" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -18,14 +18,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/utils/test-tools/tsconfig.json b/packages/utils/test-tools/tsconfig.json index 83975437e4d..92920c06f6b 100644 --- a/packages/utils/test-tools/tsconfig.json +++ b/packages/utils/test-tools/tsconfig.json @@ -2,7 +2,17 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + } + ] } diff --git a/packages/utils/tokens/package.json b/packages/utils/tokens/package.json index 8f22e6f5db8..1fdf8f8d82a 100644 --- a/packages/utils/tokens/package.json +++ b/packages/utils/tokens/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/microsoft/fluentui-react-native.git", "directory": "packages/utils/tokens" }, - "main": "lib-commonjs/index.js", + "main": "lib/index.js", "module": "lib/index.js", "types": "lib/index.d.ts", "exports": { @@ -17,14 +17,12 @@ "types": "./lib/index.d.ts", "react-native": "./src/index.ts", "import": "./lib/index.js", - "require": "./lib-commonjs/index.js", + "require": "./lib/index.js", "default": "./src/index.ts" } }, "scripts": { - "build": "fluentui-scripts build", - "build-cjs": "tsgo --outDir lib-commonjs", - "build-core": "tsgo --outDir lib --module esnext --moduleResolution bundler", + "build": "tsgo -b", "clean": "fluentui-scripts clean", "depcheck": "fluentui-scripts depcheck", "format": "fluentui-scripts format", diff --git a/packages/utils/tokens/tsconfig.json b/packages/utils/tokens/tsconfig.json index 83975437e4d..e0d74fb031f 100644 --- a/packages/utils/tokens/tsconfig.json +++ b/packages/utils/tokens/tsconfig.json @@ -2,7 +2,20 @@ "extends": "@fluentui-react-native/scripts/tsconfig", "compilerOptions": { "outDir": "lib", - "rootDir": "src" + "rootDir": "src", + "composite": true, + "tsBuildInfoFile": ".cache/tsconfig.tsbuildinfo" }, - "include": ["src"] + "include": ["src"], + "references": [ + { + "path": "../adapters/tsconfig.json" + }, + { + "path": "../../../scripts/tsconfig.json" + }, + { + "path": "../../theming/theme-types/tsconfig.json" + } + ] } diff --git a/scripts/configs/tsconfig/tsconfig.strict.json b/scripts/configs/tsconfig/tsconfig.strict.json index c10837972fd..fcbe913550b 100644 --- a/scripts/configs/tsconfig/tsconfig.strict.json +++ b/scripts/configs/tsconfig/tsconfig.strict.json @@ -3,8 +3,8 @@ "compilerOptions": { "target": "esnext", "lib": ["esnext"], - "module": "nodenext", - "moduleResolution": "nodenext", + "module": "esnext", + "moduleResolution": "bundler", "outDir": "lib", "rewriteRelativeImportExtensions": true, "jsx": "react-jsx", diff --git a/scripts/package.json b/scripts/package.json index d47d36283ec..81b00c57fd5 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -27,8 +27,7 @@ "./tsconfig-strict": "./configs/tsconfig/tsconfig.strict.json" }, "scripts": { - "build": "tsgo", - "build-core": "tsgo", + "build": "tsgo -b", "bundlesize": "bundlesize --debug", "depcheck": "node ./src/cli.ts depcheck", "format": "node ./src/cli.ts format", @@ -74,7 +73,7 @@ "@rnx-kit/types-node": "catalog:", "@types/micromatch": "^4.0.9", "@types/node": "catalog:", - "@typescript/native-preview": "7.0.0-dev.20260113.1", + "@typescript/native-preview": "7.0.0-dev.20260610.1", "@yarnpkg/types": "^4.0.1", "chalk": "^4.0.0", "clipanion": "^4.0.0-rc.4", diff --git a/scripts/src/cli.ts b/scripts/src/cli.ts index 788a380a2ae..a48c091644e 100644 --- a/scripts/src/cli.ts +++ b/scripts/src/cli.ts @@ -5,7 +5,6 @@ import { BuildCommand } from './tasks/build.ts'; import { CleanCommand } from './tasks/clean.ts'; import { FormatCommand } from './tasks/format.ts'; import { LintCommand } from './tasks/lint.ts'; -import { LintPackageCommand } from './tasks/lintPackage.ts'; import { JestCommand } from './tasks/jest.ts'; import { CheckPublishingCommand } from './tasks/checkPublishingTask.ts'; import { DepcheckCommand } from './tasks/depcheck.ts'; @@ -20,7 +19,6 @@ cli.register(BuildCommand); cli.register(CleanCommand); cli.register(FormatCommand); cli.register(LintCommand); -cli.register(LintPackageCommand); cli.register(JestCommand); cli.register(CheckPublishingCommand); cli.register(DepcheckCommand); diff --git a/scripts/src/index.ts b/scripts/src/index.ts index d51482491f5..3ede9ae5c8c 100644 --- a/scripts/src/index.ts +++ b/scripts/src/index.ts @@ -1,5 +1,5 @@ export { isPnpmMode } from './utils/ispnpm.ts'; -export { constrain } from './tasks/constrain.ts'; +export { constrain, constrainRoot } from './tasks/constrain.ts'; export type { PackageManifest } from './pkgContext.ts'; export { PackageContext } from './pkgContext.ts'; export { repoContext, RepoContext } from './repoContext.ts'; diff --git a/scripts/src/preinstall/tool-versions.ts b/scripts/src/preinstall/tool-versions.ts index c86fbd11cd0..3382c945723 100644 --- a/scripts/src/preinstall/tool-versions.ts +++ b/scripts/src/preinstall/tool-versions.ts @@ -33,7 +33,7 @@ const devToolVersions: Record = { '@types/es6-promise': '0.0.32', '@types/jest': '^29.0.0', '@types/node': '^22.0.0', - '@types/react-test-renderer': '16.9.0', + '@types/react-test-renderer': '^19.1.0', '@typescript-eslint/eslint-plugin': '^8.36.0', '@typescript-eslint/parser': '^8.36.0', '@uifabric/prettier-rules': '^7.0.3', @@ -49,7 +49,7 @@ const devToolVersions: Record = { 'metro-react-native-babel-transformer': '^0.76.5', oxlint: '^1.57.0', 'oxlint-tsgolint': '^0.17.4', - 'react-test-renderer': '18.2.0', + 'react-test-renderer': '^19.1.0', rimraf: '^5.0.1', // Fill versions from scripts first ...scriptManifest.devDependencies, diff --git a/scripts/src/repoContext.ts b/scripts/src/repoContext.ts index 574dac8e9ac..510acc04a71 100644 --- a/scripts/src/repoContext.ts +++ b/scripts/src/repoContext.ts @@ -1,5 +1,7 @@ import { getWorkspacesInfoSync } from '@rnx-kit/tools-workspaces'; import { execSync } from 'node:child_process'; +import path from 'node:path'; +import fs from 'node:fs'; /** * Get the cached repo context, which includes the root folder, workspace folders, and catalog. @@ -20,6 +22,7 @@ export class RepoContext { private _root?: string; private _workspaceFolders?: string[]; private _catalog?: Record; + private _files: Record = {}; /** * Get the root folder for the repo. This is the folder that contains the lockfile @@ -47,6 +50,24 @@ export class RepoContext { return this._catalog; } + hasFile(...parts: string[]): boolean { + let filePath = path.join(...parts); + if (!path.isAbsolute(filePath)) { + filePath = path.join(this.root, filePath); + } + return (this._files[filePath] ??= fs.existsSync(filePath)); + } + + pathTo(from: string, to: string): string { + if (!path.isAbsolute(from)) { + from = path.join(this.root, from); + } + if (!path.isAbsolute(to)) { + to = path.join(this.root, to); + } + return path.relative(from, to).replace(/\\/g, '/'); + } + /** * Check if a folder is a workspace */ diff --git a/scripts/src/tasks/constrain.ts b/scripts/src/tasks/constrain.ts index 5cdb0a00ef0..bc5a6bf1bcb 100644 --- a/scripts/src/tasks/constrain.ts +++ b/scripts/src/tasks/constrain.ts @@ -1,18 +1,70 @@ import { PackageContext, type PackageManifest } from '../pkgContext.ts'; import { repoContext } from '../repoContext.ts'; import type { Yarn } from '@yarnpkg/types'; +import { referencesToPaths, pathsToReferences, areSetsEqual, type TsConfigJson, addSubBuildPaths } from '../utils/tsConfigs.ts'; +import type { JSONValidator } from '@rnx-kit/lint-json'; const repoCtx = repoContext(); +const targetTSConfigs = new Set(); + export function constrain(workspace: Yarn.Constraints.Workspace): void { const ctx = PackageContext.initYarn(workspace); if (workspace.cwd !== 'scripts') { ctx.enforce('rnx-kit.extends', '@fluentui-react-native/scripts/kit-config'); } + if (ctx.manifest.scripts?.build) { + ctx.enforce('scripts.build', 'tsgo -b'); + } + ctx.enforce('scripts.build-cjs', undefined); + ctx.enforce('scripts.build-core', undefined); + const tsCtx = ctx.validateJSON('tsconfig.json'); + if (tsCtx) { + const depBuilds = new Set(); + for (const [_, dependency] of workspace.pkg.dependencies) { + if (dependency.workspace) { + const targetPath = `${dependency.workspace.cwd}/tsconfig.json`; + if (repoCtx.hasFile(targetPath)) { + depBuilds.add(repoCtx.pathTo(workspace.cwd, targetPath)); + } + } + } + addSubBuildPaths(ctx.root, depBuilds); + if (depBuilds.size > 0) { + ensureTSConfigReferences(tsCtx, depBuilds); + } else { + tsCtx.enforce('references', undefined); + } + targetTSConfigs.add(`${workspace.cwd}/tsconfig.json`); + if (!tsCtx.raw.files || tsCtx.raw.files.length > 0) { + tsCtx.enforce('compilerOptions.composite', true); + tsCtx.enforce('compilerOptions.tsBuildInfoFile', '.cache/tsconfig.tsbuildinfo'); + } + tsCtx.finish(); + } assertDeprecations(ctx); useCatalogs(ctx); } +export function constrainRoot(workspace: Yarn.Constraints.Workspace): void { + const ctx = PackageContext.initYarn(workspace); + ctx.enforce('private', true); + const rootTSConfig = ctx.validateJSON('tsconfig.json'); + if (!rootTSConfig) { + ctx.error('Root tsconfig.json is required to define project references for the workspaces'); + return; + } + ensureTSConfigReferences(rootTSConfig, targetTSConfigs); + rootTSConfig.finish(); +} + +function ensureTSConfigReferences(ctx: JSONValidator, expectedRefs: Set): void { + const existingSet = referencesToPaths(ctx.raw.references); + if (!areSetsEqual(existingSet, expectedRefs)) { + ctx.enforce('references', pathsToReferences(expectedRefs)); + } +} + function useCatalogs(ctx: PackageContext): void { const catalog = repoCtx.catalog; const deps: (keyof PackageManifest)[] = ['dependencies', 'devDependencies']; diff --git a/scripts/src/tasks/lintPackage.ts b/scripts/src/tasks/lintPackage.ts deleted file mode 100644 index 0d632842fb3..00000000000 --- a/scripts/src/tasks/lintPackage.ts +++ /dev/null @@ -1,538 +0,0 @@ -import { Command, Option } from 'clipanion'; -import type { ExportSet, PackageManifest, ResolvedBuildConfig } from '../utils/projectRoot.ts'; -import { getProjectRoot, type ProjectRoot } from '../utils/projectRoot.ts'; -import { getResolvedConfig } from '../utils/buildConfig.ts'; -import { isFixMode } from '../utils/env.ts'; -import { runAlignDeps } from './runAlignDeps.ts'; -import { DepCheckRunner } from './depcheck.ts'; -import { getCatalog } from '../utils/getCatalog.ts'; -import { createJSONValidator } from '@rnx-kit/lint-json'; -import fs from 'node:fs'; -import path from 'node:path'; - -export class LintPackageCommand extends Command { - static override paths = [['lint-package']]; - - static override usage = Command.Usage({ - description: 'Lint the current package configuration', - details: - 'This command analyzes the current package configuration for potential issues. When --fix is specified, it will attempt to automatically fix any detected problems.', - examples: [['Lint the current package', '$0 lint-package']], - }); - - fix = Option.Boolean('--fix', false, { - description: 'Automatically fix detected issues where possible', - }); - - fixDepWarnings = Option.Boolean('--fix-dep-warnings', false, { - description: 'Automatically fix dependency warnings where possible, be very careful when using this option', - }); - - private changed = false; - private issues = 0; - private isScripts = false; - private projRoot: ProjectRoot = getProjectRoot(process.cwd()); - private result = 0; - private removedDevDeps: string[] = []; - private addedDevDeps: Record = {}; - private ensuredCapabilities: string[] = []; - private removedCapabilities: string[] = []; - private getCatalog = getCatalog(); - - async execute() { - this.fix = isFixMode(this.fix); - const manifest = this.projRoot.manifest; - this.isScripts = manifest.name === '@fluentui-react-native/scripts'; - - const runningOps: Promise[] = []; - - // kick off align deps or wait for it in fix mode - if (this.fix) { - await this.startAlignDepsCheck(); - } else { - runningOps.push(this.startAlignDepsCheck()); - } - - // kick off depcheck or wait for it in fix mode - if (this.fix) { - await this.startDependencyCheck(); - } else { - runningOps.push(this.startDependencyCheck()); - } - - // now do the custom linting - const buildConfig = getResolvedConfig(this.projRoot, true); - - this.checkPrivateVersion(); - this.checkManifest(); - this.checkScripts(); - if (!buildConfig.typescript.checkScript && this.projRoot.manifest.type === 'module') { - this.checkModuleConfig(); - } else { - this.checkEntryPoints(buildConfig); - this.checkBuildConfig(buildConfig); - } - this.checkDependencies(); - this.checkDevDeps(); - this.checkPeerDeps(); - this.checkRnxKitConfig(); - this.checkTsConfig(); - await this.checkCatalogs(); - - // report the results for the custom linting - this.handleResult(this.issues > 0 ? 1 : 0, 'custom package rules'); - - // wait for any queued ops to finish - await Promise.all(runningOps); - - // write changes if in fix mode - if (this.fix && this.changed) { - this.projRoot.writeManifest(); - console.log('Updated package.json for ', this.projRoot.manifest.name); - } - - return this.result; - } - - private handleResult(code: number, source: string) { - if (code !== 0) { - console.error(`lint-package: ${source} failed with code`, code); - this.result = code; - } - } - - private checkModuleConfig() { - const manifest = this.projRoot.manifest; - const scripts = manifest.scripts || {}; - this.errorIf(scripts.build !== 'tsgo', 'Directly call tsgo for build script instead of using build-core', () => { - this.projRoot.updateRecordEntry('scripts', 'build', 'tsgo'); - }); - this.errorIf(scripts['build-core'] !== 'tsgo', 'Directly call tsgo for module packages', () => { - this.projRoot.updateRecordEntry('scripts', 'build-core', 'tsgo'); - }); - this.errorIf(scripts['build-cjs'] !== undefined, 'Module packages should not have a build-cjs script', () => { - this.projRoot.updateRecordEntry('scripts', 'build-cjs', undefined); - }); - if (manifest.main !== './lib/index.js' || manifest.module !== './lib/index.js') { - this.errorIf(true, 'Module packages should have main and module point to ./lib/index.js', () => { - this.projRoot.setManifestEntry('main', './lib/index.js'); - this.projRoot.setManifestEntry('module', './lib/index.js'); - }); - } - const defaultExport = manifest.exports?.['.']; - if (defaultExport) { - if (typeof defaultExport === 'string' || defaultExport.import !== './lib/index.js' || defaultExport.require !== './lib/index.js') { - this.errorIf(true, 'Module packages should have default export point to ./lib/index.js', () => { - this.projRoot.setManifestEntry('exports', { - ...manifest.exports, - '.': { - types: './lib/index.d.ts', - import: './lib/index.js', - require: './lib/index.js', - default: './src/index.ts', - }, - }); - }); - } - } - } - - private async startDependencyCheck() { - const runner = new DepCheckRunner({ - verbose: false, - fixErrors: this.fix, - fixWarnings: this.fixDepWarnings, - dryRun: false, - }); - const result = await runner.execute(); - if (this.fix && runner.madeChanges()) { - this.changed = true; - } - this.handleResult(result, 'depcheck'); - } - - private async startAlignDepsCheck() { - if (!this.isScripts && this.projRoot.manifest['rnx-kit']?.alignDeps) { - const result = await runAlignDeps(this.projRoot.root, this.fix); - if (this.fix) { - this.changed = this.projRoot.reloadManifest(); - } - this.handleResult(result, 'align-deps'); - } - } - - private checkPrivateVersion() { - const manifest = this.projRoot.manifest; - if (manifest.private) { - this.errorIf(manifest.version !== '0.1.0', 'Private packages must have version 0.1.0', () => { - this.projRoot.setManifestEntry('version', '0.1.0'); - }); - } - } - - private checkManifest() { - const manifest = this.projRoot.manifest; - this.warnIf(!manifest.description, 'Package is missing a description field'); - this.errorIf(manifest.typings !== undefined, 'typings field is deprecated; use types instead', () => { - if (manifest.types === undefined && manifest.typings !== undefined) { - this.projRoot.setManifestEntry('types', manifest.typings); - } - this.projRoot.clearManifestEntry('typings'); - }); - } - - private checkDependencies() { - const manifest = this.projRoot.manifest; - if (manifest['rnx-kit']?.kitType === 'app') { - return; - } - const dependencies = manifest.dependencies || {}; - this.errorIf(dependencies.react !== undefined, 'react should be a peerDependency, not a dependency'); - this.errorIf(dependencies['react-native'] !== undefined, 'react-native should be a peerDependency, not a dependency'); - this.errorIf(dependencies['react-native-macos'] !== undefined, 'react-native-macos should be a peerDependency, not a dependency'); - this.errorIf(dependencies['react-native-windows'] !== undefined, 'react-native-windows should be a peerDependency, not a dependency'); - this.errorIf( - dependencies['@office-iss/react-native-win32'] !== undefined, - '@office-iss/react-native-win32 should be a peerDependency, not a dependency', - ); - } - - private checkDevDeps() { - const issues: string[] = []; - const devDependencies = this.projRoot.manifest.devDependencies || {}; - for (const depName of this.removedDevDeps) { - if (devDependencies[depName] !== undefined) { - issues.push(`- devDependency ${depName} should be removed`); - this.projRoot.updateRecordEntry('devDependencies', depName, undefined); - } - } - for (const [depName, depVersion] of Object.entries(this.addedDevDeps)) { - if (devDependencies[depName] === undefined) { - issues.push(`- devDependency ${depName} should be added`); - this.projRoot.updateRecordEntry('devDependencies', depName, depVersion); - } - } - this.errorIf(issues.length > 0, issues.join('\n'), () => { - // changes already applied above - }); - } - - private checkPeerDeps() { - const issues: string[] = []; - const manifest = this.projRoot.manifest; - const peerDeps = new Set(Object.keys(manifest.peerDependencies || {})); - if (peerDeps.has('@types/react')) { - if (!manifest.peerDependenciesMeta) { - this.projRoot.setManifestEntry('peerDependenciesMeta', {}); - issues.push('- peerDependenciesMeta field should be added for optional peer dependencies'); - } - const peerDepsMeta = manifest.peerDependenciesMeta || {}; - if (!peerDepsMeta['@types/react'] || !peerDepsMeta['@types/react'].optional) { - this.projRoot.updateRecordEntry('peerDependenciesMeta', '@types/react', { optional: true }); - issues.push('- @types/react should be marked as an optional peer dependency'); - } - } - const peerDepsMeta = manifest.peerDependenciesMeta || {}; - for (const depName of Object.keys(peerDepsMeta)) { - if (!peerDeps.has(depName)) { - issues.push(`- peerDependenciesMeta entry for ${depName} should be removed since it's not a declared peer dependency`); - this.projRoot.updateRecordEntry('peerDependenciesMeta', depName, undefined); - } - } - - this.errorIf(issues.length > 0, issues.join('\n'), () => { - // changes already applied above - }); - } - - private checkRnxKitConfig() { - const projRoot = this.projRoot; - const manifest = projRoot.manifest; - if (manifest.furn?.packageType === 'tooling') { - return; - } - const rnxKitIssues: string[] = []; - if (manifest['rnx-kit'] === undefined) { - rnxKitIssues.push('- Missing rnx-kit configuration'); - } - const rnxKitConfig = manifest['rnx-kit'] || {}; - if (rnxKitConfig.kitType === undefined) { - rnxKitIssues.push('- Missing rnx-kit.kitType field'); - rnxKitConfig.kitType = 'library'; - } - if (!rnxKitConfig.alignDeps) { - rnxKitIssues.push('- Missing rnx-kit.alignDeps field'); - rnxKitConfig.alignDeps = {}; - } - const alignDeps = rnxKitConfig.alignDeps || {}; - if (alignDeps.presets !== undefined) { - rnxKitIssues.push('- rnx-kit.alignDeps.presets should come from the root configuration'); - delete alignDeps.presets; - } - const capabilities: string[] = alignDeps.capabilities || []; - for (const removedCap of this.removedCapabilities) { - const index = capabilities.indexOf(removedCap); - if (index >= 0) { - rnxKitIssues.push(`- rnx-kit.alignDeps.capabilities should not include "${removedCap}"`); - capabilities.splice(index, 1); - } - } - for (const ensuredCap of this.ensuredCapabilities) { - if (!capabilities.includes(ensuredCap)) { - rnxKitIssues.push(`- rnx-kit.alignDeps.capabilities is missing "${ensuredCap}"`); - capabilities.push(ensuredCap); - } - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - alignDeps.capabilities = capabilities.sort() as any[]; - this.errorIf(rnxKitIssues.length > 0, rnxKitIssues.join('\n'), () => { - projRoot.setManifestEntry('rnx-kit', rnxKitConfig); - }); - } - - private async checkCatalogs() { - const catalog = await this.getCatalog; - this.checkCatalogUsage('dependencies', catalog); - this.checkCatalogUsage('devDependencies', catalog); - } - - private checkCatalogUsage(key: 'dependencies' | 'devDependencies', catalog: Record) { - const depSet = this.projRoot.manifest[key] || {}; - for (const depName of Object.keys(depSet)) { - if (catalog[depName] !== undefined) { - this.errorIf(depSet[depName] !== 'catalog:', `- ${key}: ${depName} should use "catalog:" version specifier`, () => { - this.projRoot.updateRecordEntry(key, depName, 'catalog:'); - }); - } - } - } - - private checkScripts() { - const scripts = this.projRoot.manifest.scripts || {}; - this.warnIf(scripts['just'] !== undefined, 'just script is deprecated, can invoke by calling yarn fluentui-scripts instead', () => { - this.projRoot.updateRecordEntry('scripts', 'just', undefined); - }); - this.warnIf(scripts['prettier-fix'] !== undefined, 'prettier-fix script is deprecated, rename to format:fix', () => { - this.projRoot.updateRecordEntry('scripts', 'prettier-fix', undefined); - }); - this.warnIf(scripts['prettier'] !== undefined, 'prettier script is deprecated, rename to format', () => { - this.projRoot.updateRecordEntry('scripts', 'prettier', undefined); - }); - } - - private validateEntryPoint(collection: T, key: K, expectedOutDir: string, otherOutDir: string) { - const entryPoint = typeof collection[key] === 'string' ? (collection[key] as string) : undefined; - if (entryPoint) { - const normalizedEntry = removeDotPrefix(entryPoint) + '/'; - const expected = `${expectedOutDir}/`; - const notExpected = `${otherOutDir}/`; - this.errorIf( - normalizedEntry.startsWith(notExpected), - `Entry point ${String(key)} (${entryPoint}) should not be in output ${expectedOutDir}`, - () => { - collection[key] = entryPoint.replace(notExpected, expected) as T[K]; - }, - ); - } - } - - private validateExportsGroup(manifest: PackageManifest, groupName: string, isDefault: boolean, buildConfig: ResolvedBuildConfig) { - const noExportsRequired = Boolean(manifest.private || buildConfig.typescript.checkScript); - this.errorIf(!manifest.exports && !noExportsRequired, 'Missing exports field for package with no build script', () => { - this.projRoot.setManifestEntry('exports', {}); - }); - const exports = manifest.exports; - if (!exports) { - return; - } - - const groupEntry = exports[groupName]; - const group = typeof groupEntry === 'object' && !Array.isArray(groupEntry) ? groupEntry : undefined; - if (group || isDefault) { - const updated = { ...group }; - const keys = Object.keys(updated); - const isOrdered = (lhs: keyof ExportSet, rhs: keyof ExportSet) => { - return !updated[lhs] || !updated[rhs] || keys.indexOf(rhs) > keys.indexOf(lhs); - }; - const errors: string[] = []; - if (!group) { - errors.push(`Missing required exports group ${groupName}`); - } - if (updated.types && keys[0] !== 'types') { - errors.push(`'types' entry should be first in exports for ${groupName}`); - } - if (isDefault) { - const manifestTypes = manifest.types ? toDotPrefix(manifest.types) : undefined; - const manifestModule = manifest.module ? toDotPrefix(manifest.module) : undefined; - const manifestMain = manifest.main ? toDotPrefix(manifest.main) : undefined; - if (manifestTypes && updated.types !== manifestTypes) { - errors.push(`'types' entry in exports does not match manifest.types`); - updated.types = manifestTypes; - } - if (manifestModule && updated.import !== manifestModule) { - errors.push(`'import' entry in exports does not match manifest.module`); - updated.import = manifestModule; - } - if (manifestMain && updated.require !== manifestMain) { - errors.push(`'require' entry in exports does not match manifest.main`); - updated.require = manifestMain; - } - } - const esmDir = buildConfig.typescript.esmDir; - const cjsDir = buildConfig.typescript.cjsDir; - this.validateEntryPoint(updated, 'react-native', esmDir, cjsDir); - this.validateEntryPoint(updated, 'import', esmDir, cjsDir); - this.validateEntryPoint(updated, 'require', cjsDir, esmDir); - if (!isOrdered('react-native', 'import')) { - errors.push(`'react-native' entry should come before 'import' in exports for ${groupName}`); - } - if (!isOrdered('react-native', 'require')) { - errors.push(`'react-native' entry should come before 'require' in exports for ${groupName}`); - } - if (!isOrdered('import', 'require')) { - errors.push(`'import' entry should come before 'require' in exports for ${groupName}`); - } - if (updated.default && keys[keys.length - 1] !== 'default') { - errors.push(`'default' entry should be last in exports for ${groupName}`); - } - if (updated.import) { - const importInSrc = updated.import.startsWith('./src'); - const defaultExport = importInSrc ? updated.import : updated.import.replace(esmDir, 'src').replace(/\.js$/, '.ts'); - if (!updated['react-native'] || updated['react-native'] !== defaultExport) { - errors.push(`'react-native' entry in exports does not match the expected default export`); - updated['react-native'] = defaultExport; - } - if (!updated.default || updated.default !== defaultExport) { - errors.push(`'default' entry in exports does not match the expected default export`); - updated.default = defaultExport; - } - } - this.errorIf(errors.length > 0, errors.join('\n'), () => { - const { types, import: imp, require: req, default: def, ...rest } = updated; - // restructure the group to have types, , import, require, default in order - exports[groupName] = { - ...(types && { types }), - ...rest, - ...(imp && { import: imp }), - ...(req && { require: req }), - ...(def && { default: def }), - }; - }); - } - } - - private checkEntryPoints(buildConfig: ResolvedBuildConfig) { - const manifest = this.projRoot.manifest; - const { main, module, private: isPrivate } = manifest; - const { cjsDir, esmDir } = buildConfig.typescript; - this.validateEntryPoint(manifest, 'main', cjsDir, esmDir); - this.validateEntryPoint(manifest, 'module', esmDir, cjsDir); - if (!isPrivate) { - this.errorIf(Boolean(!manifest.exports && (main || module)), 'Missing exports field for public package', () => { - const newExports = { '.': {} }; - this.projRoot.setManifestEntry('exports', newExports); - }); - } - const exports = manifest.exports; - if (exports) { - const defaultExport = exports['.']; - // this is really only ok for packages that only have a single build output and no types like a config package - const validStringExport = typeof defaultExport === 'string' && !(main && module && main !== module && manifest.types === undefined); - if (typeof defaultExport !== 'string' || !validStringExport) { - this.validateExportsGroup(manifest, '.', true, buildConfig); - } - for (const key of Object.keys(exports)) { - if (key !== '.') { - this.validateExportsGroup(manifest, key, false, buildConfig); - } - } - } - } - - private checkBuildConfig(buildConfig: ResolvedBuildConfig) { - const { cjsScript, esmScript, checkScript } = buildConfig.typescript; - const hasJsBuilds = Boolean(cjsScript || esmScript); - const hasBuilds = hasJsBuilds || Boolean(checkScript); - const scripts = this.projRoot.manifest.scripts || {}; - - const buildScriptText = hasJsBuilds ? this.getFluentScriptsText('build') : checkScript; - this.errorIf(hasBuilds && scripts.build !== buildScriptText, 'Missing or incorrect build script', () => { - this.projRoot.updateRecordEntry('scripts', 'build', buildScriptText); - }); - if (cjsScript) { - this.errorIf(scripts['build-cjs'] !== cjsScript, 'Missing or incorrect build-cjs script', () => { - this.projRoot.updateRecordEntry('scripts', 'build-cjs', cjsScript); - }); - } else { - this.errorIf(scripts['build-cjs'] !== undefined, 'Extraneous build-cjs script', () => { - this.projRoot.updateRecordEntry('scripts', 'build-cjs', undefined); - }); - } - const coreScript = esmScript || checkScript; - if (esmScript || checkScript) { - this.errorIf(scripts['build-core'] !== coreScript, 'Missing or incorrect build-core script', () => { - this.projRoot.updateRecordEntry('scripts', 'build-core', coreScript); - }); - } else { - this.errorIf(scripts['build-core'] !== undefined, 'Extraneous build-core script', () => { - this.projRoot.updateRecordEntry('scripts', 'build-core', undefined); - }); - } - } - - private checkTsConfig() { - const tsconfigPath = path.join(this.projRoot.root, 'tsconfig.json'); - if (fs.existsSync(tsconfigPath)) { - const validator = createJSONValidator(tsconfigPath, undefined, { fix: this.fix, reportError: this.error }); - const compilerOptions = validator.raw.compilerOptions; - if (typeof compilerOptions === 'object' && compilerOptions !== null && !Array.isArray(compilerOptions)) { - if (!compilerOptions.noEmit) { - validator.enforce('compilerOptions.rootDir', 'src'); - validator.enforce('compilerOptions.outDir', 'lib'); - } - } - validator.finish(); - } - } - - private error = (message: string) => { - console.error(`- Error: ${message}`); - this.issues++; - }; - - private warnIf(check: boolean, message: string, fixFn?: () => void) { - if (check) { - if (this.fix && fixFn) { - fixFn(); - this.changed = true; - console.log(`- Fixed: ${message}`); - } else { - console.warn(`- Warning: ${message}`); - } - } - } - - private errorIf(check: boolean, message: string, fixFn?: () => void) { - if (check) { - if (this.fix && fixFn) { - fixFn(); - this.changed = true; - console.log(`- Fixed: ${message}`); - } else { - this.error(message); - } - } - } - - private getFluentScriptsText(command: string) { - return this.isScripts ? `node ./src/cli.ts ${command}` : `fluentui-scripts ${command}`; - } -} - -function toDotPrefix(path: string) { - return path.startsWith('./') ? path : `./${path}`; -} - -function removeDotPrefix(path: string) { - return path.startsWith('./') ? path.slice(2) : path; -} diff --git a/scripts/src/tasks/runAlignDeps.ts b/scripts/src/tasks/runAlignDeps.ts deleted file mode 100644 index ab476e01c85..00000000000 --- a/scripts/src/tasks/runAlignDeps.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { scriptsDir } from '../utils/ispnpm.ts'; -import { spawn } from 'node:child_process'; -import { yarnVerb } from '../utils/runScript.ts'; -import path from 'node:path'; - -export async function runAlignDeps(targetDir: string, fixMode: boolean): Promise { - const spawnArgs = ['exec', 'rnx-align-deps', '--no-unmanaged']; - if (fixMode) { - spawnArgs.push('--write'); - } - spawnArgs.push(path.resolve(targetDir)); - return new Promise((resolve) => { - spawn(yarnVerb, spawnArgs, { - cwd: scriptsDir(), - stdio: 'inherit', - shell: true, - }).on('close', (code) => { - resolve(code ?? -1); - }); - }); -} diff --git a/scripts/src/utils/env.ts b/scripts/src/utils/env.ts index ba93c25616e..47260196378 100644 --- a/scripts/src/utils/env.ts +++ b/scripts/src/utils/env.ts @@ -1,8 +1,7 @@ /** * Lage doesn't support cleanly passing parameters to sub scripts, so this allows our scripts that - * support a "fix" mode to be toggled via an environment variable. This allows things like lint --fix or - * lint-package --fix to be run from the root level without having to have duplicate scripts entries for - * each package. + * support a "fix" mode to be toggled via an environment variable. This allows things like lint --fix + * to be run from the root level without having to have duplicate scripts entries for each package. */ // env variable to use diff --git a/scripts/src/utils/getCatalog.ts b/scripts/src/utils/getCatalog.ts deleted file mode 100644 index 359af98f3ee..00000000000 --- a/scripts/src/utils/getCatalog.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { exec } from 'node:child_process'; -import { scriptsDir } from './ispnpm.ts'; - -export async function getCatalog(): Promise> { - const command = 'yarn config get catalog --json'; - const output = await execWithOutput(command); - return JSON.parse(output) as Record; -} - -function execWithOutput(command: string): Promise { - return new Promise((resolve, reject) => { - const options = { cwd: scriptsDir() }; - exec(command, options, (error, stdout, stderr) => { - if (error) { - reject(error); - return; - } - if (stderr) { - reject(new Error(stderr)); - return; - } - resolve(stdout); - }); - }); -} diff --git a/scripts/src/utils/tsConfigs.ts b/scripts/src/utils/tsConfigs.ts new file mode 100644 index 00000000000..57157791447 --- /dev/null +++ b/scripts/src/utils/tsConfigs.ts @@ -0,0 +1,62 @@ +import path from 'node:path'; +import fs from 'node:fs'; + +export type TsConfigJson = { + extends?: string | string[]; + compilerOptions?: Record; + include?: string[]; + exclude?: string[]; + files?: string[]; + references?: { path: string }[]; +}; + +/** + * Convert a tsconfig references array to a set of paths for easier manipulation + * and validation of includes/excludes in the context of package validation + */ +export function referencesToPaths(refs: TsConfigJson['references']): Set { + const paths = new Set(); + if (refs) { + for (const ref of refs) { + paths.add(ref.path); + } + } + return paths; +} + +/** + * Convert a set of paths into an array of tsconfig references for writing back to a tsconfig file after validation and manipulation + */ +export function pathsToReferences(paths: Iterable): TsConfigJson['references'] { + const refs: TsConfigJson['references'] = []; + for (const path of paths) { + refs.push({ path }); + } + return refs; +} + +export function areSetsEqual(a: Set, b: Set): boolean { + if (a.size !== b.size) { + return false; + } + for (const item of a) { + if (!b.has(item)) { + return false; + } + } + return true; +} + +const SUB_BUILD_PATH = 'targets'; + +export function addSubBuildPaths(cwd: string, targets: Set): void { + const subBuildPath = path.join(cwd, SUB_BUILD_PATH); + if (fs.existsSync(subBuildPath) && fs.statSync(subBuildPath).isDirectory()) { + const entries = fs.readdirSync(subBuildPath, { withFileTypes: true }); + for (const entry of entries) { + if (!entry.isDirectory() && entry.name.startsWith('tsconfig')) { + targets.add(`./${SUB_BUILD_PATH}/${entry.name}`); + } + } + } +} diff --git a/scripts/targets/tsconfig.check.json b/scripts/targets/tsconfig.check.json new file mode 100644 index 00000000000..4add80b804c --- /dev/null +++ b/scripts/targets/tsconfig.check.json @@ -0,0 +1,12 @@ +{ + "extends": "@rnx-kit/tsconfig/tsconfig.node.json", + "compilerOptions": { + "noEmit": true, + "allowSyntheticDefaultImports": true, + "target": "es2022", + "composite": true, + "tsBuildInfoFile": "../.cache/tsconfig.tsbuildinfo" + }, + "include": [".."], + "exclude": ["../lib"] +} diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 07998cf34bf..2403834dbce 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -1,10 +1,11 @@ { - "extends": "@rnx-kit/tsconfig/tsconfig.node.json", + "files": [], "compilerOptions": { - "noEmit": true, - "allowSyntheticDefaultImports": true, - "target": "es2022" + "composite": true }, - "include": ["."], - "exclude": ["./lib"] + "references": [ + { + "path": "./targets/tsconfig.check.json" + } + ] } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000000..82e7dc8b85e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,239 @@ +{ + "files": [], + "references": [ + { + "path": "apps/E2E/tsconfig.json" + }, + { + "path": "apps/fluent-tester/tsconfig.json" + }, + { + "path": "apps/tester-core/tsconfig.json" + }, + { + "path": "apps/win32/tsconfig.json" + }, + { + "path": "packages/codemods/tsconfig.json" + }, + { + "path": "packages/components/Avatar/tsconfig.json" + }, + { + "path": "packages/components/Badge/tsconfig.json" + }, + { + "path": "packages/components/Button/tsconfig.json" + }, + { + "path": "packages/components/Callout/tsconfig.json" + }, + { + "path": "packages/components/Checkbox/tsconfig.json" + }, + { + "path": "packages/components/Chip/tsconfig.json" + }, + { + "path": "packages/components/ContextualMenu/tsconfig.json" + }, + { + "path": "packages/components/Divider/tsconfig.json" + }, + { + "path": "packages/components/FocusTrapZone/tsconfig.json" + }, + { + "path": "packages/components/FocusZone/tsconfig.json" + }, + { + "path": "packages/components/Icon/tsconfig.json" + }, + { + "path": "packages/components/Input/tsconfig.json" + }, + { + "path": "packages/components/Link/tsconfig.json" + }, + { + "path": "packages/components/Menu/tsconfig.json" + }, + { + "path": "packages/components/MenuButton/tsconfig.json" + }, + { + "path": "packages/components/Notification/tsconfig.json" + }, + { + "path": "packages/components/Persona/tsconfig.json" + }, + { + "path": "packages/components/PersonaCoin/tsconfig.json" + }, + { + "path": "packages/components/Pressable/tsconfig.json" + }, + { + "path": "packages/components/RadioGroup/tsconfig.json" + }, + { + "path": "packages/components/Separator/tsconfig.json" + }, + { + "path": "packages/components/Stack/tsconfig.json" + }, + { + "path": "packages/components/Switch/tsconfig.json" + }, + { + "path": "packages/components/TabList/tsconfig.json" + }, + { + "path": "packages/components/Text/tsconfig.json" + }, + { + "path": "packages/deprecated/foundation-composable/tsconfig.json" + }, + { + "path": "packages/deprecated/foundation-compose/tsconfig.json" + }, + { + "path": "packages/deprecated/foundation-settings/tsconfig.json" + }, + { + "path": "packages/deprecated/foundation-tokens/tsconfig.json" + }, + { + "path": "packages/deprecated/theme-registry/tsconfig.json" + }, + { + "path": "packages/deprecated/themed-settings/tsconfig.json" + }, + { + "path": "packages/deprecated/theming-ramp/tsconfig.json" + }, + { + "path": "packages/deprecated/theming-react-native/tsconfig.json" + }, + { + "path": "packages/experimental/ActivityIndicator/tsconfig.json" + }, + { + "path": "packages/experimental/AppearanceAdditions/tsconfig.json" + }, + { + "path": "packages/experimental/Avatar/tsconfig.json" + }, + { + "path": "packages/experimental/Checkbox/tsconfig.json" + }, + { + "path": "packages/experimental/Drawer/tsconfig.json" + }, + { + "path": "packages/experimental/Dropdown/tsconfig.json" + }, + { + "path": "packages/experimental/Expander/tsconfig.json" + }, + { + "path": "packages/experimental/MenuButton/tsconfig.json" + }, + { + "path": "packages/experimental/NativeDatePicker/tsconfig.json" + }, + { + "path": "packages/experimental/NativeFontMetrics/tsconfig.json" + }, + { + "path": "packages/experimental/Overflow/tsconfig.json" + }, + { + "path": "packages/experimental/Popover/tsconfig.json" + }, + { + "path": "packages/experimental/Shadow/tsconfig.json" + }, + { + "path": "packages/experimental/Shimmer/tsconfig.json" + }, + { + "path": "packages/experimental/Spinner/tsconfig.json" + }, + { + "path": "packages/experimental/Tooltip/tsconfig.json" + }, + { + "path": "packages/experimental/VibrancyView/tsconfig.json" + }, + { + "path": "packages/framework-base/tsconfig.json" + }, + { + "path": "packages/framework/composition/tsconfig.json" + }, + { + "path": "packages/framework/framework/tsconfig.json" + }, + { + "path": "packages/framework/theme/tsconfig.json" + }, + { + "path": "packages/framework/themed-stylesheet/tsconfig.json" + }, + { + "path": "packages/framework/use-slot/tsconfig.json" + }, + { + "path": "packages/framework/use-slots/tsconfig.json" + }, + { + "path": "packages/framework/use-styling/tsconfig.json" + }, + { + "path": "packages/framework/use-tokens/tsconfig.json" + }, + { + "path": "packages/libraries/core/tsconfig.json" + }, + { + "path": "packages/theming/android-theme/tsconfig.json" + }, + { + "path": "packages/theming/apple-theme/tsconfig.json" + }, + { + "path": "packages/theming/default-theme/tsconfig.json" + }, + { + "path": "packages/theming/theme-tokens/tsconfig.json" + }, + { + "path": "packages/theming/theme-types/tsconfig.json" + }, + { + "path": "packages/theming/theming-utils/tsconfig.json" + }, + { + "path": "packages/theming/win32-theme/tsconfig.json" + }, + { + "path": "packages/utils/adapters/tsconfig.json" + }, + { + "path": "packages/utils/interactive-hooks/tsconfig.json" + }, + { + "path": "packages/utils/styling/tsconfig.json" + }, + { + "path": "packages/utils/test-tools/tsconfig.json" + }, + { + "path": "packages/utils/tokens/tsconfig.json" + }, + { + "path": "scripts/tsconfig.json" + } + ] +} diff --git a/yarn.config.cjs b/yarn.config.cjs index 49633d9dfe5..31256df74a0 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -1,14 +1,20 @@ const { defineConfig } = require('@yarnpkg/types'); -const { constrain } = require('./scripts/src/index.ts'); +const { constrain, constrainRoot } = require('./scripts/src/index.ts'); module.exports = defineConfig({ constraints: async ({ Yarn }) => { + let rootWorkspace = null; for (const workspace of Yarn.workspaces()) { // skip the root workspace, as it should be be evaluated as a standard package if (workspace.cwd !== '.') { // call through to the scripts constrain implementation that will do validation of each workspace one by one constrain(workspace); + } else { + rootWorkspace = workspace; } } + if (rootWorkspace) { + constrainRoot(rootWorkspace); + } }, }); diff --git a/yarn.lock b/yarn.lock index e1b723c4720..68eb530b1c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -183,30 +183,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.0.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": - version: 7.28.6 - resolution: "@babel/core@npm:7.28.6" - dependencies: - "@babel/code-frame": "npm:^7.28.6" - "@babel/generator": "npm:^7.28.6" - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-module-transforms": "npm:^7.28.6" - "@babel/helpers": "npm:^7.28.6" - "@babel/parser": "npm:^7.28.6" - "@babel/template": "npm:^7.28.6" - "@babel/traverse": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - "@jridgewell/remapping": "npm:^2.3.5" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/716b88b1ab057aa53ffa40f2b2fb7e4ab7a35cd6a065fa60e55ca13d2a666672592329f7ea9269aec17e90cc7ce29f42eda566d07859bfd998329a9f283faadb - languageName: node - linkType: hard - -"@babel/core@npm:^7.24.7": +"@babel/core@npm:^7.0.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.20.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.7, @babel/core@npm:^7.25.2": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -229,7 +206,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.28.6, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1, @babel/generator@npm:^7.7.2": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" dependencies: @@ -367,7 +344,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d @@ -424,7 +401,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.27.1": +"@babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-option@npm:7.27.1" checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 @@ -452,18 +429,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": - version: 7.29.2 - resolution: "@babel/parser@npm:7.29.2" - dependencies: - "@babel/types": "npm:^7.29.0" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/e5a4e69e3ac7acdde995f37cf299a68458cfe7009dff66bd0962fd04920bef287201169006af365af479c08ff216bfefbb595e331f87f6ae7283858aebbc3317 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.24.7": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.0, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.3 resolution: "@babel/parser@npm:7.29.3" dependencies: @@ -1104,7 +1070,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.24.7, @babel/plugin-transform-flow-strip-types@npm:^7.25.2, @babel/plugin-transform-flow-strip-types@npm:^7.27.1": +"@babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.25.2, @babel/plugin-transform-flow-strip-types@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.27.1" dependencies: @@ -1696,20 +1662,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-flow@npm:^7.13.13": - version: 7.24.7 - resolution: "@babel/preset-flow@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-validator-option": "npm:^7.24.7" - "@babel/plugin-transform-flow-strip-types": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/2a99333b9aac17033cefe17fb9d8c41b20c4f2cd3eab34f56c20d7c1c528cc1cca7e6d909de92fc700739a505b43166c9de62423f8a30b484161ebdf9474e217 - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.24.7": +"@babel/preset-flow@npm:^7.13.13, @babel/preset-flow@npm:^7.24.7": version: 7.27.1 resolution: "@babel/preset-flow@npm:7.27.1" dependencies: @@ -1766,22 +1719,7 @@ __metadata: languageName: node linkType: hard -"@babel/register@npm:^7.13.16": - version: 7.24.6 - resolution: "@babel/register@npm:7.24.6" - dependencies: - clone-deep: "npm:^4.0.1" - find-cache-dir: "npm:^2.0.0" - make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.6" - source-map-support: "npm:^0.5.16" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e0c6d6c8945dd792f83dc7bd6be468246b3aedd62b32620e56a3f3328389b577a6261d4338a9de9519f4eadddfef5aa0fdc1f92082c778dedddcc5854e357f09 - languageName: node - linkType: hard - -"@babel/register@npm:^7.24.6": +"@babel/register@npm:^7.13.16, @babel/register@npm:^7.24.6": version: 7.29.3 resolution: "@babel/register@npm:7.29.3" dependencies: @@ -2137,17 +2075,7 @@ __metadata: languageName: node linkType: hard -"@emnapi/core@npm:^1.7.1": - version: 1.8.1 - resolution: "@emnapi/core@npm:1.8.1" - dependencies: - "@emnapi/wasi-threads": "npm:1.1.0" - tslib: "npm:^2.4.0" - checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e - languageName: node - linkType: hard - -"@emnapi/runtime@npm:1.10.0": +"@emnapi/runtime@npm:1.10.0, @emnapi/runtime@npm:^1.7.0": version: 1.10.0 resolution: "@emnapi/runtime@npm:1.10.0" dependencies: @@ -2156,24 +2084,6 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.7.0, @emnapi/runtime@npm:^1.7.1": - version: 1.8.1 - resolution: "@emnapi/runtime@npm:1.8.1" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f - languageName: node - linkType: hard - -"@emnapi/wasi-threads@npm:1.1.0": - version: 1.1.0 - resolution: "@emnapi/wasi-threads@npm:1.1.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/e6d54bf2b1e64cdd83d2916411e44e579b6ae35d5def0dea61a3c452d9921373044dff32a8b8473ae60c80692bdc39323e98b96a3f3d87ba6886b24dd0ef7ca1 - languageName: node - linkType: hard - "@emnapi/wasi-threads@npm:1.2.1": version: 1.2.1 resolution: "@emnapi/wasi-threads@npm:1.2.1" @@ -4728,6 +4638,7 @@ __metadata: "@changesets/cli": "npm:^2.30.0" "@rnx-kit/align-deps": "catalog:" "@rnx-kit/lint-lockfile": "catalog:" + "@typescript/native-preview": "npm:7.0.0-dev.20260610.1" "@yarnpkg/types": "npm:^4.0.1" babel-jest: "npm:^29.7.0" cross-env: "catalog:" @@ -4773,7 +4684,7 @@ __metadata: "@rnx-kit/types-node": "catalog:" "@types/micromatch": "npm:^4.0.9" "@types/node": "catalog:" - "@typescript/native-preview": "npm:7.0.0-dev.20260113.1" + "@typescript/native-preview": "npm:7.0.0-dev.20260610.1" "@yarnpkg/types": "npm:^4.0.1" babel-jest: "npm:^29.0.0" chalk: "npm:^4.0.0" @@ -5127,7 +5038,7 @@ __metadata: "@fluentui-react-native/vibrancy-view": "workspace:*" "@fluentui-react-native/win32-theme": "workspace:*" "@fluentui/react-native": "workspace:*" - "@fluentui/react-native-icons": "npm:^2.0.316" + "@fluentui/react-native-icons": "patch:@fluentui/react-native-icons@npm%3A2.0.322#~/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch" "@fortawesome/fontawesome-svg-core": "npm:^6.2.0" "@fortawesome/free-solid-svg-icons": "npm:^6.2.0" "@fortawesome/react-native-fontawesome": "npm:^0.3.0" @@ -5162,7 +5073,7 @@ __metadata: react-native-macos: "npm:^0.81.0" react-native-svg: "npm:^15.12.1" react-native-svg-transformer: "npm:^1.0.0" - react-native-test-app: "npm:^5.1.10" + react-native-test-app: "npm:^5.2.3" react-native-windows: "npm:^0.81.0" react-test-renderer: "npm:19.1.4" webdriverio: "catalog:" @@ -5253,7 +5164,7 @@ __metadata: react-native: "npm:^0.81.6" react-native-svg: "npm:^15.12.1" react-native-svg-transformer: "npm:^1.0.0" - react-native-test-app: "npm:^5.1.10" + react-native-test-app: "npm:^5.2.3" react-test-renderer: "npm:19.1.4" rimraf: "catalog:" languageName: unknown @@ -5311,7 +5222,7 @@ __metadata: react-native-macos: "npm:^0.81.0" react-native-svg: "npm:^15.12.1" react-native-svg-transformer: "npm:^1.0.0" - react-native-test-app: "npm:^5.1.10" + react-native-test-app: "npm:^5.2.3" react-native-windows: "npm:^0.81.0" react-test-renderer: "npm:19.1.4" webdriverio: "catalog:" @@ -5770,7 +5681,7 @@ __metadata: languageName: unknown linkType: soft -"@fluentui/react-native-icons@npm:^2.0.316": +"@fluentui/react-native-icons@npm:2.0.322": version: 2.0.322 resolution: "@fluentui/react-native-icons@npm:2.0.322" dependencies: @@ -5783,6 +5694,19 @@ __metadata: languageName: node linkType: hard +"@fluentui/react-native-icons@patch:@fluentui/react-native-icons@npm%3A2.0.322#~/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch": + version: 2.0.322 + resolution: "@fluentui/react-native-icons@patch:@fluentui/react-native-icons@npm%3A2.0.322#~/.yarn/patches/@fluentui-react-native-icons-npm-2.0.322-c4bc045837.patch::version=2.0.322&hash=9af6a5" + dependencies: + "@types/react-native": "npm:^0.68.0" + tslib: "npm:^2.1.0" + peerDependencies: + react: ">=16.8.0 <19.0.0" + react-native-svg: ">=12.5.0" + checksum: 10c0/cd94112941565f5b41723b83957191b8aed4f1d0207babcf113d4dd98069539557d31cabab3d18b57403f789af70dbf774da26c48947a9fbec6e151f814d13fd + languageName: node + linkType: hard + "@fluentui/react-native@workspace:*, @fluentui/react-native@workspace:packages/libraries/core": version: 0.0.0-use.local resolution: "@fluentui/react-native@workspace:packages/libraries/core" @@ -6902,18 +6826,7 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.1.1": - version: 1.1.1 - resolution: "@napi-rs/wasm-runtime@npm:1.1.1" - dependencies: - "@emnapi/core": "npm:^1.7.1" - "@emnapi/runtime": "npm:^1.7.1" - "@tybys/wasm-util": "npm:^0.10.1" - checksum: 10c0/04d57b67e80736e41fe44674a011878db0a8ad893f4d44abb9d3608debb7c174224cba2796ed5b0c1d367368159f3ca6be45f1c59222f70e32ddc880f803d447 - languageName: node - linkType: hard - -"@napi-rs/wasm-runtime@npm:^1.1.4": +"@napi-rs/wasm-runtime@npm:^1.1.1, @napi-rs/wasm-runtime@npm:^1.1.4": version: 1.1.4 resolution: "@napi-rs/wasm-runtime@npm:1.1.4" dependencies: @@ -7253,13 +7166,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-android-arm-eabi@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-android-arm-eabi@npm:11.17.0" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@oxc-resolver/binding-android-arm-eabi@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-android-arm-eabi@npm:11.19.1" @@ -7267,13 +7173,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-android-arm64@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-android-arm64@npm:11.17.0" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@oxc-resolver/binding-android-arm64@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-android-arm64@npm:11.19.1" @@ -7281,13 +7180,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-darwin-arm64@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-darwin-arm64@npm:11.17.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@oxc-resolver/binding-darwin-arm64@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-darwin-arm64@npm:11.19.1" @@ -7295,13 +7187,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-darwin-x64@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-darwin-x64@npm:11.17.0" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@oxc-resolver/binding-darwin-x64@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-darwin-x64@npm:11.19.1" @@ -7309,13 +7194,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-freebsd-x64@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-freebsd-x64@npm:11.17.0" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@oxc-resolver/binding-freebsd-x64@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-freebsd-x64@npm:11.19.1" @@ -7323,13 +7201,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.17.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.19.1" @@ -7337,13 +7208,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm-musleabihf@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.17.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.19.1" @@ -7351,13 +7215,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm64-gnu@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:11.17.0" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-arm64-gnu@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:11.19.1" @@ -7365,13 +7222,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm64-musl@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:11.17.0" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-arm64-musl@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:11.19.1" @@ -7379,13 +7229,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-ppc64-gnu@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.17.0" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.19.1" @@ -7393,13 +7236,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-riscv64-gnu@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.17.0" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.19.1" @@ -7407,13 +7243,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-riscv64-musl@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-riscv64-musl@npm:11.17.0" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-riscv64-musl@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-riscv64-musl@npm:11.19.1" @@ -7421,13 +7250,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-s390x-gnu@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:11.17.0" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-s390x-gnu@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:11.19.1" @@ -7435,13 +7257,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-x64-gnu@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:11.17.0" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-x64-gnu@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:11.19.1" @@ -7449,13 +7264,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-linux-x64-musl@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-linux-x64-musl@npm:11.17.0" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@oxc-resolver/binding-linux-x64-musl@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-linux-x64-musl@npm:11.19.1" @@ -7463,13 +7271,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-openharmony-arm64@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-openharmony-arm64@npm:11.17.0" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - "@oxc-resolver/binding-openharmony-arm64@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-openharmony-arm64@npm:11.19.1" @@ -7477,15 +7278,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-wasm32-wasi@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-wasm32-wasi@npm:11.17.0" - dependencies: - "@napi-rs/wasm-runtime": "npm:^1.1.1" - conditions: cpu=wasm32 - languageName: node - linkType: hard - "@oxc-resolver/binding-wasm32-wasi@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-wasm32-wasi@npm:11.19.1" @@ -7495,13 +7287,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-win32-arm64-msvc@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:11.17.0" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@oxc-resolver/binding-win32-arm64-msvc@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:11.19.1" @@ -7509,13 +7294,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-win32-ia32-msvc@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-win32-ia32-msvc@npm:11.17.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@oxc-resolver/binding-win32-ia32-msvc@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-win32-ia32-msvc@npm:11.19.1" @@ -7523,13 +7301,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-win32-x64-msvc@npm:11.17.0": - version: 11.17.0 - resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:11.17.0" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@oxc-resolver/binding-win32-x64-msvc@npm:11.19.1": version: 11.19.1 resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:11.19.1" @@ -8794,19 +8565,7 @@ __metadata: languageName: node linkType: hard -"@rnx-kit/align-deps@npm:^3.4.7": - version: 3.4.8 - resolution: "@rnx-kit/align-deps@npm:3.4.8" - dependencies: - "@rnx-kit/types-kit-config": "npm:^1.0.0" - "@rnx-kit/types-node": "npm:^1.0.0" - bin: - rnx-align-deps: lib/index.js - checksum: 10c0/cbc8f6d28472a1a0b7342f156c81c94c91ced24ec47a815a34eb4f59d00cac12a2cd7dc64ea698af369a0091a60101498f2f1b9d6e626f000b87060ccd81ae4b - languageName: node - linkType: hard - -"@rnx-kit/align-deps@npm:^3.5.0": +"@rnx-kit/align-deps@npm:^3.4.7, @rnx-kit/align-deps@npm:^3.5.0": version: 3.5.0 resolution: "@rnx-kit/align-deps@npm:3.5.0" dependencies: @@ -9130,12 +8889,12 @@ __metadata: languageName: node linkType: hard -"@rnx-kit/react-native-host@npm:^0.5.17": - version: 0.5.17 - resolution: "@rnx-kit/react-native-host@npm:0.5.17" +"@rnx-kit/react-native-host@npm:^0.5.19": + version: 0.5.19 + resolution: "@rnx-kit/react-native-host@npm:0.5.19" peerDependencies: react-native: ">=0.66" - checksum: 10c0/e9ab5c489758274def1d910c1f6855aeb04b8b8c4e17d71ea195f252dc1416f7dc29e743797532f80ab65dd6f4c8c596fbccc29df820c093c658b104b8d52a1c + checksum: 10c0/6dbf12788c7ebff0813288343dcaa4b7c18b4a2fa048a6bdcb65019c92234beabbe8b9a52701dc7cd6845f9c621e93969fe58db3409093c7443053aa8646cc21 languageName: node linkType: hard @@ -9824,21 +9583,11 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 10c0/648aae41423821c61c83823ae36116c8d0f68258f8b609bdbc257752dcd616438d6343d554262aa9a7edaee5a19aca2e028a74fa2d0f40fffaf2816bc7056857 - languageName: node - linkType: hard - -"@types/react-native@npm:^0.68.0": - version: 0.68.14 - resolution: "@types/react-native@npm:0.68.14" - dependencies: - "@types/react": "npm:^17" - checksum: 10c0/1e2aede16d0d8b945349b918fb913e922f0c503e590cefd4f9948f9905d031209ffa96f09f8bba988bd6ae755759743a69063e762c0c79fe884003a8de89b8b8 +"@types/react-native@ignore:": + version: 0.0.0-use.local + resolution: "@types/react-native@ignore:" languageName: node - linkType: hard + linkType: soft "@types/react-test-renderer@npm:^19.1.0": version: 19.1.0 @@ -9849,37 +9598,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*": - version: 19.2.14 - resolution: "@types/react@npm:19.2.14" - dependencies: - csstype: "npm:^3.2.2" - checksum: 10c0/7d25bf41b57719452d86d2ac0570b659210402707313a36ee612666bf11275a1c69824f8c3ee1fdca077ccfe15452f6da8f1224529b917050eb2d861e52b59b7 - languageName: node - linkType: hard - -"@types/react@npm:^17": - version: 17.0.91 - resolution: "@types/react@npm:17.0.91" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:^0.16" - csstype: "npm:^3.2.2" - checksum: 10c0/f1a5f77dbe6d62c04bfa2692d1204fd537e5fb15461a10673fa116a4b211f8ebaf426a4b1b95da04d38cea47dfc77c4d403f0850db7d9853298248a54478cc60 - languageName: node - linkType: hard - -"@types/react@npm:~18.2.0": - version: 18.2.79 - resolution: "@types/react@npm:18.2.79" - dependencies: - "@types/prop-types": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/c8a8a005d8830a48cc1ef93c3510c4935a2a03e5557dbecaa8f1038450cbfcb18eb206fa7fba7077d54b8da21faeb25577e897a333392770a7797f625b62c78a - languageName: node - linkType: hard - -"@types/react@npm:~19.1.4": +"@types/react@npm:19.1.17": version: 19.1.17 resolution: "@types/react@npm:19.1.17" dependencies: @@ -9888,13 +9607,6 @@ __metadata: languageName: node linkType: hard -"@types/scheduler@npm:^0.16": - version: 0.16.8 - resolution: "@types/scheduler@npm:0.16.8" - checksum: 10c0/f86de504945b8fc41b1f391f847444d542e2e4067cf7e5d9bfeb5d2d2393d3203b1161bc0ef3b1e104d828dabfb60baf06e8d2c27e27ff7e8258e6e618d8c4ec - languageName: node - linkType: hard - "@types/sinonjs__fake-timers@npm:^8.1.5": version: 8.1.5 resolution: "@types/sinonjs__fake-timers@npm:8.1.5" @@ -10108,66 +9820,66 @@ __metadata: languageName: node linkType: hard -"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260610.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260610.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260610.1" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260610.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260610.1" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260610.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260610.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview@npm:7.0.0-dev.20260113.1": - version: 7.0.0-dev.20260113.1 - resolution: "@typescript/native-preview@npm:7.0.0-dev.20260113.1" +"@typescript/native-preview@npm:7.0.0-dev.20260610.1": + version: 7.0.0-dev.20260610.1 + resolution: "@typescript/native-preview@npm:7.0.0-dev.20260610.1" dependencies: - "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260113.1" - "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260113.1" - "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260113.1" - "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260113.1" - "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260113.1" - "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260113.1" - "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260113.1" + "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260610.1" + "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260610.1" + "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260610.1" + "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260610.1" + "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260610.1" + "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260610.1" + "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260610.1" dependenciesMeta: "@typescript/native-preview-darwin-arm64": optional: true @@ -10185,7 +9897,7 @@ __metadata: optional: true bin: tsgo: bin/tsgo.js - checksum: 10c0/96e224aabdf4775e3d6cd375de6fc5cb407ee4876498e8f4902246a5551162cb9a554743f765fc1b7ca75d8401ee51b1929cee60c5a36a5b6f04e9d1c75d6af9 + checksum: 10c0/27709e3caaa0bac4d4cd4609d295ce22ebf0ea63dca64d91f5e1d4555f4a9b3e5aa4aa1d8cf06dfb477e07107c111f55e1b1435d2bc1b2bb1b3927a666ff55c1 languageName: node linkType: hard @@ -13174,7 +12886,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2, csstype@npm:^3.2.2": +"csstype@npm:^3.0.2": version: 3.2.3 resolution: "csstype@npm:3.2.3" checksum: 10c0/cd29c51e70fa822f1cecd8641a1445bed7063697469d35633b516e60fe8c1bde04b08f6c5b6022136bb669b64c63d4173af54864510fbb4ee23281801841a3ce @@ -14672,15 +14384,6 @@ __metadata: languageName: node linkType: hard -"fast-xml-builder@npm:^1.1.4": - version: 1.1.4 - resolution: "fast-xml-builder@npm:1.1.4" - dependencies: - path-expression-matcher: "npm:^1.1.3" - checksum: 10c0/d5dfc0660f7f886b9f42747e6aa1d5e16c090c804b322652f65a5d7ffb93aa00153c3e1276cd053629f9f4c4f625131dc6886677394f7048e827e63b97b18927 - languageName: node - linkType: hard - "fast-xml-builder@npm:^1.2.0": version: 1.2.0 resolution: "fast-xml-builder@npm:1.2.0" @@ -14702,20 +14405,7 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^5.3.3": - version: 5.5.9 - resolution: "fast-xml-parser@npm:5.5.9" - dependencies: - fast-xml-builder: "npm:^1.1.4" - path-expression-matcher: "npm:^1.2.0" - strnum: "npm:^2.2.2" - bin: - fxparser: src/cli/cli.js - checksum: 10c0/b7f40f586c01a916a75be15b11ec0e83a38483885395bdeca51da8992a75e3d4d9b6c2690f362b975bfcb5118909ee4b0393e18ec9c9151345d5e13152370969 - languageName: node - linkType: hard - -"fast-xml-parser@npm:^5.7.0": +"fast-xml-parser@npm:^5.3.3, fast-xml-parser@npm:^5.8.0": version: 5.8.0 resolution: "fast-xml-parser@npm:5.8.0" dependencies: @@ -15270,7 +14960,7 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:4.14.0": +"get-tsconfig@npm:4.14.0, get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.5": version: 4.14.0 resolution: "get-tsconfig@npm:4.14.0" dependencies: @@ -15279,15 +14969,6 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.5": - version: 4.10.1 - resolution: "get-tsconfig@npm:4.10.1" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/7f8e3dabc6a49b747920a800fb88e1952fef871cdf51b79e98db48275a5de6cdaf499c55ee67df5fa6fe7ce65f0063e26de0f2e53049b408c585aa74d39ffa21 - languageName: node - linkType: hard - "get-uri@npm:^6.0.1": version: 6.0.3 resolution: "get-uri@npm:6.0.3" @@ -17162,16 +16843,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.6.1": - version: 2.6.1 - resolution: "jiti@npm:2.6.1" - bin: - jiti: lib/jiti-cli.mjs - checksum: 10c0/79b2e96a8e623f66c1b703b98ec1b8be4500e1d217e09b09e343471bbb9c105381b83edbb979d01cef18318cc45ce6e153571b6c83122170eefa531c64b6789b - languageName: node - linkType: hard - -"jiti@npm:^2.7.0": +"jiti@npm:^2.6.1, jiti@npm:^2.7.0": version: 2.7.0 resolution: "jiti@npm:2.7.0" bin: @@ -19558,76 +19230,7 @@ __metadata: languageName: node linkType: hard -"oxc-resolver@npm:^11.17.0": - version: 11.17.0 - resolution: "oxc-resolver@npm:11.17.0" - dependencies: - "@oxc-resolver/binding-android-arm-eabi": "npm:11.17.0" - "@oxc-resolver/binding-android-arm64": "npm:11.17.0" - "@oxc-resolver/binding-darwin-arm64": "npm:11.17.0" - "@oxc-resolver/binding-darwin-x64": "npm:11.17.0" - "@oxc-resolver/binding-freebsd-x64": "npm:11.17.0" - "@oxc-resolver/binding-linux-arm-gnueabihf": "npm:11.17.0" - "@oxc-resolver/binding-linux-arm-musleabihf": "npm:11.17.0" - "@oxc-resolver/binding-linux-arm64-gnu": "npm:11.17.0" - "@oxc-resolver/binding-linux-arm64-musl": "npm:11.17.0" - "@oxc-resolver/binding-linux-ppc64-gnu": "npm:11.17.0" - "@oxc-resolver/binding-linux-riscv64-gnu": "npm:11.17.0" - "@oxc-resolver/binding-linux-riscv64-musl": "npm:11.17.0" - "@oxc-resolver/binding-linux-s390x-gnu": "npm:11.17.0" - "@oxc-resolver/binding-linux-x64-gnu": "npm:11.17.0" - "@oxc-resolver/binding-linux-x64-musl": "npm:11.17.0" - "@oxc-resolver/binding-openharmony-arm64": "npm:11.17.0" - "@oxc-resolver/binding-wasm32-wasi": "npm:11.17.0" - "@oxc-resolver/binding-win32-arm64-msvc": "npm:11.17.0" - "@oxc-resolver/binding-win32-ia32-msvc": "npm:11.17.0" - "@oxc-resolver/binding-win32-x64-msvc": "npm:11.17.0" - dependenciesMeta: - "@oxc-resolver/binding-android-arm-eabi": - optional: true - "@oxc-resolver/binding-android-arm64": - optional: true - "@oxc-resolver/binding-darwin-arm64": - optional: true - "@oxc-resolver/binding-darwin-x64": - optional: true - "@oxc-resolver/binding-freebsd-x64": - optional: true - "@oxc-resolver/binding-linux-arm-gnueabihf": - optional: true - "@oxc-resolver/binding-linux-arm-musleabihf": - optional: true - "@oxc-resolver/binding-linux-arm64-gnu": - optional: true - "@oxc-resolver/binding-linux-arm64-musl": - optional: true - "@oxc-resolver/binding-linux-ppc64-gnu": - optional: true - "@oxc-resolver/binding-linux-riscv64-gnu": - optional: true - "@oxc-resolver/binding-linux-riscv64-musl": - optional: true - "@oxc-resolver/binding-linux-s390x-gnu": - optional: true - "@oxc-resolver/binding-linux-x64-gnu": - optional: true - "@oxc-resolver/binding-linux-x64-musl": - optional: true - "@oxc-resolver/binding-openharmony-arm64": - optional: true - "@oxc-resolver/binding-wasm32-wasi": - optional: true - "@oxc-resolver/binding-win32-arm64-msvc": - optional: true - "@oxc-resolver/binding-win32-ia32-msvc": - optional: true - "@oxc-resolver/binding-win32-x64-msvc": - optional: true - checksum: 10c0/22c7a183dcc89c752dce5c4bf4b9fbd5e63f72b79286831e6b386cf30e9de3c3f5f5cc012a4441f7e584b61574c63f980530bf43b28718d5f347c505978ccf90 - languageName: node - linkType: hard - -"oxc-resolver@npm:^11.19.1": +"oxc-resolver@npm:^11.17.0, oxc-resolver@npm:^11.19.1": version: 11.19.1 resolution: "oxc-resolver@npm:11.19.1" dependencies: @@ -20216,13 +19819,6 @@ __metadata: languageName: node linkType: hard -"path-expression-matcher@npm:^1.1.3, path-expression-matcher@npm:^1.2.0": - version: 1.2.0 - resolution: "path-expression-matcher@npm:1.2.0" - checksum: 10c0/86c661dfb265ed5dd1ddd9188f0dfbecf4ec4dc3ea6cabab081d3a2ba285054d9767a641a233bd6fd694fd89f7d0ef94913032feddf5365252700b02db4bf4e1 - languageName: node - linkType: hard - "path-expression-matcher@npm:^1.5.0": version: 1.5.0 resolution: "path-expression-matcher@npm:1.5.0" @@ -20343,14 +19939,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 - languageName: node - linkType: hard - -"picomatch@npm:^4.0.4": +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.4": version: 4.0.4 resolution: "picomatch@npm:4.0.4" checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0 @@ -20866,15 +20455,16 @@ __metadata: languageName: node linkType: hard -"react-native-test-app@npm:^5.1.10": - version: 5.1.10 - resolution: "react-native-test-app@npm:5.1.10" +"react-native-test-app@npm:^5.2.3": + version: 5.2.3 + resolution: "react-native-test-app@npm:5.2.3" dependencies: "@isaacs/cliui": "npm:^9.0.0" - "@rnx-kit/react-native-host": "npm:^0.5.17" + "@rnx-kit/react-native-host": "npm:^0.5.19" "@rnx-kit/tools-react-native": "npm:^2.1.0" ajv: "npm:^8.0.0" - fast-xml-parser: "npm:^5.7.0" + fast-xml-builder: "npm:^1.2.0" + fast-xml-parser: "npm:^5.8.0" prompts: "npm:^2.4.0" semver: "npm:^7.5.2" peerDependencies: @@ -20883,7 +20473,7 @@ __metadata: react: 18.2 - 19.2 react-native: 0.76 - 0.85 || >=0.85.0-0 <0.86.0 react-native-macos: ^0.0.0-0 || 0.76 - 0.81 - react-native-windows: ^0.0.0-0 || 0.76 - 0.82 + react-native-windows: ^0.0.0-0 || 0.76 - 0.83 peerDependenciesMeta: "@callstack/react-native-visionos": optional: true @@ -20898,7 +20488,7 @@ __metadata: init: scripts/init.mjs init-test-app: scripts/init.mjs install-windows-test-app: windows/app.mjs - checksum: 10c0/ec9b21a1244e72c67b965e74624f68eb664ca3b37bbb1c0cd8ac835a1926484cc34c062acab3b0647652d9d9e0c06044ad66fcf056d8658c2a7c959e6908c9ef + checksum: 10c0/a87c47f93eba76bf2ea7a2f7bfdb2d1925b6bbeb00d67b9f365c5016e1a4ba063f5f1c1d7a86aab3f782b85921b1cbe802290010cca320ae66d762c24ee5683e languageName: node linkType: hard @@ -22678,13 +22268,6 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^2.2.2": - version: 2.2.2 - resolution: "strnum@npm:2.2.2" - checksum: 10c0/89c456de32b9495ae34cd6e3b59cb9ef3406b66d1429bbc931afd70be87485dcd355200c42fd638a132adb3121762542346813098ab0c43e44aac303bf17965d - languageName: node - linkType: hard - "strnum@npm:^2.3.0": version: 2.3.0 resolution: "strnum@npm:2.3.0" @@ -22923,17 +22506,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" - dependencies: - fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.16": +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.16": version: 0.2.16 resolution: "tinyglobby@npm:0.2.16" dependencies: @@ -24107,7 +23680,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:2.8.2, yaml@npm:^2.2.1, yaml@npm:^2.6.1": +"yaml@npm:2.8.2": version: 2.8.2 resolution: "yaml@npm:2.8.2" bin: @@ -24123,7 +23696,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.8.2": +"yaml@npm:^2.2.1, yaml@npm:^2.6.1, yaml@npm:^2.8.2": version: 2.8.4 resolution: "yaml@npm:2.8.4" bin: