@embroider/compat 3.2.4-unstable.cd8d1be → 3.2.4-unstable.f84b5cd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/compat",
3
- "version": "3.2.4-unstable.cd8d1be",
3
+ "version": "3.2.4-unstable.f84b5cd",
4
4
  "private": false,
5
5
  "description": "Backward compatibility layer for the Embroider build system.",
6
6
  "repository": {
@@ -30,7 +30,7 @@
30
30
  "@babel/preset-env": "^7.14.5",
31
31
  "@babel/runtime": "^7.18.6",
32
32
  "@babel/traverse": "^7.14.5",
33
- "@embroider/macros": "1.13.3-unstable.cd8d1be",
33
+ "@embroider/macros": "1.13.3-unstable.f84b5cd",
34
34
  "@types/babel__code-frame": "^7.0.2",
35
35
  "@types/yargs": "^17.0.3",
36
36
  "assert-never": "^1.1.0",
@@ -66,7 +66,7 @@
66
66
  "yargs": "^17.0.1"
67
67
  },
68
68
  "devDependencies": {
69
- "@embroider/core": "3.3.1-unstable.cd8d1be",
69
+ "@embroider/core": "3.3.1-unstable.f84b5cd",
70
70
  "@embroider/sample-transforms": "workspace:*",
71
71
  "@embroider/test-support": "workspace:*",
72
72
  "@glimmer/syntax": "^0.84.3",
@@ -91,12 +91,9 @@
91
91
  "typescript": "^5.1.6"
92
92
  },
93
93
  "peerDependencies": {
94
- "@embroider/core": "3.3.1-unstable.cd8d1be"
94
+ "@embroider/core": "3.3.1-unstable.f84b5cd"
95
95
  },
96
96
  "engines": {
97
97
  "node": "12.* || 14.* || >= 16"
98
- },
99
- "volta": {
100
- "extends": "../../package.json"
101
98
  }
102
99
  }
@@ -36,6 +36,9 @@ ${(0, core_1.summarizePeerDepViolations)(violations)}`);
36
36
  interiorTrees.push(interior);
37
37
  return new broccoli_funnel_1.Funnel(interior, { destDir: index.packages[pkg.root] });
38
38
  });
39
+ let fakeTargets = Object.values(index.packages).map(dir => {
40
+ return (0, broccoli_file_creator_1.default)((0, path_1.join)(dir, '..', 'moved-package-target.js'), '');
41
+ });
39
42
  return (0, broccoli_merge_trees_1.default)([
40
43
  ...exteriorTrees,
41
44
  new broccoli_funnel_1.Funnel(compatApp.synthesizeStylesPackage(interiorTrees), {
@@ -45,6 +48,7 @@ ${(0, core_1.summarizePeerDepViolations)(violations)}`);
45
48
  destDir: '@embroider/synthesized-vendor',
46
49
  }),
47
50
  (0, broccoli_file_creator_1.default)('index.json', JSON.stringify(index, null, 2)),
51
+ ...fakeTargets,
48
52
  ]);
49
53
  }
50
54
  exports.convertLegacyAddons = convertLegacyAddons;
@@ -54,7 +58,7 @@ function buildAddonIndex(compatApp, appPackage, packages) {
54
58
  extraResolutions: {},
55
59
  };
56
60
  for (let oldPkg of packages) {
57
- let newRoot = `${oldPkg.name}.${hashed(oldPkg.root)}`;
61
+ let newRoot = `${oldPkg.name}.${hashed(oldPkg.root)}/node_modules/${oldPkg.name}`;
58
62
  content.packages[oldPkg.root] = newRoot;
59
63
  let nonResolvableDeps = oldPkg.nonResolvableDeps;
60
64
  if (nonResolvableDeps) {
@@ -1 +1 @@
1
- {"version":3,"file":"standalone-addon-build.js","sourceRoot":"","sources":["standalone-addon-build.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Package, RewrittenPackageIndex } from '@embroider/core';\nimport { PackageCache, summarizePeerDepViolations, validatePeerDependencies } from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport buildCompatAddon from './build-compat-addon';\nimport { Funnel } from 'broccoli-funnel';\nimport crypto from 'crypto';\nimport broccoliMergeTrees from 'broccoli-merge-trees';\nimport writeFile from 'broccoli-file-creator';\nimport type { Node } from 'broccoli-node-api';\nimport type CompatApp from './compat-app';\nimport { join } from 'path';\n\nexport function convertLegacyAddons(compatApp: CompatApp) {\n let packageCache = PackageCache.shared('embroider', compatApp.root);\n let instanceCache = new V1InstanceCache(compatApp, packageCache);\n\n let appPackage = compatApp.appPackage();\n\n let violations = validatePeerDependencies(appPackage).filter(({ dep }) => dep.isEmberPackage() && !dep.isV2Ember());\n if (violations.length > 0) {\n if (process.env.I_HAVE_BAD_PEER_DEPS_AND_WANT_A_BROKEN_BUILD) {\n console.warn(\n `You have set process.env.I_HAVE_BAD_PEER_DEPS_AND_WANT_A_BROKEN_BUILD, so we're ignoring your broken peer deps. Please don't bother reporting any Embroider bugs until you unset it.\\n${summarizePeerDepViolations(\n violations\n )}`\n );\n } else {\n throw new Error(\n `Some V1 ember addons are resolving as incorrect peer dependencies. This makes it impossible for us to safely convert them to v2 format.\nSee https://github.com/embroider-build/embroider/blob/main/docs/peer-dependency-resolution-issues.md for an explanation of the problem and suggestions for fixing it.\n\n${summarizePeerDepViolations(violations)}`\n );\n }\n }\n\n let v1Addons = findV1Addons(appPackage);\n let index = buildAddonIndex(compatApp, appPackage, v1Addons);\n\n let interiorTrees: Node[] = [];\n let exteriorTrees = [...v1Addons].map(pkg => {\n let interior = buildCompatAddon(pkg, instanceCache);\n interiorTrees.push(interior);\n return new Funnel(interior, { destDir: index.packages[pkg.root] });\n });\n\n return broccoliMergeTrees([\n ...exteriorTrees,\n new Funnel(compatApp.synthesizeStylesPackage(interiorTrees), {\n destDir: '@embroider/synthesized-styles',\n }),\n new Funnel(compatApp.synthesizeVendorPackage(interiorTrees), {\n destDir: '@embroider/synthesized-vendor',\n }),\n writeFile('index.json', JSON.stringify(index, null, 2)),\n ]);\n}\n\nfunction buildAddonIndex(compatApp: CompatApp, appPackage: Package, packages: Set<Package>): RewrittenPackageIndex {\n let content: RewrittenPackageIndex = {\n packages: {},\n extraResolutions: {},\n };\n for (let oldPkg of packages) {\n let newRoot = `${oldPkg.name}.${hashed(oldPkg.root)}`;\n content.packages[oldPkg.root] = newRoot;\n let nonResolvableDeps = oldPkg.nonResolvableDeps;\n if (nonResolvableDeps) {\n content.extraResolutions[newRoot] = [...nonResolvableDeps.values()].map(v => v.root);\n }\n }\n\n // adding an entry for the app itself to have a place in the\n // rewritten-packages, even though this stage hasn't actually put it there\n // yet. This directory lives outside our rewritten-pacakges directory because\n // it's produced by a separate build stage, and it's easier to have them\n // writing into separate directories.\n content.packages[compatApp.root] = join('..', 'rewritten-app');\n\n let nonResolvableDeps = appPackage.nonResolvableDeps;\n if (nonResolvableDeps) {\n let extraRoots = [...nonResolvableDeps.values()].map(v => v.root);\n\n // the app gets extraResolutions support just like every addon does\n content.extraResolutions[join('..', 'rewritten-app')] = extraRoots;\n\n // but it also gets extraResolutions registered against its *original*\n // location, because the app is unique because stage2 needs a Package\n // representing the *unmoved* app but seeing *moved* deps.\n content.extraResolutions[appPackage.root] = extraRoots;\n }\n\n return content;\n}\n\nfunction findV1Addons(pkg: Package, seen: Set<Package> = new Set(), output: Set<Package> = new Set()): Set<Package> {\n for (let dep of pkg.dependencies) {\n if (seen.has(dep)) {\n continue;\n }\n seen.add(dep);\n if (dep.isEmberPackage()) {\n if (!dep.isV2Addon()) {\n output.add(dep);\n }\n findV1Addons(dep, seen, output);\n }\n }\n return output;\n}\n\nfunction hashed(path: string): string {\n let h = crypto.createHash('sha1');\n return h.update(path).digest('hex').slice(0, 8);\n}\n"]}
1
+ {"version":3,"file":"standalone-addon-build.js","sourceRoot":"","sources":["standalone-addon-build.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Package, RewrittenPackageIndex } from '@embroider/core';\nimport { PackageCache, summarizePeerDepViolations, validatePeerDependencies } from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport buildCompatAddon from './build-compat-addon';\nimport { Funnel } from 'broccoli-funnel';\nimport crypto from 'crypto';\nimport broccoliMergeTrees from 'broccoli-merge-trees';\nimport writeFile from 'broccoli-file-creator';\nimport type { Node } from 'broccoli-node-api';\nimport type CompatApp from './compat-app';\nimport { join } from 'path';\n\nexport function convertLegacyAddons(compatApp: CompatApp) {\n let packageCache = PackageCache.shared('embroider', compatApp.root);\n let instanceCache = new V1InstanceCache(compatApp, packageCache);\n\n let appPackage = compatApp.appPackage();\n\n let violations = validatePeerDependencies(appPackage).filter(({ dep }) => dep.isEmberPackage() && !dep.isV2Ember());\n if (violations.length > 0) {\n if (process.env.I_HAVE_BAD_PEER_DEPS_AND_WANT_A_BROKEN_BUILD) {\n console.warn(\n `You have set process.env.I_HAVE_BAD_PEER_DEPS_AND_WANT_A_BROKEN_BUILD, so we're ignoring your broken peer deps. Please don't bother reporting any Embroider bugs until you unset it.\\n${summarizePeerDepViolations(\n violations\n )}`\n );\n } else {\n throw new Error(\n `Some V1 ember addons are resolving as incorrect peer dependencies. This makes it impossible for us to safely convert them to v2 format.\nSee https://github.com/embroider-build/embroider/blob/main/docs/peer-dependency-resolution-issues.md for an explanation of the problem and suggestions for fixing it.\n\n${summarizePeerDepViolations(violations)}`\n );\n }\n }\n\n let v1Addons = findV1Addons(appPackage);\n let index = buildAddonIndex(compatApp, appPackage, v1Addons);\n\n let interiorTrees: Node[] = [];\n let exteriorTrees = [...v1Addons].map(pkg => {\n let interior = buildCompatAddon(pkg, instanceCache);\n interiorTrees.push(interior);\n return new Funnel(interior, { destDir: index.packages[pkg.root] });\n });\n\n let fakeTargets = Object.values(index.packages).map(dir => {\n return writeFile(join(dir, '..', 'moved-package-target.js'), '');\n });\n\n return broccoliMergeTrees([\n ...exteriorTrees,\n new Funnel(compatApp.synthesizeStylesPackage(interiorTrees), {\n destDir: '@embroider/synthesized-styles',\n }),\n new Funnel(compatApp.synthesizeVendorPackage(interiorTrees), {\n destDir: '@embroider/synthesized-vendor',\n }),\n writeFile('index.json', JSON.stringify(index, null, 2)),\n ...fakeTargets,\n ]);\n}\n\nfunction buildAddonIndex(compatApp: CompatApp, appPackage: Package, packages: Set<Package>): RewrittenPackageIndex {\n let content: RewrittenPackageIndex = {\n packages: {},\n extraResolutions: {},\n };\n for (let oldPkg of packages) {\n let newRoot = `${oldPkg.name}.${hashed(oldPkg.root)}/node_modules/${oldPkg.name}`;\n content.packages[oldPkg.root] = newRoot;\n let nonResolvableDeps = oldPkg.nonResolvableDeps;\n if (nonResolvableDeps) {\n content.extraResolutions[newRoot] = [...nonResolvableDeps.values()].map(v => v.root);\n }\n }\n\n // adding an entry for the app itself to have a place in the\n // rewritten-packages, even though this stage hasn't actually put it there\n // yet. This directory lives outside our rewritten-pacakges directory because\n // it's produced by a separate build stage, and it's easier to have them\n // writing into separate directories.\n content.packages[compatApp.root] = join('..', 'rewritten-app');\n\n let nonResolvableDeps = appPackage.nonResolvableDeps;\n if (nonResolvableDeps) {\n let extraRoots = [...nonResolvableDeps.values()].map(v => v.root);\n\n // the app gets extraResolutions support just like every addon does\n content.extraResolutions[join('..', 'rewritten-app')] = extraRoots;\n\n // but it also gets extraResolutions registered against its *original*\n // location, because the app is unique because stage2 needs a Package\n // representing the *unmoved* app but seeing *moved* deps.\n content.extraResolutions[appPackage.root] = extraRoots;\n }\n\n return content;\n}\n\nfunction findV1Addons(pkg: Package, seen: Set<Package> = new Set(), output: Set<Package> = new Set()): Set<Package> {\n for (let dep of pkg.dependencies) {\n if (seen.has(dep)) {\n continue;\n }\n seen.add(dep);\n if (dep.isEmberPackage()) {\n if (!dep.isV2Addon()) {\n output.add(dep);\n }\n findV1Addons(dep, seen, output);\n }\n }\n return output;\n}\n\nfunction hashed(path: string): string {\n let h = crypto.createHash('sha1');\n return h.update(path).digest('hex').slice(0, 8);\n}\n"]}