diff --git a/.gitea/workflows/default_nottags.yaml b/.gitea/workflows/default_nottags.yaml new file mode 100644 index 0000000..0bae651 --- /dev/null +++ b/.gitea/workflows/default_nottags.yaml @@ -0,0 +1,66 @@ +name: Default (not tags) + +on: + push: + tags-ignore: + - '**' + +env: + IMAGE: code.foss.global/host.today/ht-docker-node:npmci + NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git + NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}} + NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}} + NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}} + NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}} + +jobs: + security: + runs-on: ubuntu-latest + continue-on-error: true + container: + image: ${{ env.IMAGE }} + + steps: + - uses: actions/checkout@v3 + + - name: Install pnpm and npmci + run: | + pnpm install -g pnpm + pnpm install -g @ship.zone/npmci + + - name: Run npm prepare + run: npmci npm prepare + + - name: Audit production dependencies + run: | + npmci command npm config set registry https://registry.npmjs.org + npmci command pnpm audit --audit-level=high --prod + continue-on-error: true + + - name: Audit development dependencies + run: | + npmci command npm config set registry https://registry.npmjs.org + npmci command pnpm audit --audit-level=high --dev + continue-on-error: true + + test: + if: ${{ always() }} + needs: security + runs-on: ubuntu-latest + container: + image: ${{ env.IMAGE }} + + steps: + - uses: actions/checkout@v3 + + - name: Test stable + run: | + npmci node install stable + npmci npm install + npmci npm test + + - name: Test build + run: | + npmci node install stable + npmci npm install + npmci npm build diff --git a/.gitea/workflows/default_tags.yaml b/.gitea/workflows/default_tags.yaml new file mode 100644 index 0000000..821d33f --- /dev/null +++ b/.gitea/workflows/default_tags.yaml @@ -0,0 +1,124 @@ +name: Default (tags) + +on: + push: + tags: + - '*' + +env: + IMAGE: code.foss.global/host.today/ht-docker-node:npmci + NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git + NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}} + NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}} + NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}} + NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}} + +jobs: + security: + runs-on: ubuntu-latest + continue-on-error: true + container: + image: ${{ env.IMAGE }} + + steps: + - uses: actions/checkout@v3 + + - name: Prepare + run: | + pnpm install -g pnpm + pnpm install -g @ship.zone/npmci + npmci npm prepare + + - name: Audit production dependencies + run: | + npmci command npm config set registry https://registry.npmjs.org + npmci command pnpm audit --audit-level=high --prod + continue-on-error: true + + - name: Audit development dependencies + run: | + npmci command npm config set registry https://registry.npmjs.org + npmci command pnpm audit --audit-level=high --dev + continue-on-error: true + + test: + if: ${{ always() }} + needs: security + runs-on: ubuntu-latest + container: + image: ${{ env.IMAGE }} + + steps: + - uses: actions/checkout@v3 + + - name: Prepare + run: | + pnpm install -g pnpm + pnpm install -g @ship.zone/npmci + npmci npm prepare + + - name: Test stable + run: | + npmci node install stable + npmci npm install + npmci npm test + + - name: Test build + run: | + npmci node install stable + npmci npm install + npmci npm build + + release: + needs: test + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + container: + image: ${{ env.IMAGE }} + + steps: + - uses: actions/checkout@v3 + + - name: Prepare + run: | + pnpm install -g pnpm + pnpm install -g @ship.zone/npmci + npmci npm prepare + + - name: Release + run: | + npmci node install stable + npmci npm publish + + metadata: + needs: test + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + container: + image: ${{ env.IMAGE }} + continue-on-error: true + + steps: + - uses: actions/checkout@v3 + + - name: Prepare + run: | + pnpm install -g pnpm + pnpm install -g @ship.zone/npmci + npmci npm prepare + + - name: Code quality + run: | + npmci command npm install -g typescript + npmci npm install + + - name: Trigger + run: npmci trigger + + - name: Build docs and upload artifacts + run: | + npmci node install stable + npmci npm install + pnpm install -g @git.zone/tsdoc + npmci command tsdoc + continue-on-error: true diff --git a/.gitignore b/.gitignore index ef13c79..0b26089 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ # artifacts coverage/ public/ -pages/ # installs node_modules/ @@ -17,4 +16,4 @@ node_modules/ dist/ dist_*/ -# custom \ No newline at end of file +#------# custom \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 112db52..26e9f92 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,28 +2,10 @@ "version": "0.2.0", "configurations": [ { - "name": "current file", - "type": "node", + "command": "npm test", + "name": "Run npm test", "request": "launch", - "args": [ - "${relativeFile}" - ], - "runtimeArgs": ["-r", "@gitzone/tsrun"], - "cwd": "${workspaceRoot}", - "protocol": "inspector", - "internalConsoleOptions": "openOnSessionStart" - }, - { - "name": "test.ts", - "type": "node", - "request": "launch", - "args": [ - "test/test.ts" - ], - "runtimeArgs": ["-r", "@gitzone/tsrun"], - "cwd": "${workspaceRoot}", - "protocol": "inspector", - "internalConsoleOptions": "openOnSessionStart" + "type": "node-terminal" } ] } diff --git a/changelog.md b/changelog.md index 7802595..53e6f6b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2024-12-27 - 1.2.0 - feat(ci) +Add GitHub Actions workflows for CI/CD + +- Implemented workflows for handling pushes and tags separately. +- Added job steps for security audits, testing, releasing, and metadata handling. +- Updated .vscode launch configuration to run tests with npm command. + ## 2024-12-27 - 1.1.0 - feat(core) Add TypeScript configuration and update package dependencies and scripts diff --git a/npmextra.json b/npmextra.json index c6aab62..6312f2b 100644 --- a/npmextra.json +++ b/npmextra.json @@ -5,10 +5,10 @@ "githost": "gitlab.com", "gitscope": "social.io/private", "gitrepo": "interfaces", - "shortDescription": "an interface package for social.io", "npmPackagename": "@social.io_private/interfaces", "license": "UNLICENSED", - "projectDomain": "social.io" + "projectDomain": "social.io", + "description": "the interfaces for social.io" } }, "npmci": { diff --git a/package.json b/package.json index 6dd5ab2..2fe923c 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "scripts": { "test": "(tstest test/)", "build": "(tsbuild --web)", - "format": "(gitzone format)" + "format": "(gitzone format)", + "buildDocs": "tsdoc" }, "devDependencies": { "@git.zone/tsbuild": "^2.1.66", @@ -37,5 +38,13 @@ "cli.js", "npmextra.json", "readme.md" - ] -} + ], + "repository": { + "type": "git", + "url": "git+https://gitlab.com/social.io/private/interfaces.git" + }, + "bugs": { + "url": "https://gitlab.com/social.io/private/interfaces/issues" + }, + "homepage": "https://gitlab.com/social.io/private/interfaces#readme" +} \ No newline at end of file diff --git a/readme.md b/readme.md index 922319a..6694a30 100644 --- a/readme.md +++ b/readme.md @@ -1,27 +1,29 @@ # @social.io/private/interfaces + an interface package for social.io ## Availabililty and Links -* [npmjs.org (npm package)](https://www.npmjs.com/package/@social.io_private/interfaces) -* [gitlab.com (source)](https://gitlab.com/social.io/private/interfaces) -* [github.com (source mirror)](https://github.com/social.io/private/interfaces) -* [docs (typedoc)](https://social.io/private.gitlab.io/interfaces/) + +- [npmjs.org (npm package)](https://www.npmjs.com/package/@social.io_private/interfaces) +- [gitlab.com (source)](https://gitlab.com/social.io/private/interfaces) +- [github.com (source mirror)](https://github.com/social.io/private/interfaces) +- [docs (typedoc)](https://social.io/private.gitlab.io/interfaces/) ## Status for master -Status Category | Status Badge --- | -- -GitLab Pipelines | [![pipeline status](https://gitlab.com/social.io/private/interfaces/badges/master/pipeline.svg)](https://lossless.cloud) -GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/social.io/private/interfaces/badges/master/coverage.svg)](https://lossless.cloud) -npm | [![npm downloads per month](https://badgen.net/npm/dy/@social.io_private/interfaces)](https://lossless.cloud) -Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/social.io/private/interfaces)](https://lossless.cloud) -TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud) -node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) -Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud) -PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@social.io_private/interfaces)](https://lossless.cloud) -PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@social.io_private/interfaces)](https://lossless.cloud) -BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@social.io_private/interfaces)](https://lossless.cloud) -Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud) +| Status Category | Status Badge | +| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| GitLab Pipelines | [![pipeline status](https://gitlab.com/social.io/private/interfaces/badges/master/pipeline.svg)](https://lossless.cloud) | +| GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/social.io/private/interfaces/badges/master/coverage.svg)](https://lossless.cloud) | +| npm | [![npm downloads per month](https://badgen.net/npm/dy/@social.io_private/interfaces)](https://lossless.cloud) | +| Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/social.io/private/interfaces)](https://lossless.cloud) | +| TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud) | +| node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) | +| Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud) | +| PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@social.io_private/interfaces)](https://lossless.cloud) | +| PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@social.io_private/interfaces)](https://lossless.cloud) | +| BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@social.io_private/interfaces)](https://lossless.cloud) | +| Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud) | ## Usage @@ -29,6 +31,6 @@ Use TypeScript for best in class intellisense For further information read the linked docs at the top of this readme. > UNLICENSED licensed | **©** [Lossless GmbH](https://lossless.gmbh) -| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) +> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) [![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com) diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 226262b..c14f719 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@social.io/interfaces', - version: '1.1.0', + version: '1.2.0', description: 'an interface package for social.io' } diff --git a/ts/interfaces.plugins.ts b/ts/interfaces.plugins.ts index 52592cc..ecc7d2c 100644 --- a/ts/interfaces.plugins.ts +++ b/ts/interfaces.plugins.ts @@ -1,5 +1,3 @@ import * as typedrequestInterfaces from '@apiglobal/typedrequest-interfaces'; -export { - typedrequestInterfaces -} +export { typedrequestInterfaces }; diff --git a/ts/sio-interfaces.data.ts b/ts/sio-interfaces.data.ts index 5549f19..bc5bd5a 100644 --- a/ts/sio-interfaces.data.ts +++ b/ts/sio-interfaces.data.ts @@ -29,10 +29,9 @@ export interface ISioSession { name: string; email: string; mobilePhone: string; - }; conversations: ISioConversation[]; } // tenant -export interface ISioTenant {} \ No newline at end of file +export interface ISioTenant {} diff --git a/ts/sio-interfaces.requests.ts b/ts/sio-interfaces.requests.ts index dc8525d..d831ee5 100644 --- a/ts/sio-interfaces.requests.ts +++ b/ts/sio-interfaces.requests.ts @@ -1,9 +1,10 @@ import * as plugins from './interfaces.plugins.js'; -export interface IRequest_GetSocialSession extends plugins.typedrequestInterfaces.implementsTR< - plugins.typedrequestInterfaces.ITypedRequest, - IRequest_GetSocialSession -> { +export interface IRequest_GetSocialSession + extends plugins.typedrequestInterfaces.implementsTR< + plugins.typedrequestInterfaces.ITypedRequest, + IRequest_GetSocialSession + > { method: 'getSocialSession'; request: { existingSessionId?: string; @@ -13,24 +14,26 @@ export interface IRequest_GetSocialSession extends plugins.typedrequestInterface }; } -export interface IRequest_AttachProfileId extends plugins.typedrequestInterfaces.implementsTR< -plugins.typedrequestInterfaces.ITypedRequest, -IRequest_AttachProfileId -> { -method: 'attachProfileId'; -request: { - sessionId: string; - profileId: string; -}; -response: { - newSessionId: string; -}; +export interface IRequest_AttachProfileId + extends plugins.typedrequestInterfaces.implementsTR< + plugins.typedrequestInterfaces.ITypedRequest, + IRequest_AttachProfileId + > { + method: 'attachProfileId'; + request: { + sessionId: string; + profileId: string; + }; + response: { + newSessionId: string; + }; } -export interface IRequest_GetConversations extends plugins.typedrequestInterfaces.implementsTR< - plugins.typedrequestInterfaces.ITypedRequest, - IRequest_GetConversations -> { +export interface IRequest_GetConversations + extends plugins.typedrequestInterfaces.implementsTR< + plugins.typedrequestInterfaces.ITypedRequest, + IRequest_GetConversations + > { method: 'getConversations'; request: { sessionId: string; diff --git a/tsconfig.json b/tsconfig.json index dfe5a55..2413b93 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,9 +6,11 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "esModuleInterop": true, - "verbatimModuleSyntax": true + "verbatimModuleSyntax": true, + "baseUrl": ".", + "paths": {} }, "exclude": [ "dist_*/**/*.d.ts" ] -} +} \ No newline at end of file