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

local-scope

v1.2.0

Published

ES 2015 way of making private properties in class-based programming

Downloads

1,670

Readme

local-scope

NPM Version Build Status Coverage Status Runs on Node Built with GNU Make Uses ECMAScript 2015

This adapter uses ECMAScript 2015 (ES 6) syntax: you must run at least Node.js v4 in order to use this adapter.

About

This module allows for easy implementation of trully private object / class instance properties. It uses ES 2015's WeakMap to achieve true privacy without causing memory leaks.

Usage

You start by generating a private scope manager. This ensures that no other module, even when using the same cached version of this module, can get access to your private data.

const local = require('local-scope')() // <-- Notice the function call!

Alternatively, to make full use of ES2015 module syntax, you can create a new scope this way:

// This will create your very own scope manager
import scope from 'local-scope/create'

Now you can use that local function to set and retrieve private data from your own functions!

class Person {

  constructor (publicName, secretName) {
    // This is public
    this.publicName = publicName
    // This is private - it's not even saved to this instance!
    local(this).secretName = secretName
  }

  hasSecretName (name) {
    // Notice how you can retrieve the same private value
    // for this instance
    return local(this).secretName === name
  }
}

// And when used...
const bruce = new Person('Bruce Wayne', 'Batman')
    , clark = new Person('Clark Kent', 'Superman')

bruce.hasSecretName('Batman') // true!
clark.hasSecretName('Batman') // false!

Important: To access the private properties of an object, you need to have two things:

  • A reference to the object
  • A reference to the function to which you saved the private data

The scope manager always returns an object, so you can save whatever you need there, it just has to be saved into an object's property (you can name it whatever you like).

License

This software is licensed under the BSD-3-Clause License. See the LICENSE file for more information.