Skip to content

Commit

Permalink
Merge pull request #55 from thefill/feature/UpdateDocumentation
Browse files Browse the repository at this point in the history
Changes to docs
  • Loading branch information
thefill committed Jun 2, 2019
2 parents bbfce5b + 7c27596 commit 1824662
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 23 deletions.
21 changes: 10 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Jetli allows you to inject consistently classes, functions and primitives across

Injecting instances of classes is trivial with jetli - just use 'get' method without any additional options.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -78,7 +78,7 @@ Functions, already instantiated objects or primitive values like array, string a

Registration is provided via 'set' method and requires you to provide string token that identifies the injectable element.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -101,7 +101,7 @@ fighter2.punch();</pre>

As explained in previous example primitives can be easily used across your applications with associated string id provided during registration.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

const someNumber = 123;
const someString = 'punch';
Expand All @@ -126,7 +126,7 @@ To use Jetli to full extend implement services that expose init method. This met

If you already initialised injectable and dont want jetli to call "init" make sure to set "initialise" property to true;

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

jetli.set('someNumber', 123);

Expand Down Expand Up @@ -157,7 +157,7 @@ fighter2.punch();</pre>

Have enough of overhead when all those services initialises at once? Register them and request initialisation only when injection is requested.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -180,7 +180,7 @@ fighter2.punch();</pre>

### Pass arguments to services constructor

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(id){
Expand All @@ -204,7 +204,7 @@ fighter2.punch();</pre>

Jetli uses battle-tested method to fight 'cyclic dependencies' - optional initialisation callback. Injector searches for optional "init" method to call it and as an argument to provide instance of injector itself. This method provide safe moment to inject all dependencies required by service - you can be sure that all dependencies will be already initialised.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class ServiceA {
constructor(){
Expand Down Expand Up @@ -247,14 +247,14 @@ class ServiceB {
const serviceA = jetli.get(ServiceA);
const serviceB = jetli.get(ServiceB);

serviceA.getId();
serviceB.getId();</pre>
console.log(serviceA.getId());
console.log(serviceB.getId());</pre>

### Mock services for test purposes

Its rather trivial to mock module dependencies if you have total control whats injected where, right? ith Jetli you can reset any previously registered/injected dependencies and introduce your own mocks / stubs.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -271,7 +271,6 @@ class AttackMock {
console.log(`Attack mocked!`);
}
punch(){
super.punch();
console.log(`Mocked attack execution!`);
}
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jetli",
"version": "2.0.0",
"version": "2.0.1",
"description": "Simple, lightweight dependency injector - supports factories, classes and primitives.",
"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",
Expand Down
10 changes: 10 additions & 0 deletions src/docs/api-docs.script.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@

initArchivalDocsList();
initRunkit();
initGithubRibbon();

function initGithubRibbon() {
const ribbonContent = '<svg width="80" height="80" viewBox="0 0 250 250"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg>';
const node = document.createElement('a');
node.setAttribute('href', 'https://github.com/thefill/jetli');
node.className = 'github-corner';
node.innerHTML = ribbonContent;
document.body.prepend(node);
}

// Convert code examples to the Runkit containers
function initRunkit() {
Expand Down
39 changes: 39 additions & 0 deletions src/docs/api-docs.style.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,43 @@
}
}

.github-corner svg {
fill:#64CEAA;
color:#fff;
position: absolute;
top: 40px;
border: 0;
right: 0;
}

.tsd-panel.tsd-typography {
border-radius: 0 30px 0 0;
}

.github-corner:hover .octo-arm {
animation: octocat-wave 560ms ease-in-out
}

@keyframes octocat-wave {
0%, 100% {
transform: rotate(0)
}
20%, 60% {
transform: rotate(-25deg)
}
40%, 80% {
transform: rotate(10deg)
}
}

@media (max-width: 500px) {
.github-corner:hover .octo-arm {
animation: none
}

.github-corner .octo-arm {
animation: octocat-wave 560ms ease-in-out
}
}

</style>
21 changes: 10 additions & 11 deletions src/docs/readme.body.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Jetli allows you to inject consistently classes, functions and primitives across

Injecting instances of classes is trivial with jetli - just use 'get' method without any additional options.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -60,7 +60,7 @@ Functions, already instantiated objects or primitive values like array, string a

Registration is provided via 'set' method and requires you to provide string token that identifies the injectable element.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -83,7 +83,7 @@ fighter2.punch();</pre>

As explained in previous example primitives can be easily used across your applications with associated string id provided during registration.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

const someNumber = 123;
const someString = 'punch';
Expand All @@ -108,7 +108,7 @@ To use Jetli to full extend implement services that expose init method. This met

If you already initialised injectable and dont want jetli to call "init" make sure to set "initialise" property to true;

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

jetli.set('someNumber', 123);

Expand Down Expand Up @@ -139,7 +139,7 @@ fighter2.punch();</pre>

Have enough of overhead when all those services initialises at once? Register them and request initialisation only when injection is requested.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -162,7 +162,7 @@ fighter2.punch();</pre>

### Pass arguments to services constructor

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(id){
Expand All @@ -186,7 +186,7 @@ fighter2.punch();</pre>

Jetli uses battle-tested method to fight 'cyclic dependencies' - optional initialisation callback. Injector searches for optional "init" method to call it and as an argument to provide instance of injector itself. This method provide safe moment to inject all dependencies required by service - you can be sure that all dependencies will be already initialised.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class ServiceA {
constructor(){
Expand Down Expand Up @@ -229,14 +229,14 @@ class ServiceB {
const serviceA = jetli.get(ServiceA);
const serviceB = jetli.get(ServiceB);

serviceA.getId();
serviceB.getId();</pre>
console.log(serviceA.getId());
console.log(serviceB.getId());</pre>

### Mock services for test purposes

Its rather trivial to mock module dependencies if you have total control whats injected where, right? ith Jetli you can reset any previously registered/injected dependencies and introduce your own mocks / stubs.

<pre class="runkit-source">const jetli = require('jetli@2.0.0').jetli;
<pre class="runkit-source">const jetli = require('jetli@2.0.1').jetli;

class Attack {
constructor(){
Expand All @@ -253,7 +253,6 @@ class AttackMock {
console.log(`Attack mocked!`);
}
punch(){
super.punch();
console.log(`Mocked attack execution!`);
}
}
Expand Down

0 comments on commit 1824662

Please sign in to comment.