@krlwlfrt/tsg
Advanced tools
Comparing version 0.3.1 to 0.4.0
@@ -0,1 +1,15 @@ | ||
# [0.4.0](https://gitlab.com/krlwlfrt/tsg/compare/v0.3.1...v0.4.0) (2020-03-04) | ||
### Bug Fixes | ||
* remove extraneous file ([eff6da6](https://gitlab.com/krlwlfrt/tsg/commit/eff6da69a37fed83bda0419c82c1d49067df31c4)) | ||
### Features | ||
* add union type ([cfc4c55](https://gitlab.com/krlwlfrt/tsg/commit/cfc4c55395d40fe6a4a8cfff5ec41f659d9fb001)) | ||
## [0.3.1](https://gitlab.com/krlwlfrt/tsg/compare/v0.3.0...v0.3.1) (2020-02-18) | ||
@@ -2,0 +16,0 @@ |
@@ -18,3 +18,3 @@ /** | ||
/** | ||
* Optional value for attributes | ||
* Default value | ||
*/ | ||
@@ -26,3 +26,3 @@ value?: unknown; | ||
*/ | ||
export declare type Type = Entity | Property; | ||
export declare type Type = Entity | Property | Union; | ||
/** | ||
@@ -33,7 +33,7 @@ * An entity | ||
/** | ||
* Parent interface of the interface | ||
* Parent entity | ||
*/ | ||
parent?: ThingWithNameAndNamespace; | ||
/** | ||
* List of properties of the interface | ||
* List of properties | ||
*/ | ||
@@ -68,3 +68,3 @@ properties: Property[]; | ||
/** | ||
* Value of the property | ||
* Value of the attribute | ||
*/ | ||
@@ -74,2 +74,11 @@ value: boolean | number | string; | ||
/** | ||
* A union of types | ||
*/ | ||
export interface Union extends ThingWithNameAndNamespace { | ||
/** | ||
* List of united types | ||
*/ | ||
unitedTypes: (Type | string | number | boolean)[]; | ||
} | ||
/** | ||
* Check if a Type is an Entity | ||
@@ -81,2 +90,8 @@ * | ||
/** | ||
* Check if a Type is a Union | ||
* | ||
* @param type Type to check | ||
*/ | ||
export declare function isUnion(type: Type): type is Union; | ||
/** | ||
* Check if a ThingWithNameAndNamespace is an Attribute | ||
@@ -83,0 +98,0 @@ * |
@@ -30,2 +30,14 @@ "use strict"; | ||
/** | ||
* Check if a Type is a Union | ||
* | ||
* @param type Type to check | ||
*/ | ||
function isUnion(type) { | ||
if (!('unitedTypes' in type)) { | ||
return false; | ||
} | ||
return Array.isArray(type.unitedTypes); | ||
} | ||
exports.isUnion = isUnion; | ||
/** | ||
* Check if a ThingWithNameAndNamespace is an Attribute | ||
@@ -91,3 +103,4 @@ * | ||
let output = `/* tslint:disable */\n`; | ||
for (const type of types) { | ||
while (types.length > 0) { | ||
const type = types.shift(); | ||
output += '\n'; | ||
@@ -140,2 +153,15 @@ if (typeof type.description === 'string') { | ||
} | ||
else if (isUnion(type)) { | ||
output += `export type ${nameGenerator(type)} = ${type.unitedTypes.map((unitedType) => { | ||
if (typeof unitedType === 'string') { | ||
return `'${unitedType}'`; | ||
} | ||
if (typeof unitedType === 'number' || typeof unitedType === 'boolean') { | ||
return unitedType; | ||
} | ||
return nameGenerator(unitedType); | ||
}) | ||
.join(' | ')}; | ||
`; | ||
} | ||
else { | ||
@@ -149,2 +175,2 @@ output += `export type ${nameGenerator(type)} = ${propertyTypeGenerator(type)}; | ||
exports.generateTypeScript = generateTypeScript; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7O0FBaUZIOzs7O0dBSUc7QUFDSCxTQUFnQixRQUFRLENBQUMsSUFBVTtJQUNqQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEVBQUU7UUFDM0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQU5ELDRCQU1DO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFnQztJQUMxRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQztBQUM1QyxDQUFDO0FBTkQsa0NBTUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLEtBQWEsRUFBRSxjQUFjLEdBQUcsS0FBSztJQUN2RSw0Q0FBNEM7SUFDNUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRTNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7O0FBNEZIOzs7O0dBSUc7QUFDSCxTQUFnQixRQUFRLENBQUMsSUFBVTtJQUNqQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEVBQUU7UUFDM0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQU5ELDRCQU1DO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxJQUFVO0lBQ2hDLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsRUFBRTtRQUM1QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBTkQsMEJBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLEtBQWdDO0lBQzFELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRTtRQUN2QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDO0FBQzVDLENBQUM7QUFORCxrQ0FNQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYSxFQUFFLGNBQWMsR0FBRyxLQUFLO0lBQ3ZFLDRDQUE0QztJQUM1QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtB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 |
{ | ||
"name": "@krlwlfrt/tsg", | ||
"version": "0.3.1", | ||
"version": "0.4.0", | ||
"description": "TypeScript generator", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -24,2 +24,3 @@ /* | ||
description?: string; | ||
/** | ||
@@ -36,3 +37,3 @@ * Name of the thing | ||
/** | ||
* Optional value for attributes | ||
* Default value | ||
*/ | ||
@@ -45,3 +46,3 @@ value?: unknown; | ||
*/ | ||
export type Type = Entity | Property; | ||
export type Type = Entity | Property | Union; | ||
@@ -53,3 +54,3 @@ /** | ||
/** | ||
* Parent interface of the interface | ||
* Parent entity | ||
*/ | ||
@@ -59,3 +60,3 @@ parent?: ThingWithNameAndNamespace; | ||
/** | ||
* List of properties of the interface | ||
* List of properties | ||
*/ | ||
@@ -95,3 +96,3 @@ properties: Property[]; | ||
/** | ||
* Value of the property | ||
* Value of the attribute | ||
*/ | ||
@@ -102,2 +103,12 @@ value: boolean | number | string; | ||
/** | ||
* A union of types | ||
*/ | ||
export interface Union extends ThingWithNameAndNamespace { | ||
/** | ||
* List of united types | ||
*/ | ||
unitedTypes: (Type | string | number | boolean)[]; | ||
} | ||
/** | ||
* Check if a Type is an Entity | ||
@@ -116,2 +127,15 @@ * | ||
/** | ||
* Check if a Type is a Union | ||
* | ||
* @param type Type to check | ||
*/ | ||
export function isUnion(type: Type): type is Union { | ||
if (!('unitedTypes' in type)) { | ||
return false; | ||
} | ||
return Array.isArray(type.unitedTypes); | ||
} | ||
/** | ||
* Check if a ThingWithNameAndNamespace is an Attribute | ||
@@ -188,3 +212,5 @@ * | ||
for (const type of types) { | ||
while (types.length > 0) { | ||
const type = types.shift() as Type; | ||
output += '\n'; | ||
@@ -249,2 +275,16 @@ | ||
output += `}\n`; | ||
} else if (isUnion(type)) { | ||
output += `export type ${nameGenerator(type)} = ${type.unitedTypes.map((unitedType) => { | ||
if (typeof unitedType === 'string') { | ||
return `'${unitedType}'`; | ||
} | ||
if (typeof unitedType === 'number' || typeof unitedType === 'boolean') { | ||
return unitedType; | ||
} | ||
return nameGenerator(unitedType); | ||
}) | ||
.join(' | ')}; | ||
`; | ||
} else { | ||
@@ -251,0 +291,0 @@ output += `export type ${nameGenerator(type)} = ${propertyTypeGenerator(type)}; |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
195320
4921