Skip to content

Commit b0bfb30

Browse files
committed
code sanitized
1 parent 8a6a386 commit b0bfb30

File tree

14 files changed

+2648
-4
lines changed

14 files changed

+2648
-4
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ test/report.json/*
1010
tap-html.html
1111
*html-report
1212
coverage
13-
.env
13+
.env
14+
.dccache

.talismanrc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
fileignoreconfig:
2-
- filename: test/automation-script.js
3-
checksum: dd31ccc9f78dbcfb48eafa5d7ab80d480776c70bc36d6a10eb86229fb79443af
1+
threshold: medium

src/core/cache-provider/index.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import localstorage from './localstorage';
2+
var CacheProvider = {};
3+
4+
5+
CacheProvider.providers = function(provider) {
6+
if (provider) {
7+
return localstorage;
8+
} else {
9+
console.error("Kindly provide valid provider.");
10+
}
11+
};
12+
13+
CacheProvider.policies = {
14+
IGNORE_CACHE: -1,
15+
ONLY_NETWORK: 0,
16+
CACHE_ELSE_NETWORK: 1,
17+
NETWORK_ELSE_CACHE: 2,
18+
CACHE_THEN_NETWORK: 3
19+
};
20+
21+
export default CacheProvider;
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import * as cache from './../cache';
2+
3+
let localStorage = {};
4+
5+
localStorage.get = function (key, callback) {
6+
try {
7+
callback(null, cache.get(key));
8+
} catch(e) {
9+
callback(e);
10+
}
11+
};
12+
13+
localStorage.set = function (key, value, callback) {
14+
try {
15+
if(key && value) cache.set(key, value);
16+
callback();
17+
} catch(e) {
18+
callback(e);
19+
}
20+
};
21+
22+
function clearValuesForKey(keyArray, append) {
23+
if(!append && keyArray && keyArray.length) keyArray.push('');
24+
let _key,
25+
keys = cache.getKeys(),
26+
storage = cache.getStorage();
27+
if(!keyArray || !keyArray.length) {
28+
for(let i = 0, _i = keys.length; i < _i; i++) {
29+
delete storage[keys[i]];
30+
}
31+
} else {
32+
_key = keyArray.join('.');
33+
for(let i = 0, _i = keys.length; i < _i; i++) {
34+
if(keys[i] && keys[i].indexOf(_key) === 0) delete storage[keys[i]];
35+
}
36+
}
37+
}
38+
39+
localStorage.clearByContentType = function () {
40+
try {
41+
if(arguments.length === 2 || arguments.length === 3) {
42+
let args = Array.prototype.slice.call(arguments);
43+
let callback = args.splice(-1, 1).pop();
44+
let valueArray = [];
45+
valueArray.push.apply(valueArray, args);
46+
clearValuesForKey(valueArray);
47+
callback();
48+
}
49+
} catch(e) {
50+
callback(e);
51+
}
52+
}
53+
54+
localStorage.clearByQuery = function (query, callback) {
55+
try {
56+
let keys = cache.getKeys(),
57+
storage = cache.getStorage();
58+
for(let i = 0, _i = keys.length; i < _i; i++) {
59+
if(keys[i] && ~keys[i].indexOf(query)) delete storage[keys[i]];
60+
}
61+
callback();
62+
} catch(e) {
63+
callback(e);
64+
}
65+
}
66+
67+
localStorage.clearAll = function (callback) {
68+
try {
69+
clearValuesForKey();
70+
callback();
71+
} catch(e) {
72+
callback(e);
73+
}
74+
}
75+
76+
export default localStorage;

src/core/cache.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import storage from 'runtime/localstorage.js';
2+
3+
export function get(key) {
4+
let data = storage.getItem(key);
5+
try {
6+
data = JSON.parse(data);
7+
} catch (e) {
8+
return data;
9+
}
10+
return data || null;
11+
}
12+
13+
export function set(key, data) {
14+
try {
15+
if (typeof data === 'object') {
16+
storage.setItem(key, JSON.stringify(data));
17+
} else {
18+
storage.setItem(key, data);
19+
}
20+
} catch (error) {
21+
}
22+
}
23+
24+
export function getStorage() {
25+
return storage || null;
26+
}
27+
28+
export function getKeys() {
29+
return (storage) ? Object.keys(storage) : [];
30+
}

src/core/contentstack.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Stack from "./stack";
2+
import CacheProvider from './cache-provider/index';
3+
import ContentstackRegion from "./contentstackregion";
4+
5+
/**
6+
* @class
7+
Contentstack
8+
* @description Creates an instance of `Contentstack`.
9+
* @instance
10+
*/
11+
12+
class Contentstack {
13+
14+
constructor(){
15+
/**
16+
* @memberOf Contentstack
17+
* @description CachePolicy contains different cache policies constants.
18+
* @example
19+
* Contentstack.CachePolicy.IGNORE_CACHE
20+
* Contentstack.CachePolicy.ONLY_NETWORK
21+
* Contentstack.CachePolicy.CACHE_ELSE_NETWORK
22+
* Contentstack.CachePolicy.NETWORK_ELSE_CACHE
23+
* Contentstack.CachePolicy.CACHE_THEN_NETWORK
24+
*/
25+
this.CachePolicy = CacheProvider.policies;
26+
this.Region = ContentstackRegion;
27+
28+
this.Utils = require('@contentstack/utils');
29+
}
30+
/**
31+
32+
* @memberOf Contentstack
33+
*/
34+
Stack(...stack_arguments){
35+
return new Stack(...stack_arguments);
36+
}
37+
}
38+
39+
module.exports = new Contentstack();

src/core/contentstackregion.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const ContentstackRegion = {
2+
EU: "eu",
3+
US: "us"
4+
};
5+
6+
export default ContentstackRegion;
7+
//module.exports = ContentstackRegion;

src/core/lib/request.js

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import * as Utils from "./utils.js";
2+
import fetch from "runtime/http.js";
3+
4+
//JS SDK version
5+
let version = '{{VERSION}}';
6+
let environment,
7+
api_key;
8+
export default function Request(options, fetchOptions) {
9+
return new Promise(function(resolve, reject) {
10+
let queryParams;
11+
let serialize = function(obj, prefix) {
12+
13+
let str = [],
14+
p;
15+
if (typeof obj === "object" && obj.length !== undefined) {
16+
for (var i = 0, _i = obj.length; i < _i; i++) {
17+
str.push(prefix + '[]=' + obj[i]);
18+
}
19+
} else {
20+
for (p in obj) {
21+
let k = prefix ? prefix + "[" + p + "]" : p,
22+
v = obj[p];
23+
str.push((v !== null && typeof v === "object" && p !== 'query') ?
24+
serialize(v, k) :
25+
k + "=" + encodeURIComponent(p !== 'query' ? v : JSON.stringify(v)));
26+
}
27+
}
28+
return str.join("&");
29+
};
30+
31+
let url = options.url,
32+
headers = options.headers;
33+
34+
// setting headers
35+
headers['Content-Type'] = 'application/json; charset=UTF-8';
36+
headers['X-User-Agent'] = 'contentstack-{{PLATFORM}}/' + version;
37+
38+
if (options.body && typeof options.body === 'object') {
39+
delete options.body._method;
40+
if (typeof options.body.query === "object" && Object.keys(options.body.query).length === 0) delete options.body.query;
41+
queryParams = serialize(options.body);
42+
}
43+
44+
return fetchRetry(url + '?' + queryParams,
45+
headers,
46+
fetchOptions,
47+
resolve,
48+
reject,
49+
fetchOptions.retryDelay,
50+
fetchOptions.retryLimit)
51+
52+
});
53+
}
54+
55+
function wait(retryDelay) {
56+
return new Promise((resolve) => {
57+
setTimeout(resolve, retryDelay)
58+
});
59+
}
60+
61+
function fetchRetry(url, headers, fetchOptions, resolve, reject, retryDelay = 300, retryLimit = 5) {
62+
var option = Utils.mergeDeep({
63+
method: 'GET',
64+
headers: headers,
65+
timeout: 30000,
66+
},
67+
fetchOptions);
68+
69+
function onError (error) {
70+
if (retryLimit === 0) {
71+
reject(error);
72+
}else {
73+
var msDelay = retryDelay
74+
retryLimit = retryLimit - 1
75+
var retryCount = (fetchOptions.retryLimit - retryLimit)
76+
if (fetchOptions.retryDelayOptions) {
77+
if (fetchOptions.retryDelayOptions.base) {
78+
msDelay = fetchOptions.retryDelayOptions.base * retryCount
79+
} else if (fetchOptions.retryDelayOptions.customBackoff) {
80+
msDelay = fetchOptions.retryDelayOptions.customBackoff(retryCount, error)
81+
}
82+
}
83+
wait(msDelay)
84+
.then(() => {
85+
return fetchRetry(url, headers, retryDelay, retryLimit, fetchOptions, resolve, reject)
86+
})
87+
}
88+
}
89+
fetch(url, option)
90+
.then(function(response) {
91+
let data = response.json();
92+
if (response.ok && response.status === 200) {
93+
resolve(data);
94+
} else {
95+
data.then((json) => {
96+
if (fetchOptions.retryCondition && fetchOptions.retryCondition(response)) {
97+
onError(json)
98+
} else {
99+
reject(json)
100+
}
101+
}).catch(() => {
102+
reject({status: response.status, statusText: response.statusText})
103+
});
104+
}
105+
}).catch((error) => {
106+
reject(error)
107+
});
108+
}

0 commit comments

Comments
 (0)