@tomei/sso 0.64.1 → 0.65.1-test.1
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/.commitlintrc.json +22 -22
- package/.gitlab-ci.yml +237 -16
- package/.husky/commit-msg +15 -15
- package/.husky/pre-commit +7 -7
- package/.prettierrc +4 -4
- package/Jenkinsfile +57 -57
- package/README.md +23 -23
- package/__tests__/unit/components/api-key/api-key.spec.ts +201 -0
- package/__tests__/unit/components/group/group.spec.ts +85 -79
- package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
- package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
- package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +74 -66
- package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
- package/__tests__/unit/components/login-user/l.spec.ts +746 -746
- package/__tests__/unit/components/login-user/login.spec.ts +2358 -1164
- package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
- package/__tests__/unit/components/system/system.spec.ts +255 -254
- package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -83
- package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
- package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
- package/__tests__/unit/components/user-password-history/user-password-history.spec.ts +165 -0
- package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
- package/__tests__/unit/components/user-reporting-hierarchy/user-reporting-hierarchy.spec.ts +233 -0
- package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
- package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
- package/__tests__/unit/session/session.service.spec.ts +47 -47
- package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
- package/coverage/cobertura-coverage.xml +6837 -0
- package/coverage/test-report.xml +130 -40
- package/create-sso-user.sql +39 -39
- package/dist/__tests__/unit/components/{group-privilege/group-privilege.test.d.ts → api-key/api-key.spec.d.ts} +1 -1
- package/dist/__tests__/unit/components/api-key/api-key.spec.js +158 -0
- package/dist/__tests__/unit/components/api-key/api-key.spec.js.map +1 -0
- package/dist/__tests__/unit/components/group/group.spec.js +4 -0
- package/dist/__tests__/unit/components/group/group.spec.js.map +1 -1
- package/dist/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.js +9 -1
- package/dist/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.js.map +1 -1
- package/dist/__tests__/unit/components/login-user/login.spec.js +703 -0
- package/dist/__tests__/unit/components/login-user/login.spec.js.map +1 -1
- package/dist/__tests__/unit/components/system/system.spec.js +1 -0
- package/dist/__tests__/unit/components/system/system.spec.js.map +1 -1
- package/dist/__tests__/unit/components/user-password-history/user-password-history.spec.d.ts +1 -0
- package/dist/__tests__/unit/components/user-password-history/user-password-history.spec.js +138 -0
- package/dist/__tests__/unit/components/user-password-history/user-password-history.spec.js.map +1 -0
- package/dist/__tests__/unit/components/user-reporting-hierarchy/user-reporting-hierarchy.spec.d.ts +1 -0
- package/dist/__tests__/unit/components/user-reporting-hierarchy/user-reporting-hierarchy.spec.js +182 -0
- package/dist/__tests__/unit/components/user-reporting-hierarchy/user-reporting-hierarchy.spec.js.map +1 -0
- package/dist/src/components/login-user/user.js +1 -1
- package/dist/src/components/login-user/user.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.mjs +58 -58
- package/jest.config.js +16 -14
- package/migrations/20240314080602-create-user-table.js +124 -124
- package/migrations/20240314080603-create-user-group-table.js +85 -85
- package/migrations/20240314080604-create-user-user-group-table.js +55 -55
- package/migrations/20240314080605-create-login-history-table.js +53 -53
- package/migrations/20240527064925-create-system-table.js +78 -78
- package/migrations/20240527064926-create-system-privilege-table.js +71 -71
- package/migrations/20240527065342-create-group-table.js +93 -93
- package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
- package/migrations/20240528011551-create-group-system-access-table.js +72 -72
- package/migrations/20240528023018-user-system-access-table.js +75 -75
- package/migrations/20240528032229-user-privilege-table.js +76 -76
- package/migrations/20240528063003-create-group-privilege-table.js +76 -76
- package/migrations/20240528063051-create-group-object-privilege-table.js +84 -84
- package/migrations/20240528063107-create-user-object-privilege-table.js +84 -84
- package/migrations/20240528063108-create-api-key-table.js +85 -85
- package/migrations/20241104104802-create-building-table.js +95 -95
- package/migrations/20250108091132-add-area-manager-user-id-to-building-table.js +14 -14
- package/migrations/20250108091133-add-passcode-to-user-table.js +36 -36
- package/migrations/20250210115636-create-user-reporting-hierarchy.js +76 -76
- package/migrations/20250326043818-crate-user-password-history.js +42 -42
- package/migrations/20250610070720-added-MFBypassYN-to-sso-user.js +30 -30
- package/migrations/20250805085707-add-bulk-approval-code-to-sso-user.js +29 -0
- package/package.json +87 -87
- package/sampledotenv +7 -7
- package/src/components/login-user/user.ts +1 -1
- package/tsconfig.build.json +5 -5
- package/tsconfig.json +23 -23
- package/coverage/clover.xml +0 -1380
- package/coverage/coverage-final.json +0 -39
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.repository.ts.html +0 -160
- package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.ts.html +0 -919
- package/coverage/lcov-report/components/group-object-privilege/index.html +0 -131
- package/coverage/lcov-report/components/group-privilege/group-privilege.repository.ts.html +0 -172
- package/coverage/lcov-report/components/group-privilege/group-privilege.ts.html +0 -337
- package/coverage/lcov-report/components/group-privilege/index.html +0 -131
- package/coverage/lcov-report/components/group-system-access/group-system-access.repository.ts.html +0 -214
- package/coverage/lcov-report/components/group-system-access/group-system-access.ts.html +0 -355
- package/coverage/lcov-report/components/group-system-access/index.html +0 -131
- package/coverage/lcov-report/components/password-hash/index.html +0 -116
- package/coverage/lcov-report/components/password-hash/password-hash.service.ts.html +0 -127
- package/coverage/lcov-report/components/system-privilege/index.html +0 -116
- package/coverage/lcov-report/components/system-privilege/system-privilege.repository.ts.html +0 -139
- package/coverage/lcov-report/components/user-group/index.html +0 -131
- package/coverage/lcov-report/components/user-group/user-group.repository.ts.html +0 -142
- package/coverage/lcov-report/components/user-group/user-group.ts.html +0 -2377
- package/coverage/lcov-report/components/user-object-privilege/index.html +0 -131
- package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.repository.ts.html +0 -118
- package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.ts.html +0 -322
- package/coverage/lcov-report/components/user-privilege/index.html +0 -131
- package/coverage/lcov-report/components/user-privilege/user-privilege.repository.ts.html +0 -160
- package/coverage/lcov-report/components/user-privilege/user-privilege.ts.html +0 -2071
- package/coverage/lcov-report/components/user-system-access/index.html +0 -131
- package/coverage/lcov-report/components/user-system-access/user-system-access.repository.ts.html +0 -208
- package/coverage/lcov-report/components/user-system-access/user-system-access.ts.html +0 -2236
- package/coverage/lcov-report/enum/api-key.enum.ts.html +0 -100
- package/coverage/lcov-report/enum/group-type.enum.ts.html +0 -109
- package/coverage/lcov-report/enum/index.html +0 -206
- package/coverage/lcov-report/enum/index.ts.html +0 -103
- package/coverage/lcov-report/enum/login-status.enum.ts.html +0 -97
- package/coverage/lcov-report/enum/object-status.enum.ts.html +0 -97
- package/coverage/lcov-report/enum/user-status.enum.ts.html +0 -106
- package/coverage/lcov-report/enum/yn.enum.ts.html +0 -97
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -296
- package/coverage/lcov-report/models/group-object-privilege.entity.ts.html +0 -358
- package/coverage/lcov-report/models/group-privilege.entity.ts.html +0 -319
- package/coverage/lcov-report/models/group-reporting-user.entity.ts.html +0 -370
- package/coverage/lcov-report/models/group-system-access.entity.ts.html +0 -328
- package/coverage/lcov-report/models/group.entity.ts.html +0 -466
- package/coverage/lcov-report/models/index.html +0 -296
- package/coverage/lcov-report/models/staff.entity.ts.html +0 -358
- package/coverage/lcov-report/models/system-privilege.entity.ts.html +0 -355
- package/coverage/lcov-report/models/system.entity.ts.html +0 -424
- package/coverage/lcov-report/models/user-group.entity.ts.html +0 -358
- package/coverage/lcov-report/models/user-object-privilege.entity.ts.html +0 -355
- package/coverage/lcov-report/models/user-privilege.entity.ts.html +0 -319
- package/coverage/lcov-report/models/user-system-access.entity.ts.html +0 -346
- package/coverage/lcov-report/models/user.entity.ts.html +0 -685
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/redis-client/index.html +0 -116
- package/coverage/lcov-report/redis-client/redis.service.ts.html +0 -310
- package/coverage/lcov-report/session/index.html +0 -116
- package/coverage/lcov-report/session/session.service.ts.html +0 -373
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -2223
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +0 -71
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js.map +0 -1
- package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +0 -0
- package/dist/__tests__/unit/components/login-user/login-user.spec.js +0 -6
- package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +0 -1
- package/sonar-project.properties +0 -23
package/.commitlintrc.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"@commitlint/config-conventional"
|
|
4
|
-
],
|
|
5
|
-
"rules": {
|
|
6
|
-
"header-max-length": [ 2, "always", 120 ],
|
|
7
|
-
"type-enum": [
|
|
8
|
-
2,
|
|
9
|
-
"always",
|
|
10
|
-
[
|
|
11
|
-
"breaking",
|
|
12
|
-
"feat",
|
|
13
|
-
"fix",
|
|
14
|
-
"refactor",
|
|
15
|
-
"config",
|
|
16
|
-
"test",
|
|
17
|
-
"docs",
|
|
18
|
-
"chore"
|
|
19
|
-
]
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"@commitlint/config-conventional"
|
|
4
|
+
],
|
|
5
|
+
"rules": {
|
|
6
|
+
"header-max-length": [ 2, "always", 120 ],
|
|
7
|
+
"type-enum": [
|
|
8
|
+
2,
|
|
9
|
+
"always",
|
|
10
|
+
[
|
|
11
|
+
"breaking",
|
|
12
|
+
"feat",
|
|
13
|
+
"fix",
|
|
14
|
+
"refactor",
|
|
15
|
+
"config",
|
|
16
|
+
"test",
|
|
17
|
+
"docs",
|
|
18
|
+
"chore"
|
|
19
|
+
]
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
package/.gitlab-ci.yml
CHANGED
|
@@ -1,16 +1,237 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
# ============================================================
|
|
2
|
+
# .gitlab-ci.yml — npm package with trusted publishing (OIDC)
|
|
3
|
+
#
|
|
4
|
+
# Project path: all-tomei-projects/tomei-package/General/<package-name>
|
|
5
|
+
#
|
|
6
|
+
# Tag patterns:
|
|
7
|
+
# test-vX.Y.Z-rc.N → npm publish --tag test (RC for test env)
|
|
8
|
+
# staging-vX.Y.Z-rc.N → npm publish --tag staging (RC for staging env)
|
|
9
|
+
# prod-vX.Y.Z → npm publish --tag latest (production, manual gate)
|
|
10
|
+
# prod-vX.Y.Z-hotfix.N → npm publish --tag latest (hotfix, manual gate)
|
|
11
|
+
#
|
|
12
|
+
# No NPM_TOKEN secret needed — OIDC trusted publishing only.
|
|
13
|
+
#
|
|
14
|
+
# Required CI/CD variables (Settings → CI/CD → Variables):
|
|
15
|
+
# DISCORD_WEBHOOK — Discord incoming webhook URL (masked)
|
|
16
|
+
#
|
|
17
|
+
# npm side setup required (npmjs.com):
|
|
18
|
+
# 1. package.json → publishConfig.provenance: true
|
|
19
|
+
# 2. npmjs.com → package Settings → Publishing Access
|
|
20
|
+
# → Enable OIDC publishing for GitLab project:
|
|
21
|
+
# all-tomei-projects/tomei-package/General/<package-name>
|
|
22
|
+
# ============================================================
|
|
23
|
+
default:
|
|
24
|
+
image: node:20-alpine
|
|
25
|
+
tags:
|
|
26
|
+
- shared
|
|
27
|
+
|
|
28
|
+
stages:
|
|
29
|
+
- validate
|
|
30
|
+
- build
|
|
31
|
+
- publish
|
|
32
|
+
- notify
|
|
33
|
+
|
|
34
|
+
# ────────────────────────────────────────────────────────────
|
|
35
|
+
# STAGE: validate
|
|
36
|
+
# Runs lint and unit tests before publish
|
|
37
|
+
# Skipped on prod tags — code already validated on test + staging
|
|
38
|
+
# ────────────────────────────────────────────────────────────
|
|
39
|
+
lint:
|
|
40
|
+
stage: validate
|
|
41
|
+
cache:
|
|
42
|
+
key: node-$CI_COMMIT_REF_SLUG
|
|
43
|
+
paths: [node_modules/]
|
|
44
|
+
script:
|
|
45
|
+
- npm ci
|
|
46
|
+
- npm run lint
|
|
47
|
+
rules:
|
|
48
|
+
- if: '$CI_COMMIT_TAG =~ /^test-v/'
|
|
49
|
+
- if: '$CI_COMMIT_TAG =~ /^staging-v/'
|
|
50
|
+
|
|
51
|
+
unit-test:
|
|
52
|
+
stage: validate
|
|
53
|
+
cache:
|
|
54
|
+
key: node-$CI_COMMIT_REF_SLUG
|
|
55
|
+
paths: [node_modules/]
|
|
56
|
+
script:
|
|
57
|
+
- npm ci
|
|
58
|
+
- npm test
|
|
59
|
+
coverage: '/Lines\s*:\s*(\d+\.?\d*)%/'
|
|
60
|
+
artifacts:
|
|
61
|
+
reports:
|
|
62
|
+
coverage_report:
|
|
63
|
+
coverage_format: cobertura
|
|
64
|
+
path: coverage/cobertura-coverage.xml
|
|
65
|
+
expire_in: 7 days
|
|
66
|
+
rules:
|
|
67
|
+
- if: '$CI_COMMIT_TAG =~ /^test-v/'
|
|
68
|
+
- if: '$CI_COMMIT_TAG =~ /^staging-v/'
|
|
69
|
+
|
|
70
|
+
# ────────────────────────────────────────────────────────────
|
|
71
|
+
# STAGE: build
|
|
72
|
+
# Compiles the package (tsc / rollup / whatever your build uses)
|
|
73
|
+
# Artifacts passed to publish jobs
|
|
74
|
+
# Runs on all tag patterns
|
|
75
|
+
# ────────────────────────────────────────────────────────────
|
|
76
|
+
build:
|
|
77
|
+
stage: build
|
|
78
|
+
cache:
|
|
79
|
+
key: node-$CI_COMMIT_REF_SLUG
|
|
80
|
+
paths: [node_modules/]
|
|
81
|
+
script:
|
|
82
|
+
- npm ci
|
|
83
|
+
- npm run build
|
|
84
|
+
artifacts:
|
|
85
|
+
paths:
|
|
86
|
+
- dist/
|
|
87
|
+
expire_in: 1 hour
|
|
88
|
+
rules:
|
|
89
|
+
- if: '$CI_COMMIT_TAG =~ /^test-v/'
|
|
90
|
+
- if: '$CI_COMMIT_TAG =~ /^staging-v/'
|
|
91
|
+
- if: '$CI_COMMIT_TAG =~ /^prod-v/'
|
|
92
|
+
|
|
93
|
+
# ────────────────────────────────────────────────────────────
|
|
94
|
+
# STAGE: publish — test RC
|
|
95
|
+
# Triggered by: test-vX.Y.Z-rc.N tag
|
|
96
|
+
# Publishes with dist-tag "test"
|
|
97
|
+
# Consumers must opt in: npm install @tomei/pkg@test
|
|
98
|
+
# Version stamped: test-v1.24.0-rc.1 → 1.24.0-rc.1
|
|
99
|
+
# ────────────────────────────────────────────────────────────
|
|
100
|
+
publish-test:
|
|
101
|
+
stage: publish
|
|
102
|
+
needs: [build]
|
|
103
|
+
rules:
|
|
104
|
+
- if: '$CI_COMMIT_TAG =~ /^test-v/'
|
|
105
|
+
script:
|
|
106
|
+
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
|
107
|
+
- cat ~/.npmrc # verify .npmrc content
|
|
108
|
+
- |
|
|
109
|
+
RC_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/^test-v\([0-9.]*\)-rc\.\([0-9]*\)$/\1-test.\2/')
|
|
110
|
+
echo "Publishing version $RC_VERSION with dist-tag: test"
|
|
111
|
+
npm version "$RC_VERSION" --no-git-tag-version --ignore-scripts --force
|
|
112
|
+
npm publish --tag test --access public
|
|
113
|
+
echo "Published: @$(node -p "require('./package.json').name")@$RC_VERSION [test]"
|
|
114
|
+
|
|
115
|
+
# ────────────────────────────────────────────────────────────
|
|
116
|
+
# STAGE: publish — staging RC
|
|
117
|
+
# Triggered by: staging-vX.Y.Z-rc.N tag
|
|
118
|
+
# Publishes with dist-tag "staging"
|
|
119
|
+
# Consumers must opt in: npm install @tomei/pkg@staging
|
|
120
|
+
# Version stamped: staging-v1.24.0-rc.1 → 1.24.0-rc.1
|
|
121
|
+
# ────────────────────────────────────────────────────────────
|
|
122
|
+
publish-staging:
|
|
123
|
+
stage: publish
|
|
124
|
+
needs: [build]
|
|
125
|
+
rules:
|
|
126
|
+
- if: '$CI_COMMIT_TAG =~ /^staging-v/'
|
|
127
|
+
script:
|
|
128
|
+
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
|
129
|
+
- |
|
|
130
|
+
RC_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/^staging-v\([0-9.]*\)-rc\.\([0-9]*\)$/\1-staging.\2/')
|
|
131
|
+
echo "Publishing version $RC_VERSION with dist-tag: staging"
|
|
132
|
+
npm version "$RC_VERSION" --no-git-tag-version --ignore-scripts --force
|
|
133
|
+
npm publish --tag staging --access public
|
|
134
|
+
echo "Published: @$(node -p "require('./package.json').name")@$RC_VERSION [staging]"
|
|
135
|
+
|
|
136
|
+
# ────────────────────────────────────────────────────────────
|
|
137
|
+
# STAGE: publish — production
|
|
138
|
+
# Triggered by: prod-vX.Y.Z or prod-vX.Y.Z-hotfix.N tag (from main only)
|
|
139
|
+
# Publishes with dist-tag "latest" — becomes the default install version
|
|
140
|
+
# Manual gate — human must click Play in GitLab pipeline UI
|
|
141
|
+
# Version stamped: prod-v2.2.0 → 2.2.0 | prod-v2.2.0-hotfix.1 → 2.2.0-hotfix.1
|
|
142
|
+
# ────────────────────────────────────────────────────────────
|
|
143
|
+
publish-prod:
|
|
144
|
+
stage: publish
|
|
145
|
+
needs: [build]
|
|
146
|
+
rules:
|
|
147
|
+
- if: '$CI_COMMIT_TAG =~ /^prod-v/'
|
|
148
|
+
when: manual
|
|
149
|
+
allow_failure: false
|
|
150
|
+
script:
|
|
151
|
+
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
|
152
|
+
- |
|
|
153
|
+
PROD_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/^prod-v//')
|
|
154
|
+
echo "Publishing version $PROD_VERSION with dist-tag: latest"
|
|
155
|
+
npm version "$PROD_VERSION" --no-git-tag-version --ignore-scripts --force
|
|
156
|
+
npm publish --tag latest --access public
|
|
157
|
+
echo "Published: @$(node -p "require('./package.json').name")@$PROD_VERSION [latest]"
|
|
158
|
+
echo "Pipeline: $CI_PIPELINE_URL"
|
|
159
|
+
|
|
160
|
+
# ────────────────────────────────────────────────────────────
|
|
161
|
+
# STAGE: notify — success
|
|
162
|
+
# ────────────────────────────────────────────────────────────
|
|
163
|
+
notify-success:
|
|
164
|
+
stage: notify
|
|
165
|
+
image: curlimages/curl:latest
|
|
166
|
+
needs:
|
|
167
|
+
- job: publish-test
|
|
168
|
+
optional: true
|
|
169
|
+
- job: publish-staging
|
|
170
|
+
optional: true
|
|
171
|
+
- job: publish-prod
|
|
172
|
+
optional: true
|
|
173
|
+
rules:
|
|
174
|
+
- if: '$CI_COMMIT_TAG =~ /^test-v/'
|
|
175
|
+
when: on_success
|
|
176
|
+
- if: '$CI_COMMIT_TAG =~ /^staging-v/'
|
|
177
|
+
when: on_success
|
|
178
|
+
- if: '$CI_COMMIT_TAG =~ /^prod-v/'
|
|
179
|
+
when: on_success
|
|
180
|
+
script:
|
|
181
|
+
- |
|
|
182
|
+
if echo "$CI_COMMIT_TAG" | grep -q "^test-v"; then
|
|
183
|
+
DIST_TAG="test"
|
|
184
|
+
COLOR=3066993
|
|
185
|
+
elif echo "$CI_COMMIT_TAG" | grep -q "^staging-v"; then
|
|
186
|
+
DIST_TAG="staging"
|
|
187
|
+
COLOR=16776960
|
|
188
|
+
elif echo "$CI_COMMIT_TAG" | grep -q "^prod-v"; then
|
|
189
|
+
DIST_TAG="latest"
|
|
190
|
+
COLOR=3066993
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
curl -s -X POST "$DISCORD_WEBHOOK" \
|
|
194
|
+
-H "Content-Type: application/json" \
|
|
195
|
+
-d '{
|
|
196
|
+
"embeds": [{
|
|
197
|
+
"title": "Package published successfully",
|
|
198
|
+
"color": '"$COLOR"',
|
|
199
|
+
"fields": [
|
|
200
|
+
{"name": "Package", "value": "'"$CI_PROJECT_NAME"'", "inline": true},
|
|
201
|
+
{"name": "Tag", "value": "'"$CI_COMMIT_TAG"'", "inline": true},
|
|
202
|
+
{"name": "Dist-tag", "value": "'"$DIST_TAG"'", "inline": true},
|
|
203
|
+
{"name": "Published by", "value": "'"$GITLAB_USER_NAME"'", "inline": true},
|
|
204
|
+
{"name": "Pipeline", "value": "'"$CI_PIPELINE_URL"'", "inline": false}
|
|
205
|
+
]
|
|
206
|
+
}]
|
|
207
|
+
}'
|
|
208
|
+
|
|
209
|
+
# ────────────────────────────────────────────────────────────
|
|
210
|
+
# STAGE: notify — failure
|
|
211
|
+
# ────────────────────────────────────────────────────────────
|
|
212
|
+
notify-failure:
|
|
213
|
+
stage: notify
|
|
214
|
+
image: curlimages/curl:latest
|
|
215
|
+
rules:
|
|
216
|
+
- if: '$CI_COMMIT_TAG =~ /^test-v/'
|
|
217
|
+
when: on_failure
|
|
218
|
+
- if: '$CI_COMMIT_TAG =~ /^staging-v/'
|
|
219
|
+
when: on_failure
|
|
220
|
+
- if: '$CI_COMMIT_TAG =~ /^prod-v/'
|
|
221
|
+
when: on_failure
|
|
222
|
+
script:
|
|
223
|
+
- |
|
|
224
|
+
curl -s -X POST "$DISCORD_WEBHOOK" \
|
|
225
|
+
-H "Content-Type: application/json" \
|
|
226
|
+
-d '{
|
|
227
|
+
"embeds": [{
|
|
228
|
+
"title": "Package publish FAILED",
|
|
229
|
+
"color": 15158332,
|
|
230
|
+
"fields": [
|
|
231
|
+
{"name": "Package", "value": "'"$CI_PROJECT_NAME"'", "inline": true},
|
|
232
|
+
{"name": "Tag", "value": "'"$CI_COMMIT_TAG"'", "inline": true},
|
|
233
|
+
{"name": "Failed by", "value": "'"$GITLAB_USER_NAME"'", "inline": true},
|
|
234
|
+
{"name": "Pipeline", "value": "'"$CI_PIPELINE_URL"'", "inline": false}
|
|
235
|
+
]
|
|
236
|
+
}]
|
|
237
|
+
}'
|
package/.husky/commit-msg
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#!/usr/bin/env sh
|
|
2
|
-
. "$(dirname -- "$0")/_/husky.sh"
|
|
3
|
-
|
|
4
|
-
npx commitlint --edit $1
|
|
5
|
-
message="$(cat $1)"
|
|
6
|
-
echo "$message"
|
|
7
|
-
a=($(echo "$message" | tr ':' '\n'))
|
|
8
|
-
echo "${a[0]}"
|
|
9
|
-
# if [ "${a[0]}" = "feat" ];
|
|
10
|
-
# then
|
|
11
|
-
# npm version --commit-hooks false --no-git-tag-version minor
|
|
12
|
-
# else
|
|
13
|
-
# npm version --commit-hooks false --no-git-tag-version patch
|
|
14
|
-
# fi
|
|
15
|
-
git add .
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
. "$(dirname -- "$0")/_/husky.sh"
|
|
3
|
+
|
|
4
|
+
npx commitlint --edit $1
|
|
5
|
+
message="$(cat $1)"
|
|
6
|
+
echo "$message"
|
|
7
|
+
a=($(echo "$message" | tr ':' '\n'))
|
|
8
|
+
echo "${a[0]}"
|
|
9
|
+
# if [ "${a[0]}" = "feat" ];
|
|
10
|
+
# then
|
|
11
|
+
# npm version --commit-hooks false --no-git-tag-version minor
|
|
12
|
+
# else
|
|
13
|
+
# npm version --commit-hooks false --no-git-tag-version patch
|
|
14
|
+
# fi
|
|
15
|
+
git add .
|
|
16
16
|
git commit -m "$message" --no-verify
|
package/.husky/pre-commit
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#!/usr/bin/env sh
|
|
2
|
-
. "$(dirname -- "$0")/_/husky.sh"
|
|
3
|
-
|
|
4
|
-
npm run lint
|
|
5
|
-
npm run format
|
|
6
|
-
npm run build
|
|
7
|
-
git add .
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
. "$(dirname -- "$0")/_/husky.sh"
|
|
3
|
+
|
|
4
|
+
npm run lint
|
|
5
|
+
npm run format
|
|
6
|
+
npm run build
|
|
7
|
+
git add .
|
package/.prettierrc
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{
|
|
2
|
-
"singleQuote": true,
|
|
3
|
-
"trailingComma": "all"
|
|
4
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"singleQuote": true,
|
|
3
|
+
"trailingComma": "all"
|
|
4
|
+
}
|
package/Jenkinsfile
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
pipeline {
|
|
2
|
-
agent {
|
|
3
|
-
kubernetes {
|
|
4
|
-
label 'jenkins-agent'
|
|
5
|
-
namespace 'devops-tools'
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
tools {nodejs "node18"}
|
|
9
|
-
stages {
|
|
10
|
-
stage('Install') {
|
|
11
|
-
steps {
|
|
12
|
-
echo 'Install Dependencies..'
|
|
13
|
-
sh 'npm install'
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
stage('Test') {
|
|
17
|
-
steps {
|
|
18
|
-
echo 'Testing..'
|
|
19
|
-
sh 'npm run test'
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
stage('Build') {
|
|
23
|
-
steps {
|
|
24
|
-
echo 'Building..'
|
|
25
|
-
sh 'npm run build'
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
stage('Publish') {
|
|
29
|
-
steps {
|
|
30
|
-
echo 'Publish..'
|
|
31
|
-
withCredentials([
|
|
32
|
-
usernamePassword(credentialsId: 'npm-auth-token', usernameVariable: 'NPM_USERNAME', passwordVariable: 'AUTH_TOKEN')
|
|
33
|
-
]) {
|
|
34
|
-
sh "npm set //registry.npmjs.org/:_authToken=$AUTH_TOKEN"
|
|
35
|
-
sh "npm publish"
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
post {
|
|
42
|
-
success {
|
|
43
|
-
script {
|
|
44
|
-
def gitAuthor = sh(returnStdout: true, script: 'git log -1 --pretty=format:%an').trim()
|
|
45
|
-
discordSend description: "Git Commit: ${env.GIT_COMMIT}\nGit Branch: ${env.GIT_BRANCH}\nGit URL: ${env.GIT_URL}\nGit Author: ${gitAuthor}", footer: '', image: '', link: env.BUILD_URL, result: 'SUCCESS', scmWebUrl: '', thumbnail: '', title: "${env.JOB_NAME} Build #${env.BUILD_NUMBER} Success", webhookURL: 'https://discord.com/api/webhooks/1117705705466642434/UWgw32kQerM5HOr-fcCYD2aQxE1koeN_4CSCEzDZz1EAI3vNaysAw0YU7YUrb4TozOw0'
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
failure {
|
|
50
|
-
script {
|
|
51
|
-
def gitAuthor = sh(returnStdout: true, script: 'git log -1 --pretty=format:%an').trim()
|
|
52
|
-
discordSend description: "Git Commit: ${env.GIT_COMMIT}\nGit Branch: ${env.GIT_BRANCH}\nGit URL: ${env.GIT_URL}\nGit Author: ${gitAuthor}", footer: '', image: '', link: env.BUILD_URL, result: 'FAILURE', scmWebUrl: '', thumbnail: '', title: "${env.JOB_NAME} Build #${env.BUILD_NUMBER} Failed", webhookURL: 'https://discord.com/api/webhooks/1117705705466642434/UWgw32kQerM5HOr-fcCYD2aQxE1koeN_4CSCEzDZz1EAI3vNaysAw0YU7YUrb4TozOw0'
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
}
|
|
1
|
+
pipeline {
|
|
2
|
+
agent {
|
|
3
|
+
kubernetes {
|
|
4
|
+
label 'jenkins-agent'
|
|
5
|
+
namespace 'devops-tools'
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
tools {nodejs "node18"}
|
|
9
|
+
stages {
|
|
10
|
+
stage('Install') {
|
|
11
|
+
steps {
|
|
12
|
+
echo 'Install Dependencies..'
|
|
13
|
+
sh 'npm install'
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
stage('Test') {
|
|
17
|
+
steps {
|
|
18
|
+
echo 'Testing..'
|
|
19
|
+
sh 'npm run test'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
stage('Build') {
|
|
23
|
+
steps {
|
|
24
|
+
echo 'Building..'
|
|
25
|
+
sh 'npm run build'
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
stage('Publish') {
|
|
29
|
+
steps {
|
|
30
|
+
echo 'Publish..'
|
|
31
|
+
withCredentials([
|
|
32
|
+
usernamePassword(credentialsId: 'npm-auth-token', usernameVariable: 'NPM_USERNAME', passwordVariable: 'AUTH_TOKEN')
|
|
33
|
+
]) {
|
|
34
|
+
sh "npm set //registry.npmjs.org/:_authToken=$AUTH_TOKEN"
|
|
35
|
+
sh "npm publish"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
post {
|
|
42
|
+
success {
|
|
43
|
+
script {
|
|
44
|
+
def gitAuthor = sh(returnStdout: true, script: 'git log -1 --pretty=format:%an').trim()
|
|
45
|
+
discordSend description: "Git Commit: ${env.GIT_COMMIT}\nGit Branch: ${env.GIT_BRANCH}\nGit URL: ${env.GIT_URL}\nGit Author: ${gitAuthor}", footer: '', image: '', link: env.BUILD_URL, result: 'SUCCESS', scmWebUrl: '', thumbnail: '', title: "${env.JOB_NAME} Build #${env.BUILD_NUMBER} Success", webhookURL: 'https://discord.com/api/webhooks/1117705705466642434/UWgw32kQerM5HOr-fcCYD2aQxE1koeN_4CSCEzDZz1EAI3vNaysAw0YU7YUrb4TozOw0'
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
failure {
|
|
50
|
+
script {
|
|
51
|
+
def gitAuthor = sh(returnStdout: true, script: 'git log -1 --pretty=format:%an').trim()
|
|
52
|
+
discordSend description: "Git Commit: ${env.GIT_COMMIT}\nGit Branch: ${env.GIT_BRANCH}\nGit URL: ${env.GIT_URL}\nGit Author: ${gitAuthor}", footer: '', image: '', link: env.BUILD_URL, result: 'FAILURE', scmWebUrl: '', thumbnail: '', title: "${env.JOB_NAME} Build #${env.BUILD_NUMBER} Failed", webhookURL: 'https://discord.com/api/webhooks/1117705705466642434/UWgw32kQerM5HOr-fcCYD2aQxE1koeN_4CSCEzDZz1EAI3vNaysAw0YU7YUrb4TozOw0'
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}
|
package/README.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
## SSO Package
|
|
2
|
-
|
|
3
|
-
### How to use
|
|
4
|
-
- run `npm i`
|
|
5
|
-
- Make sure you set the environment in .sampledotenv in your project `.env` file
|
|
6
|
-
- run `npm run start:dev`
|
|
7
|
-
|
|
8
|
-
### How create a new migration
|
|
9
|
-
- Make sure you have `DATABASE_URL` and `SHADOW_DATABASE_URL` in your project `.env` file
|
|
10
|
-
- create a new empty database. dont do migration on it and set the `SHADOW_DATABASE_URL` to it
|
|
11
|
-
- Create a database user
|
|
12
|
-
- Grant the above user privileges to alter sso tables and shadow database. The user should have access to the sso table and shadow database only. Use `create-sso-user.sql` as an example to create the user and grant privileges
|
|
13
|
-
- Make changes to the `schema.prisma` file
|
|
14
|
-
- Run `npx prisma migrate dev --name <migration-name> --preview-feature --create-only` to create the migration. The migration will be created in the `migrations` folder.
|
|
15
|
-
- open the newly created migration. review the migration and make changes if necessary.
|
|
16
|
-
|
|
17
|
-
notes:
|
|
18
|
-
- if you create a new table, after migration has been created, change the default character set to `latin1` from `utf8mb4` and remove COLLATE phrase.please also add it to the `create-sso-user.sql` file for references
|
|
19
|
-
|
|
20
|
-
### How to run migration
|
|
21
|
-
- run `npx prisma migrate deploy` to run the migration
|
|
22
|
-
- run `npx prisma generate` to generate the prisma client
|
|
23
|
-
|
|
1
|
+
## SSO Package
|
|
2
|
+
|
|
3
|
+
### How to use
|
|
4
|
+
- run `npm i`
|
|
5
|
+
- Make sure you set the environment in .sampledotenv in your project `.env` file
|
|
6
|
+
- run `npm run start:dev`
|
|
7
|
+
|
|
8
|
+
### How create a new migration
|
|
9
|
+
- Make sure you have `DATABASE_URL` and `SHADOW_DATABASE_URL` in your project `.env` file
|
|
10
|
+
- create a new empty database. dont do migration on it and set the `SHADOW_DATABASE_URL` to it
|
|
11
|
+
- Create a database user
|
|
12
|
+
- Grant the above user privileges to alter sso tables and shadow database. The user should have access to the sso table and shadow database only. Use `create-sso-user.sql` as an example to create the user and grant privileges
|
|
13
|
+
- Make changes to the `schema.prisma` file
|
|
14
|
+
- Run `npx prisma migrate dev --name <migration-name> --preview-feature --create-only` to create the migration. The migration will be created in the `migrations` folder.
|
|
15
|
+
- open the newly created migration. review the migration and make changes if necessary.
|
|
16
|
+
|
|
17
|
+
notes:
|
|
18
|
+
- if you create a new table, after migration has been created, change the default character set to `latin1` from `utf8mb4` and remove COLLATE phrase.please also add it to the `create-sso-user.sql` file for references
|
|
19
|
+
|
|
20
|
+
### How to run migration
|
|
21
|
+
- run `npx prisma migrate deploy` to run the migration
|
|
22
|
+
- run `npx prisma generate` to generate the prisma client
|
|
23
|
+
|