add middlewareManifest type, ensure events to hook into are valid when calling use(middleware)

This commit is contained in:
wearrrrr 2024-06-17 02:09:12 -05:00
parent 4395c41041
commit 6f4f234c82
8 changed files with 330 additions and 249 deletions

View file

@ -1,5 +1,5 @@
import path from "path";
import fs from "fs"
import fs from "fs";
const failureFile = fs.readFileSync("Checkfailed.html", "utf8");

View file

@ -10,20 +10,22 @@ const ww = new WorkerWare({
debug: true,
});
function logContext(ctx, event) {
console.log("Context:", ctx);
function logContext(event) {
console.log("Event:", event);
return void 0;
return undefined;
}
ww.use(logContext)
ww.use({
function: logContext,
events: ["fetch"],
});
const uv = new UVServiceWorker();
self.addEventListener("fetch", async (event) => {
let middleware = await ww.run(self, event)();
if (middleware.includes(null)) {
console.log("Aborting Request!")
let mwResponse = await ww.run(event)();
if (mwResponse.includes(null)) {
console.log("Aborting Request!");
return;
}
event.respondWith(

View file

@ -0,0 +1,6 @@
class WWError extends Error {
constructor(message) {
super(message);
this.name = "[WorkerWare Exception]";
}
}

View file

@ -1,28 +1,97 @@
importScripts("/workerware/WWError.js");
const dbg = console.log.bind(console, "[WorkerWare]");
const defaultOpt = {
debug: false,
}
debug: false,
};
// type middlewareManifest = {
// function: Function,
// name?: string,
// events: string[], // Should be a union of validEvents.
// }
const validEvents = [
"abortpayment",
"activate",
"backgroundfetchabort",
"backgroundfetchclick",
"backgroundfetchfail",
"backgroundfetchsuccess",
"canmakepayment",
"contentdelete",
"cookiechange",
"fetch",
"install",
"message",
"messageerror",
"notificationclick",
"notificationclose",
"paymentrequest",
"periodicsync",
"push",
"pushsubscriptionchange",
"sync",
];
class WorkerWare {
constructor(opt) {
this._opt = opt;
this._middlewares = [];
}
use(fn) {
if (typeof fn !== 'function') throw new TypeError('[WorkerWare] Middleware must be a function!');
if (this._opt.debug) dbg("Added middleware", fn.name || "<anonymous>");
this._middlewares.push(fn);
}
run(ctx, event) {
const middlewares = this._middlewares;
const returnList = [];
let fn = async () => {
for (let i = 0; i < middlewares.length; i++) {
returnList.push(await middlewares[i](ctx, event));
}
return returnList;
};
return fn;
constructor(opt) {
this._opt = opt;
this._middlewares = [];
}
use(middleware) {
let validateMW = this.validateMiddleware(middleware);
if (validateMW.error) throw new WWError(validateMW.error);
// This means the middleware is an anonymous function, or the user is silly and named their function "function"
if (middleware.function.name == "function") middleware.name = crypto.randomUUID();
if (!middleware.name) middleware.name = middleware.function.name;
if (this._opt.debug) dbg("Adding middleware:", middleware.name);
this._middlewares.push(middleware);
}
run(event) {
const middlewares = this._middlewares;
const returnList = [];
let fn = async () => {
for (let i = 0; i < middlewares.length; i++) {
dbg(middlewares[i], event.type);
if (middlewares[i].events.includes(event.type)) {
returnList.push(await middlewares[i].function(event));
}
}
return returnList;
};
return fn;
}
runMW(id, event) {
const middlewares = this._middlewares;
if (this._opt.debug) dbg("Running middleware:", id);
if (middlewares.includes(id)) {
return middlewares[id](event);
}
}
validateMiddleware(middleware) {
if (!middleware.function)
return {
error: "middleware.function is required",
};
if (typeof middleware.function !== "function")
return {
error: "middleware.function must be typeof function",
};
if (!middleware.events)
return {
error: "middleware.events is required",
};
if (!Array.isArray(middleware.events))
return {
error: "middleware.events must be an array",
};
if (middleware.events.some((ev) => !validEvents.includes(ev)))
return {
error: "Invalid event type! Must be one of the following: " + validEvents.join(", "),
};
return {
error: undefined,
};
}
}

View file

@ -48,9 +48,7 @@
}
function getUVProxyURL(frame: HTMLIFrameElement) {
return window.__uv$config.decodeUrl(
frame.contentWindow!.location.href.split("/service/")[1]
)
return window.__uv$config.decodeUrl(frame.contentWindow!.location.href.split("/service/")[1]);
}
async function loadContent() {
@ -209,9 +207,7 @@
input!.value.trim()
);
} else {
navigator.clipboard.writeText(
getUVProxyURL(proxyFrame)
);
navigator.clipboard.writeText(getUVProxyURL(proxyFrame));
}
new Notyf({
duration: 2000,

View file

@ -72,7 +72,7 @@ export async function registerSW() {
});
return new Promise(async (resolve) => {
await navigator.serviceWorker.register("/sw.js").then((registration) => {
console.log("Registered SW!")
console.log("Registered SW!");
resolve(null);
});
});

View file

@ -57,10 +57,12 @@ const { title, optionalPreloads } = Astro.props;
<script src="https://www.googletagmanager.com/gtag/js?id=G-P1JX4G9KSF" is:inline></script>
<script is:inline>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
function gtag() {
dataLayer.push(arguments);
}
gtag("js", new Date());
gtag('config', 'G-P1JX4G9KSF');
gtag("config", "G-P1JX4G9KSF");
</script>
<meta name="generator" content={Astro.generator} />
<title>{title}</title>

View file

@ -3,215 +3,221 @@ import Layout from "src/layouts/Layout.astro";
---
<Layout title="Terms and Conditions | Alu">
<div id="main-content">
<h2><strong>Terms and Conditions</strong></h2>
<div id="main-content">
<h2><strong>Terms and Conditions</strong></h2>
<p>Welcome to Alu!</p>
<p>Welcome to Alu!</p>
<p>
These terms and conditions outline the rules and regulations for the use of Alu Project's
Website, located at https://aluu.xyz.
</p>
<p>
These terms and conditions outline the rules and regulations for the use of Alu Project's
Website, located at https://aluu.xyz.
</p>
<p>
By accessing this website we assume you accept these terms and conditions. Do not continue to
use Alu if you do not agree to take all of the terms and conditions stated on this page.
</p>
<p>
By accessing this website we assume you accept these terms and conditions. Do not continue to
use Alu if you do not agree to take all of the terms and conditions stated on this page.
</p>
<p>
The following terminology applies to these Terms and Conditions, Privacy Statement and
Disclaimer Notice and all Agreements: "Client", "You" and "Your" refers to you, the person log
on this website and compliant to the Company's terms and conditions. "The Company", "Ourselves",
"We", "Our" and "Us", refers to our Company. "Party", "Parties", or "Us", refers to both the
Client and ourselves. All terms refer to the offer, acceptance and consideration of payment
necessary to undertake the process of our assistance to the Client in the most appropriate
manner for the express purpose of meeting the Client's needs in respect of provision of the
Company's stated services, in accordance with and subject to, prevailing law of us. Any use of
the above terminology or other words in the singular, plural, capitalization and/or he/she or
they, are taken as interchangeable and therefore as referring to same.
</p>
<p>
The following terminology applies to these Terms and Conditions, Privacy Statement and
Disclaimer Notice and all Agreements: "Client", "You" and "Your" refers to you, the person log
on this website and compliant to the Company's terms and conditions. "The Company",
"Ourselves", "We", "Our" and "Us", refers to our Company. "Party", "Parties", or "Us", refers
to both the Client and ourselves. All terms refer to the offer, acceptance and consideration
of payment necessary to undertake the process of our assistance to the Client in the most
appropriate manner for the express purpose of meeting the Client's needs in respect of
provision of the Company's stated services, in accordance with and subject to, prevailing law
of us. Any use of the above terminology or other words in the singular, plural, capitalization
and/or he/she or they, are taken as interchangeable and therefore as referring to same.
</p>
<h3><strong>Cookies</strong></h3>
<h3><strong>Cookies</strong></h3>
<p>
We employ the use of cookies. By accessing Alu, you agreed to use cookies in agreement with the
Alu Project's Privacy Policy.
</p>
<p>
We employ the use of cookies. By accessing Alu, you agreed to use cookies in agreement with
the Alu Project's Privacy Policy.
</p>
<p>
Most interactive websites use cookies to let us retrieve the user's details for each visit.
Cookies are used by our website to enable the functionality of certain areas to make it easier
for people visiting our website. Some of our affiliate/advertising partners may also use
cookies.
</p>
<p>
Most interactive websites use cookies to let us retrieve the user's details for each visit.
Cookies are used by our website to enable the functionality of certain areas to make it easier
for people visiting our website. Some of our affiliate/advertising partners may also use
cookies.
</p>
<h3><strong>License</strong></h3>
<h3><strong>License</strong></h3>
<p>
Unless otherwise stated, Alu Project and/or its licensors own the intellectual property rights
for all material on Alu. All intellectual property rights are reserved. You may access this from
Alu for your own personal use subjected to restrictions set in these terms and conditions.
</p>
<p>
Unless otherwise stated, Alu Project and/or its licensors own the intellectual property rights
for all material on Alu. All intellectual property rights are reserved. You may access this
from Alu for your own personal use subjected to restrictions set in these terms and
conditions.
</p>
<p>You must not:</p>
<ul>
<li>Republish material from Alu</li>
<li>Sell, rent or sub-license material from Alu</li>
<li>Reproduce, duplicate or copy material from Alu</li>
<li>Redistribute content from Alu</li>
</ul>
<p>You must not:</p>
<ul>
<li>Republish material from Alu</li>
<li>Sell, rent or sub-license material from Alu</li>
<li>Reproduce, duplicate or copy material from Alu</li>
<li>Redistribute content from Alu</li>
</ul>
<p>This Agreement shall begin on the date hereof.</p>
<p>This Agreement shall begin on the date hereof.</p>
<h3><strong>Hyperlinking to our Content</strong></h3>
<h3><strong>Hyperlinking to our Content</strong></h3>
<p>The following organizations may link to our Website without prior written approval:</p>
<p>The following organizations may link to our Website without prior written approval:</p>
<ul>
<li>Government agencies;</li>
<li>Search engines;</li>
<li>News organizations;</li>
<li>
Online directory distributors may link to our Website in the same manner as they hyperlink to
the Websites of other listed businesses; and
</li>
<li>
System wide Accredited Businesses except soliciting non-profit organizations, charity shopping
malls, and charity fundraising groups which may not hyperlink to our Web site.
</li>
</ul>
<ul>
<li>Government agencies;</li>
<li>Search engines;</li>
<li>News organizations;</li>
<li>
Online directory distributors may link to our Website in the same manner as they hyperlink
to the Websites of other listed businesses; and
</li>
<li>
System wide Accredited Businesses except soliciting non-profit organizations, charity
shopping malls, and charity fundraising groups which may not hyperlink to our Web site.
</li>
</ul>
<p>
These organizations may link to our home page, to publications or to other Website information
so long as the link: (a) is not in any way deceptive; (b) does not falsely imply sponsorship,
endorsement or approval of the linking party and its products and/or services; and (c) fits
within the context of the linking party's site.
</p>
<p>
These organizations may link to our home page, to publications or to other Website information
so long as the link: (a) is not in any way deceptive; (b) does not falsely imply sponsorship,
endorsement or approval of the linking party and its products and/or services; and (c) fits
within the context of the linking party's site.
</p>
<p>We may consider and approve other link requests from the following types of organizations:</p>
<p>
We may consider and approve other link requests from the following types of organizations:
</p>
<ul>
<li>commonly-known consumer and/or business information sources;</li>
<li>dot.com community sites;</li>
<li>associations or other groups representing charities;</li>
<li>online directory distributors;</li>
<li>internet portals;</li>
<li>accounting, law and consulting firms; and</li>
<li>educational institutions and trade associations.</li>
</ul>
<ul>
<li>commonly-known consumer and/or business information sources;</li>
<li>dot.com community sites;</li>
<li>associations or other groups representing charities;</li>
<li>online directory distributors;</li>
<li>internet portals;</li>
<li>accounting, law and consulting firms; and</li>
<li>educational institutions and trade associations.</li>
</ul>
<p>
We will approve link requests from these organizations if we decide that: (a) the link would not
make us look unfavorably to ourselves or to our accredited businesses; (b) the organization does
not have any negative records with us; (c) the benefit to us from the visibility of the
hyperlink compensates the absence of Alu Project; and (d) the link is in the context of general
resource information.
</p>
<p>
We will approve link requests from these organizations if we decide that: (a) the link would
not make us look unfavorably to ourselves or to our accredited businesses; (b) the
organization does not have any negative records with us; (c) the benefit to us from the
visibility of the hyperlink compensates the absence of Alu Project; and (d) the link is in the
context of general resource information.
</p>
<p>
These organizations may link to our home page so long as the link: (a) is not in any way
deceptive; (b) does not falsely imply sponsorship, endorsement or approval of the linking party
and its products or services; and (c) fits within the context of the linking party's site.
</p>
<p>
These organizations may link to our home page so long as the link: (a) is not in any way
deceptive; (b) does not falsely imply sponsorship, endorsement or approval of the linking
party and its products or services; and (c) fits within the context of the linking party's
site.
</p>
<p>
If you are one of the organizations listed in paragraph 2 above and are interested in linking to
our website, you must inform us by sending an e-mail to Alu Project. Please include your name,
your organization name, contact information as well as the URL of your site, a list of any URLs
from which you intend to link to our Website, and a list of the URLs on our site to which you
would like to link. Wait 2-3 weeks for a response.
</p>
<p>
If you are one of the organizations listed in paragraph 2 above and are interested in linking
to our website, you must inform us by sending an e-mail to Alu Project. Please include your
name, your organization name, contact information as well as the URL of your site, a list of
any URLs from which you intend to link to our Website, and a list of the URLs on our site to
which you would like to link. Wait 2-3 weeks for a response.
</p>
<p>Approved organizations may hyperlink to our Website as follows:</p>
<p>Approved organizations may hyperlink to our Website as follows:</p>
<ul>
<li>By use of our corporate name; or</li>
<li>By use of the uniform resource locator being linked to; or</li>
<li>
By use of any other description of our Website being linked to that makes sense within the
context and format of content on the linking party's site.
</li>
</ul>
<ul>
<li>By use of our corporate name; or</li>
<li>By use of the uniform resource locator being linked to; or</li>
<li>
By use of any other description of our Website being linked to that makes sense within the
context and format of content on the linking party's site.
</li>
</ul>
<p>
No use of Alu Project's logo or other artwork will be allowed for linking absent a trademark
license agreement.
</p>
<p>
No use of Alu Project's logo or other artwork will be allowed for linking absent a trademark
license agreement.
</p>
<h3><strong>iFrames</strong></h3>
<h3><strong>iFrames</strong></h3>
<p>
Without prior approval and written permission, you may not create frames around our Webpages
that alter in any way the visual presentation or appearance of our Website.
</p>
<p>
Without prior approval and written permission, you may not create frames around our Webpages
that alter in any way the visual presentation or appearance of our Website.
</p>
<h3><strong>Content Liability</strong></h3>
<h3><strong>Content Liability</strong></h3>
<p>
We shall not be hold responsible for any content that appears on your Website. You agree to
protect and defend us against all claims that is rising on your Website. No link(s) should
appear on any Website that may be interpreted as libelous, obscene or criminal, or which
infringes, otherwise violates, or advocates the infringement or other violation of, any third
party rights.
</p>
<p>
We shall not be hold responsible for any content that appears on your Website. You agree to
protect and defend us against all claims that is rising on your Website. No link(s) should
appear on any Website that may be interpreted as libelous, obscene or criminal, or which
infringes, otherwise violates, or advocates the infringement or other violation of, any third
party rights.
</p>
<h3><strong>Reservation of Rights</strong></h3>
<h3><strong>Reservation of Rights</strong></h3>
<p>
We reserve the right to request that you remove all links or any particular link to our Website.
You approve to immediately remove all links to our Website upon request. We also reserve the
right to amen these terms and conditions and it's linking policy at any time. By continuously
linking to our Website, you agree to be bound to and follow these linking terms and conditions.
</p>
<p>
We reserve the right to request that you remove all links or any particular link to our
Website. You approve to immediately remove all links to our Website upon request. We also
reserve the right to amen these terms and conditions and it's linking policy at any time. By
continuously linking to our Website, you agree to be bound to and follow these linking terms
and conditions.
</p>
<h3><strong>Removal of links from our website</strong></h3>
<h3><strong>Removal of links from our website</strong></h3>
<p>
If you find any link on our Website that is offensive for any reason, you are free to contact
and inform us any moment. We will consider requests to remove links but we are not obligated to
or so or to respond to you directly.
</p>
<p>
If you find any link on our Website that is offensive for any reason, you are free to contact
and inform us any moment. We will consider requests to remove links but we are not obligated
to or so or to respond to you directly.
</p>
<p>
We do not ensure that the information on this website is correct, we do not warrant its
completeness or accuracy; nor do we promise to ensure that the website remains available or that
the material on the website is kept up to date.
</p>
<p>
We do not ensure that the information on this website is correct, we do not warrant its
completeness or accuracy; nor do we promise to ensure that the website remains available or
that the material on the website is kept up to date.
</p>
<h3><strong>Disclaimer</strong></h3>
<h3><strong>Disclaimer</strong></h3>
<p>
To the maximum extent permitted by applicable law, we exclude all representations, warranties
and conditions relating to our website and the use of this website. Nothing in this disclaimer
will:
</p>
<p>
To the maximum extent permitted by applicable law, we exclude all representations, warranties
and conditions relating to our website and the use of this website. Nothing in this disclaimer
will:
</p>
<ul>
<li>limit or exclude our or your liability for death or personal injury;</li>
<li>limit or exclude our or your liability for fraud or fraudulent misrepresentation;</li>
<li>
limit any of our or your liabilities in any way that is not permitted under applicable law; or
</li>
<li>exclude any of our or your liabilities that may not be excluded under applicable law.</li>
</ul>
<ul>
<li>limit or exclude our or your liability for death or personal injury;</li>
<li>limit or exclude our or your liability for fraud or fraudulent misrepresentation;</li>
<li>
limit any of our or your liabilities in any way that is not permitted under applicable law;
or
</li>
<li>exclude any of our or your liabilities that may not be excluded under applicable law.</li>
</ul>
<p>
The limitations and prohibitions of liability set in this Section and elsewhere in this
disclaimer: (a) are subject to the preceding paragraph; and (b) govern all liabilities arising
under the disclaimer, including liabilities arising in contract, in tort and for breach of
statutory duty.
</p>
<p>
The limitations and prohibitions of liability set in this Section and elsewhere in this
disclaimer: (a) are subject to the preceding paragraph; and (b) govern all liabilities arising
under the disclaimer, including liabilities arising in contract, in tort and for breach of
statutory duty.
</p>
<p>
As long as the website and the information and services on the website are provided free of
charge, we will not be liable for any loss or damage of any nature.
</p>
</div>
<p>
As long as the website and the information and services on the website are provided free of
charge, we will not be liable for any loss or damage of any nature.
</p>
</div>
</Layout>
<style>
#main-content {
width: 90%;
margin: 0 auto;
}
</style>
#main-content {
width: 90%;
margin: 0 auto;
}
</style>