mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-04-08 02:52:39 -05:00
🙀 Image field naming & new img_url helper (#8364)
* 🙀 change database schema for images
- rename user/post/tag images
- contains all the required changes from the schema change
* Refactor helper/meta data
- rename cover to cover_image
- also rename default settings to match the pattern
- rename image to profile_image for user
- rename image to feature_image for tags/posts
* {{image}} >>> {{img_url}}
- rename
- change the functionality
- attr is required
- e.g. {{img_url feature_image}}
* gscan 1.0.0
- update yarn.lock
* Update casper reference: 1.0-changes
- see 5487b4da8d
This commit is contained in:
parent
df26e38ccf
commit
76bd4fdef6
36 changed files with 319 additions and 243 deletions
|
@ -1 +1 @@
|
|||
Subproject commit ccf903fefffdfe6ba63b34922431a5612dba9635
|
||||
Subproject commit 5487b4da8d2ad7c6a6d003a3a0ee1a860e0de34d
|
|
@ -20,27 +20,27 @@ preProcessPosts = function (data, image) {
|
|||
if (post.html) {
|
||||
post.html = replaceImage(post.html, image);
|
||||
}
|
||||
if (post.image) {
|
||||
post.image = replaceImage(post.image, image);
|
||||
if (post.feature_image) {
|
||||
post.feature_image = replaceImage(post.feature_image, image);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
preProcessTags = function (data, image) {
|
||||
_.each(data.tags, function (tag) {
|
||||
if (tag.image) {
|
||||
tag.image = replaceImage(tag.image, image);
|
||||
if (tag.feature_image) {
|
||||
tag.feature_image = replaceImage(tag.feature_image, image);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
preProcessUsers = function (data, image) {
|
||||
_.each(data.users, function (user) {
|
||||
if (user.cover) {
|
||||
user.cover = replaceImage(user.cover, image);
|
||||
if (user.cover_image) {
|
||||
user.cover_image = replaceImage(user.cover_image, image);
|
||||
}
|
||||
if (user.image) {
|
||||
user.image = replaceImage(user.image, image);
|
||||
if (user.profile_image) {
|
||||
user.profile_image = replaceImage(user.profile_image, image);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -6,8 +6,8 @@ function getAuthorImage(data, absolute) {
|
|||
var context = data.context ? data.context : null,
|
||||
contextObject = getContextObject(data, context);
|
||||
|
||||
if ((_.includes(context, 'post') || _.includes(context, 'page')) && contextObject.author && contextObject.author.image) {
|
||||
return utils.url.urlFor('image', {image: contextObject.author.image}, absolute);
|
||||
if ((_.includes(context, 'post') || _.includes(context, 'page')) && contextObject.author && contextObject.author.profile_image) {
|
||||
return utils.url.urlFor('image', {image: contextObject.author.profile_image}, absolute);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ function getContextObject(data, context) {
|
|||
* If the data object does not contain the requested context, we return the fallback object.
|
||||
*/
|
||||
var blog = {
|
||||
cover: settingsCache.get('cover'),
|
||||
cover_image: settingsCache.get('cover_image'),
|
||||
twitter: settingsCache.get('twitter'),
|
||||
facebook: settingsCache.get('facebook')
|
||||
},
|
||||
|
|
|
@ -7,12 +7,12 @@ function getCoverImage(data) {
|
|||
contextObject = getContextObject(data, context);
|
||||
|
||||
if (_.includes(context, 'home') || _.includes(context, 'author')) {
|
||||
if (contextObject.cover) {
|
||||
return utils.url.urlFor('image', {image: contextObject.cover}, true);
|
||||
if (contextObject.cover_image) {
|
||||
return utils.url.urlFor('image', {image: contextObject.cover_image}, true);
|
||||
}
|
||||
} else {
|
||||
if (contextObject.image) {
|
||||
return utils.url.urlFor('image', {image: contextObject.image}, true);
|
||||
if (contextObject.feature_image) {
|
||||
return utils.url.urlFor('image', {image: contextObject.feature_image}, true);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -57,7 +57,7 @@ function getMetaData(data, root) {
|
|||
timezone: settingsCache.get('activeTimezone'),
|
||||
navigation: settingsCache.get('navigation'),
|
||||
icon: settingsCache.get('icon'),
|
||||
cover: settingsCache.get('cover'),
|
||||
cover_image: settingsCache.get('cover_image'),
|
||||
logo: settingsCache.get('logo'),
|
||||
amp: settingsCache.get('amp')
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
"logo": {
|
||||
"defaultValue": ""
|
||||
},
|
||||
"cover": {
|
||||
"cover_image": {
|
||||
"defaultValue": ""
|
||||
},
|
||||
"icon": {
|
||||
|
|
|
@ -9,7 +9,7 @@ module.exports = {
|
|||
html: {type: 'text', maxlength: 1000000000, fieldtype: 'long', nullable: true},
|
||||
amp: {type: 'text', maxlength: 1000000000, fieldtype: 'long', nullable: true},
|
||||
plaintext: {type: 'text', maxlength: 1000000000, fieldtype: 'long', nullable: true},
|
||||
image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
feature_image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
featured: {type: 'bool', nullable: false, defaultTo: false},
|
||||
page: {type: 'bool', nullable: false, defaultTo: false},
|
||||
status: {type: 'string', maxlength: 50, nullable: false, defaultTo: 'draft'},
|
||||
|
@ -33,8 +33,8 @@ module.exports = {
|
|||
ghost_auth_id: {type: 'string', maxlength: 24, nullable: true},
|
||||
password: {type: 'string', maxlength: 60, nullable: false},
|
||||
email: {type: 'string', maxlength: 191, nullable: false, unique: true, validations: {isEmail: true}},
|
||||
image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
cover: {type: 'string', maxlength: 2000, nullable: true},
|
||||
profile_image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
cover_image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
bio: {type: 'text', maxlength: 65535, nullable: true},
|
||||
website: {type: 'string', maxlength: 2000, nullable: true, validations: {isEmptyOrURL: true}},
|
||||
location: {type: 'text', maxlength: 65535, nullable: true},
|
||||
|
@ -108,7 +108,7 @@ module.exports = {
|
|||
name: {type: 'string', maxlength: 191, nullable: false, validations: {matches: /^([^,]|$)/}},
|
||||
slug: {type: 'string', maxlength: 191, nullable: false, unique: true},
|
||||
description: {type: 'text', maxlength: 65535, nullable: true},
|
||||
image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
feature_image: {type: 'string', maxlength: 2000, nullable: true},
|
||||
parent_id: {type: 'string', nullable: true},
|
||||
visibility: {type: 'string', maxlength: 50, nullable: false, defaultTo: 'public', validations: {isIn: [['public', 'internal']]}},
|
||||
meta_title: {type: 'string', maxlength: 2000, nullable: true},
|
||||
|
|
|
@ -123,8 +123,8 @@ generateFeed = function generateFeed(data) {
|
|||
},
|
||||
imageUrl;
|
||||
|
||||
if (post.image) {
|
||||
imageUrl = utils.url.urlFor('image', {image: post.image, secure: data.secure}, true);
|
||||
if (post.feature_image) {
|
||||
imageUrl = utils.url.urlFor('image', {image: post.feature_image, secure: data.secure}, true);
|
||||
|
||||
// Add a media content tag
|
||||
item.custom_elements.push({
|
||||
|
|
|
@ -178,7 +178,7 @@ _.extend(BaseSiteMapGenerator.prototype, {
|
|||
|
||||
createImageNodeFromDatum: function (datum) {
|
||||
// Check for cover first because user has cover but the rest only have image
|
||||
var image = datum.cover || datum.image,
|
||||
var image = datum.cover_image || datum.profile_image || datum.feature_image,
|
||||
imageUrl,
|
||||
imageEl;
|
||||
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
// Usage: `{{image}}`, `{{image absolute="true"}}`
|
||||
//
|
||||
// Returns the URL for the current object scope i.e. If inside a post scope will return image permalink
|
||||
// `absolute` flag outputs absolute URL, else URL is relative.
|
||||
|
||||
var proxy = require('./proxy'),
|
||||
url = proxy.url;
|
||||
|
||||
module.exports = function image(options) {
|
||||
var absolute = options && options.hash.absolute;
|
||||
|
||||
if (this.image) {
|
||||
return url.urlFor('image', {image: this.image}, absolute);
|
||||
}
|
||||
};
|
39
core/server/helpers/img_url.js
Normal file
39
core/server/helpers/img_url.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
// Usage:
|
||||
// `{{img_url}}` - does not work, argument is required
|
||||
// `{{img_url feature_image}}`
|
||||
// `{{img_url profile_image absolute="true"}}`
|
||||
//
|
||||
// Returns the URL for the current object scope i.e. If inside a post scope will return image permalink
|
||||
// `absolute` flag outputs absolute URL, else URL is relative.
|
||||
|
||||
var proxy = require('./proxy'),
|
||||
errors = require('../errors'),
|
||||
i18n = require('../i18n'),
|
||||
url = proxy.url;
|
||||
|
||||
module.exports = function imgUrl(attr, options) {
|
||||
var absolute;
|
||||
|
||||
// CASE: if you pass e.g. cover_image, but it is not set, then attr is null!
|
||||
// in this case we don't throw an error
|
||||
if (!options) {
|
||||
attr = undefined;
|
||||
options = attr;
|
||||
}
|
||||
|
||||
absolute = options && options.hash && options.hash.absolute;
|
||||
|
||||
if (attr === undefined) {
|
||||
throw new errors.IncorrectUsageError({
|
||||
message: i18n.t('warnings.helpers.img_url.attrIsRequired')
|
||||
});
|
||||
}
|
||||
|
||||
// CASE: property is not set in the model e.g. cover_image
|
||||
if (attr === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
return url.urlFor('image', {image: attr}, absolute);
|
||||
};
|
|
@ -16,7 +16,7 @@ coreHelpers.foreach = require('./foreach');
|
|||
coreHelpers.get = require('./get');
|
||||
coreHelpers.ghost_foot = require('./ghost_foot');
|
||||
coreHelpers.ghost_head = require('./ghost_head');
|
||||
coreHelpers.image = require('./image');
|
||||
coreHelpers.img_url = require('./img_url');
|
||||
coreHelpers.is = require('./is');
|
||||
coreHelpers.has = require('./has');
|
||||
coreHelpers.meta_description = require('./meta_description');
|
||||
|
@ -45,7 +45,7 @@ registerAllCoreHelpers = function registerAllCoreHelpers() {
|
|||
registerThemeHelper('foreach', coreHelpers.foreach);
|
||||
registerThemeHelper('has', coreHelpers.has);
|
||||
registerThemeHelper('is', coreHelpers.is);
|
||||
registerThemeHelper('image', coreHelpers.image);
|
||||
registerThemeHelper('img_url', coreHelpers.img_url);
|
||||
registerThemeHelper('meta_description', coreHelpers.meta_description);
|
||||
registerThemeHelper('meta_title', coreHelpers.meta_title);
|
||||
registerThemeHelper('navigation', coreHelpers.navigation);
|
||||
|
|
|
@ -91,7 +91,7 @@ tagUpdate = {
|
|||
},
|
||||
|
||||
createTagThenAttachTagToPost: function createTagThenAttachTagToPost(PostModel, TagModel, post, tag, index, options) {
|
||||
var fields = ['name', 'slug', 'description', 'image', 'visibility', 'parent_id', 'meta_title', 'meta_description'];
|
||||
var fields = ['name', 'slug', 'description', 'feature_image', 'visibility', 'parent_id', 'meta_title', 'meta_description'];
|
||||
return function () {
|
||||
return TagModel.add(_.pick(tag, fields), options).then(function then(createdTag) {
|
||||
return tagUpdate.attachTagToPost(PostModel, post.id, createdTag, index, options)();
|
||||
|
|
|
@ -112,7 +112,7 @@ User = ghostBookshelf.Model.extend({
|
|||
email: self.get('email')
|
||||
}).then(function (response) {
|
||||
if (response && response.image) {
|
||||
self.set('image', response.image);
|
||||
self.set('profile_image', response.image);
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
|
|
@ -44,7 +44,7 @@ themeMiddleware.updateTemplateData = function updateTemplateData(req, res, next)
|
|||
navigation: settingsCache.get('navigation'),
|
||||
permalinks: settingsCache.get('permalinks'),
|
||||
icon: settingsCache.get('icon'),
|
||||
cover: settingsCache.get('cover'),
|
||||
cover_image: settingsCache.get('cover_image'),
|
||||
logo: settingsCache.get('logo'),
|
||||
amp: settingsCache.get('amp')
|
||||
},
|
||||
|
|
|
@ -517,6 +517,9 @@
|
|||
"plural": {
|
||||
"valuesMustBeDefined": "All values must be defined for empty, singular and plural"
|
||||
},
|
||||
"img_url": {
|
||||
"attrIsRequired": "Attribute is required e.g. \\{\\{img_url feature_image\\}\\}"
|
||||
},
|
||||
"template": {
|
||||
"templateNotFound": "Template {name} not found."
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ describe('Advanced Browse', function () {
|
|||
describe('2. Posts - filter: "tag:photo,featured:true,image:-null", include: "tags"', function () {
|
||||
it('Will fetch posts which have either a tag of `photo`, are marked `featured` or have an image.', function (done) {
|
||||
PostAPI.browse({
|
||||
filter: 'tag:photo,featured:true,image:-null',
|
||||
filter: 'tag:photo,featured:true,feature_image:-null',
|
||||
include: 'tags'
|
||||
}).then(function (result) {
|
||||
var ids;
|
||||
|
@ -158,7 +158,7 @@ describe('Advanced Browse', function () {
|
|||
// Note that `pat` doesn't exist (it's `pat-smith`)
|
||||
it('Will fetch posts by the author `leslie` or `pat` which are either have tag `audio` or an image.', function (done) {
|
||||
PostAPI.browse({
|
||||
filter: 'author:[leslie,pat]+(tag:audio,image:-null)',
|
||||
filter: 'author:[leslie,pat]+(tag:audio,feature_image:-null)',
|
||||
include: 'author,tags'
|
||||
}).then(function (result) {
|
||||
var ids, authors;
|
||||
|
@ -181,8 +181,8 @@ describe('Advanced Browse', function () {
|
|||
_.each(result.posts, function (post) {
|
||||
var tags = _.map(post.tags, 'slug');
|
||||
// This construct ensures we get an assertion or a failure
|
||||
if (!_.isEmpty(post.image)) {
|
||||
post.image.should.not.be.empty();
|
||||
if (!_.isEmpty(post.feature_image)) {
|
||||
post.feature_image.should.not.be.empty();
|
||||
} else {
|
||||
tags = _.map(post.tags, 'slug');
|
||||
tags.should.containEql('audio');
|
||||
|
@ -322,7 +322,7 @@ describe('Advanced Browse', function () {
|
|||
|
||||
describe('8. Tags filter: "image:-null+description:-null"', function () {
|
||||
it('Will fetch tags which have an image and a description', function (done) {
|
||||
TagAPI.browse({filter: 'image:-null+description:-null', order: 'name ASC'}).then(function (result) {
|
||||
TagAPI.browse({filter: 'feature_image:-null+description:-null', order: 'name ASC'}).then(function (result) {
|
||||
var ids;
|
||||
// 1. Result should have the correct base structure
|
||||
should.exist(result);
|
||||
|
@ -341,9 +341,9 @@ describe('Advanced Browse', function () {
|
|||
// @TODO standardise how alphabetical ordering is done across DBs (see #6104)
|
||||
// ids.should.eql([4, 2, 3]);
|
||||
|
||||
should.exist(result.tags[0].image);
|
||||
should.exist(result.tags[1].image);
|
||||
should.exist(result.tags[2].image);
|
||||
should.exist(result.tags[0].feature_image);
|
||||
should.exist(result.tags[1].feature_image);
|
||||
should.exist(result.tags[2].feature_image);
|
||||
|
||||
should.exist(result.tags[0].description);
|
||||
should.exist(result.tags[1].description);
|
||||
|
|
|
@ -934,7 +934,7 @@ describe('Post Model', function () {
|
|||
(!!createdPost.get('page')).should.equal(false);
|
||||
createdPost.get('language').should.equal('en_US');
|
||||
// testing for nulls
|
||||
(createdPost.get('image') === null).should.equal(true);
|
||||
(createdPost.get('feature_image') === null).should.equal(true);
|
||||
(createdPost.get('meta_title') === null).should.equal(true);
|
||||
(createdPost.get('meta_description') === null).should.equal(true);
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ describe('User Model', function run() {
|
|||
|
||||
UserModel.add(userData, context).then(function (createdUser) {
|
||||
should.exist(createdUser);
|
||||
createdUser.attributes.image.should.eql(
|
||||
createdUser.attributes.profile_image.should.eql(
|
||||
'http://www.gravatar.com/avatar/2fab21a4c4ed88e76add10650c73bae1?d=404', 'Gravatar found'
|
||||
);
|
||||
done();
|
||||
|
|
|
@ -681,16 +681,16 @@ describe('Importer', function () {
|
|||
outputData.posts[0].markdown.should.containEql('/content/images/photos/cat.jpg');
|
||||
outputData.posts[0].html.should.containEql('/content/images/photos/cat.jpg');
|
||||
|
||||
inputData.posts[0].image.should.eql('/images/my-image.png');
|
||||
outputData.posts[0].image.should.eql('/content/images/my-image.png');
|
||||
inputData.posts[0].feature_image.should.eql('/images/my-image.png');
|
||||
outputData.posts[0].feature_image.should.eql('/content/images/my-image.png');
|
||||
|
||||
inputData.tags[0].image.should.eql('/images/my-image.png');
|
||||
outputData.tags[0].image.should.eql('/content/images/my-image.png');
|
||||
inputData.tags[0].feature_image.should.eql('/images/my-image.png');
|
||||
outputData.tags[0].feature_image.should.eql('/content/images/my-image.png');
|
||||
|
||||
inputData.users[0].image.should.eql('/images/my-image.png');
|
||||
inputData.users[0].cover.should.eql('/images/photos/cat.jpg');
|
||||
outputData.users[0].image.should.eql('/content/images/my-image.png');
|
||||
outputData.users[0].cover.should.eql('/content/images/photos/cat.jpg');
|
||||
inputData.users[0].profile_image.should.eql('/images/my-image.png');
|
||||
inputData.users[0].cover_image.should.eql('/images/photos/cat.jpg');
|
||||
outputData.users[0].profile_image.should.eql('/content/images/my-image.png');
|
||||
outputData.users[0].cover_image.should.eql('/content/images/photos/cat.jpg');
|
||||
});
|
||||
|
||||
it('does import the images correctly', function () {
|
||||
|
|
|
@ -13,7 +13,7 @@ describe('getAuthorImage', function () {
|
|||
context: ['post'],
|
||||
post: {
|
||||
author: {
|
||||
image: '/content/images/2016/01/myimage.jpg'
|
||||
profile_image: '/content/images/2016/01/myimage.jpg'
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
|
@ -26,7 +26,7 @@ describe('getAuthorImage', function () {
|
|||
context: ['post'],
|
||||
post: {
|
||||
author: {
|
||||
image: '/content/images/2016/01/myimage.jpg'
|
||||
profile_image: '/content/images/2016/01/myimage.jpg'
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
|
@ -39,7 +39,7 @@ describe('getAuthorImage', function () {
|
|||
context: ['amp', 'post'],
|
||||
post: {
|
||||
author: {
|
||||
image: '/content/images/2016/01/myimage.jpg'
|
||||
profile_image: '/content/images/2016/01/myimage.jpg'
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
|
@ -51,7 +51,7 @@ describe('getAuthorImage', function () {
|
|||
context: ['amp', 'post'],
|
||||
post: {
|
||||
author: {
|
||||
image: '/content/images/2016/01/myimage.jpg'
|
||||
profile_image: '/content/images/2016/01/myimage.jpg'
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
|
|
|
@ -51,7 +51,7 @@ describe('getContextObject', function () {
|
|||
before(function () {
|
||||
sandbox.stub(settingsCache, 'get', function (key) {
|
||||
return {
|
||||
cover: 'test.png'
|
||||
cover_image: 'test.png'
|
||||
}[key];
|
||||
});
|
||||
});
|
||||
|
@ -66,7 +66,7 @@ describe('getContextObject', function () {
|
|||
contextObject = getContextObject(data, context);
|
||||
|
||||
should.exist(contextObject);
|
||||
contextObject.should.have.property('cover', 'test.png');
|
||||
contextObject.should.have.property('cover_image', 'test.png');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -6,7 +6,7 @@ describe('getCoverImage', function () {
|
|||
var coverImageUrl = getCoverImage({
|
||||
context: ['home'],
|
||||
home: {
|
||||
cover: '/content/images/my-test-image.jpg'
|
||||
cover_image: '/content/images/my-test-image.jpg'
|
||||
}
|
||||
});
|
||||
coverImageUrl.should.not.equal('/content/images/my-test-image.jpg');
|
||||
|
@ -17,7 +17,7 @@ describe('getCoverImage', function () {
|
|||
var coverImageUrl = getCoverImage({
|
||||
context: ['author'],
|
||||
author: {
|
||||
cover: '/content/images/my-test-image.jpg'
|
||||
cover_image: '/content/images/my-test-image.jpg'
|
||||
}
|
||||
});
|
||||
coverImageUrl.should.not.equal('/content/images/my-test-image.jpg');
|
||||
|
@ -28,7 +28,7 @@ describe('getCoverImage', function () {
|
|||
var coverImageUrl = getCoverImage({
|
||||
context: ['post'],
|
||||
post: {
|
||||
image: '/content/images/my-test-image.jpg'
|
||||
feature_image: '/content/images/my-test-image.jpg'
|
||||
}
|
||||
});
|
||||
coverImageUrl.should.not.equal('/content/images/my-test-image.jpg');
|
||||
|
@ -39,7 +39,7 @@ describe('getCoverImage', function () {
|
|||
var coverImageUrl = getCoverImage({
|
||||
context: ['amp', 'post'],
|
||||
post: {
|
||||
image: '/content/images/my-test-image.jpg'
|
||||
feature_image: '/content/images/my-test-image.jpg'
|
||||
}
|
||||
});
|
||||
coverImageUrl.should.not.equal('/content/images/my-test-image.jpg');
|
||||
|
|
|
@ -19,7 +19,7 @@ var should = require('should'), // jshint ignore:line
|
|||
// both of which are required for migrations to work properly.
|
||||
describe('DB version integrity', function () {
|
||||
// Only these variables should need updating
|
||||
var currentSchemaHash = '961370c4b76ac026104182be9bb75695',
|
||||
var currentSchemaHash = '0d3a45d3db7f7ae6effb654621ca8ab5',
|
||||
currentFixturesHash = 'ad12de59b939b13dc198611a6438ab51';
|
||||
|
||||
// If this test is failing, then it is likely a change has been made that requires a DB version bump,
|
||||
|
|
|
@ -33,7 +33,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var localSettingsCache = {
|
||||
title: 'Ghost',
|
||||
description: 'blog description',
|
||||
cover: '/content/images/blog-cover.png',
|
||||
cover_image: '/content/images/blog-cover.png',
|
||||
amp: true
|
||||
};
|
||||
|
||||
|
@ -102,7 +102,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var post = {
|
||||
meta_description: 'all about our blog',
|
||||
title: 'About',
|
||||
image: '/content/images/test-image-about.png',
|
||||
feature_image: '/content/images/test-image-about.png',
|
||||
published_at: moment('2008-05-31T19:18:15').toISOString(),
|
||||
updated_at: moment('2014-10-06T15:23:54').toISOString(),
|
||||
page: true,
|
||||
|
@ -110,7 +110,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
url: 'http://testauthorurl.com',
|
||||
slug: 'Author',
|
||||
image: '/content/images/test-author-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
website: 'http://authorwebsite.com',
|
||||
facebook: 'testuser',
|
||||
twitter: '@testuser',
|
||||
|
@ -163,7 +163,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
meta_description: 'tag meta description',
|
||||
name: 'tagtitle',
|
||||
meta_title: 'tag meta title',
|
||||
image: '/content/images/tag-image.png'
|
||||
feature_image: '/content/images/tag-image.png'
|
||||
};
|
||||
|
||||
helpers.ghost_head.call(
|
||||
|
@ -206,7 +206,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
description: 'tag description',
|
||||
name: 'tagtitle',
|
||||
meta_title: '',
|
||||
image: '/content/images/tag-image.png'
|
||||
feature_image: '/content/images/tag-image.png'
|
||||
};
|
||||
|
||||
helpers.ghost_head.call(
|
||||
|
@ -248,7 +248,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
meta_description: '',
|
||||
name: 'tagtitle',
|
||||
meta_title: '',
|
||||
image: '/content/images/tag-image.png'
|
||||
feature_image: '/content/images/tag-image.png'
|
||||
};
|
||||
|
||||
helpers.ghost_head.call(
|
||||
|
@ -271,7 +271,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
meta_description: 'tag meta description',
|
||||
title: 'tagtitle',
|
||||
meta_title: 'tag meta title',
|
||||
image: '/content/images/tag-image.png'
|
||||
feature_image: '/content/images/tag-image.png'
|
||||
};
|
||||
|
||||
helpers.ghost_head.call(
|
||||
|
@ -296,8 +296,8 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
slug: 'AuthorName',
|
||||
bio: 'Author bio',
|
||||
image: '/content/images/test-author-image.png',
|
||||
cover: '/content/images/author-cover-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
cover_image: '/content/images/author-cover-image.png',
|
||||
website: 'http://authorwebsite.com',
|
||||
facebook: 'testuser',
|
||||
twitter: '@testuser'
|
||||
|
@ -345,8 +345,8 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
slug: 'AuthorName',
|
||||
bio: 'Author bio',
|
||||
image: '/content/images/test-author-image.png',
|
||||
cover: '/content/images/author-cover-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
cover_image: '/content/images/author-cover-image.png',
|
||||
website: 'http://authorwebsite.com'
|
||||
};
|
||||
|
||||
|
@ -390,7 +390,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var post = {
|
||||
meta_description: 'blog description',
|
||||
title: 'Welcome to Ghost',
|
||||
image: '/content/images/test-image.png',
|
||||
feature_image: '/content/images/test-image.png',
|
||||
published_at: moment('2008-05-31T19:18:15').toISOString(),
|
||||
updated_at: moment('2014-10-06T15:23:54').toISOString(),
|
||||
tags: [{name: 'tag1'}, {name: 'tag2'}, {name: 'tag3'}],
|
||||
|
@ -398,7 +398,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
url: 'http://testauthorurl.com',
|
||||
slug: 'Author',
|
||||
image: '/content/images/test-author-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
website: 'http://authorwebsite.com',
|
||||
bio: 'Author bio',
|
||||
facebook: 'testuser',
|
||||
|
@ -470,7 +470,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var post = {
|
||||
meta_description: 'blog description',
|
||||
title: 'Welcome to Ghost',
|
||||
image: '/content/images/test-image.png',
|
||||
feature_image: '/content/images/test-image.png',
|
||||
published_at: moment('2008-05-31T19:18:15').toISOString(),
|
||||
updated_at: moment('2014-10-06T15:23:54').toISOString(),
|
||||
tags: [{name: 'tag1'}, {name: 'tag2'}, {name: 'tag3'}],
|
||||
|
@ -478,7 +478,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
url: 'http://testauthorurl.com',
|
||||
slug: 'Author',
|
||||
image: '/content/images/test-author-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
website: 'http://authorwebsite.com',
|
||||
bio: 'Author bio',
|
||||
facebook: 'testuser',
|
||||
|
@ -551,7 +551,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
meta_description: 'blog "test" description',
|
||||
title: 'title',
|
||||
meta_title: 'Welcome to Ghost "test"',
|
||||
image: '/content/images/test-image.png',
|
||||
feature_image: '/content/images/test-image.png',
|
||||
published_at: moment('2008-05-31T19:18:15').toISOString(),
|
||||
updated_at: moment('2014-10-06T15:23:54').toISOString(),
|
||||
tags: [{name: 'tag1'}, {name: 'tag2'}, {name: 'tag3'}],
|
||||
|
@ -559,7 +559,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
url: 'http//:testauthorurl.com',
|
||||
slug: 'Author',
|
||||
image: '/content/images/test-author-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
website: 'http://authorwebsite.com',
|
||||
facebook: 'testuser',
|
||||
twitter: '@testuser'
|
||||
|
@ -630,7 +630,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var post = {
|
||||
meta_description: 'blog description',
|
||||
title: 'Welcome to Ghost',
|
||||
image: '/content/images/test-image.png',
|
||||
feature_image: '/content/images/test-image.png',
|
||||
published_at: moment('2008-05-31T19:18:15').toISOString(),
|
||||
updated_at: moment('2014-10-06T15:23:54').toISOString(),
|
||||
tags: [],
|
||||
|
@ -638,7 +638,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
url: 'http//:testauthorurl.com',
|
||||
slug: 'Author',
|
||||
image: '/content/images/test-author-image.png',
|
||||
profile_image: '/content/images/test-author-image.png',
|
||||
website: 'http://authorwebsite.com',
|
||||
facebook: 'testuser',
|
||||
twitter: '@testuser'
|
||||
|
@ -705,7 +705,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var post = {
|
||||
meta_description: 'blog description',
|
||||
title: 'Welcome to Ghost',
|
||||
image: null,
|
||||
feature_image: null,
|
||||
published_at: moment('2008-05-31T19:18:15').toISOString(),
|
||||
updated_at: moment('2014-10-06T15:23:54').toISOString(),
|
||||
tags: [{name: 'tag1'}, {name: 'tag2'}, {name: 'tag3'}],
|
||||
|
@ -713,7 +713,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
name: 'Author name',
|
||||
url: 'http//:testauthorurl.com',
|
||||
slug: 'Author',
|
||||
image: null,
|
||||
profile_image: null,
|
||||
website: 'http://authorwebsite.com',
|
||||
facebook: 'testuser',
|
||||
twitter: '@testuser'
|
||||
|
@ -926,7 +926,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var localSettingsCache = {
|
||||
title: 'Ghost',
|
||||
description: 'blog description',
|
||||
cover: '/content/images/blog-cover.png',
|
||||
cover_image: '/content/images/blog-cover.png',
|
||||
amp: true,
|
||||
icon: '/content/images/favicon.png'
|
||||
};
|
||||
|
@ -961,7 +961,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var localSettingsCache = {
|
||||
title: 'Ghost',
|
||||
description: 'blog description',
|
||||
cover: '/content/images/blog-cover.png',
|
||||
cover_image: '/content/images/blog-cover.png',
|
||||
amp: true,
|
||||
icon: '/content/images/favicon.png'
|
||||
};
|
||||
|
@ -1021,7 +1021,7 @@ describe('{{ghost_head}} helper', function () {
|
|||
var localSettingsCache = {
|
||||
title: 'Ghost',
|
||||
description: 'blog description',
|
||||
cover: '/content/images/blog-cover.png',
|
||||
cover_image: '/content/images/blog-cover.png',
|
||||
icon: '/content/images/favicon.png',
|
||||
ghost_head: '<style>body {background: red;}</style>'
|
||||
};
|
||||
|
|
|
@ -2,8 +2,9 @@ var should = require('should'), // jshint ignore:line
|
|||
sinon = require('sinon'),
|
||||
configUtils = require('../../utils/configUtils'),
|
||||
|
||||
// Stuff we are testing
|
||||
// Stuff we are testing
|
||||
helpers = require('../../../server/helpers'),
|
||||
errors = require('../../../server/errors'),
|
||||
|
||||
sandbox = sinon.sandbox.create();
|
||||
|
||||
|
@ -21,39 +22,35 @@ describe('{{image}} helper', function () {
|
|||
});
|
||||
|
||||
it('should output relative url of image', function () {
|
||||
var rendered = helpers.image.call({
|
||||
image: '/content/images/image-relative-url.png',
|
||||
author: {
|
||||
image: '/content/images/author-image-relative-url.png'
|
||||
}
|
||||
});
|
||||
|
||||
var rendered = helpers.img_url('/content/images/image-relative-url.png', {});
|
||||
should.exist(rendered);
|
||||
rendered.should.equal('/content/images/image-relative-url.png');
|
||||
});
|
||||
|
||||
it('should output absolute url of image if the option is present ', function () {
|
||||
var rendered = helpers.image.call({
|
||||
image: '/content/images/image-relative-url.png',
|
||||
author: {image: '/content/images/author-image-relative-url.png'}
|
||||
},
|
||||
{
|
||||
hash: {absolute: 'true'}
|
||||
});
|
||||
|
||||
var rendered = helpers.img_url('/content/images/image-relative-url.png', {hash: {absolute: 'true'}});
|
||||
should.exist(rendered);
|
||||
rendered.should.equal('http://localhost:82832/content/images/image-relative-url.png');
|
||||
});
|
||||
|
||||
it('should have no output if there is no image ', function () {
|
||||
var rendered = helpers.image.call({image: null}, {hash: {absolute: 'true'}});
|
||||
|
||||
should.not.exist(rendered);
|
||||
it('should output author url', function () {
|
||||
var rendered = helpers.img_url('/content/images/author-image-relative-url.png', {});
|
||||
should.exist(rendered);
|
||||
rendered.should.equal('/content/images/author-image-relative-url.png');
|
||||
});
|
||||
|
||||
it('should have no output if there is no image property ', function () {
|
||||
var rendered = helpers.image.call({}, {hash: {absolute: 'true'}});
|
||||
it('should have no output if there is no image ', function (done) {
|
||||
try {
|
||||
helpers.img_url(undefined, {hash: {absolute: 'true'}});
|
||||
done(new Error('we expect an error from img_url'));
|
||||
} catch (err) {
|
||||
(err instanceof errors.IncorrectUsageError).should.eql(true);
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
it('should have no output if there is no image ', function () {
|
||||
var rendered = helpers.img_url(null, {hash: {absolute: 'true'}});
|
||||
should.not.exist(rendered);
|
||||
});
|
||||
|
||||
|
@ -66,38 +63,19 @@ describe('{{image}} helper', function () {
|
|||
});
|
||||
|
||||
it('should output relative url of image', function () {
|
||||
var rendered = helpers.image.call({
|
||||
image: '/blog/content/images/image-relative-url.png',
|
||||
author: {
|
||||
image: '/blog/content/images/author-image-relative-url.png'
|
||||
}
|
||||
});
|
||||
|
||||
var rendered = helpers.img_url('/blog/content/images/image-relative-url.png', {});
|
||||
should.exist(rendered);
|
||||
rendered.should.equal('/blog/content/images/image-relative-url.png');
|
||||
});
|
||||
|
||||
it('should output absolute url of image if the option is present ', function () {
|
||||
var rendered = helpers.image.call({
|
||||
image: '/blog/content/images/image-relative-url.png',
|
||||
author: {image: '/blog/content/images/author-image-relatve-url.png'}
|
||||
},
|
||||
{
|
||||
hash: {absolute: 'true'}
|
||||
});
|
||||
|
||||
var rendered = helpers.img_url('/blog/content/images/image-relative-url.png', {hash: {absolute: 'true'}});
|
||||
should.exist(rendered);
|
||||
rendered.should.equal('http://localhost:82832/blog/content/images/image-relative-url.png');
|
||||
});
|
||||
|
||||
it('should not change output for an external url', function () {
|
||||
var rendered = helpers.image.call({
|
||||
image: 'http://example.com/picture.jpg',
|
||||
author: {
|
||||
image: '/blog/content/images/author-image-relative-url.png'
|
||||
}
|
||||
});
|
||||
|
||||
var rendered = helpers.img_url('http://example.com/picture.jpg', {});
|
||||
should.exist(rendered);
|
||||
rendered.should.equal('http://example.com/picture.jpg');
|
||||
});
|
|
@ -10,7 +10,7 @@ describe('Helpers', function () {
|
|||
var hbsHelpers = ['each', 'if', 'unless', 'with', 'helperMissing', 'blockHelperMissing', 'log', 'lookup'],
|
||||
ghostHelpers = [
|
||||
'asset', 'author', 'body_class', 'content', 'date', 'encode', 'excerpt', 'facebook_url', 'foreach', 'get',
|
||||
'ghost_foot', 'ghost_head', 'has', 'image', 'is', 'meta_description', 'meta_title', 'navigation',
|
||||
'ghost_foot', 'ghost_head', 'has', 'img_url', 'is', 'meta_description', 'meta_title', 'navigation',
|
||||
'next_post', 'page_url', 'pagination', 'plural', 'post_class', 'prev_post', 'tags', 'title', 'twitter_url',
|
||||
'url'
|
||||
],
|
||||
|
|
|
@ -164,7 +164,7 @@ describe('Generators', function () {
|
|||
|
||||
it('adds an image:image element if post has a cover image', function () {
|
||||
var urlNode = generator.createUrlNodeFromDatum(_.extend(makeFakeDatum(100), {
|
||||
image: 'post-100.jpg',
|
||||
feature_image: 'post-100.jpg',
|
||||
page: false
|
||||
}));
|
||||
|
||||
|
@ -177,14 +177,14 @@ describe('Generators', function () {
|
|||
sandbox.stub(generator, 'getData', function () {
|
||||
return Promise.resolve([
|
||||
_.extend(makeFakeDatum(100), {
|
||||
image: 'post-100.jpg',
|
||||
feature_image: 'post-100.jpg',
|
||||
page: false
|
||||
}),
|
||||
_.extend(makeFakeDatum(200), {
|
||||
page: false
|
||||
}),
|
||||
_.extend(makeFakeDatum(300), {
|
||||
image: 'post-300.jpg',
|
||||
feature_image: 'post-300.jpg',
|
||||
page: false
|
||||
})
|
||||
]);
|
||||
|
@ -294,7 +294,7 @@ describe('Generators', function () {
|
|||
|
||||
it('adds an image:image element if page has an image', function () {
|
||||
var urlNode = generator.createUrlNodeFromDatum(_.extend(makeFakeDatum(100), {
|
||||
image: 'page-100.jpg',
|
||||
feature_image: 'page-100.jpg',
|
||||
page: true
|
||||
}));
|
||||
|
||||
|
@ -321,7 +321,7 @@ describe('Generators', function () {
|
|||
|
||||
it('adds an image:image element if tag has an image', function () {
|
||||
var urlNode = generator.createUrlNodeFromDatum(_.extend(makeFakeDatum(100), {
|
||||
image: 'tag-100.jpg'
|
||||
feature_image: 'tag-100.jpg'
|
||||
}));
|
||||
|
||||
urlNode.should.be.a.ValidUrlNode({withImage: true});
|
||||
|
@ -348,7 +348,7 @@ describe('Generators', function () {
|
|||
|
||||
it('does not create a node for a user with visibility that is not public', function () {
|
||||
var urlNode = generator.createUrlNodeFromDatum(_.extend(makeFakeDatum(100), {
|
||||
cover: 'user-100.jpg',
|
||||
cover_image: 'user-100.jpg',
|
||||
status: 'active',
|
||||
visibility: 'notpublic'
|
||||
}));
|
||||
|
@ -358,7 +358,7 @@ describe('Generators', function () {
|
|||
|
||||
it('adds an image:image element if user has a cover image', function () {
|
||||
var urlNode = generator.createUrlNodeFromDatum(_.extend(makeFakeDatum(100), {
|
||||
cover: '/content/images/2016/01/user-100.jpg',
|
||||
cover_image: '/content/images/2016/01/user-100.jpg',
|
||||
status: 'active'
|
||||
}));
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ describe('Themes', function () {
|
|||
var updateTemplateData = middleware[1],
|
||||
themeDataExpectedProps = ['posts_per_page'],
|
||||
blogDataExpectedProps = [
|
||||
'url', 'title', 'description', 'logo', 'cover', 'icon', 'twitter', 'facebook', 'navigation',
|
||||
'url', 'title', 'description', 'logo', 'cover_image', 'icon', 'twitter', 'facebook', 'navigation',
|
||||
'permalinks', 'timezone', 'amp'
|
||||
],
|
||||
updateOptionsStub;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -44,7 +44,7 @@ data.tags = [
|
|||
id: ObjectId.generate(),
|
||||
name: 'photo',
|
||||
slug: 'photo',
|
||||
image: 'some/image/path.jpg',
|
||||
feature_image: 'some/image/path.jpg',
|
||||
description: 'Photo posts',
|
||||
created_by: data.users[1].id
|
||||
},
|
||||
|
@ -52,7 +52,7 @@ data.tags = [
|
|||
id: ObjectId.generate(),
|
||||
name: 'Video',
|
||||
slug: 'video',
|
||||
image: 'some/image/path.jpg',
|
||||
feature_image: 'some/image/path.jpg',
|
||||
description: 'Video posts',
|
||||
created_by: data.users[0].id
|
||||
},
|
||||
|
@ -60,7 +60,7 @@ data.tags = [
|
|||
id: ObjectId.generate(),
|
||||
name: 'Audio',
|
||||
slug: 'audio',
|
||||
image: 'some/image/path.jpg',
|
||||
feature_image: 'some/image/path.jpg',
|
||||
description: 'Audio posts',
|
||||
created_by: data.users[0].id
|
||||
},
|
||||
|
@ -131,7 +131,7 @@ data.posts = [
|
|||
markdown: 'Hello World!',
|
||||
featured: false,
|
||||
author_id: data.users[1].id,
|
||||
image: 'some/image/path.jpg',
|
||||
feature_image: 'some/image/path.jpg',
|
||||
tags: [data.tags[0].id, data.tags[3].id, data.tags[5].id]
|
||||
},
|
||||
{
|
||||
|
@ -141,7 +141,7 @@ data.posts = [
|
|||
markdown: 'Hello World!',
|
||||
featured: false,
|
||||
author_id: data.users[0].id,
|
||||
image: 'some/image/path.jpg',
|
||||
feature_image: 'some/image/path.jpg',
|
||||
tags: [data.tags[0].id, data.tags[2].id]
|
||||
},
|
||||
{
|
||||
|
@ -178,7 +178,7 @@ data.posts = [
|
|||
markdown: 'Hello World!',
|
||||
featured: false,
|
||||
author_id: data.users[0].id,
|
||||
image: 'some/image/path.jpg',
|
||||
feature_image: 'some/image/path.jpg',
|
||||
tags: [data.tags[1].id]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"slug": "welcome-to-ghost",
|
||||
"markdown": "You're live! Nice. \n\n\n\n",
|
||||
"html": "<p>You're live! Nice. <br>\n<img src=\"/images/photos/cat.jpg\" alt=\"Cat Photo\"></p>\n\n<p><img src=\"/images/photos/cat.jpg\" alt=\"Cat Photo\">\n<img src=\"/images/my-image.png\" alt=\"My pic\"></p>",
|
||||
"image": "/images/my-image.png",
|
||||
"feature_image": "/images/my-image.png",
|
||||
"featured": 0,
|
||||
"page": 0,
|
||||
"status": "published",
|
||||
|
@ -52,7 +52,7 @@
|
|||
"name": "Getting Started",
|
||||
"slug": "getting-started",
|
||||
"description": null,
|
||||
"image": "/images/my-image.png",
|
||||
"feature_image": "/images/my-image.png",
|
||||
"parent_id": null,
|
||||
"meta_title": null,
|
||||
"meta_description": null,
|
||||
|
@ -66,8 +66,8 @@
|
|||
{
|
||||
"name": "test user",
|
||||
"email": "test@ghost.org",
|
||||
"image": "/images/my-image.png",
|
||||
"cover": "/images/photos/cat.jpg"
|
||||
"profile_image": "/images/my-image.png",
|
||||
"cover_image": "/images/photos/cat.jpg"
|
||||
}
|
||||
],
|
||||
"posts_tags": [
|
||||
|
@ -79,4 +79,4 @@
|
|||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
82
core/test/utils/fixtures/import/import-data-lts.json
Normal file
82
core/test/utils/fixtures/import/import-data-lts.json
Normal file
|
@ -0,0 +1,82 @@
|
|||
{
|
||||
"images": [
|
||||
{
|
||||
"name": "my-image.png",
|
||||
"path": "/tmp/test/path/images/my-image.png",
|
||||
"originalPath": "images/my-image.png",
|
||||
"targetDir": "/test/content/images",
|
||||
"newPath": "/content/images/my-image.png"
|
||||
},
|
||||
{
|
||||
"name": "photos/cat.jpg",
|
||||
"path": "/tmp/test/path/images/photos/cat.jpg",
|
||||
"originalPath": "images/photos/cat.jpg",
|
||||
"targetDir": "/test/content/images/photos",
|
||||
"newPath": "/content/images/photos/cat.jpg"
|
||||
}
|
||||
],
|
||||
"data": {
|
||||
"meta": {
|
||||
"exported_on": 1388318311015,
|
||||
"version": "000"
|
||||
},
|
||||
"data": {
|
||||
"posts": [
|
||||
{
|
||||
"id": 1,
|
||||
"uuid": "8492fbba-1102-4b53-8e3e-abe207952f0c",
|
||||
"title": "Welcome to Ghost",
|
||||
"slug": "welcome-to-ghost",
|
||||
"markdown": "You're live! Nice. \n\n\n\n",
|
||||
"html": "<p>You're live! Nice. <br>\n<img src=\"/images/photos/cat.jpg\" alt=\"Cat Photo\"></p>\n\n<p><img src=\"/images/photos/cat.jpg\" alt=\"Cat Photo\">\n<img src=\"/images/my-image.png\" alt=\"My pic\"></p>",
|
||||
"image": "/images/my-image.png",
|
||||
"featured": 0,
|
||||
"page": 0,
|
||||
"status": "published",
|
||||
"language": "en_US",
|
||||
"meta_title": null,
|
||||
"meta_description": null,
|
||||
"author_id": 1,
|
||||
"created_at": 1388318310782,
|
||||
"created_by": 1,
|
||||
"updated_at": 1388318310782,
|
||||
"updated_by": 1,
|
||||
"published_at": 1388318310783,
|
||||
"published_by": 1
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
{
|
||||
"id": 1,
|
||||
"uuid": "a950117a-9735-4584-931d-25a28015a80d",
|
||||
"name": "Getting Started",
|
||||
"slug": "getting-started",
|
||||
"description": null,
|
||||
"image": "/images/my-image.png",
|
||||
"parent_id": null,
|
||||
"meta_title": null,
|
||||
"meta_description": null,
|
||||
"created_at": 1388318310790,
|
||||
"created_by": 1,
|
||||
"updated_at": 1388318310790,
|
||||
"updated_by": 1
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"name": "test user",
|
||||
"email": "test@ghost.org",
|
||||
"image": "/images/my-image.png",
|
||||
"cover": "/images/photos/cat.jpg"
|
||||
}
|
||||
],
|
||||
"posts_tags": [
|
||||
{
|
||||
"id": 1,
|
||||
"post_id": 1,
|
||||
"tag_id": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -52,7 +52,7 @@
|
|||
"ghost-ignition": "2.8.11",
|
||||
"ghost-storage-base": "0.0.1",
|
||||
"glob": "5.0.15",
|
||||
"gscan": "0.2.4",
|
||||
"gscan": "1.0.0",
|
||||
"html-to-text": "3.2.0",
|
||||
"icojs": "0.7.2",
|
||||
"image-size": "0.5.1",
|
||||
|
|
144
yarn.lock
144
yarn.lock
|
@ -26,8 +26,8 @@ addressparser@~0.3.2:
|
|||
resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-0.3.2.tgz#59873f35e8fcf6c7361c10239261d76e15348bb2"
|
||||
|
||||
ajv@^4.9.1:
|
||||
version "4.11.5"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd"
|
||||
version "4.11.7"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
|
||||
dependencies:
|
||||
co "^4.6.0"
|
||||
json-stable-stringify "^1.0.1"
|
||||
|
@ -109,11 +109,11 @@ archiver@1.3.0, archiver@^1.0.0:
|
|||
zip-stream "^1.1.0"
|
||||
|
||||
are-we-there-yet@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
|
||||
dependencies:
|
||||
delegates "^1.0.0"
|
||||
readable-stream "^2.0.0 || ^1.1.13"
|
||||
readable-stream "^2.0.6"
|
||||
|
||||
argparse@^1.0.2, argparse@^1.0.7:
|
||||
version "1.0.9"
|
||||
|
@ -135,8 +135,8 @@ arr-diff@^2.0.0:
|
|||
arr-flatten "^1.0.1"
|
||||
|
||||
arr-flatten@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
|
||||
|
||||
array-differ@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -182,12 +182,18 @@ async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2, async@~1.5.2:
|
|||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
||||
|
||||
async@2.1.4, async@^2.0.0:
|
||||
async@2.1.4:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
|
||||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
async@^2.0.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9"
|
||||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
async@~0.1.22:
|
||||
version "0.1.22"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"
|
||||
|
@ -235,8 +241,8 @@ babel-runtime@^6.11.6, babel-runtime@^6.6.1, babel-runtime@^6.9.2:
|
|||
regenerator-runtime "^0.10.0"
|
||||
|
||||
babylon@^6.8.1:
|
||||
version "6.16.1"
|
||||
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3"
|
||||
version "6.17.0"
|
||||
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932"
|
||||
|
||||
bal-util@~1.18.0:
|
||||
version "1.18.0"
|
||||
|
@ -366,8 +372,8 @@ boom@2.x.x:
|
|||
hoek "2.x.x"
|
||||
|
||||
brace-expansion@^1.0.0:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
|
||||
dependencies:
|
||||
balanced-match "^0.4.1"
|
||||
concat-map "0.0.1"
|
||||
|
@ -418,7 +424,7 @@ buffer-equal@0.0.1:
|
|||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
|
||||
|
||||
buffer-shims@^1.0.0:
|
||||
buffer-shims@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
|
||||
|
||||
|
@ -490,8 +496,8 @@ caniuse-api@^1.5.2:
|
|||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
|
||||
version "1.0.30000649"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000649.tgz#1ee1754a6df235450c8b7cd15e0ebf507221a86a"
|
||||
version "1.0.30000660"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000660.tgz#d2d57b309dc5a11bb5b46018f51855f7a41efee5"
|
||||
|
||||
caseless@~0.11.0:
|
||||
version "0.11.0"
|
||||
|
@ -796,8 +802,8 @@ cookie@0.3.1:
|
|||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
|
||||
|
||||
cookiejar@^2.0.6:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.0.tgz#86549689539b6d0e269b6637a304be508194d898"
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a"
|
||||
|
||||
cookies@0.5.0:
|
||||
version "0.5.0"
|
||||
|
@ -965,19 +971,13 @@ debug@2.2.0, debug@~2.2.0:
|
|||
dependencies:
|
||||
ms "0.7.1"
|
||||
|
||||
debug@2.6.1, debug@2.x.x, debug@^2.1.3, debug@^2.2.0:
|
||||
debug@2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
|
||||
dependencies:
|
||||
ms "0.7.2"
|
||||
|
||||
debug@2.6.3:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
|
||||
dependencies:
|
||||
ms "0.7.2"
|
||||
|
||||
debug@2.6.4:
|
||||
debug@2.6.4, debug@2.x.x, debug@^2.1.3, debug@^2.2.0:
|
||||
version "2.6.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0"
|
||||
dependencies:
|
||||
|
@ -1144,8 +1144,8 @@ ee-first@1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
|
||||
electron-to-chromium@^1.2.7:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.2.tgz#b8ce5c93b308db0e92f6d0435c46ddec8f6363ab"
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.8.tgz#b2c8a2c79bb89fbbfd3724d9555e15095b5f5fb6"
|
||||
|
||||
emits@3.0.0:
|
||||
version "3.0.0"
|
||||
|
@ -1486,10 +1486,10 @@ finalhandler@0.5.0:
|
|||
unpipe "~1.0.0"
|
||||
|
||||
finalhandler@~1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8"
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.2.tgz#d0e36f9dbc557f2de14423df6261889e9d60c93a"
|
||||
dependencies:
|
||||
debug "2.6.3"
|
||||
debug "2.6.4"
|
||||
encodeurl "~1.0.1"
|
||||
escape-html "~1.0.3"
|
||||
on-finished "~2.3.0"
|
||||
|
@ -1565,8 +1565,8 @@ forever-agent@~0.6.1:
|
|||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
|
||||
form-data@^2.1.1, form-data@~2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.5"
|
||||
|
@ -1649,8 +1649,8 @@ function-bind@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
|
||||
|
||||
gauge@~2.7.1:
|
||||
version "2.7.3"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09"
|
||||
version "2.7.4"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
|
||||
dependencies:
|
||||
aproba "^1.0.3"
|
||||
console-control-strings "^1.0.0"
|
||||
|
@ -1711,7 +1711,7 @@ ghost-gql@0.0.6:
|
|||
dependencies:
|
||||
lodash "^4.17.4"
|
||||
|
||||
ghost-ignition@2.8.11:
|
||||
ghost-ignition@2.8.11, ghost-ignition@^2.8.2, ghost-ignition@^2.8.7:
|
||||
version "2.8.11"
|
||||
resolved "https://registry.yarnpkg.com/ghost-ignition/-/ghost-ignition-2.8.11.tgz#38a018ca2b63bc57e9f2c9037d45b4714b66eba0"
|
||||
dependencies:
|
||||
|
@ -1727,22 +1727,6 @@ ghost-ignition@2.8.11:
|
|||
prettyjson "1.1.3"
|
||||
uuid "^3.0.0"
|
||||
|
||||
ghost-ignition@^2.8.2, ghost-ignition@^2.8.7:
|
||||
version "2.8.10"
|
||||
resolved "https://registry.yarnpkg.com/ghost-ignition/-/ghost-ignition-2.8.10.tgz#7bde7d3d7d87790736f9991fb4f497154e56db14"
|
||||
dependencies:
|
||||
bunyan "1.8.5"
|
||||
bunyan-loggly "1.1.0"
|
||||
caller "1.0.1"
|
||||
debug "^2.2.0"
|
||||
find-root "1.0.0"
|
||||
json-stringify-safe "5.0.1"
|
||||
lodash "^4.16.4"
|
||||
moment "^2.15.2"
|
||||
nconf "0.8.4"
|
||||
prettyjson "1.1.3"
|
||||
uuid "^3.0.0"
|
||||
|
||||
ghost-storage-base@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ghost-storage-base/-/ghost-storage-base-0.0.1.tgz#b31b57d2e54574a96153a54bf2e9ea599f12bec8"
|
||||
|
@ -1836,8 +1820,8 @@ global-prefix@^0.1.4:
|
|||
which "^1.2.12"
|
||||
|
||||
global@~4.3.0:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df"
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
|
||||
dependencies:
|
||||
min-document "^2.19.0"
|
||||
process "~0.5.1"
|
||||
|
@ -2104,9 +2088,9 @@ grunt@~0.4.0:
|
|||
underscore.string "~2.2.1"
|
||||
which "~1.0.5"
|
||||
|
||||
gscan@0.2.4:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/gscan/-/gscan-0.2.4.tgz#f25f0bfbbc22cf731e8f4279d85b69e8e5bc7ff4"
|
||||
gscan@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/gscan/-/gscan-1.0.0.tgz#7b4e9856e8d987c4d0d9bd39f6aa6e7a2d29c415"
|
||||
dependencies:
|
||||
bluebird "3.4.6"
|
||||
chalk "1.1.1"
|
||||
|
@ -2251,8 +2235,8 @@ hooker@^0.2.3, hooker@~0.2.3:
|
|||
resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959"
|
||||
|
||||
hosted-git-info@^2.1.4:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8"
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
|
||||
|
||||
html-comment-regex@^1.1.0:
|
||||
version "1.1.1"
|
||||
|
@ -3375,13 +3359,13 @@ mkdirp@0.3.2:
|
|||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.2.tgz#4bfb891e9c48b93d6b567f2c3cf2dd3f56bcdef8"
|
||||
|
||||
mkdirp@0.5.0, mkdirp@^0.5.0:
|
||||
mkdirp@0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
|
||||
dependencies:
|
||||
minimist "0.0.8"
|
||||
|
||||
mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
||||
mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||
dependencies:
|
||||
|
@ -3577,8 +3561,8 @@ node-pre-gyp@~0.6.31:
|
|||
tar-pack "^3.4.0"
|
||||
|
||||
node-uuid@^1.4.7, node-uuid@~1.4.7:
|
||||
version "1.4.7"
|
||||
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
|
||||
|
||||
nodemailer@0.7.1:
|
||||
version "0.7.1"
|
||||
|
@ -3620,8 +3604,8 @@ nopt@~1.0.10:
|
|||
abbrev "1"
|
||||
|
||||
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff"
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb"
|
||||
dependencies:
|
||||
hosted-git-info "^2.1.4"
|
||||
is-builtin-module "^1.0.0"
|
||||
|
@ -4161,8 +4145,8 @@ postcss-zindex@^2.0.1:
|
|||
uniqs "^2.0.0"
|
||||
|
||||
postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16:
|
||||
version "5.2.16"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.16.tgz#732b3100000f9ff8379a48a53839ed097376ad57"
|
||||
version "5.2.17"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
js-base64 "^2.1.9"
|
||||
|
@ -4302,8 +4286,8 @@ qs@~6.4.0:
|
|||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
|
||||
|
||||
query-string@^4.1.0:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd"
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
|
||||
dependencies:
|
||||
object-assign "^4.1.0"
|
||||
strict-uri-encode "^1.0.0"
|
||||
|
@ -4382,16 +4366,16 @@ readable-stream@1.1, readable-stream@1.1.14, readable-stream@1.1.x, readable-str
|
|||
isarray "0.0.1"
|
||||
string_decoder "~0.10.x"
|
||||
|
||||
readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.1.5:
|
||||
version "2.2.6"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816"
|
||||
readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5:
|
||||
version "2.2.9"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
|
||||
dependencies:
|
||||
buffer-shims "^1.0.0"
|
||||
buffer-shims "~1.0.0"
|
||||
core-util-is "~1.0.0"
|
||||
inherits "~2.0.1"
|
||||
isarray "~1.0.0"
|
||||
process-nextick-args "~1.0.6"
|
||||
string_decoder "~0.10.x"
|
||||
string_decoder "~1.0.0"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
readable-stream@~1.0.17, readable-stream@~1.0.2:
|
||||
|
@ -4893,8 +4877,8 @@ sqlstring@2.2.0:
|
|||
resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.2.0.tgz#c3135c4ea8abcd7e7ee741a4966a891d86a4f191"
|
||||
|
||||
sshpk@^1.7.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77"
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c"
|
||||
dependencies:
|
||||
asn1 "~0.2.3"
|
||||
assert-plus "^1.0.0"
|
||||
|
@ -4961,6 +4945,12 @@ string_decoder@~0.10.x:
|
|||
version "0.10.31"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||
|
||||
string_decoder@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667"
|
||||
dependencies:
|
||||
buffer-shims "~1.0.0"
|
||||
|
||||
stringstream@~0.0.4:
|
||||
version "0.0.5"
|
||||
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
|
||||
|
@ -5330,8 +5320,8 @@ uuid@^2.0.2:
|
|||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
|
||||
|
||||
v8flags@^2.0.2:
|
||||
version "2.0.12"
|
||||
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.12.tgz#73235d9f7176f8e8833fb286795445f7938d84e5"
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
|
||||
dependencies:
|
||||
user-home "^1.1.1"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue