/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@develar/typescript-json-schema@0.11.0/typescript-json-schema.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var __assign=this&&this.__assign||Object.assign||function(e){for(var t,r=1,i=arguments.length;r<i;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},ts=require("typescript"),glob=require("glob"),path=require("path"),stringify=require("json-stable-stringify"),vm=require("vm"),REGEX_FILE_NAME=/".*"\./,REGEX_TJS_JSDOC=/^-([\w]+)\s([\w]+)/g;function getDefaultArgs(){return{useRef:!0,useTypeAliasRef:!1,useRootRef:!1,useTitle:!1,useDefaultProperties:!1,disableExtraProperties:!1,usePropertyOrder:!1,useTypeOfKeyword:!1,generateRequired:!1,strictNullChecks:!1,ignoreErrors:!1,out:"",validationKeywords:[]}}function extend(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(e),n=1;n<arguments.length;n++){var o=arguments[n];if(null!=o)for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(i[s]=o[s])}return i}exports.getDefaultArgs=getDefaultArgs;var JsonSchemaGenerator=function(){function e(e,t,r,i,n){void 0===n&&(n=getDefaultArgs()),this.args=n,this.reffedDefinitions={},this.simpleTypesAllowedProperties={type:!0,description:!0},this.allSymbols=e,this.userSymbols=t,this.inheritingTypes=r,this.tc=i,this.userValidationKeywords=n.validationKeywords.reduce((function(e,t){return __assign({},e,((r={})[t]=!0,r));var r}),{})}return Object.defineProperty(e.prototype,"ReffedDefinitions",{get:function(){return this.reffedDefinitions},enumerable:!0,configurable:!0}),e.prototype.parseValue=function(e){try{return JSON.parse(e)}catch(t){return e}},e.prototype.parseCommentsIntoDefinition=function(t,r,i){var n=this;if(t){var o=t.getDocumentationComment();o.length&&(r.description=o.map((function(e){return"lineBreak"===e.kind?e.text:e.text.trim().replace(/\r\n/g,"\n")})).join("")),t.getJsDocTags().forEach((function(t){var o="TJS"===t.name?new RegExp(REGEX_TJS_JSDOC).exec(t.text).slice(1,3):[t.name,t.text],s=o[0],a=o[1];e.validationKeywords[s]||n.userValidationKeywords[s]?r[s]=n.parseValue(a):i[t.name]=!0}))}},e.prototype.extractLiteralValue=function(e){if(e.flags&ts.TypeFlags.EnumLiteral){var t=e.text,r=parseFloat(t);return isNaN(r)?t:r}return e.flags&ts.TypeFlags.StringLiteral?e.text:e.flags&ts.TypeFlags.NumberLiteral?parseFloat(e.text):e.flags&ts.TypeFlags.BooleanLiteral?"true"===e.intrinsicName:void 0},e.prototype.resolveTupleType=function(e){return!e.getSymbol()&&e.getFlags()&ts.TypeFlags.Object&&e.objectFlags&ts.ObjectFlags.Reference?e.target:e.getFlags()&ts.TypeFlags.Object&&e.objectFlags&ts.ObjectFlags.Tuple?e:null},e.prototype.getDefinitionForRootType=function(e,t,r,i){var n=this,o=e.getSymbol(),s=this.resolveTupleType(e);if(s){var a=(s.elementTypes||e.typeArguments).map((function(e){return n.getTypeDefinition(e,t)}));i.type="array",i.items=a,i.minItems=a.length,i.additionalItems={anyOf:a}}else{switch(t.typeToString(e,void 0,ts.TypeFormatFlags.UseFullyQualifiedType).toLowerCase()){case"string":i.type="string";break;case"number":var l="integer"===i.type||r&&"integer"===r.getName();i.type=l?"integer":"number";break;case"boolean":i.type="boolean";break;case"null":i.type="null";break;case"undefined":i.type="undefined";break;case"any":break;case"date":i.type="string",i.format="date-time";break;default:var u=this.extractLiteralValue(e);if(void 0!==u)i.type=typeof u,i.enum=[u];else if(!o||"Array"!==o.getName()&&"ReadonlyArray"!==o.getName()){var p=e;try{p=JSON.stringify(e)}catch(e){}console.error("Unsupported type: ",p)}else{var f=e.typeArguments[0];i.type="array",i.items=this.getTypeDefinition(f,t)}}}return i},e.prototype.getReferencedTypeSymbol=function(e,t){var r=e.getDeclarations();if(r&&r.length){var i=r[0].type;if(i&&i.kind&ts.SyntaxKind.TypeReference&&i.typeName)return t.getSymbolAtLocation(i.typeName)}},e.prototype.getDefinitionForProperty=function(e,t,r){var i=e.getName(),n=t.getTypeOfSymbolAtLocation(e,r),o=this.getReferencedTypeSymbol(e,t),s=this.getTypeDefinition(n,t,void 0,void 0,e,o);if(this.args.useTitle,s.hasOwnProperty("ignore"))return null;var a=e.valueDeclaration.initializer;if(a)if(a.expression)console.warn("initializer is expression for property "+i);else if(a.kind&&a.kind===ts.SyntaxKind.NoSubstitutionTemplateLiteral)s.default=a.getText();else try{var l={sandboxvar:null};vm.runInNewContext("sandboxvar="+a.getText(),l);var u=l.sandboxvar;null===u||"string"==typeof u||"number"==typeof u||"boolean"==typeof u||"[object Array]"===Object.prototype.toString.call(u)?s.default=u:u&&console.warn("unknown initializer for property "+i+": "+u)}catch(e){console.warn("exception evaluating initializer for property "+i)}return s},e.prototype.getEnumDefinition=function(e,t,r){var i=e.getSymbol().getDeclarations()[0],n=t.typeToString(e,void 0,ts.TypeFormatFlags.UseFullyQualifiedType),o=[],s=[],a=function(e){-1===s.indexOf(e)&&s.push(e)};return i.members.forEach((function(e){var r=e.name.text,i=t.getConstantValue(e);if(void 0!==i)o.push(i),a(typeof i);else{var s=e.initializer;if(s)if(s.expression){var l=s.expression,u=l.text;u?(o.push(u),a("string")):l.kind===ts.SyntaxKind.TrueKeyword||l.kind===ts.SyntaxKind.FalseKeyword?(o.push(l.kind===ts.SyntaxKind.TrueKeyword),a("boolean")):console.warn("initializer is expression for enum: "+n+"."+r)}else s.kind===ts.SyntaxKind.NoSubstitutionTemplateLiteral?(o.push(s.getText()),a("string")):s.kind===ts.SyntaxKind.NullKeyword&&(o.push(null),a("null"))}})),s.length&&(r.type=1===s.length?s[0]:s),o.length>0&&(r.enum=o.sort()),r},e.prototype.getUnionDefinition=function(e,t,r,i,n){for(var o,s=[],a=[],l=[],u=function(e){-1===a.indexOf(e)&&a.push(e)},p=0;p<e.types.length;++p){var f=e.types[p],y=this.extractLiteralValue(f);if(void 0!==y)o=y,-1===s.indexOf(o)&&s.push(o);else{var d=this.getTypeDefinition(e.types[p],r);if("undefined"===d.type)t&&(t.mayBeUndefined=!0);else{var g=Object.keys(d);1===g.length&&"type"===g[0]?"string"!=typeof d.type?console.error("Expected only a simple type."):u(d.type):l.push(d)}}}if(s.length>0)if(2===s.length&&"boolean"==typeof s[0]&&"boolean"==typeof s[1]&&s[0]!==s[1])u("boolean");else{var c={enum:s.sort()};s.every((function(e){return"string"==typeof e}))?c.type="string":s.every((function(e){return"number"==typeof e}))?c.type="number":s.every((function(e){return"boolean"==typeof e}))&&(c.type="boolean"),l.push(c)}if(a.length>0&&l.push({type:1===a.length?a[0]:a}),1===l.length)for(var m in l[0])l[0].hasOwnProperty(m)&&(n[m]=l[0][m]);else n[i]=l;return n},e.prototype.getClassDefinition=function(e,t,r){var i=this,n=e.getSymbol().getDeclarations()[0];if(this.args.useTypeOfKeyword&&n.kind===ts.SyntaxKind.FunctionType)return r.typeof="function",r;var o=n,s=t.getPropertiesOfType(e),a=t.typeToString(e,void 0,ts.TypeFormatFlags.UseFullyQualifiedType),l=ts.getCombinedModifierFlags(n);if(0===s.length&&o.members&&1===o.members.length&&o.members[0].kind===ts.SyntaxKind.IndexSignature){var u=o.members[0];if(1!==u.parameters.length)throw"Not supported: IndexSignatureDeclaration parameters.length != 1";var p=u.parameters[0].symbol,f=t.getTypeOfSymbolAtLocation(p,n),y=f.flags===ts.TypeFlags.String;if(f.flags!==ts.TypeFlags.Number&&!y)throw"Not supported: IndexSignatureDeclaration with index symbol other than a number or a string";var d=t.getTypeAtLocation(u.type),g=this.getTypeDefinition(d,t,void 0,"anyOf");y?(r.type="object",r.additionalProperties=g):(r.type="array",r.items=g)}else if(l&ts.ModifierFlags.Abstract){var c=this.inheritingTypes[a].map((function(e){return i.getTypeDefinition(i.allSymbols[e],t)}));r.oneOf=c}else{var m=s.reduce((function(e,r){var o=r.getName(),s=i.getDefinitionForProperty(r,t,n);return null!=s&&(e[o]=s),e}),{});if(r.type="object",r.properties=m,this.args.useDefaultProperties&&(r.defaultProperties=[]),this.args.disableExtraProperties&&void 0===r.additionalProperties&&(r.additionalProperties=!1),this.args.usePropertyOrder){var h=s.reduce((function(e,t){return e.push(t.getName()),e}),[]);r.propertyOrder=h}if(this.args.generateRequired){var b=s.reduce((function(e,t){return t.flags&ts.SymbolFlags.Optional||t.mayBeUndefined||e.push(t.getName()),e}),[]);b.length>0&&(r.required=b.sort())}}return r},e.prototype.addSimpleType=function(e,t){for(var r in e)if(!this.simpleTypesAllowedProperties[r])return!1;if(e.type)if("string"!=typeof e.type){if(!e.type.every((function(e){return"string"==typeof e})))return!1;-1===e.type.indexOf("null")&&e.type.push("null")}else{if("string"!=typeof e.type)return!1;"null"!==e.type&&(e.type=[e.type,"null"])}else e.type=t;return!0},e.prototype.makeNullable=function(e){if(!this.addSimpleType(e,"null")){var t=e.oneOf||e.anyOf;if(t)t.push({type:"null"});else{var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=e[i],delete e[i]);e.anyOf=[r,{type:"null"}]}}return e},e.prototype.getTypeDefinition=function(e,t,r,i,n,o){void 0===r&&(r=this.args.useRef),void 0===i&&(i="anyOf");var s={},a=s,l=e.getSymbol(),u=!l||"integer"===l.name||"Array"===l.name||"ReadonlyArray"===l.name||"Date"===l.name,p=!1;e.flags&ts.TypeFlags.Union&&(p=e.types.every((function(e){return!!(e.getFlags()&ts.TypeFlags.StringLiteral)})));var f=r&&o&&(this.args.useTypeAliasRef||p);f||(u||e.getFlags()&ts.TypeFlags.Object&&e.objectFlags&ts.ObjectFlags.Anonymous)&&(r=!1);var y="";f?y=t.getFullyQualifiedName(o.getFlags()&ts.SymbolFlags.Alias?t.getAliasedSymbol(o):o).replace(REGEX_FILE_NAME,""):r&&(y=t.typeToString(e,void 0,ts.TypeFormatFlags.UseFullyQualifiedType)),r&&(a={$ref:"#/definitions/"+y});var d={};if(this.parseCommentsIntoDefinition(o,s,d),n&&this.parseCommentsIntoDefinition(n,a,d),this.parseCommentsIntoDefinition(l,s,d),!r||!this.reffedDefinitions[y]){r&&(this.reffedDefinitions[y]=f&&o.getFlags()&ts.TypeFlags.IndexedAccess&&l?this.getTypeDefinition(e,t,!0,void 0,l,l):s,this.args.useTitle&&y&&(s.title=y));var g=l&&void 0!==l.getDeclarations()?l.getDeclarations()[0]:null;if(void 0===s.type)if(e.flags&ts.TypeFlags.Union)this.getUnionDefinition(e,n,t,i,s);else if(e.flags&ts.TypeFlags.Intersection){this.args.disableExtraProperties&&(s.additionalProperties=!1);for(var c=e.types,m=0;m<c.length;++m){var h=this.getTypeDefinition(c[m],t,!1);s.type=h.type,s.properties=extend(s.properties||{},h.properties),Object.keys(h.default||{}).length>0&&(s.default=extend(s.default||{},h.default)),h.required&&(s.required=(s.required||[]).concat(h.required))}}else u?this.getDefinitionForRootType(e,t,o,s):!g||g.kind!==ts.SyntaxKind.EnumDeclaration&&g.kind!==ts.SyntaxKind.EnumMember?l&&l.flags&ts.SymbolFlags.TypeLiteral&&0===Object.keys(l.members).length?(s.type="object",s.properties={}):this.getClassDefinition(e,t,s):this.getEnumDefinition(e,t,s)}return d.nullable&&this.makeNullable(a),a},e.prototype.setSchemaOverride=function(e,t){this.reffedDefinitions[e]=t},e.prototype.getSchemaForSymbol=function(e,t){if(void 0===t&&(t=!0),!this.allSymbols[e])throw"type "+e+" not found";var r=this.getTypeDefinition(this.allSymbols[e],this.tc,this.args.useRootRef);return this.args.useRef&&t&&Object.keys(this.reffedDefinitions).length>0&&(r.definitions=this.reffedDefinitions),r.$schema="http://json-schema.org/draft-04/schema#",r},e.prototype.getSchemaForSymbols=function(e){for(var t={$schema:"http://json-schema.org/draft-04/schema#",definitions:{}},r=0;r<e.length;r++){var i=e[r];t.definitions[i]=this.getTypeDefinition(this.userSymbols[i],this.tc,this.args.useRootRef)}return t},e.prototype.getUserSymbols=function(){return Object.keys(this.userSymbols)},e}();function getProgramFromFiles(e,t){void 0===t&&(t={});var r={noEmit:!0,emitDecoratorMetadata:!0,experimentalDecorators:!0,target:ts.ScriptTarget.ES5,module:ts.ModuleKind.CommonJS};for(var i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);return ts.createProgram(e,r)}function buildGenerator(e,t){void 0===t&&(t={});var r=getDefaultArgs();for(var i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);var n=e.getTypeChecker(),o=ts.getPreEmitDiagnostics(e);if(0===o.length||t.ignoreErrors){var s={},a={},l={};return e.getSourceFiles().forEach((function(e,t){!function t(r,i){if(r.kind===ts.SyntaxKind.ClassDeclaration||r.kind===ts.SyntaxKind.InterfaceDeclaration||r.kind===ts.SyntaxKind.EnumDeclaration||r.kind===ts.SyntaxKind.TypeAliasDeclaration){var n=r.symbol,o=i.getFullyQualifiedName(n),u=i.getTypeAtLocation(r);o=o.replace(/".*"\./,""),s[o]=u,e.hasNoDefaultLib||(a[o]=u),(u.getBaseTypes()||[]).forEach((function(e){var t=i.typeToString(e,void 0,ts.TypeFormatFlags.UseFullyQualifiedType);l[t]||(l[t]=[]),l[t].push(o)}))}else ts.forEachChild(r,(function(e){return t(e,i)}))}(e,n)})),new JsonSchemaGenerator(s,a,l,n,r)}return o.forEach((function(e){var t=ts.flattenDiagnosticMessageText(e.messageText,"\n");if(e.file){var r=e.file.getLineAndCharacterOfPosition(e.start),i=r.line,n=r.character;console.error(e.file.fileName+" ("+(i+1)+","+(n+1)+"): "+t)}else console.error(t)})),null}function generateSchema(e,t,r){void 0===r&&(r={});var i=buildGenerator(e,r);return null===i?null:"*"===t?i.getSchemaForSymbols(i.getUserSymbols()):i.getSchemaForSymbol(t)}function programFromConfig(e){var t=ts.parseConfigFileTextToJson(e,ts.sys.readFile(e)).config,r=ts.parseJsonConfigFileContent(t,ts.sys,path.dirname(e),{},e),i=r.options;return i.noEmit=!0,delete i.out,delete i.outDir,delete i.outFile,delete i.declaration,ts.createProgram(r.fileNames,i)}function exec(e,t,r){void 0===r&&(r=getDefaultArgs());var i=generateSchema("tsconfig.json"===path.basename(e)?programFromConfig(e):getProgramFromFiles(glob.sync(e),{strictNullChecks:r.strictNullChecks}),t,r);if(null!==i){var n=stringify(i,{space:4})+"\n\n";r.out?require("fs").writeFile(r.out,n,(function(e){e&&console.error("Unable to write output file: "+e.message)})):process.stdout.write(n)}}function run(){var e=getDefaultArgs(),t=require("yargs").usage("Usage: node typescript-json-schema.js <path-to-typescript-files-or-tsconfig> <type>").demand(2).boolean("refs").default("refs",e.useRef).describe("refs","Create shared ref definitions.").boolean("aliasRefs").default("aliasRefs",e.useTypeAliasRef).describe("aliasRefs","Create shared ref definitions for the type aliases.").boolean("topRef").default("topRef",e.useRootRef).describe("topRef","Create a top-level ref definition.").boolean("titles").default("titles",e.useTitle).describe("titles","Creates titles in the output schema.").boolean("defaultProps").default("defaultProps",e.useDefaultProperties).describe("defaultProps","Create default properties definitions.").boolean("noExtraProps").default("noExtraProps",e.disableExtraProperties).describe("noExtraProps","Disable additional properties in objects by default.").boolean("propOrder").default("propOrder",e.usePropertyOrder).describe("propOrder","Create property order definitions.").boolean("useTypeOfKeyword").default("useTypeOfKeyword",e.usePropertyOrder).describe("useTypeOfKeyword","Use typeOf keyword (https://goo.gl/DC6sni) for functions.").boolean("required").default("required",e.generateRequired).describe("required","Create required array for non-optional properties.").boolean("strictNullChecks").default("strictNullChecks",e.strictNullChecks).describe("strictNullChecks","Make values non-nullable by default.").boolean("ignoreErrors").default("ignoreErrors",e.ignoreErrors).describe("ignoreErrors","Generate even if the program has errors.").alias("out","o").describe("out","The output file, defaults to using stdout").array("validationKeywords").default("validationKeywords",e.validationKeywords).describe("validationKeywords","Provide additional validation keywords to include.").argv;exec(t._[0],t._[1],{useRef:t.refs,useTypeAliasRef:t.aliasRefs,useRootRef:t.topRef,useTitle:t.titles,useDefaultProperties:t.defaultProps,disableExtraProperties:t.noExtraProps,usePropertyOrder:t.propOrder,useTypeOfKeyword:t.useTypeOfKeyword,generateRequired:t.required,strictNullChecks:t.strictNullChecks,ignoreErrors:t.ignoreErrors,out:t.out,validationKeywords:t.validationKeywords})}JsonSchemaGenerator.validationKeywords={ignore:!0,description:!0,type:!0,minimum:!0,exclusiveMinimum:!0,maximum:!0,exclusiveMaximum:!0,multipleOf:!0,minLength:!0,maxLength:!0,format:!0,pattern:!0,minItems:!0,maxItems:!0,uniqueItems:!0,default:!0,additionalProperties:!0,enum:!0},exports.JsonSchemaGenerator=JsonSchemaGenerator,exports.getProgramFromFiles=getProgramFromFiles,exports.buildGenerator=buildGenerator,exports.generateSchema=generateSchema,exports.programFromConfig=programFromConfig,exports.exec=exec,exports.run=run,"undefined"==typeof window&&require.main===module&&run();
//# sourceMappingURL=/sm/b645e822af466be0419ad32cbd977d6d2331c8472efac056a4ebf3cd3647545b.map