+1








766fb96ff2
* Adding support for hosting with URL prefix to make reverse-proxy setup on sub-path possible
* Adjusting recent changes to auth.html (changing to relative URLs) after rebasing from upstream
* Adjusting service_worker and application manifest to support URL-prefix
* Add notes on Space Lua Pattern Matching (#1366)
* Remove common/space_lua/stdlib/math.md (#1371)
* Escape pipe symbol in string.gsub (#1370)
* feat: configure vim in CONFIG (#1369)
* Fix week calculation (#1368)
* Add more tests for week calculation
* Fix week calculation
* Add more tests
* Implement Lua built-in function os.difftime (#1367)
* Implement Lua built-in function os.difftime
* Test os.difftime
---------
Co-authored-by: Zef Hemel <zef@zef.me>
* Fix index page naming during server initialization (#1365)
* Allow non-zero shell exit codes (#1377)
* Generate version from git describe at build time (#1374)
* Generate version from git describe at build time
* Add 2.0-beta prefix
* Use Deno.Command instead of Deno.run
* Add missing case to math.random and check arguments (#1372)
* Fix paragraphs for the tag page (#1376)
* Render a predefined string for empty markdown table instead of pipe characters (#1387)
* Fix string.find (#1390)
* Fetch tags and history for proper version string generation (#1388)
* Fix support for disabling shortcuts (#1393)
* Add GitHub Actions Cache to reduce build times (#1394)
* Order strings in queries using collation algorithm (#1391)
Configurable with queryCollation, default value maintains old behaviour.
Added tests, schema, example settings, and documentation to query page.
Close: #614
Close: #1316
* Utility function to handle empty query results and templates (#1386)
* Add global Lua function 'some'
Moved documentation for 'each' function to non-standard section.
* Revert "Add optional argument to template.each for empty collection output (#1359)"
This reverts commit b73dadec67.
* Reimplement #1359 using 'some' function
* Update Lua to event.listEvents to match plugos syscall (#1397)
The documentation, example, and other function names use
`event.listEvents`, but `event.list` is being registered with the
client.
* Update widget header to not overflow container (#1410)
Also add a 10px margin below the header to maintain consistent spacing
around the widget contents.
* fix: case insensitive admonitions by default (#1409)
* fix: closing bracket is missing (#1408)
* Add optional priority attribute to PageCreatingContent (#1392)
* Add optional priority attribute to PageCreatingContent
* Minor simplification
* Fix comments
* Revert changes
* Add pageEventHandlers
* Use UTC year, month, and date for strings lacking time components (#1403)
* feat: allow CONFIG.md in any directory (#1398)
* fix: bundle external dependencies (#1379)
* Deno bump
* Copy-edit splash screen text (#1413)
* Fixes #1401 by implementing Lua's select
* Fixes offline capability of PWA (I hope).
Now storing config in localStorage.
* fix lint
* Reduce blast radius of Lua errors
* Fixes #1411: adds 'priority' setting for space style
* Refactor: Merging common/ into web/
* Fixes #1400
* Improves #1312 by rendering Lua expressions (but not widgets)
* Fix minor typos, add configuration to the docs
---------
Co-authored-by: wbhouston <wmbhouston@gmail.com>
Co-authored-by: Lennart Ochel <lennart.ochel@outlook.com>
Co-authored-by: Matthias Benaets <89214559+MatthiasBenaets@users.noreply.github.com>
Co-authored-by: Zef Hemel <zef@zef.me>
Co-authored-by: Marek S. Łukasiewicz <marek@lukasiewicz.tech>
Co-authored-by: Ivan Alejandro <ivanalejandro0@gmail.com>
Co-authored-by: Albert-Jan de Vries <aj+github@albert-jandevries.nl>
Co-authored-by: Cole Stowell <121599022+costowell@users.noreply.github.com>
Co-authored-by: Jim Tittsler <jimt@onjapan.net>
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
export function removeUrlPrefix(url: string, prefix?: string): string {
|
|
if (!prefix || prefix === "") return url;
|
|
|
|
if (url.startsWith("http://") || url.startsWith("https://")) {
|
|
const parsedUrl = new URL(url);
|
|
if (parsedUrl.pathname.startsWith(prefix)) {
|
|
parsedUrl.pathname = parsedUrl.pathname.substring(
|
|
prefix.length,
|
|
);
|
|
return parsedUrl.href;
|
|
} else {
|
|
return url;
|
|
}
|
|
} else if (url.startsWith(prefix)) {
|
|
return url.substring(prefix.length);
|
|
} else {
|
|
return url;
|
|
}
|
|
}
|
|
|
|
export function applyUrlPrefix<T extends (string | URL)>(
|
|
url: T,
|
|
prefix?: string,
|
|
): T {
|
|
if (!prefix || prefix === "") return url;
|
|
|
|
if (typeof url === "string") {
|
|
const urlString = url as string;
|
|
|
|
if (urlString.startsWith("http://") || urlString.startsWith("https://")) {
|
|
return applyUrlPrefix(new URL(urlString), prefix).href as T;
|
|
} else if (urlString.startsWith("/")) {
|
|
return (prefix + urlString) as T;
|
|
} else {
|
|
return url; //return page-relative paths as-is
|
|
}
|
|
} else if (url.protocol === "http:" || url.protocol === "https:") {
|
|
const urlObj = new URL(url);
|
|
urlObj.pathname = prefix + urlObj.pathname;
|
|
return urlObj as T;
|
|
} else {
|
|
return url;
|
|
}
|
|
}
|