Compare commits

...

18 Commits

Author SHA1 Message Date
2ea4139974 3.0.53 2024-12-26 00:09:18 +01:00
e225c693a8 fix(infohtml): Remove Sentry script and logo from HTML template 2024-12-26 00:09:18 +01:00
6393336ea6 3.0.52 2024-12-25 23:57:19 +01:00
d7158734d2 fix(dependencies): Bump package versions in dependencies and exports. 2024-12-25 23:57:18 +01:00
557724718c 3.0.51 2024-08-27 11:22:14 +02:00
d7a9b26873 fix(core): Update dependencies and fix service worker cache manager and task manager functionalities 2024-08-27 11:22:13 +02:00
511de8040a 3.0.50 2024-05-25 03:06:18 +02:00
952e95f82f fix(core): update 2024-05-25 03:06:17 +02:00
42115cb6be 3.0.49 2024-05-25 03:04:25 +02:00
e1206bdf4c fix(core): update 2024-05-25 03:04:25 +02:00
e32e7272ba 3.0.48 2024-05-25 02:49:46 +02:00
3f317fffd5 fix(core): update 2024-05-25 02:49:46 +02:00
a49309566c 3.0.47 2024-05-25 02:35:24 +02:00
0fb1d54e06 fix(core): update 2024-05-25 02:35:23 +02:00
f31ca98b2c 3.0.46 2024-05-25 02:34:44 +02:00
dfcda87196 fix(core): update 2024-05-25 02:34:43 +02:00
108bcb41bf 3.0.45 2024-05-25 02:29:09 +02:00
1b18961539 fix(core): update 2024-05-25 02:29:08 +02:00
13 changed files with 4672 additions and 1649 deletions

View File

@ -1,128 +0,0 @@
# gitzone ci_default
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache:
paths:
- .npmci_cache/
key: '$CI_BUILD_STAGE'
stages:
- security
- test
- release
- metadata
before_script:
- pnpm install -g pnpm
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ====================
# security stage
# ====================
# ====================
# security stage
# ====================
auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci command npm config set registry https://registry.npmjs.org
- npmci command pnpm audit --audit-level=high --prod
tags:
- lossless
- docker
allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci command npm config set registry https://registry.npmjs.org
- npmci command pnpm audit --audit-level=high --dev
tags:
- lossless
- docker
allow_failure: true
# ====================
# test stage
# ====================
testStable:
stage: test
script:
- npmci node install stable
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
testBuild:
stage: test
script:
- npmci node install stable
- npmci npm install
- npmci npm build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
release:
stage: release
script:
- npmci node install stable
- npmci npm publish
only:
- tags
tags:
- lossless
- docker
- notpriv
# ====================
# metadata stage
# ====================
codequality:
stage: metadata
allow_failure: true
only:
- tags
script:
- npmci command npm install -g typescript
- npmci npm prepare
- npmci npm install
tags:
- lossless
- docker
- priv
trigger:
stage: metadata
script:
- npmci trigger
only:
- tags
tags:
- lossless
- docker
- notpriv
pages:
stage: metadata
script:
- npmci node install stable
- npmci npm install
- npmci command npm run buildDocs
tags:
- lossless
- docker
- notpriv
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public
allow_failure: true

167
changelog.md Normal file
View File

@ -0,0 +1,167 @@
# Changelog
## 2024-12-26 - 3.0.53 - fix(infohtml)
Remove Sentry script and logo from HTML template
- Removed Sentry script from the HTML template.
- Removed Lossless GmbH logo and contact info.
- Updated footer link to point to foss.global.
## 2024-12-25 - 3.0.52 - fix(dependencies)
Bump package versions in dependencies and exports.
- Updated package dependencies to their latest versions.
- Added './infohtml' in package exports.
## 2024-08-27 - 3.0.51 - fix(core)
Update dependencies and fix service worker cache manager and task manager functionalities
- Updated dependencies in package.json to their latest versions
- Enhanced service worker cache manager to include additional scoped URLs
- Fixed task manager to start the task manager and added update task functionality
- Removed .gitlab-ci.yml from the repository as part of the cleanup
## 2024-05-25 - 3.0.43 to 3.0.50 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.43 to 3.0.50
## 2024-05-23 - 3.0.37 to 3.0.42 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.37 to 3.0.42
## 2024-05-17 - 3.0.37 - Core
Routine update and bug fix
- Updated core functionalities
## 2024-05-14 - 3.0.33 to 3.0.36 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.33 to 3.0.36
## 2024-05-13 - 3.0.31 to 3.0.32 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.31 to 3.0.32
## 2024-05-11 - 3.0.29 to 3.0.31 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.29 to 3.0.31
## 2024-04-19 - 3.0.27 to 3.0.28 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.27 to 3.0.28
## 2024-04-14 - 3.0.27 - Documentation
Updated Documentation
- Improved and updated documentation
## 2024-03-01 - 3.0.25 to 3.0.26 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.25 to 3.0.26
## 2024-02-21 - 3.0.20 to 3.0.24 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.20 to 3.0.24
## 2024-01-19 - 3.0.19 to 3.0.20 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.19 to 3.0.20
## 2024-01-09 - 3.0.14 to 3.0.18 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.14 to 3.0.18
## 2024-01-08 - 3.0.11 to 3.0.13 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.11 to 3.0.13
## 2024-01-07 - 3.0.9 to 3.0.10 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.9 to 3.0.10
## 2023-11-06 - 3.0.8 to 3.0.9 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.8 to 3.0.9
## 2023-10-23 - 3.0.6 to 3.0.7 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.6 to 3.0.7
## 2023-10-20 - 3.0.5 to 3.0.6 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.5 to 3.0.6
## 2023-09-21 - 3.0.4 to 3.0.5 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.4 to 3.0.5
## 2023-08-06 - 3.0.2 to 3.0.3 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.2 to 3.0.3
## 2023-08-03 - 3.0.1 to 3.0.0 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 3.0.1 to 3.0.0
## 2023-08-03 - 2.0.65 - Core
Breaking change in core update
- Introduced breaking changes updating core functionalities
## 2023-07-02 - 2.0.59 to 2.0.64 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.59 to 2.0.64
## 2023-07-01 - 2.0.54 to 2.0.58 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.54 to 2.0.58
## 2023-06-12 - 2.0.53 - Core
Routine update and bug fix
- Updated core functionalities
## 2023-04-10 - 2.0.52 to 2.0.53 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.52 to 2.0.53
## 2023-04-04 - 2.0.49 to 2.0.51 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.49 to 2.0.51
## 2023-03-31 - 2.0.45 to 2.0.48 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.45 to 2.0.48
## 2023-03-30 - 2.0.37 to 2.0.44 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.37 to 2.0.44
## 2023-03-29 - 2.0.33 to 2.0.36 - Core
Routine updates and bug fixes
- Updated core functionalities for better performance and stability in versions 2.0.33 to 2.0.36

View File

@ -1,10 +1,11 @@
{
"name": "@api.global/typedserver",
"version": "3.0.44",
"version": "3.0.53",
"description": "A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.",
"type": "module",
"exports": {
".": "./dist_ts/index.js",
"./infohtml": "./dist_ts/infohtml/index.js",
"./backend": "./dist_ts/index.js",
"./edgeworker": "./dist_ts_edgeworker/index.js",
"./web_inject": "./dist_ts_web_inject/index.js",
@ -57,51 +58,51 @@
],
"homepage": "https://github.com/pushrocks/easyserve",
"dependencies": {
"@api.global/typedrequest": "^3.0.23",
"@api.global/typedrequest": "^3.1.10",
"@api.global/typedrequest-interfaces": "^3.0.19",
"@api.global/typedsocket": "^3.0.1",
"@cloudflare/workers-types": "^4.20240512.0",
"@design.estate/dees-comms": "^1.0.24",
"@push.rocks/lik": "^6.0.15",
"@cloudflare/workers-types": "^4.20241224.0",
"@design.estate/dees-comms": "^1.0.27",
"@push.rocks/lik": "^6.1.0",
"@push.rocks/smartchok": "^1.0.34",
"@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartenv": "^5.0.12",
"@push.rocks/smartfeed": "^1.0.11",
"@push.rocks/smartfile": "^11.0.14",
"@push.rocks/smartjson": "^5.0.19",
"@push.rocks/smartlog": "^3.0.3",
"@push.rocks/smartlog-destination-devtools": "^1.0.10",
"@push.rocks/smartlog-interfaces": "^3.0.0",
"@push.rocks/smartfile": "^11.0.23",
"@push.rocks/smartjson": "^5.0.20",
"@push.rocks/smartlog": "^3.0.7",
"@push.rocks/smartlog-destination-devtools": "^1.0.12",
"@push.rocks/smartlog-interfaces": "^3.0.2",
"@push.rocks/smartmanifest": "^2.0.2",
"@push.rocks/smartmatch": "^2.0.0",
"@push.rocks/smartmime": "^1.0.5",
"@push.rocks/smartntml": "^2.0.4",
"@push.rocks/smartmime": "^2.0.4",
"@push.rocks/smartntml": "^2.0.8",
"@push.rocks/smartopen": "^2.0.0",
"@push.rocks/smartpath": "^5.0.18",
"@push.rocks/smartpromise": "^4.0.2",
"@push.rocks/smartrequest": "^2.0.22",
"@push.rocks/smartpromise": "^4.0.4",
"@push.rocks/smartrequest": "^2.0.23",
"@push.rocks/smartrx": "^3.0.7",
"@push.rocks/smartsitemap": "^2.0.3",
"@push.rocks/smartstream": "^3.0.35",
"@push.rocks/smarttime": "^4.0.6",
"@push.rocks/smartstream": "^3.2.5",
"@push.rocks/smarttime": "^4.1.1",
"@push.rocks/taskbuffer": "^3.1.7",
"@push.rocks/webrequest": "^3.0.37",
"@push.rocks/webstore": "^2.0.14",
"@tsclass/tsclass": "^4.0.54",
"@push.rocks/webstore": "^2.0.20",
"@tsclass/tsclass": "^4.2.0",
"@types/express": "^4.17.21",
"body-parser": "^1.20.2",
"body-parser": "^1.20.3",
"cors": "^2.8.5",
"express": "^4.19.2",
"express": "^4.21.2",
"express-force-ssl": "^0.3.2",
"lit": "^3.1.3"
"lit": "^3.2.1"
},
"devDependencies": {
"@git.zone/tsbuild": "^2.1.76",
"@git.zone/tsbundle": "^2.0.15",
"@git.zone/tsrun": "^1.2.44",
"@git.zone/tsbuild": "^2.2.0",
"@git.zone/tsbundle": "^2.1.0",
"@git.zone/tsrun": "^1.3.3",
"@git.zone/tstest": "^1.0.90",
"@push.rocks/tapbundle": "^5.0.23",
"@types/node": "^20.12.11"
"@push.rocks/tapbundle": "^5.5.3",
"@types/node": "^22.10.2"
},
"private": false,
"browserslist": [

5896
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
* autocreated commitinfo by @push.rocks/commitinfo
*/
export const commitinfo = {
name: '@api.global/typedserver',
version: '3.0.44',
version: '3.0.53',
description: 'A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.'
}

View File

@ -96,26 +96,9 @@ export const simpleInfo = async (
name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi"
/>
<script
src="https://browser.sentry-cdn.com/5.4.0/bundle.min.js"
crossorigin="anonymous"
></script>
<script>
if (optionsArg.sentryDsn && optionsArg.sentryMessage) {
Sentry.init({
dsn: '${optionsArg.sentryDsn}',
// ...
});
Sentry.setExtra('location', window.location.href);
Sentry.captureMessage('${optionsArg.sentryMessage} @ ' + window.location.host);
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="logo">
<img src="https://assetbroker.lossless.one/brandfiles/lossless/svg-minimal-bright.svg" />
</div>
<div class="content">
${(() => {
const returnArray: plugins.smartntml.deesElement.TemplateResult[] = [];
@ -129,15 +112,6 @@ export const simpleInfo = async (
} else {
returnArray.push(html` <div class="maintext">${optionsArg.text}</div> `);
}
if (optionsArg.sentryDsn && optionsArg.sentryMessage) {
returnArray.push(
html`<div class="addontext">
We recorded this event. Should you continue to see this page against your
expectations, feel free to mail us at
<a href="mailto:hello@lossless.com">hello@lossless.com</a>
</div>`
);
}
if (optionsArg.redirectTo) {
returnArray.push(
html`<div class="addontext">
@ -149,9 +123,7 @@ export const simpleInfo = async (
})()}
</div>
<div class="legal">
<a href="https://lossless.com">Lossless GmbH</a> / &copy 2014-${new Date().getFullYear()}
/ <a href="https://lossless.gmbh">Legal Info</a> /
<a href="https://lossless.gmbh">Privacy Policy</a>
<a href="https://foss.global">learn more about foss.global</a> / &copy 2014-${new Date().getFullYear()} Task Venture Capital GmbH
</div>
</body>
</html>

View File

@ -6,7 +6,13 @@ import { type IRoute as IExpressRoute } from 'express';
export class Route {
public routeString: string;
/**
* an object map of handlers
* Why multiple? Because GET, POST, PUT, DELETE, etc. can all have different handlers
*/
public handlerObjectMap = new plugins.lik.ObjectMap<Handler>();
public expressMiddlewareObjectMap = new plugins.lik.ObjectMap<any>();
public expressRoute: IExpressRoute; // will be set to server route on server start
constructor(ServerArg: Server, routeStringArg: string) {

View File

@ -77,6 +77,11 @@ export class Server {
return route;
}
/**
* starts the server and sets up the routes
* @param portArg
* @param doListen
*/
public async start(portArg: number | string = this.options.port, doListen = true) {
const done = plugins.smartpromise.defer();

View File

@ -38,7 +38,7 @@ export const addServiceWorkerRoute = (
swVersionInfo = swDataFunc();
// the basic stuff
typedserverInstance.server.addRoute('/serviceworker.js*', serviceworkerHandler);
typedserverInstance.server.addRoute('/serviceworker.*', serviceworkerHandler);
// the typed stuff
const typedrouter = new plugins.typedrequest.TypedRouter();

View File

@ -75,12 +75,14 @@ export class CacheManager {
// A list of local resources we always want to be cached.
this.losslessServiceWorkerRef.serviceWindowRef.addEventListener('fetch', async (fetchEventArg: any) => {
// Lets block scopes we don't want to be passing through the serviceworker
const parsedUrl = new URL(fetchEventArg.request.url)
const originalRequest: Request = fetchEventArg.request;
const parsedUrl = new URL(originalRequest.url);
if (
parsedUrl.hostname.includes('paddle.com')
|| parsedUrl.hostname.includes('paypal.com')
|| parsedUrl.hostname.includes('reception.lossless.one')
|| parsedUrl.pathname.startsWith('/socket.io')
|| originalRequest.url.startsWith('https://umami.')
) {
logger.log('note',`serviceworker not active for ${parsedUrl.toString()}`);
return;
@ -89,16 +91,15 @@ export class CacheManager {
// lets continue for the rest
const done = plugins.smartpromise.defer<Response>();
fetchEventArg.respondWith(done.promise);
const originalRequest: Request = fetchEventArg.request;
if (
(originalRequest.method === 'GET' &&
(originalRequest.url.startsWith(this.losslessServiceWorkerRef.serviceWindowRef.location.origin) &&
!originalRequest.url.includes('/api/') &&
!originalRequest.url.includes('smartserve/reloadcheck'))) ||
originalRequest.url.includes('https://assetbroker.lossless.one/public') ||
originalRequest.url.includes('https://assetbroker.lossless.one/brandfiles') ||
originalRequest.url.includes('https://assetbroker.lossless.one/websites') ||
originalRequest.url.includes('https://assetbroker.') ||
originalRequest.url.includes('https://assetbroker.') ||
originalRequest.url.includes('https://assetbroker.') ||
originalRequest.url.includes('https://unpkg.com') ||
originalRequest.url.includes('https://fonts.googleapis.com') ||
originalRequest.url.includes('https://fonts.gstatic.com')

View File

@ -7,9 +7,18 @@ import { ServiceWorker } from './classes.serviceworker.js';
*/
export class TaskManager {
public serviceworkerRef: ServiceWorker;
public taskmanager = new plugins.taskbuffer.TaskManager();
constructor(serviceWorkerRefArg: ServiceWorker) {
this.serviceworkerRef = serviceWorkerRefArg;
this.taskmanager.start();
}
public updateTask = new plugins.taskbuffer.Task({
name: 'updateTask',
taskFunction: async () => {
await this.serviceworkerRef.cacheManager.cleanCaches('a new app version has been communicated by the server.');
}
})
}

View File

@ -13,7 +13,7 @@ export class ServiceworkerClient {
logger.log('info', 'trying to register serviceworker');
// this is some magic for Parcel to not pick up the serviceworker
const serviceworkerInNavigator: ServiceWorkerContainer = navigator.serviceWorker;
const swRegistration: ServiceWorkerRegistration = await serviceworkerInNavigator.register('/lsw.js', {
const swRegistration: ServiceWorkerRegistration = await serviceworkerInNavigator.register('/serviceworker.bundle.js', {
scope: '/',
updateViaCache: 'none'
});

View File

@ -14,11 +14,11 @@ logger.log('note', 'mainthread console initialized!');
import { ServiceworkerClient } from './classes.serviceworkerclient.js';
export type {
ServiceworkerClient as LosslessServiceworker
ServiceworkerClient
}
export const getServiceWorker = async () => {
const losslessServiceWorkerInstance = await ServiceworkerClient.createServiceWorker(); // lets setup the service worker
export const getServiceworkerClient = async () => {
const swClient = await ServiceworkerClient.createServiceWorker(); // lets setup the service worker
logger.log('ok', 'service worker ready!'); // and wait for it to be ready
return losslessServiceWorkerInstance;
return swClient;
};