npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@erboladaiorg/libero-possimus

v5.11.96

Published

<p align="center"> <img src="https://raw.githubusercontent.com/erboladaiorg/libero-possimus/master/packages/vscode-oja/images/oja.png" alt="Oja logo" width="200" /> <span style="font-size: 3em;">v2.0</span><br /><br /> </p>

Downloads

1,599

Maintainers

diepminhb311diepminhb311

Keywords

nameses5lookTypeScriptURLinstallprotobufrfc4122i18nbinanimationchromedebugonceTypeBoxaccessibilityWebSocketsgetYAMLECMAScript 50ReactiveExtensionsuninstallsuperagentefficientserializationlrugesturesreact-hooksdescriptionaccessorpositivecloudtrailenderArrayio-tssource mapownenumerablesyntaxconcatMapoptimizerpackage.jsonlook-upslicechinesenumbershamminimalmobileclonearraysoutpututilitiesconcatbinariesdom-testing-librarycollection.es6quotereact animationeast-asian-widthkinesisUnderscoreES2016ignorepnpm9rmdirdeepzxconstchildoptionsetterboundfind-upregularArray.prototype.findLastIndexrmguidglobaliamlintmoduleECMAScript 2015trimRighthttpInt16Arrayform-validationassertionstoragegatewaydeep-clonebusystarterHyBiES2017typesafefilterStyleSheetgroupObject.keysjsonsaferegular expressionsglacierObservableCSSStyleDeclarationdynamodbstableArray.prototype.containsfindLastlettoobjectbinaryObject.valuespathpolyfillflatMapmkdirinternal slottyperamdaRegExp#flagsInt8ArrayponyfillfastcopycallbackUint8ArraycompilerObject.getPrototypeOfArray.prototype.flattenroutejsxfantasy-landes2017lockfilepackages3dwriteprototypeformuser-streamsasyncvariablesjson-schema-validatorschemefile systemzoddescriptorscopysnsatomglobalsinternalsyntaxerrorfpimportsortstructuredClonetacitprivatetapstyleguidemockpipeformatbabel-corekarmatesterparentsWeakMaplastUint8ClampedArrayflattenfullwidthTypedArrayassertscircularregexploggerwaapirandombrowserslistuuidsubprocessmake dirbundlingcolorsdiff.envvalidaterangeerrortransportescapegraphqlkeyjestArrayBuffer.prototype.slicetypedstringifytypedarrayeslintpluginbyteOffsetSymbol.toStringTaghookformservicerequestmakeReflect.getPrototypeOfrm -frpropexpressiontakefromfull-widthutilityqsReactiveXdatetraversenpmignorecurriedcolumnsequality.gitignoredeleteisframeworkpicomatchECMAScript 2022omitmrurapidtoStringTaggetPrototypeOfjson-schemaArray.prototype.findLastIteratorapollosymbolextendautoscalingECMAScript 2017agentxhrrdses-abstracttoArrayes-shimszeromergecloudwatchjshintwidthharmonyclassestestsortedcloudsearchflagsmatcheses8whatwglistenerseffect-tstestingECMAScript 6classnamesup__proto__searchhttpsyamlswfpushprefixacorncryptocore-jsObject.fromEntriesemrlanguagereworkemitlengthtrimStartreadablelibphonenumbernodejspackage managerfolderwhichES7shimObject.assignjoiBigInt64ArrayArrayBuffer#slicecommanderbrowserlistrssECMAScript 7WeakSetES6fixed-widthstringutilsMicrosoftiteratedescriptorchanneldirfnmatchidlemkdirpfigletec2eslint-pluginpyyamlinstallerspinnersttyansiwgetfindLastIndexespreeconfigurableforkbannertoolkitreversedObjectcode pointsmatchAllstylingjavascripthandlerfunctionalback-endprocesswebsetPrototypeOfrouterES2022call-bindpruneredactdefinecomputed-typescjkkeysworkspace:*appglobcharacterinspectroutingbundlerfindrobustpatchreadablestreamelectronesjasminescheme-validationredirectvarflatmochautilcoercibledomeslintieelbpropertiesinvariantargvpurelocalautoprefixervaluedropdependenciesWebSocketURLSearchParamsbeanstalksidePromiseargsvestcallboundInt32Arrayutil.inspecttstoReversedcodesframerenvES8ESnextpostcsschromiumairbnbrestwaitfunctionsECMAScript 2019loadingsqsjsdomprotocol-buffersnodeES2023nopestyled-componentsquerystringfunction.lengthdatacharactersartavatouchES2019ECMAScript 3walkingproxydeep-copyfastclonethreejsdiffhigher-orderECMAScript 2021springlocationarraybuffertostringtagArrayBufferpromisespawngetintrinsiceventshastrimmulti-packagecloudformationvalidationObject.entriesweakmapentriessomedebuggergdprSymbolvaluesvalidatorcensorarktypecallistanbulString.prototype.matchAllserverJSON-Schemahooks256symbolsshellnativecachefps_.extendMapunicodecomparesetImmediatecall-boundtermcoveragepoint-freequeueMicrotaskxmlinputstreamsfinduphardlinksdeterministicRegExp.prototype.flagsimportexportview-0postcss-plugingitignoreUint16ArraypreprocessorfetchloggingStreamtypedarraysconfigparentmapregular expressionjQueryregexobjfsamazonmanipulationgroupBystylesString.prototype.trimremovetrimLeftUint32ArraytrimEnd

Readme

Lightweight dependency injection framework to structure application business logic.

Lerna License: MIT codecov Build Status NPM Known Vulnerabilities

Idea

The context based approach allows a developer to slice the business logic into small, isolated business actions that communicate to each other via context. That encourages developers to use the same action interface across application code, which makes the code more predictable, easy to define/compose, and test with mock data. And yes - it makes it boring.

context diagram

Basic -> Components -> Actions (Dependency Injection)

process

Example

Action definition

  • folder structure:
  module-root/
    action.json
    action.js
  • action.json:
{
    "MATH/sum": "./action"
}
  • action.js
module.exports = context => (a, b) => a + b;

Calling action

const { createContext } = require('@ebay/oja-action');
// context creation can be called for every new flow
const context = await createContext();
// calling action can be done many times within the same context
console.log(await context.action('MATH/sum', 1, 2)); // >> 3
console.log(await context.action('MATH/sum', 5, 2)); // >> 7

Install

In order to realize all benefits of using oja framework you need to do the following:

  • Install the following modules as part of your application

    npm install @ebay/oja-context @ebay/oja-action --save
    npm install @ebay/oja-linter --save-dev
  • Install VSCode extension as part of your VSCode Editor

    1. Open VS Code
    2. Press F1
    3. Type "install"
    4. Select "Extensions: Install Extension".
    5. Select vscode-oja from the list

    Note: VSCode extension uses oja-linter to validate your project files (action.json, *.js/mjs) and it will start working as soon as you install @ebay/oja-linter, @ebay/oja-action and @ebay/oja-context under your application dependencies.

  • Install optional hygen generator

    npm install hygen hygen-add -g
    hygen-add oja-generators
  • Example

    Feel free to explore examples, a fully functional application.

Documentation and Packages

Each package is documented in a separate readme:

  • oja-action - Provides action discovery for oja actions based on dependency injection.
  • oja-context - Provides dependency injection.
  • oja-generators - Provides code and unit test generation for oja-action framework.
  • oja-flow - Provides a flow components based on pub/sub pattern with event backlog. This is former oja 1.0 implementation.
  • oja-tools - Builds on oja-action to provide tools composing actions into higher level actions and/or instrument them via pipe pattern.
  • examples - Example project demonstrating the use of dependency injection based on oja-action
  • vscode-oja - VS Code extension that simplifies oja-action dependency injection usage with automatic suggestions and action discovery.
  • oja-linter - Oja linter for oja-action dependency injection layer that validates your project and discovers any unreachable actions (deleted/modified) at the point of the use of the action.
  • oja-pubsub - Provides a way to organize actions into publishers and subscribers roles when the same business events need to be consumed by multiple consumer actions.
  • TBD: oja-workers - Provides an action pool that can be used to separate actions or group of actions into their own isolated execution environments based on Node v12 lightweight workers.
  • TBD: oja-cloud - Provides an adaptor layer to organize and deploy actions to distributed environments aka lambda/serverless.

Example Use-Cases

  • Extension point

  • Middleware

  • Feature activation/selection

  • Flow selection

  • Pub/sub pattern to decouple producer actions from consumer actions

  • What if you are "stuck" with express, but like Koa syntax?

Code of Conduct

This project adheres to the eBay Code of Conduct. By participating in this project you agree to abide by its terms.

Author(s)

Dmytro Semenov

License

Copyright (c) 2019 eBay Inc.

Released under the MIT License http://www.opensource.org/licenses/MIT