Skip to content

build(angular): remove event detail types patch by exporting them from the entry point #8177

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 15, 2023

Conversation

benelan
Copy link
Member

@benelan benelan commented Nov 15, 2023

Related Issue: #8084

Summary

I ran into build errors related to event detail types when adding the Angular output target to the monorepo. Stencil's auto-generated Angular code expected the types to be exported from the @esri/calcite-components entry point, but they were not. Here is one of the error messages:

angular-workspace:build: projects/component-library/src/lib/stencil-generated/components.ts:1014:15 - error TS2459: Module '"@esri/calcite-components"' declares 'HandleNudge' locally, but it is not exported.
angular-workspace:build:
angular-workspace:build: 1014 import type { HandleNudge as ICalciteHandleHandleNudge } from '@esri/calcite-components';
angular-workspace:build:                    ~~~~~~~~~~~
angular-workspace:build:
angular-workspace:build:   ../calcite-components/dist/types/components.d.ts:42:24
angular-workspace:build:     42 import { HandleChange, HandleNudge } from "./components/handle/interfaces";
angular-workspace:build:                               ~~~~~~~~~~~
angular-workspace:build:     'HandleNudge' is declared here.

To resolve the errors, I added a prebuild patch to the Angular output target that fixed the import paths for the three event detail types. As a result, a Calcite Components fix/feat that added a new event detail would create an unrelated entry in the Angular changelog. This is because the new event detail would need to be added to the patch, which lived in the Angular package's directory. This came up in: #8123 (comment)

This pull request exports the event detail types from the entry point, so the patch can be removed. When adding a new event detail, it must be exported from packages/calcite-components/src/index.ts to prevent build errors.

@github-actions github-actions bot added the chore Issues with changes that don't modify src or test files. label Nov 15, 2023
@benelan benelan added the pr ready for visual snapshots Adding this label will run visual snapshot testing. label Nov 15, 2023
Copy link
Member

@jcfranco jcfranco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

@jcfranco
Copy link
Member

I think Stencil 4 includes custom event types in components.d.ts by default, so this may become even simpler soon. 🎉

@benelan benelan merged commit 74bb009 into main Nov 15, 2023
@benelan benelan deleted the benelan/remove-event-detail-types-patch branch November 15, 2023 02:35
@github-actions github-actions bot added this to the 2023 November Priorities milestone Nov 15, 2023
benelan added a commit that referenced this pull request Nov 15, 2023
…m the entry point (#8177)

**Related Issue:** #8084

## Summary

I ran into build errors related to event detail types when adding the
Angular output target to the monorepo. Stencil's auto-generated Angular
code expected the types to be exported from the
`@esri/calcite-components` entry point, but they were not. Here is one
of the error messages:

```
angular-workspace:build: projects/component-library/src/lib/stencil-generated/components.ts:1014:15 - error TS2459: Module '"@esri/calcite-components"' declares 'HandleNudge' locally, but it is not exported.
angular-workspace:build:
angular-workspace:build: 1014 import type { HandleNudge as ICalciteHandleHandleNudge } from '@esri/calcite-components';
angular-workspace:build:                    ~~~~~~~~~~~
angular-workspace:build:
angular-workspace:build:   ../calcite-components/dist/types/components.d.ts:42:24
angular-workspace:build:     42 import { HandleChange, HandleNudge } from "./components/handle/interfaces";
angular-workspace:build:                               ~~~~~~~~~~~
angular-workspace:build:     'HandleNudge' is declared here.
```

To resolve the errors, I added a prebuild patch to the Angular output
target that fixed the import paths for the three event detail types. As
a result, a Calcite Components fix/feat that added a new event detail
would create an unrelated entry in the Angular changelog. This is
because the new event detail would need to be added to the patch, which
lived in the Angular package's directory. This came up in:
#8123 (comment)

This pull request exports the event detail types from the entry point,
so the patch can be removed. **When adding a new event detail, it must
be exported from
[`packages/calcite-components/src/index.ts`](https://github.com/Esri/calcite-design-system/blob/main/packages/calcite-components/src/index.ts)
to prevent build errors.**
benelan added a commit that referenced this pull request Nov 16, 2023
…m the entry point (#8177)

**Related Issue:** #8084

I ran into build errors related to event detail types when adding the
Angular output target to the monorepo. Stencil's auto-generated Angular
code expected the types to be exported from the
`@esri/calcite-components` entry point, but they were not. Here is one
of the error messages:

```
angular-workspace:build: projects/component-library/src/lib/stencil-generated/components.ts:1014:15 - error TS2459: Module '"@esri/calcite-components"' declares 'HandleNudge' locally, but it is not exported.
angular-workspace:build:
angular-workspace:build: 1014 import type { HandleNudge as ICalciteHandleHandleNudge } from '@esri/calcite-components';
angular-workspace:build:                    ~~~~~~~~~~~
angular-workspace:build:
angular-workspace:build:   ../calcite-components/dist/types/components.d.ts:42:24
angular-workspace:build:     42 import { HandleChange, HandleNudge } from "./components/handle/interfaces";
angular-workspace:build:                               ~~~~~~~~~~~
angular-workspace:build:     'HandleNudge' is declared here.
```

To resolve the errors, I added a prebuild patch to the Angular output
target that fixed the import paths for the three event detail types. As
a result, a Calcite Components fix/feat that added a new event detail
would create an unrelated entry in the Angular changelog. This is
because the new event detail would need to be added to the patch, which
lived in the Angular package's directory. This came up in:
#8123 (comment)

This pull request exports the event detail types from the entry point,
so the patch can be removed. **When adding a new event detail, it must
be exported from
[`packages/calcite-components/src/index.ts`](https://github.com/Esri/calcite-design-system/blob/main/packages/calcite-components/src/index.ts)
to prevent build errors.**
DitwanP pushed a commit that referenced this pull request Nov 16, 2023
…m the entry point (#8177)

**Related Issue:** #8084

I ran into build errors related to event detail types when adding the
Angular output target to the monorepo. Stencil's auto-generated Angular
code expected the types to be exported from the
`@esri/calcite-components` entry point, but they were not. Here is one
of the error messages:

```
angular-workspace:build: projects/component-library/src/lib/stencil-generated/components.ts:1014:15 - error TS2459: Module '"@esri/calcite-components"' declares 'HandleNudge' locally, but it is not exported.
angular-workspace:build:
angular-workspace:build: 1014 import type { HandleNudge as ICalciteHandleHandleNudge } from '@esri/calcite-components';
angular-workspace:build:                    ~~~~~~~~~~~
angular-workspace:build:
angular-workspace:build:   ../calcite-components/dist/types/components.d.ts:42:24
angular-workspace:build:     42 import { HandleChange, HandleNudge } from "./components/handle/interfaces";
angular-workspace:build:                               ~~~~~~~~~~~
angular-workspace:build:     'HandleNudge' is declared here.
```

To resolve the errors, I added a prebuild patch to the Angular output
target that fixed the import paths for the three event detail types. As
a result, a Calcite Components fix/feat that added a new event detail
would create an unrelated entry in the Angular changelog. This is
because the new event detail would need to be added to the patch, which
lived in the Angular package's directory. This came up in:
#8123 (comment)

This pull request exports the event detail types from the entry point,
so the patch can be removed. **When adding a new event detail, it must
be exported from
[`packages/calcite-components/src/index.ts`](https://github.com/Esri/calcite-design-system/blob/main/packages/calcite-components/src/index.ts)
to prevent build errors.**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore Issues with changes that don't modify src or test files. pr ready for visual snapshots Adding this label will run visual snapshot testing.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants