Skip to content

Commit cdb37e9

Browse files
committed
0.0.7
1 parent b18662c commit cdb37e9

File tree

4 files changed

+210
-2
lines changed

4 files changed

+210
-2
lines changed

.npmrc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
registry=https://registry.npmjs.org/

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Servable is an implementation of a "simple" observable
44

5-
###To install run:
5+
## To install run:
66

77
```
88
npm i servable --save

dist/index.js

+207
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
(function webpackUniversalModuleDefinition(root, factory) {
2+
if(typeof exports === 'object' && typeof module === 'object')
3+
module.exports = factory();
4+
else if(typeof define === 'function' && define.amd)
5+
define("Servable", [], factory);
6+
else if(typeof exports === 'object')
7+
exports["Servable"] = factory();
8+
else
9+
root["Servable"] = factory();
10+
})(this, function() {
11+
return /******/ (function(modules) { // webpackBootstrap
12+
/******/ // The module cache
13+
/******/ var installedModules = {};
14+
/******/
15+
/******/ // The require function
16+
/******/ function __webpack_require__(moduleId) {
17+
/******/
18+
/******/ // Check if module is in cache
19+
/******/ if(installedModules[moduleId]) {
20+
/******/ return installedModules[moduleId].exports;
21+
/******/ }
22+
/******/ // Create a new module (and put it into the cache)
23+
/******/ var module = installedModules[moduleId] = {
24+
/******/ i: moduleId,
25+
/******/ l: false,
26+
/******/ exports: {}
27+
/******/ };
28+
/******/
29+
/******/ // Execute the module function
30+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31+
/******/
32+
/******/ // Flag the module as loaded
33+
/******/ module.l = true;
34+
/******/
35+
/******/ // Return the exports of the module
36+
/******/ return module.exports;
37+
/******/ }
38+
/******/
39+
/******/
40+
/******/ // expose the modules object (__webpack_modules__)
41+
/******/ __webpack_require__.m = modules;
42+
/******/
43+
/******/ // expose the module cache
44+
/******/ __webpack_require__.c = installedModules;
45+
/******/
46+
/******/ // identity function for calling harmony imports with the correct context
47+
/******/ __webpack_require__.i = function(value) { return value; };
48+
/******/
49+
/******/ // define getter function for harmony exports
50+
/******/ __webpack_require__.d = function(exports, name, getter) {
51+
/******/ if(!__webpack_require__.o(exports, name)) {
52+
/******/ Object.defineProperty(exports, name, {
53+
/******/ configurable: false,
54+
/******/ enumerable: true,
55+
/******/ get: getter
56+
/******/ });
57+
/******/ }
58+
/******/ };
59+
/******/
60+
/******/ // getDefaultExport function for compatibility with non-harmony modules
61+
/******/ __webpack_require__.n = function(module) {
62+
/******/ var getter = module && module.__esModule ?
63+
/******/ function getDefault() { return module['default']; } :
64+
/******/ function getModuleExports() { return module; };
65+
/******/ __webpack_require__.d(getter, 'a', getter);
66+
/******/ return getter;
67+
/******/ };
68+
/******/
69+
/******/ // Object.prototype.hasOwnProperty.call
70+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
71+
/******/
72+
/******/ // __webpack_public_path__
73+
/******/ __webpack_require__.p = "";
74+
/******/
75+
/******/ // Load entry module and return exports
76+
/******/ return __webpack_require__(__webpack_require__.s = 1);
77+
/******/ })
78+
/************************************************************************/
79+
/******/ ([
80+
/* 0 */
81+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
82+
83+
"use strict";
84+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscription; });
85+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Observable; });
86+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
87+
88+
var noop = function noop() {};
89+
90+
var Subscription = function () {
91+
function Subscription(callback, observer) {
92+
_classCallCheck(this, Subscription);
93+
94+
this.isComplete = false;
95+
this.dispose = noop;
96+
97+
this.observer = this.wrapObserver(observer);
98+
99+
this.callWithObserver(callback);
100+
}
101+
102+
Subscription.prototype.unsubscribe = function unsubscribe() {
103+
this.dispose();
104+
105+
this.isComplete = true;
106+
this.observer.next = noop;
107+
this.observer.error = noop;
108+
this.observer.complete = noop;
109+
};
110+
111+
Subscription.prototype.wrapObserver = function wrapObserver(observer) {
112+
var _this = this;
113+
114+
var _observer$next = observer.next,
115+
next = _observer$next === undefined ? noop : _observer$next,
116+
_observer$error = observer.error,
117+
error = _observer$error === undefined ? noop : _observer$error,
118+
_observer$complete = observer.complete,
119+
complete = _observer$complete === undefined ? noop : _observer$complete;
120+
121+
// assumes that an object was passed as first value to subscription
122+
123+
if (next.next || next.error || next.complete) {
124+
return this.wrapObserver(next);
125+
}
126+
127+
var returnObserver = {};
128+
129+
returnObserver.next = function () {
130+
if (!_this.isComplete) {
131+
next.apply(undefined, arguments);
132+
} else {
133+
// overwrite the next so it cannot run again if complete
134+
next = noop;
135+
}
136+
};
137+
138+
returnObserver.error = function () {
139+
if (!_this.isComplete) {
140+
error.apply(undefined, arguments);
141+
} else {
142+
// overwrite the error so it cannot run again if complete
143+
error = noop;
144+
}
145+
};
146+
147+
returnObserver.complete = function () {
148+
if (!_this.isComplete) {
149+
_this.unsubscribe();
150+
complete();
151+
}
152+
153+
// overwrite the complete so it doesnt run again
154+
complete = noop;
155+
_this.isComplete = true;
156+
};
157+
158+
return returnObserver;
159+
};
160+
161+
Subscription.prototype.callWithObserver = function callWithObserver(callback) {
162+
try {
163+
var response = callback(this.observer);
164+
165+
if (typeof response === 'function') {
166+
this.dispose = response;
167+
}
168+
} catch (error) {
169+
this.observer.error(error);
170+
}
171+
};
172+
173+
return Subscription;
174+
}();
175+
176+
var Observable = function () {
177+
function Observable(observerCallback) {
178+
_classCallCheck(this, Observable);
179+
180+
this.observerCallback = observerCallback;
181+
}
182+
183+
Observable.prototype.subscribe = function subscribe() {
184+
var next = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;
185+
var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
186+
var complete = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : noop;
187+
188+
return new Subscription(this.observerCallback, { next: next, error: error, complete: complete });
189+
};
190+
191+
return Observable;
192+
}();
193+
194+
/***/ }),
195+
/* 1 */
196+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
197+
198+
"use strict";
199+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
200+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__servable__ = __webpack_require__(0);
201+
/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return __WEBPACK_IMPORTED_MODULE_0__servable__["a"]; });
202+
/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return __WEBPACK_IMPORTED_MODULE_0__servable__["b"]; });
203+
204+
205+
/***/ })
206+
/******/ ]);
207+
});

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "servable",
3-
"version": "0.0.6",
3+
"version": "0.0.7",
44
"description": "From scratch observable",
55
"main": "dist/index.js",
66
"scripts": {

0 commit comments

Comments
 (0)