Skip to content

Commit

Permalink
BREAKING CHANGE: add package exports and align CE entrypoints
Browse files Browse the repository at this point in the history
  • Loading branch information
jorenbroekema committed Jan 25, 2022
1 parent cdd0f1f commit 32ddf1a
Show file tree
Hide file tree
Showing 23 changed files with 86 additions and 1 deletion.
File renamed without changes.
3 changes: 3 additions & 0 deletions checkbox-group/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import './simba-checkbox-group.js';
import './simba-checkbox-indeterminate.js';
import './simba-checkbox.js';
1 change: 1 addition & 0 deletions checkbox-group/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './src/SimbaCheckbox.js';
export * from './src/SimbaCheckboxGroup.js';
export * from './src/SimbaCheckboxIndeterminate.js';
2 changes: 2 additions & 0 deletions collapsible/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import './simba-collapsible.js';
import './simba-collapsible-button.js';
2 changes: 2 additions & 0 deletions dialog/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import './simba-dialog.js';
import './simba-dialog-frame.js';
File renamed without changes.
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
export * from '~/tokens';

export * from '~/button';
export * from '~/collapsible';
export * from '~/checkbox-group';
export * from '~/collapsible';
export * from '~/dialog';
export * from '~/icons';
export * from '~/input';
Expand Down
File renamed without changes.
File renamed without changes.
3 changes: 3 additions & 0 deletions input-datepicker/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import './simba-calendar-overlay-frame.js';
import './simba-calendar.js';
import './simba-input-datepicker.js';
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
41 changes: 41 additions & 0 deletions migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,47 @@

## 0.5.0

### Package exports

[Information about Package entry points](https://nodejs.org/api/packages.html#package-entry-points)

We now have a package exports entry in our `package.json`.
This is to add better support for SSR which uses Node.js module resolution rather than the browser's algorithm.
One example is that in Node.js a path like `foo/bar` doesn't automatically resolve to `foo/bar/index.js`.

Another big advantage of package exports is pinning down explicitly where consumers can import from, increasing reliability and making explicit our public and private APIs. We can now change our file locations or edit filenames without being worried that some consumer was relying on it through an import we did not intend.

For named imports, use:

```js
import { Foo } from '@divriots/starter-simba';
```

For named imports from specific simba packages, use:

```js
import { Bar } from '@divriots/starter-simba/input';
```

For custom elements definitions, use:

```js
import '@divriots/starter-simba/input/define';
```

When a package exports multiple custom elements, the `define` entrypoint will define all of them.
In case you only need a specific one, for example a `checkbox` but not the `checkbox-group` or `checkbox-indeterminate`, use:

```js
import '@divriots/starter-simba/checkbox/define-checkbox';
```

> Directly importing private API will no longer be supported if you use tools that correctly respect package `exports`, hence the breaking change:
```js
import { NotYours } from '@divriots/starter-simba/private/index.js'; // no longer possible in tools respecting our package.json exports entry
```

### Fixed dependencies on @lion

Dependencies on `@lion` are now fixed instead of using a caret. This is due to the fact that Lion also internally fixes dependencies on itself.
Expand Down
24 changes: 24 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,29 @@
},
"devDependencies": {
"@divriots/dockit-core": "^0.6.0"
},
"exports": {
".": "./index.js",
"./*": "./*/index.js",
"./*/define": "./*/define.js",
"./checkbox/define-checkbox": "./checkbox/simba-checkbox.js",
"./checkbox/define-checkbox-group": "./checkbox/simba-checkbox-group.js",
"./checkbox/define-checkbox-indeterminate": "./checkbox/simba-checkbox-indeterminate.js",
"./collapsible/define-collapsible": "./collapsible/simba-collapsible.js",
"./collapsible/define-collapsible-button": "./collapsible/simba-collapsible-button.js",
"./dialog/define-dialog": "./dialog/simba-dialog.js",
"./dialog/define-dialog-frame": "./dialog/simba-dialog-frame.js",
"./input-datepicker/define-calendar": "./input-datepicker/simba-calendar.js",
"./input-datepicker/define-calendar-overlay-frame": "./input-datepicker/simba-calendar-overlay-frame.js",
"./input-datepicker/define-input-datepicker": "./input-datepicker/simba-input-datepicker.js",
"./radio-group/define-radio": "./radio-group/simba-radio.js",
"./radio-group/define-radio-group": "./radio-group/simba-radio-group.js",
"./select/define-option": "./select/simba-option.js",
"./select/define-options": "./select/simba-options.js",
"./select/define-select": "./select/simba-select.js",
"./select/define-select-invoker": "./select/simba-select-invoker.js",
"./select/define-select-rich": "./select/simba-select-rich.js",
"./switch/define-switch": "./switch/simba-switch.js",
"./switch/define-switch-button": "./switch/simba-switch-button.js"
}
}
2 changes: 2 additions & 0 deletions radio-group/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import './simba-radio.js';
import './simba-radio-group.js';
5 changes: 5 additions & 0 deletions select/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import './simba-option.js';
import './simba-options.js';
import './simba-select-invoker.js';
import './simba-select-rich.js';
import './simba-select.js';
2 changes: 2 additions & 0 deletions switch/define.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import './simba-switch.js';
import './simba-switch-button.js';
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 32ddf1a

Please sign in to comment.