npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

glimmer-router

v0.0.1

Published

Proof of concept routing in glimmer.js

Downloads

4

Readme

Glimmer Router

This project is currently just a thought experiment and should be considered early alpha. This approach currently requires some hacks in order to work.

How to Install

Currently a WIP.

Setup

In src/index.ts you define your routes by calling app.defineRoutes() like so:

app.defineRoutes([
  { path: '/', component: 'glimmer-router' },
  { path: '/emails', component: 'emails' },
  { path: '/emails/compose', component: 'emails/compose' },
  { path: '/emails/:id', component: 'emails/view' }
]);

Usage

In order for you to start transitioning you must do two things. First, you must define where you want components to render into by defining an element with a data-outlet property.

<h1>Hi, I'm the parent component</h1>

<a onclick={{action linkTo}}>Link-To Child Route</a>

<section data-outlet="glimmer-router"></section>

Note the name you give does not matter right now but in the future could be used similar to named outlets. Next, you call transitionTo off of the router by passing in the path where you want to transition to. The component you have defined for this path (in app.defineRoutes) will be rendered into this data-outlet element.

import Component from '@glimmer/component';

 // NOTE this will change to something absolute in the future
import getRouter from '../../../utils/get-router';

export default class GlimmerRouter extends Component {
  linkTo() {
    getRouter(this).transitionTo('/emails/1234');
  }
}

Params

If your route has dynamic segments then you grab them off of the router via the getRouter(this).params() method. This is different from say how ember passes props into the route directly.

import Component from '@glimmer/component';
import getRouter from '../../../../utils/get-router';

export default class GlimmerRouter extends Component {
  get id() {
    return getRouter(this).params().id;
  }
}

Example

Look within /src to see a simple nested routing example.

Future

There are a lot of concepts and ideas that I do not have great solutions for at the moment. Mainly around a missing / lacking container system within glimmer. If you run into any issues or have ideas around different approaches I am all ears.