Socket
Socket
Sign inDemoInstall

@jsenv/url-meta

Package Overview
Dependencies
Maintainers
2
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jsenv/url-meta

Associate data to urls using patterns


Version published
Weekly downloads
382
decreased by-14.16%
Maintainers
2
Weekly downloads
 
Created
Source

Url meta

github package npm package github ci codecov coverage

Associate data to urls using patterns.

Table of contents

Presentation

jsenv-url-meta github repository corresponds to @jsenv/url-meta package published on github and npm package registries.

@jsenv/url-meta can be used to you associate any information to one or more url at once using pattern matching.

Code example

import { urlToMeta } from "@jsenv/url-meta"

const specifierMetaMap = {
  "http://your-domain.com/*": {
    fromYourDomain: true,
    color: "black",
  },
  "http://your-domain.com/*.js": {
    color: "red",
  },
}

const urlA = "http://your-domain.com/file.json"
const urlB = "http://your-domain.com/file.js"

const urlAMeta = urlToMeta({ specifierMetaMap, url: urlA })
const urlBMeta = urlToMeta({ specifierMetaMap, url: urlB })

console.log(`${urlA}: ${JSON.stringify(urlAMeta, null, "  ")}`)
console.log(`${urlB}: ${JSON.stringify(urlBMeta, null, "  ")}`)

Code above logs

http://your-domain.com/file.json: {
  "fromYourDomain": true,
  "color": "black",
}
http://your-domain.com/file.js: {
  "fromYourDomain": true,
  "color": "red",
}

Pattern matching behaviour

The table below gives an idea of how pattern matching behaves.

specifierurlmatches
/folderhttp://domain.com/folder/file.jsfalse
/folder/*.jshttp://domain.com/folder/file.jstrue
/folder/**/*.jshttp://domain.com/folder/file.jstrue
/**/*.jshttp://domain.com/folder/file.jstrue
/folder/file.jshttp://domain.com/folder/file.jstrue
/folder/file.jsxhttp://domain.com/folder/file.jsfalse

api

@jsenv/url-meta api is documented here.


applySpecifierPatternMatching

applySpecifierPatternMatching is a function returning a matchResult indicating if and how a specifier matches an url.

Implemented in src/applySpecifierPatternMatching/applySpecifierPatternMatching.js and could be used as shown below.

import { applySpecifierPatternMatching } from "@jsenv/url-meta"

const matchResult = applySpecifierPatternMatching({
  specifier: "file:///**/*",
  url: "file://Users/folder/file.js",
})
specifier

specifier is a string looking like an url but where * and ** can be used so that one specifier can match several url.

This parameter is required, an example value could be:

"http://domain.com/**/*.js"
url

url is a string representing a url.

This parameter is required, an example value could be:

"http://domain.com/folder/file.js"
matchResult

matchResult represents if and how specifier matches url.

It is returned by applySpecifierPatternMatching, an example value could be:

{
  matched: false,
  index: 4,
  patternIndex: 1
}

Meaning specifier partially matched url.

Or

{
  matched: true,
  index: 4,
  patternIndex: 1
}

Meaning specifier full matched url.


metaMapToSpecifierMetaMap

metaMapToSpecifierMetaMap is a function used to convert a metaMap into a specifierMetaMap.

Implemented in src/metaMapToSpecifierMetaMap/metaMapToSpecifierMetaMap.js, you can use it as shown below.

import { metaMapToSpecifierMetaMap } from "@jsenv/url-meta"

const specifierMetaMap = metaMapToSpecifierMetaMap({
  visible: {
    "file:///**/*": true,
    "file://**/.git": false,
  },
})
metaMap

metaMap is an object where values are conditionnaly applied by specifiers.

This parameter is required, an example value could be:

{
  visible: {
    "file:///**/*": true,
    "file://**/.git": false,
  }
}
specifierMetaMap

specifierMetaMap is an object where meta (other objects) are conditionnaly applied by specifier.

It is returned by metaMapToSpecifierMetaMap, an example value could be:

{
  "file:///**/*": { visible: true },
  "file://**/.git": { visible: false },
}

normalizeSpecifierMetaMap

normalizeSpecifierMetaMap is a function resolving specifierMetaMap keys against an url

Implemented in src/normalizeSpecifierMetaMap/normalizeSpecifierMetaMap.js, you can use it as shown below.

import { normalizeSpecifierMetaMap } from "@jsenv/url-meta"

const specifierMetaMapNormalized = normalizeSpecifierMetaMap(
  {
    "./**/*": { visible: true },
    "./**/.git": { visible: false },
  },
  "file:///Users/folder",
)

urlCanContainsMetaMatching

urlCanContainsMetaMatching is a function designed to ignore folder content that would never have specific metas.

Implemented in src/urlCanContainsMetaMatching/urlCanContainsMetaMatching.js, you can use it as shown below.

import { urlCanContainsMetaMatching } from "@jsenv/url-meta"

const specifierMetaMap = {
  "file:///**/*": {
    source: true,
  },
  "file:///**/node_modules": {
    source: false,
  },
}
const predicate = ({ source }) => source === true

const urlA = "file:///node_modules/src"
const urlB = "file:///src"

console.log(
  `${urlA} can contains meta matching source: ${urlCanContainsMetaMatching({
    url: urlA,
    specifierMetaMap,
    predicate,
  })}`,
)
console.log(
  `${urlB} can contains meta matching source: ${urlCanContainsMetaMatching({
    url: urlB,
    specifierMetaMap,
    predicate,
  })}`,
)

Console output

file:///node_modules/src can contains meta matching source: false
file:///src can contains meta matching source: true

urlToMeta

urlToMeta is a function returning an object being the composition of all object associated with a matching specifier.

Implemented in src/urlToMeta/urlToMeta.js, you can use it as shown below.

import { urlToMeta } from "@jsenv/url-meta"

const specifierMetaMap = {
  "file:///src": {
    insideSrcDirectory: true,
  },
  "file:///**/*.js": {
    extensionIsJs: true,
  },
}

const urlA = "file:///src/file.js"
const urlB = "file:///src/file.json"

console.log(`${urlA}: ${JSON.stringify(urlToMeta({ url: urlA, specifierMetaMap }), null, "  ")}`)
console.log(`${urlB}: ${JSON.stringify(urlToMeta({ url: urlB, specifierMetaMap }), null, "  ")}`)

Console output

file:///src/file.js: {
  "insideSrcDirectory": true,
  "extensionIsJs": true,
}
file:///src/file.json: {
  "insideSrcDirectory": true
}

Installation

If you never installed a jsenv package, read Installing a jsenv package before going further.

This documentation is up-to-date with a specific version so prefer any of the following commands

npm install --save-dev @jsenv/url-meta@4.0.0
yarn add --dev @jsenv/url-meta@4.0.0

FAQs

Package last updated on 28 Oct 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc