Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ export default function ({types: t}) {
/**
* Add namespace to a module's dependency
* @param {String} moduleName dependency module name
* @param {String} namespacePkg package name to use as namespace
* @param {Object} namespacePkg package to use as namespace name
* @param {Object} unrolledImports unrolled imports section of .npmbundlerrc file
* @return {String} the namespaced module
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,30 @@ import * as ns from '../namespace';
const pkg = {
name: 'a-package',
};
const scopedPkg = {
name: '@scoped/a-package',
};

it('makeNamespace works', () => {
expect(ns.makeNamespace(pkg)).toBe('a-package$');

expect(ns.makeNamespace(scopedPkg)).toBe('scoped!a-package$');
});

describe('when using regular packages', () => {
it('isNamespaced works', () => {

// Package alone

expect(ns.isNamespaced('scoped!a-package$b-package')).toBe(true);
expect(ns.isNamespaced('a-package$b-package')).toBe(true);
expect(ns.isNamespaced('b-package')).toBe(false);

// Package and module

expect(ns.isNamespaced('scoped!a-package$b-package/a-module')).toBe(
true
);
expect(ns.isNamespaced('a-package$b-package/a-module')).toBe(true);
expect(ns.isNamespaced('b-package/a-module')).toBe(false);
expect(ns.isNamespaced('b-package/a-module/$.a-function')).toBe(false);
Expand All @@ -32,11 +41,17 @@ describe('when using regular packages', () => {

// Package alone

expect(ns.getNamespace('scoped!a-package$b-package')).toBe(
'scoped!a-package$'
);
expect(ns.getNamespace('a-package$b-package')).toBe('a-package$');
expect(ns.getNamespace('b-package')).toBeNull();

// Package and module

expect(ns.getNamespace('scoped!a-package$b-package/a-module')).toBe(
'scoped!a-package$'
);
expect(ns.getNamespace('a-package$b-package/a-module')).toBe(
'a-package$'
);
Expand All @@ -48,16 +63,28 @@ describe('when using regular packages', () => {

// Package alone

expect(ns.addNamespace('scoped!a-package$b-package', scopedPkg)).toBe(
'scoped!a-package$b-package'
);
expect(ns.addNamespace('a-package$b-package', pkg)).toBe(
'a-package$b-package'
);
expect(ns.addNamespace('b-package', scopedPkg)).toBe(
'scoped!a-package$b-package'
);
expect(ns.addNamespace('b-package', pkg)).toBe('a-package$b-package');

// Package and module

expect(
ns.addNamespace('scoped!a-package$b-package/a-module', scopedPkg)
).toBe('scoped!a-package$b-package/a-module');
expect(ns.addNamespace('a-package$b-package/a-module', pkg)).toBe(
'a-package$b-package/a-module'
);
expect(ns.addNamespace('b-package/a-module', scopedPkg)).toBe(
'scoped!a-package$b-package/a-module'
);
expect(ns.addNamespace('b-package/a-module', pkg)).toBe(
'a-package$b-package/a-module'
);
Expand All @@ -67,10 +94,19 @@ describe('when using regular packages', () => {

// Package alone

expect(() =>
ns.addNamespace('scoped!other-package$b-package', scopedPkg)
).toThrow();
expect(() => ns.addNamespace('other-package$b-package', pkg)).toThrow();

// Package and module

expect(() =>
ns.addNamespace(
'scoped!other-package$b-package/a-module',
scopedPkg
)
).toThrow();
expect(() =>
ns.addNamespace('other-package$b-package/a-module', pkg)
).toThrow();
Expand All @@ -80,6 +116,11 @@ describe('when using regular packages', () => {

// Package alone

expect(
ns.addNamespace('scoped!other-package$b-package', scopedPkg, {
allowOverride: true,
})
).toBe('scoped!a-package$b-package');
expect(
ns.addNamespace('other-package$b-package', pkg, {
allowOverride: true,
Expand All @@ -88,6 +129,15 @@ describe('when using regular packages', () => {

// Package and module

expect(
ns.addNamespace(
'scoped!other-package$b-package/a-module',
scopedPkg,
{
allowOverride: true,
}
)
).toBe('scoped!a-package$b-package/a-module');
expect(
ns.addNamespace('other-package$b-package/a-module', pkg, {
allowOverride: true,
Expand All @@ -113,11 +163,17 @@ describe('when using regular packages', () => {

// Package alone

expect(ns.removeNamespace('scoped!a-package$b-package')).toBe(
'b-package'
);
expect(ns.removeNamespace('a-package$b-package')).toBe('b-package');
expect(ns.removeNamespace('b-package')).toBe('b-package');

// Package and module

expect(ns.removeNamespace('scoped!a-package$b-package/a-module')).toBe(
'b-package/a-module'
);
expect(ns.removeNamespace('a-package$b-package/a-module')).toBe(
'b-package/a-module'
);
Expand All @@ -135,16 +191,21 @@ describe('when using scoped packages', () => {

// Scope alone

expect(ns.isNamespaced('@scoped!a-package$scope')).toBe(true);
expect(ns.isNamespaced('@a-package$scope')).toBe(true);
expect(ns.isNamespaced('@scope')).toBe(false);

// Scope and package

expect(ns.isNamespaced('@scoped!a-package$scope/b-package')).toBe(true);
expect(ns.isNamespaced('@a-package$scope/b-package')).toBe(true);
expect(ns.isNamespaced('@scope/b-package')).toBe(false);

// Scope, package and module

expect(
ns.isNamespaced('@scoped!a-package$scope/b-package/a-module')
).toBe(true);
expect(ns.isNamespaced('@a-package$scope/b-package/a-module')).toBe(
true
);
Expand All @@ -158,13 +219,19 @@ describe('when using scoped packages', () => {

// Package alone

expect(ns.getNamespace('@scoped!a-package$scope/b-package')).toBe(
'scoped!a-package$'
);
expect(ns.getNamespace('@a-package$scope/b-package')).toBe(
'a-package$'
);
expect(ns.getNamespace('@scope/b-package')).toBeNull();

// Package and module

expect(
ns.getNamespace('@scoped!a-package$scope/b-package/a-module')
).toBe('scoped!a-package$');
expect(ns.getNamespace('@a-package$scope/b-package/a-module')).toBe(
'a-package$'
);
Expand All @@ -178,25 +245,46 @@ describe('when using scoped packages', () => {

// Scope alone

expect(ns.addNamespace('@scoped!a-package$scope', scopedPkg)).toBe(
'@scoped!a-package$scope'
);
expect(ns.addNamespace('@a-package$scope', pkg)).toBe(
'@a-package$scope'
);
expect(ns.addNamespace('@scope', scopedPkg)).toBe(
'@scoped!a-package$scope'
);
expect(ns.addNamespace('@scope', pkg)).toBe('@a-package$scope');

// Scope and package

expect(
ns.addNamespace('@scoped!a-package$scope/b-package', scopedPkg)
).toBe('@scoped!a-package$scope/b-package');
expect(ns.addNamespace('@a-package$scope/b-package', pkg)).toBe(
'@a-package$scope/b-package'
);
expect(ns.addNamespace('@scope/b-package', scopedPkg)).toBe(
'@scoped!a-package$scope/b-package'
);
expect(ns.addNamespace('@scope/b-package', pkg)).toBe(
'@a-package$scope/b-package'
);

// Scope, package and module

expect(
ns.addNamespace(
'@scoped!a-package$scope/b-package/a-module',
scopedPkg
)
).toBe('@scoped!a-package$scope/b-package/a-module');
expect(
ns.addNamespace('@a-package$scope/b-package/a-module', pkg)
).toBe('@a-package$scope/b-package/a-module');
expect(ns.addNamespace('@scope/b-package/a-module', scopedPkg)).toBe(
'@scoped!a-package$scope/b-package/a-module'
);
expect(ns.addNamespace('@scope/b-package/a-module', pkg)).toBe(
'@a-package$scope/b-package/a-module'
);
Expand All @@ -206,12 +294,21 @@ describe('when using scoped packages', () => {

// Package alone

expect(() =>
ns.addNamespace('@scoped!other-package$scope/b-package', scopedPkg)
).toThrow();
expect(() =>
ns.addNamespace('@other-package$scope/b-package', pkg)
).toThrow();

// Package and module

expect(() =>
ns.addNamespace(
'@scoped!other-package$scope/b-package/a-module',
scopedPkg
)
).toThrow();
expect(() =>
ns.addNamespace('@other-package$scope/b-package/a-module', pkg)
).toThrow();
Expand All @@ -221,6 +318,15 @@ describe('when using scoped packages', () => {

// Package alone

expect(
ns.addNamespace(
'@scoped!other-package$scope/b-package',
scopedPkg,
{
allowOverride: true,
}
)
).toBe('@scoped!a-package$scope/b-package');
expect(
ns.addNamespace('@other-package$scope/b-package', pkg, {
allowOverride: true,
Expand All @@ -229,6 +335,15 @@ describe('when using scoped packages', () => {

// Package and module

expect(
ns.addNamespace(
'@scoped!other-package$scope/b-package/a-module',
scopedPkg,
{
allowOverride: true,
}
)
).toBe('@scoped!a-package$scope/b-package/a-module');
expect(
ns.addNamespace('@other-package$scope/b-package/a-module', pkg, {
allowOverride: true,
Expand Down Expand Up @@ -256,18 +371,25 @@ describe('when using scoped packages', () => {

// Scope alone

expect(ns.removeNamespace('@scoped!a-package$scope')).toBe('@scope');
expect(ns.removeNamespace('@a-package$scope')).toBe('@scope');
expect(ns.removeNamespace('@scope')).toBe('@scope');

// Scope and package

expect(ns.removeNamespace('@scoped!a-package$scope/b-package')).toBe(
'@scope/b-package'
);
expect(ns.removeNamespace('@a-package$scope/b-package')).toBe(
'@scope/b-package'
);
expect(ns.removeNamespace('@scope/b-package')).toBe('@scope/b-package');

// Scope, package and module

expect(
ns.removeNamespace('@scoped!a-package$scope/b-package/a-module')
).toBe('@scope/b-package/a-module');
expect(ns.removeNamespace('@a-package$scope/b-package/a-module')).toBe(
'@scope/b-package/a-module'
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,5 +109,20 @@ export function getNamespace(moduleName: string): string {
* @return the namespace for modules
*/
export function makeNamespace({name}: {name: string}): string {

// Convert `@liferay/frontend-js-web` to `liferay!frontend-js-web`.
//
// `/` would confuse the legacy AMD code and would break backward
// compatibility, so we need to pick a substitute that is legal in URLs and
// filesystems, but not allowed in npm package names (to avoid collisions
// with valid non-scoped package names).
//
// We use ! for scopes in the namespacing package, and $ for scopes in the
// namespaced package so that it is easier to understand and parse.

if (name.startsWith('@')) {
name = name.substr(1).replace('/', '!');
}

return name + '$';
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"util": ">=0.10.3",
"vm-browserify": ">=0.0.4"
},
"frontend-js-react-web": {
"@liferay/frontend-js-react-web": {
"/": ">=1.0.0",
"classnames": ">=2.2.6",
"formik": ">=1.4.3",
Expand All @@ -105,7 +105,7 @@
"svg4everybody": ">=2.1.9",
"uuid": ">=3.3.2"
},
"frontend-taglib": {
"@liferay/frontend-taglib": {
"/": ">=1.0.0"
},
"frontend-taglib-chart": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const SIGNALS = {
SIGINT: 2,
SIGQUIT: 3,
SIGTERM: 15,
exit: -1,
};

const SignalHandler = {
Expand Down Expand Up @@ -60,7 +61,9 @@ function handleSignal(signal) {
}
}

process.exit(128 + SIGNALS[signal]);
if (signal !== -1) {
process.exit(128 + SIGNALS[signal]);
}
}

module.exports = SignalHandler;
Loading