5.3.0 • Published 25 days ago

webext-schema v5.3.0

Weekly downloads
150
License
MPL-2.0
Repository
github
Last release
25 days 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.3.0

25 days ago

5.2.10

2 months ago

5.2.9

3 months ago

5.2.8

4 months ago

5.2.7

5 months ago

5.2.6

6 months ago

5.2.5

7 months ago

5.2.3

8 months ago

5.2.2

8 months ago

5.2.1

9 months ago

5.2.0

10 months ago

5.1.16

11 months ago

5.1.9

1 year ago

5.1.8

1 year ago

5.1.7

1 year ago

5.1.6

1 year ago

5.1.5

1 year ago

5.1.4

1 year ago

5.1.3

1 year ago

5.1.2

1 year ago

5.1.1

1 year ago

5.1.0

1 year ago

5.1.15

1 year ago

5.1.14

1 year ago

5.1.13

1 year ago

5.1.12

1 year ago

5.1.11

1 year ago

5.1.10

1 year ago

5.0.9

1 year ago

5.0.8

1 year ago

5.0.7

2 years ago

5.0.6

2 years ago

5.0.5

2 years ago

5.0.10

1 year ago

5.0.11

1 year ago

5.0.4

2 years ago

5.0.3

2 years ago

5.0.2

2 years ago

4.0.0

2 years ago

5.0.1

2 years ago

5.0.0

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

4.2.1

2 years ago

4.2.0

2 years ago

4.1.3

2 years ago

4.1.0

2 years ago

4.1.2

2 years ago

4.1.1

2 years ago

2.3.0

2 years ago

2.3.2

2 years ago

2.3.1

2 years ago

2.3.4

2 years ago

2.3.3

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

2.2.2

2 years ago

2.1.2

2 years ago

2.1.3

2 years ago

2.1.1

2 years ago

2.0.5

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.0.9

2 years ago

2.0.8

2 years ago

2.1.0

2 years ago

2.0.4

2 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

2.0.0-a.2

3 years ago

2.0.0-a.1

3 years ago

1.5.3

3 years ago

1.5.2

3 years ago

1.5.1

3 years ago

1.5.0

3 years ago

1.4.15

3 years ago

1.4.14

3 years ago

1.4.13

3 years ago

1.4.12

3 years ago

1.4.11

3 years ago

1.4.10

3 years ago

1.4.9

3 years ago

1.4.8

3 years ago

1.4.7

3 years ago

1.4.6

3 years ago

1.4.5

3 years ago

1.4.4

3 years ago

1.4.3

3 years ago

1.4.2

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

1.3.14

4 years ago

1.3.13

4 years ago

1.3.12

4 years ago

1.3.11

4 years ago

1.3.10

4 years ago

1.3.9

4 years ago

1.3.8

4 years ago

1.3.7

4 years ago

1.3.6

4 years ago

1.3.5

4 years ago

1.3.4

4 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.17

4 years ago

1.2.16

4 years ago

1.2.15

4 years ago

1.2.14

4 years ago

1.2.13

4 years ago

1.2.12

4 years ago

1.2.11

4 years ago

1.2.10

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.0.2

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

1.0.0-a.1

4 years ago

0.8.6

4 years ago

0.8.5

4 years ago

0.8.4

4 years ago

0.8.3

4 years ago

0.8.2

4 years ago

0.8.1

5 years ago

0.8.0

5 years ago

0.7.22

5 years ago

0.7.21

5 years ago

0.7.20

5 years ago

0.7.19

5 years ago

0.7.18

5 years ago

0.7.17

5 years ago

0.7.16

5 years ago

0.7.15

5 years ago

0.7.14

5 years ago

0.7.13

5 years ago

0.7.12

5 years ago

0.7.11

5 years ago

0.7.10

5 years ago

0.7.9

5 years ago

0.7.8

5 years ago

0.7.7

5 years ago

0.7.6

5 years ago

0.7.5

5 years ago

0.7.4

5 years ago

0.7.3

5 years ago

0.7.2

5 years ago

0.7.1

5 years ago

0.7.0

5 years ago

0.6.11

5 years ago

0.6.10

5 years ago

0.6.9

5 years ago

0.6.8

5 years ago

0.6.7

5 years ago

0.6.6

5 years ago

0.6.5

5 years ago

0.6.4

5 years ago

0.6.3

5 years ago

0.6.2

5 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago