/nodeautomation

macOS Apple event bridge for Node.js; 'master' is old, dead NodObjC-based branch; 'objc' is active WIP

Primary LanguageJavaScriptOtherNOASSERTION

# README

NodeAutomation is a Node.js module that allows 'AppleScriptable' applications 
to be controlled directly from JavaScript.

For example, to get the value of the first paragraph of the document named
'README' in TextEdit:

    app('TextEdit').documents.named('README').paragraphs[0].get()

This is equivalent to the AppleScript statement:

    tell application "TextEdit" to get paragraph 1 of document "README"


Or to create a new "Hello World!" document in TextEdit:

    app('TextEdit').make({new: k.document, 
                          withProperties: {text: "Hello World!"}})

______________________________________________________________________________

Dependencies:

- objc -- https://github.com/hhas/objc (development fork)

______________________________________________________________________________

Caution: This is an alpha release. There will be bugs and rough edges.

Documentation is preliminary, being a quick and dirty translation of the 
original appscript manual.

E&OE. No warranty given. Use at own risk. Etc.

(See also: http://appscript.sourceforge.net/status.html)


______________________________________________________________________________

Test:

    $ node
    > const {app} = require('nodeautomation')
    > const finder = app('Finder')
    > finder.home()
    app('Finder').startupDisk.folders.named('Users').folders.named('jsmith')

______________________________________________________________________________

Known issues:

Parsing an application's dictionary is very slow; for now, use static glues

`util.inspect.custom` needs work (`Proxy` wrappers currently appear in REPL)

Relies on several now-deprecated CoreServices/Cocoa functions/methods for
which macOS does not provide replacements.