Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
85f236b
fix: clean dependencies, delete unused file, migrated overlooked test…
axe312ger Nov 18, 2024
1b6cfcf
refactor: build process now supports TS, ESM, CJS and browser
axe312ger Nov 21, 2024
1b7e539
build: upgrade to ESM version of contentful-sdk-core
axe312ger Nov 21, 2024
e98ddeb
test: reduce bundle size limits thanks to our optimizations
axe312ger Nov 21, 2024
574891b
build: clean up depdency changes
axe312ger Nov 21, 2024
f04fa8e
chore: typos
axe312ger Nov 21, 2024
7388cfc
feat: this SDK now also includes its version number in its bundles
axe312ger Nov 26, 2024
6b24d39
test: fix output integration tests
axe312ger Nov 26, 2024
e5b9d4d
build: npm dedupe
axe312ger Nov 26, 2024
7f1361c
build: latest rollup dependencies
axe312ger Nov 26, 2024
dac47bc
fix: use with keyword instead of assert to mark import as json
axe312ger Nov 26, 2024
33d50f7
build: update depndencies related to this branch
axe312ger Dec 18, 2024
044b09b
build: make npm happy to resolve our dependencies without --force
axe312ger Dec 18, 2024
ea74601
test: ensure new failing typescript lint rules throw warnings only - …
axe312ger Dec 18, 2024
e851b4e
test: fix import paths
axe312ger Jan 7, 2025
f0e17c2
build: ensure json-patch is available for typescript in projects usin…
axe312ger Jan 9, 2025
521b71b
ci: update node version
axe312ger Jan 23, 2025
3763d1a
fix: adjust import path
axe312ger Jan 23, 2025
a8c3848
style: ensure prettier doesnt fail on our rollup config file
axe312ger Jan 23, 2025
85718c0
style: format code to make prettier lint happy
axe312ger Jan 23, 2025
746ce41
style: format code to make prettier lint happy #2
axe312ger Jan 23, 2025
6acf861
ci: update circleci config to match our new setup
axe312ger Jan 23, 2025
bfdadcc
ci: cleanup
axe312ger Jan 23, 2025
752f1c1
Merge branch 'master' into refactor/full-esm-support
axe312ger Jan 23, 2025
d3192d8
test: slightly increase bundle size limits
axe312ger Jan 23, 2025
d04a810
Merge branch 'master' into refactor/full-esm-support
axe312ger Jan 29, 2025
557e7b5
feat: introduce MIGRATION.md file
axe312ger Feb 13, 2025
7eb9c3f
docs: readme cleanup
axe312ger Feb 13, 2025
258dbaa
fix: move types definition to top of exports as demanded by node docs
axe312ger Mar 20, 2025
394ddd4
Merge branch 'master' into refactor/full-esm-support
axe312ger Mar 20, 2025
4a2f4ff
Merge branch 'master' into refactor/full-esm-support
whitelisab Mar 21, 2025
764e984
fix: disable linting on inject-env file
whitelisab Mar 21, 2025
8c3a710
Merge branch 'master' into refactor/full-esm-support
axe312ger Mar 25, 2025
d7f7756
docs: fix wrong link
axe312ger Apr 14, 2025
3df09f0
Merge branch 'master' into refactor/full-esm-support
axe312ger Apr 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 0 additions & 70 deletions .babelrc.js

This file was deleted.

10 changes: 1 addition & 9 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,13 @@ jobs:
- with-workspace
- run: npm run prettier:check
- run: npm run lint
- run: npm run check-types
- run: npm run test:types

unit:
executor: docker-with-node
steps:
- with-workspace
- run: npm run test:cover-unit
- store_test_results:
path: reports
- store_artifacts:
path: ./reports/unit-results.xml

size:
executor: docker-with-node
Expand All @@ -94,10 +90,6 @@ jobs:
steps:
- with-workspace
- run: npm run test:cover-integration
- store_test_results:
path: reports
- store_artifacts:
path: ./reports/integration-results.xml

# Do not use the workspace for the release step
release:
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
dist
gh-pages
webpack-build-log.json

# Esdoc dirs
out
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ dist
coverage
out
typings
rollup.config.js
106 changes: 106 additions & 0 deletions MIGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<!-- shared header START -->

<p align="center">
<a href="https://www.contentful.com/developers/docs/references/content-management-api/">
<img alt="Contentful Logo" title="Contentful" src="images/contentful-icon.png" width="150">
</a>
</p>

<h1 align='center'>Content Management API</h1>

<h3 align="center">Migration</h3>

<p align="center">
<a href="README.md">Readme</a> ·
<a href="MIGRATION.md">Migration</a> · ·
<a href="CONTRIBUTING.md">Contributing</a>
</p>

<p align="center">
<a href="https://www.contentful.com/slack/">
<img src="https://img.shields.io/badge/-Join%20Community%20Slack-2AB27B.svg?logo=slack&maxAge=31557600" alt="Join Contentful Community Slack">
</a>
</p>

<!-- shared header END -->

# Migration information

- [Migration information](#migration-information)
- [Migration to version 12.x](#migration-to-version-12x)
- [Breaking changes](#breaking-changes)
- [Node.js core modules](#nodejs-core-modules)
- [Pre-bundled code](#pre-bundled-code)
- [Webpack 5](#webpack-5)
- [Rollup](#rollup)
- [Improvements](#improvements)
- [Tree shaking](#tree-shaking)
- [Module support and package configuration](#module-support-and-package-configuration)
- [Testing framework](#testing-framework)
- [Security](#security)
- [Removal of eval](#removal-of-eval)

From version 3.0.0 onwards, you can access documentation for a specific version by visiting `https://contentful.github.io/contentful-management.js/contentful-management/<VERSION>`.

You can upgrade to a major version using `npm update contentful`

## Migration to version 12.x

Version 12.0.0 introduces full ESM support by default, with CJS variants still available for legacy environments. This version is a significant step forward in modernizing our build and improving performance while maintaining wide compatibility across various environments.

### Breaking changes

#### Node.js core modules

We no longer bundle Node.js core modules. If you’re bundling for the browser, you may need to configure your bundler to provide fallbacks or empty functions, particularly for the fs module. This change was introduced in version 12.x and may affect projects using Node.js-specific modules in the browser.

#### Pre-bundled code

Pre-bundled code for Node.js is no longer provided. If your setup relies on pre-bundled packages, you may need to adjust your build configuration.

##### Webpack 5

To make our project bundle properly for the browser with Webpack 5, you need to add this to your configuration:

```js
module.exports = {
resolve: {
fallback: {
os: false,
zlib: false,
tty: false,
},
},
}
```

##### Rollup

To make our project bundle properly for the browser with Rollup, you need to add this to your configuration:

```js
nodeResolve({ browser: true, preferBuiltins: false })
```

### Improvements

#### Tree shaking

Tree shaking is significantly improved, ensuring that only the necessary parts of the library are included in your final bundle.
Smaller browser bundles

Browser bundle sizes have been reduced by nearly threefold, from 128KB to 45KB, contributing to faster load times and improved performance.

#### Module support and package configuration

The package now uses "type": "module" in package.json to define the default module format as ESM, while also providing support for CJS through the exports field. This allows us to support a wide range of environments including Node.js (with and without TypeScript, both CJS and ESM), AngularJS, GatsbyJS, Next.js, Nuxt, React Native (Expo), Rollup, Svelte, Vite, Webpack, and more.

#### Testing framework

We’ve migrated our internal test environment from Jest to Vitest, aligning with modern testing frameworks and tools.

## Security

### Removal of eval

We have completely removed the use of eval in our exported code, improving security and compatibility with strict environments.
Loading