Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
packagePath = path.join(packagePath, 'package.json');
let data: any;
try {
data = utils.readJSONFile(packagePath);
} catch (e) {
console.log('Skipping package ' + packagePath);
return cmds;
}
if (data.private) {
return cmds;
}
const pkg = data.name;
let npmData = await packageJson(pkg, { allVersions: true });
let versions = Object.keys(npmData.versions).sort(semver.rcompare);
let tags = npmData['dist-tags'];
// Go through the versions. The latest prerelease is 'next', the latest
// non-prerelease should be 'stable'.
let next = semver.prerelease(versions[0]) ? versions[0] : undefined;
let latest = versions.find(i => !semver.prerelease(i));
if (latest && latest !== tags.latest) {
cmds.push(`npm dist-tag add ${pkg}@${latest} latest`);
}
// If next is defined, but not supposed to be, remove it. If next is supposed
// to be defined, but is not the same as the current next, change it.
if (!next && tags.next) {
cmds.push(`npm dist-tag rm ${pkg} next`);
packagePath = path.join(packagePath, 'package.json');
let data: any;
try {
data = utils.readJSONFile(packagePath);
} catch (e) {
console.log('Skipping package ' + packagePath);
return cmds;
}
if (data.private) {
return cmds;
}
const pkg = data.name;
let npmData = await packageJson(pkg, { allVersions: true });
let versions = Object.keys(npmData.versions).sort(semver.rcompare);
let tags = npmData['dist-tags'];
// Go through the versions. The latest prerelease is 'next', the latest
// non-prerelease should be 'stable'.
let next = semver.prerelease(versions[0]) ? versions[0] : undefined;
let latest = versions.find(i => !semver.prerelease(i));
if (latest && latest !== tags.latest) {
cmds.push(`npm dist-tag add ${pkg}@${latest} latest`);
}
// If next is defined, but not supposed to be, remove it. If next is supposed
// to be defined, but is not the same as the current next, change it.
if (!next && tags.next) {
cmds.push(`npm dist-tag rm ${pkg} next`);
async function getVersion(pkg: string, specifier: string) {
let key = JSON.stringify([pkg, specifier]);
if (versionCache.has(key)) {
return versionCache.get(key);
}
if (semver.validRange(specifier) === null) {
// We have a tag, with possibly a range specifier, such as ^latest
let match = specifier.match(tags);
if (match === null) {
throw Error(`Invalid version specifier: ${specifier}`);
}
// Look up the actual version corresponding to the tag
let { version } = await packageJson(pkg, { version: match[2] });
specifier = match[1] + version;
}
versionCache.set(key, specifier);
return specifier;
}
async function getVersion(pkg: string, specifier: string) {
let key = JSON.stringify([pkg, specifier]);
if (versionCache.has(key)) {
return versionCache.get(key);
}
if (semver.validRange(specifier) === null) {
// We have a tag, with possibly a range specifier, such as ^latest
let match = specifier.match(tags);
if (match === null) {
throw Error(`Invalid version specifier: ${specifier}`);
}
// Look up the actual version corresponding to the tag
let { version } = await packageJson(pkg, { version: match[2] });
specifier = match[1] + version;
}
versionCache.set(key, specifier);
return specifier;
}
export default async (source: IMaterialNpmSource, iceVersion?: string): Promise => {
let version: string = source.version;
// TODO special material logic
if (iceVersion === '1.x') {
version = source['version-0.x'] || source.version;
}
const registryUrl = typeof source.npm === 'string' && source.npm.startsWith('@icedesign')
? 'https://registry.npm.taobao.org'
: ((storage.get('npmClient') === 'custom' && storage.get('registry')) || source.registry);
const packageData: any = await packageJSON(source.npm, {
version,
registryUrl,
});
return packageData.dist.tarball;
};
async function getVersion(pkg: string, specifier: string) {
let key = JSON.stringify([pkg, specifier]);
if (versionCache.has(key)) {
return versionCache.get(key);
}
if (semver.validRange(specifier) === null) {
// We have a tag, with possibly a range specifier, such as ^latest
let match = specifier.match(tags);
if (match === null) {
throw Error(`Invalid version specifier: ${specifier}`);
}
// Look up the actual version corresponding to the tag
let { version } = await packageJson(pkg, { version: match[2] });
specifier = match[1] + version;
}
versionCache.set(key, specifier);
return specifier;
}
it('queries the registry, showing newer', () => {
npmJson.mockImplementation(() => {
return Promise.resolve({ version: '0.0.0' });
});
return clientId.getNpmStatus().then((version) => {
expect(version).toEqual('newer, 0.0.0 published');
});
});
});
async () => {
const pkgJson = await pTimeout(npmPackageJson(name, { version: currentVersion }), 2000);
return {
latestVersion: await pTimeout(latestVersionAsync(name), 2000),
deprecated: pkgJson.deprecated,
};
},
`${name}-updates.json`,
const getNpmRemotePackageJson: GetRemotePackageJson = ({name, ...options}) => {
return getPackageJson(name, options)
.then(value => value && typeof value.version === 'string' ? value as PackageJson : undefined)
.catch(() => undefined);
};
function getNpmRemoteVersion(name: string, version: string): Promise {
return getPackageJson(name, {version})
.then((value: AbbreviatedMetadata) => {
return value && typeof value.version === 'string' ? value.version : undefined;
})
.catch(() => {
return undefined;
});
}