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

snake-namespace

v0.0.7

Published

snake-namespace

Downloads

16

Readme

snake-namespace

set vars to sub stack

To prevent errors, Node Version Best >= 10.4.0+, 9.11.2+ ~~Warning: Lower or equal than 8.12.0 Not Support~~

Install

$ npm install snake-namespace

Usage

const SnakeNamespace = require('snake-namespace')
# run() === runInShareMode()
SnakeNamespace.run(async () => {
  SnakeNamespace.set('age', 0)
  # in await function can get age value use SnakeNamespace.get('age')
  await ....
})

SnakeNamespace.runInStackMode(async () => {
  SnakeNamespace.set('age', 0)
  in await function can get age value use SnakeNamespace.get('age')
  await ....
})

share mode - recommend

await SnakeNamespace.run(async () => {
  SnakeNamespace.set('age', 0)
  # return 0
  SnakeNamespace.get('age')
    
  function test1(key, value) {
    return new Promise(resolve => {
      SnakeNamespace.set(key, value)
        setTimeout(() => {resolve()})
    })
  }
  await test1('age', 1)
  # return 1
  SnakeNamespace.get('age')
    
  function test2(key, value) {
    return new Promise(resolve => {
      SnakeNamespace.set(key, value)
      setTimeout(() => {
        resolve()
      })
    })
  }
  await test2('age', 2)
  # return 2
  SnakeNamespace.get('age')

  function test3(key, value) {
    return new Promise(resolve => {
      setTimeout(() => {
        SnakeNamespace.set(key, value)
        let getVal = SnakeNamespace.get('age')
        assert.equal(getVal, value)
        resolve()
      })
    })
  }
  await test3('age', 3)
  # return 3
  SnakeNamespace.get('age')
    
  function test4(key, value) {
    return new Promise(resolve => {
      setTimeout(() => {
        SnakeNamespace.set(key, value)
        # return 4
        SnakeNamespace.get('age')
        setTimeout(() => {
          # return 4        
          let getVal = SnakeNamespace.get('age')
            resolve()
        })
      })
    })
  }
  await test4('age', 4)
  # return 4
  SnakeNamespace.get('age')
    
  function test5(key, value) {
    SnakeNamespace.set(key, value)
  }
  test5('age', 50)
  # return 50
  SnakeNamespace.get('age')
    
  function test6(key, value) {
    SnakeNamespace.set(key, value)
      return new Promise(resolve => {
        setTimeout(() => {resolve()})
    })
  }
  await test6('age', 60)
  # return 60
  SnakeNamespace.get('age')
})

stack mode - recommend

const SnakeNamespace = require('snake-namespace')
SnakeNamespace.runInStackMode(async () => {
  SnakeNamespace.set('age', 0)
  # return 0, main namespace
  SnakeNamespace.get('age')
  
  function test1(key, value) {
    return new Promise(resolve => {
       # not in async, will cover top value
       SnakeNamespace.set(key, value)
       setTimeout(() => {resolve()})
    })
  }
  
  await test1('age', 1)
  
  # --- because test1 has setTimeout, it's async function, below will in new Namespace ---
  # test1 set not in async, will cover age default value 0 -> 1
  # # because setTimeout, new namespace, inherit from main 
  
  # return 1
  SnakeNamespace.get('age')
  
  function test2(key, value) {
    return new Promise(resolve => {
      # not in async, will cover top value
      SnakeNamespace.set(key, value)
      setTimeout(() => {resolve()})
    })
  }
  await test2('age', 2)
  # # because setTimeout, new namespace, inherit from main 
  # return 1
  SnakeNamespace.get('age')
  
  function test3(key, value) {
    return new Promise(resolve => {
      setTimeout(() => {
        # in async, new namespace
        SnakeNamespace.set(key, value)
        # return 3
        SnakeNamespace.get('age')
        resolve()
      })     
    })
  }
  await test3('age', 3)
  # # because setTimeout, new namespace, inherit from main 
  # return 1
  SnakeNamespace.get('age')
  
  function test4(key, value) {
    return new Promise(resolve => {
      setTimeout(() => {
        # in async, new namespace
        SnakeNamespace.set(key, value)
        # return 4
        SnakeNamespace.get('age')
        setTimeout(() => {
          # return 4, from bubble up
          SnakeNamespace.get('age')
          // in async, new namespace
          SnakeNamespace.set(key, value + 1)
          # return 5
          SnakeNamespace.get('age')
          resolve()
        })
      })     
    })
  }
  await test4('age', 4)
  # because setTimeout, new namespace, inherit from main 
  # return 1
  SnakeNamespace.get('age')
  
  function test5(key, value) {
  	SnakeNamespace.set(key, value)
  }
  await test5('age', 50) 
  # after test5 setTimeout, below will new namespace inherit main namespace
  value = SnakeNamespace.get('age')
  assert.equal(value, 50)
  
  function test6(key, value) {
    SnakeNamespace.set(key, value)
    return new Promise(resolve => {
      setTimeout(() => {resolve()})
    })
  }
  await test6('age', 60)
  // after test6 setTimeout, below will new namespace inherit main namespace
  value = SnakeNamespace.get('age')
  assert.equal(value, 1)
})