Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Luc Bourdot
codimd
Commits
f6d8e3ab
Commit
f6d8e3ab
authored
Jan 02, 2017
by
Wu Cheng-Han
Browse files
Remove LZString compression for data storage
parent
c904083d
Changes
5
Hide whitespace changes
Inline
Side-by-side
lib/models/note.js
View file @
f6d8e3ab
...
...
@@ -124,8 +124,6 @@ module.exports = function (sequelize, DataTypes) {
var
body
=
fs
.
readFileSync
(
filePath
,
'
utf8
'
);
var
contentLength
=
body
.
length
;
var
title
=
Note
.
parseNoteTitle
(
body
);
body
=
LZString
.
compressToBase64
(
body
);
title
=
LZString
.
compressToBase64
(
title
);
if
(
fsModifiedTime
.
isAfter
(
dbModifiedTime
)
&&
note
.
content
!==
body
)
{
note
.
update
({
title
:
title
,
...
...
@@ -135,14 +133,14 @@ module.exports = function (sequelize, DataTypes) {
sequelize
.
models
.
Revision
.
saveNoteRevision
(
note
,
function
(
err
,
revision
)
{
if
(
err
)
return
_callback
(
err
,
null
);
// update authorship on after making revision of docs
var
patch
=
dmp
.
patch_fromText
(
LZString
.
decompressFromBase64
(
revision
.
patch
)
)
;
var
patch
=
dmp
.
patch_fromText
(
revision
.
patch
);
var
operations
=
Note
.
transformPatchToOperations
(
patch
,
contentLength
);
var
authorship
=
note
.
authorship
?
JSON
.
parse
(
LZString
.
decompressFromBase64
(
note
.
authorship
))
:
[]
;
var
authorship
=
note
.
authorship
;
for
(
var
i
=
0
;
i
<
operations
.
length
;
i
++
)
{
authorship
=
Note
.
updateAuthorshipByOperation
(
operations
[
i
],
null
,
authorship
);
}
note
.
update
({
authorship
:
LZString
.
compressToBase64
(
JSON
.
stringify
(
authorship
)
)
authorship
:
JSON
.
stringify
(
authorship
)
}).
then
(
function
(
note
)
{
return
callback
(
null
,
note
.
id
);
}).
catch
(
function
(
err
)
{
...
...
@@ -264,10 +262,7 @@ module.exports = function (sequelize, DataTypes) {
return
markdown
.
substr
(
0
,
100
).
replace
(
/
(?:\r\n
|
\r
|
\n)
/g
,
'
'
);
},
decodeTitle
:
function
(
title
)
{
var
decodedTitle
=
LZString
.
decompressFromBase64
(
title
);
if
(
decodedTitle
)
title
=
decodedTitle
;
else
title
=
'
Untitled
'
;
return
title
;
return
title
?
title
:
'
Untitled
'
;
},
generateWebTitle
:
function
(
title
)
{
title
=
!
title
||
title
==
"
Untitled
"
?
"
HackMD - Collaborative markdown notes
"
:
title
+
"
- HackMD
"
;
...
...
@@ -496,8 +491,8 @@ module.exports = function (sequelize, DataTypes) {
if
(
Note
.
checkFileExist
(
filePath
))
{
var
fsCreatedTime
=
moment
(
fs
.
statSync
(
filePath
).
ctime
);
body
=
fs
.
readFileSync
(
filePath
,
'
utf8
'
);
note
.
title
=
LZString
.
compressToBase64
(
Note
.
parseNoteTitle
(
body
)
)
;
note
.
content
=
LZString
.
compressToBase64
(
body
)
;
note
.
title
=
Note
.
parseNoteTitle
(
body
);
note
.
content
=
body
;
if
(
filePath
!==
config
.
defaultnotepath
)
{
note
.
createdAt
=
fsCreatedTime
;
}
...
...
lib/models/revision.js
View file @
f6d8e3ab
...
...
@@ -2,7 +2,6 @@
// external modules
var
Sequelize
=
require
(
"
sequelize
"
);
var
LZString
=
require
(
'
lz-string
'
);
var
async
=
require
(
'
async
'
);
var
moment
=
require
(
'
moment
'
);
var
childProcess
=
require
(
'
child_process
'
);
...
...
@@ -214,7 +213,7 @@ module.exports = function (sequelize, DataTypes) {
Revision
.
create
({
noteId
:
note
.
id
,
lastContent
:
note
.
content
,
length
:
LZString
.
decompressFromBase64
(
note
.
content
)
.
length
,
length
:
note
.
content
.
length
,
authorship
:
note
.
authorship
}).
then
(
function
(
revision
)
{
Revision
.
finishSaveNoteRevision
(
note
,
revision
,
callback
);
...
...
@@ -223,8 +222,8 @@ module.exports = function (sequelize, DataTypes) {
});
}
else
{
var
latestRevision
=
revisions
[
0
];
var
lastContent
=
LZString
.
decompressFromBase64
(
latestRevision
.
content
||
latestRevision
.
lastContent
)
;
var
content
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
lastContent
=
latestRevision
.
content
||
latestRevision
.
lastContent
;
var
content
=
note
.
content
;
sendDmpWorker
({
msg
:
'
create patch
'
,
lastDoc
:
lastContent
,
...
...
@@ -244,9 +243,9 @@ module.exports = function (sequelize, DataTypes) {
}
else
{
Revision
.
create
({
noteId
:
note
.
id
,
patch
:
LZString
.
compressToBase64
(
patch
)
,
patch
:
patch
,
content
:
note
.
content
,
length
:
LZString
.
decompressFromBase64
(
note
.
content
)
.
length
,
length
:
note
.
content
.
length
,
authorship
:
note
.
authorship
}).
then
(
function
(
revision
)
{
// clear last revision content to reduce db size
...
...
lib/realtime.js
View file @
f6d8e3ab
...
...
@@ -152,12 +152,10 @@ function finishUpdateNote(note, _note, callback) {
if
(
!
note
||
!
note
.
server
)
return
callback
(
null
,
null
);
var
body
=
note
.
server
.
document
;
var
title
=
note
.
title
=
models
.
Note
.
parseNoteTitle
(
body
);
title
=
LZString
.
compressToBase64
(
title
);
body
=
LZString
.
compressToBase64
(
body
);
var
values
=
{
title
:
title
,
content
:
body
,
authorship
:
LZString
.
compressToBase64
(
JSON
.
stringify
(
note
.
authorship
))
,
authorship
:
note
.
authorship
,
lastchangeuserId
:
note
.
lastchangeuser
,
lastchangeAt
:
Date
.
now
()
};
...
...
@@ -459,7 +457,7 @@ function startConnection(socket) {
var
lastchangeuser
=
note
.
lastchangeuserId
;
var
lastchangeuserprofile
=
note
.
lastchangeuser
?
models
.
User
.
getProfile
(
note
.
lastchangeuser
)
:
null
;
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
var
createtime
=
note
.
createdAt
;
var
updatetime
=
note
.
lastchangeAt
;
var
server
=
new
ot
.
EditorSocketIOServer
(
body
,
[],
noteId
,
ifMayEdit
,
operationCallback
);
...
...
@@ -479,7 +477,7 @@ function startConnection(socket) {
notes
[
noteId
]
=
{
id
:
noteId
,
alias
:
note
.
alias
,
title
:
LZString
.
decompressFromBase64
(
note
.
title
)
,
title
:
note
.
title
,
owner
:
owner
,
ownerprofile
:
ownerprofile
,
permission
:
note
.
permission
,
...
...
@@ -491,7 +489,7 @@ function startConnection(socket) {
updatetime
:
moment
(
updatetime
).
valueOf
(),
server
:
server
,
authors
:
authors
,
authorship
:
note
.
authorship
?
JSON
.
parse
(
LZString
.
decompressFromBase64
(
note
.
authorship
))
:
[]
authorship
:
note
.
authorship
};
return
finishConnection
(
socket
,
notes
[
noteId
],
users
[
socket
.
id
]);
...
...
lib/response.js
View file @
f6d8e3ab
...
...
@@ -75,7 +75,7 @@ function showIndex(req, res, next) {
}
function
responseHackMD
(
res
,
note
)
{
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
var
meta
=
null
;
try
{
meta
=
models
.
Note
.
parseMeta
(
metaMarked
(
body
).
meta
);
...
...
@@ -191,7 +191,7 @@ function showPublishNote(req, res, next) {
if
(
!
note
)
{
return
response
.
errorNotFound
(
res
);
}
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
var
meta
=
null
;
var
markdown
=
null
;
try
{
...
...
@@ -248,7 +248,7 @@ function actionSlide(req, res, note) {
}
function
actionDownload
(
req
,
res
,
note
)
{
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
var
title
=
models
.
Note
.
decodeTitle
(
note
.
title
);
var
filename
=
title
;
filename
=
encodeURIComponent
(
filename
);
...
...
@@ -265,7 +265,7 @@ function actionDownload(req, res, note) {
}
function
actionInfo
(
req
,
res
,
note
)
{
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
var
meta
=
null
;
var
markdown
=
null
;
try
{
...
...
@@ -297,7 +297,7 @@ function actionInfo(req, res, note) {
}
function
actionPDF
(
req
,
res
,
note
)
{
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
try
{
body
=
metaMarked
(
body
).
markdown
;
}
catch
(
err
)
{
...
...
@@ -479,7 +479,7 @@ function githubActionGist(req, res, note) {
if
(
!
error
&&
httpResponse
.
statusCode
==
200
)
{
var
access_token
=
body
.
access_token
;
if
(
access_token
)
{
var
content
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
content
=
note
.
content
;
var
title
=
models
.
Note
.
decodeTitle
(
note
.
title
);
var
filename
=
title
.
replace
(
'
/
'
,
'
'
)
+
'
.md
'
;
var
gist
=
{
...
...
@@ -579,7 +579,7 @@ function showPublishSlide(req, res, next) {
if
(
!
note
)
{
return
response
.
errorNotFound
(
res
);
}
var
body
=
LZString
.
decompressFromBase64
(
note
.
content
)
;
var
body
=
note
.
content
;
var
meta
=
null
;
var
markdown
=
null
;
try
{
...
...
lib/workers/dmpWorker.js
View file @
f6d8e3ab
// external modules
var
LZString
=
require
(
'
lz-string
'
);
var
DiffMatchPatch
=
require
(
'
diff-match-patch
'
);
var
dmp
=
new
DiffMatchPatch
();
...
...
@@ -80,10 +79,10 @@ function getRevision(revisions, count) {
for
(
var
i
=
0
;
i
<
count
;
i
++
)
{
var
revision
=
revisions
[
i
];
if
(
i
==
0
)
{
startContent
=
LZString
.
decompressFromBase64
(
revision
.
content
||
revision
.
lastContent
)
;
startContent
=
revision
.
content
||
revision
.
lastContent
;
}
if
(
i
!=
count
-
1
)
{
var
patch
=
dmp
.
patch_fromText
(
LZString
.
decompressFromBase64
(
revision
.
patch
)
)
;
var
patch
=
dmp
.
patch_fromText
(
revision
.
patch
);
applyPatches
=
applyPatches
.
concat
(
patch
);
}
lastPatch
=
revision
.
patch
;
...
...
@@ -105,11 +104,11 @@ function getRevision(revisions, count) {
for
(
var
i
=
l
;
i
>=
count
-
1
;
i
--
)
{
var
revision
=
revisions
[
i
];
if
(
i
==
l
)
{
startContent
=
LZString
.
decompressFromBase64
(
revision
.
lastContent
)
;
startContent
=
revision
.
lastContent
;
authorship
=
revision
.
authorship
;
}
if
(
revision
.
patch
)
{
var
patch
=
dmp
.
patch_fromText
(
LZString
.
decompressFromBase64
(
revision
.
patch
)
)
;
var
patch
=
dmp
.
patch_fromText
(
revision
.
patch
);
applyPatches
=
applyPatches
.
concat
(
patch
);
}
lastPatch
=
revision
.
patch
;
...
...
@@ -123,8 +122,8 @@ function getRevision(revisions, count) {
}
var
data
=
{
content
:
finalContent
,
patch
:
dmp
.
patch_fromText
(
LZString
.
decompressFromBase64
(
lastPatch
)
)
,
authorship
:
authorship
?
JSON
.
parse
(
LZString
.
decompressFromBase64
(
authorship
))
:
null
patch
:
dmp
.
patch_fromText
(
lastPatch
),
authorship
:
authorship
};
var
ms_end
=
(
new
Date
()).
getTime
();
if
(
config
.
debug
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment