Socket
Socket
Sign inDemoInstall

titanium

Package Overview
Dependencies
Maintainers
3
Versions
177
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

titanium - npm Package Compare versions

Comparing version 7.0.0 to 7.1.0

14

package.json
{
"name": "titanium",
"version": "7.0.0",
"version": "7.1.0",
"author": "TiDev, Inc. <npm@tidev.io>",

@@ -22,3 +22,3 @@ "description": "Command line interface for building Titanium SDK apps",

"chalk": "5.3.0",
"commander": "12.0.0",
"commander": "12.1.0",
"execa": "8.0.1",

@@ -28,4 +28,4 @@ "fs-extra": "11.2.0",

"prompts": "2.4.2",
"semver": "7.6.1",
"undici": "6.16.0",
"semver": "7.6.2",
"undici": "6.18.0",
"which": "4.0.0",

@@ -40,5 +40,5 @@ "wrap-ansi": "9.0.0",

"c8": "9.1.0",
"eslint": "9.2.0",
"glob": "10.3.12",
"globals": "15.1.0",
"eslint": "9.3.0",
"glob": "10.3.15",
"globals": "15.3.0",
"memory-streams": "0.1.3",

@@ -45,0 +45,0 @@ "proxy": "2.1.1"

@@ -19,2 +19,3 @@ import chalk from 'chalk';

import { TiHelp } from './util/tihelp.js';
import semver from 'semver';

@@ -171,3 +172,3 @@ const { blue, bold, cyan, gray, green, magenta, red, yellow } = chalk;

const pkgJsonFile = join(dirname(fileURLToPath(import.meta.url)), '../package.json');
const { version } = fs.readJsonSync(pkgJsonFile);
const { engines, version } = fs.readJsonSync(pkgJsonFile);

@@ -177,2 +178,3 @@ this.name = 'Titanium Command-Line Interface';

this.version = version;
this.nodeVersion = engines?.node;
this.logger.setBanner({

@@ -420,2 +422,7 @@ name: this.name,

// remove any trailing undefined args
while (args.length && args[args.length - 1] === undefined) {
args.pop();
}
this.argv._ = args;

@@ -517,2 +524,6 @@ this.applyArgv(cmd);

async go() {
if (this.nodeVersion && !semver.satisfies(process.version, this.nodeVersion)) {
throw new TiError(`Node.js version ${this.nodeVersion} required, current version is ${process.version}`);
}
Command.prototype.createHelp = () => {

@@ -1262,3 +1273,3 @@ return Object.assign(new TiHelp(this), this.command.configureHelp());

if (typeof mod.init === 'function') {
mod.init(this.logger, this.config, this, appc);
await mod.init(this.logger, this.config, this, appc);
}

@@ -1265,0 +1276,0 @@ this.hooks.loadedFilenames.push(file);

@@ -112,4 +112,4 @@ /* eslint-disable max-len */

const { argv } = cli;
const key = argv._.length > 0 && argv._.shift();
const value = argv._.length > 0 && argv._[0];
const key = argv._.length > 0 ? argv._.shift() : undefined;
const value = argv._.length > 0 ? argv._[0] : undefined;
const results = {};

@@ -116,0 +116,0 @@ const asJson = argv.json || argv.output === 'json';

@@ -342,2 +342,3 @@ import chalk from 'chalk';

const subject = cli.argv._.shift() || 'latest';
const { trace } = cli.debugLogger;

@@ -364,3 +365,4 @@ logger.skipBanner(false);

let { name, renameTo, tempDir } = await extractSDK({
let { forceModules, name, renameTo, tempDir } = await extractSDK({
debugLogger: cli.debugLogger,
file,

@@ -407,42 +409,45 @@ force: cli.argv.force,

const modules = [];
const modules = {};
src = join(tempDir, 'modules');
try {
if (fs.statSync(src).isDirectory()) {
const modulesDest = join(titaniumDir, 'modules');
if (fs.statSync(src).isDirectory()) {
const modulesDest = join(titaniumDir, 'modules');
for (const platform of fs.readdirSync(src)) {
const srcPlatformDir = join(src, platform);
if (!fs.statSync(srcPlatformDir).isDirectory()) {
for (const platform of fs.readdirSync(src)) {
const srcPlatformDir = join(src, platform);
if (!fs.statSync(srcPlatformDir).isDirectory()) {
continue;
}
for (const moduleName of fs.readdirSync(srcPlatformDir)) {
const srcModuleDir = join(srcPlatformDir, moduleName);
if (!fs.statSync(srcModuleDir).isDirectory()) {
continue;
}
for (const moduleName of fs.readdirSync(srcPlatformDir)) {
const srcModuleDir = join(srcPlatformDir, moduleName);
if (!fs.statSync(srcModuleDir).isDirectory()) {
for (const ver of fs.readdirSync(srcModuleDir)) {
const srcVersionDir = join(srcModuleDir, ver);
if (!fs.statSync(srcVersionDir).isDirectory()) {
continue;
}
for (const ver of fs.readdirSync(srcModuleDir)) {
const srcVersionDir = join(srcModuleDir, ver);
if (!fs.statSync(srcVersionDir).isDirectory()) {
continue;
}
const destDir = join(modulesDest, platform, moduleName, ver);
if (!forceModules && fs.existsSync(destDir)) {
trace(`Module ${cyan(`${moduleName}@${ver}`)} already installed`);
continue;
}
const destDir = join(modulesDest, platform, moduleName, ver);
if (!cli.argv.force || fs.statSync(destDir).isDirectory()) {
continue;
}
modules.push({ src: srcVersionDir, dest: destDir });
}
modules[`${moduleName}@${ver}`] = { src: srcVersionDir, dest: destDir };
}
}
}
} catch {}
}
if (modules.length) {
for (const { src, dest } of modules) {
if (Object.keys(modules).length) {
trace(`Installing ${cyan(Object.keys(modules).length)} modules:`);
for (const [name, { src, dest }] of Object.entries(modules)) {
trace(` ${cyan(name)}`);
await fs.move(src, dest, { overwrite: true });
}
} else {
trace('SDK has new modules to install');
}

@@ -622,3 +627,3 @@

async function extractSDK({ file, force, logger, noPrompt, osName, showProgress, subject, titaniumDir }) {
async function extractSDK({ debugLogger, file, force, logger, noPrompt, osName, showProgress, subject, titaniumDir }) {
const sdkDestRegExp = new RegExp(`^mobilesdk[/\\\\]${osName}[/\\\\]([^/\\\\]+)`);

@@ -630,2 +635,3 @@ const tempDir = join(os.tmpdir(), `titanium-cli-${Math.floor(Math.random() * 1e6)}`);

let renameTo;
let forceModules = force;

@@ -637,3 +643,3 @@ const onEntry = async (filename, _idx, total) => {

name = m[1];
renameTo = await checkSDKFile({
const result = await checkSDKFile({
force,

@@ -649,2 +655,5 @@ logger,

forceModules = result?.forceModules ?? force;
renameTo = result?.renameTo;
logger.log('Extracting SDK...');

@@ -667,3 +676,3 @@ if (showProgress && !bar) {

logger.trace(`Extracting ${file} -> ${tempDir}`);
debugLogger.trace(`Extracting ${file} -> ${tempDir}`);
await extractZip({

@@ -676,10 +685,10 @@ dest: tempDir,

if (!artifact) {
return { name, renameTo, tempDir };
return { forceModules, name, renameTo, tempDir };
}
logger.trace(`Detected artifact: ${artifact}`);
debugLogger.trace(`Detected artifact: ${artifact}`);
const tempDir2 = join(os.tmpdir(), `titanium-cli-${Math.floor(Math.random() * 1e6)}`);
file = join(tempDir, artifact);
logger.trace(`Extracting ${file} -> ${tempDir2}`);
debugLogger.trace(`Extracting ${file} -> ${tempDir2}`);
await extractZip({

@@ -692,3 +701,3 @@ dest: tempDir2,

await fs.remove(tempDir);
return { name, renameTo, tempDir: tempDir2 };
return { forceModules, name, renameTo, tempDir: tempDir2 };
}

@@ -733,3 +742,3 @@

const { action } = await prompt({
const action = await prompt({
type: 'select',

@@ -753,5 +762,9 @@ name: 'action',

const result = { action };
if (action === 'rename') {
return renameTo;
result.renameTo = renameTo;
} else if (action === 'overwrite') {
result.forceModules = true;
}
return result;
}

@@ -804,3 +817,3 @@

if (!versions.length) {
({ versions } = await prompt({
versions = await prompt({
type: 'multiselect',

@@ -815,3 +828,3 @@ name: 'versions',

}))
}));
});
if (!versions) {

@@ -841,3 +854,3 @@ return;

const { confirm } = await prompt({
const confirm = await prompt({
type: 'toggle',

@@ -844,0 +857,0 @@ name: 'confirm',

@@ -524,3 +524,3 @@ import { detect as proxyDetect } from './proxy.js';

const { name } = await prompt({
const name = await prompt({
type: 'text',

@@ -527,0 +527,0 @@ message: 'What do you want as your "author" name?',

@@ -274,8 +274,8 @@ import { readdir } from 'node:fs/promises';

const results = await Promise.allSettled(fetches);
const results = await Promise.all(fetches);
return results
.flatMap(r => {
return r.status === 'fulfilled' && r.value ? r.value.releases.map(rel => {
rel.type = r.value.type;
.flatMap(value => {
return value ? value.releases.map(rel => {
rel.type = value.type;
return rel;

@@ -282,0 +282,0 @@ }) : [];

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc