Giter Site home page Giter Site logo

md2googleslides's People

Contributors

artwr avatar bwplotka avatar dependabot[bot] avatar googleworkspace-bot avatar grant avatar hai-ld avatar jimexist avatar jpoehnelt avatar kospl avatar miriam avatar mlaigre avatar nicholasjackson avatar renovate[bot] avatar rossmeissl avatar sqrrrl avatar wescpy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

md2googleslides's Issues

Image captions

Text appearing in the same block as an image could be uploaded as a caption; I think right now any text on a slide with an image is ignored. Again, if that fits with Slides' layouts.

Error when trying to export supported markdown

Hi,

I am using the as slides.md and getting a #comment error:

# This is a title slide
## Your name here
---
# This is a section title
---
# Section title & body slide
## This is a subtitle
This is the body
---
# Title & body slide
This is the slide body.
---
# This is the main point {.big}
---
# 100% {.big}
This is the body
---
# Two column layout
This is the left column
{.column}
This is the right column
---
# Slides can have images
![](https://placekitten.com/900/900)
---
# Slides can have background images
![](https://placekitten.com/1600/900){.background}
---
# Slides can have videos
@[youtube](MG8KADiRbOU)
---
# Slide title
![](https://placekitten.com/1600/900){.background}
<!--
These are speaker notes.
-->
---
**Bold**, *italics*, and ~~strikethrough~~ may be used.

Ordered lists:
1. Item 1
1. Item 2
  1. Item 2.1

Unordered lists:
* Item 1
* Item 2
  * Item 2.1
---
### I :heart: cats
:heart_eyes_cat:
---
### Hello World
```javascript
console.log('Hello world');

Error:

Unable to generate slides: Error: Unsupported inline HTML element: #comment
    at inlineTokenRules.html_inline (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:274:23)
    at processMarkdownToken (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:84:9)
    at inlineTokenRules.inline (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:229:13)
    at processMarkdownToken (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:84:9)
    at processTokens (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:73:9)
    at extractSlides (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:61:5)
    at SlideGenerator.generateFromMarkdown (/usr/lib/node_modules/md2gslides/lib/slide_generator.js:86:27)
    at generateSlides (/usr/lib/node_modules/md2gslides/bin/md2gslides.js:179:27)
    at tryCallOne (/usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:37:12)
    at /usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:123:15
    at flush (/usr/lib/node_modules/md2gslides/node_modules/asap/raw.js:50:29)
    at process._tickCallback (internal/process/next_tick.js:61:11)
Error: Unsupported inline HTML element: #comment
    at inlineTokenRules.html_inline (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:274:23)
    at processMarkdownToken (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:84:9)
    at inlineTokenRules.inline (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:229:13)
    at processMarkdownToken (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:84:9)
    at processTokens (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:73:9)
    at extractSlides (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:61:5)
    at SlideGenerator.generateFromMarkdown (/usr/lib/node_modules/md2gslides/lib/slide_generator.js:86:27)
    at generateSlides (/usr/lib/node_modules/md2gslides/bin/md2gslides.js:179:27)
    at tryCallOne (/usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:37:12)
    at /usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:123:15
    at flush (/usr/lib/node_modules/md2gslides/node_modules/asap/raw.js:50:29)
    at process._tickCallback (internal/process/next_tick.js:61:11)
{}

Just trying to see everything md2googleslides supports in markdown.

Thanks

Bullet animation?

Does the Google Slides API support Animations? My specific use case is revealing bulleted list items one by one on click ("by paragraph" mode) but I suppose this could be a more general question.

If so, would you be willing to support it?

❤️ ❤️ ❤️

GoogleSlides2md

I want to convert google slides to md files is there any package

Can't convert example code

Hi! I'm unable to convert the example documents given to a gSlide. It appears to be something to do with the parser (at least, that's where the error is). I installed via npm.

Markdown I wrote:

---

# Title!
## Example!

Error I got:

lyneca at lynux in ~/Documents
$ md2gslides git.md
Unable to generate slides: TypeError: Cannot read property 'references' of undefined
    at Array.link (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_inline/link.js:101:25)
    at ParserInline.tokenize (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:135:22)
    at ParserInline.parse (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:163:8)
    at Array.inline (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_core/inline.js:10:23)
    at Core.process (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_core.js:51:13)
    at MarkdownIt.parse (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/index.js:523:13)
    at parseMarkdown (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/lib/extract_slides.js:77:19)
    at extractSlides (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/lib/extract_slides.js:56:18)
    at SlideGenerator.generateFromMarkdown (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/lib/slide_generator.js:86:27)
    at generateSlides (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/bin/md2gslides.js:177:27)
    at tryCallOne (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:37:12)
    at /home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:123:15
    at flush (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/asap/raw.js:50:29)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
TypeError: Cannot read property 'references' of undefined
    at Array.link (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_inline/link.js:101:25)
    at ParserInline.tokenize (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:135:22)
    at ParserInline.parse (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:163:8)
    at Array.inline (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_core/inline.js:10:23)
    at Core.process (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_core.js:51:13)
    at MarkdownIt.parse (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/markdown-it/lib/index.js:523:13)
    at parseMarkdown (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/lib/extract_slides.js:77:19)
    at extractSlides (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/lib/extract_slides.js:56:18)
    at SlideGenerator.generateFromMarkdown (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/lib/slide_generator.js:86:27)
    at generateSlides (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/bin/md2gslides.js:177:27)
    at tryCallOne (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:37:12)
    at /home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:123:15
    at flush (/home/lyneca/.nvm/versions/node/v8.2.1/lib/node_modules/md2gslides/node_modules/asap/raw.js:50:29)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
{}

Read from STDIN

It would be great to be able to pipe Markdown to md2googleslides rather than having to save to a file first! Thank you ❤️

Code block line highlighting?

Hey! This is awesome! I was like, "I wonder if I can turn my markdown into slides somehow...". Thank you! Does this support line highlighting in code blocks? Thx!

ESOCKETTIMEDOUT

I've been having this error since noon. Tried on different computers.

Unable to generate slides: { Error: ESOCKETTIMEDOUT
at ClientRequest. (/usr/local/lib/node_modules/md2gslides/node_modules/request/request.js:816:19)
at Object.onceWrapper (events.js:281:20)
at ClientRequest.emit (events.js:193:13)
at TLSSocket.emitRequestTimeout (_http_client.js:669:40)
at Object.onceWrapper (events.js:281:20)
at TLSSocket.emit (events.js:193:13)
at TLSSocket.Socket._onTimeout (net.js:450:8)
at listOnTimeout (internal/timers.js:535:17)
at processTimers (internal/timers.js:479:7) code: 'ESOCKETTIMEDOUT', connect: false }

Images Not Aligned In Two Column Layout

When I try to have a slide with two columns and an image on the right side, I have to align that image when I generate my slides. Here's an example slide:

# Foo

- Foo bullet
- Bar bullet
- Baz bullet

{.column}

![](https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/1200px-Google_2015_logo.svg.png)

Thanks for the tool! Really enjoy being able to create my decks and have them be available for PRs!

Two Column Layout only for paragraphs - No Bullets.

When I apply bullet formatting to text in the two column layout slide the layout reverts to songle column.

---
# Two column layout

This is the left column

+ This is another row <-- Making this a bullet makes slide single column layout

{.column}

This is the right column

This is another row

I was expecting to create two columns of bulleted lists, side by slide on one slide.

Code Blocks Font Size?

I'm finding it painful to work around not having any control over the font size of the generated code blocks. Do you have any suggestions or workarounds for making the font size smaller? I didn't see a font-size option for the span tags.

install fail with node v13.7.0 because of [email protected]

tried both on mac 10.13.6 and linux 4.14.150+

Badly need help.

npm WARN deprecated [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated [email protected]: use String.prototype.padStart()
/opt/conda/bin/md2gslides -> /opt/conda/lib/node_modules/md2gslides/bin/md2gslides.js

> [email protected] install /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.0/libvips-8.7.0-linux-x64.tar.gz
prebuild-install WARN install No prebuilt binaries found (target=13.7.0 runtime=node arch=x64 libc= platform=linux)
make: Entering directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
  TOUCH Release/obj.target/libvips-cpp.stamp
  CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../src/common.cc:27:0:
../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                    ^~~~~~
../src/common.h:78:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                     ^
../src/common.h:78:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                       ^~~
../src/common.h:78:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                        ^~~~
../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                            ^
../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                             ^~~~~~
../src/common.h:79:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                              ^
../src/common.h:79:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                ^~~
../src/common.h:79:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                                 ^~~~
../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                      ^~~~~~
../src/common.h:80:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                       ^
../src/common.h:80:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                         ^~~
../src/common.h:80:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                                          ^~~~
../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~~~~
../src/common.h:81:65: error: expected primary-expression before ‘>’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^
../src/common.h:81:67: error: ‘obj’ was not declared in this scope
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                   ^~~
../src/common.h:81:84: error: expected primary-expression before ‘attr’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                    ^~~~
../src/common.h:81:37: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:81:90: error: expected ‘;’ before ‘{’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                          ^
../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:84:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                      ^
../src/common.h:84:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~
../src/common.h:84:73: error: expected primary-expression before ‘attr’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                         ^~~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:84:79: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                               ^
../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                     ^~~~~~
../src/common.h:87:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                      ^
../src/common.h:87:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                        ^~~
../src/common.h:87:61: error: expected primary-expression before ‘int’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                             ^~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:87:71: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                                       ^
../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
         ^~~~~~
../src/common.h:93:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                          ^
../src/common.h:93:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
../src/common.h:93:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
                            ino_t
../src/common.h:93:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                      ^
../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                       ^~~~~~~~~~~~~~~~
../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                                       ^
../src/common.cc:34:20: error: redefinition of ‘bool sharp::HasAttr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
        ^~~~~~~
../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^
../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                       ^~~
../src/common.cc:34:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~~
../src/common.cc:37:29: error: redefinition of ‘std::string sharp::AttrAsStr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
               ^~~~~~~~~
../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                              ^
../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~
../src/common.cc:37:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^~~~
../src/common.cc:40:38: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                       ^~~~~~~~~~
../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                       ^
../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                         ^~~
../src/common.cc:40:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                                          ^~~~
../src/common.cc:51:9: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here
   InputDescriptor* CreateInputDescriptor(
                    ^~~~~~~~~~~~~~~~~~~~~
../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
../src/common.cc:51:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                          ^
../src/common.cc:51:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
../src/common.cc:51:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
                            ino_t
../src/common.cc:51:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                      ^
../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                       ^~~~~~~~~~~~~~~~
cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
sharp.target.mk:134: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/opt/conda/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 4.14.150+
gyp ERR! command "/opt/conda/bin/node" "/opt/conda/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
gyp ERR! node -v v13.7.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jovyan/.npm/_logs/2020-02-01T23_42_29_529Z-debug.log
jovyan@jupyter-jun-2exiong-40climate-2ecom:~$ npm install -g md2gslides
npm WARN deprecated [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated [email protected]: use String.prototype.padStart()
/opt/conda/bin/md2gslides -> /opt/conda/lib/node_modules/md2gslides/bin/md2gslides.js

> [email protected] install /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.0/libvips-8.7.0-linux-x64.tar.gz
prebuild-install WARN install No prebuilt binaries found (target=13.7.0 runtime=node arch=x64 libc= platform=linux)
make: Entering directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
  TOUCH Release/obj.target/libvips-cpp.stamp
  CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../src/common.cc:27:0:
../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                    ^~~~~~
../src/common.h:78:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                     ^
../src/common.h:78:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                       ^~~
../src/common.h:78:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                        ^~~~
../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                            ^
../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                             ^~~~~~
../src/common.h:79:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                              ^
../src/common.h:79:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                ^~~
../src/common.h:79:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                                 ^~~~
../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                      ^~~~~~
../src/common.h:80:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                       ^
../src/common.h:80:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                         ^~~
../src/common.h:80:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                                          ^~~~
../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~~~~
../src/common.h:81:65: error: expected primary-expression before ‘>’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^
../src/common.h:81:67: error: ‘obj’ was not declared in this scope
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                   ^~~
../src/common.h:81:84: error: expected primary-expression before ‘attr’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                    ^~~~
../src/common.h:81:37: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:81:90: error: expected ‘;’ before ‘{’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                          ^
../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:84:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                      ^
../src/common.h:84:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~
../src/common.h:84:73: error: expected primary-expression before ‘attr’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                         ^~~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:84:79: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                               ^
../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                     ^~~~~~
../src/common.h:87:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                      ^
../src/common.h:87:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                        ^~~
../src/common.h:87:61: error: expected primary-expression before ‘int’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                             ^~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:87:71: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                                       ^
../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
         ^~~~~~
../src/common.h:93:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                          ^
../src/common.h:93:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
../src/common.h:93:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
                            ino_t
../src/common.h:93:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                      ^
../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                       ^~~~~~~~~~~~~~~~
../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                                       ^
../src/common.cc:34:20: error: redefinition of ‘bool sharp::HasAttr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
        ^~~~~~~
../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^
../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                       ^~~
../src/common.cc:34:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~~
../src/common.cc:37:29: error: redefinition of ‘std::string sharp::AttrAsStr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
               ^~~~~~~~~
../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                              ^
../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~
../src/common.cc:37:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^~~~
../src/common.cc:40:38: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                       ^~~~~~~~~~
../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                       ^
../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                         ^~~
../src/common.cc:40:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                                          ^~~~
../src/common.cc:51:9: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here
   InputDescriptor* CreateInputDescriptor(
                    ^~~~~~~~~~~~~~~~~~~~~
../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
../src/common.cc:51:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                          ^
../src/common.cc:51:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
../src/common.cc:51:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
                            ino_t
../src/common.cc:51:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                      ^
../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                       ^~~~~~~~~~~~~~~~
cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
sharp.target.mk:134: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/opt/conda/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 4.14.150+
gyp ERR! command "/opt/conda/bin/node" "/opt/conda/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
gyp ERR! node -v v13.7.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jovyan/.npm/_logs/2020-02-01T23_42_29_529Z-debug.logjovyan@jupyter-jun-2exiong-40climate-2ecom:~$ npm install -g md2gslides
npm WARN deprecated [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated [email protected]: use String.prototype.padStart()
/opt/conda/bin/md2gslides -> /opt/conda/lib/node_modules/md2gslides/bin/md2gslides.js

> [email protected] install /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.0/libvips-8.7.0-linux-x64.tar.gz
prebuild-install WARN install No prebuilt binaries found (target=13.7.0 runtime=node arch=x64 libc= platform=linux)
make: Entering directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
  TOUCH Release/obj.target/libvips-cpp.stamp
  CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../src/common.cc:27:0:
../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                    ^~~~~~
../src/common.h:78:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                     ^
../src/common.h:78:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                       ^~~
../src/common.h:78:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                        ^~~~
../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                            ^
../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                             ^~~~~~
../src/common.h:79:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                              ^
../src/common.h:79:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                ^~~
../src/common.h:79:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                                 ^~~~
../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                      ^~~~~~
../src/common.h:80:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                       ^
../src/common.h:80:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                         ^~~
../src/common.h:80:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                                          ^~~~
../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~~~~
../src/common.h:81:65: error: expected primary-expression before ‘>’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^
../src/common.h:81:67: error: ‘obj’ was not declared in this scope
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                   ^~~
../src/common.h:81:84: error: expected primary-expression before ‘attr’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                    ^~~~
../src/common.h:81:37: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:81:90: error: expected ‘;’ before ‘{’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                          ^
../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:84:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                      ^
../src/common.h:84:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~
../src/common.h:84:73: error: expected primary-expression before ‘attr’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                         ^~~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:84:79: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                               ^
../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                     ^~~~~~
../src/common.h:87:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                      ^
../src/common.h:87:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                        ^~~
../src/common.h:87:61: error: expected primary-expression before ‘int’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                             ^~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:87:71: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                                       ^
../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
         ^~~~~~
../src/common.h:93:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                          ^
../src/common.h:93:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
../src/common.h:93:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
                            ino_t
../src/common.h:93:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                      ^
../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                       ^~~~~~~~~~~~~~~~
../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                                       ^
../src/common.cc:34:20: error: redefinition of ‘bool sharp::HasAttr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
        ^~~~~~~
../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^
../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                       ^~~
../src/common.cc:34:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~~
../src/common.cc:37:29: error: redefinition of ‘std::string sharp::AttrAsStr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
               ^~~~~~~~~
../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                              ^
../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~
../src/common.cc:37:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^~~~
../src/common.cc:40:38: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                       ^~~~~~~~~~
../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                       ^
../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                         ^~~
../src/common.cc:40:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                                          ^~~~
../src/common.cc:51:9: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here
   InputDescriptor* CreateInputDescriptor(
                    ^~~~~~~~~~~~~~~~~~~~~
../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
../src/common.cc:51:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                          ^
../src/common.cc:51:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
../src/common.cc:51:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
                            ino_t
../src/common.cc:51:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                      ^
../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                       ^~~~~~~~~~~~~~~~
cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
sharp.target.mk:134: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/opt/conda/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 4.14.150+
gyp ERR! command "/opt/conda/bin/node" "/opt/conda/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
gyp ERR! node -v v13.7.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jovyan/.npm/_logs/2020-02-01T23_42_29_529Z-debug.logjovyan@jupyter-jun-2exiong-40climate-2ecom:~$ npm install -g md2gslides
npm WARN deprecated [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated [email protected]: use String.prototype.padStart()
/opt/conda/bin/md2gslides -> /opt/conda/lib/node_modules/md2gslides/bin/md2gslides.js

> [email protected] install /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.0/libvips-8.7.0-linux-x64.tar.gz
prebuild-install WARN install No prebuilt binaries found (target=13.7.0 runtime=node arch=x64 libc= platform=linux)
make: Entering directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
  TOUCH Release/obj.target/libvips-cpp.stamp
  CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../src/common.cc:27:0:
../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                    ^~~~~~
../src/common.h:78:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                     ^
../src/common.h:78:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                       ^~~
../src/common.h:78:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                        ^~~~
../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                            ^
../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                             ^~~~~~
../src/common.h:79:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                              ^
../src/common.h:79:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                ^~~
../src/common.h:79:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                                 ^~~~
../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                      ^~~~~~
../src/common.h:80:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                       ^
../src/common.h:80:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                         ^~~
../src/common.h:80:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                                          ^~~~
../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~~~~
../src/common.h:81:65: error: expected primary-expression before ‘>’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^
../src/common.h:81:67: error: ‘obj’ was not declared in this scope
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                   ^~~
../src/common.h:81:84: error: expected primary-expression before ‘attr’
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                    ^~~~
../src/common.h:81:37: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:81:90: error: expected ‘;’ before ‘{’ token
   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                          ^
../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^~~~~~
../src/common.h:84:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                      ^
../src/common.h:84:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~
../src/common.h:84:73: error: expected primary-expression before ‘attr’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                         ^~~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:84:79: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                               ^
../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                     ^~~~~~
../src/common.h:87:54: error: expected primary-expression before ‘>’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                      ^
../src/common.h:87:56: error: ‘obj’ was not declared in this scope
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                        ^~~
../src/common.h:87:61: error: expected primary-expression before ‘int’
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                             ^~~
../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                          ^~~~~~
../src/common.h:87:71: error: expected ‘;’ before ‘{’ token
   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                                       ^
../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
         ^~~~~~
../src/common.h:93:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                          ^
../src/common.h:93:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
../src/common.h:93:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                            ^~~~~
                            ino_t
../src/common.h:93:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                      ^
../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                       ^~~~~~~~~~~~~~~~
../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                                       ^
../src/common.cc:34:20: error: redefinition of ‘bool sharp::HasAttr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
        ^~~~~~~
../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                    ^~~~~~
../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                     ^
../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                       ^~~
../src/common.cc:34:56: error: expected primary-expression before ‘attr’
   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                                        ^~~~
../src/common.cc:37:29: error: redefinition of ‘std::string sharp::AttrAsStr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
               ^~~~~~~~~
../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                             ^~~~~~
../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                              ^
../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                ^~~
../src/common.cc:37:65: error: expected primary-expression before ‘attr’
   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                                 ^~~~
../src/common.cc:40:38: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                       ^~~~~~~~~~
../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                      ^~~~~~
../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                       ^
../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                         ^~~
../src/common.cc:40:74: error: expected primary-expression before ‘attr’
   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                                          ^~~~
../src/common.cc:51:9: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
In file included from ../src/common.cc:27:0:
../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here
   InputDescriptor* CreateInputDescriptor(
                    ^~~~~~~~~~~~~~~~~~~~~
../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
         ^~~~~~
../src/common.cc:51:26: error: expected primary-expression before ‘>’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                          ^
../src/common.cc:51:28: error: ‘input’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
../src/common.cc:51:28: note: suggested alternative: ‘ino_t’
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                            ^~~~~
                            ino_t
../src/common.cc:51:70: error: expected primary-expression before ‘&’ token
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                      ^
../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope
     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                       ^~~~~~~~~~~~~~~~
cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
sharp.target.mk:134: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/opt/conda/lib/node_modules/md2gslides/node_modules/sharp/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/opt/conda/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 4.14.150+
gyp ERR! command "/opt/conda/bin/node" "/opt/conda/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /opt/conda/lib/node_modules/md2gslides/node_modules/sharp
gyp ERR! node -v v13.7.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jovyan/.npm/_logs/2020-02-01T23_42_29_529Z-debug.log

Working but styles not being used

I got everything working but the styles from highlight.js. It isn't a path issue, as I've tested for that... but whatever theme I choose it still just uploads the same way (white background with black text), even if I change the default theme to something else. I don't see any errors anywhere, it just seems to check for the style file and then ignore it. Any ideas?

Compatibility with Remark.js

Remark.js is an awesome tool for creating html slide with markdown and it also supports an external .md file.
The external .md file has some syntax that md2googleslides doesn't support and generate an error when I upload .md file to drive.
It would be awesome if this tool could support the Remark.js styling syntax like:

background-image: url(img/image.jpg)
class: center, middle

or

.center[ ![Alt Text](some_domain.tld/img/my_image.jpg) ]

Thanks

Any way to specify folder in Drive to save to?

I LOVE this. It increases my productivity significantly. However, it would be so much better if I could specify where the generates slides are saved on my drive. Or even if I generate one time and move it, if I can push changes to the new location.

Are there any technical hurdles that I'm unaware of? I'd be happy to contribute code but want to make sure I'm not trying to build something you've already considered and decided against.

Timeout, unable to generate slides

I've been able to generate slides previously but recently it's been timing out. The app is still authenticated and an empty presentation is created so I don't see an issue there.

Is there a setting or modification I can make to extend the timeout and/or enable debug logging?

md2gslides -u [email protected] -t TestPresentation1 -e -n example.md
Unable to generate slides: { Error: ETIMEDOUT
    at Timeout._onTimeout (/usr/local/lib/node_modules/md2gslides/node_modules/request/request.js:759:15)
    at ontimeout (timers.js:469:11)
    at tryOnTimeout (timers.js:304:5)
    at Timer.listOnTimeout (timers.js:264:5) code: 'ETIMEDOUT', connect: false }
Error: ETIMEDOUT
    at Timeout._onTimeout (/usr/local/lib/node_modules/md2gslides/node_modules/request/request.js:759:15)
    at ontimeout (timers.js:469:11)
    at tryOnTimeout (timers.js:304:5)
    at Timer.listOnTimeout (timers.js:264:5)
{
  "code": "ETIMEDOUT",
  "connect": false
}

Note, this was trying to generate a presentation based on the example.md in the examples/ folder. It worked previously as mentioned so there seems to be something else at fault here.

failed to install using 'npm install -g md2gslides'

I tried to install on MacOSX Mojave 10.14.5 (18F132), but got this error message:

mylaptop:~ sharuzzamanahmatraslan$ npm install -g md2gslides
npm WARN deprecated [email protected]: use String.prototype.padStart()
/usr/local/bin/md2gslides -> /usr/local/lib/node_modules/md2gslides/bin/md2gslides.js

[email protected] install /usr/local/lib/node_modules/md2gslides/node_modules/sharp
(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

info sharp Using cached /Users/sharuzzamanahmatraslan/.npm/_libvips/libvips-8.7.0-darwin-x64.tar.gz
prebuild-install WARN install No prebuilt binaries found (target=12.1.0 runtime=node arch=x64 libc= platform=darwin)
TOUCH Release/obj.target/libvips-cpp.stamp
CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../src/common.cc:27:
../src/common.h:78:20: error: no member named 'Handle' in namespace 'v8'
bool HasAttr(v8::Handlev8::Object obj, std::string attr);
~~~~^
../src/common.h:78:37: error: expected '(' for function-style cast or type construction
bool HasAttr(v8::Handlev8::Object obj, std::string attr);
~~~~~~~~~~^
../src/common.h:78:39: error: use of undeclared identifier 'obj'
bool HasAttr(v8::Handlev8::Object obj, std::string attr);
^
../src/common.h:78:56: error: expected '(' for function-style cast or type construction
bool HasAttr(v8::Handlev8::Object obj, std::string attr);
~~~~~~~~~~~ ^
../src/common.h:79:29: error: no member named 'Handle' in namespace 'v8'
std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
~~~~^
../src/common.h:79:46: error: expected '(' for function-style cast or type construction
std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
~~~~~~~~~~^
../src/common.h:79:48: error: use of undeclared identifier 'obj'
std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
^
../src/common.h:79:65: error: expected '(' for function-style cast or type construction
std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
~~~~~~~~~~~ ^
../src/common.h:80:38: error: no member named 'Handle' in namespace 'v8'
std::vector AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
~~~~^
../src/common.h:80:55: error: expected '(' for function-style cast or type construction
std::vector AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
~~~~~~~~~~^
../src/common.h:80:57: error: use of undeclared identifier 'obj'
std::vector AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
^
../src/common.h:80:74: error: expected '(' for function-style cast or type construction
std::vector AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
~~~~~~~~~~~ ^
../src/common.h:81:37: warning: variable templates are a C++14 extension [-Wc++14-extensions]
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
^
../src/common.h:81:48: error: no member named 'Handle' in namespace 'v8'
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
~~~~^
../src/common.h:81:65: error: expected '(' for function-style cast or type construction
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
~~~~~~~~~~^
../src/common.h:81:67: error: use of undeclared identifier 'obj'
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
^
../src/common.h:81:84: error: expected '(' for function-style cast or type construction
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
~~~~~~~~~~~ ^
../src/common.h:81:89: error: expected ';' at end of declaration
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
^
;
../src/common.h:81:90: error: expected unqualified-id
template v8::Local AttrAs(v8::Handlev8::Object obj, std::string attr) {
^
../src/common.h:84:26: warning: variable templates are a C++14 extension [-Wc++14-extensions]
template T AttrTo(v8::Handlev8::Object obj, std::string attr) {
^
../src/common.h:84:37: error: no member named 'Handle' in namespace 'v8'
template T AttrTo(v8::Handlev8::Object obj, std::string attr) {
~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.
make: *** [Release/obj.target/sharp/src/common.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:196:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:256:12)
gyp ERR! System Darwin 18.6.0
gyp ERR! command "/usr/local/Cellar/node/12.1.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/md2gslides/node_modules/sharp
gyp ERR! node -v v12.1.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/sharuzzamanahmatraslan/.npm/_logs/2019-05-16T15_05_08_149Z-debug.log

Thank you

Error: Cannot find module '../lib/auth'

Hello !

I really ❤️ md2gslides ! Thank you very much.
I am even writing an article about it (in French) :)
I'd like to create a minimal docker image with it but I'm having problems installing it from the sources (I confess I am a noob in node).
*I am using the sources because I'd like to use the --copy and {layout=...} options

Could you please help me?

Here is the log :

# npm install -g https://github.com/gsuitedevs/md2googleslides
/usr/local/bin/md2gslides -> /usr/local/lib/node_modules/md2gslides/bin/md2gslides.js
+ [email protected]
added 169 packages from 477 contributors in 27.138s
# md2gslides
module.js:550
    throw err;
    ^

Error: Cannot find module '../lib/auth'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/md2gslides/bin/md2gslides.js:25:24)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)

Internal 500 error with specific link formats

When slides are formatted with a title and a link with text following it in a bullet point (denoted with either - or *), it seems to throw an error.

For example, the following slide would error out

---
# Slide title

- text bullet

- [This is hyperlink text](http://www.example.com/) this is text after the hyperlink
---

But the following slide would be fine:

---
# Slide title

- text bullet

- This is text before the hyperlink, [this is hyperlink text](http://www.example.com/) this is text after the hyperlink
---

And the error message is as follows:

{
  "code": 500,
  "errors": [
    {
      "message": "Internal error encountered.",
      "domain": "global",
      "reason": "backendError"
    }
  ]
}

Authorisation Error

Just tried to run md2gslides and got the following error:

Sign in with Google temporarily disabled for this app
This app has not been verified yet by Google in order to use Google Sign In.

Would have thought Google would allow its own devs access!

Footnotes

A {.footnote} attribute to apply to elements would be very useful! I don't know if that's compatible with Slides' layouts.

Code block language type should not be enforced

It appears to be impossible to specify a code block without specifying a language. If you do, you get:

Unable to generate slides: Error: Unknown language: ` ` is not registered

It would be great to not have to specify a language, but just have unformatted text. It does not appear that the language types are based on linguist, which is most common here. Is there a list of supported languages?

Support local images

When I try to convert a slide deck, the images used in my markdown cannot be found by md2googleslides:

Unable to generate slides: Error: Invalid URI "images/PyMC3.png"

This is despite the images directory being in place in the current directory.

Error: Something went wrong installing the "sharp" module

Hello. This seems in install okay,this is the output:

npm WARN prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
npm WARN prepublish-on-install Use `prepare` for build steps and `prepublishOnly` for upload-only.
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.

> [email protected] prepublish /home/cliffy/md2googleslides
> npm run compile


> [email protected] compile /home/cliffy/md2googleslides
> babel --extensions '.ts,.js' --source-maps both -d lib/ src/

Successfully compiled 17 files with Babel.
npm WARN [email protected] requires a peer of acorn@^6.0.0 || ^7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

audited 742 packages in 4.7s

27 packages are looking for funding
  run `npm fund` for details

found 2 vulnerabilities (1 low, 1 moderate)
  run `npm audit fix` to fix them, or `npm audit` for details

But it won't seem to run. I am running Ubuntu 20.04 LTS with Node v14.2.0. I've tried a complete reinstall of node. This has worked great for me in Windows, I'm a bit shaky with Linux, sorry if I've missed something glaring.

This could be related to #68

I tried node version 13.7.0 as mentioned in the fixed issue above and I still get the same error.

Thanks

/usr/local/lib/node_modules/md2gslides/node_modules/sharp/lib/constructor.js:34
  throw new Error(error);
  ^

Error: 
Something went wrong installing the "sharp" module

Cannot find module '../build/Release/sharp.node'
Require stack:
- /usr/local/lib/node_modules/md2gslides/node_modules/sharp/lib/constructor.js
- /usr/local/lib/node_modules/md2gslides/node_modules/sharp/lib/index.js
- /usr/local/lib/node_modules/md2gslides/lib/images/svg.js
- /usr/local/lib/node_modules/md2gslides/lib/images/generate.js
- /usr/local/lib/node_modules/md2gslides/lib/slide_generator.js
- /usr/local/lib/node_modules/md2gslides/bin/md2gslides.js

- Run "npm rebuild --verbose sharp" and look for errors
- Consult the installation documentation at https://sharp.pixelplumbing.com/install
- Search for this error at https://github.com/lovell/sharp/issues

    at Object.<anonymous> (/usr/local/lib/node_modules/md2gslides/node_modules/sharp/lib/constructor.js:34:9)
    at Module._compile (internal/modules/cjs/loader.js:1176:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
    at Module.load (internal/modules/cjs/loader.js:1040:32)
    at Function.Module._load (internal/modules/cjs/loader.js:929:14)
    at Module.require (internal/modules/cjs/loader.js:1080:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/md2gslides/node_modules/sharp/lib/index.js:3:15)
    at Module._compile (internal/modules/cjs/loader.js:1176:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)```

Math support

md2googleslides is a very useful tool. Thanks for the great work. - One feature that is missing (or I couldn't find) is math support (similar to here: http://bit.ly/2RUnjKO). Are there any plans to add it in the future?

Make this a Google Slides script

It would be great if this was a script we can run in Google Slides.
Ideally I can open a dropdown with a text area and paste my markdown there, press save and see the slide deck automatically changing itself. I can always visualise and edit the source markdown from the tab and make further changes. What do you think about this?

Code blocks aren't working

Neither the simple example in the README...

screenshot 2018-09-01 at 21 57 24

... nor the more complex examples/example.md file render blocks of code in monospaced font...

screenshot 2018-09-01 at 21 54 57

TypeError: Cannot read property 'references' of undefined

Using node v9.8.0, it seems to fail when trying to convert the document:

Unable to generate slides: TypeError: Cannot read property 'references' of undefined
    at Array.link (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_inline/link.js:101:26)
    at ParserInline.tokenize (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:135:22)
    at ParserInline.parse (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:163:8)
    at Array.inline (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_core/inline.js:10:23)
    at Core.process (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_core.js:51:13)
    at MarkdownIt.parse (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/index.js:523:13)
    at parseMarkdown (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:77:19)
    at extractSlides (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:56:18)
    at SlideGenerator.generateFromMarkdown (/usr/lib/node_modules/md2gslides/lib/slide_generator.js:86:27)
    at generateSlides (/usr/lib/node_modules/md2gslides/bin/md2gslides.js:177:27)
    at tryCallOne (/usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:37:12)
    at /usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:123:15
    at flush (/usr/lib/node_modules/md2gslides/node_modules/asap/raw.js:50:29)
    at process._tickCallback (internal/process/next_tick.js:112:11)
TypeError: Cannot read property 'references' of undefined
    at Array.link (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_inline/link.js:101:26)
    at ParserInline.tokenize (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:135:22)
    at ParserInline.parse (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_inline.js:163:8)
    at Array.inline (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/rules_core/inline.js:10:23)
    at Core.process (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/parser_core.js:51:13)
    at MarkdownIt.parse (/usr/lib/node_modules/md2gslides/node_modules/markdown-it/lib/index.js:523:13)
    at parseMarkdown (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:77:19)
    at extractSlides (/usr/lib/node_modules/md2gslides/lib/extract_slides.js:56:18)
    at SlideGenerator.generateFromMarkdown (/usr/lib/node_modules/md2gslides/lib/slide_generator.js:86:27)
    at generateSlides (/usr/lib/node_modules/md2gslides/bin/md2gslides.js:177:27)
    at tryCallOne (/usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:37:12)
    at /usr/lib/node_modules/md2gslides/node_modules/promise/lib/core.js:123:15
    at flush (/usr/lib/node_modules/md2gslides/node_modules/asap/raw.js:50:29)
    at process._tickCallback (internal/process/next_tick.js:112:11)
{}

Unable to upload local image in Windows

Let's say I have a local image file called my-code-doesnt-work.jpg alongside my markdown slide and I simply add it to the slide like this:

---
# Title

![](my-code-doesnt-work.jpg)
---

When I executed the converter, error message popped out as follows:

Unable to generate slides: { [Error: ENOENT: no such file or directory, open 'c:\c:\git\others\not-so-personal-notes\Stretch\slides\my-code-doesnt-work.jpg']

After some hacking I was able to pinpoint the cause to this line of code:
https://github.com/gsuitedevs/md2googleslides/blob/master/src/images/probe.ts#L62

I used console.log to print the parsedUrl.pathname and the result was

/c:/git/others/not-so-personal-notes/Stretch/slides/my-code-doesnt-work.jpg

Then it was passed to fs.createReadStream(path); and that's where the error came from.

I can hack it to resolve my issue by using fs.createReadStream(path.substring(1)); but obviously it's not an ideal solution and I have no idea whether it will affect macos / linux or not.

Any ideas?

SVG not working - apparently local image

Good:

md2gslides slides.md works without the SVG slide from my minimal example.

Bad:

If I include the SVG from the example, I get the message Unable to generate slides: Local images require --use-fileio option

You can see what I tried here. I have a self-describing comment that shows right up to where it works.

What else I tried:

I also tried cloning the md2googleslides repo, cd examples and running md2gslides example.md, but I get this message instead:

Unable to generate slides: { ProbeError: unrecognized file format
    at ParserStream.parserEnd (/Users/howard/.nvm/versions/node/v10.13.0/lib/node_modules/md2gslides/node_modules/probe-image-size/stream.js:29:24)
    at Object.onceWrapper (events.js:273:13)
    at ParserStream.emit (events.js:182:13)
    at endReadableNT (_stream_readable.js:1094:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  name: 'ProbeError',
  message: 'unrecognized file format',
  code: 'ECONTENT' }

Sorry if I'm missing something obvious. This tool is interesting.

CodeSurfer-like dynamic code highlighting, zoom in and zoom out transformations.

Hello 👋

Thanks for this awesome tool! We can't wait to use it for our future consistent presentations 💪

Problem

There is one important missing feature in Googe slides and that's why for the latest conference presentations we went for MDX Deck + CodeSurfer

The missing feature is dynamic code highlights, zoom-in, zoom-out transition so you can explain line by line what you are changing. We did this presentation on GoDays and FOSDEM and the feedback was extremely positive. The audience could follow the code much easier and we could explain more than just using static slides with limited size.

You can see the code and effect here: https://github.com/kakkoyun/are-you-testing-your-observability

The tradeoff was enormous though. The MDX Deck has some bugs and it's extremely tedious to set up, use, and build. Especially if you are not a frontend developer - you are essentially building a website. It's brittle, impossible to make it work for all projector resolutions etc, generating PDF's is impossible and you cannot link to one slide. We wrote more CSS than content 🤦

How to solve it?

So we are looking for another solution that will give us dynamic code, zoom in, zoom outs, and dynamic highlight transformations.

Do you think it will be possible to add some pseudo markdown components that will allow doing so? Do you think it is possible? Would you accept such a contribution? We are happy to help, just we definitely need some pointers 🤗

Proposal

The idea would be to base on markdown code blocks with code surfer FOCUS:

`` `go 2:3,4[2:3]

Line1
Line2
Line3

`` `

This will highlight line 2 3 and second, third and fourth character of line 4.

Then we would need some way of describing which slides would be part of the transformation e.g.:

`` `go 2 <slide204>

Line1
Line2

newline
`` `

This will focus our code block on line 2, and animate removal of line3 and animate addition of newline. What to animate will be based on diff from code block on slide 204.
I think with just this simple logic we could achieve a lot and generate Google slides with code and transformations which will add, remove, change fonts etc..

Sounds doable? 🤔 Thanks for help in advance!

cc @kakkoyun

Missing code block highlighting (same background color as the slide)

When inserting code blocks in the Markdown document, the syntax highlighting works but the code block itself is not highlighted.
Below is a sample Markdown document to illustrate my issue:


Start a new project with the template

$ sudo apt-get install cookiecutter
$ cookiecutter someurl foo
$ cd foo && ls
hackage/
tools/
data MyData q =
  MyData
  { name    :: String
  , content :: q
  }

class LatexShowable a
  where toLatex :: a -> String

f :: (LatexShowable a) => a -> IO ()
f = print . toLatex

Here is the Google slide generated with

md2gslides slides.md --style atom-one-dark

image

As you can see, the code blocks do not stand out from the rest of the slide the way the code blocks in this very issue do (by being included in a rectangle with a different background color). Is this something that can be fixed?

I've tried with other --style options (github, tomorrow-night, etc.) but the highlighting of the code block itself is the same.

Other than that, thanks for the great tool! I really like being able to put syntax highlighted code in my slides.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.