mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-09-25 09:22:58 +00:00
Merge pull request #4733 from dbolack-ab/v4Metadata
V4 metadata - Initial
This commit is contained in:
Generated
-16
@@ -10862,22 +10862,6 @@
|
|||||||
"url": "https://opencollective.com/mongoose"
|
"url": "https://opencollective.com/mongoose"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mongoose/node_modules/gcp-metadata": {
|
|
||||||
"version": "7.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-7.0.1.tgz",
|
|
||||||
"integrity": "sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
|
||||||
"gaxios": "^7.0.0",
|
|
||||||
"google-logging-utils": "^1.0.0",
|
|
||||||
"json-bigint": "^1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/mongoose/node_modules/mongodb": {
|
"node_modules/mongoose/node_modules/mongodb": {
|
||||||
"version": "7.5.0",
|
"version": "7.5.0",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
|||||||
+26
-20
@@ -2,26 +2,32 @@ import _ from 'lodash';
|
|||||||
|
|
||||||
// Default properties for newly-created brews
|
// Default properties for newly-created brews
|
||||||
const DEFAULT_BREW = {
|
const DEFAULT_BREW = {
|
||||||
title : '',
|
title : '',
|
||||||
text : '',
|
text : '',
|
||||||
style : undefined,
|
style : undefined,
|
||||||
description : '',
|
description : '',
|
||||||
editId : undefined,
|
editId : undefined,
|
||||||
shareId : undefined,
|
shareId : undefined,
|
||||||
createdAt : undefined,
|
createdAt : undefined,
|
||||||
updatedAt : undefined,
|
updatedAt : undefined,
|
||||||
renderer : 'V3',
|
renderer : 'V3',
|
||||||
theme : '5ePHB',
|
theme : '5ePHB',
|
||||||
authors : [],
|
authors : [],
|
||||||
tags : [],
|
tags : [],
|
||||||
lang : 'en',
|
lang : 'en',
|
||||||
thumbnail : '',
|
thumbnail : '',
|
||||||
views : 0,
|
views : 0,
|
||||||
published : false,
|
published : false,
|
||||||
pageCount : 1,
|
pageCount : 1,
|
||||||
gDrive : false,
|
gDrive : false,
|
||||||
trashed : false
|
trashed : false,
|
||||||
|
bleedSize : { top: '.125in', bottom: '.125in', inner: '.125in', outer: '.125in' },
|
||||||
|
safetySpace : { top: '.25in', bottom: '.25in', outer: '.25in', inner: '.5in' },
|
||||||
|
trimSize : { width: '8.5in', height: '11in' },
|
||||||
|
columns : '2',
|
||||||
|
columnGutter : '.125in',
|
||||||
|
license : 'None',
|
||||||
|
legalAuthors : ''
|
||||||
};
|
};
|
||||||
// Default values for older brews with missing properties
|
// Default values for older brews with missing properties
|
||||||
// e.g., missing "renderer" is assumed to be "legacy"
|
// e.g., missing "renderer" is assumed to be "legacy"
|
||||||
|
|||||||
@@ -218,6 +218,14 @@ const api = {
|
|||||||
const metadata = _.pick(brew, ['title', 'description', 'tags', 'renderer', 'theme']);
|
const metadata = _.pick(brew, ['title', 'description', 'tags', 'renderer', 'theme']);
|
||||||
const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets;
|
const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets;
|
||||||
metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined;
|
metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined;
|
||||||
|
metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer };
|
||||||
|
metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner };
|
||||||
|
metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height };
|
||||||
|
metadata.columns = brew?.columns;
|
||||||
|
metadata.columnGutter = brew?.columnGutter;
|
||||||
|
metadata.license = brew?.license;
|
||||||
|
metadata.legalAuthors = brew?.legalAuthors;
|
||||||
|
|
||||||
text = `\`\`\`metadata\n` +
|
text = `\`\`\`metadata\n` +
|
||||||
`${yaml.dump(metadata)}\n` +
|
`${yaml.dump(metadata)}\n` +
|
||||||
`\`\`\`\n\n` +
|
`\`\`\`\n\n` +
|
||||||
|
|||||||
+243
-36
@@ -359,7 +359,27 @@ describe('Tests for api', ()=>{
|
|||||||
style : undefined,
|
style : undefined,
|
||||||
trashed : false,
|
trashed : false,
|
||||||
updatedAt : undefined,
|
updatedAt : undefined,
|
||||||
views : 0
|
views : 0,
|
||||||
|
bleedSize: {
|
||||||
|
top: '.125in',
|
||||||
|
bottom: '.125in',
|
||||||
|
inner: '.125in',
|
||||||
|
outer: '.125in',
|
||||||
|
},
|
||||||
|
columns: '2',
|
||||||
|
columnGutter: '.125in',
|
||||||
|
legalAuthors: '',
|
||||||
|
license: 'None',
|
||||||
|
safetySpace: {
|
||||||
|
top: '.25in',
|
||||||
|
bottom: '.25in',
|
||||||
|
outer: '.25in',
|
||||||
|
inner: '.5in',
|
||||||
|
},
|
||||||
|
trimSize: {
|
||||||
|
width: '8.5in',
|
||||||
|
height: '11in',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
expect(next).toHaveBeenCalled();
|
expect(next).toHaveBeenCalled();
|
||||||
expect(api.getId).toHaveBeenCalledWith(req);
|
expect(api.getId).toHaveBeenCalledWith(req);
|
||||||
@@ -450,7 +470,27 @@ describe('Tests for api', ()=>{
|
|||||||
tags : ['something', 'fun'],
|
tags : ['something', 'fun'],
|
||||||
renderer : 'v3',
|
renderer : 'v3',
|
||||||
theme : 'phb',
|
theme : 'phb',
|
||||||
googleId : '12345'
|
googleId : '12345',
|
||||||
|
bleedSize: {
|
||||||
|
top: '.125in',
|
||||||
|
bottom: '.125in',
|
||||||
|
inner: '.125in',
|
||||||
|
outer: '.125in',
|
||||||
|
},
|
||||||
|
columns: '2',
|
||||||
|
columnGutter: '.125in',
|
||||||
|
legalAuthors: '',
|
||||||
|
license: 'None',
|
||||||
|
safetySpace: {
|
||||||
|
top: '.25in',
|
||||||
|
bottom: '.25in',
|
||||||
|
outer: '.25in',
|
||||||
|
inner: '.5in',
|
||||||
|
},
|
||||||
|
trimSize: {
|
||||||
|
width: '8.5in',
|
||||||
|
height: '11in',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(result).toEqual(`\`\`\`metadata
|
expect(result).toEqual(`\`\`\`metadata
|
||||||
@@ -461,6 +501,23 @@ tags:
|
|||||||
- fun
|
- fun
|
||||||
renderer: v3
|
renderer: v3
|
||||||
theme: phb
|
theme: phb
|
||||||
|
bleedSize:
|
||||||
|
top: .125in
|
||||||
|
bottom: .125in
|
||||||
|
inner: .125in
|
||||||
|
outer: .125in
|
||||||
|
safetySpace:
|
||||||
|
top: .25in
|
||||||
|
bottom: .25in
|
||||||
|
outer: .25in
|
||||||
|
inner: .5in
|
||||||
|
trimSize:
|
||||||
|
width: 8.5in
|
||||||
|
height: 11in
|
||||||
|
columns: '2'
|
||||||
|
columnGutter: .125in
|
||||||
|
license: None
|
||||||
|
legalAuthors: ''
|
||||||
|
|
||||||
\`\`\`
|
\`\`\`
|
||||||
|
|
||||||
@@ -476,7 +533,27 @@ brew`);
|
|||||||
tags : ['something', 'fun'],
|
tags : ['something', 'fun'],
|
||||||
renderer : 'v3',
|
renderer : 'v3',
|
||||||
theme : 'phb',
|
theme : 'phb',
|
||||||
googleId : '12345'
|
googleId : '12345',
|
||||||
|
bleedSize: {
|
||||||
|
top: '.125in',
|
||||||
|
bottom: '.125in',
|
||||||
|
inner: '.125in',
|
||||||
|
outer: '.125in',
|
||||||
|
},
|
||||||
|
columns: '2',
|
||||||
|
columnGutter: '.125in',
|
||||||
|
legalAuthors: '',
|
||||||
|
license: 'None',
|
||||||
|
safetySpace: {
|
||||||
|
top: '.25in',
|
||||||
|
bottom: '.25in',
|
||||||
|
outer: '.25in',
|
||||||
|
inner: '.5in',
|
||||||
|
},
|
||||||
|
trimSize: {
|
||||||
|
width: '8.5in',
|
||||||
|
height: '11in',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(result).toEqual(`\`\`\`metadata
|
expect(result).toEqual(`\`\`\`metadata
|
||||||
@@ -487,6 +564,23 @@ tags:
|
|||||||
- fun
|
- fun
|
||||||
renderer: v3
|
renderer: v3
|
||||||
theme: phb
|
theme: phb
|
||||||
|
bleedSize:
|
||||||
|
top: .125in
|
||||||
|
bottom: .125in
|
||||||
|
inner: .125in
|
||||||
|
outer: .125in
|
||||||
|
safetySpace:
|
||||||
|
top: .25in
|
||||||
|
bottom: .25in
|
||||||
|
outer: .25in
|
||||||
|
inner: .5in
|
||||||
|
trimSize:
|
||||||
|
width: 8.5in
|
||||||
|
height: 11in
|
||||||
|
columns: '2'
|
||||||
|
columnGutter: .125in
|
||||||
|
license: None
|
||||||
|
legalAuthors: ''
|
||||||
|
|
||||||
\`\`\`
|
\`\`\`
|
||||||
|
|
||||||
@@ -593,16 +687,16 @@ brew`);
|
|||||||
|
|
||||||
expect(res.status).toHaveBeenCalledWith(200);
|
expect(res.status).toHaveBeenCalledWith(200);
|
||||||
expect(res.send).toHaveBeenCalledWith({
|
expect(res.send).toHaveBeenCalledWith({
|
||||||
_id : '1',
|
_id : '1',
|
||||||
authors : ['test user'],
|
authors : ['test user'],
|
||||||
createdAt : undefined,
|
createdAt : undefined,
|
||||||
description : '',
|
description : '',
|
||||||
editId : expect.any(String),
|
editId : expect.any(String),
|
||||||
gDrive : false,
|
gDrive : false,
|
||||||
pageCount : 1,
|
pageCount : 1,
|
||||||
published : false,
|
published : false,
|
||||||
renderer : 'V3',
|
renderer : 'V3',
|
||||||
lang : 'en',
|
lang : 'en',
|
||||||
shareId : expect.any(String),
|
shareId : expect.any(String),
|
||||||
style : undefined,
|
style : undefined,
|
||||||
tags : [],
|
tags : [],
|
||||||
@@ -613,7 +707,27 @@ brew`);
|
|||||||
title : 'asdf',
|
title : 'asdf',
|
||||||
trashed : false,
|
trashed : false,
|
||||||
updatedAt : undefined,
|
updatedAt : undefined,
|
||||||
views : 0
|
views : 0,
|
||||||
|
bleedSize: {
|
||||||
|
top: '.125in',
|
||||||
|
bottom: '.125in',
|
||||||
|
inner: '.125in',
|
||||||
|
outer: '.125in',
|
||||||
|
},
|
||||||
|
columns: '2',
|
||||||
|
columnGutter: '.125in',
|
||||||
|
legalAuthors: '',
|
||||||
|
license: 'None',
|
||||||
|
safetySpace: {
|
||||||
|
top: '.25in',
|
||||||
|
bottom: '.25in',
|
||||||
|
outer: '.25in',
|
||||||
|
inner: '.5in',
|
||||||
|
},
|
||||||
|
trimSize: {
|
||||||
|
width: '8.5in',
|
||||||
|
height: '11in',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -651,28 +765,48 @@ brew`);
|
|||||||
expect(google.newGoogleBrew).toHaveBeenCalled();
|
expect(google.newGoogleBrew).toHaveBeenCalled();
|
||||||
expect(res.status).toHaveBeenCalledWith(200);
|
expect(res.status).toHaveBeenCalledWith(200);
|
||||||
expect(res.send).toHaveBeenCalledWith({
|
expect(res.send).toHaveBeenCalledWith({
|
||||||
_id : '1',
|
_id : '1',
|
||||||
authors : ['test user'],
|
authors : ['test user'],
|
||||||
createdAt : undefined,
|
bleedSize: {
|
||||||
description : '',
|
top: '.125in',
|
||||||
editId : expect.any(String),
|
bottom: '.125in',
|
||||||
gDrive : false,
|
inner: '.125in',
|
||||||
pageCount : 1,
|
outer: '.125in',
|
||||||
published : false,
|
},
|
||||||
renderer : 'V3',
|
columns: '2',
|
||||||
lang : 'en',
|
columnGutter: '.125in',
|
||||||
shareId : expect.any(String),
|
createdAt : undefined,
|
||||||
googleId : expect.any(String),
|
description : '',
|
||||||
style : undefined,
|
editId : expect.any(String),
|
||||||
tags : [],
|
gDrive : false,
|
||||||
text : undefined,
|
pageCount : 1,
|
||||||
textBin : undefined,
|
published : false,
|
||||||
theme : '5ePHB',
|
renderer : 'V3',
|
||||||
thumbnail : '',
|
lang : 'en',
|
||||||
title : 'asdf',
|
shareId : expect.any(String),
|
||||||
trashed : false,
|
legalAuthors: '',
|
||||||
updatedAt : undefined,
|
license: 'None',
|
||||||
views : 0
|
safetySpace: {
|
||||||
|
top: '.25in',
|
||||||
|
bottom: '.25in',
|
||||||
|
outer: '.25in',
|
||||||
|
inner: '.5in',
|
||||||
|
},
|
||||||
|
googleId : expect.any(String),
|
||||||
|
style : undefined,
|
||||||
|
tags : [],
|
||||||
|
text : undefined,
|
||||||
|
textBin : undefined,
|
||||||
|
theme : '5ePHB',
|
||||||
|
thumbnail : '',
|
||||||
|
title : 'asdf',
|
||||||
|
trashed : false,
|
||||||
|
trimSize: {
|
||||||
|
width: '8.5in',
|
||||||
|
height: '11in',
|
||||||
|
},
|
||||||
|
updatedAt : undefined,
|
||||||
|
views : 0
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -1164,6 +1298,79 @@ brew`);
|
|||||||
// Text
|
// Text
|
||||||
expect(testBrew.text).toEqual('text\n');
|
expect(testBrew.text).toEqual('text\n');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('extended metadata', async ()=>{
|
||||||
|
const testBrew = {
|
||||||
|
text : '```metadata\n' +
|
||||||
|
'title: title\n' +
|
||||||
|
'description: description\n' +
|
||||||
|
'tags: [ \'tag a\' , \'tag b\' ]\n' +
|
||||||
|
'renderer: legacy\n' +
|
||||||
|
'theme: 5ePHB\n' +
|
||||||
|
'lang: en\n' +
|
||||||
|
'bleedSize:\n' +
|
||||||
|
' top: 1.5in\n' +
|
||||||
|
' bottom: 1.5in\n' +
|
||||||
|
' outer: 1.5in\n' +
|
||||||
|
' inner: 1.5in\n' +
|
||||||
|
'safetySpace:\n' +
|
||||||
|
' top: 1.25in\n' +
|
||||||
|
' bottom: 1.25in\n' +
|
||||||
|
' outer: 1.25in\n' +
|
||||||
|
' inner: 1.5in\n' +
|
||||||
|
'trimSize:\n' +
|
||||||
|
' width: 18.5in\n' +
|
||||||
|
' height: 111in\n' +
|
||||||
|
'columns: 12\n' +
|
||||||
|
'columnGutter: 1.125in\n' +
|
||||||
|
'license: AELF\n' +
|
||||||
|
'legalAuthors: Tom Bombadil\n' +
|
||||||
|
'\n' +
|
||||||
|
'```\n' +
|
||||||
|
'\n' +
|
||||||
|
'```css\n' +
|
||||||
|
'style\n' +
|
||||||
|
'style\n' +
|
||||||
|
'style\n' +
|
||||||
|
'```\n' +
|
||||||
|
'\n' +
|
||||||
|
'text\n'
|
||||||
|
};
|
||||||
|
|
||||||
|
splitTextStyleAndMetadata(testBrew);
|
||||||
|
|
||||||
|
// Metadata
|
||||||
|
expect(testBrew.title).toEqual('title');
|
||||||
|
expect(testBrew.description).toEqual('description');
|
||||||
|
expect(testBrew.renderer).toEqual('legacy');
|
||||||
|
expect(testBrew.theme).toEqual('5ePHB');
|
||||||
|
expect(testBrew.lang).toEqual('en');
|
||||||
|
// Paper Specfications
|
||||||
|
expect(testBrew.bleedSize.top).toEqual('1.5in');
|
||||||
|
expect(testBrew.bleedSize.bottom).toEqual('1.5in');
|
||||||
|
expect(testBrew.bleedSize.inner).toEqual('1.5in');
|
||||||
|
expect(testBrew.bleedSize.outer).toEqual('1.5in');
|
||||||
|
|
||||||
|
expect(testBrew.safetySpace.top).toEqual('1.25in');
|
||||||
|
expect(testBrew.safetySpace.bottom).toEqual('1.25in');
|
||||||
|
expect(testBrew.safetySpace.inner).toEqual('1.5in');
|
||||||
|
expect(testBrew.safetySpace.outer).toEqual('1.25in');
|
||||||
|
|
||||||
|
expect(testBrew.trimSize.width).toEqual('18.5in');
|
||||||
|
expect(testBrew.trimSize.height).toEqual('111in');
|
||||||
|
|
||||||
|
expect(testBrew.columns).toEqual(12);
|
||||||
|
expect(testBrew.columnGutter).toEqual('1.125in');
|
||||||
|
|
||||||
|
// Extended Metadata
|
||||||
|
expect(testBrew.license).toEqual('AELF');
|
||||||
|
expect(testBrew.legalAuthors).toEqual('Tom Bombadil');
|
||||||
|
|
||||||
|
// Style
|
||||||
|
expect(testBrew.style).toEqual('style\nstyle\nstyle\n');
|
||||||
|
// Text
|
||||||
|
expect(testBrew.text).toEqual('text\n');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -93,6 +93,15 @@ const splitTextStyleAndMetadata = (brew)=>{
|
|||||||
const metadata = yaml.load(metadataSection);
|
const metadata = yaml.load(metadataSection);
|
||||||
Object.assign(brew, _.pick(metadata, ['title', 'description', 'renderer', 'theme', 'lang']));
|
Object.assign(brew, _.pick(metadata, ['title', 'description', 'renderer', 'theme', 'lang']));
|
||||||
brew.snippets = yamlSnippetsToText(_.pick(metadata, ['snippets']).snippets || '');
|
brew.snippets = yamlSnippetsToText(_.pick(metadata, ['snippets']).snippets || '');
|
||||||
|
|
||||||
|
brew.bleedSize = { ...metadata.bleedSize };
|
||||||
|
brew.safetySpace = { ...metadata.safetySpace };
|
||||||
|
brew.trimSize = { ...metadata.trimSize };
|
||||||
|
brew.columns = metadata?.columns;
|
||||||
|
brew.columnGutter = metadata?.columnGutter;
|
||||||
|
brew.license = metadata?.license;
|
||||||
|
brew.legalAuthors = metadata.legalAuthors;
|
||||||
|
|
||||||
brew.text = brew.text.slice(index + 6);
|
brew.text = brew.text.slice(index + 6);
|
||||||
}
|
}
|
||||||
if(brew.text.startsWith('```css')) {
|
if(brew.text.startsWith('```css')) {
|
||||||
|
|||||||
Reference in New Issue
Block a user