Add files via upload
This commit is contained in:
925
niceidea.js
Normal file
925
niceidea.js
Normal file
@@ -0,0 +1,925 @@
|
||||
/**
|
||||
* Checkbox list examples
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
const inquirer = require('inquirer');
|
||||
|
||||
function mainMenu() {
|
||||
process.stdout.write('\x1Bc');
|
||||
const questions = [{
|
||||
type: 'rawlist',
|
||||
message: '[NiceIdea 音樂靈感隨機產生器 v1.0 - 主選單]',
|
||||
name: 'menu',
|
||||
pageSize: 12,
|
||||
choices: [{
|
||||
name: "給我一些隨便的【音】",
|
||||
value: "randomNotes"
|
||||
},
|
||||
{
|
||||
name: "給我一些隨便的【和弦】",
|
||||
value: "randomChords"
|
||||
},
|
||||
{
|
||||
name: "給我一個隨便的【大小調/調號】",
|
||||
value: "randomKeys"
|
||||
},
|
||||
{
|
||||
name: "給我一些隨便的【調式】",
|
||||
value: "randomModes"
|
||||
},
|
||||
{
|
||||
name: "給我一個隨便的【拍號】",
|
||||
value: "randomMeter"
|
||||
},
|
||||
{
|
||||
name: "給我一個隨便的【速度】",
|
||||
value: "randomTempo"
|
||||
},
|
||||
{
|
||||
name: "給我一個隨便的【歌名】",
|
||||
value: "randomTitle"
|
||||
},
|
||||
{
|
||||
name: "給我一個隨便的【點子】",
|
||||
value: "idea"
|
||||
},
|
||||
{
|
||||
name: "結束",
|
||||
value: "quit"
|
||||
}
|
||||
],
|
||||
}, ]
|
||||
|
||||
inquirer.prompt(questions).then((answers) => {
|
||||
// console.log(answers["menu"]);
|
||||
switch (answers["menu"]) {
|
||||
case "randomNotes":
|
||||
randomNotes();
|
||||
break;
|
||||
case "randomChords":
|
||||
randomChords();
|
||||
break;
|
||||
case "randomKeys":
|
||||
randomKeys();
|
||||
break;
|
||||
case "randomModes":
|
||||
randomModes();
|
||||
break;
|
||||
case "randomMeter":
|
||||
randomMeter();
|
||||
break;
|
||||
case "randomTempo":
|
||||
randomTempo();
|
||||
break;
|
||||
case "randomTitle":
|
||||
randomTitle();
|
||||
break;
|
||||
case "idea":
|
||||
idea();
|
||||
break;
|
||||
case "quit":
|
||||
console.log("=== 掰掰! ===");
|
||||
process.exit(0);
|
||||
break;
|
||||
default:
|
||||
console.log("=== 掰掰! ===");
|
||||
process.exit(0);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function exitOrNot() {
|
||||
// 要不要結束?
|
||||
const questions = [{
|
||||
type: 'confirm',
|
||||
message: '還要再玩一次嗎?',
|
||||
name: 'exit',
|
||||
default: true
|
||||
}]
|
||||
|
||||
inquirer.prompt(questions).then((answers) => {
|
||||
// console.log(answers["exit"]);
|
||||
if (answers["exit"]) {
|
||||
mainMenu();
|
||||
} else {
|
||||
console.log("=== 掰掰!記得多到 NiceChord.com 學音樂唷~ ===");
|
||||
process.exit(0);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function randomNotes() {
|
||||
|
||||
const questions = [{
|
||||
type: 'checkbox',
|
||||
message: '[隨機音符產生器] 選擇要抽的音:',
|
||||
name: 'notes',
|
||||
pageSize: 12,
|
||||
choices: ["C", "Db", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B"],
|
||||
default: ["C", "Db", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B"],
|
||||
validate(answer) {
|
||||
if (answer.length < 1) {
|
||||
return '至少要選一個音唷!';
|
||||
}
|
||||
return true;
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'number',
|
||||
message: '要產生幾個音?(1-100)',
|
||||
name: 'howmany',
|
||||
default: 8,
|
||||
},
|
||||
]
|
||||
|
||||
inquirer.prompt(questions).then((answers) => {
|
||||
// console.log(answers["notes"][0]);
|
||||
// console.log(answers["howmany"]);
|
||||
let choices = answers["notes"];
|
||||
let result = [];
|
||||
let howmany = answers["howmany"];
|
||||
for (let i = 0; i < howmany; i++) {
|
||||
result.push(choices[Math.floor(Math.random() * choices.length)])
|
||||
}
|
||||
console.log(result);
|
||||
exitOrNot();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function randomChords() {
|
||||
|
||||
const questions = [{
|
||||
type: 'checkbox',
|
||||
message: '[隨機和弦產生器] 選擇要抽的和弦類型:',
|
||||
name: 'chords',
|
||||
pageSize: 12,
|
||||
choices: ["major", "minor", "augmented", "diminished", "sus2", "maj7", "m7", "7", "7sus", "m7(b5)", "dim7"],
|
||||
default: ["maj7", "m7", "7sus"],
|
||||
validate(answer) {
|
||||
if (answer.length < 1) {
|
||||
return '至少要選一種喔!';
|
||||
}
|
||||
return true;
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'number',
|
||||
message: '要產生幾個和弦?(1-100)',
|
||||
name: 'howmany',
|
||||
default: 8,
|
||||
},
|
||||
]
|
||||
|
||||
inquirer.prompt(questions).then((answers) => {
|
||||
// console.log(answers["notes"][0]);
|
||||
// console.log(answers["howmany"]);
|
||||
let types = answers["chords"]; // 使用者選的和弦類型
|
||||
let choices = []; // 納入抽獎的和弦 - 候選名單
|
||||
let result = []; // 最終輸出結果
|
||||
let howmany = answers["howmany"]; // 幾個
|
||||
|
||||
// 所有和弦名單
|
||||
let major = ["C", "Db", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B"];
|
||||
let minor = ["Cm", "C#m", "Dm", "Ebm", "Em", "Fm", "F#m", "Gm", "G#m", "Am", "Bbm", "Bm"];
|
||||
let augmented = ["C+", "Db+", "D+", "Eb+", "E+", "F+", "Gb+", "G+", "Ab+", "A+", "Bb+", "B+"];
|
||||
let diminished = ["Cdim", "C#dim", "Ddim", "D#dim", "Edim", "Fdim", "F#dim", "Gdim", "G#dim", "Adim", "A#dim", "Bdim"];
|
||||
let sus2 = ["Csus2", "Dbsus2", "Dsus2", "Ebsus2", "Esus2", "Fsus2", "F#sus2", "Gsus2", "Absus2", "Asus2", "Bbsus2", "Bsus2"];
|
||||
let maj7 = ["Cmaj7", "Dbmaj7", "Dmaj7", "Ebmaj7", "Emaj7", "Fmaj7", "Gbmaj7", "Gmaj7", "Abmaj7", "Amaj7", "Bbmaj7", "Bmaj7"];
|
||||
let m7 = ["Cm7", "C#m7", "Dm7", "Ebm7", "Em7", "Fm7", "F#m7", "Gm7", "G#m7", "Am7", "Bbm7", "Bm7"];
|
||||
let dom7 = ["C7", "Db7", "D7", "Eb7", "E7", "F7", "F#7", "G7", "Ab7", "A7", "Bb7", "B7"];
|
||||
let dom7sus = ["C7sus", "C#7sus", "D7sus", "Eb7sus", "E7sus", "F7sus", "F#7sus", "G7sus", "Ab7sus", "A7sus", "Bb7sus", "B7sus"];
|
||||
let m7b5 = ["Cm7(b5)", "C#m7(b5)", "Dm7(b5)", "D#m7(b5)", "Em7(b5)", "Fm7(b5)", "F#m7(b5)", "Gm7(b5)", "G#m7(b5)", "Am7(b5)", "A#m7(b5)", "Bm7(b5)"];
|
||||
let dim7 = ["Cdim7", "C#dim7", "Ddim7", "D#dim7", "Edim7", "Fdim7", "F#dim7", "Gdim7", "G#dim7", "Adim7", "A#dim7", "Bdim7"];
|
||||
|
||||
// 把選擇的和弦放入候選名單
|
||||
if (types.includes("major")) {
|
||||
choices = choices.concat(major);
|
||||
}
|
||||
if (types.includes("minor")) {
|
||||
choices = choices.concat(minor);
|
||||
}
|
||||
if (types.includes("augmented")) {
|
||||
choices = choices.concat(augmented);
|
||||
}
|
||||
if (types.includes("diminished")) {
|
||||
choices = choices.concat(diminished);
|
||||
}
|
||||
if (types.includes("sus2")) {
|
||||
choices = choices.concat(sus2);
|
||||
}
|
||||
if (types.includes("maj7")) {
|
||||
choices = choices.concat(maj7);
|
||||
}
|
||||
if (types.includes("m7")) {
|
||||
choices = choices.concat(m7);
|
||||
}
|
||||
if (types.includes("7")) {
|
||||
choices = choices.concat(dom7);
|
||||
}
|
||||
if (types.includes("7sus")) {
|
||||
choices = choices.concat(dom7sus);
|
||||
}
|
||||
if (types.includes("m7(b5)")) {
|
||||
choices = choices.concat(m7b5);
|
||||
}
|
||||
if (types.includes("dim7")) {
|
||||
choices = choices.concat(dim7);
|
||||
}
|
||||
//
|
||||
|
||||
for (let i = 0; i < howmany; i++) {
|
||||
result.push(choices[Math.floor(Math.random() * choices.length)])
|
||||
}
|
||||
console.log(result);
|
||||
exitOrNot();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function randomModes() {
|
||||
|
||||
const questions = [{
|
||||
type: 'number',
|
||||
message: '要產生幾個調式?(1-100)',
|
||||
name: 'howmany',
|
||||
default: 4,
|
||||
}, ]
|
||||
|
||||
inquirer.prompt(questions).then((answers) => {
|
||||
let roots = ["C", "Db", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B"];
|
||||
let modes = ["Ionian", "Dorian", "Phrygian", "Lydian", "Mixolydian", "Aeolian", "Locrian"]
|
||||
let result = [];
|
||||
|
||||
|
||||
let howmany = answers["howmany"];
|
||||
for (let i = 0; i < howmany; i++) {
|
||||
result.push(roots[Math.floor(Math.random() * roots.length)] + " " + modes[Math.floor(Math.random() * modes.length)])
|
||||
}
|
||||
console.log(result);
|
||||
exitOrNot();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function randomKeys() {
|
||||
let tips = [
|
||||
"C 大調 / A 小調 (沒有升降記號)",
|
||||
"G 大調 / E 小調 (1 個升記號)",
|
||||
"D 大調 / B 小調 (2 個升記號)",
|
||||
"A 大調 / F# 小調 (3 個升記號)",
|
||||
"E 大調 / C# 小調 (4 個升記號)",
|
||||
"B 大調 / G# 小調 (5 個升記號)",
|
||||
"F# 大調 / D# 小調 (6 個升記號)",
|
||||
"C# 大調 / A# 小調 (7 個升記號)",
|
||||
"F 大調 / D 小調 (1 個降記號)",
|
||||
"Bb 大調 / G 小調 (2 個降記號)",
|
||||
"Eb 大調 / C 小調 (3 個降記號)",
|
||||
"Ab 大調 / F 小調 (4 個降記號)",
|
||||
"Db 大調 / Bb 小調 (5 個降記號)",
|
||||
"Gb 大調 / Eb 小調 (6 個降記號)",
|
||||
"Cb 大調 / Ab 小調 (7 個降記號)",
|
||||
]
|
||||
console.log("\n 🎹 " + tips[Math.floor(Math.random() * tips.length)] + "\n");
|
||||
exitOrNot();
|
||||
}
|
||||
|
||||
function randomMeter() {
|
||||
let tips = [
|
||||
"2/4", "3/4", "4/4", "5/4", "6/4", "7/4", "3/8", "5/8", "6/8", "7/8", "9/8", "11/8", "12/8", "13/8", "15/8", "2/2", "3/2"
|
||||
]
|
||||
console.log("\n 🎼 " + tips[Math.floor(Math.random() * tips.length)] + " 拍\n");
|
||||
exitOrNot();
|
||||
}
|
||||
|
||||
function randomTempo() {
|
||||
console.log("\n 🎲 " + Math.floor((Math.random() * 210) + 30) + " BPM\n");
|
||||
exitOrNot();
|
||||
}
|
||||
|
||||
function randomTitle() {
|
||||
|
||||
let noun = ['愛情',
|
||||
'戀愛',
|
||||
'電影',
|
||||
'飛鳥',
|
||||
'火神',
|
||||
'城市',
|
||||
'名字',
|
||||
'規則',
|
||||
'我',
|
||||
'我們',
|
||||
'你',
|
||||
'你們',
|
||||
'他',
|
||||
'她',
|
||||
'貓',
|
||||
'狗',
|
||||
'魚',
|
||||
'雨',
|
||||
'細雨',
|
||||
'大雨',
|
||||
'太陽',
|
||||
'雲',
|
||||
'太空',
|
||||
'宇宙',
|
||||
'天空',
|
||||
'雪',
|
||||
'海灣',
|
||||
'眼淚',
|
||||
'感動',
|
||||
'情書',
|
||||
'明天',
|
||||
'昨天',
|
||||
'今天',
|
||||
'距離',
|
||||
'靈魂',
|
||||
'答案',
|
||||
'少年',
|
||||
'風景',
|
||||
'浪子',
|
||||
'大海',
|
||||
'戒指',
|
||||
'唯一',
|
||||
'綠色',
|
||||
'紅色',
|
||||
'藍色',
|
||||
'橘色',
|
||||
'紫色',
|
||||
'黃色',
|
||||
'朋友',
|
||||
'情人',
|
||||
'男人',
|
||||
'女人',
|
||||
'玫瑰花',
|
||||
'歌聲',
|
||||
'北方',
|
||||
'東方',
|
||||
'南方',
|
||||
'西方',
|
||||
'手掌心',
|
||||
'寶貝',
|
||||
'聲音',
|
||||
'貓叫聲',
|
||||
'狗叫聲',
|
||||
'鳥叫聲',
|
||||
'魔鬼',
|
||||
'天堂',
|
||||
'寂寞',
|
||||
'夜晚',
|
||||
'理由',
|
||||
'悲傷',
|
||||
'幸福',
|
||||
'喜劇',
|
||||
'魔女',
|
||||
'泡沫',
|
||||
'天使',
|
||||
'懸崖',
|
||||
'關鍵字',
|
||||
'命運',
|
||||
'十字路口',
|
||||
'獅子',
|
||||
'獅子王',
|
||||
'台北',
|
||||
'台灣',
|
||||
'和弦',
|
||||
'鋼琴',
|
||||
'小提琴',
|
||||
'牛肉',
|
||||
'拉麵',
|
||||
'蛋餅',
|
||||
'胡椒',
|
||||
'咖哩',
|
||||
'烤箱',
|
||||
'回憶',
|
||||
'糖果',
|
||||
'巧克力',
|
||||
'咖啡',
|
||||
'瞬間',
|
||||
'過客',
|
||||
'酒吧',
|
||||
'氣球',
|
||||
'公園',
|
||||
'離別',
|
||||
'道別',
|
||||
'飛機',
|
||||
'機場',
|
||||
'一切',
|
||||
'回答',
|
||||
'恐龍',
|
||||
'蘋果',
|
||||
'葡萄王',
|
||||
'伯母',
|
||||
'叔叔',
|
||||
'阿姨',
|
||||
'阿嬤',
|
||||
'媽媽',
|
||||
'爸爸',
|
||||
'嬰兒',
|
||||
'秋天',
|
||||
'夏天',
|
||||
'春天',
|
||||
'冬天',
|
||||
'浴缸',
|
||||
'海灘',
|
||||
'美麗',
|
||||
'腳踏車',
|
||||
'黑板',
|
||||
'積木',
|
||||
'麵包',
|
||||
'書店',
|
||||
'日常',
|
||||
'蛋糕',
|
||||
'事實',
|
||||
'偶然',
|
||||
'小鳥',
|
||||
'聖誕節',
|
||||
'端午節',
|
||||
'中秋節',
|
||||
'教堂',
|
||||
'餅乾',
|
||||
'日子',
|
||||
'書桌',
|
||||
'晚餐',
|
||||
'早餐',
|
||||
'眼睛',
|
||||
'鼻子',
|
||||
'嘴巴',
|
||||
'嘴唇',
|
||||
'肚子',
|
||||
'農夫',
|
||||
'少女',
|
||||
'姑娘',
|
||||
'旅館',
|
||||
'醫院',
|
||||
'冰淇淋',
|
||||
'風箏',
|
||||
'騙子',
|
||||
'檸檬',
|
||||
'郵差',
|
||||
'片刻',
|
||||
'喧鬧聲',
|
||||
'筆記本',
|
||||
'遊樂園',
|
||||
'野餐',
|
||||
'爆米花',
|
||||
'海洋',
|
||||
'病毒',
|
||||
'床',
|
||||
'動物園',
|
||||
'情人節',
|
||||
'灰姑娘',
|
||||
'丈母娘',
|
||||
'印度洋',
|
||||
'太平洋',
|
||||
'蜘蛛網',
|
||||
'雕像',
|
||||
'麻辣燙',
|
||||
'口香糖',
|
||||
'大西洋',
|
||||
'雙人床',
|
||||
'機車',
|
||||
'行李箱',
|
||||
'手槍',
|
||||
'太空艙',
|
||||
'焦糖',
|
||||
'棉花糖',
|
||||
'老闆娘',
|
||||
'番茄醬',
|
||||
'捉迷藏',
|
||||
'董事長',
|
||||
'保險套',
|
||||
'啤酒',
|
||||
'空姐',
|
||||
'拖鞋',
|
||||
'乳液',
|
||||
'番茄',
|
||||
'世界',
|
||||
'微波爐',
|
||||
'未婚夫',
|
||||
'未婚妻',
|
||||
'牛仔褲',
|
||||
'休止符',
|
||||
'音符',
|
||||
'五線譜',
|
||||
'林森北路',
|
||||
'台北車站',
|
||||
'高速公路',
|
||||
]
|
||||
|
||||
let around = ['戀愛中的ooo',
|
||||
'進擊的ooo',
|
||||
'百分百ooo',
|
||||
'ooo之吻',
|
||||
'ooo女孩',
|
||||
'ooo男孩',
|
||||
'ooo大嬸',
|
||||
'ooo大叔',
|
||||
'ooo大神',
|
||||
'ooo大魔咒',
|
||||
'ooo的冒險',
|
||||
'世紀ooo',
|
||||
'搖滾ooo',
|
||||
'超人氣ooo',
|
||||
'ooo白皮書',
|
||||
'ooo宿舍',
|
||||
'ooo角落',
|
||||
'極速ooo',
|
||||
'雪地裡的ooo',
|
||||
'草原中的ooo',
|
||||
'高原上的ooo',
|
||||
'地底下的ooo',
|
||||
'ooo花園',
|
||||
'ooo之戀',
|
||||
'我的秘密ooo',
|
||||
'愛之ooo',
|
||||
'ooo日記',
|
||||
'原味的ooo',
|
||||
'ooo天使',
|
||||
'ooo事務所',
|
||||
'ooo傳說',
|
||||
'ooo之舞',
|
||||
'ooo任務',
|
||||
'ooo天王',
|
||||
'ooo在身邊',
|
||||
'ooo愛上xxx',
|
||||
'當ooo遇見xxx',
|
||||
'我只在乎ooo',
|
||||
'ooo變xxx',
|
||||
'失戀ooo',
|
||||
'惡作劇之ooo',
|
||||
'ooo宅急便',
|
||||
'愛情ooo',
|
||||
'東方ooo',
|
||||
'ooo情人',
|
||||
'我要成為ooo',
|
||||
'終極ooo',
|
||||
'ooo,要不要?',
|
||||
'發現ooo',
|
||||
'幸福ooo',
|
||||
'看見ooo',
|
||||
'ooo的抉擇',
|
||||
'我的億萬ooo',
|
||||
'爵士ooo',
|
||||
'就是要ooo',
|
||||
'這不是ooo',
|
||||
'ooo日記',
|
||||
'戀愛就像ooo',
|
||||
'ooo愛上你',
|
||||
'前男友的ooo',
|
||||
'前女友的ooo',
|
||||
'ooo戀人',
|
||||
'你是ooo,我是xxx',
|
||||
'原來愛就是ooo',
|
||||
'我租了一個ooo',
|
||||
'ooo向前走',
|
||||
'沒有名字的ooo',
|
||||
'兩個ooo',
|
||||
'三個ooo',
|
||||
'ooo夏令營',
|
||||
'ooo365',
|
||||
'二號出口的ooo',
|
||||
'三號出口的ooo',
|
||||
'喜歡,ooo',
|
||||
'一百種ooo',
|
||||
'一百萬種ooo',
|
||||
'我的寶貝ooo',
|
||||
'你的ooo對我說',
|
||||
'小ooo',
|
||||
'孤獨的ooo',
|
||||
'ooo的床邊故事',
|
||||
'迷人的ooo',
|
||||
'xxx',
|
||||
'當你和ooo一起出現',
|
||||
'小時候的ooo',
|
||||
'ooo的瓦解',
|
||||
'ooo的辛苦',
|
||||
'ooo空間',
|
||||
'ooo,謝謝',
|
||||
'ooo的狂野',
|
||||
'想像中的ooo',
|
||||
'遺失的ooo',
|
||||
'消失的ooo',
|
||||
'城市裡的ooo',
|
||||
'鳥鳥的ooo',
|
||||
'廁所裡的ooo',
|
||||
'我最愛的ooo',
|
||||
'你最愛的ooo',
|
||||
'怎麼了,ooo?',
|
||||
'你說過的ooo',
|
||||
'刻在我心底的ooo',
|
||||
'你教我的ooo',
|
||||
'藍色的ooo',
|
||||
'紅色的ooo',
|
||||
'黃色的ooo',
|
||||
'綠色的ooo',
|
||||
'粉紅色的ooo',
|
||||
'灰色的ooo',
|
||||
'紫色的ooo',
|
||||
'ooo與我無關',
|
||||
'台灣的ooo',
|
||||
'去你的ooo',
|
||||
'來一個ooo',
|
||||
'我把ooo弄丟了',
|
||||
'ooo好神奇',
|
||||
'你才ooo,你全家都ooo',
|
||||
'失眠的ooo',
|
||||
'明天的ooo',
|
||||
'愛的ooo',
|
||||
'我的ooo',
|
||||
'你的ooo',
|
||||
'妳的ooo',
|
||||
'近距離愛上ooo',
|
||||
'可不可以,你也剛好喜歡ooo',
|
||||
'很久以後的ooo',
|
||||
'囂張的ooo',
|
||||
'最美的ooo',
|
||||
'哇!ooo!',
|
||||
'如果能再擁有ooo',
|
||||
'ooo是科學',
|
||||
'ooo是假的',
|
||||
'ooo是幻覺',
|
||||
'ooo最討厭了',
|
||||
'十點半的ooo',
|
||||
'午夜的ooo',
|
||||
'我看見ooo',
|
||||
'我看不見ooo',
|
||||
'Why?ooo?',
|
||||
'有一種ooo叫做xxx',
|
||||
'ooo與xxx',
|
||||
'ooo與xxx的故事',
|
||||
'沙漠中的ooo',
|
||||
'我想要ooo',
|
||||
'oooxxx',
|
||||
'那女孩的ooo',
|
||||
'說好的ooo呢?',
|
||||
'沒有ooo的日子',
|
||||
'有一種ooo',
|
||||
'最後一次ooo',
|
||||
'ooo',
|
||||
'來個ooo',
|
||||
'你也有ooo',
|
||||
'對的ooo',
|
||||
'錯的ooo',
|
||||
'如果我沒有ooo',
|
||||
'在青春迷失的ooo',
|
||||
'鄉下的ooo',
|
||||
'流浪ooo',
|
||||
'ooo的約定',
|
||||
'ooo的證明',
|
||||
'ooo的回憶',
|
||||
'ooo之夢',
|
||||
'ooo怎麼了嗎?',
|
||||
'好多ooo',
|
||||
'ooo專賣店',
|
||||
'ooo是什麼?',
|
||||
'ooo就是一切',
|
||||
'ooo來了!',
|
||||
'生氣的ooo',
|
||||
'誰都不准搶走我的ooo',
|
||||
'ooo病毒',
|
||||
'ooo派對',
|
||||
'ooo又來了',
|
||||
'我愛ooo',
|
||||
'伯母的ooo',
|
||||
'爺爺的ooo',
|
||||
'爸爸的ooo',
|
||||
'媽媽的ooo',
|
||||
'黑暗的ooo',
|
||||
'ooo在你後面',
|
||||
'ooo在你身旁',
|
||||
'火熱的ooo',
|
||||
'性感的ooo',
|
||||
'在ooo與xxx之間',
|
||||
'ooo與xxx的雙聲道',
|
||||
'打破ooo',
|
||||
'發亮的ooo',
|
||||
'ooo拿來',
|
||||
'但是我沒有ooo',
|
||||
'ooo之歌',
|
||||
'不變的ooo',
|
||||
'聖誕節的ooo',
|
||||
'情人節的ooo',
|
||||
'愛乾淨的ooo',
|
||||
'ooo好好玩',
|
||||
'ooo好舒服',
|
||||
'涼快的ooo',
|
||||
'姊姊的ooo',
|
||||
'妹妹的ooo',
|
||||
'哥哥的ooo',
|
||||
'弟弟的ooo',
|
||||
'危險ooo',
|
||||
'危險的ooo',
|
||||
'ooo百貨',
|
||||
'ooo的狂想',
|
||||
'ooo的即興',
|
||||
'ooo狂想曲',
|
||||
'ooo奏鳴曲',
|
||||
'骯髒的ooo',
|
||||
'ooo的旅行',
|
||||
'宇宙的ooo',
|
||||
'興奮的ooo',
|
||||
'激動的ooo',
|
||||
'再見,ooo!',
|
||||
'ooo?門都沒有!',
|
||||
'ooo!',
|
||||
'ooo?',
|
||||
'巨大的ooo',
|
||||
'想起ooo',
|
||||
'ooo怎麼樣',
|
||||
'ooo說來話長',
|
||||
'ooo的安全感',
|
||||
'下一站,ooo',
|
||||
'超自然ooo',
|
||||
'ooo大挑戰',
|
||||
'快樂的ooo',
|
||||
'溫柔的ooo',
|
||||
'ooo知道了',
|
||||
'勇敢的ooo',
|
||||
'不幸的ooo',
|
||||
'可怕的ooo',
|
||||
'ooo的可怕',
|
||||
'ooo的痛',
|
||||
'ooo的困惑',
|
||||
'ooo的絕望',
|
||||
'該死的ooo',
|
||||
'聰明的ooo',
|
||||
'我的今天很ooo',
|
||||
'ooo的xxx',
|
||||
'ooo又不是xxx',
|
||||
'ooo沒有xxx',
|
||||
'心中的ooo',
|
||||
'ooo在我心中',
|
||||
'ooo狂熱',
|
||||
'這就是ooo',
|
||||
'我有八百萬個ooo',
|
||||
'我買不到ooo',
|
||||
'我看不見ooo',
|
||||
'我找不到ooo和xxx',
|
||||
'ooo又不是我的',
|
||||
'ooo的笑話',
|
||||
'ooo與xxx的笑話',
|
||||
'超能力ooo',
|
||||
'春天的ooo',
|
||||
'夏天的ooo',
|
||||
'秋天的ooo',
|
||||
'冬天的ooo',
|
||||
'ooo的春天',
|
||||
'ooo的夏天',
|
||||
'ooo的秋天',
|
||||
'ooo的冬天',
|
||||
'我的寶貝ooo',
|
||||
'ooo俱樂部',
|
||||
'只在回憶中的ooo',
|
||||
'我失去了ooo',
|
||||
'ooo的一天',
|
||||
'ooo的名字',
|
||||
|
||||
|
||||
]
|
||||
|
||||
let result = around[Math.floor(Math.random() * around.length)];
|
||||
result = result.replace("ooo", noun[Math.floor(Math.random() * noun.length)]);
|
||||
result = result.replace("xxx", noun[Math.floor(Math.random() * noun.length)]);
|
||||
console.log("\n 🤔 " + result + "\n");
|
||||
exitOrNot();
|
||||
|
||||
}
|
||||
|
||||
function idea() {
|
||||
let tips = [
|
||||
"寫一首很圓滑(Legato)的曲子吧!",
|
||||
"寫一首使用很多斷奏(Staccato)的曲子吧!",
|
||||
"主旋律不一定要在最高音阿!用低音來當主旋律如何?",
|
||||
"主旋律不一定要在最高音阿!用中音的聲部來當主旋律如何?",
|
||||
"試試看寫一首雙旋律並行的曲子,聽過巴赫的《創意曲》嗎?",
|
||||
"寫一首 3/4 拍的曲子吧!碰恰恰碰恰恰~",
|
||||
"寫一首 5 拍子的曲子吧!聽過 Dave Brubeck 的《Take Five》嗎?",
|
||||
"寫一首 7 拍子的曲子吧!",
|
||||
"寫一首 9/8 拍子的曲子吧!",
|
||||
"寫一個完全沒有拍子的段落吧!",
|
||||
"要不要試試看寫一首速度超快的曲子?",
|
||||
"試試看寫一首速度很慢的曲子吧!",
|
||||
"選一個你從來沒有用過的樂器,用它來當作主旋律試試看!",
|
||||
"用一個你從來沒有用過的調式來寫曲子吧!",
|
||||
"試試看不斷重複同一個旋律,但是配上不同和聲吧!",
|
||||
"拿起你身旁的任何產品,用上面的條碼/序號來當作主旋律!",
|
||||
"寫一首只有兩個和弦不斷來回切換的歌。",
|
||||
"取樣你身邊物品的聲音,把它當作主角來做一首曲子!",
|
||||
"試試看寫一首旋律音一直往上走的歌?",
|
||||
"試試看寫一首旋律音一直往下走的歌?",
|
||||
"寫一個音域超高的段落如何?",
|
||||
"寫一個音域超低的段落如何?",
|
||||
"試試看寫一個全部只用大(major)和弦的段落?",
|
||||
"試試看寫一個全部只用小(minor)和弦的段落?",
|
||||
"試試看寫一個全部只用屬(dominant)和弦的段落?",
|
||||
"試試看寫一個全部只用 7sus 和弦的段落?",
|
||||
"寫一首全部只用打擊樂器的曲子吧!",
|
||||
"寫一首全部只用弦樂器的曲子吧!",
|
||||
"寫一首全部只用管樂器的曲子吧!",
|
||||
"寫一首全部只用合成器的曲子吧!",
|
||||
"寫一首全部只用人聲的曲子吧!",
|
||||
"寫一首充滿民族樂器的曲子吧!",
|
||||
"寫一首全部只用你自己取樣的樂器的曲子吧!",
|
||||
"試試看寫一首充滿二度音程的曲子?",
|
||||
"試試看寫一首充滿三度音程的曲子?",
|
||||
"試試看寫一首充滿完全四度和五度音程的曲子?",
|
||||
"試試看寫一首日本風的曲子?",
|
||||
"試試看寫一首中國風的曲子?",
|
||||
"試試看寫一首西班牙風的曲子?",
|
||||
"試試看寫一首印度風的曲子?",
|
||||
"試試看寫一首拉丁風的曲子?",
|
||||
"找一首別人的曲子,把它的主旋律音順序反過來,當作你的主旋律。",
|
||||
"找一首別人的曲子,用它的主旋律節奏,當作你的主旋律節奏。",
|
||||
"這次試試看先決定和弦,再寫主旋律如何?",
|
||||
"到 YouTube 取樣一小段影片當作素材如何?(當然要注意版權問題)",
|
||||
"如果一直沒有靈感就起身走走吧!",
|
||||
"去洗個熱水澡可能就會有靈感了!",
|
||||
"先去吃個零食,回來可能會更有靈感?",
|
||||
"找一首你喜歡的歌,使用跟它一模一樣的曲式。",
|
||||
"從副歌開始如何?",
|
||||
"不要有前奏,直接開始如何?",
|
||||
"最前面加個前奏好像會不錯?",
|
||||
"最後面加個尾奏好像會不錯?",
|
||||
"不一定要每四小節一句呀!寫一個五小節的句子如何?",
|
||||
"不一定要每四小節一句呀!寫一個三小節的句子如何?",
|
||||
"試試看寫一首一分鐘以內的曲子吧!",
|
||||
"你試過用淡入(fade in)的方式開始一首曲子嗎?",
|
||||
"你試過用淡出(fade out)的方式結束一首曲子嗎?",
|
||||
"用某些「自然環境音效」當開頭好像也不錯?",
|
||||
"除了一般樂器的聲音之外,加點特殊音效吧!",
|
||||
"試試看先想歌詞,然後用歌詞的自然語調決定旋律。",
|
||||
"不一定要從最前面開始寫呀!從曲子最精采的那一段開始寫如何?",
|
||||
"試試看寫一個只用三個樂器的曲子吧!",
|
||||
"段落連接處來點過門吧!",
|
||||
"亂數產生器很好用:用亂數決定你的主旋律吧!",
|
||||
"亂數產生器很好用:用亂數決定你的和弦吧!",
|
||||
"試試看只用兩個動機(音樂小片段、想法),就發展成一整首曲子。",
|
||||
"打開你的編曲軟體/合成器/音源器,把每一個音色都試一遍,有什麼音色適合當作下一首曲子的主角呢?",
|
||||
"記得天底下沒有什麼是原創的,找一些你喜歡的作品,把它的其中一些元素偷過來吧!",
|
||||
"隨便找幾首古典音樂,把其中的一些小片段重組、拼在一起?",
|
||||
"「輸入」是很重要的,如果你不想寫出某種音樂,那就儘量避免讓自己聽到那種音樂。",
|
||||
"「輸入」是很重要的,想寫出某種音樂,就儘量讓自己多聽到那種音樂。",
|
||||
"不要急著開始寫,先計畫一下大綱。你的曲子要多長、要有幾段、哪一段是最高潮呢?",
|
||||
"只參考一個人是「抄襲」,參考一百個人,然後把他們混在一起就是「創新和研究」。",
|
||||
"用過純文字編輯器作曲嗎?試試看不要碰樂器,把你的和弦跟旋律用純文字方式記錄下來,完全用頭腦想像聲音來作曲。",
|
||||
"去聽聽看一個你從來不聽的音樂類型吧!",
|
||||
"去分析一個你不愛聽,但卻很受歡迎的曲子。這首曲子到底好在哪裡?",
|
||||
"到 Google 搜尋「MIDI Files」,下載幾首放到編曲軟體去研究看看吧!",
|
||||
"到 imslp.org 下載一首古典音樂的樂譜研究看看吧!",
|
||||
"去隨便看一部好和弦的影片,然後用影片裡面提到的技巧當主軸來作曲。",
|
||||
"音感更好的話作曲編曲都會更方便喔!找一個音感訓練軟體或網站開始練習吧。",
|
||||
"你有沒有認真看過你的編曲軟體/打譜軟體的說明書?",
|
||||
"你知道你常用的編曲軟體/打譜軟體的所有快速鍵嗎?那會增加你的工作效率喔!現在就背兩個起來吧!",
|
||||
"不要再買了,你不需要最新最好的樂器也能做出好音樂的。",
|
||||
"硬碟裡躺著一堆未完成的作品嗎?把其中一個挖出來然後完成它吧!",
|
||||
"找一首你喜歡的古典音樂,把它改成爵士版如何?",
|
||||
"找一首你喜歡的古典音樂,把它改成搖滾版如何?",
|
||||
"找一首你喜歡的鋼琴獨奏曲,把它改成管弦樂版如何?",
|
||||
"用另一個喇叭播放你的作品試試看,也許你會發現之前沒聽到的問題。",
|
||||
"多練點琴吧~",
|
||||
"你上一次看樂理/作曲相關的書籍是什麼時候?",
|
||||
"卡住的話,把你的曲子拿給其他人聽聽看吧!",
|
||||
"考慮一下 CP 值,如何可以用最簡單的方式產生效果好的音樂?",
|
||||
"不要太在意「樂理規則」:是作品造就了規則,而不是規則造就了作品。",
|
||||
"給自己一點時間限制吧!人類在時間不夠時的潛能是很厲害的阿!",
|
||||
"寫不出好東西嗎?很可能是因為你的爛東西寫得不夠多,試試看寫出爛東西吧!",
|
||||
"有任何音樂想法時,記得趕快拿手機的語音備忘錄 app 錄下來。",
|
||||
"試試看把東西用在「不該用的地方」。",
|
||||
"記得做音樂之餘也要記得運動喔!",
|
||||
"建模板:把常用的音色載入好,存檔成為一個模板,以後每次打開編曲軟體就可以直接開始創作了!",
|
||||
"參考別人的作品並不可恥,不要整個照抄就好,學習一些你喜歡的元素放到自己的作品中吧!",
|
||||
"不要被社群媒體的數字迷惑:點閱/按讚數最多的作品,不見得是最好的作品。",
|
||||
"多花一點錢在投資自己上,少一點在投資設備上。",
|
||||
"自己一個人做音樂卡住的話,試試看找別人合作吧!",
|
||||
"沒有人每天都狀況好的,今天如果真的沒有做音樂的感覺,就先去做別的事情吧!",
|
||||
"你的工作桌面堆滿東西嗎?把空間清出來,工作會更有效率喔!",
|
||||
"建立一個「創作靈感播放清單」,聽到喜歡的、以後可能會想要參考的音樂時,趕快把它放入清單中。",
|
||||
"在編曲軟體裡把每一軌好好取名字吧!誰知道「Audio Track 05」是什麼東西阿?",
|
||||
"你的工作硬碟有備份嗎?沒有?這樣你晚上也睡得著?",
|
||||
"備份備份,至少三份:電腦、外接硬碟、雲端都有的才是真備份阿!",
|
||||
"什麼都是假的,存檔了才是真的。記得時時 Ctrl+S/Command+S!",
|
||||
"拜託一定要記得備份!",
|
||||
"寫曲子的初期,不要太在意細節,先把整首曲子的流程設定好更重要喔!",
|
||||
"不要邊做音樂邊滑社群網站!專心阿!",
|
||||
"不要坐在椅子上太久阿!站起來動一動吧!",
|
||||
"你用過雙螢幕工作嗎?沒有的話,你一定要試試看,那會大大增加工作效率喔!",
|
||||
"不要照著 SOP 做音樂:發現自己「每次都這麼做」的時候,故意不要這樣做吧!",
|
||||
"少即是多:加入更多東西並不一定會讓你的音樂聽起來更龐大。",
|
||||
"低音聽起來很髒嗎?選一個樂器當作你的「Bass」,然後禁止其他的樂器侵犯神聖的低音區域!",
|
||||
"一開始就把曲子寫好,不要期待編曲、錄音、混音的人可以拯救一個爛作品。",
|
||||
"連續混音太久耳朵會疲勞、影響判斷。一旦開始混音就儘量迅速完成吧!",
|
||||
"如果你說不出自己一年前作品的缺點,那麼你要反省一下這一年是不是有學到東西。"
|
||||
]
|
||||
console.log("\n 💡 " + tips[Math.floor(Math.random() * tips.length)] + "\n");
|
||||
exitOrNot();
|
||||
}
|
||||
|
||||
|
||||
|
||||
mainMenu();
|
||||
// randomNotes();
|
366
package-lock.json
generated
Normal file
366
package-lock.json
generated
Normal file
@@ -0,0 +1,366 @@
|
||||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"ansi-escapes": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
|
||||
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
|
||||
"requires": {
|
||||
"type-fest": "^0.21.3"
|
||||
}
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
||||
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||
},
|
||||
"bl": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
|
||||
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
||||
"requires": {
|
||||
"buffer": "^5.5.0",
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "^3.4.0"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"requires": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
|
||||
"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"chardet": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
||||
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
||||
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
|
||||
"requires": {
|
||||
"restore-cursor": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"cli-spinners": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz",
|
||||
"integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q=="
|
||||
},
|
||||
"cli-width": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
|
||||
"integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw=="
|
||||
},
|
||||
"clone": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"defaults": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
|
||||
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
|
||||
"requires": {
|
||||
"clone": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
},
|
||||
"external-editor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
|
||||
"integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
|
||||
"requires": {
|
||||
"chardet": "^0.7.0",
|
||||
"iconv-lite": "^0.4.24",
|
||||
"tmp": "^0.0.33"
|
||||
}
|
||||
},
|
||||
"figures": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
|
||||
"integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
|
||||
"requires": {
|
||||
"escape-string-regexp": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.0.tgz",
|
||||
"integrity": "sha512-1nKYPoalt1vMBfCMtpomsUc32wmOoWXAoq3kM/5iTfxyQ2f/BxjixQpC+mbZ7BI0JUXHED4/XPXekDVtJNpXYw==",
|
||||
"requires": {
|
||||
"ansi-escapes": "^4.2.1",
|
||||
"chalk": "^4.1.1",
|
||||
"cli-cursor": "^3.1.0",
|
||||
"cli-width": "^3.0.0",
|
||||
"external-editor": "^3.0.3",
|
||||
"figures": "^3.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mute-stream": "0.0.8",
|
||||
"ora": "^5.3.0",
|
||||
"run-async": "^2.4.0",
|
||||
"rxjs": "^6.6.6",
|
||||
"string-width": "^4.1.0",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"through": "^2.3.6"
|
||||
}
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
},
|
||||
"is-interactive": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
|
||||
"integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
|
||||
},
|
||||
"is-unicode-supported": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
|
||||
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"is-unicode-supported": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
||||
},
|
||||
"mute-stream": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
|
||||
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
|
||||
},
|
||||
"onetime": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||
"requires": {
|
||||
"mimic-fn": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"ora": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz",
|
||||
"integrity": "sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg==",
|
||||
"requires": {
|
||||
"bl": "^4.1.0",
|
||||
"chalk": "^4.1.0",
|
||||
"cli-cursor": "^3.1.0",
|
||||
"cli-spinners": "^2.5.0",
|
||||
"is-interactive": "^1.0.0",
|
||||
"is-unicode-supported": "^0.1.0",
|
||||
"log-symbols": "^4.1.0",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"wcwidth": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"restore-cursor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
|
||||
"integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
|
||||
"requires": {
|
||||
"onetime": "^5.1.0",
|
||||
"signal-exit": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"run-async": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
|
||||
"integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "6.6.7",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
|
||||
"integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
|
||||
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||
"integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
|
||||
"requires": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
||||
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
||||
"requires": {
|
||||
"ansi-regex": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||
},
|
||||
"type-fest": {
|
||||
"version": "0.21.3",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
|
||||
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"wcwidth": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
||||
"integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
|
||||
"requires": {
|
||||
"defaults": "^1.0.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user