5.5.0 • Published 8 months ago

webext-schema v5.5.0

Weekly downloads
150
License
MPL-2.0
Repository
github
Last release
8 months ago

build CodeQL npm

webext-schema

WebExtentions schemas and MailExtensions schemas fetched from hg.mozilla.org. Stubbed browser API is also available.

Install

npm i webext-schema

Usage

import { Schema } from 'webext-schema';

const schema = new Schema();

new Schema(channel, sinonConfig)

  • @param {string} channel - release channel. one of "beta", "central", "release", "esr", "mail".
  • @param {Object} sinonConfig - optional configuration for sinon.createSandbox(), see Sinon.JS for details.

Both arguments are optional.

const schema = new Schema("central", {
  useFakeTimers: true,
  useFakeServer: true,
});

schema.channel

"central", "beta", "release", "esr" for WebExtensions, and "mail" for MailExtensions are available. Channel defaults to "beta".

const schema = new Schema("central");

Also, you can set it afterwards.

const schema = new Schema();
schema.channel = "central";

schema.get(name)

  • @param {string} name - API name or file name
  • @returns {?Array} - schema

Get the schema for the specific API. Argument can be either an API name or a file name.

const schema = new Schema().get("browserAction");
// [{namespace: "browserAction", events: [...], ...}]
const schema = new Schema().get("browser_action.json");
// [{namespace: "browserAction", events: [...], ...}]

schema.getAll()

  • @returns {Object} - all schemas

Get all schemas as a single object. Note that the key of the object is the file name and the value is the schema.

const schema = new Schema().getAll();
// {"alarms.json": [{...}], "bookmarks.json": [{...}], ...}

schema.list()

  • @returns {Array} - file names

Get the list of schema files.

const list = new Schema().list();
// ["alarms.json", "bookmarks.json", ...]

schema.mock()

  • @returns {Object} - stubbed browser api

Creates stubbed browser API.

  • Functions are stubbed by sinon.sandbox.stub().
  • You can access sandbox object via browser._sandbox. As an example of usage, call browser._sandbox.reset() before and/or after each test to initialize all the stubbed functions.
  • Optionally, you can pass sinon configuration object as an argument when creating a schema instance.

See Sinon.JS for details of sinon.sandbox.

const browser = new Schema().mock();

// example of mocking runtime.connect()
const mockConnect = browser.runtime.connect.callsFake(({ name }) => {
  const port = Object.assign({}, browser.runtime.Port);
  port.name = name;
  return port;
});

const port1 = mockConnect({ name: "foo" });
const port2 = mockConnect({ name: "bar" });
assert.strictEqual(port1.name, "foo");
assert.isFunction(port1.onDisconnect.addListener);
assert.strictEqual(port2.name, "bar");
assert.isFunction(port2.onDisconnect.addListener);

// reset
browser._sandbox.reset();
5.5.0

8 months ago

5.4.3

9 months ago

5.4.2

9 months ago

5.3.3

1 year ago

5.3.2

1 year ago

5.4.1

11 months ago

5.4.0

11 months ago

5.3.5

11 months ago

5.3.4

1 year ago

5.3.1

1 year ago

5.3.0

1 year ago

5.2.10

1 year ago

5.2.9

1 year ago

5.2.8

1 year ago

5.2.7

1 year ago

5.2.6

2 years ago

5.2.5

2 years ago

5.2.3

2 years ago

5.2.2

2 years ago

5.2.1

2 years ago

5.2.0

2 years ago

5.1.16

2 years ago

5.1.9

2 years ago

5.1.8

2 years ago

5.1.7

2 years ago

5.1.6

2 years ago

5.1.5

2 years ago

5.1.4

2 years ago

5.1.3

2 years ago

5.1.2

2 years ago

5.1.1

2 years ago

5.1.0

2 years ago

5.1.15

2 years ago

5.1.14

2 years ago

5.1.13

2 years ago

5.1.12

2 years ago

5.1.11

2 years ago

5.1.10

2 years ago

5.0.9

3 years ago

5.0.8

3 years ago

5.0.7

3 years ago

5.0.6

3 years ago

5.0.5

3 years ago

5.0.10

3 years ago

5.0.11

2 years ago

5.0.4

3 years ago

5.0.3

3 years ago

5.0.2

3 years ago

4.0.0

3 years ago

5.0.1

3 years ago

5.0.0

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

4.2.1

3 years ago

4.2.0

3 years ago

4.1.3

3 years ago

4.1.0

3 years ago

4.1.2

3 years ago

4.1.1

3 years ago

2.3.0

3 years ago

2.3.2

3 years ago

2.3.1

3 years ago

2.3.4

3 years ago

2.3.3

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.2.1

3 years ago

2.2.0

3 years ago

2.2.2

3 years ago

2.1.2

3 years ago

2.1.3

3 years ago

2.1.1

3 years ago

2.0.5

4 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.9

3 years ago

2.0.8

3 years ago

2.1.0

3 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

2.0.0-a.2

4 years ago

2.0.0-a.1

4 years ago

1.5.3

4 years ago

1.5.2

4 years ago

1.5.1

4 years ago

1.5.0

4 years ago

1.4.15

4 years ago

1.4.14

4 years ago

1.4.13

4 years ago

1.4.12

4 years ago

1.4.11

4 years ago

1.4.10

4 years ago

1.4.9

4 years ago

1.4.8

4 years ago

1.4.7

4 years ago

1.4.6

4 years ago

1.4.5

4 years ago

1.4.4

4 years ago

1.4.3

4 years ago

1.4.2

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.3.14

5 years ago

1.3.13

5 years ago

1.3.12

5 years ago

1.3.11

5 years ago

1.3.10

5 years ago

1.3.9

5 years ago

1.3.8

5 years ago

1.3.7

5 years ago

1.3.6

5 years ago

1.3.5

5 years ago

1.3.4

5 years ago

1.3.3

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.17

5 years ago

1.2.16

5 years ago

1.2.15

5 years ago

1.2.14

5 years ago

1.2.13

5 years ago

1.2.12

5 years ago

1.2.11

5 years ago

1.2.10

5 years ago

1.2.8

5 years ago

1.2.7

5 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.0.2

5 years ago

1.1.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

1.0.0-a.1

5 years ago

0.8.6

5 years ago

0.8.5

5 years ago

0.8.4

6 years ago

0.8.3

6 years ago

0.8.2

6 years ago

0.8.1

6 years ago

0.8.0

6 years ago

0.7.22

6 years ago

0.7.21

6 years ago

0.7.20

6 years ago

0.7.19

6 years ago

0.7.18

6 years ago

0.7.17

6 years ago

0.7.16

6 years ago

0.7.15

6 years ago

0.7.14

6 years ago

0.7.13

6 years ago

0.7.12

6 years ago

0.7.11

6 years ago

0.7.10

6 years ago

0.7.9

6 years ago

0.7.8

6 years ago

0.7.7

6 years ago

0.7.6

6 years ago

0.7.5

6 years ago

0.7.4

6 years ago

0.7.3

6 years ago

0.7.2

6 years ago

0.7.1

6 years ago

0.7.0

6 years ago

0.6.11

6 years ago

0.6.10

6 years ago

0.6.9

6 years ago

0.6.8

6 years ago

0.6.7

6 years ago

0.6.6

6 years ago

0.6.5

6 years ago

0.6.4

6 years ago

0.6.3

6 years ago

0.6.2

6 years ago

0.6.1

6 years ago

0.6.0

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago