0.0.4 • Published 27 days ago

@lexjs/browser-search v0.0.4

Weekly downloads
-
License
ISC
Repository
github
Last release
27 days ago

Browser Search allows to create web searches with various search engines/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/browser-search

Basic Usage

Browser

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

const chrome = new Browser('chrome');

chrome.open('google.com');

Engine

import { Engine } from '@lexjs/browser-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/browser-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, Browser } from '@lexjs/browser-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, Browser } from '@lexjs/browser-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 { Engine, Browser } from '@lexjs/browser-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,
});
0.0.3

27 days ago

0.0.4-beta.2

27 days ago

0.0.4-beta.1

27 days ago

0.0.4-beta.3

27 days ago

0.0.4

27 days ago

0.0.2

29 days ago

0.0.2-beta.1

29 days ago

0.0.1

1 month ago

0.0.1-beta.11

1 month ago

0.0.1-beta.10

1 month ago

0.0.1-beta.9

1 month ago

0.0.1-beta.8

1 month ago

0.0.1-beta.7

1 month ago

0.0.1-beta.6

1 month ago

0.0.1-beta.5

1 month ago

0.0.1-beta.4

1 month ago

0.0.1-beta.3

1 month ago

0.0.1-beta.2

1 month ago

0.0.1-beta.1

1 month ago