@fernir2/saas-kit-cli 0.1.21 → 0.1.23
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/README.md +101 -0
- package/cli/bin/index.ts +358 -0
- package/cli/drizzle.config.ts +12 -0
- package/cli/eslint.config.js +10 -0
- package/cli/global-setup.ts +25 -0
- package/cli/next.config.js +55 -0
- package/cli/npm-commands/gen-meta/index.ts +3 -0
- package/cli/npm-commands/gen-schema/index.ts +5 -0
- package/cli/npm-commands/migrate-db/index.ts +5 -0
- package/cli/npm-commands/migrate-db/migrate-db.ts +15 -0
- package/cli/npm-commands/seed-db/index.ts +5 -0
- package/cli/npm-commands/seed-db/seed-db.ts +15 -0
- package/cli/package-template.json +61 -0
- package/cli/playwright.config.ts +34 -0
- package/cli/postcss.config.mjs +9 -0
- package/cli/src/app/globals.css +1 -0
- package/cli/tailwind.config.ts +13 -0
- package/cli/tsconfig.json +65 -0
- package/cli/tsconfig.server.json +14 -0
- package/level2/cli/create-saas-kit-app/bin/index.cjs.js +4 -4
- package/level2/cli/create-saas-kit-app/bin/index.js +3 -3
- package/level2/fd-toolbox/api/api-client.cjs.js +1 -1
- package/level2/fd-toolbox/api/api-client.js +1 -1
- package/level2/fd-toolbox/api/api-path-names.cjs.js +2 -2
- package/level2/fd-toolbox/api/api-paths.cjs.js +1 -1
- package/level2/fd-toolbox/api/api-paths.js +1 -1
- package/level2/fd-toolbox/api/base-api.cjs.js +1 -1
- package/level2/fd-toolbox/api/base-api.js +1 -1
- package/level2/fd-toolbox/auth/login-states.cjs.js +1 -1
- package/level2/fd-toolbox/auth/login-states.js +1 -1
- package/level2/fd-toolbox/auth/session-storage.cjs.js +1 -1
- package/level2/fd-toolbox/auth/session-storage.js +1 -1
- package/level2/fd-toolbox/auth/tokens.cjs.js +1 -1
- package/level2/fd-toolbox/auth/tokens.js +1 -1
- package/level2/fd-toolbox/constants/constants.cjs.js +1 -1
- package/level2/fd-toolbox/constants/constants.js +1 -1
- package/level2/fd-toolbox/enums/enums.cjs.js +1 -1
- package/level2/fd-toolbox/enums/enums.js +1 -1
- package/level2/fd-toolbox/errors/error-handler.cjs.js +1 -1
- package/level2/fd-toolbox/errors/error-handler.js +1 -1
- package/level2/fd-toolbox/errors/errors.cjs.js +1 -1
- package/level2/fd-toolbox/errors/errors.js +1 -1
- package/level2/fd-toolbox/errors/problem-details.cjs.js +1 -1
- package/level2/fd-toolbox/errors/problem-details.js +1 -1
- package/level2/fd-toolbox/functions/value-checking-functions.cjs.js +1 -1
- package/level2/fd-toolbox/functions/value-checking-functions.js +1 -1
- package/level2/fd-toolbox/http/url/urls.cjs.js +1 -1
- package/level2/fd-toolbox/http/url/urls.js +1 -1
- package/level2/fd-toolbox/infra/env-config.cjs.js +2 -2
- package/level2/fd-toolbox/infra/env-config.js +2 -2
- package/level2/fd-toolbox/infra/env-functions.cjs.js +1 -1
- package/level2/fd-toolbox/infra/env-functions.js +1 -1
- package/level2/fd-toolbox/infra/env-schema.cjs.js +2 -2
- package/level2/fd-toolbox/infra/env-schema.js +2 -2
- package/level2/fd-toolbox/infra/env-store.cjs.js +1 -1
- package/level2/fd-toolbox/infra/env-store.js +1 -1
- package/level2/fd-toolbox/lib/environments.cjs.js +1 -1
- package/level2/fd-toolbox/lib/environments.js +1 -1
- package/level2/fd-toolbox/lib/utils.cjs.js +1 -1
- package/level2/fd-toolbox/lib/utils.js +1 -1
- package/level2/fd-toolbox/local-storage/local-storage.cjs.js +1 -1
- package/level2/fd-toolbox/local-storage/local-storage.js +1 -1
- package/level2/fd-toolbox/logging/loggers.cjs.js +1 -1
- package/level2/fd-toolbox/logging/loggers.js +1 -1
- package/level2/fd-toolbox/notifications.cjs.js +2 -2
- package/level2/fd-toolbox/notifications.js +2 -2
- package/level2/fd-toolbox/odata/odata-constants.cjs.js +1 -1
- package/level2/fd-toolbox/odata/odata-constants.js +1 -1
- package/level2/fd-toolbox/odata/odatas.cjs.js +1 -1
- package/level2/fd-toolbox/odata/odatas.js +1 -1
- package/level2/fd-toolbox/odata/services/odata-filters.cjs.js +1 -1
- package/level2/fd-toolbox/odata/services/odata-filters.js +1 -1
- package/level2/fd-toolbox/paths/paths-names.cjs.js +2 -2
- package/level2/fd-toolbox/paths/paths-names.js +1 -1
- package/level2/fd-toolbox/routing/login-routers.cjs.js +1 -1
- package/level2/fd-toolbox/routing/login-routers.js +1 -1
- package/level2/fd-toolbox/routing/paths.cjs.js +1 -1
- package/level2/fd-toolbox/routing/paths.js +1 -1
- package/level2/fd-toolbox/strings/strings-constants.cjs.js +1 -1
- package/level2/fd-toolbox/strings/strings-constants.js +1 -1
- package/level2/fd-toolbox/strings/strings.cjs.js +1 -1
- package/level2/fd-toolbox/strings/strings.js +1 -1
- package/level2/fd-toolbox/types/ensure-type.cjs.js +1 -1
- package/level2/fd-toolbox/types/ensure-type.js +1 -1
- package/level2/fd-toolbox-core/core/name-of.cjs.js +1 -1
- package/level2/fd-toolbox-core/core/name-of.js +1 -1
- package/level2/fd-toolbox-core/types/resource-with-id.cjs.js +1 -1
- package/level2/fd-toolbox-core/types/resource-with-id.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "npx tsx --tsconfig tsconfig.server.json server.ts",
|
|
7
|
+
"build": "next build && tsc --project tsconfig.server.json",
|
|
8
|
+
"lint": "eslint -c eslint.config.js",
|
|
9
|
+
"gen-schema": "npx tsx tools/npm-commands/gen-schema/index.ts",
|
|
10
|
+
"gen-meta": "npx tsx tools/npm-commands/gen-meta/index.ts",
|
|
11
|
+
"init-db": "npm run migrate-db && npm run seed-db",
|
|
12
|
+
"setup": "npm run gen-meta && npm run gen-schema && npm run init-db",
|
|
13
|
+
"start": "npm run setup && npm run dev",
|
|
14
|
+
"prod": "npm run setup && npm run build && npx tsx server.ts",
|
|
15
|
+
"migrate-db": "npx tsx tools/npm-commands/migrate-db/index.ts",
|
|
16
|
+
"seed-db": "npx tsx tools/npm-commands/seed-db/index.ts"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@fernir2/saas-kit": "0.0.150",
|
|
20
|
+
"@node-rs/argon2": "2.0.2",
|
|
21
|
+
"drizzle-orm": "0.41.0",
|
|
22
|
+
"eslint-plugin-github": "6.0.0",
|
|
23
|
+
"eslint-plugin-import": "2.32.0",
|
|
24
|
+
"eslint-plugin-sonarjs": "3.0.5",
|
|
25
|
+
"geist": "1.3.1",
|
|
26
|
+
"next": "15.4.5",
|
|
27
|
+
"quill": "2.0.3",
|
|
28
|
+
"react": "18",
|
|
29
|
+
"react-dom": "18",
|
|
30
|
+
"socket.io-client": "4.8.1",
|
|
31
|
+
"tailwindcss-animate": "1.0.7"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"playwright": "1.52.0",
|
|
35
|
+
"@eslint/eslintrc": "3.3.1",
|
|
36
|
+
"@eslint/js": "9.35.0",
|
|
37
|
+
"@types/node": "24.5.1",
|
|
38
|
+
"@types/react": "18",
|
|
39
|
+
"@types/react-dom": "18",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "8.43.0",
|
|
41
|
+
"@typescript-eslint/eslint-plugin-tslint": "7.0.2",
|
|
42
|
+
"@typescript-eslint/parser": "8.43.0",
|
|
43
|
+
"drizzle-kit": "0.28.1",
|
|
44
|
+
"eslint": "9.35.0",
|
|
45
|
+
"eslint-config-next": "15.5.2",
|
|
46
|
+
"eslint-config-prettier": "9.1.0",
|
|
47
|
+
"eslint-plugin-react": "7.37.5",
|
|
48
|
+
"eslint-plugin-react-compiler": "19.1.0-rc.2",
|
|
49
|
+
"eslint-plugin-react-hooks": "5.2.0",
|
|
50
|
+
"eslint-plugin-react-refresh": "0.4.20",
|
|
51
|
+
"eslint-plugin-tailwindcss": "3.18.2",
|
|
52
|
+
"husky": "9.1.7",
|
|
53
|
+
"postcss": "8",
|
|
54
|
+
"prettier": "3.6.2",
|
|
55
|
+
"prettier-plugin-tailwindcss": "0.6.14",
|
|
56
|
+
"tailwindcss": "3.4.1",
|
|
57
|
+
"tsx": "4.19.1",
|
|
58
|
+
"typescript": "5.9.2",
|
|
59
|
+
"esbuild": "0.19.12"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defineConfig, devices } from "playwright/test";
|
|
2
|
+
import { getDotenvConfig } from "@fernir2/saas-kit";
|
|
3
|
+
|
|
4
|
+
getDotenvConfig();
|
|
5
|
+
|
|
6
|
+
const baseUrl = "http://localhost:8080/";
|
|
7
|
+
|
|
8
|
+
export default defineConfig({
|
|
9
|
+
timeout: 120000,
|
|
10
|
+
testDir: "test/",
|
|
11
|
+
fullyParallel: true,
|
|
12
|
+
globalSetup: "./global-setup.ts",
|
|
13
|
+
workers: undefined,
|
|
14
|
+
reporter: "html",
|
|
15
|
+
use: {
|
|
16
|
+
baseURL: baseUrl,
|
|
17
|
+
trace: "on-first-retry",
|
|
18
|
+
},
|
|
19
|
+
projects: [
|
|
20
|
+
{
|
|
21
|
+
name: "chromium",
|
|
22
|
+
use: { ...devices["Desktop Chrome"] },
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
webServer: {
|
|
26
|
+
command: "npm run prod",
|
|
27
|
+
url: baseUrl,
|
|
28
|
+
reuseExistingServer: true,
|
|
29
|
+
timeout: 120000,
|
|
30
|
+
env: {
|
|
31
|
+
NODE_ENV: "test",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "@fernir2/saas-kit/styles";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getTailwindConfig } from "@fernir2/saas-kit";
|
|
2
|
+
|
|
3
|
+
const config = getTailwindConfig();
|
|
4
|
+
|
|
5
|
+
config.content = [
|
|
6
|
+
"./pages/**/*.{ts,tsx}",
|
|
7
|
+
"./components/**/*.{ts,tsx}",
|
|
8
|
+
"./app/**/*.{ts,tsx}",
|
|
9
|
+
"./src/**/*.{ts,tsx}",
|
|
10
|
+
"./node_modules/@fernir2/saas-kit/src/**/*.{js,ts,jsx,tsx}",
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
export default config;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2023",
|
|
4
|
+
"experimentalDecorators": true,
|
|
5
|
+
"emitDecoratorMetadata": true,
|
|
6
|
+
"lib": ["ES2023", "dom", "dom.iterable"],
|
|
7
|
+
"allowJs": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"strict": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
|
|
12
|
+
"module": "esnext",
|
|
13
|
+
"moduleResolution": "bundler",
|
|
14
|
+
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"isolatedModules": true,
|
|
17
|
+
"jsx": "preserve",
|
|
18
|
+
"incremental": true,
|
|
19
|
+
"plugins": [{ "name": "next" }],
|
|
20
|
+
|
|
21
|
+
"baseUrl": "./",
|
|
22
|
+
"preserveSymlinks": false,
|
|
23
|
+
"paths": {
|
|
24
|
+
"@/*": ["./src/*"],
|
|
25
|
+
"@cli/*": ["./cli/*"],
|
|
26
|
+
"@adders/*": ["./adders/*"],
|
|
27
|
+
"@server/*": ["./server/*"],
|
|
28
|
+
"@schemas/*": ["./generated/*"],
|
|
29
|
+
"@npm-commands/*": ["./npm-commands/*"],
|
|
30
|
+
"@root/*": ["./*"]
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
"forceConsistentCasingInFileNames": true,
|
|
34
|
+
"noFallthroughCasesInSwitch": true,
|
|
35
|
+
"sourceMap": true,
|
|
36
|
+
"importHelpers": true,
|
|
37
|
+
"noEmitHelpers": true,
|
|
38
|
+
"downlevelIteration": true,
|
|
39
|
+
"pretty": true,
|
|
40
|
+
"noUnusedLocals": true,
|
|
41
|
+
"noUnusedParameters": true,
|
|
42
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
43
|
+
"noImplicitOverride": true,
|
|
44
|
+
"useUnknownInCatchVariables": true,
|
|
45
|
+
|
|
46
|
+
"noEmit": false,
|
|
47
|
+
"declaration": true,
|
|
48
|
+
"declarationDir": "./build/package/types",
|
|
49
|
+
"rootDir": "./",
|
|
50
|
+
"outDir": "./build/package/types-output",
|
|
51
|
+
"noEmitOnError": true
|
|
52
|
+
},
|
|
53
|
+
"include": [
|
|
54
|
+
"src",
|
|
55
|
+
"cli",
|
|
56
|
+
"server",
|
|
57
|
+
"adders",
|
|
58
|
+
"generated",
|
|
59
|
+
"next-env.d.ts",
|
|
60
|
+
"global.d.ts",
|
|
61
|
+
".next/types/**/*.ts",
|
|
62
|
+
"playwright.config.ts"
|
|
63
|
+
],
|
|
64
|
+
"exclude": ["node_modules", "dist", "build", ".next", "coverage"]
|
|
65
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"module": "es2022",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"outDir": "dist",
|
|
7
|
+
"lib": ["ES2022", "dom"],
|
|
8
|
+
"target": "ES2022",
|
|
9
|
+
"isolatedModules": false,
|
|
10
|
+
"noEmit": false,
|
|
11
|
+
"strict": true
|
|
12
|
+
},
|
|
13
|
+
"include": ["server.ts"]
|
|
14
|
+
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
var child_process = require('child_process');
|
|
6
6
|
var fs = require('fs');
|
|
7
7
|
var node_url = require('node:url');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var _0x3072fe = require('path');
|
|
9
|
+
var _0x400653 = require('node:fs');
|
|
10
10
|
var createAppConstants = require('../../../../base-repo/constants/create-app-constants.cjs.js');
|
|
11
11
|
var loggers = require('../../../fd-toolbox/logging/loggers.cjs.js');
|
|
12
12
|
var constants = require('../../../fd-toolbox/constants/constants.cjs.js');
|
|
@@ -35,6 +35,6 @@ function _interopNamespaceDefault(e) {
|
|
|
35
35
|
return Object.freeze(n);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _0x3072fe__namespace = /*#__PURE__*/_interopNamespaceDefault(_0x3072fe);
|
|
39
39
|
|
|
40
|
-
'use strict';var __defProp=Object['defineProperty'],__name=(_0x1a5274,_0x14f0de)=>__defProp(_0x1a5274,'name',{'value':_0x14f0de,'configurable':!![]});const requiredNodeVersion='v18.0.0';process['version']<requiredNodeVersion&&(loggers.logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](-0x1e6c+0x793*-0x1+0x2600));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-saas-kit-app/bin/index.cjs.js', document.baseURI).href))),sourceDir='../../../../',dir=_0x5f398e__namespace['dirname'](filename),repoRoot=_0x5f398e__namespace['resolve'](dir,sourceDir),saasKitRoot=_0x5f398e__namespace['resolve'](dir,'@../..'),envLocalPath=_0x5f398e__namespace['join'](dir,''+sourceDir+projectPaths.folders['cli']+'/.env'),envTemplate=_0x1d79d4['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[projectPaths.folders['cli']+'/constants'];function runCommand(_0x208645,_0x1aafa7){loggers.logInfoRaw('Executing:\x20'+_0x208645);try{child_process.execSync(_0x208645,{'stdio':'inherit','cwd':_0x1aafa7??process['cwd']()});}catch(_0x5007ec){const _0x4f1a14=_0x5007ec instanceof Error?_0x5007ec['message']:'Unknown\x20error';loggers.logStringError('Error\x20executing:\x20'+_0x208645),loggers.logStringError(_0x4f1a14),process['exit'](0xaed+0x14*0x12f+-0x2298);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x2e9017){fs.existsSync(_0x2e9017)&&(loggers.logStringError('Error:\x20Folder\x20\x22'+_0x5f398e__namespace['basename'](_0x2e9017)+'\x22\x20already\x20exists.'),process['exit'](0x2*0xc96+0x1f19+-0x3844));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0x24db96=_0x5f398e__namespace['resolve'](saasKitRoot,'package.json'),_0x90f3dc=JSON['parse'](_0x1d79d4['readFileSync'](_0x24db96,'utf-8'));return String(_0x90f3dc['devDependencies']?.['next']??_0x90f3dc['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x2434dc,_0x38a49b){loggers.logInfoRaw('Creating\x20Next.js\x20project...');const _0x29e3be=getCreateNextAppVersion(),_0x247217=['npx\x20create-next-app@'+_0x29e3be+'\x20\x22'+_0x2434dc+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git']['join']('\x20');runCommand(_0x247217,_0x5f398e__namespace['dirname'](_0x38a49b)),loggers.logInfoRaw('Next.js\x20project\x20created!');}__name(createNextProject,'createNextProject');async function createEnvFile(_0x51aa96){loggers.logInfoRaw('Creating\x20.env\x20file\x20with\x20default\x20values...');const _0x53163d=_0x5f398e__namespace['join'](_0x51aa96,'.env');try{await fs.promises['writeFile'](_0x53163d,envTemplate,'utf8'),loggers.logInfoRaw('.env\x20file\x20created\x20with\x20values!');}catch(_0x3bba1d){const _0x1108ef=_0x3bba1d instanceof Error?_0x3bba1d['message']:'Unknown\x20error';loggers.logStringError('Error\x20creating\x20.env\x20file:'),loggers.logStringError(_0x1108ef);throw _0x3bba1d;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x422799){const _0x4c9417=_0x5f398e__namespace['join'](_0x422799,'package.json'),_0x333215=_0x5f398e__namespace['join'](repoRoot,projectPaths.folders['cli']+'/package-template.json');try{const _0x1ff9bb=JSON['parse'](await fs.promises['readFile'](_0x4c9417,'utf8')),_0x4fc150=_0x1ff9bb['name'],_0x3dc2ec=JSON['parse'](await fs.promises['readFile'](_0x333215,'utf8')),_0x29cba1={..._0x3dc2ec,'name':_0x4fc150};await fs.promises['writeFile'](_0x4c9417,JSON['stringify'](_0x29cba1,null,0x5*-0x695+0x940+0x49*0x53)+'\x0a','utf8');}catch(_0x2e0c41){const _0x1191fd=_0x2e0c41 instanceof Error?_0x2e0c41['message']:'Unknown\x20error';loggers.logStringError('Error\x20overriding\x20package.json:'),loggers.logStringError(_0x1191fd);throw _0x2e0c41;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0xb91991){const _0x3bbc8a=/(import\s+[^'"]*from\s+["'])([^"']+)(["'])/g;return _0xb91991['replace'](_0x3bbc8a,(_0xce094c,_0x1bf3bf,_0x168505,_0x1c35b4)=>{if(!_0x168505['startsWith'](aliases.aliasSymbols['atSign'])||_0x168505['startsWith'](packages.npmPackages['saasKit']))return _0xce094c;if(_0x168505['startsWith'](aliases.aliasSymbols['atSign']+projectPaths.folders['server'])||_0x168505['includes']('/'+projectPaths.folders['server']+'/'))return ''+_0x1bf3bf+packages.npmPackages['saasKitServer']+_0x1c35b4;return ''+_0x1bf3bf+packages.npmPackages['saasKit']+_0x1c35b4;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x2143e6){loggers.logInfoRaw('Copying\x20'+constants.projectName+'\x20files...');for(const _0x4f78e2 of path.allFilesToCopy){const _0x2b75ea=projectPaths.folders['cli']+'/'+_0x4f78e2,_0x3b9a6f=_0x5f398e__namespace['join'](repoRoot,_0x2b75ea),_0x468038=replaceToolsFolder(_0x4f78e2),_0xff5f79=_0x5f398e__namespace['join'](_0x2143e6,_0x468038);if(fs.existsSync(_0x3b9a6f)){const _0x5b8b38=await fs.promises['stat'](_0x3b9a6f);_0x5b8b38['isDirectory']()?await copyDirectoryContents(_0x3b9a6f,_0xff5f79):await copyAndProcessFile(_0x3b9a6f,_0xff5f79);}else loggers.logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x2b75ea);}loggers.logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x1865c5){let _0x338302=_0x1865c5;for(const [_0x1389e5,_0x518230]of Object['entries'](createAppConstants.toolsFoldersToReplace)){if(_0x338302['startsWith'](_0x1389e5)&&ensureType.isWithIndexer(_0x518230)){const _0x5d16cd=_0x518230;for(const _0xb8c0d3 in _0x5d16cd){const _0x25d589=_0x5d16cd[_0xb8c0d3];ensureType.isString(_0x25d589)&&(_0x338302=_0x338302['replace'](_0xb8c0d3,_0x25d589));}break;}}return _0x338302;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x3e9198,_0x12c387,_0x392237=![]){const _0x22ef26=_0x5f398e__namespace['relative'](_0x12c387,_0x3e9198),_0x443fca=_0x22ef26['split'](_0x5f398e__namespace['sep']),_0x546451=_0x5f398e__namespace['relative'](repoRoot,_0x3e9198)['replace'](/\\/g,'/');return _0x392237&&foldersToIgnore['includes'](_0x546451)||foldersToIgnore['some'](_0x17e4b9=>_0x443fca['some'](_0x48d218=>_0x48d218===_0x17e4b9));}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x19d9ed,_0x361f6b){!fs.existsSync(_0x361f6b)&&fs.mkdirSync(_0x361f6b,{'recursive':!![]});try{const _0x3d7b1f=await fs.promises['readdir'](_0x19d9ed,{'withFileTypes':!![]});for(const _0x43fd97 of _0x3d7b1f){const _0x197208=_0x5f398e__namespace['join'](_0x19d9ed,_0x43fd97['name']),_0x3b72ba=_0x5f398e__namespace['join'](_0x361f6b,_0x43fd97['name']);!shouldIgnorePath(_0x197208,_0x19d9ed,_0x43fd97['isDirectory']())&&(_0x43fd97['isDirectory']()?await copyDirectoryContents(_0x197208,_0x3b72ba):await copyAndProcessFile(_0x197208,_0x3b72ba));}}catch(_0x358dcd){const _0x3e3815=_0x358dcd instanceof Error?_0x358dcd['message']:'Unknown\x20error';loggers.logStringError('Error\x20reading\x20directory\x20'+_0x19d9ed+':\x20'+_0x3e3815);throw _0x358dcd;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x407b07,_0x491adc){const _0x429556=_0x5f398e__namespace['dirname'](_0x491adc);!fs.existsSync(_0x429556)&&fs.mkdirSync(_0x429556,{'recursive':!![]});const _0x3b9b7d=await fs.promises['stat'](_0x407b07);if(_0x3b9b7d['isDirectory']())await copyDirectoryContents(_0x407b07,_0x491adc);else {const _0x55dc01=await fs.promises['readFile'](_0x407b07,'utf8'),_0x1067ca=replaceImports(_0x55dc01);await fs.promises['writeFile'](_0x491adc,_0x1067ca,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x3a15a4){for(const _0x4a499b of createAppConstants.additionalFoldersToCreate){const _0x1c5142=_0x5f398e__namespace['join'](_0x3a15a4,_0x4a499b);!fs.existsSync(_0x1c5142)&&(fs.mkdirSync(_0x1c5142,{'recursive':!![]}),loggers.logInfoRaw('Created\x20folder:\x20'+_0x4a499b));}loggers.logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function main(){const _0x163a17=process['argv']['slice'](0xc3d*0x3+0x99+-0x254e);_0x163a17['length']<0x21a3+0xf3d*0x1+-0x30df&&(loggers.logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](-0x2*-0x445+-0x1*0x581+-0x4*0xc2));const _0x325035=_0x163a17[-0x136+-0x1b2b+0x1*0x1c61],_0x2da03b=_0x5f398e__namespace['resolve'](process['cwd'](),_0x325035);loggers.logInfoRaw('\x0aCreating\x20'+constants.projectName+'\x20project\x20\x22'+_0x325035+'\x22...\x0a');try{checkTargetFolder(_0x2da03b),createNextProject(_0x325035,_0x2da03b),await copyProjectFiles(_0x2da03b),await overridePackageJson(_0x2da03b),createAdditionalFolders(_0x2da03b),await createEnvFile(_0x2da03b),await updateLayoutTitle(_0x2da03b,_0x325035),loggers.logInfoRaw('\x0a'+constants.projectName+'\x20project\x20\x22'+_0x325035+'\x22\x20is\x20ready!'),loggers.logInfoRaw('Next\x20steps:'),loggers.logInfoRaw('\x20\x20cd\x20'+_0x325035),loggers.logInfoRaw('\x20\x20npm\x20run\x20prod'),loggers.logInfoRaw('\x20\x20npm\x20start');}catch(_0x183840){const _0x599a66=_0x183840 instanceof Error?_0x183840['message']:'Unknown\x20error';loggers.logStringError('Error:'),loggers.logStringError(_0x599a66),fs.existsSync(_0x2da03b)&&(loggers.logInfoRaw('Cleaning\x20up...'),fs.rmSync(_0x2da03b,{'recursive':!![],'force':!![]})),process['exit'](-0x9d*-0x2f+0x1de8+-0x3aba);}}__name(main,'main');async function updateLayoutTitle(_0x58059d,_0x4ccea9){const _0x59fac4=_0x5f398e__namespace['join'](_0x58059d,'src/app/layout.tsx');if(!fs.existsSync(_0x59fac4))throw errors.createError('layout.tsx\x20not\x20found\x20at\x20'+_0x59fac4+',\x20cannot\x20update\x20title.');let _0x409981=await fs.promises['readFile'](_0x59fac4,'utf8');const _0x405f26=/"SaaS Kit"/g;if(!_0x405f26['test'](_0x409981))throw errors.createError('SaaS\x20Kit\x20not\x20found\x20in\x20layout.tsx,\x20cannot\x20update\x20title.');_0x409981=_0x409981['replace'](_0x405f26,'\x22'+_0x4ccea9+'\x22'),await fs.promises['writeFile'](_0x59fac4,_0x409981,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle'),main()['catch'](_0x30add4=>{const _0xee1c1f=_0x30add4 instanceof Error?_0x30add4['message']:'Unknown\x20error';loggers.logStringError('Unhandled\x20error:'),loggers.logStringError(_0xee1c1f),process['exit'](0xe*-0x92+-0x16c5+0x1ec2);});
|
|
40
|
+
'use strict';var __defProp=Object['defineProperty'],__name=(_0x322376,_0x140002)=>__defProp(_0x322376,'name',{'value':_0x140002,'configurable':!![]});const requiredNodeVersion='v18.0.0';process['version']<requiredNodeVersion&&(loggers.logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](0x7*0x53+0x1269+-0x14ad));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-saas-kit-app/bin/index.cjs.js', document.baseURI).href))),sourceDir='../../../../',binDir=_0x3072fe__namespace['dirname'](filename),repoRoot=_0x3072fe__namespace['resolve'](binDir,sourceDir),envLocalPath=_0x3072fe__namespace['join'](binDir,''+sourceDir+projectPaths.folders['cli']+'/.env'),envTemplate=_0x400653['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[projectPaths.folders['cli']+'/constants'];function runCommand(_0x4bf6ef,_0x16daa9){loggers.logInfoRaw('Executing:\x20'+_0x4bf6ef);try{child_process.execSync(_0x4bf6ef,{'stdio':'inherit','cwd':_0x16daa9??process['cwd']()});}catch(_0x559b3f){const _0x30def4=_0x559b3f instanceof Error?_0x559b3f['message']:'Unknown\x20error';loggers.logStringError('Error\x20executing:\x20'+_0x4bf6ef),loggers.logStringError(_0x30def4),process['exit'](-0xb8c+-0x39*-0x20+-0x46d*-0x1);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x22457f){fs.existsSync(_0x22457f)&&(loggers.logStringError('Error:\x20Folder\x20\x22'+_0x3072fe__namespace['basename'](_0x22457f)+'\x22\x20already\x20exists.'),process['exit'](-0xfd*-0x5+0x7*0x503+0x2ab*-0xf));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0xc176a8=_0x3072fe__namespace['resolve'](repoRoot,'package.json'),_0x31433e=JSON['parse'](_0x400653['readFileSync'](_0xc176a8,'utf-8'));return String(_0x31433e['devDependencies']?.['next']??_0x31433e['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x37a328,_0x3424bb){loggers.logInfoRaw('Creating\x20Next.js\x20project...');const _0x1e7bef=getCreateNextAppVersion(),_0x4e87f0=['npx\x20create-next-app@'+_0x1e7bef+'\x20\x22'+_0x37a328+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git']['join']('\x20');runCommand(_0x4e87f0,_0x3072fe__namespace['dirname'](_0x3424bb)),loggers.logInfoRaw('Next.js\x20project\x20created!');}__name(createNextProject,'createNextProject');async function createEnvFile(_0x304d7d){loggers.logInfoRaw('Creating\x20.env\x20file\x20with\x20default\x20values...');const _0x24ad16=_0x3072fe__namespace['join'](_0x304d7d,'.env');try{await fs.promises['writeFile'](_0x24ad16,envTemplate,'utf8'),loggers.logInfoRaw('.env\x20file\x20created\x20with\x20values!');}catch(_0x16413a){const _0x660f1f=_0x16413a instanceof Error?_0x16413a['message']:'Unknown\x20error';loggers.logStringError('Error\x20creating\x20.env\x20file:'),loggers.logStringError(_0x660f1f);throw _0x16413a;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x2495c9){const _0x56aba7=_0x3072fe__namespace['join'](_0x2495c9,'package.json'),_0x37f5be=_0x3072fe__namespace['join'](repoRoot,projectPaths.folders['cli']+'/package-template.json');try{const _0x5bb4e3=JSON['parse'](await fs.promises['readFile'](_0x56aba7,'utf8')),_0x529809=_0x5bb4e3['name'],_0xe02a7b=JSON['parse'](await fs.promises['readFile'](_0x37f5be,'utf8')),_0x420011={..._0xe02a7b,'name':_0x529809};await fs.promises['writeFile'](_0x56aba7,JSON['stringify'](_0x420011,null,0x2*0xfc7+-0x4*0x29d+0x4*-0x546)+'\x0a','utf8');}catch(_0x551550){const _0x265a8b=_0x551550 instanceof Error?_0x551550['message']:'Unknown\x20error';loggers.logStringError('Error\x20overriding\x20package.json:'),loggers.logStringError(_0x265a8b);throw _0x551550;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x489a9a){const _0x5b55b5=/(import\s+[^'"]*from\s+["'])([^"']+)(["'])/g;return _0x489a9a['replace'](_0x5b55b5,(_0x440453,_0x25fe16,_0x12242a,_0x361163)=>{if(!_0x12242a['startsWith'](aliases.aliasSymbols['atSign'])||_0x12242a['startsWith'](packages.npmPackages['saasKit']))return _0x440453;if(_0x12242a['startsWith'](aliases.aliasSymbols['atSign']+projectPaths.folders['server'])||_0x12242a['includes']('/'+projectPaths.folders['server']+'/'))return ''+_0x25fe16+packages.npmPackages['saasKitServer']+_0x361163;return ''+_0x25fe16+packages.npmPackages['saasKit']+_0x361163;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x182172){loggers.logInfoRaw('Copying\x20'+constants.projectName+'\x20files...');for(const _0x5416ad of path.allFilesToCopy){const _0x57d619=projectPaths.folders['cli']+'/'+_0x5416ad,_0x59b6cb=_0x3072fe__namespace['join'](repoRoot,_0x57d619),_0x51876f=replaceToolsFolder(_0x5416ad),_0x4c4a9e=_0x3072fe__namespace['join'](_0x182172,_0x51876f);if(fs.existsSync(_0x59b6cb)){const _0xa24a2e=await fs.promises['stat'](_0x59b6cb);_0xa24a2e['isDirectory']()?await copyDirectoryContents(_0x59b6cb,_0x4c4a9e):await copyAndProcessFile(_0x59b6cb,_0x4c4a9e);}else loggers.logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x57d619);}loggers.logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x1f4cda){let _0x24ad2c=_0x1f4cda;for(const [_0x4cdd32,_0x238b89]of Object['entries'](createAppConstants.toolsFoldersToReplace)){if(_0x24ad2c['startsWith'](_0x4cdd32)&&ensureType.isWithIndexer(_0x238b89)){const _0x1789a1=_0x238b89;for(const _0x3fd968 in _0x1789a1){const _0x3c4de1=_0x1789a1[_0x3fd968];ensureType.isString(_0x3c4de1)&&(_0x24ad2c=_0x24ad2c['replace'](_0x3fd968,_0x3c4de1));}break;}}return _0x24ad2c;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x4c643f,_0x186463,_0x5198e2=![]){const _0x5712ea=_0x3072fe__namespace['relative'](_0x186463,_0x4c643f),_0x39f70f=_0x5712ea['split'](_0x3072fe__namespace['sep']),_0x3e4e09=_0x3072fe__namespace['relative'](repoRoot,_0x4c643f)['replace'](/\\/g,'/');return _0x5198e2&&foldersToIgnore['includes'](_0x3e4e09)||foldersToIgnore['some'](_0x1241d9=>_0x39f70f['some'](_0x4ca532=>_0x4ca532===_0x1241d9));}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x12ed23,_0x52c8f0){!fs.existsSync(_0x52c8f0)&&fs.mkdirSync(_0x52c8f0,{'recursive':!![]});try{const _0x2d63b2=await fs.promises['readdir'](_0x12ed23,{'withFileTypes':!![]});for(const _0x45987c of _0x2d63b2){const _0x446326=_0x3072fe__namespace['join'](_0x12ed23,_0x45987c['name']),_0x4e9354=_0x3072fe__namespace['join'](_0x52c8f0,_0x45987c['name']);!shouldIgnorePath(_0x446326,_0x12ed23,_0x45987c['isDirectory']())&&(_0x45987c['isDirectory']()?await copyDirectoryContents(_0x446326,_0x4e9354):await copyAndProcessFile(_0x446326,_0x4e9354));}}catch(_0x375d7a){const _0x41c215=_0x375d7a instanceof Error?_0x375d7a['message']:'Unknown\x20error';loggers.logStringError('Error\x20reading\x20directory\x20'+_0x12ed23+':\x20'+_0x41c215);throw _0x375d7a;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x117279,_0x2d026c){const _0x13a22d=_0x3072fe__namespace['dirname'](_0x2d026c);!fs.existsSync(_0x13a22d)&&fs.mkdirSync(_0x13a22d,{'recursive':!![]});const _0x3b5cdd=await fs.promises['stat'](_0x117279);if(_0x3b5cdd['isDirectory']())await copyDirectoryContents(_0x117279,_0x2d026c);else {const _0xd7ee88=await fs.promises['readFile'](_0x117279,'utf8'),_0x9766fb=replaceImports(_0xd7ee88);await fs.promises['writeFile'](_0x2d026c,_0x9766fb,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x233ab3){for(const _0x37df3b of createAppConstants.additionalFoldersToCreate){const _0x328670=_0x3072fe__namespace['join'](_0x233ab3,_0x37df3b);!fs.existsSync(_0x328670)&&(fs.mkdirSync(_0x328670,{'recursive':!![]}),loggers.logInfoRaw('Created\x20folder:\x20'+_0x37df3b));}loggers.logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function main(){const _0x11d3fb=process['argv']['slice'](-0x8f0+0x1fe*0x3+0x17c*0x2);_0x11d3fb['length']<0x1ff2+-0x1*-0x2051+-0x4042&&(loggers.logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](-0x21*-0xcf+0x1bcc+-0x367a));const _0x2834e5=_0x11d3fb[-0x1*-0x629+0x356+-0xd*0xbb],_0x5f3d0d=_0x3072fe__namespace['resolve'](process['cwd'](),_0x2834e5);loggers.logInfoRaw('\x0aCreating\x20'+constants.projectName+'\x20project\x20\x22'+_0x2834e5+'\x22...\x0a');try{checkTargetFolder(_0x5f3d0d),createNextProject(_0x2834e5,_0x5f3d0d),await copyProjectFiles(_0x5f3d0d),await overridePackageJson(_0x5f3d0d),createAdditionalFolders(_0x5f3d0d),await createEnvFile(_0x5f3d0d),await updateLayoutTitle(_0x5f3d0d,_0x2834e5),loggers.logInfoRaw('\x0a'+constants.projectName+'\x20project\x20\x22'+_0x2834e5+'\x22\x20is\x20ready!'),loggers.logInfoRaw('Next\x20steps:'),loggers.logInfoRaw('\x20\x20cd\x20'+_0x2834e5),loggers.logInfoRaw('\x20\x20npm\x20run\x20prod'),loggers.logInfoRaw('\x20\x20npm\x20start');}catch(_0x2550a4){const _0x37d637=_0x2550a4 instanceof Error?_0x2550a4['message']:'Unknown\x20error';loggers.logStringError('Error:'),loggers.logStringError(_0x37d637),fs.existsSync(_0x5f3d0d)&&(loggers.logInfoRaw('Cleaning\x20up...'),fs.rmSync(_0x5f3d0d,{'recursive':!![],'force':!![]})),process['exit'](0xaf2+-0x13*-0xc5+-0x1990);}}__name(main,'main');async function updateLayoutTitle(_0x4f9891,_0x3aa583){const _0x2a3361=_0x3072fe__namespace['join'](_0x4f9891,'src/app/layout.tsx');if(!fs.existsSync(_0x2a3361))throw errors.createError('layout.tsx\x20not\x20found\x20at\x20'+_0x2a3361+',\x20cannot\x20update\x20title.');let _0x456f4b=await fs.promises['readFile'](_0x2a3361,'utf8');const _0x17aa77=/"SaaS Kit"/g;if(!_0x17aa77['test'](_0x456f4b))throw errors.createError('SaaS\x20Kit\x20not\x20found\x20in\x20layout.tsx,\x20cannot\x20update\x20title.');_0x456f4b=_0x456f4b['replace'](_0x17aa77,'\x22'+_0x3aa583+'\x22'),await fs.promises['writeFile'](_0x2a3361,_0x456f4b,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle'),main()['catch'](_0x2efb00=>{const _0x24b3f3=_0x2efb00 instanceof Error?_0x2efb00['message']:'Unknown\x20error';loggers.logStringError('Unhandled\x20error:'),loggers.logStringError(_0x24b3f3),process['exit'](-0x2*-0x887+0x398+-0x14a5);});
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { execSync } from 'child_process';
|
|
4
4
|
import { existsSync, promises, mkdirSync, rmSync } from 'fs';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import * as
|
|
7
|
-
import
|
|
6
|
+
import * as _0x3072fe from 'path';
|
|
7
|
+
import _0x400653 from 'node:fs';
|
|
8
8
|
import { toolsFoldersToReplace, additionalFoldersToCreate } from '../../../../base-repo/constants/create-app-constants.js';
|
|
9
9
|
import { logStringError, logInfoRaw } from '../../../fd-toolbox/logging/loggers.js';
|
|
10
10
|
import { projectName } from '../../../fd-toolbox/constants/constants.js';
|
|
@@ -15,4 +15,4 @@ import { npmPackages } from '../../../../base-repo/constants/packages.js';
|
|
|
15
15
|
import { aliasSymbols } from '../../../../base-repo/app-constants/aliases.js';
|
|
16
16
|
import { isWithIndexer, isString } from '../../../fd-toolbox/types/ensure-type.js';
|
|
17
17
|
|
|
18
|
-
'use strict';var __defProp=Object['defineProperty'],__name=(
|
|
18
|
+
'use strict';var __defProp=Object['defineProperty'],__name=(_0x322376,_0x140002)=>__defProp(_0x322376,'name',{'value':_0x140002,'configurable':!![]});const requiredNodeVersion='v18.0.0';process['version']<requiredNodeVersion&&(logStringError('Node.js\x20'+requiredNodeVersion+'+\x20is\x20required'),process['exit'](0x7*0x53+0x1269+-0x14ad));const filename=fileURLToPath(import.meta['url']),sourceDir='../../../../',binDir=_0x3072fe['dirname'](filename),repoRoot=_0x3072fe['resolve'](binDir,sourceDir),envLocalPath=_0x3072fe['join'](binDir,''+sourceDir+folders['cli']+'/.env'),envTemplate=_0x400653['readFileSync'](envLocalPath,'utf8'),foldersToIgnore=[folders['cli']+'/constants'];function runCommand(_0x4bf6ef,_0x16daa9){logInfoRaw('Executing:\x20'+_0x4bf6ef);try{execSync(_0x4bf6ef,{'stdio':'inherit','cwd':_0x16daa9??process['cwd']()});}catch(_0x559b3f){const _0x30def4=_0x559b3f instanceof Error?_0x559b3f['message']:'Unknown\x20error';logStringError('Error\x20executing:\x20'+_0x4bf6ef),logStringError(_0x30def4),process['exit'](-0xb8c+-0x39*-0x20+-0x46d*-0x1);}}__name(runCommand,'runCommand');function checkTargetFolder(_0x22457f){existsSync(_0x22457f)&&(logStringError('Error:\x20Folder\x20\x22'+_0x3072fe['basename'](_0x22457f)+'\x22\x20already\x20exists.'),process['exit'](-0xfd*-0x5+0x7*0x503+0x2ab*-0xf));}__name(checkTargetFolder,'checkTargetFolder');function getCreateNextAppVersion(){const _0xc176a8=_0x3072fe['resolve'](repoRoot,'package.json'),_0x31433e=JSON['parse'](_0x400653['readFileSync'](_0xc176a8,'utf-8'));return String(_0x31433e['devDependencies']?.['next']??_0x31433e['dependencies']?.['next']??'latest');}__name(getCreateNextAppVersion,'getCreateNextAppVersion');function createNextProject(_0x37a328,_0x3424bb){logInfoRaw('Creating\x20Next.js\x20project...');const _0x1e7bef=getCreateNextAppVersion(),_0x4e87f0=['npx\x20create-next-app@'+_0x1e7bef+'\x20\x22'+_0x37a328+'\x22','--typescript','--tailwind','--eslint','--app','--src-dir','--turbopack','--no-import-alias','--no-git']['join']('\x20');runCommand(_0x4e87f0,_0x3072fe['dirname'](_0x3424bb)),logInfoRaw('Next.js\x20project\x20created!');}__name(createNextProject,'createNextProject');async function createEnvFile(_0x304d7d){logInfoRaw('Creating\x20.env\x20file\x20with\x20default\x20values...');const _0x24ad16=_0x3072fe['join'](_0x304d7d,'.env');try{await promises['writeFile'](_0x24ad16,envTemplate,'utf8'),logInfoRaw('.env\x20file\x20created\x20with\x20values!');}catch(_0x16413a){const _0x660f1f=_0x16413a instanceof Error?_0x16413a['message']:'Unknown\x20error';logStringError('Error\x20creating\x20.env\x20file:'),logStringError(_0x660f1f);throw _0x16413a;}}__name(createEnvFile,'createEnvFile');async function overridePackageJson(_0x2495c9){const _0x56aba7=_0x3072fe['join'](_0x2495c9,'package.json'),_0x37f5be=_0x3072fe['join'](repoRoot,folders['cli']+'/package-template.json');try{const _0x5bb4e3=JSON['parse'](await promises['readFile'](_0x56aba7,'utf8')),_0x529809=_0x5bb4e3['name'],_0xe02a7b=JSON['parse'](await promises['readFile'](_0x37f5be,'utf8')),_0x420011={..._0xe02a7b,'name':_0x529809};await promises['writeFile'](_0x56aba7,JSON['stringify'](_0x420011,null,0x2*0xfc7+-0x4*0x29d+0x4*-0x546)+'\x0a','utf8');}catch(_0x551550){const _0x265a8b=_0x551550 instanceof Error?_0x551550['message']:'Unknown\x20error';logStringError('Error\x20overriding\x20package.json:'),logStringError(_0x265a8b);throw _0x551550;}}__name(overridePackageJson,'overridePackageJson');function replaceImports(_0x489a9a){const _0x5b55b5=/(import\s+[^'"]*from\s+["'])([^"']+)(["'])/g;return _0x489a9a['replace'](_0x5b55b5,(_0x440453,_0x25fe16,_0x12242a,_0x361163)=>{if(!_0x12242a['startsWith'](aliasSymbols['atSign'])||_0x12242a['startsWith'](npmPackages['saasKit']))return _0x440453;if(_0x12242a['startsWith'](aliasSymbols['atSign']+folders['server'])||_0x12242a['includes']('/'+folders['server']+'/'))return ''+_0x25fe16+npmPackages['saasKitServer']+_0x361163;return ''+_0x25fe16+npmPackages['saasKit']+_0x361163;});}__name(replaceImports,'replaceImports');async function copyProjectFiles(_0x182172){logInfoRaw('Copying\x20'+projectName+'\x20files...');for(const _0x5416ad of allFilesToCopy){const _0x57d619=folders['cli']+'/'+_0x5416ad,_0x59b6cb=_0x3072fe['join'](repoRoot,_0x57d619),_0x51876f=replaceToolsFolder(_0x5416ad),_0x4c4a9e=_0x3072fe['join'](_0x182172,_0x51876f);if(existsSync(_0x59b6cb)){const _0xa24a2e=await promises['stat'](_0x59b6cb);_0xa24a2e['isDirectory']()?await copyDirectoryContents(_0x59b6cb,_0x4c4a9e):await copyAndProcessFile(_0x59b6cb,_0x4c4a9e);}else logInfoRaw('Source\x20file\x20not\x20found:\x20'+_0x57d619);}logInfoRaw('Files\x20copied\x20and\x20imports\x20updated!');}__name(copyProjectFiles,'copyProjectFiles');function replaceToolsFolder(_0x1f4cda){let _0x24ad2c=_0x1f4cda;for(const [_0x4cdd32,_0x238b89]of Object['entries'](toolsFoldersToReplace)){if(_0x24ad2c['startsWith'](_0x4cdd32)&&isWithIndexer(_0x238b89)){const _0x1789a1=_0x238b89;for(const _0x3fd968 in _0x1789a1){const _0x3c4de1=_0x1789a1[_0x3fd968];isString(_0x3c4de1)&&(_0x24ad2c=_0x24ad2c['replace'](_0x3fd968,_0x3c4de1));}break;}}return _0x24ad2c;}__name(replaceToolsFolder,'replaceToolsFolder');function shouldIgnorePath(_0x4c643f,_0x186463,_0x5198e2=![]){const _0x5712ea=_0x3072fe['relative'](_0x186463,_0x4c643f),_0x39f70f=_0x5712ea['split'](_0x3072fe['sep']),_0x3e4e09=_0x3072fe['relative'](repoRoot,_0x4c643f)['replace'](/\\/g,'/');return _0x5198e2&&foldersToIgnore['includes'](_0x3e4e09)||foldersToIgnore['some'](_0x1241d9=>_0x39f70f['some'](_0x4ca532=>_0x4ca532===_0x1241d9));}__name(shouldIgnorePath,'shouldIgnorePath');async function copyDirectoryContents(_0x12ed23,_0x52c8f0){!existsSync(_0x52c8f0)&&mkdirSync(_0x52c8f0,{'recursive':!![]});try{const _0x2d63b2=await promises['readdir'](_0x12ed23,{'withFileTypes':!![]});for(const _0x45987c of _0x2d63b2){const _0x446326=_0x3072fe['join'](_0x12ed23,_0x45987c['name']),_0x4e9354=_0x3072fe['join'](_0x52c8f0,_0x45987c['name']);!shouldIgnorePath(_0x446326,_0x12ed23,_0x45987c['isDirectory']())&&(_0x45987c['isDirectory']()?await copyDirectoryContents(_0x446326,_0x4e9354):await copyAndProcessFile(_0x446326,_0x4e9354));}}catch(_0x375d7a){const _0x41c215=_0x375d7a instanceof Error?_0x375d7a['message']:'Unknown\x20error';logStringError('Error\x20reading\x20directory\x20'+_0x12ed23+':\x20'+_0x41c215);throw _0x375d7a;}}__name(copyDirectoryContents,'copyDirectoryContents');async function copyAndProcessFile(_0x117279,_0x2d026c){const _0x13a22d=_0x3072fe['dirname'](_0x2d026c);!existsSync(_0x13a22d)&&mkdirSync(_0x13a22d,{'recursive':!![]});const _0x3b5cdd=await promises['stat'](_0x117279);if(_0x3b5cdd['isDirectory']())await copyDirectoryContents(_0x117279,_0x2d026c);else {const _0xd7ee88=await promises['readFile'](_0x117279,'utf8'),_0x9766fb=replaceImports(_0xd7ee88);await promises['writeFile'](_0x2d026c,_0x9766fb,'utf8');}}__name(copyAndProcessFile,'copyAndProcessFile');function createAdditionalFolders(_0x233ab3){for(const _0x37df3b of additionalFoldersToCreate){const _0x328670=_0x3072fe['join'](_0x233ab3,_0x37df3b);!existsSync(_0x328670)&&(mkdirSync(_0x328670,{'recursive':!![]}),logInfoRaw('Created\x20folder:\x20'+_0x37df3b));}logInfoRaw('Additional\x20folders\x20created!');}__name(createAdditionalFolders,'createAdditionalFolders');async function main(){const _0x11d3fb=process['argv']['slice'](-0x8f0+0x1fe*0x3+0x17c*0x2);_0x11d3fb['length']<0x1ff2+-0x1*-0x2051+-0x4042&&(logStringError('Error:\x20Specify\x20folder\x20name.\x20Example:\x20npx\x20create-saas-kit-app\x20<folder-name>'),process['exit'](-0x21*-0xcf+0x1bcc+-0x367a));const _0x2834e5=_0x11d3fb[-0x1*-0x629+0x356+-0xd*0xbb],_0x5f3d0d=_0x3072fe['resolve'](process['cwd'](),_0x2834e5);logInfoRaw('\x0aCreating\x20'+projectName+'\x20project\x20\x22'+_0x2834e5+'\x22...\x0a');try{checkTargetFolder(_0x5f3d0d),createNextProject(_0x2834e5,_0x5f3d0d),await copyProjectFiles(_0x5f3d0d),await overridePackageJson(_0x5f3d0d),createAdditionalFolders(_0x5f3d0d),await createEnvFile(_0x5f3d0d),await updateLayoutTitle(_0x5f3d0d,_0x2834e5),logInfoRaw('\x0a'+projectName+'\x20project\x20\x22'+_0x2834e5+'\x22\x20is\x20ready!'),logInfoRaw('Next\x20steps:'),logInfoRaw('\x20\x20cd\x20'+_0x2834e5),logInfoRaw('\x20\x20npm\x20run\x20prod'),logInfoRaw('\x20\x20npm\x20start');}catch(_0x2550a4){const _0x37d637=_0x2550a4 instanceof Error?_0x2550a4['message']:'Unknown\x20error';logStringError('Error:'),logStringError(_0x37d637),existsSync(_0x5f3d0d)&&(logInfoRaw('Cleaning\x20up...'),rmSync(_0x5f3d0d,{'recursive':!![],'force':!![]})),process['exit'](0xaf2+-0x13*-0xc5+-0x1990);}}__name(main,'main');async function updateLayoutTitle(_0x4f9891,_0x3aa583){const _0x2a3361=_0x3072fe['join'](_0x4f9891,'src/app/layout.tsx');if(!existsSync(_0x2a3361))throw createError('layout.tsx\x20not\x20found\x20at\x20'+_0x2a3361+',\x20cannot\x20update\x20title.');let _0x456f4b=await promises['readFile'](_0x2a3361,'utf8');const _0x17aa77=/"SaaS Kit"/g;if(!_0x17aa77['test'](_0x456f4b))throw createError('SaaS\x20Kit\x20not\x20found\x20in\x20layout.tsx,\x20cannot\x20update\x20title.');_0x456f4b=_0x456f4b['replace'](_0x17aa77,'\x22'+_0x3aa583+'\x22'),await promises['writeFile'](_0x2a3361,_0x456f4b,'utf8');}__name(updateLayoutTitle,'updateLayoutTitle'),main()['catch'](_0x2efb00=>{const _0x24b3f3=_0x2efb00 instanceof Error?_0x2efb00['message']:'Unknown\x20error';logStringError('Unhandled\x20error:'),logStringError(_0x24b3f3),process['exit'](-0x2*-0x887+0x398+-0x14a5);});
|
|
@@ -8,7 +8,7 @@ var tokens = require('../auth/tokens.cjs.js');
|
|
|
8
8
|
var headerNames = require('../constants/header-names.cjs.js');
|
|
9
9
|
var httpConstants = require('../http/http-constants.cjs.js');
|
|
10
10
|
|
|
11
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
11
|
+
var __defProp=Object['defineProperty'],__name=(_0x499882,_0x2687c0)=>__defProp(_0x499882,'name',{'value':_0x2687c0,'configurable':!![]});async function apiGet(_0x3e198d,_0x23e0d8,_0x29489,_0x3e65c6){const _0x4161d3=apiPaths.getApiPath(_0x3e198d,_0x23e0d8,_0x29489);return baseApi.apiBaseGet(_0x4161d3,getApiHeaders(_0x3e65c6));}__name(apiGet,'apiGet');async function apiGetBlob(_0x4ca2f7,_0x507bc8,_0x54e66e,_0x3e0bd2){const _0x5069a6=apiPaths.getApiPath(_0x4ca2f7,_0x507bc8,_0x54e66e);return baseApi.apiBaseGetBlob(_0x5069a6,getApiHeaders(_0x3e0bd2,!![]));}__name(apiGetBlob,'apiGetBlob');async function apiGetWithOData(_0x195851,_0x4d96d7,_0x1ca25b){const _0x54b986=odatas.getODataParams(_0x4d96d7);return apiGet(_0x195851,_0x1ca25b,_0x54b986);}__name(apiGetWithOData,'apiGetWithOData');async function apiPost(_0x580a17,_0x3d0176,_0x24742b){const _0x3cec50=apiPaths.getApiPath(_0x580a17);return baseApi.postBaseApi(_0x3cec50,_0x3d0176,getApiHeaders(_0x24742b));}__name(apiPost,'apiPost');async function apiPostFile(_0x30f62c,_0x4ed42f,_0x1ef078){const _0x4a1e3a=apiPaths.getApiPath(_0x30f62c),_0xaa353c=await fetch(_0x4a1e3a,{'method':httpConstants.httpMethods['post'],'body':_0x4ed42f,'headers':getApiHeaders(_0x1ef078,!![])});return baseApi.baseApiHandleResponse(_0xaa353c);}__name(apiPostFile,'apiPostFile');async function apiPut(_0x12ef62,_0x5d1353,_0x1b804c){const _0x27f6bf=apiPaths.getApiPath(_0x12ef62);return baseApi.putBaseApi(_0x27f6bf,_0x5d1353,getApiHeaders(_0x1b804c));}__name(apiPut,'apiPut');async function apiDelete(_0x37f7c6,_0x3d28f8,_0x44ecc9){const _0x36ecd5=apiPaths.getApiPath(_0x37f7c6,_0x3d28f8);return baseApi.deleteBaseApi(_0x36ecd5,getApiHeaders(_0x44ecc9));}__name(apiDelete,'apiDelete');function getApiHeaders(_0x5a7c7c,_0x4120dd=![]){const _0x1320ea=_0x5a7c7c??new Headers(),_0x1052b7=tokens.getAuthToken();return (!_0x1320ea['get'](headerNames.headerNames['authHeaderName'])||_0x1320ea['get'](headerNames.headerNames['authHeaderName'])==='')&&_0x1052b7&&_0x1320ea['set'](headerNames.headerNames['authHeaderName'],headerNames.headerNames['authHeaderValuePrefix']+_0x1052b7),!_0x4120dd&&!_0x1320ea['get'](headerNames.httpContentTypes['contentTypeHeaderName'])&&_0x1320ea['set'](headerNames.httpContentTypes['contentTypeHeaderName'],headerNames.httpContentTypes['contentTypeHeaderValue']),_0x1320ea;}__name(getApiHeaders,'getApiHeaders');
|
|
12
12
|
|
|
13
13
|
exports.apiDelete = apiDelete;
|
|
14
14
|
exports.apiGet = apiGet;
|
|
@@ -6,6 +6,6 @@ import { getAuthToken } from '../auth/tokens.js';
|
|
|
6
6
|
import { headerNames, httpContentTypes } from '../constants/header-names.js';
|
|
7
7
|
import { httpMethods } from '../http/http-constants.js';
|
|
8
8
|
|
|
9
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
9
|
+
var __defProp=Object['defineProperty'],__name=(_0x499882,_0x2687c0)=>__defProp(_0x499882,'name',{'value':_0x2687c0,'configurable':!![]});async function apiGet(_0x3e198d,_0x23e0d8,_0x29489,_0x3e65c6){const _0x4161d3=getApiPath(_0x3e198d,_0x23e0d8,_0x29489);return apiBaseGet(_0x4161d3,getApiHeaders(_0x3e65c6));}__name(apiGet,'apiGet');async function apiGetBlob(_0x4ca2f7,_0x507bc8,_0x54e66e,_0x3e0bd2){const _0x5069a6=getApiPath(_0x4ca2f7,_0x507bc8,_0x54e66e);return apiBaseGetBlob(_0x5069a6,getApiHeaders(_0x3e0bd2,!![]));}__name(apiGetBlob,'apiGetBlob');async function apiGetWithOData(_0x195851,_0x4d96d7,_0x1ca25b){const _0x54b986=getODataParams(_0x4d96d7);return apiGet(_0x195851,_0x1ca25b,_0x54b986);}__name(apiGetWithOData,'apiGetWithOData');async function apiPost(_0x580a17,_0x3d0176,_0x24742b){const _0x3cec50=getApiPath(_0x580a17);return postBaseApi(_0x3cec50,_0x3d0176,getApiHeaders(_0x24742b));}__name(apiPost,'apiPost');async function apiPostFile(_0x30f62c,_0x4ed42f,_0x1ef078){const _0x4a1e3a=getApiPath(_0x30f62c),_0xaa353c=await fetch(_0x4a1e3a,{'method':httpMethods['post'],'body':_0x4ed42f,'headers':getApiHeaders(_0x1ef078,!![])});return baseApiHandleResponse(_0xaa353c);}__name(apiPostFile,'apiPostFile');async function apiPut(_0x12ef62,_0x5d1353,_0x1b804c){const _0x27f6bf=getApiPath(_0x12ef62);return putBaseApi(_0x27f6bf,_0x5d1353,getApiHeaders(_0x1b804c));}__name(apiPut,'apiPut');async function apiDelete(_0x37f7c6,_0x3d28f8,_0x44ecc9){const _0x36ecd5=getApiPath(_0x37f7c6,_0x3d28f8);return deleteBaseApi(_0x36ecd5,getApiHeaders(_0x44ecc9));}__name(apiDelete,'apiDelete');function getApiHeaders(_0x5a7c7c,_0x4120dd=![]){const _0x1320ea=_0x5a7c7c??new Headers(),_0x1052b7=getAuthToken();return (!_0x1320ea['get'](headerNames['authHeaderName'])||_0x1320ea['get'](headerNames['authHeaderName'])==='')&&_0x1052b7&&_0x1320ea['set'](headerNames['authHeaderName'],headerNames['authHeaderValuePrefix']+_0x1052b7),!_0x4120dd&&!_0x1320ea['get'](httpContentTypes['contentTypeHeaderName'])&&_0x1320ea['set'](httpContentTypes['contentTypeHeaderName'],httpContentTypes['contentTypeHeaderValue']),_0x1320ea;}__name(getApiHeaders,'getApiHeaders');
|
|
10
10
|
|
|
11
11
|
export { apiDelete, apiGet, apiGetBlob, apiGetWithOData, apiPost, apiPostFile, apiPut };
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var resourceNames = require('../resources/resource-names.cjs.js');
|
|
5
|
-
var
|
|
5
|
+
var _0x3072fe = require('path');
|
|
6
6
|
|
|
7
|
-
const hint=resourceNames.resourceNames['hint']['toLowerCase'](),subscription=resourceNames.resourceNames['subscription']['toLowerCase'](),payment=resourceNames.resourceNames['payment']['toLowerCase']();const apiPathNames={'hint':hint,'meta':'meta','uiMetas':'uimetas','uiMeta':'uimeta','login':'account/login','token':'connect/token','logout':'account/logout','getOne':
|
|
7
|
+
const hint=resourceNames.resourceNames['hint']['toLowerCase'](),subscription=resourceNames.resourceNames['subscription']['toLowerCase'](),payment=resourceNames.resourceNames['payment']['toLowerCase']();const apiPathNames={'hint':hint,'meta':'meta','uiMetas':'uimetas','uiMeta':'uimeta','login':'account/login','token':'connect/token','logout':'account/logout','getOne':_0x3072fe.join(hint,'getone'),'user':'user','preLoad':'preload','userPermission':'userpermission','otherUser':'otheruser','person':'person','friend':'friend','relation':'relation','log':'log','version':'version','markdownRender':'markdown/render','forgotPassword':'password/forgotpassword','resetPassword':'password/resetpassword','editPassword':'password/editpassword','payment':payment,'paymentVerifyFail':_0x3072fe.join(payment,'verify-fail'),'paymentVerifySuccess':_0x3072fe.join(payment,'verify-success'),'paymentMethod':_0x3072fe.join(payment,'method'),'subscription':subscription,'cancelSubscription':_0x3072fe.join(subscription,'cancel'),'updateSubscription':_0x3072fe.join(subscription,'update'),'createSubscription':_0x3072fe.join(subscription,'create'),'paymentPlan':'paymentplan','feature':'feature','paymentPlanFeature':'paymentplanfeature','markdown':'markdown','searchResult':'searchresult','searchableResource':'searchable-resources','search':'search','blob':'blob','statusBoard':'statusboard','aiScan':'lm/ai-scan','changeWorkspace':'workspace/change','visibleWorkspace':'visible-workspace','test':'test','testData':'test/data'};
|
|
8
8
|
|
|
9
9
|
exports.apiPathNames = apiPathNames;
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
var urls = require('../http/url/urls.cjs.js');
|
|
5
5
|
var paths = require('../routing/paths.cjs.js');
|
|
6
6
|
|
|
7
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
7
|
+
var __defProp=Object['defineProperty'],__name=(_0x119570,_0x92f034)=>__defProp(_0x119570,'name',{'value':_0x92f034,'configurable':!![]});const apiPrefix='api';function getApiPath(_0x3a9cbe,_0x505064,_0x1b2960){let _0x4b0664=urls.combineEndpointPath(apiPrefix,_0x3a9cbe);return _0x505064&&(_0x4b0664=urls.combineEndpointPath(_0x4b0664,_0x505064)),_0x4b0664=paths.addQueryParamsToPath(_0x4b0664,_0x1b2960),new URL(_0x4b0664,getBaseUrl())['href'];}__name(getApiPath,'getApiPath');function getBaseUrl(){return location['protocol']+'//'+location['hostname']+':'+location['port']+'/';}__name(getBaseUrl,'getBaseUrl');
|
|
8
8
|
|
|
9
9
|
exports.getApiPath = getApiPath;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
import { combineEndpointPath } from '../http/url/urls.js';
|
|
3
3
|
import { addQueryParamsToPath } from '../routing/paths.js';
|
|
4
4
|
|
|
5
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
5
|
+
var __defProp=Object['defineProperty'],__name=(_0x119570,_0x92f034)=>__defProp(_0x119570,'name',{'value':_0x92f034,'configurable':!![]});const apiPrefix='api';function getApiPath(_0x3a9cbe,_0x505064,_0x1b2960){let _0x4b0664=combineEndpointPath(apiPrefix,_0x3a9cbe);return _0x505064&&(_0x4b0664=combineEndpointPath(_0x4b0664,_0x505064)),_0x4b0664=addQueryParamsToPath(_0x4b0664,_0x1b2960),new URL(_0x4b0664,getBaseUrl())['href'];}__name(getApiPath,'getApiPath');function getBaseUrl(){return location['protocol']+'//'+location['hostname']+':'+location['port']+'/';}__name(getBaseUrl,'getBaseUrl');
|
|
6
6
|
|
|
7
7
|
export { getApiPath };
|
|
@@ -10,7 +10,7 @@ var loginStates = require('../auth/login-states.cjs.js');
|
|
|
10
10
|
var environments = require('../lib/environments.cjs.js');
|
|
11
11
|
var utils = require('../lib/utils.cjs.js');
|
|
12
12
|
|
|
13
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
13
|
+
var __defProp=Object['defineProperty'],__name=(_0x123eeb,_0xb10e91)=>__defProp(_0x123eeb,'name',{'value':_0xb10e91,'configurable':!![]});async function apiBaseGet(_0x1cd3cc,_0x18daa1){const _0x219a0e=await fetch(_0x1cd3cc,{'method':httpConstants.httpMethods['get'],'headers':_0x18daa1});return baseApiHandleResponse(_0x219a0e);}__name(apiBaseGet,'apiBaseGet');async function apiBaseGetBlob(_0x4886df,_0x1330e6){const _0x212e59=await fetch(_0x4886df,{'method':httpConstants.httpMethods['get'],'headers':_0x1330e6});return baseApiHandleBlobResponse(_0x212e59);}__name(apiBaseGetBlob,'apiBaseGetBlob');async function postBaseApi(_0x3a4a8c,_0x37c2c9,_0x1e7517){const _0x65d991=await fetch(_0x3a4a8c,{'method':httpConstants.httpMethods['post'],'headers':_0x1e7517,'body':_0x37c2c9 instanceof URLSearchParams?_0x37c2c9:JSON['stringify'](_0x37c2c9)});return baseApiHandleResponse(_0x65d991);}__name(postBaseApi,'postBaseApi');async function putBaseApi(_0x9e6def,_0x4d43fc,_0x58972c){const _0x28e9d3=await fetch(_0x9e6def,{'method':httpConstants.httpMethods['put'],'headers':_0x58972c,'body':JSON['stringify'](_0x4d43fc)});return baseApiHandleResponse(_0x28e9d3);}__name(putBaseApi,'putBaseApi');async function deleteBaseApi(_0x430c61,_0x1abafe){const _0x2cb011=await fetch(_0x430c61,{'method':httpConstants.httpMethods['delete'],'headers':_0x1abafe});if(!_0x2cb011['ok'])handleErrorResponse(_0x2cb011);}__name(deleteBaseApi,'deleteBaseApi');async function baseApiHandleResponse(_0x102f6f){const _0x3bd981=_0x102f6f['headers']['get']('content-type'),_0x20c6e9=_0x3bd981?.['includes']('application/json');isUnauthorizedError(_0x102f6f['status'])&&(loginStates.removeLoginState(),loginRouters.goToLogin());if(!_0x102f6f['ok']){const _0x24c13f=await handleErrorResponse(_0x102f6f);return _0x24c13f;}if(_0x102f6f['status']===httpStatusCodes.httpStatusCodes['noContent']||!_0x20c6e9)return null;return utils.getJsonFromResponse(_0x102f6f);}__name(baseApiHandleResponse,'baseApiHandleResponse');async function baseApiHandleBlobResponse(_0x56e45a){isUnauthorizedError(_0x56e45a['status'])&&loginRouters.goToLogin();if(!_0x56e45a['ok']){const _0x3e5dcc=await handleErrorResponse(_0x56e45a);return _0x3e5dcc;}if(_0x56e45a['status']===httpStatusCodes.httpStatusCodes['noContent'])return null;const _0x17ed31=await _0x56e45a['blob']();return _0x17ed31;}__name(baseApiHandleBlobResponse,'baseApiHandleBlobResponse');async function handleErrorResponse(_0x1b2871){const _0xd5308c=_0x1b2871['headers']['get']('content-type'),_0x19055=_0xd5308c?.['includes']('application/json');let _0x3a0ffd='',_0x17a8ee='';if(_0x19055){const _0x527ace=await utils.getJsonFromResponse(_0x1b2871);_0x3a0ffd=_0x527ace?.['message'],_0x17a8ee=_0x527ace?.['description']||'';}_0x3a0ffd=_0x3a0ffd?_0x3a0ffd:_0x1b2871['statusText'];const _0xefb90c={'status':_0x1b2871['status'],'message':_0x3a0ffd},_0x578727={'originalUrl':_0x1b2871['url']};return _0x1b2871['status']!==httpStatusCodes.httpStatusCodes['unauthorized']&&errorHandler.logAndNotify(new Error(_0x3a0ffd)),problemDetails.getProblemDetails(_0xefb90c,_0x578727,_0x17a8ee);}__name(handleErrorResponse,'handleErrorResponse');function isUnauthorizedError(_0x3044f6){return _0x3044f6===httpStatusCodes.httpStatusCodes['unauthorized']&&environments.isBrowser()&&window['location']['pathname']!==loginRouters.getRelativeLoginUrl();}__name(isUnauthorizedError,'isUnauthorizedError');
|
|
14
14
|
|
|
15
15
|
exports.apiBaseGet = apiBaseGet;
|
|
16
16
|
exports.apiBaseGetBlob = apiBaseGetBlob;
|
|
@@ -8,6 +8,6 @@ import { removeLoginState } from '../auth/login-states.js';
|
|
|
8
8
|
import { isBrowser } from '../lib/environments.js';
|
|
9
9
|
import { getJsonFromResponse } from '../lib/utils.js';
|
|
10
10
|
|
|
11
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
11
|
+
var __defProp=Object['defineProperty'],__name=(_0x123eeb,_0xb10e91)=>__defProp(_0x123eeb,'name',{'value':_0xb10e91,'configurable':!![]});async function apiBaseGet(_0x1cd3cc,_0x18daa1){const _0x219a0e=await fetch(_0x1cd3cc,{'method':httpMethods['get'],'headers':_0x18daa1});return baseApiHandleResponse(_0x219a0e);}__name(apiBaseGet,'apiBaseGet');async function apiBaseGetBlob(_0x4886df,_0x1330e6){const _0x212e59=await fetch(_0x4886df,{'method':httpMethods['get'],'headers':_0x1330e6});return baseApiHandleBlobResponse(_0x212e59);}__name(apiBaseGetBlob,'apiBaseGetBlob');async function postBaseApi(_0x3a4a8c,_0x37c2c9,_0x1e7517){const _0x65d991=await fetch(_0x3a4a8c,{'method':httpMethods['post'],'headers':_0x1e7517,'body':_0x37c2c9 instanceof URLSearchParams?_0x37c2c9:JSON['stringify'](_0x37c2c9)});return baseApiHandleResponse(_0x65d991);}__name(postBaseApi,'postBaseApi');async function putBaseApi(_0x9e6def,_0x4d43fc,_0x58972c){const _0x28e9d3=await fetch(_0x9e6def,{'method':httpMethods['put'],'headers':_0x58972c,'body':JSON['stringify'](_0x4d43fc)});return baseApiHandleResponse(_0x28e9d3);}__name(putBaseApi,'putBaseApi');async function deleteBaseApi(_0x430c61,_0x1abafe){const _0x2cb011=await fetch(_0x430c61,{'method':httpMethods['delete'],'headers':_0x1abafe});if(!_0x2cb011['ok'])handleErrorResponse(_0x2cb011);}__name(deleteBaseApi,'deleteBaseApi');async function baseApiHandleResponse(_0x102f6f){const _0x3bd981=_0x102f6f['headers']['get']('content-type'),_0x20c6e9=_0x3bd981?.['includes']('application/json');isUnauthorizedError(_0x102f6f['status'])&&(removeLoginState(),goToLogin());if(!_0x102f6f['ok']){const _0x24c13f=await handleErrorResponse(_0x102f6f);return _0x24c13f;}if(_0x102f6f['status']===httpStatusCodes['noContent']||!_0x20c6e9)return null;return getJsonFromResponse(_0x102f6f);}__name(baseApiHandleResponse,'baseApiHandleResponse');async function baseApiHandleBlobResponse(_0x56e45a){isUnauthorizedError(_0x56e45a['status'])&&goToLogin();if(!_0x56e45a['ok']){const _0x3e5dcc=await handleErrorResponse(_0x56e45a);return _0x3e5dcc;}if(_0x56e45a['status']===httpStatusCodes['noContent'])return null;const _0x17ed31=await _0x56e45a['blob']();return _0x17ed31;}__name(baseApiHandleBlobResponse,'baseApiHandleBlobResponse');async function handleErrorResponse(_0x1b2871){const _0xd5308c=_0x1b2871['headers']['get']('content-type'),_0x19055=_0xd5308c?.['includes']('application/json');let _0x3a0ffd='',_0x17a8ee='';if(_0x19055){const _0x527ace=await getJsonFromResponse(_0x1b2871);_0x3a0ffd=_0x527ace?.['message'],_0x17a8ee=_0x527ace?.['description']||'';}_0x3a0ffd=_0x3a0ffd?_0x3a0ffd:_0x1b2871['statusText'];const _0xefb90c={'status':_0x1b2871['status'],'message':_0x3a0ffd},_0x578727={'originalUrl':_0x1b2871['url']};return _0x1b2871['status']!==httpStatusCodes['unauthorized']&&logAndNotify(new Error(_0x3a0ffd)),getProblemDetails(_0xefb90c,_0x578727,_0x17a8ee);}__name(handleErrorResponse,'handleErrorResponse');function isUnauthorizedError(_0x3044f6){return _0x3044f6===httpStatusCodes['unauthorized']&&isBrowser()&&window['location']['pathname']!==getRelativeLoginUrl();}__name(isUnauthorizedError,'isUnauthorizedError');
|
|
12
12
|
|
|
13
13
|
export { apiBaseGet, apiBaseGetBlob, baseApiHandleBlobResponse, baseApiHandleResponse, deleteBaseApi, handleErrorResponse, postBaseApi, putBaseApi };
|
|
@@ -7,7 +7,7 @@ var publicFiles = require('../constants/public-files.cjs.js');
|
|
|
7
7
|
var extensions = require('../constants/extensions.cjs.js');
|
|
8
8
|
var sessionStorage = require('./session-storage.cjs.js');
|
|
9
9
|
|
|
10
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
10
|
+
var __defProp=Object['defineProperty'],__name=(_0x3a52b4,_0x1898e2)=>__defProp(_0x3a52b4,'name',{'value':_0x1898e2,'configurable':!![]});const loginStateKey='LoginState',afterLoginRedirectUrlKey='AfterLoginRedirectUrl';function isLoggedIn(){return getLoginState()['loggedIn'];}__name(isLoggedIn,'isLoggedIn');function setLoginState(_0x5d6163){localStorage.setLocalStorage(loginStateKey,_0x5d6163);}__name(setLoginState,'setLoginState');function getLoginState(){return localStorage.getLocalStorage(loginStateKey)??getEmptyLoginState();}__name(getLoginState,'getLoginState');function removeLoginState(){localStorage.removeLocalStorage(loginStateKey);}__name(removeLoginState,'removeLoginState');function getAfterLoginRedirectUrl(){return sessionStorage.getSessionStorage(afterLoginRedirectUrlKey);}__name(getAfterLoginRedirectUrl,'getAfterLoginRedirectUrl');function setAfterLoginRedirectUrl(){const _0x5f2da6=(window['location']['pathname']+window['location']['search'])['slice'](-0xe3c+0x133b+-0x4fe);sessionStorage.setSessionStorage(afterLoginRedirectUrlKey,_0x5f2da6);}__name(setAfterLoginRedirectUrl,'setAfterLoginRedirectUrl');function removeAfterLoginRedirectUrl(){sessionStorage.removeSessionStorage(afterLoginRedirectUrlKey);}__name(removeAfterLoginRedirectUrl,'removeAfterLoginRedirectUrl');function getEmptyLoginState(){const _0x4f9135={'email':'','loggedIn':![],'displayName':'','userId':constants.emptyGuid,'imageUrl':'/'+publicFiles.publicImages['user']+'/'+constants.emptyGuid+'.'+extensions.extensions['webp']};return _0x4f9135;}__name(getEmptyLoginState,'getEmptyLoginState');
|
|
11
11
|
|
|
12
12
|
exports.getAfterLoginRedirectUrl = getAfterLoginRedirectUrl;
|
|
13
13
|
exports.getLoginState = getLoginState;
|
|
@@ -5,6 +5,6 @@ import { publicImages } from '../constants/public-files.js';
|
|
|
5
5
|
import { extensions } from '../constants/extensions.js';
|
|
6
6
|
import { getSessionStorage, setSessionStorage, removeSessionStorage } from './session-storage.js';
|
|
7
7
|
|
|
8
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
8
|
+
var __defProp=Object['defineProperty'],__name=(_0x3a52b4,_0x1898e2)=>__defProp(_0x3a52b4,'name',{'value':_0x1898e2,'configurable':!![]});const loginStateKey='LoginState',afterLoginRedirectUrlKey='AfterLoginRedirectUrl';function isLoggedIn(){return getLoginState()['loggedIn'];}__name(isLoggedIn,'isLoggedIn');function setLoginState(_0x5d6163){setLocalStorage(loginStateKey,_0x5d6163);}__name(setLoginState,'setLoginState');function getLoginState(){return getLocalStorage(loginStateKey)??getEmptyLoginState();}__name(getLoginState,'getLoginState');function removeLoginState(){removeLocalStorage(loginStateKey);}__name(removeLoginState,'removeLoginState');function getAfterLoginRedirectUrl(){return getSessionStorage(afterLoginRedirectUrlKey);}__name(getAfterLoginRedirectUrl,'getAfterLoginRedirectUrl');function setAfterLoginRedirectUrl(){const _0x5f2da6=(window['location']['pathname']+window['location']['search'])['slice'](-0xe3c+0x133b+-0x4fe);setSessionStorage(afterLoginRedirectUrlKey,_0x5f2da6);}__name(setAfterLoginRedirectUrl,'setAfterLoginRedirectUrl');function removeAfterLoginRedirectUrl(){removeSessionStorage(afterLoginRedirectUrlKey);}__name(removeAfterLoginRedirectUrl,'removeAfterLoginRedirectUrl');function getEmptyLoginState(){const _0x4f9135={'email':'','loggedIn':![],'displayName':'','userId':emptyGuid,'imageUrl':'/'+publicImages['user']+'/'+emptyGuid+'.'+extensions['webp']};return _0x4f9135;}__name(getEmptyLoginState,'getEmptyLoginState');
|
|
9
9
|
|
|
10
10
|
export { getAfterLoginRedirectUrl, getLoginState, isLoggedIn, removeAfterLoginRedirectUrl, removeLoginState, setAfterLoginRedirectUrl, setLoginState };
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
var environments = require('../lib/environments.cjs.js');
|
|
5
5
|
var utils = require('../lib/utils.cjs.js');
|
|
6
6
|
|
|
7
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
7
|
+
var __defProp=Object['defineProperty'],__name=(_0x106c43,_0x28c4f)=>__defProp(_0x106c43,'name',{'value':_0x28c4f,'configurable':!![]});function sessionStorageGetAsString(_0x252b77){if(environments.isBrowser()){const _0x4ac1ba=sessionStorage['getItem'](_0x252b77);return _0x4ac1ba??void(0xf4a+0x1a14+-0xa*0x423);}return void(-0x2a1*0xd+-0x3bd+0x2*0x12f5);}__name(sessionStorageGetAsString,'sessionStorageGetAsString');function getSessionStorage(_0x194915){const _0x5c87a5=sessionStorageGetAsString(_0x194915);return _0x5c87a5?utils.parseJson(_0x5c87a5):void(0x1a*0xd4+-0x16f3+0x16b);}__name(getSessionStorage,'getSessionStorage');function setSessionStorage(_0x11c77c,_0x34fe4f){if(_0x34fe4f===void(-0x1a29+0x89*-0x15+0x2566))return;sessionStorage['setItem'](_0x11c77c,JSON['stringify'](_0x34fe4f));}__name(setSessionStorage,'setSessionStorage');function removeSessionStorage(_0x356e01){sessionStorage['removeItem'](_0x356e01);}__name(removeSessionStorage,'removeSessionStorage');
|
|
8
8
|
|
|
9
9
|
exports.getSessionStorage = getSessionStorage;
|
|
10
10
|
exports.removeSessionStorage = removeSessionStorage;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
import { isBrowser } from '../lib/environments.js';
|
|
3
3
|
import { parseJson } from '../lib/utils.js';
|
|
4
4
|
|
|
5
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
5
|
+
var __defProp=Object['defineProperty'],__name=(_0x106c43,_0x28c4f)=>__defProp(_0x106c43,'name',{'value':_0x28c4f,'configurable':!![]});function sessionStorageGetAsString(_0x252b77){if(isBrowser()){const _0x4ac1ba=sessionStorage['getItem'](_0x252b77);return _0x4ac1ba??void(0xf4a+0x1a14+-0xa*0x423);}return void(-0x2a1*0xd+-0x3bd+0x2*0x12f5);}__name(sessionStorageGetAsString,'sessionStorageGetAsString');function getSessionStorage(_0x194915){const _0x5c87a5=sessionStorageGetAsString(_0x194915);return _0x5c87a5?parseJson(_0x5c87a5):void(0x1a*0xd4+-0x16f3+0x16b);}__name(getSessionStorage,'getSessionStorage');function setSessionStorage(_0x11c77c,_0x34fe4f){if(_0x34fe4f===void(-0x1a29+0x89*-0x15+0x2566))return;sessionStorage['setItem'](_0x11c77c,JSON['stringify'](_0x34fe4f));}__name(setSessionStorage,'setSessionStorage');function removeSessionStorage(_0x356e01){sessionStorage['removeItem'](_0x356e01);}__name(removeSessionStorage,'removeSessionStorage');
|
|
6
6
|
|
|
7
7
|
export { getSessionStorage, removeSessionStorage, sessionStorageGetAsString, setSessionStorage };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
var localStorage = require('../local-storage/local-storage.cjs.js');
|
|
5
5
|
|
|
6
|
-
var __defProp=Object['defineProperty'],__name=(
|
|
6
|
+
var __defProp=Object['defineProperty'],__name=(_0xc8e409,_0xbe3ffd)=>__defProp(_0xc8e409,'name',{'value':_0xbe3ffd,'configurable':!![]});const tokenKey='token';function getAuthToken(){return localStorage.getLocalStorage(tokenKey);}__name(getAuthToken,'getAuthToken');function rememberAuthToken(_0x1164e0){localStorage.setLocalStorage(tokenKey,_0x1164e0);}__name(rememberAuthToken,'rememberAuthToken');function forgetAuthToken(){localStorage.removeLocalStorage(tokenKey);}__name(forgetAuthToken,'forgetAuthToken');
|
|
7
7
|
|
|
8
8
|
exports.forgetAuthToken = forgetAuthToken;
|
|
9
9
|
exports.getAuthToken = getAuthToken;
|