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

supercookie

v5.0.3

Published

A tool for managing and creating the most versatile cookies ever seen without all the fuss.

Downloads

272

Readme

SuperCookie

This module provides four management classes for saving and retrieving objects, arrays, and all current javascript primitives into a named cookie without issue.

Installation

To install, in terminal type

	npm i --save supercookie

then, in your project,

import SuperCookie from 'supercookie';

Constructor

new SuperCookie(name)

Class Variables

  • REQUIRED

  • name
    The name of the cookie. This is used to initialize the SupeCookie.

  • Required to be a Cookie

  • value
    type: any
    This is applied by default either in the SuperCookie declaration or at the moment you pull the cookie. SuperCookie allows you to define this in any format, despite it being a string. It is marginally more inclusive then JSON format normally is, including, for instance, Bigint types.

  • cookie
    type: Object
    This is the Supercookie's representation as an object, in the way that is used by the cookieStore functionalities. Value is converted to a SuperCookie formatted string if it's an object.

  • Cookie parameters
    NOTE: The following values can only be retrieved after the initial cookieStore fetch, which is indicated with SuperCookie.prototype.ready. Until this is true, they will return undefined, unless defined by the SuperCookie declaration.

  • domain
    type:string

  • expires
    type:Date | number | string | null | false
    returns as: Date | false
    When defined the behavior is different depending on how you do it. Date | number | string work as a normal Date object definition. null | false have special behaviors:
    null: this will delete the cookie by setting its expiration to 0.
    false: this will set the cookie's expiration as far into the future as possible (400 days).
    Returning: if the expiration is more than 300 days into the future, it will return false, otherwise it will return the Date object of the expiration.
    NOTE: if you wish to override the false behavior and treat it purely as Date, this can be done by setting SuperCookie.prototype.preserveFalsyExpirations to true.

  • partitioned
    type:boolean

  • path
    type:string

  • sameSite
    type:boolean

  • secure
    type:boolean

  • cookie
    type: Object
    This is a readonly value returning the cookie in the format used to apply it to cookieStore API. Generally you won't need to use this ever.

  • Parameters

  • parameters
    type: Object | () => Object
    Retrieves or sets the provided parameters for the cookie of the given name in the format of default SuperCookie formatting.

  • ready
    type: Boolean
    This tells you whether the initial cookieStore fetch has completed.

  • preserveFalsyExpirations
    If this is true, it sets the default behavior for the SuperCookie to return the exact expiration instead of false for applicable expirations when examining it.

Methods

  • addEventListener
    (listener: (evt) => void) => void
    This adds a listener to every time the targeted cookie is changed for ANY reason, not just when the SuperCookie modifies it.
    note: the evt.changed property is going to be returned as an array of values in the SuperCookie default format, instead of the cookieStore format.
    evt.change is a new property that will allow you to target the change specific to the targeted cookie.

  • asObject
    () => object
    This returns the SuperCookie in its default structure as a basic object.

  • copy
    (name: string) => SuperCookie
    Copies this cookie into a new SuperCookie with the name given.

  • delete
    () => void
    Deletes the targeted cookie

  • deleteSync
    () => void
    Deletes the targeted cookie syncronously

  • equals
    (cookie: SuperCookieParameters | CookieStoreReturn) => boolean
    Checks if the targeted SuperCookie's values are equal to the provided SuperCookie definition object or the return object from a cookieStore get call.

  • get
    () => Promise
    retrieves a full SuperCookie defined directly from the cookieStore values.

  • getSync
    () => {name: string, value: any}
    retrieves a partial SuperCookie object with only the name and value values applied, directly from the document cookie.

  • onReady
    () => void
    This will run any time after the SuperCookie retrieves from the cookieStore. (essentially, any time you redefine a value or the targeted cookie is modified through other means)

  • removeEventListener
    (listener: (evt: SuperCookieEvent) => void) => void
    Acts similarly to cookieStore.removeEventListener for the listeners defined by this SuperCookie instance.

  • set
    (value, parameters) => Promise
    (parameters) => Promise
    This sets the SuperCookie's values to those provided, as well as the targeted cookie.

  • setSync
    (value, parameters) => void
    (parameters) => void
    This will set the cookie using the document.cookie = functionality. It will be inherently slightly less reliable than the SuperCookie.prototype.set function.

  • then READONLY
    type: (func: () => void) => void
    Turns the initial readying of the SuperCookie into a promiselike. Note that it can only be applied BEFORE the initial retrieval of the cookieStore data.

  • toString
    type () => string Returns the cookie in the style utilized by document.cookie format.

Static Methods

  • addEventListener
    (listener: (evt) => void) => void
    This adds a listener to every time cookies are changed for ANY reason, not just when the SuperCookie modifies it.
    note: the evt.changed property is going to be returned as an array of values in the SuperCookie default format, instead of the cookieStore format.

  • copy
    (name: string, newName: string, options?: {preserveFalsyExpirations?: boolean}) => void
    Copies the cookie name into a new cookie newName

  • delete
    (name: string, {path: string, domain: string}) => void
    (name: string, path?: string) => void
    Deletes the cookie name matching path and domain when they are provided.

  • get
    (name: string, options?: {preserveFalsyExpirations: boolean}) => Promise
    Retrieves the target cookie as a SuperCookieDefaults Object.

  • getAll
    ({preserveFalsyExpirations: boolean}) => Promise<SuperCookieDefaults[]>
    Retrieves all cookies available as SuperCookieDefaults Objects.

  • getSync
    (cookieName: string) => {name: string, value: any}
    retrieves the the named cookie's values available directly from the document.cookie string.

  • getAllSync
    () => {name: string, value: string}[]
    retrieves all cookies from the document.cookie string as an array.

  • equals
    (cookie1: SuperCookie | SuperCookieSetOptions | CookieStoreGetOptions, cookie2: SuperCookie | SuperCookieSetOptions | CookieStoreGetOptions) => boolean
    Compares two SuperCookie style objects. SuperCookies, cookieStore get returns, or SuperCookie definition objects may be used.

  • removeEventListener
    (listener: (evt: SuperCookieEvent) => void) => void
    Removes a listener defined by SuperCookie.

  • set
    (parameters: SuperCookieSetOptions) => Promise
    (name: string, parameters?: SuperCookieSetOptions) => Promise
    (name: string, value: any, parameters?: SuperCookieSetOptions) => Promise
    Sets the cookie that has the name referenced.

  • setSync
    (parameters: SuperCookieSetOptions) => void
    (name: string, parameters?: SuperCookieSetOptions) => void
    (name: string, value: any, parameters?: SuperCookieSetOptions) => void
    Synchronously sets the cookie that has the name referenced. This may not function quite as reliable as set.

Version History

3.0 - The rework for typescript and cookies building properly, complete with retyping for primitive object types, is good to go!

3.1 - Remodeled the constructor to not include value, as that is typically defined through usage and many times would require putting an undefined entry in the middle.

4.0 - implemented the ability to utilize the cookieStore functionality.

5.0 - Absolute ground up refactor, properly incorporating cookieStore, fixing dozens of broken aspects. This is now awesome.