mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-10 23:36:14 -05:00
Merge branch 'master' into mega
This commit is contained in:
commit
1c8b78818f
29 changed files with 376 additions and 172 deletions
|
@ -17,13 +17,11 @@ matrix:
|
|||
include:
|
||||
- node_js: '10'
|
||||
env: TEST_SUITE=lint
|
||||
allow_failures:
|
||||
- node_js: '12'
|
||||
install:
|
||||
- if [ "$TRAVIS_NODE_VERSION" == "12" ]; then yarn --ignore-engines; else yarn; fi
|
||||
- yarn
|
||||
before_script:
|
||||
- if [ $DB == "mysql" ]; then mysql -e 'create database ghost_testing'; fi
|
||||
- if [ "$DB" == "sqlite3" ]; then yarn add --ignore-engines --force sqlite3; fi
|
||||
- if [ "$DB" == "sqlite3" ]; then yarn add --force sqlite3; fi
|
||||
script: |
|
||||
if [ "$TEST_SUITE" == "lint" ]; then
|
||||
yarn lint
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit c82e1cb03571657056de510c3d79ecfd354aeb37
|
||||
Subproject commit 4c7fced3aacc234667edd8946966d1b7afec5f6f
|
|
@ -1 +1 @@
|
|||
Subproject commit 48443b790a5ce0c1a60bcfd50ba6f3f4fa2f962c
|
||||
Subproject commit ded09fd15179dceab8ad76d0279b74c5832cdd5e
|
|
@ -11,6 +11,7 @@ module.exports = function post_class() { // eslint-disable-line camelcase
|
|||
var classes = ['post'],
|
||||
tags = this.post && this.post.tags ? this.post.tags : this.tags || [],
|
||||
featured = this.post && this.post.featured ? this.post.featured : this.featured || false,
|
||||
image = this.post && this.post.feature_image ? this.post.feature_image : this.feature_image || false,
|
||||
page = this.post && this.post.page ? this.post.page : this.page || false;
|
||||
|
||||
if (tags) {
|
||||
|
@ -23,6 +24,10 @@ module.exports = function post_class() { // eslint-disable-line camelcase
|
|||
classes.push('featured');
|
||||
}
|
||||
|
||||
if (!image) {
|
||||
classes.push('no-image');
|
||||
}
|
||||
|
||||
if (page) {
|
||||
classes.push('page');
|
||||
}
|
||||
|
|
|
@ -36,6 +36,14 @@ function getDescription(data, root, options) {
|
|||
} else {
|
||||
description = data.post.meta_description || '';
|
||||
}
|
||||
} else if (_.includes(context, 'page') && data.post) {
|
||||
// Page title dependent on legacy object formatting (https://github.com/TryGhost/Ghost/issues/10042)
|
||||
if (options && options.property) {
|
||||
postSdDescription = options.property + '_description';
|
||||
description = data.post[postSdDescription] || '';
|
||||
} else {
|
||||
description = data.post.meta_description || '';
|
||||
}
|
||||
} else if (_.includes(context, 'page') && data.page) {
|
||||
if (options && options.property) {
|
||||
postSdDescription = options.property + '_description';
|
||||
|
|
|
@ -77,17 +77,17 @@ function getMetaData(data, root) {
|
|||
fallbackExcerpt;
|
||||
|
||||
// TODO: cleanup these if statements
|
||||
if (data.post || data.page) {
|
||||
// NOTE: should use 'post' OR 'page' once https://github.com/TryGhost/Ghost/issues/10042 is resolved
|
||||
if (data.post) {
|
||||
// There's a specific order for description fields (not <meta name="description" /> !!) in structured data
|
||||
// and schema.org which is used the description fields (see https://github.com/TryGhost/Ghost/issues/8793):
|
||||
// 1. CASE: custom_excerpt is populated via the UI
|
||||
// 2. CASE: no custom_excerpt, but meta_description is poplated via the UI
|
||||
// 3. CASE: fall back to automated excerpt of 50 words if neither custom_excerpt nor meta_description is provided
|
||||
// @TODO: https://github.com/TryGhost/Ghost/issues/10062
|
||||
const prop = data.post ? 'post' : 'page';
|
||||
customExcerpt = data[prop].excerpt || data[prop].custom_excerpt;
|
||||
metaDescription = data[prop].meta_description;
|
||||
fallbackExcerpt = data[prop].html ? getExcerpt(data[prop].html, {words: 50}) : '';
|
||||
customExcerpt = data.post.excerpt || data.post.custom_excerpt;
|
||||
metaDescription = data.post.meta_description;
|
||||
fallbackExcerpt = data.post.html ? getExcerpt(data.post.html, {words: 50}) : '';
|
||||
|
||||
metaData.excerpt = customExcerpt ? customExcerpt : metaDescription ? metaDescription : fallbackExcerpt;
|
||||
}
|
||||
|
|
|
@ -47,6 +47,14 @@ function getTitle(data, root, options) {
|
|||
} else {
|
||||
title = data.post.meta_title || data.post.title;
|
||||
}
|
||||
// Page title dependent on legacy object formatting (https://github.com/TryGhost/Ghost/issues/10042)
|
||||
} else if (_.includes(context, 'page') && data.post) {
|
||||
if (options && options.property) {
|
||||
postSdTitle = options.property + '_title';
|
||||
title = data.post[postSdTitle] || '';
|
||||
} else {
|
||||
title = data.post.meta_title || data.post.title;
|
||||
}
|
||||
// Page title v2
|
||||
} else if (_.includes(context, 'page') && data.page) {
|
||||
if (options && options.property) {
|
||||
|
|
9
core/frontend/services/routing/bootstrap.js
vendored
9
core/frontend/services/routing/bootstrap.js
vendored
|
@ -2,7 +2,6 @@ const debug = require('ghost-ignition').debug('services:routing:bootstrap');
|
|||
const _ = require('lodash');
|
||||
const common = require('../../../server/lib/common');
|
||||
const settingsService = require('../settings');
|
||||
const themeService = require('../themes');
|
||||
const StaticRoutesRouter = require('./StaticRoutesRouter');
|
||||
const StaticPagesRouter = require('./StaticPagesRouter');
|
||||
const CollectionRouter = require('./CollectionRouter');
|
||||
|
@ -11,6 +10,8 @@ const PreviewRouter = require('./PreviewRouter');
|
|||
const ParentRouter = require('./ParentRouter');
|
||||
const UnsubscribeRouter = require('./UnsubscribeRouter');
|
||||
|
||||
const defaultApiVersion = 'v3';
|
||||
|
||||
const registry = require('./registry');
|
||||
let siteRouter;
|
||||
|
||||
|
@ -39,7 +40,8 @@ module.exports.init = (options = {start: false}) => {
|
|||
registry.setRouter('siteRouter', siteRouter);
|
||||
|
||||
if (options.start) {
|
||||
this.start();
|
||||
let apiVersion = _.isBoolean(options.start) ? defaultApiVersion : options.start;
|
||||
this.start(apiVersion);
|
||||
}
|
||||
|
||||
return siteRouter.router();
|
||||
|
@ -58,8 +60,7 @@ module.exports.init = (options = {start: false}) => {
|
|||
* 5. Static Pages: Weaker than collections, because we first try to find a post slug and fallback to lookup a static page.
|
||||
* 6. Apps: Weakest
|
||||
*/
|
||||
module.exports.start = () => {
|
||||
const apiVersion = themeService.getApiVersion();
|
||||
module.exports.start = (apiVersion) => {
|
||||
const RESOURCE_CONFIG = require(`./config/${apiVersion}`);
|
||||
|
||||
const unsubscribeRouter = new UnsubscribeRouter();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const fs = require('fs-extra'),
|
||||
Promise = require('bluebird'),
|
||||
path = require('path'),
|
||||
debug = require('ghost-ignition').debug('services:settings:ensure-settings'),
|
||||
debug = require('ghost-ignition').debug('frontend:services:settings:ensure-settings'),
|
||||
common = require('../../../server/lib/common'),
|
||||
config = require('../../../server/config');
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const fs = require('fs-extra'),
|
||||
path = require('path'),
|
||||
debug = require('ghost-ignition').debug('services:settings:settings-loader'),
|
||||
debug = require('ghost-ignition').debug('frontend:services:settings:settings-loader'),
|
||||
common = require('../../../server/lib/common'),
|
||||
config = require('../../../server/config'),
|
||||
yamlParser = require('./yaml-parser'),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const _ = require('lodash');
|
||||
const debug = require('ghost-ignition').debug('services:settings:validate');
|
||||
const debug = require('ghost-ignition').debug('frontend:services:settings:validate');
|
||||
const common = require('../../../server/lib/common');
|
||||
const themeService = require('../themes');
|
||||
const _private = {};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const yaml = require('js-yaml'),
|
||||
debug = require('ghost-ignition').debug('services:settings:yaml-parser'),
|
||||
debug = require('ghost-ignition').debug('frontend:services:settings:yaml-parser'),
|
||||
common = require('../../../server/lib/common');
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,6 +4,7 @@ const urlUtils = require('../../../server/lib/url-utils');
|
|||
const config = require('../../../server/config');
|
||||
const common = require('../../../server/lib/common');
|
||||
const settingsCache = require('../../../server/services/settings/cache');
|
||||
const labs = require('../../../server/services/labs');
|
||||
const activeTheme = require('./active');
|
||||
|
||||
// ### Ensure Active Theme
|
||||
|
@ -75,7 +76,8 @@ function updateGlobalTemplateOptions(req, res, next) {
|
|||
// @TODO: bind this once and then update based on events?
|
||||
// @TODO: decouple theme layer from settings cache using the Content API
|
||||
const siteData = settingsCache.getPublic();
|
||||
const labsData = _.cloneDeep(settingsCache.get('labs'));
|
||||
const labsData = labs.getAll();
|
||||
|
||||
const themeData = {
|
||||
posts_per_page: activeTheme.get().config('posts_per_page'),
|
||||
image_sizes: activeTheme.get().config('image_sizes')
|
||||
|
|
|
@ -3,18 +3,19 @@ const {extract, hasProvider} = require('oembed-parser');
|
|||
const Promise = require('bluebird');
|
||||
const request = require('../../lib/request');
|
||||
const cheerio = require('cheerio');
|
||||
const metascraper = require('metascraper')([
|
||||
require('metascraper-url')(),
|
||||
require('metascraper-title')(),
|
||||
require('metascraper-description')(),
|
||||
require('metascraper-author')(),
|
||||
require('metascraper-publisher')(),
|
||||
require('metascraper-image')(),
|
||||
require('metascraper-logo-favicon')(),
|
||||
require('metascraper-logo')()
|
||||
]);
|
||||
|
||||
async function fetchBookmarkData(url, html) {
|
||||
const metascraper = require('metascraper')([
|
||||
require('metascraper-url')(),
|
||||
require('metascraper-title')(),
|
||||
require('metascraper-description')(),
|
||||
require('metascraper-author')(),
|
||||
require('metascraper-publisher')(),
|
||||
require('metascraper-image')(),
|
||||
require('metascraper-logo-favicon')(),
|
||||
require('metascraper-logo')()
|
||||
]);
|
||||
|
||||
if (!html) {
|
||||
const response = await request(url, {
|
||||
headers: {
|
||||
|
|
|
@ -37,7 +37,10 @@ module.exports.up = (options) => {
|
|||
|
||||
return member;
|
||||
});
|
||||
return localOptions.transacting('members').insert(members);
|
||||
|
||||
return Promise.map(members, (member) => {
|
||||
return localOptions.transacting('members').insert(member);
|
||||
});
|
||||
} else {
|
||||
common.logging.info('Skipping populating members table: found 0 subscribers');
|
||||
return Promise.resolve();
|
||||
|
|
|
@ -17,12 +17,17 @@ const migrator = require('./data/db/migrator');
|
|||
const urlUtils = require('./lib/url-utils');
|
||||
let parentApp;
|
||||
|
||||
// Frontend Components
|
||||
const themeService = require('../frontend/services/themes');
|
||||
|
||||
function initialiseServices() {
|
||||
// CASE: When Ghost is ready with bootstrapping (db migrations etc.), we can trigger the router creation.
|
||||
// Reason is that the routers access the routes.yaml, which shouldn't and doesn't have to be validated to
|
||||
// start Ghost in maintenance mode.
|
||||
// Routing is a bridge between the frontend and API
|
||||
const routing = require('../frontend/services/routing');
|
||||
routing.bootstrap.start();
|
||||
// We pass the themeService API version here, so that the frontend services are less tightly-coupled
|
||||
routing.bootstrap.start(themeService.getApiVersion());
|
||||
|
||||
const permissions = require('./services/permissions'),
|
||||
apps = require('./services/apps'),
|
||||
|
@ -75,10 +80,11 @@ function initialiseServices() {
|
|||
const minimalRequiredSetupToStartGhost = (dbState) => {
|
||||
const settings = require('./services/settings');
|
||||
const models = require('./models');
|
||||
const frontendSettings = require('../frontend/services/settings');
|
||||
const themes = require('../frontend/services/themes');
|
||||
const GhostServer = require('./ghost-server');
|
||||
|
||||
// Frontend
|
||||
const frontendSettings = require('../frontend/services/settings');
|
||||
|
||||
let ghostServer;
|
||||
|
||||
// Initialize Ghost core internationalization
|
||||
|
@ -96,7 +102,7 @@ const minimalRequiredSetupToStartGhost = (dbState) => {
|
|||
})
|
||||
.then(() => {
|
||||
debug('Frontend settings done');
|
||||
return themes.init();
|
||||
return themeService.init();
|
||||
})
|
||||
.then(() => {
|
||||
debug('Themes done');
|
||||
|
|
|
@ -15,12 +15,6 @@ Array.prototype.forEach.call(document.querySelectorAll('form[data-members-form]'
|
|||
emailType = form.dataset.membersForm;
|
||||
}
|
||||
|
||||
if (!email.includes('@')) {
|
||||
form.classList.add('invalid')
|
||||
form.addEventListener('submit', submitHandler);
|
||||
return;
|
||||
}
|
||||
|
||||
form.classList.add('loading');
|
||||
fetch('{{admin-url}}/api/canary/members/send-magic-link/', {
|
||||
method: 'POST',
|
||||
|
|
|
@ -3,22 +3,29 @@ const _ = require('lodash');
|
|||
const Promise = require('bluebird');
|
||||
const SafeString = require('../../frontend/services/themes/engine').SafeString;
|
||||
const common = require('../lib/common');
|
||||
let labs = module.exports = {};
|
||||
const deprecatedFeatures = ['subscribers', 'publicAPI'];
|
||||
|
||||
labs.isSet = function isSet(flag) {
|
||||
var labsConfig = settingsCache.get('labs');
|
||||
return labsConfig && labsConfig[flag] && labsConfig[flag] === true;
|
||||
module.exports.getAll = () => {
|
||||
let labs = _.cloneDeep(settingsCache.get('labs')) || {};
|
||||
// Remove old labs flags that should always be false now
|
||||
deprecatedFeatures.forEach((feature) => {
|
||||
delete labs[feature];
|
||||
});
|
||||
|
||||
return labs;
|
||||
};
|
||||
|
||||
labs.getAll = () => {
|
||||
return settingsCache.get('labs');
|
||||
module.exports.isSet = function isSet(flag) {
|
||||
const labsConfig = module.exports.getAll();
|
||||
|
||||
return !!(labsConfig && labsConfig[flag] && labsConfig[flag] === true);
|
||||
};
|
||||
|
||||
labs.enabledHelper = function enabledHelper(options, callback) {
|
||||
module.exports.enabledHelper = function enabledHelper(options, callback) {
|
||||
const errDetails = {};
|
||||
let errString;
|
||||
|
||||
if (labs.isSet(options.flagKey) === true) {
|
||||
if (module.exports.isSet(options.flagKey) === true) {
|
||||
// helper is active, use the callback
|
||||
return callback();
|
||||
}
|
||||
|
|
|
@ -14,7 +14,8 @@ const urlService = require('../../../frontend/services/url');
|
|||
const labsService = require('../../services/labs');
|
||||
const urlUtils = require('../../lib/url-utils');
|
||||
const sitemapHandler = require('../../../frontend/services/sitemap/handler');
|
||||
const themeMiddleware = require('../../../frontend/services/themes').middleware;
|
||||
const themeService = require('../../../frontend/services/themes');
|
||||
const themeMiddleware = themeService.middleware;
|
||||
const membersService = require('../../services/members');
|
||||
const siteRoutes = require('./routes');
|
||||
const shared = require('../shared');
|
||||
|
@ -260,7 +261,7 @@ module.exports = function setupSiteApp(options = {}) {
|
|||
|
||||
module.exports.reload = () => {
|
||||
// https://github.com/expressjs/express/issues/2596
|
||||
router = siteRoutes({start: true});
|
||||
router = siteRoutes({start: themeService.getApiVersion()});
|
||||
Object.setPrototypeOf(SiteRouter, router);
|
||||
|
||||
// re-initialse apps (register app routers, because we have re-initialised the site routers)
|
||||
|
|
|
@ -351,7 +351,7 @@ describe('Frontend Routing', function () {
|
|||
should.not.exist(res.headers['set-cookie']);
|
||||
should.exist(res.headers.date);
|
||||
|
||||
$('title').text().should.equal('Ghost');
|
||||
$('title').text().should.equal('This is a static page');
|
||||
$('body.page-template').length.should.equal(1);
|
||||
$('article.post').length.should.equal(1);
|
||||
|
||||
|
|
|
@ -189,6 +189,18 @@ describe('getMetaDescription', function () {
|
|||
description.should.equal('Best AMP post ever!');
|
||||
});
|
||||
|
||||
// NOTE: this is a legacy format and should be resolved with https://github.com/TryGhost/Ghost/issues/10042
|
||||
it('legacy: should return data post meta description if on root context contains page', function () {
|
||||
var description = getMetaDescription({
|
||||
post: {
|
||||
meta_description: 'Best page ever!'
|
||||
}
|
||||
}, {
|
||||
context: ['page']
|
||||
});
|
||||
description.should.equal('Best page ever!');
|
||||
});
|
||||
|
||||
it('v2: should return data page meta description if on root context contains page', function () {
|
||||
var description = getMetaDescription({
|
||||
page: {
|
||||
|
|
|
@ -128,6 +128,17 @@ describe('getTitle', function () {
|
|||
title.should.equal('Tag Name - My site title 3 (Page 39)');
|
||||
});
|
||||
|
||||
it('should return post title if in page context', function () {
|
||||
var title = getTitle({
|
||||
// 'post' property is dependent on legacy object formatting (https://github.com/TryGhost/Ghost/issues/10042
|
||||
post: {
|
||||
title: 'My awesome page!'
|
||||
}
|
||||
}, {context: ['page']});
|
||||
|
||||
title.should.equal('My awesome page!');
|
||||
});
|
||||
|
||||
it('should return translated pagination-string if passed in options object', function () {
|
||||
localSettingsCache.title = 'This is my site title';
|
||||
|
||||
|
@ -259,7 +270,7 @@ describe('getTitle', function () {
|
|||
// NOTE: this case is unlikely as Ghost doesn't support AMP for static pages
|
||||
it('should return post title if in amp and page context', function () {
|
||||
var title = getTitle({
|
||||
page: {
|
||||
post: {
|
||||
title: 'My awesome page!'
|
||||
}
|
||||
}, {context: ['amp', 'page']});
|
||||
|
|
|
@ -420,7 +420,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
|
||||
it('returns structured data on static page', function (done) {
|
||||
var renderObject = {
|
||||
page: posts[0]
|
||||
post: posts[0]
|
||||
};
|
||||
|
||||
helpers.ghost_head(testUtils.createHbsResponse({
|
||||
|
@ -469,7 +469,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
|
||||
it('returns structured data on static page with custom post structured data', function (done) {
|
||||
var renderObject = {
|
||||
page: posts[1]
|
||||
post: posts[1]
|
||||
};
|
||||
|
||||
helpers.ghost_head(testUtils.createHbsResponse({
|
||||
|
|
|
@ -61,7 +61,7 @@ describe('{{meta_title}} helper', function () {
|
|||
|
||||
it('returns correct title for a page with meta_title set', function () {
|
||||
var rendered = helpers.meta_title.call(
|
||||
{page: {title: 'About Page', meta_title: 'All about my awesomeness', page: true}},
|
||||
{post: {title: 'About Page', meta_title: 'All about my awesomeness', page: true}},
|
||||
{data: {root: {context: ['page']}}}
|
||||
);
|
||||
|
||||
|
|
|
@ -7,6 +7,13 @@ describe('{{post_class}} helper', function () {
|
|||
it('can render class string', function () {
|
||||
var rendered = helpers.post_class.call({});
|
||||
|
||||
should.exist(rendered);
|
||||
rendered.string.should.equal('post no-image');
|
||||
});
|
||||
|
||||
it('can render class string without no-image class', function () {
|
||||
var rendered = helpers.post_class.call({feature_image: 'blah'});
|
||||
|
||||
should.exist(rendered);
|
||||
rendered.string.should.equal('post');
|
||||
});
|
||||
|
@ -15,6 +22,14 @@ describe('{{post_class}} helper', function () {
|
|||
var post = {featured: true},
|
||||
rendered = helpers.post_class.call(post);
|
||||
|
||||
should.exist(rendered);
|
||||
rendered.string.should.equal('post featured no-image');
|
||||
});
|
||||
|
||||
it('can render featured class without no-image class', function () {
|
||||
var post = {featured: true, feature_image: 'asdass'},
|
||||
rendered = helpers.post_class.call(post);
|
||||
|
||||
should.exist(rendered);
|
||||
rendered.string.should.equal('post featured');
|
||||
});
|
||||
|
@ -23,6 +38,14 @@ describe('{{post_class}} helper', function () {
|
|||
var post = {page: true},
|
||||
rendered = helpers.post_class.call(post);
|
||||
|
||||
should.exist(rendered);
|
||||
rendered.string.should.equal('post no-image page');
|
||||
});
|
||||
|
||||
it('can render page class without no-image class', function () {
|
||||
var post = {page: true, feature_image: 'asdasdas'},
|
||||
rendered = helpers.post_class.call(post);
|
||||
|
||||
should.exist(rendered);
|
||||
rendered.string.should.equal('post page');
|
||||
});
|
||||
|
|
52
core/test/unit/services/labs_spec.js
Normal file
52
core/test/unit/services/labs_spec.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const settingsCache = require('../../../server/services/settings/cache');
|
||||
|
||||
const labs = require('../../../server/services/labs');
|
||||
|
||||
describe('Labs Service', function () {
|
||||
let labsCacheStub;
|
||||
|
||||
beforeEach(function () {
|
||||
labsCacheStub = sinon.stub(settingsCache, 'get').withArgs('labs');
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
});
|
||||
|
||||
it('can getAll, even if empty', function () {
|
||||
labs.getAll().should.eql({});
|
||||
});
|
||||
|
||||
it('can getAll from cache', function () {
|
||||
labsCacheStub.returns({members: true, foo: 'bar'});
|
||||
|
||||
labs.getAll().should.eql({members: true, foo: 'bar'});
|
||||
});
|
||||
|
||||
it('can getAll from cache, ignoring deprecated', function () {
|
||||
labsCacheStub.returns({members: true, foo: 'bar', subscribers: false, publicAPI: true});
|
||||
|
||||
labs.getAll().should.eql({members: true, foo: 'bar'});
|
||||
});
|
||||
|
||||
it('isSet returns true string flag', function () {
|
||||
labsCacheStub.returns({foo: 'bar'});
|
||||
|
||||
labs.isSet('foo').should.be.true;
|
||||
});
|
||||
|
||||
it('isSet returns false for undefined', function () {
|
||||
labsCacheStub.returns({foo: 'bar'});
|
||||
|
||||
labs.isSet('bar').should.be.false;
|
||||
});
|
||||
|
||||
it('isSet always returns false for deprecated', function () {
|
||||
labsCacheStub.returns({subscribers: true, publicAPI: true});
|
||||
|
||||
labs.isSet('subscribers').should.be.false;
|
||||
labs.isSet('publicAPI').should.be.false;
|
||||
});
|
||||
});
|
|
@ -98,7 +98,12 @@ const login = (request, API_URL) => {
|
|||
password: 'Sl1m3rson99'
|
||||
})
|
||||
.then(function then(res) {
|
||||
if (res.statusCode !== 200 && res.statusCode !== 201) {
|
||||
if (res.statusCode === 302) {
|
||||
// This can happen if you already have an instance running e.g. if you've been using Ghost CLI recently
|
||||
return reject(new common.errors.GhostError({
|
||||
message: 'Ghost is redirecting, do you have an instance already running on port 2369?'
|
||||
}));
|
||||
} else if (res.statusCode !== 200 && res.statusCode !== 201) {
|
||||
return reject(new common.errors.GhostError({
|
||||
message: res.body.errors[0].message
|
||||
}));
|
||||
|
|
36
package.json
36
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ghost",
|
||||
"version": "3.0.2",
|
||||
"version": "3.0.3",
|
||||
"description": "The professional publishing platform",
|
||||
"author": "Ghost Foundation",
|
||||
"homepage": "https://ghost.org",
|
||||
|
@ -40,9 +40,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@nexes/nql": "0.3.0",
|
||||
"@tryghost/helpers": "1.1.18",
|
||||
"@tryghost/helpers": "1.1.19",
|
||||
"@tryghost/members-api": "0.9.0",
|
||||
"@tryghost/members-ssr": "0.7.2",
|
||||
"@tryghost/members-ssr": "0.7.3",
|
||||
"@tryghost/social-urls": "0.1.4",
|
||||
"@tryghost/string": "^0.1.3",
|
||||
"@tryghost/url-utils": "0.6.13",
|
||||
|
@ -66,7 +66,7 @@
|
|||
"cookie-session": "1.3.3",
|
||||
"cors": "2.8.5",
|
||||
"cpy-cli": "2.0.0",
|
||||
"csv-parser": "2.3.1",
|
||||
"csv-parser": "2.3.2",
|
||||
"downsize": "0.0.8",
|
||||
"express": "4.17.1",
|
||||
"express-brute": "1.0.1",
|
||||
|
@ -78,7 +78,7 @@
|
|||
"fs-extra": "8.1.0",
|
||||
"ghost-ignition": "3.1.0",
|
||||
"ghost-storage-base": "0.0.3",
|
||||
"glob": "7.1.5",
|
||||
"glob": "7.1.6",
|
||||
"got": "9.6.0",
|
||||
"gscan": "3.1.1",
|
||||
"html-to-text": "5.1.1",
|
||||
|
@ -98,15 +98,15 @@
|
|||
"markdown-it-footnote": "3.0.2",
|
||||
"markdown-it-lazy-headers": "0.1.3",
|
||||
"markdown-it-mark": "3.0.0",
|
||||
"metascraper": "5.7.14",
|
||||
"metascraper-author": "5.7.14",
|
||||
"metascraper-description": "5.7.14",
|
||||
"metascraper-image": "5.7.14",
|
||||
"metascraper-logo": "5.7.14",
|
||||
"metascraper-logo-favicon": "5.7.14",
|
||||
"metascraper-publisher": "5.7.14",
|
||||
"metascraper-title": "5.7.14",
|
||||
"metascraper-url": "5.7.14",
|
||||
"metascraper": "5.8.8",
|
||||
"metascraper-author": "5.8.7",
|
||||
"metascraper-description": "5.8.7",
|
||||
"metascraper-image": "5.8.7",
|
||||
"metascraper-logo": "5.8.7",
|
||||
"metascraper-logo-favicon": "5.8.7",
|
||||
"metascraper-publisher": "5.8.7",
|
||||
"metascraper-title": "5.8.7",
|
||||
"metascraper-url": "5.8.7",
|
||||
"mobiledoc-dom-renderer": "0.7.0",
|
||||
"moment": "2.24.0",
|
||||
"moment-timezone": "0.5.23",
|
||||
|
@ -117,7 +117,7 @@
|
|||
"node-jose": "1.1.3",
|
||||
"nodemailer": "0.7.1",
|
||||
"oauth2orize": "1.11.0",
|
||||
"oembed-parser": "1.3.5",
|
||||
"oembed-parser": "1.3.6",
|
||||
"path-match": "1.2.4",
|
||||
"probe-image-size": "5.0.0",
|
||||
"rss": "1.2.2",
|
||||
|
@ -130,8 +130,8 @@
|
|||
"xml": "1.0.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@tryghost/html-to-mobiledoc": "0.6.0",
|
||||
"sharp": "0.23.1",
|
||||
"@tryghost/html-to-mobiledoc": "0.6.1",
|
||||
"sharp": "0.23.3",
|
||||
"sqlite3": "4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -154,7 +154,7 @@
|
|||
"grunt-update-submodules": "0.4.1",
|
||||
"matchdep": "2.0.0",
|
||||
"mocha": "6.2.1",
|
||||
"mock-knex": "0.4.6",
|
||||
"mock-knex": "0.4.7",
|
||||
"nock": "11.3.6",
|
||||
"proxyquire": "2.1.3",
|
||||
"rewire": "4.0.1",
|
||||
|
|
261
yarn.lock
261
yarn.lock
|
@ -69,10 +69,10 @@
|
|||
dependencies:
|
||||
"@hapi/hoek" "8.x.x"
|
||||
|
||||
"@metascraper/helpers@^5.7.14":
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.14.tgz#676b11bdc82b1fbe4e6cc1fe0c4be2dddf7d5ba1"
|
||||
integrity sha512-xQa24LVinzyT/5H4LKNP4YDdR/kcz+j5GIIB123DyxvhQZTRuDu8BRmEUB/Yj+jY7U5qhwabIgwCT/eN1Y9Uag==
|
||||
"@metascraper/helpers@^5.8.7":
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.8.7.tgz#b05f83f2a90001f7753c18a8b1bb978bd7c2f9d9"
|
||||
integrity sha512-gDErMAA3d1CdkGxvAG4cDi7D2+fReZpD6lzYNJ/gsq45U3Pdz7ltsAvbp4amK92bGKYYPZtnUq85Wrr+Q+e06Q==
|
||||
dependencies:
|
||||
audio-extensions "0.0.0"
|
||||
chrono-node "~1.3.11"
|
||||
|
@ -87,7 +87,7 @@
|
|||
isostring "0.0.1"
|
||||
lodash "~4.17.15"
|
||||
memoize-one "~5.1.1"
|
||||
mime-types "~2.1.24"
|
||||
mime-types "~2.1.25"
|
||||
normalize-url "~4.5.0"
|
||||
smartquotes "~2.3.1"
|
||||
title "~3.4.1"
|
||||
|
@ -199,33 +199,33 @@
|
|||
mkdirp "0.5.0"
|
||||
yauzl "2.4.1"
|
||||
|
||||
"@tryghost/helpers@1.1.18":
|
||||
version "1.1.18"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/helpers/-/helpers-1.1.18.tgz#75bcaf0bf69de5d246003be65d0bf9ed0b41fcd9"
|
||||
integrity sha512-qEwMsHYm+8kwByUgSfV55umfWIvamNXyn21F3WbwC+biYbQNwI+lxe+indiveSJxfoDNv907/ZAevmVK5PmTxw==
|
||||
"@tryghost/helpers@1.1.19":
|
||||
version "1.1.19"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/helpers/-/helpers-1.1.19.tgz#ea623cee798780ea013ef0242321cf7fab34afe5"
|
||||
integrity sha512-jMlDYMMlSuZtz+PIBqbuJQFMca+KCiBjWV+tBLU62Uc6MPKgo5wAOzFg8kxQ6KEVY4eVdg5RO6EzFGqcxINI/A==
|
||||
dependencies:
|
||||
lodash-es "^4.17.11"
|
||||
|
||||
"@tryghost/html-to-mobiledoc@0.6.0":
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/html-to-mobiledoc/-/html-to-mobiledoc-0.6.0.tgz#fc57e4f0deed0d5f045a08acc1e32143d37aecad"
|
||||
integrity sha512-DCT63/9VvGwahm+GbrdeKhVA+SKF/VXK2NaCLgn27ZQ+Cpw6i2VQEUgqHNaNEYvsSbXoQhq8KHwNyX8liIPrGA==
|
||||
"@tryghost/html-to-mobiledoc@0.6.1":
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/html-to-mobiledoc/-/html-to-mobiledoc-0.6.1.tgz#f1eb38cc1de79f1f98d74e887770555b9b9282dd"
|
||||
integrity sha512-dAnUA1CplDUCi1LFDJmzHbU6Tu6QCHD3gCLjwE19EjCZSGtdusmgvER/V/8XFPc1gQkszobXPovm/zGwW1lZjA==
|
||||
dependencies:
|
||||
"@tryghost/kg-parser-plugins" "0.8.0"
|
||||
"@tryghost/kg-parser-plugins" "0.8.1"
|
||||
"@tryghost/mobiledoc-kit" "^0.11.2-ghost.4"
|
||||
jsdom "14.1.0"
|
||||
|
||||
"@tryghost/kg-clean-basic-html@^0.1.3":
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/kg-clean-basic-html/-/kg-clean-basic-html-0.1.3.tgz#0d7f1db1cfb258607b88e6df4cab020572dfbc74"
|
||||
integrity sha512-97FByxvdc7lmnb6vV1pZpT1XWNZONLKTKfNSquPsbzmaUBkAMJnS4Um3oSkK/EkcIZgrB/HVMmTR130gIKx5IQ==
|
||||
"@tryghost/kg-clean-basic-html@^0.1.4":
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/kg-clean-basic-html/-/kg-clean-basic-html-0.1.4.tgz#63b41be3f89549899dc5240d38960b1b5e91a099"
|
||||
integrity sha512-7tA5rVI0+uHXswtI8EmXNIMJOW95IF2Gj54/3Yhg+1deUptmhqB3Wgk2oFP79mYLd7q0347invcZ2U9XZpGEhA==
|
||||
|
||||
"@tryghost/kg-parser-plugins@0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/kg-parser-plugins/-/kg-parser-plugins-0.8.0.tgz#405cf712310c70313bc09c1735c239e49cb9eb40"
|
||||
integrity sha512-DUrZKcQ/X/zmUrLoU0VaI3KlqI1rc4NPkLLNwuCtlBGdz8cJsaopNKYWHf+IlQAhQtrz2DoY/rQVoW/o0pPjhQ==
|
||||
"@tryghost/kg-parser-plugins@0.8.1":
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/kg-parser-plugins/-/kg-parser-plugins-0.8.1.tgz#8741cf85c82c48ee9ab427cfa4fb6895c2af268d"
|
||||
integrity sha512-dGk3gzB1TJ4lMt3nLmY2xkdrjmkY3q+kBPi+nW0KrWlNODm7hnNyWqjr1mC0XppCkowJZI34xUaiKcBnwIfFcw==
|
||||
dependencies:
|
||||
"@tryghost/kg-clean-basic-html" "^0.1.3"
|
||||
"@tryghost/kg-clean-basic-html" "^0.1.4"
|
||||
|
||||
"@tryghost/magic-link@^0.3.2":
|
||||
version "0.3.2"
|
||||
|
@ -253,10 +253,10 @@
|
|||
node-jose "^1.1.3"
|
||||
stripe "^7.4.0"
|
||||
|
||||
"@tryghost/members-ssr@0.7.2":
|
||||
version "0.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-0.7.2.tgz#3d24b99d735af5c74f8a33bea9a083ad816cdd41"
|
||||
integrity sha512-TbMWPUpCCxidZsdPOR3NorsDHm6u8HphdgpePGgblpe8JBr4Vglwi7qgo/L7UVyoxICkN+xcF5k/xx4pJHR7Kg==
|
||||
"@tryghost/members-ssr@0.7.3":
|
||||
version "0.7.3"
|
||||
resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-0.7.3.tgz#55dd348584f97f4f4f03af87a791fe0f0736e1f7"
|
||||
integrity sha512-g2BVauG/LFeTIFRk+5GoD0E1/ksU39UFv6gg2K2KplQB9AnmxevDf+gA+KEeJFhBgFGfZKTy+6otN1eg/nOPqg==
|
||||
dependencies:
|
||||
bluebird "^3.5.3"
|
||||
concat-stream "^2.0.0"
|
||||
|
@ -1334,7 +1334,7 @@ cheerio@~1.0.0-rc.2:
|
|||
lodash "^4.15.0"
|
||||
parse5 "^3.0.1"
|
||||
|
||||
chownr@^1.1.1:
|
||||
chownr@^1.1.1, chownr@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
|
||||
integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==
|
||||
|
@ -1935,10 +1935,10 @@ cssstyle@^1.1.1:
|
|||
dependencies:
|
||||
cssom "0.3.x"
|
||||
|
||||
csv-parser@2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/csv-parser/-/csv-parser-2.3.1.tgz#dbc3cbef59241693bb78119634dbc879c2c83995"
|
||||
integrity sha512-/u51FlBo75BcY/IL0WGibT628rr/xn4cXS9jX+AwT4x9yE7kqGqss7YgXpbdFai6m3uNbr4g1F19BoXBFeiJbA==
|
||||
csv-parser@2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/csv-parser/-/csv-parser-2.3.2.tgz#3a4146abb9a0be7c3cbcae9c289f0a7e622dc07b"
|
||||
integrity sha512-ggurTYuhhoUJyrPXTAkiO1x6QXkxAoimV+YSz2eSAXF+jQ/Xve/030T34tVStKFmX56pPtY5PiZl3bR4HkZK+Q==
|
||||
dependencies:
|
||||
"@hapi/joi" "^16.1.4"
|
||||
buffer-alloc "^1.1.0"
|
||||
|
@ -3273,6 +3273,13 @@ fs-minipass@^1.2.5:
|
|||
dependencies:
|
||||
minipass "^2.6.0"
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1"
|
||||
integrity sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
@ -3507,10 +3514,10 @@ glob@7.1.3:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@7.1.5:
|
||||
version "7.1.5"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0"
|
||||
integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==
|
||||
glob@7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
|
@ -5547,72 +5554,72 @@ merge2@^1.2.3:
|
|||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
|
||||
integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
|
||||
|
||||
metascraper-author@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-author/-/metascraper-author-5.7.14.tgz#5504c413eece572c66e72825bb1cff757974a4b8"
|
||||
integrity sha512-P8xpHHoCzlbt1lb8qKbkz9XQ4MWC0c9ElKFORQ1GPmSVh0n+aTO1APKofFYcnl9rq6QIyYU4PLTqQZ54KXMqtA==
|
||||
metascraper-author@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-author/-/metascraper-author-5.8.7.tgz#c29db97a24af801101008a547caea6a33a56e467"
|
||||
integrity sha512-PwuCZvHnDm10Q1zMQllpCLjtlYR1zSF+rDCRkf/TUuBC/ozz27/JkXDL+ml2nmK8IQGLGRUQKOzrQ0vVMFKvQw==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
lodash "~4.17.15"
|
||||
|
||||
metascraper-description@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.7.14.tgz#4b77b04120f5f4f17dcabb4f549a7954da74b581"
|
||||
integrity sha512-++qN4Rf0Hx13SbhJgRiLSuVOZHsYwhUkMfHa5sVVihSJkrLVjOSdBTpNBajRC7yHwG6m6/qIesuERbT1jdu5bw==
|
||||
metascraper-description@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.8.7.tgz#e85ce218daf33b74813b1523ad7dc7dc3fb128af"
|
||||
integrity sha512-KOv5gnQVvGF1CgpUczu7KJm76rWJ7SH5UFcqFST60hRNgR9xy0y3aHbVDOhZkjNN4UKqnxMF6XTS/WaQxCK/AA==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
|
||||
metascraper-image@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.7.14.tgz#7084754111312eac876728f8dd801fa1c143a794"
|
||||
integrity sha512-TxnUKYU92iWapq2G55E4AF7VjGyiDO2x01Z6AyjbmRxoM4U2IaHkNpE5msyc7TQhxGoYOSvdUtOeUnqdPqr+aA==
|
||||
metascraper-image@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.8.7.tgz#d24697c5b5a6ba688948c48fadcb5fffeb6c703d"
|
||||
integrity sha512-OMK+PFnHeavCSuEJY5tFkG5tdl/luYmPys7PKkJIwC8A8q5qoAC0InIUu+c0SDrdf4nzOj083DZTp32YQxYF5A==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
|
||||
metascraper-logo-favicon@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-logo-favicon/-/metascraper-logo-favicon-5.7.14.tgz#8ec607c8ef88dbe420207c978cb8098eb75064c9"
|
||||
integrity sha512-k1kyywGZUkYVM4Kk6aiJmif4sh+sKRdmGRLE2QJLaeJOcxssQXpw02nJ65fL0nx//2boQ9dWPDIaqonbsFuB2Q==
|
||||
metascraper-logo-favicon@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-logo-favicon/-/metascraper-logo-favicon-5.8.7.tgz#843aeec17d69df17e13870d45a9d9b65211cd206"
|
||||
integrity sha512-U60bZttJbD01gV4aSl1qyx9UU0p5UzK1lJ2+mvVzi+uoz8vXYyzIIfUj+9xlOPtOCC+hEK62ys2vlwecDEJObw==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
got "~9.6.0"
|
||||
lodash "~4.17.15"
|
||||
|
||||
metascraper-logo@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-logo/-/metascraper-logo-5.7.14.tgz#c5e7f4d4191672e48130e10f21f4a31a9faf539d"
|
||||
integrity sha512-5kgH+2+chlJ4mUajHItg1lsXhkcWQbnkLcGrE+7YMIIf/7uHFGehg+dqVNw1CRBPNpwJKibrZSb9aHMlWJPwlg==
|
||||
metascraper-logo@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-logo/-/metascraper-logo-5.8.7.tgz#5efb7e6c5f91ccad812e2d9ec3facfef179f40b6"
|
||||
integrity sha512-QudGVJBBeXLWU54Xw2PmnsTf+qPUnbyYaOl4aFLg2wkLLza1GbuvOYGMiH9Y8k0WcRoesi9sQk+P0a/611blew==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
|
||||
metascraper-publisher@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-publisher/-/metascraper-publisher-5.7.14.tgz#74218cd2c1042264a3df754930e18d5e1f731750"
|
||||
integrity sha512-6WHVr03tu4+KtcETR/q8y7ND9HxKI8QEEI1NAVpAolm1szDSpzV1PXVxWILcc2zPsaAHBSvM0iMwmE1zBEs+BA==
|
||||
metascraper-publisher@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-publisher/-/metascraper-publisher-5.8.7.tgz#2b67f04db46123f9c6d57eaa3de610921fd28e01"
|
||||
integrity sha512-vVfoyqGPxKWWQjvBL0gz4Xyol3QYdr5HWSs9DI7cLrlIDExOByPPah5bZVSijeseeKymyf36BvCm54+chOZN5g==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
|
||||
metascraper-title@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-5.7.14.tgz#4abea12bc9f0d3df5b442cb3c1a8c6559e417ea4"
|
||||
integrity sha512-ZiVo4LEfqiNHlCGjht5OSZ3yRKxcZnbaXeRmUReMkCHcFujok5YZBj5ktDpAANmG9T3x2gn3twM3ZbBSyXLYyg==
|
||||
metascraper-title@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-5.8.7.tgz#aecbbd9515bd74d2aeafa587c83447d926508ba0"
|
||||
integrity sha512-u+5KeJbsFKpi+pMnG71Gd49OLDQpkjiGIRTddhCZQhb45qHoTlGKN1nZuQ8nqJI6+ARWicFqtquomkaRXfBEnw==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
lodash "~4.17.15"
|
||||
|
||||
metascraper-url@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-url/-/metascraper-url-5.7.14.tgz#20645ec0299f1fe4bf194b08037e344b9555bfd0"
|
||||
integrity sha512-scsXsbhI9VFcmgtMI/bsr+onvzzWGX4h80pitQQpECA7X2K2qcm5qic+anv6K2simbPJ/brDkhHC2rMRm9snbw==
|
||||
metascraper-url@5.8.7:
|
||||
version "5.8.7"
|
||||
resolved "https://registry.yarnpkg.com/metascraper-url/-/metascraper-url-5.8.7.tgz#8c04a8f9b82af1058145f21788655b7b6b04fd9c"
|
||||
integrity sha512-K79mT509wV6B1Ak9vSslAbDPQMMRjjWowVgjcby5bOyFpO2j7mQkQIZYobEFpYLHlpb2R9myWJaTKAZe9KrF0A==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
|
||||
metascraper@5.7.14:
|
||||
version "5.7.14"
|
||||
resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.7.14.tgz#2c28f1d350badf3ad1837a51b629ba2ef01d1afe"
|
||||
integrity sha512-NzEniwEprqxE2/EOYWOY/jkxKy9DR5lnVHQUtv+fPn0rdLd0+bd62vdYuw7DUm12lrovAm6WcjRn+EpbhzJR3w==
|
||||
metascraper@5.8.8:
|
||||
version "5.8.8"
|
||||
resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.8.8.tgz#9fbf6913f55bb448a9195e40e38f3599bc5a818f"
|
||||
integrity sha512-z4G3SXGBVnd0+FSHqR3LJF+6emO03GlY2KoOTqsFCnRuY0B72nJyR/NRRYLn4PRX6PMQ6QZ+GWKa7oxBX6hZqQ==
|
||||
dependencies:
|
||||
"@metascraper/helpers" "^5.7.14"
|
||||
"@metascraper/helpers" "^5.8.7"
|
||||
cheerio "~1.0.0-rc.2"
|
||||
cheerio-advanced-selectors "~2.0.1"
|
||||
lodash "~4.17.15"
|
||||
|
@ -5649,7 +5656,7 @@ mime-db@1.40.0:
|
|||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
|
||||
integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
|
||||
|
||||
"mime-db@>= 1.40.0 < 2":
|
||||
mime-db@1.42.0, "mime-db@>= 1.40.0 < 2":
|
||||
version "1.42.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
|
||||
integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
|
||||
|
@ -5673,6 +5680,13 @@ mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
|
|||
dependencies:
|
||||
mime-db "1.40.0"
|
||||
|
||||
mime-types@~2.1.25:
|
||||
version "2.1.25"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
|
||||
integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
|
||||
dependencies:
|
||||
mime-db "1.42.0"
|
||||
|
||||
mime@1.6.0, mime@^1.4.1:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||
|
@ -5759,6 +5773,13 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
|||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.0"
|
||||
|
||||
minipass@^3.0.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
|
||||
integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minizlib@^1.2.1:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
||||
|
@ -5766,6 +5787,14 @@ minizlib@^1.2.1:
|
|||
dependencies:
|
||||
minipass "^2.9.0"
|
||||
|
||||
minizlib@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3"
|
||||
integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
yallist "^4.0.0"
|
||||
|
||||
mixin-deep@^1.2.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
|
||||
|
@ -5848,10 +5877,10 @@ mocha@^4.0.0:
|
|||
mkdirp "0.5.1"
|
||||
supports-color "4.4.0"
|
||||
|
||||
mock-knex@0.4.6:
|
||||
version "0.4.6"
|
||||
resolved "https://registry.yarnpkg.com/mock-knex/-/mock-knex-0.4.6.tgz#3256db9bd29fb3ed1755142aa6a3719eeb9c354a"
|
||||
integrity sha512-zWZqAd1RauA9YBeEZaiGHwqtuMnKH3z1fYxbCbe/cPrKdsWJh5aIXFtDEfa8Cz8xJ4B/dZOOp9VcBugaAAJHfQ==
|
||||
mock-knex@0.4.7:
|
||||
version "0.4.7"
|
||||
resolved "https://registry.yarnpkg.com/mock-knex/-/mock-knex-0.4.7.tgz#ec476e14df22773e37ea7a9020959a4573c38c59"
|
||||
integrity sha512-jg9l4WnIxHaL4SsyrDWxNa7ilo3XgWti8w6zVaXzELFXhlAPY/pUYIjJLdkuCNxQpN8Wq1TMHZsrdf6UkLvTew==
|
||||
dependencies:
|
||||
bluebird "^3.4.1"
|
||||
lodash "^4.14.2"
|
||||
|
@ -6348,10 +6377,10 @@ object.pick@^1.2.0, object.pick@^1.3.0:
|
|||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
oembed-parser@1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/oembed-parser/-/oembed-parser-1.3.5.tgz#795699870ee5a3779d1b052614c71bf19eeb94bf"
|
||||
integrity sha512-hVc0/a6WKuVDGo0xhO1b2LgxtZ698NPBAchqPaiUFV0p/NfK4p+TfYpBBdKdaGbWQfRG7XHdj3ESJ3sJ6nWmXQ==
|
||||
oembed-parser@1.3.6:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/oembed-parser/-/oembed-parser-1.3.6.tgz#a17d9bdd19983e183428240d2789234f352aee49"
|
||||
integrity sha512-Q7Mr0p85l/jAZhiQGKI/dnV1zLthhECO+rYgfmxRzVmYtgs7Y8OjICMefHVxYWe6Kme/Ar9QhPV1Qi8hsG+/Kw==
|
||||
dependencies:
|
||||
node-fetch "^2.6.0"
|
||||
|
||||
|
@ -7028,6 +7057,27 @@ prebuild-install@^5.3.2:
|
|||
tunnel-agent "^0.6.0"
|
||||
which-pm-runs "^1.0.0"
|
||||
|
||||
prebuild-install@^5.3.3:
|
||||
version "5.3.3"
|
||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.3.tgz#ef4052baac60d465f5ba6bf003c9c1de79b9da8e"
|
||||
integrity sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==
|
||||
dependencies:
|
||||
detect-libc "^1.0.3"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
napi-build-utils "^1.0.1"
|
||||
node-abi "^2.7.0"
|
||||
noop-logger "^0.1.1"
|
||||
npmlog "^4.0.1"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^3.0.3"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
which-pm-runs "^1.0.0"
|
||||
|
||||
prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
|
@ -7845,19 +7895,19 @@ setprototypeof@1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
|
||||
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
|
||||
|
||||
sharp@0.23.1:
|
||||
version "0.23.1"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.23.1.tgz#28f930c1677f219b448dee4d28d04a69dc0966aa"
|
||||
integrity sha512-xt1SOwC5ewuqApBzKMFQ5VaRsC3GjOl1xklsnPNAAG7KWEAi50STFrVwjxFRe4puZ/59JU0QQqoFe7TZNnXd/g==
|
||||
sharp@0.23.3:
|
||||
version "0.23.3"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.23.3.tgz#549770a4c671b9bd221f00639452a3eb803a0ed1"
|
||||
integrity sha512-pjT4zyviQteXMC1Z8USIiSwQFQbZTlU5J59/UoygE25hh+sSb7PSYI/MZ2MCB1COtxWQuoUAaG3TYIOLon26Mg==
|
||||
dependencies:
|
||||
color "^3.1.2"
|
||||
detect-libc "^1.0.3"
|
||||
nan "^2.14.0"
|
||||
npmlog "^4.1.2"
|
||||
prebuild-install "^5.3.2"
|
||||
prebuild-install "^5.3.3"
|
||||
semver "^6.3.0"
|
||||
simple-get "^3.1.0"
|
||||
tar "^4.4.13"
|
||||
tar "^5.0.5"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
shebang-command@^1.2.0:
|
||||
|
@ -8545,7 +8595,7 @@ tar-stream@^2.0.0, tar-stream@^2.1.0:
|
|||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
tar@^4, tar@^4.4.13:
|
||||
tar@^4:
|
||||
version "4.4.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||
|
@ -8558,6 +8608,18 @@ tar@^4, tar@^4.4.13:
|
|||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.3"
|
||||
|
||||
tar@^5.0.5:
|
||||
version "5.0.5"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-5.0.5.tgz#03fcdb7105bc8ea3ce6c86642b9c942495b04f93"
|
||||
integrity sha512-MNIgJddrV2TkuwChwcSNds/5E9VijOiw7kAc1y5hTNJoLDSuIyid2QtLYiCYNnICebpuvjhPQZsXwUL0O3l7OQ==
|
||||
dependencies:
|
||||
chownr "^1.1.3"
|
||||
fs-minipass "^2.0.0"
|
||||
minipass "^3.0.0"
|
||||
minizlib "^2.1.0"
|
||||
mkdirp "^0.5.0"
|
||||
yallist "^4.0.0"
|
||||
|
||||
tarn@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/tarn/-/tarn-1.1.5.tgz#7be88622e951738b9fa3fb77477309242cdddc2d"
|
||||
|
@ -9338,6 +9400,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yargs-parser@13.1.1, yargs-parser@^13.1.1:
|
||||
version "13.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
|
||||
|
|
Loading…
Add table
Reference in a new issue