Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

spinjs

Package Overview
Dependencies
Maintainers
1
Versions
225
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

spinjs - npm Package Compare versions

Comparing version 0.4.178 to 0.4.179

18

lib/ConfigReader.js

@@ -27,18 +27,2 @@ "use strict";

var Stack_1 = require("./Stack");
var upDirs_1 = require("./upDirs");
var getProjectRoot = function (builder) {
var pkgPathList = upDirs_1.default(builder.require.cwd, 'package.json');
var projectRoot;
for (var _i = 0, pkgPathList_1 = pkgPathList; _i < pkgPathList_1.length; _i++) {
var pkg = pkgPathList_1[_i];
if (fs.existsSync(pkg)) {
try {
JSON.parse(fs.readFileSync(pkg, 'utf8'));
projectRoot = path.dirname(pkg);
}
catch (e) { }
}
}
return projectRoot;
};
var ConfigReader = (function () {

@@ -105,2 +89,3 @@ function ConfigReader(spin, plugins) {

builder.id = builderId;
builder.configPath = filePath;
builders[builderId] = builder;

@@ -113,3 +98,2 @@ builder.buildDir = builder.backendBuildDir || builder.frontendBuildDir ? undefined : builder.buildDir || 'build';

builder.minify = typeof builder.minify !== 'undefined' ? builder.minify : true;
builder.projectRoot = getProjectRoot(builder);
builder.cache =

@@ -116,0 +100,0 @@ typeof builder.cache === 'string' && builder.cache !== 'auto'

33

lib/createConfig.js

@@ -14,3 +14,6 @@ "use strict";

var minilog = require("minilog");
var path = require("path");
var upDirs_1 = require("./upDirs");
var BuilderDiscoverer_1 = require("./BuilderDiscoverer");
var ConfigReader_1 = require("./ConfigReader");
var AngularPlugin_1 = require("./plugins/AngularPlugin");

@@ -36,2 +39,17 @@ var ApolloPlugin_1 = require("./plugins/ApolloPlugin");

var spinLogger = minilog('spin');
var getProjectRoot = function (builder) {
var pkgPathList = upDirs_1.default(builder.require.cwd, 'package.json');
var projectRoot;
for (var _i = 0, pkgPathList_1 = pkgPathList; _i < pkgPathList_1.length; _i++) {
var pkg = pkgPathList_1[_i];
if (fs.existsSync(pkg)) {
try {
JSON.parse(fs.readFileSync(pkg, 'utf8'));
projectRoot = path.dirname(pkg);
}
catch (e) { }
}
}
return projectRoot;
};
var createConfig = function (cwd, cmd, argv, builderName) {

@@ -58,3 +76,2 @@ var builders = {};

var spin = new Spin_1.default(cwd, cmd);
var builderDiscoverer = new BuilderDiscoverer_1.default(spin, plugins, argv);
var role = cmd;

@@ -67,3 +84,10 @@ if (cmd === 'exp') {

}
var discoveredBuilders = builderDiscoverer.discover();
var discoveredBuilders;
if (cluster.isMaster) {
var builderDiscoverer = new BuilderDiscoverer_1.default(spin, plugins, argv);
discoveredBuilders = builderDiscoverer.discover();
}
else {
discoveredBuilders = new ConfigReader_1.default(spin, plugins).readConfig(process.env.BUILDER_CONFIG_PATH);
}
if (!discoveredBuilders) {

@@ -78,3 +102,3 @@ throw new Error('Cannot find spinjs config');

var stack = builder.stack;
if (builder.roles.indexOf(role) < 0) {
if (builder.roles.indexOf(role) < 0 || (process.env.BUILDER_ID && builderId !== process.env.BUILDER_ID)) {
return "continue";

@@ -87,2 +111,5 @@ }

builder.name === builderName;
if (builder.enabled && !cluster.isMaster) {
builder.projectRoot = getProjectRoot(builder);
}
if (spin.dev && builder.webpackDll && !stack.hasAny('server') && !builderName) {

@@ -89,0 +116,0 @@ var dllBuilder = __assign({}, builder);

@@ -1134,3 +1134,2 @@ "use strict";

var workerBuilders = {};
var potentialWorkerCount = 0;
for (var _i = 0, _a = Object.keys(builders); _i < _a.length; _i++) {

@@ -1142,5 +1141,2 @@ var id = _a[_i];

}
if (builder.cluster !== false) {
potentialWorkerCount++;
}
}

@@ -1153,4 +1149,8 @@ for (var _b = 0, _c = Object.keys(builders); _b < _c.length; _b++) {

}
if (potentialWorkerCount > 1 && !builder.cluster) {
var worker = cluster.fork({ BUILDER_ID: id, EXPO_PORTS: JSON.stringify(expoPorts) });
if (!builder.cluster) {
var worker = cluster.fork({
BUILDER_ID: id,
BUILDER_CONFIG_PATH: builder.configPath,
EXPO_PORTS: JSON.stringify(expoPorts)
});
workerBuilders[worker.process.pid] = builder;

@@ -1157,0 +1157,0 @@ }

@@ -14,2 +14,3 @@ "use strict";

var JSRuleFinder_1 = require("./shared/JSRuleFinder");
var JSRuleFinder_2 = require("./shared/JSRuleFinder");
var UPFinder_1 = require("./shared/UPFinder");

@@ -49,3 +50,3 @@ var babelRegisterDone = false;

var babelrc = new UPFinder_1.default(builder).find(['.babelrc.native', 'babel.config.js']);
var jsRuleFinder_1 = new JSRuleFinder_1.default(builder);
var jsRuleFinder_1 = new JSRuleFinder_2.default(builder);
var jsRule = jsRuleFinder_1.findAndCreateJSRule();

@@ -68,3 +69,3 @@ var cacheDirectory = builder.cache === false || (builder.cache === 'auto' && !spin.dev)

.slice(0, -1)),
exclude: /node_modules[\\\/](?!react-native.*|@module|@expo|expo|lottie-react-native|haul|pretty-format|react-navigation|antd-mobile-rn)$/,
exclude: JSRuleFinder_1.excludeProjectModules(builder.projectRoot, /(react-native.*|@expo|expo|lottie-react-native|haul|pretty-format|react-navigation|antd-mobile-rn)/),
use: {

@@ -71,0 +72,0 @@ loader: builder.require.probe('heroku-babel-loader') ? 'heroku-babel-loader' : 'babel-loader',

import { Builder } from '../../Builder';
export declare const excludeProjectModules: (projectRoot: string, includeNodeModulesRegexp?: RegExp) => (modulePath: any) => boolean;
export default class JSRuleFinder {

@@ -3,0 +4,0 @@ builder: Builder;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var projectPackages = {};
var projectModules = {};
exports.excludeProjectModules = function (projectRoot, includeNodeModulesRegexp) { return function (modulePath) {
var idx = modulePath.indexOf(path.sep + 'node_modules' + path.sep);
if (idx >= 0) {
if (includeNodeModulesRegexp && includeNodeModulesRegexp.test(modulePath)) {
return false;
}
if (!projectModules[modulePath]) {
var pkgPathStart = modulePath[idx + 14] !== '@' ? idx + 14 : modulePath.indexOf(path.sep, idx + 14) + 1;
var pkgPathEnd = modulePath.indexOf(path.sep, pkgPathStart);
if (pkgPathEnd < 0) {
pkgPathEnd = modulePath.length;
}
var pkgPath = modulePath.substr(0, pkgPathEnd);
if (!projectPackages[pkgPath]) {
try {
projectPackages[pkgPath] =
fs.lstatSync(pkgPath).isSymbolicLink() && fs.realpathSync(pkgPath).indexOf(projectRoot) === 0;
}
catch (e) {
projectPackages[pkgPath] = false;
}
}
projectModules[modulePath] = projectPackages[pkgPath];
}
return !projectModules[modulePath];
}
else {
return false;
}
}; };
var JSRuleFinder = (function () {

@@ -27,3 +61,3 @@ function JSRuleFinder(builder) {

}
this.jsRule = { test: /\.js$/, exclude: /node_modules[\\\/](?!@module)/ };
this.jsRule = { test: /\.js$/, exclude: exports.excludeProjectModules(this.builder.projectRoot) };
this.builder.config.module.rules = this.builder.config.module.rules.concat(this.jsRule);

@@ -55,3 +89,3 @@ return this.jsRule;

}
this.tsRule = { test: /\.ts$/, exclude: /node_modules[\\\/](?!@module)/ };
this.tsRule = { test: /\.ts$/, exclude: exports.excludeProjectModules(this.builder.projectRoot) };
this.builder.config.module.rules = this.builder.config.module.rules.concat(this.tsRule);

@@ -58,0 +92,0 @@ return this.tsRule;

{
"name": "spinjs",
"version": "0.4.178",
"version": "0.4.179",
"main": "lib/index.js",

@@ -5,0 +5,0 @@ "scripts": {

@@ -6,7 +6,6 @@ import * as fs from 'fs';

import { Builder, Builders } from './Builder';
import { Builders } from './Builder';
import { ConfigPlugin } from './ConfigPlugin';
import ConfigReader from './ConfigReader';
import Spin from './Spin';
import Stack from './Stack';

@@ -13,0 +12,0 @@ export default class BuilderDiscoverer {

@@ -5,3 +5,3 @@ import * as fs from 'fs';

import { Builder, Builders } from './Builder';
import { Builders } from './Builder';
import { ConfigPlugin } from './ConfigPlugin';

@@ -13,18 +13,3 @@ import createRequire from './createRequire';

import Stack from './Stack';
import upDirs from './upDirs';
const getProjectRoot = (builder: Builder) => {
const pkgPathList = upDirs(builder.require.cwd, 'package.json');
let projectRoot;
for (const pkg of pkgPathList) {
if (fs.existsSync(pkg)) {
try {
JSON.parse(fs.readFileSync(pkg, 'utf8'));
projectRoot = path.dirname(pkg);
} catch (e) {}
}
}
return projectRoot;
};
export default class ConfigReader {

@@ -94,2 +79,3 @@ private spin: Spin;

builder.id = builderId;
builder.configPath = filePath;
builders[builderId] = builder;

@@ -103,3 +89,2 @@ // TODO: remove backendBuildDir, frontendBuildDir in 0.5.x

builder.minify = typeof builder.minify !== 'undefined' ? builder.minify : true;
builder.projectRoot = getProjectRoot(builder);
builder.cache =

@@ -106,0 +91,0 @@ typeof builder.cache === 'string' && builder.cache !== 'auto'

import * as cluster from 'cluster';
import * as fs from 'fs';
import * as minilog from 'minilog';
import * as path from 'path';
import upDirs from './upDirs';

@@ -8,2 +10,3 @@ import { Builder } from './Builder';

import { ConfigPlugin } from './ConfigPlugin';
import ConfigReader from './ConfigReader';
import AngularPlugin from './plugins/AngularPlugin';

@@ -32,2 +35,28 @@ import ApolloPlugin from './plugins/ApolloPlugin';

const getProjectRoot = (builder: Builder): string => {
const pkgPathList = upDirs(builder.require.cwd, 'package.json');
let projectRoot;
for (const pkg of pkgPathList) {
if (fs.existsSync(pkg)) {
try {
JSON.parse(fs.readFileSync(pkg, 'utf8'));
projectRoot = path.dirname(pkg);
} catch (e) {}
}
}
return projectRoot;
};
// const getAppModuleRegexp = (projectRoot: string): string => {
// const regexp = '';
// const files = fs.readdirSync(projectRoot);
// files.forEach(file => {
// if (file === 'node_modules') {
// // searchInside();
// }
// console.log(file, fs.statSync(file).isDirectory());
// });
// return regexp;
// };
const createConfig = (cwd: string, cmd: string, argv: any, builderName?: string) => {

@@ -55,3 +84,2 @@ const builders = {};

const spin = new Spin(cwd, cmd);
const builderDiscoverer = new BuilderDiscoverer(spin, plugins, argv);
let role = cmd;

@@ -64,3 +92,10 @@ if (cmd === 'exp') {

const discoveredBuilders = builderDiscoverer.discover();
let discoveredBuilders;
if (cluster.isMaster) {
const builderDiscoverer = new BuilderDiscoverer(spin, plugins, argv);
discoveredBuilders = builderDiscoverer.discover();
} else {
discoveredBuilders = new ConfigReader(spin, plugins).readConfig(process.env.BUILDER_CONFIG_PATH);
}
if (!discoveredBuilders) {

@@ -76,3 +111,3 @@ throw new Error('Cannot find spinjs config');

const stack = builder.stack;
if (builder.roles.indexOf(role) < 0) {
if (builder.roles.indexOf(role) < 0 || (process.env.BUILDER_ID && builderId !== process.env.BUILDER_ID)) {
continue;

@@ -87,2 +122,7 @@ }

if (builder.enabled && !cluster.isMaster) {
builder.projectRoot = getProjectRoot(builder);
// builder.appModuleRegexp = getAppModuleRegexp(builder.projectRoot);
}
if (spin.dev && builder.webpackDll && !stack.hasAny('server') && !builderName) {

@@ -89,0 +129,0 @@ const dllBuilder: Builder = { ...builder };

@@ -1115,3 +1115,2 @@ import { exec, spawn } from 'child_process';

let potentialWorkerCount = 0;
for (const id of Object.keys(builders)) {

@@ -1122,5 +1121,2 @@ const builder = builders[id];

}
if (builder.cluster !== false) {
potentialWorkerCount++;
}
}

@@ -1134,4 +1130,8 @@

if (potentialWorkerCount > 1 && !builder.cluster) {
const worker = cluster.fork({ BUILDER_ID: id, EXPO_PORTS: JSON.stringify(expoPorts) });
if (!builder.cluster) {
const worker = cluster.fork({
BUILDER_ID: id,
BUILDER_CONFIG_PATH: builder.configPath,
EXPO_PORTS: JSON.stringify(expoPorts)
});
workerBuilders[worker.process.pid] = builder;

@@ -1138,0 +1138,0 @@ } else {

@@ -7,2 +7,3 @@ import * as fs from 'fs';

import Spin from '../Spin';
import { excludeProjectModules } from './shared/JSRuleFinder';
import JSRuleFinder from './shared/JSRuleFinder';

@@ -79,3 +80,6 @@ import UPFinder from './shared/UPFinder';

),
exclude: /node_modules[\\\/](?!react-native.*|@module|@expo|expo|lottie-react-native|haul|pretty-format|react-navigation|antd-mobile-rn)$/,
exclude: excludeProjectModules(
builder.projectRoot,
/(react-native.*|@expo|expo|lottie-react-native|haul|pretty-format|react-navigation|antd-mobile-rn)/
),
use: {

@@ -82,0 +86,0 @@ loader: builder.require.probe('heroku-babel-loader') ? 'heroku-babel-loader' : 'babel-loader',

@@ -0,3 +1,37 @@

import * as fs from 'fs';
import * as path from 'path';
import { Builder } from '../../Builder';
const projectPackages = {};
const projectModules = {};
export const excludeProjectModules = (projectRoot: string, includeNodeModulesRegexp?: RegExp) => modulePath => {
const idx = modulePath.indexOf(path.sep + 'node_modules' + path.sep);
if (idx >= 0) {
if (includeNodeModulesRegexp && includeNodeModulesRegexp.test(modulePath)) {
return false;
}
if (!projectModules[modulePath]) {
const pkgPathStart = modulePath[idx + 14] !== '@' ? idx + 14 : modulePath.indexOf(path.sep, idx + 14) + 1;
let pkgPathEnd = modulePath.indexOf(path.sep, pkgPathStart);
if (pkgPathEnd < 0) {
pkgPathEnd = modulePath.length;
}
const pkgPath = modulePath.substr(0, pkgPathEnd);
if (!projectPackages[pkgPath]) {
try {
projectPackages[pkgPath] =
fs.lstatSync(pkgPath).isSymbolicLink() && fs.realpathSync(pkgPath).indexOf(projectRoot) === 0;
} catch (e) {
projectPackages[pkgPath] = false;
}
}
projectModules[modulePath] = projectPackages[pkgPath];
}
return !projectModules[modulePath];
} else {
return false;
}
};
export default class JSRuleFinder {

@@ -34,3 +68,3 @@ public builder: Builder;

}
this.jsRule = { test: /\.js$/, exclude: /node_modules[\\\/](?!@module)/ };
this.jsRule = { test: /\.js$/, exclude: excludeProjectModules(this.builder.projectRoot) };
this.builder.config.module.rules = this.builder.config.module.rules.concat(this.jsRule);

@@ -65,3 +99,3 @@ return this.jsRule;

}
this.tsRule = { test: /\.ts$/, exclude: /node_modules[\\\/](?!@module)/ };
this.tsRule = { test: /\.ts$/, exclude: excludeProjectModules(this.builder.projectRoot) };
this.builder.config.module.rules = this.builder.config.module.rules.concat(this.tsRule);

@@ -68,0 +102,0 @@ return this.tsRule;

@@ -7,3 +7,2 @@ import * as humps from 'humps';

import { Builder } from '../Builder';
import BuilderDiscoverer from '../BuilderDiscoverer';
import { ConfigPlugin } from '../ConfigPlugin';

@@ -10,0 +9,0 @@ import Spin from '../Spin';

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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