New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@teleporthq/teleport-plugin-common

Package Overview
Dependencies
Maintainers
4
Versions
123
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@teleporthq/teleport-plugin-common - npm Package Compare versions

Comparing version

to
0.27.3-alpha.6

52

dist/cjs/node-handlers/node-to-jsx/index.js

@@ -202,31 +202,51 @@ "use strict";

var _a = node.content.nodes, success = _a.success, empty = _a.empty, error = _a.error, loading = _a.loading;
var statePersistanceName = node.content.statePersistanceName;
var _b = node.content, loopItemsReference = _b.loopItemsReference, statePersistanceName = _b.statePersistanceName;
var type = loopItemsReference.type;
var errorNodeAST = null;
var emptyNodeAST = null;
var loadingNodeAST = null;
var listNodeAST = null;
var source = (0, utils_1.getRepeatSourceIdentifier)(node.content.loopItemsReference, options);
/*
* TODO: @JK move this too into validator
* CMS list node can only be a dynamic !!
*/
if (type !== 'dynamic') {
throw new Error("Node ".concat(node, " is dynamic, but the referece link is missing. \n\n Missing loopItemsReference"));
}
var loadingStatePersistanceName = teleport_shared_1.StringUtils.createStateOrPropStoringValue("".concat(statePersistanceName, "Loading"));
var errorStatePersistanceName = teleport_shared_1.StringUtils.createStateOrPropStoringValue("".concat(statePersistanceName, "Error"));
var listNodeAST = !!success
? generateNode(success, params, options)[0]
: null;
var source = (0, utils_1.getRepeatSourceIdentifier)(node.content.loopItemsReference, options);
var emptyNodeAST = !!empty
? generateNode(empty, params, options)[0]
: null;
if (empty) {
emptyNodeAST = generateNode(empty, params, options)[0];
}
if (error) {
errorNodeAST = generateNode(error, params, options)[0];
params.stateDefinitions["".concat(statePersistanceName, "Error")] = {
type: 'boolean',
defaultValue: false,
};
}
if (loading) {
loadingNodeAST = generateNode(loading, params, options)[0];
params.stateDefinitions["".concat(statePersistanceName, "Loading")] = {
type: 'boolean',
defaultValue: false,
};
}
if (success) {
listNodeAST = generateNode(success, params, options)[0];
}
var emptyNodeExpressionAST = empty
? types.logicalExpression('&&', types.unaryExpression('!', types.memberExpression(source, types.identifier('length'))), emptyNodeAST)
: null;
var errorNodeAST = !!error
? generateNode(error, params, options)[0]
: null;
var errorNodeExpressionAST = error && errorStatePersistanceName
? types.logicalExpression('&&', types.identifier(errorStatePersistanceName), errorNodeAST)
: null;
var loadingNodeAST = !!loading
? generateNode(loading, params, options)[0]
: null;
var loadingNodeExpressionAST = loading && loadingStatePersistanceName
? types.logicalExpression('&&', types.identifier(loadingStatePersistanceName), loadingNodeAST)
: null;
var _b = teleport_shared_1.UIDLUtils.getRepeatIteratorNameAndKey({
var _c = teleport_shared_1.UIDLUtils.getRepeatIteratorNameAndKey({
useIndex: true,
iteratorName: 'item',
}), iteratorName = _b.iteratorName, iteratorKey = _b.iteratorKey;
}), iteratorName = _c.iteratorName, iteratorKey = _c.iteratorKey;
var localIteratorPrefix = options.dynamicReferencePrefixMap.local;

@@ -233,0 +253,0 @@ (0, ast_utils_1.addDynamicAttributeToJSXTag)(listNodeAST, 'key', iteratorKey, localIteratorPrefix);

import * as types from '@babel/types';
import ParsedASTNode from './parsed-ast';
import { UIDLStateDefinition, UIDLPropDefinition, UIDLRawValue, Resource, UIDLDynamicReference } from '@teleporthq/teleport-types';
import { UIDLStateDefinition, UIDLPropDefinition, UIDLRawValue, UIDLStaticValue, UIDLDynamicReference, UIDLResourceItem, UIDLPropValue, UIDLExpressionValue } from '@teleporthq/teleport-types';
import { JSXGenerationOptions, JSXGenerationParams } from '../node-handlers/node-to-jsx/types';

@@ -58,6 +58,7 @@ /**

export declare const wrapObjectPropertiesWithExpression: (properties: types.ObjectProperty[]) => types.ObjectExpression;
export declare const generateRemoteResourceASTs: (resource: Resource, propsPrefix?: string, extraUrlParamsGenerator?: () => types.ObjectProperty[]) => types.VariableDeclaration[];
export declare const generateRemoteResourceASTs: (resource: UIDLResourceItem) => types.VariableDeclaration[];
export declare const generateMemberExpressionASTFromBase: (base: types.MemberExpression | types.Identifier, path: string[]) => types.MemberExpression;
export declare const generateMemberExpressionASTFromPath: (path: string[]) => types.MemberExpression | types.Identifier;
export declare const generateMemberExpressionASTFromPath: (path: Array<string | number>) => types.MemberExpression | types.Identifier;
export declare const resolveObjectValue: (prop: UIDLStaticValue | UIDLPropValue | UIDLExpressionValue) => types.BooleanLiteral | types.Identifier | types.NumericLiteral | types.StringLiteral;
export {};
//# sourceMappingURL=ast-utils.d.ts.map

@@ -38,3 +38,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.generateMemberExpressionASTFromPath = exports.generateMemberExpressionASTFromBase = exports.generateRemoteResourceASTs = exports.wrapObjectPropertiesWithExpression = exports.generateDynamicWindowImport = exports.createStateHookAST = exports.createReturnExpressionSyntax = exports.createPureComponent = exports.createClassComponent = exports.removeAttributeByName = exports.findAttributeByName = exports.getTSAnnotationForType = exports.addPropertyToASTObject = exports.convertValueToLiteral = exports.objectToObjectExpression = exports.renameJSXTag = exports.addSpreadAttributeToJSXTag = exports.addChildJSXText = exports.addChildJSXTag = exports.addRawAttributeToJSXTag = exports.addAttributeToJSXTag = exports.stringAsTemplateLiteral = exports.addMultipleDynamicAttributesToJSXTag = exports.addDynamicExpressionAttributeToJSXTag = exports.addDynamicCtxAttributeToJSXTag = exports.addDynamicAttributeToJSXTag = exports.addClassStringOnJSXTag = void 0;
exports.resolveObjectValue = exports.generateMemberExpressionASTFromPath = exports.generateMemberExpressionASTFromBase = exports.generateRemoteResourceASTs = exports.wrapObjectPropertiesWithExpression = exports.generateDynamicWindowImport = exports.createStateHookAST = exports.createReturnExpressionSyntax = exports.createPureComponent = exports.createClassComponent = exports.removeAttributeByName = exports.findAttributeByName = exports.getTSAnnotationForType = exports.addPropertyToASTObject = exports.convertValueToLiteral = exports.objectToObjectExpression = exports.renameJSXTag = exports.addSpreadAttributeToJSXTag = exports.addChildJSXText = exports.addChildJSXTag = exports.addRawAttributeToJSXTag = exports.addAttributeToJSXTag = exports.stringAsTemplateLiteral = exports.addMultipleDynamicAttributesToJSXTag = exports.addDynamicExpressionAttributeToJSXTag = exports.addDynamicCtxAttributeToJSXTag = exports.addDynamicAttributeToJSXTag = exports.addClassStringOnJSXTag = void 0;
var types = __importStar(require("@babel/types"));

@@ -45,2 +45,3 @@ var core_1 = require("@babel/core");

var utils_1 = require("../node-handlers/node-to-jsx/utils");
var __1 = require("..");
/**

@@ -107,2 +108,6 @@ * Adds a class definition string to an existing string of classes

if (t === void 0) { t = types; }
// TODO: Fix !!
if (!value) {
return;
}
var content = prefix === ''

@@ -442,10 +447,15 @@ ? t.identifier(value)

exports.wrapObjectPropertiesWithExpression = wrapObjectPropertiesWithExpression;
var generateRemoteResourceASTs = function (resource, propsPrefix, extraUrlParamsGenerator) {
if (propsPrefix === void 0) { propsPrefix = ''; }
/*
* TODO: Add the ability to support body and payload.
* UIDLResourceItem['body']
* All the dynamic props are sent using the function props
*/
var generateRemoteResourceASTs = function (resource) {
var fetchUrl = computeFetchUrl(resource);
var authHeaderAST = computeAuthorizationHeaderAST(resource);
var queryParams = generateURLParamsAST(resource.urlParams, propsPrefix, extraUrlParamsGenerator);
var authHeaderAST = computeAuthorizationHeaderAST(resource === null || resource === void 0 ? void 0 : resource.headers);
var headersASTs = generateRESTHeadersAST(resource === null || resource === void 0 ? void 0 : resource.headers);
var queryParams = generateURLParamsAST(resource === null || resource === void 0 ? void 0 : resource.params);
var fetchUrlQuasis = fetchUrl.quasis;
var queryParamsQuasis = queryParams.quasis;
if (queryParams.expressions.length > 0) {
var queryParamsQuasis = (queryParams === null || queryParams === void 0 ? void 0 : queryParams.quasis) || [types.templateElement({ raw: '', cooked: '' })];
if ((queryParams === null || queryParams === void 0 ? void 0 : queryParams.expressions.length) > 0) {
fetchUrlQuasis[fetchUrlQuasis.length - 1].value.raw =

@@ -457,3 +467,18 @@ fetchUrlQuasis[fetchUrlQuasis.length - 1].value.raw + '?';

}
var url = queryParams
var paramsDeclerations = Object.keys((resource === null || resource === void 0 ? void 0 : resource.params) || {}).reduce(function (acc, item) {
var prop = resource.params[item];
if (prop.type === 'static') {
acc.push(types.objectProperty(types.stringLiteral(item), __1.ASTUtils.resolveObjectValue(prop)));
}
if (prop.type === 'dynamic') {
acc.push(types.spreadElement(types.logicalExpression('&&', types.memberExpression(types.identifier('params'), types.stringLiteral(prop.content.id), true, false), types.objectExpression([
types.objectProperty(types.stringLiteral(item), types.memberExpression(types.identifier('params'), types.stringLiteral(prop.content.id), true, false)),
]))));
}
return acc;
}, []);
var paramsAST = types.variableDeclaration('const', [
types.variableDeclarator(types.identifier('urlParams'), types.objectExpression(paramsDeclerations)),
]);
var url = (queryParams === null || queryParams === void 0 ? void 0 : queryParams.quasis)
? types.templateLiteral(__spreadArray(__spreadArray([], fetchUrlQuasis, true), queryParamsQuasis, true), __spreadArray([], fetchUrl.expressions.concat(queryParams.expressions), true))

@@ -465,6 +490,4 @@ : fetchUrl;

types.objectExpression([
types.objectProperty(types.identifier('headers'), types.objectExpression([
types.objectProperty(types.identifier('"Content-Type"'), types.stringLiteral('application/json'), false, false),
authHeaderAST,
])),
types.objectProperty(types.identifier('method'), types.stringLiteral(resource.method)),
types.objectProperty(types.identifier('headers'), types.objectExpression(__spreadArray(__spreadArray([], headersASTs, true), [authHeaderAST], false))),
]),

@@ -476,5 +499,12 @@ ]))),

]);
return [fetchAST, responseJSONAST];
return [paramsAST, fetchAST, responseJSONAST];
};
exports.generateRemoteResourceASTs = generateRemoteResourceASTs;
var generateRESTHeadersAST = function (headers) {
return Object.keys(headers)
.filter(function (header) { return header !== 'authToken'; })
.map(function (header) {
return types.objectProperty(types.stringLiteral(header), types.stringLiteral(String(headers[header].content)));
});
};
var generateMemberExpressionASTFromBase = function (base, path) {

@@ -492,63 +522,44 @@ if (path.length === 1) {

if (path.length === 1) {
return types.identifier(path[0]);
return types.identifier(path[0].toString());
}
pathClone.pop();
return types.memberExpression((0, exports.generateMemberExpressionASTFromPath)(pathClone), types.identifier(path[path.length - 1]), false);
var currentPath = path[path.length - 1];
if (typeof currentPath === 'number') {
return types.memberExpression((0, exports.generateMemberExpressionASTFromPath)(pathClone), types.numericLiteral(currentPath), true);
}
var containsSpecial = currentPath.indexOf('.') !== -1 || currentPath.indexOf('-') !== -1;
return types.memberExpression((0, exports.generateMemberExpressionASTFromPath)(pathClone), containsSpecial ? types.stringLiteral(currentPath) : types.identifier(currentPath), containsSpecial);
};
exports.generateMemberExpressionASTFromPath = generateMemberExpressionASTFromPath;
var generateURLParamsAST = function (urlParams, propsPrefix, extraUrlParamsGenerator) {
var generateURLParamsAST = function (urlParams) {
if (!urlParams) {
return null;
}
var queryString = {};
Object.keys(urlParams).forEach(function (key) {
resolveDynamicValuesFromUrlParams(urlParams[key], queryString, key, propsPrefix);
resolveDynamicValuesFromUrlParams(urlParams[key], queryString, key);
});
var urlObject = types.objectExpression(__spreadArray(__spreadArray([], Object.keys(queryString).map(function (key) {
return types.objectProperty(types.stringLiteral("".concat(key)), queryString[key]);
}), true), (extraUrlParamsGenerator ? extraUrlParamsGenerator() : []), true));
return types.templateLiteral([
types.templateElement({ raw: '', cooked: '' }, false),
types.templateElement({ raw: '', cooked: '' }, true),
], [types.newExpression(types.identifier('URLSearchParams'), [urlObject])]);
], [types.newExpression(types.identifier('URLSearchParams'), [types.identifier('urlParams')])]);
};
var resolveDynamicValuesFromUrlParams = function (field, query, prefix, propsPrefix) {
var resolveDynamicValuesFromUrlParams = function (field, query, prefix) {
if (prefix === void 0) { prefix = null; }
if (propsPrefix === void 0) { propsPrefix = ''; }
if (Array.isArray(field)) {
var arrayValues = field.map(function (value) {
return resolveUrlParamsValue(value, propsPrefix);
});
query[prefix] = types.arrayExpression(arrayValues);
if (field.type === 'dynamic' || field.type === 'static') {
query[prefix] = resolveUrlParamsValue(field);
return;
}
if (field.type === 'dynamic' || field.type === 'static' || field.type === 'expr') {
query[prefix] = resolveUrlParamsValue(field, propsPrefix);
return;
}
Object.keys(field).forEach(function (key) {
var value = field[key];
var newPrefix = prefix ? "".concat(prefix, "[").concat(key, "]") : key;
if (typeof value === 'object') {
resolveDynamicValuesFromUrlParams(value, query, newPrefix, propsPrefix);
return;
}
query[newPrefix] = resolveUrlParamsValue(value, propsPrefix);
});
};
var resolveUrlParamsValue = function (urlParams, propsPrefix) {
if (propsPrefix === void 0) { propsPrefix = ''; }
if (urlParams.type === 'static') {
return types.stringLiteral("".concat(urlParams.content));
var resolveUrlParamsValue = function (urlParam) {
if (urlParam.type === 'static') {
return types.stringLiteral("".concat(urlParam.content));
}
if (urlParams.type === 'expr') {
return types.identifier(urlParams.content);
}
if (urlParams.content.referenceType !== 'prop') {
if (urlParam.content.referenceType !== 'prop') {
throw new Error('Only prop references are supported for url params');
}
var paramPath = __spreadArray(__spreadArray([], (propsPrefix ? [propsPrefix] : []), true), (urlParams.content.path || []), true);
var paramPath = ['params', urlParam.content.id];
var templateLiteralElements = paramPath
.map(function (_, index) {
if (index === paramPath.length - 1) {
return null;
}
var isTail = index === paramPath.length - 2;
var isTail = index === paramPath.length - 1;
return types.templateElement({

@@ -564,9 +575,9 @@ cooked: '',

};
var computeAuthorizationHeaderAST = function (resource) {
var computeAuthorizationHeaderAST = function (headers) {
var _a;
var authToken = resolveResourceValue(resource.authToken);
var authToken = resolveResourceValue(headers.authToken);
if (!authToken) {
return null;
}
var authTokenType = (_a = resource.authToken) === null || _a === void 0 ? void 0 : _a.type;
var authTokenType = (_a = headers.authToken) === null || _a === void 0 ? void 0 : _a.type;
return types.objectProperty(types.identifier('Authorization'), types.templateLiteral(__spreadArray([

@@ -584,10 +595,11 @@ types.templateElement({

}, true),
]), true), __spreadArray([], (authTokenType === 'static' ? [] : [types.identifier(authToken)]), true)), false, false);
]), true), __spreadArray([], (authTokenType === 'static' ? [] : [types.identifier(String(authToken))]), true)), false, false);
};
var computeFetchUrl = function (resource) {
var _a, _b;
var fetchBaseUrl = resolveResourceValue(resource.baseUrl);
var resourceRoute = resolveResourceValue(resource.route);
var baseUrlType = (_a = resource.baseUrl) === null || _a === void 0 ? void 0 : _a.type;
var routeType = (_b = resource.route) === null || _b === void 0 ? void 0 : _b.type;
var path = resource.path;
var fetchBaseUrl = resolveResourceValue(path.baseUrl);
var resourceRoute = resolveResourceValue(path.route);
var baseUrlType = (_a = path.baseUrl) === null || _a === void 0 ? void 0 : _a.type;
var routeType = (_b = path.route) === null || _b === void 0 ? void 0 : _b.type;
if (baseUrlType === 'static' && routeType === 'static') {

@@ -609,3 +621,3 @@ var stringsToJoin = [fetchBaseUrl, resourceRoute].filter(function (item) { return item; }).join('/');

}, true),
], [types.identifier(fetchBaseUrl)]);
], [types.identifier(String(fetchBaseUrl))]);
}

@@ -629,4 +641,4 @@ return types.templateLiteral(__spreadArray([

]), true), __spreadArray([
types.identifier(fetchBaseUrl)
], (routeType === 'static' ? [] : [types.identifier(resourceRoute)]), true));
types.identifier(String(fetchBaseUrl))
], (routeType === 'static' ? [] : [types.identifier(String(resourceRoute))]), true));
};

@@ -638,6 +650,20 @@ var resolveResourceValue = function (value) {

if (value.type === 'static') {
return value.value;
return value.content;
}
return "process.env.".concat(value.value) || value.fallback;
return "process.env.".concat(value.content);
};
var resolveObjectValue = function (prop) {
if (prop.type === 'expr') {
return types.identifier(prop.content);
}
var value = typeof prop.content === 'string'
? types.stringLiteral(prop.content)
: typeof prop.content === 'boolean'
? types.booleanLiteral(prop.content)
: typeof prop.content === 'number'
? types.numericLiteral(prop.content)
: types.identifier(String(prop.content));
return value;
};
exports.resolveObjectValue = resolveObjectValue;
//# sourceMappingURL=ast-utils.js.map

@@ -177,31 +177,51 @@ var __assign = (this && this.__assign) || function () {

var _a = node.content.nodes, success = _a.success, empty = _a.empty, error = _a.error, loading = _a.loading;
var statePersistanceName = node.content.statePersistanceName;
var _b = node.content, loopItemsReference = _b.loopItemsReference, statePersistanceName = _b.statePersistanceName;
var type = loopItemsReference.type;
var errorNodeAST = null;
var emptyNodeAST = null;
var loadingNodeAST = null;
var listNodeAST = null;
var source = getRepeatSourceIdentifier(node.content.loopItemsReference, options);
/*
* TODO: @JK move this too into validator
* CMS list node can only be a dynamic !!
*/
if (type !== 'dynamic') {
throw new Error("Node ".concat(node, " is dynamic, but the referece link is missing. \n\n Missing loopItemsReference"));
}
var loadingStatePersistanceName = StringUtils.createStateOrPropStoringValue("".concat(statePersistanceName, "Loading"));
var errorStatePersistanceName = StringUtils.createStateOrPropStoringValue("".concat(statePersistanceName, "Error"));
var listNodeAST = !!success
? generateNode(success, params, options)[0]
: null;
var source = getRepeatSourceIdentifier(node.content.loopItemsReference, options);
var emptyNodeAST = !!empty
? generateNode(empty, params, options)[0]
: null;
if (empty) {
emptyNodeAST = generateNode(empty, params, options)[0];
}
if (error) {
errorNodeAST = generateNode(error, params, options)[0];
params.stateDefinitions["".concat(statePersistanceName, "Error")] = {
type: 'boolean',
defaultValue: false,
};
}
if (loading) {
loadingNodeAST = generateNode(loading, params, options)[0];
params.stateDefinitions["".concat(statePersistanceName, "Loading")] = {
type: 'boolean',
defaultValue: false,
};
}
if (success) {
listNodeAST = generateNode(success, params, options)[0];
}
var emptyNodeExpressionAST = empty
? types.logicalExpression('&&', types.unaryExpression('!', types.memberExpression(source, types.identifier('length'))), emptyNodeAST)
: null;
var errorNodeAST = !!error
? generateNode(error, params, options)[0]
: null;
var errorNodeExpressionAST = error && errorStatePersistanceName
? types.logicalExpression('&&', types.identifier(errorStatePersistanceName), errorNodeAST)
: null;
var loadingNodeAST = !!loading
? generateNode(loading, params, options)[0]
: null;
var loadingNodeExpressionAST = loading && loadingStatePersistanceName
? types.logicalExpression('&&', types.identifier(loadingStatePersistanceName), loadingNodeAST)
: null;
var _b = UIDLUtils.getRepeatIteratorNameAndKey({
var _c = UIDLUtils.getRepeatIteratorNameAndKey({
useIndex: true,
iteratorName: 'item',
}), iteratorName = _b.iteratorName, iteratorKey = _b.iteratorKey;
}), iteratorName = _c.iteratorName, iteratorKey = _c.iteratorKey;
var localIteratorPrefix = options.dynamicReferencePrefixMap.local;

@@ -208,0 +228,0 @@ addDynamicAttributeToJSXTag(listNodeAST, 'key', iteratorKey, localIteratorPrefix);

import * as types from '@babel/types';
import ParsedASTNode from './parsed-ast';
import { UIDLStateDefinition, UIDLPropDefinition, UIDLRawValue, Resource, UIDLDynamicReference } from '@teleporthq/teleport-types';
import { UIDLStateDefinition, UIDLPropDefinition, UIDLRawValue, UIDLStaticValue, UIDLDynamicReference, UIDLResourceItem, UIDLPropValue, UIDLExpressionValue } from '@teleporthq/teleport-types';
import { JSXGenerationOptions, JSXGenerationParams } from '../node-handlers/node-to-jsx/types';

@@ -58,6 +58,7 @@ /**

export declare const wrapObjectPropertiesWithExpression: (properties: types.ObjectProperty[]) => types.ObjectExpression;
export declare const generateRemoteResourceASTs: (resource: Resource, propsPrefix?: string, extraUrlParamsGenerator?: () => types.ObjectProperty[]) => types.VariableDeclaration[];
export declare const generateRemoteResourceASTs: (resource: UIDLResourceItem) => types.VariableDeclaration[];
export declare const generateMemberExpressionASTFromBase: (base: types.MemberExpression | types.Identifier, path: string[]) => types.MemberExpression;
export declare const generateMemberExpressionASTFromPath: (path: string[]) => types.MemberExpression | types.Identifier;
export declare const generateMemberExpressionASTFromPath: (path: Array<string | number>) => types.MemberExpression | types.Identifier;
export declare const resolveObjectValue: (prop: UIDLStaticValue | UIDLPropValue | UIDLExpressionValue) => types.BooleanLiteral | types.Identifier | types.NumericLiteral | types.StringLiteral;
export {};
//# sourceMappingURL=ast-utils.d.ts.map

@@ -15,2 +15,3 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {

import { createDynamicValueExpression } from '../node-handlers/node-to-jsx/utils';
import { ASTUtils } from '..';
/**

@@ -76,2 +77,6 @@ * Adds a class definition string to an existing string of classes

if (t === void 0) { t = types; }
// TODO: Fix !!
if (!value) {
return;
}
var content = prefix === ''

@@ -388,10 +393,15 @@ ? t.identifier(value)

};
export var generateRemoteResourceASTs = function (resource, propsPrefix, extraUrlParamsGenerator) {
if (propsPrefix === void 0) { propsPrefix = ''; }
/*
* TODO: Add the ability to support body and payload.
* UIDLResourceItem['body']
* All the dynamic props are sent using the function props
*/
export var generateRemoteResourceASTs = function (resource) {
var fetchUrl = computeFetchUrl(resource);
var authHeaderAST = computeAuthorizationHeaderAST(resource);
var queryParams = generateURLParamsAST(resource.urlParams, propsPrefix, extraUrlParamsGenerator);
var authHeaderAST = computeAuthorizationHeaderAST(resource === null || resource === void 0 ? void 0 : resource.headers);
var headersASTs = generateRESTHeadersAST(resource === null || resource === void 0 ? void 0 : resource.headers);
var queryParams = generateURLParamsAST(resource === null || resource === void 0 ? void 0 : resource.params);
var fetchUrlQuasis = fetchUrl.quasis;
var queryParamsQuasis = queryParams.quasis;
if (queryParams.expressions.length > 0) {
var queryParamsQuasis = (queryParams === null || queryParams === void 0 ? void 0 : queryParams.quasis) || [types.templateElement({ raw: '', cooked: '' })];
if ((queryParams === null || queryParams === void 0 ? void 0 : queryParams.expressions.length) > 0) {
fetchUrlQuasis[fetchUrlQuasis.length - 1].value.raw =

@@ -403,3 +413,18 @@ fetchUrlQuasis[fetchUrlQuasis.length - 1].value.raw + '?';

}
var url = queryParams
var paramsDeclerations = Object.keys((resource === null || resource === void 0 ? void 0 : resource.params) || {}).reduce(function (acc, item) {
var prop = resource.params[item];
if (prop.type === 'static') {
acc.push(types.objectProperty(types.stringLiteral(item), ASTUtils.resolveObjectValue(prop)));
}
if (prop.type === 'dynamic') {
acc.push(types.spreadElement(types.logicalExpression('&&', types.memberExpression(types.identifier('params'), types.stringLiteral(prop.content.id), true, false), types.objectExpression([
types.objectProperty(types.stringLiteral(item), types.memberExpression(types.identifier('params'), types.stringLiteral(prop.content.id), true, false)),
]))));
}
return acc;
}, []);
var paramsAST = types.variableDeclaration('const', [
types.variableDeclarator(types.identifier('urlParams'), types.objectExpression(paramsDeclerations)),
]);
var url = (queryParams === null || queryParams === void 0 ? void 0 : queryParams.quasis)
? types.templateLiteral(__spreadArray(__spreadArray([], fetchUrlQuasis, true), queryParamsQuasis, true), __spreadArray([], fetchUrl.expressions.concat(queryParams.expressions), true))

@@ -411,6 +436,4 @@ : fetchUrl;

types.objectExpression([
types.objectProperty(types.identifier('headers'), types.objectExpression([
types.objectProperty(types.identifier('"Content-Type"'), types.stringLiteral('application/json'), false, false),
authHeaderAST,
])),
types.objectProperty(types.identifier('method'), types.stringLiteral(resource.method)),
types.objectProperty(types.identifier('headers'), types.objectExpression(__spreadArray(__spreadArray([], headersASTs, true), [authHeaderAST], false))),
]),

@@ -422,4 +445,11 @@ ]))),

]);
return [fetchAST, responseJSONAST];
return [paramsAST, fetchAST, responseJSONAST];
};
var generateRESTHeadersAST = function (headers) {
return Object.keys(headers)
.filter(function (header) { return header !== 'authToken'; })
.map(function (header) {
return types.objectProperty(types.stringLiteral(header), types.stringLiteral(String(headers[header].content)));
});
};
export var generateMemberExpressionASTFromBase = function (base, path) {

@@ -436,62 +466,43 @@ if (path.length === 1) {

if (path.length === 1) {
return types.identifier(path[0]);
return types.identifier(path[0].toString());
}
pathClone.pop();
return types.memberExpression(generateMemberExpressionASTFromPath(pathClone), types.identifier(path[path.length - 1]), false);
var currentPath = path[path.length - 1];
if (typeof currentPath === 'number') {
return types.memberExpression(generateMemberExpressionASTFromPath(pathClone), types.numericLiteral(currentPath), true);
}
var containsSpecial = currentPath.indexOf('.') !== -1 || currentPath.indexOf('-') !== -1;
return types.memberExpression(generateMemberExpressionASTFromPath(pathClone), containsSpecial ? types.stringLiteral(currentPath) : types.identifier(currentPath), containsSpecial);
};
var generateURLParamsAST = function (urlParams, propsPrefix, extraUrlParamsGenerator) {
var generateURLParamsAST = function (urlParams) {
if (!urlParams) {
return null;
}
var queryString = {};
Object.keys(urlParams).forEach(function (key) {
resolveDynamicValuesFromUrlParams(urlParams[key], queryString, key, propsPrefix);
resolveDynamicValuesFromUrlParams(urlParams[key], queryString, key);
});
var urlObject = types.objectExpression(__spreadArray(__spreadArray([], Object.keys(queryString).map(function (key) {
return types.objectProperty(types.stringLiteral("".concat(key)), queryString[key]);
}), true), (extraUrlParamsGenerator ? extraUrlParamsGenerator() : []), true));
return types.templateLiteral([
types.templateElement({ raw: '', cooked: '' }, false),
types.templateElement({ raw: '', cooked: '' }, true),
], [types.newExpression(types.identifier('URLSearchParams'), [urlObject])]);
], [types.newExpression(types.identifier('URLSearchParams'), [types.identifier('urlParams')])]);
};
var resolveDynamicValuesFromUrlParams = function (field, query, prefix, propsPrefix) {
var resolveDynamicValuesFromUrlParams = function (field, query, prefix) {
if (prefix === void 0) { prefix = null; }
if (propsPrefix === void 0) { propsPrefix = ''; }
if (Array.isArray(field)) {
var arrayValues = field.map(function (value) {
return resolveUrlParamsValue(value, propsPrefix);
});
query[prefix] = types.arrayExpression(arrayValues);
if (field.type === 'dynamic' || field.type === 'static') {
query[prefix] = resolveUrlParamsValue(field);
return;
}
if (field.type === 'dynamic' || field.type === 'static' || field.type === 'expr') {
query[prefix] = resolveUrlParamsValue(field, propsPrefix);
return;
}
Object.keys(field).forEach(function (key) {
var value = field[key];
var newPrefix = prefix ? "".concat(prefix, "[").concat(key, "]") : key;
if (typeof value === 'object') {
resolveDynamicValuesFromUrlParams(value, query, newPrefix, propsPrefix);
return;
}
query[newPrefix] = resolveUrlParamsValue(value, propsPrefix);
});
};
var resolveUrlParamsValue = function (urlParams, propsPrefix) {
if (propsPrefix === void 0) { propsPrefix = ''; }
if (urlParams.type === 'static') {
return types.stringLiteral("".concat(urlParams.content));
var resolveUrlParamsValue = function (urlParam) {
if (urlParam.type === 'static') {
return types.stringLiteral("".concat(urlParam.content));
}
if (urlParams.type === 'expr') {
return types.identifier(urlParams.content);
}
if (urlParams.content.referenceType !== 'prop') {
if (urlParam.content.referenceType !== 'prop') {
throw new Error('Only prop references are supported for url params');
}
var paramPath = __spreadArray(__spreadArray([], (propsPrefix ? [propsPrefix] : []), true), (urlParams.content.path || []), true);
var paramPath = ['params', urlParam.content.id];
var templateLiteralElements = paramPath
.map(function (_, index) {
if (index === paramPath.length - 1) {
return null;
}
var isTail = index === paramPath.length - 2;
var isTail = index === paramPath.length - 1;
return types.templateElement({

@@ -507,9 +518,9 @@ cooked: '',

};
var computeAuthorizationHeaderAST = function (resource) {
var computeAuthorizationHeaderAST = function (headers) {
var _a;
var authToken = resolveResourceValue(resource.authToken);
var authToken = resolveResourceValue(headers.authToken);
if (!authToken) {
return null;
}
var authTokenType = (_a = resource.authToken) === null || _a === void 0 ? void 0 : _a.type;
var authTokenType = (_a = headers.authToken) === null || _a === void 0 ? void 0 : _a.type;
return types.objectProperty(types.identifier('Authorization'), types.templateLiteral(__spreadArray([

@@ -527,10 +538,11 @@ types.templateElement({

}, true),
]), true), __spreadArray([], (authTokenType === 'static' ? [] : [types.identifier(authToken)]), true)), false, false);
]), true), __spreadArray([], (authTokenType === 'static' ? [] : [types.identifier(String(authToken))]), true)), false, false);
};
var computeFetchUrl = function (resource) {
var _a, _b;
var fetchBaseUrl = resolveResourceValue(resource.baseUrl);
var resourceRoute = resolveResourceValue(resource.route);
var baseUrlType = (_a = resource.baseUrl) === null || _a === void 0 ? void 0 : _a.type;
var routeType = (_b = resource.route) === null || _b === void 0 ? void 0 : _b.type;
var path = resource.path;
var fetchBaseUrl = resolveResourceValue(path.baseUrl);
var resourceRoute = resolveResourceValue(path.route);
var baseUrlType = (_a = path.baseUrl) === null || _a === void 0 ? void 0 : _a.type;
var routeType = (_b = path.route) === null || _b === void 0 ? void 0 : _b.type;
if (baseUrlType === 'static' && routeType === 'static') {

@@ -552,3 +564,3 @@ var stringsToJoin = [fetchBaseUrl, resourceRoute].filter(function (item) { return item; }).join('/');

}, true),
], [types.identifier(fetchBaseUrl)]);
], [types.identifier(String(fetchBaseUrl))]);
}

@@ -572,4 +584,4 @@ return types.templateLiteral(__spreadArray([

]), true), __spreadArray([
types.identifier(fetchBaseUrl)
], (routeType === 'static' ? [] : [types.identifier(resourceRoute)]), true));
types.identifier(String(fetchBaseUrl))
], (routeType === 'static' ? [] : [types.identifier(String(resourceRoute))]), true));
};

@@ -581,6 +593,19 @@ var resolveResourceValue = function (value) {

if (value.type === 'static') {
return value.value;
return value.content;
}
return "process.env.".concat(value.value) || value.fallback;
return "process.env.".concat(value.content);
};
export var resolveObjectValue = function (prop) {
if (prop.type === 'expr') {
return types.identifier(prop.content);
}
var value = typeof prop.content === 'string'
? types.stringLiteral(prop.content)
: typeof prop.content === 'boolean'
? types.booleanLiteral(prop.content)
: typeof prop.content === 'number'
? types.numericLiteral(prop.content)
: types.identifier(String(prop.content));
return value;
};
//# sourceMappingURL=ast-utils.js.map
{
"name": "@teleporthq/teleport-plugin-common",
"version": "0.27.3-alpha.5",
"version": "0.27.3-alpha.6",
"description": "Common building and modelating functions for ASTs and HASTs",

@@ -28,8 +28,8 @@ "author": "teleportHQ",

"@babel/types": "^7.5.5",
"@teleporthq/teleport-shared": "^0.27.3-alpha.5",
"@teleporthq/teleport-types": "^0.27.3-alpha.2",
"@teleporthq/teleport-shared": "^0.27.3-alpha.6",
"@teleporthq/teleport-types": "^0.27.3-alpha.4",
"jss": "^10.0.0",
"jss-preset-default": "^10.0.0"
},
"gitHead": "c7a1ae9cf5878d2390df5dbeb2db5349d16744c3"
"gitHead": "1eaf52c9af73559b516d0d8f42919836f5f4f4d8"
}

@@ -261,3 +261,20 @@ import * as types from '@babel/types'

const { success, empty, error, loading } = node.content.nodes
const { statePersistanceName } = node.content
const { loopItemsReference, statePersistanceName } = node.content
const { type } = loopItemsReference
let errorNodeAST: types.JSXElement | null = null
let emptyNodeAST: types.JSXElement | null = null
let loadingNodeAST: types.JSXElement | null = null
let listNodeAST: types.JSXElement | null = null
const source = getRepeatSourceIdentifier(node.content.loopItemsReference, options)
/*
* TODO: @JK move this too into validator
* CMS list node can only be a dynamic !!
*/
if (type !== 'dynamic') {
throw new Error(`Node ${node} is dynamic, but the referece link is missing. \n
Missing loopItemsReference`)
}
const loadingStatePersistanceName = StringUtils.createStateOrPropStoringValue(

@@ -270,10 +287,26 @@ `${statePersistanceName}Loading`

const listNodeAST = !!success
? (generateNode(success, params, options) as types.JSXElement[])[0]
: null
const source = getRepeatSourceIdentifier(node.content.loopItemsReference, options)
if (empty) {
emptyNodeAST = generateNode(empty, params, options)[0] as types.JSXElement
}
const emptyNodeAST = !!empty
? (generateNode(empty, params, options)[0] as types.JSXElement)
: null
if (error) {
errorNodeAST = generateNode(error, params, options)[0] as types.JSXElement
params.stateDefinitions[`${statePersistanceName}Error`] = {
type: 'boolean',
defaultValue: false,
}
}
if (loading) {
loadingNodeAST = generateNode(loading, params, options)[0] as types.JSXElement
params.stateDefinitions[`${statePersistanceName}Loading`] = {
type: 'boolean',
defaultValue: false,
}
}
if (success) {
listNodeAST = (generateNode(success, params, options) as types.JSXElement[])[0]
}
const emptyNodeExpressionAST = empty

@@ -287,5 +320,2 @@ ? types.logicalExpression(

const errorNodeAST = !!error
? (generateNode(error, params, options)[0] as types.JSXElement)
: null
const errorNodeExpressionAST =

@@ -296,5 +326,2 @@ error && errorStatePersistanceName

const loadingNodeAST = !!loading
? (generateNode(loading, params, options)[0] as types.JSXElement)
: null
const loadingNodeExpressionAST =

@@ -301,0 +328,0 @@ loading && loadingStatePersistanceName

@@ -9,8 +9,7 @@ import * as types from '@babel/types'

UIDLRawValue,
Resource,
ResourceValue,
ResourceUrlParams,
UIDLStaticValue,
UIDLDynamicReference,
ResourceUrlValues,
UIDLResourceItem,
UIDLENVValue,
UIDLPropValue,
UIDLExpressionValue,

@@ -20,2 +19,4 @@ } from '@teleporthq/teleport-types'

import { createDynamicValueExpression } from '../node-handlers/node-to-jsx/utils'
import { ASTUtils } from '..'
/**

@@ -108,2 +109,7 @@ * Adds a class definition string to an existing string of classes

) => {
// TODO: Fix !!
if (!value) {
return
}
const content =

@@ -600,20 +606,17 @@ prefix === ''

export const generateRemoteResourceASTs = (
resource: Resource,
propsPrefix: string = '',
extraUrlParamsGenerator?: () => types.ObjectProperty[]
) => {
/*
* TODO: Add the ability to support body and payload.
* UIDLResourceItem['body']
* All the dynamic props are sent using the function props
*/
export const generateRemoteResourceASTs = (resource: UIDLResourceItem) => {
const fetchUrl = computeFetchUrl(resource)
const authHeaderAST = computeAuthorizationHeaderAST(resource)
const authHeaderAST = computeAuthorizationHeaderAST(resource?.headers)
const headersASTs = generateRESTHeadersAST(resource?.headers)
const queryParams = generateURLParamsAST(
resource.urlParams as ResourceUrlParams,
propsPrefix,
extraUrlParamsGenerator
)
const queryParams = generateURLParamsAST(resource?.params)
const fetchUrlQuasis = fetchUrl.quasis
const queryParamsQuasis = queryParams.quasis
const queryParamsQuasis = queryParams?.quasis || [types.templateElement({ raw: '', cooked: '' })]
if (queryParams.expressions.length > 0) {
if (queryParams?.expressions.length > 0) {
fetchUrlQuasis[fetchUrlQuasis.length - 1].value.raw =

@@ -628,3 +631,48 @@ fetchUrlQuasis[fetchUrlQuasis.length - 1].value.raw + '?'

const url = queryParams
const paramsDeclerations: Array<types.ObjectProperty | types.SpreadElement> = Object.keys(
resource?.params || {}
).reduce((acc: Array<types.ObjectProperty | types.SpreadElement>, item) => {
const prop = resource.params[item]
if (prop.type === 'static') {
acc.push(types.objectProperty(types.stringLiteral(item), ASTUtils.resolveObjectValue(prop)))
}
if (prop.type === 'dynamic') {
acc.push(
types.spreadElement(
types.logicalExpression(
'&&',
types.memberExpression(
types.identifier('params'),
types.stringLiteral(prop.content.id),
true,
false
),
types.objectExpression([
types.objectProperty(
types.stringLiteral(item),
types.memberExpression(
types.identifier('params'),
types.stringLiteral(prop.content.id),
true,
false
)
),
])
)
)
)
}
return acc
}, [])
const paramsAST = types.variableDeclaration('const', [
types.variableDeclarator(
types.identifier('urlParams'),
types.objectExpression(paramsDeclerations)
),
])
const url = queryParams?.quasis
? types.templateLiteral(

@@ -643,13 +691,6 @@ [...fetchUrlQuasis, ...queryParamsQuasis],

types.objectExpression([
types.objectProperty(types.identifier('method'), types.stringLiteral(resource.method)),
types.objectProperty(
types.identifier('headers'),
types.objectExpression([
types.objectProperty(
types.identifier('"Content-Type"'),
types.stringLiteral('application/json'),
false,
false
),
authHeaderAST,
])
types.objectExpression([...headersASTs, authHeaderAST])
),

@@ -674,5 +715,16 @@ ]),

return [fetchAST, responseJSONAST]
return [paramsAST, fetchAST, responseJSONAST]
}
const generateRESTHeadersAST = (headers: UIDLResourceItem['headers']): types.ObjectProperty[] => {
return Object.keys(headers)
.filter((header) => header !== 'authToken')
.map((header) => {
return types.objectProperty(
types.stringLiteral(header),
types.stringLiteral(String(headers[header].content))
)
})
}
export const generateMemberExpressionASTFromBase = (

@@ -697,7 +749,7 @@ base: types.MemberExpression | types.Identifier,

export const generateMemberExpressionASTFromPath = (
path: string[]
path: Array<string | number>
): types.MemberExpression | types.Identifier => {
const pathClone = [...path]
if (path.length === 1) {
return types.identifier(path[0])
return types.identifier(path[0].toString())
}

@@ -707,6 +759,17 @@

const currentPath = path[path.length - 1]
if (typeof currentPath === 'number') {
return types.memberExpression(
generateMemberExpressionASTFromPath(pathClone),
types.numericLiteral(currentPath),
true
)
}
const containsSpecial = currentPath.indexOf('.') !== -1 || currentPath.indexOf('-') !== -1
return types.memberExpression(
generateMemberExpressionASTFromPath(pathClone),
types.identifier(path[path.length - 1]),
false
containsSpecial ? types.stringLiteral(currentPath) : types.identifier(currentPath),
containsSpecial
)

@@ -716,18 +779,13 @@ }

const generateURLParamsAST = (
urlParams: ResourceUrlParams,
propsPrefix?: string,
extraUrlParamsGenerator?: () => types.ObjectProperty[]
) => {
urlParams: Record<string, UIDLStaticValue | UIDLPropValue>
): types.TemplateLiteral | null => {
if (!urlParams) {
return null
}
const queryString: Record<string, types.Expression> = {}
Object.keys(urlParams).forEach((key) => {
resolveDynamicValuesFromUrlParams(urlParams[key], queryString, key, propsPrefix)
resolveDynamicValuesFromUrlParams(urlParams[key], queryString, key)
})
const urlObject = types.objectExpression([
...Object.keys(queryString).map((key) => {
return types.objectProperty(types.stringLiteral(`${key}`), queryString[key])
}),
...(extraUrlParamsGenerator ? extraUrlParamsGenerator() : []),
])
return types.templateLiteral(

@@ -738,3 +796,3 @@ [

],
[types.newExpression(types.identifier('URLSearchParams'), [urlObject])]
[types.newExpression(types.identifier('URLSearchParams'), [types.identifier('urlParams')])]
)

@@ -744,57 +802,25 @@ }

const resolveDynamicValuesFromUrlParams = (
field: ResourceUrlValues,
field: UIDLStaticValue | UIDLPropValue,
query: Record<string, types.Expression>,
prefix: string = null,
propsPrefix: string = ''
prefix: string = null
) => {
if (Array.isArray(field)) {
const arrayValues = field.map((value) => {
return resolveUrlParamsValue(value, propsPrefix)
})
query[prefix] = types.arrayExpression(arrayValues)
if (field.type === 'dynamic' || field.type === 'static') {
query[prefix] = resolveUrlParamsValue(field)
return
}
if (field.type === 'dynamic' || field.type === 'static' || field.type === 'expr') {
query[prefix] = resolveUrlParamsValue(field, propsPrefix)
return
}
Object.keys(field).forEach((key) => {
const value = field[key]
const newPrefix = prefix ? `${prefix}[${key}]` : key
if (typeof value === 'object') {
resolveDynamicValuesFromUrlParams(value, query, newPrefix, propsPrefix)
return
}
query[newPrefix] = resolveUrlParamsValue(value, propsPrefix)
})
}
const resolveUrlParamsValue = (
urlParams: UIDLStaticValue | UIDLDynamicReference | UIDLExpressionValue,
propsPrefix: string = ''
) => {
if (urlParams.type === 'static') {
return types.stringLiteral(`${urlParams.content}`)
const resolveUrlParamsValue = (urlParam: UIDLStaticValue | UIDLPropValue) => {
if (urlParam.type === 'static') {
return types.stringLiteral(`${urlParam.content}`)
}
if (urlParams.type === 'expr') {
return types.identifier(urlParams.content)
}
if (urlParams.content.referenceType !== 'prop') {
if (urlParam.content.referenceType !== 'prop') {
throw new Error('Only prop references are supported for url params')
}
const paramPath = [...(propsPrefix ? [propsPrefix] : []), ...(urlParams.content.path || [])]
const paramPath = ['params', urlParam.content.id]
const templateLiteralElements = paramPath
.map((_, index) => {
if (index === paramPath.length - 1) {
return null
}
const isTail = index === paramPath.length - 2
const isTail = index === paramPath.length - 1
return types.templateElement(

@@ -815,4 +841,4 @@ {

const computeAuthorizationHeaderAST = (resource: Resource) => {
const authToken = resolveResourceValue(resource.authToken)
const computeAuthorizationHeaderAST = (headers: UIDLResourceItem['headers']) => {
const authToken = resolveResourceValue(headers.authToken)
if (!authToken) {

@@ -822,3 +848,3 @@ return null

const authTokenType = resource.authToken?.type
const authTokenType = headers.authToken?.type

@@ -848,3 +874,3 @@ return types.objectProperty(

],
[...(authTokenType === 'static' ? [] : [types.identifier(authToken)])]
[...(authTokenType === 'static' ? [] : [types.identifier(String(authToken))])]
),

@@ -856,8 +882,9 @@ false,

const computeFetchUrl = (resource: Resource) => {
const fetchBaseUrl = resolveResourceValue(resource.baseUrl)
const resourceRoute = resolveResourceValue(resource.route)
const computeFetchUrl = (resource: UIDLResourceItem) => {
const { path } = resource
const fetchBaseUrl = resolveResourceValue(path.baseUrl)
const resourceRoute = resolveResourceValue(path.route)
const baseUrlType = resource.baseUrl?.type
const routeType = resource.route?.type
const baseUrlType = path.baseUrl?.type
const routeType = path.route?.type

@@ -895,3 +922,3 @@ if (baseUrlType === 'static' && routeType === 'static') {

],
[types.identifier(fetchBaseUrl)]
[types.identifier(String(fetchBaseUrl))]
)

@@ -929,4 +956,4 @@ }

[
types.identifier(fetchBaseUrl),
...(routeType === 'static' ? [] : [types.identifier(resourceRoute)]),
types.identifier(String(fetchBaseUrl)),
...(routeType === 'static' ? [] : [types.identifier(String(resourceRoute))]),
]

@@ -936,3 +963,3 @@ )

const resolveResourceValue = (value: ResourceValue) => {
const resolveResourceValue = (value: UIDLStaticValue | UIDLENVValue) => {
if (!value) {

@@ -943,6 +970,23 @@ return ''

if (value.type === 'static') {
return value.value
return value.content
}
return `process.env.${value.value}` || value.fallback
return `process.env.${value.content}`
}
export const resolveObjectValue = (prop: UIDLStaticValue | UIDLPropValue | UIDLExpressionValue) => {
if (prop.type === 'expr') {
return types.identifier(prop.content)
}
const value =
typeof prop.content === 'string'
? types.stringLiteral(prop.content)
: typeof prop.content === 'boolean'
? types.booleanLiteral(prop.content)
: typeof prop.content === 'number'
? types.numericLiteral(prop.content)
: types.identifier(String(prop.content))
return value
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet