├── iptv
├── .npmignore
├── assets
│ ├── prefs.json
│ └── icon.svg
├── .jshintrc
├── README.md
├── .gitignore
├── components
│ ├── all.js
│ ├── cctv.js
│ ├── search.js
│ └── index.js
├── main.js
├── package.json
├── .jsbeautifyrc
└── yarn.lock
├── bilibili
├── .npmignore
├── .jshintrc
├── README.md
├── assets
│ ├── icon.png
│ └── prefs.json
├── .gitignore
├── .prettierrc
├── components
│ ├── index.js
│ ├── area.js
│ ├── recommend.js
│ ├── search.js
│ ├── category.js
│ └── video.js
├── main.js
└── package.json
├── addon-index
├── .npmignore
├── .jshintrc
├── .gitignore
├── README.md
├── .prettierrc
├── main.js
├── package.json
├── .jsbeautifyrc
├── components
│ └── index.js
└── assets
│ └── icon.svg
├── goudai
├── assets
│ ├── prefs.json
│ └── icon.png
├── .jshintrc
├── README.md
├── main.js
├── components
│ ├── player.js
│ ├── index.js
│ ├── episode.js
│ ├── search.js
│ └── list.js
├── package.json
├── .jsbeautifyrc
└── yarn.lock
├── README.md
├── package.json
├── .gitignore
└── yarn.lock
/iptv/.npmignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | dist/
--------------------------------------------------------------------------------
/bilibili/.npmignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | dist/
--------------------------------------------------------------------------------
/addon-index/.npmignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | dist/
--------------------------------------------------------------------------------
/goudai/assets/prefs.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/iptv/assets/prefs.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/iptv/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi": true,
3 | "esversion": 8,
4 | "indent": true
5 | }
--------------------------------------------------------------------------------
/bilibili/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi": true,
3 | "esversion": 8,
4 | "indent": true
5 | }
--------------------------------------------------------------------------------
/goudai/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi": true,
3 | "esversion": 8,
4 | "indent": true
5 | }
--------------------------------------------------------------------------------
/addon-index/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi": true,
3 | "esversion": 8,
4 | "indent": true
5 | }
--------------------------------------------------------------------------------
/iptv/README.md:
--------------------------------------------------------------------------------
1 | # IPTV
2 |
3 | ❤️ An awesome addon project for [Dora.js](https://dorajs.com/).
--------------------------------------------------------------------------------
/bilibili/README.md:
--------------------------------------------------------------------------------
1 | # Bilibili
2 |
3 | ❤️ An awesome addon project for [Dora](https://dorajs.com/).
--------------------------------------------------------------------------------
/goudai/README.md:
--------------------------------------------------------------------------------
1 | # 狗带TV
2 |
3 | ❤️ An awesome addon project for [Dora.js](https://dorajs.com/).
--------------------------------------------------------------------------------
/iptv/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 | .DS_Store
4 | npm-debug.log
5 | .yarn-integrity
6 |
--------------------------------------------------------------------------------
/addon-index/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 | .DS_Store
4 | npm-debug.log
5 | .yarn-integrity
6 |
--------------------------------------------------------------------------------
/addon-index/README.md:
--------------------------------------------------------------------------------
1 | # 扩展检索
2 |
3 | ❤️ An awesome addon project of [Dora.js](https://dorajs.com/).
--------------------------------------------------------------------------------
/goudai/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/1024-js/awesome-dora/HEAD/goudai/assets/icon.png
--------------------------------------------------------------------------------
/bilibili/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/1024-js/awesome-dora/HEAD/bilibili/assets/icon.png
--------------------------------------------------------------------------------
/bilibili/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 | .DS_Store
4 | npm-debug.log
5 | yarn.lock
6 | .yarn-integrity
7 | package-lock.json
--------------------------------------------------------------------------------
/iptv/components/all.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | fetch() {
3 | return playlist.items.map(item => convert(item))
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # awesome-dora
2 | 收集 Dora.js 的仓库源、扩展
3 |
4 | 欢迎大家创建 PR 提交你的扩展!
5 | 本仓库源的地址:`https://1024-js.github.io/awesome-dora/index.json`
6 |
--------------------------------------------------------------------------------
/iptv/components/cctv.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | fetch() {
3 | return playlist.items.filter(item => item.name.includes('CCTV')).map(item => convert(item))
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/iptv/components/search.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | fetch({ args }) {
3 | return playlist.items
4 | .filter(item => item.name.includes(args.keyword))
5 | .map(item => convert(item))
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "displayName": "1024-js",
3 | "license": "MIT",
4 | "scripts": {
5 | "build": "dora repo"
6 | },
7 | "dependencies": {
8 | "@dora-app/cli": "^1.1.3"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/bilibili/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "useTabs": false,
4 | "semi": false,
5 | "singleQuote": true,
6 | "trailingComma": "none",
7 | "bracketSpacing": true,
8 | "arrowParens": "avoid"
9 | }
10 |
--------------------------------------------------------------------------------
/addon-index/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "useTabs": false,
4 | "semi": false,
5 | "singleQuote": true,
6 | "trailingComma": "none",
7 | "bracketSpacing": true,
8 | "arrowParens": "avoid",
9 | "endOfLine": "lf"
10 | }
11 |
--------------------------------------------------------------------------------
/goudai/main.js:
--------------------------------------------------------------------------------
1 | if (typeof $dora == undefined) {
2 | console.log('This project can only run on Dora app, please visit https://dorajs.com for more information')
3 | process.exit(-1)
4 | }
5 | module.exports = {
6 | cheerio: require('cheerio')
7 | }
8 |
--------------------------------------------------------------------------------
/goudai/components/player.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'video',
3 | async fetch({ args }) {
4 | let resp = await $http.get(args.url)
5 | $ = cheerio.load(resp.data)
6 | return {
7 | url: $('#fed-play-iframe').attr('data-play')
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/iptv/components/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'topTab',
3 | searchRoute: $route('search'),
4 | fetch() {
5 | return [{
6 | title: '全部',
7 | route: $route('all')
8 | }, {
9 | title: 'cctv',
10 | route: $route('cctv')
11 | }]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/addon-index/main.js:
--------------------------------------------------------------------------------
1 | if (typeof $dora == 'undefined') {
2 | console.error('This project runs only in Dora.js.')
3 | console.error('Please visit https://dorajs.com/ for more information.')
4 | process.exit(-1)
5 | }
6 |
7 | console.info('Congratulation, your addon runs successfully!')
8 | const arr = $storage.get('blacklist') || []
9 |
10 | global.blacklist = new Set()
11 | arr.forEach(element => {
12 | blacklist.add(element)
13 | })
14 | console.log(blacklist)
15 |
--------------------------------------------------------------------------------
/bilibili/assets/prefs.json:
--------------------------------------------------------------------------------
1 | {
2 | "cover": {
3 | "type": "string",
4 | "default": "system",
5 | "title": "封面图",
6 | "options": [{
7 | "value": "system",
8 | "title": "系统截图"
9 | }, {
10 | "value": "user",
11 | "title": "主播设置"
12 | }]
13 | },
14 | "recommend": {
15 | "type": "boolean",
16 | "default": true,
17 | "title": "是否显示推荐"
18 | }
19 | }
--------------------------------------------------------------------------------
/bilibili/components/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'topTab',
3 | async fetch() {
4 | let areas = await this.getAreas();
5 | let items = areas.map(item => {
6 | return {
7 | title: item.name,
8 | route: $route('area', {
9 | id: item.id
10 | }),
11 | }
12 | })
13 | if ($prefs.get('recommend')) {
14 | items.splice(0, 0, {
15 | title: '推荐',
16 | route: $route('recommend', {}),
17 | })
18 | }
19 | return {
20 | nextPage: null,
21 | items: items
22 | }
23 | },
24 | created() {}
25 | }
26 |
--------------------------------------------------------------------------------
/addon-index/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dorajs-index",
3 | "displayName": "扩展检索",
4 | "version": "1.0.0",
5 | "uuid": "50c482bd-9a5a-480a-9f3c-3fb054485111",
6 | "description": "扩展检索",
7 | "icon": "assets/icon.svg",
8 | "prefs": "assets/prefs.json",
9 | "main": "main.js",
10 | "license": "UNLICENSED",
11 | "author": {
12 | "name": "1024.js"
13 | },
14 | "engineStrick": true,
15 | "repository": {
16 | "type": "git",
17 | "url": ""
18 | },
19 | "homepage": "",
20 | "engines": {
21 | "Dora.js": ">=1.5.1"
22 | },
23 | "keywords": [
24 | "Dora.js"
25 | ],
26 | "dependencies": {}
27 | }
28 |
--------------------------------------------------------------------------------
/goudai/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dorajs-gou-dai",
3 | "displayName": "狗带TV",
4 | "version": "1.1.0",
5 | "uuid": "86add9e4-5e28-497a-b7bc-c478af9b4aeb",
6 | "description": "狗带TV:电影、电视剧、动漫、综艺",
7 | "icon": "assets/icon.png",
8 | "prefs": "assets/prefs.json",
9 | "main": "main.js",
10 | "license": "UNLICENSED",
11 | "author": {
12 | "name": "1024.js"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": ""
17 | },
18 | "homepage": "",
19 | "engines": {
20 | "dora": ">=1.0.1"
21 | },
22 | "keywords": [
23 | "Dora.js"
24 | ],
25 | "dependencies": {
26 | "cheerio": "^1.0.0-rc.3"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/iptv/main.js:
--------------------------------------------------------------------------------
1 | if (typeof $dora == undefined) {
2 | console.log('This project can only run on Dora app, please visit https://dorajs.com for more information')
3 | process.exit(-1)
4 | }
5 |
6 | console.log('Congratulation, your addon run successfully!')
7 |
8 | const fs = require('fs')
9 | const parser = require('iptv-playlist-parser')
10 |
11 | const data = fs.readFileSync('assets/cn.m3u', { encoding: 'utf-8' })
12 |
13 | module.exports = {
14 | playlist: parser.parse(data),
15 | convert(item) {
16 | return {
17 | title: item.name,
18 | route: $route('@video', {
19 | url: item.url,
20 | isLive: true
21 | })
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/iptv/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dorajs-iptv",
3 | "displayName": "IPTV",
4 | "version": "1.0.1",
5 | "uuid": "a363fa50-6c1b-4f3a-931a-44ee86c26abe",
6 | "description": "列表节选自 GitHub 上超级🔥的 iptv-org/iptv 项目,包含数千个电视节目",
7 | "icon": "assets/icon.svg",
8 | "prefs": "assets/prefs.json",
9 | "main": "main.js",
10 | "license": "UNLICENSED",
11 | "author": {
12 | "name": "1024.js"
13 | },
14 | "repository": {
15 | "type": "git",
16 | "url": ""
17 | },
18 | "homepage": "",
19 | "engines": {
20 | "dora": ">=1.0.1"
21 | },
22 | "keywords": [
23 | "Dora.js"
24 | ],
25 | "dependencies": {
26 | "iptv-playlist-parser": "^0.3.0"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/bilibili/main.js:
--------------------------------------------------------------------------------
1 | var _areas = null;
2 | $dora.mixin({
3 | async getAreas() {
4 | if (_areas === null) {
5 | const response = await $http.get(`${endpoint}/v1/Area/getList`);
6 | _areas = response.data.data;
7 | console.log('fetch areas success.')
8 | return _areas;
9 | }
10 | return _areas;
11 | },
12 | beforeCreate() {
13 | console.log(this.args)
14 | }
15 | })
16 | $http.defaults.headers.common["User-Agent"] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
17 | $http.defaults.headers.common["Accept"] = '*/*'
18 | module.exports = {
19 | endpoint: 'https://api.live.bilibili.com/room'
20 | }
21 |
--------------------------------------------------------------------------------
/goudai/components/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'bottomTab',
3 | searchRoute: $route('search'),
4 | fetch() {
5 | return [{
6 | title: '电影',
7 | image: $icon('movie'),
8 | route: $route('list', {
9 | type: 1
10 | })
11 | }, {
12 | title: '电视剧',
13 | image: $icon('tv'),
14 | route: $route('list', {
15 | type: 2
16 | })
17 | }, {
18 | title: '动漫',
19 | image: $icon('games'),
20 | route: $route('list', {
21 | type: 42
22 | })
23 | }, {
24 | title: '综艺',
25 | image: $icon('music_video'),
26 | route: $route('list', {
27 | type: 44
28 | })
29 | }]
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/goudai/.jsbeautifyrc:
--------------------------------------------------------------------------------
1 | {
2 | "allowed_file_extensions": ["js", "json", "jshintrc", "jsbeautifyrc"],
3 | "brace_style": "collapse,preserve-inline",
4 | "break_chained_methods": false,
5 | "e4x": false,
6 | "end_with_newline": true,
7 | "indent_char": " ",
8 | "indent_level": 0,
9 | "indent_size": 2,
10 | "indent_with_tabs": false,
11 | "jslint_happy": false,
12 | "keep_array_indentation": false,
13 | "keep_function_indentation": false,
14 | "max_preserve_newlines": 0,
15 | "preserve_newlines": true,
16 | "space_after_anon_function": false,
17 | "space_before_conditional": true,
18 | "space_in_empty_paren": false,
19 | "space_in_paren": false,
20 | "unescape_strings": false,
21 | "wrap_line_length": 0
22 | }
23 |
--------------------------------------------------------------------------------
/iptv/.jsbeautifyrc:
--------------------------------------------------------------------------------
1 | {
2 | "allowed_file_extensions": ["js", "json", "jshintrc", "jsbeautifyrc"],
3 | "brace_style": "collapse,preserve-inline",
4 | "break_chained_methods": false,
5 | "e4x": false,
6 | "end_with_newline": true,
7 | "indent_char": " ",
8 | "indent_level": 0,
9 | "indent_size": 2,
10 | "indent_with_tabs": false,
11 | "jslint_happy": false,
12 | "keep_array_indentation": false,
13 | "keep_function_indentation": false,
14 | "max_preserve_newlines": 0,
15 | "preserve_newlines": true,
16 | "space_after_anon_function": false,
17 | "space_before_conditional": true,
18 | "space_in_empty_paren": false,
19 | "space_in_paren": false,
20 | "unescape_strings": false,
21 | "wrap_line_length": 0
22 | }
23 |
--------------------------------------------------------------------------------
/addon-index/.jsbeautifyrc:
--------------------------------------------------------------------------------
1 | {
2 | "allowed_file_extensions": ["js", "json", "jshintrc", "jsbeautifyrc"],
3 | "brace_style": "collapse,preserve-inline",
4 | "break_chained_methods": false,
5 | "e4x": false,
6 | "end_with_newline": true,
7 | "indent_char": " ",
8 | "indent_level": 0,
9 | "indent_size": 2,
10 | "indent_with_tabs": false,
11 | "jslint_happy": false,
12 | "keep_array_indentation": false,
13 | "keep_function_indentation": false,
14 | "max_preserve_newlines": 0,
15 | "preserve_newlines": true,
16 | "space_after_anon_function": false,
17 | "space_before_conditional": true,
18 | "space_in_empty_paren": false,
19 | "space_in_paren": false,
20 | "unescape_strings": false,
21 | "wrap_line_length": 0
22 | }
23 |
--------------------------------------------------------------------------------
/bilibili/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dorajs-bililive",
3 | "displayName": "B 直播",
4 | "version": "1.2.0",
5 | "uuid": "a5ae5c73-d95f-4380-8f33-c3328462e1b3",
6 | "description": "哔哩哔哩 (゜-゜)つロ 干杯~",
7 | "icon": "assets/icon.png",
8 | "prefs": "assets/prefs.json",
9 | "main": "main.js",
10 | "updates": "适配 Dora.js 1.4.0\n修复弹幕重新打开后无法加载弹幕的问题",
11 | "license": "MIT",
12 | "author": {
13 | "name": "1024.js"
14 | },
15 | "repository": {
16 | "type": "git",
17 | "url": ""
18 | },
19 | "homepage": "",
20 | "engines": {
21 | "dora": ">=1.4.0"
22 | },
23 | "keywords": [
24 | "Dora.js"
25 | ],
26 | "categories": [
27 | "video"
28 | ],
29 | "dependencies": {
30 | "bilibili-danmaku-client": "^2.0.0"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/goudai/components/episode.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'list',
3 | async fetch() {
4 | let resp = await $http.get(this.args.url)
5 | $ = cheerio.load(resp.data)
6 | var parent = $('.fed-part-rows')
7 | let links = $('a', parent).filter(function(i, el) {
8 | let t = $(el)
9 | if (!t.has('href')) {
10 | return false
11 | }
12 | return $(el).attr('href').startsWith('/vodplay')
13 | })
14 | let items = []
15 |
16 | links.each((index, el) => {
17 | let link = $(el)
18 | let url = `http://www.byjsj.cn${link.attr('href')}`
19 | items.push({
20 | title: link.text(),
21 | link: url,
22 | route: $route('player', {
23 | url: url
24 | })
25 | })
26 | })
27 | return {
28 | items: items
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/bilibili/components/area.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'list',
3 | async fetch() {
4 | const areas = await this.getAreas();
5 | let area = areas.find(area => {
6 | return area.id == this.args.id
7 | })
8 | if (area == null) {
9 | throw Error(`${this.args.id} area not found`)
10 | }
11 | return {
12 | next_page: null,
13 | items: area.list.map(item => {
14 | return {
15 | title: item.name,
16 | route: $route('category', {
17 | areaId: item.id,
18 | parentId: this.args.id
19 | }),
20 | style: 'icon',
21 | link: `https://live.bilibili.com/p/eden/area-tags?parentAreaId=${this.args.id}&areaId=${item.id}`,
22 | image: item.pic
23 | }
24 | })
25 | }
26 | },
27 | beforeCreated() {
28 | this.title = this.args.title
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/goudai/components/search.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | async fetch({ page, args }) {
3 | let url = `http://www.byjsj.cn/vodsearch/${encodeURI(args.keyword)}----------${page||''}---.html`
4 | let resp = await $http.get(url)
5 | $ = cheerio.load(resp.data)
6 | var dls = $('dl')
7 | let items = []
8 | dls.each((i, dl) => {
9 | let h1 = $('h1', dl)
10 | let link = $('a', h1)
11 | let title = link.text()
12 | let url = `http://www.byjsj.cn${link.attr('href')}`
13 | items.push({
14 | link: url,
15 | title: title,
16 | style: 'vod',
17 | image: $('.fed-lazy', dl).attr('data-original'),
18 | summary: $('.fed-part-esan').text(),
19 | route: $route('episode', {
20 | url: url
21 | })
22 | })
23 | })
24 | return {
25 | nextPage: (page || 1) + 1,
26 | items: items
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/goudai/components/list.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | async fetch({ page, args }) {
3 | let resp = await $http.get(`http://www.byjsj.cn/vodshow/${args.type}--------${page || ''}---.html`)
4 | let html = resp.data
5 | const $ = cheerio.load(html)
6 | let list = $('li', '.fed-list-info')
7 | let items = []
8 | list.each((index, li) => {
9 | let link = $('.fed-list-pics', li)
10 | let title = $('.fed-list-title', li).text()
11 | let url = `http://www.byjsj.cn/${link.attr('href')}`
12 | items.push({
13 | link: url,
14 | style: 'vod',
15 | image: link.attr('data-original'),
16 | title: title,
17 | summary: $('.fed-list-desc', li).text(),
18 | label: $('span', link).text(),
19 | route: $route('episode', {
20 | url: url
21 | })
22 | })
23 | })
24 | return {
25 | nextPage: (page || 1) + 1,
26 | items: items
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/bilibili/components/recommend.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'list',
3 | async fetch({ page }) {
4 | page = page || 1
5 | const url = `${endpoint}/v1/room/get_user_recommend?page=${page}`
6 | let response = await $http.get(url)
7 | let data = response.data.data
8 | let cover_type = $prefs.get('cover')
9 | let items = data.map(item => {
10 | return {
11 | title: item.title,
12 | route: $route('video', {
13 | roomId: item.roomid
14 | }),
15 | style: 'live',
16 | image: cover_type == 'system' ? item.system_cover : item.user_cover,
17 | author: {
18 | name: item.uname,
19 | avatar: item.face,
20 | route: $route(`https://space.bilibili.com/${item.uid}`)
21 | },
22 | link: `https://live.bilibili.com${item.link}`,
23 | label: item.areaName,
24 | viewerCount: item.online
25 | }
26 | })
27 | return {
28 | nextPage: page + 1,
29 | items: items
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/bilibili/components/search.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'folder',
3 | style: 'live',
4 | async fetch({page}) {
5 | this.subtitle = this.args.keyword
6 | page = page || 1
7 | const url = `${endpoint}/v1/room/get_user_recommend?page=${page}`
8 | let response = await $http.get(url)
9 | let data = response.data.data
10 | let cover_type = $prefs.get('cover')
11 | let items = data.map(item => {
12 | return {
13 | title: item.title,
14 | route: $route.video('video', {
15 | roomId: item.roomid
16 | }),
17 | image: cover_type == 'system' ? item.system_cover : item.user_cover,
18 | author: {
19 | name: item.uname,
20 | avatar: item.face,
21 | route: $route.url(`https://space.bilibili.com/${item.uid}`)
22 | },
23 | link: `https://live.bilibili.com${item.link}`,
24 | label: item.areaName,
25 | number: item.online
26 | }
27 | })
28 | return {
29 | nextPage: page + 1,
30 | items: items
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/bilibili/components/category.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'list',
3 | async fetch({ page }) {
4 | page = page || 1
5 | let url = `${endpoint}/v3/area/getRoomList?platform=web&parent_area_id=${this.args.parentId}&cate_id=0&area_id=${this.args.areaId}&sort_type=online&page=${page}&page_size=30&tag_version=1`
6 | let response = await $http.get(url)
7 | let items = response.data.data.list
8 | let cover_type = $prefs.get('cover')
9 | return {
10 | nextPage: page,
11 | items: items.map(item => {
12 | return {
13 | title: item.title,
14 | route: $route('video', {
15 | roomId: item.roomid
16 | }),
17 | link: `https://live.bilibili.com${item.link}`,
18 | image: cover_type == 'system' ? item.system_cover : item.user_cover,
19 | style: 'live',
20 | author: {
21 | name: item.uname,
22 | avatar: item.face,
23 | route: $route(`https://space.bilibili.com/${item.uid}`)
24 | },
25 | label: item.area_name,
26 | viewerCount: item.online
27 | }
28 | })
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/addon-index/components/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | type: 'list',
3 | created() {
4 | if (!$storage.has('notice')) {
5 | $storage.put('notice', true)
6 | $input.confirm('长按可加入黑名单')
7 | }
8 | },
9 | async fetch({ args, page }) {
10 | offset = page || 0
11 | const resp = await $http.get(
12 | `http://registry.npmjs.com/-/v1/search?text=Dora.js&from=${offset}`
13 | )
14 | const count = resp.data.objects.length
15 | return {
16 | items: resp.data.objects
17 | .map(item => item.package)
18 | .filter(package => !blacklist.has(package.name))
19 | .map(package => ({
20 | title: package.name,
21 | summary: package.description,
22 | onClick: async () => {
23 | $dora.install(`npm://${package.name}`)
24 | },
25 | onLongClick: () => {
26 | this.showOptions(package)
27 | }
28 | })),
29 | nextPage: resp.data.total > count + offset ? count : null
30 | }
31 | },
32 | async showOptions(package) {
33 | const option = await $input.select({
34 | title: '选项',
35 | options: [
36 | {
37 | title: '加入黑名单',
38 | onClick: () => {
39 | blacklist.add(package.name)
40 | $storage.put('blacklist', Array.from(blacklist))
41 | $ui.toast(`added ${package.name} to backlist`)
42 | }
43 | },
44 | {
45 | title: `@${package.publisher.username}`,
46 | onClick: () => {
47 | $ui.viewUser(package.publisher.username)
48 | }
49 | }
50 | ]
51 | })
52 | if (option) {
53 | option.onClick()
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Node template
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 | lerna-debug.log*
10 |
11 | # Diagnostic reports (https://nodejs.org/api/report.html)
12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
13 |
14 | # Runtime data
15 | pids
16 | *.pid
17 | *.seed
18 | *.pid.lock
19 |
20 | # Directory for instrumented libs generated by jscoverage/JSCover
21 | lib-cov
22 |
23 | # Coverage directory used by tools like istanbul
24 | coverage
25 | *.lcov
26 |
27 | # nyc test coverage
28 | .nyc_output
29 |
30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
31 | .grunt
32 |
33 | # Bower dependency directory (https://bower.io/)
34 | bower_components
35 |
36 | # node-waf configuration
37 | .lock-wscript
38 |
39 | # Compiled binary addons (https://nodejs.org/api/addons.html)
40 | build/Release
41 |
42 | # Dependency directories
43 | node_modules/
44 | jspm_packages/
45 |
46 | # TypeScript v1 declaration files
47 | typings/
48 |
49 | # TypeScript cache
50 | *.tsbuildinfo
51 |
52 | # Optional npm cache directory
53 | .npm
54 |
55 | # Optional eslint cache
56 | .eslintcache
57 |
58 | # Optional REPL history
59 | .node_repl_history
60 |
61 | # Output of 'npm pack'
62 | *.tgz
63 |
64 | # Yarn Integrity file
65 | .yarn-integrity
66 |
67 | # dotenv environment variables file
68 | .env
69 | .env.test
70 |
71 | # parcel-bundler cache (https://parceljs.org/)
72 | .cache
73 |
74 | # next.js build output
75 | .next
76 |
77 | # nuxt.js build output
78 | .nuxt
79 |
80 | # vuepress build output
81 | .vuepress/dist
82 |
83 | # Serverless directories
84 | .serverless/
85 |
86 | # FuseBox cache
87 | .fusebox/
88 |
89 | # DynamoDB Local files
90 | .dynamodb/
91 |
92 | .output
93 |
94 | *.log
95 | dist/
96 | package-lock.json
97 | .vscode
98 |
--------------------------------------------------------------------------------
/iptv/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/runtime-corejs2@^7.2.0":
6 | version "7.7.6"
7 | resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.7.6.tgz#50b7cd4eab929b4cb66167c4972d35eaceaa124b"
8 | integrity sha512-QYp/8xdH8iMin3pH5gtT/rUuttVfIcOhWBC3wh9Eh/qs4jEe39+3DpCDLgWXhMQgiCTOH8mrLSvQ0OHOCcox9g==
9 | dependencies:
10 | core-js "^2.6.5"
11 | regenerator-runtime "^0.13.2"
12 |
13 | core-js@^2.6.5:
14 | version "2.6.11"
15 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
16 | integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
17 |
18 | decamelize@^3.2.0:
19 | version "3.2.0"
20 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851"
21 | integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==
22 | dependencies:
23 | xregexp "^4.2.4"
24 |
25 | iptv-playlist-parser@^0.3.0:
26 | version "0.3.0"
27 | resolved "https://registry.yarnpkg.com/iptv-playlist-parser/-/iptv-playlist-parser-0.3.0.tgz#d08129fa2d7bb03fbef1767d96fca902928e8301"
28 | integrity sha512-FA9B+8Lh+0KtWWXDaxzFf1DY3QJI+mGCZP/E51XoJcfahnajyyqdfI1ClpQquFHok2CLNqnfbeW6rzJN9TCREg==
29 | dependencies:
30 | decamelize "^3.2.0"
31 | m3u8-file-parser "^0.2.2"
32 |
33 | m3u8-file-parser@^0.2.2:
34 | version "0.2.2"
35 | resolved "https://registry.yarnpkg.com/m3u8-file-parser/-/m3u8-file-parser-0.2.2.tgz#6e3f31524a4b0c4d3f6c517d6706c7b17ee776e6"
36 | integrity sha512-OW2m2wcVh4g55MKpe5jxp4AOkpUVQEuaXEF8YTnIP1eAPmLtmuzfk+QcHqA+raqK3zdkz/nHjNvoCKn0k6UgzA==
37 |
38 | regenerator-runtime@^0.13.2:
39 | version "0.13.3"
40 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
41 | integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==
42 |
43 | xregexp@^4.2.4:
44 | version "4.2.4"
45 | resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.2.4.tgz#02a4aea056d65a42632c02f0233eab8e4d7e57ed"
46 | integrity sha512-sO0bYdYeJAJBcJA8g7MJJX7UrOZIfJPd8U2SC7B2Dd/J24U0aQNoGp33shCaBSWeb0rD5rh6VBUIXOkGal1TZA==
47 | dependencies:
48 | "@babel/runtime-corejs2" "^7.2.0"
49 |
--------------------------------------------------------------------------------
/addon-index/assets/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
54 |
--------------------------------------------------------------------------------
/bilibili/components/video.js:
--------------------------------------------------------------------------------
1 | const qualityLevels = {
2 | '1': 'low',
3 | '2': 'super',
4 | '3': 'high',
5 | '4': 'blue'
6 | }
7 | const DanmakuClient = require('bilibili-danmaku-client')
8 | module.exports = {
9 | quality: null,
10 | line_id: 0,
11 | type: 'video',
12 | async fetch({ args }) {
13 | let url = `${endpoint}/v1/Room/playUrl?cid=${args.roomId}&platform=android&otype=json`
14 | if (this.quality) {
15 | url += `&quality=${this.quality}`
16 | }
17 | const resp = await $http.get(url)
18 | let data = resp.data.data
19 | if (!data.quality_description) {
20 | throw new Error('获取视频流信息失败 :(')
21 | }
22 | let clarifyIndex = 0
23 | let lineIndex = 0
24 | let clarifies = data.quality_description.map((quality, index) => {
25 | if (quality.qn == this.quality) {
26 | clarifyIndex = index
27 | }
28 | return {
29 | // 'level': qualityLevels[quality.qn] || 'unknown',
30 | title: quality.desc,
31 | args: {
32 | quality: quality.qn
33 | }
34 | }
35 | })
36 | let lines = data.durl.map((durl, index) => {
37 | if (index == this.line_id) {
38 | lineIndex = index
39 | }
40 | return {
41 | title: index == 0 ? '主线路' : `线路 ${index + 1}`,
42 | args: {
43 | url: durl.url
44 | }
45 | }
46 | })
47 | // this.client = new DanmakuClient(5441);
48 | return {
49 | url: data.durl[this.line_id].url || data.durl[0].url,
50 | selectors: [
51 | {
52 | title: '清晰度',
53 | select: clarifyIndex,
54 | options: clarifies,
55 | onSelect: option => {
56 | console.log(option)
57 | this.quality = option.args.quality
58 | this.refresh()
59 | }
60 | },
61 | {
62 | title: '线路',
63 | select: lineIndex,
64 | options: lines,
65 | onSelect: option => {
66 | this.url = option.args.url
67 | }
68 | }
69 | ]
70 | }
71 | },
72 | startDanmaku() {
73 | console.log(`startDanmaku: roomId=${this.args.roomId}`)
74 | if (this.client) {
75 | this.client.terminate()
76 | }
77 | this.client = new DanmakuClient(parseInt(this.args.roomId))
78 | this.client.start()
79 | this.client.on('event', ({ name, content }) => {
80 | switch (name) {
81 | case 'danmaku':
82 | console.log(content)
83 | this.addDanmaku({
84 | nick: content.sender.name,
85 | uid: content.sender.uid,
86 | content: content.content
87 | })
88 | break
89 | case 'gift':
90 | break
91 | }
92 | })
93 | this.client.on('open', () => console.log('Client opened.'))
94 | this.client.on('close', () => console.log('Client closed.'))
95 | this.client.on('error', () => console.log('Client error.'))
96 | },
97 | stopDanmaku() {
98 | if (this.client) {
99 | this.client.terminate()
100 | this.client = null
101 | }
102 | },
103 | // sendDanmaku(content) {
104 | // $ui.toast(`TODO: content=${content}`)
105 | // }
106 | }
107 |
--------------------------------------------------------------------------------
/iptv/assets/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/goudai/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/node@*":
6 | version "12.12.17"
7 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.17.tgz#191b71e7f4c325ee0fb23bc4a996477d92b8c39b"
8 | integrity sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==
9 |
10 | boolbase@~1.0.0:
11 | version "1.0.0"
12 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
13 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
14 |
15 | cheerio@^1.0.0-rc.3:
16 | version "1.0.0-rc.3"
17 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6"
18 | integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==
19 | dependencies:
20 | css-select "~1.2.0"
21 | dom-serializer "~0.1.1"
22 | entities "~1.1.1"
23 | htmlparser2 "^3.9.1"
24 | lodash "^4.15.0"
25 | parse5 "^3.0.1"
26 |
27 | css-select@~1.2.0:
28 | version "1.2.0"
29 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
30 | integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
31 | dependencies:
32 | boolbase "~1.0.0"
33 | css-what "2.1"
34 | domutils "1.5.1"
35 | nth-check "~1.0.1"
36 |
37 | css-what@2.1:
38 | version "2.1.3"
39 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
40 | integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
41 |
42 | dom-serializer@0:
43 | version "0.2.2"
44 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
45 | integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
46 | dependencies:
47 | domelementtype "^2.0.1"
48 | entities "^2.0.0"
49 |
50 | dom-serializer@~0.1.1:
51 | version "0.1.1"
52 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
53 | integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
54 | dependencies:
55 | domelementtype "^1.3.0"
56 | entities "^1.1.1"
57 |
58 | domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
59 | version "1.3.1"
60 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
61 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
62 |
63 | domelementtype@^2.0.1:
64 | version "2.0.1"
65 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
66 | integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
67 |
68 | domhandler@^2.3.0:
69 | version "2.4.2"
70 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
71 | integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
72 | dependencies:
73 | domelementtype "1"
74 |
75 | domutils@1.5.1:
76 | version "1.5.1"
77 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
78 | integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
79 | dependencies:
80 | dom-serializer "0"
81 | domelementtype "1"
82 |
83 | domutils@^1.5.1:
84 | version "1.7.0"
85 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
86 | integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
87 | dependencies:
88 | dom-serializer "0"
89 | domelementtype "1"
90 |
91 | entities@^1.1.1, entities@~1.1.1:
92 | version "1.1.2"
93 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
94 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
95 |
96 | entities@^2.0.0:
97 | version "2.0.0"
98 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
99 | integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
100 |
101 | htmlparser2@^3.9.1:
102 | version "3.10.1"
103 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
104 | integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
105 | dependencies:
106 | domelementtype "^1.3.1"
107 | domhandler "^2.3.0"
108 | domutils "^1.5.1"
109 | entities "^1.1.1"
110 | inherits "^2.0.1"
111 | readable-stream "^3.1.1"
112 |
113 | inherits@^2.0.1, inherits@^2.0.3:
114 | version "2.0.4"
115 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
116 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
117 |
118 | lodash@^4.15.0:
119 | version "4.17.15"
120 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
121 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
122 |
123 | nth-check@~1.0.1:
124 | version "1.0.2"
125 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
126 | integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
127 | dependencies:
128 | boolbase "~1.0.0"
129 |
130 | parse5@^3.0.1:
131 | version "3.0.3"
132 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
133 | integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
134 | dependencies:
135 | "@types/node" "*"
136 |
137 | readable-stream@^3.1.1:
138 | version "3.4.0"
139 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
140 | integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
141 | dependencies:
142 | inherits "^2.0.3"
143 | string_decoder "^1.1.1"
144 | util-deprecate "^1.0.1"
145 |
146 | safe-buffer@~5.2.0:
147 | version "5.2.0"
148 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
149 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
150 |
151 | string_decoder@^1.1.1:
152 | version "1.3.0"
153 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
154 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
155 | dependencies:
156 | safe-buffer "~5.2.0"
157 |
158 | util-deprecate@^1.0.1:
159 | version "1.0.2"
160 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
161 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
162 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@dora-app/cli@^1.1.3":
6 | version "1.2.0"
7 | resolved "https://registry.yarnpkg.com/@dora-app/cli/-/cli-1.2.0.tgz#c4c9f6e625f60d3470e6ceaf9a63fd8240881766"
8 | integrity sha512-8cf275z1kcn4UR5o+Sgi0wlF5bs3XGOvtRw9fw+lVUs2zEoY4JaEkt6PTxSTd10SvDwXpUwYp9Ybb0N8kbspOw==
9 | dependencies:
10 | argparse "^1.0.10"
11 | chalk "^2.4.2"
12 | read-package-json "^2.1.0"
13 |
14 | ansi-styles@^3.2.1:
15 | version "3.2.1"
16 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
17 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
18 | dependencies:
19 | color-convert "^1.9.0"
20 |
21 | argparse@^1.0.10:
22 | version "1.0.10"
23 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
24 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
25 | dependencies:
26 | sprintf-js "~1.0.2"
27 |
28 | balanced-match@^1.0.0:
29 | version "1.0.0"
30 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
31 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
32 |
33 | brace-expansion@^1.1.7:
34 | version "1.1.11"
35 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
36 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
37 | dependencies:
38 | balanced-match "^1.0.0"
39 | concat-map "0.0.1"
40 |
41 | chalk@^2.4.2:
42 | version "2.4.2"
43 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
44 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
45 | dependencies:
46 | ansi-styles "^3.2.1"
47 | escape-string-regexp "^1.0.5"
48 | supports-color "^5.3.0"
49 |
50 | color-convert@^1.9.0:
51 | version "1.9.3"
52 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
53 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
54 | dependencies:
55 | color-name "1.1.3"
56 |
57 | color-name@1.1.3:
58 | version "1.1.3"
59 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
60 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
61 |
62 | concat-map@0.0.1:
63 | version "0.0.1"
64 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
65 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
66 |
67 | escape-string-regexp@^1.0.5:
68 | version "1.0.5"
69 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
70 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
71 |
72 | fs.realpath@^1.0.0:
73 | version "1.0.0"
74 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
75 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
76 |
77 | glob@^7.1.1:
78 | version "7.1.6"
79 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
80 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
81 | dependencies:
82 | fs.realpath "^1.0.0"
83 | inflight "^1.0.4"
84 | inherits "2"
85 | minimatch "^3.0.4"
86 | once "^1.3.0"
87 | path-is-absolute "^1.0.0"
88 |
89 | graceful-fs@^4.1.2:
90 | version "4.2.3"
91 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
92 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
93 |
94 | has-flag@^3.0.0:
95 | version "3.0.0"
96 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
97 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
98 |
99 | hosted-git-info@^2.1.4:
100 | version "2.8.5"
101 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
102 | integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
103 |
104 | inflight@^1.0.4:
105 | version "1.0.6"
106 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
107 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
108 | dependencies:
109 | once "^1.3.0"
110 | wrappy "1"
111 |
112 | inherits@2:
113 | version "2.0.4"
114 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
115 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
116 |
117 | json-parse-better-errors@^1.0.1:
118 | version "1.0.2"
119 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
120 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
121 |
122 | minimatch@^3.0.4:
123 | version "3.0.4"
124 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
125 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
126 | dependencies:
127 | brace-expansion "^1.1.7"
128 |
129 | normalize-package-data@^2.0.0:
130 | version "2.5.0"
131 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
132 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
133 | dependencies:
134 | hosted-git-info "^2.1.4"
135 | resolve "^1.10.0"
136 | semver "2 || 3 || 4 || 5"
137 | validate-npm-package-license "^3.0.1"
138 |
139 | once@^1.3.0:
140 | version "1.4.0"
141 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
142 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
143 | dependencies:
144 | wrappy "1"
145 |
146 | path-is-absolute@^1.0.0:
147 | version "1.0.1"
148 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
149 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
150 |
151 | path-parse@^1.0.6:
152 | version "1.0.6"
153 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
154 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
155 |
156 | read-package-json@^2.1.0:
157 | version "2.1.0"
158 | resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.0.tgz#e3d42e6c35ea5ae820d9a03ab0c7291217fc51d5"
159 | integrity sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==
160 | dependencies:
161 | glob "^7.1.1"
162 | json-parse-better-errors "^1.0.1"
163 | normalize-package-data "^2.0.0"
164 | slash "^1.0.0"
165 | optionalDependencies:
166 | graceful-fs "^4.1.2"
167 |
168 | resolve@^1.10.0:
169 | version "1.13.1"
170 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
171 | integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==
172 | dependencies:
173 | path-parse "^1.0.6"
174 |
175 | "semver@2 || 3 || 4 || 5":
176 | version "5.7.1"
177 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
178 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
179 |
180 | slash@^1.0.0:
181 | version "1.0.0"
182 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
183 | integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
184 |
185 | spdx-correct@^3.0.0:
186 | version "3.1.0"
187 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
188 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
189 | dependencies:
190 | spdx-expression-parse "^3.0.0"
191 | spdx-license-ids "^3.0.0"
192 |
193 | spdx-exceptions@^2.1.0:
194 | version "2.2.0"
195 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
196 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
197 |
198 | spdx-expression-parse@^3.0.0:
199 | version "3.0.0"
200 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
201 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
202 | dependencies:
203 | spdx-exceptions "^2.1.0"
204 | spdx-license-ids "^3.0.0"
205 |
206 | spdx-license-ids@^3.0.0:
207 | version "3.0.5"
208 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
209 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
210 |
211 | sprintf-js@~1.0.2:
212 | version "1.0.3"
213 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
214 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
215 |
216 | supports-color@^5.3.0:
217 | version "5.5.0"
218 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
219 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
220 | dependencies:
221 | has-flag "^3.0.0"
222 |
223 | validate-npm-package-license@^3.0.1:
224 | version "3.0.4"
225 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
226 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
227 | dependencies:
228 | spdx-correct "^3.0.0"
229 | spdx-expression-parse "^3.0.0"
230 |
231 | wrappy@1:
232 | version "1.0.2"
233 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
234 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
235 |
--------------------------------------------------------------------------------