diff --git a/.parcelrc-build b/.parcelrc-build deleted file mode 100644 index 8dad95cc0f7..00000000000 --- a/.parcelrc-build +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "@parcel/config-default", - "resolvers": ["@parcel/resolver-glob", "parcel-resolver-build", "..."], - "transformers": { - "packages/**/intl/*.json": ["parcel-transformer-intl"], - "bundle-text:*.svg": ["@parcel/transformer-svg", "@parcel/transformer-inline-string"], - "*.svg": ["@parcel/transformer-svg-react"], - "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [ - "@parcel/transformer-js", - "@parcel/transformer-react-refresh-wrap" - ] - }, - "namers": ["parcel-namer-intl", "..."], - "optimizers": { - "{main,module}.js": ["...", "parcel-optimizer-react-client"] - } -} diff --git a/Makefile b/Makefile index 52f4cdb63c5..3fab2d7a442 100644 --- a/Makefile +++ b/Makefile @@ -92,7 +92,7 @@ publish-nightly: build yarn publish:nightly build: - parcel build packages/@react-{spectrum,aria,stately}/*/ packages/@internationalized/{message,string,date,number}/ packages/react-aria-components --no-optimize --config .parcelrc-build + parcel build packages/@react-{spectrum,aria,stately}/*/ packages/@internationalized/{message,string,date,number}/ packages/react-aria-components --no-optimize yarn lerna run prepublishOnly for pkg in packages/@react-{spectrum,aria,stately}/*/ packages/@internationalized/{message,string,date,number}/ packages/@adobe/react-spectrum/ packages/react-aria/ packages/react-stately/ packages/react-aria-components/; \ do node scripts/buildEsm.js $$pkg; \ diff --git a/packages/@adobe/react-spectrum/package.json b/packages/@adobe/react-spectrum/package.json index a39ca7376e3..c003a2a7c7b 100644 --- a/packages/@adobe/react-spectrum/package.json +++ b/packages/@adobe/react-spectrum/package.json @@ -30,7 +30,7 @@ ], "sideEffects": false, "scripts": { - "prepublishOnly": "mkdir -p dist; cp src/index.ts dist/types.d.ts; sed -i.bak 's/'\\''use client'\\'';//' dist/types.d.ts; rm dist/types.d.ts.bak; grep -v '^export type' src/index.ts > dist/module.js; babel --root-mode upward src/index.ts -o dist/main.js" + "prepublishOnly": "mkdir -p dist; cp src/index.ts dist/types.d.ts; grep -v '^export type' src/index.ts > dist/module.js; babel --root-mode upward src/index.ts -o dist/main.js" }, "repository": { "type": "git", @@ -92,7 +92,8 @@ "@react-spectrum/well": "^3.4.9", "@react-stately/collections": "^3.10.4", "@react-stately/data": "^3.11.0", - "@react-types/shared": "^3.22.0" + "@react-types/shared": "^3.22.0", + "client-only": "^0.0.1" }, "publishConfig": { "access": "public" diff --git a/packages/@adobe/react-spectrum/src/index.ts b/packages/@adobe/react-spectrum/src/index.ts index d9d7567e15e..c08a68af54c 100644 --- a/packages/@adobe/react-spectrum/src/index.ts +++ b/packages/@adobe/react-spectrum/src/index.ts @@ -10,7 +10,9 @@ * governing permissions and limitations under the License. */ -'use client'; +// Mark as a client only package. This will cause a build time error if you try +// to import it from a React Server Component in a framework like Next.js. +import 'client-only'; export {ActionGroup} from '@react-spectrum/actiongroup'; export {Badge} from '@react-spectrum/badge'; diff --git a/packages/dev/parcel-optimizer-react-client/ReactClientOptimizer.js b/packages/dev/parcel-optimizer-react-client/ReactClientOptimizer.js deleted file mode 100644 index b41c7b87969..00000000000 --- a/packages/dev/parcel-optimizer-react-client/ReactClientOptimizer.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2023 Adobe. All rights reserved. - * This file is licensed to you under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS - * OF ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License. - */ - -const {Optimizer} = require('@parcel/plugin'); -const {blobToString} = require('@parcel/utils'); - -module.exports = new Optimizer({ - async optimize({bundle, contents, map}) { - if (!/@react-spectrum|react-aria-components/.test(bundle.target.distDir)) { - return {contents, map}; - } - - map?.offsetLines(2, 0); - return { - contents: `"use client"; - -${await blobToString(contents)}`, - map - }; - } -}); diff --git a/packages/dev/parcel-optimizer-react-client/package.json b/packages/dev/parcel-optimizer-react-client/package.json deleted file mode 100644 index 500cd7ea932..00000000000 --- a/packages/dev/parcel-optimizer-react-client/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "parcel-optimizer-react-client", - "version": "1.0.0", - "private": true, - "main": "ReactClientOptimizer.js", - "engines": { - "parcel": "^2.10.2" - }, - "dependencies": { - "@parcel/plugin": "^2.10.2" - } -} diff --git a/packages/react-aria-components/package.json b/packages/react-aria-components/package.json index ab73af48004..36d5f539da6 100644 --- a/packages/react-aria-components/package.json +++ b/packages/react-aria-components/package.json @@ -52,6 +52,7 @@ "@react-types/shared": "^3.22.0", "@react-types/table": "^3.9.2", "@swc/helpers": "^0.5.0", + "client-only": "^0.0.1", "react-aria": "^3.31.1", "react-stately": "^3.29.1", "use-sync-external-store": "^1.2.0" diff --git a/packages/react-aria-components/src/index.ts b/packages/react-aria-components/src/index.ts index 647c05e161b..839aaa8db9d 100644 --- a/packages/react-aria-components/src/index.ts +++ b/packages/react-aria-components/src/index.ts @@ -10,6 +10,10 @@ * governing permissions and limitations under the License. */ +// Mark as a client only package. This will cause a build time error if you try +// to import it from a React Server Component in a framework like Next.js. +import 'client-only'; + export {Breadcrumbs, BreadcrumbsContext, Breadcrumb} from './Breadcrumbs'; export {Button, ButtonContext} from './Button'; export {Calendar, CalendarGrid, CalendarGridHeader, CalendarGridBody, CalendarHeaderCell, CalendarCell, RangeCalendar, CalendarContext, RangeCalendarContext, CalendarStateContext, RangeCalendarStateContext} from './Calendar'; diff --git a/yarn.lock b/yarn.lock index 4bdfab31d87..44accbaab66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9165,6 +9165,11 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + clipanion@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-3.1.0.tgz#3e217dd6476bb9236638b07eb4673f7309839819"