@flyo/nitro-astro 2.1.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,120 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import DebugInfo from './DebugInfo';
3
+
4
+ // Mock the dependencies
5
+ vi.mock('../index', () => ({
6
+ useFlyoIntegration: vi.fn(),
7
+ useConfig: vi.fn(),
8
+ }));
9
+
10
+ describe('DebugInfo', () => {
11
+ beforeEach(() => {
12
+ vi.clearAllMocks();
13
+
14
+ // Reset environment variables
15
+ vi.stubEnv('DEV', true);
16
+ vi.stubEnv('MODE', 'development');
17
+ vi.stubEnv('VERCEL_DEPLOYMENT_ID', '');
18
+ vi.stubEnv('VERCEL_GIT_COMMIT_SHA', '');
19
+ });
20
+
21
+ it('should export the component', () => {
22
+ expect(DebugInfo).toBeDefined();
23
+ });
24
+
25
+ it('should handle development token type', async () => {
26
+ const { useFlyoIntegration, useConfig } = await import('../index');
27
+
28
+ vi.mocked(useFlyoIntegration).mockReturnValue({
29
+ options: {
30
+ accessToken: 'd-development-token-123',
31
+ liveEdit: true,
32
+ componentsDir: 'src/components/flyo',
33
+ clientCacheHeaderTtl: 900,
34
+ serverCacheHeaderTtl: 1200,
35
+ },
36
+ } as any);
37
+
38
+ vi.mocked(useConfig).mockResolvedValue({
39
+ nitro: {
40
+ version: 42,
41
+ updated_at: 1706270400, // 2024-01-26 12:00:00 UTC
42
+ },
43
+ } as any);
44
+
45
+ expect(useFlyoIntegration).toBeDefined();
46
+ expect(useConfig).toBeDefined();
47
+ });
48
+
49
+ it('should handle production token type', async () => {
50
+ const { useFlyoIntegration } = await import('../index');
51
+
52
+ vi.mocked(useFlyoIntegration).mockReturnValue({
53
+ options: {
54
+ accessToken: 'p-production-token-456',
55
+ liveEdit: false,
56
+ componentsDir: 'src/components/flyo',
57
+ clientCacheHeaderTtl: 900,
58
+ serverCacheHeaderTtl: 1200,
59
+ },
60
+ } as any);
61
+
62
+ const integration = useFlyoIntegration();
63
+ const token = integration.options.accessToken as string;
64
+ const tokenType = token.startsWith('p-') ? 'production' : (token.startsWith('d-') ? 'develop' : 'unknown');
65
+
66
+ expect(tokenType).toBe('production');
67
+ });
68
+
69
+ it('should handle unknown token type', async () => {
70
+ const { useFlyoIntegration } = await import('../index');
71
+
72
+ vi.mocked(useFlyoIntegration).mockReturnValue({
73
+ options: {
74
+ accessToken: 'invalid-token',
75
+ liveEdit: false,
76
+ componentsDir: 'src/components/flyo',
77
+ clientCacheHeaderTtl: 900,
78
+ serverCacheHeaderTtl: 1200,
79
+ },
80
+ } as any);
81
+
82
+ const integration = useFlyoIntegration();
83
+ const token = integration.options.accessToken as string;
84
+ const tokenType = token.startsWith('p-') ? 'production' : (token.startsWith('d-') ? 'develop' : 'unknown');
85
+
86
+ expect(tokenType).toBe('unknown');
87
+ });
88
+
89
+ it('should handle missing nitro config', async () => {
90
+ const { useConfig } = await import('../index');
91
+
92
+ vi.mocked(useConfig).mockResolvedValue({} as any);
93
+
94
+ const config = await useConfig({} as any);
95
+ const apiVersion = config.nitro?.version?.toString() || '-';
96
+ const apiLastUpdate = config.nitro?.updated_at ? 'date' : '-';
97
+
98
+ expect(apiVersion).toBe('-');
99
+ expect(apiLastUpdate).toBe('-');
100
+ });
101
+
102
+ it('should format date correctly from unix timestamp', () => {
103
+ const timestamp = 1706270400; // 2024-01-26 12:00:00 UTC
104
+ const date = new Date(timestamp * 1000);
105
+
106
+ expect(date).toBeInstanceOf(Date);
107
+ expect(date.getTime()).toBe(1706270400000);
108
+ });
109
+
110
+ it('should handle vercel environment variables', () => {
111
+ vi.stubEnv('VERCEL_DEPLOYMENT_ID', 'dpl_abc123');
112
+ vi.stubEnv('VERCEL_GIT_COMMIT_SHA', 'a1b2c3d4e5f6');
113
+
114
+ const vercelDeploymentId = import.meta.env.VERCEL_DEPLOYMENT_ID || '-';
115
+ const vercelGitCommitSha = import.meta.env.VERCEL_GIT_COMMIT_SHA || '-';
116
+
117
+ expect(vercelDeploymentId).toBe('dpl_abc123');
118
+ expect(vercelGitCommitSha).toBe('a1b2c3d4e5f6');
119
+ });
120
+ });
@@ -0,0 +1,2 @@
1
+ import DebugInfo from "./DebugInfo.astro";
2
+ export default DebugInfo;
@@ -0,0 +1,32 @@
1
+ ---
2
+ import { wysiwyg } from '@flyo/nitro-js-bridge';
3
+
4
+ interface Props {
5
+ json: any;
6
+ components?: Record<string, any>;
7
+ }
8
+
9
+ const { json, components = {} } = Astro.props;
10
+
11
+ let nodes: any[] = [];
12
+
13
+ if (json) {
14
+ if (json.type === 'doc' && Array.isArray(json.content)) {
15
+ nodes = json.content;
16
+ } else if (Array.isArray(json)) {
17
+ nodes = json;
18
+ } else {
19
+ nodes = [json];
20
+ }
21
+ }
22
+ ---
23
+
24
+ {nodes.map((node: any) => {
25
+ const Component = components[node.type];
26
+ if (Component) {
27
+ return <Component node={node} />
28
+ }
29
+
30
+ const html = wysiwyg(node);
31
+ return <Fragment set:html={html} />
32
+ })}
@@ -0,0 +1,24 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import FlyoWysiwyg from './FlyoWysiwyg';
3
+ import { wysiwyg } from '@flyo/nitro-js-bridge';
4
+
5
+ describe('FlyoWysiwyg', () => {
6
+ it('should export the component', () => {
7
+ expect(FlyoWysiwyg).toBeDefined();
8
+ });
9
+
10
+ it('wysiwyg function should be available and render basic node', () => {
11
+ expect(wysiwyg).toBeDefined();
12
+
13
+ const node = {
14
+ type: 'paragraph',
15
+ content: [{ type: 'text', text: 'Hello World' }]
16
+ };
17
+
18
+ // Since we don't know the exact implementation details of the installed version,
19
+ // we just check if it returns a string containing the text.
20
+ const html = wysiwyg(node);
21
+ expect(typeof html).toBe('string');
22
+ expect(html).toContain('Hello World');
23
+ });
24
+ });
@@ -0,0 +1,2 @@
1
+ import FlyoWysiwyg from "./FlyoWysiwyg.astro";
2
+ export default FlyoWysiwyg;
@@ -1,4 +1,4 @@
1
- (function(l,h){typeof exports=="object"&&typeof module<"u"?h(exports):typeof define=="function"&&define.amd?define(["exports"],h):(l=typeof globalThis<"u"?globalThis:l||self,h(l.flyoNitroIntegration={}))})(this,function(l){"use strict";const h="https://api.flyo.cloud/nitro/v1".replace(/\/+$/,"");class x{constructor(n={}){this.configuration=n}set config(n){this.configuration=n}get basePath(){return this.configuration.basePath!=null?this.configuration.basePath:h}get fetchApi(){return this.configuration.fetchApi}get middleware(){return this.configuration.middleware||[]}get queryParamsStringify(){return this.configuration.queryParamsStringify||_}get username(){return this.configuration.username}get password(){return this.configuration.password}get apiKey(){const n=this.configuration.apiKey;if(n)return typeof n=="function"?n:()=>n}get accessToken(){const n=this.configuration.accessToken;if(n)return typeof n=="function"?n:async()=>n}get headers(){return this.configuration.headers}get credentials(){return this.configuration.credentials}}const $=new x,w=class F{constructor(n=$){this.configuration=n,this.fetchApi=async(t,i)=>{let r={url:t,init:i};for(const a of this.middleware)a.pre&&(r=await a.pre({fetch:this.fetchApi,...r})||r);let o;try{o=await(this.configuration.fetchApi||fetch)(r.url,r.init)}catch(a){for(const s of this.middleware)s.onError&&(o=await s.onError({fetch:this.fetchApi,url:r.url,init:r.init,error:a,response:o?o.clone():void 0})||o);if(o===void 0)throw a instanceof Error?new O(a,"The request failed and the interceptors did not return an alternative response"):a}for(const a of this.middleware)a.post&&(o=await a.post({fetch:this.fetchApi,url:r.url,init:r.init,response:o.clone()})||o);return o},this.middleware=n.middleware}withMiddleware(...n){const t=this.clone();return t.middleware=t.middleware.concat(...n),t}withPreMiddleware(...n){const t=n.map(i=>({pre:i}));return this.withMiddleware(...t)}withPostMiddleware(...n){const t=n.map(i=>({post:i}));return this.withMiddleware(...t)}isJsonMime(n){return n?F.jsonRegex.test(n):!1}async request(n,t){const{url:i,init:r}=await this.createFetchParams(n,t),o=await this.fetchApi(i,r);if(o&&o.status>=200&&o.status<300)return o;throw new N(o,"Response returned an error code")}async createFetchParams(n,t){let i=this.configuration.basePath+n.path;n.query!==void 0&&Object.keys(n.query).length!==0&&(i+="?"+this.configuration.queryParamsStringify(n.query));const r=Object.assign({},this.configuration.headers,n.headers);Object.keys(r).forEach(p=>r[p]===void 0?delete r[p]:{});const o=typeof t=="function"?t:async()=>t,a={method:n.method,headers:r,body:n.body,credentials:this.configuration.credentials},s={...a,...await o({init:a,context:n})};let u;M(s.body)||s.body instanceof URLSearchParams||K(s.body)?u=s.body:this.isJsonMime(r["Content-Type"])?u=JSON.stringify(s.body):u=s.body;const c={...s,body:u};return{url:i,init:c}}clone(){const n=this.constructor,t=new n(this.configuration);return t.middleware=this.middleware.slice(),t}};w.jsonRegex=new RegExp("^(:?application/json|[^;/ ]+/[^;/ ]+[+]json)[ ]*(:?;.*)?$","i");let g=w;function K(e){return typeof Blob<"u"&&e instanceof Blob}function M(e){return typeof FormData<"u"&&e instanceof FormData}class N extends Error{constructor(n,t){super(t),this.response=n,this.name="ResponseError"}}class O extends Error{constructor(n,t){super(t),this.cause=n,this.name="FetchError"}}class y extends Error{constructor(n,t){super(t),this.field=n,this.name="RequiredError"}}function _(e,n=""){return Object.keys(e).map(t=>b(t,e[t],n)).filter(t=>t.length>0).join("&")}function b(e,n,t=""){const i=t+(t.length?`[${e}]`:e);if(n instanceof Array){const r=n.map(o=>encodeURIComponent(String(o))).join(`&${encodeURIComponent(i)}=`);return`${encodeURIComponent(i)}=${r}`}if(n instanceof Set){const r=Array.from(n);return b(e,r,t)}return n instanceof Date?`${encodeURIComponent(i)}=${encodeURIComponent(n.toISOString())}`:n instanceof Object?_(n,i):`${encodeURIComponent(i)}=${encodeURIComponent(String(n))}`}function v(e,n){return Object.keys(e).reduce((t,i)=>({...t,[i]:n(e[i])}),{})}class d{constructor(n,t=i=>i){this.raw=n,this.transformer=t}async value(){return this.transformer(await this.raw.json())}}function B(e){return D(e)}function D(e,n){return e==null?e:{identifier:e.identifier==null?void 0:e.identifier,content:e.content==null?void 0:e.content.map(C)}}function C(e){return G(e)}function G(e,n){return e==null?e:{items:e.items==null?void 0:e.items,content:e.content==null?void 0:e.content,config:e.config==null?void 0:e.config,identifier:e.identifier==null?void 0:e.identifier,uid:e.uid==null?void 0:e.uid,component:e.component==null?void 0:e.component,slots:e.slots==null?void 0:v(e.slots,B)}}function E(e){return H(e)}function H(e,n){return e==null?e:{slug:e.slug==null?void 0:e.slug,title:e.title==null?void 0:e.title,href:e.href==null?void 0:e.href}}function q(e){return z(e)}function z(e,n){return e==null?e:{type:e.type==null?void 0:e.type,target:e.target==null?void 0:e.target,label:e.label==null?void 0:e.label,href:e.href==null?void 0:e.href,slug:e.slug==null?void 0:e.slug,properties:e.properties==null?void 0:e.properties,children:e.children==null?void 0:e.children.map(q)}}function V(e){return W(e)}function W(e,n){return e==null?e:{items:e.items==null?void 0:e.items.map(q),uid:e.uid==null?void 0:e.uid,identifier:e.identifier==null?void 0:e.identifier,label:e.label==null?void 0:e.label}}function J(e){return Q(e)}function Q(e,n){return e==null?e:{domain:e.domain==null?void 0:e.domain,slug:e.slug==null?void 0:e.slug,version:e.version==null?void 0:e.version,updated_at:e.updated_at==null?void 0:e.updated_at,language:e.language==null?void 0:e.language,primary_language:e.primary_language==null?void 0:e.primary_language}}function X(e){return Y(e)}function Y(e,n){return e==null?e:{nitro:e.nitro==null?void 0:J(e.nitro),pages:e.pages==null?void 0:e.pages,containers:e.containers==null?void 0:v(e.containers,V),globals:e.globals==null?void 0:e.globals}}function Z(e){return ee(e)}function ee(e,n){return e==null?e:{api:e.api==null?void 0:e.api,image:e.image==null?void 0:e.image}}function ne(e){return te(e)}function te(e,n){return e==null?e:{_version:e._version==null?void 0:e._version,entity_metric:e.entity_metric==null?void 0:Z(e.entity_metric),entity_unique_id:e.entity_unique_id==null?void 0:e.entity_unique_id,entity_id:e.entity_id==null?void 0:e.entity_id,entity_image:e.entity_image==null?void 0:e.entity_image,entity_slug:e.entity_slug==null?void 0:e.entity_slug,entity_teaser:e.entity_teaser==null?void 0:e.entity_teaser,entity_time_end:e.entity_time_end==null?void 0:e.entity_time_end,entity_time_start:e.entity_time_start==null?void 0:e.entity_time_start,entity_title:e.entity_title==null?void 0:e.entity_title,entity_type:e.entity_type==null?void 0:e.entity_type,entity_type_id:e.entity_type_id==null?void 0:e.entity_type_id,updated_at:e.updated_at==null?void 0:e.updated_at,routes:e.routes==null?void 0:e.routes}}function ie(e){return oe(e)}function oe(e,n){return e==null?e:{shortcode:e.shortcode==null?void 0:e.shortcode,name:e.name==null?void 0:e.name}}function R(e){return re(e)}function re(e,n){return e==null?e:{language:e.language==null?void 0:ie(e.language),slug:e.slug==null?void 0:e.slug,title:e.title==null?void 0:e.title,href:e.href==null?void 0:e.href}}function A(e){return ae(e)}function ae(e,n){return e==null?e:{entity:e.entity==null?void 0:ne(e.entity),model:e.model==null?void 0:e.model,language:e.language==null?void 0:e.language,jsonld:e.jsonld==null?void 0:e.jsonld,translation:e.translation==null?void 0:e.translation.map(R),breadcrumb:e.breadcrumb==null?void 0:e.breadcrumb.map(E)}}function I(e){return le(e)}function le(e,n){return e==null?e:{entity_unique_id:e.entity_unique_id==null?void 0:e.entity_unique_id,entity_title:e.entity_title==null?void 0:e.entity_title,entity_teaser:e.entity_teaser==null?void 0:e.entity_teaser,entity_slug:e.entity_slug==null?void 0:e.entity_slug,entity_time_start:e.entity_time_start==null?void 0:e.entity_time_start,entity_type:e.entity_type==null?void 0:e.entity_type,entity_type_id:e.entity_type_id==null?void 0:e.entity_type_id,entity_image:e.entity_image==null?void 0:e.entity_image,routes:e.routes==null?void 0:e.routes}}function se(e){return ue(e)}function ue(e,n){return e==null?e:{description:e.description==null?void 0:e.description,image:e.image==null?void 0:e.image,title:e.title==null?void 0:e.title}}function ce(e){return de(e)}function de(e,n){return e==null?e:{value:e.value==null?void 0:e.value,navigation:e.navigation==null?void 0:e.navigation,propagate:e.propagate==null?void 0:e.propagate}}function T(e){return fe(e)}function fe(e,n){return e==null?e:{id:e.id==null?void 0:e.id,title:e.title==null?void 0:e.title,href:e.href==null?void 0:e.href,slug:e.slug==null?void 0:e.slug,json:e.json==null?void 0:e.json.map(C),depth:e.depth==null?void 0:e.depth,is_home:e.is_home==null?void 0:e.is_home,created_at:e.created_at==null?void 0:e.created_at,updated_at:e.updated_at==null?void 0:e.updated_at,is_visible:e.is_visible==null?void 0:e.is_visible,meta_json:e.meta_json==null?void 0:se(e.meta_json),properties:e.properties==null?void 0:v(e.properties,ce),uid:e.uid==null?void 0:e.uid,type:e.type==null?void 0:e.type,target:e.target==null?void 0:e.target,container:e.container==null?void 0:e.container,breadcrumb:e.breadcrumb==null?void 0:e.breadcrumb.map(E),translation:e.translation==null?void 0:e.translation.map(R)}}function ge(e){return he(e)}function he(e,n){return e==null?e:{version:e.version==null?void 0:e.version,updated_at:e.updated_at==null?void 0:e.updated_at}}class pe extends g{async configRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/config",method:"GET",headers:r,query:i},t);return new d(o,a=>X(a))}async config(n={},t){return await(await this.configRaw(n,t)).value()}}class ye extends g{async entityBySlugRaw(n,t){if(n.slug==null)throw new y("slug",'Required parameter "slug" was null or undefined when calling entityBySlug().');const i={};n.typeId!=null&&(i.typeId=n.typeId),n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/entities/slug/{slug}".replace("{slug}",encodeURIComponent(String(n.slug))),method:"GET",headers:r,query:i},t);return new d(o,a=>A(a))}async entityBySlug(n,t){return await(await this.entityBySlugRaw(n,t)).value()}async entityByUniqueidRaw(n,t){if(n.uniqueid==null)throw new y("uniqueid",'Required parameter "uniqueid" was null or undefined when calling entityByUniqueid().');const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/entities/uniqueid/{uniqueid}".replace("{uniqueid}",encodeURIComponent(String(n.uniqueid))),method:"GET",headers:r,query:i},t);return new d(o,a=>A(a))}async entityByUniqueid(n,t){return await(await this.entityByUniqueidRaw(n,t)).value()}}class ve extends g{async homeRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/pages/home",method:"GET",headers:r,query:i},t);return new d(o,a=>T(a))}async home(n={},t){return await(await this.homeRaw(n,t)).value()}async pageRaw(n,t){const i={};n.slug!=null&&(i.slug=n.slug),n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/pages",method:"GET",headers:r,query:i},t);return new d(o,a=>T(a))}async page(n={},t){return await(await this.pageRaw(n,t)).value()}}class me extends g{async searchRaw(n,t){if(n.query==null)throw new y("query",'Required parameter "query" was null or undefined when calling search().');const i={};n.query!=null&&(i.query=n.query),n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/search",method:"GET",headers:r,query:i},t);return new d(o,a=>a.map(I))}async search(n,t){return await(await this.searchRaw(n,t)).value()}}class we extends g{async sitemapRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/sitemap",method:"GET",headers:r,query:i},t);return new d(o,a=>a.map(I))}async sitemap(n={},t){return await(await this.sitemapRaw(n,t)).value()}}class _e extends g{async versionRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const o=await this.request({path:"/version",method:"GET",headers:r,query:i},t);return new d(o,a=>ge(a))}async version(n={},t){return await(await this.versionRaw(n,t)).value()}}const be=/[\p{Lu}]/u,Ce=/[\p{Ll}]/u,k=/^[\p{Lu}](?![\p{Lu}])/gu,S=/([\p{Alpha}\p{N}_]|$)/u,m=/[_.\- ]+/,Ee=new RegExp("^"+m.source),j=new RegExp(m.source+S.source,"gu"),L=new RegExp("\\d+"+S.source,"gu"),qe=(e,n,t,i)=>{let r=!1,o=!1,a=!1,s=!1;for(let u=0;u<e.length;u++){const c=e[u];s=u>2?e[u-3]==="-":!0,r&&be.test(c)?(e=e.slice(0,u)+"-"+e.slice(u),r=!1,a=o,o=!0,u++):o&&a&&Ce.test(c)&&(!s||i)?(e=e.slice(0,u-1)+"-"+e.slice(u-1),a=o,o=!1,r=!0):(r=n(c)===c&&t(c)!==c,a=o,o=t(c)===c&&n(c)!==c)}return e},Re=(e,n)=>(k.lastIndex=0,e.replaceAll(k,t=>n(t))),Ae=(e,n)=>(j.lastIndex=0,L.lastIndex=0,e.replaceAll(L,(t,i,r)=>["_","-"].includes(e.charAt(r+t.length))?t:n(t)).replaceAll(j,(t,i)=>n(i)));function Ie(e,n){if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");if(n={pascalCase:!1,preserveConsecutiveUppercase:!1,...n},Array.isArray(e)?e=e.map(o=>o.trim()).filter(o=>o.length).join("-"):e=e.trim(),e.length===0)return"";const t=n.locale===!1?o=>o.toLowerCase():o=>o.toLocaleLowerCase(n.locale),i=n.locale===!1?o=>o.toUpperCase():o=>o.toLocaleUpperCase(n.locale);return e.length===1?m.test(e)?"":n.pascalCase?i(e):t(e):(e!==t(e)&&(e=qe(e,t,i,n.preserveConsecutiveUppercase)),e=e.replace(Ee,""),e=n.preserveConsecutiveUppercase?Re(e,t):t(e),n.pascalCase&&(e=i(e.charAt(0))+e.slice(1)),Ae(e,i))}function Te(e,n,t){const i="virtual:flyo-components",r="\0"+i;return{name:"vite-plugin-flyo-components",async resolveId(o){if(o===i)return r},async load(o){if(o===r){const a=[];for(const[u,c]of Object.entries(n)){const p=await this.resolve("/"+e+"/"+c+".astro");p&&a.push(`export { default as ${Ie(u)} } from "${p.id}"`)}let s=null;return t&&(s=await this.resolve("/"+e+"/"+t+".astro")),s?a.push(`export { default as fallback } from "${s.id}"`):a.push('export { default as fallback } from "@flyo/nitro-astro/FallbackComponent.astro"'),a.join(";")}}}}function U(){return globalThis.flyoNitroInstance||console.error("The Flyo Typescript Configuration has not been initialized correctly"),globalThis.flyoNitroInstance}function f(){return U().config}async function ke(e){return await e.locals.config}function Se(){return new pe(f())}function je(){return new ye(f())}function Le(){return new ve(f())}function Ue(){return new me(f())}function Pe(){return new we(f())}function Fe(){return new _e(f())}function P(e){return{"data-flyo-uid":e.uid}}const xe=P,$e=`
1
+ (function(s,h){typeof exports=="object"&&typeof module<"u"?h(exports):typeof define=="function"&&define.amd?define(["exports"],h):(s=typeof globalThis<"u"?globalThis:s||self,h(s.flyoNitroIntegration={}))})(this,function(s){"use strict";const h="https://api.flyo.cloud/nitro/v1".replace(/\/+$/,"");class ${constructor(n={}){this.configuration=n}set config(n){this.configuration=n}get basePath(){return this.configuration.basePath!=null?this.configuration.basePath:h}get fetchApi(){return this.configuration.fetchApi}get middleware(){return this.configuration.middleware||[]}get queryParamsStringify(){return this.configuration.queryParamsStringify||_}get username(){return this.configuration.username}get password(){return this.configuration.password}get apiKey(){const n=this.configuration.apiKey;if(n)return typeof n=="function"?n:()=>n}get accessToken(){const n=this.configuration.accessToken;if(n)return typeof n=="function"?n:async()=>n}get headers(){return this.configuration.headers}get credentials(){return this.configuration.credentials}}const x=new $,w=class F{constructor(n=x){this.configuration=n,this.fetchApi=async(t,i)=>{let r={url:t,init:i};for(const a of this.middleware)a.pre&&(r=await a.pre({fetch:this.fetchApi,...r})||r);let o;try{o=await(this.configuration.fetchApi||fetch)(r.url,r.init)}catch(a){for(const l of this.middleware)l.onError&&(o=await l.onError({fetch:this.fetchApi,url:r.url,init:r.init,error:a,response:o?o.clone():void 0})||o);if(o===void 0)throw a instanceof Error?new O(a,"The request failed and the interceptors did not return an alternative response"):a}for(const a of this.middleware)a.post&&(o=await a.post({fetch:this.fetchApi,url:r.url,init:r.init,response:o.clone()})||o);return o},this.middleware=n.middleware}withMiddleware(...n){const t=this.clone();return t.middleware=t.middleware.concat(...n),t}withPreMiddleware(...n){const t=n.map(i=>({pre:i}));return this.withMiddleware(...t)}withPostMiddleware(...n){const t=n.map(i=>({post:i}));return this.withMiddleware(...t)}isJsonMime(n){return n?F.jsonRegex.test(n):!1}async request(n,t){const{url:i,init:r}=await this.createFetchParams(n,t),o=await this.fetchApi(i,r);if(o&&o.status>=200&&o.status<300)return o;throw new N(o,"Response returned an error code")}async createFetchParams(n,t){let i=this.configuration.basePath+n.path;n.query!==void 0&&Object.keys(n.query).length!==0&&(i+="?"+this.configuration.queryParamsStringify(n.query));const r=Object.assign({},this.configuration.headers,n.headers);Object.keys(r).forEach(p=>r[p]===void 0?delete r[p]:{});const o=typeof t=="function"?t:async()=>t,a={method:n.method,headers:r,body:n.body,credentials:this.configuration.credentials},l={...a,...await o({init:a,context:n})};let u;M(l.body)||l.body instanceof URLSearchParams||K(l.body)?u=l.body:this.isJsonMime(r["Content-Type"])?u=JSON.stringify(l.body):u=l.body;const c={...l,body:u};return{url:i,init:c}}clone(){const n=this.constructor,t=new n(this.configuration);return t.middleware=this.middleware.slice(),t}};w.jsonRegex=new RegExp("^(:?application/json|[^;/ ]+/[^;/ ]+[+]json)[ ]*(:?;.*)?$","i");let g=w;function K(e){return typeof Blob<"u"&&e instanceof Blob}function M(e){return typeof FormData<"u"&&e instanceof FormData}class N extends Error{constructor(n,t){super(t),this.response=n,this.name="ResponseError"}}class O extends Error{constructor(n,t){super(t),this.cause=n,this.name="FetchError"}}class y extends Error{constructor(n,t){super(t),this.field=n,this.name="RequiredError"}}function _(e,n=""){return Object.keys(e).map(t=>b(t,e[t],n)).filter(t=>t.length>0).join("&")}function b(e,n,t=""){const i=t+(t.length?`[${e}]`:e);if(n instanceof Array){const r=n.map(o=>encodeURIComponent(String(o))).join(`&${encodeURIComponent(i)}=`);return`${encodeURIComponent(i)}=${r}`}if(n instanceof Set){const r=Array.from(n);return b(e,r,t)}return n instanceof Date?`${encodeURIComponent(i)}=${encodeURIComponent(n.toISOString())}`:n instanceof Object?_(n,i):`${encodeURIComponent(i)}=${encodeURIComponent(String(n))}`}function v(e,n){const t={};for(const i of Object.keys(e))t[i]=n(e[i]);return t}class d{constructor(n,t=i=>i){this.raw=n,this.transformer=t}async value(){return this.transformer(await this.raw.json())}}function D(e){return B(e)}function B(e,n){return e==null?e:{identifier:e.identifier==null?void 0:e.identifier,content:e.content==null?void 0:e.content.map(C)}}function C(e){return G(e)}function G(e,n){return e==null?e:{items:e.items==null?void 0:e.items,content:e.content==null?void 0:e.content,config:e.config==null?void 0:e.config,identifier:e.identifier==null?void 0:e.identifier,uid:e.uid==null?void 0:e.uid,component:e.component==null?void 0:e.component,slots:e.slots==null?void 0:v(e.slots,D)}}function E(e){return H(e)}function H(e,n){return e==null?e:{slug:e.slug==null?void 0:e.slug,title:e.title==null?void 0:e.title,href:e.href==null?void 0:e.href}}function V(e){return z(e)}function z(e,n){return e==null?e:{domain:e.domain==null?void 0:e.domain,slug:e.slug==null?void 0:e.slug,version:e.version==null?void 0:e.version,updated_at:e.updated_at==null?void 0:e.updated_at,language:e.language==null?void 0:e.language,primary_language:e.primary_language==null?void 0:e.primary_language}}function q(e){return J(e)}function J(e,n){return e==null?e:{type:e.type==null?void 0:e.type,target:e.target==null?void 0:e.target,label:e.label==null?void 0:e.label,href:e.href==null?void 0:e.href,slug:e.slug==null?void 0:e.slug,properties:e.properties==null?void 0:e.properties,children:e.children==null?void 0:e.children.map(q)}}function W(e){return Q(e)}function Q(e,n){return e==null?e:{items:e.items==null?void 0:e.items.map(q),uid:e.uid==null?void 0:e.uid,identifier:e.identifier==null?void 0:e.identifier,label:e.label==null?void 0:e.label}}function X(e){return Y(e)}function Y(e,n){return e==null?e:{nitro:e.nitro==null?void 0:V(e.nitro),pages:e.pages==null?void 0:e.pages,containers:e.containers==null?void 0:v(e.containers,W),globals:e.globals==null?void 0:e.globals}}function Z(e){return ee(e)}function ee(e,n){return e==null?e:{shortcode:e.shortcode==null?void 0:e.shortcode,name:e.name==null?void 0:e.name}}function R(e){return ne(e)}function ne(e,n){return e==null?e:{language:e.language==null?void 0:Z(e.language),slug:e.slug==null?void 0:e.slug,title:e.title==null?void 0:e.title,href:e.href==null?void 0:e.href}}function te(e){return ie(e)}function ie(e,n){return e==null?e:{api:e.api==null?void 0:e.api,image:e.image==null?void 0:e.image}}function oe(e){return re(e)}function re(e,n){return e==null?e:{_version:e._version==null?void 0:e._version,entity_metric:e.entity_metric==null?void 0:te(e.entity_metric),entity_unique_id:e.entity_unique_id==null?void 0:e.entity_unique_id,entity_id:e.entity_id==null?void 0:e.entity_id,entity_image:e.entity_image==null?void 0:e.entity_image,entity_slug:e.entity_slug==null?void 0:e.entity_slug,entity_teaser:e.entity_teaser==null?void 0:e.entity_teaser,entity_time_end:e.entity_time_end==null?void 0:e.entity_time_end,entity_time_start:e.entity_time_start==null?void 0:e.entity_time_start,entity_title:e.entity_title==null?void 0:e.entity_title,entity_type:e.entity_type==null?void 0:e.entity_type,entity_type_id:e.entity_type_id==null?void 0:e.entity_type_id,updated_at:e.updated_at==null?void 0:e.updated_at,routes:e.routes==null?void 0:e.routes}}function A(e){return ae(e)}function ae(e,n){return e==null?e:{entity:e.entity==null?void 0:oe(e.entity),model:e.model==null?void 0:e.model,language:e.language==null?void 0:e.language,jsonld:e.jsonld==null?void 0:e.jsonld,translation:e.translation==null?void 0:e.translation.map(R),breadcrumb:e.breadcrumb==null?void 0:e.breadcrumb.map(E)}}function T(e){return le(e)}function le(e,n){return e==null?e:{entity_unique_id:e.entity_unique_id==null?void 0:e.entity_unique_id,entity_title:e.entity_title==null?void 0:e.entity_title,entity_teaser:e.entity_teaser==null?void 0:e.entity_teaser,entity_slug:e.entity_slug==null?void 0:e.entity_slug,entity_time_start:e.entity_time_start==null?void 0:e.entity_time_start,entity_type:e.entity_type==null?void 0:e.entity_type,entity_type_id:e.entity_type_id==null?void 0:e.entity_type_id,entity_image:e.entity_image==null?void 0:e.entity_image,routes:e.routes==null?void 0:e.routes}}function se(e){return ue(e)}function ue(e,n){return e==null?e:{description:e.description==null?void 0:e.description,image:e.image==null?void 0:e.image,title:e.title==null?void 0:e.title}}function ce(e){return de(e)}function de(e,n){return e==null?e:{value:e.value==null?void 0:e.value,navigation:e.navigation==null?void 0:e.navigation,propagate:e.propagate==null?void 0:e.propagate}}function I(e){return fe(e)}function fe(e,n){return e==null?e:{id:e.id==null?void 0:e.id,title:e.title==null?void 0:e.title,href:e.href==null?void 0:e.href,slug:e.slug==null?void 0:e.slug,json:e.json==null?void 0:e.json.map(C),depth:e.depth==null?void 0:e.depth,is_home:e.is_home==null?void 0:e.is_home,created_at:e.created_at==null?void 0:e.created_at,updated_at:e.updated_at==null?void 0:e.updated_at,is_visible:e.is_visible==null?void 0:e.is_visible,meta_json:e.meta_json==null?void 0:se(e.meta_json),properties:e.properties==null?void 0:v(e.properties,ce),uid:e.uid==null?void 0:e.uid,type:e.type==null?void 0:e.type,target:e.target==null?void 0:e.target,container:e.container==null?void 0:e.container,breadcrumb:e.breadcrumb==null?void 0:e.breadcrumb.map(E),translation:e.translation==null?void 0:e.translation.map(R)}}function ge(e){return he(e)}function he(e,n){return e==null?e:{version:e.version==null?void 0:e.version,updated_at:e.updated_at==null?void 0:e.updated_at}}class pe extends g{async configRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const a=await this.request({path:"/config",method:"GET",headers:r,query:i},t);return new d(a,l=>X(l))}async config(n={},t){return await(await this.configRaw(n,t)).value()}}class ye extends g{async entityBySlugRaw(n,t){if(n.slug==null)throw new y("slug",'Required parameter "slug" was null or undefined when calling entityBySlug().');const i={};n.typeId!=null&&(i.typeId=n.typeId),n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));let o="/entities/slug/{slug}";o=o.replace("{slug}",encodeURIComponent(String(n.slug)));const a=await this.request({path:o,method:"GET",headers:r,query:i},t);return new d(a,l=>A(l))}async entityBySlug(n,t){return await(await this.entityBySlugRaw(n,t)).value()}async entityByUniqueidRaw(n,t){if(n.uniqueid==null)throw new y("uniqueid",'Required parameter "uniqueid" was null or undefined when calling entityByUniqueid().');const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));let o="/entities/uniqueid/{uniqueid}";o=o.replace("{uniqueid}",encodeURIComponent(String(n.uniqueid)));const a=await this.request({path:o,method:"GET",headers:r,query:i},t);return new d(a,l=>A(l))}async entityByUniqueid(n,t){return await(await this.entityByUniqueidRaw(n,t)).value()}}class ve extends g{async homeRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const a=await this.request({path:"/pages/home",method:"GET",headers:r,query:i},t);return new d(a,l=>I(l))}async home(n={},t){return await(await this.homeRaw(n,t)).value()}async pageRaw(n,t){const i={};n.slug!=null&&(i.slug=n.slug),n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const a=await this.request({path:"/pages",method:"GET",headers:r,query:i},t);return new d(a,l=>I(l))}async page(n={},t){return await(await this.pageRaw(n,t)).value()}}class me extends g{async searchRaw(n,t){if(n.query==null)throw new y("query",'Required parameter "query" was null or undefined when calling search().');const i={};n.query!=null&&(i.query=n.query),n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const a=await this.request({path:"/search",method:"GET",headers:r,query:i},t);return new d(a,l=>l.map(T))}async search(n,t){return await(await this.searchRaw(n,t)).value()}}class we extends g{async sitemapRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const a=await this.request({path:"/sitemap",method:"GET",headers:r,query:i},t);return new d(a,l=>l.map(T))}async sitemap(n={},t){return await(await this.sitemapRaw(n,t)).value()}}class _e extends g{async versionRaw(n,t){const i={};n.lang!=null&&(i.lang=n.lang);const r={};this.configuration&&this.configuration.apiKey&&(i.token=await this.configuration.apiKey("token"));const a=await this.request({path:"/version",method:"GET",headers:r,query:i},t);return new d(a,l=>ge(l))}async version(n={},t){return await(await this.versionRaw(n,t)).value()}}const be=/[\p{Lu}]/u,Ce=/[\p{Ll}]/u,k=/^[\p{Lu}](?![\p{Lu}])/gu,S=/([\p{Alpha}\p{N}_]|$)/u,m=/[_.\- ]+/,Ee=new RegExp("^"+m.source),j=new RegExp(m.source+S.source,"gu"),L=new RegExp("\\d+"+S.source,"gu"),qe=(e,n,t,i)=>{let r=!1,o=!1,a=!1,l=!1;for(let u=0;u<e.length;u++){const c=e[u];l=u>2?e[u-3]==="-":!0,r&&be.test(c)?(e=e.slice(0,u)+"-"+e.slice(u),r=!1,a=o,o=!0,u++):o&&a&&Ce.test(c)&&(!l||i)?(e=e.slice(0,u-1)+"-"+e.slice(u-1),a=o,o=!1,r=!0):(r=n(c)===c&&t(c)!==c,a=o,o=t(c)===c&&n(c)!==c)}return e},Re=(e,n)=>(k.lastIndex=0,e.replaceAll(k,t=>n(t))),Ae=(e,n)=>(j.lastIndex=0,L.lastIndex=0,e.replaceAll(L,(t,i,r)=>["_","-"].includes(e.charAt(r+t.length))?t:n(t)).replaceAll(j,(t,i)=>n(i)));function Te(e,n){if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");if(n={pascalCase:!1,preserveConsecutiveUppercase:!1,...n},Array.isArray(e)?e=e.map(o=>o.trim()).filter(o=>o.length).join("-"):e=e.trim(),e.length===0)return"";const t=n.locale===!1?o=>o.toLowerCase():o=>o.toLocaleLowerCase(n.locale),i=n.locale===!1?o=>o.toUpperCase():o=>o.toLocaleUpperCase(n.locale);return e.length===1?m.test(e)?"":n.pascalCase?i(e):t(e):(e!==t(e)&&(e=qe(e,t,i,n.preserveConsecutiveUppercase)),e=e.replace(Ee,""),e=n.preserveConsecutiveUppercase?Re(e,t):t(e),n.pascalCase&&(e=i(e.charAt(0))+e.slice(1)),Ae(e,i))}function Ie(e,n,t){const i="virtual:flyo-components",r="\0"+i;return{name:"vite-plugin-flyo-components",async resolveId(o){if(o===i)return r},async load(o){if(o===r){const a=[];for(const[u,c]of Object.entries(n)){const p=await this.resolve("/"+e+"/"+c+".astro");p&&a.push(`export { default as ${Te(u)} } from "${p.id}"`)}let l=null;return t&&(l=await this.resolve("/"+e+"/"+t+".astro")),l?a.push(`export { default as fallback } from "${l.id}"`):a.push('export { default as fallback } from "@flyo/nitro-astro/FallbackComponent.astro"'),a.join(";")}}}}function P(){return globalThis.flyoNitroInstance||console.error("The Flyo Typescript Configuration has not been initialized correctly"),globalThis.flyoNitroInstance}function f(){return P().config}async function ke(e){return await e.locals.config}function Se(){return new pe(f())}function je(){return new ye(f())}function Le(){return new ve(f())}function Pe(){return new me(f())}function Ue(){return new we(f())}function Fe(){return new _e(f())}function U(e){return{"data-flyo-uid":e.uid}}const $e=U,xe=`
2
2
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 163.4 88.5">
3
3
  <style type="text/css">
4
4
  .st8{fill:#FFFFFF;}
@@ -29,7 +29,7 @@
29
29
  </g>
30
30
  </g>
31
31
  </svg>
32
- `;function Ke(e){const n={accessToken:!1,liveEdit:!1,fallbackComponent:null,componentsDir:"src/components/flyo",serverCacheHeaderTtl:1200,clientCacheHeaderTtl:900,...e};return n.liveEdit==="true"?n.liveEdit=!0:n.liveEdit==="false"&&(n.liveEdit=!1),{name:"@flyo/nitro-astro",hooks:{"astro:config:setup":({injectScript:t,updateConfig:i,injectRoute:r,addMiddleware:o,addDevToolbarApp:a})=>{if(!n.accessToken||n.accessToken.length==0)throw new Error("The Flyo Nitro Integration requires an accessToken");a({id:"flyo-nitro",name:"Flyo Nitro",icon:$e,entrypoint:"@flyo/nitro-astro/toolbar.ts"}),r({pattern:"sitemap.xml",entrypoint:"@flyo/nitro-astro/sitemap.ts"}),o({entrypoint:"@flyo/nitro-astro/middleware.ts",order:"post"}),i({image:{service:{entrypoint:"@flyo/nitro-astro/cdn.ts"}},vite:{plugins:[Te(n.componentsDir,n.components||{},n.fallbackComponent)]}}),t("page-ssr",`
32
+ `;function Ke(e){const n={accessToken:!1,liveEdit:!1,fallbackComponent:null,componentsDir:"src/components/flyo",serverCacheHeaderTtl:1200,clientCacheHeaderTtl:900,...e};return n.liveEdit==="true"?n.liveEdit=!0:n.liveEdit==="false"&&(n.liveEdit=!1),{name:"@flyo/nitro-astro",hooks:{"astro:config:setup":({injectScript:t,updateConfig:i,injectRoute:r,addMiddleware:o,addDevToolbarApp:a})=>{if(!n.accessToken||n.accessToken.length==0)throw new Error("The Flyo Nitro Integration requires an accessToken");a({id:"flyo-nitro",name:"Flyo Nitro",icon:xe,entrypoint:"@flyo/nitro-astro/toolbar.ts"}),r({pattern:"sitemap.xml",entrypoint:"@flyo/nitro-astro/sitemap.ts"}),o({entrypoint:"@flyo/nitro-astro/middleware.ts",order:"post"}),i({image:{service:{entrypoint:"@flyo/nitro-astro/cdn.ts"}},vite:{plugins:[Ie(n.componentsDir,n.components||{},n.fallbackComponent)]}}),t("page-ssr",`
33
33
  import { Configuration } from '@flyo/nitro-typescript'
34
34
 
35
35
  var defaultConfig = new Configuration({
@@ -39,6 +39,7 @@
39
39
  globalThis.flyoNitroInstance = {
40
40
  config: defaultConfig,
41
41
  options: {
42
+ accessToken: '${n.accessToken}',
42
43
  liveEdit: ${n.liveEdit},
43
44
  componentsDir: '${n.componentsDir}',
44
45
  clientCacheHeaderTtl: ${n.clientCacheHeaderTtl},
@@ -67,4 +68,4 @@
67
68
  } else {
68
69
  wire();
69
70
  }
70
- `)}}}}l.default=Ke,l.editable=P,l.editableBlock=xe,l.useConfig=ke,l.useConfigApi=Se,l.useConfiguration=f,l.useEntitiesApi=je,l.useFlyoIntegration=U,l.usePagesApi=Le,l.useSearchApi=Ue,l.useSitemapApi=Pe,l.useVersionApi=Fe,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
71
+ `)}}}}s.default=Ke,s.editable=U,s.editableBlock=$e,s.useConfig=ke,s.useConfigApi=Se,s.useConfiguration=f,s.useEntitiesApi=je,s.useFlyoIntegration=P,s.usePagesApi=Le,s.useSearchApi=Pe,s.useSitemapApi=Ue,s.useVersionApi=Fe,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});