Update release-deps
Something seems convinced that @ember/string is a v1 addon.
that's sometimes true, but not always. 🤔
A module tried to resolve "@ember/string" and didn't find it (v1 package without auto-import)
OR maybe I'm reading it wrong, and it's saying that "a module" is a v1 addon, and that v1 addon needs auto-import.
ah-ha!
running with vite reveals that the problem comes from ember-data:
[plugin embroider-esbuild-resolver]
node_modules/.embroider/rewritten-packages/@ember-data/serializer.de043e00/node_modules/@ember-data/serializer/embedded-records-mixin-d75385ff.js:4:25:
4 │ import { camelize } from '@ember/string';
╵ ~~~~~~~~~~~~~~~
This error came from the "onResolve" callback registered here:
node_modules/@embroider/vite/src/esbuild-resolver.js:51:18:
51 │ build.onResolve({ filter: /./ }, async ({ path, importer, pluginData, kind }) => {
╵ ~~~~~~~~~
Here is the package.json for @ember-data/[email protected]:
here
{
"name": "@ember-data/serializer",
"version": "5.3.0",
"description": "Provides Legacy JSON, JSON:API and REST Implementations of the Serializer Interface for use with @ember-data/store",
"keywords": [
"ember-addon"
],
"repository": {
"type": "git",
"url": "git+ssh://[email protected]:emberjs/data.git",
"directory": "packages/serializer"
},
"license": "MIT",
"author": "",
"directories": {},
"ember-addon": {
"main": "addon-main.js",
"type": "addon",
"version": 1
},
"files": [
"blueprints",
"addon-main.js",
"addon",
"README.md",
"LICENSE.md",
"ember-data-logo-dark.svg",
"ember-data-logo-light.svg"
],
"peerDependencies": {
"@ember/string": "^3.1.1",
"ember-inflector": "^4.0.2"
},
"dependenciesMeta": {
"@ember-data/private-build-infra": {
"injected": true
},
"@ember/string": {
"injected": true
}
},
"dependencies": {
"@ember-data/private-build-infra": "5.3.0",
"@embroider/macros": "^1.13.1",
"ember-cli-babel": "^8.0.0",
"ember-cli-test-info": "^1.0.0"
},
"devDependencies": {
"@babel/cli": "^7.22.15",
"@babel/core": "^7.22.19",
"@babel/plugin-proposal-decorators": "^7.22.15",
"@babel/plugin-transform-class-properties": "^7.22.5",
"@babel/plugin-transform-private-methods": "^7.22.5",
"@babel/plugin-transform-runtime": "^7.22.15",
"@babel/plugin-transform-typescript": "^7.22.15",
"@babel/preset-env": "^7.22.15",
"@babel/preset-typescript": "^7.22.15",
"@babel/runtime": "^7.22.15",
"@ember-data/store": "5.3.0",
"@embroider/addon-dev": "^4.1.0",
"@glimmer/component": "^1.1.2",
"@rollup/plugin-babel": "^6.0.3",
"@rollup/plugin-node-resolve": "^15.2.1",
"ember-source": "~5.2.0",
"rollup": "^3.29.1",
"tslib": "^2.6.2",
"typescript": "^5.2.2",
"walk-sync": "^3.0.0",
"webpack": "^5.88.2"
},
"engines": {
"node": "16.* || >= 18.*"
},
"volta": {
"extends": "../../package.json"
},
"packageManager": "[email protected]",
"scripts": {
"build": "rollup --config && babel ./addon --out-dir addon --plugins=../private-build-infra/src/transforms/babel-plugin-transform-ext.js",
"start": "rollup --config --watch"
}
}
This is a v1 addon, and there is no ember-auto-import..
Now, this is only an issue when an app tries to use @ember/string @ v4 (a v2 addon).
Ideally, I would think we allow a duplicate to occur, and have ember-data use @ember/string @ v3, and the app just uses v4 -- I wonder if this is something that will be fixed by the removal of the written stuff?
For ember-data, specifically, it appears that 5.4 (currently alpha) is a v2 addon, https://github.com/emberjs/data/blob/main/packages/serializer/package.json#L25 (and they dropped @ember/string).
But updating to newer ember-data would work around the problem.
There are some PRs to widen the range of @ember/string in ember-data:
- https://github.com/emberjs/data/pull/9511/files#diff-4c45f41fd70b4f59e5ec029ea17a4d4e8f32fbf198b4f2b417b71948550d56feL55
- related: https://github.com/emberjs/data/pull/9519
But they'd probably need to be backported to 5.3 and 4.12 -- which means that any package that depends on @ember/string or ember-inflector will need to also declare ember-auto-import.
(Though, this is a bit of unknown territory for me, because peers with v1 addons are / were not common)