![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Turn an asynchronous JavaScript api into an asynchronous chainable JavaScript api.
Turn an asynchronous JavaScript api into an asynchronous chainable JavaScript api.
function MyApi() {}
MyApi.prototype.method1 = function(cb) {cb()}
MyApi.prototype.method2 = function(cb) {cb()}
var chainit = require('chainit');
var MyChainApi = chainit(MyApi);
var obj = new MyChainApi();
obj
.method1() // 1st call
.method2() // 2nd call
.method1(function(/* args */) { // 3rd call
this.method1(); // 4th call
})
.method2(); // 5th call
Adding and overriding methods works at both prototype level and instance level.
You must use chainit.add(chain, methodName, method)
,
you can't do direct assignation (chain.methodName = method
) because
object.observe
is not yet ready.
function MyApi() {}
MyApi.prototype.method1 = function(cb) {cb()}
MyApi.prototype.method2 = function(cb) {cb()}
var chainit = require('chainit');
var MyChainApi = chainit(MyApi);
var obj = new MyChainApi();
// override instance method
chainit.add(obj, 'method1', function(cb) {
cb()
});
obj
.method1() // calls the newly added method1
.method2();
// revert original method
chainit.add(MyChainApi, 'method1', MyApi.prototype.method1);
// override prototype method
chainit.add(MyChainApi, 'method1', function(cb) {
cb()
});
var obj2 = new MyChainApi();
obj2.method1(); // calls the newly chained prototype `method1`
Features:
npm install -g mocha && mocha
, saucelabs: npm test
See tests.
npm test
See examples.
There is no easy way to mix sync/async chainable apis because there is no way to differenciate sync/async calls.
obj
.asyncMethod()
.syncMethod()
We cannot know that syncMethod is synchronous and that we do not need to wait for a callback to be called to continue.
Either your api is fully asynchronous and every method takes a callback.
Either your api is fully synchronous.
If you want synchronous support, make a pull request
adding chainit.sync(Constructor)
.
This module is using jessetane/queue.
A chainable api is queueing methods and reordering calls, so we use a queue.
This module was built to replace the chainable api from webdriverjs.
FAQs
Turn an asynchronous JavaScript api into an asynchronous chainable JavaScript api.
We found that chainit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.