Git Product home page Git Product logo

algolia-indices's Introduction

Electron Logo

CircleCI Build Status AppVeyor Build Status Electron Discord Invite

πŸ“ Available Translations: πŸ‡¨πŸ‡³ πŸ‡§πŸ‡· πŸ‡ͺπŸ‡Έ πŸ‡―πŸ‡΅ πŸ‡·πŸ‡Ί πŸ‡«πŸ‡· πŸ‡ΊπŸ‡Έ πŸ‡©πŸ‡ͺ. View these docs in other languages on our Crowdin project.

The Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on Node.js and Chromium and is used by the Visual Studio Code and many other apps.

Follow @electronjs on Twitter for important announcements.

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

Installation

To install prebuilt Electron binaries, use npm. The preferred method is to install Electron as a development dependency in your app:

npm install electron --save-dev

For more installation options and troubleshooting tips, see installation. For info on how to manage Electron versions in your apps, see Electron versioning.

Platform support

Each Electron release provides binaries for macOS, Windows, and Linux.

  • macOS (Catalina and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11.
  • Windows (Windows 10 and up): Electron provides ia32 (x86), x64 (amd64), and arm64 binaries for Windows. Windows on ARM support was added in Electron 5.0.8. Support for Windows 7, 8 and 8.1 was removed in Electron 23, in line with Chromium's Windows deprecation policy.
  • Linux: The prebuilt binaries of Electron are built on Ubuntu 20.04. They have also been verified to work on:
    • Ubuntu 18.04 and newer
    • Fedora 32 and newer
    • Debian 10 and newer

Quick start & Electron Fiddle

Use Electron Fiddle to build, run, and package small Electron experiments, to see code examples for all of Electron's APIs, and to try out different versions of Electron. It's designed to make the start of your journey with Electron easier.

Alternatively, clone and run the electron/electron-quick-start repository to see a minimal Electron app in action:

git clone https://github.com/electron/electron-quick-start
cd electron-quick-start
npm install
npm start

Resources for learning Electron

Programmatic usage

Most people use Electron from the command line, but if you require electron inside your Node app (not your Electron app) it will return the file path to the binary. Use this to spawn Electron from Node scripts:

const electron = require('electron')
const proc = require('node:child_process')

// will print something similar to /Users/maf/.../Electron
console.log(electron)

// spawn Electron
const child = proc.spawn(electron)

Mirrors

See the Advanced Installation Instructions to learn how to use a custom mirror.

Documentation translations

We crowdsource translations for our documentation via Crowdin. We currently accept translations for Chinese (Simplified), French, German, Japanese, Portuguese, Russian, and Spanish.

Contributing

If you are interested in reporting/fixing issues and contributing directly to the code base, please see CONTRIBUTING.md for more information on what we're looking for and how to get started.

Community

Info on reporting bugs, getting help, finding third-party tools and sample apps, and more can be found on the Community page.

License

MIT

When using Electron logos, make sure to follow OpenJS Foundation Trademark Policy.

algolia-indices's People

Contributors

binarymuse avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar dsanders11 avatar electron-bot avatar vhashimotoo avatar zeke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

algolia-indices's Issues

Create an index for Electron glossary terms

Electron has a glossary at https://github.com/electron/electron/blob/master/docs/glossary.md

These terms are parsed by electron/i18n and exported by the electron-i18n module:

> require('electron-i18n').glossary['en-US']
{ ASAR: 
   { term: 'ASAR',
     description: 'ASAR stands for Atom Shell Archive Format. An asar archive is a simple tar-like format that concatenates files into a single file. Electron can read arbitrary files from it without unpacking the whole file.' },
  Brightray: 
   { term: 'Brightray',
     description: 'Brightray was a static library that made libchromiumcontent easier to use in applications. It is now deprecated and has been merged into Electron\'s codebase.' },
  CRT: 
   { term: 'CRT',
     description: 'The C Run-time Library (CRT) is the part of the C++ Standard Library that incorporates the ISO C99 standard library. The Visual C++ libraries that implement the CRT support native code development, and both mixed native and managed code, and pure managed code for .NET development.' },

It would be useful to display these glossary results when people search on electronjs.org

generate key-value searchable content

Via @MarshallOfSound in electron/electronjs.org-old#1248 (comment)

E.g. doc: to limit searches to just the API documentation or app: to search for apps πŸ€”

We can implement this by creating a string of metadata to attach to each record:

{
   name: 'foo',
  author: 'sue',
  meta: 'author:sue package:foo'
}

For docs:

{
  title: 'Updating Your App',
  slug: 'updating-your-app',
  meta: 'doc:updating-your-app doc:Updating Your App'
}

or

type:app

Ensure algolia indices do not contain old data

npm run upload updates the indices. If the objectID of a give record already exists, it will be overwritten. That's what we want. But if the objectID is changed for some reason, the old data will not be replaced and the index will contain 2 results for the same record. A few ways we can prevent this:

  • clear the whole index each time before uploading

or

  • keep track of objectIDs somehow and clean up after the uploader

API URLs often have wrong anchor

Currently there are many cases of the #.... part of the URL in the API not being correct. For properties it's including the API name at the start, for instance properties there's sometimes a shortened name used for the signature (in Session it uses sess.<instanceproperty>, some properties are marked readonly which ends up in the URL anchor, etc.

All of these might be able to be fixed in the current code, but it brings up the question of whether using electron-api.json as the data source is the best method. It's a layer removed from the docs themselves, and so it loses information needed to accurately reconstruct URLs. It seems like it will always be at risk of having incorrect URLs as a result. It's not the end of the world for the URLs not to jump to the correct part of the page in the docs, but it does limit the usefulness.

Possible more robust solutions could be to have electron/docs-parser put websiteUrl on properties, methods, events, etc, or for this code to parse the docs directly like electron/docs-parser so that it has all the information available for accurate URLs.

Upload indices using Algolia client

Currently the indices are uploaded manually in the browser. Let's create a script that updates the index automatically.

const myIndex = apiClient.initIndex('contacts');
myIndex
  .addObject({
    firstname: 'Jimmie',
    lastname: 'Barninger',
    company: 'California Paint',
  })
  .then(content => console.log(content))
  .catch(err => console.error(err));

Add an a tl;dr description for tutorials (guides) indices

Currently it's not possible to preview the short description of the page using search, not on dotorg nor Electron Discord. It's would be good to take the first paragraph which describe the content of page, and put thhem into tldr field.

Create standalone indices for each result type

In our call today with Algolia it was recommended that we create a separate index for each datatype. We can still search for all items across indices simultaneously using the technique outlined below.

Indices:

  • apis
  • tutorials
  • packages
  • repos
  • apps
const search = instantsearch({
  appId: APP_ID,
  apiKey: API_KEY,
  indexName: INDEX_NAME_1
  searchFunction: (helper) => {
    // Grab current query from main search instance
    var query = search.helper.state.query;

    // Set query for 2nd index instance
    another_search_instance.helper.setQuery(query);

    // Send query for 2nd instance
    another_search_instance.helper.search();

    // Send query for main search instance
    helper.search();
  }
});


var another_search_instance = instantsearch({
  appId: APP_ID,
  apiKey: API_KEY,
  indexName: INDEX_NAME_2
});

Create a custom objectID for each entry

https://www.algolia.com/doc/guides/indexing/structuring-your-data/#unique-identifier---objectid

If you don’t provide one, Algolia will generate one automatically. However, it will be easier to remove or update records if you have stored a unique identifier in the objectID attribute.

If your objects have unique IDs and you would like to use them to make future updates easier, you can specify the objectID in the records you push to Algolia. The value you provide for objectIDs can be an integer or a string.

Examples:

  • api-{{api.fullSignature}}
  • tutorial-{{tutorial.slug}}
  • package-{{package.name}}
  • repo-{{repo.fullName
  • app-{{app.slug}}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.