@fernir2/saas-kit-cli 0.1.36 → 0.1.37
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/cli/src/app/layout.tsx +4 -4
- 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/infra/toolbox-env-setting-keys.cjs.js +1 -1
- package/fd-toolbox/infra/toolbox-env-setting-keys.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 -3
- package/fd-toolbox/routing/paths.js +1 -3
- 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 +1 -1
- package/fd-toolbox/types/ensure-type.js +1 -1
- 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 +3 -3
- package/package.json +2 -3
|
@@ -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=(_0x381f10,_0x552758)=>__defProp(_0x381f10,'name',{'value':_0x552758,'configurable':!![]});function shortenWithEllipsis(_0x5a88a0,_0x437757=stringsConstants.shortTextLength){if(valueCheckingFunctions.isNullOrUndefined(_0x5a88a0))return '';return _0x5a88a0['length']<0xaa8*0x3+-0x2237+0x241?_0x5a88a0['length']<=_0x437757?_0x5a88a0:_0x5a88a0['substring'](0xa8*-0x33+-0x382*0x6+0x3684,_0x437757):_0x5a88a0['length']<=_0x437757?_0x5a88a0:_0x5a88a0['substring'](0x1dda+-0x1fc2+0x7a*0x4,_0x437757-(0x1*0x1dff+0x1b89+-0x3987))+stringsConstants.ellipsis;}__name(shortenWithEllipsis,'shortenWithEllipsis');function trimCharacter(_0x5bdf07,_0x3c94f3){let _0x2398ea=_0x5bdf07;if(Array['isArray'](_0x3c94f3))for(let _0x560314 of _0x3c94f3){(_0x5bdf07['startsWith'](_0x560314)||_0x5bdf07['endsWith'](_0x560314))&&(_0x2398ea=trimOneCharacter(_0x5bdf07,_0x560314));}else _0x2398ea=trimOneCharacter(_0x5bdf07,_0x3c94f3);return _0x2398ea;}__name(trimCharacter,'trimCharacter');function trimOneCharacter(_0x570359,_0x5bfc85){let _0x4ce84c=_0x570359;return _0x4ce84c?.['startsWith'](_0x5bfc85)&&(_0x4ce84c=_0x4ce84c['substring'](0xf08+0x2150+-0x3057)),_0x4ce84c?.['endsWith'](_0x5bfc85)&&(_0x4ce84c=_0x4ce84c['substring'](-0x1f45+-0x4e+0x89*0x3b,_0x4ce84c['lastIndexOf'](_0x5bfc85))),_0x4ce84c;}__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=(_0x381f10,_0x552758)=>__defProp(_0x381f10,'name',{'value':_0x552758,'configurable':!![]});function shortenWithEllipsis(_0x5a88a0,_0x437757=shortTextLength){if(isNullOrUndefined(_0x5a88a0))return '';return _0x5a88a0['length']<0xaa8*0x3+-0x2237+0x241?_0x5a88a0['length']<=_0x437757?_0x5a88a0:_0x5a88a0['substring'](0xa8*-0x33+-0x382*0x6+0x3684,_0x437757):_0x5a88a0['length']<=_0x437757?_0x5a88a0:_0x5a88a0['substring'](0x1dda+-0x1fc2+0x7a*0x4,_0x437757-(0x1*0x1dff+0x1b89+-0x3987))+ellipsis;}__name(shortenWithEllipsis,'shortenWithEllipsis');function trimCharacter(_0x5bdf07,_0x3c94f3){let _0x2398ea=_0x5bdf07;if(Array['isArray'](_0x3c94f3))for(let _0x560314 of _0x3c94f3){(_0x5bdf07['startsWith'](_0x560314)||_0x5bdf07['endsWith'](_0x560314))&&(_0x2398ea=trimOneCharacter(_0x5bdf07,_0x560314));}else _0x2398ea=trimOneCharacter(_0x5bdf07,_0x3c94f3);return _0x2398ea;}__name(trimCharacter,'trimCharacter');function trimOneCharacter(_0x570359,_0x5bfc85){let _0x4ce84c=_0x570359;return _0x4ce84c?.['startsWith'](_0x5bfc85)&&(_0x4ce84c=_0x4ce84c['substring'](0xf08+0x2150+-0x3057)),_0x4ce84c?.['endsWith'](_0x5bfc85)&&(_0x4ce84c=_0x4ce84c['substring'](-0x1f45+-0x4e+0x89*0x3b,_0x4ce84c['lastIndexOf'](_0x5bfc85))),_0x4ce84c;}__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=(_0x27a31b,_0x418eb4)=>__defProp(_0x27a31b,'name',{'value':_0x418eb4,'configurable':!![]});function ensureString(_0x371ad8){return isString(_0x371ad8)?_0x371ad8:String(_0x371ad8);}__name(ensureString,'ensureString');function ensureNumber(_0x3ce0df){if(isNumber(_0x3ce0df))return _0x3ce0df;else {if(isString(_0x3ce0df))return parseFloat(_0x3ce0df);else return NaN;}}__name(ensureNumber,'ensureNumber');function ensureObjectArray(_0x3ba1fa){if(Array['isArray'](_0x3ba1fa)&&_0x3ba1fa['length']>0x104e+-0x23a4+0x1356&&isObject(_0x3ba1fa[0x1d18+0x44c+-0x10b2*0x2])){const _0x316e07=[];for(const _0x4bc5d4 of _0x3ba1fa){if(isObject(_0x4bc5d4))_0x316e07['push'](_0x4bc5d4);}return _0x316e07;}return [];}__name(ensureObjectArray,'ensureObjectArray');function ensureWithIndexer(_0x5a9c17){let _0xd70201={};return isWithIndexer(_0x5a9c17)&&(_0xd70201=_0x5a9c17),_0xd70201;}__name(ensureWithIndexer,'ensureWithIndexer');function ensureWithIndexerArray(_0x273f2f){if(Array['isArray'](_0x273f2f))return _0x273f2f['filter'](isWithIndexer);if(isWithIndexer(_0x273f2f))return [_0x273f2f];return [];}__name(ensureWithIndexerArray,'ensureWithIndexerArray');const types={'object':'object','string':'string','number':'number'};const stripeConflictResponseProperties={'detail':'detail'};function isObject(_0x2c0799){return typeof _0x2c0799===types['object']&&_0x2c0799!==null;}__name(isObject,'isObject');function isString(_0x54434c){return typeof _0x54434c===types['string'];}__name(isString,'isString');function isNumber(_0x147071){return typeof _0x147071===types['number'];}__name(isNumber,'isNumber');function isError(_0x5e5857){return typeof _0x5e5857===types['object'];}__name(isError,'isError');function isKeyof(_0x23e38d,_0xb9b670){return isObject(_0x23e38d)&&_0xb9b670 in _0x23e38d;}__name(isKeyof,'isKeyof');function isWithIndexer(_0x2b8142){return isObject(_0x2b8142)&&!Array['isArray'](_0x2b8142);}__name(isWithIndexer,'isWithIndexer');function isArray(_0x494ac0){return isObject(_0x494ac0)&&Array['isArray'](_0x494ac0);}__name(isArray,'isArray');function isErrorResponseWithDetail(_0x3c47c9){return isObject(_0x3c47c9)&&stripeConflictResponseProperties['detail']in _0x3c47c9;}__name(isErrorResponseWithDetail,'isErrorResponseWithDetail');function isBoolean(_0x4073ba){return typeof _0x4073ba==='boolean';}__name(isBoolean,'isBoolean');function isDate(_0x45ffdc){return _0x45ffdc instanceof Date;}__name(isDate,'isDate');
|
|
5
5
|
|
|
6
6
|
exports.ensureNumber = ensureNumber;
|
|
7
7
|
exports.ensureObjectArray = ensureObjectArray;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
2
|
+
var __defProp=Object['defineProperty'],__name=(_0x27a31b,_0x418eb4)=>__defProp(_0x27a31b,'name',{'value':_0x418eb4,'configurable':!![]});function ensureString(_0x371ad8){return isString(_0x371ad8)?_0x371ad8:String(_0x371ad8);}__name(ensureString,'ensureString');function ensureNumber(_0x3ce0df){if(isNumber(_0x3ce0df))return _0x3ce0df;else {if(isString(_0x3ce0df))return parseFloat(_0x3ce0df);else return NaN;}}__name(ensureNumber,'ensureNumber');function ensureObjectArray(_0x3ba1fa){if(Array['isArray'](_0x3ba1fa)&&_0x3ba1fa['length']>0x104e+-0x23a4+0x1356&&isObject(_0x3ba1fa[0x1d18+0x44c+-0x10b2*0x2])){const _0x316e07=[];for(const _0x4bc5d4 of _0x3ba1fa){if(isObject(_0x4bc5d4))_0x316e07['push'](_0x4bc5d4);}return _0x316e07;}return [];}__name(ensureObjectArray,'ensureObjectArray');function ensureWithIndexer(_0x5a9c17){let _0xd70201={};return isWithIndexer(_0x5a9c17)&&(_0xd70201=_0x5a9c17),_0xd70201;}__name(ensureWithIndexer,'ensureWithIndexer');function ensureWithIndexerArray(_0x273f2f){if(Array['isArray'](_0x273f2f))return _0x273f2f['filter'](isWithIndexer);if(isWithIndexer(_0x273f2f))return [_0x273f2f];return [];}__name(ensureWithIndexerArray,'ensureWithIndexerArray');const types={'object':'object','string':'string','number':'number'};const stripeConflictResponseProperties={'detail':'detail'};function isObject(_0x2c0799){return typeof _0x2c0799===types['object']&&_0x2c0799!==null;}__name(isObject,'isObject');function isString(_0x54434c){return typeof _0x54434c===types['string'];}__name(isString,'isString');function isNumber(_0x147071){return typeof _0x147071===types['number'];}__name(isNumber,'isNumber');function isError(_0x5e5857){return typeof _0x5e5857===types['object'];}__name(isError,'isError');function isKeyof(_0x23e38d,_0xb9b670){return isObject(_0x23e38d)&&_0xb9b670 in _0x23e38d;}__name(isKeyof,'isKeyof');function isWithIndexer(_0x2b8142){return isObject(_0x2b8142)&&!Array['isArray'](_0x2b8142);}__name(isWithIndexer,'isWithIndexer');function isArray(_0x494ac0){return isObject(_0x494ac0)&&Array['isArray'](_0x494ac0);}__name(isArray,'isArray');function isErrorResponseWithDetail(_0x3c47c9){return isObject(_0x3c47c9)&&stripeConflictResponseProperties['detail']in _0x3c47c9;}__name(isErrorResponseWithDetail,'isErrorResponseWithDetail');function isBoolean(_0x4073ba){return typeof _0x4073ba==='boolean';}__name(isBoolean,'isBoolean');function isDate(_0x45ffdc){return _0x45ffdc instanceof Date;}__name(isDate,'isDate');
|
|
3
3
|
|
|
4
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=(_0x9f8462,_0x2ca881)=>__defProp(_0x9f8462,'name',{'value':_0x2ca881,'configurable':!![]});const nameOf=__name(_0xc26183=>_0xc26183['toString'](),'nameOf');const deepNameOf=__name((_0x184142,_0x836fd3)=>_0x184142+'.'+_0x836fd3,'deepNameOf');const nameOfWithType=__name(_0xdd1ea5=>_0xdd1ea5,'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=(_0x9f8462,_0x2ca881)=>__defProp(_0x9f8462,'name',{'value':_0x2ca881,'configurable':!![]});const nameOf=__name(_0xc26183=>_0xc26183['toString'](),'nameOf');const deepNameOf=__name((_0x184142,_0x836fd3)=>_0x184142+'.'+_0x836fd3,'deepNameOf');const nameOfWithType=__name(_0xdd1ea5=>_0xdd1ea5,'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=(_0x2c85d2,_0x7b702b)=>__defProp(_0x2c85d2,'name',{'value':_0x7b702b,'configurable':!![]});const withIdProps={'id':nameOf.nameOf('id')};function isResourceWithId(_0x291e58){return _0x291e58&&typeof _0x291e58==='object'&&typeof _0x291e58['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=(_0x2c85d2,_0x7b702b)=>__defProp(_0x2c85d2,'name',{'value':_0x7b702b,'configurable':!![]});const withIdProps={'id':nameOf('id')};function isResourceWithId(_0x291e58){return _0x291e58&&typeof _0x291e58==='object'&&typeof _0x291e58['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']((_0x435028,_0x133a7a)=>{const _0x504609=[_0x435028];if(_0x133a7a['repo'])_0x504609['push']('-r');create.create(_0x504609);}),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']((_0x435028,_0x133a7a)=>{const _0x504609=[_0x435028];if(_0x133a7a['repo'])_0x504609['push']('-r');create(_0x504609);}),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 _0x1aa6b6 = require('path');
|
|
8
|
+
var _0x41fbd6 = 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 _0x1aa6b6__namespace = /*#__PURE__*/_interopNamespaceDefault(_0x1aa6b6);
|
|
39
39
|
|
|
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');
|
|
40
|
+
var __defProp=Object['defineProperty'],__name=(_0x21468c,_0x37691d)=>__defProp(_0x21468c,'name',{'value':_0x37691d,'configurable':!![]});const requiredNodeVersion='v20.0.0';process['version']<requiredNodeVersion&&(loggers.logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](0x1c5a+0x20d2+0x1*-0x3d2b));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=_0x1aa6b6__namespace['dirname'](filename),repoRoot=_0x1aa6b6__namespace['resolve'](binDir,sourceDir),envLocalPath=_0x1aa6b6__namespace['join'](binDir,''+sourceDir+projectPaths.folders['cli']+'/'+projectPaths.files['envExample']),envTemplate=_0x41fbd6['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(_0x278bc1,_0x21dbad){loggers.logInfoRaw('Executing:\x20'+_0x278bc1);try{child_process.execSync(_0x278bc1,{'stdio':'inherit','cwd':_0x21dbad??process['cwd']()});}catch(_0x349a38){const _0x36e922=_0x349a38 instanceof Error?_0x349a38['message']:'Unknown\x20error';loggers.logStringError('Error\x20executing:\x20'+_0x278bc1),loggers.logStringError(_0x36e922),process['exit'](0x224d*0x1+0xc9*-0x31+0x42d);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x431f06){fs.existsSync(_0x431f06)&&(loggers.logStringError('Error:\x20Folder\x20\x22'+_0x1aa6b6__namespace['basename'](_0x431f06)+'\x22\x20already\x20exists.'),process['exit'](-0x6*0x431+-0x6d9+-0x4*-0x800));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x3bc958=_0x1aa6b6__namespace['resolve'](repoRoot,projectPaths.files['packageJson']),_0x5e7c1e=JSON['parse'](_0x41fbd6['readFileSync'](_0x3bc958,'utf-8'));return String(_0x5e7c1e['devDependencies']?.['next']??_0x5e7c1e['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x166814,_0x46f83a){loggers.logInfoRaw('Creating\x20Next.js\x20project...');const _0x325f03=getCreateNextAppVersion(),_0x263720=['npx\x20--yes\x20create-next-app@'+_0x325f03+'\x20\x22'+_0x166814+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git','--react-compiler']['join']('\x20');runCommand(_0x263720,_0x1aa6b6__namespace['dirname'](_0x46f83a)),loggers.logInfoRaw('Next.js\x20project\x20created!');const _0xa441dd=_0x1aa6b6__namespace['join'](_0x46f83a,'next.config.ts');_0x41fbd6['existsSync'](_0xa441dd)&&(_0x41fbd6['rmSync'](_0xa441dd),loggers.logInfoRaw('Removed\x20default\x20next.config.ts'));}__name(createNextProject,'createNextProject');async function createEnvFile(_0x2dd8f7){loggers.logInfoRaw('Creating\x20'+projectPaths.files['env']+'\x20file\x20with\x20default\x20values...');const _0x30f0b0=_0x1aa6b6__namespace['join'](_0x2dd8f7,projectPaths.files['env']);try{await fs.promises['writeFile'](_0x30f0b0,envTemplate,'utf8'),loggers.logInfoRaw(projectPaths.files['env']+'\x20file\x20created\x20with\x20values!');}catch(_0x43ca1b){const _0x119b3a=_0x43ca1b instanceof Error?_0x43ca1b['message']:'Unknown\x20error';loggers.logStringError('Error\x20creating\x20'+projectPaths.files['env']+'\x20file:'),loggers.logStringError(_0x119b3a);throw _0x43ca1b;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x5021e1){const _0x30a11d=_0x1aa6b6__namespace['join'](_0x5021e1,projectPaths.files['packageJson']),_0x939518=_0x1aa6b6__namespace['join'](repoRoot,projectPaths.folders['cli']+'/'+projectPaths.files['packageTemplate']);try{const _0x1e0aff=JSON['parse'](await fs.promises['readFile'](_0x30a11d,'utf8')),_0xb6793d=_0x1e0aff['name'],_0x511ba1=JSON['parse'](await fs.promises['readFile'](_0x939518,'utf8')),_0x14eb6c={..._0x511ba1,'name':_0xb6793d};await fs.promises['writeFile'](_0x30a11d,JSON['stringify'](_0x14eb6c,null,0x25*0xd7+-0xb4a+0x3d*-0x53)+'\x0a','utf8');}catch(_0x38b540){const _0x20ab3d=_0x38b540 instanceof Error?_0x38b540['message']:'Unknown\x20error';loggers.logStringError('Error\x20overriding\x20'+projectPaths.files['packageJson']+':'),loggers.logStringError(_0x20ab3d);throw _0x38b540;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x359a82){const _0x2b48fb=/(import\s+)([^'"]+)(\s+from\s+["'])([^"']+)(["'])/g;return _0x359a82['replace'](_0x2b48fb,(_0x3bc804,_0x818e8f,_0x9a9bdd,_0x281c8a,_0x242d27,_0x309071)=>{if(!_0x242d27['startsWith'](aliases.aliasSymbols['atSign'])||_0x242d27['startsWith'](packages.npmPackages['saasKit']))return _0x3bc804;let _0xeabf6e;_0x242d27['startsWith'](aliases.aliasSymbols['atSign']+projectPaths.folders['server'])||_0x242d27['includes'](''+projectPaths.nonRootProjectPaths['server'])?_0xeabf6e=packages.npmPackages['saasKitServer']:_0xeabf6e=packages.npmPackages['saasKit'];let _0x4d669e=_0x9a9bdd['trim']();const _0x36de59=/^type\b/['test'](_0x4d669e),_0x481343=/^\*\s+as\s+/['test'](_0x4d669e);return !_0x36de59&&!_0x481343&&!_0x4d669e['startsWith']('{')&&(_0x4d669e='{\x20'+_0x4d669e+'\x20}'),''+_0x818e8f+_0x4d669e+_0x281c8a+_0xeabf6e+_0x309071;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x338f70){loggers.logInfoRaw('Copying\x20'+constants.projectName+'\x20files...');for(const _0x4f1ecb of path.allFilesToCopy){const _0x191773=projectPaths.folders['cli']+'/'+_0x4f1ecb,_0x374858=_0x1aa6b6__namespace['join'](repoRoot,_0x191773),_0x47f44f=replaceToolsFolder(_0x4f1ecb),_0x5c544e=_0x1aa6b6__namespace['join'](_0x338f70,_0x47f44f);if(fs.existsSync(_0x374858)){const _0xc41733=await fs.promises['stat'](_0x374858);_0xc41733['isDirectory']()?await copyDirectoryContents(_0x374858,_0x5c544e):await copyAndProcessFile(_0x374858,_0x5c544e);}else loggers.logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x191773);}loggers.logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x78e40d){let _0x184456=_0x78e40d;for(const [_0xeedbb2,_0x13fd8a]of Object['entries'](createAppConstants.toolsFoldersToReplace)){if(_0x184456['startsWith'](_0xeedbb2)&&ensureType.isWithIndexer(_0x13fd8a)){const _0x4165ab=_0x13fd8a;for(const _0x2ca6a8 in _0x4165ab){const _0x924dad=_0x4165ab[_0x2ca6a8];ensureType.isString(_0x924dad)&&(_0x184456=_0x184456['replace'](_0x2ca6a8,_0x924dad));}break;}}return _0x184456;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x25cc0b,_0x1c11e1,_0x480b0e=![]){const _0x1eec06=_0x1aa6b6__namespace['relative'](repoRoot,_0x25cc0b)['replace'](/\\/g,'/'),_0x3fe5f9=foldersToIgnore['map'](_0x1cf4d6=>_0x1cf4d6['replace'](/\\/g,'/'));if(_0x3fe5f9['includes'](_0x1eec06))return !![];if(_0x480b0e){const _0x294d78=_0x1aa6b6__namespace['relative'](_0x1c11e1,_0x25cc0b)['replace'](/\\/g,'/'),_0x5535ab=_0x294d78['split']('/');return _0x3fe5f9['some'](_0x45ea6d=>_0x5535ab['some'](_0x118365=>_0x118365===_0x45ea6d));}return ![];}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x4ebffa,_0x3b411a){!fs.existsSync(_0x3b411a)&&fs.mkdirSync(_0x3b411a,{'recursive':!![]});try{const _0x6a8efa=await fs.promises['readdir'](_0x4ebffa,{'withFileTypes':!![]});for(const _0x14d42d of _0x6a8efa){const _0x39f53f=_0x1aa6b6__namespace['join'](_0x4ebffa,_0x14d42d['name']),_0x5f2246=_0x1aa6b6__namespace['join'](_0x3b411a,_0x14d42d['name']);!shouldIgnorePath(_0x39f53f,_0x4ebffa,_0x14d42d['isDirectory']())&&(_0x14d42d['isDirectory']()?await copyDirectoryContents(_0x39f53f,_0x5f2246):await copyAndProcessFile(_0x39f53f,_0x5f2246));}}catch(_0x514b57){const _0x4a4a6f=_0x514b57 instanceof Error?_0x514b57['message']:'Unknown\x20error';loggers.logStringError('Error\x20reading\x20directory\x20'+_0x4ebffa+':\x20'+_0x4a4a6f);throw _0x514b57;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x3beba5,_0x227e1f){const _0x1a242a=_0x1aa6b6__namespace['dirname'](_0x227e1f);!fs.existsSync(_0x1a242a)&&fs.mkdirSync(_0x1a242a,{'recursive':!![]});const _0x474f04=await fs.promises['stat'](_0x3beba5);if(_0x474f04['isDirectory']())await copyDirectoryContents(_0x3beba5,_0x227e1f);else {const _0x2fd189=_0x1aa6b6__namespace['extname'](_0x3beba5)['toLowerCase'](),_0x354504=['.ico','.png','.jpg','.jpeg','.webp','.gif','.svg','.pdf'];if(_0x354504['includes'](_0x2fd189)){await fs.promises['copyFile'](_0x3beba5,_0x227e1f);return;}const _0x3cae32=await fs.promises['readFile'](_0x3beba5,'utf8'),_0x2ff221=replaceImports(_0x3cae32);await fs.promises['writeFile'](_0x227e1f,_0x2ff221,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0xea7641){for(const _0x2cc837 of createAppConstants.additionalFoldersToCreate){const _0x3492ea=_0x1aa6b6__namespace['join'](_0xea7641,_0x2cc837);!fs.existsSync(_0x3492ea)&&(fs.mkdirSync(_0x3492ea,{'recursive':!![]}),loggers.logInfoRaw('Created\x20folder:\x20'+_0x2cc837));}loggers.logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function setupPreCommitHooks(_0x106140){const _0x5dfd6e=_0x1aa6b6__namespace['join'](_0x106140,projectPaths.folders['husky']),_0x3a8501=_0x1aa6b6__namespace['join'](_0x5dfd6e,projectPaths.files['preCommit']),_0x3dbaf5=_0x1aa6b6__namespace['join'](_0x5dfd6e,projectPaths.files['commitMsg']);fs.mkdirSync(_0x5dfd6e,{'recursive':!![]}),await fs.promises['writeFile'](_0x3a8501,cliContents.cliScripts['preCommit'],'utf8'),await fs.promises['writeFile'](_0x3dbaf5,cliContents.cliScripts['commitMsg'],'utf8'),runCommand(cliContents.cliScripts['chmodPreCommit'],_0x106140),runCommand(cliContents.cliScripts['chmodCommitMsg'],_0x106140);}__name(setupPreCommitHooks,'setupPreCommitHooks');async function setupEslintConfig(_0x3347d2){const _0x1353cd=_0x1aa6b6__namespace['join'](_0x3347d2,projectPaths.files['eslintConfigMjs']);fs.existsSync(_0x1353cd)&&await fs.promises['rm'](_0x1353cd);const _0x2bc0f4=_0x1aa6b6__namespace['join'](_0x3347d2,projectPaths.files['eslintConfigJs']);await fs.promises['writeFile'](_0x2bc0f4,cliContents.cliEslintContent,'utf8');}__name(setupEslintConfig,'setupEslintConfig');async function enableRepoModeExtras(_0x3ab588){loggers.logInfoRaw('Enabling\x20recommendation\x20mode\x20(-r)...'),runCommand(cliContents.cliScripts['gitInit'],_0x3ab588),runCommand(cliContents.cliScripts['installDevHuskyTsx'],_0x3ab588),runCommand(cliContents.cliScripts['setLint'],_0x3ab588),runCommand(cliContents.cliScripts['installHusky'],_0x3ab588),await setupPreCommitHooks(_0x3ab588);}__name(enableRepoModeExtras,'enableRepoModeExtras');async function updateLayoutTitle(_0x3aa01f,_0x4ca4fa){const _0x87a866=_0x1aa6b6__namespace['join'](_0x3aa01f,projectPaths.projectPaths['app']+'/'+projectPaths.files['layout']);if(!fs.existsSync(_0x87a866))throw errors.createError(projectPaths.files['layout']+'\x20not\x20found\x20at\x20'+_0x87a866+',\x20cannot\x20update\x20title.');let _0x305dcd=await fs.promises['readFile'](_0x87a866,'utf8');const _0x30e313=/"SaaS Kit"/g;if(!_0x30e313['test'](_0x305dcd))throw errors.createError('SaaS\x20Kit\x20not\x20found\x20in\x20'+projectPaths.files['layout']+',\x20cannot\x20update\x20title.');_0x305dcd=_0x305dcd['replace'](_0x30e313,'\x22'+_0x4ca4fa+'\x22'),await fs.promises['writeFile'](_0x87a866,_0x305dcd,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle');async function create(_0x58bf12){try{_0x58bf12['length']<0x26d0+0x142a+-0x3af9*0x1&&(loggers.logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](0x33*-0x27+0x4c0*0x4+0x1*-0xb3a));const _0x2a606f=_0x58bf12[-0x1974+-0x137c+0x2cf0],_0x5c4aad=_0x58bf12['includes']('-r'),_0x20a0a6=_0x1aa6b6__namespace['resolve'](process['cwd'](),_0x2a606f);loggers.logInfoRaw('\x0aCreating\x20'+constants.projectName+'\x20project\x20\x22'+_0x2a606f+'\x22...\x0a');try{checkTargetFolder(_0x20a0a6),createNextProject(_0x2a606f,_0x20a0a6),await copyProjectFiles(_0x20a0a6),await overridePackageJson(_0x20a0a6),createAdditionalFolders(_0x20a0a6),await createEnvFile(_0x20a0a6),await updateLayoutTitle(_0x20a0a6,_0x2a606f),await setupEslintConfig(_0x20a0a6),_0x5c4aad&&await enableRepoModeExtras(_0x20a0a6),loggers.logInfoRaw('\x0a'+constants.projectName+'\x20project\x20\x22'+_0x2a606f+'\x22\x20is\x20ready!'),loggers.logInfoRaw('Next\x20steps:'),loggers.logInfoRaw('\x20\x20cd\x20'+_0x2a606f),loggers.logInfoRaw('\x20\x20npm\x20run\x20prod'),loggers.logInfoRaw('\x20\x20npm\x20start');}catch(_0x4aa1b5){const _0x2ebde0=_0x4aa1b5 instanceof Error?_0x4aa1b5['message']:'Unknown\x20error';loggers.logStringError('Error:'),loggers.logStringError(_0x2ebde0),fs.existsSync(_0x20a0a6)&&(loggers.logInfoRaw('Cleaning\x20up...'),fs.rmSync(_0x20a0a6,{'recursive':!![],'force':!![]})),process['exit'](-0x13c5+0x1896*-0x1+0x14e*0x22);}}catch(_0x33ca2e){const _0x35af1c=_0x33ca2e instanceof Error?_0x33ca2e['message']:'Unknown\x20error';loggers.logStringError('Unhandled\x20error:'),loggers.logStringError(_0x35af1c),process['exit'](-0x135a+0x1+0x135a);}}__name(create,'create');
|
|
41
41
|
|
|
42
42
|
exports.create = create;
|
|
@@ -2,8 +2,8 @@
|
|
|
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 _0x1aa6b6 from 'path';
|
|
6
|
+
import _0x41fbd6 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';
|
|
@@ -15,6 +15,6 @@ 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=(_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');
|
|
18
|
+
var __defProp=Object['defineProperty'],__name=(_0x21468c,_0x37691d)=>__defProp(_0x21468c,'name',{'value':_0x37691d,'configurable':!![]});const requiredNodeVersion='v20.0.0';process['version']<requiredNodeVersion&&(logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](0x1c5a+0x20d2+0x1*-0x3d2b));const filename=fileURLToPath(import.meta.url),sourceDir='../../../../',binDir=_0x1aa6b6['dirname'](filename),repoRoot=_0x1aa6b6['resolve'](binDir,sourceDir),envLocalPath=_0x1aa6b6['join'](binDir,''+sourceDir+folders['cli']+'/'+files['envExample']),envTemplate=_0x41fbd6['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(_0x278bc1,_0x21dbad){logInfoRaw('Executing:\x20'+_0x278bc1);try{execSync(_0x278bc1,{'stdio':'inherit','cwd':_0x21dbad??process['cwd']()});}catch(_0x349a38){const _0x36e922=_0x349a38 instanceof Error?_0x349a38['message']:'Unknown\x20error';logStringError('Error\x20executing:\x20'+_0x278bc1),logStringError(_0x36e922),process['exit'](0x224d*0x1+0xc9*-0x31+0x42d);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x431f06){existsSync(_0x431f06)&&(logStringError('Error:\x20Folder\x20\x22'+_0x1aa6b6['basename'](_0x431f06)+'\x22\x20already\x20exists.'),process['exit'](-0x6*0x431+-0x6d9+-0x4*-0x800));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x3bc958=_0x1aa6b6['resolve'](repoRoot,files['packageJson']),_0x5e7c1e=JSON['parse'](_0x41fbd6['readFileSync'](_0x3bc958,'utf-8'));return String(_0x5e7c1e['devDependencies']?.['next']??_0x5e7c1e['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x166814,_0x46f83a){logInfoRaw('Creating\x20Next.js\x20project...');const _0x325f03=getCreateNextAppVersion(),_0x263720=['npx\x20--yes\x20create-next-app@'+_0x325f03+'\x20\x22'+_0x166814+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git','--react-compiler']['join']('\x20');runCommand(_0x263720,_0x1aa6b6['dirname'](_0x46f83a)),logInfoRaw('Next.js\x20project\x20created!');const _0xa441dd=_0x1aa6b6['join'](_0x46f83a,'next.config.ts');_0x41fbd6['existsSync'](_0xa441dd)&&(_0x41fbd6['rmSync'](_0xa441dd),logInfoRaw('Removed\x20default\x20next.config.ts'));}__name(createNextProject,'createNextProject');async function createEnvFile(_0x2dd8f7){logInfoRaw('Creating\x20'+files['env']+'\x20file\x20with\x20default\x20values...');const _0x30f0b0=_0x1aa6b6['join'](_0x2dd8f7,files['env']);try{await promises['writeFile'](_0x30f0b0,envTemplate,'utf8'),logInfoRaw(files['env']+'\x20file\x20created\x20with\x20values!');}catch(_0x43ca1b){const _0x119b3a=_0x43ca1b instanceof Error?_0x43ca1b['message']:'Unknown\x20error';logStringError('Error\x20creating\x20'+files['env']+'\x20file:'),logStringError(_0x119b3a);throw _0x43ca1b;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x5021e1){const _0x30a11d=_0x1aa6b6['join'](_0x5021e1,files['packageJson']),_0x939518=_0x1aa6b6['join'](repoRoot,folders['cli']+'/'+files['packageTemplate']);try{const _0x1e0aff=JSON['parse'](await promises['readFile'](_0x30a11d,'utf8')),_0xb6793d=_0x1e0aff['name'],_0x511ba1=JSON['parse'](await promises['readFile'](_0x939518,'utf8')),_0x14eb6c={..._0x511ba1,'name':_0xb6793d};await promises['writeFile'](_0x30a11d,JSON['stringify'](_0x14eb6c,null,0x25*0xd7+-0xb4a+0x3d*-0x53)+'\x0a','utf8');}catch(_0x38b540){const _0x20ab3d=_0x38b540 instanceof Error?_0x38b540['message']:'Unknown\x20error';logStringError('Error\x20overriding\x20'+files['packageJson']+':'),logStringError(_0x20ab3d);throw _0x38b540;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x359a82){const _0x2b48fb=/(import\s+)([^'"]+)(\s+from\s+["'])([^"']+)(["'])/g;return _0x359a82['replace'](_0x2b48fb,(_0x3bc804,_0x818e8f,_0x9a9bdd,_0x281c8a,_0x242d27,_0x309071)=>{if(!_0x242d27['startsWith'](aliasSymbols['atSign'])||_0x242d27['startsWith'](npmPackages['saasKit']))return _0x3bc804;let _0xeabf6e;_0x242d27['startsWith'](aliasSymbols['atSign']+folders['server'])||_0x242d27['includes'](''+nonRootProjectPaths['server'])?_0xeabf6e=npmPackages['saasKitServer']:_0xeabf6e=npmPackages['saasKit'];let _0x4d669e=_0x9a9bdd['trim']();const _0x36de59=/^type\b/['test'](_0x4d669e),_0x481343=/^\*\s+as\s+/['test'](_0x4d669e);return !_0x36de59&&!_0x481343&&!_0x4d669e['startsWith']('{')&&(_0x4d669e='{\x20'+_0x4d669e+'\x20}'),''+_0x818e8f+_0x4d669e+_0x281c8a+_0xeabf6e+_0x309071;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x338f70){logInfoRaw('Copying\x20'+projectName+'\x20files...');for(const _0x4f1ecb of allFilesToCopy){const _0x191773=folders['cli']+'/'+_0x4f1ecb,_0x374858=_0x1aa6b6['join'](repoRoot,_0x191773),_0x47f44f=replaceToolsFolder(_0x4f1ecb),_0x5c544e=_0x1aa6b6['join'](_0x338f70,_0x47f44f);if(existsSync(_0x374858)){const _0xc41733=await promises['stat'](_0x374858);_0xc41733['isDirectory']()?await copyDirectoryContents(_0x374858,_0x5c544e):await copyAndProcessFile(_0x374858,_0x5c544e);}else logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x191773);}logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x78e40d){let _0x184456=_0x78e40d;for(const [_0xeedbb2,_0x13fd8a]of Object['entries'](toolsFoldersToReplace)){if(_0x184456['startsWith'](_0xeedbb2)&&isWithIndexer(_0x13fd8a)){const _0x4165ab=_0x13fd8a;for(const _0x2ca6a8 in _0x4165ab){const _0x924dad=_0x4165ab[_0x2ca6a8];isString(_0x924dad)&&(_0x184456=_0x184456['replace'](_0x2ca6a8,_0x924dad));}break;}}return _0x184456;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x25cc0b,_0x1c11e1,_0x480b0e=![]){const _0x1eec06=_0x1aa6b6['relative'](repoRoot,_0x25cc0b)['replace'](/\\/g,'/'),_0x3fe5f9=foldersToIgnore['map'](_0x1cf4d6=>_0x1cf4d6['replace'](/\\/g,'/'));if(_0x3fe5f9['includes'](_0x1eec06))return !![];if(_0x480b0e){const _0x294d78=_0x1aa6b6['relative'](_0x1c11e1,_0x25cc0b)['replace'](/\\/g,'/'),_0x5535ab=_0x294d78['split']('/');return _0x3fe5f9['some'](_0x45ea6d=>_0x5535ab['some'](_0x118365=>_0x118365===_0x45ea6d));}return ![];}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x4ebffa,_0x3b411a){!existsSync(_0x3b411a)&&mkdirSync(_0x3b411a,{'recursive':!![]});try{const _0x6a8efa=await promises['readdir'](_0x4ebffa,{'withFileTypes':!![]});for(const _0x14d42d of _0x6a8efa){const _0x39f53f=_0x1aa6b6['join'](_0x4ebffa,_0x14d42d['name']),_0x5f2246=_0x1aa6b6['join'](_0x3b411a,_0x14d42d['name']);!shouldIgnorePath(_0x39f53f,_0x4ebffa,_0x14d42d['isDirectory']())&&(_0x14d42d['isDirectory']()?await copyDirectoryContents(_0x39f53f,_0x5f2246):await copyAndProcessFile(_0x39f53f,_0x5f2246));}}catch(_0x514b57){const _0x4a4a6f=_0x514b57 instanceof Error?_0x514b57['message']:'Unknown\x20error';logStringError('Error\x20reading\x20directory\x20'+_0x4ebffa+':\x20'+_0x4a4a6f);throw _0x514b57;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x3beba5,_0x227e1f){const _0x1a242a=_0x1aa6b6['dirname'](_0x227e1f);!existsSync(_0x1a242a)&&mkdirSync(_0x1a242a,{'recursive':!![]});const _0x474f04=await promises['stat'](_0x3beba5);if(_0x474f04['isDirectory']())await copyDirectoryContents(_0x3beba5,_0x227e1f);else {const _0x2fd189=_0x1aa6b6['extname'](_0x3beba5)['toLowerCase'](),_0x354504=['.ico','.png','.jpg','.jpeg','.webp','.gif','.svg','.pdf'];if(_0x354504['includes'](_0x2fd189)){await promises['copyFile'](_0x3beba5,_0x227e1f);return;}const _0x3cae32=await promises['readFile'](_0x3beba5,'utf8'),_0x2ff221=replaceImports(_0x3cae32);await promises['writeFile'](_0x227e1f,_0x2ff221,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0xea7641){for(const _0x2cc837 of additionalFoldersToCreate){const _0x3492ea=_0x1aa6b6['join'](_0xea7641,_0x2cc837);!existsSync(_0x3492ea)&&(mkdirSync(_0x3492ea,{'recursive':!![]}),logInfoRaw('Created\x20folder:\x20'+_0x2cc837));}logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function setupPreCommitHooks(_0x106140){const _0x5dfd6e=_0x1aa6b6['join'](_0x106140,folders['husky']),_0x3a8501=_0x1aa6b6['join'](_0x5dfd6e,files['preCommit']),_0x3dbaf5=_0x1aa6b6['join'](_0x5dfd6e,files['commitMsg']);mkdirSync(_0x5dfd6e,{'recursive':!![]}),await promises['writeFile'](_0x3a8501,cliScripts['preCommit'],'utf8'),await promises['writeFile'](_0x3dbaf5,cliScripts['commitMsg'],'utf8'),runCommand(cliScripts['chmodPreCommit'],_0x106140),runCommand(cliScripts['chmodCommitMsg'],_0x106140);}__name(setupPreCommitHooks,'setupPreCommitHooks');async function setupEslintConfig(_0x3347d2){const _0x1353cd=_0x1aa6b6['join'](_0x3347d2,files['eslintConfigMjs']);existsSync(_0x1353cd)&&await promises['rm'](_0x1353cd);const _0x2bc0f4=_0x1aa6b6['join'](_0x3347d2,files['eslintConfigJs']);await promises['writeFile'](_0x2bc0f4,cliEslintContent,'utf8');}__name(setupEslintConfig,'setupEslintConfig');async function enableRepoModeExtras(_0x3ab588){logInfoRaw('Enabling\x20recommendation\x20mode\x20(-r)...'),runCommand(cliScripts['gitInit'],_0x3ab588),runCommand(cliScripts['installDevHuskyTsx'],_0x3ab588),runCommand(cliScripts['setLint'],_0x3ab588),runCommand(cliScripts['installHusky'],_0x3ab588),await setupPreCommitHooks(_0x3ab588);}__name(enableRepoModeExtras,'enableRepoModeExtras');async function updateLayoutTitle(_0x3aa01f,_0x4ca4fa){const _0x87a866=_0x1aa6b6['join'](_0x3aa01f,projectPaths['app']+'/'+files['layout']);if(!existsSync(_0x87a866))throw createError(files['layout']+'\x20not\x20found\x20at\x20'+_0x87a866+',\x20cannot\x20update\x20title.');let _0x305dcd=await promises['readFile'](_0x87a866,'utf8');const _0x30e313=/"SaaS Kit"/g;if(!_0x30e313['test'](_0x305dcd))throw createError('SaaS\x20Kit\x20not\x20found\x20in\x20'+files['layout']+',\x20cannot\x20update\x20title.');_0x305dcd=_0x305dcd['replace'](_0x30e313,'\x22'+_0x4ca4fa+'\x22'),await promises['writeFile'](_0x87a866,_0x305dcd,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle');async function create(_0x58bf12){try{_0x58bf12['length']<0x26d0+0x142a+-0x3af9*0x1&&(logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](0x33*-0x27+0x4c0*0x4+0x1*-0xb3a));const _0x2a606f=_0x58bf12[-0x1974+-0x137c+0x2cf0],_0x5c4aad=_0x58bf12['includes']('-r'),_0x20a0a6=_0x1aa6b6['resolve'](process['cwd'](),_0x2a606f);logInfoRaw('\x0aCreating\x20'+projectName+'\x20project\x20\x22'+_0x2a606f+'\x22...\x0a');try{checkTargetFolder(_0x20a0a6),createNextProject(_0x2a606f,_0x20a0a6),await copyProjectFiles(_0x20a0a6),await overridePackageJson(_0x20a0a6),createAdditionalFolders(_0x20a0a6),await createEnvFile(_0x20a0a6),await updateLayoutTitle(_0x20a0a6,_0x2a606f),await setupEslintConfig(_0x20a0a6),_0x5c4aad&&await enableRepoModeExtras(_0x20a0a6),logInfoRaw('\x0a'+projectName+'\x20project\x20\x22'+_0x2a606f+'\x22\x20is\x20ready!'),logInfoRaw('Next\x20steps:'),logInfoRaw('\x20\x20cd\x20'+_0x2a606f),logInfoRaw('\x20\x20npm\x20run\x20prod'),logInfoRaw('\x20\x20npm\x20start');}catch(_0x4aa1b5){const _0x2ebde0=_0x4aa1b5 instanceof Error?_0x4aa1b5['message']:'Unknown\x20error';logStringError('Error:'),logStringError(_0x2ebde0),existsSync(_0x20a0a6)&&(logInfoRaw('Cleaning\x20up...'),rmSync(_0x20a0a6,{'recursive':!![],'force':!![]})),process['exit'](-0x13c5+0x1896*-0x1+0x14e*0x22);}}catch(_0x33ca2e){const _0x35af1c=_0x33ca2e instanceof Error?_0x33ca2e['message']:'Unknown\x20error';logStringError('Unhandled\x20error:'),logStringError(_0x35af1c),process['exit'](-0x135a+0x1+0x135a);}}__name(create,'create');
|
|
19
19
|
|
|
20
20
|
export { create };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fernir2/saas-kit-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.37",
|
|
4
4
|
"description": "CLI for creating saas-kit apps",
|
|
5
5
|
"bin": {
|
|
6
6
|
"saaskitcli": "./level2/cli/bin/index.js"
|
|
@@ -26,7 +26,6 @@
|
|
|
26
26
|
"@radix-ui/react-collapsible": "1.1.12",
|
|
27
27
|
"@radix-ui/react-dialog": "1.1.15",
|
|
28
28
|
"@radix-ui/react-dropdown-menu": "2.1.16",
|
|
29
|
-
"@radix-ui/react-icons": "1.3.2",
|
|
30
29
|
"@radix-ui/react-label": "2.1.7",
|
|
31
30
|
"@radix-ui/react-popover": "1.1.15",
|
|
32
31
|
"@radix-ui/react-radio-group": "1.3.8",
|
|
@@ -187,4 +186,4 @@
|
|
|
187
186
|
"typescript-eslint": "8.36.0"
|
|
188
187
|
},
|
|
189
188
|
"type": "module"
|
|
190
|
-
}
|
|
189
|
+
}
|