⚡️ CLI building blocks & framework for the TypeScript era.

Overview

molt

A set of packages related to building CLIs. Alpha maturity. Each package has its own docs.

📛 Package Path Description Use Case
🌲 molt packages/molt Batteries included CLI framework. Builds on top of the @molt/* packages. Building a CLI with multiple commands, sub-commands, etc.
🌱 @molt/command packages/@molt/command Simple command definition. Just want to setup a quick and dirty script, build a small one-command CLI, etc.
@molt/types packages/@molt/types Advanced Types for parsing flags & more. Building your own CLI runtime, but looking for some TypeScript utility types for greater type safety.
Comments
  • Support input unions

    Support input unions

    Perceived Problem

    User wants an interface like this:

    Case 1:
    foo 
    
    Case 2:
    foo -i
    
    Case 3:
    foo -i yarn
    foo -I npm
    foo -i pnpm
    

    Case 1, when nothing given, means, don't do -i thing. Case 2, when given as boolean, means, do -i thing with some default behaviour case 3, when given, means, do -i thing with this

    Ideas / Proposed Solution(s)

    How could this be represented in the Zod types?

    z.boolean().or(z.enum(['a','b','c'])).default(false)
    

    Should do it.

    The internal type would be:

    true | false | 'a' | 'b' | 'c'
    

    The false case is because 1) its the default and 2) the user could do this explicitly:

    foo --no-i
    

    Currently Mold Command does not know how to parse based on an input union. Nor does it know how to generate docs for an input union.

    For parsing there are few rules:

    1. If the union includes string literals AND a boolean those string literals CANNOT be false or true since that would make it impossible to properly parse/cast the environment input.

    2. Looking at the above example for a concrete example: When parsing the flags, we assume that this -i --something-else means the user is intending to pass as the boolean union member. When they pass -i yarn --something-else we assume the enum.

    3. This kind of zod expression would be unsupportable by Molt: z.boolean().or(z.enum(['a','b','c']).default('b')).default(false). A default on a member within the union is not parsable.

    ~The above leads me to believe that we shouldn't support zod unions but instead roll our own, like we did with .mutuallyExclusive. We could have .union or .or or even simpler could just be accepting an array as the second parameter to .parameter:~

    Ignore examples below and see comment below.

    Command.parameter('i install', [z.boolean(), z.enum(['a','b','c'])])
    

    Ah, but the problem with this is we lose the ability to express the concept of a default for the parameter. Ok, try again with a builder function then:

    Command
      .parameter('i install', __ =>
        __.value(z.enum(['a','b','c']).description('...'))
          .value(z.boolean().description('...'))
          .default(true)
      )
    
    enhancement 
    opened by jasonkuhrt 6
  • Specify mutually exclusive fields

    Specify mutually exclusive fields

    Allow encoding that one of two fields must be given but not both

    ts-node publish.ts --bump patch                 <-- OK
    ts-node publish.ts --version 1.2.3              <-- OK
    ts-node publish.ts                              <-- WRONG
    ts-node publish.ts --bump patch --version 1.2.3 <-- WRONG
    

    This is an ADT in hiding.

    Be able to specify the group/concept and then have Alge compatible ADT returned within.

    For example in the above we might identify:

    • Method ADT
    • Member 1: Bump
    • Member 2: Version
    const args = Command.mutuallyExclusiveParameters('method', {
      'b bump': z.enum(['major','minor','patch']),
      'v version': z.string().regex(semver)
    }).parse()
    
    if (args.method._tag === 'Bump') {
      args.method.value // static type: 'major'|'minor'|'patch'
    }
    
    if (args.method._tag === 'Version') {
      args.method.value // static type: string
    }
    
    // Plug it into Alge match
    
    Alge.match(args.method)
      .Bump(() => ...)
      .Version(() => ...)
    

    Compose Alge ADTs into Molt:

    const Method = Alge.data('Method', {
      Bump: {
        value: z.enum(['major','minor','patch'])
      },
      Version: {
        value: z.string().regex(semver)
      }
    })
    
    const args = Command.parametersFromAlge(Method).parse()
    

    Unresolved questions in the above (if we did that):

    • How to apply aliases?
    • If ADT members have more than one field, what to do? Each one becomes a flag and the whole group of them must be applied and are mutually exclusive to the other group?
    enhancement @molt/command 
    opened by jasonkuhrt 3
  • fix: update dependency chalk to v5

    fix: update dependency chalk to v5

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | chalk | 4 -> 5 | age | adoption | passing | confidence |


    Release Notes

    chalk/chalk

    v5.1.2

    Compare Source

    v5.1.1

    Compare Source

    • Improved the names of exports introduced in 5.1.0 (#​567) 6e0df05
      • We of course preserved the old names.

    v5.1.0

    Compare Source

    v5.0.1

    Compare Source

    • Add main field to package.json for backwards compatibility with some developer tools 85f7e96

    v5.0.0

    Compare Source

    Breaking
    • This package is now pure ESM. Please read this.
      • If you use TypeScript, you need to use TypeScript 4.7 or later. Why.
      • If you use a bundler, make sure it supports ESM and that you have correctly configured it for ESM.
      • The Chalk issue tracker is not a support channel for your favorite build/bundler tool.
      • It's totally fine to stay on Chalk v4. It's been stable for years.
    • Require Node.js 12.20 fa16f4e
    • Move some properties off the default export to individual named exports:
      • chalk.InstanceChalk
      • chalk.supportsColorsupportsColor
      • chalk.stderrchalkStderr
      • chalk.stderr.supportsColorsupportsColorStderr
    • Remove .keyword(), .hsl(), .hsv(), .hwb(), and .ansi() coloring methods (#​433) 4cf2e40
      • These were not commonly used and added a lot of bloat to Chalk. You can achieve the same by using the color-convert package.
    • The tagged template literal support moved into a separate package: chalk-template (#​524) c987c61
    -import chalk from 'chalk';
    +import chalkTemplate from 'chalk-template';
    
    -chalk`2 + 3 = {bold ${2 + 3}}`;
    +chalkTemplate`2 + 3 = {bold ${2 + 3}}`;
    
    Improvements

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 2
  • fix: update dependency strip-ansi to v7

    fix: update dependency strip-ansi to v7

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | strip-ansi | 6 -> 7 | age | adoption | passing | confidence |


    Release Notes

    chalk/strip-ansi

    v7.0.1

    Compare Source

    v7.0.0

    Compare Source

    Breaking

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 2
  • fix: update dependency string-length to v5

    fix: update dependency string-length to v5

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | string-length | 4 -> 5 | age | adoption | passing | confidence |


    Release Notes

    sindresorhus/string-length

    v5.0.1

    Compare Source

    v5.0.0

    Compare Source

    Breaking
    Improvements

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 2
  • Allow selective environment arguments

    Allow selective environment arguments

    Command
      .create({})
      .settings({
        environment: {
          enabled: true,
          prefix: true,
          caseSensitive: false,
          mode: 'replace',
          parameters: {
            $all: false,
            githubToken: {
    		  mode: 'replace',
              prefix: null,
              map: 'ghToken'
            },
            path: 'method',
            verbose: ['bar','qux']
          }
        }
      })
    
    Command
      .create({})
      .settings({
        environment: {
          parameters: {
            githubToken: {
              prefix: null
            },
          }
        }
      })
    
    enhancement @molt/command 
    opened by jasonkuhrt 2
  • Allow passing arguments via environment variables

    Allow passing arguments via environment variables

    Allow these to be the same:

    GITHUB_TOKEN='abc' ts-node publish.ts
                       ts-node publish.ts --githubToken 'abc'
    

    Allow a prefix to be optionally specified:

    FOO_GITHUB_TOKEN='abc' ts-node publish.ts
                           ts-node publish.ts --githubToken 'abc'
    

    Make this feature opt-in to avoid total surprises.

    enhancement @molt/command 
    opened by jasonkuhrt 1
  • chore(deps): update pnpm to v7.21.0

    chore(deps): update pnpm to v7.21.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.20.0 -> 7.21.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.21.0

    Compare Source

    Minor Changes
    • The pnpm dlx command supports the --shell-mode (or -c) option. When used, the script is executed by a shell #​5679.
    Patch Changes
    • The config command should work with the --location=global CLI option #​5841.
    • Only the pnpm add --global <pkg> command should fail if there is no global pnpm bin directory in the system PATH #​5841.
    Our Gold Sponsors
    Our Silver Sponsors

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 0
  • chore(deps): update pnpm to v7.20.0

    chore(deps): update pnpm to v7.20.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.18.2 -> 7.20.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.20.0

    Compare Source

    Minor Changes

    • pnpm gets its own implementation of the following commands:

      • pnpm config get
      • pnpm config set
      • pnpm config delete
      • pnpm config list

      In previous versions these commands were passing through to npm CLI.

      PR: #​5829 Related issue: #​5621

    • Add show alias to pnpm view #​5835.

    • pnpm reads settings from its own global configuration file at $XDG_CONFIG_HOME/pnpm/rc #​5829.

    • Add the 'description'-field to the licenses output #​5836.

    Patch Changes

    • pnpm rebuild should not fail if node_modules was created by pnpm version 7.18 or older #​5815.
    • pnpm env should print help.
    • Run the prepublish scripts of packages installed from Git #​5826.
    • pnpm rebuild should print a better error message when a hoisted dependency is not found #​5815.

    Our Gold Sponsors

    Our Silver Sponsors

    v7.19.0

    Compare Source

    Minor Changes

    • New setting supported in the package.json that is in the root of the workspace: pnpm.requiredScripts. Scripts listed in this array will be required in each project of the worksapce. Otherwise, pnpm -r run <script name> will fail #​5569.
    • When the hoisted node linker is used, preserve node_modules directories when linking new dependencies. This improves performance, when installing in a project that already has a node_modules directory #​5795.
    • When the hoisted node linker is used, pnpm should not build the same package multiple times during installation. If a package is present at multipe locations because hoisting could not hoist them to a single directory, then the package should only built in one of the locations and copied to the rest #​5814.

    Patch Changes

    • pnpm rebuild should work in projects that use the hoisted node linker #​5560.
    • pnpm patch should print instructions about how to commit the changes #​5809.
    • Allow the -S flag in command shims pnpm/cmd-shim#​42.
    • Don't relink injected directories if they were not built #​5792.

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 0
  • chore(deps): update pnpm to v7.18.2

    chore(deps): update pnpm to v7.18.2

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.18.0 -> 7.18.2 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.18.2

    Compare Source

    Patch Changes

    • Added --json to the pnpm publish --help output #​5773.
    • pnpm update should not replace workspace:*, workspace:~, and workspace:^ with workspace:<version> #​5764.
    • The fatal error should be printed in JSON format, when running a pnpm command with the --json option #​5710.
    • Throw an error while missing script start or file server.js #​5782.
    • pnpm license list should not fail if a license file is an executable #​5740.

    Our Gold Sponsors

    Our Silver Sponsors

    v7.18.1

    Compare Source

    Patch Changes

    • The update notifier should suggest using the standalone script, when pnpm was installed using a standalone script #​5750.
    • Vulnerabilities that don't have CVEs codes should not be skipped by pnpm audit if an ignoreCves list is declared in package.json #​5756.
    • It should be possible to use overrides with absolute file paths #​5754.
    • pnpm audit --json should ignore vulnerabilities listed in auditConfig.ignoreCves #​5734.
    • pnpm licenses should print help, not just an error message #​5745.

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 0
  • chore(deps): update pnpm to v7.18.0

    chore(deps): update pnpm to v7.18.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.17.1 -> 7.18.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.18.0

    Compare Source

    Minor Changes

    • Overrides may be defined as a reference to a spec for a direct dependency by prefixing the name of the package you wish the version to match with a `# pnpm.

      {
        "dependencies": {
          "foo": "^1.0.0"
        },
        "overrides": {
          // the override is defined as a reference to the dependency
          "foo": "$foo",
          // the referenced package does not need to match the overridden one
          "bar": "$foo"
        }
      }
      

      Issue: #​5703

    Patch Changes

    • pnpm audit should work when the project's package.json has no version field #​5728
    • Dependencies specified via * should be updated to semver ranges by pnpm update #​5681.
    • It should be possible to override a dependency with a local package using relative path from the workspace root directory #​5493.
    • Exit with non-zero exit code when child process exits with a non-zero exit clode #​5525.
    • pnpm add should prefer local projects from the workspace, even if they use prerelease versions #​5316

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 0
  • chore(deps): update pnpm to v7.22.0

    chore(deps): update pnpm to v7.22.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | pnpm (source) | 7.21.0 -> 7.22.0 | age | adoption | passing | confidence |


    Release Notes

    pnpm/pnpm

    v7.22.0

    Compare Source

    Minor Changes

    • The pnpm list and pnpm why commands will now look through transitive dependencies of workspace: packages. A new --only-projects flag is available to only print workspace: packages.
    • pnpm exec and pnpm run command support --resume-from option. When used, the command will executed from given package #​4690.
    • Expose the npm_command environment variable to lifecycle hooks & scripts.

    Patch Changes

    • Fix a situation where pnpm list and pnpm why may not respect the --depth argument.
    • Report to the console when a git-hosted dependency is built #​5847.
    • Throw an accurate error message when trying to install a package that has no versions, or all of its versions are unpublished #​5849.
    • replace dependency is-ci by ci-info (is-ci is just a simple wrapper around ci-info).
    • Only run prepublish scripts of git-hosted dependencies, if the dependency doesn't have a main file. In this case we can assume that the dependencies has to be built.
    • Print more contextual information when a git-hosted package fails to be prepared for installation #​5847.

    Our Gold Sponsors

    Our Silver Sponsors


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    type/deps 
    opened by renovate[bot] 0
  • Allow specifying default behaviour

    Allow specifying default behaviour

    Perceived Problem

    Example: sometimes developer wants CLI to print help when no inputs are passed.

    Ideas / Proposed Solution(s)

    Allow developer to control the default behaviour.

    Could start with a setting helpOnDefault or help: { enabled: true, showWhenNoInput: true }.

    opened by jasonkuhrt 0
  • Option to control exit

    Option to control exit

    Perceived Problem

    When @molt/parameters fail the output is ugly

    Ideas / Proposed Solution(s)

    Setting to control exit:

    .settings({
      exitOnParseError: true
    })
    

    Helper function for pretty printing the rejections:

    Parameters.presentRejection(rejections)
    
    enhancement @molt/command 
    opened by jasonkuhrt 0
Releases(@molt/[email protected])
Owner
Jason Kuhrt
Shapeshifting Polymath ≒ Art ∙ Design ∙ Engineering. Heart humanities. In alternate universes ⊻ Coureur de Bois, Architect, Athlete, Lego Master Builder.
Jason Kuhrt
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Theme Redone is a custom WordPress theme starter/framework with its own Gutenberg blocks solution and a CLI that speeds up the block creation process.

Theme Redone The Framework for Developing Custom WordPress Themes with its own Gutenberg Blocks creation solution. Theme Redone is a custom WordPress

null 103 Dec 30, 2022
O objetivo dessa aplicação era criar um frontend feito totalmente em Javascript, sem nenhum arquivo HTML ou CSS pré-criado. Além disso, esse projeto também é o frontend da minha API 100% NodeJS.

Projeto HTML 100% Javascript Front-end feito "sem HTML" Conteúdos ➜ Sobre o projeto ➜ O que aprendi ➜ Como usar ?? Sobre o projeto Voltar ao topo O ob

João Victor Negreiros 19 Aug 3, 2021
This is an unofficial front end for Hacker News, reminiscent of the Windows XP era Outlook email client on a Windows XP default desktop

Hacker XP Hacker News styled as the Windows XP Outlook email client. Try out Hacker XP here! Description This is an unofficial front end for Hacker Ne

null 19 Jul 12, 2022
A ideia do projeto era desenvolver um jogo onde o usuário pode tentar "descobrir" ou melhor dizendo, lembrar a maior quantidade de HTML Tags em um determinado tempo.

HTML Tag Memory Test ?? Tecnologias Esse projeto foi desenvolvido com as seguintes tecnologias: ViteJS ReactJS Typescript Tailwind Zustand Immer Axios

Igor Santos 4 May 17, 2022
Node-cli-starter - Basic starter kit for building Node CLI applications with TypeScript.

node-cli-starter Minimal starter kit for building Node CLI applications with TypeScript. Getting Started To get started clone repo locally and run npm

Cory Rylan 7 May 17, 2022
Essential UI blocks for building mobile web apps.

Ant Design Mobile Essential UI blocks for building mobile web apps. English Doc · 中文文档 · Discord · 钉钉 $ npm install --save antd-mobile # or $ yarn add

Ant Design Team 10.7k Jan 2, 2023
A CLI tool to create a NodeJS project with TypeScript CTSP is a CLI tool to make easier to start a new NodeJS project and configure Typescript on it.

CTSP- Create TS Project A CLI tool to create a NodeJS project with TypeScript CTSP is a CLI tool to make easier to start a new NodeJS project and conf

Jean Rodríguez 7 Sep 13, 2022
Get the latest Flashbots blocks and Flashbots transactions using TypeScript in two lines of code !

mev-blocks-js This package can let you query the Flashbots blocks API easily from any JavaScript or TypeScript project. You can access the Flashbots b

Luca G.F. 6 May 14, 2022
An obsidian plugin that allows code blocks executed interactively in sandbox like jupyter notebooks. Supported language rust、kotlin、python、Javascript、TypeScript etc.

Obsidian Code Emitter This plugin allows code blocks executed interactively like jupyter notebooks. Currently, support languages: Rust Kotlin JavaScri

YiiSh 38 Dec 28, 2022
Kirby Conditional Blocks plugin

Kirby 3 plugin: disables blocks in layout fields when the column width does not match the block requirements

Roman Steiner 13 Dec 21, 2022
Nest multiple blocks inside lists of any kind of list (ordered, unordered, no marker, etc), or do away with list markers and use it like a repeater!

Nest multiple blocks inside lists of any kind of list (ordered, unordered, no marker, etc), or do away with list markers and use it like a repeater!

Rani 15 Dec 26, 2022
Generates documentations for pug.js mixins and blocks.

pug-doc-generator Generates documentation files for pug.js mixins, blocks and more. How to use All mixins with comments starting with the @pugdoc mark

Ofertório 3 Apr 21, 2022
Allow moving/copying/and creation embeds for blocks with drag-n-drop just like Logseq or Roam

Demo Features Drag-n-drop for list items in the same pane and between different panes 3 modes: move block, copy block, embed block Automatic reference

null 92 Dec 26, 2022
📊 AlphaSwap subgraph - (Blocks, token info, profiles, pricing data, LP metrics, etc...)

AlphaSwap Subgraph AlphaSwap is a decentralized protocol for automated token exchange on the KCC network. This subgraph dynamically tracks any pair cr

Brandon 3 Jul 9, 2022
An obsidian plugin that give additional features to code blocks.

Obsidian Advanced Codeblock Add additioinal features to code blocks. Demo Feature Add line numbers to code block Add line highlight to code block Usag

lijyze 29 Jan 3, 2023
Custom Gutenburg blocks to add custom functionalities to your WordPress site. Brought to you by Arif Khan with <3

Gutpress(WordPress Gutenburg Block Plugin) Custom Gutenburg blocks to add custom functionalities to your WordPress site. Brought to you by Arif Khan w

Arif Khan 4 Nov 23, 2022
An editor built with blocks.

Blocky Editor Blocky Editor is an editor which supports the concept of blocks. It can help you to build an editor like Notion. It's tiny, fast and ext

Vincent Chan 307 Jan 1, 2023