Compare commits
No commits in common. "master" and "temp-png" have entirely different histories.
14
README.md
@ -1,6 +1,5 @@
|
|||||||
# Sentinels of the Multiverse Deck Generator/Playfield
|
# Deck Generator/Playfield
|
||||||
|
Currently hosted at http://adamgoldsmith.name:8080
|
||||||
Currently hosted at https://playfield.adamgoldsmith.name
|
|
||||||
|
|
||||||
This project has two major parts: a deck generator, and a virtual
|
This project has two major parts: a deck generator, and a virtual
|
||||||
playfield. The purpose is to allow for creating and playing custom
|
playfield. The purpose is to allow for creating and playing custom
|
||||||
@ -30,9 +29,9 @@ Templates are based on those from BoardGameGeek user Koga, found here:
|
|||||||
https://boardgamegeek.com/thread/813176/card-templates/, but have been
|
https://boardgamegeek.com/thread/813176/card-templates/, but have been
|
||||||
converted to SVG and rather heavily modified/cleaned up.
|
converted to SVG and rather heavily modified/cleaned up.
|
||||||
|
|
||||||
There are some example input files in the `example` folder of this repo.
|
There are some example input jsons in the `testInputs` folder of this repo.
|
||||||
|
|
||||||
## Playfield (currently down for maintenance)
|
## Playfield
|
||||||
|
|
||||||
Can load decks created by the generator. In theory, can play any deck
|
Can load decks created by the generator. In theory, can play any deck
|
||||||
from Tabletop Simulator, with minor effort (it needs to be pointed at
|
from Tabletop Simulator, with minor effort (it needs to be pointed at
|
||||||
@ -54,6 +53,11 @@ Best on a touch screen, but works okay with a mouse.
|
|||||||
* long press on a deck to open a listing, where you can search,
|
* long press on a deck to open a listing, where you can search,
|
||||||
rearrange, and tap to add to playfield
|
rearrange, and tap to add to playfield
|
||||||
|
|
||||||
|
## Libraries
|
||||||
|
|
||||||
|
* The backend uses PhantomJS for rendering decks
|
||||||
|
* The playfield uses interact.js
|
||||||
|
|
||||||
## To do:
|
## To do:
|
||||||
|
|
||||||
There are a lot of things still to be done here, including:
|
There are a lot of things still to be done here, including:
|
||||||
|
9
example/environment.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "Environment Example",
|
||||||
|
"type": "environment"
|
||||||
|
},
|
||||||
|
"deck": [
|
||||||
|
{"count": 1, "keywords": "Ongoing", "name": "Example Card 1", "text": "Card text 1", "hp": 12, "artist": "Art By Adam", "flavor": "Test flavor"},
|
||||||
|
{"count": 1, "keywords": "Oneshot", "name": "Example Card 2", "text": "Card text 2"}]
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
meta:
|
|
||||||
name: Environment Example
|
|
||||||
type: environment
|
|
||||||
cards:
|
|
||||||
deck:
|
|
||||||
- keywords: Ongoing
|
|
||||||
name: Example Card 1
|
|
||||||
text: Card text 1
|
|
||||||
hp: 12
|
|
||||||
artist: Art By Adam
|
|
||||||
flavor: Test flavor
|
|
||||||
- count: 2
|
|
||||||
keywords: Oneshot
|
|
||||||
name: Example Card 2
|
|
||||||
text: Card text 2
|
|
||||||
|
|
15
example/hero.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "Hero Example",
|
||||||
|
"type": "hero"
|
||||||
|
},
|
||||||
|
"character": [{"name": "Hero Example",
|
||||||
|
"hp": 42,
|
||||||
|
"power": "Power Name",
|
||||||
|
"powerText": "Power: Power description",
|
||||||
|
"incapacitated": "{incapacitated effect 1\n\n{incapacitated effect 2"}],
|
||||||
|
"deck": [
|
||||||
|
{"count": 1, "keywords": "Ongoing", "name": "Card 1", "text": "Card text 1", "hp": 12, "artist": "Art By Adam", "quote": "Test Quote", "quoteCitation": "- Adam"},
|
||||||
|
{"count": 2, "keywords": "Oneshot", "name": "Card 2", "text": "Card text 2"}
|
||||||
|
]
|
||||||
|
}
|
@ -1,24 +0,0 @@
|
|||||||
meta:
|
|
||||||
name: Hero Example
|
|
||||||
type: hero
|
|
||||||
cards:
|
|
||||||
character:
|
|
||||||
- name: Hero Example
|
|
||||||
hp: 42
|
|
||||||
power: Power Name
|
|
||||||
powerText: 'Power: Power description'
|
|
||||||
incapacitated: |-
|
|
||||||
<p>{incapacitated effect 1</p>
|
|
||||||
<p>{incapacitated effect 2</p>
|
|
||||||
deck:
|
|
||||||
- name: Card 1
|
|
||||||
hp: 12
|
|
||||||
keywords: Ongoing
|
|
||||||
text: Card text 1
|
|
||||||
quote: Test Quote
|
|
||||||
quoteCitation: "- Adam"
|
|
||||||
artist: Art By Adam
|
|
||||||
- count: 2
|
|
||||||
name: Card 2
|
|
||||||
keywords: Oneshot
|
|
||||||
text: Card text 2
|
|
29
example/villain.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"name": "Villain Example",
|
||||||
|
"type": "villain"
|
||||||
|
},
|
||||||
|
"character": [
|
||||||
|
{"name": "Villain Example",
|
||||||
|
"hp": 32,
|
||||||
|
"title": "Test Front",
|
||||||
|
"back": {
|
||||||
|
"hp": 25,
|
||||||
|
"title": "Test Back"
|
||||||
|
}}],
|
||||||
|
"instructions": [
|
||||||
|
{"name": "Test",
|
||||||
|
"title": "Test Front",
|
||||||
|
"setup": "setup text",
|
||||||
|
"gameplay": "front text",
|
||||||
|
"advanced": "advanced front",
|
||||||
|
"back": {
|
||||||
|
"title": "Test Back",
|
||||||
|
"gameplay": "back text",
|
||||||
|
"advanced": "advanced back"
|
||||||
|
}}],
|
||||||
|
"deck": [
|
||||||
|
{"count": 1, "keywords": "Ongoing", "name": "Test 1", "text": "Example Text 1", "hp": 12, "artist": "Art By Adam", "quote": "Test Quote", "quoteCitation": "- Adam"},
|
||||||
|
{"count": 2, "keywords": "One-shot", "name": "Test 2", "text": "Example Text 2"}
|
||||||
|
]
|
||||||
|
}
|
@ -1,34 +0,0 @@
|
|||||||
meta:
|
|
||||||
name: Villain Example
|
|
||||||
type: villain
|
|
||||||
cards:
|
|
||||||
character:
|
|
||||||
- name: Villain Example
|
|
||||||
hp: 32
|
|
||||||
title: Test Front
|
|
||||||
back:
|
|
||||||
hp: 25
|
|
||||||
title: Test Back
|
|
||||||
instructions:
|
|
||||||
- name: Test
|
|
||||||
title: Test Front
|
|
||||||
setup: setup text
|
|
||||||
gameplay: front text
|
|
||||||
advanced: advanced front
|
|
||||||
back:
|
|
||||||
title: Test Back
|
|
||||||
gameplay: back text
|
|
||||||
advanced: advanced back
|
|
||||||
deck:
|
|
||||||
- keywords: Ongoing
|
|
||||||
name: Test 1
|
|
||||||
text: Example Text 1
|
|
||||||
hp: 12
|
|
||||||
artist: Art By Adam
|
|
||||||
quote: Test Quote
|
|
||||||
quoteCitation: "- Adam"
|
|
||||||
- count: 2
|
|
||||||
keywords: One-shot
|
|
||||||
name: Test 2
|
|
||||||
text: Example Text 2
|
|
||||||
|
|
567
package-lock.json
generated
@ -835,19 +835,19 @@
|
|||||||
"integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ=="
|
"integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ=="
|
||||||
},
|
},
|
||||||
"@vue/component-compiler-utils": {
|
"@vue/component-compiler-utils": {
|
||||||
"version": "2.5.0",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz",
|
||||||
"integrity": "sha512-mSB8jWmE/ZeYZHPDEx9hNiiRh5P2V1Q0tObxEQWtxxfXtkIAvPnj7oucGm5SO8Y/QwIlDJgAGqHfj5MCjoKoOg==",
|
"integrity": "sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"consolidate": "^0.15.1",
|
"consolidate": "^0.15.1",
|
||||||
"hash-sum": "^1.0.2",
|
"hash-sum": "^1.0.2",
|
||||||
"lru-cache": "^4.1.2",
|
"lru-cache": "^4.1.2",
|
||||||
"merge-source-map": "^1.1.0",
|
"merge-source-map": "^1.1.0",
|
||||||
"postcss": "^7.0.7",
|
"postcss": "^6.0.20",
|
||||||
"postcss-selector-parser": "^5.0.0",
|
"postcss-selector-parser": "^3.1.1",
|
||||||
"prettier": "1.13.7",
|
"prettier": "1.13.7",
|
||||||
"source-map": "^0.7.3",
|
"source-map": "^0.5.6",
|
||||||
"vue-template-es2015-compiler": "^1.6.0"
|
"vue-template-es2015-compiler": "^1.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -868,10 +868,40 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"postcss": {
|
||||||
|
"version": "6.0.23",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
|
||||||
|
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^2.4.1",
|
||||||
|
"source-map": "^0.6.1",
|
||||||
|
"supports-color": "^5.4.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
"source-map": {
|
"source-map": {
|
||||||
"version": "0.7.3",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-selector-parser": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
|
||||||
|
"integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"dot-prop": "^4.1.1",
|
||||||
|
"indexes-of": "^1.0.1",
|
||||||
|
"uniq": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-map": {
|
||||||
|
"version": "0.5.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||||
|
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -895,6 +925,17 @@
|
|||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
|
||||||
"integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
|
"integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
|
||||||
},
|
},
|
||||||
|
"ajv": {
|
||||||
|
"version": "6.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz",
|
||||||
|
"integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==",
|
||||||
|
"requires": {
|
||||||
|
"fast-deep-equal": "^2.0.1",
|
||||||
|
"fast-json-stable-stringify": "^2.0.0",
|
||||||
|
"json-schema-traverse": "^0.4.1",
|
||||||
|
"uri-js": "^4.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"alphanum-sort": {
|
"alphanum-sort": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
|
||||||
@ -963,6 +1004,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
|
||||||
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
|
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
|
||||||
},
|
},
|
||||||
|
"asn1": {
|
||||||
|
"version": "0.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||||
|
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||||
|
"requires": {
|
||||||
|
"safer-buffer": "~2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"asn1.js": {
|
"asn1.js": {
|
||||||
"version": "4.10.1",
|
"version": "4.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
|
||||||
@ -996,11 +1045,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"assert-plus": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||||
|
},
|
||||||
"assign-symbols": {
|
"assign-symbols": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
|
||||||
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
|
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
|
||||||
},
|
},
|
||||||
|
"async": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
|
||||||
|
},
|
||||||
"async-each": {
|
"async-each": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
|
||||||
@ -1011,6 +1070,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
||||||
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
||||||
},
|
},
|
||||||
|
"asynckit": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||||
|
},
|
||||||
"atob": {
|
"atob": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
||||||
@ -1106,6 +1170,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"aws-sign2": {
|
||||||
|
"version": "0.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
||||||
|
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
|
||||||
|
},
|
||||||
|
"aws4": {
|
||||||
|
"version": "1.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
|
||||||
|
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
|
||||||
|
},
|
||||||
"babel-runtime": {
|
"babel-runtime": {
|
||||||
"version": "6.26.0",
|
"version": "6.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
||||||
@ -1215,6 +1289,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
|
||||||
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
|
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
|
||||||
},
|
},
|
||||||
|
"bcrypt-pbkdf": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||||
|
"requires": {
|
||||||
|
"tweetnacl": "^0.14.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"binary-extensions": {
|
"binary-extensions": {
|
||||||
"version": "1.12.0",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
|
||||||
@ -1498,6 +1580,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz",
|
||||||
"integrity": "sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w=="
|
"integrity": "sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w=="
|
||||||
},
|
},
|
||||||
|
"caseless": {
|
||||||
|
"version": "0.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||||
|
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||||
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
||||||
@ -1711,6 +1798,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"colors": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
|
||||||
|
},
|
||||||
|
"combined-stream": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
|
||||||
|
"requires": {
|
||||||
|
"delayed-stream": "~1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"command-exists": {
|
"command-exists": {
|
||||||
"version": "1.2.8",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz",
|
||||||
@ -2060,6 +2160,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"cycle": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
|
||||||
|
},
|
||||||
|
"dashdash": {
|
||||||
|
"version": "1.14.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||||
|
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||||
|
"requires": {
|
||||||
|
"assert-plus": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"date-now": {
|
"date-now": {
|
||||||
"version": "0.1.4",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
|
||||||
@ -2168,6 +2281,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
|
||||||
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
|
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
|
||||||
},
|
},
|
||||||
|
"delayed-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||||
|
},
|
||||||
"depd": {
|
"depd": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||||
@ -2266,6 +2384,15 @@
|
|||||||
"readable-stream": "^2.0.2"
|
"readable-stream": "^2.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ecc-jsbn": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||||
|
"requires": {
|
||||||
|
"jsbn": "~0.1.0",
|
||||||
|
"safer-buffer": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"editorconfig": {
|
"editorconfig": {
|
||||||
"version": "0.15.2",
|
"version": "0.15.2",
|
||||||
"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz",
|
"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.2.tgz",
|
||||||
@ -2343,6 +2470,11 @@
|
|||||||
"is-symbol": "^1.0.2"
|
"is-symbol": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"es6-promise": {
|
||||||
|
"version": "4.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
|
||||||
|
"integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg=="
|
||||||
|
},
|
||||||
"escape-html": {
|
"escape-html": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||||
@ -2468,6 +2600,11 @@
|
|||||||
"vary": "~1.1.2"
|
"vary": "~1.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"extend": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||||
|
},
|
||||||
"extend-shallow": {
|
"extend-shallow": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
|
||||||
@ -2546,6 +2683,27 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"extract-zip": {
|
||||||
|
"version": "1.6.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
|
||||||
|
"integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
|
||||||
|
"requires": {
|
||||||
|
"concat-stream": "1.6.2",
|
||||||
|
"debug": "2.6.9",
|
||||||
|
"mkdirp": "0.5.1",
|
||||||
|
"yauzl": "2.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extsprintf": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||||
|
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||||
|
},
|
||||||
|
"eyes": {
|
||||||
|
"version": "0.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
|
||||||
|
"integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
|
||||||
|
},
|
||||||
"falafel": {
|
"falafel": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz",
|
||||||
@ -2564,6 +2722,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"fast-deep-equal": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
|
||||||
|
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
|
||||||
|
},
|
||||||
"fast-glob": {
|
"fast-glob": {
|
||||||
"version": "2.2.4",
|
"version": "2.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.4.tgz",
|
||||||
@ -2577,11 +2740,24 @@
|
|||||||
"micromatch": "^3.1.10"
|
"micromatch": "^3.1.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"fast-json-stable-stringify": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
|
||||||
|
},
|
||||||
"fast-levenshtein": {
|
"fast-levenshtein": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
||||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
|
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
|
||||||
},
|
},
|
||||||
|
"fd-slicer": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
|
||||||
|
"requires": {
|
||||||
|
"pend": "~1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"filesize": {
|
"filesize": {
|
||||||
"version": "3.6.1",
|
"version": "3.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
|
||||||
@ -2637,6 +2813,21 @@
|
|||||||
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
|
||||||
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
|
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
|
||||||
},
|
},
|
||||||
|
"forever-agent": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||||
|
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
|
||||||
|
},
|
||||||
|
"form-data": {
|
||||||
|
"version": "2.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||||
|
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
||||||
|
"requires": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.6",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
"forwarded": {
|
"forwarded": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||||
@ -2655,6 +2846,16 @@
|
|||||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||||
},
|
},
|
||||||
|
"fs-extra": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.2",
|
||||||
|
"jsonfile": "^2.1.0",
|
||||||
|
"klaw": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fs.realpath": {
|
"fs.realpath": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
@ -3137,6 +3338,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
|
||||||
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
|
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
|
||||||
},
|
},
|
||||||
|
"getpass": {
|
||||||
|
"version": "0.1.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||||
|
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||||
|
"requires": {
|
||||||
|
"assert-plus": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"glob": {
|
"glob": {
|
||||||
"version": "7.1.3",
|
"version": "7.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
||||||
@ -3193,6 +3402,20 @@
|
|||||||
"unicode-trie": "^0.3.1"
|
"unicode-trie": "^0.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"har-schema": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
|
||||||
|
},
|
||||||
|
"har-validator": {
|
||||||
|
"version": "5.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
|
||||||
|
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
|
||||||
|
"requires": {
|
||||||
|
"ajv": "^6.5.5",
|
||||||
|
"har-schema": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"has": {
|
"has": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
@ -3279,6 +3502,15 @@
|
|||||||
"minimalistic-assert": "^1.0.1"
|
"minimalistic-assert": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hasha": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
|
||||||
|
"integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
|
||||||
|
"requires": {
|
||||||
|
"is-stream": "^1.0.1",
|
||||||
|
"pinkie-promise": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"he": {
|
"he": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||||
@ -3774,6 +4006,16 @@
|
|||||||
"statuses": ">= 1.4.0 < 2"
|
"statuses": ">= 1.4.0 < 2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"http-signature": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||||
|
"requires": {
|
||||||
|
"assert-plus": "^1.0.0",
|
||||||
|
"jsprim": "^1.2.2",
|
||||||
|
"sshpk": "^1.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"https-browserify": {
|
"https-browserify": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
|
||||||
@ -4024,6 +4266,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
|
||||||
"integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
|
"integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
|
||||||
},
|
},
|
||||||
|
"is-stream": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
|
||||||
|
},
|
||||||
"is-svg": {
|
"is-svg": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
|
||||||
@ -4040,6 +4287,11 @@
|
|||||||
"has-symbols": "^1.0.0"
|
"has-symbols": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"is-typedarray": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||||
|
},
|
||||||
"is-url": {
|
"is-url": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
||||||
@ -4070,6 +4322,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
|
||||||
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
|
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
|
||||||
},
|
},
|
||||||
|
"isstream": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||||
|
},
|
||||||
"js-base64": {
|
"js-base64": {
|
||||||
"version": "2.5.0",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz",
|
||||||
@ -4098,9 +4355,9 @@
|
|||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.12.1",
|
"version": "3.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
||||||
"integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
|
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"argparse": "^1.0.7",
|
"argparse": "^1.0.7",
|
||||||
"esprima": "^4.0.0"
|
"esprima": "^4.0.0"
|
||||||
@ -4113,6 +4370,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"jsbn": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||||
|
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
||||||
|
},
|
||||||
"jsesc": {
|
"jsesc": {
|
||||||
"version": "2.5.2",
|
"version": "2.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||||
@ -4123,6 +4385,21 @@
|
|||||||
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
|
||||||
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
|
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
|
||||||
},
|
},
|
||||||
|
"json-schema": {
|
||||||
|
"version": "0.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||||
|
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||||
|
},
|
||||||
|
"json-schema-traverse": {
|
||||||
|
"version": "0.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||||
|
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||||
|
},
|
||||||
|
"json-stringify-safe": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||||
|
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||||
|
},
|
||||||
"json5": {
|
"json5": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
"resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
||||||
@ -4138,11 +4415,43 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"jsonfile": {
|
||||||
|
"version": "2.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
||||||
|
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jsprim": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||||
|
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||||
|
"requires": {
|
||||||
|
"assert-plus": "1.0.0",
|
||||||
|
"extsprintf": "1.3.0",
|
||||||
|
"json-schema": "0.2.3",
|
||||||
|
"verror": "1.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"kew": {
|
||||||
|
"version": "0.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
|
||||||
|
"integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s="
|
||||||
|
},
|
||||||
"kind-of": {
|
"kind-of": {
|
||||||
"version": "6.0.2",
|
"version": "6.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
|
||||||
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
|
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
|
||||||
},
|
},
|
||||||
|
"klaw": {
|
||||||
|
"version": "1.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
|
||||||
|
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
"levn": {
|
"levn": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||||
@ -4557,6 +4866,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
|
||||||
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
|
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
|
||||||
},
|
},
|
||||||
|
"oauth-sign": {
|
||||||
|
"version": "0.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||||
|
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||||
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
@ -4923,11 +5237,60 @@
|
|||||||
"sha.js": "^2.4.8"
|
"sha.js": "^2.4.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pend": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
|
||||||
|
},
|
||||||
|
"performance-now": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||||
|
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||||
|
},
|
||||||
|
"phantom": {
|
||||||
|
"version": "4.0.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz",
|
||||||
|
"integrity": "sha512-Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA==",
|
||||||
|
"requires": {
|
||||||
|
"phantomjs-prebuilt": "^2.1.16",
|
||||||
|
"split": "^1.0.1",
|
||||||
|
"winston": "^2.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"phantomjs-prebuilt": {
|
||||||
|
"version": "2.1.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz",
|
||||||
|
"integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=",
|
||||||
|
"requires": {
|
||||||
|
"es6-promise": "^4.0.3",
|
||||||
|
"extract-zip": "^1.6.5",
|
||||||
|
"fs-extra": "^1.0.0",
|
||||||
|
"hasha": "^2.2.0",
|
||||||
|
"kew": "^0.7.0",
|
||||||
|
"progress": "^1.1.8",
|
||||||
|
"request": "^2.81.0",
|
||||||
|
"request-progress": "^2.0.1",
|
||||||
|
"which": "^1.2.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"physical-cpu-count": {
|
"physical-cpu-count": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz",
|
||||||
"integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA="
|
"integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA="
|
||||||
},
|
},
|
||||||
|
"pinkie": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
|
||||||
|
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
|
||||||
|
},
|
||||||
|
"pinkie-promise": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
||||||
|
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
|
||||||
|
"requires": {
|
||||||
|
"pinkie": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"posix-character-classes": {
|
"posix-character-classes": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
|
||||||
@ -5723,6 +6086,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||||
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
|
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
|
||||||
},
|
},
|
||||||
|
"progress": {
|
||||||
|
"version": "1.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
|
||||||
|
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
|
||||||
|
},
|
||||||
"proto-list": {
|
"proto-list": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
||||||
@ -5742,6 +6110,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
||||||
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
|
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
|
||||||
},
|
},
|
||||||
|
"psl": {
|
||||||
|
"version": "1.1.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
|
||||||
|
"integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
|
||||||
|
},
|
||||||
"public-encrypt": {
|
"public-encrypt": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
|
||||||
@ -5755,6 +6128,11 @@
|
|||||||
"safe-buffer": "^5.1.2"
|
"safe-buffer": "^5.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"punycode": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||||
|
},
|
||||||
"q": {
|
"q": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
||||||
@ -5973,6 +6351,41 @@
|
|||||||
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
|
||||||
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
|
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
|
||||||
},
|
},
|
||||||
|
"request": {
|
||||||
|
"version": "2.88.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||||
|
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
|
||||||
|
"requires": {
|
||||||
|
"aws-sign2": "~0.7.0",
|
||||||
|
"aws4": "^1.8.0",
|
||||||
|
"caseless": "~0.12.0",
|
||||||
|
"combined-stream": "~1.0.6",
|
||||||
|
"extend": "~3.0.2",
|
||||||
|
"forever-agent": "~0.6.1",
|
||||||
|
"form-data": "~2.3.2",
|
||||||
|
"har-validator": "~5.1.0",
|
||||||
|
"http-signature": "~1.2.0",
|
||||||
|
"is-typedarray": "~1.0.0",
|
||||||
|
"isstream": "~0.1.2",
|
||||||
|
"json-stringify-safe": "~5.0.1",
|
||||||
|
"mime-types": "~2.1.19",
|
||||||
|
"oauth-sign": "~0.9.0",
|
||||||
|
"performance-now": "^2.1.0",
|
||||||
|
"qs": "~6.5.2",
|
||||||
|
"safe-buffer": "^5.1.2",
|
||||||
|
"tough-cookie": "~2.4.3",
|
||||||
|
"tunnel-agent": "^0.6.0",
|
||||||
|
"uuid": "^3.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"request-progress": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
|
||||||
|
"integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
|
||||||
|
"requires": {
|
||||||
|
"throttleit": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"resolve": {
|
"resolve": {
|
||||||
"version": "1.9.0",
|
"version": "1.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz",
|
||||||
@ -6332,6 +6745,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
|
||||||
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
|
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
|
||||||
},
|
},
|
||||||
|
"split": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
|
||||||
|
"requires": {
|
||||||
|
"through": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"split-string": {
|
"split-string": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
||||||
@ -6345,11 +6766,32 @@
|
|||||||
"resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
"resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||||
},
|
},
|
||||||
|
"sshpk": {
|
||||||
|
"version": "1.15.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
|
||||||
|
"integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
|
||||||
|
"requires": {
|
||||||
|
"asn1": "~0.2.3",
|
||||||
|
"assert-plus": "^1.0.0",
|
||||||
|
"bcrypt-pbkdf": "^1.0.0",
|
||||||
|
"dashdash": "^1.12.0",
|
||||||
|
"ecc-jsbn": "~0.1.1",
|
||||||
|
"getpass": "^0.1.1",
|
||||||
|
"jsbn": "~0.1.0",
|
||||||
|
"safer-buffer": "^2.0.2",
|
||||||
|
"tweetnacl": "~0.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stable": {
|
"stable": {
|
||||||
"version": "0.1.8",
|
"version": "0.1.8",
|
||||||
"resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
|
"resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
|
||||||
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
|
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
|
||||||
},
|
},
|
||||||
|
"stack-trace": {
|
||||||
|
"version": "0.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
||||||
|
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
|
||||||
|
},
|
||||||
"static-eval": {
|
"static-eval": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.0.tgz",
|
||||||
@ -6520,6 +6962,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"throttleit": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw="
|
||||||
|
},
|
||||||
|
"through": {
|
||||||
|
"version": "2.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||||
|
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||||
|
},
|
||||||
"through2": {
|
"through2": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||||
@ -6595,6 +7047,22 @@
|
|||||||
"repeat-string": "^1.6.1"
|
"repeat-string": "^1.6.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tough-cookie": {
|
||||||
|
"version": "2.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||||
|
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||||
|
"requires": {
|
||||||
|
"psl": "^1.1.24",
|
||||||
|
"punycode": "^1.4.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"punycode": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||||
|
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"trim-right": {
|
"trim-right": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
|
||||||
@ -6605,6 +7073,19 @@
|
|||||||
"resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
|
"resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
|
||||||
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
|
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
|
||||||
},
|
},
|
||||||
|
"tunnel-agent": {
|
||||||
|
"version": "0.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
|
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tweetnacl": {
|
||||||
|
"version": "0.14.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||||
|
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
||||||
|
},
|
||||||
"type-check": {
|
"type-check": {
|
||||||
"version": "0.3.2",
|
"version": "0.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
||||||
@ -6758,6 +7239,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
|
||||||
"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw=="
|
"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw=="
|
||||||
},
|
},
|
||||||
|
"uri-js": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
|
||||||
|
"requires": {
|
||||||
|
"punycode": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"urix": {
|
"urix": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
|
||||||
@ -6811,6 +7300,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||||
},
|
},
|
||||||
|
"uuid": {
|
||||||
|
"version": "3.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
||||||
|
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
|
||||||
|
},
|
||||||
"v-runtime-template": {
|
"v-runtime-template": {
|
||||||
"version": "1.5.2",
|
"version": "1.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/v-runtime-template/-/v-runtime-template-1.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/v-runtime-template/-/v-runtime-template-1.5.2.tgz",
|
||||||
@ -6831,6 +7325,16 @@
|
|||||||
"resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz",
|
||||||
"integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ=="
|
"integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ=="
|
||||||
},
|
},
|
||||||
|
"verror": {
|
||||||
|
"version": "1.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||||
|
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||||
|
"requires": {
|
||||||
|
"assert-plus": "^1.0.0",
|
||||||
|
"core-util-is": "1.0.2",
|
||||||
|
"extsprintf": "^1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vlq": {
|
"vlq": {
|
||||||
"version": "0.2.3",
|
"version": "0.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
|
||||||
@ -6845,9 +7349,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vue": {
|
"vue": {
|
||||||
"version": "2.5.22",
|
"version": "2.5.21",
|
||||||
"resolved": "https://registry.npmjs.org/vue/-/vue-2.5.22.tgz",
|
"resolved": "https://registry.npmjs.org/vue/-/vue-2.5.21.tgz",
|
||||||
"integrity": "sha512-pxY3ZHlXNJMFQbkjEgGVMaMMkSV1ONpz+4qB55kZuJzyJOhn6MSy/YZdzhdnumegNzVTL/Dn3Pp4UrVBYt1j/g=="
|
"integrity": "sha512-Aejvyyfhn0zjVeLvXd70h4hrE4zZDx1wfZqia6ekkobLmUZ+vNFQer53B4fu0EjWBSiqApxPejzkO1Znt3joxQ=="
|
||||||
},
|
},
|
||||||
"vue-headful": {
|
"vue-headful": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
@ -6868,9 +7372,9 @@
|
|||||||
"integrity": "sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg=="
|
"integrity": "sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg=="
|
||||||
},
|
},
|
||||||
"vue-template-compiler": {
|
"vue-template-compiler": {
|
||||||
"version": "2.5.22",
|
"version": "2.5.21",
|
||||||
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.22.tgz",
|
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz",
|
||||||
"integrity": "sha512-1VTw/NPTUeHNiwhkq6NkFzO7gYLjFCueBN0FX8NEiQIemd5EUMQ5hxrF7O0zCPo5tae+U9S/scETPea+hIz8Eg==",
|
"integrity": "sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"de-indent": "^1.0.2",
|
"de-indent": "^1.0.2",
|
||||||
@ -6878,9 +7382,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vue-template-es2015-compiler": {
|
"vue-template-es2015-compiler": {
|
||||||
"version": "1.8.1",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz",
|
||||||
"integrity": "sha512-mxBBMuSaPG9+NkVMbh28r8gvWQJ8UXxqDxVNeLy2KBUZiSNxZsagjYwLL8gjROb4oaaYtwRv3K8gAmw76I/U7Q==",
|
"integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"wcwidth": {
|
"wcwidth": {
|
||||||
@ -6904,6 +7408,19 @@
|
|||||||
"isexe": "^2.0.0"
|
"isexe": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"winston": {
|
||||||
|
"version": "2.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz",
|
||||||
|
"integrity": "sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==",
|
||||||
|
"requires": {
|
||||||
|
"async": "~1.0.0",
|
||||||
|
"colors": "1.0.x",
|
||||||
|
"cycle": "1.0.x",
|
||||||
|
"eyes": "0.1.x",
|
||||||
|
"isstream": "0.1.x",
|
||||||
|
"stack-trace": "0.0.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
"wordwrap": {
|
"wordwrap": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||||
@ -6931,6 +7448,14 @@
|
|||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
||||||
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
|
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
|
||||||
|
},
|
||||||
|
"yauzl": {
|
||||||
|
"version": "2.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
|
||||||
|
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
|
||||||
|
"requires": {
|
||||||
|
"fd-slicer": "~1.0.1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,19 +15,20 @@
|
|||||||
"express": "^4.16.4",
|
"express": "^4.16.4",
|
||||||
"html2canvas": "^1.0.0-alpha.12",
|
"html2canvas": "^1.0.0-alpha.12",
|
||||||
"interactjs": "^1.3.4",
|
"interactjs": "^1.3.4",
|
||||||
"js-yaml": "^3.12.1",
|
"js-yaml": "^3.12.0",
|
||||||
"nedb-promises": "^3.0.2",
|
"nedb-promises": "^3.0.2",
|
||||||
"parcel-bundler": "^1.11.0",
|
"parcel-bundler": "^1.11.0",
|
||||||
|
"phantom": "^4.0.12",
|
||||||
"v-runtime-template": "^1.5.2",
|
"v-runtime-template": "^1.5.2",
|
||||||
"vue": "^2.5.22",
|
"vue": "^2.5.21",
|
||||||
"vue-headful": "^2.0.1",
|
"vue-headful": "^2.0.1",
|
||||||
"vue-hot-reload-api": "^2.3.1",
|
"vue-hot-reload-api": "^2.3.1",
|
||||||
"vue-router": "^3.0.2"
|
"vue-router": "^3.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/component-compiler-utils": "^2.5.0",
|
"@vue/component-compiler-utils": "^2.3.1",
|
||||||
"parcel": "^1.11.0",
|
"parcel": "^1.11.0",
|
||||||
"vue-template-compiler": "^2.5.22"
|
"vue-template-compiler": "^2.5.21"
|
||||||
},
|
},
|
||||||
"alias": {
|
"alias": {
|
||||||
"vue": "./node_modules/vue/dist/vue.common.js"
|
"vue": "./node_modules/vue/dist/vue.common.js"
|
||||||
|
40
src/Card.vue
@ -1,40 +0,0 @@
|
|||||||
<template>
|
|
||||||
<span @click="$emit('input', {card: card, props: props})">
|
|
||||||
<v-runtime-template :template="template"> </v-runtime-template>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import HTMLEmbed from './HTMLEmbed.vue';
|
|
||||||
import VRuntimeTemplate from "v-runtime-template";
|
|
||||||
import propTypes from './template/*/input.yaml';
|
|
||||||
import templates from './template/*/*.svg';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Card',
|
|
||||||
props: ['deckType', 'type', 'card'],
|
|
||||||
components: {VRuntimeTemplate, HTMLEmbed},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
props() {
|
|
||||||
return {count: 'number', ...propTypes[this.deckType][this.type]};
|
|
||||||
},
|
|
||||||
|
|
||||||
template() {
|
|
||||||
return templates[this.deckType][this.type]
|
|
||||||
.replace('<?xml version="1.0" encoding="UTF-8"?>\n', '');
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.htmlEmbed {
|
|
||||||
line-height: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.htmlEmbed p {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: .5em;
|
|
||||||
}
|
|
||||||
</style>
|
|
23
src/Deck.vue
@ -1,20 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="deck">
|
<div class="deck">
|
||||||
<div v-for="cardRow in chunkedCards">
|
<div v-for="cardRow in chunkedCards">
|
||||||
<Card v-for="card in cardRow" v-model="selected"
|
<Hero v-for="card in cardRow" v-model="selected"
|
||||||
:deckType="deckInfo.meta.type"
|
:type="card.type" :card="card.card"> </Hero>
|
||||||
:type="card.type" :card="card.card"> </Card>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Card from './Card.vue'
|
import Hero from './template/hero/Hero.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Deck',
|
name: 'Deck',
|
||||||
props: ['deckInfo'],
|
props: ['cards'],
|
||||||
components: {Card},
|
components: {Hero},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -31,8 +30,8 @@
|
|||||||
computed: {
|
computed: {
|
||||||
allCards() {
|
allCards() {
|
||||||
return Object
|
return Object
|
||||||
.keys(this.deckInfo.cards)
|
.keys(this.cards)
|
||||||
.flatMap(cardType => this.deckInfo.cards[cardType].flatMap((card, index) => {
|
.flatMap(cardType => this.cards[cardType].flatMap((card, index) => {
|
||||||
let cardWrapper = [{
|
let cardWrapper = [{
|
||||||
type: cardType,
|
type: cardType,
|
||||||
card: card,
|
card: card,
|
||||||
@ -43,7 +42,7 @@
|
|||||||
card: card.back,
|
card: card.back,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return cardWrapper;
|
return Array(card.count || 1).fill(cardWrapper).flat();
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -63,10 +62,14 @@
|
|||||||
<style>
|
<style>
|
||||||
.deck {
|
.deck {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
width: fit-content;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.deck svg {
|
.deck svg {
|
||||||
white-space: initial;
|
white-space: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.deck svg p {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: .5em;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
106
src/Editor.vue
@ -6,11 +6,11 @@
|
|||||||
<button type="button" @click="upload"> Save Deck </button>
|
<button type="button" @click="upload"> Save Deck </button>
|
||||||
<Loader :loading="uploading"></Loader>
|
<Loader :loading="uploading"></Loader>
|
||||||
Download:
|
Download:
|
||||||
<a class="download" :href="downloadJSON(deckInfo)"
|
<a class="download" :href="inputJSON"
|
||||||
:download="deckInfo.meta.name + '.input.json'">
|
:download="deckInfo.meta.name + '.input.json'">
|
||||||
Input JSON
|
Input JSON
|
||||||
</a>
|
</a>
|
||||||
<a class="download" :href="downloadJSON(makeTTSJSON())"
|
<a class="download" :href="`/decks/${deckID}.tts.json`"
|
||||||
:download="deckInfo.meta.name + '.tts.json'">
|
:download="deckInfo.meta.name + '.tts.json'">
|
||||||
Tabletop Sim Output JSON
|
Tabletop Sim Output JSON
|
||||||
</a>
|
</a>
|
||||||
@ -22,9 +22,8 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label> Upload JSON: WARNING: WILL CLEAR DECK
|
<label> Upload JSON: WARNING: WILL CLEAR DECK
|
||||||
<input ref="jsonUpload" type="file">
|
<input @change="jsonUpload" type="file">
|
||||||
</label>
|
</label>
|
||||||
<button type="button" @click="jsonUpload"> Load </button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@ -51,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Deck ref="deck" :deckInfo="deckInfo" v-model="selected"> </Deck>
|
<Deck ref="deck" :cards="deckInfo.cards" v-model="selected"> </Deck>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -60,7 +59,6 @@
|
|||||||
import html2canvas from 'html2canvas';
|
import html2canvas from 'html2canvas';
|
||||||
import Deck from './Deck.vue';
|
import Deck from './Deck.vue';
|
||||||
import Loader from './Loader.vue';
|
import Loader from './Loader.vue';
|
||||||
import tts_templates from './template/tts/*.json';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Editor',
|
name: 'Editor',
|
||||||
@ -88,10 +86,17 @@
|
|||||||
* 'beforeunload', e => e.returnValue = "Unsaved changes blah blah"); */
|
* 'beforeunload', e => e.returnValue = "Unsaved changes blah blah"); */
|
||||||
},
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
inputJSON() {
|
||||||
|
return 'data:application/json;charset=utf-8,' +
|
||||||
|
encodeURIComponent(JSON.stringify(this.deckInfo))
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
// deck JSON uploader
|
// deck JSON uploader
|
||||||
jsonUpload(event) {
|
jsonUpload(event) {
|
||||||
let files = this.$refs.jsonUpload.files;
|
let files = event.target.files;
|
||||||
let reader = new FileReader();
|
let reader = new FileReader();
|
||||||
reader.onload = e => this.deckInfo = yaml.safeLoad(e.target.result);
|
reader.onload = e => this.deckInfo = yaml.safeLoad(e.target.result);
|
||||||
reader.readAsText(files[0]);
|
reader.readAsText(files[0]);
|
||||||
@ -105,91 +110,12 @@
|
|||||||
reader.readAsDataURL(event.target.files[0]);
|
reader.readAsDataURL(event.target.files[0]);
|
||||||
},
|
},
|
||||||
|
|
||||||
downloadJSON(json) {
|
|
||||||
return 'data:application/json;charset=utf-8,' +
|
|
||||||
encodeURIComponent(JSON.stringify(json))
|
|
||||||
},
|
|
||||||
|
|
||||||
makeTTSJSON() {
|
|
||||||
// make a copy
|
|
||||||
let deckOut = JSON.parse(JSON.stringify(tts_templates['deck']));
|
|
||||||
deckOut.ObjectStates[0].Nickname = this.deckInfo.meta.name;
|
|
||||||
|
|
||||||
let index = 100;
|
|
||||||
deckOut.ObjectStates[0].ContainedObjects = Object
|
|
||||||
.keys(this.deckInfo.cards)
|
|
||||||
.flatMap(cardType => this.deckInfo.cards[cardType].flatMap(card => {
|
|
||||||
let cardOut = {...JSON.parse(JSON.stringify(tts_templates['card'])),
|
|
||||||
Nickname: card.name,
|
|
||||||
Description: card.keywords,
|
|
||||||
CardID: index};
|
|
||||||
|
|
||||||
deckOut.ObjectStates[0].DeckIDs.push(
|
|
||||||
...Array(card.count || 1).fill(index));
|
|
||||||
index++;
|
|
||||||
|
|
||||||
if(card.back) {
|
|
||||||
cardOut.States = {
|
|
||||||
"2": {...JSON.parse(JSON.stringify(tts_templates['card'])),
|
|
||||||
Nickname: card.back.name,
|
|
||||||
Description: card.back.keywords,
|
|
||||||
CardID: index}};
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
return Array(card.count || 1).fill(cardOut);
|
|
||||||
}))
|
|
||||||
|
|
||||||
let cardCount = index - 100;
|
|
||||||
let columns = Math.ceil(Math.sqrt(cardCount));
|
|
||||||
Object.assign(
|
|
||||||
deckOut.ObjectStates[0].CustomDeck['1'],
|
|
||||||
{NumWidth: columns,
|
|
||||||
NumHeight: Math.ceil(cardCount / columns),
|
|
||||||
FaceURL: `${location.origin}/decks/${this.deckID}.png`,
|
|
||||||
BackURL: "http://cloud-3.steamusercontent.com/ugc/156906385556221451/CE2C3AFE1759790CB0B532FFD636D05A99EC91F4/"});
|
|
||||||
|
|
||||||
return deckOut;
|
|
||||||
},
|
|
||||||
|
|
||||||
upload() {
|
upload() {
|
||||||
this.uploading = true;
|
|
||||||
|
|
||||||
// TODO: remove this nasty hack
|
|
||||||
function bindStyles(doc) {
|
|
||||||
console.log(doc);
|
|
||||||
// get existing styles from CSS...
|
|
||||||
let style = Array.from(document.styleSheets[0].rules)
|
|
||||||
.map(rule => rule.cssText)
|
|
||||||
.join('\n');
|
|
||||||
// ...and jam them into a <style> in each foreignObject
|
|
||||||
doc.querySelectorAll('foreignObject')
|
|
||||||
.forEach(o => {
|
|
||||||
let styleElement = o.appendChild(document.createElement('style'));
|
|
||||||
styleElement.innerHTML = style;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let node = this.$refs.deck.$el;
|
let node = this.$refs.deck.$el;
|
||||||
html2canvas(node, {scale: 2,
|
|
||||||
backgroundColor: 'black',
|
html2canvas(node, {scale: 2, width: node.scrollWidth,
|
||||||
onclone: bindStyles})
|
backgroundColor: 'black'})
|
||||||
.then(canvas => canvas.toDataURL("image/png"))
|
.then(canvas => document.body.appendChild(canvas));
|
||||||
.then(image =>
|
|
||||||
// POST the inputed json to the server
|
|
||||||
fetch('/upload', {
|
|
||||||
method: 'post',
|
|
||||||
headers: {'Content-Type': 'application/json'},
|
|
||||||
body: JSON.stringify({
|
|
||||||
deck: this.deckInfo,
|
|
||||||
_id: this.deckID === 'new' ? undefined : this.deckID,
|
|
||||||
image: image,
|
|
||||||
})}))
|
|
||||||
.then(r => r.json())
|
|
||||||
.then(j => {
|
|
||||||
this.$router.replace('/edit/' + j.id);
|
|
||||||
this.uploading = false;
|
|
||||||
})
|
|
||||||
.catch(err => console.log('Failed to upload' + err));
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
<template>
|
|
||||||
<foreignObject>
|
|
||||||
<div class="htmlEmbed" v-html="html"> </div>
|
|
||||||
</foreignObject>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'HTMLEmbed',
|
|
||||||
props: ['html'],
|
|
||||||
}
|
|
||||||
</script>
|
|
@ -1,16 +0,0 @@
|
|||||||
const { Asset } = require('parcel-bundler');
|
|
||||||
|
|
||||||
class RawStringAsset extends Asset {
|
|
||||||
constructor(filename, options) {
|
|
||||||
super(filename, options);
|
|
||||||
this.type = 'js';
|
|
||||||
}
|
|
||||||
parse(str) {
|
|
||||||
return JSON.stringify(str);
|
|
||||||
}
|
|
||||||
generate() {
|
|
||||||
return `module.exports = ${this.ast}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = RawStringAsset;
|
|
@ -6,6 +6,7 @@ const express = require('express'),
|
|||||||
Bundler = require('parcel-bundler'),
|
Bundler = require('parcel-bundler'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
path = require('path'),
|
path = require('path'),
|
||||||
|
phantom = require('phantom'),
|
||||||
Datastore = require('nedb-promises'),
|
Datastore = require('nedb-promises'),
|
||||||
port = process.env.PORT || 1234;
|
port = process.env.PORT || 1234;
|
||||||
|
|
||||||
@ -16,13 +17,13 @@ const app = express();
|
|||||||
app.use(express.json({limit: '50mb'}));
|
app.use(express.json({limit: '50mb'}));
|
||||||
|
|
||||||
app.use('/template', express.static('template'));
|
app.use('/template', express.static('template'));
|
||||||
|
app.get('/decks/:deckID.tts.json', getTTSJSON);
|
||||||
app.get('/decks/:deckID.json', getInputJSON);
|
app.get('/decks/:deckID.json', getInputJSON);
|
||||||
app.get('/decks/:deckID.png', getDeckImage);
|
app.get('/decks/:deckID.png', getDeckImage);
|
||||||
app.get('/decks.json', getDecksList);
|
app.get('/decks.json', getDecksList);
|
||||||
app.post('/upload', handleUpload);
|
app.post('/upload', handleUpload);
|
||||||
|
|
||||||
let bundler = new Bundler(path.join(__dirname, 'index.html'));
|
let bundler = new Bundler(path.join(__dirname, 'index.html'));
|
||||||
bundler.addAssetType('.svg', require.resolve('./RawStringAsset'));
|
|
||||||
app.use(bundler.middleware());
|
app.use(bundler.middleware());
|
||||||
|
|
||||||
app.listen(port, () => console.log(`App listening on port ${port}!`));
|
app.listen(port, () => console.log(`App listening on port ${port}!`));
|
||||||
@ -45,12 +46,79 @@ function getDeckImage(req, res) {
|
|||||||
.catch(err => res.status(404).end());
|
.catch(err => res.status(404).end());
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleUpload(req, res) {
|
function getTTSJSON(req, res) {
|
||||||
const json = req.body;
|
// TODO: fix
|
||||||
console.log("Got deck upload!");
|
db.findOne({_id: req.params.deckID})
|
||||||
db.update({_id: json._id},
|
.then(doc => {
|
||||||
{deck: json.deck,
|
let deckIn = doc.deck;
|
||||||
image: json.image.substr("data:image/png;base64,".length)},
|
const cardTemplate = fs.readFileSync(__dirname + '/template/card.json');
|
||||||
{upsert: true, returnUpdatedDocs: true})
|
const template = JSON.parse(fs.readFileSync(__dirname + `/template/${deckIn.type}/input.json`));
|
||||||
.then(doc => res.status(201).json({id: doc._id}));
|
const cardCount = Object.entries(template.cardTypes)
|
||||||
|
.map(ct => deckIn[ct[0]].length * (ct[1].back ? 2 : 1))
|
||||||
|
.reduce((sum, current) => sum + current, 0);
|
||||||
|
|
||||||
|
let deckOut = JSON.parse(fs.readFileSync(__dirname + '/template/deck.json'));
|
||||||
|
deckOut.ObjectStates[0].Nickname = deckIn.meta.name;
|
||||||
|
|
||||||
|
Object.assign(deckOut.ObjectStates[0].CustomDeck['1'],
|
||||||
|
{NumWidth: Math.ceil(Math.sqrt(cardCount)),
|
||||||
|
NumHeight: Math.ceil(cardCount/Math.ceil(Math.sqrt(cardCount))),
|
||||||
|
FaceURL: `http://${req.headers.host}/decks/${doc.meta.name}.png`,
|
||||||
|
BackURL: "http://cloud-3.steamusercontent.com/ugc/156906385556221451/CE2C3AFE1759790CB0B532FFD636D05A99EC91F4/"});
|
||||||
|
|
||||||
|
let index = 100;
|
||||||
|
deckOut.ObjectStates[0].ContainedObjects = Object
|
||||||
|
.keys(deckIn)
|
||||||
|
.filter(cardType => cardType !== 'meta')
|
||||||
|
.map(cardType => deckIn[cardType].map((card, index) => {
|
||||||
|
let cardOut = {...JSON.parse(cardTemplate),
|
||||||
|
Nickname: card.name,
|
||||||
|
Description: card.keywords,
|
||||||
|
CardID: index};
|
||||||
|
|
||||||
|
deckOut.ObjectStates[0].DeckIDs.push(...Array(card.count || 1).fill(index));
|
||||||
|
index++;
|
||||||
|
|
||||||
|
if(card.back) {
|
||||||
|
cardOut.States = {"2": {...JSON.parse(cardTemplate),
|
||||||
|
Nickname: card.back.name,
|
||||||
|
Description: card.back.keywords,
|
||||||
|
CardID: index}};
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
return cardOut;
|
||||||
|
}))
|
||||||
|
.reduce((sum, cur) => sum.concat(cur), []); // flatten
|
||||||
|
|
||||||
|
res.json(deckOut);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function handleUpload(req, res) {
|
||||||
|
const json = req.body;
|
||||||
|
|
||||||
|
console.log("Making deck image");
|
||||||
|
const ph = await phantom.create();
|
||||||
|
const page = await ph.createPage();
|
||||||
|
|
||||||
|
page.on('onLoadFinished', status => {
|
||||||
|
if (status === 'success') {
|
||||||
|
page.renderBase64(`PNG`)
|
||||||
|
.then(image => db.update(
|
||||||
|
{_id: json.id},
|
||||||
|
{deck: json.deck, image: image},
|
||||||
|
{upsert: true, returnUpdatedDocs: true}))
|
||||||
|
.then(doc => res.status(201).json({id: doc._id}))
|
||||||
|
.then(() => page.close().then(() => ph.exit()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log('Failed to load page');
|
||||||
|
ph.exit(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
page.property('zoomFactor', 2); // pretty arbitrary
|
||||||
|
page.property('content',
|
||||||
|
'<head><link rel="stylesheet" href="' + json.css + '"></head>' +
|
||||||
|
'<body style="margin:0;">' + json.dom + '</body>');
|
||||||
}
|
}
|
||||||
|
@ -320,10 +320,10 @@
|
|||||||
<path d="m143.36 238.45h-127.38v-26.102h127.38z" fill="#94dc63" stroke="#000" stroke-miterlimit="10" stroke-width=".75"/>
|
<path d="m143.36 238.45h-127.38v-26.102h127.38z" fill="#94dc63" stroke="#000" stroke-miterlimit="10" stroke-width=".75"/>
|
||||||
<use transform="translate(15.453 211.51)" width="100%" height="100%" mask="url(#mask26)" xlink:href="#surface769"/>
|
<use transform="translate(15.453 211.51)" width="100%" height="100%" mask="url(#mask26)" xlink:href="#surface769"/>
|
||||||
<path d="m143.36 238.45h-127.38v-26.102h127.38z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="1.25"/>
|
<path d="m143.36 238.45h-127.38v-26.102h127.38z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="1.25"/>
|
||||||
<text x="14.177066" y="24.167519" width="100" fill="url(#linearGradient583)" font-family="'CrashLanding BB'" font-size="23px" stroke="#000000" stroke-width=".7"> {{ card.name }} </text>
|
<text id="name" x="14.177066" y="24.167519" width="100" fill="url(#linearGradient583)" font-family="'CrashLanding BB'" font-size="23px" stroke="#000000" stroke-width=".7">Header</text>
|
||||||
<image v-bind:xlink:href="card.art" x="9.453" y="27.512" width="162" height="121" preserveAspectRatio="xMidYMid"/>
|
<image id="image" x="9.453" y="27.512" width="162" height="121" preserveAspectRatio="xMidYMid"/>
|
||||||
<path d="m171.5 27.502h-162v121.59h162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 27.502h-162v121.59h162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<g v-if="card.keywords" transform="translate(-11.547,-6.4883)" font-family="'RedStateBlueState BB'">
|
<g id="keywordBox" transform="translate(-11.547,-6.4883)" font-family="'RedStateBlueState BB'">
|
||||||
<g clip-path="url(#clip90)">
|
<g clip-path="url(#clip90)">
|
||||||
<path d="m138.51 151.36h-108.41v12.805h108.41zm-0.75 12.055h-106.91v-11.305h106.91z"/>
|
<path d="m138.51 151.36h-108.41v12.805h108.41zm-0.75 12.055h-106.91v-11.305h106.91z"/>
|
||||||
</g>
|
</g>
|
||||||
@ -331,12 +331,18 @@
|
|||||||
<path d="m137.76 163.41h-106.91v-11.305h106.91z" fill="#4fb84a"/>
|
<path d="m137.76 163.41h-106.91v-11.305h106.91z" fill="#4fb84a"/>
|
||||||
<use transform="translate(30,152)" width="100%" height="100%" mask="url(#mask35)" xlink:href="#surface823"/>
|
<use transform="translate(30,152)" width="100%" height="100%" mask="url(#mask35)" xlink:href="#surface823"/>
|
||||||
</g>
|
</g>
|
||||||
<text x="84" y="160" font-size="11.696px" font-weight="bold" text-anchor="middle"> {{ card.keywords }} </text>
|
<text id="keywords" x="84" y="160" font-size="11.696px" font-weight="bold" text-anchor="middle">
|
||||||
|
<tspan>Keywords</tspan>
|
||||||
|
</text>
|
||||||
</g>
|
</g>
|
||||||
<HTMLEmbed x="15.453" y="163.5117" width="152" height="50" fill="#000000" font-family="'RedStateBlueState BB'" font-size="10px" :html="card.text"> Text Here </HTMLEmbed>
|
<text id="text" x="15.453" y="163.5117" width="152" height="50" fill="#000000" font-family="'RedStateBlueState BB'" font-size="10px" xml:space="preserve"><tspan>Text Here</tspan></text>
|
||||||
<HTMLEmbed x="18.452999" y="219.5117" width="123" height="19" fill="#000000" font-family="'RedStateBlueState BB'" font-size="6px" font-style="italic" :html="card.flavor"> Flavor Text Here </HTMLEmbed>
|
<text id="flavor" x="18.452999" y="219.5117" width="123" height="19" fill="#000000" font-family="'RedStateBlueState BB'" font-size="6px" font-style="italic">
|
||||||
<text x="168.59091" y="247.55464" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end"> Art By {{ card.artist }} </text>
|
<tspan>Text Here</tspan>
|
||||||
<g v-if="card.hp" transform="translate(-11.547,-6.4883)">
|
</text>
|
||||||
|
<text id="artist" x="168.59091" y="247.55464" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end">
|
||||||
|
<tspan>art by</tspan>
|
||||||
|
</text>
|
||||||
|
<g id="hpMark" transform="translate(-11.547,-6.4883)">
|
||||||
<g clip-path="url(#clip155)">
|
<g clip-path="url(#clip155)">
|
||||||
<g clip-path="url(#clip156)">
|
<g clip-path="url(#clip156)">
|
||||||
<path d="m183.05 15.988h-46.879v39.898h46.879z" fill="url(#linearGradient585)"/>
|
<path d="m183.05 15.988h-46.879v39.898h46.879z" fill="url(#linearGradient585)"/>
|
||||||
@ -352,6 +358,6 @@
|
|||||||
<g clip-path="url(#clip162)">
|
<g clip-path="url(#clip162)">
|
||||||
<path transform="translate(183.05,15.988)" d="m0.0014562-3.205e-5h-34.301" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path transform="translate(183.05,15.988)" d="m0.0014562-3.205e-5h-34.301" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
</g>
|
</g>
|
||||||
<text x="165.95107" y="37.060463" fill="#000000" font-family="'CrashLanding BB'" font-size="35px" text-align="center" text-anchor="middle" xml:space="preserve"> {{ card.hp }} </text>
|
<text id="hp" x="165.95107" y="37.060463" fill="#000000" font-family="'CrashLanding BB'" font-size="35px" text-align="center" text-anchor="middle" xml:space="preserve">3</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 278 KiB After Width: | Height: | Size: 278 KiB |
20
src/template/environment/input.json
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"cardTypes": {
|
||||||
|
"deck": {
|
||||||
|
"meta": ["count"],
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"keywords": "text",
|
||||||
|
"text": "textarea",
|
||||||
|
"flavor": "textarea",
|
||||||
|
"artist": "text",
|
||||||
|
"hp": "number",
|
||||||
|
"image": "image"
|
||||||
|
},
|
||||||
|
"hide": {
|
||||||
|
"hpMark": "hp",
|
||||||
|
"keywordBox": "keywords"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +0,0 @@
|
|||||||
deck:
|
|
||||||
name: text
|
|
||||||
art: image
|
|
||||||
hp: number
|
|
||||||
keywords: text
|
|
||||||
text: textarea
|
|
||||||
flavor: textarea
|
|
||||||
artist: text
|
|
58
src/template/hero/Hero.vue
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<template>
|
||||||
|
<span @click="$emit('input', {card: card, props: props})">
|
||||||
|
<v-runtime-template :template="template">
|
||||||
|
</v-runtime-template>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import fs from 'fs';
|
||||||
|
import VRuntimeTemplate from "v-runtime-template";
|
||||||
|
|
||||||
|
let propTypes = {
|
||||||
|
character: {
|
||||||
|
hp: "number",
|
||||||
|
power: "text",
|
||||||
|
art: "image",
|
||||||
|
powerText: "textarea"
|
||||||
|
},
|
||||||
|
"character-back": {
|
||||||
|
incapacitated: "textarea"
|
||||||
|
},
|
||||||
|
deck: {
|
||||||
|
name: "text",
|
||||||
|
hp: "number",
|
||||||
|
art: "image",
|
||||||
|
keywords: "text",
|
||||||
|
text: "textarea",
|
||||||
|
quote: "textarea",
|
||||||
|
quoteCitation: "text",
|
||||||
|
artist: "text"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const templates = {
|
||||||
|
'character': fs.readFileSync(__dirname + '/character.svg', 'utf8'),
|
||||||
|
'character-back': fs.readFileSync(__dirname + '/character-back.svg', 'utf8'),
|
||||||
|
'deck': fs.readFileSync(__dirname + '/deck.svg', 'utf8'),
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'HeroCharacter',
|
||||||
|
props: ['type', 'card'],
|
||||||
|
components: {VRuntimeTemplate},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
props: propTypes[this.type],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
template() {
|
||||||
|
return templates[this.type]
|
||||||
|
.replace('<?xml version="1.0" encoding="UTF-8"?>\n', '');
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -4,5 +4,7 @@
|
|||||||
<path d="m9.498 243.5h162v-234h-162z" fill="#fff" stroke="#000" stroke-miterlimit="10"/>
|
<path d="m9.498 243.5h162v-234h-162z" fill="#fff" stroke="#000" stroke-miterlimit="10"/>
|
||||||
<path d="m9.5 243.5h162v-234h-162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m9.5 243.5h162v-234h-162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<path d="m168.08 239.87h-154.91v-52.371h154.91z" fill="#cfd1d4" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10"/>
|
<path d="m168.08 239.87h-154.91v-52.371h154.91z" fill="#cfd1d4" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10"/>
|
||||||
<HTMLEmbed x="16" y="194" width="150" height="20" fill="#000000" font-family="'RedStateBlueState BB'" font-size="8px" :html="card.incapacitated"> </HTMLEmbed>
|
<foreignObject x="16" y="194" width="150" height="20" fill="#000000" font-family="'RedStateBlueState BB'" font-size="8px">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" v-html="card.incapacitated"> </div>
|
||||||
|
</foreignObject>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 760 B |
@ -28,6 +28,8 @@
|
|||||||
<path d="m30.672 21.242h-1.6094v-6.4844h0.81641v5.8086h0.79297z"/>
|
<path d="m30.672 21.242h-1.6094v-6.4844h0.81641v5.8086h0.79297z"/>
|
||||||
<text x="12.953" y="93.105858" fill="#ffffff" font-family="'Armor Piercing'" font-size="29px" stroke="#000000"> {{card.hp }} </text>
|
<text x="12.953" y="93.105858" fill="#ffffff" font-family="'Armor Piercing'" font-size="29px" stroke="#000000"> {{card.hp }} </text>
|
||||||
<text x="90.2556" y="220.35289" font-family="'RedStateBlueState BB'" font-size="10px" font-style="italic" text-align="center" text-anchor="middle"> {{ card.power }} </text>
|
<text x="90.2556" y="220.35289" font-family="'RedStateBlueState BB'" font-size="10px" font-style="italic" text-align="center" text-anchor="middle"> {{ card.power }} </text>
|
||||||
<HTMLEmbed x="21.452999" y="222" width="137.06" height="14.694" font-family="'RedStateBlueState BB'" font-size="8px" :html="card.powerText"> </HTMLEmbed>
|
<foreignObject x="21.452999" y="222" width="137.06" height="14.694" font-family="'RedStateBlueState BB'" font-size="8px">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" v-html="card.powerText"> Power Text </div>
|
||||||
|
</foreignObject>
|
||||||
<text x="168.46541" y="247.8423" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end">Art By {{ card.artist }} </text>
|
<text x="168.46541" y="247.8423" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end">Art By {{ card.artist }} </text>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
@ -322,7 +322,9 @@
|
|||||||
<text x="154.03" y="30.44" fill="#000000" font-family="'CrashLanding BB'" font-size="35px" text-align="center" text-anchor="middle"> {{ card.hp }} </text>
|
<text x="154.03" y="30.44" fill="#000000" font-family="'CrashLanding BB'" font-size="35px" text-align="center" text-anchor="middle"> {{ card.hp }} </text>
|
||||||
</g>
|
</g>
|
||||||
<image v-bind:xlink:href="card.art" x="21" y="34" width="162px" height="121px" preserveAspectRatio="xMidYMid"/>
|
<image v-bind:xlink:href="card.art" x="21" y="34" width="162px" height="121px" preserveAspectRatio="xMidYMid"/>
|
||||||
<HTMLEmbed x="14.5" y="160" width="152" height="48.5" font-family="'RedStateBlueState BB'" font-size="8.7px" v-bind:html="card.text"> </HTMLEmbed>
|
<foreignObject x="14.5" y="160" width="152" height="48.5" font-family="'RedStateBlueState BB'" font-size="8.7px">
|
||||||
|
<div xmlns="http://www.w3.org/1999/xhtml" v-html="card.text"> Text Here </div>
|
||||||
|
</foreignObject>
|
||||||
<text x="72.514046" y="222" font-size="6.8px" font-style="italic" text-align="center" text-anchor="middle"> {{ card.quote }} </text>
|
<text x="72.514046" y="222" font-size="6.8px" font-style="italic" text-align="center" text-anchor="middle"> {{ card.quote }} </text>
|
||||||
<text x="101.80201" y="230" font-size="5.8px" text-align="end" text-anchor="end">- {{ card.quoteCitation }} </text>
|
<text x="101.80201" y="230" font-size="5.8px" text-align="end" text-anchor="end">- {{ card.quoteCitation }} </text>
|
||||||
<text x="168.4621" y="247.85452" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end"> Art By {{ card.artist }} </text>
|
<text x="168.4621" y="247.85452" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end"> Art By {{ card.artist }} </text>
|
||||||
|
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB |
32
src/template/hero/input.json
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"cardTypes": {
|
||||||
|
"character": {
|
||||||
|
"back": {
|
||||||
|
"inputs": {
|
||||||
|
"incapacitated": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"hp": "number",
|
||||||
|
"power": "text",
|
||||||
|
"powerText": "textarea"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deck": {
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"hp": "number",
|
||||||
|
"image": "image",
|
||||||
|
"keywords": "text",
|
||||||
|
"text": "textarea",
|
||||||
|
"quote": "textarea",
|
||||||
|
"quoteCitation": "text",
|
||||||
|
"artist": "text"
|
||||||
|
},
|
||||||
|
"hide": {
|
||||||
|
"hpMark": "hp",
|
||||||
|
"keywordBox": "keywords"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
character:
|
|
||||||
hp: number
|
|
||||||
power: text
|
|
||||||
art: image
|
|
||||||
powerText: textarea
|
|
||||||
character-back:
|
|
||||||
incapacitated: textarea
|
|
||||||
deck:
|
|
||||||
name: text
|
|
||||||
hp: number
|
|
||||||
art: image
|
|
||||||
keywords: text
|
|
||||||
text: textarea
|
|
||||||
quote: textarea
|
|
||||||
quoteCitation: text
|
|
||||||
artist: text
|
|
@ -14,9 +14,9 @@
|
|||||||
<path d="m111.53 226.71h-81.75v-8.5h81.75z" fill="#ebe130" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10"/>
|
<path d="m111.53 226.71h-81.75v-8.5h81.75z" fill="#ebe130" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10"/>
|
||||||
<path d="m154 208.87c-6.6953 0-12.145 5.4492-12.145 12.145s5.4492 12.148 12.145 12.148c6.6953 0 12.145-5.4531 12.145-12.148s-5.4492-12.145-12.145-12.145m0 0.24219c6.5703 0 11.898 5.3281 11.898 11.902s-5.3281 11.902-11.898 11.902c-6.5742 0-11.902-5.3281-11.902-11.902s5.3281-11.902 11.902-11.902"/>
|
<path d="m154 208.87c-6.6953 0-12.145 5.4492-12.145 12.145s5.4492 12.148 12.145 12.148c6.6953 0 12.145-5.4531 12.145-12.148s-5.4492-12.145-12.145-12.145m0 0.24219c6.5703 0 11.898 5.3281 11.898 11.902s-5.3281 11.902-11.898 11.902c-6.5742 0-11.902-5.3281-11.902-11.902s5.3281-11.902 11.902-11.902"/>
|
||||||
<use transform="matrix(.044443 0 0 .044443 140.66 207.66)" width="100%" height="100%" mask="url(#mask0)" xlink:href="#image404"/>
|
<use transform="matrix(.044443 0 0 .044443 140.66 207.66)" width="100%" height="100%" mask="url(#mask0)" xlink:href="#image404"/>
|
||||||
<text x="89.850975" y="235.60347" fill="#000000" font-family="'RedStateBlueState BB'" font-size="11px" font-style="italic" text-align="center" text-anchor="middle"> {{ card.title }} </text>
|
<text id="title" x="89.850975" y="235.60347" fill="#000000" font-family="'RedStateBlueState BB'" font-size="11px" font-style="italic" text-align="center" text-anchor="middle">Villain Title</text>
|
||||||
<text x="58.169796" y="225.06613" fill="#000000" font-family="'RedStateBlueState BB'" font-size="10px" font-style="italic">villain</text>
|
<text x="58.169796" y="225.06613" fill="#000000" font-family="'RedStateBlueState BB'" font-size="10px" font-style="italic">villain</text>
|
||||||
<text transform="scale(.98507 1.0152)" x="14.22963" y="42.862007" fill="#000000" font-family="'Armor Piercing'" font-size="28.676px" stroke-width=".98507"> {{ card.name }} </text>
|
<text id="name" transform="scale(.98507 1.0152)" x="14.22963" y="42.862007" fill="#000000" font-family="'Armor Piercing'" font-size="28.676px" stroke-width=".98507">Villain Name</text>
|
||||||
<text x="155.13855" y="43.5117" fill="#ffffff" font-family="'Armor Piercing'" font-size="30px" stroke="#000000" stroke-width=".75" text-align="center" text-anchor="middle"> {{ card.hp }} </text>
|
<text id="hp" x="155.13855" y="43.5117" fill="#ffffff" font-family="'Armor Piercing'" font-size="30px" stroke="#000000" stroke-width=".75" text-align="center" text-anchor="middle">000</text>
|
||||||
<text x="168.59201" y="247.54639" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end"> {{ card.artist }} </text>
|
<text id="artist" x="168.59201" y="247.54639" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end">Art By</text>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
@ -285,7 +285,7 @@
|
|||||||
<path d="m0.503 252.5h180v-252h-180z" stroke="#000" stroke-miterlimit="10"/>
|
<path d="m0.503 252.5h180v-252h-180z" stroke="#000" stroke-miterlimit="10"/>
|
||||||
<path d="m9.503 243.5h162v-234h-162z" fill="#fff" stroke="#000" stroke-miterlimit="10"/>
|
<path d="m9.503 243.5h162v-234h-162z" fill="#fff" stroke="#000" stroke-miterlimit="10"/>
|
||||||
<path d="m171.5 27.502h-162v121.59h162z" fill="#fff" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 27.502h-162v121.59h162z" fill="#fff" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<image v-bind:xlink:href="card.art" x="10" y="29" width="162px" height="121px" preserveAspectRatio="xMidYMid"/>
|
<image id="image" x="10" y="29" width="162px" height="121px" preserveAspectRatio="xMidYMid"/>
|
||||||
<path d="m171.5 217.03h-162v-67.938h162z" fill="#e6e1ba" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 217.03h-162v-67.938h162z" fill="#e6e1ba" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<use transform="translate(9.449 148.51)" width="100%" height="100%" mask="url(#mask32)" xlink:href="#surface1165"/>
|
<use transform="translate(9.449 148.51)" width="100%" height="100%" mask="url(#mask32)" xlink:href="#surface1165"/>
|
||||||
<path d="m171.5 217.03h-162v-67.938h162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 217.03h-162v-67.938h162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
@ -323,22 +323,22 @@
|
|||||||
<path d="m171.5 27.502h-162v121.59h162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 27.502h-162v121.59h162z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<path d="m171.5 9.4997v14.668" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 9.4997v14.668" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<path d="m171.5 9.4997h-34.301" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m171.5 9.4997h-34.301" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<text x="14.173298" y="24.167526" font-family="'CrashLanding BB'" font-size="23px"> {{ card.name }} </text>
|
<text id="name" x="14.173298" y="24.167526" font-family="'CrashLanding BB'" font-size="23px">Header</text>
|
||||||
<g v-if="card.keywords">
|
<g id="keywordBox">
|
||||||
<path d="m126.21 156.92h-106.91v-11.305h106.91z" fill="#e11c1c"/>
|
<path d="m126.21 156.92h-106.91v-11.305h106.91z" fill="#e11c1c"/>
|
||||||
<use transform="translate(18.449 145.51)" width="100%" height="100%" mask="url(#mask44)" xlink:href="#surface1237"/>
|
<use transform="translate(18.449 145.51)" width="100%" height="100%" mask="url(#mask44)" xlink:href="#surface1237"/>
|
||||||
<path d="m126.96 144.87h-108.41v12.805h108.41zm-0.75 12.055h-106.91v-11.305h106.91z"/>
|
<path d="m126.96 144.87h-108.41v12.805h108.41zm-0.75 12.055h-106.91v-11.305h106.91z"/>
|
||||||
<text x="21.05547" y="154.41197" font-family="'RedStateBlueState BB'" font-size="11.5px" font-weight="bold"> {{ card.keywords }} </text>
|
<text id="keywords" x="21.05547" y="154.41197" font-family="'RedStateBlueState BB'" font-size="11.5px" font-weight="bold">Keywords</text>
|
||||||
</g>
|
</g>
|
||||||
<HTMLEmbed x="14.5" y="165.175" width="152" height="48.5" font-family="'RedStateBlueState BB'" font-size="8.7px" :html="card.text"> </HTMLEmbed>
|
<text id="text" x="14.5" y="165.175" width="152" height="48.5" font-family="'RedStateBlueState BB'" font-size="8.7px">Text Here</text>
|
||||||
<text x="72.514046" y="221.9552" font-family="'RedStateBlueState BB'" font-size="6.8px" font-style="italic" text-align="center" text-anchor="middle"> {{ card.quote }} </text>
|
<text id="quote" x="72.514046" y="221.9552" font-family="'RedStateBlueState BB'" font-size="6.8px" font-style="italic" text-align="center" text-anchor="middle">"Type Quote Here!"</text>
|
||||||
<text x="101.80201" y="229.85782" font-family="'RedStateBlueState BB'" font-size="5.8px" text-align="end" text-anchor="end"> {{ card.quoteCitation }} </text>
|
<text id="quoteCitation" x="101.80201" y="229.85782" font-family="'RedStateBlueState BB'" font-size="5.8px" text-align="end" text-anchor="end">- Name, Comic #</text>
|
||||||
<text x="168.4621" y="247.85452" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end"> Art By {{ card.artist }} </text>
|
<text id="artist" x="168.4621" y="247.85452" fill="#ffffff" font-family="'RedStateBlueState BB'" font-size="5.3px" text-align="end" text-anchor="end">Art By</text>
|
||||||
<g v-if="card.hp" transform="translate(-375.55 -6.4883)" style="">
|
<g id="hpMark" transform="translate(-375.55 -6.4883)" style="">
|
||||||
<path d="m547.05 15.988h-46.879v39.898h46.879z" clip-path="url(#clip174-7)" fill="url(#linear6)"/>
|
<path d="m547.05 15.988h-46.879v39.898h46.879z" clip-path="url(#clip174-7)" fill="url(#linear6)"/>
|
||||||
<path d="m547.05 15.988h-29.047l-17.832 3.8359 16.25 5.9336-14.375 8.5625 13.312-0.25-9.5 13.379 15.312-8.2539-8.25 15.941 13.875-13.004 5.0625 13.754 7.125-19.379 6.9375 4.3125-3.0898-9.9141 4.2188-0.25z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width=".8"/>
|
<path d="m547.05 15.988h-29.047l-17.832 3.8359 16.25 5.9336-14.375 8.5625 13.312-0.25-9.5 13.379 15.312-8.2539-8.25 15.941 13.875-13.004 5.0625 13.754 7.125-19.379 6.9375 4.3125-3.0898-9.9141 4.2188-0.25z" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width=".8"/>
|
||||||
<path d="m547.05 15.988v14.668" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m547.05 15.988v14.668" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<path d="m547.05 15.988h-34.301" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
<path d="m547.05 15.988h-34.301" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
|
||||||
<text x="529.58063" y="36.929356" fill="#000000" font-family="'CrashLanding BB'" font-size="35px" text-align="center" text-anchor="middle" xml:space="preserve"> {{ card.hp }} </text>
|
<text id="hp" x="529.58063" y="36.929356" fill="#000000" font-family="'CrashLanding BB'" font-size="35px" text-align="center" text-anchor="middle" xml:space="preserve">3</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 316 KiB After Width: | Height: | Size: 316 KiB |
55
src/template/villain/input.json
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"cardTypes": {
|
||||||
|
"character": {
|
||||||
|
"back": {
|
||||||
|
"template": "character",
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"hp": "number",
|
||||||
|
"title": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"hp": "number",
|
||||||
|
"title": "text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"instructions": {
|
||||||
|
"back": {
|
||||||
|
"template": "instructions",
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"title": "text",
|
||||||
|
"gameplay": "textarea"
|
||||||
|
},
|
||||||
|
"hide": {
|
||||||
|
"setupBox": "setup"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"title": "text",
|
||||||
|
"setup": "textarea",
|
||||||
|
"gameplay": "textarea",
|
||||||
|
"advanced": "textarea"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deck": {
|
||||||
|
"inputs": {
|
||||||
|
"name": "text",
|
||||||
|
"hp": "number",
|
||||||
|
"image": "image",
|
||||||
|
"keywords": "text",
|
||||||
|
"text": "textarea",
|
||||||
|
"quote": "textarea",
|
||||||
|
"quoteCitation": "text",
|
||||||
|
"artist": "text"
|
||||||
|
},
|
||||||
|
"hide": {
|
||||||
|
"hpMark": "hp",
|
||||||
|
"keywordBox": "keywords"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,27 +0,0 @@
|
|||||||
character:
|
|
||||||
name: text
|
|
||||||
hp: number
|
|
||||||
title: text
|
|
||||||
character-back:
|
|
||||||
name: text
|
|
||||||
hp: number
|
|
||||||
title: text
|
|
||||||
instructions:
|
|
||||||
name: text
|
|
||||||
title: text
|
|
||||||
setup: textarea
|
|
||||||
gameplay: textarea
|
|
||||||
advanced: textarea
|
|
||||||
instructions-back:
|
|
||||||
name: text
|
|
||||||
title: text
|
|
||||||
gameplay: textarea
|
|
||||||
deck:
|
|
||||||
name: text
|
|
||||||
hp: number
|
|
||||||
art: image
|
|
||||||
keywords: text
|
|
||||||
text: textarea
|
|
||||||
quote: textarea
|
|
||||||
quoteCitation: text
|
|
||||||
artist: text
|
|