Proposal: Create NodeJS binding

I’d like to suggest to provide a NodeJS binding for Adobe products.

Everything should be at the ready already for implementation:

  • Adobe products are all written in NodeJS

  • On Windows a COM library already exists,
    I guess, there’s a native API available for Apple devices, too.

So, it may be simple (yet loads of work still) to create a NodeJS library binding based on COM on Windows for a start.

On Windows we can already use all sorts of development platforms, like PowerShell, Microsoft ATL, .NET etc, due to the COM type library for Adobe automation development. It would be great to have a platform independant API available, too, that could also be integrated into the “Scripts” menu item of Adobe products.

With such NodeJS binding we could create a NodeJS project, require the appropriate Adobe library and then use all the tools already are on the market for development for automating Adobe products (e.g. Visual Studio Code, Typescript, Webpack etc.). Then, we could simply deploy our scripts to some Adobe program folder, like, for example, C:\Users\{UserName}\AppData\Roaming\Adobe\Adobe Photoshop 2022\Presets\Scripts for running them from the “Scripts” menu item in Photoshop.

Unless I’m misunderstanding, I think this is the wrong category for this post, the Creative Cloud Libraries API isn’t a code library…

@kerrishotts Helpfully points out that your fist condition is incorrect:

Adobe products are all written in NodeJS

They aren’t:

They may have node environments, but very few of our apps are built solely on top of JS like this.

Thanks for your reply!

Ah, yes, @kerrishotts is absoutely right. I was, in quite an inaccurate way, trying to convey that NodeJS scripts may already be run from within Adobe products, like Photoshop, as these Adobe products already support NodeJS runtime.

My suggestion is targeting ExtendScript, which has been superseded by UXP, as I learned from this Adobe Community thread. These both could be superseded by a NodeJS binding. Then all tools would already be in place. No extra debugger was necessary, TypeScript can be used, etc.