@wixc3/engine-core

v3.1.6
Run-time abstractions for creating multi-environment web applications while practicing feature-oriented software development.

@wixc3/engine-core

Run-time abstractions for creating multi-environment web applications while practicing feature-oriented software development.

Approach

  • An application is a set of one or more features.
  • A feature contains all the integration code required to get a subset of product functionality implemented.
  • Features may depend on other features, consume their exposed services and register into their slots.
  • A service is a set of functions exposed as an API of a feature.
  • A slot is a registry of any type, which allows pluggability via registration.
  • Environments (browser/webworker/iframe) are defined by features, and have semantic names (main/processing/preview).
  • Each slot and service is available in a specific environment.
  • Services can be marked as accessible cross-environments, which exposes them as async APIs in those environment.

Feature

A feature is combined of several files:

  • <feature-name>.feature.ts - feature definition file.
  • <feature-name>.<some-env>.env.ts - some-env specific setup code.
  • <feature-name>.<another-env>.env.ts - another-env specific setup code.

Feature definition file

Feature definition is created in a <feature-name>.feature.ts file, and is exposed as the default export.

For example:

/* my-feature.feature.ts */

import { Feature } from '@wixc3/engine-core';

/* defining a new feature */
export default new Feature({
  id: 'myFeature' /* unique id for the feature */,

  dependencies: [
    /* other features the feature depends on */
  ],

  api: {
    /* slots, services, and configurations of the feature */
  },
});
npm i @wixc3/[email protected]

Metadata

Downloads

Maintainers

adiramsalem, aleksanderd, alex5il, alexanderg-wix, alexeye, alexswix, alf-er, alisey, alonbl, amir-arad, amirgabay, amiryonatan, anatfenn, andriuss, annielr, archram, ariell, asafr, avi.vahl, avivr, baraki, blue16, bohdan-lytvynov, bolshchikov, borisk, chenroth-wix, chuvpylov.m, cijoe, danbars, danielagr, danieleww, deduck, denysdovhan, dimarysk, dleshem, dmfilipenko, domshlakn, elip, eransh, ethanshar, felixmosh, galil-team, giladartzi, gran33, guybe, guyca, guyw, hadarvid, harelig, henrykuzmick, iamromanyarinovsky, idok, idoros, igalh, ikachura, inbaltish, interal, ipanasenko, itaystwix, jomarton, jonathana.wix, jurasm, karolisb, kelyar, kranux, leerons, leonidl, liorcode, liorer, liorur, listochkin, maksimpe, maksym_wix, mantasm, mariar, marijuss, maxlk, moshfeu, mykhailom, nachshons, nadavwix, nayish, netanelgilad, nettaru, nira-wix, oleksii-uxd, olshen, omerb, omerbu, omerk, oripi, papamisty, pistolpete_, quitten, ranyitzhaki, rashellek, roeia, romabelka, ronnyr, rotemmiz, roysom, sagiiwix, sapirc, schlez, sdoomz, selama, sestri4kina, shacharg, shahata, shanik, silyevsk, simonaspa, sirmagis, smangam, t0mas, talga, talh, tomerlichtash, tomermes, tompereswix, tomrav, tyv, tzelon, viattik, vkobeliatskyi, vladik7244, vladislavz, wix-ambassador, wix-ci, wixnpm, wtfil, xyrue, yairhaimo, yanivefraim, ydaniv, yershalom, yevhenk, yoav, yoavamit, zeevg, zombiefruit, zsgalusz,