const groupBy = key => array =>
array.reduce((objectsByKeyValue, obj) => {
const value = obj[key];
objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(obj);
return objectsByKeyValue;
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import idb from 'idb-keyval' | |
| class IDBCache { | |
| set(key, val, time) { | |
| // Set default expiry as 100 days; | |
| if (!time) time = 2400 * 60 * 60 * 1000 | |
| // Set the key; | |
| Promise.all([idb.set(key, val), idb.set(`__${key}ExpiryTimeStamp`, Date.now() + time * 60 * 1000)]) | |
| .then(() => { | |
| this.removeExpiredKeys() // Once the keys are set, remove any expired keys. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { presetAttributify, presetUno } from 'unocss' | |
| export function presets(): any[] { | |
| return [presetAttributify(), presetUno()] | |
| } | |
| export function rules(): any[] { | |
| return [] | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { it } from 'vitest' | |
| import { setActivePinia, createPinia } from 'pinia' | |
| import { createTestingPinia } from '@pinia/testing' | |
| import { render } from '@testing-library/vue' | |
| import { useSomeStore } from '@/stores/SomeStore' | |
| import SomeComponent from '@/components/SomeComponent.vue' | |
| it('test', async () => { | |
| const pinia = createPinia() |
Получить часть строки, соответствующую регулярному выражению, а затем передать ее значение обратному вызову
const pickStringByRegex = (pattern, str, func) => {
const regex = new RegExp(pattern)
const value = regex.test(str) ? str.replace(regex, '$2') : null
if (value) func(value)
}
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Sum two times values HH:mm:ss with javascript | |
| * Usage: | |
| * > addTimes('04:20:10', '21:15:10'); | |
| * > "25:35:20" | |
| * | |
| * @param {string} start | |
| * @param {string} end | |
| * @returns {String} | |
| */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // check version | |
| node -v || node --version | |
| // list installed versions of node (via nvm) | |
| nvm ls | |
| // install specific version of node | |
| nvm install 6.9.2 | |
| // set default version of node |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { Socket, io } from "socket.io-client" | |
| import { v4 as uuidv4 } from 'uuid'; | |
| type Headers = { [key: string]: string }; | |
| class WebSocketHttpClient { | |
| socket; | |
| responses; | |
| errors; |
readme
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {"nightTab":true,"version":"7.3.0","state":{"layout":{"area":{"header":{"width":54,"justify":"center"},"bookmark":{"width":100,"justify":"left"}},"alignment":"top-center","order":"header-bookmark","direction":"vertical","size":65,"width":90,"padding":40,"gutter":20,"breakpoint":"xl","scrollbar":"none","title":"","favicon":"","overscroll":false},"header":{"item":{"justify":"left"},"greeting":{"show":false,"type":"good","custom":"","name":"","size":100,"newLine":false},"transitional":{"show":false,"type":"time-and-date","size":100,"newLine":false},"clock":{"hour":{"show":true,"display":"number"},"minute":{"show":true,"display":"number"},"second":{"show":false,"display":"number"},"separator":{"show":true,"text":""},"meridiem":{"show":false},"hour24":{"show":true},"size":100,"newLine":false},"date":{"day":{"show":false,"display":"word","weekStart":"monday","length":"long"},"date":{"show":true,"display":"number","ordinal":false},"month":{"show":true,"display":"number","length":"short","ordinal":false},"year":{"sho |