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

@loadingio/ldc

v0.0.6

Published

js components/action framework

Downloads

4

Readme

ldc

loading js component/action framework.

API

  • ldc.register(name, dep-list, (({dep-list}) ->)): register a component
    • while name ignored the module will be an anonymous module and be treated as an app directly.
    • return the registered ldc object.
  • ldc.app(name, ...): set main entry point of component
  • ldc.init(opt, ...): force init components
    • opt is either:
      • a string: name for specific ldc component.
      • an object: a ldc object ( returned by ldc.register )
      • an array of either string or objects as above
  • ldc.on(name, ((...opts)->): listen to a ldc event
  • ldc.fire(name, ...opts): fire a ldc event
  • ldc.action(opt1, opt2): register an action handler. there are three different cases of usage
    1. opt1 = name, opt2 = object register an set of action handler under the namespace with opt1 as its name.

    2. opt1 = object, opt2 is omitted similar to 1. while use module name as the action name.

    3. opt1 = name, opt2 = function (deprecated) register ldc action. deprecated since we can use on/fire to replace this.

Module

ldc helps us to maintain the dependency of modules. Define a module as follow:

ldc.regsiter "module1", <[]>, -> return {foo: -> \bar}

A newly created this context can be used in this module:

ldc.regsiter "module1", <[]>, -> return @ <<< {foo: -> \bar}

Declare dependency and load another module:

ldc.regsiter "module2", <[module1]>, ({module1}) ->

the module1 object sent to module2 handler will be the returned value in the module1 handler:

ldc.regsiter "module2", <[module1]>, ({module1}) ->
  assert module1.foo! == \bar

Each module function will be called at most once. The returned object in the first call will be used then.

ldc.regsiter "module1", <[]>, ->
  console.log "this line runs only once."
  @foo = (@foo or 0) + 1
  return @
ldc.regsiter "module2", <[module1]>, ({module1}) ->
  assert module.foo == 1
ldc.regsiter "module3", <[module1]>, ({module1}) ->
  assert module.foo == 1

main entry module can be defined by ldc.app or by omitting the module name:

ldc.regsiter <[module1 module2]>, ({module1, module2}) -> ...

Action

One can use lda to access the actions registered via ldc.action. For example, following code registers a set of actions:

ldc.register "mymodule", [], ->
  ldc.action do
    open: ->
    close: ->

Once registered, we can use ldc.mymodule to access them:

ldc.mymodule.open!

License

MIT