diff --git a/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.0.html b/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.0.html new file mode 100644 index 0000000..3c607ad --- /dev/null +++ b/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.0.html @@ -0,0 +1,6 @@ +
+ Host app +
+ \ No newline at end of file diff --git a/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.1.html b/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.1.html new file mode 100644 index 0000000..59471cd --- /dev/null +++ b/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.1.html @@ -0,0 +1,7 @@ +
+ Host app +
+
+ \ No newline at end of file diff --git a/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.2.html b/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.2.html new file mode 100644 index 0000000..b9cc793 --- /dev/null +++ b/src/components/micro-frame/__tests__/__snapshots__/csr-custom-fetch/renders.expected/loading.2.html @@ -0,0 +1,9 @@ +
+ Host app +
+
+ Custom fetch(src: embed) content. +
+ \ No newline at end of file diff --git a/src/components/micro-frame/__tests__/__snapshots__/ssr-custom-fetch/renders.expected/loading.0.html b/src/components/micro-frame/__tests__/__snapshots__/ssr-custom-fetch/renders.expected/loading.0.html new file mode 100644 index 0000000..f2c3112 --- /dev/null +++ b/src/components/micro-frame/__tests__/__snapshots__/ssr-custom-fetch/renders.expected/loading.0.html @@ -0,0 +1,9 @@ +
+ Host app +
+
+ Custom fetch(src: /embed) content. +
\ No newline at end of file diff --git a/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/components/app.marko b/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/components/app.marko new file mode 100644 index 0000000..e5dabaf --- /dev/null +++ b/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/components/app.marko @@ -0,0 +1,23 @@ +class { + onCreate() { + this.state = { mounted: false }; + } + onMount() { + this.state.mounted = true; + } +} + + + { + const stream = new ReadableStream({ + start(controller) { + const encoder = new TextEncoder(); + controller.enqueue(encoder.encode(`Custom fetch(src: ${src}) content.`)); + controller.close(); + } + }); + resolve({ ok: true, body: stream }); + }); + } /> + diff --git a/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/embed.marko b/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/embed.marko new file mode 100644 index 0000000..6ebe406 --- /dev/null +++ b/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/embed.marko @@ -0,0 +1,4 @@ + +
+ Embedded App. +
diff --git a/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/index.marko b/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/index.marko new file mode 100644 index 0000000..267d8b1 --- /dev/null +++ b/src/components/micro-frame/__tests__/fixtures/csr-custom-fetch/index.marko @@ -0,0 +1,13 @@ + + + + + + Simple Example + + + +
Host app
+ + + diff --git a/src/components/micro-frame/__tests__/fixtures/ssr-custom-fetch/embed.marko b/src/components/micro-frame/__tests__/fixtures/ssr-custom-fetch/embed.marko new file mode 100644 index 0000000..6ebe406 --- /dev/null +++ b/src/components/micro-frame/__tests__/fixtures/ssr-custom-fetch/embed.marko @@ -0,0 +1,4 @@ + +
+ Embedded App. +
diff --git a/src/components/micro-frame/__tests__/fixtures/ssr-custom-fetch/index.marko b/src/components/micro-frame/__tests__/fixtures/ssr-custom-fetch/index.marko new file mode 100644 index 0000000..f876179 --- /dev/null +++ b/src/components/micro-frame/__tests__/fixtures/ssr-custom-fetch/index.marko @@ -0,0 +1,20 @@ + + + + + + Simple Example + + + +
Host app
+ { + resolve({ ok: true, body: customFetch() }); + }); + } /> + + diff --git a/src/components/micro-frame/__tests__/server.test.ts b/src/components/micro-frame/__tests__/server.test.ts index 0ed65c1..9bd8e3e 100644 --- a/src/components/micro-frame/__tests__/server.test.ts +++ b/src/components/micro-frame/__tests__/server.test.ts @@ -119,3 +119,13 @@ describe( describe("csr 404", fixture(path.join(__dirname, "fixtures/csr-404"))); describe("ssr 404", fixture(path.join(__dirname, "fixtures/ssr-404"))); + +describe( + "csr custom fetch", + fixture(path.join(__dirname, "fixtures/csr-custom-fetch")) +); + +describe( + "ssr custom fetch", + fixture(path.join(__dirname, "fixtures/ssr-custom-fetch")) +); diff --git a/src/components/micro-frame/marko-tag.json b/src/components/micro-frame/marko-tag.json index 54c5c73..e63a4c5 100644 --- a/src/components/micro-frame/marko-tag.json +++ b/src/components/micro-frame/marko-tag.json @@ -32,6 +32,15 @@ } ] }, + "@fetch": { + "type": "function", + "required": false, + "autocomplete": [ + { + "description": "Customized fetch function" + } + ] + }, "@cache": { "enum": ["default", "no-store", "reload", "force-cache", "only-if-cached"], "autocomplete": [