Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

skypager-project-types-electron-app

skypager150MIT20.1.0

skypager electron app project type

skypager, skypager project type

readme

Skypager

Skypager is a high power, low code, automated software publishing platform. It aims to make it very easy to deploy react applications for the web and native platforms. I created it because I believe that everyone should be able to use and contribute to the improvement of growing libraries of software modules and components, and all of the automation capabilities they offer, not just developers. Anyone should be able to come up with ideas that combine existing capabilities in unique and novel ways, or in very common ways that might have their own unique twist. Everyone shouldn't need to hire a developer to do this, and at the same time everyone doesn't need to sign up for 50 different SaaS products, or spend their life savings on a bootcamp.

Skypager works as a result of collections of software modules that produce a metadata API with tons of information about the project and its code that is derived from the project files and anything else that can be linked to them using at least the names of those files, but almost certainly also the content itself. This metadata is made available to developers, and can be taken advantage of with re-usable plugins, or with a very syntax lite and intuitive set of ES6 Javascript commands that are perfect for people who want to learn to write code themselves.

Technology

Skypager uses ES6 and Babel, PostCSS, Remark (markdown), ESlint, and other language tools because of their rich plugin and extension eco-systems, and because they provide a wealth of metadata about the code, by giving easy access to web developers to the formerly arcane world of source code abstract syntax trees (ASTs).

Skypager makes all of this data available to a Redux data store, which can be connected to actual React applications, in addition to your own custom React applications that you deliver to anyone who wants to express some sort of desire for how the application should behave. Deliver it over the web, deliver it in an email form, deliver it as a desktop application.

It is up to you.

Skypager provides project creators with a system for declaring the meaning and intention behind the folder names they use:

import Skypager, { configure, describe } from 'skypager'

configure({
  source: 'src',
  output: 'dist',
  presets: ['react-boilerplate'],
})

// a lot of this will just be inferred if you leave it off
describe.source({
  components: ':groupName/:name/index.js',
  routes: ':groupName/:name/route.js',
})

describe
  .components({
    // Skypager will search the portfolio for editors/ComponentWorkbench
    editor: {
      type: 'ComponentWorkbench',
      options: {
        savesTo: 'github'
      }
    }
  })

This gives developers the ability to develop user interfaces that they can hand off to somebody else, and that interface can accept the user's input and store it in a way that can be used by the software project. The simplest example would be using a color coder and SVG upload form to get CSS color variables and an icon font from a designer, but the possibilities are endless. A content management system for your client, that gets stored in your source code, and which you can edit by hand in your IDE or with a custom script before deploying to the web or app store.

Why did you make it

What if we could relive the glorious period of technology that emerged when we all abandoned our web applications based on custom portfolios and SQL Database Backed CGI Apps, for the convention and configuration approach popularized by Ruby on Rails? Where might we look for another transformation like that occur?

It is unlikely that it will occur because of a Portfolio or a language, or a combination of the two. In my opinion, the Ruby on Rails revolution was less about Ruby and Rails than it was about the power that comes from the single act of taking something from the real world, giving it a name, and saving it in a file in a designated folder. Think of what happens to the possibilities once this crucial piece of information is decided?

The next revolution in software productivity needs to occur -- and naturally will occur -- it will do so not only in the form of clever patterns to use inside of our software project folder, but in the clever patterns that we apply across the dozens of other project folders we are connected to, especially the folders of people who are not developers at all.

Skypager enables a model of collaboration where anyone can contribute directly to a software project, using the tools they love and are trained to use, without repeating themselves, and without even thinking about it thanks to webhooks and other events we can easily detect. These contributions can easily be converted, streamed, transformed, combined, whatever the developer wants to or needs to do.

But not only can anyone contribute, anyone can inspect, query, or generate any type of file or visualization they want using everything that can be known or calculated by analyzing the names in a software project and following the relationships to other files and systems really, anything that can have a URL.

The goal is to take these capabilities, and build the best possible custom user interfaces for working with them.

What is it?

Skypager provides a powerful automation layer for anyone with a growing collection of software projects that have some core web and mobile user experience. The more projects you develop, and the more obvious the patterns are which naturally emerge in your work, or in the process you use, the more Skypager amplifies what you can be capable of.

In Skypager you have a portfolio that consists of Projects -- real world, prime time Projects. Baller projects. These are, really, whatever your beautiful creative imagination can come up with. And you can do with them, all the things you do. These possibilities are beyond my comprehension. You are the domain expert, your audience, your people. I want you to reach them, and I want it not to suck for you, I want it not to suck for your user, and I especially want it to suck less for me if I'm in the process of building, maintaining, debugging, and supporting the software.

Skypager is intended to help domain experts benefit from the same techniques developers user in our work. Version control, continuous delivery, automated testing, and especially convention over configuration, or inversion of control. Developers use these ideas every day, but very rarely are these ideas broadened in their applications or scope, beyond the source code itself.

What stops organizations from using the same convention over configuration assumptions in the organization of all of their work? In my experience, I believe it relates to the fact that developers are, for the time being both Gatekeepers and Enablers of every amazing power the internet gives to people.

The Skypager Portfolio approach to Software Projects

When I say projects do you think of full websites and webapps? complete products with multiple apps on different platforms, front end and back end? do you think of packages or modules? themes, UI Components, API Integrations, Messaging and Content Blocks, Sign-up Forms?

Skypager uses the powerful webpack module bundler to give teams the highest quality build tooling and development environment, and takes advantage of webpack's unlimited support for loading any kind of file you're accustomed to seeing as if it were javascript. Skypager integrates with services like Github, Dropbox, and Google Drive, and turns them into streams of events and data that can be used to power other applications, or produce other kinds of content, hopefully you get the idea.

Skypager can work for you as a single developer, or it can work for you as a large team of people, even with more non developers.

Getting Started

changelog

CHANGELOG

Releases

1.4.0

  • [@skypager/runtime] prop-types support & getChildContext

    • Helper classes can declare optionTypes, providerTypes, contextTypes using the prop-types library
    • Helper instances can checkTypes('options|context|provider') and get a report back if the helpers options|context|provider object matches the expected shape
    • Helpers can define a getChildContext function to dynamically set the helpers context
    • We can enforce validation of the types at runtime with a strictMode flag enabled
  • [@skypager/runtime] low level api improvements

    • you can now await runtime.nextStateChange() or runtime.nextStateChange("someProperty")
    • Helper classes can define static initialState functions
    • Helper initialization lifecycle and statefulness happens in a better order
  • [@skypager/runtime] helper state improvements, convenience methods

    • helper instances get setState, replaceState, which has the same semantics as runtime's, (and React)
    • await runtime.nextEvent(event) will return a promise which resolves when the next event fires
    • await runtime.nextStateChange(attributeName?) will return a promise which resolves when the next state change occurs. pass an optional attribute name to listen for only changes to one key
    • await runtime.untilStateMatches(validatorObjectOrFunction) will return a promise which resolves when the validator matches current state
    • all of the above also work on helper instances

1.3.1

  • [@skypager/features-file-db] added a feature for using nedb
  • [@skypager/web] assetLoaders feature will use a hack when dynamically loading babel scripts with babel-standalone
  • [@skypager/web, @skypager-runtime] fixed module exports to use es6, web builds use webpack libraryExport config
  • [@skypager/react] added useRuntimeState and useClientRequest hooks

1.2.2

  • [@skypager/google] ships a skypager google command that provides a tree of subcommands for working with google drive and calendar apis
  • [@skypager/google] can now manage oauth2 clients, and automates cli authorization of behalf of real google users.

1.2.1

  • [@skypager/cli] all commands support help and --help flags now
  • [@skypager/google] extracted all shared google drive code from the helpers-sheet and helpers-google-doc modules into a single module, making it a shared dependency.
  • [@skypager/helpers-sheet] use @skypager/google
  • [@skypger/helpers-google-doc] use @skypager/google

1.1.1

  • [@skypager/helpers-document] major upgrade to the module, including API docs
  • Added a bunch of projects in the examples directory

1.0.0

  • All modules ship umd, commonjs, and es module formats
  • [@skypager/webpack] uses webpack 4
  • [@skypagers/helpers-sheet] full support for adding rows / updating cells
  • Monorepo -> Google Sheet Sync added example for syncing package.json content in the monorepo w/ a google sheet
  • Runnable MDX Example added an example for runnable mdx documents

0.4.12

  • [@skypager/node] - adds socket feature for cross platorm ipc between in node
  • [@skypager/runtime] - fixed bug with qbus event emitter once not working properly
  • [@skypager/features/package-manager] add scripts and methods for downloading from npm, implement pacote for fetching manifests and tarballs
  • [@skypager/features-file-manager] add cacache wrapper for interity based file system caching
  • [@skypager/helpers-mdx] - utilities for parsing mdx file with ast and structure maps
  • [@skypager/helpers-google-doc] - utility for parsing google documents and working with their tree

0.3.5

  • [@skypager/helpers-sheet] add support for writing to a google sheet

0.3.3

  • [@skypager/features-redis] added a redis feature

0.2.9

  • [@skypager/runtime] you can now call runtime.use(FeatureClass) as a way of registering and enabling a feature

0.2.8

  • [@skypager/features-browser-vm] added a new feature for running a vm inside a JSDOM context
  • [@skypager/features-file-manager] added some new methods and getters on package manager
    • packageManager.remoteVersionMap returns remote package version by name
    • packageManager.remoteEntries returns remote packages
    • packageManager.remoteData returns remote packages
    • usesYarnWorkspaces, usesLerna, yarnWorkspacePatterns, lernaPackagePatterns, hasYarnLock, hasNpmPackageLock

0.2.2

  • [@skypager/features-file-manager] added hashTree function which gives a reliable checksum of the project file contents

0.2.0

  • [@skypager/runtime]
    • (enhancement) you can now export a class from your helper provider modules, when the runtime creates your helper it will create an instance of this class
    • (breaking change) removed automatic lodash mixin application on instances of Runtime and Helper classes.
  • [@skypager/node]
    • (enhancement) refactored the features to be class based
  • [@skypager/devtools]
    • (enhancement) added a run-all script which can run package tasks in parallel

0.1.20

  • [@skypager/features-file-manager]
    • (enhancement) added exportGraph() method to packageManager and moduleManager. This represents the packages as nodes and edges, where the edges represent the dependencies between packages (dev dependencies, optional, etc). This is really useful for visualizing the relationships between all of the packages. Once I'm able to get the dependency between file modules mapped out, i'll do the same for those.

0.1.15

  • [@skypager/runtime]
    • (bugfix) the node version of @skypager/runtime did not use the babel polyfill

0.1.12

  • [@skypager/cli]
    • (enhancement) the skypager CLI will attempt to search all @skypager packages which have a scripts folder, as well as any other workspace paths (for @scoped projects) which have a scripts folder, when trying to run a command that isn't provided by @skypager/devtools, @skypager/cli, or @skypager/webpack

0.1.11

  • @skypager/helpers-server
    • (enhancement) - Added endpoints registry in the server helper. The endpoints registry allows us to register express route adding functions / middleware, and then load them by name when creating a server.
  • @skypager/webpack
    • (enhancement) - Extracted mdx parser function from the webpack loader, so that it can be used in a standalone way by other libraries
  • [@skypager/runtime]
    • (bugfix) - Fixed bug in vm feature's createScript method

0.1.10

  • Fixed a bug in the @skypager/runtime web build where it was not working because of webpack's global and process stubs.
  • Added a browser based test suite for the @skypager/runtime and @skypager/web builds

Published Packages

  • @skypager/cli: 0.1.9 => 0.1.10
  • @skypager/devtools: 0.1.9 => 0.1.10
  • @skypager/webpack: 0.1.8 => 0.1.10
  • @skypager/sheets-server: 0.1.9 => 0.1.10
  • @skypager/features-file-manager: 0.1.2 => 0.1.10
  • @skypager/helpers-repl: 0.1.9 => 0.1.10
  • @skypager/helpers-sheet: 0.1.7 => 0.1.10
  • @skypager/runtime: 0.1.1 => 0.1.10
  • @skypager/node: 0.1.9 => 0.1.10
  • @skypager/web: 0.1.9 => 0.1.10

0.1.9

  • @skypager/node
  • @skypager/web - added babel feature to load babel standalone in via cdn tag at runtime
  • @skypager/cli
  • @skypager/webpack
  • @skypager/devtools