@things-factory/operato-codelingua 6.1.66 → 7.0.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/README.md +66 -21
- package/_index.html +20 -11
- package/assets/images/hatiolab-logo.png +0 -0
- package/assets/images/user.png +0 -0
- package/assets/manifest.json +4 -4
- package/client/bootstrap.ts +199 -1
- package/client/icons/menu-icons.ts +91 -0
- package/client/pages/git-project/git-project-list-page.ts +334 -0
- package/client/route.ts +5 -7
- package/client/themes/dark.css +51 -0
- package/client/themes/light.css +51 -0
- package/client/viewparts/menu-tools.ts +170 -0
- package/client/viewparts/user-circle.ts +24 -0
- package/config/config.development.js +1 -5
- package/config/config.production.js +1 -5
- package/db.sqlite +0 -0
- package/dist-client/bootstrap.d.ts +7 -0
- package/dist-client/bootstrap.js +172 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/icons/menu-icons.d.ts +5 -0
- package/dist-client/icons/menu-icons.js +84 -0
- package/dist-client/icons/menu-icons.js.map +1 -0
- package/dist-client/index.d.ts +0 -0
- package/dist-client/index.js +2 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/pages/git-project/git-project-list-page.d.ts +53 -0
- package/dist-client/pages/git-project/git-project-list-page.js +318 -0
- package/dist-client/pages/git-project/git-project-list-page.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +8 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/themes/dark.css +51 -0
- package/dist-client/themes/light.css +51 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/viewparts/menu-tools.d.ts +17 -0
- package/dist-client/viewparts/menu-tools.js +172 -0
- package/dist-client/viewparts/menu-tools.js.map +1 -0
- package/dist-client/viewparts/user-circle.d.ts +5 -0
- package/dist-client/viewparts/user-circle.js +26 -0
- package/dist-client/viewparts/user-circle.js.map +1 -0
- package/dist-server/controllers/github-controller.d.ts +2 -0
- package/dist-server/controllers/github-controller.js +78 -0
- package/dist-server/controllers/github-controller.js.map +1 -0
- package/dist-server/controllers/index.d.ts +0 -0
- package/dist-server/index.d.ts +4 -0
- package/dist-server/index.js +3 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/index.d.ts +1 -0
- package/dist-server/middlewares/index.js +7 -0
- package/dist-server/middlewares/index.js.map +1 -0
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/routers/github-webhook-router.d.ts +1 -0
- package/dist-server/routers/github-webhook-router.js +16 -0
- package/dist-server/routers/github-webhook-router.js.map +1 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +4 -1
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/git-project/git-project-mutation.d.ts +10 -0
- package/dist-server/service/git-project/git-project-mutation.js +127 -0
- package/dist-server/service/git-project/git-project-mutation.js.map +1 -0
- package/dist-server/service/git-project/git-project-query.d.ts +11 -0
- package/dist-server/service/git-project/git-project-query.js +79 -0
- package/dist-server/service/git-project/git-project-query.js.map +1 -0
- package/dist-server/service/git-project/git-project-type.d.ts +20 -0
- package/dist-server/service/git-project/git-project-type.js +77 -0
- package/dist-server/service/git-project/git-project-type.js.map +1 -0
- package/dist-server/service/git-project/git-project.d.ts +22 -0
- package/dist-server/service/git-project/git-project.js +95 -0
- package/dist-server/service/git-project/git-project.js.map +1 -0
- package/dist-server/service/git-project/index.d.ts +6 -0
- package/dist-server/service/git-project/index.js +10 -0
- package/dist-server/service/git-project/index.js.map +1 -0
- package/dist-server/service/index.d.ts +5 -0
- package/dist-server/service/index.js +8 -3
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/operato-codelingua/git-project.md +160 -0
- package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +17 -12
- package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +35 -0
- package/logs/application-2024-07-07-17.log +156 -0
- package/logs/application-2024-07-07-20.log +81 -0
- package/logs/application-2024-07-08-00.log +81 -0
- package/logs/application-2024-07-08-01.log +83 -0
- package/logs/application-2024-07-08-02.log +81 -0
- package/logs/connections-2024-07-07-17.log +41 -0
- package/logs/connections-2024-07-07-20.log +41 -0
- package/logs/connections-2024-07-08-00.log +41 -0
- package/logs/connections-2024-07-08-01.log +41 -0
- package/logs/connections-2024-07-08-02.log +41 -0
- package/package.json +57 -18
- package/schema.graphql +4259 -0
- package/server/controllers/github-controller.ts +73 -0
- package/server/index.ts +4 -0
- package/server/middlewares/index.ts +3 -0
- package/server/migrations/index.ts +9 -0
- package/server/routers/github-webhook-router.ts +21 -0
- package/server/routes.ts +3 -1
- package/server/service/git-project/git-project-mutation.ts +136 -0
- package/server/service/git-project/git-project-query.ts +48 -0
- package/server/service/git-project/git-project-type.ts +55 -0
- package/server/service/git-project/git-project.ts +84 -0
- package/server/service/git-project/index.ts +7 -0
- package/server/service/index.ts +8 -0
- package/things-factory.config.js +8 -0
- package/translations/en.json +3 -1
- package/translations/ja.json +3 -1
- package/translations/ko.json +3 -1
- package/translations/ms.json +3 -1
- package/translations/zh.json +3 -1
- package/views/auth-page.html +12 -8
- package/views/public/home.html +12 -9
- package/client/pages/main.ts +0 -33
- package/client/themes/app-theme.css +0 -142
- package/config.development.js +0 -7
- package/logs/application-2023-06-25-11.log +0 -12
- package/logs/application-2023-06-25-12.log +0 -34
- package/logs/application-2023-06-25-13.log +0 -8
- package/schema.gql +0 -841
- package/things-factory.config.ts +0 -13
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import fetch from 'node-fetch'
|
|
2
|
+
|
|
3
|
+
const GITHUB_API_URL = 'https://api.github.com'
|
|
4
|
+
const WEBHOOK_URL = 'http://your-server-url/github-webhook'
|
|
5
|
+
|
|
6
|
+
export const postGitHubComment = async (repoFullName: string, commitId: string, comment: string): Promise<void> => {
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(`${GITHUB_API_URL}/repos/${repoFullName}/commits/${commitId}/comments`, {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
headers: {
|
|
11
|
+
'Content-Type': 'application/json',
|
|
12
|
+
Authorization: `token ${process.env.GITHUB_API_KEY}`
|
|
13
|
+
},
|
|
14
|
+
body: JSON.stringify({ body: comment })
|
|
15
|
+
})
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
console.error('Failed to post GitHub comment:', response.statusText)
|
|
18
|
+
}
|
|
19
|
+
} catch (error) {
|
|
20
|
+
console.error('Error posting GitHub comment:', error)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const webhookExists = async (repoFullName: string): Promise<boolean> => {
|
|
25
|
+
try {
|
|
26
|
+
const response = await fetch(`${GITHUB_API_URL}/repos/${repoFullName}/hooks`, {
|
|
27
|
+
method: 'GET',
|
|
28
|
+
headers: {
|
|
29
|
+
'Content-Type': 'application/json',
|
|
30
|
+
Authorization: `token ${process.env.GITHUB_API_KEY}`
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
const hooks = await response.json()
|
|
34
|
+
return hooks.some((hook: any) => hook.config.url === WEBHOOK_URL)
|
|
35
|
+
} catch (error) {
|
|
36
|
+
console.error('Error checking webhook existence:', error)
|
|
37
|
+
return false
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const registerWebhook = async (repoFullName: string) => {
|
|
42
|
+
if (await webhookExists(repoFullName)) {
|
|
43
|
+
console.log('Webhook already registered.')
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(`${GITHUB_API_URL}/repos/${repoFullName}/hooks`, {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers: {
|
|
51
|
+
'Content-Type': 'application/json',
|
|
52
|
+
Authorization: `token ${process.env.GITHUB_API_KEY}`
|
|
53
|
+
},
|
|
54
|
+
body: JSON.stringify({
|
|
55
|
+
name: 'web',
|
|
56
|
+
active: true,
|
|
57
|
+
events: ['push'],
|
|
58
|
+
config: {
|
|
59
|
+
url: WEBHOOK_URL,
|
|
60
|
+
content_type: 'json'
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
console.error('Failed to register webhook:', response.statusText)
|
|
67
|
+
} else {
|
|
68
|
+
console.log('Webhook registered successfully.')
|
|
69
|
+
}
|
|
70
|
+
} catch (error) {
|
|
71
|
+
console.error('Error registering webhook:', error)
|
|
72
|
+
}
|
|
73
|
+
}
|
package/server/index.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const glob = require('glob')
|
|
2
|
+
const path = require('path')
|
|
3
|
+
|
|
4
|
+
export var migrations = []
|
|
5
|
+
|
|
6
|
+
glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {
|
|
7
|
+
if (file.indexOf('index.js') !== -1) return
|
|
8
|
+
migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])
|
|
9
|
+
})
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Router from 'koa-router'
|
|
2
|
+
import { codereviewCompletion } from '@things-factory/codelingua'
|
|
3
|
+
|
|
4
|
+
import { postGitHubComment } from '../controllers/github-controller'
|
|
5
|
+
|
|
6
|
+
export const githubWebhookRouter = new Router()
|
|
7
|
+
|
|
8
|
+
githubWebhookRouter.post('/github-webhook', async (context, next) => {
|
|
9
|
+
const commitDiff = context.request.body.head_commit.diff
|
|
10
|
+
|
|
11
|
+
const reviewFeedback = await codereviewCompletion(commitDiff)
|
|
12
|
+
|
|
13
|
+
await postGitHubComment(
|
|
14
|
+
context.request.body.repository.full_name,
|
|
15
|
+
context.request.body.head_commit.id,
|
|
16
|
+
reviewFeedback
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
context.status = 200
|
|
20
|
+
context.body = 'Success'
|
|
21
|
+
})
|
package/server/routes.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { githubWebhookRouter } from './routers/github-webhook-router'
|
|
2
2
|
|
|
3
3
|
process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {
|
|
4
4
|
/*
|
|
@@ -7,6 +7,8 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
|
7
7
|
* ex) routes.get('/path', async(context, next) => {})
|
|
8
8
|
* ex) routes.post('/path', async(context, next) => {})
|
|
9
9
|
*/
|
|
10
|
+
|
|
11
|
+
globalPublicRouter.use('', githubWebhookRouter.routes(), githubWebhookRouter.allowedMethods())
|
|
10
12
|
})
|
|
11
13
|
|
|
12
14
|
process.on('bootstrap-module-global-private-route' as any, (app, globalPrivateRouter) => {
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
|
|
2
|
+
import { In } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { GitProject } from './git-project'
|
|
5
|
+
import { NewGitProject, GitProjectPatch } from './git-project-type'
|
|
6
|
+
|
|
7
|
+
@Resolver(GitProject)
|
|
8
|
+
export class GitProjectMutation {
|
|
9
|
+
@Directive('@transaction')
|
|
10
|
+
@Mutation(returns => GitProject, { description: 'To create new GitProject' })
|
|
11
|
+
async createGitProject(@Arg('gitProject') gitProject: NewGitProject, @Ctx() context: ResolverContext): Promise<GitProject> {
|
|
12
|
+
const { domain, user, tx } = context.state
|
|
13
|
+
|
|
14
|
+
const result = await tx.getRepository(GitProject).save({
|
|
15
|
+
...gitProject,
|
|
16
|
+
domain,
|
|
17
|
+
creator: user,
|
|
18
|
+
updater: user
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
return result
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@Directive('@transaction')
|
|
25
|
+
@Mutation(returns => GitProject, { description: 'To modify GitProject information' })
|
|
26
|
+
async updateGitProject(
|
|
27
|
+
@Arg('id') id: string,
|
|
28
|
+
@Arg('patch') patch: GitProjectPatch,
|
|
29
|
+
@Ctx() context: ResolverContext
|
|
30
|
+
): Promise<GitProject> {
|
|
31
|
+
const { domain, user, tx } = context.state
|
|
32
|
+
|
|
33
|
+
const repository = tx.getRepository(GitProject)
|
|
34
|
+
const gitProject = await repository.findOne({
|
|
35
|
+
where: { domain: { id: domain.id }, id }
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
const result = await repository.save({
|
|
39
|
+
...gitProject,
|
|
40
|
+
...patch,
|
|
41
|
+
updater: user
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
return result
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Directive('@transaction')
|
|
48
|
+
@Mutation(returns => [GitProject], { description: "To modify multiple GitProjects' information" })
|
|
49
|
+
async updateMultipleGitProject(
|
|
50
|
+
@Arg('patches', type => [GitProjectPatch]) patches: GitProjectPatch[],
|
|
51
|
+
@Ctx() context: ResolverContext
|
|
52
|
+
): Promise<GitProject[]> {
|
|
53
|
+
const { domain, user, tx } = context.state
|
|
54
|
+
|
|
55
|
+
let results = []
|
|
56
|
+
const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
|
|
57
|
+
const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
|
|
58
|
+
const gitProjectRepo = tx.getRepository(GitProject)
|
|
59
|
+
|
|
60
|
+
if (_createRecords.length > 0) {
|
|
61
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
62
|
+
const newRecord = _createRecords[i]
|
|
63
|
+
|
|
64
|
+
const result = await gitProjectRepo.save({
|
|
65
|
+
...newRecord,
|
|
66
|
+
domain,
|
|
67
|
+
creator: user,
|
|
68
|
+
updater: user
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
results.push({ ...result, cuFlag: '+' })
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (_updateRecords.length > 0) {
|
|
76
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
77
|
+
const updateRecord = _updateRecords[i]
|
|
78
|
+
const gitProject = await gitProjectRepo.findOneBy({ id: updateRecord.id })
|
|
79
|
+
|
|
80
|
+
const result = await gitProjectRepo.save({
|
|
81
|
+
...gitProject,
|
|
82
|
+
...updateRecord,
|
|
83
|
+
updater: user
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
results.push({ ...result, cuFlag: 'M' })
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return results
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@Directive('@transaction')
|
|
94
|
+
@Mutation(returns => Boolean, { description: 'To delete GitProject' })
|
|
95
|
+
async deleteGitProject(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
|
|
96
|
+
const { domain, tx } = context.state
|
|
97
|
+
|
|
98
|
+
await tx.getRepository(GitProject).delete({ domain: { id: domain.id }, id })
|
|
99
|
+
|
|
100
|
+
return true
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Directive('@transaction')
|
|
104
|
+
@Mutation(returns => Boolean, { description: 'To delete multiple GitProjects' })
|
|
105
|
+
async deleteGitProjects(
|
|
106
|
+
@Arg('ids', type => [String]) ids: string[],
|
|
107
|
+
@Ctx() context: ResolverContext
|
|
108
|
+
): Promise<boolean> {
|
|
109
|
+
const { domain, tx } = context.state
|
|
110
|
+
|
|
111
|
+
await tx.getRepository(GitProject).delete({
|
|
112
|
+
domain: { id: domain.id },
|
|
113
|
+
id: In(ids)
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
return true
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@Directive('@transaction')
|
|
121
|
+
@Mutation(returns => Boolean, { description: 'To import multiple GitProjects' })
|
|
122
|
+
async importGitProjects(
|
|
123
|
+
@Arg('gitProjects', type => [GitProjectPatch]) gitProjects: GitProjectPatch[],
|
|
124
|
+
@Ctx() context: ResolverContext
|
|
125
|
+
): Promise<boolean> {
|
|
126
|
+
const { domain, tx } = context.state
|
|
127
|
+
|
|
128
|
+
await Promise.all(
|
|
129
|
+
gitProjects.map(async (gitProject: GitProjectPatch) => {
|
|
130
|
+
const createdGitProject: GitProject = await tx.getRepository(GitProject).save({ domain, ...gitProject })
|
|
131
|
+
})
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
return true
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
|
|
2
|
+
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
|
3
|
+
import { User } from '@things-factory/auth-base'
|
|
4
|
+
import { GitProject } from './git-project'
|
|
5
|
+
import { GitProjectList } from './git-project-type'
|
|
6
|
+
|
|
7
|
+
@Resolver(GitProject)
|
|
8
|
+
export class GitProjectQuery {
|
|
9
|
+
@Query(returns => GitProject!, { nullable: true, description: 'To fetch a GitProject' })
|
|
10
|
+
async gitProject(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<GitProject> {
|
|
11
|
+
const { domain } = context.state
|
|
12
|
+
|
|
13
|
+
return await getRepository(GitProject).findOne({
|
|
14
|
+
where: { domain: { id: domain.id }, id }
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@Query(returns => GitProjectList, { description: 'To fetch multiple GitProjects' })
|
|
19
|
+
async gitProjects(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<GitProjectList> {
|
|
20
|
+
const { domain } = context.state
|
|
21
|
+
|
|
22
|
+
const queryBuilder = getQueryBuilderFromListParams({
|
|
23
|
+
domain,
|
|
24
|
+
params,
|
|
25
|
+
repository: await getRepository(GitProject),
|
|
26
|
+
searchables: ['name', 'description']
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
const [items, total] = await queryBuilder.getManyAndCount()
|
|
30
|
+
|
|
31
|
+
return { items, total }
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@FieldResolver(type => Domain)
|
|
35
|
+
async domain(@Root() gitProject: GitProject): Promise<Domain> {
|
|
36
|
+
return gitProject.domainId && (await getRepository(Domain).findOneBy({ id: gitProject.domainId }))
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@FieldResolver(type => User)
|
|
40
|
+
async updater(@Root() gitProject: GitProject): Promise<User> {
|
|
41
|
+
return gitProject.updaterId && (await getRepository(User).findOneBy({ id: gitProject.updaterId }))
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@FieldResolver(type => User)
|
|
45
|
+
async creator(@Root() gitProject: GitProject): Promise<User> {
|
|
46
|
+
return gitProject.creatorId && (await getRepository(User).findOneBy({ id: gitProject.creatorId }))
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
|
|
2
|
+
import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
|
|
3
|
+
import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
|
|
4
|
+
|
|
5
|
+
import { ObjectRef, ScalarObject } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { GitProject, GitProjectStatus } from './git-project'
|
|
8
|
+
|
|
9
|
+
@InputType()
|
|
10
|
+
export class NewGitProject {
|
|
11
|
+
@Field()
|
|
12
|
+
name: string
|
|
13
|
+
|
|
14
|
+
@Field({ nullable: true })
|
|
15
|
+
description?: string
|
|
16
|
+
|
|
17
|
+
@Field(type => GitProjectStatus, { nullable: true })
|
|
18
|
+
state?: GitProjectStatus
|
|
19
|
+
|
|
20
|
+
@Field({ nullable: true })
|
|
21
|
+
active?: boolean
|
|
22
|
+
|
|
23
|
+
@Field({ nullable: true })
|
|
24
|
+
params?: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@InputType()
|
|
28
|
+
export class GitProjectPatch {
|
|
29
|
+
@Field(type => ID, { nullable: true })
|
|
30
|
+
id?: string
|
|
31
|
+
|
|
32
|
+
@Field({ nullable: true })
|
|
33
|
+
name?: string
|
|
34
|
+
|
|
35
|
+
@Field({ nullable: true })
|
|
36
|
+
description?: string
|
|
37
|
+
|
|
38
|
+
@Field(type => GitProjectStatus, { nullable: true })
|
|
39
|
+
state?: GitProjectStatus
|
|
40
|
+
|
|
41
|
+
@Field({ nullable: true })
|
|
42
|
+
active?: boolean
|
|
43
|
+
|
|
44
|
+
@Field({ nullable: true })
|
|
45
|
+
cuFlag?: string
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@ObjectType()
|
|
49
|
+
export class GitProjectList {
|
|
50
|
+
@Field(type => [GitProject])
|
|
51
|
+
items: GitProject[]
|
|
52
|
+
|
|
53
|
+
@Field(type => Int)
|
|
54
|
+
total: number
|
|
55
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CreateDateColumn,
|
|
3
|
+
UpdateDateColumn,
|
|
4
|
+
Entity,
|
|
5
|
+
Index,
|
|
6
|
+
Column,
|
|
7
|
+
RelationId,
|
|
8
|
+
ManyToOne,
|
|
9
|
+
PrimaryGeneratedColumn
|
|
10
|
+
} from 'typeorm'
|
|
11
|
+
import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
|
|
12
|
+
|
|
13
|
+
import { Domain } from '@things-factory/shell'
|
|
14
|
+
import { User } from '@things-factory/auth-base'
|
|
15
|
+
|
|
16
|
+
export enum GitProjectStatus {
|
|
17
|
+
STATUS_A = 'STATUS_A',
|
|
18
|
+
STATUS_B = 'STATUS_B'
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
registerEnumType(GitProjectStatus, {
|
|
22
|
+
name: 'GitProjectStatus',
|
|
23
|
+
description: 'state enumeration of a gitProject'
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
@Entity()
|
|
27
|
+
@Index('ix_git_project_0', (gitProject: GitProject) => [gitProject.domain, gitProject.name], {
|
|
28
|
+
unique: true
|
|
29
|
+
})
|
|
30
|
+
@ObjectType({ description: 'Entity for GitProject' })
|
|
31
|
+
export class GitProject {
|
|
32
|
+
@PrimaryGeneratedColumn('uuid')
|
|
33
|
+
@Field(type => ID)
|
|
34
|
+
readonly id: string
|
|
35
|
+
|
|
36
|
+
@ManyToOne(type => Domain)
|
|
37
|
+
@Field({ nullable: true })
|
|
38
|
+
domain?: Domain
|
|
39
|
+
|
|
40
|
+
@RelationId((gitProject: GitProject) => gitProject.domain)
|
|
41
|
+
domainId?: string
|
|
42
|
+
|
|
43
|
+
@Column()
|
|
44
|
+
@Field({ nullable: true })
|
|
45
|
+
name?: string
|
|
46
|
+
|
|
47
|
+
@Column({ nullable: true })
|
|
48
|
+
@Field({ nullable: true })
|
|
49
|
+
description?: string
|
|
50
|
+
|
|
51
|
+
@Column({ nullable: true })
|
|
52
|
+
@Field({ nullable: true })
|
|
53
|
+
active?: boolean
|
|
54
|
+
|
|
55
|
+
@Column({ nullable: true })
|
|
56
|
+
@Field({ nullable: true })
|
|
57
|
+
state?: GitProjectStatus
|
|
58
|
+
|
|
59
|
+
@Column({ nullable: true })
|
|
60
|
+
@Field({ nullable: true })
|
|
61
|
+
params?: string
|
|
62
|
+
|
|
63
|
+
@CreateDateColumn()
|
|
64
|
+
@Field({ nullable: true })
|
|
65
|
+
createdAt?: Date
|
|
66
|
+
|
|
67
|
+
@UpdateDateColumn()
|
|
68
|
+
@Field({ nullable: true })
|
|
69
|
+
updatedAt?: Date
|
|
70
|
+
|
|
71
|
+
@ManyToOne(type => User, { nullable: true })
|
|
72
|
+
@Field(type => User, { nullable: true })
|
|
73
|
+
creator?: User
|
|
74
|
+
|
|
75
|
+
@RelationId((gitProject: GitProject) => gitProject.creator)
|
|
76
|
+
creatorId?: string
|
|
77
|
+
|
|
78
|
+
@ManyToOne(type => User, { nullable: true })
|
|
79
|
+
@Field(type => User, { nullable: true })
|
|
80
|
+
updater?: User
|
|
81
|
+
|
|
82
|
+
@RelationId((gitProject: GitProject) => gitProject.updater)
|
|
83
|
+
updaterId?: string
|
|
84
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GitProject } from './git-project'
|
|
2
|
+
import { GitProjectQuery } from './git-project-query'
|
|
3
|
+
import { GitProjectMutation } from './git-project-mutation'
|
|
4
|
+
|
|
5
|
+
export const entities = [GitProject]
|
|
6
|
+
export const resolvers = [GitProjectQuery, GitProjectMutation]
|
|
7
|
+
export const subscribers = []
|
package/server/service/index.ts
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
/* EXPORT ENTITY TYPES */
|
|
2
|
+
export * from './git-project/git-project'
|
|
2
3
|
|
|
3
4
|
/* IMPORT ENTITIES AND RESOLVERS */
|
|
5
|
+
import {
|
|
6
|
+
entities as GitProjectEntities,
|
|
7
|
+
resolvers as GitProjectResolvers,
|
|
8
|
+
subscribers as GitProjectSubscribers
|
|
9
|
+
} from './git-project'
|
|
4
10
|
|
|
5
11
|
export const entities = [
|
|
6
12
|
/* ENTITIES */
|
|
13
|
+
...GitProjectEntities
|
|
7
14
|
]
|
|
8
15
|
|
|
9
16
|
export const schema = {
|
|
10
17
|
resolverClasses: [
|
|
11
18
|
/* RESOLVER CLASSES */
|
|
19
|
+
...GitProjectResolvers
|
|
12
20
|
]
|
|
13
21
|
}
|
package/translations/en.json
CHANGED
package/translations/ja.json
CHANGED
package/translations/ko.json
CHANGED
package/translations/ms.json
CHANGED
package/translations/zh.json
CHANGED
package/views/auth-page.html
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
|
-
<title>Codelingua</title>
|
|
5
|
+
<title>Operato-Codelingua</title>
|
|
6
6
|
<meta name="generator" content="Things Factory Starter Kit" />
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
8
|
-
<meta name="description" content="
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
|
8
|
+
<meta name="description" content="Revolutionizing Software Development: Work Smarter, Code Better" />
|
|
9
|
+
<meta name="google" content="notranslate"/>
|
|
9
10
|
|
|
10
11
|
<base href="/" />
|
|
11
12
|
|
|
@@ -19,15 +20,15 @@
|
|
|
19
20
|
|
|
20
21
|
<!-- Add to homescreen for Chrome on Android. Fallback for manifest.json -->
|
|
21
22
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
22
|
-
<meta name="application-name" content="Codelingua" />
|
|
23
|
-
<meta name="application-description" content="
|
|
23
|
+
<meta name="application-name" content="Operato-Codelingua" />
|
|
24
|
+
<meta name="application-description" content="Revolutionizing Software Development: Work Smarter, Code Better" />
|
|
24
25
|
<meta name="application-copyright" content="Copyright © hatiolab.com. All Rights Reserved." />
|
|
25
26
|
<link rel="application-icon" href="/assets/manifest/icon-96x96.png" />
|
|
26
27
|
|
|
27
28
|
<!-- Add to homescreen for Safari on iOS -->
|
|
28
29
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
29
30
|
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
|
30
|
-
<meta name="apple-mobile-web-app-title" content="Codelingua" />
|
|
31
|
+
<meta name="apple-mobile-web-app-title" content="Operato-Codelingua" />
|
|
31
32
|
|
|
32
33
|
<!-- Homescreen icons -->
|
|
33
34
|
<link rel="apple-touch-icon" href="/assets/manifest/icon-48x48.png" />
|
|
@@ -45,14 +46,17 @@
|
|
|
45
46
|
<meta name="twitter:card" content="summary" />
|
|
46
47
|
<meta name="twitter:site" content="@username" />
|
|
47
48
|
<meta property="og:type" content="website" />
|
|
48
|
-
<meta property="og:site_name" content="Codelingua,
|
|
49
|
+
<meta property="og:site_name" content="Operato-Codelingua, Revolutionizing Software Development: Work Smarter, Code Better." />
|
|
49
50
|
<meta property="og:image" content="/assets/manifest/image-metaog.png" />
|
|
50
51
|
|
|
51
52
|
<!-- Performance tip: hint to the browser to start the handshake for the fonts site -->
|
|
52
53
|
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
|
|
53
54
|
<link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
|
|
55
|
+
<link href="/node_modules/material-symbols/index.css" rel="stylesheet" />
|
|
56
|
+
<link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
|
|
54
57
|
<link rel="stylesheet" href="/theme.css" />
|
|
55
58
|
|
|
59
|
+
|
|
56
60
|
<style>
|
|
57
61
|
body {
|
|
58
62
|
margin: 0;
|
|
@@ -72,7 +76,7 @@
|
|
|
72
76
|
<link rel="prefetch" href="/auth/forgot-password.js">
|
|
73
77
|
<link rel="prefetch" href="/auth/checkin.js">
|
|
74
78
|
</head>
|
|
75
|
-
<body>
|
|
79
|
+
<body class="light">
|
|
76
80
|
<<%- pageElement %> id="page"></<%- pageElement %>>
|
|
77
81
|
<noscript>
|
|
78
82
|
Please enable JavaScript to view this website.
|
package/views/public/home.html
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
|
-
<
|
|
5
|
+
<meta name="google" content="notranslate" />
|
|
6
|
+
<title>Operato-Codelingua</title>
|
|
6
7
|
<meta name="generator" content="Things Factory Starter Kit" />
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
8
|
-
<meta name="description" content="
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
|
9
|
+
<meta name="description" content="Revolutionizing Software Development: Work Smarter, Code Better" />
|
|
9
10
|
|
|
10
11
|
<base href="/" />
|
|
11
12
|
|
|
@@ -19,15 +20,15 @@
|
|
|
19
20
|
|
|
20
21
|
<!-- Add to homescreen for Chrome on Android. Fallback for manifest.json -->
|
|
21
22
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
22
|
-
<meta name="application-name" content="Codelingua" />
|
|
23
|
-
<meta name="application-description" content="
|
|
23
|
+
<meta name="application-name" content="Operato-Codelingua" />
|
|
24
|
+
<meta name="application-description" content="Revolutionizing Software Development: Work Smarter, Code Better" />
|
|
24
25
|
<meta name="application-copyright" content="Copyright © hatiolab.com. All Rights Reserved." />
|
|
25
26
|
<link rel="application-icon" href="/assets/manifest/icon-96x96.png" />
|
|
26
27
|
|
|
27
28
|
<!-- Add to homescreen for Safari on iOS -->
|
|
28
29
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
29
30
|
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
|
30
|
-
<meta name="apple-mobile-web-app-title" content="Codelingua" />
|
|
31
|
+
<meta name="apple-mobile-web-app-title" content="Operato-Codelingua" />
|
|
31
32
|
|
|
32
33
|
<!-- Homescreen icons -->
|
|
33
34
|
<link rel="apple-touch-icon" href="/assets/manifest/icon-48x48.png" />
|
|
@@ -45,12 +46,14 @@
|
|
|
45
46
|
<meta name="twitter:card" content="summary" />
|
|
46
47
|
<meta name="twitter:site" content="@username" />
|
|
47
48
|
<meta property="og:type" content="website" />
|
|
48
|
-
<meta property="og:site_name" content="Codelingua, Heart of platform." />
|
|
49
|
+
<meta property="og:site_name" content="Operato-Codelingua, Heart of platform." />
|
|
49
50
|
<meta property="og:image" content="/assets/manifest/image-metaog.png" />
|
|
50
51
|
|
|
51
52
|
<!-- Performance tip: hint to the browser to start the handshake for the fonts site -->
|
|
52
53
|
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
|
|
53
54
|
<link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
|
|
55
|
+
<link href="/node_modules/material-symbols/index.css" rel="stylesheet" />
|
|
56
|
+
<link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
|
|
54
57
|
<link rel="stylesheet" href="/theme.css" />
|
|
55
58
|
|
|
56
59
|
<style>
|
|
@@ -69,7 +72,7 @@
|
|
|
69
72
|
<!--- prefetch -->
|
|
70
73
|
<link rel="prefetch" href="/public/home.js" />
|
|
71
74
|
</head>
|
|
72
|
-
<body>
|
|
75
|
+
<body class="light">
|
|
73
76
|
<home-page id="page"></home-page>
|
|
74
77
|
<noscript> Please enable JavaScript to view this website. </noscript>
|
|
75
78
|
<!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
|