feat(CodeFeed): Enhance commit results with human-readable time

This commit is contained in:
Philipp Kunz 2024-12-13 22:15:33 +01:00
parent d23a27eb66
commit 46bd0a2486
6 changed files with 108 additions and 68 deletions

View File

@ -1,5 +1,12 @@
# Changelog # Changelog
## 2024-12-13 - 1.4.0 - feat(CodeFeed)
Enhance commit results with human-readable time
- Integrated smarttime plugin to calculate and format timestamps into human-readable time.
- Updated dependencies in package.json to include smarttime and adjusted versions for existing packages.
- Improved fetchAllCommitsFromInstance method to display formatted time ago information for each commit.
## 2024-12-13 - 1.3.0 - feat(core) ## 2024-12-13 - 1.3.0 - feat(core)
Export CommitResult interface for external use. Export CommitResult interface for external use.

View File

@ -10,7 +10,7 @@
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"test": "(tstest test/ --web)", "test": "(tstest test/ --web)",
"build": "(tsbuild --web --allowimplicitany)", "build": "(tsbuild tsfolders --web --allowimplicitany)",
"buildDocs": "(tsdoc)" "buildDocs": "(tsdoc)"
}, },
"devDependencies": { "devDependencies": {
@ -19,11 +19,12 @@
"@git.zone/tsrun": "^1.2.46", "@git.zone/tsrun": "^1.2.46",
"@git.zone/tstest": "^1.0.44", "@git.zone/tstest": "^1.0.44",
"@push.rocks/tapbundle": "^5.0.15", "@push.rocks/tapbundle": "^5.0.15",
"@types/node": "^20.8.7" "@types/node": "^22.10.2"
}, },
"dependencies": { "dependencies": {
"@push.rocks/qenv": "^6.1.0", "@push.rocks/qenv": "^6.1.0",
"@push.rocks/smartnpm": "^2.0.4", "@push.rocks/smartnpm": "^2.0.4",
"@push.rocks/smarttime": "^4.1.1",
"@push.rocks/smartxml": "^1.0.8" "@push.rocks/smartxml": "^1.0.8"
}, },
"repository": { "repository": {

133
pnpm-lock.yaml generated
View File

@ -14,6 +14,9 @@ importers:
'@push.rocks/smartnpm': '@push.rocks/smartnpm':
specifier: ^2.0.4 specifier: ^2.0.4
version: 2.0.4 version: 2.0.4
'@push.rocks/smarttime':
specifier: ^4.1.1
version: 4.1.1
'@push.rocks/smartxml': '@push.rocks/smartxml':
specifier: ^1.0.8 specifier: ^1.0.8
version: 1.0.8 version: 1.0.8
@ -34,8 +37,8 @@ importers:
specifier: ^5.0.15 specifier: ^5.0.15
version: 5.5.3(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/credential-providers@3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0)))(socks@2.8.3) version: 5.5.3(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/credential-providers@3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0)))(socks@2.8.3)
'@types/node': '@types/node':
specifier: ^20.8.7 specifier: ^22.10.2
version: 20.17.10 version: 22.10.2
packages: packages:
@ -842,8 +845,8 @@ packages:
'@push.rocks/smartstring@4.0.15': '@push.rocks/smartstring@4.0.15':
resolution: {integrity: sha512-NTNeOjWyg+aHtBTiQEyXamr7oTvYZ3wS1fudHo9ua7CLrykpK+i+RxFyJaLg1zB5x9xQF3NLEQecB14HPFX8Cg==} resolution: {integrity: sha512-NTNeOjWyg+aHtBTiQEyXamr7oTvYZ3wS1fudHo9ua7CLrykpK+i+RxFyJaLg1zB5x9xQF3NLEQecB14HPFX8Cg==}
'@push.rocks/smarttime@4.0.8': '@push.rocks/smarttime@4.1.1':
resolution: {integrity: sha512-He+1ebBowVd8rW+VHZMFmz407xVMQf/JbyKr3s1ozoIlJS1AhZpDvlkzyqLV2tNMP1/cEBeo25ImJN2x1pksBA==} resolution: {integrity: sha512-Ha/3J/G+zfTl4ahpZgF6oUOZnUjpLhrBja0OQ2cloFxF9sKT8I1COaSqIfBGDtoK2Nly4UD4aTJ3JcJNOg/kgA==}
'@push.rocks/smartunique@3.0.9': '@push.rocks/smartunique@3.0.9':
resolution: {integrity: sha512-q6DYQgT7/dqdWi9HusvtWCjdsFzLFXY9LTtaZV6IYNJt6teZOonoygxTdNt9XLn6niBSbLYrHSKvJNTRH/uK+g==} resolution: {integrity: sha512-q6DYQgT7/dqdWi9HusvtWCjdsFzLFXY9LTtaZV6IYNJt6teZOonoygxTdNt9XLn6niBSbLYrHSKvJNTRH/uK+g==}
@ -1391,8 +1394,8 @@ packages:
'@types/node-forge@1.3.11': '@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
'@types/node@20.17.10': '@types/node@22.10.2':
resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==} resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
'@types/parse5@6.0.3': '@types/parse5@6.0.3':
resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
@ -1862,9 +1865,9 @@ packages:
resolution: {integrity: sha512-9pSLe+tDJnmNak2JeMkz6ZmTCXP5p6vCxSd4kvDqrTJkqAP62j2uAEIZjf8cPDZIakStujqVzh5Y5MIWH3yYAw==} resolution: {integrity: sha512-9pSLe+tDJnmNak2JeMkz6ZmTCXP5p6vCxSd4kvDqrTJkqAP62j2uAEIZjf8cPDZIakStujqVzh5Y5MIWH3yYAw==}
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
croner@7.0.8: croner@9.0.0:
resolution: {integrity: sha512-4E27J9ZQV9prM9ggU18QGPYPMSblbA9JuGv4Ff3Gk6supX4RszNGQxBgiFBL6wb/L9HuSMpFbQpduMiDRo+z5Q==} resolution: {integrity: sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==}
engines: {node: '>=6.0'} engines: {node: '>=18.0'}
cross-fetch@3.1.5: cross-fetch@3.1.5:
resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
@ -1880,6 +1883,9 @@ packages:
resolution: {integrity: sha512-KWjTXWwxFd6a94m5CdRGW/t82Tr8DoBc9dNnPCAbFI1EBweN6v1tv8y4Y1m7ndkp/nkIBRxUxAzpaBnR2k3bcQ==} resolution: {integrity: sha512-KWjTXWwxFd6a94m5CdRGW/t82Tr8DoBc9dNnPCAbFI1EBweN6v1tv8y4Y1m7ndkp/nkIBRxUxAzpaBnR2k3bcQ==}
engines: {node: '>=14.16'} engines: {node: '>=14.16'}
date-fns@4.1.0:
resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
dayjs@1.11.13: dayjs@1.11.13:
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
@ -3231,6 +3237,10 @@ packages:
resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==}
engines: {node: '>=12'} engines: {node: '>=12'}
parse-ms@4.0.0:
resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
engines: {node: '>=18'}
parse5@6.0.1: parse5@6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
@ -3322,6 +3332,10 @@ packages:
resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==}
engines: {node: '>=14.16'} engines: {node: '>=14.16'}
pretty-ms@9.2.0:
resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==}
engines: {node: '>=18'}
process-nextick-args@2.0.1: process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
@ -3841,8 +3855,8 @@ packages:
unbzip2-stream@1.4.3: unbzip2-stream@1.4.3:
resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
undici-types@6.19.8: undici-types@6.20.0:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
unified@11.0.5: unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
@ -4110,7 +4124,7 @@ snapshots:
'@push.rocks/smartrx': 3.0.7 '@push.rocks/smartrx': 3.0.7
'@push.rocks/smartsitemap': 2.0.3 '@push.rocks/smartsitemap': 2.0.3
'@push.rocks/smartstream': 3.2.5 '@push.rocks/smartstream': 3.2.5
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
'@push.rocks/taskbuffer': 3.1.7 '@push.rocks/taskbuffer': 3.1.7
'@push.rocks/webrequest': 3.0.37 '@push.rocks/webrequest': 3.0.37
'@push.rocks/webstore': 2.0.20 '@push.rocks/webstore': 2.0.20
@ -5051,7 +5065,7 @@ snapshots:
'@jest/schemas': 29.6.3 '@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4 '@types/istanbul-reports': 3.0.4
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/yargs': 17.0.33 '@types/yargs': 17.0.33
chalk: 4.1.2 chalk: 4.1.2
@ -5189,7 +5203,7 @@ snapshots:
'@push.rocks/smartmatch': 2.0.0 '@push.rocks/smartmatch': 2.0.0
'@push.rocks/smartpromise': 4.0.4 '@push.rocks/smartpromise': 4.0.4
'@push.rocks/smartrx': 3.0.7 '@push.rocks/smartrx': 3.0.7
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
'@types/minimatch': 5.1.2 '@types/minimatch': 5.1.2
'@types/symbol-tree': 3.2.5 '@types/symbol-tree': 3.2.5
symbol-tree: 3.2.4 symbol-tree: 3.2.4
@ -5299,7 +5313,7 @@ snapshots:
'@push.rocks/smartpromise': 4.0.4 '@push.rocks/smartpromise': 4.0.4
'@push.rocks/smartrx': 3.0.7 '@push.rocks/smartrx': 3.0.7
'@push.rocks/smartstring': 4.0.15 '@push.rocks/smartstring': 4.0.15
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
'@push.rocks/smartunique': 3.0.9 '@push.rocks/smartunique': 3.0.9
'@push.rocks/taskbuffer': 3.1.7 '@push.rocks/taskbuffer': 3.1.7
'@tsclass/tsclass': 4.2.0 '@tsclass/tsclass': 4.2.0
@ -5492,7 +5506,7 @@ snapshots:
'@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpath': 5.0.18
'@push.rocks/smartpromise': 4.0.4 '@push.rocks/smartpromise': 4.0.4
'@push.rocks/smartrequest': 2.0.23 '@push.rocks/smartrequest': 2.0.23
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
'@push.rocks/smartversion': 3.0.5 '@push.rocks/smartversion': 3.0.5
package-json: 8.1.1 package-json: 8.1.1
transitivePeerDependencies: transitivePeerDependencies:
@ -5615,7 +5629,7 @@ snapshots:
'@push.rocks/smartlog': 3.0.7 '@push.rocks/smartlog': 3.0.7
'@push.rocks/smartpromise': 4.0.4 '@push.rocks/smartpromise': 4.0.4
'@push.rocks/smartrx': 3.0.7 '@push.rocks/smartrx': 3.0.7
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
engine.io: 6.5.4 engine.io: 6.5.4
socket.io: 4.7.5 socket.io: 4.7.5
socket.io-client: 4.7.5 socket.io-client: 4.7.5
@ -5669,15 +5683,16 @@ snapshots:
strip-indent: 4.0.0 strip-indent: 4.0.0
url: 0.11.4 url: 0.11.4
'@push.rocks/smarttime@4.0.8': '@push.rocks/smarttime@4.1.1':
dependencies: dependencies:
'@push.rocks/lik': 6.1.0 '@push.rocks/lik': 6.1.0
'@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartpromise': 4.0.4 '@push.rocks/smartpromise': 4.0.4
croner: 7.0.8 croner: 9.0.0
date-fns: 4.1.0
dayjs: 1.11.13 dayjs: 1.11.13
is-nan: 1.3.2 is-nan: 1.3.2
pretty-ms: 8.0.0 pretty-ms: 9.2.0
'@push.rocks/smartunique@3.0.9': '@push.rocks/smartunique@3.0.9':
dependencies: dependencies:
@ -5718,7 +5733,7 @@ snapshots:
'@push.rocks/smartrequest': 2.0.23 '@push.rocks/smartrequest': 2.0.23
'@push.rocks/smarts3': 2.2.5 '@push.rocks/smarts3': 2.2.5
'@push.rocks/smartshell': 3.2.0 '@push.rocks/smartshell': 3.2.0
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
expect: 29.7.0 expect: 29.7.0
transitivePeerDependencies: transitivePeerDependencies:
- '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sso-oidc'
@ -5741,7 +5756,7 @@ snapshots:
'@push.rocks/smartlog': 3.0.7 '@push.rocks/smartlog': 3.0.7
'@push.rocks/smartpromise': 4.0.4 '@push.rocks/smartpromise': 4.0.4
'@push.rocks/smartrx': 3.0.7 '@push.rocks/smartrx': 3.0.7
'@push.rocks/smarttime': 4.0.8 '@push.rocks/smarttime': 4.1.1
'@push.rocks/smartunique': 3.0.9 '@push.rocks/smartunique': 3.0.9
'@push.rocks/webrequest@3.0.37': '@push.rocks/webrequest@3.0.37':
@ -6326,14 +6341,14 @@ snapshots:
'@types/accepts@1.3.7': '@types/accepts@1.3.7':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/babel__code-frame@7.0.6': {} '@types/babel__code-frame@7.0.6': {}
'@types/body-parser@1.19.5': '@types/body-parser@1.19.5':
dependencies: dependencies:
'@types/connect': 3.4.38 '@types/connect': 3.4.38
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/buffer-json@2.0.3': {} '@types/buffer-json@2.0.3': {}
@ -6349,17 +6364,17 @@ snapshots:
'@types/clean-css@4.2.11': '@types/clean-css@4.2.11':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
source-map: 0.6.1 source-map: 0.6.1
'@types/co-body@6.1.3': '@types/co-body@6.1.3':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/qs': 6.9.17 '@types/qs': 6.9.17
'@types/connect@3.4.38': '@types/connect@3.4.38':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/content-disposition@0.5.8': {} '@types/content-disposition@0.5.8': {}
@ -6372,11 +6387,11 @@ snapshots:
'@types/connect': 3.4.38 '@types/connect': 3.4.38
'@types/express': 5.0.0 '@types/express': 5.0.0
'@types/keygrip': 1.0.6 '@types/keygrip': 1.0.6
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/cors@2.8.17': '@types/cors@2.8.17':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/debounce@1.2.4': {} '@types/debounce@1.2.4': {}
@ -6390,14 +6405,14 @@ snapshots:
'@types/express-serve-static-core@4.19.6': '@types/express-serve-static-core@4.19.6':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/qs': 6.9.17 '@types/qs': 6.9.17
'@types/range-parser': 1.2.7 '@types/range-parser': 1.2.7
'@types/send': 0.17.4 '@types/send': 0.17.4
'@types/express-serve-static-core@5.0.2': '@types/express-serve-static-core@5.0.2':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/qs': 6.9.17 '@types/qs': 6.9.17
'@types/range-parser': 1.2.7 '@types/range-parser': 1.2.7
'@types/send': 0.17.4 '@types/send': 0.17.4
@ -6422,30 +6437,30 @@ snapshots:
'@types/from2@2.3.5': '@types/from2@2.3.5':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/fs-extra@11.0.4': '@types/fs-extra@11.0.4':
dependencies: dependencies:
'@types/jsonfile': 6.1.4 '@types/jsonfile': 6.1.4
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/fs-extra@9.0.13': '@types/fs-extra@9.0.13':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/glob@7.2.0': '@types/glob@7.2.0':
dependencies: dependencies:
'@types/minimatch': 5.1.2 '@types/minimatch': 5.1.2
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/glob@8.1.0': '@types/glob@8.1.0':
dependencies: dependencies:
'@types/minimatch': 5.1.2 '@types/minimatch': 5.1.2
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/gunzip-maybe@1.4.2': '@types/gunzip-maybe@1.4.2':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/hast@3.0.4': '@types/hast@3.0.4':
dependencies: dependencies:
@ -6479,7 +6494,7 @@ snapshots:
'@types/jsonfile@6.1.4': '@types/jsonfile@6.1.4':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/keygrip@1.0.6': {} '@types/keygrip@1.0.6': {}
@ -6496,7 +6511,7 @@ snapshots:
'@types/http-errors': 2.0.4 '@types/http-errors': 2.0.4
'@types/keygrip': 1.0.6 '@types/keygrip': 1.0.6
'@types/koa-compose': 3.2.8 '@types/koa-compose': 3.2.8
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/mdast@4.0.4': '@types/mdast@4.0.4':
dependencies: dependencies:
@ -6514,11 +6529,11 @@ snapshots:
'@types/node-forge@1.3.11': '@types/node-forge@1.3.11':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/node@20.17.10': '@types/node@22.10.2':
dependencies: dependencies:
undici-types: 6.19.8 undici-types: 6.20.0
'@types/parse5@6.0.3': {} '@types/parse5@6.0.3': {}
@ -6534,19 +6549,19 @@ snapshots:
'@types/s3rver@3.7.4': '@types/s3rver@3.7.4':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/semver@7.5.8': {} '@types/semver@7.5.8': {}
'@types/send@0.17.4': '@types/send@0.17.4':
dependencies: dependencies:
'@types/mime': 1.3.5 '@types/mime': 1.3.5
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/serve-static@1.15.7': '@types/serve-static@1.15.7':
dependencies: dependencies:
'@types/http-errors': 2.0.4 '@types/http-errors': 2.0.4
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/send': 0.17.4 '@types/send': 0.17.4
'@types/sinon-chai@3.2.12': '@types/sinon-chai@3.2.12':
@ -6566,11 +6581,11 @@ snapshots:
'@types/tar-stream@2.2.3': '@types/tar-stream@2.2.3':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/through2@2.0.41': '@types/through2@2.0.41':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/triple-beam@1.3.5': {} '@types/triple-beam@1.3.5': {}
@ -6594,7 +6609,7 @@ snapshots:
'@types/whatwg-url@8.2.2': '@types/whatwg-url@8.2.2':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/webidl-conversions': 7.0.3 '@types/webidl-conversions': 7.0.3
'@types/which@2.0.2': {} '@types/which@2.0.2': {}
@ -6603,11 +6618,11 @@ snapshots:
'@types/ws@7.4.7': '@types/ws@7.4.7':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/ws@8.5.13': '@types/ws@8.5.13':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
'@types/yargs-parser@21.0.3': {} '@types/yargs-parser@21.0.3': {}
@ -6617,7 +6632,7 @@ snapshots:
'@types/yauzl@2.10.3': '@types/yauzl@2.10.3':
dependencies: dependencies:
'@types/node': 20.17.10 '@types/node': 22.10.2
optional: true optional: true
'@ungap/structured-clone@1.2.1': {} '@ungap/structured-clone@1.2.1': {}
@ -7034,7 +7049,7 @@ snapshots:
croner@5.7.0: {} croner@5.7.0: {}
croner@7.0.8: {} croner@9.0.0: {}
cross-fetch@3.1.5: cross-fetch@3.1.5:
dependencies: dependencies:
@ -7057,6 +7072,8 @@ snapshots:
dependencies: dependencies:
type-fest: 2.19.0 type-fest: 2.19.0
date-fns@4.1.0: {}
dayjs@1.11.13: {} dayjs@1.11.13: {}
debounce@1.2.1: {} debounce@1.2.1: {}
@ -7200,7 +7217,7 @@ snapshots:
dependencies: dependencies:
'@types/cookie': 0.4.1 '@types/cookie': 0.4.1
'@types/cors': 2.8.17 '@types/cors': 2.8.17
'@types/node': 20.17.10 '@types/node': 22.10.2
accepts: 1.3.8 accepts: 1.3.8
base64id: 2.0.0 base64id: 2.0.0
cookie: 0.4.2 cookie: 0.4.2
@ -7892,7 +7909,7 @@ snapshots:
jest-util@29.7.0: jest-util@29.7.0:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.17.10 '@types/node': 22.10.2
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -8689,6 +8706,8 @@ snapshots:
parse-ms@3.0.0: {} parse-ms@3.0.0: {}
parse-ms@4.0.0: {}
parse5@6.0.1: {} parse5@6.0.1: {}
parseurl@1.3.3: {} parseurl@1.3.3: {}
@ -8763,6 +8782,10 @@ snapshots:
dependencies: dependencies:
parse-ms: 3.0.0 parse-ms: 3.0.0
pretty-ms@9.2.0:
dependencies:
parse-ms: 4.0.0
process-nextick-args@2.0.1: {} process-nextick-args@2.0.1: {}
progress@2.0.3: {} progress@2.0.3: {}
@ -9386,7 +9409,7 @@ snapshots:
buffer: 5.7.1 buffer: 5.7.1
through: 2.3.8 through: 2.3.8
undici-types@6.19.8: {} undici-types@6.20.0: {}
unified@11.0.5: unified@11.0.5:
dependencies: dependencies:

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@foss.global/codefeed', name: '@foss.global/codefeed',
version: '1.3.0', version: '1.4.0',
description: 'a module for creating feeds for code development' description: 'a module for creating feeds for code development'
} }

View File

@ -2,9 +2,11 @@
import * as qenv from '@push.rocks/qenv'; import * as qenv from '@push.rocks/qenv';
import * as smartnpm from '@push.rocks/smartnpm'; import * as smartnpm from '@push.rocks/smartnpm';
import * as smartxml from '@push.rocks/smartxml'; import * as smartxml from '@push.rocks/smartxml';
import * as smarttime from '@push.rocks/smarttime';
export { export {
qenv, qenv,
smartnpm, smartnpm,
smartxml, smartxml,
smarttime,
} }

View File

@ -42,6 +42,7 @@ export interface CommitResult {
commitMessage: string; commitMessage: string;
tagged: boolean; tagged: boolean;
publishedOnNpm: boolean; publishedOnNpm: boolean;
prettyAgoTime: string;
} }
export class CodeFeed { export class CodeFeed {
@ -282,16 +283,20 @@ export class CodeFeed {
const taggedCommitShas = await this.fetchTags(org, repo); const taggedCommitShas = await this.fetchTags(org, repo);
const commits = await this.fetchRecentCommitsForRepo(org, repo); const commits = await this.fetchRecentCommitsForRepo(org, repo);
const commitResults = commits.map((c) => ({ const commitResults = commits.map((c) => {
const commit: CommitResult = {
baseUrl: this.baseUrl, baseUrl: this.baseUrl,
org, org,
repo, repo,
timestamp: c.commit.author.date, timestamp: c.commit.author.date,
prettyAgoTime: plugins.smarttime.getMilliSecondsAsHumanReadableAgoTime(new Date(c.commit.author.date).getTime()),
hash: c.sha, hash: c.sha,
commitMessage: c.commit.message, commitMessage: c.commit.message,
tagged: taggedCommitShas.has(c.sha), tagged: taggedCommitShas.has(c.sha),
publishedOnNpm: false, publishedOnNpm: false,
})); }
return commit;
});
if (commitResults.length > 0) { if (commitResults.length > 0) {
try { try {
@ -319,6 +324,8 @@ export class CodeFeed {
console.log(`Processed ${allCommits.length} commits in total.`); console.log(`Processed ${allCommits.length} commits in total.`);
for (const c of allCommits) { for (const c of allCommits) {
console.log(`______________________________________________________ console.log(`______________________________________________________
${c.prettyAgoTime}
${c.timestamp}
Commit ${c.hash} by ${c.org}/${c.repo} at ${c.timestamp} Commit ${c.hash} by ${c.org}/${c.repo} at ${c.timestamp}
${c.commitMessage} ${c.commitMessage}
Published on npm: ${c.publishedOnNpm} Published on npm: ${c.publishedOnNpm}