Compare commits
No commits in common. "temp-png" and "master" have entirely different histories.
14
README.md
@ -1,5 +1,6 @@
|
|||||||
# Deck Generator/Playfield
|
# Sentinels of the Multiverse 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
|
||||||
@ -29,9 +30,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 jsons in the `testInputs` folder of this repo.
|
There are some example input files in the `example` folder of this repo.
|
||||||
|
|
||||||
## Playfield
|
## Playfield (currently down for maintenance)
|
||||||
|
|
||||||
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
|
||||||
@ -53,11 +54,6 @@ 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:
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"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"}]
|
|
||||||
}
|
|
16
example/environment.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
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
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"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"}
|
|
||||||
]
|
|
||||||
}
|
|
24
example/hero.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
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
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"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"}
|
|
||||||
]
|
|
||||||
}
|
|
34
example/villain.yaml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
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.3.1",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.5.0.tgz",
|
||||||
"integrity": "sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q==",
|
"integrity": "sha512-mSB8jWmE/ZeYZHPDEx9hNiiRh5P2V1Q0tObxEQWtxxfXtkIAvPnj7oucGm5SO8Y/QwIlDJgAGqHfj5MCjoKoOg==",
|
||||||
"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": "^6.0.20",
|
"postcss": "^7.0.7",
|
||||||
"postcss-selector-parser": "^3.1.1",
|
"postcss-selector-parser": "^5.0.0",
|
||||||
"prettier": "1.13.7",
|
"prettier": "1.13.7",
|
||||||
"source-map": "^0.5.6",
|
"source-map": "^0.7.3",
|
||||||
"vue-template-es2015-compiler": "^1.6.0"
|
"vue-template-es2015-compiler": "^1.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -868,40 +868,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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.6.1",
|
"version": "0.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
|
||||||
"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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -925,17 +895,6 @@
|
|||||||
"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",
|
||||||
@ -1004,14 +963,6 @@
|
|||||||
"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",
|
||||||
@ -1045,21 +996,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -1070,11 +1011,6 @@
|
|||||||
"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",
|
||||||
@ -1170,16 +1106,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -1289,14 +1215,6 @@
|
|||||||
"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",
|
||||||
@ -1580,11 +1498,6 @@
|
|||||||
"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",
|
||||||
@ -1798,19 +1711,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -2160,19 +2060,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -2281,11 +2168,6 @@
|
|||||||
"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",
|
||||||
@ -2384,15 +2266,6 @@
|
|||||||
"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",
|
||||||
@ -2470,11 +2343,6 @@
|
|||||||
"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",
|
||||||
@ -2600,11 +2468,6 @@
|
|||||||
"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",
|
||||||
@ -2683,27 +2546,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -2722,11 +2564,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -2740,24 +2577,11 @@
|
|||||||
"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",
|
||||||
@ -2813,21 +2637,6 @@
|
|||||||
"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",
|
||||||
@ -2846,16 +2655,6 @@
|
|||||||
"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",
|
||||||
@ -3338,14 +3137,6 @@
|
|||||||
"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",
|
||||||
@ -3402,20 +3193,6 @@
|
|||||||
"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",
|
||||||
@ -3502,15 +3279,6 @@
|
|||||||
"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",
|
||||||
@ -4006,16 +3774,6 @@
|
|||||||
"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",
|
||||||
@ -4266,11 +4024,6 @@
|
|||||||
"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",
|
||||||
@ -4287,11 +4040,6 @@
|
|||||||
"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",
|
||||||
@ -4322,11 +4070,6 @@
|
|||||||
"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",
|
||||||
@ -4355,9 +4098,9 @@
|
|||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.12.0",
|
"version": "3.12.1",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
|
||||||
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
|
"integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"argparse": "^1.0.7",
|
"argparse": "^1.0.7",
|
||||||
"esprima": "^4.0.0"
|
"esprima": "^4.0.0"
|
||||||
@ -4370,11 +4113,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -4385,21 +4123,6 @@
|
|||||||
"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",
|
||||||
@ -4415,43 +4138,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -4866,11 +4557,6 @@
|
|||||||
"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",
|
||||||
@ -5237,60 +4923,11 @@
|
|||||||
"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",
|
||||||
@ -6086,11 +5723,6 @@
|
|||||||
"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",
|
||||||
@ -6110,11 +5742,6 @@
|
|||||||
"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",
|
||||||
@ -6128,11 +5755,6 @@
|
|||||||
"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",
|
||||||
@ -6351,41 +5973,6 @@
|
|||||||
"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",
|
||||||
@ -6745,14 +6332,6 @@
|
|||||||
"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",
|
||||||
@ -6766,32 +6345,11 @@
|
|||||||
"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",
|
||||||
@ -6962,16 +6520,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@ -7047,22 +6595,6 @@
|
|||||||
"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",
|
||||||
@ -7073,19 +6605,6 @@
|
|||||||
"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",
|
||||||
@ -7239,14 +6758,6 @@
|
|||||||
"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",
|
||||||
@ -7300,11 +6811,6 @@
|
|||||||
"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",
|
||||||
@ -7325,16 +6831,6 @@
|
|||||||
"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",
|
||||||
@ -7349,9 +6845,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vue": {
|
"vue": {
|
||||||
"version": "2.5.21",
|
"version": "2.5.22",
|
||||||
"resolved": "https://registry.npmjs.org/vue/-/vue-2.5.21.tgz",
|
"resolved": "https://registry.npmjs.org/vue/-/vue-2.5.22.tgz",
|
||||||
"integrity": "sha512-Aejvyyfhn0zjVeLvXd70h4hrE4zZDx1wfZqia6ekkobLmUZ+vNFQer53B4fu0EjWBSiqApxPejzkO1Znt3joxQ=="
|
"integrity": "sha512-pxY3ZHlXNJMFQbkjEgGVMaMMkSV1ONpz+4qB55kZuJzyJOhn6MSy/YZdzhdnumegNzVTL/Dn3Pp4UrVBYt1j/g=="
|
||||||
},
|
},
|
||||||
"vue-headful": {
|
"vue-headful": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
@ -7372,9 +6868,9 @@
|
|||||||
"integrity": "sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg=="
|
"integrity": "sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg=="
|
||||||
},
|
},
|
||||||
"vue-template-compiler": {
|
"vue-template-compiler": {
|
||||||
"version": "2.5.21",
|
"version": "2.5.22",
|
||||||
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz",
|
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.22.tgz",
|
||||||
"integrity": "sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw==",
|
"integrity": "sha512-1VTw/NPTUeHNiwhkq6NkFzO7gYLjFCueBN0FX8NEiQIemd5EUMQ5hxrF7O0zCPo5tae+U9S/scETPea+hIz8Eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"de-indent": "^1.0.2",
|
"de-indent": "^1.0.2",
|
||||||
@ -7382,9 +6878,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vue-template-es2015-compiler": {
|
"vue-template-es2015-compiler": {
|
||||||
"version": "1.6.0",
|
"version": "1.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.8.1.tgz",
|
||||||
"integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==",
|
"integrity": "sha512-mxBBMuSaPG9+NkVMbh28r8gvWQJ8UXxqDxVNeLy2KBUZiSNxZsagjYwLL8gjROb4oaaYtwRv3K8gAmw76I/U7Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"wcwidth": {
|
"wcwidth": {
|
||||||
@ -7408,19 +6904,6 @@
|
|||||||
"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",
|
||||||
@ -7448,14 +6931,6 @@
|
|||||||
"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,20 +15,19 @@
|
|||||||
"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.0",
|
"js-yaml": "^3.12.1",
|
||||||
"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.21",
|
"vue": "^2.5.22",
|
||||||
"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.3.1",
|
"@vue/component-compiler-utils": "^2.5.0",
|
||||||
"parcel": "^1.11.0",
|
"parcel": "^1.11.0",
|
||||||
"vue-template-compiler": "^2.5.21"
|
"vue-template-compiler": "^2.5.22"
|
||||||
},
|
},
|
||||||
"alias": {
|
"alias": {
|
||||||
"vue": "./node_modules/vue/dist/vue.common.js"
|
"vue": "./node_modules/vue/dist/vue.common.js"
|
||||||
|
40
src/Card.vue
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<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,19 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="deck">
|
<div class="deck">
|
||||||
<div v-for="cardRow in chunkedCards">
|
<div v-for="cardRow in chunkedCards">
|
||||||
<Hero v-for="card in cardRow" v-model="selected"
|
<Card v-for="card in cardRow" v-model="selected"
|
||||||
:type="card.type" :card="card.card"> </Hero>
|
:deckType="deckInfo.meta.type"
|
||||||
|
:type="card.type" :card="card.card"> </Card>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Hero from './template/hero/Hero.vue'
|
import Card from './Card.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Deck',
|
name: 'Deck',
|
||||||
props: ['cards'],
|
props: ['deckInfo'],
|
||||||
components: {Hero},
|
components: {Card},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -30,8 +31,8 @@
|
|||||||
computed: {
|
computed: {
|
||||||
allCards() {
|
allCards() {
|
||||||
return Object
|
return Object
|
||||||
.keys(this.cards)
|
.keys(this.deckInfo.cards)
|
||||||
.flatMap(cardType => this.cards[cardType].flatMap((card, index) => {
|
.flatMap(cardType => this.deckInfo.cards[cardType].flatMap((card, index) => {
|
||||||
let cardWrapper = [{
|
let cardWrapper = [{
|
||||||
type: cardType,
|
type: cardType,
|
||||||
card: card,
|
card: card,
|
||||||
@ -42,7 +43,7 @@
|
|||||||
card: card.back,
|
card: card.back,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return Array(card.count || 1).fill(cardWrapper).flat();
|
return cardWrapper;
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -62,14 +63,10 @@
|
|||||||
<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>
|
||||||
|
108
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="inputJSON"
|
<a class="download" :href="downloadJSON(deckInfo)"
|
||||||
:download="deckInfo.meta.name + '.input.json'">
|
:download="deckInfo.meta.name + '.input.json'">
|
||||||
Input JSON
|
Input JSON
|
||||||
</a>
|
</a>
|
||||||
<a class="download" :href="`/decks/${deckID}.tts.json`"
|
<a class="download" :href="downloadJSON(makeTTSJSON())"
|
||||||
:download="deckInfo.meta.name + '.tts.json'">
|
:download="deckInfo.meta.name + '.tts.json'">
|
||||||
Tabletop Sim Output JSON
|
Tabletop Sim Output JSON
|
||||||
</a>
|
</a>
|
||||||
@ -22,8 +22,9 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label> Upload JSON: WARNING: WILL CLEAR DECK
|
<label> Upload JSON: WARNING: WILL CLEAR DECK
|
||||||
<input @change="jsonUpload" type="file">
|
<input ref="jsonUpload" type="file">
|
||||||
</label>
|
</label>
|
||||||
|
<button type="button" @click="jsonUpload"> Load </button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@ -50,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Deck ref="deck" :cards="deckInfo.cards" v-model="selected"> </Deck>
|
<Deck ref="deck" :deckInfo="deckInfo" v-model="selected"> </Deck>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -59,6 +60,7 @@
|
|||||||
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',
|
||||||
@ -86,17 +88,10 @@
|
|||||||
* '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 = event.target.files;
|
let files = this.$refs.jsonUpload.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]);
|
||||||
@ -110,12 +105,91 @@
|
|||||||
reader.readAsDataURL(event.target.files[0]);
|
reader.readAsDataURL(event.target.files[0]);
|
||||||
},
|
},
|
||||||
|
|
||||||
upload() {
|
downloadJSON(json) {
|
||||||
let node = this.$refs.deck.$el;
|
return 'data:application/json;charset=utf-8,' +
|
||||||
|
encodeURIComponent(JSON.stringify(json))
|
||||||
|
},
|
||||||
|
|
||||||
html2canvas(node, {scale: 2, width: node.scrollWidth,
|
makeTTSJSON() {
|
||||||
backgroundColor: 'black'})
|
// make a copy
|
||||||
.then(canvas => document.body.appendChild(canvas));
|
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() {
|
||||||
|
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;
|
||||||
|
html2canvas(node, {scale: 2,
|
||||||
|
backgroundColor: 'black',
|
||||||
|
onclone: bindStyles})
|
||||||
|
.then(canvas => canvas.toDataURL("image/png"))
|
||||||
|
.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));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
12
src/HTMLEmbed.vue
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<template>
|
||||||
|
<foreignObject>
|
||||||
|
<div class="htmlEmbed" v-html="html"> </div>
|
||||||
|
</foreignObject>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'HTMLEmbed',
|
||||||
|
props: ['html'],
|
||||||
|
}
|
||||||
|
</script>
|
16
src/RawStringAsset.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
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,7 +6,6 @@ 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;
|
||||||
|
|
||||||
@ -17,13 +16,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}!`));
|
||||||
@ -46,79 +45,12 @@ function getDeckImage(req, res) {
|
|||||||
.catch(err => res.status(404).end());
|
.catch(err => res.status(404).end());
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTTSJSON(req, res) {
|
function handleUpload(req, res) {
|
||||||
// TODO: fix
|
|
||||||
db.findOne({_id: req.params.deckID})
|
|
||||||
.then(doc => {
|
|
||||||
let deckIn = doc.deck;
|
|
||||||
const cardTemplate = fs.readFileSync(__dirname + '/template/card.json');
|
|
||||||
const template = JSON.parse(fs.readFileSync(__dirname + `/template/${deckIn.type}/input.json`));
|
|
||||||
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;
|
const json = req.body;
|
||||||
|
console.log("Got deck upload!");
|
||||||
console.log("Making deck image");
|
db.update({_id: json._id},
|
||||||
const ph = await phantom.create();
|
{deck: json.deck,
|
||||||
const page = await ph.createPage();
|
image: json.image.substr("data:image/png;base64,".length)},
|
||||||
|
{upsert: true, returnUpdatedDocs: true})
|
||||||
page.on('onLoadFinished', status => {
|
.then(doc => res.status(201).json({id: doc._id}));
|
||||||
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 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>
|
<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>
|
||||||
<image id="image" x="9.453" y="27.512" width="162" height="121" preserveAspectRatio="xMidYMid"/>
|
<image v-bind:xlink:href="card.art" 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 id="keywordBox" transform="translate(-11.547,-6.4883)" font-family="'RedStateBlueState BB'">
|
<g v-if="card.keywords" 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,18 +331,12 @@
|
|||||||
<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 id="keywords" x="84" y="160" font-size="11.696px" font-weight="bold" text-anchor="middle">
|
<text x="84" y="160" font-size="11.696px" font-weight="bold" text-anchor="middle"> {{ card.keywords }} </text>
|
||||||
<tspan>Keywords</tspan>
|
|
||||||
</text>
|
|
||||||
</g>
|
</g>
|
||||||
<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="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="flavor" x="18.452999" y="219.5117" width="123" height="19" fill="#000000" font-family="'RedStateBlueState BB'" font-size="6px" font-style="italic">
|
<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>
|
||||||
<tspan>Text Here</tspan>
|
<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>
|
||||||
</text>
|
<g v-if="card.hp" transform="translate(-11.547,-6.4883)">
|
||||||
<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)"/>
|
||||||
@ -358,6 +352,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 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>
|
<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>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 278 KiB After Width: | Height: | Size: 278 KiB |
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"cardTypes": {
|
|
||||||
"deck": {
|
|
||||||
"meta": ["count"],
|
|
||||||
"inputs": {
|
|
||||||
"name": "text",
|
|
||||||
"keywords": "text",
|
|
||||||
"text": "textarea",
|
|
||||||
"flavor": "textarea",
|
|
||||||
"artist": "text",
|
|
||||||
"hp": "number",
|
|
||||||
"image": "image"
|
|
||||||
},
|
|
||||||
"hide": {
|
|
||||||
"hpMark": "hp",
|
|
||||||
"keywordBox": "keywords"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
8
src/template/environment/input.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
deck:
|
||||||
|
name: text
|
||||||
|
art: image
|
||||||
|
hp: number
|
||||||
|
keywords: text
|
||||||
|
text: textarea
|
||||||
|
flavor: textarea
|
||||||
|
artist: text
|
@ -1,58 +0,0 @@
|
|||||||
<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,7 +4,5 @@
|
|||||||
<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"/>
|
||||||
<foreignObject x="16" y="194" width="150" height="20" fill="#000000" font-family="'RedStateBlueState BB'" font-size="8px">
|
<HTMLEmbed x="16" y="194" width="150" height="20" fill="#000000" font-family="'RedStateBlueState BB'" font-size="8px" :html="card.incapacitated"> </HTMLEmbed>
|
||||||
<div xmlns="http://www.w3.org/1999/xhtml" v-html="card.incapacitated"> </div>
|
|
||||||
</foreignObject>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 695 B |
@ -28,8 +28,6 @@
|
|||||||
<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>
|
||||||
<foreignObject x="21.452999" y="222" width="137.06" height="14.694" font-family="'RedStateBlueState BB'" font-size="8px">
|
<HTMLEmbed x="21.452999" y="222" width="137.06" height="14.694" font-family="'RedStateBlueState BB'" font-size="8px" :html="card.powerText"> </HTMLEmbed>
|
||||||
<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,9 +322,7 @@
|
|||||||
<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"/>
|
||||||
<foreignObject x="14.5" y="160" width="152" height="48.5" font-family="'RedStateBlueState BB'" font-size="8.7px">
|
<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>
|
||||||
<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 |
@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
16
src/template/hero/input.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
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 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="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 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 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 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="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="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="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>
|
<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>
|
||||||
</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 id="image" x="10" y="29" width="162px" height="121px" preserveAspectRatio="xMidYMid"/>
|
<image v-bind:xlink:href="card.art" 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 id="name" x="14.173298" y="24.167526" font-family="'CrashLanding BB'" font-size="23px">Header</text>
|
<text x="14.173298" y="24.167526" font-family="'CrashLanding BB'" font-size="23px"> {{ card.name }} </text>
|
||||||
<g id="keywordBox">
|
<g v-if="card.keywords">
|
||||||
<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 id="keywords" x="21.05547" y="154.41197" font-family="'RedStateBlueState BB'" font-size="11.5px" font-weight="bold">Keywords</text>
|
<text x="21.05547" y="154.41197" font-family="'RedStateBlueState BB'" font-size="11.5px" font-weight="bold"> {{ card.keywords }} </text>
|
||||||
</g>
|
</g>
|
||||||
<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>
|
<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="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="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="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="101.80201" y="229.85782" font-family="'RedStateBlueState BB'" font-size="5.8px" text-align="end" text-anchor="end"> {{ card.quoteCitation }} </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>
|
<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>
|
||||||
<g id="hpMark" transform="translate(-375.55 -6.4883)" style="">
|
<g v-if="card.hp" 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 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>
|
<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>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 316 KiB After Width: | Height: | Size: 316 KiB |
@ -1,55 +0,0 @@
|
|||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
27
src/template/villain/input.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
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
|