Nikita
http://viz-js.com/ — тут онлайн демка
Denis
extends Array они поддерживают?
Denis
const WalletMixin = (superclass) => class extends superclass {
Denis
С таким справятся?
Nikita
extends Array они поддерживают?
Эта штука для рисования диаграмм. Чтобы у тебя что-то было связано, добавь ребро.
Nikita
Она не парсит твой код.
Nikita
Она парсит свой язык описания диаграмм.
Denis
Кто же парсит мой код?
Denis
)))
Nikita
Ты сам =)
Igor
что люди ни выдумывают, лишь бы нормальные тулы не покупать
Nikita
@babel/parser
Nikita
Хотя я почти уверен, что есть готовый визуализатор.
Dika
Хотя я почти уверен, что есть готовый визуализатор.
В Flow есть cli команда, которая отдает .dot файл графа зависимостей
Denis
Хотя я почти уверен, что есть готовый визуализатор.
Я не смог найти вменяемый AST генератор для дерева классов
Dika
Замутил скрипт на flow cycle
Dika
flow cycle — cli команда, генерирующая граф зависимостей файлов в проекте
Denis
???
Dika
Denis
flow-bin
Ок, спс ))
Igor
Это какие, например?
intellij idea, например
Dika
Ок, спс ))
Только у тебя тогда код должен быть типизирован ))
Nikita
intellij idea, например
И как он мне поможет с описанием базы в objection.js?
Denis
Только у тебя тогда код должен быть типизирован ))
У меня типизирован)) javascript class BaseClass { constructor (...args) { const keys = Object.keys(this.args) if (args.length < keys.length) { throw new Error(`The ${this.constructor.name} constructor must receive at least ${keys.length} argument${keys.length > 1 && 's'}!!!`) } Object.assign(this, args.reduce((acc, arg, idx) => { const key = keys[idx] if (typeof key !== 'undefined') { const instance = this.args[key] const type = instance && instance.name ? instance.name.toLowerCase() : 'object' switch (typeof arg) { case 'array': if (!Array.isArray(arg)) { throw new TypeError(`The argument ${idx + 1} ('${key}') must be 'Array' type!!!`) } break case 'object': if (!(arg instanceof instance || arg.constructor.name === instance.name)) { throw new TypeError(`The argument ${idx + 1} ('${key}') must be '${instance.name}' type!!!`) } break case 'string': case 'number': case 'boolean': if (typeof arg !== type) { // eslint-disable-line valid-typeof throw new TypeError(`The argument ${idx + 1} ('${key}') must be '${instance && instance.name}' type!!!`) } break default: } acc[key] = arg } else { acc[idx] = arg } return acc }, {})) } get args () { // eslint-disable-line class-methods-use-this return {} } } export default BaseClass
Nikita
Nikita
Я визуализировал базу, описанную моделями objection.
Igor
Я визуализировал базу, описанную моделями objection.
а в идее можно визуализировать уже конкретную базу
Nikita
Код визуализатора — несколько десятков строчек.
Nikita
Dika
Флоу - это статический тайпчекер для жс, подобно тайпскрипту
Denis
Ты понял, о каком я флоу?
Да, да, ты о flow-job )))
Denis
Flow мне нра больше чем TS
Nikita
Это вот та?
Objection поверх кнекса.
Igor
И как бы я тогда computed properties вывел?
эм, какие еще computed properties в базе?
Denis
Objection поверх кнекса.
Как в этом боте
Nikita
а в идее можно визуализировать уже конкретную базу
Базу я и так мог одной строчкой визуализировать, есть скрипты готовые.
Nikita
Но эта штука включает больше метаинфы из моделей objection, плюс она торчит в веб, чтобы фронтендер её в документации видел. Без пересборки.
Nikita
@igorz твою Idea мне что, в васм заворачивать?
Igor
ой все, сложное у вас там что-то
Nikita
=)
Igor
у меня слишком много вопросов к уже написанному)
Nikita
ой все, сложное у вас там что-то
Ты пришёл, сказал, что мы ничего не понимаем и что идеа бы решила все проблемы проще.
Nikita
А на самом деле ты просто не разобрался в задаче =)
Nikita
Я рассматривал механизмы визуализации непосредственно базы, и они не подошли потому что в базе не полная информация.
Denis
Никит, а почему у меня в этом цикле не перерендывает HTML?
Denis
Без фейковой ошибки
Denis
А с ней все норм
Denis
Это продакшен
Denis
Не XSS
Nikita
Это пахнет xss-ом.
Dika
А с ней все норм
С ней у тебя +10мс ожидания
Nikita
Смотри.
Denis
Это не сайт
Nikita
Ты просто присваиваешь в innerHTML в том же потоке без паузы
Nikita
А перерендеринг будет когда ты перестанешь крутить жс и отпустишь поток управления
Denis
Поток чем определяется?
Denis
Циклом?
Nikita
Поставь там await от слипа.
Denis
Это как?
Nikita
Например, если ты поставишь там await от слипа в секунду, то у тебя будет в цикле раз в секунду меняться innerHTML
Dika
Это как?
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) … await sleep(1000)
Denis
Ооо, не знал про такое, спасибо
Denis
Я реджектом её
Denis
)))
Anonymous
Denis
Помоему даже с ресолвом не работало, но это не точно
Denis
Это пахнет xss-ом.
Я не пишу вредоносный код. Ну стараюсь не писать...
Dika
Вредоносный — это тот, который будет твою xss эксплуитровать