@embroider/core 3.0.1 → 3.0.2-unstable.3936fdb

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/core",
3
- "version": "3.0.1",
3
+ "version": "3.0.2-unstable.3936fdb",
4
4
  "private": false,
5
5
  "description": "A build system for EmberJS applications.",
6
6
  "repository": {
@@ -16,6 +16,9 @@
16
16
  "src/**/*.d.ts",
17
17
  "src/**/*.js.map"
18
18
  ],
19
+ "scripts": {
20
+ "test": "jest"
21
+ },
19
22
  "dependencies": {
20
23
  "@babel/core": "^7.14.5",
21
24
  "@babel/parser": "^7.14.5",
@@ -23,6 +26,8 @@
23
26
  "@babel/plugin-transform-runtime": "^7.14.5",
24
27
  "@babel/runtime": "^7.14.5",
25
28
  "@babel/traverse": "^7.14.5",
29
+ "@embroider/macros": "1.11.1-unstable.3936fdb",
30
+ "@embroider/shared-internals": "2.1.1-unstable.3936fdb",
26
31
  "assert-never": "^1.2.1",
27
32
  "babel-plugin-ember-template-compilation": "^2.0.0",
28
33
  "broccoli-node-api": "^1.7.0",
@@ -42,11 +47,11 @@
42
47
  "resolve": "^1.20.0",
43
48
  "resolve-package-path": "^4.0.1",
44
49
  "typescript-memoize": "^1.0.1",
45
- "walk-sync": "^3.0.0",
46
- "@embroider/macros": "1.11.0",
47
- "@embroider/shared-internals": "2.1.0"
50
+ "walk-sync": "^3.0.0"
48
51
  },
49
52
  "devDependencies": {
53
+ "@embroider/sample-transforms": "workspace:*",
54
+ "@embroider/test-support": "workspace:*",
50
55
  "@glimmer/syntax": "^0.84.2",
51
56
  "@glint/template": "^1.0.0",
52
57
  "@types/babel__core": "^7.1.14",
@@ -61,17 +66,12 @@
61
66
  "@types/tmp": "^0.1.0",
62
67
  "fixturify": "^2.1.1",
63
68
  "tmp": "^0.1.0",
64
- "typescript": "^4.9.0",
65
- "@embroider/test-support": "0.36.0",
66
- "@embroider/sample-transforms": "0.0.0"
69
+ "typescript": "^4.9.0"
67
70
  },
68
71
  "engines": {
69
72
  "node": "12.* || 14.* || >= 16"
70
73
  },
71
74
  "volta": {
72
75
  "extends": "../../package.json"
73
- },
74
- "scripts": {
75
- "test": "jest"
76
76
  }
77
- }
77
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2018 Edward Faulkner
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,23 +0,0 @@
1
- import { PackageCache, Package } from '@embroider/shared-internals';
2
- export interface RewrittenPackageIndex {
3
- packages: Record<string, string>;
4
- extraResolutions: Record<string, string[]>;
5
- }
6
- type PublicAPI<T> = {
7
- [K in keyof T]: T[K];
8
- };
9
- type PackageCacheTheGoodParts = Omit<PublicAPI<PackageCache>, 'basedir' | 'seed' | 'shareAs'>;
10
- export declare class RewrittenPackageCache implements PackageCacheTheGoodParts {
11
- private plainCache;
12
- constructor(plainCache: PackageCache);
13
- get appRoot(): string;
14
- resolve(packageName: string, fromPackage: Package): Package;
15
- private maybeMoved;
16
- get(packageRoot: string): Package;
17
- original(pkg: Package): Package | undefined;
18
- ownerOfFile(filename: string): Package | undefined;
19
- private get index();
20
- private maybeWrap;
21
- static shared(identifier: string, appRoot: string): RewrittenPackageCache;
22
- }
23
- export {};
@@ -1,231 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RewrittenPackageCache = void 0;
10
- const shared_internals_1 = require("@embroider/shared-internals");
11
- const fs_extra_1 = require("fs-extra");
12
- const path_1 = require("path");
13
- const typescript_memoize_1 = require("typescript-memoize");
14
- class RewrittenPackageCache {
15
- constructor(plainCache) {
16
- this.plainCache = plainCache;
17
- }
18
- get appRoot() {
19
- return this.plainCache.appRoot;
20
- }
21
- resolve(packageName, fromPackage) {
22
- let oldRoot = this.index.newToOld.get(fromPackage.root);
23
- if (!oldRoot) {
24
- // the fromPackage has not been moved, so we're just providing the plain
25
- // behavior.
26
- return this.plainCache.resolve(packageName, fromPackage);
27
- }
28
- // check for any extraResolutions
29
- let extraResolutions = this.index.extraResolutions.get(fromPackage.root);
30
- if (extraResolutions) {
31
- for (let depRoot of extraResolutions) {
32
- let depPkg = this.plainCache.get(depRoot);
33
- if (depPkg.name === packageName) {
34
- return this.maybeMoved(depPkg);
35
- }
36
- }
37
- }
38
- // do the real resolving from the old location
39
- let oldSrc = this.plainCache.get(oldRoot);
40
- let oldDest = this.plainCache.resolve(packageName, oldSrc);
41
- // and if the package we found was itself moved return the moved one.
42
- return this.maybeMoved(oldDest);
43
- }
44
- // ensure we have the moved version of the package
45
- maybeMoved(pkg) {
46
- let newRoot = this.index.oldToNew.get(pkg.root);
47
- if (newRoot) {
48
- return this.get(newRoot);
49
- }
50
- else {
51
- return pkg;
52
- }
53
- }
54
- get(packageRoot) {
55
- return this.maybeWrap(this.plainCache.get(packageRoot));
56
- }
57
- original(pkg) {
58
- let oldRoot = this.index.newToOld.get(pkg.root);
59
- if (oldRoot) {
60
- return this.plainCache.get(oldRoot);
61
- }
62
- }
63
- ownerOfFile(filename) {
64
- let owner = this.plainCache.ownerOfFile(filename);
65
- if (owner) {
66
- return this.maybeWrap(owner);
67
- }
68
- }
69
- get index() {
70
- let addonsDir = (0, path_1.resolve)(this.appRoot, 'node_modules', '.embroider', 'rewritten-packages');
71
- let indexFile = (0, path_1.resolve)(addonsDir, 'index.json');
72
- if ((0, fs_extra_1.existsSync)(indexFile)) {
73
- // I should probably make the else case throw here soon.
74
- let { packages, extraResolutions } = (0, fs_extra_1.readJSONSync)(indexFile);
75
- return {
76
- oldToNew: new Map(Object.entries(packages).map(([oldRoot, newRoot]) => [
77
- (0, path_1.resolve)(addonsDir, oldRoot),
78
- (0, path_1.resolve)(addonsDir, newRoot),
79
- ])),
80
- newToOld: new Map(Object.entries(packages).map(([oldRoot, newRoot]) => [
81
- (0, path_1.resolve)(addonsDir, newRoot),
82
- (0, path_1.resolve)(addonsDir, oldRoot),
83
- ])),
84
- extraResolutions: new Map(Object.entries(extraResolutions).map(([fromRoot, toRoots]) => [
85
- (0, path_1.resolve)(addonsDir, fromRoot),
86
- toRoots.map(r => (0, path_1.resolve)(addonsDir, r)),
87
- ])),
88
- };
89
- }
90
- return { oldToNew: new Map(), newToOld: new Map(), extraResolutions: new Map() };
91
- }
92
- // put a WrappedPackage around Packages that do in fact represent ones that we
93
- // have moved, leaving other Packages alone.
94
- maybeWrap(pkg) {
95
- let oldRoot = this.index.newToOld.get(pkg.root);
96
- if (oldRoot) {
97
- let found = wrapped.get(pkg);
98
- if (!found) {
99
- found = new MovedPackage(this, pkg);
100
- wrapped.set(pkg, found);
101
- }
102
- return castToPackage(found);
103
- }
104
- else {
105
- return pkg;
106
- }
107
- }
108
- static shared(identifier, appRoot) {
109
- let pk = (0, shared_internals_1.getOrCreate)(shared, identifier + appRoot, () => new RewrittenPackageCache(shared_internals_1.PackageCache.shared(identifier, appRoot)));
110
- if (pk.appRoot !== appRoot) {
111
- throw new Error(`bug: PackageCache appRoot disagreement ${appRoot}!=${pk.appRoot}`);
112
- }
113
- return pk;
114
- }
115
- }
116
- __decorate([
117
- (0, typescript_memoize_1.Memoize)()
118
- ], RewrittenPackageCache.prototype, "index", null);
119
- exports.RewrittenPackageCache = RewrittenPackageCache;
120
- const shared = new Map();
121
- const wrapped = new WeakMap();
122
- // TODO: this goes with the above TODO and can get deleted when it does.
123
- function castToPackage(m) {
124
- return m;
125
- }
126
- class MovedPackage {
127
- // plainPkg is not the Package in the original un-moved location, it's the
128
- // plain representation of the moved location. That is, when you grab
129
- // plainPkg.root it will show the new location, and plainPkg.packageJSON shows
130
- // the rewritten package.json contained there.
131
- //
132
- // The point of MovedPackage is to finesse the parts of plainPkg that wouldn't
133
- // be correct if you used them directly. For example, plainPkg.dependencies
134
- // won't necessarily even work, because if you try to resolve them from the
135
- // moved location they might not be there.
136
- constructor(packageCache, plainPkg) {
137
- this.packageCache = packageCache;
138
- this.plainPkg = plainPkg;
139
- }
140
- get root() {
141
- return this.plainPkg.root;
142
- }
143
- get name() {
144
- return this.plainPkg.name;
145
- }
146
- get version() {
147
- return this.plainPkg.version;
148
- }
149
- get packageJSON() {
150
- return this.plainPkg.packageJSON;
151
- }
152
- get meta() {
153
- return this.plainPkg.meta;
154
- }
155
- get isEmberPackage() {
156
- return this.plainPkg.isEmberPackage;
157
- }
158
- get isEngine() {
159
- return this.plainPkg.isEngine;
160
- }
161
- get isLazyEngine() {
162
- return this.plainPkg.isLazyEngine;
163
- }
164
- get isV2Ember() {
165
- return this.plainPkg.isV2Ember;
166
- }
167
- get isV2App() {
168
- return this.plainPkg.isV2App;
169
- }
170
- get isV2Addon() {
171
- return this.plainPkg.isV2Addon;
172
- }
173
- // it's important that we're calling this.dependencies here at this level, not
174
- // plainPkg.dependencies, which wouldn't be correct
175
- findDescendants(filter) {
176
- let pkgs = new Set();
177
- let queue = [castToPackage(this)];
178
- while (true) {
179
- let pkg = queue.shift();
180
- if (!pkg) {
181
- break;
182
- }
183
- if (!pkgs.has(pkg)) {
184
- pkgs.add(pkg);
185
- let nextLevel;
186
- if (filter) {
187
- nextLevel = pkg.dependencies.filter(filter);
188
- }
189
- else {
190
- nextLevel = pkg.dependencies;
191
- }
192
- nextLevel.forEach(d => queue.push(d));
193
- }
194
- }
195
- pkgs.delete(castToPackage(this));
196
- return [...pkgs.values()];
197
- }
198
- get mayRebuild() {
199
- return this.plainPkg.mayRebuild;
200
- }
201
- get dependencyNames() {
202
- return this.plainPkg.dependencyNames;
203
- }
204
- get dependencies() {
205
- return this.plainPkg.dependencyNames
206
- .map(name => {
207
- try {
208
- return this.packageCache.resolve(name, castToPackage(this));
209
- }
210
- catch (error) {
211
- // if the package was not found do not error out here. this is relevant
212
- // for the case where a package might be an optional peerDependency and we dont
213
- // want to error if it was not found. Additionally, erroring here is "far" away
214
- // from the actual logical failure point and so not failing here will provide a better
215
- // error message down the line
216
- if (error.code === 'MODULE_NOT_FOUND') {
217
- return false;
218
- }
219
- throw error;
220
- }
221
- })
222
- .filter(Boolean);
223
- }
224
- hasDependency(name) {
225
- // this is *not* extended because it's understood that the rewritten package
226
- // should explictly list the things that need extraResolutions in its own
227
- // package.json.ß
228
- return this.plainPkg.hasDependency(name);
229
- }
230
- }
231
- //# sourceMappingURL=rewritten-package-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewritten-package-cache.js","sourceRoot":"","sources":["rewritten-package-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { PackageCache, Package, getOrCreate } from '@embroider/shared-internals';\nimport { existsSync, readJSONSync } from 'fs-extra';\nimport { resolve } from 'path';\nimport { Memoize } from 'typescript-memoize';\n\nexport interface RewrittenPackageIndex {\n // keys are paths to original package root directories.\n //\n // values are paths to rewritten directories.\n //\n // all paths are interpreted relative to the rewritten package index file\n // itself.\n packages: Record<string, string>;\n\n // key is path to the rewritten package that needs to resolve an extra\n // dependency\n //\n // value is list of paths to packages that it should be able to resolve.\n //\n // while the key is always one of our rewritten packages, the values can be\n // rewritten ones or not.\n extraResolutions: Record<string, string[]>;\n}\n\n// without this, using a class as an interface forces you to have the same\n// private and protected methods too (since people trying to extend from you\n// could see all of those)\ntype PublicAPI<T> = { [K in keyof T]: T[K] };\n\n// TODO: as our refactor lands we should be able to remove these things from\n// PackageCache itself.\ntype PackageCacheTheGoodParts = Omit<PublicAPI<PackageCache>, 'basedir' | 'seed' | 'shareAs'>;\n\nexport class RewrittenPackageCache implements PackageCacheTheGoodParts {\n constructor(private plainCache: PackageCache) {}\n\n get appRoot(): string {\n return this.plainCache.appRoot;\n }\n\n resolve(packageName: string, fromPackage: Package): Package {\n let oldRoot = this.index.newToOld.get(fromPackage.root);\n if (!oldRoot) {\n // the fromPackage has not been moved, so we're just providing the plain\n // behavior.\n return this.plainCache.resolve(packageName, fromPackage);\n }\n\n // check for any extraResolutions\n let extraResolutions = this.index.extraResolutions.get(fromPackage.root);\n if (extraResolutions) {\n for (let depRoot of extraResolutions) {\n let depPkg = this.plainCache.get(depRoot);\n if (depPkg.name === packageName) {\n return this.maybeMoved(depPkg);\n }\n }\n }\n\n // do the real resolving from the old location\n let oldSrc = this.plainCache.get(oldRoot);\n let oldDest = this.plainCache.resolve(packageName, oldSrc);\n\n // and if the package we found was itself moved return the moved one.\n return this.maybeMoved(oldDest);\n }\n\n // ensure we have the moved version of the package\n private maybeMoved(pkg: Package): Package {\n let newRoot = this.index.oldToNew.get(pkg.root);\n if (newRoot) {\n return this.get(newRoot);\n } else {\n return pkg;\n }\n }\n\n get(packageRoot: string): Package {\n return this.maybeWrap(this.plainCache.get(packageRoot));\n }\n\n original(pkg: Package): Package | undefined {\n let oldRoot = this.index.newToOld.get(pkg.root);\n if (oldRoot) {\n return this.plainCache.get(oldRoot);\n }\n }\n\n ownerOfFile(filename: string): Package | undefined {\n let owner = this.plainCache.ownerOfFile(filename);\n if (owner) {\n return this.maybeWrap(owner);\n }\n }\n\n @Memoize()\n private get index(): {\n oldToNew: Map<string, string>;\n newToOld: Map<string, string>;\n extraResolutions: Map<string, string[]>;\n } {\n let addonsDir = resolve(this.appRoot, 'node_modules', '.embroider', 'rewritten-packages');\n let indexFile = resolve(addonsDir, 'index.json');\n if (existsSync(indexFile)) {\n // I should probably make the else case throw here soon.\n let { packages, extraResolutions } = readJSONSync(indexFile) as RewrittenPackageIndex;\n return {\n oldToNew: new Map(\n Object.entries(packages).map(([oldRoot, newRoot]) => [\n resolve(addonsDir, oldRoot),\n resolve(addonsDir, newRoot),\n ])\n ),\n newToOld: new Map(\n Object.entries(packages).map(([oldRoot, newRoot]) => [\n resolve(addonsDir, newRoot),\n resolve(addonsDir, oldRoot),\n ])\n ),\n extraResolutions: new Map(\n Object.entries(extraResolutions).map(([fromRoot, toRoots]) => [\n resolve(addonsDir, fromRoot),\n toRoots.map(r => resolve(addonsDir, r)),\n ])\n ),\n };\n }\n return { oldToNew: new Map(), newToOld: new Map(), extraResolutions: new Map() };\n }\n\n // put a WrappedPackage around Packages that do in fact represent ones that we\n // have moved, leaving other Packages alone.\n private maybeWrap(pkg: Package) {\n let oldRoot = this.index.newToOld.get(pkg.root);\n if (oldRoot) {\n let found = wrapped.get(pkg);\n if (!found) {\n found = new MovedPackage(this, pkg);\n wrapped.set(pkg, found);\n }\n return castToPackage(found);\n } else {\n return pkg;\n }\n }\n static shared(identifier: string, appRoot: string) {\n let pk = getOrCreate(\n shared,\n identifier + appRoot,\n () => new RewrittenPackageCache(PackageCache.shared(identifier, appRoot))\n );\n if (pk.appRoot !== appRoot) {\n throw new Error(`bug: PackageCache appRoot disagreement ${appRoot}!=${pk.appRoot}`);\n }\n return pk;\n }\n}\n\nconst shared: Map<string, RewrittenPackageCache> = new Map();\nconst wrapped = new WeakMap<Package, MovedPackage>();\n\n// TODO: as our refactor lands we should be able to remove this from Package\n// itself.\ntype PackageTheGoodParts = Omit<PublicAPI<Package>, 'nonResolvableDeps'>;\n\n// TODO: this goes with the above TODO and can get deleted when it does.\nfunction castToPackage(m: MovedPackage): Package {\n return m as unknown as Package;\n}\n\nclass MovedPackage implements PackageTheGoodParts {\n // plainPkg is not the Package in the original un-moved location, it's the\n // plain representation of the moved location. That is, when you grab\n // plainPkg.root it will show the new location, and plainPkg.packageJSON shows\n // the rewritten package.json contained there.\n //\n // The point of MovedPackage is to finesse the parts of plainPkg that wouldn't\n // be correct if you used them directly. For example, plainPkg.dependencies\n // won't necessarily even work, because if you try to resolve them from the\n // moved location they might not be there.\n constructor(private packageCache: RewrittenPackageCache, private plainPkg: Package) {}\n\n get root() {\n return this.plainPkg.root;\n }\n\n get name() {\n return this.plainPkg.name;\n }\n\n get version() {\n return this.plainPkg.version;\n }\n\n get packageJSON() {\n return this.plainPkg.packageJSON;\n }\n\n get meta() {\n return this.plainPkg.meta;\n }\n\n get isEmberPackage() {\n return this.plainPkg.isEmberPackage;\n }\n\n get isEngine() {\n return this.plainPkg.isEngine;\n }\n\n get isLazyEngine() {\n return this.plainPkg.isLazyEngine;\n }\n\n get isV2Ember() {\n return this.plainPkg.isV2Ember;\n }\n\n get isV2App() {\n return this.plainPkg.isV2App;\n }\n\n get isV2Addon() {\n return this.plainPkg.isV2Addon;\n }\n\n // it's important that we're calling this.dependencies here at this level, not\n // plainPkg.dependencies, which wouldn't be correct\n findDescendants(filter?: (pkg: Package) => boolean): Package[] {\n let pkgs = new Set<Package>();\n let queue: Package[] = [castToPackage(this)];\n while (true) {\n let pkg = queue.shift();\n if (!pkg) {\n break;\n }\n if (!pkgs.has(pkg)) {\n pkgs.add(pkg);\n let nextLevel;\n if (filter) {\n nextLevel = pkg.dependencies.filter(filter);\n } else {\n nextLevel = pkg.dependencies;\n }\n nextLevel.forEach(d => queue.push(d));\n }\n }\n pkgs.delete(castToPackage(this));\n return [...pkgs.values()];\n }\n\n get mayRebuild() {\n return this.plainPkg.mayRebuild;\n }\n\n get dependencyNames() {\n return this.plainPkg.dependencyNames;\n }\n\n get dependencies() {\n return this.plainPkg.dependencyNames\n .map(name => {\n try {\n return this.packageCache.resolve(name, castToPackage(this));\n } catch (error) {\n // if the package was not found do not error out here. this is relevant\n // for the case where a package might be an optional peerDependency and we dont\n // want to error if it was not found. Additionally, erroring here is \"far\" away\n // from the actual logical failure point and so not failing here will provide a better\n // error message down the line\n if (error.code === 'MODULE_NOT_FOUND') {\n return false;\n }\n\n throw error;\n }\n })\n .filter(Boolean) as Package[];\n }\n\n hasDependency(name: string): boolean {\n // this is *not* extended because it's understood that the rewritten package\n // should explictly list the things that need extraResolutions in its own\n // package.json.ß\n return this.plainPkg.hasDependency(name);\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- import { Package } from '@embroider/shared-internals';
2
- export declare class RewrittenPackages {
3
- private appRoot;
4
- constructor(appRoot: string);
5
- rewrittenTo(packageRoot: string): string | undefined;
6
- rewrittenFrom(packageRoot: string): string | undefined;
7
- map(pkg: Package): Package;
8
- private get rewrittenPackagesIndex();
9
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RewrittenPackages = void 0;
10
- const typescript_memoize_1 = require("typescript-memoize");
11
- const fs_extra_1 = require("fs-extra");
12
- const path_1 = require("path");
13
- const shared_internals_1 = require("@embroider/shared-internals");
14
- class RewrittenPackages {
15
- constructor(appRoot) {
16
- this.appRoot = appRoot;
17
- }
18
- rewrittenTo(packageRoot) {
19
- return this.rewrittenPackagesIndex.v1ToV2.get(packageRoot);
20
- }
21
- rewrittenFrom(packageRoot) {
22
- return this.rewrittenPackagesIndex.v2ToV1.get(packageRoot);
23
- }
24
- map(pkg) {
25
- let newRoot = this.rewrittenTo(pkg.root);
26
- if (newRoot) {
27
- return shared_internals_1.PackageCache.shared('embroider-stage3', this.appRoot).get(newRoot);
28
- }
29
- else {
30
- return pkg;
31
- }
32
- }
33
- get rewrittenPackagesIndex() {
34
- let addonsDir = (0, path_1.resolve)(this.appRoot, 'node_modules', '.embroider', 'addons');
35
- let indexFile = (0, path_1.resolve)(addonsDir, 'v1-addon-index.json');
36
- if ((0, fs_extra_1.existsSync)(indexFile)) {
37
- let { v1Addons } = (0, fs_extra_1.readJSONSync)(indexFile);
38
- return {
39
- v1ToV2: new Map(Object.entries(v1Addons).map(([oldRoot, relativeNewRoot]) => [oldRoot, (0, path_1.resolve)(addonsDir, relativeNewRoot)])),
40
- v2ToV1: new Map(Object.entries(v1Addons).map(([oldRoot, relativeNewRoot]) => [(0, path_1.resolve)(addonsDir, relativeNewRoot), oldRoot])),
41
- };
42
- }
43
- return { v1ToV2: new Map(), v2ToV1: new Map() };
44
- }
45
- }
46
- __decorate([
47
- (0, typescript_memoize_1.Memoize)()
48
- ], RewrittenPackages.prototype, "rewrittenPackagesIndex", null);
49
- exports.RewrittenPackages = RewrittenPackages;
50
- //# sourceMappingURL=rewritten-packages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewritten-packages.js","sourceRoot":"","sources":["rewritten-packages.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2DAA6C;AAC7C,uCAAoD;AACpD,+BAA+B;AAC/B,kEAAoE;AAEpE,MAAa,iBAAiB;IAC5B,YAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEvC,WAAW,CAAC,WAAmB;QAC7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa,CAAC,WAAmB;QAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAC,GAAY;QACd,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;YACX,OAAO,+BAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC3E;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;IAGD,IAAY,sBAAsB;QAChC,IAAI,SAAS,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9E,IAAI,SAAS,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC1D,IAAI,IAAA,qBAAU,EAAC,SAAS,CAAC,EAAE;YACzB,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAA,uBAAY,EAAC,SAAS,CAAyC,CAAC;YACnF,OAAO;gBACL,MAAM,EAAE,IAAI,GAAG,CACb,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAC7G;gBACD,MAAM,EAAE,IAAI,GAAG,CACb,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC,CAC7G;aACF,CAAC;SACH;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAClD,CAAC;CACF;AAhBC;IADC,IAAA,4BAAO,GAAE;+DAgBT;AApCH,8CAqCC","sourcesContent":["import { Memoize } from 'typescript-memoize';\nimport { readJSONSync, existsSync } from 'fs-extra';\nimport { resolve } from 'path';\nimport { Package, PackageCache } from '@embroider/shared-internals';\n\nexport class RewrittenPackages {\n constructor(private appRoot: string) {}\n\n rewrittenTo(packageRoot: string): string | undefined {\n return this.rewrittenPackagesIndex.v1ToV2.get(packageRoot);\n }\n\n rewrittenFrom(packageRoot: string): string | undefined {\n return this.rewrittenPackagesIndex.v2ToV1.get(packageRoot);\n }\n\n map(pkg: Package): Package {\n let newRoot = this.rewrittenTo(pkg.root);\n if (newRoot) {\n return PackageCache.shared('embroider-stage3', this.appRoot).get(newRoot);\n } else {\n return pkg;\n }\n }\n\n @Memoize()\n private get rewrittenPackagesIndex(): { v1ToV2: Map<string, string>; v2ToV1: Map<string, string> } {\n let addonsDir = resolve(this.appRoot, 'node_modules', '.embroider', 'addons');\n let indexFile = resolve(addonsDir, 'v1-addon-index.json');\n if (existsSync(indexFile)) {\n let { v1Addons } = readJSONSync(indexFile) as { v1Addons: Record<string, string> };\n return {\n v1ToV2: new Map(\n Object.entries(v1Addons).map(([oldRoot, relativeNewRoot]) => [oldRoot, resolve(addonsDir, relativeNewRoot)])\n ),\n v2ToV1: new Map(\n Object.entries(v1Addons).map(([oldRoot, relativeNewRoot]) => [resolve(addonsDir, relativeNewRoot), oldRoot])\n ),\n };\n }\n return { v1ToV2: new Map(), v2ToV1: new Map() };\n }\n}\n"]}