12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /** @typedef {'warn' | 'error' | 'info' | 'done'} LogType */
- /**
- * @typedef Log
- * @prop {string} id
- * @prop {string} date
- * @prop {LogType} type
- * @prop {string} tag
- * @prop {string} message
- */
- const shortId = require('shortid')
- const { events } = require('@vue/cli-shared-utils/lib/logger')
- const { generateTitle } = require('@vue/cli/lib/util/clearConsole')
- // Subs
- const channels = require('../channels')
- // Context
- const getContext = require('../context')
- /** @type {Log []} */
- let logs = []
- /**
- * @param {Log} log
- * @param {any} context
- */
- exports.add = function (log, context) {
- /** @type {Log} */
- const item = {
- id: shortId.generate(),
- date: new Date().toISOString(),
- tag: null,
- ...log
- }
- logs.push(item)
- context.pubsub.publish(channels.CONSOLE_LOG_ADDED, {
- consoleLogAdded: item
- })
- return item
- }
- exports.list = function (context) {
- return logs
- }
- exports.last = function (context) {
- if (logs.length) {
- return logs[logs.length - 1]
- }
- return null
- }
- exports.clear = function (context) {
- logs = []
- return logs
- }
- // Init
- {
- const context = getContext()
- events.on('log', log => {
- exports.add(log, context)
- })
- exports.add({
- type: 'info',
- tag: null,
- message: generateTitle(true)
- }, context)
- }
|