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

ember-cli-dfinity

v1.3.0

Published

An add-on for using the Internet Computer in your EmberJS app.

Downloads

19

Readme

ember-cli-dfinity

An add-on for using the Internet Computer in your EmberJS app.

Compatibility

  • Ember.js v4.4 or above
  • Ember CLI v4.4 or above
  • Node.js v14 or above

Installation

ember install ember-cli-dfinity

On-chain Dapp

<<<<<<< HEAD If you are building the app to run on the Internet Computer, then you must install the dfx-ember-webpack-plugin Webpack plugin into the dfx project so it builds the EmberJS asset canister correctly.

Defining actors

=======

Usage

8fa453e (v3.28.6...v4.12.2)

Actors are the primary artifacts (or components) exposed by a canister running on the Internet Computer. The actor has an interface, which represents the publicly accessible methods of the canister. When developing your own Dapp, you will have a candid interface for the actor like the following:

// hello.did

service : {
  greet: (text) -> (text);
}

We import this interface definition into the EmberJS application to leverage it using the following command:

ember g dfx:actor hello --declaration

You must run this command from an EmberJS frontend application that is located in $DFX_ROOT/src. For example, $DFX_ROOT/src/hello_frontend. $DFX_ROOT is the root project directory of the Dapp, and has the dfx.json file.

This command will create a symbolic link to the JavaScript declaration in $ROOT/app/declarations, and then define the actor hello in $ROOT/app/actors where $ROOT is the root directory of the EmberJS frontend application.

Manually defining actors

There will be times you need to manually define an actor's interface. For example, your frontend needs to reference a canister that is not local to your project. You can use the @query and @update decorators to manually define an actor.

import { Actor, query, update } from 'ember-cli-dfinity';

export default class HelloActor extends Actor {
  @query (['text'], ['text'])  // can also write @query('text, 'text')
  greet;
};

Using actors

You use defined actors by injecting them into EmberJS an entity (e.g., controller, router, service, component, etc.) using the @actor decorator. For example, the code below shows how you can inject the hello actor into an EmberJS controller and call the greet method.

import Controller from '@ember/controller';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
import { actor } from 'ember-cli-dfinity';

export default class IndexController extends Controller {
  @tracked
  name;

  @tracked
  greeting;

  // Bind the hello actor to the hello variable.
  @actor
  hello;

  @action
  async submit(ev) {
    // Prevent the default behavior for the submit button.
    ev.preventDefault();

    // Call the greet() method on the hello actor.
    this.greeting = await this.hello.greet(this.name);
  }
}

Configuring your application

The config/environment.js file is where you configure how the Dapp connects to the Internet Computer. The configuration is auto-generated for you during the build process. This allows the add-on to work out-of-the-box with little configuration effort on your part. You, however, have the option of overriding the default configurations via config/environment.js.

// config/environment.js

module.exports = function (environment) {
  let ENV = {
    // ...

    dfx: {
      // Set the default canister name used for all actors. The name is either one of the
      // names that appears in canister_ids.json, or in the canisters definition below.
      
      defaultCanister: '',
      
      // Set the default canister id used for all actors. This property takes precedence
      // over defaultCanister when both are defined.
      
      defaultCanisterId: '',
      
      canisters: {
        // Optional. You can define caninsters not defined in canister_ids.json, or
        // override the existing canister ids here.
      },
        
      agents: {
        // An optional list of agents that can be used by the @actor decorator. The
        // add-on will automatically generate this agent list from the networks defined
        // in dfx.json. You can override any auto-generate agent here similar to how
        // we are overriding the agent for the `local` network.
        
        local: { 
          // Define other @dfinity/agent options here.
          host: 'http://127.0.0.1:8000', 
        }, 
      }, 
    }
  }; 
   
  // ...
}

Contributing

See the Contributing guide for details.

License

This project is licensed under the Apache-2.0.