Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@a-la/context

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@a-la/context

A test context for @a-la packages.

  • 1.2.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

@a-la/context

npm version

@a-la/context is a a test context for @a-la packages used in alamode transpiler. It will provide a means to record the result of transforms for given rules, as well as emitted events.

yarn add -E @a-la/context

Table Of Contents

API

The package is available by importing its default function:

import ALaContext from '@a-la/context'

The context is then passed to the context property of zoroaster tests suites.

async stream(
  rules: Rule|Rule[],
  text: string,
  eventKeys?: string[],
): ReturnType

Creates a Replaceable stream according to a rule or set of rules, asynchronously ends it with passed text and returns the outcome.

In the example below, a transform rule is used to replace an export statement with a module.exports statement, and emit an exports event.

/**
 * A rule to replace an `export function` statement with `module.exports`.
 */
export const exportFunctionRule = {
  re: / *export function ([$_\w][$_\w\d]*)/gm,
  replacement(_, fn) {
    // async
    this.emit('exports', fn)

    // sync
    this.exports = this.exports || []
    this.exports.push(fn)

    return `module.exports.${fn} = function ${fn}`
  },
}

Now, this rule can be tested using the @a-la/context and zoroaster testing framework.

/* yarn example/ */
import { equal, deepEqual } from 'zoroaster/assert'
import ALaContext from '@a-la/context'
import { exportFunctionRule as rule } from '../../src/rule'

/** @type {Object.<string, (c: ALaContext)>} */
const T = {
  context: ALaContext,
  async 'replaces the export function'({ stream }) {
    const fn = 'test'
    const data = `export function ${fn}() {}`

    const {
      result,
      events,
      replaceable,
    } = await stream(rule, data, ['exports'])
    const expected = `module.exports.${fn} = function ${fn}() {}`
    equal(result, expected)
    deepEqual(events, {
      exports: [fn],
    })
    deepEqual(replaceable.exports, [fn])
  },
}

export default T
example/test/spec
  ✓  replaces the export function

🦅  Executed 1 tests.

The output of the stream function is an object described below.

ReturnType: Replaceable instance, string result and events map.

NameTypeDescriptionDefault
events*Object.<string, any[]>Emitted events recorded against passed events keys.-
result*stringThe caught output of a Replaceable stream as a string.-
replaceable*ReplaceableThe instance of a Replaceable stream.-

setConfig(
  config: Object,
): void

This method allows to set the config property of the Replaceable instance created inside of the stream method. Some transform may use config for certain functionality, e.g., replacing of the source string in the @a-la/import transform.

TODO

  • Document mask testing.

(c) À La Mode 2018

Keywords

FAQs

Package last updated on 01 Sep 2018

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