@genesislcap/blank-app-seed 1.5.3 → 1.5.5
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/.genx/package.json +3 -3
- package/.genx/scripts/health-check.sh +23 -0
- package/.genx/scripts/init-gradle.sh +21 -0
- package/.genx/scripts/update-versions.js +36 -0
- package/.genx/tests/fixtures/testapp/client/src/routes/home/home.template.ts +6 -0
- package/.genx/tests/fixtures/testapp/docker-compose.yml +20 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-fields-dictionary.kts +20 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-processes.xml +36 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-service-definitions.xml +16 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-tables-dictionary.kts +26 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-script-config/src/main/resources/scripts/testapp-dataserver.kts +13 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-script-config/src/main/resources/scripts/testapp-eventhandler.kts +21 -0
- package/.github/CODEOWNERS +3 -0
- package/.github/pull_request_template.md +46 -0
- package/.github/workflows/build.yml +74 -0
- package/.github/workflows/pr-title-check.yml +25 -0
- package/.github/workflows/release.yml +38 -0
- package/.github/workflows/slack.yml +18 -0
- package/.github/workflows/upgrade.yml +79 -0
- package/.gitignore +110 -0
- package/.releaserc +76 -0
- package/CHANGELOG.md +14 -0
- package/client/test/unit/sample.test.ts +14 -0
- package/package.json +1 -1
package/.genx/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/blank-app-seed-config",
|
|
3
3
|
"description": "Genesis Blank App Seed Configuration",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.5",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"genxSeedConfig": {
|
|
7
7
|
"exclude": [
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
".releaserc",
|
|
12
12
|
"LICENSE",
|
|
13
13
|
"CHANGELOG.md",
|
|
14
|
-
".npmignore",
|
|
15
14
|
".github",
|
|
16
15
|
".genx/tests",
|
|
17
16
|
".genx/scripts",
|
|
@@ -40,7 +39,8 @@
|
|
|
40
39
|
".ts",
|
|
41
40
|
".md",
|
|
42
41
|
".properties",
|
|
43
|
-
".html"
|
|
42
|
+
".html",
|
|
43
|
+
".gitignore"
|
|
44
44
|
]
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
url=$1
|
|
4
|
+
http_response=$(curl -s -o /dev/null -w "%{http_code}" $url)
|
|
5
|
+
counter=15
|
|
6
|
+
|
|
7
|
+
until [[ $http_response == "200" || counter -lt 0 ]]; do
|
|
8
|
+
echo 'not all services running; waiting 10 seconds and trying again'
|
|
9
|
+
sleep 10
|
|
10
|
+
http_response=$(curl -s -o /dev/null -w "%{http_code}" $url)
|
|
11
|
+
((counter--))
|
|
12
|
+
done
|
|
13
|
+
|
|
14
|
+
curl $url
|
|
15
|
+
printf '\n'
|
|
16
|
+
|
|
17
|
+
if [[ $http_response == "200" ]]
|
|
18
|
+
then
|
|
19
|
+
echo 'all services started correctly'
|
|
20
|
+
else
|
|
21
|
+
echo 'not all services started correctly'
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
|
|
3
|
+
if [ ! -d "$HOME/.gradle" ]; then
|
|
4
|
+
mkdir "$HOME/.gradle"
|
|
5
|
+
fi
|
|
6
|
+
|
|
7
|
+
if [ ! -d "$HOME/.m2" ]; then
|
|
8
|
+
mkdir "$HOME/.m2"
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
if [ -f "$HOME/.gradle/gradle.properties" ]; then
|
|
12
|
+
rm "$HOME/.gradle/gradle.properties"
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
touch $HOME/.gradle/gradle.properties
|
|
16
|
+
|
|
17
|
+
echo genesisArtifactoryUser="$genesisArtifactoryUser" >> $HOME/.gradle/gradle.properties
|
|
18
|
+
echo genesisArtifactoryPassword="$genesisArtifactoryPassword" >> $HOME/.gradle/gradle.properties
|
|
19
|
+
|
|
20
|
+
echo systemProp.org.gradle.internal.http.connectionTimeout=180000 >> $HOME/.gradle/gradle.properties
|
|
21
|
+
echo systemProp.org.gradle.internal.http.socketTimeout=180000 >> $HOME/.gradle/gradle.properties
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const { execSync } = require('node:child_process');
|
|
2
|
+
const { writeFileSync } = require('node:fs');
|
|
3
|
+
const { resolve } = require('node:path');
|
|
4
|
+
const current = require('../versions.json');
|
|
5
|
+
|
|
6
|
+
const run = (command) => execSync(command, {
|
|
7
|
+
stdio: ['pipe', 'pipe', 'ignore'],
|
|
8
|
+
})
|
|
9
|
+
.toString('utf8')
|
|
10
|
+
.trim();
|
|
11
|
+
|
|
12
|
+
const writeJSON = (json, path) => {
|
|
13
|
+
const data = JSON.stringify(json, null, 2) + '\n';
|
|
14
|
+
console.log(`Updating data in ${path}`);
|
|
15
|
+
try {
|
|
16
|
+
writeFileSync(path, data);
|
|
17
|
+
} catch (e) {
|
|
18
|
+
console.log(e);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const UI = run('npm info @genesislcap/foundation-ui@latest version');
|
|
23
|
+
const GSF = run(`jf rt s "libs-release-client/global/genesis/genesis-distribution/" --sort-by="name;created" --sort-order=desc --limit=1 --exclusions="*-RC*;*-SNAPSHOT*;*maven-metadata*;*test*;*TEST*" | grep path | tr -s ' ' | cut -d '/' -f 5`);
|
|
24
|
+
const Auth = run(`jf rt s "libs-release-client/global/genesis/auth-distribution/" --sort-by="name;created" --sort-order=desc --limit=1 --exclusions="*-RC*;*-SNAPSHOT*;*maven-metadata*;*test*;*TEST*" | grep path | tr -s ' ' | cut -d '/' -f 5`);
|
|
25
|
+
const latest = { UI, GSF, Auth };
|
|
26
|
+
|
|
27
|
+
console.log('Current:', current);
|
|
28
|
+
console.log('Latest:', latest);
|
|
29
|
+
|
|
30
|
+
if (current.UI !== UI || current.GSF !== GSF || current.Auth !== Auth) {
|
|
31
|
+
console.log('Newer versions available');
|
|
32
|
+
const path = resolve(__dirname, '../versions.json');
|
|
33
|
+
writeJSON(latest, path);
|
|
34
|
+
} else {
|
|
35
|
+
console.log('No newer versions available');
|
|
36
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: '3.3'
|
|
2
|
+
services:
|
|
3
|
+
gsf:
|
|
4
|
+
tty: true
|
|
5
|
+
container_name: gsf
|
|
6
|
+
build:
|
|
7
|
+
context: server/jvm/testapp-deploy/build/docker/
|
|
8
|
+
dockerfile: Dockerfile
|
|
9
|
+
networks:
|
|
10
|
+
qs_network:
|
|
11
|
+
aliases:
|
|
12
|
+
- localnode
|
|
13
|
+
ports:
|
|
14
|
+
- '9064:9064'
|
|
15
|
+
- '1337:22'
|
|
16
|
+
- '5432:5432'
|
|
17
|
+
- '4569:4569'
|
|
18
|
+
networks:
|
|
19
|
+
qs_network:
|
|
20
|
+
driver: bridge
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System : Genesis Business Library
|
|
3
|
+
* Sub-System : multi-pro-code-test Configuration
|
|
4
|
+
* Version : 1.0
|
|
5
|
+
* Copyright : (c) Genesis
|
|
6
|
+
* Date : 2022-03-18
|
|
7
|
+
* Function : Provide fields config for multi-pro-code-test.
|
|
8
|
+
*
|
|
9
|
+
* Modification History
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
fields {
|
|
13
|
+
|
|
14
|
+
field("TRADE_ID", type = STRING)
|
|
15
|
+
field("QUANTITY", type = INT)
|
|
16
|
+
field("PRICE", type = DOUBLE)
|
|
17
|
+
field("SYMBOL", type = STRING)
|
|
18
|
+
field("DIRECTION", type = ENUM("BUY", "SELL", default = "BUY"))
|
|
19
|
+
|
|
20
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
!
|
|
3
|
+
! System : Genesis Business Library
|
|
4
|
+
! Sub-System : multi-pro-code-test Configuration
|
|
5
|
+
! Version : 1.0
|
|
6
|
+
! Copyright : (c) Genesis
|
|
7
|
+
! Date : 2022-03-18
|
|
8
|
+
! Function : Provide Process Definitions Config for multi-pro-code-test.
|
|
9
|
+
!
|
|
10
|
+
! Modification History
|
|
11
|
+
!
|
|
12
|
+
-->
|
|
13
|
+
<processes>
|
|
14
|
+
<process name="TESTAPP_DATASERVER">
|
|
15
|
+
<groupId>TESTAPP</groupId>
|
|
16
|
+
<start>true</start>
|
|
17
|
+
<options>-Xmx1024m -DXSD_VALIDATE=false</options>
|
|
18
|
+
<module>genesis-pal-dataserver</module>
|
|
19
|
+
<package>global.genesis.dataserver.pal</package>
|
|
20
|
+
<script>testapp-dataserver.kts</script>
|
|
21
|
+
<description>Displays real-time details</description>
|
|
22
|
+
<language>pal</language>
|
|
23
|
+
<loggingLevel>DEBUG,DATADUMP_ON</loggingLevel>
|
|
24
|
+
</process>
|
|
25
|
+
<process name="TESTAPP_EVENT_HANDLER">
|
|
26
|
+
<groupId>TESTAPP</groupId>
|
|
27
|
+
<start>true</start>
|
|
28
|
+
<options>-Xmx256m -DRedirectStreamsToLog=true -DXSD_VALIDATE=false</options>
|
|
29
|
+
<module>genesis-pal-eventhandler</module>
|
|
30
|
+
<package>global.genesis.eventhandler.pal</package>
|
|
31
|
+
<script>testapp-eventhandler.kts</script>
|
|
32
|
+
<description>Handles events</description>
|
|
33
|
+
<classpath>testapp-messages*,testapp-eventhandler*</classpath>
|
|
34
|
+
<language>pal</language>
|
|
35
|
+
</process>
|
|
36
|
+
</processes>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
!
|
|
3
|
+
! System : Genesis Business Library
|
|
4
|
+
! Sub-System : multi-pro-code-test Configuration
|
|
5
|
+
! Version : 1.0
|
|
6
|
+
! Copyright : (c) Genesis
|
|
7
|
+
! Date : 2022-03-18
|
|
8
|
+
! Function : Provide Service Definitions Config for multi-pro-code-test.
|
|
9
|
+
!
|
|
10
|
+
! Modification History
|
|
11
|
+
!
|
|
12
|
+
-->
|
|
13
|
+
<configuration>
|
|
14
|
+
<service host="localhost" name="TESTAPP_DATASERVER" port="11000"/>
|
|
15
|
+
<service host="localhost" name="TESTAPP_EVENT_HANDLER" port="11001"/>
|
|
16
|
+
</configuration>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System : Genesis Business Library
|
|
3
|
+
* Sub-System : multi-pro-code-test Configuration
|
|
4
|
+
* Version : 1.0
|
|
5
|
+
* Copyright : (c) Genesis
|
|
6
|
+
* Date : 2022-03-18
|
|
7
|
+
* Function : Provide table definition config for multi-pro-code-test.
|
|
8
|
+
*
|
|
9
|
+
* Modification History
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
tables {
|
|
13
|
+
|
|
14
|
+
table (name = "TRADE", id = 2000) {
|
|
15
|
+
sequence(TRADE_ID, "TR")
|
|
16
|
+
QUANTITY
|
|
17
|
+
PRICE
|
|
18
|
+
SYMBOL
|
|
19
|
+
DIRECTION
|
|
20
|
+
|
|
21
|
+
primaryKey {
|
|
22
|
+
TRADE_ID
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System : Genesis Business Library
|
|
3
|
+
* Sub-System : multi-pro-code-test Configuration
|
|
4
|
+
* Version : 1.0
|
|
5
|
+
* Copyright : (c) Genesis
|
|
6
|
+
* Date : 2022-03-18
|
|
7
|
+
* Function : Provide dataserver config for multi-pro-code-test.
|
|
8
|
+
*
|
|
9
|
+
* Modification History
|
|
10
|
+
*/
|
|
11
|
+
dataServer {
|
|
12
|
+
query("ALL_TRADES", TRADE)
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System : Genesis Business Library
|
|
3
|
+
* Sub-System : multi-pro-code-test Configuration
|
|
4
|
+
* Version : 1.0
|
|
5
|
+
* Copyright : (c) Genesis
|
|
6
|
+
* Date : 2022-03-18
|
|
7
|
+
* Function : Provide event handler config for multi-pro-code-test.
|
|
8
|
+
*
|
|
9
|
+
* Modification History
|
|
10
|
+
*/
|
|
11
|
+
eventHandler {
|
|
12
|
+
|
|
13
|
+
eventHandler<Trade>(name = "TRADE_INSERT") {
|
|
14
|
+
schemaValidation = false
|
|
15
|
+
onCommit { event ->
|
|
16
|
+
entityDb.insert(event.details)
|
|
17
|
+
ack()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
[Review Guidance](https://www.notion.so/genesisglobal/Platform-Code-Review-Process-ace93ba760cc4563b0dfb712e2a88d8a)
|
|
2
|
+
|
|
3
|
+
📓 **Related JIRA**
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
[PTC-0](https://genesisglobal.atlassian.net/browse/PTC-0)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
🤔 **What does this PR do?**
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
- Add bullets..
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
🚀 **Where should the reviewer start?**
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
Add file / directory pointers.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
📑 **How should this be tested?**
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
npx -y @genesislcap/genx@latest init prtest -x --ref YOUR-BRANCH-NAME
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
✅ **Checklist**
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
<!--- Review the list and put an x in the boxes that apply. -->
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
- [ ] I have tested my changes.
|
|
45
|
+
- [ ] I have added tests for my changes.
|
|
46
|
+
- [ ] I have updated the project documentation to reflect my changes.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Build
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master, develop, alpha]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master, develop, alpha]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
env:
|
|
13
|
+
genesisArtifactoryUser: ${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_USER }}
|
|
14
|
+
genesisArtifactoryPassword: ${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_PASSWORD }}
|
|
15
|
+
USE_DOCKER: 1
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v3
|
|
19
|
+
|
|
20
|
+
- name: Set up Node
|
|
21
|
+
uses: actions/setup-node@v3
|
|
22
|
+
with:
|
|
23
|
+
node-version: 20
|
|
24
|
+
|
|
25
|
+
- name: Set up JDK
|
|
26
|
+
uses: actions/setup-java@v3
|
|
27
|
+
with:
|
|
28
|
+
java-version: '17'
|
|
29
|
+
distribution: 'temurin'
|
|
30
|
+
cache: 'gradle'
|
|
31
|
+
- uses: KengoTODA/actions-setup-docker-compose@main
|
|
32
|
+
env:
|
|
33
|
+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
34
|
+
|
|
35
|
+
- name: Configure Gradle
|
|
36
|
+
run: ./.genx/scripts/init-gradle.sh
|
|
37
|
+
|
|
38
|
+
- name: Generate sample app
|
|
39
|
+
working-directory: /tmp
|
|
40
|
+
run: npx -y @genesislcap/genx@latest init testapp -s "${{github.workspace}}" -x
|
|
41
|
+
|
|
42
|
+
- name: Copy fixtures
|
|
43
|
+
run: cp -R ./.genx/tests/fixtures/testapp/* /tmp/testapp
|
|
44
|
+
|
|
45
|
+
- name: Build sample app
|
|
46
|
+
working-directory: /tmp/testapp
|
|
47
|
+
run: ./gradlew build -PclientSpecific=true
|
|
48
|
+
|
|
49
|
+
- name: Lint UI
|
|
50
|
+
working-directory: /tmp/testapp/client
|
|
51
|
+
run: npm run lint
|
|
52
|
+
|
|
53
|
+
- name: Test (unit & integration UI)
|
|
54
|
+
working-directory: /tmp/testapp/client
|
|
55
|
+
run: npm run test && npm run test:e2e
|
|
56
|
+
|
|
57
|
+
- name: Skip binding to privileged port on CI
|
|
58
|
+
working-directory: /tmp/testapp
|
|
59
|
+
run: sed -i "s/- '443:443'/# - '443:443'/g" docker-compose.yml
|
|
60
|
+
|
|
61
|
+
- name: Create Server Dockerfile
|
|
62
|
+
working-directory: /tmp/testapp
|
|
63
|
+
run: ./gradlew :genesisproduct-testapp:testapp-deploy:createDockerfile
|
|
64
|
+
|
|
65
|
+
- name: Build Docker images
|
|
66
|
+
working-directory: /tmp/testapp
|
|
67
|
+
run: docker-compose build
|
|
68
|
+
|
|
69
|
+
# - name: Run healthcheck
|
|
70
|
+
# run: ./.genx/scripts/health-check.sh http://localhost:4569/health/status
|
|
71
|
+
|
|
72
|
+
# - name: Stop the app
|
|
73
|
+
# working-directory: /tmp/testapp
|
|
74
|
+
# run: docker-compose down
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# This is a Github Action that ensures that your PR title matches the Conventional Commits spec.
|
|
2
|
+
#
|
|
3
|
+
# This is helpful when you're using semantic-release with the Conventional Commits preset.
|
|
4
|
+
# When using the Squash and merge strategy, Github will suggest to use the PR title as the commit message.
|
|
5
|
+
# With this action you can validate that the PR title will lead to a correct commit message.
|
|
6
|
+
#
|
|
7
|
+
# https://github.com/marketplace/actions/conventional-pr-title
|
|
8
|
+
|
|
9
|
+
name: Check PR title
|
|
10
|
+
|
|
11
|
+
on:
|
|
12
|
+
pull_request_target:
|
|
13
|
+
types:
|
|
14
|
+
- opened
|
|
15
|
+
- reopened
|
|
16
|
+
- edited
|
|
17
|
+
- synchronize
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
lint:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: aslafy-z/conventional-pr-title-action@v3
|
|
24
|
+
env:
|
|
25
|
+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
release:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
environment: deploy
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v3
|
|
13
|
+
with:
|
|
14
|
+
token: ${{secrets.GH_USER_TOKEN}}
|
|
15
|
+
|
|
16
|
+
- name: Set up Node
|
|
17
|
+
uses: actions/setup-node@v3
|
|
18
|
+
with:
|
|
19
|
+
node-version: 20
|
|
20
|
+
|
|
21
|
+
- name: Release
|
|
22
|
+
env:
|
|
23
|
+
GH_TOKEN: ${{secrets.GH_USER_TOKEN}}
|
|
24
|
+
run: |
|
|
25
|
+
npm install
|
|
26
|
+
npm run release
|
|
27
|
+
|
|
28
|
+
- name: Generate .npmignore
|
|
29
|
+
run: cp .gitignore .npmignore && echo '!.gitignore' >> .npmignore && cat .npmignore
|
|
30
|
+
|
|
31
|
+
- name: NPM pack dry-run
|
|
32
|
+
run: npm pack -dry
|
|
33
|
+
|
|
34
|
+
- name: Publish
|
|
35
|
+
uses: JS-DevTools/npm-publish@v3
|
|
36
|
+
with:
|
|
37
|
+
token: ${{secrets.NPM_TOKEN}}
|
|
38
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Slack PR notification
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main]
|
|
6
|
+
types: [opened, reopened]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
notify:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- name: Slack Notification
|
|
13
|
+
uses: bryannice/gitactions-slack-notification@2.0.0
|
|
14
|
+
env:
|
|
15
|
+
SLACK_CHANNEL: 'platform-seeds'
|
|
16
|
+
SLACK_INCOMING_WEBHOOK: ${{secrets.SLACK_WEBHOOK}}
|
|
17
|
+
SLACK_TITLE: 'New blank-app-seed PR: ${{github.event.pull_request.title}}'
|
|
18
|
+
SLACK_MESSAGE: 'https://github.com/genesiscommunitysuccess/blank-app-seed/pull/${{github.event.number}}'
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Upgrade
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch: # Manual
|
|
5
|
+
schedule:
|
|
6
|
+
- cron: '0 9 * * 1' # Mondays 9AM UTC
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
upgrade:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
environment: deploy
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v3
|
|
14
|
+
with:
|
|
15
|
+
token: ${{secrets.GH_USER_TOKEN}}
|
|
16
|
+
|
|
17
|
+
- name: Set up Node
|
|
18
|
+
uses: actions/setup-node@v3
|
|
19
|
+
with:
|
|
20
|
+
node-version: 20
|
|
21
|
+
|
|
22
|
+
- name: Set up Jfrog CLI
|
|
23
|
+
uses: jfrog/setup-jfrog-cli@v3
|
|
24
|
+
with:
|
|
25
|
+
version: latest
|
|
26
|
+
|
|
27
|
+
- name: Authenticate on Artifactory
|
|
28
|
+
run: |
|
|
29
|
+
jfrog config add --artifactory-url="https://genesisglobal.jfrog.io/artifactory" --user="${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_USER }}" --password="${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_PASSWORD }}" --interactive=false
|
|
30
|
+
|
|
31
|
+
- name: Update to latest versions if available
|
|
32
|
+
run: node .genx/scripts/update-versions
|
|
33
|
+
|
|
34
|
+
- name: Check for changes
|
|
35
|
+
id: versions
|
|
36
|
+
run: echo "CHANGED=$(git status --porcelain)" >> "$GITHUB_OUTPUT"
|
|
37
|
+
|
|
38
|
+
- name: Commit changes
|
|
39
|
+
if: steps.versions.outputs.CHANGED
|
|
40
|
+
run: |
|
|
41
|
+
git config --global user.email "ci@genesis.global" && git config --global user.name "CI"
|
|
42
|
+
git checkout -b chore-dep-update
|
|
43
|
+
git add --all
|
|
44
|
+
git commit -m "chore: automated dependency version update [skip-ci] PSD-9"
|
|
45
|
+
git push -f --set-upstream origin chore-dep-update
|
|
46
|
+
|
|
47
|
+
- name: Raise PR
|
|
48
|
+
if: steps.versions.outputs.CHANGED
|
|
49
|
+
env:
|
|
50
|
+
GH_USER_TOKEN: ${{secrets.GH_USER_TOKEN}}
|
|
51
|
+
OWNER: ${{github.repository_owner}}
|
|
52
|
+
REPO: ${{github.event.repository.name}}
|
|
53
|
+
run: |
|
|
54
|
+
mkdir /tmp/create-pr
|
|
55
|
+
cd /tmp/create-pr
|
|
56
|
+
npm init -y
|
|
57
|
+
npm i @octokit/core -S
|
|
58
|
+
|
|
59
|
+
cat <<EOT >> /tmp/create-pr/index.js
|
|
60
|
+
const { Octokit } = require('@octokit/core');
|
|
61
|
+
|
|
62
|
+
const octokit = new Octokit({ auth: process.env.GH_USER_TOKEN }),
|
|
63
|
+
owner = process.env.OWNER,
|
|
64
|
+
repo = process.env.REPO,
|
|
65
|
+
title = 'chore: automated dependency version update [skip-ci] PSD-9',
|
|
66
|
+
body = 'Automated PR',
|
|
67
|
+
head = 'chore-dep-update',
|
|
68
|
+
base = 'main';
|
|
69
|
+
|
|
70
|
+
(async () => {
|
|
71
|
+
const response = await octokit.request(
|
|
72
|
+
'POST /repos/' + owner + '/' + repo + '/pulls', { owner, repo, title, body, head, base }
|
|
73
|
+
);
|
|
74
|
+
})();
|
|
75
|
+
EOT
|
|
76
|
+
|
|
77
|
+
node /tmp/create-pr/index
|
|
78
|
+
|
|
79
|
+
|
package/.gitignore
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Root and server specific
|
|
2
|
+
|
|
3
|
+
# Logs
|
|
4
|
+
logs
|
|
5
|
+
*.log
|
|
6
|
+
|
|
7
|
+
# Runtime data
|
|
8
|
+
pids
|
|
9
|
+
*.pid
|
|
10
|
+
*.seed
|
|
11
|
+
*.pid.lock
|
|
12
|
+
|
|
13
|
+
# Output of 'npm pack'
|
|
14
|
+
*.tgz
|
|
15
|
+
|
|
16
|
+
# dotenv environment variables file
|
|
17
|
+
.env
|
|
18
|
+
.env.*
|
|
19
|
+
|
|
20
|
+
# Editor directories and files
|
|
21
|
+
.idea
|
|
22
|
+
.vscode
|
|
23
|
+
!.vscode/settings.json
|
|
24
|
+
*.suo
|
|
25
|
+
*.ntvs*
|
|
26
|
+
*.njsproj
|
|
27
|
+
*.sln
|
|
28
|
+
*.sw?
|
|
29
|
+
.DS_Store
|
|
30
|
+
|
|
31
|
+
# Development
|
|
32
|
+
target/
|
|
33
|
+
.settings/
|
|
34
|
+
.project
|
|
35
|
+
.classpath
|
|
36
|
+
*.ignore
|
|
37
|
+
*.iml
|
|
38
|
+
*~
|
|
39
|
+
.gradle
|
|
40
|
+
**/build/
|
|
41
|
+
!src/**/build/
|
|
42
|
+
|
|
43
|
+
# Ignore Gradle GUI config
|
|
44
|
+
gradle-app.setting
|
|
45
|
+
|
|
46
|
+
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
|
47
|
+
!gradle-wrapper.jar
|
|
48
|
+
|
|
49
|
+
# Cache of project
|
|
50
|
+
.gradletasknamecache
|
|
51
|
+
server/jvm/server/position-deploy/gradle.properties
|
|
52
|
+
|
|
53
|
+
# Dependency directories
|
|
54
|
+
node_modules
|
|
55
|
+
|
|
56
|
+
# Intellij plugin folder
|
|
57
|
+
.genesis-home
|
|
58
|
+
|
|
59
|
+
build-cache
|
|
60
|
+
|
|
61
|
+
# Server
|
|
62
|
+
server/jvm/{{appName}}-deploy/gradle.properties
|
|
63
|
+
|
|
64
|
+
# Client
|
|
65
|
+
|
|
66
|
+
# Logs
|
|
67
|
+
npm-debug.log*
|
|
68
|
+
yarn-debug.log*
|
|
69
|
+
yarn-error.log*
|
|
70
|
+
|
|
71
|
+
# Output
|
|
72
|
+
client/dist/
|
|
73
|
+
|
|
74
|
+
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
75
|
+
client/lib-cov
|
|
76
|
+
|
|
77
|
+
# Coverage directory used by tools like istanbul
|
|
78
|
+
client/coverage
|
|
79
|
+
|
|
80
|
+
# Coverage files
|
|
81
|
+
coverage.lcov
|
|
82
|
+
|
|
83
|
+
# nyc test coverage
|
|
84
|
+
.nyc_output
|
|
85
|
+
|
|
86
|
+
# Optional npm cache directory
|
|
87
|
+
.npm
|
|
88
|
+
|
|
89
|
+
# Optional eslint cache
|
|
90
|
+
.eslintcache
|
|
91
|
+
|
|
92
|
+
# Optional REPL history
|
|
93
|
+
.node_repl_history
|
|
94
|
+
|
|
95
|
+
# lerna backups
|
|
96
|
+
package.json.lerna_backup
|
|
97
|
+
|
|
98
|
+
# custom elements metadata
|
|
99
|
+
custom-elements.json
|
|
100
|
+
|
|
101
|
+
# TypeScript incremental compilation cache
|
|
102
|
+
*.tsbuildinfo
|
|
103
|
+
.rollup.cache
|
|
104
|
+
|
|
105
|
+
# User files that may contain sensitive tokens etc.
|
|
106
|
+
.npmrc
|
|
107
|
+
|
|
108
|
+
# Gradle tasks
|
|
109
|
+
.bootstrapDone
|
|
110
|
+
.tests.executed
|
package/.releaserc
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"branches": ["main"],
|
|
3
|
+
"repositoryUrl": "https://github.com/genesiscommunitysuccess/blank-app-seed",
|
|
4
|
+
"plugins": [
|
|
5
|
+
[
|
|
6
|
+
"@semantic-release/commit-analyzer",
|
|
7
|
+
{
|
|
8
|
+
"preset": "conventionalcommits",
|
|
9
|
+
"releaseRules": [
|
|
10
|
+
{
|
|
11
|
+
"type": "*!",
|
|
12
|
+
"release": "major"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
"@semantic-release/release-notes-generator",
|
|
19
|
+
{
|
|
20
|
+
"preset": "conventionalcommits",
|
|
21
|
+
"linkReferences": false,
|
|
22
|
+
"presetConfig": {
|
|
23
|
+
"issuePrefixes": ["PSD-", "FUI-", "PLAT-", "PS-", "PSD-", "PTC-", "PTF-", "PTL-"],
|
|
24
|
+
"issueUrlFormat": ""
|
|
25
|
+
},
|
|
26
|
+
"releaseRules": [
|
|
27
|
+
{
|
|
28
|
+
"type": "*!",
|
|
29
|
+
"release": "major"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
"@semantic-release/changelog",
|
|
36
|
+
{
|
|
37
|
+
"changelogFile": "CHANGELOG.md",
|
|
38
|
+
"changelogTitle": "# Changelog"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
"@semantic-release/npm",
|
|
43
|
+
{
|
|
44
|
+
"npmPublish": false
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
"semantic-release-replace-plugin",
|
|
49
|
+
{
|
|
50
|
+
"replacements": [
|
|
51
|
+
{
|
|
52
|
+
"files": [".genx/package.json"],
|
|
53
|
+
"from": "\"version\": \".*\"",
|
|
54
|
+
"to": "\"version\": \"${nextRelease.version}\""
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
"@semantic-release/git",
|
|
61
|
+
{
|
|
62
|
+
"assets": ["CHANGELOG.md", "package.json", "package-lock.json", ".genx/package.json"],
|
|
63
|
+
"message": "chore: release ${nextRelease.version} [skip ci] PSD-0"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
"@semantic-release/github",
|
|
68
|
+
{
|
|
69
|
+
"successComment": false,
|
|
70
|
+
"failComment": false,
|
|
71
|
+
"releasedLabels": false,
|
|
72
|
+
"labels": false
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
]
|
|
76
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.5.5](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v1.5.4...v1.5.5) (2024-02-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* ensure .gitignore is included in NPM artifact [PSD-47](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/47) (#124) c9e2d78
|
|
9
|
+
|
|
10
|
+
## [1.5.4](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v1.5.3...v1.5.4) (2024-02-01)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* make .gitignore and .npmignore consistent [PSD-46](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/46) (#123) 2eb8617
|
|
16
|
+
|
|
3
17
|
## [1.5.3](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v1.5.2...v1.5.3) (2024-01-30)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createLogicSuite } from '@genesislcap/foundation-testing';
|
|
2
|
+
|
|
3
|
+
const isHelloWorld = (arg) => arg === 'Hello world';
|
|
4
|
+
|
|
5
|
+
const Suite = createLogicSuite('isHelloWorld');
|
|
6
|
+
Suite('isHelloWorld should provide expected results', ({ runCases }) => {
|
|
7
|
+
runCases(isHelloWorld, [
|
|
8
|
+
[['1'], false],
|
|
9
|
+
[[123], false],
|
|
10
|
+
[['Hello world'], true],
|
|
11
|
+
]);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
Suite.run();
|