@digitaldefiance/express-suite-starter 2.3.5 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/scaffolding/api/.env.example.mustache +52 -0
- package/scaffolding/api/src/assets/.gitkeep +0 -0
- package/scaffolding/api/src/main.ts.mustache +19 -0
- package/scaffolding/api/src/views/index.ejs +34 -0
- package/scaffolding/api-lib/src/index.ts +9 -0
- package/scaffolding/api-lib/src/lib/application.ts +35 -0
- package/scaffolding/api-lib/src/lib/constants.ts.mustache +10 -0
- package/scaffolding/api-lib/src/lib/documents/index.ts +1 -0
- package/scaffolding/api-lib/src/lib/documents/user.ts +17 -0
- package/scaffolding/api-lib/src/lib/environment.ts +52 -0
- package/scaffolding/api-lib/src/lib/interfaces/constants.ts +9 -0
- package/scaffolding/api-lib/src/lib/interfaces/environment-aws.ts +7 -0
- package/scaffolding/api-lib/src/lib/interfaces/environment.ts +9 -0
- package/scaffolding/api-lib/src/lib/middlewares.ts.mustache +113 -0
- package/scaffolding/api-lib/src/lib/models/email-token.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/mnemonic.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/role.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/used-direct-login-token.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/user-role.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/user.ts +14 -0
- package/scaffolding/api-lib/src/lib/routers/api.ts +23 -0
- package/scaffolding/api-lib/src/lib/routers/app.ts +31 -0
- package/scaffolding/api-lib/src/lib/routers/index.ts +2 -0
- package/scaffolding/api-lib/src/lib/schemas/index.ts +2 -0
- package/scaffolding/api-lib/src/lib/schemas/schema.ts +53 -0
- package/scaffolding/api-lib/src/lib/schemas/user.ts +13 -0
- package/scaffolding/api-lib/src/lib/services/email.ts +109 -0
- package/scaffolding/api-lib/src/lib/services/index.ts +1 -0
- package/scaffolding/api-lib/src/lib/shared-types.ts +172 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/.env.example +3 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/Dockerfile +6 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/devcontainer.json.mustache +31 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/docker-compose.yml +31 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/load-env.sh +20 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/post-create.sh.hbs +54 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/.env.example +14 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/Dockerfile +38 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/Mongo.Dockerfile +24 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/devcontainer.json +69 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/docker-compose.yml +66 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/entrypoint.sh +29 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/load-env.sh +20 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/mongodb_entrypoint.sh +124 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/mongodb_healthcheck.sh +36 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/post-create.sh.hbs +54 -0
- package/scaffolding/devcontainer-simple/.devcontainer/.env.example +4 -0
- package/scaffolding/devcontainer-simple/.devcontainer/devcontainer.json.mustache +60 -0
- package/scaffolding/devcontainer-simple/.devcontainer/post-create.sh.hbs +72 -0
- package/scaffolding/inituserdb/.env.example.mustache +9 -0
- package/scaffolding/inituserdb/src/main.ts.mustache +178 -0
- package/scaffolding/lib/src/index.ts.mustache +6 -0
- package/scaffolding/lib/src/lib/constants.ts.mustache +15 -0
- package/scaffolding/lib/src/lib/ecies-config.ts +10 -0
- package/scaffolding/lib/src/lib/enumerations/{{workspaceName}}-string-key.ts.mustache +5 -0
- package/scaffolding/lib/src/lib/i18n-setup.ts.mustache +99 -0
- package/scaffolding/lib/src/lib/interfaces/constants.ts +13 -0
- package/scaffolding/lib/src/lib/strings-collection.ts.mustache +45 -0
- package/scaffolding/react/src/app/app.tsx.mustache +170 -0
- package/scaffolding/react/src/app/menus/extraMenu.tsx +20 -0
- package/scaffolding/react/src/app/menus/index.ts +5 -0
- package/scaffolding/react/src/app/pages/SplashPage.tsx +60 -0
- package/scaffolding/react/src/app/theme.tsx.mustache +91 -0
- package/scaffolding/react/src/assets/albatross.ico +0 -0
- package/scaffolding/react/src/assets/albatross.png +0 -0
- package/scaffolding/react/src/assets/albatross.svg +108 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.otf +0 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.ttf +0 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.woff +0 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.woff2 +0 -0
- package/scaffolding/react/src/assets/gen-by-albatross.png +0 -0
- package/scaffolding/react/src/assets/gen-by-albatross.svg +124 -0
- package/scaffolding/react/src/config/ecies.ts +10 -0
- package/scaffolding/react/src/config/runtime-config.ts +25 -0
- package/scaffolding/react/src/environments/environment.prod.ts.mustache +16 -0
- package/scaffolding/react/src/environments/environment.ts +15 -0
- package/scaffolding/react/src/interfaces/environment.ts +5 -0
- package/scaffolding/react/src/main.tsx +22 -0
- package/scaffolding/react/src/styles.scss +103 -0
- package/scaffolding/react/src/test-setup.ts +1 -0
- package/scaffolding/react-lib/src/index.ts +6 -0
- package/scaffolding/react-lib/src/theme/theme.tsx +67 -0
- package/scaffolding/root/.github/dependabot.yml +11 -0
- package/scaffolding/root/.github/workflows/ci.yml +44 -0
- package/scaffolding/root/.vscode/extensions.json +9 -0
- package/scaffolding/root/DEPLOYMENT.md +104 -0
- package/scaffolding/root/do-yarn.sh +148 -0
- package/scaffolding/root/ensure-git-globals.sh +30 -0
- package/scaffolding/root/eslint.config.mjs +70 -0
- package/scaffolding/root/list-scripts.sh +12 -0
- package/scaffolding/root/npm-install-globals.sh +5 -0
- package/scaffolding/root/nuke-node-modules.sh +23 -0
- package/scaffolding/root/recover-yarn.sh +37 -0
- package/scaffolding/root/reset.sh.mustache +25 -0
- package/scaffolding/root/setup-nvm.sh +15 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# Ensure corepack is enabled and we're using the right yarn version
|
|
5
|
+
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
|
6
|
+
corepack enable
|
|
7
|
+
|
|
8
|
+
# Source NVM if available
|
|
9
|
+
if [ -s "/usr/local/share/nvm/nvm.sh" ]; then
|
|
10
|
+
. /usr/local/share/nvm/nvm.sh
|
|
11
|
+
elif [ -s "${HOME}/.nvm/nvm.sh" ]; then
|
|
12
|
+
. "${HOME}/.nvm/nvm.sh"
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
# Find all package.json files, excluding node_modules, dist, and hidden directories
|
|
16
|
+
PACKAGE_ROOTS=$(find . -type f -name "package.json" ! -path "*/node_modules/*" ! -path "*/dist/*" ! -path "*/.*/*")
|
|
17
|
+
|
|
18
|
+
# Make sure we start with the project root
|
|
19
|
+
PROJECT_ROOT=$(pwd -P)
|
|
20
|
+
|
|
21
|
+
if command -v realpath >/dev/null 2>&1; then
|
|
22
|
+
resolve_path() {
|
|
23
|
+
realpath -m "$1"
|
|
24
|
+
}
|
|
25
|
+
else
|
|
26
|
+
resolve_path() {
|
|
27
|
+
local path="$1"
|
|
28
|
+
if [ -z "$path" ]; then
|
|
29
|
+
return 1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
if [ -d "$path" ]; then
|
|
33
|
+
(cd "$path" 2>/dev/null && pwd -P) || return 1
|
|
34
|
+
return 0
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
local dir
|
|
38
|
+
dir=$(dirname "$path")
|
|
39
|
+
if [ -z "$dir" ] || [ "$dir" = "." ]; then
|
|
40
|
+
dir="$PWD"
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
local base
|
|
44
|
+
base=$(basename "$path")
|
|
45
|
+
|
|
46
|
+
(cd "$dir" 2>/dev/null && printf '%s/%s\n' "$(pwd -P)" "$base") || return 1
|
|
47
|
+
}
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
trim_whitespace() {
|
|
51
|
+
local trimmed="$1"
|
|
52
|
+
trimmed="${trimmed#"${trimmed%%[![:space:]]*}"}"
|
|
53
|
+
trimmed="${trimmed%"${trimmed##*[![:space:]]}"}"
|
|
54
|
+
printf '%s' "$trimmed"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
IGNORE_PATHS=()
|
|
58
|
+
|
|
59
|
+
add_ignore_path() {
|
|
60
|
+
local candidate="$1"
|
|
61
|
+
[ -n "$candidate" ] || return
|
|
62
|
+
for existing in "${IGNORE_PATHS[@]}"; do
|
|
63
|
+
if [ "$existing" = "$candidate" ]; then
|
|
64
|
+
return
|
|
65
|
+
fi
|
|
66
|
+
done
|
|
67
|
+
IGNORE_PATHS+=("$candidate")
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
while IFS= read -r IGNORE_FILE; do
|
|
71
|
+
[ -n "$IGNORE_FILE" ] || continue
|
|
72
|
+
IGNORE_DIR=$(dirname "$IGNORE_FILE")
|
|
73
|
+
IGNORE_DIR_ABS=$(cd "$IGNORE_DIR" 2>/dev/null && pwd -P)
|
|
74
|
+
[ -n "$IGNORE_DIR_ABS" ] || continue
|
|
75
|
+
|
|
76
|
+
while IFS= read -r RAW_PATTERN || [ -n "$RAW_PATTERN" ]; do
|
|
77
|
+
PATTERN=$(trim_whitespace "$RAW_PATTERN")
|
|
78
|
+
[ -n "$PATTERN" ] || continue
|
|
79
|
+
if [ "${PATTERN:0:1}" = "#" ]; then
|
|
80
|
+
continue
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
if [ "${PATTERN:0:1}" = "/" ]; then
|
|
84
|
+
CANDIDATE="$PATTERN"
|
|
85
|
+
else
|
|
86
|
+
CANDIDATE="$IGNORE_DIR_ABS/$PATTERN"
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
if ! RESOLVED=$(resolve_path "$CANDIDATE"); then
|
|
90
|
+
continue
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
RESOLVED="${RESOLVED%/}"
|
|
94
|
+
if [ -f "$RESOLVED" ]; then
|
|
95
|
+
RESOLVED=$(dirname "$RESOLVED")
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
add_ignore_path "$RESOLVED"
|
|
99
|
+
done < "$IGNORE_FILE"
|
|
100
|
+
done < <(find . -type f -name ".doyarnignore" ! -path "*/node_modules/*" ! -path "*/dist/*" ! -path "*/.*/*" 2>/dev/null)
|
|
101
|
+
|
|
102
|
+
# Run yarn in the project root using corepack
|
|
103
|
+
echo "Running yarn in $PROJECT_ROOT"
|
|
104
|
+
#corepack yarn "$@"
|
|
105
|
+
NODE_OPTIONS="--max_old_space_size=3072" corepack yarn "$@"
|
|
106
|
+
|
|
107
|
+
# Loop through each package.json file
|
|
108
|
+
for PACKAGE in $PACKAGE_ROOTS; do
|
|
109
|
+
# Get the directory containing the package.json file
|
|
110
|
+
PACKAGE_DIR=$(dirname "$PACKAGE")
|
|
111
|
+
|
|
112
|
+
PACKAGE_DIR_ABS=$(resolve_path "$PACKAGE_DIR")
|
|
113
|
+
[ -n "$PACKAGE_DIR_ABS" ] || continue
|
|
114
|
+
|
|
115
|
+
# Skip the project root directory
|
|
116
|
+
if [ "$PACKAGE_DIR_ABS" = "$PROJECT_ROOT" ]; then
|
|
117
|
+
continue
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
SKIP_PACKAGE=false
|
|
121
|
+
if [ ${#IGNORE_PATHS[@]} -gt 0 ]; then
|
|
122
|
+
for IGNORE_PATH in "${IGNORE_PATHS[@]}"; do
|
|
123
|
+
[ -n "$IGNORE_PATH" ] || continue
|
|
124
|
+
case "$PACKAGE_DIR_ABS" in
|
|
125
|
+
"$IGNORE_PATH"|"$IGNORE_PATH"/*)
|
|
126
|
+
echo "Skipping yarn in $PACKAGE_DIR (ignored by .doyarnignore)"
|
|
127
|
+
SKIP_PACKAGE=true
|
|
128
|
+
break
|
|
129
|
+
;;
|
|
130
|
+
esac
|
|
131
|
+
done
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
if [ "$SKIP_PACKAGE" = true ]; then
|
|
135
|
+
continue
|
|
136
|
+
fi
|
|
137
|
+
|
|
138
|
+
# Change to the package directory
|
|
139
|
+
cd "$PACKAGE_DIR" || exit
|
|
140
|
+
|
|
141
|
+
# Run yarn using corepack
|
|
142
|
+
echo "Running yarn in $PACKAGE_DIR"
|
|
143
|
+
#corepack yarn "$@"
|
|
144
|
+
NODE_OPTIONS="--max_old_space_size=3072" corepack yarn "$@"
|
|
145
|
+
|
|
146
|
+
# Return to the project root directory
|
|
147
|
+
cd "$PROJECT_ROOT" || exit
|
|
148
|
+
done
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
if [ -z "${GIT_EMAIL}" ]; then
|
|
3
|
+
echo "GIT_EMAIL is not set. Please set it to your email address."
|
|
4
|
+
exit 1
|
|
5
|
+
fi
|
|
6
|
+
if [ -z "${GIT_NAME}" ]; then
|
|
7
|
+
echo "GIT_NAME is not set. Please set it to your name."
|
|
8
|
+
exit 1
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
# Check if user.email is already set
|
|
12
|
+
CURRENT_EMAIL=$(git config --global --get user.email || echo "")
|
|
13
|
+
# Check if user.name is already set
|
|
14
|
+
CURRENT_NAME=$(git config --global --get user.name || echo "")
|
|
15
|
+
|
|
16
|
+
# Set user.email if it's not set or different from GIT_EMAIL
|
|
17
|
+
if [ -z "${CURRENT_EMAIL}" ] || [ "${CURRENT_EMAIL}" != "${GIT_EMAIL}" ]; then
|
|
18
|
+
echo "Setting git global user.email to ${GIT_EMAIL}"
|
|
19
|
+
git config --global user.email "${GIT_EMAIL}"
|
|
20
|
+
else
|
|
21
|
+
echo "Git global user.email already set to ${CURRENT_EMAIL}"
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Set user.name if it's not set or different from GIT_NAME
|
|
25
|
+
if [ -z "${CURRENT_NAME}" ] || [ "${CURRENT_NAME}" != "${GIT_NAME}" ]; then
|
|
26
|
+
echo "Setting git global user.name to ${GIT_NAME}"
|
|
27
|
+
git config --global user.name "${GIT_NAME}"
|
|
28
|
+
else
|
|
29
|
+
echo "Git global user.name already set to ${CURRENT_NAME}"
|
|
30
|
+
fi
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// eslint.config.mjs
|
|
2
|
+
|
|
3
|
+
import typescriptPlugin from '@typescript-eslint/eslint-plugin';
|
|
4
|
+
import typescriptParser from '@typescript-eslint/parser';
|
|
5
|
+
import prettierConfig from 'eslint-config-prettier';
|
|
6
|
+
import prettierPlugin from 'eslint-plugin-prettier';
|
|
7
|
+
import reactPlugin from 'eslint-plugin-react';
|
|
8
|
+
import reactHooksPlugin from 'eslint-plugin-react-hooks';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
|
|
12
|
+
// Get the directory name of the current module
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = path.dirname(__filename);
|
|
15
|
+
|
|
16
|
+
export default [
|
|
17
|
+
{
|
|
18
|
+
ignores: ['**/dist', '**/node_modules', '**/.nx'],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
files: ['**/*.{ts,tsx,js,jsx}'],
|
|
22
|
+
languageOptions: {
|
|
23
|
+
parser: typescriptParser,
|
|
24
|
+
parserOptions: {
|
|
25
|
+
project: path.resolve(__dirname, './tsconfig.base.json'), // Use absolute path to the root tsconfig.base.json
|
|
26
|
+
ecmaVersion: 2023,
|
|
27
|
+
sourceType: 'module',
|
|
28
|
+
ecmaFeatures: {
|
|
29
|
+
jsx: true,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
plugins: {
|
|
34
|
+
'@typescript-eslint': typescriptPlugin,
|
|
35
|
+
react: reactPlugin,
|
|
36
|
+
'react-hooks': reactHooksPlugin,
|
|
37
|
+
prettier: prettierPlugin,
|
|
38
|
+
},
|
|
39
|
+
rules: {
|
|
40
|
+
// Recommended rules from plugins
|
|
41
|
+
...typescriptPlugin.configs.recommended.rules,
|
|
42
|
+
...reactPlugin.configs.recommended.rules,
|
|
43
|
+
...reactHooksPlugin.configs.recommended.rules,
|
|
44
|
+
...prettierConfig.rules,
|
|
45
|
+
|
|
46
|
+
// Disable conflicting core rules
|
|
47
|
+
'no-empty-function': 'off',
|
|
48
|
+
|
|
49
|
+
// TypeScript-specific rules
|
|
50
|
+
'@typescript-eslint/no-empty-function': [
|
|
51
|
+
'error',
|
|
52
|
+
{ allow: ['arrowFunctions', 'functions'] },
|
|
53
|
+
],
|
|
54
|
+
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
55
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
56
|
+
'@typescript-eslint/ban-types': 'off',
|
|
57
|
+
'@typescript-eslint/no-unused-vars': 'error',
|
|
58
|
+
|
|
59
|
+
// Other custom rules
|
|
60
|
+
'prettier/prettier': 'error',
|
|
61
|
+
'react/prop-types': 'off',
|
|
62
|
+
'react/react-in-jsx-scope': 'off',
|
|
63
|
+
},
|
|
64
|
+
settings: {
|
|
65
|
+
react: {
|
|
66
|
+
version: 'detect',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Check if jq is installed
|
|
4
|
+
if ! command -v jq &> /dev/null
|
|
5
|
+
then
|
|
6
|
+
echo "jq could not be found. Please install jq to use this script."
|
|
7
|
+
exit
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
# Read and list the scripts from package.json
|
|
11
|
+
echo "Available scripts in package.json:"
|
|
12
|
+
jq -r '.scripts | to_entries[] | "\(.key): \(.value)"' package.json
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Find all package.json files, excluding node_modules, dist, and hidden directories
|
|
4
|
+
PACKAGE_ROOTS=$(find . -type f -name "package.json" ! -path "*/node_modules/*" ! -path "*/dist/*" ! -path "*/.*/*")
|
|
5
|
+
|
|
6
|
+
# Make sure we start with the project root
|
|
7
|
+
PROJECT_ROOT=$(pwd)
|
|
8
|
+
|
|
9
|
+
# Loop through each package.json file
|
|
10
|
+
for PACKAGE in $PACKAGE_ROOTS; do
|
|
11
|
+
# Get the directory containing the package.json file
|
|
12
|
+
PACKAGE_DIR=$(dirname "$PACKAGE")
|
|
13
|
+
|
|
14
|
+
# Change to the package directory
|
|
15
|
+
cd "$PACKAGE_DIR" || exit
|
|
16
|
+
|
|
17
|
+
# Run yarn
|
|
18
|
+
echo "Running `rm -rf node_modules` in $PACKAGE_DIR"
|
|
19
|
+
rm -rf node_modules/
|
|
20
|
+
|
|
21
|
+
# Return to the project root directory
|
|
22
|
+
cd "$PROJECT_ROOT" || exit
|
|
23
|
+
done
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# Ensure NVM is loaded and the correct Node version is active
|
|
5
|
+
if [ -s "/usr/local/share/nvm/nvm.sh" ]; then
|
|
6
|
+
echo "=== DEBUG: Sourcing NVM from /usr/local/share/nvm/nvm.sh"
|
|
7
|
+
. /usr/local/share/nvm/nvm.sh
|
|
8
|
+
elif [ -s "$HOME/.nvm/nvm.sh" ]; then
|
|
9
|
+
echo "=== DEBUG: Sourcing NVM from $HOME/.nvm/nvm.sh"
|
|
10
|
+
. "$HOME/.nvm/nvm.sh"
|
|
11
|
+
fi
|
|
12
|
+
# Only run nvm use if .nvmrc exists, otherwise skip and continue
|
|
13
|
+
if [ -f ".nvmrc" ]; then
|
|
14
|
+
nvm use
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
# Set the desired Yarn version (default to 4.9.2 if not set)
|
|
18
|
+
DEFAULT_YARN_VERSION=${DEFAULT_YARN_VERSION:-4.9.2}
|
|
19
|
+
|
|
20
|
+
echo "Clearing .yarnrc, .yarnrc.yml, and .yarn"
|
|
21
|
+
rm -rf .yarnrc .yarnrc.yml .yarn
|
|
22
|
+
|
|
23
|
+
echo "Enabling corepack"
|
|
24
|
+
corepack enable
|
|
25
|
+
|
|
26
|
+
echo "Preparing yarn@${DEFAULT_YARN_VERSION} for immediate activation..."
|
|
27
|
+
corepack prepare yarn@${DEFAULT_YARN_VERSION} --activate
|
|
28
|
+
|
|
29
|
+
echo "Setting yarn version to ${DEFAULT_YARN_VERSION}"
|
|
30
|
+
corepack yarn set version ${DEFAULT_YARN_VERSION}
|
|
31
|
+
|
|
32
|
+
echo "Yarn version after setup:"
|
|
33
|
+
corepack yarn --version
|
|
34
|
+
|
|
35
|
+
echo "=== DEBUG: which yarn: $(which yarn)"
|
|
36
|
+
echo "=== DEBUG: yarn --version: $(yarn --version)"
|
|
37
|
+
echo "=== DEBUG: corepack yarn version: $(corepack yarn --version 2>&1 || echo 'corepack yarn not available')"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
SKIP_INSTALL=0
|
|
4
|
+
if [ "$1" == "--skip-install" ]; then
|
|
5
|
+
SKIP_INSTALL=1
|
|
6
|
+
fi
|
|
7
|
+
|
|
8
|
+
# change directories into the script directory
|
|
9
|
+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
10
|
+
cd "$SCRIPT_DIR"
|
|
11
|
+
echo "Resetting the NX project"
|
|
12
|
+
npx nx reset
|
|
13
|
+
echo "Removing dist and node_modules directories"
|
|
14
|
+
rm -rf dist node_modules ./{{prefix}}-lib/node_modules ./{{prefix}}-api/node_modules ./{{prefix}}-react/node_modules ./{{prefix}}-api-lib/node_modules ./{{prefix}}-test-utils/node_modules ./tools/node_modules
|
|
15
|
+
rm -rf yarn.lock ./{{prefix}}-lib/yarn.lock ./{{prefix}}-api/yarn.lock ./{{prefix}}-react/yarn.lock
|
|
16
|
+
|
|
17
|
+
echo "Doing yarn cache clean"
|
|
18
|
+
./do-yarn.sh cache clean
|
|
19
|
+
|
|
20
|
+
if [ $SKIP_INSTALL -eq 0 ]; then
|
|
21
|
+
echo "Doing yarn install"
|
|
22
|
+
./do-yarn.sh install
|
|
23
|
+
else
|
|
24
|
+
echo "Skipping yarn install"
|
|
25
|
+
fi
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
|
3
|
+
|
|
4
|
+
if [ -d "$HOME/.nvm" ]; then
|
|
5
|
+
export NVM_DIR="$HOME/.nvm"
|
|
6
|
+
elif [ -d "/usr/local/share/nvm" ]; then
|
|
7
|
+
export NVM_DIR="/usr/local/share/nvm"
|
|
8
|
+
fi
|
|
9
|
+
if [ -n "$NVM_DIR" ]; then
|
|
10
|
+
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
|
11
|
+
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
|
12
|
+
sudo chmod -R 755 "${NVM_DIR}"
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
nvm install ${DEFAULT_NVM_VERSION} && nvm use ${DEFAULT_NVM_VERSION}
|