Skip to content

Instantly share code, notes, and snippets.

View kobzarvs's full-sized avatar

Valeriy Kobzar kobzarvs

View GitHub Profile
import { attach, createEffect } from 'effector';
import { HTTP_METHOD, RequestFxParams, ResponseError, User } from './types';
import { $session } from '../models/session';
export const GET = 'GET';
export const POST = 'POST';
export const PUT = 'PUT';
export const DELETE = 'DELETE';
const URL = 'https://api.realworld.io/api';
export class AsyncTaskSeq {
last = Promise.resolve();
add(task: () => Promise<void>) {
const sync = this.last;
this.last = new Promise(async (resolve, reject) => {
try {
await sync;
await task();
resolve();
import { createStore, createEvent, is, fork, allSettled } from 'effector';
import { produce } from 'immer';
function createCollection(store, events) {
const collection = createStore({});
const setStoreValue = createEvent();
store.on(setStoreValue, (state, value) => value);
let length = 0;
let keys = [];
export function loggerDecoratorUnary(func: GrpcWebImpl['unary']) {
return async function (this: GrpcWebImpl, ...params: Parameters<GrpcWebImpl['unary']>) {
const id = uuidv7();
try {
params[2] = createMetadata();
window.postMessage(
{
source: '__gRPC_devtools_content_scripts_main__',
@kobzarvs
kobzarvs / backbone.js
Created October 28, 2025 23:18
Backbone password validation view
const PasswordView = Backbone.View.extend({
// Выносим требования в константу для переиспользования
requirements: [
{ id: 'len8', label: '8+ characters', test: (pwd: string) => pwd.length >= 8 },
{ id: 'len12', label: '12+ characters', test: (pwd: string) => pwd.length >= 12 },
{ id: 'lower', label: 'Lowercase letter', test: (pwd: string) => /[a-z]/.test(pwd) },
{ id: 'upper', label: 'Uppercase letter', test: (pwd: string) => /[A-Z]/.test(pwd) },
{ id: 'digit', label: 'Number', test: (pwd: string) => /\d/.test(pwd) },
{ id: 'special', label: 'Special character', test: (pwd: string) => /[^a-zA-Z0-9]/.test(pwd) }
],