1.1.4 • Published 10 months ago

@lexjs/web-search v1.1.4

Weekly downloads
-
License
ISC
Repository
github
Last release
10 months ago

Web Search allows to create web queries with various search engines or websites and open them in browsers.

The library is a pure ESM package and does not provide CommonJS exports, which means it cannot be require'd. Your project must be ESM or get converted to ESM if it currently uses CommonJS.

Installation

Install the library locally in your project:

npm i @lexjs/web-search

Basic Usage

Browser

import { Browser } from '@lexjs/web-search';

const chrome = new Browser('chrome');

chrome.open('google.com');

Engine

import { Engine } from '@lexjs/web-search';

const google = new Engine('google.com', {
  search: 'search?q=',
});

const searchUrls = google.search('hello world');
const resourceUrls = google.resource('teapot');

console.log(searchUrls);
// [ 'https://google.com/search?q=hello%20word' ]

console.log(resourceUrls);
// [ 'https://google.com/teapot' ]

Browser and Engine

import { Engine, Browser } from '@lexjs/web-search';

const google = new Engine('google.com', {
  search: 'search?q=',
});

const chrome = new Browser('chrome');

const urls = google.search('what is a pure esm package');

chrome.open(urls);

Advanced Usage

Search

import { Engine } from '@lexjs/web-search';

const localhost = new Engine('localhost', {
  delimiter: '+',
  search: {
    main: 'search?q=',
    foo: {
      bar: 'foobar?q=',
      baz: 'foobaz?q=',
    },
  },
});

const urls = localhost.search('testing local engine', {
  query: ({ foo }) => [foo.bar, foo.baz],
  port: 3000,
  unsecureHttp: true,
});

console.log(urls);
// [
//   'http://localhost:3000/foobar?q=testing+local+engine',
//   'http://localhost:3000/foobaz?q=testing+local+engine'
// ]

Resources

import { Engine } from '@lexjs/web-search';

const github = new Engine('github.com', {
  resources: {
    profile: 'LexBorisoff',
    browserSearch: 'browser-search',
    tabs: {
      repos: '?tab=repositories',
      stars: '?tab=stars',
      projects: '?tab=projects',
    },
  },
});

const urls = github.resource(({ profile }) => profile, {
  path: ({ browserSearch, tabs }) => [browserSearch, tabs.repos, tabs.stars],
});

console.log(urls);
// [
//   'https://github.com/LexBorisoff/browser-search',
//   'https://github.com/LexBorisoff?tab=repositories',
//   'https://github.com/LexBorisoff?tab=stars'
// ]

Browser

import { Browser } from '@lexjs/web-search';

const chrome = new Browser('chrome', {
  profiles: {
    dev: 'Profile 1',
    personal: 'Profile 2',
  },
});

chrome.open('best laptops for developers', {
  // explicitly open in personal profile
  profile: ({ personal }) => personal,
  incognito: true,
});
1.1.4

10 months ago

1.1.3

10 months ago

0.0.1-beta.3

1 year ago

0.0.1-beta.2

1 year ago

0.0.1-beta.1

1 year ago

1.1.1

1 year ago

1.1.2

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

1.0.3

1 year ago

1.0.0-beta.2

1 year ago

1.0.0-beta.1

1 year ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.0.38

2 years ago

0.0.37

2 years ago

0.0.36

2 years ago

0.0.35

2 years ago

0.0.34

2 years ago

0.0.33

2 years ago

0.0.32

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.31

2 years ago

0.0.30

2 years ago

0.0.29

2 years ago

0.0.28

2 years ago

0.0.27

2 years ago

0.0.26

2 years ago

0.0.25

2 years ago

0.0.24

2 years ago

0.0.23

2 years ago

0.0.22

2 years ago

0.0.21

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago