From 97c3f088a86bb4244a20f020643a558f2008dea1 Mon Sep 17 00:00:00 2001
From: Rahul Kadyan <hi@znck.me>
Date: Mon, 22 Oct 2018 12:38:27 +0530
Subject: [PATCH] save

---
 package.json                                  |  4 +-
 packages/animate-action/.npmignore            |  3 +
 packages/animate-action/README.md             |  1 +
 packages/animate-action/index.js              |  7 ++
 packages/animate-action/package.json          | 22 +++++
 packages/animate-action/src/index.ts          |  0
 packages/animate-build-in/.npmignore          |  3 +
 packages/animate-build-in/README.md           |  1 +
 packages/animate-build-in/index.js            |  7 ++
 packages/animate-build-in/package.json        | 22 +++++
 packages/animate-build-in/src/index.ts        |  0
 packages/animate-build-out/.npmignore         |  3 +
 packages/animate-build-out/README.md          |  1 +
 packages/animate-build-out/index.js           |  7 ++
 packages/animate-build-out/package.json       | 22 +++++
 packages/animate-build-out/src/index.ts       |  0
 packages/animate-build/.npmignore             |  3 +
 packages/animate-build/README.md              |  1 +
 packages/animate-build/index.js               |  7 ++
 packages/animate-build/package.json           | 22 +++++
 packages/animate-build/src/index.ts           |  0
 packages/animate-transition/.npmignore        |  3 +
 packages/animate-transition/README.md         |  1 +
 packages/animate-transition/index.js          |  7 ++
 packages/animate-transition/package.json      | 22 +++++
 packages/animate-transition/src/index.ts      |  0
 packages/animate/.npmignore                   |  3 +
 packages/animate/README.md                    |  1 +
 packages/animate/index.js                     |  7 ++
 packages/animate/package.json                 | 22 +++++
 packages/animate/src/index.ts                 |  5 +
 packages/cli/.npmignore                       |  3 +
 packages/cli/README.md                        |  1 +
 packages/{@keynote => }/cli/bin/.eslintrc     |  0
 .../{@keynote => }/cli/bin/app/index.html     |  0
 packages/{@keynote => }/cli/bin/build.js      |  0
 packages/{@keynote => }/cli/bin/dev.js        |  0
 packages/{@keynote => }/cli/bin/keynote.js    |  0
 packages/{@keynote => }/cli/bin/utils.js      |  0
 .../cli/bin/webpack/createConfig.js           |  0
 packages/cli/index.js                         |  7 ++
 packages/{@keynote => }/cli/package.json      |  0
 packages/{@keynote => }/cli/shrinkwrap.yaml   |  0
 packages/cli/src/index.ts                     |  0
 packages/core/.npmignore                      |  3 +
 packages/core/README.md                       |  1 +
 packages/core/index.js                        |  7 ++
 packages/{@keynote => }/core/package.json     |  0
 packages/{@keynote => }/core/shrinkwrap.yaml  |  0
 packages/{@keynote => }/core/src/Keynote.vue  |  0
 .../src/SlideController/AutoController.vue    |  0
 .../SlideController/KeyboardController.vue    |  0
 .../src/SlideController/MouseController.vue   |  0
 .../core/src/SlideController/Touch.vue        |  0
 .../src/SlideController/TouchController.vue   |  0
 .../core/src/SlideController/index.js         |  0
 .../src/SlideProcessor/SlideProcessor.vue     |  0
 .../core/src/SlideProcessor/helpers.js        |  0
 .../core/src/SlideProcessor/index.js          |  0
 .../core/src/components/Abstract.vue          |  0
 .../core/src/components/Build.vue             |  0
 .../core/src/components/CodePreview.vue       |  0
 .../core/src/components/ErrorBoundry.vue      |  0
 .../core/src/components/Fit.vue               |  0
 .../core/src/components/Function.vue          |  0
 .../core/src/components/Heading.vue           |  0
 .../core/src/components/Photo.vue             |  0
 .../core/src/components/SlidePresenter.vue    |  0
 .../core/src/components/StoreConsumer.vue     |  0
 .../core/src/components/Subtitle.vue          |  0
 .../core/src/components/Title.vue             |  0
 .../core/src/components/Type.vue              |  0
 .../core/src/components/VirtualElement.vue    |  0
 .../core/src/components/Vnode.vue             |  0
 .../core/src/components/index.js              |  0
 packages/{@keynote => }/core/src/index.js     |  0
 packages/core/src/index.ts                    |  0
 packages/core/src/slide-provider.ts           |  9 ++
 packages/{@keynote => }/core/src/store.js     |  0
 .../core/src/transitions/TransitionNoop.vue   |  0
 .../core/src/transitions/index.js             |  0
 packages/{@keynote => }/core/src/utils.js     |  0
 packages/markdown/.npmignore                  |  3 +
 packages/markdown/README.md                   |  1 +
 packages/markdown/index.js                    |  7 ++
 packages/markdown/package.json                | 22 +++++
 packages/{@keynote => }/markdown/src/index.js |  0
 packages/markdown/src/index.ts                |  0
 packages/presenter/.npmignore                 |  3 +
 packages/presenter/README.md                  |  1 +
 packages/presenter/index.js                   |  7 ++
 packages/presenter/package.json               | 22 +++++
 packages/presenter/src/index.ts               |  7 ++
 packages/theme-default/.npmignore             |  3 +
 packages/theme-default/README.md              |  1 +
 packages/theme-default/index.js               |  7 ++
 .../{@keynote => }/theme-default/package.json |  0
 .../theme-default/src/AuthorSlide.vue         |  0
 .../theme-default/src/PhotoSlide.vue          |  0
 .../theme-default/src/PhotoTitleSlide.vue     |  0
 .../theme-default/src/Slide.vue               |  0
 .../theme-default/src/TitleSlide.vue          |  0
 .../{@keynote => }/theme-default/src/index.js |  0
 packages/theme-default/src/index.ts           |  0
 .../theme-default/src/variables.scss          |  0
 packages/vue-keynote/.npmignore               |  3 +
 packages/vue-keynote/README.md                |  1 +
 packages/vue-keynote/src/index.ts             |  0
 scripts/bootstrap.js                          | 75 ++++++++++++++
 scripts/build.js                              | 98 +++++++++++++++++++
 scripts/dev.js                                | 29 ++++++
 scripts/utils.js                              | 19 ++++
 scripts/verifyCommit.js                       | 32 ++++++
 113 files changed, 577 insertions(+), 2 deletions(-)
 create mode 100644 packages/animate-action/.npmignore
 create mode 100644 packages/animate-action/README.md
 create mode 100644 packages/animate-action/index.js
 create mode 100644 packages/animate-action/package.json
 create mode 100644 packages/animate-action/src/index.ts
 create mode 100644 packages/animate-build-in/.npmignore
 create mode 100644 packages/animate-build-in/README.md
 create mode 100644 packages/animate-build-in/index.js
 create mode 100644 packages/animate-build-in/package.json
 create mode 100644 packages/animate-build-in/src/index.ts
 create mode 100644 packages/animate-build-out/.npmignore
 create mode 100644 packages/animate-build-out/README.md
 create mode 100644 packages/animate-build-out/index.js
 create mode 100644 packages/animate-build-out/package.json
 create mode 100644 packages/animate-build-out/src/index.ts
 create mode 100644 packages/animate-build/.npmignore
 create mode 100644 packages/animate-build/README.md
 create mode 100644 packages/animate-build/index.js
 create mode 100644 packages/animate-build/package.json
 create mode 100644 packages/animate-build/src/index.ts
 create mode 100644 packages/animate-transition/.npmignore
 create mode 100644 packages/animate-transition/README.md
 create mode 100644 packages/animate-transition/index.js
 create mode 100644 packages/animate-transition/package.json
 create mode 100644 packages/animate-transition/src/index.ts
 create mode 100644 packages/animate/.npmignore
 create mode 100644 packages/animate/README.md
 create mode 100644 packages/animate/index.js
 create mode 100644 packages/animate/package.json
 create mode 100644 packages/animate/src/index.ts
 create mode 100644 packages/cli/.npmignore
 create mode 100644 packages/cli/README.md
 rename packages/{@keynote => }/cli/bin/.eslintrc (100%)
 rename packages/{@keynote => }/cli/bin/app/index.html (100%)
 rename packages/{@keynote => }/cli/bin/build.js (100%)
 rename packages/{@keynote => }/cli/bin/dev.js (100%)
 rename packages/{@keynote => }/cli/bin/keynote.js (100%)
 rename packages/{@keynote => }/cli/bin/utils.js (100%)
 rename packages/{@keynote => }/cli/bin/webpack/createConfig.js (100%)
 create mode 100644 packages/cli/index.js
 rename packages/{@keynote => }/cli/package.json (100%)
 rename packages/{@keynote => }/cli/shrinkwrap.yaml (100%)
 create mode 100644 packages/cli/src/index.ts
 create mode 100644 packages/core/.npmignore
 create mode 100644 packages/core/README.md
 create mode 100644 packages/core/index.js
 rename packages/{@keynote => }/core/package.json (100%)
 rename packages/{@keynote => }/core/shrinkwrap.yaml (100%)
 rename packages/{@keynote => }/core/src/Keynote.vue (100%)
 rename packages/{@keynote => }/core/src/SlideController/AutoController.vue (100%)
 rename packages/{@keynote => }/core/src/SlideController/KeyboardController.vue (100%)
 rename packages/{@keynote => }/core/src/SlideController/MouseController.vue (100%)
 rename packages/{@keynote => }/core/src/SlideController/Touch.vue (100%)
 rename packages/{@keynote => }/core/src/SlideController/TouchController.vue (100%)
 rename packages/{@keynote => }/core/src/SlideController/index.js (100%)
 rename packages/{@keynote => }/core/src/SlideProcessor/SlideProcessor.vue (100%)
 rename packages/{@keynote => }/core/src/SlideProcessor/helpers.js (100%)
 rename packages/{@keynote => }/core/src/SlideProcessor/index.js (100%)
 rename packages/{@keynote => }/core/src/components/Abstract.vue (100%)
 rename packages/{@keynote => }/core/src/components/Build.vue (100%)
 rename packages/{@keynote => }/core/src/components/CodePreview.vue (100%)
 rename packages/{@keynote => }/core/src/components/ErrorBoundry.vue (100%)
 rename packages/{@keynote => }/core/src/components/Fit.vue (100%)
 rename packages/{@keynote => }/core/src/components/Function.vue (100%)
 rename packages/{@keynote => }/core/src/components/Heading.vue (100%)
 rename packages/{@keynote => }/core/src/components/Photo.vue (100%)
 rename packages/{@keynote => }/core/src/components/SlidePresenter.vue (100%)
 rename packages/{@keynote => }/core/src/components/StoreConsumer.vue (100%)
 rename packages/{@keynote => }/core/src/components/Subtitle.vue (100%)
 rename packages/{@keynote => }/core/src/components/Title.vue (100%)
 rename packages/{@keynote => }/core/src/components/Type.vue (100%)
 rename packages/{@keynote => }/core/src/components/VirtualElement.vue (100%)
 rename packages/{@keynote => }/core/src/components/Vnode.vue (100%)
 rename packages/{@keynote => }/core/src/components/index.js (100%)
 rename packages/{@keynote => }/core/src/index.js (100%)
 create mode 100644 packages/core/src/index.ts
 create mode 100644 packages/core/src/slide-provider.ts
 rename packages/{@keynote => }/core/src/store.js (100%)
 rename packages/{@keynote => }/core/src/transitions/TransitionNoop.vue (100%)
 rename packages/{@keynote => }/core/src/transitions/index.js (100%)
 rename packages/{@keynote => }/core/src/utils.js (100%)
 create mode 100644 packages/markdown/.npmignore
 create mode 100644 packages/markdown/README.md
 create mode 100644 packages/markdown/index.js
 create mode 100644 packages/markdown/package.json
 rename packages/{@keynote => }/markdown/src/index.js (100%)
 create mode 100644 packages/markdown/src/index.ts
 create mode 100644 packages/presenter/.npmignore
 create mode 100644 packages/presenter/README.md
 create mode 100644 packages/presenter/index.js
 create mode 100644 packages/presenter/package.json
 create mode 100644 packages/presenter/src/index.ts
 create mode 100644 packages/theme-default/.npmignore
 create mode 100644 packages/theme-default/README.md
 create mode 100644 packages/theme-default/index.js
 rename packages/{@keynote => }/theme-default/package.json (100%)
 rename packages/{@keynote => }/theme-default/src/AuthorSlide.vue (100%)
 rename packages/{@keynote => }/theme-default/src/PhotoSlide.vue (100%)
 rename packages/{@keynote => }/theme-default/src/PhotoTitleSlide.vue (100%)
 rename packages/{@keynote => }/theme-default/src/Slide.vue (100%)
 rename packages/{@keynote => }/theme-default/src/TitleSlide.vue (100%)
 rename packages/{@keynote => }/theme-default/src/index.js (100%)
 create mode 100644 packages/theme-default/src/index.ts
 rename packages/{@keynote => }/theme-default/src/variables.scss (100%)
 create mode 100644 packages/vue-keynote/.npmignore
 create mode 100644 packages/vue-keynote/README.md
 create mode 100644 packages/vue-keynote/src/index.ts
 create mode 100644 scripts/bootstrap.js
 create mode 100644 scripts/build.js
 create mode 100644 scripts/dev.js
 create mode 100644 scripts/utils.js
 create mode 100644 scripts/verifyCommit.js

diff --git a/package.json b/package.json
index 063c156..15176e0 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
   "scripts": {
     "docs:dev": "vuepress dev docs",
     "docs:build": "vuepress build docs",
-    "release": "lerna exec pnpm run build && lerna publish"
+    "build": "node scripts/build.js"
   },
   "prettier": {
     "semi": false,
@@ -12,4 +12,4 @@
   "devDependencies": {
     "lerna": "^2.11.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/animate-action/.npmignore b/packages/animate-action/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/animate-action/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/animate-action/README.md b/packages/animate-action/README.md
new file mode 100644
index 0000000..364ff17
--- /dev/null
+++ b/packages/animate-action/README.md
@@ -0,0 +1 @@
+# @keynote/animate-action
\ No newline at end of file
diff --git a/packages/animate-action/index.js b/packages/animate-action/index.js
new file mode 100644
index 0000000..d207ad9
--- /dev/null
+++ b/packages/animate-action/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/animate-action.cjs.prod.js')
+} else {
+  module.exports = require('./dist/animate-action.cjs.js')
+}
diff --git a/packages/animate-action/package.json b/packages/animate-action/package.json
new file mode 100644
index 0000000..2c9bce0
--- /dev/null
+++ b/packages/animate-action/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/animate-action",
+  "version": "1.1.2",
+  "description": "@keynote/animate-action",
+  "main": "index.js",
+  "module": "dist/animate-action.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/animate-action#readme"
+}
\ No newline at end of file
diff --git a/packages/animate-action/src/index.ts b/packages/animate-action/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/animate-build-in/.npmignore b/packages/animate-build-in/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/animate-build-in/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/animate-build-in/README.md b/packages/animate-build-in/README.md
new file mode 100644
index 0000000..7f26b01
--- /dev/null
+++ b/packages/animate-build-in/README.md
@@ -0,0 +1 @@
+# @keynote/animate-build-in
\ No newline at end of file
diff --git a/packages/animate-build-in/index.js b/packages/animate-build-in/index.js
new file mode 100644
index 0000000..37c54e5
--- /dev/null
+++ b/packages/animate-build-in/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/animate-build-in.cjs.prod.js')
+} else {
+  module.exports = require('./dist/animate-build-in.cjs.js')
+}
diff --git a/packages/animate-build-in/package.json b/packages/animate-build-in/package.json
new file mode 100644
index 0000000..86ea25b
--- /dev/null
+++ b/packages/animate-build-in/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/animate-build-in",
+  "version": "1.1.2",
+  "description": "@keynote/animate-build-in",
+  "main": "index.js",
+  "module": "dist/animate-build-in.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/animate-build-in#readme"
+}
\ No newline at end of file
diff --git a/packages/animate-build-in/src/index.ts b/packages/animate-build-in/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/animate-build-out/.npmignore b/packages/animate-build-out/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/animate-build-out/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/animate-build-out/README.md b/packages/animate-build-out/README.md
new file mode 100644
index 0000000..9f520b0
--- /dev/null
+++ b/packages/animate-build-out/README.md
@@ -0,0 +1 @@
+# @keynote/animate-build-out
\ No newline at end of file
diff --git a/packages/animate-build-out/index.js b/packages/animate-build-out/index.js
new file mode 100644
index 0000000..02070b4
--- /dev/null
+++ b/packages/animate-build-out/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/animate-build-out.cjs.prod.js')
+} else {
+  module.exports = require('./dist/animate-build-out.cjs.js')
+}
diff --git a/packages/animate-build-out/package.json b/packages/animate-build-out/package.json
new file mode 100644
index 0000000..265898f
--- /dev/null
+++ b/packages/animate-build-out/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/animate-build-out",
+  "version": "1.1.2",
+  "description": "@keynote/animate-build-out",
+  "main": "index.js",
+  "module": "dist/animate-build-out.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/animate-build-out#readme"
+}
\ No newline at end of file
diff --git a/packages/animate-build-out/src/index.ts b/packages/animate-build-out/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/animate-build/.npmignore b/packages/animate-build/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/animate-build/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/animate-build/README.md b/packages/animate-build/README.md
new file mode 100644
index 0000000..7e41c22
--- /dev/null
+++ b/packages/animate-build/README.md
@@ -0,0 +1 @@
+# @keynote/animate-build
\ No newline at end of file
diff --git a/packages/animate-build/index.js b/packages/animate-build/index.js
new file mode 100644
index 0000000..9da8503
--- /dev/null
+++ b/packages/animate-build/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/animate-build.cjs.prod.js')
+} else {
+  module.exports = require('./dist/animate-build.cjs.js')
+}
diff --git a/packages/animate-build/package.json b/packages/animate-build/package.json
new file mode 100644
index 0000000..a9bb72f
--- /dev/null
+++ b/packages/animate-build/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/animate-build",
+  "version": "1.1.2",
+  "description": "@keynote/animate-build",
+  "main": "index.js",
+  "module": "dist/animate-build.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/animate-build#readme"
+}
\ No newline at end of file
diff --git a/packages/animate-build/src/index.ts b/packages/animate-build/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/animate-transition/.npmignore b/packages/animate-transition/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/animate-transition/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/animate-transition/README.md b/packages/animate-transition/README.md
new file mode 100644
index 0000000..a63f1ce
--- /dev/null
+++ b/packages/animate-transition/README.md
@@ -0,0 +1 @@
+# @keynote/animate-transition
\ No newline at end of file
diff --git a/packages/animate-transition/index.js b/packages/animate-transition/index.js
new file mode 100644
index 0000000..275d50f
--- /dev/null
+++ b/packages/animate-transition/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/animate-transition.cjs.prod.js')
+} else {
+  module.exports = require('./dist/animate-transition.cjs.js')
+}
diff --git a/packages/animate-transition/package.json b/packages/animate-transition/package.json
new file mode 100644
index 0000000..de5eeab
--- /dev/null
+++ b/packages/animate-transition/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/animate-transition",
+  "version": "1.1.2",
+  "description": "@keynote/animate-transition",
+  "main": "index.js",
+  "module": "dist/animate-transition.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/animate-transition#readme"
+}
\ No newline at end of file
diff --git a/packages/animate-transition/src/index.ts b/packages/animate-transition/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/animate/.npmignore b/packages/animate/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/animate/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/animate/README.md b/packages/animate/README.md
new file mode 100644
index 0000000..6ac4e05
--- /dev/null
+++ b/packages/animate/README.md
@@ -0,0 +1 @@
+# @keynote/animate
\ No newline at end of file
diff --git a/packages/animate/index.js b/packages/animate/index.js
new file mode 100644
index 0000000..65ce073
--- /dev/null
+++ b/packages/animate/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/animate.cjs.prod.js')
+} else {
+  module.exports = require('./dist/animate.cjs.js')
+}
diff --git a/packages/animate/package.json b/packages/animate/package.json
new file mode 100644
index 0000000..b11cacd
--- /dev/null
+++ b/packages/animate/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/animate",
+  "version": "1.1.2",
+  "description": "@keynote/animate",
+  "main": "index.js",
+  "module": "dist/animate.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/animate#readme"
+}
\ No newline at end of file
diff --git a/packages/animate/src/index.ts b/packages/animate/src/index.ts
new file mode 100644
index 0000000..bf201f9
--- /dev/null
+++ b/packages/animate/src/index.ts
@@ -0,0 +1,5 @@
+export interface BaseAnimationProps {
+  trigger: 'auto' | 'click';
+  delay: number;
+  duration: number;
+}
diff --git a/packages/cli/.npmignore b/packages/cli/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/cli/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/cli/README.md b/packages/cli/README.md
new file mode 100644
index 0000000..e8d747e
--- /dev/null
+++ b/packages/cli/README.md
@@ -0,0 +1 @@
+# @keynote/cli
\ No newline at end of file
diff --git a/packages/@keynote/cli/bin/.eslintrc b/packages/cli/bin/.eslintrc
similarity index 100%
rename from packages/@keynote/cli/bin/.eslintrc
rename to packages/cli/bin/.eslintrc
diff --git a/packages/@keynote/cli/bin/app/index.html b/packages/cli/bin/app/index.html
similarity index 100%
rename from packages/@keynote/cli/bin/app/index.html
rename to packages/cli/bin/app/index.html
diff --git a/packages/@keynote/cli/bin/build.js b/packages/cli/bin/build.js
similarity index 100%
rename from packages/@keynote/cli/bin/build.js
rename to packages/cli/bin/build.js
diff --git a/packages/@keynote/cli/bin/dev.js b/packages/cli/bin/dev.js
similarity index 100%
rename from packages/@keynote/cli/bin/dev.js
rename to packages/cli/bin/dev.js
diff --git a/packages/@keynote/cli/bin/keynote.js b/packages/cli/bin/keynote.js
similarity index 100%
rename from packages/@keynote/cli/bin/keynote.js
rename to packages/cli/bin/keynote.js
diff --git a/packages/@keynote/cli/bin/utils.js b/packages/cli/bin/utils.js
similarity index 100%
rename from packages/@keynote/cli/bin/utils.js
rename to packages/cli/bin/utils.js
diff --git a/packages/@keynote/cli/bin/webpack/createConfig.js b/packages/cli/bin/webpack/createConfig.js
similarity index 100%
rename from packages/@keynote/cli/bin/webpack/createConfig.js
rename to packages/cli/bin/webpack/createConfig.js
diff --git a/packages/cli/index.js b/packages/cli/index.js
new file mode 100644
index 0000000..a531739
--- /dev/null
+++ b/packages/cli/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/cli.cjs.prod.js')
+} else {
+  module.exports = require('./dist/cli.cjs.js')
+}
diff --git a/packages/@keynote/cli/package.json b/packages/cli/package.json
similarity index 100%
rename from packages/@keynote/cli/package.json
rename to packages/cli/package.json
diff --git a/packages/@keynote/cli/shrinkwrap.yaml b/packages/cli/shrinkwrap.yaml
similarity index 100%
rename from packages/@keynote/cli/shrinkwrap.yaml
rename to packages/cli/shrinkwrap.yaml
diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/core/.npmignore b/packages/core/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/core/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/core/README.md b/packages/core/README.md
new file mode 100644
index 0000000..0f01e93
--- /dev/null
+++ b/packages/core/README.md
@@ -0,0 +1 @@
+# @keynote/core
\ No newline at end of file
diff --git a/packages/core/index.js b/packages/core/index.js
new file mode 100644
index 0000000..435663a
--- /dev/null
+++ b/packages/core/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/core.cjs.prod.js')
+} else {
+  module.exports = require('./dist/core.cjs.js')
+}
diff --git a/packages/@keynote/core/package.json b/packages/core/package.json
similarity index 100%
rename from packages/@keynote/core/package.json
rename to packages/core/package.json
diff --git a/packages/@keynote/core/shrinkwrap.yaml b/packages/core/shrinkwrap.yaml
similarity index 100%
rename from packages/@keynote/core/shrinkwrap.yaml
rename to packages/core/shrinkwrap.yaml
diff --git a/packages/@keynote/core/src/Keynote.vue b/packages/core/src/Keynote.vue
similarity index 100%
rename from packages/@keynote/core/src/Keynote.vue
rename to packages/core/src/Keynote.vue
diff --git a/packages/@keynote/core/src/SlideController/AutoController.vue b/packages/core/src/SlideController/AutoController.vue
similarity index 100%
rename from packages/@keynote/core/src/SlideController/AutoController.vue
rename to packages/core/src/SlideController/AutoController.vue
diff --git a/packages/@keynote/core/src/SlideController/KeyboardController.vue b/packages/core/src/SlideController/KeyboardController.vue
similarity index 100%
rename from packages/@keynote/core/src/SlideController/KeyboardController.vue
rename to packages/core/src/SlideController/KeyboardController.vue
diff --git a/packages/@keynote/core/src/SlideController/MouseController.vue b/packages/core/src/SlideController/MouseController.vue
similarity index 100%
rename from packages/@keynote/core/src/SlideController/MouseController.vue
rename to packages/core/src/SlideController/MouseController.vue
diff --git a/packages/@keynote/core/src/SlideController/Touch.vue b/packages/core/src/SlideController/Touch.vue
similarity index 100%
rename from packages/@keynote/core/src/SlideController/Touch.vue
rename to packages/core/src/SlideController/Touch.vue
diff --git a/packages/@keynote/core/src/SlideController/TouchController.vue b/packages/core/src/SlideController/TouchController.vue
similarity index 100%
rename from packages/@keynote/core/src/SlideController/TouchController.vue
rename to packages/core/src/SlideController/TouchController.vue
diff --git a/packages/@keynote/core/src/SlideController/index.js b/packages/core/src/SlideController/index.js
similarity index 100%
rename from packages/@keynote/core/src/SlideController/index.js
rename to packages/core/src/SlideController/index.js
diff --git a/packages/@keynote/core/src/SlideProcessor/SlideProcessor.vue b/packages/core/src/SlideProcessor/SlideProcessor.vue
similarity index 100%
rename from packages/@keynote/core/src/SlideProcessor/SlideProcessor.vue
rename to packages/core/src/SlideProcessor/SlideProcessor.vue
diff --git a/packages/@keynote/core/src/SlideProcessor/helpers.js b/packages/core/src/SlideProcessor/helpers.js
similarity index 100%
rename from packages/@keynote/core/src/SlideProcessor/helpers.js
rename to packages/core/src/SlideProcessor/helpers.js
diff --git a/packages/@keynote/core/src/SlideProcessor/index.js b/packages/core/src/SlideProcessor/index.js
similarity index 100%
rename from packages/@keynote/core/src/SlideProcessor/index.js
rename to packages/core/src/SlideProcessor/index.js
diff --git a/packages/@keynote/core/src/components/Abstract.vue b/packages/core/src/components/Abstract.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Abstract.vue
rename to packages/core/src/components/Abstract.vue
diff --git a/packages/@keynote/core/src/components/Build.vue b/packages/core/src/components/Build.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Build.vue
rename to packages/core/src/components/Build.vue
diff --git a/packages/@keynote/core/src/components/CodePreview.vue b/packages/core/src/components/CodePreview.vue
similarity index 100%
rename from packages/@keynote/core/src/components/CodePreview.vue
rename to packages/core/src/components/CodePreview.vue
diff --git a/packages/@keynote/core/src/components/ErrorBoundry.vue b/packages/core/src/components/ErrorBoundry.vue
similarity index 100%
rename from packages/@keynote/core/src/components/ErrorBoundry.vue
rename to packages/core/src/components/ErrorBoundry.vue
diff --git a/packages/@keynote/core/src/components/Fit.vue b/packages/core/src/components/Fit.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Fit.vue
rename to packages/core/src/components/Fit.vue
diff --git a/packages/@keynote/core/src/components/Function.vue b/packages/core/src/components/Function.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Function.vue
rename to packages/core/src/components/Function.vue
diff --git a/packages/@keynote/core/src/components/Heading.vue b/packages/core/src/components/Heading.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Heading.vue
rename to packages/core/src/components/Heading.vue
diff --git a/packages/@keynote/core/src/components/Photo.vue b/packages/core/src/components/Photo.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Photo.vue
rename to packages/core/src/components/Photo.vue
diff --git a/packages/@keynote/core/src/components/SlidePresenter.vue b/packages/core/src/components/SlidePresenter.vue
similarity index 100%
rename from packages/@keynote/core/src/components/SlidePresenter.vue
rename to packages/core/src/components/SlidePresenter.vue
diff --git a/packages/@keynote/core/src/components/StoreConsumer.vue b/packages/core/src/components/StoreConsumer.vue
similarity index 100%
rename from packages/@keynote/core/src/components/StoreConsumer.vue
rename to packages/core/src/components/StoreConsumer.vue
diff --git a/packages/@keynote/core/src/components/Subtitle.vue b/packages/core/src/components/Subtitle.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Subtitle.vue
rename to packages/core/src/components/Subtitle.vue
diff --git a/packages/@keynote/core/src/components/Title.vue b/packages/core/src/components/Title.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Title.vue
rename to packages/core/src/components/Title.vue
diff --git a/packages/@keynote/core/src/components/Type.vue b/packages/core/src/components/Type.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Type.vue
rename to packages/core/src/components/Type.vue
diff --git a/packages/@keynote/core/src/components/VirtualElement.vue b/packages/core/src/components/VirtualElement.vue
similarity index 100%
rename from packages/@keynote/core/src/components/VirtualElement.vue
rename to packages/core/src/components/VirtualElement.vue
diff --git a/packages/@keynote/core/src/components/Vnode.vue b/packages/core/src/components/Vnode.vue
similarity index 100%
rename from packages/@keynote/core/src/components/Vnode.vue
rename to packages/core/src/components/Vnode.vue
diff --git a/packages/@keynote/core/src/components/index.js b/packages/core/src/components/index.js
similarity index 100%
rename from packages/@keynote/core/src/components/index.js
rename to packages/core/src/components/index.js
diff --git a/packages/@keynote/core/src/index.js b/packages/core/src/index.js
similarity index 100%
rename from packages/@keynote/core/src/index.js
rename to packages/core/src/index.js
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/core/src/slide-provider.ts b/packages/core/src/slide-provider.ts
new file mode 100644
index 0000000..3ce9b23
--- /dev/null
+++ b/packages/core/src/slide-provider.ts
@@ -0,0 +1,9 @@
+export interface Slide {
+  id: string;
+  index: number;
+}
+
+export interface SlideProvider {
+  getVNodeByIndex(index: number): Slide
+  getVNodeById(id: string): Slide
+}
diff --git a/packages/@keynote/core/src/store.js b/packages/core/src/store.js
similarity index 100%
rename from packages/@keynote/core/src/store.js
rename to packages/core/src/store.js
diff --git a/packages/@keynote/core/src/transitions/TransitionNoop.vue b/packages/core/src/transitions/TransitionNoop.vue
similarity index 100%
rename from packages/@keynote/core/src/transitions/TransitionNoop.vue
rename to packages/core/src/transitions/TransitionNoop.vue
diff --git a/packages/@keynote/core/src/transitions/index.js b/packages/core/src/transitions/index.js
similarity index 100%
rename from packages/@keynote/core/src/transitions/index.js
rename to packages/core/src/transitions/index.js
diff --git a/packages/@keynote/core/src/utils.js b/packages/core/src/utils.js
similarity index 100%
rename from packages/@keynote/core/src/utils.js
rename to packages/core/src/utils.js
diff --git a/packages/markdown/.npmignore b/packages/markdown/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/markdown/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/markdown/README.md b/packages/markdown/README.md
new file mode 100644
index 0000000..23d2925
--- /dev/null
+++ b/packages/markdown/README.md
@@ -0,0 +1 @@
+# @keynote/markdown
\ No newline at end of file
diff --git a/packages/markdown/index.js b/packages/markdown/index.js
new file mode 100644
index 0000000..a2df2f3
--- /dev/null
+++ b/packages/markdown/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/markdown.cjs.prod.js')
+} else {
+  module.exports = require('./dist/markdown.cjs.js')
+}
diff --git a/packages/markdown/package.json b/packages/markdown/package.json
new file mode 100644
index 0000000..7936b69
--- /dev/null
+++ b/packages/markdown/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/markdown",
+  "version": "1.1.2",
+  "description": "@keynote/markdown",
+  "main": "index.js",
+  "module": "dist/markdown.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/markdown#readme"
+}
\ No newline at end of file
diff --git a/packages/@keynote/markdown/src/index.js b/packages/markdown/src/index.js
similarity index 100%
rename from packages/@keynote/markdown/src/index.js
rename to packages/markdown/src/index.js
diff --git a/packages/markdown/src/index.ts b/packages/markdown/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/presenter/.npmignore b/packages/presenter/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/presenter/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/presenter/README.md b/packages/presenter/README.md
new file mode 100644
index 0000000..de6b159
--- /dev/null
+++ b/packages/presenter/README.md
@@ -0,0 +1 @@
+# @keynote/presenter
\ No newline at end of file
diff --git a/packages/presenter/index.js b/packages/presenter/index.js
new file mode 100644
index 0000000..1274650
--- /dev/null
+++ b/packages/presenter/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/presenter.cjs.prod.js')
+} else {
+  module.exports = require('./dist/presenter.cjs.js')
+}
diff --git a/packages/presenter/package.json b/packages/presenter/package.json
new file mode 100644
index 0000000..3103116
--- /dev/null
+++ b/packages/presenter/package.json
@@ -0,0 +1,22 @@
+{
+  "name": "@keynote/presenter",
+  "version": "1.1.2",
+  "description": "@keynote/presenter",
+  "main": "index.js",
+  "module": "dist/presenter.esm-bundler.js",
+  "types": "dist/index.d.ts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keynote/keynote.git"
+  },
+  "keywords": [
+    "vue",
+    "keynote"
+  ],
+  "author": "Rahul Kadyan",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/keynote/keynote/issues"
+  },
+  "homepage": "https://github.com/keynote/keynote/tree/master/packages/presenter#readme"
+}
\ No newline at end of file
diff --git a/packages/presenter/src/index.ts b/packages/presenter/src/index.ts
new file mode 100644
index 0000000..0769f9e
--- /dev/null
+++ b/packages/presenter/src/index.ts
@@ -0,0 +1,7 @@
+import { SlideProvider } from "../../core/src/slide-provider";
+
+export interface PresenterProps {
+  provider: SlideProvider,
+  previousSlideIndex: number,
+  currentSlideIndex: number
+}
diff --git a/packages/theme-default/.npmignore b/packages/theme-default/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/theme-default/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/theme-default/README.md b/packages/theme-default/README.md
new file mode 100644
index 0000000..3656ea9
--- /dev/null
+++ b/packages/theme-default/README.md
@@ -0,0 +1 @@
+# @keynote/theme-default
\ No newline at end of file
diff --git a/packages/theme-default/index.js b/packages/theme-default/index.js
new file mode 100644
index 0000000..fb054a4
--- /dev/null
+++ b/packages/theme-default/index.js
@@ -0,0 +1,7 @@
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/theme-default.cjs.prod.js')
+} else {
+  module.exports = require('./dist/theme-default.cjs.js')
+}
diff --git a/packages/@keynote/theme-default/package.json b/packages/theme-default/package.json
similarity index 100%
rename from packages/@keynote/theme-default/package.json
rename to packages/theme-default/package.json
diff --git a/packages/@keynote/theme-default/src/AuthorSlide.vue b/packages/theme-default/src/AuthorSlide.vue
similarity index 100%
rename from packages/@keynote/theme-default/src/AuthorSlide.vue
rename to packages/theme-default/src/AuthorSlide.vue
diff --git a/packages/@keynote/theme-default/src/PhotoSlide.vue b/packages/theme-default/src/PhotoSlide.vue
similarity index 100%
rename from packages/@keynote/theme-default/src/PhotoSlide.vue
rename to packages/theme-default/src/PhotoSlide.vue
diff --git a/packages/@keynote/theme-default/src/PhotoTitleSlide.vue b/packages/theme-default/src/PhotoTitleSlide.vue
similarity index 100%
rename from packages/@keynote/theme-default/src/PhotoTitleSlide.vue
rename to packages/theme-default/src/PhotoTitleSlide.vue
diff --git a/packages/@keynote/theme-default/src/Slide.vue b/packages/theme-default/src/Slide.vue
similarity index 100%
rename from packages/@keynote/theme-default/src/Slide.vue
rename to packages/theme-default/src/Slide.vue
diff --git a/packages/@keynote/theme-default/src/TitleSlide.vue b/packages/theme-default/src/TitleSlide.vue
similarity index 100%
rename from packages/@keynote/theme-default/src/TitleSlide.vue
rename to packages/theme-default/src/TitleSlide.vue
diff --git a/packages/@keynote/theme-default/src/index.js b/packages/theme-default/src/index.js
similarity index 100%
rename from packages/@keynote/theme-default/src/index.js
rename to packages/theme-default/src/index.js
diff --git a/packages/theme-default/src/index.ts b/packages/theme-default/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/packages/@keynote/theme-default/src/variables.scss b/packages/theme-default/src/variables.scss
similarity index 100%
rename from packages/@keynote/theme-default/src/variables.scss
rename to packages/theme-default/src/variables.scss
diff --git a/packages/vue-keynote/.npmignore b/packages/vue-keynote/.npmignore
new file mode 100644
index 0000000..bb5c8a5
--- /dev/null
+++ b/packages/vue-keynote/.npmignore
@@ -0,0 +1,3 @@
+__tests__/
+__mocks__/
+dist/packages
\ No newline at end of file
diff --git a/packages/vue-keynote/README.md b/packages/vue-keynote/README.md
new file mode 100644
index 0000000..73d880e
--- /dev/null
+++ b/packages/vue-keynote/README.md
@@ -0,0 +1 @@
+# vue-keynote
\ No newline at end of file
diff --git a/packages/vue-keynote/src/index.ts b/packages/vue-keynote/src/index.ts
new file mode 100644
index 0000000..e69de29
diff --git a/scripts/bootstrap.js b/scripts/bootstrap.js
new file mode 100644
index 0000000..fac9a97
--- /dev/null
+++ b/scripts/bootstrap.js
@@ -0,0 +1,75 @@
+// create package.json, README, etc. for packages that don't have them yet
+
+const args = require('minimist')(process.argv.slice(2))
+const fs = require('fs')
+const path = require('path')
+const baseVersion = require('../lerna.json').version
+
+const packagesDir = path.resolve(__dirname, '../packages')
+const files = fs.readdirSync(packagesDir)
+
+files.forEach(shortName => {
+  if (!fs.statSync(path.join(packagesDir, shortName)).isDirectory()) {
+    return
+  }
+
+  const name = shortName === `vue-keynote` ? shortName : `@keynote/${shortName}`
+  const pkgPath = path.join(packagesDir, shortName, `package.json`)
+  if (args.force || !fs.existsSync(pkgPath)) {
+    const json = {
+      name,
+      version: baseVersion,
+      description: name,
+      main: 'index.js',
+      module: `dist/${shortName}.esm-bundler.js`,
+      types: 'dist/index.d.ts',
+      repository: {
+        type: 'git',
+        url: 'git+https://github.com/keynote/keynote.git'
+      },
+      keywords: ['vue', 'keynote'],
+      author: 'Rahul Kadyan',
+      license: 'MIT',
+      bugs: {
+        url: 'https://github.com/keynote/keynote/issues'
+      },
+      homepage: `https://github.com/keynote/keynote/tree/master/packages/${shortName}#readme`
+    }
+    fs.writeFileSync(pkgPath, JSON.stringify(json, null, 2))
+  }
+
+  const readmePath = path.join(packagesDir, shortName, `README.md`)
+  if (args.force || !fs.existsSync(readmePath)) {
+    fs.writeFileSync(readmePath, `# ${name}`)
+  }
+
+  const npmIgnorePath = path.join(packagesDir, shortName, `.npmignore`)
+  if (args.force || !fs.existsSync(npmIgnorePath)) {
+    fs.writeFileSync(npmIgnorePath, `__tests__/\n__mocks__/\ndist/packages`)
+  }
+
+  const srcDir = path.join(packagesDir, shortName, `src`)
+  const indexPath = path.join(packagesDir, shortName, `src/index.ts`)
+  if (args.force || !fs.existsSync(indexPath)) {
+    if (!fs.existsSync(srcDir)) {
+      fs.mkdirSync(srcDir)
+    }
+    fs.writeFileSync(indexPath, ``)
+  }
+
+  const nodeIndexPath = path.join(packagesDir, shortName, 'index.js')
+  if (args.force || !fs.existsSync(nodeIndexPath)) {
+    fs.writeFileSync(
+      nodeIndexPath,
+      `
+'use strict'
+
+if (process.env.NODE_ENV === 'production') {
+  module.exports = require('./dist/${shortName}.cjs.prod.js')
+} else {
+  module.exports = require('./dist/${shortName}.cjs.js')
+}
+    `.trim() + '\n'
+    )
+  }
+})
diff --git a/scripts/build.js b/scripts/build.js
new file mode 100644
index 0000000..86672f2
--- /dev/null
+++ b/scripts/build.js
@@ -0,0 +1,98 @@
+/*
+Produce production builds and stitch together d.ts files.
+
+To specific the package to build, simply pass its name and the desired build
+formats to output (defaults to `buildOptions.formats` specified in that package,
+or "esm,cjs"):
+
+```
+# name supports fuzzy match. will build all packages with name containing "dom":
+yarn build dom
+
+# specify the format to output
+yarn build core --formats cjs
+```
+*/
+
+const fs = require('fs-extra')
+const path = require('path')
+const zlib = require('zlib')
+const chalk = require('chalk')
+const execa = require('execa')
+const dts = require('dts-bundle')
+const { targets, fuzzyMatchTarget } = require('./utils')
+
+const args = require('minimist')(process.argv.slice(2))
+const target = args._[0]
+const formats = args.formats || args.f
+;(async () => {
+  if (!target) {
+    await buildAll(targets)
+    checkAllSizes(targets)
+  } else {
+    await buildAll(fuzzyMatchTarget(target))
+    checkAllSizes(fuzzyMatchTarget(target))
+  }
+})()
+
+async function buildAll(targets) {
+  for (const target of targets) {
+    await build(target)
+  }
+}
+
+async function build(target) {
+  const pkgDir = path.resolve(`packages/${target}`)
+  const pkg = require(`${pkgDir}/package.json`)
+
+  await fs.remove(`${pkgDir}/dist`)
+
+  await execa(
+    'rollup',
+    [
+      '-c',
+      '--environment',
+      `NODE_ENV:production,` +
+        `TARGET:${target}` +
+        (formats ? `,FORMATS:${formats}` : ``)
+    ],
+    { stdio: 'inherit' }
+  )
+
+  if (pkg.types) {
+    const dtsOptions = {
+      name: target === 'vue' ? target : `@vue/${target}`,
+      main: `${pkgDir}/dist/packages/${target}/src/index.d.ts`,
+      out: `${pkgDir}/${pkg.types}`
+    }
+    dts.bundle(dtsOptions)
+    console.log()
+    console.log(
+      chalk.blue(chalk.bold(`generated typings at ${dtsOptions.out}`))
+    )
+
+    await fs.remove(`${pkgDir}/dist/packages`)
+  }
+}
+
+function checkAllSizes(targets) {
+  console.log()
+  for (const target of targets) {
+    checkSize(target)
+  }
+  console.log()
+}
+
+function checkSize(target) {
+  const pkgDir = path.resolve(`packages/${target}`)
+  const esmProdBuild = `${pkgDir}/dist/${target}.esm-browser.prod.js`
+  if (fs.existsSync(esmProdBuild)) {
+    const file = fs.readFileSync(esmProdBuild)
+    const minSize = (file.length / 1024).toFixed(2) + 'kb'
+    const gzipped = zlib.gzipSync(file)
+    const gzipSize = (gzipped.length / 1024).toFixed(2) + 'kb'
+    console.log(
+      `${chalk.gray(chalk.bold(target))} min:${minSize} / gzip:${gzipSize}`
+    )
+  }
+}
diff --git a/scripts/dev.js b/scripts/dev.js
new file mode 100644
index 0000000..887cdfa
--- /dev/null
+++ b/scripts/dev.js
@@ -0,0 +1,29 @@
+/*
+Run Rollup in watch mode for development.
+
+To specific the package to watch, simply pass its name and the desired build
+formats to watch (defaults to "global"):
+
+```
+# name supports fuzzy match. will watch all packages with name containing "dom"
+yarn dev dom
+
+# specify the format to output
+yarn dev core --formats cjs
+```
+*/
+
+const execa = require('execa')
+const { targets, fuzzyMatchTarget } = require('./utils')
+
+const args = require('minimist')(process.argv.slice(2))
+const target = fuzzyMatchTarget(args._[0] || 'renderer-dom')
+const formats = args.formats || args.f
+
+execa(
+  'rollup',
+  ['-wc', '--environment', `TARGET:${target},FORMATS:${formats || 'global'}`],
+  {
+    stdio: 'inherit'
+  }
+)
diff --git a/scripts/utils.js b/scripts/utils.js
new file mode 100644
index 0000000..aa1ca3d
--- /dev/null
+++ b/scripts/utils.js
@@ -0,0 +1,19 @@
+const fs = require('fs')
+
+const targets = exports.targets = fs.readdirSync('packages').filter(f => {
+  return fs.statSync(`packages/${f}`).isDirectory()
+})
+
+exports.fuzzyMatchTarget = partialTarget => {
+  const matched = []
+  for (const target of targets) {
+    if (target.match(partialTarget)) {
+      matched.push(target)
+    }
+  }
+  if (matched.length) {
+    return matched
+  } else {
+    throw new Error(`Target ${partialTarget} not found!`)
+  }
+}
diff --git a/scripts/verifyCommit.js b/scripts/verifyCommit.js
new file mode 100644
index 0000000..97d5386
--- /dev/null
+++ b/scripts/verifyCommit.js
@@ -0,0 +1,32 @@
+// Invoked on the commit-msg git hook by yorkie.
+
+const chalk = require('chalk')
+const msgPath = process.env.GIT_PARAMS
+const msg = require('fs')
+  .readFileSync(msgPath, 'utf-8')
+  .trim()
+
+const commitRE = /^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|build|ci|chore|types|wip)(\(.+\))?: .{1,50}/
+
+if (!commitRE.test(msg)) {
+  console.log()
+  console.error(
+    `  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(
+      `invalid commit message format.`
+    )}\n\n` +
+      chalk.red(
+        `  Proper commit message format is required for automated changelog generation. Examples:\n\n`
+      ) +
+      `    ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
+      `    ${chalk.green(
+        `fix(v-model): handle events on blur (close #28)`
+      )}\n\n` +
+      chalk.red(`  See .github/COMMIT_CONVENTION.md for more details.\n`) +
+      chalk.red(
+        `  You can also use ${chalk.cyan(
+          `npm run commit`
+        )} to interactively generate a commit message.\n`
+      )
+  )
+  process.exit(1)
+}
