susee 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -5,4 +5,4 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
|
5
5
|
this file except in compliance with the License. You may obtain a copy of the
|
|
6
6
|
License at http://www.apache.org/licenses/LICENSE-2.0
|
|
7
7
|
***************************************************************************** */
|
|
8
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var r=Object.getOwnPropertyDescriptor(t,i);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,r)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var i={};if(null!=t)for(var a=e(t),r=0;r<a.length;r++)"default"!==a[r]&&__createBinding(i,t,a[r]);return __setModuleDefault(i,t),i}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.susee=susee;const tsconfig_1=__importDefault(require("@suseejs/tsconfig")),dependencies_1=__importDefault(require("@suseejs/dependencies")),node_fs_1=__importDefault(require("node:fs")),node_path_1=__importDefault(require("node:path")),resolves_1=__importDefault(require("@phothinmaung/resolves")),tcolor_1=__importDefault(require("@suseejs/tcolor")),transformer_1=__importDefault(require("@suseejs/transformer")),typescript_1=__importDefault(require("typescript")),utils_1=__importDefault(require("@suseejs/utils")),node_buffer_1=require("node:buffer");function splitCamelCase(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/(_|-|\/)([a-z] || [A-Z])/g," ").replace(/([A-Z])/g,e=>e.toLowerCase()).replace(/^([a-z])/,e=>e.toUpperCase())}function uniqueName(){const e=new Map,t={setPrefix({key:i,value:a}){if(e.has(i))throw console.warn(`${i} already exist`),new Error;return e.set(i,[a,0]),t},getName(t,i){const[a,r]=e.get(t)||[],s=a?`${a}${i}_${(r??0)+1}`:`$nyein${i}_${(r??0)+1}`;return e.set(t,[a??"$nyein",(r??0)+1]),s},getPrefix(t){const[i]=e.get(t)||[];return i}};return t}const exportDefaultExportNameMap=[],exportDefaultImportNameMap=[],prefixKey="AnonymousName",genName=uniqueName().setPrefix({key:prefixKey,value:"__anonymous__"});function anonymousCallExpressionHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isCallExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updateCallExpression(r,i.createIdentifier(a.newName),r.typeArguments,r.arguments)}}else if(typescript_1.default.isPropertyAccessExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updatePropertyAccessExpression(r,i.createIdentifier(a.newName),r.name)}}else if(typescript_1.default.isNewExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updateNewExpression(r,i.createIdentifier(a.newName),r.typeArguments,r.arguments)}}else if(typescript_1.default.isExportSpecifier(r)&&typescript_1.default.isIdentifier(r.name)){const e=r.name.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updateExportSpecifier(r,r.isTypeOnly,r.propertyName,i.createIdentifier(a.newName))}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}}}function anonymousExportHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=s=>{const n=node_path_1.default.basename(t).split(".")[0];if((typescript_1.default.isFunctionDeclaration(s)||typescript_1.default.isClassDeclaration(s))&&void 0===s.name){let e=!1,t=!1;if(s.modifiers?.forEach(i=>{i.kind===typescript_1.default.SyntaxKind.ExportKeyword&&(e=!0),i.kind===typescript_1.default.SyntaxKind.DefaultKeyword&&(t=!0)}),e&&t){const e=genName.getName(prefixKey,n);if(exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),typescript_1.default.isFunctionDeclaration(s))return i.updateFunctionDeclaration(s,s.modifiers,s.asteriskToken,i.createIdentifier(e),s.typeParameters,s.parameters,s.type,s.body);if(typescript_1.default.isClassDeclaration(s))return i.updateClassDeclaration(s,s.modifiers,i.createIdentifier(e),s.typeParameters,s.heritageClauses,s.members)}}else if(typescript_1.default.isExportAssignment(s)&&!s.name&&!s.isExportEquals){if(typescript_1.default.isArrowFunction(s.expression)){const e=genName.getName(prefixKey,n),t=i.createArrowFunction(s.expression.modifiers,s.expression.typeParameters,s.expression.parameters,s.expression.type,s.expression.equalsGreaterThanToken,s.expression.body),a=i.createVariableDeclaration(i.createIdentifier(e),s.expression.exclamationToken,s.expression.type,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(s.expression.modifiers,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isObjectLiteralExpression(s.expression)){const e=genName.getName(prefixKey,n),t=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,s.expression),a=i.createVariableDeclarationList([t],typescript_1.default.NodeFlags.Const),o=i.createVariableStatement(void 0,a),p=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[o,p],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isArrayLiteralExpression(s.expression)){const e=genName.getName(prefixKey,n),t=i.createArrayLiteralExpression(s.expression.elements,!0),a=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(void 0,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isStringLiteral(s.expression)){const e=genName.getName(prefixKey,n),t=i.createStringLiteral(s.expression.text),a=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(void 0,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isNumericLiteral(s.expression)){const e=genName.getName(prefixKey,n),t=i.createNumericLiteral(s.expression.text),a=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(void 0,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}}return typescript_1.default.visitEachChild(s,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}}}function anonymousImportHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=s=>{if(typescript_1.default.isImportDeclaration(s)){const e=s.moduleSpecifier.getText(r),a=node_path_1.default.basename(e).split(".")[0].trim();if(s.importClause?.name&&typescript_1.default.isIdentifier(s.importClause.name)){const e=s.importClause.name.text.trim(),r=exportDefaultExportNameMap.find(e=>e.file===a);if(r){exportDefaultImportNameMap.push({base:e,file:t,newName:r.newName,isEd:!0});const a=i.updateImportClause(s.importClause,s.importClause.phaseModifier,i.createIdentifier(r.newName),s.importClause.namedBindings);return i.updateImportDeclaration(s,s.modifiers,a,s.moduleSpecifier,s.attributes)}}}return typescript_1.default.visitEachChild(s,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}}}const anonymousHandler=async(e,t)=>{const i=(0,resolves_1.default)([[anonymousExportHandler,t],[anonymousImportHandler,t],[anonymousCallExpressionHandler,t]]),a=await i.concurrent();for(const t of a)e=e.map(t);return e},namesMap=new Map,callNameMap=[],importNameMap=[],exportNameMap=[];function __uniqueName(){const e=new Map;return{setPrefix({key:t,value:i}){const a=[];let r;if(e.has(t))throw console.warn(`${t} already exist`),new Error;return r=i,e.set(t,i),{getName:function(e){const t=a.length,i=r?`${r}${e}_${t+1}`:`$nyein${e}_${t+1}`;return a.push(i),i}}},getPrefix(t){if(e.has(t))return e.get(t)}}}const dupName=__uniqueName().setPrefix({key:"DuplicatesNames",value:"__duplicatesNames__"}),normalizePathKey=e=>{const t=node_path_1.default.parse(e);let i=node_path_1.default.join(t.dir,t.name);return"index"===t.name&&(i=t.dir),node_path_1.default.normalize(i)},getFileKey=e=>normalizePathKey(e),getModuleKeyFromSpecifier=(e,t,i)=>{let a="";if(a=typescript_1.default.isStringLiteral(e)?e.text:e.getText(t).replace(/^['"]|['"]$/g,""),a.startsWith(".")||a.startsWith("/")){const e=node_path_1.default.dirname(i);return normalizePathKey(node_path_1.default.resolve(e,a))}return a},callExpression=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isCallExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?a=s.newName:n&&(a=n.newName),a)return i.updateCallExpression(r,i.createIdentifier(a),r.typeArguments,r.arguments)}}else if(typescript_1.default.isPropertyAccessExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?a=s.newName:n&&(a=n.newName),a)return i.updatePropertyAccessExpression(r,i.createIdentifier(a),r.name)}}else if(typescript_1.default.isNewExpression(r)&&typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?a=s.newName:n&&(a=n.newName),a)return i.updateNewExpression(r,i.createIdentifier(a),r.typeArguments,r.arguments)}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},exportExpression=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isExportSpecifier(r)){if(typescript_1.default.isIdentifier(r.name)){const e=r.name.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?(exportNameMap.push({base:e,file:getFileKey(t),newName:s.newName}),a=s.newName):n&&(a=n.newName),a)return i.updateExportSpecifier(r,r.isTypeOnly,r.propertyName,i.createIdentifier(a))}}else if(typescript_1.default.isExportAssignment(r)){const e=r.expression;if(typescript_1.default.isIdentifier(e)){const a=e.text;let s=null;const n=callNameMap.find(e=>e.base===a&&e.file===t),o=importNameMap.find(e=>e.base===a&&e.file===t);if(n?(exportNameMap.push({base:a,file:getFileKey(t),newName:n.newName}),s=n.newName):o&&(s=o.newName),s)return i.updateExportAssignment(r,r.modifiers,i.createIdentifier(s))}}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},importExpression=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=s=>{if(typescript_1.default.isImportDeclaration(s)){const e=getModuleKeyFromSpecifier(s.moduleSpecifier,r,t);let a=[];if(s.importClause?.namedBindings&&typescript_1.default.isNamedImports(s.importClause.namedBindings)&&(a=s.importClause.namedBindings.elements.map(e=>e.name.text.trim())),s.importClause?.name&&typescript_1.default.isIdentifier(s.importClause.name)){const a=s.importClause.name.text.trim(),r=exportNameMap.find(t=>t.base===a&&t.file===e);if(r){importNameMap.push({base:r.base,file:t,newName:r.newName});const e=i.updateImportClause(s.importClause,s.importClause.phaseModifier,i.createIdentifier(r.newName),s.importClause.namedBindings);return i.updateImportDeclaration(s,s.modifiers,e,s.moduleSpecifier,s.attributes)}}if(a.length>0&&s.importClause&&s.importClause.namedBindings&&typescript_1.default.isNamedImports(s.importClause.namedBindings)){const a=s.importClause.namedBindings.elements.map(a=>{const r=exportNameMap.find(t=>t.base===a.name.text.trim()&&t.file===e);return r?(importNameMap.push({base:r.base,file:t,newName:r.newName}),i.updateImportSpecifier(a,a.isTypeOnly,a.propertyName,i.createIdentifier(r.newName))):a}),r=i.updateNamedImports(s.importClause.namedBindings,a),n=i.updateImportClause(s.importClause,s.importClause.phaseModifier,s.importClause.name,r);return i.updateImportDeclaration(s,s.modifiers,n,s.moduleSpecifier,s.attributes)}}return typescript_1.default.visitEachChild(s,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},collector=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{function i(a,r=!0){if(r)if(typescript_1.default.isVariableStatement(a))a.declarationList.declarations.forEach(e=>{if(typescript_1.default.isIdentifier(e.name)){const i=e.name.text;namesMap.has(i)?namesMap.get(i).add({file:t}):namesMap.set(i,new Set([{file:t}]))}});else if(typescript_1.default.isFunctionDeclaration(a)||typescript_1.default.isClassDeclaration(a)||typescript_1.default.isEnumDeclaration(a)||typescript_1.default.isInterfaceDeclaration(a)||typescript_1.default.isTypeAliasDeclaration(a)){const e=a.name?.text;e&&(namesMap.has(e)?namesMap.get(e).add({file:t}):namesMap.set(e,new Set([{file:t}])))}return typescript_1.default.isBlock(a)||typescript_1.default.isFunctionDeclaration(a)||typescript_1.default.isFunctionExpression(a)||typescript_1.default.isArrowFunction(a)||typescript_1.default.isMethodDeclaration(a)||typescript_1.default.isClassDeclaration(a)?(typescript_1.default.isBlock(a)?typescript_1.default.visitNodes(a.statements,e=>i(e,!1)):typescript_1.default.forEachChild(a,e=>{i(e,!1)}),a):typescript_1.default.visitEachChild(a,e=>i(e,r),e)}return e=>i(e,!0)},r,e);return{file:t,content:s,...a}},updater=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isVariableStatement(r)){const e=r.declarationList.declarations.map(e=>{if(typescript_1.default.isIdentifier(e.name)){const a=e.name.text;if(namesMap.has(a)&&namesMap.get(a).size>1){const r=dupName.getName(a);return callNameMap.push({base:a,file:t,newName:r}),i.updateVariableDeclaration(e,i.createIdentifier(r),e.exclamationToken,e.type,e.initializer)}}return e}),a=i.updateVariableDeclarationList(r.declarationList,e);return i.updateVariableStatement(r,r.modifiers,a)}if(typescript_1.default.isFunctionDeclaration(r)){if(r.name&&typescript_1.default.isIdentifier(r.name)){const e=r.name.text;if(namesMap.has(e)&&namesMap.get(e).size>1){const a=dupName.getName(e);return callNameMap.push({base:e,file:t,newName:a}),i.updateFunctionDeclaration(r,r.modifiers,r.asteriskToken,i.createIdentifier(a),r.typeParameters,r.parameters,r.type,r.body)}}}else if(typescript_1.default.isClassDeclaration(r)&&r.name&&typescript_1.default.isIdentifier(r.name)){const e=r.name.text;if(namesMap.has(e)&&namesMap.get(e).size>1){const a=dupName.getName(e);return callNameMap.push({base:e,file:t,newName:a}),i.updateClassDeclaration(r,r.modifiers,i.createIdentifier(a),r.typeParameters,r.heritageClauses,r.members)}}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},duplicateHandlers={renamed:async(e,t)=>{const i=(0,resolves_1.default)([[collector,t],[updater,t],[callExpression,t],[exportExpression,t],[importExpression,t],[callExpression,t],[exportExpression,t]]),a=await i.concurrent();for(const t of a)e=e.map(t);return e},notRenamed:async(e,t)=>{let i=!1;const a=(0,resolves_1.default)([[collector,namesMap,t]]),r=await a.concurrent();return e.map(r[0]),await utils_1.default.wait(1e3),namesMap.forEach((e,t)=>{e.size>1&&(i=!0,console.warn(`Name -> ${t} declared in multiple files :`),e.forEach(e=>console.warn(` - ${e.file}`)))}),await utils_1.default.wait(500),i&&process.exit(1),e}};function mergeImportsStatement(e){const t=new Map,i=new Map,a=new Map,r=new Map,s=new Map;for(const n of e){const e=n.match(/import\s+(?:type\s+)?(?:(.*?)\s+from\s+)?["']([^"']+)["'];?/);if(!e)continue;const[,o,p]=e,c=n.includes("import type"),l=p;if(!o){const e=n.match(/import\s+(?:type\s+)?(\w+)/);if(e){const t=e[1],i=c?r:a;i.has(l)||i.set(l,new Set),i.get(l)?.add(t)}continue}if(o.startsWith("{")){const e=c?i:t;e.has(l)||e.set(l,new Set);o.replace(/[{}]/g,"").split(",").map(e=>e.trim()).filter(Boolean).forEach(t=>e.get(l)?.add(t))}else if(o.startsWith("* as")){const e=o.match(/\*\s+as\s+(\w+)/);if(e){const t=e[1];s.has(l)||s.set(l,new Set),s.get(l)?.add(t)}}else{const e=c?r:a;e.has(l)||e.set(l,new Set),e.get(l)?.add(o.trim())}}const n=[];for(const[e,a]of t){const t=i.get(e)||new Set,r=new Set([...a]);for(const e of t)a.has(e)||r.add(e);if(r.size>0){const t=Array.from(r).sort().join(", ");n.push(`import { ${t} } from "${e}";`)}}for(const[e,a]of i)if(!t.has(e)&&a.size>0){const t=Array.from(a).sort().join(", ");n.push(`import type { ${t} } from "${e}";`)}for(const[e,t]of a){const i=r.get(e)||new Set,a=new Set([...t]);for(const e of i)t.has(e)||a.add(e);if(a.size>0){const t=Array.from(a).join(", ");n.push(`import ${t} from "${e}";`)}}for(const[e,t]of r)if(!a.has(e)&&t.size>0){const i=Array.from(t).join(", ");n.push(`import type ${i} from "${e}";`)}for(const[e,t]of s)if(t.size>0){const i=Array.from(t).join(", ");n.push(`import * as ${i} from "${e}";`)}return n.sort()}function esmExportRemoveHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0);return{file:t,content:(0,transformer_1.default)(e=>{const{factory:t}=e,i=a=>{if(!utils_1.default.isInsideNamespace(a)&&(typescript_1.default.isFunctionDeclaration(a)||typescript_1.default.isClassDeclaration(a)||typescript_1.default.isInterfaceDeclaration(a)||typescript_1.default.isTypeAliasDeclaration(a)||typescript_1.default.isEnumDeclaration(a)||typescript_1.default.isVariableStatement(a))){const e=a.modifiers?.filter(e=>e.kind!==typescript_1.default.SyntaxKind.ExportKeyword&&e.kind!==typescript_1.default.SyntaxKind.DefaultKeyword);if(e?.length!==a.modifiers?.length){if(typescript_1.default.isFunctionDeclaration(a))return t.updateFunctionDeclaration(a,e,a.asteriskToken,a.name,a.typeParameters,a.parameters,a.type,a.body);if(typescript_1.default.isClassDeclaration(a))return t.updateClassDeclaration(a,e,a.name,a.typeParameters,a.heritageClauses,a.members);if(typescript_1.default.isInterfaceDeclaration(a))return t.updateInterfaceDeclaration(a,e,a.name,a.typeParameters,a.heritageClauses,a.members);if(typescript_1.default.isTypeAliasDeclaration(a))return t.updateTypeAliasDeclaration(a,e,a.name,a.typeParameters,a.type);if(typescript_1.default.isEnumDeclaration(a))return t.updateEnumDeclaration(a,e,a.name,a.members);if(typescript_1.default.isVariableStatement(a))return t.updateVariableStatement(a,e,a.declarationList)}}if(typescript_1.default.isExportDeclaration(a))return t.createEmptyStatement();if(typescript_1.default.isExportAssignment(a)){const e=a.expression;if(typescript_1.default.isIdentifier(e))return t.createEmptyStatement()}return typescript_1.default.visitEachChild(a,i,e)};return e=>typescript_1.default.visitNode(e,i)},r,e),...a}}}let properties=[];const typeObj={},typesNames=[];function findProperty(e){const t=[];return typescript_1.default.isPropertyAccessExpression(e)&&typescript_1.default.isIdentifier(e.expression)&&t.push(e.expression.text),e.forEachChild(e=>findProperty(e)),t}function importAllRemoveHandler(e,t){return({file:i,content:a,...r})=>{const s=typescript_1.default.createSourceFile(i,a,typescript_1.default.ScriptTarget.Latest,!0),n=new Set;for(const e of s.statements)if(typescript_1.default.isImportEqualsDeclaration(e)&&e.isTypeOnly){const t=e.moduleReference;typescript_1.default.isExternalModuleReference(t)&&typescript_1.default.isStringLiteral(t.expression)&&n.add(e.name.text)}const o=(0,transformer_1.default)(t=>{const{factory:a}=t,r=o=>{properties=[...properties,...findProperty(o)];const p={isNamespace:!1,isTypeOnly:!1,isTypeNamespace:!1,source:"",importedString:void 0,importedObject:void 0};if(typescript_1.default.isTypeReferenceNode(o)&&typescript_1.default.isQualifiedName(o.typeName)&&typescript_1.default.isIdentifier(o.typeName.left)&&typescript_1.default.isIdentifier(o.typeName.right)){const e=o.typeName.left.text,t=o.typeName.right.text;if(typesNames.push(e),e in typeObj?typeObj[e]?.push(t):typeObj[e]=[t],utils_1.default.checkModuleType(s,i).isCommonJs&&"ts"!==e&&!n.has(e))return a.updateTypeReferenceNode(o,a.createIdentifier(t),void 0)}if(typescript_1.default.isImportDeclaration(o)){const t=o.getText(s);return e.push(t),a.createEmptyStatement()}if(typescript_1.default.isImportEqualsDeclaration(o)){const t=o.name.text,i=o.moduleReference;let r;if(o.isTypeOnly&&(p.isTypeOnly=!0),p.importedString=t,p.isTypeOnly||properties.includes(t)&&(p.isNamespace=!0),typescript_1.default.isExternalModuleReference(i)&&typescript_1.default.isStringLiteral(i.expression)&&(p.source=i.expression.text),p.importedString&&!p.importedObject&&(r=p.isTypeOnly?n.has(p.importedString)?`import type * as ${p.importedString} from "${p.source}";`:typesNames.includes(p.importedString)?`import type { ${typeObj[p.importedString]?.join(",")} } from "${p.source}";`:`import type ${p.importedString} from "${p.source}";`:p.isNamespace&&p.source&&"typescript"!==p.source?`import * as ${p.importedString} from "${p.source}";`:`import ${p.importedString} from "${p.source}";`),!p.importedString&&p.importedObject&&(r=`import { ${p.importedObject.join(", ")} } from "${p.source}";`),r)return e.push(r),a.createEmptyStatement()}if(typescript_1.default.isVariableStatement(o)){const t=o.declarationList.declarations;if(1===t.length){const i=t[0];if(i.initializer&&typescript_1.default.isCallExpression(i.initializer)&&typescript_1.default.isIdentifier(i.initializer.expression)&&"require"===i.initializer.expression.escapedText){const t=i.initializer.arguments[0];if(typescript_1.default.isStringLiteral(t)&&(p.source=t.text),typescript_1.default.isIdentifier(i.name)){const e=i.name.text;p.importedString=e,properties.includes(e)&&(p.isNamespace=!0)}else if(typescript_1.default.isObjectBindingPattern(i.name)){const e=[];for(const t of i.name.elements)typescript_1.default.isIdentifier(t.name)&&e.push(t.name.text);e.length>0&&(p.importedObject=e)}let r;if(p.importedString&&!p.importedObject&&(r=p.isNamespace?`import * as ${p.importedString} from "${p.source}";`:`import ${p.importedString} from "${p.source}";`),!p.importedString&&p.importedObject&&(r=`import { ${p.importedObject.join(", ")} } from "${p.source}";`),r)return e.push(r),a.createEmptyStatement()}}}return typescript_1.default.visitEachChild(o,r,t)};return e=>typescript_1.default.visitNode(e,r)},s,t);return{file:i,content:o,...r}}}const removeHandlers=async(e,t)=>{const i=(0,resolves_1.default)([[importAllRemoveHandler,e,t],[esmExportRemoveHandler,t]]);return await i.series()};function collectBindingNames(e,t){typescript_1.default.isIdentifier(e)?t.push(e.text):(typescript_1.default.isObjectBindingPattern(e)||typescript_1.default.isArrayBindingPattern(e))&&e.elements.forEach(e=>{typescript_1.default.isBindingElement(e)&&e.name&&collectBindingNames(e.name,t)})}function clearUnusedCode(e,t,i,a={treatExportsAsUsed:!0}){const r=typescript_1.default.createSourceFile(t,e,typescript_1.default.ScriptTarget.Latest,!0),s=new Map,n=new Set,o=(e,t=!1)=>{const i=s.get(e);s.set(e,{exported:!!i?.exported||t})},p=e=>{if(typescript_1.default.isImportDeclaration(e)&&e.importClause){const t=e.importClause;t.name&&typescript_1.default.isIdentifier(t.name)&&o(t.name.text,!1),t.namedBindings&&(typescript_1.default.isNamedImports(t.namedBindings)?t.namedBindings.elements.forEach(e=>{typescript_1.default.isImportSpecifier(e)&&typescript_1.default.isIdentifier(e.name)&&o(e.name.text,!1)}):typescript_1.default.isNamespaceImport(t.namedBindings)&&typescript_1.default.isIdentifier(t.namedBindings.name)&&o(t.namedBindings.name.text,!1))}else if(typescript_1.default.isImportEqualsDeclaration(e)&&typescript_1.default.isIdentifier(e.name))o(e.name.text,!1);else if(typescript_1.default.isVariableStatement(e)){const t=e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)??!1;e.declarationList.declarations.forEach(e=>{collectBindingNames(e.name,[]);const i=[];collectBindingNames(e.name,i),i.forEach(e=>o(e,t))})}else if(typescript_1.default.isFunctionDeclaration(e)&&e.name&&typescript_1.default.isIdentifier(e.name)){const t=e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)??!1;o(e.name.text,t)}else if(typescript_1.default.isClassDeclaration(e)&&e.name&&typescript_1.default.isIdentifier(e.name)){const t=e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)??!1;o(e.name.text,t)}if(typescript_1.default.isIdentifier(e)){const t=e.parent;typescript_1.default.isVariableDeclaration(t)&&t.name===e||typescript_1.default.isFunctionDeclaration(t)&&t.name===e||typescript_1.default.isClassDeclaration(t)&&t.name===e||typescript_1.default.isImportClause(t)&&t.name===e||typescript_1.default.isImportSpecifier(t)&&t.name===e||typescript_1.default.isNamespaceImport(t)&&t.name===e||typescript_1.default.isBindingElement(t)&&t.name===e||typescript_1.default.isParameter(t)&&t.name===e||n.add(e.text)}typescript_1.default.forEachChild(e,p)};p(r);const c=new Set;s.forEach((e,t)=>{n.has(t)||a.treatExportsAsUsed&&e.exported||c.add(t)});return(0,transformer_1.default)(e=>{const t=i=>{if(typescript_1.default.isImportDeclaration(i)&&i.importClause){const e=i.importClause,t=e.name&&typescript_1.default.isIdentifier(e.name)?e.name.text:void 0;let a;const r=[];e.namedBindings&&(typescript_1.default.isNamedImports(e.namedBindings)?e.namedBindings.elements.forEach(e=>{typescript_1.default.isImportSpecifier(e)&&typescript_1.default.isIdentifier(e.name)&&r.push(e)}):typescript_1.default.isNamespaceImport(e.namedBindings)&&typescript_1.default.isIdentifier(e.namedBindings.name)&&(a=e.namedBindings.name.text));const s=!!t&&!c.has(t),n=!!a&&!c.has(a),o=r.filter(e=>!c.has(e.name.text));if(!s&&!n&&0===o.length)return typescript_1.default.factory.createNotEmittedStatement(i);if(!s&&!!e.name||void 0!==a&&!n||o.length!==r.length){let e;e=o.length>0?typescript_1.default.factory.createNamedImports(o):n&&a?typescript_1.default.factory.createNamespaceImport(typescript_1.default.factory.createIdentifier(a)):void 0;const r=s&&t?typescript_1.default.factory.createIdentifier(t):void 0,p=typescript_1.default.factory.createImportClause(!1,r,e);return typescript_1.default.factory.updateImportDeclaration(i,i.modifiers,p,i.moduleSpecifier,i.assertClause)}return i}if((typescript_1.default.isFunctionDeclaration(i)||typescript_1.default.isClassDeclaration(i))&&i.name&&typescript_1.default.isIdentifier(i.name))return c.has(i.name.text)?typescript_1.default.factory.createNotEmittedStatement(i):i;if(typescript_1.default.isVariableStatement(i)){const e=[];i.declarationList.declarations.forEach(t=>collectBindingNames(t.name,e));return e.some(e=>!c.has(e))?i:typescript_1.default.factory.createNotEmittedStatement(i)}return typescript_1.default.visitEachChild(i,t,e)};return e=>typescript_1.default.visitNode(e,t)},r,i)}async function bundler(e){const t="."===e.exportPath?"Main":splitCamelCase(e.exportPath.slice(2));console.time(`${tcolor_1.default.cyan("Bundled")} -> ${tcolor_1.default.brightCyan(t)} ${tcolor_1.default.cyan("export path")}`);let i=e.depFiles;const a=e.rename,r=e.tsOptions.default,s=e.plugins;let n=[];if(s.length)for(let e of s)e="function"==typeof e?e():e,"dependency"===e.type&&(i=e.async?await e.func(i):e.func(i));i=a?await duplicateHandlers.renamed(i,r):await duplicateHandlers.notRenamed(i,r),i=await anonymousHandler(i,r);const o=await removeHandlers(n,r);i=i.map(o[0]);const p=i.slice(0,-1).map(o[1]),c=i.slice(-1),l=/["']((?!\.\/|\.\.\/)[^"']+)["']/;n=n.filter(e=>l.test(e)),n=mergeImportsStatement(n);let f=`${n.join("\n").trim()}\n${p.map(e=>`${`//${node_path_1.default.relative(process.cwd(),e.file)}`}\n${e.content}`).join("\n").trim()}\n${c.map(e=>`${`//${node_path_1.default.relative(process.cwd(),e.file)}`}\n${e.content}`).join("\n").trim()}`;if(f=f.replace(/^s*;\s*$/gm,"").trim(),f=clearUnusedCode(f,e.fileName,r),s.length)for(let e of s)e="function"==typeof e?e():e,"pre-process"===e.type&&(f=e.async?await e.func(f):e.func(f));return console.timeEnd(`${tcolor_1.default.cyan("Bundled")} -> ${tcolor_1.default.brightCyan(t)} ${tcolor_1.default.cyan("export path")}`),{bundledContent:f,...e}}async function bundle(e){const t=[];for(const i of e.points){const e=await bundler(i);t.push(e)}return{points:t,allowUpdatePackageJson:e.allowUpdatePackageJson}}function createHost(e,t){const i={},a={getSourceFile:(i,a)=>{if(i===t)return typescript_1.default.createSourceFile(i,e,a)},writeFile:(e,t)=>{i[e]=t},getDefaultLibFileName:e=>typescript_1.default.getDefaultLibFilePath(e),getCurrentDirectory:()=>"",getDirectories:()=>[],fileExists:e=>e===t,readFile:i=>i===t?e:void 0,getCanonicalFileName:e=>e,useCaseSensitiveFileNames:()=>!0,getNewLine:()=>"\n"};return{createdFiles:i,host:a}}const isCjs=e=>e.commonjs&&e.commonjsTypes,isEsm=e=>e.esm&&e.esmTypes;function getExports(e,t){return isCjs(e)&&isEsm(e)?{[t]:{import:{types:`./${node_path_1.default.relative(process.cwd(),e.esmTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.esm)}`},require:{types:`./${node_path_1.default.relative(process.cwd(),e.commonjsTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.commonjs)}`}}}:isCjs(e)&&!isEsm(e)?{[t]:{require:{types:`./${node_path_1.default.relative(process.cwd(),e.commonjsTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.commonjs)}`}}}:!isCjs(e)&&isEsm(e)?{[t]:{import:{types:`./${node_path_1.default.relative(process.cwd(),e.esmTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.esm)}`}}}:{}}async function writePackage(e,t){let i=!0;"."!==t&&(i=!1);const a=typescript_1.default.sys.resolvePath("package.json"),r=node_fs_1.default.readFileSync(a,"utf8"),s=JSON.parse(r);let{name:n,version:o,description:p,main:c,module:l,type:f,types:d,exports:u,...m}=s;await utils_1.default.wait(500),f="module";let y={},_={},h={},g={};if(i)y=e.main?{main:node_path_1.default.relative(process.cwd(),e.main)}:{},_=e.module?{module:node_path_1.default.relative(process.cwd(),e.module)}:{},h=e.types?{types:node_path_1.default.relative(process.cwd(),e.types)}:{},g={exports:{...getExports(e,t)}};else{y=c?{main:c}:{},_=l?{module:l}:{},h=d?{types:d}:{};g={exports:{...u&&"object"==typeof u&&!Array.isArray(u)?{...u}:{},...getExports(e,t)}}}await utils_1.default.wait(1e3);const x={name:n,version:o,description:p,type:f,...y,...h,..._,...g,...m};utils_1.default.writeCompileFile(a,JSON.stringify(x,null,2))}class Compiler{constructor(e){this.object=e,this.files={commonjs:void 0,commonjsTypes:void 0,esm:void 0,esmTypes:void 0,main:void 0,module:void 0,types:void 0}}_isUpdate(){return this.object.allowUpdatePackageJson}async _commonjs(e){const t="."===e.exportPath,i=t?"Main":splitCamelCase(e.exportPath.slice(2));console.time(`${tcolor_1.default.cyan("Compiled CJS")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`);const a=e.fileName,r=e.bundledContent,s=e.format,n=e.plugins,o=e.tsOptions.cjs,p=createHost(r,a),c=p.createdFiles,l=p.host;typescript_1.default.createProgram([a],o,l).emit(),Object.entries(c).map(async([e,i])=>{if(".js"===node_path_1.default.extname(e)&&n.length)for(let t of n)t="function"==typeof t?t():t,"post-process"===t.type&&(i=t.async?await t.func(i,e):t.func(i,e));this._isUpdate()&&(e.match(/.js/g)&&(this.files.commonjs=e.replace(/.js/g,".cjs")),e.match(/.d.ts/g)&&(this.files.commonjsTypes=e.replace(/.d.ts/g,".d.cts")),!t||"both"!==s&&"commonjs"!==s||(this.files.commonjs&&(this.files.main=this.files.commonjs),this.files.commonjsTypes&&(this.files.types=this.files.commonjsTypes))),e=(e=(e=e.replace(/.js/g,".cjs")).replace(/.map.js/g,".map.cjs")).replace(/.d.ts/g,".d.cts"),await utils_1.default.wait(500),"commonjs"===s&&await utils_1.default.clearFolder(node_path_1.default.dirname(e)),await utils_1.default.writeCompileFile(e,i)}),console.timeEnd(`${tcolor_1.default.cyan("Compiled CJS")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`)}async _esm(e){const t="."===e.exportPath,i=t?"Main":splitCamelCase(e.exportPath.slice(2));console.time(`${tcolor_1.default.cyan("Compiled ESM")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`);const a=e.fileName,r=e.bundledContent,s=e.format,n=e.plugins,o=e.tsOptions.esm,p=createHost(r,a),c=p.createdFiles,l=p.host;typescript_1.default.createProgram([a],o,l).emit(),Object.entries(c).map(async([e,i])=>{if(".js"===node_path_1.default.extname(e)&&n.length)for(let t of n)t="function"==typeof t?t():t,"post-process"===t.type&&(i=t.async?await t.func(i,e):t.func(i,e));this._isUpdate()&&(e.match(/.js/g)&&(this.files.esm=e.replace(/.js/g,".mjs")),e.match(/.d.ts/g)&&(this.files.esmTypes=e.replace(/.d.ts/g,".d.mts")),t&&"both"===s&&this.files.esm&&(this.files.module=this.files.esm)),e=(e=(e=e.replace(/.js/g,".mjs")).replace(/.map.js/g,".map.mjs")).replace(/.d.ts/g,".d.mts"),await utils_1.default.wait(500),"commonjs"!==s&&await utils_1.default.clearFolder(node_path_1.default.dirname(e)),await utils_1.default.writeCompileFile(e,i)}),console.timeEnd(`${tcolor_1.default.cyan("Compiled ESM")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`)}async compile(){for(const e of this.object.points){switch(await utils_1.default.wait(500),e.format){case"commonjs":await this._commonjs(e),this._isUpdate()&&await writePackage(this.files,e.exportPath);break;case"esm":await this._esm(e),this._isUpdate()&&await writePackage(this.files,e.exportPath);break;case"both":await this._esm(e),await utils_1.default.wait(1e3),await this._commonjs(e),this._isUpdate()&&await writePackage(this.files,e.exportPath)}await utils_1.default.wait(500)}}}var checks;!function(e){function t(e,t){if(!t.noCheck){const i=e.map(e=>e.file);let a=!1;const r=typescript_1.default.createProgram(i,t);for(const e of i){const t=r.getSourceFile(e);t||(console.error(tcolor_1.default.magenta(`File not found: ${e}`)),typescript_1.default.sys.exit(1));const i=[...r.getSyntacticDiagnostics(t),...r.getSemanticDiagnostics(t),...r.getDeclarationDiagnostics(t)];if(i.length>0){const e={getCurrentDirectory:()=>process.cwd(),getCanonicalFileName:e=>e,getNewLine:()=>typescript_1.default.sys.newLine};console.error(typescript_1.default.formatDiagnosticsWithColorAndContext(i,e)),a=!0}}if(!a)return!0;typescript_1.default.sys.exit(1)}}function i(e){let t=0,i=0;for(const a of e)try{const r=typescript_1.default.createSourceFile(a.file,a.content,typescript_1.default.ScriptTarget.Latest,!0);let s=!1,n=!1;function o(e){if((typescript_1.default.isImportDeclaration(e)||typescript_1.default.isImportEqualsDeclaration(e)||typescript_1.default.isExportDeclaration(e)||typescript_1.default.isExportSpecifier(e)||typescript_1.default.isExportAssignment(e))&&(s=!0),(typescript_1.default.isVariableStatement(e)||typescript_1.default.isFunctionDeclaration(e)||typescript_1.default.isInterfaceDeclaration(e)||typescript_1.default.isTypeAliasDeclaration(e)||typescript_1.default.isEnumDeclaration(e)||typescript_1.default.isClassDeclaration(e))&&e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)&&(s=!0),typescript_1.default.isCallExpression(e)&&typescript_1.default.isIdentifier(e.expression)&&"require"===e.expression.text&&e.arguments.length>0&&(n=!0),typescript_1.default.isPropertyAccessExpression(e)){const t=e.getText(r);(t.startsWith("module.exports")||t.startsWith("exports."))&&(n=!0)}typescript_1.default.forEachChild(e,o)}o(r),s&&!n?0:n&&!s?t++:s&&n&&0}catch(p){console.error(tcolor_1.default.magenta(`Error checking module format for ${a.file} : \n ${p}`)),i++}return i&&(console.error(tcolor_1.default.magenta("Unknown error when checking module types in the dependencies tree.")),typescript_1.default.sys.exit(1)),t&&(console.error(tcolor_1.default.magenta("The package detects CommonJs format in the dependencies tree, that unsupported.")),typescript_1.default.sys.exit(1)),!0}function a(e){const t=new Set([".ts",".mts",".cts",".tsx"]);for(const i of e){const e=node_path_1.default.extname(i.file);t.has(e)||(console.error(tcolor_1.default.magenta(`${i.file} has no valid TypeScript extension`)),typescript_1.default.sys.exit(1))}return!0}e.types=async function(e,i){const a=(0,resolves_1.default)([[t,e,i]]);return(await a.series())[0]},e.moduleAndExtension=async function(e){const t=(0,resolves_1.default)([[i,e],[a,e]]);return(await t.concurrent()).every(e=>!0===e)}}(checks||(checks={}));const getConfigPath=()=>{const e=["susee.config.ts","susee.config.js","susee.config.mjs"];let t;for(const i of e){const e=typescript_1.default.sys.resolvePath(i);if(typescript_1.default.sys.fileExists(e)){t=e;break}}return t};function checkEntries(e){e.length<1&&(console.error(tcolor_1.default.magenta("No entry found in susee.config file, at least one entry required")),typescript_1.default.sys.exit(1));const t={},i=[];for(const a of e){const e=a.exportPath;t[e]?i.push(`"${e}"`):t[e]=!0}i.length>0&&(console.error(tcolor_1.default.magenta(`Duplicate export paths/path (${i.join(",")}) found in your susee.config file , that will error for bundled output`)),typescript_1.default.sys.exit(1));for(const t of e)typescript_1.default.sys.fileExists(typescript_1.default.sys.resolvePath(t.entry))||(console.error(tcolor_1.default.magenta(`Entry file ${t.entry} dose not exists.`)),typescript_1.default.sys.exit(1))}async function getConfig(){const e=getConfigPath();void 0===e&&(console.error(tcolor_1.default.magenta('No susee.config file ("susee.config.ts", "susee.config.js", "susee.config.mjs") found')),typescript_1.default.sys.exit(1));const t=(await Promise.resolve(`${e}`).then(e=>__importStar(require(e)))).default,i=(0,resolves_1.default)([[checkEntries,t.entryPoints]]);await i.series(),await utils_1.default.wait(1e3);const a=[];for(const e of t.entryPoints){const i={entry:e.entry,exportPath:e.exportPath,format:e.format??"esm",tsconfigFilePath:e.tsconfigFilePath??void 0,renameDuplicates:e.renameDuplicates??!0,outDir:t.outDir??"dist"};a.push(i)}return{points:a,plugins:t.plugins??[],allowUpdatePackageJson:t.allowUpdatePackageJson??!0}}async function fileSizes(e){const t=await node_fs_1.default.promises.stat(e);return{logical:t.size,allocated:null!==t.blocks?512*t.blocks:null}}const checkExport=(e,t)=>!!(e.match(/export default .*/gm)||e.match(/export = .*/gm)&&t.match(/.cts/g));async function generateDependencies(e){const t=(await(0,dependencies_1.default)(e)).sort(),i=[];await utils_1.default.wait(1e3);for(const e of t){const t=typescript_1.default.sys.resolvePath(e),a=await node_fs_1.default.promises.readFile(t,"utf8"),r=await fileSizes(t),s=a.length,n=checkExport(a,t),o=typescript_1.default.createSourceFile(t,a,typescript_1.default.ScriptTarget.Latest,!0),p=utils_1.default.checkModuleType(o,t).isCommonJs?"cjs":"esm",c={file:t,content:a,length:s,includeDefExport:n,size:{logical:r.logical,allocated:r.allocated,utf8:(new TextEncoder).encode(a).length,buffBytes:node_buffer_1.Buffer.byteLength(a,"utf8")},type:p};i.push(c)}return i}class GetOptions{constructor(e){this._point=e,this._options={}}__init(){const e=new tsconfig_1.default(this._point.tsconfigFilePath),t="."===this._point.exportPath?this._point.outDir:`${this._point.outDir}/${this._point.exportPath.slice(2)}`;e.removeCompilerOption("rootDir"),e.removeCompilerOption("module"),e.editCompilerOptions({moduleResolution:typescript_1.default.ModuleResolutionKind.NodeNext,outDir:t}),this._options=e.getCompilerOptions()}__init2(){this.__init();let{types:e,lib:t,...i}=this._options;return e?e.includes("node")||(e=["node",...e]):e=["node"],t=t?[...new Set(["ESNext",...t])]:["ESNext"],{types:e,lib:t,...i}}get commonjs(){const e=this.__init2(),{module:t,...i}=e;return{module:typescript_1.default.ModuleKind.CommonJS,...i}}get esm(){const e=this.__init2(),{module:t,...i}=e;return{module:typescript_1.default.ModuleKind.ES2020,...i}}get default(){return this.__init2()}}function getOptions(e){return new GetOptions(e)}async function collections(){console.time(`${tcolor_1.default.cyan("Collected Data")} :`);const e=await getConfig(),t=e.points,i=e.plugins,a=[];for(const e of t){const t=getOptions(e);let r=await generateDependencies(e.entry);await checks.types(r,t.esm)||typescript_1.default.sys.exit(1);let s=!1;if(i.length)for(const e of i){const t="function"==typeof e?e():e;"dependency"===t.type&&(t.name&&"@suseejs/plugin-commonjs"===t.name&&(s=!0),r=t.async?await t.func(r):t.func(r))}if(!s){await checks.moduleAndExtension(r)||typescript_1.default.sys.exit(1)}const n={fileName:e.entry,exportPath:e.exportPath,format:e.format,rename:e.renameDuplicates,outDir:e.outDir,tsOptions:{cjs:t.commonjs,esm:t.esm,default:t.default},depFiles:r,plugins:i};a.push(n)}return console.timeEnd(`${tcolor_1.default.cyan("Collected Data")} :`),{points:a,allowUpdatePackageJson:e.allowUpdatePackageJson}}async function susee(){console.info(`${tcolor_1.default.cyan("Started")} : `),console.time(`${tcolor_1.default.cyan("Done")}`);const e=await collections();await utils_1.default.wait(1e3);const t=await bundle(e);await utils_1.default.wait(1e3);const i=new Compiler(t);await i.compile(),console.timeEnd(`${tcolor_1.default.cyan("Done")}`)}
|
|
8
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,a){void 0===a&&(a=i);var r=Object.getOwnPropertyDescriptor(t,i);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,a,r)}:function(e,t,i,a){void 0===a&&(a=i),e[a]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var i={};if(null!=t)for(var a=e(t),r=0;r<a.length;r++)"default"!==a[r]&&__createBinding(i,t,a[r]);return __setModuleDefault(i,t),i}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.susee=susee;const tsconfig_1=__importDefault(require("@suseejs/tsconfig")),dependencies_1=__importDefault(require("@suseejs/dependencies")),node_fs_1=__importDefault(require("node:fs")),node_path_1=__importDefault(require("node:path")),resolves_1=__importDefault(require("@phothinmaung/resolves")),tcolor_1=__importDefault(require("@suseejs/tcolor")),transformer_1=__importDefault(require("@suseejs/transformer")),typescript_1=__importDefault(require("typescript")),utils_1=__importDefault(require("@suseejs/utils")),node_buffer_1=require("node:buffer");function splitCamelCase(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/(_|-|\/)([a-z] || [A-Z])/g," ").replace(/([A-Z])/g,e=>e.toLowerCase()).replace(/^([a-z])/,e=>e.toUpperCase())}function uniqueName(){const e=new Map,t={setPrefix({key:i,value:a}){if(e.has(i))throw console.warn(`${i} already exist`),new Error;return e.set(i,[a,0]),t},getName(t,i){const[a,r]=e.get(t)||[],s=a?`${a}${i}_${(r??0)+1}`:`$nyein${i}_${(r??0)+1}`;return e.set(t,[a??"$nyein",(r??0)+1]),s},getPrefix(t){const[i]=e.get(t)||[];return i}};return t}const exportDefaultExportNameMap=[],exportDefaultImportNameMap=[],prefixKey="AnonymousName",genName=uniqueName().setPrefix({key:prefixKey,value:"__anonymous__"});function anonymousCallExpressionHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isCallExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updateCallExpression(r,i.createIdentifier(a.newName),r.typeArguments,r.arguments)}}else if(typescript_1.default.isPropertyAccessExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updatePropertyAccessExpression(r,i.createIdentifier(a.newName),r.name)}}else if(typescript_1.default.isNewExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updateNewExpression(r,i.createIdentifier(a.newName),r.typeArguments,r.arguments)}}else if(typescript_1.default.isExportSpecifier(r)&&typescript_1.default.isIdentifier(r.name)){const e=r.name.text,a=exportDefaultImportNameMap.find(i=>i.base===e&&i.file===t);if(a)return i.updateExportSpecifier(r,r.isTypeOnly,r.propertyName,i.createIdentifier(a.newName))}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}}}function anonymousExportHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=s=>{const n=node_path_1.default.basename(t).split(".")[0];if((typescript_1.default.isFunctionDeclaration(s)||typescript_1.default.isClassDeclaration(s))&&void 0===s.name){let e=!1,t=!1;if(s.modifiers?.forEach(i=>{i.kind===typescript_1.default.SyntaxKind.ExportKeyword&&(e=!0),i.kind===typescript_1.default.SyntaxKind.DefaultKeyword&&(t=!0)}),e&&t){const e=genName.getName(prefixKey,n);if(exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),typescript_1.default.isFunctionDeclaration(s))return i.updateFunctionDeclaration(s,s.modifiers,s.asteriskToken,i.createIdentifier(e),s.typeParameters,s.parameters,s.type,s.body);if(typescript_1.default.isClassDeclaration(s))return i.updateClassDeclaration(s,s.modifiers,i.createIdentifier(e),s.typeParameters,s.heritageClauses,s.members)}}else if(typescript_1.default.isExportAssignment(s)&&!s.name&&!s.isExportEquals){if(typescript_1.default.isArrowFunction(s.expression)){const e=genName.getName(prefixKey,n),t=i.createArrowFunction(s.expression.modifiers,s.expression.typeParameters,s.expression.parameters,s.expression.type,s.expression.equalsGreaterThanToken,s.expression.body),a=i.createVariableDeclaration(i.createIdentifier(e),s.expression.exclamationToken,s.expression.type,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(s.expression.modifiers,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isObjectLiteralExpression(s.expression)){const e=genName.getName(prefixKey,n),t=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,s.expression),a=i.createVariableDeclarationList([t],typescript_1.default.NodeFlags.Const),o=i.createVariableStatement(void 0,a),p=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[o,p],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isArrayLiteralExpression(s.expression)){const e=genName.getName(prefixKey,n),t=i.createArrayLiteralExpression(s.expression.elements,!0),a=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(void 0,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isStringLiteral(s.expression)){const e=genName.getName(prefixKey,n),t=i.createStringLiteral(s.expression.text),a=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(void 0,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}if(typescript_1.default.isNumericLiteral(s.expression)){const e=genName.getName(prefixKey,n),t=i.createNumericLiteral(s.expression.text),a=i.createVariableDeclaration(i.createIdentifier(e),void 0,void 0,t),o=i.createVariableDeclarationList([a],typescript_1.default.NodeFlags.Const),p=i.createVariableStatement(void 0,o),c=i.createExportAssignment(void 0,void 0,i.createIdentifier(e));return exportDefaultExportNameMap.push({base:e,file:n,newName:e,isEd:!0}),i.updateSourceFile(r,[p,c],r.isDeclarationFile,r.referencedFiles,r.typeReferenceDirectives,r.hasNoDefaultLib,r.libReferenceDirectives)}}return typescript_1.default.visitEachChild(s,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}}}function anonymousImportHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=s=>{if(typescript_1.default.isImportDeclaration(s)){const e=s.moduleSpecifier.getText(r),a=node_path_1.default.basename(e).split(".")[0].trim();if(s.importClause?.name&&typescript_1.default.isIdentifier(s.importClause.name)){const e=s.importClause.name.text.trim(),r=exportDefaultExportNameMap.find(e=>e.file===a);if(r){exportDefaultImportNameMap.push({base:e,file:t,newName:r.newName,isEd:!0});const a=i.updateImportClause(s.importClause,s.importClause.phaseModifier,i.createIdentifier(r.newName),s.importClause.namedBindings);return i.updateImportDeclaration(s,s.modifiers,a,s.moduleSpecifier,s.attributes)}}}return typescript_1.default.visitEachChild(s,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}}}const anonymousHandler=async(e,t)=>{const i=(0,resolves_1.default)([[anonymousExportHandler,t],[anonymousImportHandler,t],[anonymousCallExpressionHandler,t]]),a=await i.concurrent();for(const t of a)e=e.map(t);return e},namesMap=new Map,callNameMap=[],importNameMap=[],exportNameMap=[];function __uniqueName(){const e=new Map;return{setPrefix({key:t,value:i}){const a=[];let r;if(e.has(t))throw console.warn(`${t} already exist`),new Error;return r=i,e.set(t,i),{getName:function(e){const t=a.length,i=r?`${r}${e}_${t+1}`:`$nyein${e}_${t+1}`;return a.push(i),i}}},getPrefix(t){if(e.has(t))return e.get(t)}}}const dupName=__uniqueName().setPrefix({key:"DuplicatesNames",value:"__duplicatesNames__"}),normalizePathKey=e=>{const t=node_path_1.default.parse(e);let i=node_path_1.default.join(t.dir,t.name);return"index"===t.name&&(i=t.dir),node_path_1.default.normalize(i)},getFileKey=e=>normalizePathKey(e),getModuleKeyFromSpecifier=(e,t,i)=>{let a="";if(a=typescript_1.default.isStringLiteral(e)?e.text:e.getText(t).replace(/^['"]|['"]$/g,""),a.startsWith(".")||a.startsWith("/")){const e=node_path_1.default.dirname(i);return normalizePathKey(node_path_1.default.resolve(e,a))}return a},callExpression=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isCallExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?a=s.newName:n&&(a=n.newName),a)return i.updateCallExpression(r,i.createIdentifier(a),r.typeArguments,r.arguments)}}else if(typescript_1.default.isPropertyAccessExpression(r)){if(typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?a=s.newName:n&&(a=n.newName),a)return i.updatePropertyAccessExpression(r,i.createIdentifier(a),r.name)}}else if(typescript_1.default.isNewExpression(r)&&typescript_1.default.isIdentifier(r.expression)){const e=r.expression.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?a=s.newName:n&&(a=n.newName),a)return i.updateNewExpression(r,i.createIdentifier(a),r.typeArguments,r.arguments)}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},exportExpression=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isExportSpecifier(r)){if(typescript_1.default.isIdentifier(r.name)){const e=r.name.text;let a=null;const s=callNameMap.find(i=>i.base===e&&i.file===t),n=importNameMap.find(i=>i.base===e&&i.file===t);if(s?(exportNameMap.push({base:e,file:getFileKey(t),newName:s.newName}),a=s.newName):n&&(a=n.newName),a)return i.updateExportSpecifier(r,r.isTypeOnly,r.propertyName,i.createIdentifier(a))}}else if(typescript_1.default.isExportAssignment(r)){const e=r.expression;if(typescript_1.default.isIdentifier(e)){const a=e.text;let s=null;const n=callNameMap.find(e=>e.base===a&&e.file===t),o=importNameMap.find(e=>e.base===a&&e.file===t);if(n?(exportNameMap.push({base:a,file:getFileKey(t),newName:n.newName}),s=n.newName):o&&(s=o.newName),s)return i.updateExportAssignment(r,r.modifiers,i.createIdentifier(s))}}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},importExpression=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=s=>{if(typescript_1.default.isImportDeclaration(s)){const e=getModuleKeyFromSpecifier(s.moduleSpecifier,r,t);let a=[];if(s.importClause?.namedBindings&&typescript_1.default.isNamedImports(s.importClause.namedBindings)&&(a=s.importClause.namedBindings.elements.map(e=>e.name.text.trim())),s.importClause?.name&&typescript_1.default.isIdentifier(s.importClause.name)){const a=s.importClause.name.text.trim(),r=exportNameMap.find(t=>t.base===a&&t.file===e);if(r){importNameMap.push({base:r.base,file:t,newName:r.newName});const e=i.updateImportClause(s.importClause,s.importClause.phaseModifier,i.createIdentifier(r.newName),s.importClause.namedBindings);return i.updateImportDeclaration(s,s.modifiers,e,s.moduleSpecifier,s.attributes)}}if(a.length>0&&s.importClause&&s.importClause.namedBindings&&typescript_1.default.isNamedImports(s.importClause.namedBindings)){const a=s.importClause.namedBindings.elements.map(a=>{const r=exportNameMap.find(t=>t.base===a.name.text.trim()&&t.file===e);return r?(importNameMap.push({base:r.base,file:t,newName:r.newName}),i.updateImportSpecifier(a,a.isTypeOnly,a.propertyName,i.createIdentifier(r.newName))):a}),r=i.updateNamedImports(s.importClause.namedBindings,a),n=i.updateImportClause(s.importClause,s.importClause.phaseModifier,s.importClause.name,r);return i.updateImportDeclaration(s,s.modifiers,n,s.moduleSpecifier,s.attributes)}}return typescript_1.default.visitEachChild(s,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},collector=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{function i(a,r=!0){if(r)if(typescript_1.default.isVariableStatement(a))a.declarationList.declarations.forEach(e=>{if(typescript_1.default.isIdentifier(e.name)){const i=e.name.text;namesMap.has(i)?namesMap.get(i).add({file:t}):namesMap.set(i,new Set([{file:t}]))}});else if(typescript_1.default.isFunctionDeclaration(a)||typescript_1.default.isClassDeclaration(a)||typescript_1.default.isEnumDeclaration(a)||typescript_1.default.isInterfaceDeclaration(a)||typescript_1.default.isTypeAliasDeclaration(a)){const e=a.name?.text;e&&(namesMap.has(e)?namesMap.get(e).add({file:t}):namesMap.set(e,new Set([{file:t}])))}return typescript_1.default.isBlock(a)||typescript_1.default.isFunctionDeclaration(a)||typescript_1.default.isFunctionExpression(a)||typescript_1.default.isArrowFunction(a)||typescript_1.default.isMethodDeclaration(a)||typescript_1.default.isClassDeclaration(a)?(typescript_1.default.isBlock(a)?typescript_1.default.visitNodes(a.statements,e=>i(e,!1)):typescript_1.default.forEachChild(a,e=>{i(e,!1)}),a):typescript_1.default.visitEachChild(a,e=>i(e,r),e)}return e=>i(e,!0)},r,e);return{file:t,content:s,...a}},updater=e=>({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0),s=(0,transformer_1.default)(e=>{const{factory:i}=e,a=r=>{if(typescript_1.default.isVariableStatement(r)){const e=r.declarationList.declarations.map(e=>{if(typescript_1.default.isIdentifier(e.name)){const a=e.name.text;if(namesMap.has(a)&&namesMap.get(a).size>1){const r=dupName.getName(a);return callNameMap.push({base:a,file:t,newName:r}),i.updateVariableDeclaration(e,i.createIdentifier(r),e.exclamationToken,e.type,e.initializer)}}return e}),a=i.updateVariableDeclarationList(r.declarationList,e);return i.updateVariableStatement(r,r.modifiers,a)}if(typescript_1.default.isFunctionDeclaration(r)){if(r.name&&typescript_1.default.isIdentifier(r.name)){const e=r.name.text;if(namesMap.has(e)&&namesMap.get(e).size>1){const a=dupName.getName(e);return callNameMap.push({base:e,file:t,newName:a}),i.updateFunctionDeclaration(r,r.modifiers,r.asteriskToken,i.createIdentifier(a),r.typeParameters,r.parameters,r.type,r.body)}}}else if(typescript_1.default.isClassDeclaration(r)&&r.name&&typescript_1.default.isIdentifier(r.name)){const e=r.name.text;if(namesMap.has(e)&&namesMap.get(e).size>1){const a=dupName.getName(e);return callNameMap.push({base:e,file:t,newName:a}),i.updateClassDeclaration(r,r.modifiers,i.createIdentifier(a),r.typeParameters,r.heritageClauses,r.members)}}return typescript_1.default.visitEachChild(r,a,e)};return e=>typescript_1.default.visitNode(e,a)},r,e);return{file:t,content:s,...a}},duplicateHandlers={renamed:async(e,t)=>{const i=(0,resolves_1.default)([[collector,t],[updater,t],[callExpression,t],[exportExpression,t],[importExpression,t],[callExpression,t],[exportExpression,t]]),a=await i.concurrent();for(const t of a)e=e.map(t);return e},notRenamed:async(e,t)=>{let i=!1;const a=(0,resolves_1.default)([[collector,namesMap,t]]),r=await a.concurrent();return e.map(r[0]),await utils_1.default.wait(1e3),namesMap.forEach((e,t)=>{e.size>1&&(i=!0,console.warn(`Name -> ${t} declared in multiple files :`),e.forEach(e=>console.warn(` - ${e.file}`)))}),await utils_1.default.wait(500),i&&process.exit(1),e}};function mergeImportsStatement(e){const t=new Map,i=new Map,a=new Map,r=new Map,s=new Map;for(const n of e){const e=n.match(/import\s+(?:type\s+)?(?:(.*?)\s+from\s+)?["']([^"']+)["'];?/);if(!e)continue;const[,o,p]=e,c=n.includes("import type"),l=p;if(!o){const e=n.match(/import\s+(?:type\s+)?(\w+)/);if(e){const t=e[1],i=c?r:a;i.has(l)||i.set(l,new Set),i.get(l)?.add(t)}continue}if(o.startsWith("{")){const e=c?i:t;e.has(l)||e.set(l,new Set);o.replace(/[{}]/g,"").split(",").map(e=>e.trim()).filter(Boolean).forEach(t=>e.get(l)?.add(t))}else if(o.startsWith("* as")){const e=o.match(/\*\s+as\s+(\w+)/);if(e){const t=e[1];s.has(l)||s.set(l,new Set),s.get(l)?.add(t)}}else{const e=c?r:a;e.has(l)||e.set(l,new Set),e.get(l)?.add(o.trim())}}const n=[];for(const[e,a]of t){const t=i.get(e)||new Set,r=new Set([...a]);for(const e of t)a.has(e)||r.add(e);if(r.size>0){const t=Array.from(r).sort().join(", ");n.push(`import { ${t} } from "${e}";`)}}for(const[e,a]of i)if(!t.has(e)&&a.size>0){const t=Array.from(a).sort().join(", ");n.push(`import type { ${t} } from "${e}";`)}for(const[e,t]of a){const i=r.get(e)||new Set,a=new Set([...t]);for(const e of i)t.has(e)||a.add(e);if(a.size>0){const t=Array.from(a).join(", ");n.push(`import ${t} from "${e}";`)}}for(const[e,t]of r)if(!a.has(e)&&t.size>0){const i=Array.from(t).join(", ");n.push(`import type ${i} from "${e}";`)}for(const[e,t]of s)if(t.size>0){const i=Array.from(t).join(", ");n.push(`import * as ${i} from "${e}";`)}return n.sort()}function esmExportRemoveHandler(e){return({file:t,content:i,...a})=>{const r=typescript_1.default.createSourceFile(t,i,typescript_1.default.ScriptTarget.Latest,!0);return{file:t,content:(0,transformer_1.default)(e=>{const{factory:t}=e,i=a=>{if(!utils_1.default.isInsideNamespace(a)&&(typescript_1.default.isFunctionDeclaration(a)||typescript_1.default.isClassDeclaration(a)||typescript_1.default.isInterfaceDeclaration(a)||typescript_1.default.isTypeAliasDeclaration(a)||typescript_1.default.isEnumDeclaration(a)||typescript_1.default.isVariableStatement(a))){const e=a.modifiers?.filter(e=>e.kind!==typescript_1.default.SyntaxKind.ExportKeyword&&e.kind!==typescript_1.default.SyntaxKind.DefaultKeyword);if(e?.length!==a.modifiers?.length){if(typescript_1.default.isFunctionDeclaration(a))return t.updateFunctionDeclaration(a,e,a.asteriskToken,a.name,a.typeParameters,a.parameters,a.type,a.body);if(typescript_1.default.isClassDeclaration(a))return t.updateClassDeclaration(a,e,a.name,a.typeParameters,a.heritageClauses,a.members);if(typescript_1.default.isInterfaceDeclaration(a))return t.updateInterfaceDeclaration(a,e,a.name,a.typeParameters,a.heritageClauses,a.members);if(typescript_1.default.isTypeAliasDeclaration(a))return t.updateTypeAliasDeclaration(a,e,a.name,a.typeParameters,a.type);if(typescript_1.default.isEnumDeclaration(a))return t.updateEnumDeclaration(a,e,a.name,a.members);if(typescript_1.default.isVariableStatement(a))return t.updateVariableStatement(a,e,a.declarationList)}}if(typescript_1.default.isExportDeclaration(a))return t.createEmptyStatement();if(typescript_1.default.isExportAssignment(a)){const e=a.expression;if(typescript_1.default.isIdentifier(e))return t.createEmptyStatement()}return typescript_1.default.visitEachChild(a,i,e)};return e=>typescript_1.default.visitNode(e,i)},r,e),...a}}}let properties=[];const typeObj={},typesNames=[];function findProperty(e){const t=[];return typescript_1.default.isPropertyAccessExpression(e)&&typescript_1.default.isIdentifier(e.expression)&&t.push(e.expression.text),e.forEachChild(e=>findProperty(e)),t}function importAllRemoveHandler(e,t){return({file:i,content:a,...r})=>{const s=typescript_1.default.createSourceFile(i,a,typescript_1.default.ScriptTarget.Latest,!0),n=new Set;for(const e of s.statements)if(typescript_1.default.isImportEqualsDeclaration(e)&&e.isTypeOnly){const t=e.moduleReference;typescript_1.default.isExternalModuleReference(t)&&typescript_1.default.isStringLiteral(t.expression)&&n.add(e.name.text)}const o=(0,transformer_1.default)(t=>{const{factory:a}=t,r=o=>{properties=[...properties,...findProperty(o)];const p={isNamespace:!1,isTypeOnly:!1,isTypeNamespace:!1,source:"",importedString:void 0,importedObject:void 0};if(typescript_1.default.isTypeReferenceNode(o)&&typescript_1.default.isQualifiedName(o.typeName)&&typescript_1.default.isIdentifier(o.typeName.left)&&typescript_1.default.isIdentifier(o.typeName.right)){const e=o.typeName.left.text,t=o.typeName.right.text;if(typesNames.push(e),e in typeObj?typeObj[e]?.push(t):typeObj[e]=[t],utils_1.default.checkModuleType(s,i).isCommonJs&&"ts"!==e&&!n.has(e))return a.updateTypeReferenceNode(o,a.createIdentifier(t),void 0)}if(typescript_1.default.isImportDeclaration(o)){const t=o.getText(s);return e.push(t),a.createEmptyStatement()}if(typescript_1.default.isImportEqualsDeclaration(o)){const t=o.name.text,i=o.moduleReference;let r;if(o.isTypeOnly&&(p.isTypeOnly=!0),p.importedString=t,p.isTypeOnly||properties.includes(t)&&(p.isNamespace=!0),typescript_1.default.isExternalModuleReference(i)&&typescript_1.default.isStringLiteral(i.expression)&&(p.source=i.expression.text),p.importedString&&!p.importedObject&&(r=p.isTypeOnly?n.has(p.importedString)?`import type * as ${p.importedString} from "${p.source}";`:typesNames.includes(p.importedString)?`import type { ${typeObj[p.importedString]?.join(",")} } from "${p.source}";`:`import type ${p.importedString} from "${p.source}";`:p.isNamespace&&p.source&&"typescript"!==p.source?`import * as ${p.importedString} from "${p.source}";`:`import ${p.importedString} from "${p.source}";`),!p.importedString&&p.importedObject&&(r=`import { ${p.importedObject.join(", ")} } from "${p.source}";`),r)return e.push(r),a.createEmptyStatement()}if(typescript_1.default.isVariableStatement(o)){const t=o.declarationList.declarations;if(1===t.length){const i=t[0];if(i.initializer&&typescript_1.default.isCallExpression(i.initializer)&&typescript_1.default.isIdentifier(i.initializer.expression)&&"require"===i.initializer.expression.escapedText){const t=i.initializer.arguments[0];if(typescript_1.default.isStringLiteral(t)&&(p.source=t.text),typescript_1.default.isIdentifier(i.name)){const e=i.name.text;p.importedString=e,properties.includes(e)&&(p.isNamespace=!0)}else if(typescript_1.default.isObjectBindingPattern(i.name)){const e=[];for(const t of i.name.elements)typescript_1.default.isIdentifier(t.name)&&e.push(t.name.text);e.length>0&&(p.importedObject=e)}let r;if(p.importedString&&!p.importedObject&&(r=p.isNamespace?`import * as ${p.importedString} from "${p.source}";`:`import ${p.importedString} from "${p.source}";`),!p.importedString&&p.importedObject&&(r=`import { ${p.importedObject.join(", ")} } from "${p.source}";`),r)return e.push(r),a.createEmptyStatement()}}}return typescript_1.default.visitEachChild(o,r,t)};return e=>typescript_1.default.visitNode(e,r)},s,t);return{file:i,content:o,...r}}}const removeHandlers=async(e,t)=>{const i=(0,resolves_1.default)([[importAllRemoveHandler,e,t],[esmExportRemoveHandler,t]]);return await i.series()};function collectBindingNames(e,t){typescript_1.default.isIdentifier(e)?t.push(e.text):(typescript_1.default.isObjectBindingPattern(e)||typescript_1.default.isArrayBindingPattern(e))&&e.elements.forEach(e=>{typescript_1.default.isBindingElement(e)&&e.name&&collectBindingNames(e.name,t)})}function clearUnusedCode(e,t,i,a={treatExportsAsUsed:!0}){const r=typescript_1.default.createSourceFile(t,e,typescript_1.default.ScriptTarget.Latest,!0),s=new Map,n=new Set,o=(e,t=!1)=>{const i=s.get(e);s.set(e,{exported:!!i?.exported||t})},p=e=>{if(typescript_1.default.isImportDeclaration(e)&&e.importClause){const t=e.importClause;t.name&&typescript_1.default.isIdentifier(t.name)&&o(t.name.text,!1),t.namedBindings&&(typescript_1.default.isNamedImports(t.namedBindings)?t.namedBindings.elements.forEach(e=>{typescript_1.default.isImportSpecifier(e)&&typescript_1.default.isIdentifier(e.name)&&o(e.name.text,!1)}):typescript_1.default.isNamespaceImport(t.namedBindings)&&typescript_1.default.isIdentifier(t.namedBindings.name)&&o(t.namedBindings.name.text,!1))}else if(typescript_1.default.isImportEqualsDeclaration(e)&&typescript_1.default.isIdentifier(e.name))o(e.name.text,!1);else if(typescript_1.default.isVariableStatement(e)){const t=e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)??!1;e.declarationList.declarations.forEach(e=>{collectBindingNames(e.name,[]);const i=[];collectBindingNames(e.name,i),i.forEach(e=>o(e,t))})}else if(typescript_1.default.isFunctionDeclaration(e)&&e.name&&typescript_1.default.isIdentifier(e.name)){const t=e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)??!1;o(e.name.text,t)}else if(typescript_1.default.isClassDeclaration(e)&&e.name&&typescript_1.default.isIdentifier(e.name)){const t=e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)??!1;o(e.name.text,t)}if(typescript_1.default.isIdentifier(e)){const t=e.parent;typescript_1.default.isVariableDeclaration(t)&&t.name===e||typescript_1.default.isFunctionDeclaration(t)&&t.name===e||typescript_1.default.isClassDeclaration(t)&&t.name===e||typescript_1.default.isImportClause(t)&&t.name===e||typescript_1.default.isImportSpecifier(t)&&t.name===e||typescript_1.default.isNamespaceImport(t)&&t.name===e||typescript_1.default.isBindingElement(t)&&t.name===e||typescript_1.default.isParameter(t)&&t.name===e||n.add(e.text)}typescript_1.default.forEachChild(e,p)};p(r);const c=new Set;s.forEach((e,t)=>{n.has(t)||a.treatExportsAsUsed&&e.exported||c.add(t)});return(0,transformer_1.default)(e=>{const t=i=>{if(typescript_1.default.isImportDeclaration(i)&&i.importClause){const e=i.importClause,t=e.name&&typescript_1.default.isIdentifier(e.name)?e.name.text:void 0;let a;const r=[];e.namedBindings&&(typescript_1.default.isNamedImports(e.namedBindings)?e.namedBindings.elements.forEach(e=>{typescript_1.default.isImportSpecifier(e)&&typescript_1.default.isIdentifier(e.name)&&r.push(e)}):typescript_1.default.isNamespaceImport(e.namedBindings)&&typescript_1.default.isIdentifier(e.namedBindings.name)&&(a=e.namedBindings.name.text));const s=!!t&&!c.has(t),n=!!a&&!c.has(a),o=r.filter(e=>!c.has(e.name.text));if(!s&&!n&&0===o.length)return typescript_1.default.factory.createNotEmittedStatement(i);if(!s&&!!e.name||void 0!==a&&!n||o.length!==r.length){let e;e=o.length>0?typescript_1.default.factory.createNamedImports(o):n&&a?typescript_1.default.factory.createNamespaceImport(typescript_1.default.factory.createIdentifier(a)):void 0;const r=s&&t?typescript_1.default.factory.createIdentifier(t):void 0,p=typescript_1.default.factory.createImportClause(!1,r,e);return typescript_1.default.factory.updateImportDeclaration(i,i.modifiers,p,i.moduleSpecifier,i.assertClause)}return i}if((typescript_1.default.isFunctionDeclaration(i)||typescript_1.default.isClassDeclaration(i))&&i.name&&typescript_1.default.isIdentifier(i.name))return c.has(i.name.text)?typescript_1.default.factory.createNotEmittedStatement(i):i;if(typescript_1.default.isVariableStatement(i)){const e=[];i.declarationList.declarations.forEach(t=>collectBindingNames(t.name,e));return e.some(e=>!c.has(e))?i:typescript_1.default.factory.createNotEmittedStatement(i)}return typescript_1.default.visitEachChild(i,t,e)};return e=>typescript_1.default.visitNode(e,t)},r,i)}async function bundler(e){const t="."===e.exportPath?"Main":splitCamelCase(e.exportPath.slice(2));console.time(`${tcolor_1.default.cyan("Bundled")} -> ${tcolor_1.default.brightCyan(t)} ${tcolor_1.default.cyan("export path")}`);let i=e.depFiles;const a=e.rename,r=e.tsOptions.default,s=e.plugins;let n=[];if(s.length)for(let e of s)e="function"==typeof e?e():e,"dependency"===e.type&&(e.async?(i=await e.func(i,r),await utils_1.default.wait(1e3)):i=e.func(i,r));i=a?await duplicateHandlers.renamed(i,r):await duplicateHandlers.notRenamed(i,r),i=await anonymousHandler(i,r);const o=await removeHandlers(n,r);i=i.map(o[0]);const p=i.slice(0,-1).map(o[1]),c=i.slice(-1),l=/["']((?!\.\/|\.\.\/)[^"']+)["']/;n=n.filter(e=>l.test(e)),n=mergeImportsStatement(n);let f=`${n.join("\n").trim()}\n${p.map(e=>`${`//${node_path_1.default.relative(process.cwd(),e.file)}`}\n${e.content}`).join("\n").trim()}\n${c.map(e=>`${`//${node_path_1.default.relative(process.cwd(),e.file)}`}\n${e.content}`).join("\n").trim()}`;if(f=f.replace(/^s*;\s*$/gm,"").trim(),f=clearUnusedCode(f,e.fileName,r),s.length)for(let e of s)e="function"==typeof e?e():e,"pre-process"===e.type&&(f=e.async?await e.func(f):e.func(f));return console.timeEnd(`${tcolor_1.default.cyan("Bundled")} -> ${tcolor_1.default.brightCyan(t)} ${tcolor_1.default.cyan("export path")}`),{bundledContent:f,...e}}async function bundle(e){const t=[];for(const i of e.points){const e=await bundler(i);t.push(e)}return{points:t,allowUpdatePackageJson:e.allowUpdatePackageJson}}function createHost(e,t){const i={},a={getSourceFile:(i,a)=>{if(i===t)return typescript_1.default.createSourceFile(i,e,a)},writeFile:(e,t)=>{i[e]=t},getDefaultLibFileName:e=>typescript_1.default.getDefaultLibFilePath(e),getCurrentDirectory:()=>"",getDirectories:()=>[],fileExists:e=>e===t,readFile:i=>i===t?e:void 0,getCanonicalFileName:e=>e,useCaseSensitiveFileNames:()=>!0,getNewLine:()=>"\n"};return{createdFiles:i,host:a}}const isCjs=e=>e.commonjs&&e.commonjsTypes,isEsm=e=>e.esm&&e.esmTypes;function getExports(e,t){return isCjs(e)&&isEsm(e)?{[t]:{import:{types:`./${node_path_1.default.relative(process.cwd(),e.esmTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.esm)}`},require:{types:`./${node_path_1.default.relative(process.cwd(),e.commonjsTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.commonjs)}`}}}:isCjs(e)&&!isEsm(e)?{[t]:{require:{types:`./${node_path_1.default.relative(process.cwd(),e.commonjsTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.commonjs)}`}}}:!isCjs(e)&&isEsm(e)?{[t]:{import:{types:`./${node_path_1.default.relative(process.cwd(),e.esmTypes)}`,default:`./${node_path_1.default.relative(process.cwd(),e.esm)}`}}}:{}}async function writePackage(e,t){let i=!0;"."!==t&&(i=!1);const a=typescript_1.default.sys.resolvePath("package.json"),r=node_fs_1.default.readFileSync(a,"utf8"),s=JSON.parse(r);let{name:n,version:o,description:p,main:c,module:l,type:f,types:d,exports:u,...m}=s;await utils_1.default.wait(500),f="module";let y={},_={},h={},g={};if(i)y=e.main?{main:node_path_1.default.relative(process.cwd(),e.main)}:{},_=e.module?{module:node_path_1.default.relative(process.cwd(),e.module)}:{},h=e.types?{types:node_path_1.default.relative(process.cwd(),e.types)}:{},g={exports:{...getExports(e,t)}};else{y=c?{main:c}:{},_=l?{module:l}:{},h=d?{types:d}:{};g={exports:{...u&&"object"==typeof u&&!Array.isArray(u)?{...u}:{},...getExports(e,t)}}}await utils_1.default.wait(1e3);const x={name:n,version:o,description:p,type:f,...y,...h,..._,...g,...m};utils_1.default.writeCompileFile(a,JSON.stringify(x,null,2))}class Compiler{constructor(e){this.object=e,this.files={commonjs:void 0,commonjsTypes:void 0,esm:void 0,esmTypes:void 0,main:void 0,module:void 0,types:void 0}}_isUpdate(){return this.object.allowUpdatePackageJson}async _commonjs(e){const t="."===e.exportPath,i=t?"Main":splitCamelCase(e.exportPath.slice(2));console.time(`${tcolor_1.default.cyan("Compiled CJS")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`);const a=e.fileName,r=e.bundledContent,s=e.format,n=e.plugins,o=e.tsOptions.cjs,p=createHost(r,a),c=p.createdFiles,l=p.host;typescript_1.default.createProgram([a],o,l).emit(),Object.entries(c).map(async([e,i])=>{if(".js"===node_path_1.default.extname(e)&&n.length)for(let t of n)t="function"==typeof t?t():t,"post-process"===t.type&&(i=t.async?await t.func(i,e):t.func(i,e));this._isUpdate()&&(e.match(/.js/g)&&(this.files.commonjs=e.replace(/.js/g,".cjs")),e.match(/.d.ts/g)&&(this.files.commonjsTypes=e.replace(/.d.ts/g,".d.cts")),!t||"both"!==s&&"commonjs"!==s||(this.files.commonjs&&(this.files.main=this.files.commonjs),this.files.commonjsTypes&&(this.files.types=this.files.commonjsTypes))),e=(e=(e=e.replace(/.js/g,".cjs")).replace(/.map.js/g,".map.cjs")).replace(/.d.ts/g,".d.cts"),await utils_1.default.wait(500),"commonjs"===s&&await utils_1.default.clearFolder(node_path_1.default.dirname(e)),await utils_1.default.writeCompileFile(e,i)}),console.timeEnd(`${tcolor_1.default.cyan("Compiled CJS")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`)}async _esm(e){const t="."===e.exportPath,i=t?"Main":splitCamelCase(e.exportPath.slice(2));console.time(`${tcolor_1.default.cyan("Compiled ESM")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`);const a=e.fileName,r=e.bundledContent,s=e.format,n=e.plugins,o=e.tsOptions.esm,p=createHost(r,a),c=p.createdFiles,l=p.host;typescript_1.default.createProgram([a],o,l).emit(),Object.entries(c).map(async([e,i])=>{if(".js"===node_path_1.default.extname(e)&&n.length)for(let t of n)t="function"==typeof t?t():t,"post-process"===t.type&&(i=t.async?await t.func(i,e):t.func(i,e));this._isUpdate()&&(e.match(/.js/g)&&(this.files.esm=e.replace(/.js/g,".mjs")),e.match(/.d.ts/g)&&(this.files.esmTypes=e.replace(/.d.ts/g,".d.mts")),t&&"both"===s&&this.files.esm&&(this.files.module=this.files.esm)),e=(e=(e=e.replace(/.js/g,".mjs")).replace(/.map.js/g,".map.mjs")).replace(/.d.ts/g,".d.mts"),await utils_1.default.wait(500),"commonjs"!==s&&await utils_1.default.clearFolder(node_path_1.default.dirname(e)),await utils_1.default.writeCompileFile(e,i)}),console.timeEnd(`${tcolor_1.default.cyan("Compiled ESM")} -> ${tcolor_1.default.brightCyan(i)} ${tcolor_1.default.cyan("export path")}`)}async compile(){for(const e of this.object.points){switch(await utils_1.default.wait(500),e.format){case"commonjs":await this._commonjs(e),this._isUpdate()&&await writePackage(this.files,e.exportPath);break;case"esm":await this._esm(e),this._isUpdate()&&await writePackage(this.files,e.exportPath);break;case"both":await this._esm(e),await utils_1.default.wait(1e3),await this._commonjs(e),this._isUpdate()&&await writePackage(this.files,e.exportPath)}await utils_1.default.wait(500)}}}var checks;!function(e){function t(e,t){if(!t.noCheck){const i=e.map(e=>e.file);let a=!1;const r=typescript_1.default.createProgram(i,t);for(const e of i){const t=r.getSourceFile(e);t||(console.error(tcolor_1.default.magenta(`File not found: ${e}`)),typescript_1.default.sys.exit(1));const i=[...r.getSyntacticDiagnostics(t),...r.getSemanticDiagnostics(t),...r.getDeclarationDiagnostics(t)];if(i.length>0){const e={getCurrentDirectory:()=>process.cwd(),getCanonicalFileName:e=>e,getNewLine:()=>typescript_1.default.sys.newLine};console.error(typescript_1.default.formatDiagnosticsWithColorAndContext(i,e)),a=!0}}if(!a)return!0;typescript_1.default.sys.exit(1)}}function i(e){let t=0,i=0;for(const a of e)try{const r=typescript_1.default.createSourceFile(a.file,a.content,typescript_1.default.ScriptTarget.Latest,!0);let s=!1,n=!1;function o(e){if((typescript_1.default.isImportDeclaration(e)||typescript_1.default.isImportEqualsDeclaration(e)||typescript_1.default.isExportDeclaration(e)||typescript_1.default.isExportSpecifier(e)||typescript_1.default.isExportAssignment(e))&&(s=!0),(typescript_1.default.isVariableStatement(e)||typescript_1.default.isFunctionDeclaration(e)||typescript_1.default.isInterfaceDeclaration(e)||typescript_1.default.isTypeAliasDeclaration(e)||typescript_1.default.isEnumDeclaration(e)||typescript_1.default.isClassDeclaration(e))&&e.modifiers?.some(e=>e.kind===typescript_1.default.SyntaxKind.ExportKeyword)&&(s=!0),typescript_1.default.isCallExpression(e)&&typescript_1.default.isIdentifier(e.expression)&&"require"===e.expression.text&&e.arguments.length>0&&(n=!0),typescript_1.default.isPropertyAccessExpression(e)){const t=e.getText(r);(t.startsWith("module.exports")||t.startsWith("exports."))&&(n=!0)}typescript_1.default.forEachChild(e,o)}o(r),s&&!n?0:n&&!s?t++:s&&n&&0}catch(p){console.error(tcolor_1.default.magenta(`Error checking module format for ${a.file} : \n ${p}`)),i++}return i&&(console.error(tcolor_1.default.magenta("Unknown error when checking module types in the dependencies tree.")),typescript_1.default.sys.exit(1)),t&&(console.error(tcolor_1.default.magenta("The package detects CommonJs format in the dependencies tree, that unsupported.")),typescript_1.default.sys.exit(1)),!0}function a(e){const t=new Set([".ts",".mts",".cts",".tsx"]);for(const i of e){const e=node_path_1.default.extname(i.file);t.has(e)||(console.error(tcolor_1.default.magenta(`${i.file} has no valid TypeScript extension`)),typescript_1.default.sys.exit(1))}return!0}e.types=async function(e,i){const a=(0,resolves_1.default)([[t,e,i]]);return(await a.series())[0]},e.moduleAndExtension=async function(e){const t=(0,resolves_1.default)([[i,e],[a,e]]);return(await t.concurrent()).every(e=>!0===e)}}(checks||(checks={}));const getConfigPath=()=>{const e=["susee.config.ts","susee.config.js","susee.config.mjs"];let t;for(const i of e){const e=typescript_1.default.sys.resolvePath(i);if(typescript_1.default.sys.fileExists(e)){t=e;break}}return t};function checkEntries(e){e.length<1&&(console.error(tcolor_1.default.magenta("No entry found in susee.config file, at least one entry required")),typescript_1.default.sys.exit(1));const t={},i=[];for(const a of e){const e=a.exportPath;t[e]?i.push(`"${e}"`):t[e]=!0}i.length>0&&(console.error(tcolor_1.default.magenta(`Duplicate export paths/path (${i.join(",")}) found in your susee.config file , that will error for bundled output`)),typescript_1.default.sys.exit(1));for(const t of e)typescript_1.default.sys.fileExists(typescript_1.default.sys.resolvePath(t.entry))||(console.error(tcolor_1.default.magenta(`Entry file ${t.entry} dose not exists.`)),typescript_1.default.sys.exit(1))}async function getConfig(){const e=getConfigPath();void 0===e&&(console.error(tcolor_1.default.magenta('No susee.config file ("susee.config.ts", "susee.config.js", "susee.config.mjs") found')),typescript_1.default.sys.exit(1));const t=(await Promise.resolve(`${e}`).then(e=>__importStar(require(e)))).default,i=(0,resolves_1.default)([[checkEntries,t.entryPoints]]);await i.series(),await utils_1.default.wait(1e3);const a=[];for(const e of t.entryPoints){const i={entry:e.entry,exportPath:e.exportPath,format:e.format??"esm",tsconfigFilePath:e.tsconfigFilePath??void 0,renameDuplicates:e.renameDuplicates??!0,outDir:t.outDir??"dist"};a.push(i)}return{points:a,plugins:t.plugins??[],allowUpdatePackageJson:t.allowUpdatePackageJson??!0}}async function fileSizes(e){const t=await node_fs_1.default.promises.stat(e);return{logical:t.size,allocated:null!==t.blocks?512*t.blocks:null}}const checkExport=(e,t)=>!!(e.match(/export default .*/gm)||e.match(/export = .*/gm)&&t.match(/.cts/g));async function generateDependencies(e){const t=(await(0,dependencies_1.default)(e)).sort(),i=[];await utils_1.default.wait(1e3);for(const e of t){const t=typescript_1.default.sys.resolvePath(e),a=await node_fs_1.default.promises.readFile(t,"utf8"),r=await fileSizes(t),s=a.length,n=checkExport(a,t),o=typescript_1.default.createSourceFile(t,a,typescript_1.default.ScriptTarget.Latest,!0),p=utils_1.default.checkModuleType(o,t).isCommonJs?"cjs":"esm",c={file:t,content:a,length:s,includeDefExport:n,size:{logical:r.logical,allocated:r.allocated,utf8:(new TextEncoder).encode(a).length,buffBytes:node_buffer_1.Buffer.byteLength(a,"utf8")},type:p};i.push(c)}return i}class GetOptions{constructor(e){this._point=e,this._options={}}__init(){const e=new tsconfig_1.default(this._point.tsconfigFilePath),t="."===this._point.exportPath?this._point.outDir:`${this._point.outDir}/${this._point.exportPath.slice(2)}`;e.removeCompilerOption("rootDir"),e.removeCompilerOption("module"),e.editCompilerOptions({moduleResolution:typescript_1.default.ModuleResolutionKind.NodeNext,outDir:t}),this._options=e.getCompilerOptions()}__init2(){this.__init();let{types:e,lib:t,...i}=this._options;return e?e.includes("node")||(e=["node",...e]):e=["node"],t=t?[...new Set(["ESNext",...t])]:["ESNext"],{types:e,lib:t,...i}}get commonjs(){const e=this.__init2(),{module:t,...i}=e;return{module:typescript_1.default.ModuleKind.CommonJS,...i}}get esm(){const e=this.__init2(),{module:t,...i}=e;return{module:typescript_1.default.ModuleKind.ES2020,...i}}get default(){return this.__init2()}}function getOptions(e){return new GetOptions(e)}async function collections(){console.time(`${tcolor_1.default.cyan("Collected Data")}`);const e=await getConfig(),t=e.points,i=e.plugins,a=[];for(const e of t){const t=getOptions(e),r=await generateDependencies(e.entry);await checks.types(r,t.esm)||typescript_1.default.sys.exit(1);let s=!1;if(i.length)for(const e of i){const t="function"==typeof e?e():e;"dependency"===t.type&&t.name&&"@suseejs/plugin-commonjs"===t.name&&(s=!0)}if(!s){await checks.moduleAndExtension(r)||typescript_1.default.sys.exit(1)}const n={fileName:e.entry,exportPath:e.exportPath,format:e.format,rename:e.renameDuplicates,outDir:e.outDir,tsOptions:{cjs:t.commonjs,esm:t.esm,default:t.default},depFiles:r,plugins:i};a.push(n)}return console.timeEnd(`${tcolor_1.default.cyan("Collected Data")}`),{points:a,allowUpdatePackageJson:e.allowUpdatePackageJson}}async function susee(){console.info(`${tcolor_1.default.cyan("Susee Started")} : `),console.time(`${tcolor_1.default.cyan("Susee Done")}`);const e=await collections();await utils_1.default.wait(1e3);const t=await bundle(e);await utils_1.default.wait(1e3);const i=new Compiler(t);await i.compile(),console.timeEnd(`${tcolor_1.default.cyan("Susee Done")}`)}
|