@fernir2/saas-kit-cli 0.1.35 → 0.1.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base-repo/app-constants/aliases.cjs.js +1 -1
- package/base-repo/app-constants/aliases.js +1 -1
- package/base-repo/app-constants/project-paths.cjs.js +2 -1
- package/base-repo/app-constants/project-paths.js +2 -2
- package/base-repo/constants/create-app-constants.cjs.js +1 -1
- package/base-repo/constants/create-app-constants.js +2 -2
- package/cli/bin/create.ts +16 -14
- package/cli/src/app/api/v1/blob/route.ts +7 -0
- package/cli/src/app/api/v1/userfeature/isenabled/route.ts +3 -0
- package/cli/test/global-setup.ts +2 -2
- package/fd-toolbox/api/api-client.cjs.js +1 -1
- package/fd-toolbox/api/api-client.js +1 -1
- package/fd-toolbox/api/api-path-names.cjs.js +2 -2
- package/fd-toolbox/api/api-paths.cjs.js +1 -1
- package/fd-toolbox/api/api-paths.js +1 -1
- package/fd-toolbox/api/base-api.cjs.js +1 -1
- package/fd-toolbox/api/base-api.js +1 -1
- package/fd-toolbox/auth/login-states.cjs.js +1 -1
- package/fd-toolbox/auth/login-states.js +1 -1
- package/fd-toolbox/auth/session-storage.cjs.js +1 -1
- package/fd-toolbox/auth/session-storage.js +1 -1
- package/fd-toolbox/auth/tokens.cjs.js +1 -1
- package/fd-toolbox/auth/tokens.js +1 -1
- package/fd-toolbox/constants/constants.cjs.js +1 -1
- package/fd-toolbox/constants/constants.js +1 -1
- package/fd-toolbox/enums/enums.cjs.js +1 -1
- package/fd-toolbox/enums/enums.js +1 -1
- package/fd-toolbox/errors/error-handler.cjs.js +1 -1
- package/fd-toolbox/errors/error-handler.js +1 -1
- package/fd-toolbox/errors/errors.cjs.js +1 -1
- package/fd-toolbox/errors/errors.js +1 -1
- package/fd-toolbox/errors/problem-details.cjs.js +1 -1
- package/fd-toolbox/errors/problem-details.js +1 -1
- package/fd-toolbox/functions/value-checking-functions.cjs.js +1 -1
- package/fd-toolbox/functions/value-checking-functions.js +1 -1
- package/fd-toolbox/http/url/urls.cjs.js +1 -1
- package/fd-toolbox/http/url/urls.js +1 -1
- package/fd-toolbox/infra/env-config.cjs.js +2 -2
- package/fd-toolbox/infra/env-config.js +2 -2
- package/fd-toolbox/infra/env-functions.cjs.js +1 -1
- package/fd-toolbox/infra/env-functions.js +1 -1
- package/fd-toolbox/infra/env-schema.cjs.js +2 -2
- package/fd-toolbox/infra/env-schema.js +2 -2
- package/fd-toolbox/infra/env-store.cjs.js +1 -1
- package/fd-toolbox/infra/env-store.js +1 -1
- package/fd-toolbox/lib/environments.cjs.js +1 -1
- package/fd-toolbox/lib/environments.js +1 -1
- package/fd-toolbox/lib/utils.cjs.js +1 -1
- package/fd-toolbox/lib/utils.js +1 -1
- package/fd-toolbox/local-storage/local-storage.cjs.js +1 -1
- package/fd-toolbox/local-storage/local-storage.js +1 -1
- package/fd-toolbox/logging/loggers.cjs.js +1 -1
- package/fd-toolbox/logging/loggers.js +1 -1
- package/fd-toolbox/notifications.cjs.js +2 -2
- package/fd-toolbox/notifications.js +2 -2
- package/fd-toolbox/odata/odata-constants.cjs.js +1 -1
- package/fd-toolbox/odata/odata-constants.js +1 -1
- package/fd-toolbox/odata/odatas.cjs.js +1 -1
- package/fd-toolbox/odata/odatas.js +1 -1
- package/fd-toolbox/odata/services/odata-filters.cjs.js +1 -1
- package/fd-toolbox/odata/services/odata-filters.js +1 -1
- package/fd-toolbox/paths/paths-names.cjs.js +2 -2
- package/fd-toolbox/paths/paths-names.js +1 -1
- package/fd-toolbox/routing/login-routers.cjs.js +1 -1
- package/fd-toolbox/routing/login-routers.js +1 -1
- package/fd-toolbox/routing/paths.cjs.js +1 -1
- package/fd-toolbox/routing/paths.js +1 -1
- package/fd-toolbox/strings/strings-constants.cjs.js +1 -1
- package/fd-toolbox/strings/strings-constants.js +1 -1
- package/fd-toolbox/strings/strings.cjs.js +1 -1
- package/fd-toolbox/strings/strings.js +1 -1
- package/fd-toolbox/types/ensure-type.cjs.js +2 -1
- package/fd-toolbox/types/ensure-type.js +2 -2
- package/fd-toolbox-core/core/name-of.cjs.js +1 -1
- package/fd-toolbox-core/core/name-of.js +1 -1
- package/fd-toolbox-core/types/resource-with-id.cjs.js +1 -1
- package/fd-toolbox-core/types/resource-with-id.js +1 -1
- package/level2/cli/bin/index.cjs.js +1 -1
- package/level2/cli/bin/index.js +1 -1
- package/level2/cli/create/bin/create.cjs.js +4 -4
- package/level2/cli/create/bin/create.js +4 -4
- package/level2/npm-commands/build-npm/path.cjs.js +1 -1
- package/level2/npm-commands/build-npm/path.js +1 -1
- package/package.json +3 -3
|
@@ -4,6 +4,6 @@ import { trimCharacter } from '../strings/strings.js';
|
|
|
4
4
|
import { getODataFilterAsString } from './services/odata-filters.js';
|
|
5
5
|
import { oDataLogicalOperationTypes } from './odata-enums.js';
|
|
6
6
|
|
|
7
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
7
|
+
var __defProp=Object['defineProperty'],__name=(_0x38b523,_0x2068fe)=>__defProp(_0x38b523,'name',{'value':_0x2068fe,'configurable':!![]});function getODataParams(_0x11d835){let _0x576f91=getFilters(_0x11d835);_0x11d835['skip']&&_0x576f91['push']({'name':'skip','value':_0x11d835['skip']['toString']()});_0x11d835['top']&&_0x576f91['push']({'name':'top','value':_0x11d835['top']['toString']()});_0x11d835['count']&&_0x576f91['push']({'name':'count','value':'true'});_0x11d835['orderBys']&&_0x11d835['orderBys']['length']>-0x2098*0x1+-0x1abe+0xf5*0x3e&&_0x11d835['orderBys']['forEach'](_0x2201e8=>{_0x576f91['push']({'name':'orderby','value':getColumnNameAndDirectionForOrderBy(_0x2201e8['propertyName'],_0x2201e8['direction'])});});if(_0x11d835['selects']?.['length']||_0x11d835['select']?.['length'])configureSelectOData(_0x11d835,_0x576f91);else _0x11d835['expands']&&configureExpandOData(_0x11d835,_0x576f91);return _0x576f91;}__name(getODataParams,'getODataParams');function getFilters(_0x55f8ee){let _0x24d1de=[];if(_0x55f8ee['filters']&&_0x55f8ee['filters']['length']>-0x24be+-0x220d+0x46cb){let _0x20bce6={'name':'filter','value':''},_0x466f49=_0x55f8ee['filters']['length'];for(let _0x3d2b4a=-0xe70+0x88+0x2c8*0x5;_0x3d2b4a<_0x466f49;_0x3d2b4a++){let _0x1ba48c=getODataFilterAsString(_0x55f8ee['filters'][_0x3d2b4a]);_0x3d2b4a>0x142*-0x1+-0x9ac+0xaee?_0x55f8ee['filters'][_0x3d2b4a]['logicalOperationType']===oDataLogicalOperationTypes['or']?_0x20bce6['value']+='\x20or\x20'+_0x1ba48c:_0x20bce6['value']+='\x20and\x20'+_0x1ba48c:_0x20bce6['value']+=_0x1ba48c;}_0x24d1de['push'](_0x20bce6);}return _0x24d1de;}__name(getFilters,'getFilters');function getColumnNameAndDirectionForOrderBy(_0x133216,_0x10c5a6){return _0x133216+'\x20'+(_0x10c5a6===oDataOrderByDirectionConsts['desc']?'desc':'asc');}__name(getColumnNameAndDirectionForOrderBy,'getColumnNameAndDirectionForOrderBy');function configureExpandOData(_0x43b804,_0x497ba6){if(_0x43b804['expands']&&_0x43b804['expands']['length']>0x1*-0x24d9+0x135c+0x117d*0x1){let _0x524c51='';for(let _0x37a0a8 of _0x43b804['expands']){_0x524c51+=_0x37a0a8+',';}_0x524c51=trimCharacter(_0x524c51,','),_0x497ba6['push']({'name':'expand','value':_0x524c51});}}__name(configureExpandOData,'configureExpandOData');function configureSelectOData(_0x287397,_0x91cb21){if(_0x287397['select']&&_0x287397['select']['length']>-0x6c0+-0x3*-0xb95+-0x1bff){let _0x458095='';for(let _0x4a52a2 of _0x287397['select']){_0x458095+=_0x4a52a2+',';}_0x458095=trimCharacter(_0x458095,','),_0x91cb21['push']({'name':'select','value':_0x458095});}}__name(configureSelectOData,'configureSelectOData');
|
|
8
8
|
|
|
9
9
|
export { getODataParams };
|
|
@@ -6,6 +6,6 @@ var odataConstants = require('../odata-constants.cjs.js');
|
|
|
6
6
|
var errors = require('../../errors/errors.cjs.js');
|
|
7
7
|
var odataEnums = require('../odata-enums.cjs.js');
|
|
8
8
|
|
|
9
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
9
|
+
var __defProp=Object['defineProperty'],__name=(_0x1f181c,_0x231852)=>__defProp(_0x1f181c,'name',{'value':_0x231852,'configurable':!![]});function getODataFilterAsString(_0x4f6a61){_0x4f6a61['operator']??=enums.oDataOperators['equal'];if(_0x4f6a61['type']===void(0x2*0x65+0x1*0x26e+-0x338)||_0x4f6a61['type']===odataEnums.oDataFilterTypes['default']){if(typeof _0x4f6a61['rightSide']==='number')_0x4f6a61['type']=odataEnums.oDataFilterTypes['number'];else {if(typeof _0x4f6a61['rightSide']==='boolean'||typeof _0x4f6a61['rightSide']==='string')_0x4f6a61['type']=odataEnums.oDataFilterTypes['string'];else _0x4f6a61['rightSide']instanceof Date?_0x4f6a61['type']=odataEnums.oDataFilterTypes['date']:_0x4f6a61['type']=odataEnums.oDataFilterTypes['string'];}}return typeof _0x4f6a61['rightSide']==='string'&&!isNaN(Number(_0x4f6a61['rightSide']))&&(_0x4f6a61['rightSide']=Number(_0x4f6a61['rightSide'])),getFilterString(_0x4f6a61);}__name(getODataFilterAsString,'getODataFilterAsString');function getFilterString(_0x4d02b4){switch(_0x4d02b4['operator']){case enums.oDataOperators['in']:return handleInOperator(_0x4d02b4);case enums.oDataOperators['nin']:return handleInOperator(_0x4d02b4);case enums.oDataOperators['empty']:return '';case enums.oDataOperators['startsWith']:return handleStartsWithOperator(_0x4d02b4);default:return handleDefaultOperators(_0x4d02b4);}}__name(getFilterString,'getFilterString');function handleInOperator(_0x4b06af){if(_0x4b06af['type']===odataEnums.oDataFilterTypes['guid']){let _0x59c654=oDataFormatGuid(_0x4b06af['rightSide']);return _0x4b06af['leftSide']+'\x20'+_0x4b06af['operator']+'\x20('+_0x59c654+')';}return _0x4b06af['leftSide']+'\x20'+_0x4b06af['operator']+'\x20('+_0x4b06af['rightSide']+')';}__name(handleInOperator,'handleInOperator');function handleStartsWithOperator(_0x4d74f7){return _0x4d74f7['operator']+'('+_0x4d74f7['leftSide']+',\x20'+_0x4d74f7['rightSide']+')';}__name(handleStartsWithOperator,'handleStartsWithOperator');function handleDefaultOperators(_0x4f50e4){switch(_0x4f50e4['type']){case odataEnums.oDataFilterTypes['string']:return handleStringFilter(_0x4f50e4);case odataEnums.oDataFilterTypes['date']:return handleDateFilter(_0x4f50e4);case odataEnums.oDataFilterTypes['guid']:return handleGuidFilter(_0x4f50e4);case odataEnums.oDataFilterTypes['number']:return handleNumberFilter(_0x4f50e4);case odataEnums.oDataFilterTypes['lambda']:return handleLambdaFilter(_0x4f50e4);default:throw errors.createError('Unsupported\x20filter\x20type:\x20'+_0x4f50e4['type']);}}__name(handleDefaultOperators,'handleDefaultOperators');function handleStringFilter(_0x12539d){if(_0x12539d['rightSide']===odataConstants.oDataNullValue)return _0x12539d['leftSide']+'\x20'+_0x12539d['operator']+'\x20'+_0x12539d['rightSide'];if(typeof _0x12539d['rightSide']==='string')return _0x12539d['leftSide']+'\x20'+_0x12539d['operator']+'\x20\x27'+_0x12539d['rightSide']+'\x27';return _0x12539d['leftSide']+'\x20'+_0x12539d['operator']+'\x20'+_0x12539d['rightSide'];}__name(handleStringFilter,'handleStringFilter');function handleDateFilter(_0xecea84){return _0xecea84['leftSide']+'\x20'+_0xecea84['operator']+'\x20datetime\x27'+_0xecea84['rightSide']+'\x27';}__name(handleDateFilter,'handleDateFilter');function handleGuidFilter(_0x5d6d51){return _0x5d6d51['leftSide']+'\x20'+_0x5d6d51['operator']+'\x20guid\x27'+_0x5d6d51['rightSide']+'\x27';}__name(handleGuidFilter,'handleGuidFilter');function handleNumberFilter(_0x49ac91){return _0x49ac91['leftSide']+'\x20'+_0x49ac91['operator']+'\x20'+_0x49ac91['rightSide'];}__name(handleNumberFilter,'handleNumberFilter');function handleLambdaFilter(_0xfa9db7){const _0x3355bc=_0xfa9db7['lambdaConfig'];if(!_0x3355bc)throw errors.createError('Lambda\x20configuration\x20is\x20missing');return _0x3355bc['baseEnumerablePropertyName']+'/'+_0x3355bc['method']+'(i:i/'+_0xfa9db7['leftSide']+'\x20'+_0xfa9db7['operator']+'\x20guid\x27'+_0xfa9db7['rightSide']+'\x27)';}__name(handleLambdaFilter,'handleLambdaFilter');function oDataFormatGuid(_0x5236c1){let _0x404688;if(typeof _0x5236c1==='string')_0x404688=''+_0x5236c1;else Array['isArray'](_0x5236c1)&&(_0x404688=_0x5236c1['map'](_0x1482da=>'guid\x27'+_0x1482da+'\x27')['join'](','));return _0x404688;}__name(oDataFormatGuid,'oDataFormatGuid');
|
|
10
10
|
|
|
11
11
|
exports.getODataFilterAsString = getODataFilterAsString;
|
|
@@ -4,6 +4,6 @@ import { oDataNullValue } from '../odata-constants.js';
|
|
|
4
4
|
import { createError } from '../../errors/errors.js';
|
|
5
5
|
import { oDataFilterTypes } from '../odata-enums.js';
|
|
6
6
|
|
|
7
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
7
|
+
var __defProp=Object['defineProperty'],__name=(_0x1f181c,_0x231852)=>__defProp(_0x1f181c,'name',{'value':_0x231852,'configurable':!![]});function getODataFilterAsString(_0x4f6a61){_0x4f6a61['operator']??=oDataOperators['equal'];if(_0x4f6a61['type']===void(0x2*0x65+0x1*0x26e+-0x338)||_0x4f6a61['type']===oDataFilterTypes['default']){if(typeof _0x4f6a61['rightSide']==='number')_0x4f6a61['type']=oDataFilterTypes['number'];else {if(typeof _0x4f6a61['rightSide']==='boolean'||typeof _0x4f6a61['rightSide']==='string')_0x4f6a61['type']=oDataFilterTypes['string'];else _0x4f6a61['rightSide']instanceof Date?_0x4f6a61['type']=oDataFilterTypes['date']:_0x4f6a61['type']=oDataFilterTypes['string'];}}return typeof _0x4f6a61['rightSide']==='string'&&!isNaN(Number(_0x4f6a61['rightSide']))&&(_0x4f6a61['rightSide']=Number(_0x4f6a61['rightSide'])),getFilterString(_0x4f6a61);}__name(getODataFilterAsString,'getODataFilterAsString');function getFilterString(_0x4d02b4){switch(_0x4d02b4['operator']){case oDataOperators['in']:return handleInOperator(_0x4d02b4);case oDataOperators['nin']:return handleInOperator(_0x4d02b4);case oDataOperators['empty']:return '';case oDataOperators['startsWith']:return handleStartsWithOperator(_0x4d02b4);default:return handleDefaultOperators(_0x4d02b4);}}__name(getFilterString,'getFilterString');function handleInOperator(_0x4b06af){if(_0x4b06af['type']===oDataFilterTypes['guid']){let _0x59c654=oDataFormatGuid(_0x4b06af['rightSide']);return _0x4b06af['leftSide']+'\x20'+_0x4b06af['operator']+'\x20('+_0x59c654+')';}return _0x4b06af['leftSide']+'\x20'+_0x4b06af['operator']+'\x20('+_0x4b06af['rightSide']+')';}__name(handleInOperator,'handleInOperator');function handleStartsWithOperator(_0x4d74f7){return _0x4d74f7['operator']+'('+_0x4d74f7['leftSide']+',\x20'+_0x4d74f7['rightSide']+')';}__name(handleStartsWithOperator,'handleStartsWithOperator');function handleDefaultOperators(_0x4f50e4){switch(_0x4f50e4['type']){case oDataFilterTypes['string']:return handleStringFilter(_0x4f50e4);case oDataFilterTypes['date']:return handleDateFilter(_0x4f50e4);case oDataFilterTypes['guid']:return handleGuidFilter(_0x4f50e4);case oDataFilterTypes['number']:return handleNumberFilter(_0x4f50e4);case oDataFilterTypes['lambda']:return handleLambdaFilter(_0x4f50e4);default:throw createError('Unsupported\x20filter\x20type:\x20'+_0x4f50e4['type']);}}__name(handleDefaultOperators,'handleDefaultOperators');function handleStringFilter(_0x12539d){if(_0x12539d['rightSide']===oDataNullValue)return _0x12539d['leftSide']+'\x20'+_0x12539d['operator']+'\x20'+_0x12539d['rightSide'];if(typeof _0x12539d['rightSide']==='string')return _0x12539d['leftSide']+'\x20'+_0x12539d['operator']+'\x20\x27'+_0x12539d['rightSide']+'\x27';return _0x12539d['leftSide']+'\x20'+_0x12539d['operator']+'\x20'+_0x12539d['rightSide'];}__name(handleStringFilter,'handleStringFilter');function handleDateFilter(_0xecea84){return _0xecea84['leftSide']+'\x20'+_0xecea84['operator']+'\x20datetime\x27'+_0xecea84['rightSide']+'\x27';}__name(handleDateFilter,'handleDateFilter');function handleGuidFilter(_0x5d6d51){return _0x5d6d51['leftSide']+'\x20'+_0x5d6d51['operator']+'\x20guid\x27'+_0x5d6d51['rightSide']+'\x27';}__name(handleGuidFilter,'handleGuidFilter');function handleNumberFilter(_0x49ac91){return _0x49ac91['leftSide']+'\x20'+_0x49ac91['operator']+'\x20'+_0x49ac91['rightSide'];}__name(handleNumberFilter,'handleNumberFilter');function handleLambdaFilter(_0xfa9db7){const _0x3355bc=_0xfa9db7['lambdaConfig'];if(!_0x3355bc)throw createError('Lambda\x20configuration\x20is\x20missing');return _0x3355bc['baseEnumerablePropertyName']+'/'+_0x3355bc['method']+'(i:i/'+_0xfa9db7['leftSide']+'\x20'+_0xfa9db7['operator']+'\x20guid\x27'+_0xfa9db7['rightSide']+'\x27)';}__name(handleLambdaFilter,'handleLambdaFilter');function oDataFormatGuid(_0x5236c1){let _0x404688;if(typeof _0x5236c1==='string')_0x404688=''+_0x5236c1;else Array['isArray'](_0x5236c1)&&(_0x404688=_0x5236c1['map'](_0x1482da=>'guid\x27'+_0x1482da+'\x27')['join'](','));return _0x404688;}__name(oDataFormatGuid,'oDataFormatGuid');
|
|
8
8
|
|
|
9
9
|
export { getODataFilterAsString };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _0x291acf = require('path');
|
|
5
5
|
|
|
6
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
6
|
+
var __defProp=Object['defineProperty'],__name=(_0x10a0b4,_0xe07201)=>__defProp(_0x10a0b4,'name',{'value':_0xe07201,'configurable':!![]});function getFileNameWithExtension(_0x1432ad,_0x138c91){if(!_0x138c91['startsWith']('.'))return _0x1432ad+'.'+_0x138c91;return _0x1432ad+_0x138c91;}__name(getFileNameWithExtension,'getFileNameWithExtension');function getFullFilePath(_0x504a03,_0x773688,..._0x100ff7){const _0x36ef9b=getFileNameWithExtension(_0x504a03,_0x773688);return _0x291acf.join(..._0x100ff7,_0x36ef9b);}__name(getFullFilePath,'getFullFilePath');
|
|
7
7
|
|
|
8
8
|
exports.getFileNameWithExtension = getFileNameWithExtension;
|
|
9
9
|
exports.getFullFilePath = getFullFilePath;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x10a0b4,_0xe07201)=>__defProp(_0x10a0b4,'name',{'value':_0xe07201,'configurable':!![]});function getFileNameWithExtension(_0x1432ad,_0x138c91){if(!_0x138c91['startsWith']('.'))return _0x1432ad+'.'+_0x138c91;return _0x1432ad+_0x138c91;}__name(getFileNameWithExtension,'getFileNameWithExtension');function getFullFilePath(_0x504a03,_0x773688,..._0x100ff7){const _0x36ef9b=getFileNameWithExtension(_0x504a03,_0x773688);return join(..._0x100ff7,_0x36ef9b);}__name(getFullFilePath,'getFullFilePath');
|
|
5
5
|
|
|
6
6
|
export { getFileNameWithExtension, getFullFilePath };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var routes = require('./routes.cjs.js');
|
|
5
5
|
|
|
6
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
6
|
+
var __defProp=Object['defineProperty'],__name=(_0x1a896b,_0xf969d1)=>__defProp(_0x1a896b,'name',{'value':_0xf969d1,'configurable':!![]});function getRelativeLoginUrl(){return '/'+routes.routes['login'];}__name(getRelativeLoginUrl,'getRelativeLoginUrl');function getLoginUrl(){return window['location']['origin']+getRelativeLoginUrl();}__name(getLoginUrl,'getLoginUrl');function goToLogin(){window['location']['href']=getRelativeLoginUrl();}__name(goToLogin,'goToLogin');
|
|
7
7
|
|
|
8
8
|
exports.getLoginUrl = getLoginUrl;
|
|
9
9
|
exports.getRelativeLoginUrl = getRelativeLoginUrl;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { routes } from './routes.js';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x1a896b,_0xf969d1)=>__defProp(_0x1a896b,'name',{'value':_0xf969d1,'configurable':!![]});function getRelativeLoginUrl(){return '/'+routes['login'];}__name(getRelativeLoginUrl,'getRelativeLoginUrl');function getLoginUrl(){return window['location']['origin']+getRelativeLoginUrl();}__name(getLoginUrl,'getLoginUrl');function goToLogin(){window['location']['href']=getRelativeLoginUrl();}__name(goToLogin,'goToLogin');
|
|
5
5
|
|
|
6
6
|
export { getLoginUrl, getRelativeLoginUrl, goToLogin };
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
var utils = require('../lib/utils.cjs.js');
|
|
5
5
|
|
|
6
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
6
|
+
var __defProp=Object['defineProperty'],__name=(_0x2a5b5d,_0x5e434f)=>__defProp(_0x2a5b5d,'name',{'value':_0x5e434f,'configurable':!![]});function addQueryParamsToPath(_0x266d61,_0x21ba71){let _0x22c8fe=_0x266d61;if(_0x21ba71&&Array['isArray'](_0x21ba71))_0x22c8fe+=convertQueryParamsArrayToString(_0x21ba71);else _0x21ba71&&utils.isPlainObject(_0x21ba71)&&(_0x22c8fe+=convertQueryParamsObjectToString(_0x21ba71));return _0x22c8fe;}__name(addQueryParamsToPath,'addQueryParamsToPath');function convertQueryParamsArrayToString(_0x536a8b){const _0x5890ae=_0x536a8b['map'](_0x3b0848=>_0x3b0848['name']+'='+_0x3b0848['value'])['join']('&');return _0x5890ae?'?'+_0x5890ae:'';}__name(convertQueryParamsArrayToString,'convertQueryParamsArrayToString');function convertQueryParamsObjectToString(_0x4c67fa){const _0xb7d624=Object['entries'](_0x4c67fa)['map'](([_0x2eb220,_0x3c868e])=>_0x2eb220+'='+_0x3c868e)['join']('&');return _0xb7d624?'?'+_0xb7d624:'';}__name(convertQueryParamsObjectToString,'convertQueryParamsObjectToString');
|
|
7
7
|
|
|
8
8
|
exports.addQueryParamsToPath = addQueryParamsToPath;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { isPlainObject } from '../lib/utils.js';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x2a5b5d,_0x5e434f)=>__defProp(_0x2a5b5d,'name',{'value':_0x5e434f,'configurable':!![]});function addQueryParamsToPath(_0x266d61,_0x21ba71){let _0x22c8fe=_0x266d61;if(_0x21ba71&&Array['isArray'](_0x21ba71))_0x22c8fe+=convertQueryParamsArrayToString(_0x21ba71);else _0x21ba71&&isPlainObject(_0x21ba71)&&(_0x22c8fe+=convertQueryParamsObjectToString(_0x21ba71));return _0x22c8fe;}__name(addQueryParamsToPath,'addQueryParamsToPath');function convertQueryParamsArrayToString(_0x536a8b){const _0x5890ae=_0x536a8b['map'](_0x3b0848=>_0x3b0848['name']+'='+_0x3b0848['value'])['join']('&');return _0x5890ae?'?'+_0x5890ae:'';}__name(convertQueryParamsArrayToString,'convertQueryParamsArrayToString');function convertQueryParamsObjectToString(_0x4c67fa){const _0xb7d624=Object['entries'](_0x4c67fa)['map'](([_0x2eb220,_0x3c868e])=>_0x2eb220+'='+_0x3c868e)['join']('&');return _0xb7d624?'?'+_0xb7d624:'';}__name(convertQueryParamsObjectToString,'convertQueryParamsObjectToString');
|
|
5
5
|
|
|
6
6
|
export { addQueryParamsToPath };
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
var stringsConstants = require('./strings-constants.cjs.js');
|
|
5
5
|
var valueCheckingFunctions = require('../functions/value-checking-functions.cjs.js');
|
|
6
6
|
|
|
7
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
7
|
+
var __defProp=Object['defineProperty'],__name=(_0x2c41f8,_0x4b3752)=>__defProp(_0x2c41f8,'name',{'value':_0x4b3752,'configurable':!![]});function shortenWithEllipsis(_0x4aa4dc,_0x2575b8=stringsConstants.shortTextLength){if(valueCheckingFunctions.isNullOrUndefined(_0x4aa4dc))return '';return _0x4aa4dc['length']<-0x17*-0x19f+-0xe32*0x1+0x13*-0x137?_0x4aa4dc['length']<=_0x2575b8?_0x4aa4dc:_0x4aa4dc['substring'](-0x1bbd+-0x168d+0x29*0x13a,_0x2575b8):_0x4aa4dc['length']<=_0x2575b8?_0x4aa4dc:_0x4aa4dc['substring'](0xb9b*0x2+0x8*-0x446+0xafa,_0x2575b8-(0xa3*-0x24+0x1c4c+-0x55f))+stringsConstants.ellipsis;}__name(shortenWithEllipsis,'shortenWithEllipsis');function trimCharacter(_0x4f4e98,_0x1f3c4d){let _0x376765=_0x4f4e98;if(Array['isArray'](_0x1f3c4d))for(let _0x113fd2 of _0x1f3c4d){(_0x4f4e98['startsWith'](_0x113fd2)||_0x4f4e98['endsWith'](_0x113fd2))&&(_0x376765=trimOneCharacter(_0x4f4e98,_0x113fd2));}else _0x376765=trimOneCharacter(_0x4f4e98,_0x1f3c4d);return _0x376765;}__name(trimCharacter,'trimCharacter');function trimOneCharacter(_0x1792f3,_0x5aa878){let _0x4a7e60=_0x1792f3;return _0x4a7e60?.['startsWith'](_0x5aa878)&&(_0x4a7e60=_0x4a7e60['substring'](-0xe21*-0x2+0x2*0x425+-0x1*0x248b)),_0x4a7e60?.['endsWith'](_0x5aa878)&&(_0x4a7e60=_0x4a7e60['substring'](-0x301*0x9+-0x261c+0x4125,_0x4a7e60['lastIndexOf'](_0x5aa878))),_0x4a7e60;}__name(trimOneCharacter,'trimOneCharacter');
|
|
8
8
|
|
|
9
9
|
exports.shortenWithEllipsis = shortenWithEllipsis;
|
|
10
10
|
exports.trimCharacter = trimCharacter;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
import { shortTextLength, ellipsis } from './strings-constants.js';
|
|
3
3
|
import { isNullOrUndefined } from '../functions/value-checking-functions.js';
|
|
4
4
|
|
|
5
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
5
|
+
var __defProp=Object['defineProperty'],__name=(_0x2c41f8,_0x4b3752)=>__defProp(_0x2c41f8,'name',{'value':_0x4b3752,'configurable':!![]});function shortenWithEllipsis(_0x4aa4dc,_0x2575b8=shortTextLength){if(isNullOrUndefined(_0x4aa4dc))return '';return _0x4aa4dc['length']<-0x17*-0x19f+-0xe32*0x1+0x13*-0x137?_0x4aa4dc['length']<=_0x2575b8?_0x4aa4dc:_0x4aa4dc['substring'](-0x1bbd+-0x168d+0x29*0x13a,_0x2575b8):_0x4aa4dc['length']<=_0x2575b8?_0x4aa4dc:_0x4aa4dc['substring'](0xb9b*0x2+0x8*-0x446+0xafa,_0x2575b8-(0xa3*-0x24+0x1c4c+-0x55f))+ellipsis;}__name(shortenWithEllipsis,'shortenWithEllipsis');function trimCharacter(_0x4f4e98,_0x1f3c4d){let _0x376765=_0x4f4e98;if(Array['isArray'](_0x1f3c4d))for(let _0x113fd2 of _0x1f3c4d){(_0x4f4e98['startsWith'](_0x113fd2)||_0x4f4e98['endsWith'](_0x113fd2))&&(_0x376765=trimOneCharacter(_0x4f4e98,_0x113fd2));}else _0x376765=trimOneCharacter(_0x4f4e98,_0x1f3c4d);return _0x376765;}__name(trimCharacter,'trimCharacter');function trimOneCharacter(_0x1792f3,_0x5aa878){let _0x4a7e60=_0x1792f3;return _0x4a7e60?.['startsWith'](_0x5aa878)&&(_0x4a7e60=_0x4a7e60['substring'](-0xe21*-0x2+0x2*0x425+-0x1*0x248b)),_0x4a7e60?.['endsWith'](_0x5aa878)&&(_0x4a7e60=_0x4a7e60['substring'](-0x301*0x9+-0x261c+0x4125,_0x4a7e60['lastIndexOf'](_0x5aa878))),_0x4a7e60;}__name(trimOneCharacter,'trimOneCharacter');
|
|
6
6
|
|
|
7
7
|
export { shortenWithEllipsis, trimCharacter };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x22d86b,_0x42609b)=>__defProp(_0x22d86b,'name',{'value':_0x42609b,'configurable':!![]});function ensureString(_0x1a22e3){return isString(_0x1a22e3)?_0x1a22e3:String(_0x1a22e3);}__name(ensureString,'ensureString');function ensureNumber(_0x5d6b68){if(isNumber(_0x5d6b68))return _0x5d6b68;else {if(isString(_0x5d6b68))return parseFloat(_0x5d6b68);else return NaN;}}__name(ensureNumber,'ensureNumber');function ensureObjectArray(_0x56269c){if(Array['isArray'](_0x56269c)&&_0x56269c['length']>-0x1fbb+0xb*-0x30d+0x414a&&isObject(_0x56269c[-0x93+0x141*0x13+-0x1740])){const _0x24e2fe=[];for(const _0x1089a2 of _0x56269c){if(isObject(_0x1089a2))_0x24e2fe['push'](_0x1089a2);}return _0x24e2fe;}return [];}__name(ensureObjectArray,'ensureObjectArray');function ensureWithIndexer(_0x32a613){let _0xbf8bc4={};return isWithIndexer(_0x32a613)&&(_0xbf8bc4=_0x32a613),_0xbf8bc4;}__name(ensureWithIndexer,'ensureWithIndexer');function ensureWithIndexerArray(_0x3321c2){if(Array['isArray'](_0x3321c2))return _0x3321c2['filter'](isWithIndexer);if(isWithIndexer(_0x3321c2))return [_0x3321c2];return [];}__name(ensureWithIndexerArray,'ensureWithIndexerArray');const types={'object':'object','string':'string','number':'number'};const stripeConflictResponseProperties={'detail':'detail'};function isObject(_0x3b880b){return typeof _0x3b880b===types['object']&&_0x3b880b!==null;}__name(isObject,'isObject');function isString(_0x27daaa){return typeof _0x27daaa===types['string'];}__name(isString,'isString');function isNumber(_0x2705be){return typeof _0x2705be===types['number'];}__name(isNumber,'isNumber');function isError(_0x3fa573){return typeof _0x3fa573===types['object'];}__name(isError,'isError');function isKeyof(_0x4d46af,_0x5f5e9c){return isObject(_0x4d46af)&&_0x5f5e9c in _0x4d46af;}__name(isKeyof,'isKeyof');function isWithIndexer(_0x247f10){return isObject(_0x247f10)&&!Array['isArray'](_0x247f10);}__name(isWithIndexer,'isWithIndexer');function isArray(_0x3327f8){return isObject(_0x3327f8)&&Array['isArray'](_0x3327f8);}__name(isArray,'isArray');function isErrorResponseWithDetail(_0x3d8798){return isObject(_0x3d8798)&&stripeConflictResponseProperties['detail']in _0x3d8798;}__name(isErrorResponseWithDetail,'isErrorResponseWithDetail');function isBoolean(_0x11cb76){return typeof _0x11cb76==='boolean';}__name(isBoolean,'isBoolean');function isDate(_0xbd7028){return _0xbd7028 instanceof Date;}__name(isDate,'isDate');
|
|
5
5
|
|
|
6
6
|
exports.ensureNumber = ensureNumber;
|
|
7
7
|
exports.ensureObjectArray = ensureObjectArray;
|
|
@@ -10,6 +10,7 @@ exports.ensureWithIndexer = ensureWithIndexer;
|
|
|
10
10
|
exports.ensureWithIndexerArray = ensureWithIndexerArray;
|
|
11
11
|
exports.isArray = isArray;
|
|
12
12
|
exports.isBoolean = isBoolean;
|
|
13
|
+
exports.isDate = isDate;
|
|
13
14
|
exports.isError = isError;
|
|
14
15
|
exports.isErrorResponseWithDetail = isErrorResponseWithDetail;
|
|
15
16
|
exports.isKeyof = isKeyof;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
2
|
+
var __defProp=Object['defineProperty'],__name=(_0x22d86b,_0x42609b)=>__defProp(_0x22d86b,'name',{'value':_0x42609b,'configurable':!![]});function ensureString(_0x1a22e3){return isString(_0x1a22e3)?_0x1a22e3:String(_0x1a22e3);}__name(ensureString,'ensureString');function ensureNumber(_0x5d6b68){if(isNumber(_0x5d6b68))return _0x5d6b68;else {if(isString(_0x5d6b68))return parseFloat(_0x5d6b68);else return NaN;}}__name(ensureNumber,'ensureNumber');function ensureObjectArray(_0x56269c){if(Array['isArray'](_0x56269c)&&_0x56269c['length']>-0x1fbb+0xb*-0x30d+0x414a&&isObject(_0x56269c[-0x93+0x141*0x13+-0x1740])){const _0x24e2fe=[];for(const _0x1089a2 of _0x56269c){if(isObject(_0x1089a2))_0x24e2fe['push'](_0x1089a2);}return _0x24e2fe;}return [];}__name(ensureObjectArray,'ensureObjectArray');function ensureWithIndexer(_0x32a613){let _0xbf8bc4={};return isWithIndexer(_0x32a613)&&(_0xbf8bc4=_0x32a613),_0xbf8bc4;}__name(ensureWithIndexer,'ensureWithIndexer');function ensureWithIndexerArray(_0x3321c2){if(Array['isArray'](_0x3321c2))return _0x3321c2['filter'](isWithIndexer);if(isWithIndexer(_0x3321c2))return [_0x3321c2];return [];}__name(ensureWithIndexerArray,'ensureWithIndexerArray');const types={'object':'object','string':'string','number':'number'};const stripeConflictResponseProperties={'detail':'detail'};function isObject(_0x3b880b){return typeof _0x3b880b===types['object']&&_0x3b880b!==null;}__name(isObject,'isObject');function isString(_0x27daaa){return typeof _0x27daaa===types['string'];}__name(isString,'isString');function isNumber(_0x2705be){return typeof _0x2705be===types['number'];}__name(isNumber,'isNumber');function isError(_0x3fa573){return typeof _0x3fa573===types['object'];}__name(isError,'isError');function isKeyof(_0x4d46af,_0x5f5e9c){return isObject(_0x4d46af)&&_0x5f5e9c in _0x4d46af;}__name(isKeyof,'isKeyof');function isWithIndexer(_0x247f10){return isObject(_0x247f10)&&!Array['isArray'](_0x247f10);}__name(isWithIndexer,'isWithIndexer');function isArray(_0x3327f8){return isObject(_0x3327f8)&&Array['isArray'](_0x3327f8);}__name(isArray,'isArray');function isErrorResponseWithDetail(_0x3d8798){return isObject(_0x3d8798)&&stripeConflictResponseProperties['detail']in _0x3d8798;}__name(isErrorResponseWithDetail,'isErrorResponseWithDetail');function isBoolean(_0x11cb76){return typeof _0x11cb76==='boolean';}__name(isBoolean,'isBoolean');function isDate(_0xbd7028){return _0xbd7028 instanceof Date;}__name(isDate,'isDate');
|
|
3
3
|
|
|
4
|
-
export { ensureNumber, ensureObjectArray, ensureString, ensureWithIndexer, ensureWithIndexerArray, isArray, isBoolean, isError, isErrorResponseWithDetail, isKeyof, isNumber, isObject, isString, isWithIndexer, stripeConflictResponseProperties, types };
|
|
4
|
+
export { ensureNumber, ensureObjectArray, ensureString, ensureWithIndexer, ensureWithIndexerArray, isArray, isBoolean, isDate, isError, isErrorResponseWithDetail, isKeyof, isNumber, isObject, isString, isWithIndexer, stripeConflictResponseProperties, types };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x7c4a93,_0x56261b)=>__defProp(_0x7c4a93,'name',{'value':_0x56261b,'configurable':!![]});const nameOf=__name(_0x5aebb8=>_0x5aebb8['toString'](),'nameOf');const deepNameOf=__name((_0x42994a,_0x19c909)=>_0x42994a+'.'+_0x19c909,'deepNameOf');const nameOfWithType=__name(_0x43d43d=>_0x43d43d,'nameOfWithType');
|
|
5
5
|
|
|
6
6
|
exports.deepNameOf = deepNameOf;
|
|
7
7
|
exports.nameOf = nameOf;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
2
|
+
var __defProp=Object['defineProperty'],__name=(_0x7c4a93,_0x56261b)=>__defProp(_0x7c4a93,'name',{'value':_0x56261b,'configurable':!![]});const nameOf=__name(_0x5aebb8=>_0x5aebb8['toString'](),'nameOf');const deepNameOf=__name((_0x42994a,_0x19c909)=>_0x42994a+'.'+_0x19c909,'deepNameOf');const nameOfWithType=__name(_0x43d43d=>_0x43d43d,'nameOfWithType');
|
|
3
3
|
|
|
4
4
|
export { deepNameOf, nameOf, nameOfWithType };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var nameOf = require('../core/name-of.cjs.js');
|
|
5
5
|
|
|
6
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
6
|
+
var __defProp=Object['defineProperty'],__name=(_0x347a2d,_0x542a72)=>__defProp(_0x347a2d,'name',{'value':_0x542a72,'configurable':!![]});const withIdProps={'id':nameOf.nameOf('id')};function isResourceWithId(_0x4991ed){return _0x4991ed&&typeof _0x4991ed==='object'&&typeof _0x4991ed['id']==='string';}__name(isResourceWithId,'isResourceWithId');
|
|
7
7
|
|
|
8
8
|
exports.isResourceWithId = isResourceWithId;
|
|
9
9
|
exports.withIdProps = withIdProps;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { nameOf } from '../core/name-of.js';
|
|
3
3
|
|
|
4
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
4
|
+
var __defProp=Object['defineProperty'],__name=(_0x347a2d,_0x542a72)=>__defProp(_0x347a2d,'name',{'value':_0x542a72,'configurable':!![]});const withIdProps={'id':nameOf('id')};function isResourceWithId(_0x4991ed){return _0x4991ed&&typeof _0x4991ed==='object'&&typeof _0x4991ed['id']==='string';}__name(isResourceWithId,'isResourceWithId');
|
|
5
5
|
|
|
6
6
|
export { isResourceWithId, withIdProps };
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
var commander = require('commander');
|
|
6
6
|
var create = require('../create/bin/create.cjs.js');
|
|
7
7
|
|
|
8
|
-
'use strict';const program=new commander.Command();program['command']('create\x20<folder>')['option']('-r,\x20--repo','Enable\x20repo\x20mode')['description']('Create\x20a\x20new\x20SaaS\x20Kit\x20project')['action']((
|
|
8
|
+
'use strict';const program=new commander.Command();program['command']('create\x20<folder>')['option']('-r,\x20--repo','Enable\x20repo\x20mode')['description']('Create\x20a\x20new\x20SaaS\x20Kit\x20project')['action']((_0x1ff1d2,_0x1b385d)=>{const _0x327a91=[_0x1ff1d2];if(_0x1b385d['repo'])_0x327a91['push']('-r');create.create(_0x327a91);}),program['parse'](process['argv']);
|
package/level2/cli/bin/index.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import { create } from '../create/bin/create.js';
|
|
5
5
|
|
|
6
|
-
'use strict';const program=new Command();program['command']('create\x20<folder>')['option']('-r,\x20--repo','Enable\x20repo\x20mode')['description']('Create\x20a\x20new\x20SaaS\x20Kit\x20project')['action']((
|
|
6
|
+
'use strict';const program=new Command();program['command']('create\x20<folder>')['option']('-r,\x20--repo','Enable\x20repo\x20mode')['description']('Create\x20a\x20new\x20SaaS\x20Kit\x20project')['action']((_0x1ff1d2,_0x1b385d)=>{const _0x327a91=[_0x1ff1d2];if(_0x1b385d['repo'])_0x327a91['push']('-r');create(_0x327a91);}),program['parse'](process['argv']);
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
var child_process = require('child_process');
|
|
5
5
|
var fs = require('fs');
|
|
6
6
|
var node_url = require('node:url');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
7
|
+
var _0x291acf = require('path');
|
|
8
|
+
var _0x50bf40 = require('node:fs');
|
|
9
9
|
var createAppConstants = require('../../../../base-repo/constants/create-app-constants.cjs.js');
|
|
10
10
|
var loggers = require('../../../../fd-toolbox/logging/loggers.cjs.js');
|
|
11
11
|
var constants = require('../../../../fd-toolbox/constants/constants.cjs.js');
|
|
@@ -35,8 +35,8 @@ function _interopNamespaceDefault(e) {
|
|
|
35
35
|
return Object.freeze(n);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _0x291acf__namespace = /*#__PURE__*/_interopNamespaceDefault(_0x291acf);
|
|
39
39
|
|
|
40
|
-
var __defProp=Object['defineProperty'],__name=(_0x486649,_0x35498d)=>__defProp(_0x486649,'name',{'value':_0x35498d,'configurable':!![]});const requiredNodeVersion='v20.0.0';process['version']<requiredNodeVersion&&(loggers.logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](0xdf*0x4+-0x9d3+0x658));const filename=node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('level2/cli/create/bin/create.cjs.js', document.baseURI).href))),sourceDir='../../../../',binDir=_0x3a74e9__namespace['dirname'](filename),repoRoot=_0x3a74e9__namespace['resolve'](binDir,sourceDir),envLocalPath=_0x3a74e9__namespace['join'](binDir,''+sourceDir+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.files['envExample']),envTemplate=_0x473e78['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.folders['constants'],''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.files['packageTemplate'],''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.files['envExample'],''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.folders['bin'],''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.folders['configs']];function runCommand(_0xa611b,_0x3daaf8){loggers.logInfoRaw('Executing:\x20'+_0xa611b);try{child_process.execSync(_0xa611b,{'stdio':'inherit','cwd':_0x3daaf8??process['cwd']()});}catch(_0x208fed){const _0xefad39=_0x208fed instanceof Error?_0x208fed['message']:'Unknown\x20error';loggers.logStringError('Error\x20executing:\x20'+_0xa611b),loggers.logStringError(_0xefad39),process['exit'](0xec1+0x16a0+-0x2560);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x5f3c8a){fs.existsSync(_0x5f3c8a)&&(loggers.logStringError('Error:\x20Folder\x20\x22'+_0x3a74e9__namespace['basename'](_0x5f3c8a)+'\x22\x20already\x20exists.'),process['exit'](0x1*0xbc6+-0x731*-0x5+-0x2fba));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x11a5f2=_0x3a74e9__namespace['resolve'](repoRoot,projectPaths.files['packageJson']),_0x51436c=JSON['parse'](_0x473e78['readFileSync'](_0x11a5f2,'utf-8'));return String(_0x51436c['devDependencies']?.['next']??_0x51436c['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x228e04,_0x2002fa){loggers.logInfoRaw('Creating\x20Next.js\x20project...');const _0x11fc98=getCreateNextAppVersion(),_0x3cf7fb=['npx\x20--yes\x20create-next-app@'+_0x11fc98+'\x20\x22'+_0x228e04+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git','--react-compiler']['join']('\x20');runCommand(_0x3cf7fb,_0x3a74e9__namespace['dirname'](_0x2002fa)),loggers.logInfoRaw('Next.js\x20project\x20created!');const _0x152673=_0x3a74e9__namespace['join'](_0x2002fa,'next.config.ts');_0x473e78['existsSync'](_0x152673)&&(_0x473e78['rmSync'](_0x152673),loggers.logInfoRaw('Removed\x20default\x20next.config.ts'));}__name(createNextProject,'createNextProject');async function createEnvFile(_0x1768a0){loggers.logInfoRaw('Creating\x20'+projectPaths.files['env']+'\x20file\x20with\x20default\x20values...');const _0x52ebb7=_0x3a74e9__namespace['join'](_0x1768a0,projectPaths.files['env']);try{await fs.promises['writeFile'](_0x52ebb7,envTemplate,'utf8'),loggers.logInfoRaw(projectPaths.files['env']+'\x20file\x20created\x20with\x20values!');}catch(_0xc7473e){const _0x151ce8=_0xc7473e instanceof Error?_0xc7473e['message']:'Unknown\x20error';loggers.logStringError('Error\x20creating\x20'+projectPaths.files['env']+'\x20file:'),loggers.logStringError(_0x151ce8);throw _0xc7473e;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x3c2987){const _0xd6b6d1=_0x3a74e9__namespace['join'](_0x3c2987,projectPaths.files['packageJson']),_0x5cb9a8=_0x3a74e9__namespace['join'](repoRoot,''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+projectPaths.files['packageTemplate']);try{const _0x206f51=JSON['parse'](await fs.promises['readFile'](_0xd6b6d1,'utf8')),_0x4b04fe=_0x206f51['name'],_0x5f494d=JSON['parse'](await fs.promises['readFile'](_0x5cb9a8,'utf8')),_0xb4b75f={..._0x5f494d,'name':_0x4b04fe};await fs.promises['writeFile'](_0xd6b6d1,JSON['stringify'](_0xb4b75f,null,-0x19fa+0xc34*-0x1+0x10*0x263)+'\x0a','utf8');}catch(_0x1affb9){const _0x24229d=_0x1affb9 instanceof Error?_0x1affb9['message']:'Unknown\x20error';loggers.logStringError('Error\x20overriding\x20'+projectPaths.files['packageJson']+':'),loggers.logStringError(_0x24229d);throw _0x1affb9;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x4178f7){const _0x25649d=/(import\s+)([^'"]+)(\s+from\s+["'])([^"']+)(["'])/g;return _0x4178f7['replace'](_0x25649d,(_0x5c5d84,_0x4fb83e,_0x4f4f48,_0x29b01f,_0x4e92cd,_0x1013ab)=>{if(!_0x4e92cd['startsWith'](aliases.aliasSymbols['atSign'])||_0x4e92cd['startsWith'](packages.npmPackages['saasKit']))return _0x5c5d84;let _0x4cc02f;_0x4e92cd['startsWith'](aliases.aliasSymbols['atSign']+projectPaths.folders['server'])||_0x4e92cd['includes'](''+projectPaths.projectPaths['server'])?_0x4cc02f=packages.npmPackages['saasKitServer']:_0x4cc02f=packages.npmPackages['saasKit'];let _0x3a122a=_0x4f4f48['trim']();const _0x5e1150=/^type\b/['test'](_0x3a122a),_0x329618=/^\*\s+as\s+/['test'](_0x3a122a);return !_0x5e1150&&!_0x329618&&!_0x3a122a['startsWith']('{')&&(_0x3a122a='{\x20'+_0x3a122a+'\x20}'),''+_0x4fb83e+_0x3a122a+_0x29b01f+_0x4cc02f+_0x1013ab;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x4dae3d){loggers.logInfoRaw('Copying\x20'+constants.projectName+'\x20files...');for(const _0x41a56e of path.allFilesToCopy){const _0x44b6b1=''+projectPaths.folders['cli']+_0x3a74e9__namespace['sep']+_0x41a56e,_0x3cda46=_0x3a74e9__namespace['join'](repoRoot,_0x44b6b1),_0x1b5a82=replaceToolsFolder(_0x41a56e),_0x4ee457=_0x3a74e9__namespace['join'](_0x4dae3d,_0x1b5a82);if(fs.existsSync(_0x3cda46)){const _0x485e0b=await fs.promises['stat'](_0x3cda46);_0x485e0b['isDirectory']()?await copyDirectoryContents(_0x3cda46,_0x4ee457):await copyAndProcessFile(_0x3cda46,_0x4ee457);}else loggers.logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x44b6b1);}loggers.logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x51bd0a){let _0x4f3379=_0x51bd0a;for(const [_0x23d218,_0x30628b]of Object['entries'](createAppConstants.toolsFoldersToReplace)){if(_0x4f3379['startsWith'](_0x23d218)&&ensureType.isWithIndexer(_0x30628b)){const _0x9e78e=_0x30628b;for(const _0x45df5c in _0x9e78e){const _0xb54d2b=_0x9e78e[_0x45df5c];ensureType.isString(_0xb54d2b)&&(_0x4f3379=_0x4f3379['replace'](_0x45df5c,_0xb54d2b));}break;}}return _0x4f3379;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x13c424,_0x439d20,_0x15cd30=![]){const _0x3dac2e=_0x3a74e9__namespace['relative'](repoRoot,_0x13c424)['replace'](/\\/g,'/'),_0x4d3f92=foldersToIgnore['map'](_0x47ad6b=>_0x47ad6b['replace'](/\\/g,'/'));if(_0x4d3f92['includes'](_0x3dac2e))return !![];if(_0x15cd30){const _0x4207e9=_0x3a74e9__namespace['relative'](_0x439d20,_0x13c424)['replace'](/\\/g,'/'),_0x5cfe90=_0x4207e9['split']('/');return _0x4d3f92['some'](_0x3c6c10=>_0x5cfe90['some'](_0x431025=>_0x431025===_0x3c6c10));}return ![];}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x5e9645,_0x41fe22){!fs.existsSync(_0x41fe22)&&fs.mkdirSync(_0x41fe22,{'recursive':!![]});try{const _0x5841e3=await fs.promises['readdir'](_0x5e9645,{'withFileTypes':!![]});for(const _0x4c8715 of _0x5841e3){const _0x28a630=_0x3a74e9__namespace['join'](_0x5e9645,_0x4c8715['name']),_0x29595d=_0x3a74e9__namespace['join'](_0x41fe22,_0x4c8715['name']);!shouldIgnorePath(_0x28a630,_0x5e9645,_0x4c8715['isDirectory']())&&(_0x4c8715['isDirectory']()?await copyDirectoryContents(_0x28a630,_0x29595d):await copyAndProcessFile(_0x28a630,_0x29595d));}}catch(_0x3f61d6){const _0x177a4f=_0x3f61d6 instanceof Error?_0x3f61d6['message']:'Unknown\x20error';loggers.logStringError('Error\x20reading\x20directory\x20'+_0x5e9645+':\x20'+_0x177a4f);throw _0x3f61d6;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x27e4bd,_0x4d08f7){const _0x4b6e7d=_0x3a74e9__namespace['dirname'](_0x4d08f7);!fs.existsSync(_0x4b6e7d)&&fs.mkdirSync(_0x4b6e7d,{'recursive':!![]});const _0x2610cd=await fs.promises['stat'](_0x27e4bd);if(_0x2610cd['isDirectory']())await copyDirectoryContents(_0x27e4bd,_0x4d08f7);else {const _0x3f078c=_0x3a74e9__namespace['extname'](_0x27e4bd)['toLowerCase'](),_0x3db05d=['.ico','.png','.jpg','.jpeg','.webp','.gif','.svg','.pdf'];if(_0x3db05d['includes'](_0x3f078c)){await fs.promises['copyFile'](_0x27e4bd,_0x4d08f7);return;}const _0x2450ef=await fs.promises['readFile'](_0x27e4bd,'utf8'),_0x57943e=replaceImports(_0x2450ef);await fs.promises['writeFile'](_0x4d08f7,_0x57943e,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x56b756){for(const _0x2ee4b3 of createAppConstants.additionalFoldersToCreate){const _0x228e07=_0x3a74e9__namespace['join'](_0x56b756,_0x2ee4b3);!fs.existsSync(_0x228e07)&&(fs.mkdirSync(_0x228e07,{'recursive':!![]}),loggers.logInfoRaw('Created\x20folder:\x20'+_0x2ee4b3));}loggers.logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function setupPreCommitHooks(_0x1f6b79){const _0x5904e9=_0x3a74e9__namespace['join'](_0x1f6b79,projectPaths.folders['husky']),_0x121c55=_0x3a74e9__namespace['join'](_0x5904e9,projectPaths.files['preCommit']),_0x25dfe0=_0x3a74e9__namespace['join'](_0x5904e9,projectPaths.files['commitMsg']);fs.mkdirSync(_0x5904e9,{'recursive':!![]}),await fs.promises['writeFile'](_0x121c55,cliContents.cliScripts['preCommit'],'utf8'),await fs.promises['writeFile'](_0x25dfe0,cliContents.cliScripts['commitMsg'],'utf8'),runCommand(cliContents.cliScripts['chmodPreCommit'],_0x1f6b79),runCommand(cliContents.cliScripts['chmodCommitMsg'],_0x1f6b79);}__name(setupPreCommitHooks,'setupPreCommitHooks');async function setupEslintConfig(_0x561ec5){const _0x61944c=_0x3a74e9__namespace['join'](_0x561ec5,projectPaths.files['eslintConfigMjs']);fs.existsSync(_0x61944c)&&await fs.promises['rm'](_0x61944c);const _0x25e13e=_0x3a74e9__namespace['join'](_0x561ec5,projectPaths.files['eslintConfigJs']);await fs.promises['writeFile'](_0x25e13e,cliContents.cliEslintContent,'utf8');}__name(setupEslintConfig,'setupEslintConfig');async function enableRepoModeExtras(_0x5d12ac){loggers.logInfoRaw('Enabling\x20recommendation\x20mode\x20(-r)...'),runCommand(cliContents.cliScripts['gitInit'],_0x5d12ac),runCommand(cliContents.cliScripts['installDevHuskyTsx'],_0x5d12ac),runCommand(cliContents.cliScripts['setLint'],_0x5d12ac),runCommand(cliContents.cliScripts['installHusky'],_0x5d12ac),await setupPreCommitHooks(_0x5d12ac);}__name(enableRepoModeExtras,'enableRepoModeExtras');async function updateLayoutTitle(_0x4a83ef,_0x3d47c6){const _0x45dbe9=_0x3a74e9__namespace['join'](_0x4a83ef,''+projectPaths.projectPaths['app']+_0x3a74e9__namespace['sep']+projectPaths.files['layout']);if(!fs.existsSync(_0x45dbe9))throw errors.createError(projectPaths.files['layout']+'\x20not\x20found\x20at\x20'+_0x45dbe9+',\x20cannot\x20update\x20title.');let _0x5a8801=await fs.promises['readFile'](_0x45dbe9,'utf8');const _0x45b4d5=/"SaaS Kit"/g;if(!_0x45b4d5['test'](_0x5a8801))throw errors.createError('SaaS\x20Kit\x20not\x20found\x20in\x20'+projectPaths.files['layout']+',\x20cannot\x20update\x20title.');_0x5a8801=_0x5a8801['replace'](_0x45b4d5,'\x22'+_0x3d47c6+'\x22'),await fs.promises['writeFile'](_0x45dbe9,_0x5a8801,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle');async function create(_0x408b51){try{_0x408b51['length']<-0x43*-0x54+0x5*0x459+-0x2bb8&&(loggers.logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](0x2678+0xadf+0x34a*-0xf));const _0x1603dd=_0x408b51[-0x1*0xcdd+0x1e55+-0x1178],_0x11b72d=_0x408b51['includes']('-r'),_0x4ab865=_0x3a74e9__namespace['resolve'](process['cwd'](),_0x1603dd);loggers.logInfoRaw('\x0aCreating\x20'+constants.projectName+'\x20project\x20\x22'+_0x1603dd+'\x22...\x0a');try{checkTargetFolder(_0x4ab865),createNextProject(_0x1603dd,_0x4ab865),await copyProjectFiles(_0x4ab865),await overridePackageJson(_0x4ab865),createAdditionalFolders(_0x4ab865),await createEnvFile(_0x4ab865),await updateLayoutTitle(_0x4ab865,_0x1603dd),await setupEslintConfig(_0x4ab865),_0x11b72d&&await enableRepoModeExtras(_0x4ab865),loggers.logInfoRaw('\x0a'+constants.projectName+'\x20project\x20\x22'+_0x1603dd+'\x22\x20is\x20ready!'),loggers.logInfoRaw('Next\x20steps:'),loggers.logInfoRaw('\x20\x20cd\x20'+_0x1603dd),loggers.logInfoRaw('\x20\x20npm\x20run\x20prod'),loggers.logInfoRaw('\x20\x20npm\x20start');}catch(_0x297f2a){const _0x53c3da=_0x297f2a instanceof Error?_0x297f2a['message']:'Unknown\x20error';loggers.logStringError('Error:'),loggers.logStringError(_0x53c3da),fs.existsSync(_0x4ab865)&&(loggers.logInfoRaw('Cleaning\x20up...'),fs.rmSync(_0x4ab865,{'recursive':!![],'force':!![]})),process['exit'](-0x1c98+-0x13b9+-0x5*-0x9aa);}}catch(_0xdfbe37){const _0x2e3e80=_0xdfbe37 instanceof Error?_0xdfbe37['message']:'Unknown\x20error';loggers.logStringError('Unhandled\x20error:'),loggers.logStringError(_0x2e3e80),process['exit'](-0x20*0x12d+0xa*-0x36a+0x47c5);}}__name(create,'create');
|
|
40
|
+
var __defProp=Object['defineProperty'],__name=(_0x14dd53,_0x5680bc)=>__defProp(_0x14dd53,'name',{'value':_0x5680bc,'configurable':!![]});const requiredNodeVersion='v20.0.0';process['version']<requiredNodeVersion&&(loggers.logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](-0x2643+0x1*0x2e3+0x2361));const filename=node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('level2/cli/create/bin/create.cjs.js', document.baseURI).href))),sourceDir='../../../../',binDir=_0x291acf__namespace['dirname'](filename),repoRoot=_0x291acf__namespace['resolve'](binDir,sourceDir),envLocalPath=_0x291acf__namespace['join'](binDir,''+sourceDir+projectPaths.folders['cli']+'/'+projectPaths.files['envExample']),envTemplate=_0x50bf40['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[projectPaths.folders['cli']+'/'+projectPaths.folders['constants'],projectPaths.folders['cli']+'/'+projectPaths.files['packageTemplate'],projectPaths.folders['cli']+'/'+projectPaths.files['envExample'],projectPaths.folders['cli']+'/'+projectPaths.folders['bin'],projectPaths.folders['cli']+'/'+projectPaths.folders['configs']];function runCommand(_0x5a61f6,_0xf47c97){loggers.logInfoRaw('Executing:\x20'+_0x5a61f6);try{child_process.execSync(_0x5a61f6,{'stdio':'inherit','cwd':_0xf47c97??process['cwd']()});}catch(_0x4e7e9a){const _0x31f968=_0x4e7e9a instanceof Error?_0x4e7e9a['message']:'Unknown\x20error';loggers.logStringError('Error\x20executing:\x20'+_0x5a61f6),loggers.logStringError(_0x31f968),process['exit'](0x227*0x11+-0x1f2b*0x1+-0x49*0x13);}}__name(runCommand,'runCommand');function checkTargetFolder(_0xc4d97e){fs.existsSync(_0xc4d97e)&&(loggers.logStringError('Error:\x20Folder\x20\x22'+_0x291acf__namespace['basename'](_0xc4d97e)+'\x22\x20already\x20exists.'),process['exit'](0x2*-0x7e5+0x2*-0x891+0x20ed));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x37df3b=_0x291acf__namespace['resolve'](repoRoot,projectPaths.files['packageJson']),_0x13354c=JSON['parse'](_0x50bf40['readFileSync'](_0x37df3b,'utf-8'));return String(_0x13354c['devDependencies']?.['next']??_0x13354c['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x1bb257,_0x552652){loggers.logInfoRaw('Creating\x20Next.js\x20project...');const _0x5ccd82=getCreateNextAppVersion(),_0xc2820c=['npx\x20--yes\x20create-next-app@'+_0x5ccd82+'\x20\x22'+_0x1bb257+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git','--react-compiler']['join']('\x20');runCommand(_0xc2820c,_0x291acf__namespace['dirname'](_0x552652)),loggers.logInfoRaw('Next.js\x20project\x20created!');const _0x27fcb3=_0x291acf__namespace['join'](_0x552652,'next.config.ts');_0x50bf40['existsSync'](_0x27fcb3)&&(_0x50bf40['rmSync'](_0x27fcb3),loggers.logInfoRaw('Removed\x20default\x20next.config.ts'));}__name(createNextProject,'createNextProject');async function createEnvFile(_0x24a070){loggers.logInfoRaw('Creating\x20'+projectPaths.files['env']+'\x20file\x20with\x20default\x20values...');const _0x20134b=_0x291acf__namespace['join'](_0x24a070,projectPaths.files['env']);try{await fs.promises['writeFile'](_0x20134b,envTemplate,'utf8'),loggers.logInfoRaw(projectPaths.files['env']+'\x20file\x20created\x20with\x20values!');}catch(_0x4c0175){const _0x10b7e5=_0x4c0175 instanceof Error?_0x4c0175['message']:'Unknown\x20error';loggers.logStringError('Error\x20creating\x20'+projectPaths.files['env']+'\x20file:'),loggers.logStringError(_0x10b7e5);throw _0x4c0175;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x53051a){const _0x14e0cf=_0x291acf__namespace['join'](_0x53051a,projectPaths.files['packageJson']),_0x8282fb=_0x291acf__namespace['join'](repoRoot,projectPaths.folders['cli']+'/'+projectPaths.files['packageTemplate']);try{const _0x46836a=JSON['parse'](await fs.promises['readFile'](_0x14e0cf,'utf8')),_0x5be005=_0x46836a['name'],_0x22ceab=JSON['parse'](await fs.promises['readFile'](_0x8282fb,'utf8')),_0x50813b={..._0x22ceab,'name':_0x5be005};await fs.promises['writeFile'](_0x14e0cf,JSON['stringify'](_0x50813b,null,0x242a+-0x7ab+-0x1c7d)+'\x0a','utf8');}catch(_0x3d9983){const _0x3cd18a=_0x3d9983 instanceof Error?_0x3d9983['message']:'Unknown\x20error';loggers.logStringError('Error\x20overriding\x20'+projectPaths.files['packageJson']+':'),loggers.logStringError(_0x3cd18a);throw _0x3d9983;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x59d1fb){const _0x562844=/(import\s+)([^'"]+)(\s+from\s+["'])([^"']+)(["'])/g;return _0x59d1fb['replace'](_0x562844,(_0x5e644d,_0x8791fe,_0x15b69b,_0x3ff39a,_0x5abefc,_0xa48089)=>{if(!_0x5abefc['startsWith'](aliases.aliasSymbols['atSign'])||_0x5abefc['startsWith'](packages.npmPackages['saasKit']))return _0x5e644d;let _0xf4bd53;_0x5abefc['startsWith'](aliases.aliasSymbols['atSign']+projectPaths.folders['server'])||_0x5abefc['includes'](''+projectPaths.nonRootProjectPaths['server'])?_0xf4bd53=packages.npmPackages['saasKitServer']:_0xf4bd53=packages.npmPackages['saasKit'];let _0x223e67=_0x15b69b['trim']();const _0x1df423=/^type\b/['test'](_0x223e67),_0x47ee61=/^\*\s+as\s+/['test'](_0x223e67);return !_0x1df423&&!_0x47ee61&&!_0x223e67['startsWith']('{')&&(_0x223e67='{\x20'+_0x223e67+'\x20}'),''+_0x8791fe+_0x223e67+_0x3ff39a+_0xf4bd53+_0xa48089;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x3b3d9d){loggers.logInfoRaw('Copying\x20'+constants.projectName+'\x20files...');for(const _0x571851 of path.allFilesToCopy){const _0x16d4bb=projectPaths.folders['cli']+'/'+_0x571851,_0x4e0aa8=_0x291acf__namespace['join'](repoRoot,_0x16d4bb),_0x640a40=replaceToolsFolder(_0x571851),_0x22c6b3=_0x291acf__namespace['join'](_0x3b3d9d,_0x640a40);if(fs.existsSync(_0x4e0aa8)){const _0x1eb8f7=await fs.promises['stat'](_0x4e0aa8);_0x1eb8f7['isDirectory']()?await copyDirectoryContents(_0x4e0aa8,_0x22c6b3):await copyAndProcessFile(_0x4e0aa8,_0x22c6b3);}else loggers.logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x16d4bb);}loggers.logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x5a1002){let _0x33a3e1=_0x5a1002;for(const [_0x25ed1e,_0x1932e4]of Object['entries'](createAppConstants.toolsFoldersToReplace)){if(_0x33a3e1['startsWith'](_0x25ed1e)&&ensureType.isWithIndexer(_0x1932e4)){const _0x49b0f5=_0x1932e4;for(const _0x519647 in _0x49b0f5){const _0x4be070=_0x49b0f5[_0x519647];ensureType.isString(_0x4be070)&&(_0x33a3e1=_0x33a3e1['replace'](_0x519647,_0x4be070));}break;}}return _0x33a3e1;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x424cb4,_0x115dd1,_0x578f91=![]){const _0x1df599=_0x291acf__namespace['relative'](repoRoot,_0x424cb4)['replace'](/\\/g,'/'),_0x523f7a=foldersToIgnore['map'](_0x2d7ff4=>_0x2d7ff4['replace'](/\\/g,'/'));if(_0x523f7a['includes'](_0x1df599))return !![];if(_0x578f91){const _0x456015=_0x291acf__namespace['relative'](_0x115dd1,_0x424cb4)['replace'](/\\/g,'/'),_0x69533a=_0x456015['split']('/');return _0x523f7a['some'](_0x466ff5=>_0x69533a['some'](_0x12388b=>_0x12388b===_0x466ff5));}return ![];}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x23da90,_0x1dbb75){!fs.existsSync(_0x1dbb75)&&fs.mkdirSync(_0x1dbb75,{'recursive':!![]});try{const _0x5f44a3=await fs.promises['readdir'](_0x23da90,{'withFileTypes':!![]});for(const _0x3fd5b0 of _0x5f44a3){const _0x410006=_0x291acf__namespace['join'](_0x23da90,_0x3fd5b0['name']),_0x495d5c=_0x291acf__namespace['join'](_0x1dbb75,_0x3fd5b0['name']);!shouldIgnorePath(_0x410006,_0x23da90,_0x3fd5b0['isDirectory']())&&(_0x3fd5b0['isDirectory']()?await copyDirectoryContents(_0x410006,_0x495d5c):await copyAndProcessFile(_0x410006,_0x495d5c));}}catch(_0x2784e7){const _0x54afcc=_0x2784e7 instanceof Error?_0x2784e7['message']:'Unknown\x20error';loggers.logStringError('Error\x20reading\x20directory\x20'+_0x23da90+':\x20'+_0x54afcc);throw _0x2784e7;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x57542a,_0x1313ae){const _0x5c5eaf=_0x291acf__namespace['dirname'](_0x1313ae);!fs.existsSync(_0x5c5eaf)&&fs.mkdirSync(_0x5c5eaf,{'recursive':!![]});const _0x3a945c=await fs.promises['stat'](_0x57542a);if(_0x3a945c['isDirectory']())await copyDirectoryContents(_0x57542a,_0x1313ae);else {const _0x4664d0=_0x291acf__namespace['extname'](_0x57542a)['toLowerCase'](),_0x3c7b60=['.ico','.png','.jpg','.jpeg','.webp','.gif','.svg','.pdf'];if(_0x3c7b60['includes'](_0x4664d0)){await fs.promises['copyFile'](_0x57542a,_0x1313ae);return;}const _0x508e8d=await fs.promises['readFile'](_0x57542a,'utf8'),_0x18e2f1=replaceImports(_0x508e8d);await fs.promises['writeFile'](_0x1313ae,_0x18e2f1,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x2b5757){for(const _0x4ba790 of createAppConstants.additionalFoldersToCreate){const _0x14252e=_0x291acf__namespace['join'](_0x2b5757,_0x4ba790);!fs.existsSync(_0x14252e)&&(fs.mkdirSync(_0x14252e,{'recursive':!![]}),loggers.logInfoRaw('Created\x20folder:\x20'+_0x4ba790));}loggers.logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function setupPreCommitHooks(_0xf5632){const _0xeb46e4=_0x291acf__namespace['join'](_0xf5632,projectPaths.folders['husky']),_0xa7d083=_0x291acf__namespace['join'](_0xeb46e4,projectPaths.files['preCommit']),_0x3b6071=_0x291acf__namespace['join'](_0xeb46e4,projectPaths.files['commitMsg']);fs.mkdirSync(_0xeb46e4,{'recursive':!![]}),await fs.promises['writeFile'](_0xa7d083,cliContents.cliScripts['preCommit'],'utf8'),await fs.promises['writeFile'](_0x3b6071,cliContents.cliScripts['commitMsg'],'utf8'),runCommand(cliContents.cliScripts['chmodPreCommit'],_0xf5632),runCommand(cliContents.cliScripts['chmodCommitMsg'],_0xf5632);}__name(setupPreCommitHooks,'setupPreCommitHooks');async function setupEslintConfig(_0x141137){const _0x299a04=_0x291acf__namespace['join'](_0x141137,projectPaths.files['eslintConfigMjs']);fs.existsSync(_0x299a04)&&await fs.promises['rm'](_0x299a04);const _0x1fe309=_0x291acf__namespace['join'](_0x141137,projectPaths.files['eslintConfigJs']);await fs.promises['writeFile'](_0x1fe309,cliContents.cliEslintContent,'utf8');}__name(setupEslintConfig,'setupEslintConfig');async function enableRepoModeExtras(_0x24564b){loggers.logInfoRaw('Enabling\x20recommendation\x20mode\x20(-r)...'),runCommand(cliContents.cliScripts['gitInit'],_0x24564b),runCommand(cliContents.cliScripts['installDevHuskyTsx'],_0x24564b),runCommand(cliContents.cliScripts['setLint'],_0x24564b),runCommand(cliContents.cliScripts['installHusky'],_0x24564b),await setupPreCommitHooks(_0x24564b);}__name(enableRepoModeExtras,'enableRepoModeExtras');async function updateLayoutTitle(_0x230ce6,_0x3d4d34){const _0x4f93af=_0x291acf__namespace['join'](_0x230ce6,projectPaths.projectPaths['app']+'/'+projectPaths.files['layout']);if(!fs.existsSync(_0x4f93af))throw errors.createError(projectPaths.files['layout']+'\x20not\x20found\x20at\x20'+_0x4f93af+',\x20cannot\x20update\x20title.');let _0x2f496d=await fs.promises['readFile'](_0x4f93af,'utf8');const _0x4d5865=/"SaaS Kit"/g;if(!_0x4d5865['test'](_0x2f496d))throw errors.createError('SaaS\x20Kit\x20not\x20found\x20in\x20'+projectPaths.files['layout']+',\x20cannot\x20update\x20title.');_0x2f496d=_0x2f496d['replace'](_0x4d5865,'\x22'+_0x3d4d34+'\x22'),await fs.promises['writeFile'](_0x4f93af,_0x2f496d,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle');async function create(_0x3779b0){try{_0x3779b0['length']<0x255a*0x1+0x17ce+-0x3d27&&(loggers.logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](0x17a7+-0x194d+-0x1*-0x1a7));const _0x117fa7=_0x3779b0[0x2702*-0x1+0x1393+0x136f],_0x571bae=_0x3779b0['includes']('-r'),_0x856850=_0x291acf__namespace['resolve'](process['cwd'](),_0x117fa7);loggers.logInfoRaw('\x0aCreating\x20'+constants.projectName+'\x20project\x20\x22'+_0x117fa7+'\x22...\x0a');try{checkTargetFolder(_0x856850),createNextProject(_0x117fa7,_0x856850),await copyProjectFiles(_0x856850),await overridePackageJson(_0x856850),createAdditionalFolders(_0x856850),await createEnvFile(_0x856850),await updateLayoutTitle(_0x856850,_0x117fa7),await setupEslintConfig(_0x856850),_0x571bae&&await enableRepoModeExtras(_0x856850),loggers.logInfoRaw('\x0a'+constants.projectName+'\x20project\x20\x22'+_0x117fa7+'\x22\x20is\x20ready!'),loggers.logInfoRaw('Next\x20steps:'),loggers.logInfoRaw('\x20\x20cd\x20'+_0x117fa7),loggers.logInfoRaw('\x20\x20npm\x20run\x20prod'),loggers.logInfoRaw('\x20\x20npm\x20start');}catch(_0x465a24){const _0x8e7f74=_0x465a24 instanceof Error?_0x465a24['message']:'Unknown\x20error';loggers.logStringError('Error:'),loggers.logStringError(_0x8e7f74),fs.existsSync(_0x856850)&&(loggers.logInfoRaw('Cleaning\x20up...'),fs.rmSync(_0x856850,{'recursive':!![],'force':!![]})),process['exit'](0x1*0xe2c+-0x501*0x4+-0x3*-0x1f3);}}catch(_0x2a848e){const _0x10ffc5=_0x2a848e instanceof Error?_0x2a848e['message']:'Unknown\x20error';loggers.logStringError('Unhandled\x20error:'),loggers.logStringError(_0x10ffc5),process['exit'](-0x1ca6+-0x6c8+0xc1*0x2f);}}__name(create,'create');
|
|
41
41
|
|
|
42
42
|
exports.create = create;
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
3
|
import { existsSync, promises, mkdirSync, rmSync } from 'fs';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import * as
|
|
6
|
-
import
|
|
5
|
+
import * as _0x291acf from 'path';
|
|
6
|
+
import _0x50bf40 from 'node:fs';
|
|
7
7
|
import { toolsFoldersToReplace, additionalFoldersToCreate } from '../../../../base-repo/constants/create-app-constants.js';
|
|
8
8
|
import { logStringError, logInfoRaw } from '../../../../fd-toolbox/logging/loggers.js';
|
|
9
9
|
import { projectName } from '../../../../fd-toolbox/constants/constants.js';
|
|
10
10
|
import { allFilesToCopy } from '../../../npm-commands/build-npm/path.js';
|
|
11
11
|
import { createError } from '../../../../fd-toolbox/errors/errors.js';
|
|
12
|
-
import { folders, files, projectPaths } from '../../../../base-repo/app-constants/project-paths.js';
|
|
12
|
+
import { folders, files, nonRootProjectPaths, projectPaths } from '../../../../base-repo/app-constants/project-paths.js';
|
|
13
13
|
import { npmPackages } from '../../../../base-repo/constants/packages.js';
|
|
14
14
|
import { aliasSymbols } from '../../../../base-repo/app-constants/aliases.js';
|
|
15
15
|
import { isWithIndexer, isString } from '../../../../fd-toolbox/types/ensure-type.js';
|
|
16
16
|
import { cliScripts, cliEslintContent } from '../../../npm-commands/build-npm/cli-contents.js';
|
|
17
17
|
|
|
18
|
-
var __defProp=Object['defineProperty'],__name=(_0x486649,_0x35498d)=>__defProp(_0x486649,'name',{'value':_0x35498d,'configurable':!![]});const requiredNodeVersion='v20.0.0';process['version']<requiredNodeVersion&&(logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](0xdf*0x4+-0x9d3+0x658));const filename=fileURLToPath(import.meta['url']),sourceDir='../../../../',binDir=_0x3a74e9['dirname'](filename),repoRoot=_0x3a74e9['resolve'](binDir,sourceDir),envLocalPath=_0x3a74e9['join'](binDir,''+sourceDir+folders['cli']+_0x3a74e9['sep']+files['envExample']),envTemplate=_0x473e78['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[''+folders['cli']+_0x3a74e9['sep']+folders['constants'],''+folders['cli']+_0x3a74e9['sep']+files['packageTemplate'],''+folders['cli']+_0x3a74e9['sep']+files['envExample'],''+folders['cli']+_0x3a74e9['sep']+folders['bin'],''+folders['cli']+_0x3a74e9['sep']+folders['configs']];function runCommand(_0xa611b,_0x3daaf8){logInfoRaw('Executing:\x20'+_0xa611b);try{execSync(_0xa611b,{'stdio':'inherit','cwd':_0x3daaf8??process['cwd']()});}catch(_0x208fed){const _0xefad39=_0x208fed instanceof Error?_0x208fed['message']:'Unknown\x20error';logStringError('Error\x20executing:\x20'+_0xa611b),logStringError(_0xefad39),process['exit'](0xec1+0x16a0+-0x2560);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x5f3c8a){existsSync(_0x5f3c8a)&&(logStringError('Error:\x20Folder\x20\x22'+_0x3a74e9['basename'](_0x5f3c8a)+'\x22\x20already\x20exists.'),process['exit'](0x1*0xbc6+-0x731*-0x5+-0x2fba));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x11a5f2=_0x3a74e9['resolve'](repoRoot,files['packageJson']),_0x51436c=JSON['parse'](_0x473e78['readFileSync'](_0x11a5f2,'utf-8'));return String(_0x51436c['devDependencies']?.['next']??_0x51436c['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x228e04,_0x2002fa){logInfoRaw('Creating\x20Next.js\x20project...');const _0x11fc98=getCreateNextAppVersion(),_0x3cf7fb=['npx\x20--yes\x20create-next-app@'+_0x11fc98+'\x20\x22'+_0x228e04+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git','--react-compiler']['join']('\x20');runCommand(_0x3cf7fb,_0x3a74e9['dirname'](_0x2002fa)),logInfoRaw('Next.js\x20project\x20created!');const _0x152673=_0x3a74e9['join'](_0x2002fa,'next.config.ts');_0x473e78['existsSync'](_0x152673)&&(_0x473e78['rmSync'](_0x152673),logInfoRaw('Removed\x20default\x20next.config.ts'));}__name(createNextProject,'createNextProject');async function createEnvFile(_0x1768a0){logInfoRaw('Creating\x20'+files['env']+'\x20file\x20with\x20default\x20values...');const _0x52ebb7=_0x3a74e9['join'](_0x1768a0,files['env']);try{await promises['writeFile'](_0x52ebb7,envTemplate,'utf8'),logInfoRaw(files['env']+'\x20file\x20created\x20with\x20values!');}catch(_0xc7473e){const _0x151ce8=_0xc7473e instanceof Error?_0xc7473e['message']:'Unknown\x20error';logStringError('Error\x20creating\x20'+files['env']+'\x20file:'),logStringError(_0x151ce8);throw _0xc7473e;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x3c2987){const _0xd6b6d1=_0x3a74e9['join'](_0x3c2987,files['packageJson']),_0x5cb9a8=_0x3a74e9['join'](repoRoot,''+folders['cli']+_0x3a74e9['sep']+files['packageTemplate']);try{const _0x206f51=JSON['parse'](await promises['readFile'](_0xd6b6d1,'utf8')),_0x4b04fe=_0x206f51['name'],_0x5f494d=JSON['parse'](await promises['readFile'](_0x5cb9a8,'utf8')),_0xb4b75f={..._0x5f494d,'name':_0x4b04fe};await promises['writeFile'](_0xd6b6d1,JSON['stringify'](_0xb4b75f,null,-0x19fa+0xc34*-0x1+0x10*0x263)+'\x0a','utf8');}catch(_0x1affb9){const _0x24229d=_0x1affb9 instanceof Error?_0x1affb9['message']:'Unknown\x20error';logStringError('Error\x20overriding\x20'+files['packageJson']+':'),logStringError(_0x24229d);throw _0x1affb9;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x4178f7){const _0x25649d=/(import\s+)([^'"]+)(\s+from\s+["'])([^"']+)(["'])/g;return _0x4178f7['replace'](_0x25649d,(_0x5c5d84,_0x4fb83e,_0x4f4f48,_0x29b01f,_0x4e92cd,_0x1013ab)=>{if(!_0x4e92cd['startsWith'](aliasSymbols['atSign'])||_0x4e92cd['startsWith'](npmPackages['saasKit']))return _0x5c5d84;let _0x4cc02f;_0x4e92cd['startsWith'](aliasSymbols['atSign']+folders['server'])||_0x4e92cd['includes'](''+projectPaths['server'])?_0x4cc02f=npmPackages['saasKitServer']:_0x4cc02f=npmPackages['saasKit'];let _0x3a122a=_0x4f4f48['trim']();const _0x5e1150=/^type\b/['test'](_0x3a122a),_0x329618=/^\*\s+as\s+/['test'](_0x3a122a);return !_0x5e1150&&!_0x329618&&!_0x3a122a['startsWith']('{')&&(_0x3a122a='{\x20'+_0x3a122a+'\x20}'),''+_0x4fb83e+_0x3a122a+_0x29b01f+_0x4cc02f+_0x1013ab;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x4dae3d){logInfoRaw('Copying\x20'+projectName+'\x20files...');for(const _0x41a56e of allFilesToCopy){const _0x44b6b1=''+folders['cli']+_0x3a74e9['sep']+_0x41a56e,_0x3cda46=_0x3a74e9['join'](repoRoot,_0x44b6b1),_0x1b5a82=replaceToolsFolder(_0x41a56e),_0x4ee457=_0x3a74e9['join'](_0x4dae3d,_0x1b5a82);if(existsSync(_0x3cda46)){const _0x485e0b=await promises['stat'](_0x3cda46);_0x485e0b['isDirectory']()?await copyDirectoryContents(_0x3cda46,_0x4ee457):await copyAndProcessFile(_0x3cda46,_0x4ee457);}else logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x44b6b1);}logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x51bd0a){let _0x4f3379=_0x51bd0a;for(const [_0x23d218,_0x30628b]of Object['entries'](toolsFoldersToReplace)){if(_0x4f3379['startsWith'](_0x23d218)&&isWithIndexer(_0x30628b)){const _0x9e78e=_0x30628b;for(const _0x45df5c in _0x9e78e){const _0xb54d2b=_0x9e78e[_0x45df5c];isString(_0xb54d2b)&&(_0x4f3379=_0x4f3379['replace'](_0x45df5c,_0xb54d2b));}break;}}return _0x4f3379;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x13c424,_0x439d20,_0x15cd30=![]){const _0x3dac2e=_0x3a74e9['relative'](repoRoot,_0x13c424)['replace'](/\\/g,'/'),_0x4d3f92=foldersToIgnore['map'](_0x47ad6b=>_0x47ad6b['replace'](/\\/g,'/'));if(_0x4d3f92['includes'](_0x3dac2e))return !![];if(_0x15cd30){const _0x4207e9=_0x3a74e9['relative'](_0x439d20,_0x13c424)['replace'](/\\/g,'/'),_0x5cfe90=_0x4207e9['split']('/');return _0x4d3f92['some'](_0x3c6c10=>_0x5cfe90['some'](_0x431025=>_0x431025===_0x3c6c10));}return ![];}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x5e9645,_0x41fe22){!existsSync(_0x41fe22)&&mkdirSync(_0x41fe22,{'recursive':!![]});try{const _0x5841e3=await promises['readdir'](_0x5e9645,{'withFileTypes':!![]});for(const _0x4c8715 of _0x5841e3){const _0x28a630=_0x3a74e9['join'](_0x5e9645,_0x4c8715['name']),_0x29595d=_0x3a74e9['join'](_0x41fe22,_0x4c8715['name']);!shouldIgnorePath(_0x28a630,_0x5e9645,_0x4c8715['isDirectory']())&&(_0x4c8715['isDirectory']()?await copyDirectoryContents(_0x28a630,_0x29595d):await copyAndProcessFile(_0x28a630,_0x29595d));}}catch(_0x3f61d6){const _0x177a4f=_0x3f61d6 instanceof Error?_0x3f61d6['message']:'Unknown\x20error';logStringError('Error\x20reading\x20directory\x20'+_0x5e9645+':\x20'+_0x177a4f);throw _0x3f61d6;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x27e4bd,_0x4d08f7){const _0x4b6e7d=_0x3a74e9['dirname'](_0x4d08f7);!existsSync(_0x4b6e7d)&&mkdirSync(_0x4b6e7d,{'recursive':!![]});const _0x2610cd=await promises['stat'](_0x27e4bd);if(_0x2610cd['isDirectory']())await copyDirectoryContents(_0x27e4bd,_0x4d08f7);else {const _0x3f078c=_0x3a74e9['extname'](_0x27e4bd)['toLowerCase'](),_0x3db05d=['.ico','.png','.jpg','.jpeg','.webp','.gif','.svg','.pdf'];if(_0x3db05d['includes'](_0x3f078c)){await promises['copyFile'](_0x27e4bd,_0x4d08f7);return;}const _0x2450ef=await promises['readFile'](_0x27e4bd,'utf8'),_0x57943e=replaceImports(_0x2450ef);await promises['writeFile'](_0x4d08f7,_0x57943e,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x56b756){for(const _0x2ee4b3 of additionalFoldersToCreate){const _0x228e07=_0x3a74e9['join'](_0x56b756,_0x2ee4b3);!existsSync(_0x228e07)&&(mkdirSync(_0x228e07,{'recursive':!![]}),logInfoRaw('Created\x20folder:\x20'+_0x2ee4b3));}logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function setupPreCommitHooks(_0x1f6b79){const _0x5904e9=_0x3a74e9['join'](_0x1f6b79,folders['husky']),_0x121c55=_0x3a74e9['join'](_0x5904e9,files['preCommit']),_0x25dfe0=_0x3a74e9['join'](_0x5904e9,files['commitMsg']);mkdirSync(_0x5904e9,{'recursive':!![]}),await promises['writeFile'](_0x121c55,cliScripts['preCommit'],'utf8'),await promises['writeFile'](_0x25dfe0,cliScripts['commitMsg'],'utf8'),runCommand(cliScripts['chmodPreCommit'],_0x1f6b79),runCommand(cliScripts['chmodCommitMsg'],_0x1f6b79);}__name(setupPreCommitHooks,'setupPreCommitHooks');async function setupEslintConfig(_0x561ec5){const _0x61944c=_0x3a74e9['join'](_0x561ec5,files['eslintConfigMjs']);existsSync(_0x61944c)&&await promises['rm'](_0x61944c);const _0x25e13e=_0x3a74e9['join'](_0x561ec5,files['eslintConfigJs']);await promises['writeFile'](_0x25e13e,cliEslintContent,'utf8');}__name(setupEslintConfig,'setupEslintConfig');async function enableRepoModeExtras(_0x5d12ac){logInfoRaw('Enabling\x20recommendation\x20mode\x20(-r)...'),runCommand(cliScripts['gitInit'],_0x5d12ac),runCommand(cliScripts['installDevHuskyTsx'],_0x5d12ac),runCommand(cliScripts['setLint'],_0x5d12ac),runCommand(cliScripts['installHusky'],_0x5d12ac),await setupPreCommitHooks(_0x5d12ac);}__name(enableRepoModeExtras,'enableRepoModeExtras');async function updateLayoutTitle(_0x4a83ef,_0x3d47c6){const _0x45dbe9=_0x3a74e9['join'](_0x4a83ef,''+projectPaths['app']+_0x3a74e9['sep']+files['layout']);if(!existsSync(_0x45dbe9))throw createError(files['layout']+'\x20not\x20found\x20at\x20'+_0x45dbe9+',\x20cannot\x20update\x20title.');let _0x5a8801=await promises['readFile'](_0x45dbe9,'utf8');const _0x45b4d5=/"SaaS Kit"/g;if(!_0x45b4d5['test'](_0x5a8801))throw createError('SaaS\x20Kit\x20not\x20found\x20in\x20'+files['layout']+',\x20cannot\x20update\x20title.');_0x5a8801=_0x5a8801['replace'](_0x45b4d5,'\x22'+_0x3d47c6+'\x22'),await promises['writeFile'](_0x45dbe9,_0x5a8801,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle');async function create(_0x408b51){try{_0x408b51['length']<-0x43*-0x54+0x5*0x459+-0x2bb8&&(logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](0x2678+0xadf+0x34a*-0xf));const _0x1603dd=_0x408b51[-0x1*0xcdd+0x1e55+-0x1178],_0x11b72d=_0x408b51['includes']('-r'),_0x4ab865=_0x3a74e9['resolve'](process['cwd'](),_0x1603dd);logInfoRaw('\x0aCreating\x20'+projectName+'\x20project\x20\x22'+_0x1603dd+'\x22...\x0a');try{checkTargetFolder(_0x4ab865),createNextProject(_0x1603dd,_0x4ab865),await copyProjectFiles(_0x4ab865),await overridePackageJson(_0x4ab865),createAdditionalFolders(_0x4ab865),await createEnvFile(_0x4ab865),await updateLayoutTitle(_0x4ab865,_0x1603dd),await setupEslintConfig(_0x4ab865),_0x11b72d&&await enableRepoModeExtras(_0x4ab865),logInfoRaw('\x0a'+projectName+'\x20project\x20\x22'+_0x1603dd+'\x22\x20is\x20ready!'),logInfoRaw('Next\x20steps:'),logInfoRaw('\x20\x20cd\x20'+_0x1603dd),logInfoRaw('\x20\x20npm\x20run\x20prod'),logInfoRaw('\x20\x20npm\x20start');}catch(_0x297f2a){const _0x53c3da=_0x297f2a instanceof Error?_0x297f2a['message']:'Unknown\x20error';logStringError('Error:'),logStringError(_0x53c3da),existsSync(_0x4ab865)&&(logInfoRaw('Cleaning\x20up...'),rmSync(_0x4ab865,{'recursive':!![],'force':!![]})),process['exit'](-0x1c98+-0x13b9+-0x5*-0x9aa);}}catch(_0xdfbe37){const _0x2e3e80=_0xdfbe37 instanceof Error?_0xdfbe37['message']:'Unknown\x20error';logStringError('Unhandled\x20error:'),logStringError(_0x2e3e80),process['exit'](-0x20*0x12d+0xa*-0x36a+0x47c5);}}__name(create,'create');
|
|
18
|
+
var __defProp=Object['defineProperty'],__name=(_0x14dd53,_0x5680bc)=>__defProp(_0x14dd53,'name',{'value':_0x5680bc,'configurable':!![]});const requiredNodeVersion='v20.0.0';process['version']<requiredNodeVersion&&(logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](-0x2643+0x1*0x2e3+0x2361));const filename=fileURLToPath(import.meta.url),sourceDir='../../../../',binDir=_0x291acf['dirname'](filename),repoRoot=_0x291acf['resolve'](binDir,sourceDir),envLocalPath=_0x291acf['join'](binDir,''+sourceDir+folders['cli']+'/'+files['envExample']),envTemplate=_0x50bf40['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[folders['cli']+'/'+folders['constants'],folders['cli']+'/'+files['packageTemplate'],folders['cli']+'/'+files['envExample'],folders['cli']+'/'+folders['bin'],folders['cli']+'/'+folders['configs']];function runCommand(_0x5a61f6,_0xf47c97){logInfoRaw('Executing:\x20'+_0x5a61f6);try{execSync(_0x5a61f6,{'stdio':'inherit','cwd':_0xf47c97??process['cwd']()});}catch(_0x4e7e9a){const _0x31f968=_0x4e7e9a instanceof Error?_0x4e7e9a['message']:'Unknown\x20error';logStringError('Error\x20executing:\x20'+_0x5a61f6),logStringError(_0x31f968),process['exit'](0x227*0x11+-0x1f2b*0x1+-0x49*0x13);}}__name(runCommand,'runCommand');function checkTargetFolder(_0xc4d97e){existsSync(_0xc4d97e)&&(logStringError('Error:\x20Folder\x20\x22'+_0x291acf['basename'](_0xc4d97e)+'\x22\x20already\x20exists.'),process['exit'](0x2*-0x7e5+0x2*-0x891+0x20ed));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x37df3b=_0x291acf['resolve'](repoRoot,files['packageJson']),_0x13354c=JSON['parse'](_0x50bf40['readFileSync'](_0x37df3b,'utf-8'));return String(_0x13354c['devDependencies']?.['next']??_0x13354c['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x1bb257,_0x552652){logInfoRaw('Creating\x20Next.js\x20project...');const _0x5ccd82=getCreateNextAppVersion(),_0xc2820c=['npx\x20--yes\x20create-next-app@'+_0x5ccd82+'\x20\x22'+_0x1bb257+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git','--react-compiler']['join']('\x20');runCommand(_0xc2820c,_0x291acf['dirname'](_0x552652)),logInfoRaw('Next.js\x20project\x20created!');const _0x27fcb3=_0x291acf['join'](_0x552652,'next.config.ts');_0x50bf40['existsSync'](_0x27fcb3)&&(_0x50bf40['rmSync'](_0x27fcb3),logInfoRaw('Removed\x20default\x20next.config.ts'));}__name(createNextProject,'createNextProject');async function createEnvFile(_0x24a070){logInfoRaw('Creating\x20'+files['env']+'\x20file\x20with\x20default\x20values...');const _0x20134b=_0x291acf['join'](_0x24a070,files['env']);try{await promises['writeFile'](_0x20134b,envTemplate,'utf8'),logInfoRaw(files['env']+'\x20file\x20created\x20with\x20values!');}catch(_0x4c0175){const _0x10b7e5=_0x4c0175 instanceof Error?_0x4c0175['message']:'Unknown\x20error';logStringError('Error\x20creating\x20'+files['env']+'\x20file:'),logStringError(_0x10b7e5);throw _0x4c0175;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x53051a){const _0x14e0cf=_0x291acf['join'](_0x53051a,files['packageJson']),_0x8282fb=_0x291acf['join'](repoRoot,folders['cli']+'/'+files['packageTemplate']);try{const _0x46836a=JSON['parse'](await promises['readFile'](_0x14e0cf,'utf8')),_0x5be005=_0x46836a['name'],_0x22ceab=JSON['parse'](await promises['readFile'](_0x8282fb,'utf8')),_0x50813b={..._0x22ceab,'name':_0x5be005};await promises['writeFile'](_0x14e0cf,JSON['stringify'](_0x50813b,null,0x242a+-0x7ab+-0x1c7d)+'\x0a','utf8');}catch(_0x3d9983){const _0x3cd18a=_0x3d9983 instanceof Error?_0x3d9983['message']:'Unknown\x20error';logStringError('Error\x20overriding\x20'+files['packageJson']+':'),logStringError(_0x3cd18a);throw _0x3d9983;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x59d1fb){const _0x562844=/(import\s+)([^'"]+)(\s+from\s+["'])([^"']+)(["'])/g;return _0x59d1fb['replace'](_0x562844,(_0x5e644d,_0x8791fe,_0x15b69b,_0x3ff39a,_0x5abefc,_0xa48089)=>{if(!_0x5abefc['startsWith'](aliasSymbols['atSign'])||_0x5abefc['startsWith'](npmPackages['saasKit']))return _0x5e644d;let _0xf4bd53;_0x5abefc['startsWith'](aliasSymbols['atSign']+folders['server'])||_0x5abefc['includes'](''+nonRootProjectPaths['server'])?_0xf4bd53=npmPackages['saasKitServer']:_0xf4bd53=npmPackages['saasKit'];let _0x223e67=_0x15b69b['trim']();const _0x1df423=/^type\b/['test'](_0x223e67),_0x47ee61=/^\*\s+as\s+/['test'](_0x223e67);return !_0x1df423&&!_0x47ee61&&!_0x223e67['startsWith']('{')&&(_0x223e67='{\x20'+_0x223e67+'\x20}'),''+_0x8791fe+_0x223e67+_0x3ff39a+_0xf4bd53+_0xa48089;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x3b3d9d){logInfoRaw('Copying\x20'+projectName+'\x20files...');for(const _0x571851 of allFilesToCopy){const _0x16d4bb=folders['cli']+'/'+_0x571851,_0x4e0aa8=_0x291acf['join'](repoRoot,_0x16d4bb),_0x640a40=replaceToolsFolder(_0x571851),_0x22c6b3=_0x291acf['join'](_0x3b3d9d,_0x640a40);if(existsSync(_0x4e0aa8)){const _0x1eb8f7=await promises['stat'](_0x4e0aa8);_0x1eb8f7['isDirectory']()?await copyDirectoryContents(_0x4e0aa8,_0x22c6b3):await copyAndProcessFile(_0x4e0aa8,_0x22c6b3);}else logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x16d4bb);}logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x5a1002){let _0x33a3e1=_0x5a1002;for(const [_0x25ed1e,_0x1932e4]of Object['entries'](toolsFoldersToReplace)){if(_0x33a3e1['startsWith'](_0x25ed1e)&&isWithIndexer(_0x1932e4)){const _0x49b0f5=_0x1932e4;for(const _0x519647 in _0x49b0f5){const _0x4be070=_0x49b0f5[_0x519647];isString(_0x4be070)&&(_0x33a3e1=_0x33a3e1['replace'](_0x519647,_0x4be070));}break;}}return _0x33a3e1;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x424cb4,_0x115dd1,_0x578f91=![]){const _0x1df599=_0x291acf['relative'](repoRoot,_0x424cb4)['replace'](/\\/g,'/'),_0x523f7a=foldersToIgnore['map'](_0x2d7ff4=>_0x2d7ff4['replace'](/\\/g,'/'));if(_0x523f7a['includes'](_0x1df599))return !![];if(_0x578f91){const _0x456015=_0x291acf['relative'](_0x115dd1,_0x424cb4)['replace'](/\\/g,'/'),_0x69533a=_0x456015['split']('/');return _0x523f7a['some'](_0x466ff5=>_0x69533a['some'](_0x12388b=>_0x12388b===_0x466ff5));}return ![];}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x23da90,_0x1dbb75){!existsSync(_0x1dbb75)&&mkdirSync(_0x1dbb75,{'recursive':!![]});try{const _0x5f44a3=await promises['readdir'](_0x23da90,{'withFileTypes':!![]});for(const _0x3fd5b0 of _0x5f44a3){const _0x410006=_0x291acf['join'](_0x23da90,_0x3fd5b0['name']),_0x495d5c=_0x291acf['join'](_0x1dbb75,_0x3fd5b0['name']);!shouldIgnorePath(_0x410006,_0x23da90,_0x3fd5b0['isDirectory']())&&(_0x3fd5b0['isDirectory']()?await copyDirectoryContents(_0x410006,_0x495d5c):await copyAndProcessFile(_0x410006,_0x495d5c));}}catch(_0x2784e7){const _0x54afcc=_0x2784e7 instanceof Error?_0x2784e7['message']:'Unknown\x20error';logStringError('Error\x20reading\x20directory\x20'+_0x23da90+':\x20'+_0x54afcc);throw _0x2784e7;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x57542a,_0x1313ae){const _0x5c5eaf=_0x291acf['dirname'](_0x1313ae);!existsSync(_0x5c5eaf)&&mkdirSync(_0x5c5eaf,{'recursive':!![]});const _0x3a945c=await promises['stat'](_0x57542a);if(_0x3a945c['isDirectory']())await copyDirectoryContents(_0x57542a,_0x1313ae);else {const _0x4664d0=_0x291acf['extname'](_0x57542a)['toLowerCase'](),_0x3c7b60=['.ico','.png','.jpg','.jpeg','.webp','.gif','.svg','.pdf'];if(_0x3c7b60['includes'](_0x4664d0)){await promises['copyFile'](_0x57542a,_0x1313ae);return;}const _0x508e8d=await promises['readFile'](_0x57542a,'utf8'),_0x18e2f1=replaceImports(_0x508e8d);await promises['writeFile'](_0x1313ae,_0x18e2f1,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x2b5757){for(const _0x4ba790 of additionalFoldersToCreate){const _0x14252e=_0x291acf['join'](_0x2b5757,_0x4ba790);!existsSync(_0x14252e)&&(mkdirSync(_0x14252e,{'recursive':!![]}),logInfoRaw('Created\x20folder:\x20'+_0x4ba790));}logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function setupPreCommitHooks(_0xf5632){const _0xeb46e4=_0x291acf['join'](_0xf5632,folders['husky']),_0xa7d083=_0x291acf['join'](_0xeb46e4,files['preCommit']),_0x3b6071=_0x291acf['join'](_0xeb46e4,files['commitMsg']);mkdirSync(_0xeb46e4,{'recursive':!![]}),await promises['writeFile'](_0xa7d083,cliScripts['preCommit'],'utf8'),await promises['writeFile'](_0x3b6071,cliScripts['commitMsg'],'utf8'),runCommand(cliScripts['chmodPreCommit'],_0xf5632),runCommand(cliScripts['chmodCommitMsg'],_0xf5632);}__name(setupPreCommitHooks,'setupPreCommitHooks');async function setupEslintConfig(_0x141137){const _0x299a04=_0x291acf['join'](_0x141137,files['eslintConfigMjs']);existsSync(_0x299a04)&&await promises['rm'](_0x299a04);const _0x1fe309=_0x291acf['join'](_0x141137,files['eslintConfigJs']);await promises['writeFile'](_0x1fe309,cliEslintContent,'utf8');}__name(setupEslintConfig,'setupEslintConfig');async function enableRepoModeExtras(_0x24564b){logInfoRaw('Enabling\x20recommendation\x20mode\x20(-r)...'),runCommand(cliScripts['gitInit'],_0x24564b),runCommand(cliScripts['installDevHuskyTsx'],_0x24564b),runCommand(cliScripts['setLint'],_0x24564b),runCommand(cliScripts['installHusky'],_0x24564b),await setupPreCommitHooks(_0x24564b);}__name(enableRepoModeExtras,'enableRepoModeExtras');async function updateLayoutTitle(_0x230ce6,_0x3d4d34){const _0x4f93af=_0x291acf['join'](_0x230ce6,projectPaths['app']+'/'+files['layout']);if(!existsSync(_0x4f93af))throw createError(files['layout']+'\x20not\x20found\x20at\x20'+_0x4f93af+',\x20cannot\x20update\x20title.');let _0x2f496d=await promises['readFile'](_0x4f93af,'utf8');const _0x4d5865=/"SaaS Kit"/g;if(!_0x4d5865['test'](_0x2f496d))throw createError('SaaS\x20Kit\x20not\x20found\x20in\x20'+files['layout']+',\x20cannot\x20update\x20title.');_0x2f496d=_0x2f496d['replace'](_0x4d5865,'\x22'+_0x3d4d34+'\x22'),await promises['writeFile'](_0x4f93af,_0x2f496d,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle');async function create(_0x3779b0){try{_0x3779b0['length']<0x255a*0x1+0x17ce+-0x3d27&&(logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](0x17a7+-0x194d+-0x1*-0x1a7));const _0x117fa7=_0x3779b0[0x2702*-0x1+0x1393+0x136f],_0x571bae=_0x3779b0['includes']('-r'),_0x856850=_0x291acf['resolve'](process['cwd'](),_0x117fa7);logInfoRaw('\x0aCreating\x20'+projectName+'\x20project\x20\x22'+_0x117fa7+'\x22...\x0a');try{checkTargetFolder(_0x856850),createNextProject(_0x117fa7,_0x856850),await copyProjectFiles(_0x856850),await overridePackageJson(_0x856850),createAdditionalFolders(_0x856850),await createEnvFile(_0x856850),await updateLayoutTitle(_0x856850,_0x117fa7),await setupEslintConfig(_0x856850),_0x571bae&&await enableRepoModeExtras(_0x856850),logInfoRaw('\x0a'+projectName+'\x20project\x20\x22'+_0x117fa7+'\x22\x20is\x20ready!'),logInfoRaw('Next\x20steps:'),logInfoRaw('\x20\x20cd\x20'+_0x117fa7),logInfoRaw('\x20\x20npm\x20run\x20prod'),logInfoRaw('\x20\x20npm\x20start');}catch(_0x465a24){const _0x8e7f74=_0x465a24 instanceof Error?_0x465a24['message']:'Unknown\x20error';logStringError('Error:'),logStringError(_0x8e7f74),existsSync(_0x856850)&&(logInfoRaw('Cleaning\x20up...'),rmSync(_0x856850,{'recursive':!![],'force':!![]})),process['exit'](0x1*0xe2c+-0x501*0x4+-0x3*-0x1f3);}}catch(_0x2a848e){const _0x10ffc5=_0x2a848e instanceof Error?_0x2a848e['message']:'Unknown\x20error';logStringError('Unhandled\x20error:'),logStringError(_0x10ffc5),process['exit'](-0x1ca6+-0x6c8+0xc1*0x2f);}}__name(create,'create');
|
|
19
19
|
|
|
20
20
|
export { create };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var projectPaths = require('../../../base-repo/app-constants/project-paths.cjs.js');
|
|
5
5
|
|
|
6
|
-
const filesToCopy=['',''+projectPaths.folders['git']];const rootFilesToCopy=['.gitignore','postcss.config.mjs','server.ts'];const appFilesToCopy=[projectPaths.clientPaths['styles'],projectPaths.projectPaths['app']+'/favicon.ico',projectPaths.projectPaths['app']+'/globals.css',projectPaths.projectPaths['app']+'/layout.tsx',projectPaths.projectPaths['app']+'/page.tsx'];const apiRoutesToCopy=[projectPaths.projectPaths['apiV1']+'/searchable-resources/route.ts',projectPaths.projectPaths['apiV1']+'/searchresult/route.ts',projectPaths.projectPaths['apiV1']+'/workspace/change/route.ts',projectPaths.projectPaths['apiV1']+'/visible-workspace/route.ts',projectPaths.projectPaths['apiV1']+'/userpermission/route.ts',projectPaths.projectPaths['apiV1']+'/
|
|
6
|
+
const filesToCopy=['',''+projectPaths.folders['git']];const rootFilesToCopy=['.gitignore','postcss.config.mjs','server.ts'];const appFilesToCopy=[projectPaths.clientPaths['styles'],projectPaths.projectPaths['app']+'/favicon.ico',projectPaths.projectPaths['app']+'/globals.css',projectPaths.projectPaths['app']+'/layout.tsx',projectPaths.projectPaths['app']+'/page.tsx'];const apiRoutesToCopy=[projectPaths.projectPaths['apiV1']+'/searchable-resources/route.ts',projectPaths.projectPaths['apiV1']+'/searchresult/route.ts',projectPaths.projectPaths['apiV1']+'/workspace/change/route.ts',projectPaths.projectPaths['apiV1']+'/visible-workspace/route.ts',projectPaths.projectPaths['apiV1']+'/userpermission/route.ts',projectPaths.projectPaths['apiV1']+'/userfeature/isenabled/route.ts',projectPaths.projectPaths['apiV1']+'/uimetas/route.ts',projectPaths.projectPaths['apiV1']+'/uimeta/route.ts',projectPaths.projectPaths['apiV1']+'/subscription/update/route.ts',projectPaths.projectPaths['apiV1']+'/subscription/create/route.ts',projectPaths.projectPaths['apiV1']+'/subscription/cancel/route.ts',projectPaths.projectPaths['apiV1']+'/sign-up/route.ts',projectPaths.projectPaths['apiV1']+'/sign-out/route.ts',projectPaths.projectPaths['apiV1']+'/sign-in/route.ts',projectPaths.projectPaths['apiV1']+'/preload/route.ts',projectPaths.projectPaths['apiV1']+'/payment/route.ts',projectPaths.projectPaths['apiV1']+'/payment/verify-success/route.ts',projectPaths.projectPaths['apiV1']+'/payment/verify-fail/route.ts',projectPaths.projectPaths['apiV1']+'/payment/method/route.ts',projectPaths.projectPaths['apiV1']+'/password/resetpassword/route.ts',projectPaths.projectPaths['apiV1']+'/password/forgotpassword/route.ts',projectPaths.projectPaths['apiV1']+'/otheruser/route.ts',projectPaths.projectPaths['apiV1']+'/otheruser/[id]/route.ts',projectPaths.projectPaths['apiV1']+'/log/route.ts',projectPaths.projectPaths['apiV1']+'/blob/route.ts',projectPaths.projectPaths['apiV1']+'/[resourceName]/route.ts',projectPaths.projectPaths['apiV1']+'/[resourceName]/upsert/route.ts',projectPaths.projectPaths['apiV1']+'/[resourceName]/[id]/route.ts'];const allFilesToCopy=[...filesToCopy,...rootFilesToCopy,...appFilesToCopy,...apiRoutesToCopy];
|
|
7
7
|
|
|
8
8
|
exports.allFilesToCopy = allFilesToCopy;
|
|
9
9
|
exports.apiRoutesToCopy = apiRoutesToCopy;
|