sonamu 0.5.6 → 0.5.7

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.
Files changed (40) hide show
  1. package/dist/api/decorators.d.ts +1 -0
  2. package/dist/api/decorators.d.ts.map +1 -1
  3. package/dist/api/decorators.js +1 -1
  4. package/dist/api/decorators.js.map +1 -1
  5. package/dist/api/sonamu.d.ts.map +1 -1
  6. package/dist/api/sonamu.js +1 -1
  7. package/dist/api/sonamu.js.map +1 -1
  8. package/dist/database/db.d.ts +3 -0
  9. package/dist/database/db.d.ts.map +1 -1
  10. package/dist/database/db.js +1 -1
  11. package/dist/database/db.js.map +1 -1
  12. package/dist/database/puri-wrapper.d.ts +22 -10
  13. package/dist/database/puri-wrapper.d.ts.map +1 -1
  14. package/dist/database/puri-wrapper.js +1 -1
  15. package/dist/database/puri-wrapper.js.map +1 -1
  16. package/dist/database/puri.d.ts +91 -66
  17. package/dist/database/puri.d.ts.map +1 -1
  18. package/dist/database/puri.js +1 -1
  19. package/dist/database/puri.js.map +1 -1
  20. package/dist/database/puri.types.d.ts +28 -42
  21. package/dist/database/puri.types.d.ts.map +1 -1
  22. package/dist/database/transaction-context.d.ts +3 -3
  23. package/dist/database/transaction-context.d.ts.map +1 -1
  24. package/dist/database/transaction-context.js.map +1 -1
  25. package/dist/templates/service.template.d.ts.map +1 -1
  26. package/dist/templates/service.template.js +1 -1
  27. package/dist/templates/service.template.js.map +1 -1
  28. package/dist/types/types.d.ts +1 -1
  29. package/dist/types/types.d.ts.map +1 -1
  30. package/dist/types/types.js.map +1 -1
  31. package/package.json +1 -2
  32. package/src/api/decorators.ts +14 -5
  33. package/src/api/sonamu.ts +21 -20
  34. package/src/database/db.ts +44 -9
  35. package/src/database/puri-wrapper.ts +104 -26
  36. package/src/database/puri.ts +429 -557
  37. package/src/database/puri.types.ts +99 -202
  38. package/src/database/transaction-context.ts +4 -4
  39. package/src/templates/service.template.ts +10 -1
  40. package/src/types/types.ts +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get JoinClauseGroup(){return JoinClauseGroup},get Puri(){return Puri}});var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var Puri=/*#__PURE__*/function(){"use strict";function Puri(knex,tableNameOrSubquery,alias){_class_call_check(this,Puri);_define_property(this,"knex",void 0);_define_property(this,"knexQuery",void 0);this.knex=knex;if(typeof tableNameOrSubquery==="string"){this.knexQuery=knex(tableNameOrSubquery).from(tableNameOrSubquery)}else{this.knexQuery=knex.from(tableNameOrSubquery.raw().as(alias))}}_create_class(Puri,[{key:"select",value:function select(selectObj){var selectClauses=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.entries(selectObj)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _step_value=_sliced_to_array(_step.value,2),alias=_step_value[0],columnOrFunction=_step_value[1];if((typeof columnOrFunction==="undefined"?"undefined":_type_of(columnOrFunction))==="object"&&columnOrFunction._type==="sql_function"){selectClauses.push(this.knex.raw("".concat(columnOrFunction._sql," as ").concat(alias)))}else{var columnPath=columnOrFunction;if(alias===columnPath){selectClauses.push(columnPath)}else{selectClauses.push("".concat(columnPath," as ").concat(alias))}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}this.knexQuery.select(selectClauses);return this}},{key:"selectAll",value:function selectAll(){this.knexQuery.select("*");return this}},{key:"where",value:function where(columnOrConditions,operatorOrValue,value){if((typeof columnOrConditions==="undefined"?"undefined":_type_of(columnOrConditions))==="object"){this.knexQuery.where(columnOrConditions)}else if(arguments.length===2){if(operatorOrValue===null){this.knexQuery.whereNull(columnOrConditions);return this}this.knexQuery.where(columnOrConditions,operatorOrValue)}else if(arguments.length===3){if(value===null){if(operatorOrValue==="!="){this.knexQuery.whereNotNull(columnOrConditions);return this}else if(operatorOrValue==="="){this.knexQuery.whereNull(columnOrConditions);return this}}this.knexQuery.where(columnOrConditions,operatorOrValue,value)}else{this.knexQuery.where(columnOrConditions)}return this}},{key:"whereIn",value:function whereIn(column,values){this.knexQuery.whereIn(column,values);return this}},{key:"whereNotIn",value:function whereNotIn(column,values){this.knexQuery.whereNotIn(column,values);return this}},{key:"whereMatch",value:function whereMatch(column,value){this.knexQuery.whereRaw("MATCH (".concat(String(column),") AGAINST (?)"),[value]);return this}},{key:"whereGroup",value:function whereGroup(callback){this.knexQuery.where(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.knexQuery.orWhere(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"join",value:function join(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.join(tableOrSubquery.raw().as(alias),left,right)}else if(args.length===2&&typeof args[0]==="string"&&typeof args[1]==="string"){var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.join(tableOrSubquery,left1,right1)}else if(args.length===1&&typeof args[0]==="function"){var joinCallback=args[0];this.knexQuery.join(tableOrSubquery,function(joinClause){joinCallback(new JoinClauseGroup(joinClause))})}else{throw new Error("Invalid arguments")}return this}},{key:"leftJoin",value:function leftJoin(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias),left,right)}else{var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.leftJoin(tableOrSubquery,left1,right1)}return this}},{key:"orderBy",value:function orderBy(column){var direction=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"asc";this.knexQuery.orderBy(column,direction);return this}},{key:"limit",value:function limit(count){this.knexQuery.limit(count);return this}},{key:"offset",value:function offset(count){this.knexQuery.offset(count);return this}},{key:"groupBy",value:function groupBy(){for(var _len=arguments.length,columns=new Array(_len),_key=0;_key<_len;_key++){columns[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).groupBy.apply(_this_knexQuery,_to_consumable_array(columns));return this}},{key:"having",value:function having(){for(var _len=arguments.length,conditions=new Array(_len),_key=0;_key<_len;_key++){conditions[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).having.apply(_this_knexQuery,_to_consumable_array(conditions));return this}},{key:"then",value:function then(onfulfilled,onrejected){return this.knexQuery.then(onfulfilled,onrejected)}},{key:"catch",value:function _catch(onrejected){return this.knexQuery.catch(onrejected)}},{key:"finally",value:function _finally(onfinally){return this.knexQuery.finally(onfinally)}},{key:"first",value:function first(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.first()]})}).call(this)}},{key:"firstOrFail",value:function firstOrFail(){return _async_to_generator(function(){var result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knexQuery.first()];case 1:result=_state.sent();if(!result){throw new Error("No results found")}return[2,result]}})}).call(this)}},{key:"at",value:function at(index){return _async_to_generator(function(){var results;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();return[2,results[index]]}})}).call(this)}},{key:"assertAt",value:function assertAt(index){return _async_to_generator(function(){var results,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();result=results[index];if(result===undefined){throw new Error("No result found at index ".concat(index))}return[2,result]}})}).call(this)}},{key:"pluck",value:function pluck(column){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.pluck(column)]})}).call(this)}},{key:"insert",value:function insert(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.insert(data)]})}).call(this)}},{key:"update",value:function update(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.update(data)]})}).call(this)}},{key:"delete",value:function _delete(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.delete()]})}).call(this)}},{key:"toQuery",value:function toQuery(){return this.knexQuery.toQuery()}},{key:"debug",value:function debug(){console.log("".concat(_chalk.default.cyan("[Puri Debug]")," ").concat(_chalk.default.yellow(this.formatSQL(this.toQuery()))));return this}},{key:"formatSQL",value:function formatSQL(unformatted){var keywords=["SELECT","FROM","WHERE","INSERT","INTO","VALUES","UPDATE","DELETE","CREATE","TABLE","ALTER","DROP","JOIN","ON","INNER","LEFT","RIGHT","FULL","OUTER","GROUP","BY","ORDER","HAVING","DISTINCT","LIMIT","OFFSET","AS","AND","OR","NOT","IN","LIKE","IS","NULL","CASE","WHEN","THEN","ELSE","END","UNION","ALL","EXISTS","BETWEEN"];var formatted=unformatted;keywords.forEach(function(keyword){var regex=new RegExp("\\b".concat(keyword,"\\b"),"gi");formatted=formatted.replace(regex,keyword.toUpperCase())});var majorClauses=["SELECT","FROM","WHERE","GROUP BY","ORDER BY","HAVING","LIMIT","UNION"];majorClauses.forEach(function(clause){var regex=new RegExp("\\s+(".concat(clause,")\\s+"),"gi");formatted=formatted.replace(regex,"\n".concat(clause.toUpperCase()," "))});formatted=formatted.replace(/\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\s+)?JOIN\s+/gi,"\n$1JOIN ");formatted=formatted.replace(/\s+(AND|OR)\s+/gi,"\n $1 ");var lines=formatted.split("\n");var indentedLines=[];var indentLevel=0;var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=lines[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var line=_step.value;var trimmedLine=line.trim();if(!trimmedLine)continue;var closingParens=(trimmedLine.match(/\)/g)||[]).length;var openingParens=(trimmedLine.match(/\(/g)||[]).length;if(closingParens>0&&openingParens===0){indentLevel=Math.max(0,indentLevel-closingParens)}var indent=" ".repeat(indentLevel);indentedLines.push(indent+trimmedLine);if(openingParens>closingParens){indentLevel+=openingParens-closingParens}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return indentedLines.join("\n").trim()}},{key:"raw",value:function raw(){return this.knexQuery}},{key:"increment",value:function increment(column,value){if(value<=0){throw new Error("Increment value must be greater than 0")}this.knexQuery.increment(column,value);return this}},{key:"decrement",value:function decrement(column,value){if(value<=0){throw new Error("Decrement value must be greater than 0")}this.knexQuery.decrement(column,value);return this}}],[{key:"count",value:function count(){var column=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"*";return{_type:"sql_function",_return:"number",_sql:"COUNT(".concat(column,")")}}},{key:"sum",value:function sum(column){return{_type:"sql_function",_return:"number",_sql:"SUM(".concat(column,")")}}},{key:"avg",value:function avg(column){return{_type:"sql_function",_return:"number",_sql:"AVG(".concat(column,")")}}},{key:"max",value:function max(column){return{_type:"sql_function",_return:"number",_sql:"MAX(".concat(column,")")}}},{key:"min",value:function min(column){return{_type:"sql_function",_return:"number",_sql:"MIN(".concat(column,")")}}},{key:"concat",value:function concat(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return{_type:"sql_function",_return:"string",_sql:"CONCAT(".concat(args.join(", "),")")}}},{key:"upper",value:function upper(column){return{_type:"sql_function",_return:"string",_sql:"UPPER(".concat(column,")")}}},{key:"lower",value:function lower(column){return{_type:"sql_function",_return:"string",_sql:"LOWER(".concat(column,")")}}},{key:"rawString",value:function rawString(sql){return{_type:"sql_function",_return:"string",_sql:sql}}},{key:"rawNumber",value:function rawNumber(sql){return{_type:"sql_function",_return:"number",_sql:sql}}},{key:"rawBoolean",value:function rawBoolean(sql){return{_type:"sql_function",_return:"boolean",_sql:sql}}},{key:"rawDate",value:function rawDate(sql){return{_type:"sql_function",_return:"date",_sql:sql}}}]);return Puri}();var WhereGroup=/*#__PURE__*/function(){"use strict";function WhereGroup(builder){_class_call_check(this,WhereGroup);_define_property(this,"builder",void 0);this.builder=builder}_create_class(WhereGroup,[{key:"where",value:function where(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).where.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"orWhere",value:function orWhere(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).orWhere.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"whereIn",value:function whereIn(column,values){this.builder.whereIn(column,values);return this}},{key:"orWhereIn",value:function orWhereIn(column,values){this.builder.orWhereIn(column,values);return this}},{key:"whereGroup",value:function whereGroup(callback){this.builder.where(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.builder.orWhere(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}}]);return WhereGroup}();var JoinClauseGroup=/*#__PURE__*/function(){"use strict";function JoinClauseGroup(callback){_class_call_check(this,JoinClauseGroup);_define_property(this,"callback",void 0);this.callback=callback}_create_class(JoinClauseGroup,[{key:"on",value:function on(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).on.apply(_this_callback,_to_consumable_array(args));return this}},{key:"orOn",value:function orOn(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).orOn.apply(_this_callback,_to_consumable_array(args));return this}}]);return JoinClauseGroup}();
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get JoinClauseGroup(){return JoinClauseGroup},get Puri(){return Puri},get WhereGroup(){return WhereGroup}});var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));var _assert=/*#__PURE__*/_interop_require_default(require("assert"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var Puri=/*#__PURE__*/function(){"use strict";function Puri(knex,tableNameOrSpec){_class_call_check(this,Puri);_define_property(this,"knex",void 0);_define_property(this,"knexQuery",void 0);this.knex=knex;if(typeof tableNameOrSpec==="string"){this.knexQuery=this.knex(tableNameOrSpec).from(tableNameOrSpec)}else if((typeof tableNameOrSpec==="undefined"?"undefined":_type_of(tableNameOrSpec))==="object"){var entries=Object.entries(tableNameOrSpec);if(entries.length!==1){throw new Error("Table spec must have exactly one entry")}(0,_assert.default)(entries[0]);var _entries_=_sliced_to_array(entries[0],2),alias=_entries_[0],spec=_entries_[1];if(typeof spec==="string"){this.knexQuery=this.knex(spec).from(_define_property({},alias,spec))}else if(_instanceof(spec,Puri)){var subqueryBuilder=spec.raw();this.knexQuery=this.knex.from(subqueryBuilder.as(alias))}else{throw new Error("Invalid table specification")}}else{throw new Error("Invalid table specification")}}_create_class(Puri,[{key:"select",value:function select(selectObj){var selectClauses=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.entries(selectObj)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _step_value=_sliced_to_array(_step.value,2),alias=_step_value[0],columnOrFunction=_step_value[1];if((typeof columnOrFunction==="undefined"?"undefined":_type_of(columnOrFunction))==="object"&&columnOrFunction._type==="sql_expression"){selectClauses.push(this.knex.raw("".concat(columnOrFunction._sql," as ").concat(alias)))}else{var columnPath=columnOrFunction;if(alias===columnPath){selectClauses.push(columnPath)}else{selectClauses.push("".concat(columnPath," as ").concat(alias))}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}this.knexQuery.select(selectClauses);return this}},{key:"selectAll",value:function selectAll(){this.knexQuery.select("*");return this}},{key:"join",value:function join(tableNameOrSpec){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}return this.__commonJoin.apply(this,["join",tableNameOrSpec].concat(_to_consumable_array(args)))}},{key:"leftJoin",value:function leftJoin(tableNameOrSpec){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}return this.__commonJoin.apply(this,["leftJoin",tableNameOrSpec].concat(_to_consumable_array(args)))}},{key:"__commonJoin",value:function __commonJoin(joinType,tableNameOrSpec){for(var _len=arguments.length,args=new Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){args[_key-2]=arguments[_key]}if(typeof tableNameOrSpec==="string"){var tableName=tableNameOrSpec;if(args.length===1&&typeof args[0]==="function"){var callback=args[0];this.knexQuery[joinType](tableName,function(joinClause){callback(new JoinClauseGroup(joinClause))})}else{var _args=_sliced_to_array(args,2),left=_args[0],right=_args[1];this.knexQuery[joinType](tableName,left,right)}}else if((typeof tableNameOrSpec==="undefined"?"undefined":_type_of(tableNameOrSpec))==="object"){var entries=Object.entries(tableNameOrSpec);if(entries.length!==1){throw new Error("Table spec must have exactly one entry")}(0,_assert.default)(entries[0]);var _entries=_sliced_to_array(entries,1),_entries_=_sliced_to_array(_entries[0],2),alias=_entries_[0],spec=_entries_[1];if(typeof spec==="string"){if(args.length===1&&typeof args[0]==="function"){var callback1=args[0];this.knexQuery[joinType](_define_property({},alias,spec),function(joinClause){callback1(new JoinClauseGroup(joinClause))})}else{var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery[joinType](_define_property({},alias,spec),left1,right1)}}else if(_instanceof(spec,Puri)){if(args.length===1&&typeof args[0]==="function"){var callback2=args[0];this.knexQuery[joinType](spec.raw().as(alias),function(joinClause){callback2(new JoinClauseGroup(joinClause))})}else{var _args2=_sliced_to_array(args,2),left2=_args2[0],right2=_args2[1];this.knexQuery[joinType](spec.raw().as(alias),left2,right2)}}else{throw new Error("Invalid table specification")}}else{throw new Error("Invalid arguments")}return this}},{key:"where",value:function where(columnOrConditions,operatorOrValue,value){if((typeof columnOrConditions==="undefined"?"undefined":_type_of(columnOrConditions))==="object"){this.knexQuery.where(columnOrConditions)}else if(arguments.length===2){if(operatorOrValue===null){this.knexQuery.whereNull(columnOrConditions);return this}this.knexQuery.where(columnOrConditions,operatorOrValue)}else if(arguments.length===3){if(value===null){if(operatorOrValue==="!="){this.knexQuery.whereNotNull(columnOrConditions);return this}else if(operatorOrValue==="="){this.knexQuery.whereNull(columnOrConditions);return this}}this.knexQuery.where(columnOrConditions,operatorOrValue,value)}else{this.knexQuery.where(columnOrConditions)}return this}},{key:"whereIn",value:function whereIn(column,values){this.knexQuery.whereIn(column,values);return this}},{key:"whereNotIn",value:function whereNotIn(column,values){this.knexQuery.whereIn(column,values);return this}},{key:"whereMatch",value:function whereMatch(column,value){this.knexQuery.whereRaw("MATCH (".concat(String(column),") AGAINST (?)"),[value]);return this}},{key:"whereGroup",value:function whereGroup(callback){this.knexQuery.where(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.knexQuery.orWhere(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"orderBy",value:function orderBy(column){var direction=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"asc";this.knexQuery.orderBy(column,direction);return this}},{key:"limit",value:function limit(count){this.knexQuery.limit(count);return this}},{key:"offset",value:function offset(count){this.knexQuery.offset(count);return this}},{key:"groupBy",value:function groupBy(){for(var _len=arguments.length,columns=new Array(_len),_key=0;_key<_len;_key++){columns[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).groupBy.apply(_this_knexQuery,_to_consumable_array(columns));return this}},{key:"having",value:function having(){for(var _len=arguments.length,conditions=new Array(_len),_key=0;_key<_len;_key++){conditions[_key]=arguments[_key]}if(conditions.length===1){this.knexQuery.having(conditions[0])}else if(conditions.length===3){this.knexQuery.having(conditions[0],conditions[1],conditions[2])}else{throw new Error("Invalid having arguments")}return this}},{key:"then",value:function then(onfulfilled,onrejected){return this.knexQuery.then(onfulfilled,onrejected)}},{key:"catch",value:function _catch(onrejected){return this.knexQuery.catch(onrejected)}},{key:"finally",value:function _finally(onfinally){return this.knexQuery.finally(onfinally)}},{key:"first",value:function first(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.first()]})}).call(this)}},{key:"firstOrFail",value:function firstOrFail(){return _async_to_generator(function(){var result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knexQuery.first()];case 1:result=_state.sent();if(!result){throw new Error("No results found")}return[2,result]}})}).call(this)}},{key:"at",value:function at(index){return _async_to_generator(function(){var results;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();return[2,results[index]]}})}).call(this)}},{key:"assertAt",value:function assertAt(index){return _async_to_generator(function(){var results,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();result=results[index];if(result===undefined){throw new Error("No result found at index ".concat(index))}return[2,result]}})}).call(this)}},{key:"pluck",value:function pluck(column){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.pluck(column)]})}).call(this)}},{key:"insert",value:function insert(data){this.knexQuery.insert(data);return this}},{key:"update",value:function update(data){this.knexQuery.update(data);return this}},{key:"increment",value:function increment(column,value){if(value<=0){throw new Error("Increment value must be greater than 0")}this.knexQuery.increment(column,value);return this}},{key:"decrement",value:function decrement(column,value){if(value<=0){throw new Error("Decrement value must be greater than 0")}this.knexQuery.decrement(column,value);return this}},{key:"delete",value:function _delete(){this.knexQuery.delete();return this}},{key:"toQuery",value:function toQuery(){return this.knexQuery.toQuery()}},{key:"debug",value:function debug(){console.log("".concat(_chalk.default.cyan("[Puri Debug]")," ").concat(_chalk.default.yellow(this.toQuery())));return this}},{key:"formatSQL",value:function formatSQL(unformatted){var keywords=["SELECT","FROM","WHERE","INSERT","INTO","VALUES","UPDATE","DELETE","CREATE","TABLE","ALTER","DROP","JOIN","ON","INNER","LEFT","RIGHT","FULL","OUTER","GROUP","BY","ORDER","HAVING","DISTINCT","LIMIT","OFFSET","AS","AND","OR","NOT","IN","LIKE","IS","NULL","CASE","WHEN","THEN","ELSE","END","UNION","ALL","EXISTS","BETWEEN"];var formatted=unformatted;keywords.forEach(function(keyword){var regex=new RegExp("\\b".concat(keyword,"\\b"),"gi");formatted=formatted.replace(regex,keyword.toUpperCase())});var majorClauses=["SELECT","FROM","WHERE","GROUP BY","ORDER BY","HAVING","LIMIT","UNION"];majorClauses.forEach(function(clause){var regex=new RegExp("\\s+(".concat(clause,")\\s+"),"gi");formatted=formatted.replace(regex,"\n".concat(clause.toUpperCase()," "))});formatted=formatted.replace(/\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\s+)?JOIN\s+/gi,"\n$1JOIN ");formatted=formatted.replace(/\s+(AND|OR)\s+/gi,"\n $1 ");var lines=formatted.split("\n");var indentedLines=[];var indentLevel=0;var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=lines[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var line=_step.value;var trimmedLine=line.trim();if(!trimmedLine)continue;var closingParens=(trimmedLine.match(/\)/g)||[]).length;var openingParens=(trimmedLine.match(/\(/g)||[]).length;if(closingParens>0&&openingParens===0){indentLevel=Math.max(0,indentLevel-closingParens)}var indent=" ".repeat(indentLevel);indentedLines.push(indent+trimmedLine);if(openingParens>closingParens){indentLevel+=openingParens-closingParens}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return indentedLines.join("\n").trim()}},{key:"raw",value:function raw(){return this.knexQuery}}],[{key:"count",value:function count(){var column=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"*";return{_type:"sql_expression",_return:"number",_sql:"COUNT(".concat(column,")")}}},{key:"sum",value:function sum(column){return{_type:"sql_expression",_return:"number",_sql:"SUM(".concat(column,")")}}},{key:"avg",value:function avg(column){return{_type:"sql_expression",_return:"number",_sql:"AVG(".concat(column,")")}}},{key:"max",value:function max(column){return{_type:"sql_expression",_return:"number",_sql:"MAX(".concat(column,")")}}},{key:"min",value:function min(column){return{_type:"sql_expression",_return:"number",_sql:"MIN(".concat(column,")")}}},{key:"concat",value:function concat(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return{_type:"sql_expression",_return:"string",_sql:"CONCAT(".concat(args.join(", "),")")}}},{key:"upper",value:function upper(column){return{_type:"sql_expression",_return:"string",_sql:"UPPER(".concat(column,")")}}},{key:"lower",value:function lower(column){return{_type:"sql_expression",_return:"string",_sql:"LOWER(".concat(column,")")}}},{key:"rawString",value:function rawString(sql){return{_type:"sql_expression",_return:"string",_sql:sql}}},{key:"rawNumber",value:function rawNumber(sql){return{_type:"sql_expression",_return:"number",_sql:sql}}},{key:"rawBoolean",value:function rawBoolean(sql){return{_type:"sql_expression",_return:"boolean",_sql:sql}}},{key:"rawDate",value:function rawDate(sql){return{_type:"sql_expression",_return:"date",_sql:sql}}}]);return Puri}();var WhereGroup=/*#__PURE__*/function(){"use strict";function WhereGroup(builder){_class_call_check(this,WhereGroup);_define_property(this,"builder",void 0);this.builder=builder}_create_class(WhereGroup,[{key:"where",value:function where(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).where.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"orWhere",value:function orWhere(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).orWhere.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"whereGroup",value:function whereGroup(callback){this.builder.where(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.builder.orWhere(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}}]);return WhereGroup}();var JoinClauseGroup=/*#__PURE__*/function(){"use strict";function JoinClauseGroup(callback){_class_call_check(this,JoinClauseGroup);_define_property(this,"callback",void 0);this.callback=callback}_create_class(JoinClauseGroup,[{key:"on",value:function on(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).on.apply(_this_callback,_to_consumable_array(args));return this}},{key:"orOn",value:function orOn(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).orOn.apply(_this_callback,_to_consumable_array(args));return this}}]);return JoinClauseGroup}();
2
2
  //# sourceMappingURL=puri.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/puri.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n AvailableColumns,\n ComparisonOperator,\n EmptyRecord,\n Expand,\n ExtractColumnType,\n FulltextColumns,\n InsertData,\n MergeJoined,\n ParseSelectObject,\n ResultAvailableColumns,\n SelectObject,\n SqlFunction,\n WhereCondition,\n} from \"./puri.types\";\nimport chalk from \"chalk\";\n\n// 메인 Puri 클래스\nexport class Puri<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TResult = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TJoined = EmptyRecord,\n> {\n private knexQuery: Knex.QueryBuilder;\n\n // 생성자 시그니처들\n constructor(\n knex: Knex,\n tableName: TTable extends keyof TSchema ? TTable : unknown\n );\n constructor(\n knex: Knex,\n subquery: Puri<TSchema, any, any, TOriginal, any>,\n alias: TTable extends string ? TTable : never\n );\n constructor(\n private knex: Knex,\n tableNameOrSubquery: any,\n alias?: TTable extends string ? TTable : never\n ) {\n if (typeof tableNameOrSubquery === \"string\") {\n // 일반 테이블로 시작\n this.knexQuery = knex(tableNameOrSubquery).from(tableNameOrSubquery);\n } else {\n // 서브쿼리로 시작\n this.knexQuery = knex.from(tableNameOrSubquery.raw().as(alias));\n }\n }\n\n // Static SQL helper functions\n static count(column: string = \"*\"): SqlFunction<\"number\"> {\n return {\n _type: \"sql_function\",\n _return: \"number\",\n _sql: `COUNT(${column})`,\n };\n }\n\n static sum(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `SUM(${column})` };\n }\n\n static avg(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `AVG(${column})` };\n }\n\n static max(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MAX(${column})` };\n }\n\n static min(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MIN(${column})` };\n }\n\n static concat(...args: string[]): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `CONCAT(${args.join(\", \")})`,\n };\n }\n\n static upper(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `UPPER(${column})`,\n };\n }\n\n static lower(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `LOWER(${column})`,\n };\n }\n\n // Raw functions\n static rawString(sql: string): SqlFunction<\"string\"> {\n return { _type: \"sql_function\", _return: \"string\", _sql: sql };\n }\n\n static rawNumber(sql: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: sql };\n }\n\n static rawBoolean(sql: string): SqlFunction<\"boolean\"> {\n return { _type: \"sql_function\", _return: \"boolean\", _sql: sql };\n }\n\n static rawDate(sql: string): SqlFunction<\"date\"> {\n return { _type: \"sql_function\", _return: \"date\", _sql: sql };\n }\n\n // Alias 기반 Select\n select<TSelect extends SelectObject<TSchema, TTable, TOriginal, TJoined>>(\n selectObj: TSelect\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n ParseSelectObject<TSchema, TTable, TSelect, TOriginal, TJoined>,\n TJoined\n > {\n const selectClauses: (string | Knex.Raw)[] = [];\n\n for (const [alias, columnOrFunction] of Object.entries(selectObj)) {\n if (\n typeof columnOrFunction === \"object\" &&\n columnOrFunction._type === \"sql_function\"\n ) {\n // SQL 함수인 경우\n selectClauses.push(\n this.knex.raw(`${columnOrFunction._sql} as ${alias}`)\n );\n } else {\n // 일반 컬럼인 경우\n const columnPath = columnOrFunction as string;\n if (alias === columnPath) {\n // alias와 컬럼명이 같으면 alias 생략\n selectClauses.push(columnPath);\n } else {\n // alias 지정\n selectClauses.push(`${columnPath} as ${alias}`);\n }\n }\n }\n\n this.knexQuery.select(selectClauses);\n return this as any;\n }\n\n // 전체 선택 (편의 메서드)\n selectAll(): Puri<\n TSchema,\n TTable,\n TOriginal,\n TTable extends keyof TSchema\n ? TSchema[TTable] & TJoined\n : TResult & TJoined,\n TJoined\n > {\n this.knexQuery.select(\"*\");\n return this as any;\n }\n\n // Where 조건 (조인된 테이블 컬럼도 지원)\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where(\n columnOrConditions: any,\n operatorOrValue?: any,\n value?: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (typeof columnOrConditions === \"object\") {\n this.knexQuery.where(columnOrConditions);\n } else if (arguments.length === 2) {\n if (operatorOrValue === null) {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue);\n } else if (arguments.length === 3) {\n if (value === null) {\n if (operatorOrValue === \"!=\") {\n this.knexQuery.whereNotNull(columnOrConditions);\n return this;\n } else if (operatorOrValue === \"=\") {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue, value);\n } else {\n this.knexQuery.where(columnOrConditions);\n }\n return this;\n }\n\n // WhereIn (조인된 테이블 컬럼도 지원)\n whereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereIn(column, values);\n return this;\n }\n\n whereNotIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereNotIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereNotIn(column, values);\n return this;\n }\n\n whereMatch<\n TColumn extends FulltextColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereRaw(`MATCH (${String(column)}) AGAINST (?)`, [value]);\n return this;\n }\n\n // WhereGroup (괄호 그룹핑 지원)\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.where((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n builder\n );\n callback(group);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orWhere((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n builder\n );\n callback(group);\n });\n return this;\n }\n\n // Join\n join<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n TRColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TJoinTable extends keyof TSchema>(\n table: TJoinTable,\n joinCallback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TAlias, TSubResult>\n >;\n join(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n join(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: join(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.join(tableOrSubquery.raw().as(alias), left, right);\n } else if (\n args.length === 2 &&\n typeof args[0] === \"string\" &&\n typeof args[1] === \"string\"\n ) {\n const [left, right] = args;\n this.knexQuery.join(tableOrSubquery as string, left, right);\n } else if (args.length === 1 && typeof args[0] === \"function\") {\n const joinCallback = args[0];\n this.knexQuery.join(tableOrSubquery as string, (joinClause) => {\n joinCallback(new JoinClauseGroup(joinClause));\n });\n } else {\n throw new Error(\"Invalid arguments\");\n }\n return this as any;\n }\n\n leftJoin<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n TRColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TJoinTable, Partial<TSchema[TJoinTable]>>\n >;\n leftJoin<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TAlias, Partial<TSubResult>>\n >;\n leftJoin(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n leftJoin(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: leftJoin(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias), left, right);\n } else {\n const [left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery as string, left, right);\n }\n return this as any;\n }\n\n // OrderBy\n orderBy<\n TColumn extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(\n column: TColumn,\n direction: \"asc\" | \"desc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n orderBy(\n column: string,\n direction: \"asc\" | \"desc\" = \"asc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orderBy(column, direction);\n return this;\n }\n\n // 기본 쿼리 메서드들\n limit(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.limit(count);\n return this;\n }\n\n offset(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.offset(count);\n return this;\n }\n\n // Group by (조인된 테이블 컬럼도 지원)\n groupBy<\n TColumns extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(...columns: TColumns[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n groupBy(\n ...columns: string[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.groupBy(...(columns as string[]));\n return this;\n }\n\n having(condition: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having<\n TColumn extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(\n condition: TColumn,\n operator: ComparisonOperator,\n value: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having(\n ...conditions: string[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.having(...(conditions as [string, string, string]));\n return this;\n }\n // 실행 메서드들 - thenable 구현\n then<TResult1, TResult2 = never>(\n onfulfilled?:\n | ((\n value: Expand<TResult>[]\n ) => Expand<TResult1> | PromiseLike<Expand<TResult1>>)\n | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult1> | TResult2> {\n return this.knexQuery.then(onfulfilled as any, onrejected);\n }\n\n catch<TResult2 = never>(\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult> | TResult2> {\n return this.knexQuery.catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null): Promise<Expand<TResult>> {\n return this.knexQuery.finally(onfinally);\n }\n\n // 안전한 실행 메서드들\n async first(): Promise<Expand<TResult> | undefined> {\n return this.knexQuery.first() as Promise<Expand<TResult> | undefined>;\n }\n\n async firstOrFail(): Promise<TResult> {\n const result = await this.knexQuery.first();\n if (!result) {\n throw new Error(\"No results found\");\n }\n return result as TResult;\n }\n\n async at(index: number): Promise<Expand<TResult> | undefined> {\n const results = await this;\n return results[index] as Expand<TResult> | undefined;\n }\n\n async assertAt(index: number): Promise<Expand<TResult>> {\n const results = await this;\n const result = results[index];\n if (result === undefined) {\n throw new Error(`No result found at index ${index}`);\n }\n return result;\n }\n\n // Pluck\n async pluck<\n TColumn extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(\n column: TColumn\n ): Promise<\n ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]\n > {\n return this.knexQuery.pluck(column) as Promise<\n ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]\n >;\n }\n\n // Insert/Update/Delete\n // TODO(Haze, 251030): InsertData<T>에서 nullable type을 제대로 처리하지 못하는 것 같음.\n async insert(\n data: TTable extends keyof TSchema ? InsertData<TSchema[TTable]> : unknown\n ): Promise<number[]> {\n return this.knexQuery.insert(data);\n }\n\n async update(\n data: Partial<TTable extends keyof TSchema ? TSchema[TTable] : unknown>\n ): Promise<number> {\n return this.knexQuery.update(data);\n }\n\n async delete(): Promise<number> {\n return this.knexQuery.delete();\n }\n\n toQuery(): string {\n return this.knexQuery.toQuery();\n }\n\n debug(): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n console.log(\n `${chalk.cyan(\"[Puri Debug]\")} ${chalk.yellow(this.formatSQL(this.toQuery()))}`\n );\n return this;\n }\n\n formatSQL(unformatted: string): string {\n // SQL 예약어 목록\n const keywords = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"INSERT\",\n \"INTO\",\n \"VALUES\",\n \"UPDATE\",\n \"DELETE\",\n \"CREATE\",\n \"TABLE\",\n \"ALTER\",\n \"DROP\",\n \"JOIN\",\n \"ON\",\n \"INNER\",\n \"LEFT\",\n \"RIGHT\",\n \"FULL\",\n \"OUTER\",\n \"GROUP\",\n \"BY\",\n \"ORDER\",\n \"HAVING\",\n \"DISTINCT\",\n \"LIMIT\",\n \"OFFSET\",\n \"AS\",\n \"AND\",\n \"OR\",\n \"NOT\",\n \"IN\",\n \"LIKE\",\n \"IS\",\n \"NULL\",\n \"CASE\",\n \"WHEN\",\n \"THEN\",\n \"ELSE\",\n \"END\",\n \"UNION\",\n \"ALL\",\n \"EXISTS\",\n \"BETWEEN\",\n ];\n\n let formatted = unformatted;\n\n // 예약어를 대문자로 변환\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b${keyword}\\\\b`, \"gi\");\n formatted = formatted.replace(regex, keyword.toUpperCase());\n });\n\n // 주요 절 앞에 줄바꿈 추가\n const majorClauses = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"GROUP BY\",\n \"ORDER BY\",\n \"HAVING\",\n \"LIMIT\",\n \"UNION\",\n ];\n majorClauses.forEach((clause) => {\n const regex = new RegExp(`\\\\s+(${clause})\\\\s+`, \"gi\");\n formatted = formatted.replace(regex, `\\n${clause.toUpperCase()} `);\n });\n\n // JOIN 절 처리\n formatted = formatted.replace(\n /\\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\\s+)?JOIN\\s+/gi,\n \"\\n$1JOIN \"\n );\n\n // AND, OR 조건 처리\n formatted = formatted.replace(/\\s+(AND|OR)\\s+/gi, \"\\n $1 \");\n\n // 괄호 처리 및 들여쓰기\n const lines = formatted.split(\"\\n\");\n const indentedLines = [];\n let indentLevel = 0;\n\n for (let line of lines) {\n const trimmedLine = line.trim();\n if (!trimmedLine) continue;\n\n // 닫는 괄호가 있으면 들여쓰기 레벨 감소\n const closingParens = (trimmedLine.match(/\\)/g) || []).length;\n const openingParens = (trimmedLine.match(/\\(/g) || []).length;\n\n if (closingParens > 0 && openingParens === 0) {\n indentLevel = Math.max(0, indentLevel - closingParens);\n }\n\n // 현재 들여쓰기 적용\n const indent = \" \".repeat(indentLevel);\n indentedLines.push(indent + trimmedLine);\n\n // 여는 괄호가 있으면 들여쓰기 레벨 증가\n if (openingParens > closingParens) {\n indentLevel += openingParens - closingParens;\n }\n }\n\n return indentedLines.join(\"\\n\").trim();\n }\n\n raw(): Knex.QueryBuilder {\n return this.knexQuery;\n }\n\n increment<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: number\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (value <= 0) {\n throw new Error(\"Increment value must be greater than 0\");\n }\n this.knexQuery.increment(column, value);\n return this;\n }\n\n decrement<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: number\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (value <= 0) {\n throw new Error(\"Decrement value must be greater than 0\");\n }\n this.knexQuery.decrement(column, value);\n return this;\n }\n}\n\n// 11. Database 클래스\nclass WhereGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private builder: Knex.QueryBuilder) {}\n\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where(args[0], ...args.slice(1));\n return this;\n }\n\n orWhere(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere(args[0], ...args.slice(1));\n return this;\n }\n\n whereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.whereIn(column, values);\n return this;\n }\n\n orWhereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhereIn(column, values);\n return this;\n }\n\n // 중첩 그룹 지원\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n}\n\nexport class JoinClauseGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private callback: Knex.JoinClause) {}\n\n on(\n callback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(\n column: string,\n value: any\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.on(...(args as [string, string]));\n return this;\n }\n\n orOn(\n callback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(\n column: string,\n value: any\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.orOn(...(args as [string, string]));\n return this;\n }\n}\n"],"names":["JoinClauseGroup","Puri","knex","tableNameOrSubquery","alias","knexQuery","from","raw","as","select","selectObj","selectClauses","Object","entries","columnOrFunction","_type","push","_sql","columnPath","selectAll","where","columnOrConditions","operatorOrValue","value","arguments","length","whereNull","whereNotNull","whereIn","column","values","whereNotIn","whereMatch","whereRaw","String","whereGroup","callback","builder","group","WhereGroup","orWhereGroup","orWhere","join","tableOrSubquery","args","left","right","joinCallback","joinClause","Error","leftJoin","orderBy","direction","limit","count","offset","groupBy","columns","having","conditions","then","onfulfilled","onrejected","catch","finally","onfinally","first","firstOrFail","result","at","index","results","assertAt","undefined","pluck","insert","data","update","delete","toQuery","debug","console","log","chalk","cyan","yellow","formatSQL","unformatted","keywords","formatted","forEach","keyword","regex","RegExp","replace","toUpperCase","majorClauses","clause","lines","split","indentedLines","indentLevel","line","trimmedLine","trim","closingParens","match","openingParens","Math","max","indent","repeat","increment","decrement","_return","sum","avg","min","concat","upper","lower","rawString","sql","rawNumber","rawBoolean","rawDate","slice","orWhereIn","subBuilder","subGroup","on","orOn"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/database/puri.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n AvailableColumns,\n SelectObject,\n ParseSelectObject,\n WhereCondition,\n ComparisonOperator,\n ExtractColumnType,\n SqlExpression,\n Expand,\n FulltextColumns,\n ResultAvailableColumns,\n InsertData,\n SingleTableValue,\n} from \"./puri.types\";\nimport chalk from \"chalk\";\nimport assert from \"assert\";\n\nexport class Puri<\n TSchema,\n TTables extends Record<string, any>,\n TResult,\n TResolved = Expand<TResult>[],\n> {\n private knexQuery: Knex.QueryBuilder;\n\n // 생성자 시그니처들\n constructor(knex: Knex, tableName: string);\n constructor(\n knex: Knex,\n tableSpec: Record<string, string | Puri<TSchema, any, any>>\n );\n constructor(\n private knex: Knex,\n tableNameOrSpec: any\n ) {\n if (typeof tableNameOrSpec === \"string\") {\n // Case: new Puri(knex, \"users\")\n this.knexQuery = this.knex(tableNameOrSpec).from(tableNameOrSpec);\n } else if (typeof tableNameOrSpec === \"object\") {\n const entries = Object.entries(tableNameOrSpec);\n if (entries.length !== 1) {\n throw new Error(\"Table spec must have exactly one entry\");\n }\n assert(entries[0]);\n const [alias, spec] = entries[0];\n if (typeof spec === \"string\") {\n this.knexQuery = this.knex(spec).from({ [alias]: spec });\n } else if (spec instanceof Puri) {\n const subqueryBuilder = spec.raw();\n this.knexQuery = this.knex.from(subqueryBuilder.as(alias));\n } else {\n throw new Error(\"Invalid table specification\");\n }\n } else {\n throw new Error(\"Invalid table specification\");\n }\n }\n\n // Static SQL helper functions for SELECT\n static count(column: string = \"*\"): SqlExpression<\"number\"> {\n return {\n _type: \"sql_expression\",\n _return: \"number\",\n _sql: `COUNT(${column})`,\n };\n }\n static sum(column: string): SqlExpression<\"number\"> {\n return {\n _type: \"sql_expression\",\n _return: \"number\",\n _sql: `SUM(${column})`,\n };\n }\n static avg(column: string): SqlExpression<\"number\"> {\n return {\n _type: \"sql_expression\",\n _return: \"number\",\n _sql: `AVG(${column})`,\n };\n }\n static max(column: string): SqlExpression<\"number\"> {\n return {\n _type: \"sql_expression\",\n _return: \"number\",\n _sql: `MAX(${column})`,\n };\n }\n static min(column: string): SqlExpression<\"number\"> {\n return {\n _type: \"sql_expression\",\n _return: \"number\",\n _sql: `MIN(${column})`,\n };\n }\n static concat(...args: string[]): SqlExpression<\"string\"> {\n return {\n _type: \"sql_expression\",\n _return: \"string\",\n _sql: `CONCAT(${args.join(\", \")})`,\n };\n }\n static upper(column: string): SqlExpression<\"string\"> {\n return {\n _type: \"sql_expression\",\n _return: \"string\",\n _sql: `UPPER(${column})`,\n };\n }\n static lower(column: string): SqlExpression<\"string\"> {\n return {\n _type: \"sql_expression\",\n _return: \"string\",\n _sql: `LOWER(${column})`,\n };\n }\n\n // Raw functions for SELECT\n static rawString(sql: string): SqlExpression<\"string\"> {\n return { _type: \"sql_expression\", _return: \"string\", _sql: sql };\n }\n static rawNumber(sql: string): SqlExpression<\"number\"> {\n return { _type: \"sql_expression\", _return: \"number\", _sql: sql };\n }\n static rawBoolean(sql: string): SqlExpression<\"boolean\"> {\n return { _type: \"sql_expression\", _return: \"boolean\", _sql: sql };\n }\n static rawDate(sql: string): SqlExpression<\"date\"> {\n return { _type: \"sql_expression\", _return: \"date\", _sql: sql };\n }\n\n // SELECT\n select<TSelect extends SelectObject<TTables>>(\n selectObj: TSelect\n ): Puri<TSchema, TTables, ParseSelectObject<TTables, TSelect>> {\n const selectClauses: (string | Knex.Raw)[] = [];\n\n for (const [alias, columnOrFunction] of Object.entries(selectObj)) {\n if (\n typeof columnOrFunction === \"object\" &&\n columnOrFunction._type === \"sql_expression\"\n ) {\n // SQL 함수인 경우\n selectClauses.push(\n this.knex.raw(`${columnOrFunction._sql} as ${alias}`)\n );\n } else {\n // 일반 컬럼인 경우\n const columnPath = columnOrFunction as string;\n if (alias === columnPath) {\n // alias와 컬럼명이 같으면 alias 생략\n selectClauses.push(columnPath);\n } else {\n // alias 지정\n selectClauses.push(`${columnPath} as ${alias}`);\n }\n }\n }\n\n this.knexQuery.select(selectClauses);\n return this as any;\n }\n\n // SELECT *\n selectAll(): this {\n this.knexQuery.select(\"*\");\n return this as any;\n }\n\n // JOIN: 서브쿼리 + Alias\n join<TJoinAlias extends string, TSubResult>(\n tableSpec: { [K in TJoinAlias]: Puri<TSchema, any, TSubResult> },\n left: AvailableColumns<TTables>,\n right: `${TJoinAlias}.${keyof TSubResult & string}`\n ): Puri<\n TSchema,\n TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult\n TResult\n >;\n // JOIN: 테이블 + Alias\n join<TJoinTable extends keyof TSchema, TJoinAlias extends string>(\n tableSpec: { [K in TJoinAlias]: TJoinTable },\n left: AvailableColumns<TTables>,\n right: `${TJoinAlias}.${keyof TSchema[TJoinTable] & string}`\n ): Puri<\n TSchema,\n TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!\n TResult\n >;\n // JOIN: 테이블명\n join<TJoinTable extends keyof TSchema>(\n tableName: TJoinTable,\n left: AvailableColumns<TTables>,\n right: `${TJoinTable & string}.${keyof TSchema[TJoinTable] & string}`\n ): Puri<\n TSchema,\n TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키\n TResult\n >;\n // JOIN: 서브쿼리 + Alias + 콜백\n join<TJoinAlias extends string, TSubResult>(\n tableSpec: { [K in TJoinAlias]: Puri<TSchema, any, TSubResult> },\n callback: (\n j: JoinClauseGroup<TTables, Record<TJoinAlias, TSubResult>>\n ) => void\n ): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, TResult>;\n // JOIN: 테이블 + Alias + 콜백\n join<TJoinTable extends keyof TSchema, TJoinAlias extends string>(\n tableSpec: { [K in TJoinAlias]: TJoinTable },\n callback: (\n j: JoinClauseGroup<TTables, Record<TJoinAlias, TSchema[TJoinTable]>>\n ) => void\n ): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, TResult>;\n // JOIN: 테이블명 + 콜백\n join<TJoinTable extends keyof TSchema>(\n tableName: TJoinTable,\n callback: (\n j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>\n ) => void\n ): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;\n // JOIN 실제 구현\n join(tableNameOrSpec: any, ...args: any[]): any {\n return this.__commonJoin(\"join\", tableNameOrSpec, ...args);\n }\n\n // LEFT JOIN: 서브쿼리 + Alias\n leftJoin<TJoinAlias extends string, TSubResult>(\n tableSpec: { [K in TJoinAlias]: Puri<TSchema, any, TSubResult> },\n left: AvailableColumns<TTables>,\n right: `${TJoinAlias}.${keyof TSubResult & string}`\n ): Puri<\n TSchema,\n TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult\n TResult\n >;\n // LEFT JOIN: 테이블 + Alias\n leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(\n tableSpec: { [K in TJoinAlias]: TJoinTable },\n left: AvailableColumns<TTables>,\n right: `${TJoinAlias}.${keyof TSchema[TJoinTable] & string}`\n ): Puri<\n TSchema,\n TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!\n TResult\n >;\n // LEFT JOIN: 테이블명\n leftJoin<TJoinTable extends keyof TSchema>(\n tableName: TJoinTable,\n left: AvailableColumns<TTables>,\n right: `${TJoinTable & string}.${keyof TSchema[TJoinTable] & string}`\n ): Puri<\n TSchema,\n TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키\n TResult\n >;\n // LEFT JOIN: 서브쿼리 + Alias + 콜백\n leftJoin<TJoinAlias extends string, TSubResult>(\n tableSpec: { [K in TJoinAlias]: Puri<TSchema, any, TSubResult> },\n callback: (\n j: JoinClauseGroup<TTables, Record<TJoinAlias, TSubResult>>\n ) => void\n ): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, TResult>;\n // LEFT JOIN: 테이블 + Alias + 콜백\n leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(\n tableSpec: { [K in TJoinAlias]: TJoinTable },\n callback: (\n j: JoinClauseGroup<TTables, Record<TJoinAlias, TSchema[TJoinTable]>>\n ) => void\n ): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, TResult>;\n // LEFT JOIN: 테이블명 + 콜백\n leftJoin<TJoinTable extends keyof TSchema>(\n tableName: TJoinTable,\n callback: (\n j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>\n ) => void\n ): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;\n // LEFT JOIN 실제 구현\n leftJoin(tableNameOrSpec: any, ...args: any[]): any {\n return this.__commonJoin(\"leftJoin\", tableNameOrSpec, ...args);\n }\n\n __commonJoin(\n joinType: \"join\" | \"leftJoin\",\n tableNameOrSpec: any,\n ...args: any[]\n ): this {\n if (typeof tableNameOrSpec === \"string\") {\n // Case 1: join(\"posts\", ...)\n const tableName = tableNameOrSpec;\n\n if (args.length === 1 && typeof args[0] === \"function\") {\n // join(\"posts\", callback)\n const callback = args[0];\n this.knexQuery[joinType](tableName, (joinClause) => {\n callback(new JoinClauseGroup(joinClause));\n });\n } else {\n // join(\"posts\", left, right)\n const [left, right] = args;\n this.knexQuery[joinType](tableName, left, right);\n }\n } else if (typeof tableNameOrSpec === \"object\") {\n // Case 2: join({ alias: \"table\" }, ...) or join({ alias: subquery }, ...)\n const entries = Object.entries(tableNameOrSpec);\n if (entries.length !== 1) {\n throw new Error(\"Table spec must have exactly one entry\");\n }\n assert(entries[0]);\n const [[alias, spec]] = entries;\n\n if (typeof spec === \"string\") {\n // 테이블: join({ p: \"posts\" }, ...)\n if (args.length === 1 && typeof args[0] === \"function\") {\n // Callback\n const callback = args[0];\n this.knexQuery[joinType]({ [alias]: spec }, (joinClause) => {\n callback(new JoinClauseGroup(joinClause));\n });\n } else {\n // Simple\n const [left, right] = args;\n this.knexQuery[joinType]({ [alias]: spec }, left, right);\n }\n } else if (spec instanceof Puri) {\n // 서브쿼리: join({ sq: subquery }, ...)\n if (args.length === 1 && typeof args[0] === \"function\") {\n // Callback\n const callback = args[0];\n this.knexQuery[joinType](spec.raw().as(alias), (joinClause) => {\n callback(new JoinClauseGroup(joinClause));\n });\n } else {\n // Simple\n const [left, right] = args;\n this.knexQuery[joinType](spec.raw().as(alias), left, right);\n }\n } else {\n throw new Error(\"Invalid table specification\");\n }\n } else {\n throw new Error(\"Invalid arguments\");\n }\n\n return this;\n }\n\n // WHERE: 객체 - 사용: .where({ \"u.id\": 1, \"u.status\": \"active\" })\n where(conditions: WhereCondition<TTables>): this;\n // WHERE: 컬럼 - 사용: .where(\"u.id\", 1)\n where<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n value: ExtractColumnType<TTables, TColumn & string>\n ): this;\n // WHERE: 컬럼 - 사용: .where(\"u.id\", \">\", 10)\n where<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n operator: ComparisonOperator,\n value: ExtractColumnType<TTables, TColumn & string>\n ): this;\n // WHERE: 컬럼 - 사용: .where(\"u.id\", \"like\", \"%test%\")\n where(columnOrConditions: any, operatorOrValue?: any, value?: any): this {\n if (typeof columnOrConditions === \"object\") {\n this.knexQuery.where(columnOrConditions);\n } else if (arguments.length === 2) {\n if (operatorOrValue === null) {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue);\n } else if (arguments.length === 3) {\n if (value === null) {\n if (operatorOrValue === \"!=\") {\n this.knexQuery.whereNotNull(columnOrConditions);\n return this;\n } else if (operatorOrValue === \"=\") {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue, value);\n } else {\n this.knexQuery.where(columnOrConditions);\n }\n return this;\n }\n\n // WHERE IN\n whereIn<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n values: ExtractColumnType<TTables, TColumn & string>[]\n ): Puri<TSchema, TTables, TResult> {\n this.knexQuery.whereIn(column, values);\n return this as any;\n }\n\n // WHERE NOT IN\n whereNotIn<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n values: ExtractColumnType<TTables, TColumn & string>[]\n ): Puri<TSchema, TTables, TResult> {\n this.knexQuery.whereIn(column, values);\n return this as any;\n }\n\n // WHERE MATCH\n whereMatch<TColumn extends FulltextColumns<TTables>>(\n column: TColumn,\n value: string\n ): this {\n this.knexQuery.whereRaw(`MATCH (${String(column)}) AGAINST (?)`, [value]);\n return this;\n }\n\n // WHERE 괄호 그룹핑\n whereGroup(callback: (g: WhereGroup<TTables>) => void): this {\n this.knexQuery.where((builder) => {\n const group = new WhereGroup<TTables>(builder);\n callback(group);\n });\n return this;\n }\n orWhereGroup(callback: (g: WhereGroup<TTables>) => void): this {\n this.knexQuery.orWhere((builder) => {\n const group = new WhereGroup<TTables>(builder);\n callback(group);\n });\n return this;\n }\n\n // ORDER BY\n orderBy<TColumn extends ResultAvailableColumns<TTables, TResult>>(\n column: TColumn,\n direction: \"asc\" | \"desc\"\n ): this;\n orderBy(column: string, direction: \"asc\" | \"desc\" = \"asc\"): this {\n this.knexQuery.orderBy(column, direction);\n return this;\n }\n\n // 기본 쿼리 메서드들\n limit(count: number): this {\n this.knexQuery.limit(count);\n return this;\n }\n\n offset(count: number): this {\n this.knexQuery.offset(count);\n return this;\n }\n\n // GROUP BY\n groupBy<TColumns extends ResultAvailableColumns<TTables, TResult>>(\n ...columns: TColumns[]\n ): this;\n groupBy(...columns: string[]): this {\n this.knexQuery.groupBy(...(columns as string[]));\n return this;\n }\n\n // HAVING\n having(condition: string): this;\n having<TColumn extends ResultAvailableColumns<TTables, TResult>>(\n column: TColumn,\n operator: ComparisonOperator,\n value: any\n ): this;\n // HAVING 구현\n having(...conditions: any[]): this {\n if (conditions.length === 1) {\n // having(\"COUNT(*) > 10\")\n this.knexQuery.having(conditions[0]);\n } else if (conditions.length === 3) {\n // having(\"count\", \">\", 10)\n this.knexQuery.having(conditions[0], conditions[1], conditions[2]);\n } else {\n throw new Error(\"Invalid having arguments\");\n }\n return this;\n }\n\n // 실행 메서드들 - thenable 구현\n then<TResult1 = TResolved, TResult2 = never>(\n onfulfilled?:\n | ((value: TResolved) => TResult1 | PromiseLike<TResult1>)\n | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.knexQuery.then(onfulfilled as any, onrejected);\n }\n catch<TResult2 = never>(\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult> | TResult2> {\n return this.knexQuery.catch(onrejected);\n }\n finally(onfinally?: (() => void) | null): Promise<Expand<TResult>> {\n return this.knexQuery.finally(onfinally);\n }\n\n // 하나만 쿼리\n async first(): Promise<Expand<TResult> | undefined> {\n return this.knexQuery.first();\n }\n // 하나만 쿼리 실패 시 에러\n async firstOrFail(): Promise<TResult> {\n const result = await this.knexQuery.first();\n if (!result) {\n throw new Error(\"No results found\");\n }\n return result;\n }\n\n // 쿼리 후 인덱스 리턴\n async at(index: number): Promise<Expand<TResult> | undefined> {\n const results = (await this) as any[];\n return results[index];\n }\n // 쿼리 후 인덱스 리턴 실패 시 에러\n async assertAt(index: number): Promise<Expand<TResult>> {\n const results = (await this) as any[];\n const result = results[index];\n if (result === undefined) {\n throw new Error(`No result found at index ${index}`);\n }\n return result;\n }\n\n // 쿼리한 레코드에서 특정 컬럼만 추출한 배열 리턴\n async pluck<TColumn extends ResultAvailableColumns<TTables, TResult>>(\n column: TColumn\n ): Promise<ExtractColumnType<TTables, TColumn & string>[]> {\n return this.knexQuery.pluck(column) as Promise<\n ExtractColumnType<TTables, TColumn & string>[]\n >;\n }\n\n // INSERT\n insert(\n data: InsertData<SingleTableValue<TTables>>\n ): Puri<TSchema, {}, number, number[]> {\n this.knexQuery.insert(data);\n return this as any;\n }\n\n // UPDATE\n update(data: WhereCondition<TTables>): Puri<TSchema, {}, number, number> {\n this.knexQuery.update(data);\n return this as any;\n }\n\n // Increment\n increment<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n value: number\n ): this {\n if (value <= 0) {\n throw new Error(\"Increment value must be greater than 0\");\n }\n this.knexQuery.increment(column, value);\n return this;\n }\n // Decrement\n decrement<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n value: number\n ): this {\n if (value <= 0) {\n throw new Error(\"Decrement value must be greater than 0\");\n }\n this.knexQuery.decrement(column, value);\n return this;\n }\n\n // DELETE\n delete(): Puri<TSchema, {}, number, number> {\n this.knexQuery.delete();\n return this as any;\n }\n\n // 확인 쿼리 리턴\n toQuery(): string {\n return this.knexQuery.toQuery();\n }\n\n // 쿼리 디버깅 로그 출력\n debug(): this {\n console.log(\n `${chalk.cyan(\"[Puri Debug]\")} ${chalk.yellow(this.toQuery())}`\n );\n return this;\n }\n\n formatSQL(unformatted: string): string {\n // SQL 예약어 목록\n const keywords = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"INSERT\",\n \"INTO\",\n \"VALUES\",\n \"UPDATE\",\n \"DELETE\",\n \"CREATE\",\n \"TABLE\",\n \"ALTER\",\n \"DROP\",\n \"JOIN\",\n \"ON\",\n \"INNER\",\n \"LEFT\",\n \"RIGHT\",\n \"FULL\",\n \"OUTER\",\n \"GROUP\",\n \"BY\",\n \"ORDER\",\n \"HAVING\",\n \"DISTINCT\",\n \"LIMIT\",\n \"OFFSET\",\n \"AS\",\n \"AND\",\n \"OR\",\n \"NOT\",\n \"IN\",\n \"LIKE\",\n \"IS\",\n \"NULL\",\n \"CASE\",\n \"WHEN\",\n \"THEN\",\n \"ELSE\",\n \"END\",\n \"UNION\",\n \"ALL\",\n \"EXISTS\",\n \"BETWEEN\",\n ];\n\n let formatted = unformatted;\n\n // 예약어를 대문자로 변환\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b${keyword}\\\\b`, \"gi\");\n formatted = formatted.replace(regex, keyword.toUpperCase());\n });\n\n // 주요 절 앞에 줄바꿈 추가\n const majorClauses = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"GROUP BY\",\n \"ORDER BY\",\n \"HAVING\",\n \"LIMIT\",\n \"UNION\",\n ];\n majorClauses.forEach((clause) => {\n const regex = new RegExp(`\\\\s+(${clause})\\\\s+`, \"gi\");\n formatted = formatted.replace(regex, `\\n${clause.toUpperCase()} `);\n });\n\n // JOIN 절 처리\n formatted = formatted.replace(\n /\\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\\s+)?JOIN\\s+/gi,\n \"\\n$1JOIN \"\n );\n\n // AND, OR 조건 처리\n formatted = formatted.replace(/\\s+(AND|OR)\\s+/gi, \"\\n $1 \");\n\n // 괄호 처리 및 들여쓰기\n const lines = formatted.split(\"\\n\");\n const indentedLines = [];\n let indentLevel = 0;\n\n for (let line of lines) {\n const trimmedLine = line.trim();\n if (!trimmedLine) continue;\n\n // 닫는 괄호가 있으면 들여쓰기 레벨 감소\n const closingParens = (trimmedLine.match(/\\)/g) || []).length;\n const openingParens = (trimmedLine.match(/\\(/g) || []).length;\n\n if (closingParens > 0 && openingParens === 0) {\n indentLevel = Math.max(0, indentLevel - closingParens);\n }\n\n // 현재 들여쓰기 적용\n const indent = \" \".repeat(indentLevel);\n indentedLines.push(indent + trimmedLine);\n\n // 여는 괄호가 있으면 들여쓰기 레벨 증가\n if (openingParens > closingParens) {\n indentLevel += openingParens - closingParens;\n }\n }\n\n return indentedLines.join(\"\\n\").trim();\n }\n\n // Knex 쿼리 빌더 직접 접근\n raw(): Knex.QueryBuilder {\n return this.knexQuery;\n }\n}\n\nexport class WhereGroup<TTables extends Record<string, any>> {\n constructor(private builder: Knex.QueryBuilder) {}\n\n // where 메서드들\n where(conditions: WhereCondition<TTables>): this;\n where<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n value: ExtractColumnType<TTables, TColumn & string>\n ): this;\n where<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n operator: ComparisonOperator,\n value: ExtractColumnType<TTables, TColumn & string>\n ): this;\n where(...args: any[]): WhereGroup<TTables> {\n this.builder.where(args[0], ...args.slice(1));\n return this;\n }\n\n // orWhere 메서드들\n orWhere(conditions: WhereCondition<TTables>): this;\n orWhere<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n value: ExtractColumnType<TTables, TColumn & string>\n ): this;\n orWhere<TColumn extends AvailableColumns<TTables>>(\n column: TColumn,\n operator: ComparisonOperator,\n value: ExtractColumnType<TTables, TColumn & string>\n ): this;\n orWhere(...args: any[]): WhereGroup<TTables> {\n this.builder.orWhere(args[0], ...args.slice(1));\n return this;\n }\n\n // 중첩 그룹\n whereGroup(callback: (g: WhereGroup<TTables>) => void): this;\n whereGroup(callback: (g: WhereGroup<TTables>) => void): WhereGroup<TTables> {\n this.builder.where((subBuilder) => {\n const subGroup = new WhereGroup<TTables>(subBuilder);\n callback(subGroup);\n });\n return this;\n }\n orWhereGroup(callback: (g: WhereGroup<TTables>) => void): this;\n orWhereGroup(\n callback: (g: WhereGroup<TTables>) => void\n ): WhereGroup<TTables> {\n this.builder.orWhere((subBuilder) => {\n const subGroup = new WhereGroup<TTables>(subBuilder);\n callback(subGroup);\n });\n return this;\n }\n}\n\nexport class JoinClauseGroup<\n TLeft extends Record<string, any>,\n TRight extends Record<string, any>,\n> {\n constructor(private callback: Knex.JoinClause) {}\n\n // ON(AND): 컬럼 = 컬럼\n on(left: AvailableColumns<TLeft>, right: AvailableColumns<TRight>): this;\n // ON(AND): 컬럼 (연산자) 컬럼\n on(\n left: AvailableColumns<TLeft>,\n operator: ComparisonOperator,\n right: AvailableColumns<TRight>\n ): this;\n // ON(AND): 콜백\n on(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;\n // ON(AND) 구현\n on(...args: any[]): this {\n this.callback.on(...(args as [string, string]));\n return this;\n }\n\n // ON(OR): 컬럼 = 컬럼\n orOn(left: AvailableColumns<TLeft>, right: AvailableColumns<TRight>): this;\n // ON(OR): 컬럼 (연산자) 컬럼\n orOn(\n left: AvailableColumns<TLeft>,\n operator: ComparisonOperator,\n right: AvailableColumns<TRight>\n ): this;\n // ON(OR): 콜백\n orOn(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;\n // ON(OR) 구현\n orOn(...args: any[]): this {\n this.callback.orOn(...(args as [string, string]));\n return this;\n }\n}\n"],"names":["JoinClauseGroup","Puri","WhereGroup","knex","tableNameOrSpec","knexQuery","from","entries","Object","length","Error","assert","alias","spec","subqueryBuilder","raw","as","select","selectObj","selectClauses","columnOrFunction","_type","push","_sql","columnPath","selectAll","join","args","__commonJoin","leftJoin","joinType","tableName","callback","joinClause","left","right","where","columnOrConditions","operatorOrValue","value","arguments","whereNull","whereNotNull","whereIn","column","values","whereNotIn","whereMatch","whereRaw","String","whereGroup","builder","group","orWhereGroup","orWhere","orderBy","direction","limit","count","offset","groupBy","columns","having","conditions","then","onfulfilled","onrejected","catch","finally","onfinally","first","firstOrFail","result","at","index","results","assertAt","undefined","pluck","insert","data","update","increment","decrement","delete","toQuery","debug","console","log","chalk","cyan","yellow","formatSQL","unformatted","keywords","formatted","forEach","keyword","regex","RegExp","replace","toUpperCase","majorClauses","clause","lines","split","indentedLines","indentLevel","line","trimmedLine","trim","closingParens","match","openingParens","Math","max","indent","repeat","_return","sum","avg","min","concat","upper","lower","rawString","sql","rawNumber","rawBoolean","rawDate","slice","subBuilder","subGroup","on","orOn"],"mappings":"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"}
@@ -1,56 +1,42 @@
1
+ type ExcludeMetadataColumns<T> = T extends {
2
+ __fulltext__: readonly (infer _Col)[];
3
+ } ? Omit<T, "__fulltext__"> : T;
4
+ export type AvailableColumns<TTables extends Record<string, any>> = {
5
+ [TAlias in keyof TTables]: `${TAlias & string}.${ExcludeMetadataColumns<keyof TTables[TAlias]> & string}`;
6
+ }[keyof TTables] | (IsSingleKey<TTables> extends true ? ExcludeMetadataColumns<keyof TTables[keyof TTables]> : never);
7
+ export type ResultAvailableColumns<TTables extends Record<string, any>, TResult = any> = AvailableColumns<TTables> | `${keyof TResult & string}`;
8
+ export type SelectValue<TTables extends Record<string, any>> = AvailableColumns<TTables> | SqlExpression<"string" | "number" | "boolean" | "date">;
9
+ export type SelectObject<TTables extends Record<string, any>> = Record<string, SelectValue<TTables>>;
10
+ export type ParseSelectObject<TTables extends Record<string, any>, TSelect extends SelectObject<TTables>> = {
11
+ [K in keyof TSelect]: TSelect[K] extends SqlExpression<infer R> ? R extends "string" ? string : R extends "number" ? number : R extends "boolean" ? boolean : R extends "date" ? Date : never : ExtractColumnType<TTables, TSelect[K] & string>;
12
+ };
13
+ export type ExtractColumnType<TTables extends Record<string, any>, Path extends string> = Path extends `${infer TAlias}.${infer TColumn}` ? TAlias extends keyof TTables ? TColumn extends keyof TTables[TAlias] ? TTables[TAlias][TColumn] : never : never : IsSingleKey<TTables> extends true ? Path extends keyof TTables[keyof TTables] ? TTables[keyof TTables][Path] : never : never;
14
+ export type WhereCondition<TTables extends Record<string, any>> = {
15
+ [key in AvailableColumns<TTables>]?: ExtractColumnType<TTables, key & string>;
16
+ };
17
+ export type FulltextColumns<TTables extends Record<string, any>> = {
18
+ [TAlias in keyof TTables]: TTables[TAlias] extends {
19
+ __fulltext__: readonly (infer Col)[];
20
+ } ? Col extends string ? `${TAlias & string}.${Col}` : never : never;
21
+ }[keyof TTables];
1
22
  export type ComparisonOperator = "=" | ">" | ">=" | "<" | "<=" | "<>" | "!=";
23
+ export type SqlExpression<T extends "string" | "number" | "boolean" | "date"> = {
24
+ _type: "sql_expression";
25
+ _return: T;
26
+ _sql: string;
27
+ };
2
28
  export type Expand<T> = T extends any[] ? {
3
29
  [K in keyof T[0]]: T[0][K];
4
30
  }[] : T extends object ? {
5
31
  [K in keyof T]: T[K];
6
32
  } : T;
7
- export type MergeJoined<TExisting, TNew> = TExisting extends EmptyRecord ? TNew : TExisting & TNew;
8
- type DeepEqual<T, U> = [T] extends [U] ? [U] extends [T] ? true : false : false;
9
- type Extends<T, U> = DeepEqual<T, Record<string, never>> extends true ? false : T extends U ? true : false;
33
+ type IsSingleKey<TTables extends Record<string, any>> = keyof TTables extends infer K ? K extends keyof TTables ? keyof TTables extends K ? true : false : false : false;
34
+ export type SingleTableValue<TTables extends Record<string, any>> = IsSingleKey<TTables> extends true ? TTables[keyof TTables] : never;
10
35
  type NullableToOptional<T> = {
11
36
  [K in keyof T as T[K] extends null | undefined ? K : never]?: Exclude<T[K], null | undefined>;
12
37
  } & Partial<{
13
38
  [K in keyof T as T[K] extends null | undefined ? never : K]: T[K];
14
39
  }>;
15
- export type EmptyRecord = Record<string, never>;
16
- export type ResultAvailableColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TResult = any, TJoined = EmptyRecord> = Exclude<AvailableColumns<TSchema, T, TOriginal, TJoined> | `${keyof TResult & string}`, "__fulltext__" | `${T & string}.__fulltext__`>;
17
- export type AvailableColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (Extends<TJoined, Record<string, any>> extends false ? keyof TSchema[T] : {
18
- [K in keyof TJoined]: TJoined[K] extends Record<string, any> ? `${string & K}.${keyof TJoined[K] & string}` : never;
19
- }[keyof TJoined]) | `${T & string}.${keyof TSchema[T] & string}` : keyof TOriginal | `${T & string}.${keyof TOriginal & string}` | (Extends<TJoined, Record<string, any>> extends true ? {
20
- [K in keyof TJoined]: TJoined[K] extends Record<string, any> ? `${string & K}.${keyof TJoined[K] & string}` : never;
21
- }[keyof TJoined] : never);
22
- export type ExtractColumnType<TSchema, T extends keyof TSchema | string, Path extends string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? Path extends keyof TSchema[T] ? TSchema[T][Path] : Path extends `${T & string}.${infer Column}` ? Column extends keyof TSchema[T] ? TSchema[T][Column] : never : Path extends `${infer Table}.${infer Column}` ? Table extends keyof TJoined ? TJoined[Table] extends Record<string, any> ? Column extends keyof TJoined[Table] ? TJoined[Table][Column] : never : never : never : never : Path extends `${T & string}.${infer Column}` ? Column extends keyof TOriginal ? TOriginal[Column] : never : Path extends `${infer Table}.${infer Column}` ? Table extends keyof TJoined ? TJoined[Table] extends Record<string, any> ? Column extends keyof TJoined[Table] ? TJoined[Table][Column] : never : never : never : Path extends keyof TOriginal ? TOriginal[Path] : never;
23
- export type SqlFunction<T extends "string" | "number" | "boolean" | "date"> = {
24
- _type: "sql_function";
25
- _return: T;
26
- _sql: string;
27
- };
28
- type ExtractSqlType<T> = T extends SqlFunction<infer R> ? R extends "string" ? string : R extends "number" ? number : R extends "boolean" ? boolean : R extends "date" ? Date : never : never;
29
- export type SelectValue<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = AvailableColumns<TSchema, T, TOriginal, TJoined> | SqlFunction<"string" | "number" | "boolean" | "date">;
30
- export type SelectObject<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = Record<string, SelectValue<TSchema, T, TOriginal, TJoined>>;
31
- export type ParseSelectObject<TSchema, T extends keyof TSchema | string, S extends SelectObject<TSchema, T, TOriginal, TJoined>, TOriginal = any, TJoined = EmptyRecord> = {
32
- [K in keyof S]: S[K] extends SqlFunction<any> ? ExtractSqlType<S[K]> : ExtractColumnType<TSchema, T, S[K] & string, TOriginal, TJoined>;
33
- };
34
- export type WhereCondition<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = {
35
- [key in AvailableColumns<TSchema, T, TOriginal, TJoined>]?: ExtractColumnType<TSchema, T, key & string, TOriginal, TJoined>;
36
- };
37
- export type FulltextColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (TSchema[T] extends {
38
- __fulltext__: readonly (infer Col)[];
39
- } ? Col & string : never) | (TSchema[T] extends {
40
- __fulltext__: readonly (infer Col)[];
41
- } ? `${T & string}.${Col & string}` : never) | (TJoined extends Record<string, any> ? {
42
- [K in keyof TJoined]: TJoined[K] extends {
43
- __fulltext__: readonly (infer Col)[];
44
- } ? (Col & string) | `${string & K}.${Col & string}` : never;
45
- }[keyof TJoined] : never) : (TOriginal extends {
46
- __fulltext__: readonly (infer Col)[];
47
- } ? Col & string : never) | (TOriginal extends {
48
- __fulltext__: readonly (infer Col)[];
49
- } ? `${T & string}.${Col & string}` : never) | (TJoined extends Record<string, any> ? {
50
- [K in keyof TJoined]: TJoined[K] extends {
51
- __fulltext__: readonly (infer Col)[];
52
- } ? (Col & string) | `${string & K}.${Col & string}` : never;
53
- }[keyof TJoined] : never);
54
40
  export type InsertData<T> = NullableToOptional<Omit<T, "id" | "created_at" | "__fulltext__">>;
55
41
  export {};
56
42
  //# sourceMappingURL=puri.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { PuriWrapper } from "./puri-wrapper";
1
+ import type { PuriTransactionWrapper } from "./puri-wrapper";
2
2
  import type { DBPreset } from "./db";
3
3
  export declare class TransactionContext {
4
4
  private transactions;
5
- getTransaction(preset: DBPreset): PuriWrapper | undefined;
6
- setTransaction(preset: DBPreset, trx: PuriWrapper): void;
5
+ getTransaction(preset: DBPreset): PuriTransactionWrapper | undefined;
6
+ setTransaction(preset: DBPreset, trx: PuriTransactionWrapper): void;
7
7
  deleteTransaction(preset: DBPreset): void;
8
8
  }
9
9
  //# sourceMappingURL=transaction-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAyC;IAE7D,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIzD,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI;IAIxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;CAG1C"}
1
+ {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAoD;IAExE,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,sBAAsB,GAAG,SAAS;IAIpE,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,GAAG,IAAI;IAInE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;CAG1C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/transaction-context.ts"],"sourcesContent":["import type { PuriWrapper } from \"./puri-wrapper\";\nimport type { DBPreset } from \"./db\";\n\nexport class TransactionContext {\n private transactions: Map<DBPreset, PuriWrapper> = new Map();\n\n getTransaction(preset: DBPreset): PuriWrapper | undefined {\n return this.transactions.get(preset);\n }\n\n setTransaction(preset: DBPreset, trx: PuriWrapper): void {\n this.transactions.set(preset, trx);\n }\n\n deleteTransaction(preset: DBPreset): void {\n this.transactions.delete(preset);\n }\n}\n"],"names":["TransactionContext","transactions","Map","getTransaction","preset","get","setTransaction","trx","set","deleteTransaction","delete"],"mappings":"oGAGaA,4DAAAA,i0BAAN,IAAA,AAAMA,gCAAN,iCAAMA,4CAAAA,oBACX,sBAAQC,eAA2C,IAAIC,mBAD5CF,qBAGXG,IAAAA,uBAAAA,SAAAA,eAAeC,MAAgB,EAC7B,OAAO,IAAI,CAACH,YAAY,CAACI,GAAG,CAACD,OAC/B,IAEAE,IAAAA,uBAAAA,SAAAA,eAAeF,MAAgB,CAAEG,GAAgB,EAC/C,IAAI,CAACN,YAAY,CAACO,GAAG,CAACJ,OAAQG,IAChC,IAEAE,IAAAA,0BAAAA,SAAAA,kBAAkBL,MAAgB,EAChC,IAAI,CAACH,YAAY,CAACS,MAAM,CAACN,OAC3B,YAbWJ"}
1
+ {"version":3,"sources":["../../src/database/transaction-context.ts"],"sourcesContent":["import type { PuriTransactionWrapper } from \"./puri-wrapper\";\nimport type { DBPreset } from \"./db\";\n\nexport class TransactionContext {\n private transactions: Map<DBPreset, PuriTransactionWrapper> = new Map();\n\n getTransaction(preset: DBPreset): PuriTransactionWrapper | undefined {\n return this.transactions.get(preset);\n }\n\n setTransaction(preset: DBPreset, trx: PuriTransactionWrapper): void {\n this.transactions.set(preset, trx);\n }\n\n deleteTransaction(preset: DBPreset): void {\n this.transactions.delete(preset);\n }\n}\n"],"names":["TransactionContext","transactions","Map","getTransaction","preset","get","setTransaction","trx","set","deleteTransaction","delete"],"mappings":"oGAGaA,4DAAAA,i0BAAN,IAAA,AAAMA,gCAAN,iCAAMA,4CAAAA,oBACX,sBAAQC,eAAsD,IAAIC,mBADvDF,qBAGXG,IAAAA,uBAAAA,SAAAA,eAAeC,MAAgB,EAC7B,OAAO,IAAI,CAACH,YAAY,CAACI,GAAG,CAACD,OAC/B,IAEAE,IAAAA,uBAAAA,SAAAA,eAAeF,MAAgB,CAAEG,GAA2B,EAC1D,IAAI,CAACN,YAAY,CAACO,GAAG,CAACJ,OAAQG,IAChC,IAEAE,IAAAA,0BAAAA,SAAAA,kBAAkBL,MAAgB,EAChC,IAAI,CAACH,YAAY,CAACS,MAAM,CAACN,OAC3B,YAbWJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.template.d.ts","sourceRoot":"","sources":["../../src/templates/service.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;;;;;;;IA2BvE,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG;QAClC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IAyHD,WAAW,CACT,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IA4BpB,oBAAoB,CAClB,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,QAAQ,EAAE;IA4ClC,SAAS,CACP,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IAoBpB,iBAAiB,CACf,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;IASpB,YAAY,CACV,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM;CAuB5B"}
1
+ {"version":3,"file":"service.template.d.ts","sourceRoot":"","sources":["../../src/templates/service.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;;;;;;;IA2BvE,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG;QAClC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IAyHD,WAAW,CACT,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IA8BpB,oBAAoB,CAClB,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,QAAQ,EAAE;IA6ClC,SAAS,CACP,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IAsBpB,iBAAiB,CACf,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;IAapB,YAAY,CACV,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM;CAuB5B"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Template__service",{enumerable:true,get:function(){return Template__service}});var _inflection=/*#__PURE__*/_interop_require_default(require("inflection"));var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _types=require("../types/types");var _codeconverters=require("../api/code-converters");var _basetemplate=require("./base-template");var _sonamu=require("../api/sonamu");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _assert_this_initialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function _call_super(_this,derived,args){derived=_get_prototype_of(derived);return _possible_constructor_return(_this,_is_native_reflect_construct()?Reflect.construct(derived,args||[],_get_prototype_of(_this).constructor):derived.apply(_this,args))}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _get_prototype_of(o){_get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _get_prototype_of(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_set_prototype_of(subClass,superClass)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _possible_constructor_return(self,call){if(call&&(_type_of(call)==="object"||typeof call==="function")){return call}return _assert_this_initialized(self)}function _set_prototype_of(o,p){_set_prototype_of=Object.setPrototypeOf||function setPrototypeOf(o,p){o.__proto__=p;return o};return _set_prototype_of(o,p)}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}var Template__service=/*#__PURE__*/function(Template){"use strict";_inherits(Template__service,Template);function Template__service(){_class_call_check(this,Template__service);return _call_super(this,Template__service,["service"])}_create_class(Template__service,[{key:"getTargetAndPath",value:function getTargetAndPath(names){return{target:":target/src/services",path:"".concat(names.fs,"/").concat(names.fs,".service.ts")}}},{key:"render",value:function render(param,apis){var namesRecord=param.namesRecord;var _this_getTypeSource=this.getTypeSource(apis),lines=_this_getTypeSource.lines,importKeys=_this_getTypeSource.importKeys;var hasAxiosProgressEvent=apis.find(function(api){var _api_options_clients;return((_api_options_clients=api.options.clients)!==null&&_api_options_clients!==void 0?_api_options_clients:[]).includes("axios-multipart")});return _object_spread_props(_object_spread({},this.getTargetAndPath(namesRecord)),{body:lines.join("\n"),importKeys:importKeys.filter(function(key){return["ListResult"].includes(key)===false}),customHeaders:["import { z } from 'zod';",'import qs from "qs";','import useSWR, { SWRResponse } from "swr";',"import { fetch, ListResult, SWRError, SwrOptions, handleConditional, swrPostFetcher, EventHandlers, SSEStreamOptions, useSSEStream } from '../sonamu.shared';"].concat(_to_consumable_array(hasAxiosProgressEvent?["import { AxiosProgressEvent } from 'axios';"]:[]))})}},{key:"getTypeSource",value:function getTypeSource(apis){var _this=this;var importKeys=[];var typeParamNames=[];var groups=_lodash.default.groupBy(apis,function(api){return api.modelName});var body=Object.keys(groups).map(function(modelName){var methods=groups[modelName];var methodCodes=methods.map(function(api){var paramsWithoutContext=api.parameters.filter(function(param){return!_types.ApiParamType.isContext(param.type)&&!_types.ApiParamType.isRefKnex(param.type)&&!(param.optional===true&&param.name.startsWith("_"))});var typeParamsDef=api.typeParameters.map(function(typeParam){return(0,_codeconverters.apiParamTypeToTsType)(typeParam,importKeys)}).join(", ");typeParamNames=typeParamNames.concat(api.typeParameters.map(function(typeParam){return typeParam.id}));var paramsDef=(0,_codeconverters.apiParamToTsCode)(paramsWithoutContext,importKeys);var paramsDefAsObject=(0,_codeconverters.apiParamToTsCodeAsObject)(paramsWithoutContext,importKeys);var returnTypeDef=(0,_codeconverters.apiParamTypeToTsType)((0,_codeconverters.unwrapPromiseOnce)(api.returnType),importKeys);var payloadDef="{ ".concat(paramsWithoutContext.map(function(param){return param.name}).join(", ")," }");var apiBaseUrl="".concat(_sonamu.Sonamu.config.route.prefix).concat(api.path);return _to_consumable_array(_lodash.default.sortBy(api.options.clients,function(client){return client==="swr"?0:1}).map(function(client){switch(client){case"axios":return _this.renderAxios(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef);case"axios-multipart":return _this.renderAxiosMultipart(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,paramsWithoutContext);case"swr":return _this.renderSwr(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef);case"window-fetch":return _this.renderWindowFetch(api,apiBaseUrl,typeParamsDef,paramsDef,payloadDef);default:return"// Not supported ".concat(_inflection.default.camelize(client,true)," yet.")}})).concat(_to_consumable_array(api.streamOptions?[_this.renderStream(api,apiBaseUrl,paramsDefAsObject)]:[])).join("\n")}).join("\n\n");return"export namespace ".concat(modelName.replace(/Model$/,"Service").replace(/Frame$/,"Service")," {\n").concat(methodCodes,"\n}")}).join("\n\n");return{lines:[body],importKeys:_lodash.default.difference(_lodash.default.uniq(importKeys),typeParamNames)}}},{key:"renderAxios",value:function renderAxios(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef){var methodNameAxios=api.options.resourceName?"get"+_inflection.default.camelize(api.options.resourceName):api.methodName;if(api.options.httpMethod==="GET"){return"\nexport async function ".concat(methodNameAxios).concat(typeParamsDef,"(").concat(paramsDef,"): Promise<").concat(returnTypeDef,'> {\n return fetch({\n method: "GET",\n url: `').concat(apiBaseUrl,"?${qs.stringify(").concat(payloadDef,")}`,\n });\n}\n ").trim()}else{return"\nexport async function ".concat(methodNameAxios).concat(typeParamsDef,"(").concat(paramsDef,"): Promise<").concat(returnTypeDef,"> {\n return fetch({\n method: '").concat(api.options.httpMethod,"',\n url: `").concat(apiBaseUrl,"`,\n data: ").concat(payloadDef,",\n });\n}\n ").trim()}}},{key:"renderAxiosMultipart",value:function renderAxiosMultipart(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,paramsWithoutContext){var _api_uploadOptions;var isMultiple=((_api_uploadOptions=api.uploadOptions)===null||_api_uploadOptions===void 0?void 0:_api_uploadOptions.mode)==="multiple";var fileParamName=isMultiple?"files":"file";var fileParamType=isMultiple?"File[]":"File";var formDataDef=isMultiple?["".concat(fileParamName,'.forEach(f => formData.append("').concat(fileParamName,'", f));')].concat(_to_consumable_array(paramsWithoutContext.map(function(param){return"formData.append('".concat(param.name,"', String(").concat(param.name,"));")}))).join("\n"):['formData.append("'.concat(fileParamName,'", ').concat(fileParamName,");")].concat(_to_consumable_array(paramsWithoutContext.map(function(param){return"formData.append('".concat(param.name,"', String(").concat(param.name,"));")}))).join("\n");var paramsDefComma=paramsDef!==""?", ":"";return"\nexport async function ".concat(api.methodName).concat(typeParamsDef,"(\n ").concat(paramsDef).concat(paramsDefComma,"\n ").concat(fileParamName,": ").concat(fileParamType,",\n onUploadProgress?: (pe:AxiosProgressEvent) => void\n ): Promise<").concat(returnTypeDef,"> {\n const formData = new FormData();\n ").concat(formDataDef,"\n return fetch({\n method: 'POST',\n url: `").concat(apiBaseUrl,'`,\n headers: {\n "Content-Type": "multipart/form-data",\n },\n onUploadProgress,\n data: formData,\n });\n }\n ').trim()}},{key:"renderSwr",value:function renderSwr(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef){var methodNameSwr=api.options.resourceName?"use"+_inflection.default.camelize(api.options.resourceName):"use"+_inflection.default.camelize(api.methodName);return" export function ".concat(_inflection.default.camelize(methodNameSwr,true)).concat(typeParamsDef,"(").concat([paramsDef,"swrOptions?: SwrOptions"].filter(function(p){return p!==""}).join(","),", ): SWRResponse<").concat(returnTypeDef,", SWRError> {\n return useSWR(handleConditional([\n `").concat(apiBaseUrl,"`,\n ").concat(payloadDef,",\n ], swrOptions?.conditional)").concat(api.options.httpMethod==="POST"?", swrPostFetcher":"",");\n }")}},{key:"renderWindowFetch",value:function renderWindowFetch(api,apiBaseUrl,typeParamsDef,paramsDef,payloadDef){return"\nexport async function ".concat(api.methodName).concat(typeParamsDef,"(").concat(paramsDef,"): Promise<Response> {\n return window.fetch(`").concat(apiBaseUrl,"?${qs.stringify(").concat(payloadDef,")}`);\n}\n ").trim()}},{key:"renderStream",value:function renderStream(api,apiBaseUrl,paramsDefAsObject){if(!api.streamOptions){return"// streamOptions not found"}var methodNameStream=api.options.resourceName?"use"+_inflection.default.camelize(api.options.resourceName):"use"+_inflection.default.camelize(api.methodName);var methodNameStreamCamelized=_inflection.default.camelize(methodNameStream,true);var eventsTypeDef=(0,_codeconverters.zodTypeToTsTypeDef)(api.streamOptions.events);return" export function ".concat(methodNameStreamCamelized,"(\n params: ").concat(paramsDefAsObject,",\n handlers: EventHandlers<").concat(eventsTypeDef," & { end?: () => void }>,\n options: SSEStreamOptions) {\n return useSSEStream<").concat(eventsTypeDef,">(`").concat(apiBaseUrl,"`, params, handlers, options);\n }")}}]);return Template__service}(_basetemplate.Template);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Template__service",{enumerable:true,get:function(){return Template__service}});var _inflection=/*#__PURE__*/_interop_require_default(require("inflection"));var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _types=require("../types/types");var _codeconverters=require("../api/code-converters");var _basetemplate=require("./base-template");var _sonamu=require("../api/sonamu");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _assert_this_initialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function _call_super(_this,derived,args){derived=_get_prototype_of(derived);return _possible_constructor_return(_this,_is_native_reflect_construct()?Reflect.construct(derived,args||[],_get_prototype_of(_this).constructor):derived.apply(_this,args))}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _get_prototype_of(o){_get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _get_prototype_of(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_set_prototype_of(subClass,superClass)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _possible_constructor_return(self,call){if(call&&(_type_of(call)==="object"||typeof call==="function")){return call}return _assert_this_initialized(self)}function _set_prototype_of(o,p){_set_prototype_of=Object.setPrototypeOf||function setPrototypeOf(o,p){o.__proto__=p;return o};return _set_prototype_of(o,p)}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}var Template__service=/*#__PURE__*/function(Template){"use strict";_inherits(Template__service,Template);function Template__service(){_class_call_check(this,Template__service);return _call_super(this,Template__service,["service"])}_create_class(Template__service,[{key:"getTargetAndPath",value:function getTargetAndPath(names){return{target:":target/src/services",path:"".concat(names.fs,"/").concat(names.fs,".service.ts")}}},{key:"render",value:function render(param,apis){var namesRecord=param.namesRecord;var _this_getTypeSource=this.getTypeSource(apis),lines=_this_getTypeSource.lines,importKeys=_this_getTypeSource.importKeys;var hasAxiosProgressEvent=apis.find(function(api){var _api_options_clients;return((_api_options_clients=api.options.clients)!==null&&_api_options_clients!==void 0?_api_options_clients:[]).includes("axios-multipart")});return _object_spread_props(_object_spread({},this.getTargetAndPath(namesRecord)),{body:lines.join("\n"),importKeys:importKeys.filter(function(key){return["ListResult"].includes(key)===false}),customHeaders:["import { z } from 'zod';",'import qs from "qs";','import useSWR, { SWRResponse } from "swr";',"import { fetch, ListResult, SWRError, SwrOptions, handleConditional, swrPostFetcher, EventHandlers, SSEStreamOptions, useSSEStream } from '../sonamu.shared';"].concat(_to_consumable_array(hasAxiosProgressEvent?["import { AxiosProgressEvent } from 'axios';"]:[]))})}},{key:"getTypeSource",value:function getTypeSource(apis){var _this=this;var importKeys=[];var typeParamNames=[];var groups=_lodash.default.groupBy(apis,function(api){return api.modelName});var body=Object.keys(groups).map(function(modelName){var methods=groups[modelName];var methodCodes=methods.map(function(api){var paramsWithoutContext=api.parameters.filter(function(param){return!_types.ApiParamType.isContext(param.type)&&!_types.ApiParamType.isRefKnex(param.type)&&!(param.optional===true&&param.name.startsWith("_"))});var typeParamsDef=api.typeParameters.map(function(typeParam){return(0,_codeconverters.apiParamTypeToTsType)(typeParam,importKeys)}).join(", ");typeParamNames=typeParamNames.concat(api.typeParameters.map(function(typeParam){return typeParam.id}));var paramsDef=(0,_codeconverters.apiParamToTsCode)(paramsWithoutContext,importKeys);var paramsDefAsObject=(0,_codeconverters.apiParamToTsCodeAsObject)(paramsWithoutContext,importKeys);var returnTypeDef=(0,_codeconverters.apiParamTypeToTsType)((0,_codeconverters.unwrapPromiseOnce)(api.returnType),importKeys);var payloadDef="{ ".concat(paramsWithoutContext.map(function(param){return param.name}).join(", ")," }");var apiBaseUrl="".concat(_sonamu.Sonamu.config.route.prefix).concat(api.path);return _to_consumable_array(_lodash.default.sortBy(api.options.clients,function(client){return client==="swr"?0:1}).map(function(client){switch(client){case"axios":return _this.renderAxios(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef);case"axios-multipart":return _this.renderAxiosMultipart(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,paramsWithoutContext);case"swr":return _this.renderSwr(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef);case"window-fetch":return _this.renderWindowFetch(api,apiBaseUrl,typeParamsDef,paramsDef,payloadDef);default:return"// Not supported ".concat(_inflection.default.camelize(client,true)," yet.")}})).concat(_to_consumable_array(api.streamOptions?[_this.renderStream(api,apiBaseUrl,paramsDefAsObject)]:[])).join("\n")}).join("\n\n");return"export namespace ".concat(modelName.replace(/Model$/,"Service").replace(/Frame$/,"Service")," {\n").concat(methodCodes,"\n}")}).join("\n\n");return{lines:[body],importKeys:_lodash.default.difference(_lodash.default.uniq(importKeys),typeParamNames)}}},{key:"renderAxios",value:function renderAxios(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef){var methodNameAxios=api.options.resourceName?"get"+_inflection.default.camelize(api.options.resourceName):api.methodName;if(api.options.httpMethod==="GET"){return"\nexport async function ".concat(methodNameAxios).concat(typeParamsDef,"(").concat(paramsDef,"): Promise<").concat(returnTypeDef,'> {\n return fetch({\n method: "GET",\n url: `').concat(apiBaseUrl,"?${qs.stringify(").concat(payloadDef,")}`,\n ").concat(api.options.timeout?"signal: AbortSignal.timeout(".concat(api.options.timeout,"),"):"","\n });\n}\n ").trim()}else{return"\nexport async function ".concat(methodNameAxios).concat(typeParamsDef,"(").concat(paramsDef,"): Promise<").concat(returnTypeDef,"> {\n return fetch({\n method: '").concat(api.options.httpMethod,"',\n url: `").concat(apiBaseUrl,"`,\n data: ").concat(payloadDef,",\n ").concat(api.options.timeout?"signal: AbortSignal.timeout(".concat(api.options.timeout,"),"):"","\n });\n}\n ").trim()}}},{key:"renderAxiosMultipart",value:function renderAxiosMultipart(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,paramsWithoutContext){var _api_uploadOptions;var isMultiple=((_api_uploadOptions=api.uploadOptions)===null||_api_uploadOptions===void 0?void 0:_api_uploadOptions.mode)==="multiple";var fileParamName=isMultiple?"files":"file";var fileParamType=isMultiple?"File[]":"File";var formDataDef=isMultiple?["".concat(fileParamName,'.forEach(f => formData.append("').concat(fileParamName,'", f));')].concat(_to_consumable_array(paramsWithoutContext.map(function(param){return"formData.append('".concat(param.name,"', String(").concat(param.name,"));")}))).join("\n"):['formData.append("'.concat(fileParamName,'", ').concat(fileParamName,");")].concat(_to_consumable_array(paramsWithoutContext.map(function(param){return"formData.append('".concat(param.name,"', String(").concat(param.name,"));")}))).join("\n");var paramsDefComma=paramsDef!==""?", ":"";return"\nexport async function ".concat(api.methodName).concat(typeParamsDef,"(\n ").concat(paramsDef).concat(paramsDefComma,"\n ").concat(fileParamName,": ").concat(fileParamType,",\n onUploadProgress?: (pe:AxiosProgressEvent) => void\n ): Promise<").concat(returnTypeDef,"> {\n const formData = new FormData();\n ").concat(formDataDef,"\n return fetch({\n method: 'POST',\n url: `").concat(apiBaseUrl,'`,\n headers: {\n "Content-Type": "multipart/form-data",\n },\n onUploadProgress,\n data: formData,\n ').concat(api.options.timeout?"signal: AbortSignal.timeout(".concat(api.options.timeout,"),"):"","\n });\n }\n ").trim()}},{key:"renderSwr",value:function renderSwr(api,apiBaseUrl,typeParamsDef,paramsDef,returnTypeDef,payloadDef){var methodNameSwr=api.options.resourceName?"use"+_inflection.default.camelize(api.options.resourceName):"use"+_inflection.default.camelize(api.methodName);return" export function ".concat(_inflection.default.camelize(methodNameSwr,true)).concat(typeParamsDef,"(").concat([paramsDef,"swrOptions?: SwrOptions"].filter(function(p){return p!==""}).join(","),", ): SWRResponse<").concat(returnTypeDef,", SWRError> {\n return useSWR(handleConditional([\n `").concat(apiBaseUrl,"`,\n ").concat(payloadDef,",\n ], swrOptions?.conditional)").concat(api.options.httpMethod==="POST"?", swrPostFetcher":"").concat(api.options.timeout?", { loadingTimeout: ".concat(api.options.timeout," }"):"",");\n }")}},{key:"renderWindowFetch",value:function renderWindowFetch(api,apiBaseUrl,typeParamsDef,paramsDef,payloadDef){return"\nexport async function ".concat(api.methodName).concat(typeParamsDef,"(").concat(paramsDef,"): Promise<Response> {\n return window.fetch(`").concat(apiBaseUrl,"?${qs.stringify(").concat(payloadDef,")}`").concat(api.options.timeout?", { signal: AbortSignal.timeout(".concat(api.options.timeout,") }"):"",");\n}\n ").trim()}},{key:"renderStream",value:function renderStream(api,apiBaseUrl,paramsDefAsObject){if(!api.streamOptions){return"// streamOptions not found"}var methodNameStream=api.options.resourceName?"use"+_inflection.default.camelize(api.options.resourceName):"use"+_inflection.default.camelize(api.methodName);var methodNameStreamCamelized=_inflection.default.camelize(methodNameStream,true);var eventsTypeDef=(0,_codeconverters.zodTypeToTsTypeDef)(api.streamOptions.events);return" export function ".concat(methodNameStreamCamelized,"(\n params: ").concat(paramsDefAsObject,",\n handlers: EventHandlers<").concat(eventsTypeDef," & { end?: () => void }>,\n options: SSEStreamOptions) {\n return useSSEStream<").concat(eventsTypeDef,">(`").concat(apiBaseUrl,"`, params, handlers, options);\n }")}}]);return Template__service}(_basetemplate.Template);
2
2
  //# sourceMappingURL=service.template.js.map