yeoman-environment 4.0.0-alpha.5 → 4.0.0-alpha.7
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/bin/bin.cjs +4 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +18 -15
- package/dist/cli/utils.d.ts +8 -0
- package/dist/cli/utils.js +6 -7
- package/dist/commands.d.ts +23 -0
- package/dist/commands.js +45 -0
- package/dist/commit.d.ts +17 -0
- package/dist/commit.js +22 -0
- package/dist/composed-store.d.ts +26 -0
- package/dist/composed-store.js +68 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +17 -0
- package/dist/environment-base.d.ts +259 -0
- package/dist/environment-base.js +641 -0
- package/dist/environment-full.d.ts +115 -0
- package/dist/environment-full.js +321 -0
- package/dist/generator-lookup.d.ts +56 -0
- package/dist/generator-lookup.js +97 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +9 -5
- package/dist/module-lookup.d.ts +59 -0
- package/dist/module-lookup.js +227 -0
- package/dist/package-manager.d.ts +18 -0
- package/dist/package-manager.js +52 -69
- package/dist/store.d.ts +66 -0
- package/dist/store.js +76 -47
- package/dist/util/command.d.ts +34 -0
- package/dist/util/command.js +32 -17
- package/dist/util/namespace.d.ts +26 -0
- package/dist/util/namespace.js +56 -190
- package/dist/util/resolve.d.ts +6 -0
- package/dist/util/resolve.js +40 -0
- package/dist/util/util.d.ts +7 -0
- package/dist/util/util.js +24 -23
- package/package.json +20 -33
- package/readme.md +2 -3
- package/dist/adapter.js +0 -97
- package/dist/adapter.js.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/utils.js.map +0 -1
- package/dist/command.js +0 -74
- package/dist/command.js.map +0 -1
- package/dist/composability.js +0 -78
- package/dist/composability.js.map +0 -1
- package/dist/environment.js +0 -1221
- package/dist/environment.js.map +0 -1
- package/dist/generator-features.js +0 -69
- package/dist/generator-features.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/namespace-composability.js +0 -340
- package/dist/namespace-composability.js.map +0 -1
- package/dist/package-manager.js.map +0 -1
- package/dist/resolver.js +0 -421
- package/dist/resolver.js.map +0 -1
- package/dist/spawn-command.js +0 -30
- package/dist/spawn-command.js.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/util/binary-diff.js +0 -36
- package/dist/util/binary-diff.js.map +0 -1
- package/dist/util/command.js.map +0 -1
- package/dist/util/conflicter.js +0 -346
- package/dist/util/conflicter.js.map +0 -1
- package/dist/util/esm.js +0 -22
- package/dist/util/esm.js.map +0 -1
- package/dist/util/log.js +0 -165
- package/dist/util/log.js.map +0 -1
- package/dist/util/namespace.js.map +0 -1
- package/dist/util/repository.js +0 -223
- package/dist/util/repository.js.map +0 -1
- package/dist/util/transform.js +0 -149
- package/dist/util/transform.js.map +0 -1
- package/dist/util/util.js.map +0 -1
package/dist/util/repository.js
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
/** @module env/repository */
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { createRequire } from 'node:module';
|
|
5
|
-
import semver from 'semver';
|
|
6
|
-
import createdLogger from 'debug';
|
|
7
|
-
import Arborist from '@npmcli/arborist';
|
|
8
|
-
import logger from './log.js';
|
|
9
|
-
import { requireOrImport } from './esm.js';
|
|
10
|
-
const debug = createdLogger('yeoman:environment:repository');
|
|
11
|
-
const require = createRequire(import.meta.url);
|
|
12
|
-
const REPOSITORY_FOLDER = '.yo-repository';
|
|
13
|
-
/**
|
|
14
|
-
* @private
|
|
15
|
-
*/
|
|
16
|
-
class YeomanRepository {
|
|
17
|
-
constructor({ repositoryPath = REPOSITORY_FOLDER, arboristRegistry } = {}) {
|
|
18
|
-
this.log = logger();
|
|
19
|
-
this.tracker = logger.tracker;
|
|
20
|
-
this.repositoryPath = repositoryPath;
|
|
21
|
-
this.arboristRegistry = arboristRegistry;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @private
|
|
25
|
-
* @property
|
|
26
|
-
* Repository absolute path (npm --prefix).
|
|
27
|
-
*/
|
|
28
|
-
get repositoryPath() {
|
|
29
|
-
return this._repositoryPath;
|
|
30
|
-
}
|
|
31
|
-
set repositoryPath(repositoryPath) {
|
|
32
|
-
this._repositoryPath = path.resolve(repositoryPath);
|
|
33
|
-
this._nodeModulesPath = path.join(this._repositoryPath, 'node_modules');
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @private
|
|
37
|
-
* @property nodeModulesPath
|
|
38
|
-
* Path to the repository's node_modules.
|
|
39
|
-
*/
|
|
40
|
-
get nodeModulesPath() {
|
|
41
|
-
return this._nodeModulesPath;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* @private
|
|
45
|
-
* @method
|
|
46
|
-
* Create the repositoryPath if it doesn't exists.
|
|
47
|
-
*/
|
|
48
|
-
createRepositoryFolder() {
|
|
49
|
-
if (!fs.existsSync(this.repositoryPath)) {
|
|
50
|
-
fs.mkdirSync(this.repositoryPath);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* @private
|
|
55
|
-
* @method
|
|
56
|
-
* Resolve the package name module path inside the [repository path]{@link repository.repositoryPath}
|
|
57
|
-
* @param {String} packageName - Package name. If packageName is a absolute path then modulePath is joined to it.
|
|
58
|
-
* @param {String} [modulePath] - Path to a module inside the package path.
|
|
59
|
-
* @returns {String} Absolute module path.
|
|
60
|
-
*/
|
|
61
|
-
resolvePackagePath(packageName = '', modulePath = '') {
|
|
62
|
-
if (path.isAbsolute(packageName)) {
|
|
63
|
-
return path.join(packageName, modulePath);
|
|
64
|
-
}
|
|
65
|
-
return path.join(this.nodeModulesPath, packageName, modulePath);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* @private
|
|
69
|
-
* @method
|
|
70
|
-
* Remove the package from node's cache, necessary for a reinstallation.
|
|
71
|
-
* Removes only package.json by default, it's used to version verification.
|
|
72
|
-
* Removes only cache of the repository's packages.
|
|
73
|
-
* @param {String} packageName - Package name.
|
|
74
|
-
* @param {Boolean} [force=false] - If true removes every cache the package.
|
|
75
|
-
* @throw Error if force === false and any file other the package.json is loaded.
|
|
76
|
-
*/
|
|
77
|
-
cleanupPackageCache(packageName, force = false) {
|
|
78
|
-
if (!packageName) {
|
|
79
|
-
throw new Error('You must provide a packageName');
|
|
80
|
-
}
|
|
81
|
-
debug('Cleaning cache of %s', packageName);
|
|
82
|
-
const packagePath = this.resolvePackagePath(packageName);
|
|
83
|
-
const toCleanup = Object.keys(require.cache).filter(cache => cache.startsWith(packagePath));
|
|
84
|
-
if (!force && toCleanup.some(cache => !cache.endsWith('package.json'))) {
|
|
85
|
-
throw new Error(`Package ${packageName} already loaded`);
|
|
86
|
-
}
|
|
87
|
-
for (const cache of toCleanup) {
|
|
88
|
-
delete require.cache[cache];
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* @private
|
|
93
|
-
* @param {Object} options - options to be passed to arborist reify eg: {add: { dependencies: [ pkgSpec ] }, rm: [ pkgName ]}
|
|
94
|
-
*/
|
|
95
|
-
async reifyRepository(options) {
|
|
96
|
-
this.arb =
|
|
97
|
-
this.arb ||
|
|
98
|
-
new Arborist({
|
|
99
|
-
path: this.repositoryPath,
|
|
100
|
-
globalStyle: true,
|
|
101
|
-
log: this.tracker,
|
|
102
|
-
registry: this.arboristRegistry,
|
|
103
|
-
});
|
|
104
|
-
return this.arb.reify(options);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* @private
|
|
108
|
-
* @method
|
|
109
|
-
* Verify if the package is installed and matches the version range.
|
|
110
|
-
* @param {String} packageName - Package name.
|
|
111
|
-
* @param {String} versionRange - Version range of the package.
|
|
112
|
-
* @returns {Boolean} True if the package is installed and matches the version.
|
|
113
|
-
* @throws Error.
|
|
114
|
-
*/
|
|
115
|
-
verifyInstalledVersion(packageName, versionRange) {
|
|
116
|
-
const packagePath = this.resolvePackagePath(packageName);
|
|
117
|
-
const installedVersion = this.getPackageVersion(packagePath);
|
|
118
|
-
if (!versionRange || !installedVersion) {
|
|
119
|
-
return installedVersion;
|
|
120
|
-
}
|
|
121
|
-
if (semver.validRange(versionRange) && !semver.satisfies(installedVersion, versionRange)) {
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
return installedVersion;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* @private
|
|
128
|
-
* @method
|
|
129
|
-
* Install a package into the repository.
|
|
130
|
-
* @param {String} packageName - Package name.
|
|
131
|
-
* @param {String} versionRange - range Version of the package.
|
|
132
|
-
* @returns {String} Package path.
|
|
133
|
-
* @throws Error.
|
|
134
|
-
*/
|
|
135
|
-
async installPackage(packageName, versionRange) {
|
|
136
|
-
const pkgs = {};
|
|
137
|
-
if (packageName === 'yeoman-environment' &&
|
|
138
|
-
versionRange &&
|
|
139
|
-
(!semver.validRange(versionRange) || semver.lt(semver.minVersion(versionRange), '2.9.0'))) {
|
|
140
|
-
// Workaround buggy dependencies.
|
|
141
|
-
pkgs['rxjs-compat'] = '^6.0.0';
|
|
142
|
-
}
|
|
143
|
-
pkgs[packageName] = versionRange;
|
|
144
|
-
if (!(await this.installPackages(pkgs))) {
|
|
145
|
-
throw new Error(`Error installing package ${packageName}, version ${versionRange}.`);
|
|
146
|
-
}
|
|
147
|
-
debug(`Package ${packageName} sucessfully installed`);
|
|
148
|
-
return this.resolvePackagePath(packageName);
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* @private
|
|
152
|
-
* @method
|
|
153
|
-
* Install packages.
|
|
154
|
-
* @param {Object} packages - Packages to be installed.
|
|
155
|
-
* @returns {Boolean}
|
|
156
|
-
* @example
|
|
157
|
-
* repository.installPackages({ 'yeoman-environment': '2.3.0' });
|
|
158
|
-
*/
|
|
159
|
-
async installPackages(packages) {
|
|
160
|
-
this.createRepositoryFolder();
|
|
161
|
-
debug('Installing packages %o', packages);
|
|
162
|
-
const packagesArgs = Object.entries(packages)
|
|
163
|
-
.filter(([packageName, _]) => {
|
|
164
|
-
this.cleanupPackageCache(packageName);
|
|
165
|
-
return true;
|
|
166
|
-
})
|
|
167
|
-
.map(([packageName, version]) => (version ? (semver.validRange(version) ? `${packageName}@${version}` : version) : packageName));
|
|
168
|
-
try {
|
|
169
|
-
await this.reifyRepository({ add: [...packagesArgs] });
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
for (const packageName of Object.keys(packages)) {
|
|
173
|
-
this.log.error(`${packageName} cannot be installed. ${error}`);
|
|
174
|
-
}
|
|
175
|
-
return false;
|
|
176
|
-
}
|
|
177
|
-
for (const packageName of Object.keys(packages)) {
|
|
178
|
-
this.log.ok(`${packageName} installed.`);
|
|
179
|
-
}
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* @private
|
|
184
|
-
* @method
|
|
185
|
-
* Get the installed package version.
|
|
186
|
-
* @param {String} packageName - Package name.
|
|
187
|
-
* @returns {String|undefined} Package version or undefined.
|
|
188
|
-
*/
|
|
189
|
-
getPackageVersion(packageName) {
|
|
190
|
-
try {
|
|
191
|
-
const packageJson = this.resolvePackagePath(packageName, 'package.json');
|
|
192
|
-
return require(packageJson).version;
|
|
193
|
-
}
|
|
194
|
-
catch {
|
|
195
|
-
return undefined;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* @private
|
|
200
|
-
* @method
|
|
201
|
-
* Require a module from the repository.
|
|
202
|
-
* @param {String} packageName - Package name.
|
|
203
|
-
* @param {String} versionRange - Version range of the package.
|
|
204
|
-
* @param {String} modulePath - Package name.
|
|
205
|
-
* @returns {Object} Module.
|
|
206
|
-
* @throws Error.
|
|
207
|
-
*/
|
|
208
|
-
requireModule(packageName, versionRange, modulePath = '') {
|
|
209
|
-
const installedVersion = this.verifyInstalledVersion(packageName, versionRange);
|
|
210
|
-
if (installedVersion) {
|
|
211
|
-
debug(`Using ${packageName} installed version ${installedVersion}`);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
// Installs the package if no version is installed or the version is provided and don't match the installed version.
|
|
215
|
-
throw new Error(`Found ${packageName} version ${installedVersion} but requires version ${versionRange}`);
|
|
216
|
-
}
|
|
217
|
-
const absolutePath = this.resolvePackagePath(packageName, modulePath);
|
|
218
|
-
debug('Loading module at %s', absolutePath);
|
|
219
|
-
return requireOrImport(absolutePath);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
export default YeomanRepository;
|
|
223
|
-
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/util/repository.js"],"names":[],"mappings":"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"}
|
package/dist/util/transform.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { findUpSync } from 'find-up';
|
|
4
|
-
import minimatch from 'minimatch';
|
|
5
|
-
import { transform, passthrough, filter } from 'p-transform';
|
|
6
|
-
// eslint-disable-next-line n/file-extension-in-import
|
|
7
|
-
import { clearFileState } from 'mem-fs-editor/state';
|
|
8
|
-
const { Minimatch } = minimatch;
|
|
9
|
-
export function parseYoAttributesFile(yoAttributeFileName) {
|
|
10
|
-
let overridesContent;
|
|
11
|
-
try {
|
|
12
|
-
overridesContent = fs.readFileSync(yoAttributeFileName, 'utf8');
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
const wrappedError = new Error('Error loading yo attributes file {yoAttributeFileName}', { cause: error });
|
|
16
|
-
wrappedError.yoAttributeFileName = yoAttributeFileName;
|
|
17
|
-
throw wrappedError;
|
|
18
|
-
}
|
|
19
|
-
const absoluteDir = path.dirname(yoAttributeFileName);
|
|
20
|
-
return Object.fromEntries(overridesContent
|
|
21
|
-
.split(/\r?\n/)
|
|
22
|
-
.map(override => override.trim())
|
|
23
|
-
.map(override => override.split('#')[0].trim())
|
|
24
|
-
.filter(Boolean)
|
|
25
|
-
.map(override => override.split(/[\s+=]/))
|
|
26
|
-
.map(([pattern, status = 'skip']) => {
|
|
27
|
-
pattern = pattern.startsWith('!') ? `!${path.join(absoluteDir, pattern.slice(1))}` : path.join(absoluteDir, pattern);
|
|
28
|
-
return [pattern, status];
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Transform api should be avoided by generators without a executable.
|
|
33
|
-
* May break between major yo versions.
|
|
34
|
-
*/
|
|
35
|
-
export function createConflicterCheckTransform(conflicter, conflicterStatus) {
|
|
36
|
-
return passthrough(file => conflicter.checkForCollision(file, conflicterStatus), 'environment:conflicter-check');
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* @private
|
|
40
|
-
*/
|
|
41
|
-
export function getConflicterStatusForFile(conflicter, filePath, yoAttributeFileName = '.yo-resolve') {
|
|
42
|
-
const fileDir = path.dirname(filePath);
|
|
43
|
-
conflicter.yoResolveByFile = conflicter.yoResolveByFile || {};
|
|
44
|
-
const yoResolveFiles = [];
|
|
45
|
-
let foundYoAttributesFile = findUpSync([yoAttributeFileName], {
|
|
46
|
-
cwd: fileDir,
|
|
47
|
-
});
|
|
48
|
-
while (foundYoAttributesFile) {
|
|
49
|
-
yoResolveFiles.push(foundYoAttributesFile);
|
|
50
|
-
foundYoAttributesFile = findUpSync([yoAttributeFileName], {
|
|
51
|
-
cwd: path.join(path.dirname(foundYoAttributesFile), '..'),
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
let fileStatus;
|
|
55
|
-
if (yoResolveFiles) {
|
|
56
|
-
for (const yoResolveFile of yoResolveFiles) {
|
|
57
|
-
if (conflicter.yoResolveByFile[yoResolveFile] === undefined) {
|
|
58
|
-
conflicter.yoResolveByFile[yoResolveFile] = parseYoAttributesFile(yoResolveFile);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
yoResolveFiles
|
|
62
|
-
.map(yoResolveFile => conflicter.yoResolveByFile[yoResolveFile])
|
|
63
|
-
.map(attributes => attributes)
|
|
64
|
-
.find(yoResolve => Object.entries(yoResolve).some(([pattern, status]) => {
|
|
65
|
-
if (minimatch(filePath, pattern)) {
|
|
66
|
-
fileStatus = status;
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
return false;
|
|
70
|
-
}));
|
|
71
|
-
}
|
|
72
|
-
return fileStatus;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Transform api should be avoided by generators without a executable.
|
|
76
|
-
* May break between major yo versions.
|
|
77
|
-
*
|
|
78
|
-
* Create a yo-resolve transform stream.
|
|
79
|
-
* Suports pre-defined conflicter actions action based on file glob.
|
|
80
|
-
* @param {Conflicter} conflicter - Conflicter instance
|
|
81
|
-
* @param {string} yoResolveFileName - .yo-resolve filename
|
|
82
|
-
* @return {Transform} A Transform https://nodejs.org/api/stream.html#stream_class_stream_transform
|
|
83
|
-
*/
|
|
84
|
-
export function createYoResolveTransform(conflicter, yoResolveFileName) {
|
|
85
|
-
return passthrough(file => {
|
|
86
|
-
file.conflicter = file.conflicter || getConflicterStatusForFile(conflicter, file.path, yoResolveFileName);
|
|
87
|
-
}, 'environment:yo-resolve');
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Transform api should be avoided by generators without a executable.
|
|
91
|
-
* May break between major yo versions.
|
|
92
|
-
*
|
|
93
|
-
* Create a force yeoman configs transform stream.
|
|
94
|
-
* @return {Transform} A Transform https://nodejs.org/api/stream.html#stream_class_stream_transform
|
|
95
|
-
*/
|
|
96
|
-
export function createYoRcTransform() {
|
|
97
|
-
// Config files should not be processed by the conflicter. Force override.
|
|
98
|
-
return patternSpy(file => {
|
|
99
|
-
file.conflicter = 'force';
|
|
100
|
-
}, '**/{.yo-rc.json,.yo-resolve,.yo-rc-global.json}', 'environment:yo-rc');
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Transform api should be avoided by generators without a executable.
|
|
104
|
-
* May break between major yo versions.
|
|
105
|
-
*
|
|
106
|
-
* Create a transform to apply conflicter status.
|
|
107
|
-
* @param {Log} logger - Log reference. See log.js
|
|
108
|
-
* @return {Transform} A Transform https://nodejs.org/api/stream.html#stream_class_stream_transform
|
|
109
|
-
*/
|
|
110
|
-
export function createConflicterStatusTransform() {
|
|
111
|
-
return transform(file => {
|
|
112
|
-
const action = file.conflicter;
|
|
113
|
-
delete file.conflicter;
|
|
114
|
-
delete file.binary;
|
|
115
|
-
delete file.conflicterChanges;
|
|
116
|
-
delete file.conflicterLog;
|
|
117
|
-
if (!action && file.state) {
|
|
118
|
-
return file;
|
|
119
|
-
}
|
|
120
|
-
if (action === 'skip') {
|
|
121
|
-
clearFileState(file);
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
return file;
|
|
125
|
-
}, 'environment:conflicter-status');
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Conditional filter on pattern.
|
|
129
|
-
*
|
|
130
|
-
* @param {String} pattern - Minimatch pattern.
|
|
131
|
-
* @param {Object} options - Minimatch options.
|
|
132
|
-
*/
|
|
133
|
-
export function patternFilter(pattern, options) {
|
|
134
|
-
const minimatch = new Minimatch(pattern, options);
|
|
135
|
-
return filter(file => minimatch.match(file.path));
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Conditional spy on pattern.
|
|
139
|
-
*
|
|
140
|
-
* @param {Function} spy.
|
|
141
|
-
* @param {String} pattern - Minimatch pattern.
|
|
142
|
-
* @param {Object} options - Minimatch options.
|
|
143
|
-
*/
|
|
144
|
-
export function patternSpy(spy, pattern, options) {
|
|
145
|
-
const minimatch = new Minimatch(pattern, options);
|
|
146
|
-
// eslint-disable-next-line unicorn/prefer-regexp-test
|
|
147
|
-
return passthrough(file => (minimatch.match(file.path) ? spy(file) : undefined));
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=transform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/util/transform.js"],"names":[],"mappings":"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"}
|
package/dist/util/util.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util/util.js"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE;IAChC,2EAA2E;IAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtC,GAAG,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IACzC,IAAI;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO,MAAM,CAAC,MAAM,CAAC;SACtB;KACF;IAAC,MAAM,GAAE;IAEV,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC"}
|