aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/run-async/index.js
diff options
context:
space:
mode:
authorNevena Bojovic <nenabojov@gmail.com>2022-03-01 20:05:50 +0100
committerNevena Bojovic <nenabojov@gmail.com>2022-03-01 20:05:50 +0100
commit291803c31f829fe0d32bb3207bc11def95a7408c (patch)
treec7d43107d79291b19d8c9eceefbe91c9f9a52acf /sandbox/testAppNevena/Front/node_modules/run-async/index.js
parent1fa69862057db4db53cfda5be9c24b4228ef63f7 (diff)
Urađena test aplikacija. Povezan front i back.
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/run-async/index.js')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/run-async/index.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/run-async/index.js b/sandbox/testAppNevena/Front/node_modules/run-async/index.js
new file mode 100644
index 00000000..c7a2e65d
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/run-async/index.js
@@ -0,0 +1,98 @@
+'use strict';
+
+function isPromise(obj) {
+ return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
+}
+
+/**
+ * Return a function that will run a function asynchronously or synchronously
+ *
+ * example:
+ * runAsync(wrappedFunction, callback)(...args);
+ *
+ * @param {Function} func Function to run
+ * @param {Function} cb Callback function passed the `func` returned value
+ * @return {Function(arguments)} Arguments to pass to `func`. This function will in turn
+ * return a Promise (Node >= 0.12) or call the callbacks.
+ */
+
+var runAsync = module.exports = function (func, cb) {
+ cb = cb || function () {};
+
+ return function () {
+
+ var args = arguments;
+
+ var promise = new Promise(function (resolve, reject) {
+ var resolved = false;
+ const wrappedResolve = function (value) {
+ if (resolved) {
+ console.warn('Run-async promise already resolved.')
+ }
+ resolved = true;
+ resolve(value);
+ }
+
+ var rejected = false;
+ const wrappedReject = function (value) {
+ if (rejected) {
+ console.warn('Run-async promise already rejected.')
+ }
+ rejected = true;
+ reject(value);
+ }
+
+ var usingCallback = false;
+ var callbackConflict = false;
+ var contextEnded = false;
+
+ var answer = func.apply({
+ async: function () {
+ if (contextEnded) {
+ console.warn('Run-async async() called outside a valid run-async context, callback will be ignored.');
+ return function() {};
+ }
+ if (callbackConflict) {
+ console.warn('Run-async wrapped function (async) returned a promise.\nCalls to async() callback can have unexpected results.');
+ }
+ usingCallback = true;
+ return function (err, value) {
+ if (err) {
+ wrappedReject(err);
+ } else {
+ wrappedResolve(value);
+ }
+ };
+ }
+ }, Array.prototype.slice.call(args));
+
+ if (usingCallback) {
+ if (isPromise(answer)) {
+ console.warn('Run-async wrapped function (sync) returned a promise but async() callback must be executed to resolve.');
+ }
+ } else {
+ if (isPromise(answer)) {
+ callbackConflict = true;
+ answer.then(wrappedResolve, wrappedReject);
+ } else {
+ wrappedResolve(answer);
+ }
+ }
+ contextEnded = true;
+ });
+
+ promise.then(cb.bind(null, null), cb);
+
+ return promise;
+ }
+};
+
+runAsync.cb = function (func, cb) {
+ return runAsync(function () {
+ var args = Array.prototype.slice.call(arguments);
+ if (args.length === func.length - 1) {
+ args.push(this.async());
+ }
+ return func.apply(this, args);
+ }, cb);
+};