Visitar URL original
IlyaSemenov (Ilya Semenov) · GitHub
Skip to content
View IlyaSemenov's full-sized avatar

Block or report IlyaSemenov

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
IlyaSemenov/README.md

Ilya Semenov

I'm a software engineer working mostly with TypeScript/Node.js, PostgreSQL, and Vue/Nuxt. Most of my open-source libraries and tools grew out of problems I encountered in real projects.

Here's what I've built:

TypeScript and Node.js

Main projects

  • kern-orm — Fully typed relational query builder for PostgreSQL with ambient transactions and single-query relation loading.
  • ripple-di — Next-generation DI for TypeScript with async scopes, transitive overrides, and automatic resource cleanup.

General-purpose libraries

  • async-dedupe — Deduplicate concurrent calls to an async function.
  • json-mark — Serialize custom types in JSON with tagged strings.
  • intl-formats — Functional wrappers around Intl.DateTimeFormat and Intl.NumberFormat.
  • valibotx — Tree-shakeable extensions for Valibot.
Earlier work
  • node-data-cleaner (data-cleaner, data-cleaner-koa) — Abandoned. Async validation and transformation toolkit, superseded in my projects by Valibot and valibotx.
  • node-unpickle — Read Python 3 pickle data from Node.js.
  • dayjs-isodate — Add toISODate() to Day.js.

Databases and ORMs

  • pg-event-bus — Typed real-time events over PostgreSQL LISTEN/NOTIFY for cache invalidation and live updates.
  • pg-advisory-lock — Coordinate exclusive work across application instances with PostgreSQL session-level advisory locks.
  • graphile-worker-tasks — Organize, collect, and test Graphile Worker tasks.
  • graphile-worker-orchid — Use Graphile Worker with Orchid ORM.
  • orchid-pagination — Page-number and cursor pagination helpers for Orchid ORM.
  • rake-db-testing — Verify rake-db migration history and data migration scenarios on PostgreSQL.
  • orchid-graphql — Resolve GraphQL queries against Orchid ORM tables and relations.
  • objection-graphql-resolver — Resolve GraphQL queries against Objection.js models and relations.
Earlier work

HTTP and APIs

  • image-renditions — On-demand image transformations that persist every result to durable storage and keep app servers stateless.
  • graphql-define-resolvers — Collect strongly typed GraphQL query and mutation resolvers across modules.
  • trpc-multiplex — Run many tRPC subscriptions over one HTTP stream per tab, or per browser through a shared worker.
  • h3-errors — Assertion and error helpers for HTTP 4xx/5xx responses in H3.
  • h3-jwt-auth — Basic JWT authentication helpers for H3 and Nuxt.
  • h3-websocket-request — H3 WebSocket handlers that can request additional client-side data while processing a request.
Earlier work
  • koa-mount-final — Prevent matched but unhandled Koa sub-routes from falling through to later middleware.

Vue and Nuxt

  • vue-form-submit — Small Vue 3 composables for form submission and optional Standard Schema validation.
  • vue-router-navigation — Navigation helpers for deeply nested Vue Router paths.
  • orpc-vue — oRPC integration for Vue and Nuxt with TanStack Vue Query composables.
  • trpc-vue — tRPC integration for Vue and Nuxt with TanStack Vue Query composables.
  • nuxt-request-context — Provide typed request-specific data to Nuxt before the initial render.
  • nuxt-surface — Serve several sites from one Nuxt app, each with its own pages at the same URLs.
  • nuxt-multi-app — Run several independent Nuxt applications behind one HTTP server.
  • nuxt-hydration-gate — Nuxt hydration marker for CSS, scripts, and E2E tests.
  • nuxt-vitest-shared-app — Run Nuxt component tests in Vitest on one shared app per worker, with per-test cleanup.
  • nuxt3-class-component — Class-component support for Nuxt 3/4 and a migration path from nuxt-property-decorator.
  • nuxt-update — Detect deployed Nuxt application updates and notify or refresh clients.
  • nuxt-vite-legacy — Legacy-browser support for Nuxt 3 through Vite's legacy plugin.
Earlier work
  • nuxt-stash — Expose server-generated Nuxt context to Vue components without a full Vuex setup.
  • vue-observable-persist — Persist Vue observable state to localStorage or compatible storage.
  • ream-typescript — TypeScript support for Ream.js.

Telegram libraries

Solana

Agent skills

  • top-down-review-skill — Code review that starts from the task, not the diff: purpose, target solution, then implementation.
  • agent-review-skill — Iterative code, diff, and plan reviews through another CLI coding agent.
  • pi-transcript-skill — Extract clean conversational transcripts from pi.dev session files.

Applications and integrations

  • webhook-telegram-bot — Forward GitHub, GitLab, and Sentry webhook events to Telegram, including workflows, pipelines, and branch filtering.
  • terneo-ha — Local Home Assistant integration for Terneo thermostats, without a cloud dependency.
  • wikipedia-word-frequency — Generate multilingual word-frequency datasets from Wikipedia dumps.

Development tooling

  • bunlock-dedupe — Analyze and deduplicate dependencies in bun.lock.
  • bun-nested-workspace — Embed a checkout of another Bun workspace repository and keep the host package.json and bun.lock in sync with it.
  • vite-plugin-module-boundaries — Fail Vite builds when imports cross configured filesystem boundaries.
  • oxc-config — Reusable oxlint, oxfmt, and ESLint configurations for projects I develop or oversee.
  • eslint-config — Reusable ESLint configuration for projects I develop or oversee.
  • eslint-plugin-import-remap — Remap imports with ESLint autofixes.
  • stylelint-config — Reusable Stylelint configuration for projects I develop or oversee.
  • tsconfig-vite-node — Opinionated TSConfig for Node applications run with vite-node or built with Vite.
  • npm-package-starter — Scaffold and synchronize production TypeScript npm packages from reusable conventions.
  • changesets-local — Release Changesets packages and monorepos from your terminal, without a Version pull request or CI publishing.
  • sops-env — Print the env section of a SOPS-encrypted file as KEY=VALUE lines, optionally with base64-encoded values.
  • gitlab-ci-git-push — Push repository changes from GitLab CI.
Earlier work

Python, Django, and aiohttp

Earlier work

Pinned Loading

  1. grammy-scenes grammy-scenes Public

    Nested named scenes for grammY

    TypeScript 31

  2. graphql-orm graphql-orm Public

    Resolve GraphQL query with Objection.js or Orchid ORM

    TypeScript 18

  3. wikipedia-word-frequency wikipedia-word-frequency Public

    Generate multilingual word-frequency datasets from Wikipedia dumps.

    Python 236 43

  4. nuxt3-class-component nuxt3-class-component Public

    Nuxt 3/4 replacement for nuxt-property-decorator

    TypeScript 23 1

  5. ripple-di ripple-di Public

    Next-generation DI for TypeScript with async scopes, transitive overrides, and automatic resource cleanup.

    TypeScript