Small, focused packages from Code-Evolve. Each one does a single job and has its own documentation.
Resolves a dot path such as lists.todo.1.completed inside a JavaScript object, and returns the tools to get, set, replace or remove what it found. The main entry needs no framework. Two optional entry points add path mutations for a Vuex store and a Vue 3 plugin.
A pattern language for filtering a list by the labels of the things in it: files, tags, titles, anything with a name. A plain word is a case-insensitive contains, so the search people actually run costs no syntax at all, and the whole language is seven reserved characters covering wildcards, anchors, sets, alternation, conjunction, case control, whole-word matching and exclusion. There are no quantifiers, no lookahead and no capture groups. A pattern is parsed and walked rather than compiled to a regular expression, so a regex engine's implementation details cannot leak into what a pattern means, and a pattern it cannot read hides nothing: it matches everything and says why, instead of returning a confident empty list.
Five implementations, one language. TypeScript, Rust, Python, Go and PHP, every one of them held to a single shared conformance fixture of 568 assertions, so a pattern means the same thing in the browser, the service and the script, and a port cannot drift quietly.
A parser and formatter for Relaxed JSON (RJSON), a superset of JSON where commas, and the quotes around simple keys and values, are optional, trailing commas are allowed, strings take single, double or backtick quotes and may span lines, and comments are allowed. Every standard JSON document is valid RJSON. One call converts RJSON to JSON, JSON back to RJSON, or either to JavaScript, and the full API adds a pretty printer and a JSON value model. The specification and an online converter are at relaxedjson.org.
A Vue 2 plugin for Vuetify 2 that queues snackbar messages instead of letting one replace another, and gives every component $snackbar.show(...). Each message can set its own duration, hide the close button or add its own actions, and shows a progress bar until it times out, with an indicator when more are waiting. Messages can go to other outlets on the page, and can be grouped so that a queue or a group is flushed before the next one shows.
Turns identifiers into readable captions: fooBar, foo_bar, foo.bar and foo-bar all become Foo Bar. One set of rules covers camelCase, PascalCase, snake_case, kebab-case and dotted paths, with options to keep acronyms such as HTTP whole, set trailing numbers apart and supply your own delimiters. No runtime dependencies, and TypeScript declarations included.
A Vue component that shows an indicator at each edge where scrollable content is hidden. It works with Vue 2.7 and Vue 3, and adds a horizontal mode, click to scroll, events when an end is reached, and indicators of clear glass that blur the content behind them.
A Vue 2 plugin that gives every component $window and $document, so a template can call the DOM directly, such as $window.open(...) or $document.title, without declaring a method for it. Both are there from the first render, follow the document that owns the component's element (so a component inside an iframe sees that iframe's window), and are undefined during server rendering. No runtime dependencies.