Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

@sum.cumo/nuxt-custom-route-folder

Package Overview
Dependencies
Maintainers
2
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sum.cumo/nuxt-custom-route-folder - npm Package Compare versions

Comparing version
2.1.0
to
2.1.1
+111
test/createCustomRoutesFromFolder.spec.js
import { expectWatch, reset } from 'chokidar'
import { EventEmitter } from 'events'
import createCustomRoutesFromFolder from '../src'
import getRoutes from '../src/getRoutes'
function wait(s) {
return new Promise((resolve) => {
setTimeout(resolve, s)
})
}
describe('createCustomRoutesFromFolder', () => {
let fakeNuxt = null
const srcDir = '<virtual>'
let extendRoutes = null
let emitter = null
let watchMock = null
let builder = null
beforeEach(() => {
emitter = new EventEmitter()
emitter.close = jest.fn()
watchMock = jest.fn(() => emitter)
builder = {
generateRoutesAndFiles: jest.fn(),
}
extendRoutes = null
fakeNuxt = {
hook(name, cb) {
if (name === 'build:extendRoutes') {
extendRoutes = cb
} else if (name === 'build:done') {
cb(builder)
}
},
options: {
srcDir,
dev: false,
},
}
})
afterEach(() => {
delete getRoutes.cache
reset()
})
it('adds routes to nuxt, based on files in folder', async () => {
expectWatch(`${srcDir}/**`, watchMock)
const promise = createCustomRoutesFromFolder({
nuxt: fakeNuxt,
glob: `${srcDir}/*.js`,
})
emitter.emit('add', `${srcDir}/foo.js`)
emitter.emit('ready')
await promise
const routes = []
extendRoutes(routes)
expect(routes.length).toBe(1)
expect(routes[0]).toEqual({
path: '/foo',
priority: 0,
component: '<virtual>/foo.js',
meta: {},
chunkName: '_crf/foo',
name: 'foo',
})
})
it('removes routes when file is unlinked', async () => {
expectWatch(`${srcDir}/**`, watchMock)
const { ready$ } = createCustomRoutesFromFolder({
nuxt: {
...fakeNuxt,
options: {
...fakeNuxt.options,
dev: true,
},
},
glob: `${srcDir}/*.js`,
})
const ready = new Promise((resolve, reject) => {
ready$.subscribe({ next: resolve, error: reject })
})
emitter.emit('add', `${srcDir}/foo.js`)
emitter.emit('ready')
await ready
await wait(1)
const routes = []
extendRoutes(routes)
expect(routes.length).toBe(1)
emitter.emit('unlink', `${srcDir}/foo.js`)
await wait(100)
extendRoutes(routes)
expect(routes.length).toBe(0)
})
})
+11
-0
# Changelog @sum.cumo/nuxt-custom-route-folder
## Version 2.1.1
### 🐞 Bug Fixes
→ **ensure fs events called after ready are not buffered forever**
### 🔨 Refactorings
→ **resolve initial promise on complete**
## Version 2.1.0

@@ -4,0 +15,0 @@

+10
-3

@@ -203,5 +203,7 @@ 'use strict';

var ready$ = watch$.pipe(readyFilter, (0, _operators.delay)(1));
var rdy = false;
var ready$$ = _rxjs.Observable.create(function (obs) {
var sub = ready$.subscribe({
next: function next() {
rdy = true;
obs.complete();

@@ -212,5 +214,6 @@ sub.unsubscribe();

});
var throttle = (0, _rxjs.interval)(100);
var fs$ = watch$.pipe((0, _operators.bufferWhen)(function () {
return ready$$;
return !rdy ? ready$$ : throttle;
}), (0, _operators.take)(Infinity), (0, _operators.concatMap)(function (messages) {

@@ -238,5 +241,5 @@ return Promise.all(messages.map(processFileMsg));

return new Promise(function (resolve, reject) {
var promise = new Promise(function (resolve, reject) {
var sub = fs$.pipe(readyFilter, (0, _operators.delay)(2)).subscribe({
next: function next() {
complete: function complete() {
resolve();

@@ -249,2 +252,6 @@ sub.unsubscribe();

});
promise.ready$ = ready$;
return promise;
}

@@ -251,0 +258,0 @@

@@ -6,2 +6,3 @@ 'use strict';

});
exports.cache = undefined;
exports.default = observe;

@@ -23,3 +24,3 @@

var cache = {};
var cache = exports.cache = {};

@@ -26,0 +27,0 @@ function observe(srcDir, watch) {

{
"name": "@sum.cumo/nuxt-custom-route-folder",
"version": "2.1.0",
"version": "2.1.1",
"main": "index.js",

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

import path from 'path'
import kebabCase from 'lodash.kebabcase'
import { Observable } from 'rxjs'
import { Observable, interval } from 'rxjs'
import minimatch from 'minimatch'

@@ -84,5 +84,7 @@ import {

const ready$ = watch$.pipe(readyFilter, delay(1))
let rdy = false
const ready$$ = Observable.create((obs) => {
const sub = ready$.subscribe({
next() {
rdy = true
obs.complete()

@@ -93,5 +95,6 @@ sub.unsubscribe()

})
const throttle = interval(100)
const fs$ = watch$.pipe(
bufferWhen(() => ready$$),
bufferWhen(() => (!rdy ? ready$$ : throttle)),
take(Infinity),

@@ -113,5 +116,5 @@ concatMap((messages) => Promise.all(messages.map(processFileMsg))),

return new Promise((resolve, reject) => {
const promise = new Promise((resolve, reject) => {
const sub = fs$.pipe(readyFilter, delay(2)).subscribe({
next() {
complete() {
resolve()

@@ -123,2 +126,6 @@ sub.unsubscribe()

})
promise.ready$ = ready$
return promise
}

@@ -125,0 +132,0 @@

@@ -5,3 +5,3 @@ import * as path from 'path'

const cache = {}
export const cache = {}

@@ -8,0 +8,0 @@ export default function observe(srcDir, watch) {

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.tmpDir = exports.CHUNK_PREFIX = undefined;
exports.readFile = readFile;
exports.writeFile = writeFile;
var _path = require('path');
var path = _interopRequireWildcard(_path);
var _fs = require('fs');
var fs = _interopRequireWildcard(_fs);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var CHUNK_PREFIX = exports.CHUNK_PREFIX = '_crf';
var tmpDir = exports.tmpDir = path.resolve(__dirname, '..', '.tmp');
try {
fs.mkdirSync(tmpDir);
} catch (e) {
/* noop */
}
function readFile(file) {
return new Promise(function (resolve, reject) {
fs.readFile(file, function (err, contents) {
return err ? reject(err) : resolve(contents);
});
});
}
function writeFile(file, contents) {
return new Promise(function (resolve, reject) {
fs.writeFile(file, contents, function (err) {
return err ? reject(err) : resolve(file);
});
});
}

Sorry, the diff of this file is too big to display