Registry / web-framework / studio

studio

JSON →
library0.5.1jsnpmunverified

Studio.js is a lightweight, *abandoned* Node.js microservices framework (version 0.13.5, last updated March 2017) designed to facilitate reactive application development. Inspired by the actor model and reactive manifesto principles, it aimed to simplify asynchronous programming using Bluebird A+ promises and generators (before native `async/await` became widespread in Node.js). Key features included zero-configuration clusterization, real-time metrics, and a "let-it-crash" approach to error handling, all while abstracting away complex concepts into simple function-based services. The framework focused on creating decoupled, fault-tolerant, and scalable systems using a concise API. However, due to its lack of maintenance, it is not recommended for new projects and poses compatibility and security risks with modern Node.js environments, relying on outdated paradigms for concurrency and module loading. Its release cadence was sporadic, culminating in its abandonment prior to a 1.0 release.

npm install studio
INSTALL
IMPORT
SIG · STUDIO
S
studio
web-frameworkjavascriptv0.5.1
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

studio
const studio = require('studio');
import studio from 'studio';
This package is CommonJS-only. Direct ES module `import` statements will fail without a CJS wrapper or bundler and are not recommended due to abandonment.
studio.service
const studio = require('studio'); studio.service('myService', (args) => { /* ... */ });
import { service } from 'studio';
`service` is a method of the main `studio` object, not a top-level named export. It's used to define microservices.
studio.call
const studio = require('studio'); studio.call('myService', arg1, arg2).then(result => { /* ... */ });
import { call } from 'studio';
`call` is a method of the `studio` object, used to invoke a defined microservice and receive a Promise.

Demonstrates defining and invoking Studio.js services using `studio.service`, `studio.call`, and `studio.publish` for basic message processing.

const studio = require('studio'); // Define a simple service named 'sum' studio.service('sum', function(a, b) { console.log(`Service 'sum' received: ${a}, ${b}`); return Promise.resolve(a + b); // Studio uses Promises (often Bluebird) }); // Define another service named 'greet' using an async function syntax // Note: This relies on Node.js support for async/await, or transpilation, // as Studio's core pre-dates native async/await prevalence. studio.service('greet', async function(name) { return `Hello, ${name}! Welcome to Studio.js.`; }); // Call the 'sum' service studio.call('sum', 5, 3) .then(result => { console.log('Result of sum:', result); // Expected: 8 }) .catch(err => { console.error('Error calling sum:', err); }); // Call the 'greet' service studio.call('greet', 'Developer') .then(message => { console.log('Result of greet:', message); // Expected: Hello, Developer! Welcome to Studio.js. }) .catch(err => { console.error('Error calling greet:', err); }); // Example of publishing a message (fire-and-forget pattern) studio.service('logMessage', function(message) { console.log('[LOG SERVICE]:', message); }); studio.publish('logMessage', 'This is a broadcast message from the quickstart!'); console.log('\nStudio.js services initialized and called.\n(Check console for service outputs)');
Debug
Known issues
breakingThis package is *abandoned* and has not received updates since March 2017 (version 0.13.5). It is not compatible with modern Node.js development practices, ESM modules, or recent language features, and may contain unpatched vulnerabilities.
fix
Do not use for new projects. Migrate existing projects to actively maintained microservices frameworks. Continuing to use this library poses significant risks.
affects: >=0.1.0
gotchaStudio.js is a CommonJS-only package. Attempting to `import` it directly in an ES module environment will result in a `SyntaxError` or `ReferenceError: require is not defined`.
fix
Use `const studio = require('studio');` in CommonJS modules. For ES modules, a CJS-wrapper is technically possible but not recommended for an abandoned library.
affects: >=0.1.0
gotchaThe framework relies on Bluebird promises and JavaScript generators for asynchronous control flow, predating widespread native `async/await` support in Node.js. While `async`/`await` might work with transpilation, the core `studio` internal mechanisms are built around older promise patterns, which might lead to unexpected behavior or less efficient execution compared to modern async patterns.
fix
Understand that services might need to explicitly return Bluebird promises or be structured to fit the generator-based flow. Direct use of native `async/await` might require careful testing for compatibility.
affects: >=0.1.0
gotchaThe "zero-configuration clusterization" and RPC features implemented in Studio.js are built on older Node.js networking primitives and may not be compatible or secure with recent Node.js versions or cloud-native deployment patterns (e.g., Kubernetes, serverless).
fix
Avoid relying on Studio.js's built-in clustering for production environments. Use external, modern solutions for service discovery, load balancing, and inter-service communication.
affects: >=0.1.0
breakingDue to its abandoned status, Studio.js has not received security patches or updates for nearly a decade. Using it in production introduces significant security risks, including potential supply chain vulnerabilities from outdated dependencies or unpatched exploits in its own codebase.
fix
Immediately discontinue use in any security-critical environment. Audit existing deployments for vulnerabilities and plan migration to a maintained alternative.
affects: >=0.1.0
Errors
Common errors & fixes
ReferenceError: require is not defined
Attempting to use `require()` in an ES module file (e.g., a `.mjs` file or a file where `type: module` is set in `package.json`).
fix
Ensure your Node.js environment is configured for CommonJS modules, or rename your file to `.cjs`. Do not attempt to use direct `import` statements for this library.
TypeError: studio.service is not a function
The `studio` object was not correctly imported or initialized, often meaning `studio` is `undefined` or `null`.
fix
Ensure `const studio = require('studio');` is at the top of your CommonJS module and that the `studio` package is correctly installed (`npm install studio`).
Service call hangs indefinitely or does not resolve.
A service function defined with `studio.service` did not explicitly return a Promise, or the returned Promise was never resolved/rejected.
fix
Ensure all service functions return a `Promise.resolve()` or `Promise.reject()`, or are `async` functions that implicitly return a Promise, and handle all internal asynchronous operations appropriately to ensure the returned Promise eventually settles.
(node:xyz) DeprecationWarning: current URL stream is deprecated.
Studio.js uses older Node.js APIs or internal modules that have since been deprecated or removed in newer Node.js versions.
fix
These warnings are inherent to using an abandoned framework with modern Node.js. There is no direct fix within Studio.js itself. This serves as a strong indicator to migrate away from Studio.js.
Upgrade
Version history
0.5.1latest on npm
Audit
Dependencies
bluebirdrequiredUsed for its A+ Promises implementation, central to Studio.js's asynchronous control flow.
Agent activity
27 hits · last 30 days
node
22
OpenAI (training)
1
Resources
studio — npm install studio · libregistry