Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

personalize links based on host #12

Merged
merged 7 commits into from
Nov 8, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions frontend-customization/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules
dist
target
.spin/
dist.js
21 changes: 21 additions & 0 deletions frontend-customization/combined-wit/combined-wit.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package local:combined-wit;

world combined {
import wasi:io/[email protected];
import wasi:clocks/[email protected];
import wasi:io/[email protected];
import wasi:io/[email protected];
import wasi:http/[email protected];
import wasi:http/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];
import fermyon:spin/[email protected];

export wasi:http/[email protected];
}
122 changes: 122 additions & 0 deletions frontend-customization/combined-wit/deps/cli.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package wasi:[email protected];

interface environment {
get-environment: func() -> list<tuple<string, string>>;

get-arguments: func() -> list<string>;

initial-cwd: func() -> option<string>;
}

interface exit {
exit: func(status: result);
}

interface run {
run: func() -> result;
}

interface stdin {
use wasi:io/[email protected].{input-stream};

get-stdin: func() -> input-stream;
}

interface stdout {
use wasi:io/[email protected].{output-stream};

get-stdout: func() -> output-stream;
}

interface stderr {
use wasi:io/[email protected].{output-stream};

get-stderr: func() -> output-stream;
}

interface terminal-input {
resource terminal-input;
}

interface terminal-output {
resource terminal-output;
}

interface terminal-stdin {
use terminal-input.{terminal-input};

get-terminal-stdin: func() -> option<terminal-input>;
}

interface terminal-stdout {
use terminal-output.{terminal-output};

get-terminal-stdout: func() -> option<terminal-output>;
}

interface terminal-stderr {
use terminal-output.{terminal-output};

get-terminal-stderr: func() -> option<terminal-output>;
}

world imports {
import environment;
import exit;
import wasi:io/[email protected];
import wasi:io/[email protected];
import wasi:io/[email protected];
import stdin;
import stdout;
import stderr;
import terminal-input;
import terminal-output;
import terminal-stdin;
import terminal-stdout;
import terminal-stderr;
import wasi:clocks/[email protected];
import wasi:clocks/[email protected];
import wasi:filesystem/[email protected];
import wasi:filesystem/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:random/[email protected];
import wasi:random/[email protected];
import wasi:random/[email protected];
}
world command {
import environment;
import exit;
import wasi:io/[email protected];
import wasi:io/[email protected];
import wasi:io/[email protected];
import stdin;
import stdout;
import stderr;
import terminal-input;
import terminal-output;
import terminal-stdin;
import terminal-stdout;
import terminal-stderr;
import wasi:clocks/[email protected];
import wasi:clocks/[email protected];
import wasi:filesystem/[email protected];
import wasi:filesystem/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:sockets/[email protected];
import wasi:random/[email protected];
import wasi:random/[email protected];
import wasi:random/[email protected];

export run;
}
34 changes: 34 additions & 0 deletions frontend-customization/combined-wit/deps/clocks.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package wasi:[email protected];

interface monotonic-clock {
use wasi:io/[email protected].{pollable};

type instant = u64;

type duration = u64;

now: func() -> instant;

resolution: func() -> duration;

subscribe-instant: func(when: instant) -> pollable;

subscribe-duration: func(when: duration) -> pollable;
}

interface wall-clock {
record datetime {
seconds: u64,
nanoseconds: u32,
}

now: func() -> datetime;

resolution: func() -> datetime;
}

world imports {
import wasi:io/[email protected];
import monotonic-clock;
import wall-clock;
}
166 changes: 166 additions & 0 deletions frontend-customization/combined-wit/deps/filesystem.wit
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
package wasi:[email protected];

interface types {
use wasi:io/[email protected].{input-stream, output-stream, error};
use wasi:clocks/[email protected].{datetime};

type filesize = u64;

enum descriptor-type {
unknown,
block-device,
character-device,
directory,
fifo,
symbolic-link,
regular-file,
socket,
}

flags descriptor-flags {
read,
write,
file-integrity-sync,
data-integrity-sync,
requested-write-sync,
mutate-directory,
}

flags path-flags {
symlink-follow,
}

flags open-flags {
create,
directory,
exclusive,
truncate,
}

type link-count = u64;

record descriptor-stat {
%type: descriptor-type,
link-count: link-count,
size: filesize,
data-access-timestamp: option<datetime>,
data-modification-timestamp: option<datetime>,
status-change-timestamp: option<datetime>,
}

variant new-timestamp {
no-change,
now,
timestamp(datetime),
}

record directory-entry {
%type: descriptor-type,
name: string,
}

enum error-code {
access,
would-block,
already,
bad-descriptor,
busy,
deadlock,
quota,
exist,
file-too-large,
illegal-byte-sequence,
in-progress,
interrupted,
invalid,
io,
is-directory,
loop,
too-many-links,
message-size,
name-too-long,
no-device,
no-entry,
no-lock,
insufficient-memory,
insufficient-space,
not-directory,
not-empty,
not-recoverable,
unsupported,
no-tty,
no-such-device,
overflow,
not-permitted,
pipe,
read-only,
invalid-seek,
text-file-busy,
cross-device,
}

enum advice {
normal,
sequential,
random,
will-need,
dont-need,
no-reuse,
}

record metadata-hash-value {
lower: u64,
upper: u64,
}

resource descriptor {
read-via-stream: func(offset: filesize) -> result<input-stream, error-code>;
write-via-stream: func(offset: filesize) -> result<output-stream, error-code>;
append-via-stream: func() -> result<output-stream, error-code>;
advise: func(offset: filesize, length: filesize, advice: advice) -> result<_, error-code>;
sync-data: func() -> result<_, error-code>;
get-flags: func() -> result<descriptor-flags, error-code>;
get-type: func() -> result<descriptor-type, error-code>;
set-size: func(size: filesize) -> result<_, error-code>;
set-times: func(data-access-timestamp: new-timestamp, data-modification-timestamp: new-timestamp) -> result<_, error-code>;
read: func(length: filesize, offset: filesize) -> result<tuple<list<u8>, bool>, error-code>;
write: func(buffer: list<u8>, offset: filesize) -> result<filesize, error-code>;
read-directory: func() -> result<directory-entry-stream, error-code>;
sync: func() -> result<_, error-code>;
create-directory-at: func(path: string) -> result<_, error-code>;
stat: func() -> result<descriptor-stat, error-code>;
stat-at: func(path-flags: path-flags, path: string) -> result<descriptor-stat, error-code>;
set-times-at: func(path-flags: path-flags, path: string, data-access-timestamp: new-timestamp, data-modification-timestamp: new-timestamp) -> result<_, error-code>;
link-at: func(old-path-flags: path-flags, old-path: string, new-descriptor: borrow<descriptor>, new-path: string) -> result<_, error-code>;
open-at: func(path-flags: path-flags, path: string, open-flags: open-flags, %flags: descriptor-flags) -> result<descriptor, error-code>;
readlink-at: func(path: string) -> result<string, error-code>;
remove-directory-at: func(path: string) -> result<_, error-code>;
rename-at: func(old-path: string, new-descriptor: borrow<descriptor>, new-path: string) -> result<_, error-code>;
symlink-at: func(old-path: string, new-path: string) -> result<_, error-code>;
unlink-file-at: func(path: string) -> result<_, error-code>;
is-same-object: func(other: borrow<descriptor>) -> bool;
metadata-hash: func() -> result<metadata-hash-value, error-code>;
metadata-hash-at: func(path-flags: path-flags, path: string) -> result<metadata-hash-value, error-code>;
}

resource directory-entry-stream {
read-directory-entry: func() -> result<option<directory-entry>, error-code>;
}

filesystem-error-code: func(err: borrow<error>) -> option<error-code>;
}

interface preopens {
use types.{descriptor};

get-directories: func() -> list<tuple<descriptor, string>>;
}

world imports {
import wasi:io/[email protected];
import wasi:io/[email protected];
import wasi:io/[email protected];
import wasi:clocks/[email protected];
import types;
import preopens;
}
Loading