directus-extension-inframe 2.0.0 → 2.0.5
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.
- package/README.md +127 -15
- package/dist/api.js +1 -0
- package/dist/app.js +1 -0
- package/dist/index.js +1 -1
- package/package.json +89 -25
package/README.md
CHANGED
|
@@ -1,29 +1,141 @@
|
|
|
1
|
-
# Directus -
|
|
1
|
+
# Directus Extension - inFrame Module
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://badge.fury.io/js/%40devix-tecnologia%2Fdirectus-extension-inframe)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
View and manage external content through iframes directly in the Directus admin panel.
|
|
6
7
|
|
|
7
|
-
-
|
|
8
|
-
- Crie uma nova Coleção com nome de `inframe` e adicione os seguintes campos:
|
|
9
|
-
` "id", "sort", "status", "icon", "url", "thumbnail", "translations.languages_code", "translations.title"`;
|
|
8
|
+

|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
## 🎯 Why use it?
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
- **📊 External dashboards**: Integrate Power BI, Tableau, Metabase or any BI tool
|
|
13
|
+
- **📈 Real-time reports**: View updated data without leaving Directus
|
|
14
|
+
- **🔗 Organized links**: Centralize access to external tools in one place
|
|
15
|
+
- **🌍 Multilingual support**: Automatic translations for multiple languages
|
|
16
|
+
- **⚡ Zero configuration**: Plug-and-play installation with automatic setup
|
|
14
17
|
|
|
15
|
-
##
|
|
18
|
+
## ✨ Features
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
- Com o docker instalado na máquina ([saiba mais](https://docs.docker.com/get-docker/)), rode o comando:
|
|
20
|
+
### 🚀 Automatic Setup
|
|
19
21
|
|
|
22
|
+
The extension **automatically** creates all necessary collections, fields and relations upon installation!
|
|
23
|
+
|
|
24
|
+
**No manual configuration required:**
|
|
25
|
+
|
|
26
|
+
- ✅ `inframe` collection to manage content
|
|
27
|
+
- ✅ `languages` collection for languages
|
|
28
|
+
- ✅ `inframe_translations` collection for translations
|
|
29
|
+
- ✅ Folder system for organization
|
|
30
|
+
- ✅ All fields and relations configured
|
|
31
|
+
|
|
32
|
+
**How it works:**
|
|
33
|
+
|
|
34
|
+
1. Install the extension
|
|
35
|
+
2. Restart Directus
|
|
36
|
+
3. Done! Start using immediately
|
|
37
|
+
|
|
38
|
+
### 🔄 Navigation Persistence
|
|
39
|
+
|
|
40
|
+
Resume exactly where you left off:
|
|
41
|
+
|
|
42
|
+
- 💾 Automatically saves your last view
|
|
43
|
+
- 🔖 Restores state when returning to the module
|
|
44
|
+
- 🚀 Works even after closing/reopening browser
|
|
45
|
+
- ⚡ Zero performance impact
|
|
46
|
+
|
|
47
|
+
## 📦 Installation
|
|
48
|
+
|
|
49
|
+
### Via NPM
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npm install directus-extension-inframe
|
|
20
53
|
```
|
|
21
|
-
|
|
54
|
+
|
|
55
|
+
### Via PNPM
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pnpm add directus-extension-inframe
|
|
22
59
|
```
|
|
23
60
|
|
|
24
|
-
|
|
25
|
-
|
|
61
|
+
### After installation
|
|
62
|
+
|
|
63
|
+
1. Restart the Directus server
|
|
64
|
+
2. Access the admin panel
|
|
65
|
+
3. The "Reports" module will be available in the sidebar
|
|
66
|
+
|
|
67
|
+
## 💡 How to Use
|
|
68
|
+
|
|
69
|
+
### 1. Access the module
|
|
70
|
+
|
|
71
|
+
In the Directus sidebar, click "Reports" (document icon).
|
|
72
|
+
|
|
73
|
+
### 2. Create a new item
|
|
74
|
+
|
|
75
|
+
1. Click "Create new"
|
|
76
|
+
2. Fill in the fields:
|
|
77
|
+
- **URL**: Link to the content to be displayed in the iframe
|
|
78
|
+
- **Status**: Published, Draft or Archived
|
|
79
|
+
- **Icon**: Choose a Material Design icon
|
|
80
|
+
- **Thumbnail**: Preview image (optional)
|
|
81
|
+
3. Add translations for different languages (optional)
|
|
82
|
+
4. Save
|
|
83
|
+
|
|
84
|
+
### 3. View
|
|
85
|
+
|
|
86
|
+
The content will be displayed in the iframe within the Directus panel, allowing direct interaction.
|
|
87
|
+
|
|
88
|
+
## ⚙️ Docker Configuration (Optional)
|
|
89
|
+
|
|
90
|
+
If you use Docker, configure CSP to allow iframes:
|
|
26
91
|
|
|
27
92
|
```yaml
|
|
28
|
-
|
|
93
|
+
environment:
|
|
94
|
+
CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC: "'self' https://your-domain.com"
|
|
29
95
|
```
|
|
96
|
+
|
|
97
|
+
> [!WARNING] Avoid using `'*'` in production. Specify only trusted domains.
|
|
98
|
+
|
|
99
|
+
## 🔒 Security
|
|
100
|
+
|
|
101
|
+
- Configure CSP (Content Security Policy) properly
|
|
102
|
+
- List only trusted domains for iframes
|
|
103
|
+
- Use HTTPS in production
|
|
104
|
+
- Review user permissions in Directus
|
|
105
|
+
|
|
106
|
+
## 🌍 Compatibility
|
|
107
|
+
|
|
108
|
+
Tested and compatible with:
|
|
109
|
+
|
|
110
|
+
- **Directus 9.x**: 9.22.4, 9.23.1, 9.24.0
|
|
111
|
+
- **Directus 10.x**: 10.8.3
|
|
112
|
+
- **Directus 11.x**: 11.13.1 and newer versions
|
|
113
|
+
|
|
114
|
+
## 🐛 Known Issues
|
|
115
|
+
|
|
116
|
+
- Some websites block iframe display by policy (X-Frame-Options)
|
|
117
|
+
- HTTPS content cannot be displayed in HTTP Directus
|
|
118
|
+
|
|
119
|
+
## 🤝 Contributing
|
|
120
|
+
|
|
121
|
+
Contributions are welcome! See our [Contributing Guide](CONTRIBUTING.md) for details about:
|
|
122
|
+
|
|
123
|
+
- How to set up the development environment
|
|
124
|
+
- Running tests
|
|
125
|
+
- Submitting Pull Requests
|
|
126
|
+
- Code standards
|
|
127
|
+
|
|
128
|
+
## 📝 License
|
|
129
|
+
|
|
130
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
131
|
+
|
|
132
|
+
## 👥 Authors
|
|
133
|
+
|
|
134
|
+
- **Sidarta Veloso** - [GitHub](https://github.com/sidartaveloso) |
|
|
135
|
+
[LinkedIn](https://www.linkedin.com/in/sidartaveloso)
|
|
136
|
+
- **Fernando Gatti** - [GitHub](https://github.com/gattifernando) |
|
|
137
|
+
[LinkedIn](https://www.linkedin.com/in/gattifernando/)
|
|
138
|
+
|
|
139
|
+
## 🏢 Organization
|
|
140
|
+
|
|
141
|
+
[Devix Tecnologia Ltda.](https://github.com/devix-tecnologia)
|
package/dist/api.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=["interface","display","layout","module","panel","theme"],n=["hook","endpoint"],t=["operation"];function i(e,n,t){function i(t,i){var o;Object.defineProperty(t,"_zod",{value:t._zod??{},enumerable:!1}),(o=t._zod).traits??(o.traits=new Set),t._zod.traits.add(e),n(t,i);for(const e in a.prototype)e in t||Object.defineProperty(t,e,{value:a.prototype[e].bind(t)});t._zod.constr=a,t._zod.def=i}const o=t?.Parent??Object;class r extends o{}function a(e){var n;const o=t?.Parent?new r:this;i(o,e),(n=o._zod).deferred??(n.deferred=[]);for(const e of o._zod.deferred)e();return o}return Object.defineProperty(r,"name",{value:e}),Object.defineProperty(a,"init",{value:i}),Object.defineProperty(a,Symbol.hasInstance,{value:n=>!!(t?.Parent&&n instanceof t.Parent)||n?._zod?.traits?.has(e)}),Object.defineProperty(a,"name",{value:e}),a}class o extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class r extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}const a={};function s(e){return a}function l(e,n){return"bigint"==typeof n?n.toString():n}function c(e){return{get value(){{const n=e();return Object.defineProperty(this,"value",{value:n}),n}}}}function u(e){return null==e}function d(e){const n=e.startsWith("^")?1:0,t=e.endsWith("$")?e.length-1:e.length;return e.slice(n,t)}const f=Symbol("evaluating");function p(e,n,t){let i;Object.defineProperty(e,n,{get(){if(i!==f)return void 0===i&&(i=f,i=t()),i},set(t){Object.defineProperty(e,n,{value:t})},configurable:!0})}function _(e,n,t){Object.defineProperty(e,n,{value:t,writable:!0,enumerable:!0,configurable:!0})}function m(...e){const n={};for(const t of e){const e=Object.getOwnPropertyDescriptors(t);Object.assign(n,e)}return Object.defineProperties({},n)}function h(e){return JSON.stringify(e)}const g="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function y(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}const v=c(()=>{if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function w(e){if(!1===y(e))return!1;const n=e.constructor;if(void 0===n)return!0;const t=n.prototype;return!1!==y(t)&&!1!==Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")}function z(e){return w(e)?{...e}:Array.isArray(e)?[...e]:e}const b=new Set(["string","number","symbol"]);function k(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $(e,n,t){const i=new e._zod.constr(n??e._zod.def);return n&&!t?.parent||(i._zod.parent=e),i}function x(e){const n=e;if(!n)return{};if("string"==typeof n)return{error:()=>n};if(void 0!==n?.message){if(void 0!==n?.error)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,"string"==typeof n.error?{...n,error:()=>n.error}:n}function E(e,n=0){if(!0===e.aborted)return!0;for(let t=n;t<e.issues.length;t++)if(!0!==e.issues[t]?.continue)return!0;return!1}function Z(e,n){return n.map(n=>{var t;return(t=n).path??(t.path=[]),n.path.unshift(e),n})}function P(e){return"string"==typeof e?e:e?.message}function T(e,n,t){const i={...e,path:e.path??[]};if(!e.message){const o=P(e.inst?._zod.def?.error?.(e))??P(n?.error?.(e))??P(t.customError?.(e))??P(t.localeError?.(e))??"Invalid input";i.message=o}return delete i.inst,delete i.continue,n?.reportInput||delete i.input,i}function A(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function O(...e){const[n,t,i]=e;return"string"==typeof n?{message:n,code:"custom",input:t,inst:i}:{...n}}const F=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,l,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},j=i("$ZodError",F),S=i("$ZodError",F,{Parent:Error});const I=e=>(n,t,i,r)=>{const a=i?Object.assign(i,{async:!1}):{async:!1},l=n._zod.run({value:t,issues:[]},a);if(l instanceof Promise)throw new o;if(l.issues.length){const n=new(r?.Err??e)(l.issues.map(e=>T(e,a,s())));throw g(n,r?.callee),n}return l.value},C=e=>async(n,t,i,o)=>{const r=i?Object.assign(i,{async:!0}):{async:!0};let a=n._zod.run({value:t,issues:[]},r);if(a instanceof Promise&&(a=await a),a.issues.length){const n=new(o?.Err??e)(a.issues.map(e=>T(e,r,s())));throw g(n,o?.callee),n}return a.value},R=e=>(n,t,i)=>{const r=i?{...i,async:!1}:{async:!1},a=n._zod.run({value:t,issues:[]},r);if(a instanceof Promise)throw new o;return a.issues.length?{success:!1,error:new(e??j)(a.issues.map(e=>T(e,r,s())))}:{success:!0,data:a.value}},D=R(S),U=e=>async(n,t,i)=>{const o=i?Object.assign(i,{async:!0}):{async:!0};let r=n._zod.run({value:t,issues:[]},o);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new e(r.issues.map(e=>T(e,o,s())))}:{success:!0,data:r.value}},q=U(S),N=e=>(n,t,i)=>{const o=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return I(e)(n,t,o)},L=e=>(n,t,i)=>I(e)(n,t,i),W=e=>async(n,t,i)=>{const o=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return C(e)(n,t,o)},V=e=>async(n,t,i)=>C(e)(n,t,i),J=e=>(n,t,i)=>{const o=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return R(e)(n,t,o)},M=e=>(n,t,i)=>R(e)(n,t,i),B=e=>async(n,t,i)=>{const o=i?Object.assign(i,{direction:"backward"}):{direction:"backward"};return U(e)(n,t,o)},K=e=>async(n,t,i)=>U(e)(n,t,i),G=/^[cC][^\s-]{8,}$/,H=/^[0-9a-z]+$/,Y=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Q=/^[0-9a-vA-V]{20}$/,X=/^[A-Za-z0-9]{27}$/,ee=/^[a-zA-Z0-9_-]{21}$/,ne=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,te=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ie=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,oe=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;const re=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ae=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,se=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,le=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ce=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,ue=/^[A-Za-z0-9_-]*$/,de=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,fe=/^\+(?:[0-9]){6,14}[0-9]$/,pe="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",_e=new RegExp(`^${pe}$`);function me(e){const n="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${n}`:0===e.precision?`${n}:[0-5]\\d`:`${n}:[0-5]\\d\\.\\d{${e.precision}}`:`${n}(?::[0-5]\\d(?:\\.\\d+)?)?`}const he=/^(?:true|false)$/i,ge=/^[^A-Z]*$/,ye=/^[^a-z]*$/,ve=i("$ZodCheck",(e,n)=>{var t;e._zod??(e._zod={}),e._zod.def=n,(t=e._zod).onattach??(t.onattach=[])}),we=i("$ZodCheckMaxLength",(e,n)=>{var t;ve.init(e,n),(t=e._zod.def).when??(t.when=e=>{const n=e.value;return!u(n)&&void 0!==n.length}),e._zod.onattach.push(e=>{const t=e._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<t&&(e._zod.bag.maximum=n.maximum)}),e._zod.check=t=>{const i=t.value;if(i.length<=n.maximum)return;const o=A(i);t.issues.push({origin:o,code:"too_big",maximum:n.maximum,inclusive:!0,input:i,inst:e,continue:!n.abort})}}),ze=i("$ZodCheckMinLength",(e,n)=>{var t;ve.init(e,n),(t=e._zod.def).when??(t.when=e=>{const n=e.value;return!u(n)&&void 0!==n.length}),e._zod.onattach.push(e=>{const t=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>t&&(e._zod.bag.minimum=n.minimum)}),e._zod.check=t=>{const i=t.value;if(i.length>=n.minimum)return;const o=A(i);t.issues.push({origin:o,code:"too_small",minimum:n.minimum,inclusive:!0,input:i,inst:e,continue:!n.abort})}}),be=i("$ZodCheckLengthEquals",(e,n)=>{var t;ve.init(e,n),(t=e._zod.def).when??(t.when=e=>{const n=e.value;return!u(n)&&void 0!==n.length}),e._zod.onattach.push(e=>{const t=e._zod.bag;t.minimum=n.length,t.maximum=n.length,t.length=n.length}),e._zod.check=t=>{const i=t.value,o=i.length;if(o===n.length)return;const r=A(i),a=o>n.length;t.issues.push({origin:r,...a?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},inclusive:!0,exact:!0,input:t.value,inst:e,continue:!n.abort})}}),ke=i("$ZodCheckStringFormat",(e,n)=>{var t,i;ve.init(e,n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.format=n.format,n.pattern&&(t.patterns??(t.patterns=new Set),t.patterns.add(n.pattern))}),n.pattern?(t=e._zod).check??(t.check=t=>{n.pattern.lastIndex=0,n.pattern.test(t.value)||t.issues.push({origin:"string",code:"invalid_format",format:n.format,input:t.value,...n.pattern?{pattern:n.pattern.toString()}:{},inst:e,continue:!n.abort})}):(i=e._zod).check??(i.check=()=>{})}),$e=i("$ZodCheckRegex",(e,n)=>{ke.init(e,n),e._zod.check=t=>{n.pattern.lastIndex=0,n.pattern.test(t.value)||t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:n.pattern.toString(),inst:e,continue:!n.abort})}}),xe=i("$ZodCheckLowerCase",(e,n)=>{n.pattern??(n.pattern=ge),ke.init(e,n)}),Ee=i("$ZodCheckUpperCase",(e,n)=>{n.pattern??(n.pattern=ye),ke.init(e,n)}),Ze=i("$ZodCheckIncludes",(e,n)=>{ve.init(e,n);const t=k(n.includes),i=new RegExp("number"==typeof n.position?`^.{${n.position}}${t}`:t);n.pattern=i,e._zod.onattach.push(e=>{const n=e._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(i)}),e._zod.check=t=>{t.value.includes(n.includes,n.position)||t.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:n.includes,input:t.value,inst:e,continue:!n.abort})}}),Pe=i("$ZodCheckStartsWith",(e,n)=>{ve.init(e,n);const t=new RegExp(`^${k(n.prefix)}.*`);n.pattern??(n.pattern=t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(t)}),e._zod.check=t=>{t.value.startsWith(n.prefix)||t.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:n.prefix,input:t.value,inst:e,continue:!n.abort})}}),Te=i("$ZodCheckEndsWith",(e,n)=>{ve.init(e,n);const t=new RegExp(`.*${k(n.suffix)}$`);n.pattern??(n.pattern=t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.patterns??(n.patterns=new Set),n.patterns.add(t)}),e._zod.check=t=>{t.value.endsWith(n.suffix)||t.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:n.suffix,input:t.value,inst:e,continue:!n.abort})}}),Ae=i("$ZodCheckOverwrite",(e,n)=>{ve.init(e,n),e._zod.check=e=>{e.value=n.tx(e.value)}});class Oe{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const n=e.split("\n").filter(e=>e),t=Math.min(...n.map(e=>e.length-e.trimStart().length)),i=n.map(e=>e.slice(t)).map(e=>" ".repeat(2*this.indent)+e);for(const e of i)this.content.push(e)}compile(){const e=Function,n=this?.args;return new e(...n,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}const Fe={major:4,minor:1,patch:12},je=i("$ZodType",(e,n)=>{var t;e??(e={}),e._zod.def=n,e._zod.bag=e._zod.bag||{},e._zod.version=Fe;const i=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&i.unshift(e);for(const n of i)for(const t of n._zod.onattach)t(e);if(0===i.length)(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const n=(e,n,t)=>{let i,r=E(e);for(const a of n){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;const n=e.issues.length,s=a._zod.check(e);if(s instanceof Promise&&!1===t?.async)throw new o;if(i||s instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await s;e.issues.length!==n&&(r||(r=E(e,n)))});else{if(e.issues.length===n)continue;r||(r=E(e,n))}}return i?i.then(()=>e):e},t=(t,r,a)=>{if(E(t))return t.aborted=!0,t;const s=n(r,i,a);if(s instanceof Promise){if(!1===a.async)throw new o;return s.then(n=>e._zod.parse(n,a))}return e._zod.parse(s,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if("backward"===a.direction){const n=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return n instanceof Promise?n.then(e=>t(e,r,a)):t(n,r,a)}const s=e._zod.parse(r,a);if(s instanceof Promise){if(!1===a.async)throw new o;return s.then(e=>n(e,i,a))}return n(s,i,a)}}e["~standard"]={validate:n=>{try{const t=D(e,n);return t.success?{value:t.data}:{issues:t.error?.issues}}catch(t){return q(e,n).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}}),Se=i("$ZodString",(e,n)=>{var t;je.init(e,n),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??(t=e._zod.bag,new RegExp(`^${t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*"}$`)),e._zod.parse=(t,i)=>{if(n.coerce)try{t.value=String(t.value)}catch(i){}return"string"==typeof t.value||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:e}),t}}),Ie=i("$ZodStringFormat",(e,n)=>{ke.init(e,n),Se.init(e,n)}),Ce=i("$ZodGUID",(e,n)=>{n.pattern??(n.pattern=te),Ie.init(e,n)}),Re=i("$ZodUUID",(e,n)=>{if(n.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[n.version];if(void 0===e)throw new Error(`Invalid UUID version: "${n.version}"`);n.pattern??(n.pattern=ie(e))}else n.pattern??(n.pattern=ie());Ie.init(e,n)}),De=i("$ZodEmail",(e,n)=>{n.pattern??(n.pattern=oe),Ie.init(e,n)}),Ue=i("$ZodURL",(e,n)=>{Ie.init(e,n),e._zod.check=t=>{try{const i=t.value.trim(),o=new URL(i);return n.hostname&&(n.hostname.lastIndex=0,n.hostname.test(o.hostname)||t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:de.source,input:t.value,inst:e,continue:!n.abort})),n.protocol&&(n.protocol.lastIndex=0,n.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:n.protocol.source,input:t.value,inst:e,continue:!n.abort})),void(n.normalize?t.value=o.href:t.value=i)}catch(i){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:e,continue:!n.abort})}}}),qe=i("$ZodEmoji",(e,n)=>{n.pattern??(n.pattern=new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Ie.init(e,n)}),Ne=i("$ZodNanoID",(e,n)=>{n.pattern??(n.pattern=ee),Ie.init(e,n)}),Le=i("$ZodCUID",(e,n)=>{n.pattern??(n.pattern=G),Ie.init(e,n)}),We=i("$ZodCUID2",(e,n)=>{n.pattern??(n.pattern=H),Ie.init(e,n)}),Ve=i("$ZodULID",(e,n)=>{n.pattern??(n.pattern=Y),Ie.init(e,n)}),Je=i("$ZodXID",(e,n)=>{n.pattern??(n.pattern=Q),Ie.init(e,n)}),Me=i("$ZodKSUID",(e,n)=>{n.pattern??(n.pattern=X),Ie.init(e,n)}),Be=i("$ZodISODateTime",(e,n)=>{n.pattern??(n.pattern=function(e){const n=me({precision:e.precision}),t=["Z"];e.local&&t.push(""),e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const i=`${n}(?:${t.join("|")})`;return new RegExp(`^${pe}T(?:${i})$`)}(n)),Ie.init(e,n)}),Ke=i("$ZodISODate",(e,n)=>{n.pattern??(n.pattern=_e),Ie.init(e,n)}),Ge=i("$ZodISOTime",(e,n)=>{n.pattern??(n.pattern=new RegExp(`^${me(n)}$`)),Ie.init(e,n)}),He=i("$ZodISODuration",(e,n)=>{n.pattern??(n.pattern=ne),Ie.init(e,n)}),Ye=i("$ZodIPv4",(e,n)=>{n.pattern??(n.pattern=re),Ie.init(e,n),e._zod.onattach.push(e=>{e._zod.bag.format="ipv4"})}),Qe=i("$ZodIPv6",(e,n)=>{n.pattern??(n.pattern=ae),Ie.init(e,n),e._zod.onattach.push(e=>{e._zod.bag.format="ipv6"}),e._zod.check=t=>{try{new URL(`http://[${t.value}]`)}catch{t.issues.push({code:"invalid_format",format:"ipv6",input:t.value,inst:e,continue:!n.abort})}}}),Xe=i("$ZodCIDRv4",(e,n)=>{n.pattern??(n.pattern=se),Ie.init(e,n)}),en=i("$ZodCIDRv6",(e,n)=>{n.pattern??(n.pattern=le),Ie.init(e,n),e._zod.check=t=>{const i=t.value.split("/");try{if(2!==i.length)throw new Error;const[e,n]=i;if(!n)throw new Error;const t=Number(n);if(`${t}`!==n)throw new Error;if(t<0||t>128)throw new Error;new URL(`http://[${e}]`)}catch{t.issues.push({code:"invalid_format",format:"cidrv6",input:t.value,inst:e,continue:!n.abort})}}});function nn(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const tn=i("$ZodBase64",(e,n)=>{n.pattern??(n.pattern=ce),Ie.init(e,n),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding="base64"}),e._zod.check=t=>{nn(t.value)||t.issues.push({code:"invalid_format",format:"base64",input:t.value,inst:e,continue:!n.abort})}});const on=i("$ZodBase64URL",(e,n)=>{n.pattern??(n.pattern=ue),Ie.init(e,n),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding="base64url"}),e._zod.check=t=>{(function(e){if(!ue.test(e))return!1;const n=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return nn(n.padEnd(4*Math.ceil(n.length/4),"="))})(t.value)||t.issues.push({code:"invalid_format",format:"base64url",input:t.value,inst:e,continue:!n.abort})}}),rn=i("$ZodE164",(e,n)=>{n.pattern??(n.pattern=fe),Ie.init(e,n)});const an=i("$ZodJWT",(e,n)=>{Ie.init(e,n),e._zod.check=t=>{(function(e,n=null){try{const t=e.split(".");if(3!==t.length)return!1;const[i]=t;if(!i)return!1;const o=JSON.parse(atob(i));return!("typ"in o&&"JWT"!==o?.typ||!o.alg||n&&(!("alg"in o)||o.alg!==n))}catch{return!1}})(t.value,n.alg)||t.issues.push({code:"invalid_format",format:"jwt",input:t.value,inst:e,continue:!n.abort})}}),sn=i("$ZodBoolean",(e,n)=>{je.init(e,n),e._zod.pattern=he,e._zod.parse=(t,i)=>{if(n.coerce)try{t.value=Boolean(t.value)}catch(e){}const o=t.value;return"boolean"==typeof o||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),t}}),ln=i("$ZodUnknown",(e,n)=>{je.init(e,n),e._zod.parse=e=>e}),cn=i("$ZodNever",(e,n)=>{je.init(e,n),e._zod.parse=(n,t)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function un(e,n,t){e.issues.length&&n.issues.push(...Z(t,e.issues)),n.value[t]=e.value}const dn=i("$ZodArray",(e,n)=>{je.init(e,n),e._zod.parse=(t,i)=>{const o=t.value;if(!Array.isArray(o))return t.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),t;t.value=Array(o.length);const r=[];for(let e=0;e<o.length;e++){const a=o[e],s=n.element._zod.run({value:a,issues:[]},i);s instanceof Promise?r.push(s.then(n=>un(n,t,e))):un(s,t,e)}return r.length?Promise.all(r).then(()=>t):t}});function fn(e,n,t,i){e.issues.length&&n.issues.push(...Z(t,e.issues)),void 0===e.value?t in i&&(n.value[t]=void 0):n.value[t]=e.value}function pn(e){const n=Object.keys(e.shape);for(const t of n)if(!e.shape?.[t]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${t}": expected a Zod schema`);const t=(i=e.shape,Object.keys(i).filter(e=>"optional"===i[e]._zod.optin&&"optional"===i[e]._zod.optout));var i;return{...e,keys:n,keySet:new Set(n),numKeys:n.length,optionalKeys:new Set(t)}}function _n(e,n,t,i,o,r){const a=[],s=o.keySet,l=o.catchall._zod,c=l.def.type;for(const o of Object.keys(n)){if(s.has(o))continue;if("never"===c){a.push(o);continue}const r=l.run({value:n[o],issues:[]},i);r instanceof Promise?e.push(r.then(e=>fn(e,t,o,n))):fn(r,t,o,n)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:n,inst:r}),e.length?Promise.all(e).then(()=>t):t}const mn=i("$ZodObject",(e,n)=>{je.init(e,n);const t=Object.getOwnPropertyDescriptor(n,"shape");if(!t?.get){const e=n.shape;Object.defineProperty(n,"shape",{get:()=>{const t={...e};return Object.defineProperty(n,"shape",{value:t}),t}})}const i=c(()=>pn(n));p(e._zod,"propValues",()=>{const e=n.shape,t={};for(const n in e){const i=e[n]._zod;if(i.values){t[n]??(t[n]=new Set);for(const e of i.values)t[n].add(e)}}return t});const o=y,r=n.catchall;let a;e._zod.parse=(n,t)=>{a??(a=i.value);const s=n.value;if(!o(s))return n.issues.push({expected:"object",code:"invalid_type",input:s,inst:e}),n;n.value={};const l=[],c=a.shape;for(const e of a.keys){const i=c[e]._zod.run({value:s[e],issues:[]},t);i instanceof Promise?l.push(i.then(t=>fn(t,n,e,s))):fn(i,n,e,s)}return r?_n(l,s,n,t,i.value,e):l.length?Promise.all(l).then(()=>n):n}}),hn=i("$ZodObjectJIT",(e,n)=>{mn.init(e,n);const t=e._zod.parse,i=c(()=>pn(n));let o;const r=y,s=!a.jitless,l=s&&v.value,u=n.catchall;let d;e._zod.parse=(a,c)=>{d??(d=i.value);const f=a.value;return r(f)?s&&l&&!1===c?.async&&!0!==c.jitless?(o||(o=(e=>{const n=new Oe(["shape","payload","ctx"]),t=i.value,o=e=>{const n=h(e);return`shape[${n}]._zod.run({ value: input[${n}], issues: [] }, ctx)`};n.write("const input = payload.value;");const r=Object.create(null);let a=0;for(const e of t.keys)r[e]="key_"+a++;n.write("const newResult = {};");for(const e of t.keys){const t=r[e],i=h(e);n.write(`const ${t} = ${o(e)};`),n.write(`\n if (${t}.issues.length) {\n payload.issues = payload.issues.concat(${t}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n \n \n if (${t}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${t}.value;\n }\n \n `)}n.write("payload.value = newResult;"),n.write("return payload;");const s=n.compile();return(n,t)=>s(e,n,t)})(n.shape)),a=o(a,c),u?_n([],f,a,c,d,e):a):t(a,c):(a.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),a)}});function gn(e,n,t,i){for(const t of e)if(0===t.issues.length)return n.value=t.value,n;const o=e.filter(e=>!E(e));return 1===o.length?(n.value=o[0].value,o[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:t,errors:e.map(e=>e.issues.map(e=>T(e,i,s())))}),n)}const yn=i("$ZodUnion",(e,n)=>{je.init(e,n),p(e._zod,"optin",()=>n.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),p(e._zod,"optout",()=>n.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),p(e._zod,"values",()=>{if(n.options.every(e=>e._zod.values))return new Set(n.options.flatMap(e=>Array.from(e._zod.values)))}),p(e._zod,"pattern",()=>{if(n.options.every(e=>e._zod.pattern)){const e=n.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>d(e.source)).join("|")})$`)}});const t=1===n.options.length,i=n.options[0]._zod.run;e._zod.parse=(o,r)=>{if(t)return i(o,r);let a=!1;const s=[];for(const e of n.options){const n=e._zod.run({value:o.value,issues:[]},r);if(n instanceof Promise)s.push(n),a=!0;else{if(0===n.issues.length)return n;s.push(n)}}return a?Promise.all(s).then(n=>gn(n,o,e,r)):gn(s,o,e,r)}}),vn=i("$ZodIntersection",(e,n)=>{je.init(e,n),e._zod.parse=(e,t)=>{const i=e.value,o=n.left._zod.run({value:i,issues:[]},t),r=n.right._zod.run({value:i,issues:[]},t);return o instanceof Promise||r instanceof Promise?Promise.all([o,r]).then(([n,t])=>zn(e,n,t)):zn(e,o,r)}});function wn(e,n){if(e===n)return{valid:!0,data:e};if(e instanceof Date&&n instanceof Date&&+e===+n)return{valid:!0,data:e};if(w(e)&&w(n)){const t=Object.keys(n),i=Object.keys(e).filter(e=>-1!==t.indexOf(e)),o={...e,...n};for(const t of i){const i=wn(e[t],n[t]);if(!i.valid)return{valid:!1,mergeErrorPath:[t,...i.mergeErrorPath]};o[t]=i.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const t=[];for(let i=0;i<e.length;i++){const o=wn(e[i],n[i]);if(!o.valid)return{valid:!1,mergeErrorPath:[i,...o.mergeErrorPath]};t.push(o.data)}return{valid:!0,data:t}}return{valid:!1,mergeErrorPath:[]}}function zn(e,n,t){if(n.issues.length&&e.issues.push(...n.issues),t.issues.length&&e.issues.push(...t.issues),E(e))return e;const i=wn(n.value,t.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}const bn=i("$ZodRecord",(e,n)=>{je.init(e,n),e._zod.parse=(t,i)=>{const o=t.value;if(!w(o))return t.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),t;const r=[];if(n.keyType._zod.values){const a=n.keyType._zod.values;t.value={};for(const e of a)if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){const a=n.valueType._zod.run({value:o[e],issues:[]},i);a instanceof Promise?r.push(a.then(n=>{n.issues.length&&t.issues.push(...Z(e,n.issues)),t.value[e]=n.value})):(a.issues.length&&t.issues.push(...Z(e,a.issues)),t.value[e]=a.value)}let s;for(const e in o)a.has(e)||(s=s??[],s.push(e));s&&s.length>0&&t.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:s})}else{t.value={};for(const a of Reflect.ownKeys(o)){if("__proto__"===a)continue;const l=n.keyType._zod.run({value:a,issues:[]},i);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(l.issues.length){t.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(e=>T(e,i,s())),input:a,path:[a],inst:e}),t.value[l.value]=l.value;continue}const c=n.valueType._zod.run({value:o[a],issues:[]},i);c instanceof Promise?r.push(c.then(e=>{e.issues.length&&t.issues.push(...Z(a,e.issues)),t.value[l.value]=e.value})):(c.issues.length&&t.issues.push(...Z(a,c.issues)),t.value[l.value]=c.value)}}return r.length?Promise.all(r).then(()=>t):t}}),kn=i("$ZodEnum",(e,n)=>{je.init(e,n);const t=function(e){const n=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,t])=>-1===n.indexOf(+e)).map(([e,n])=>n)}(n.entries),i=new Set(t);e._zod.values=i,e._zod.pattern=new RegExp(`^(${t.filter(e=>b.has(typeof e)).map(e=>"string"==typeof e?k(e):e.toString()).join("|")})$`),e._zod.parse=(n,o)=>{const r=n.value;return i.has(r)||n.issues.push({code:"invalid_value",values:t,input:r,inst:e}),n}}),$n=i("$ZodLiteral",(e,n)=>{if(je.init(e,n),0===n.values.length)throw new Error("Cannot create literal schema with no valid values");e._zod.values=new Set(n.values),e._zod.pattern=new RegExp(`^(${n.values.map(e=>"string"==typeof e?k(e):e?k(e.toString()):String(e)).join("|")})$`),e._zod.parse=(t,i)=>{const o=t.value;return e._zod.values.has(o)||t.issues.push({code:"invalid_value",values:n.values,input:o,inst:e}),t}}),xn=i("$ZodTransform",(e,n)=>{je.init(e,n),e._zod.parse=(t,i)=>{if("backward"===i.direction)throw new r(e.constructor.name);const a=n.transform(t.value,t);if(i.async){return(a instanceof Promise?a:Promise.resolve(a)).then(e=>(t.value=e,t))}if(a instanceof Promise)throw new o;return t.value=a,t}});function En(e,n){return e.issues.length&&void 0===n?{issues:[],value:void 0}:e}const Zn=i("$ZodOptional",(e,n)=>{je.init(e,n),e._zod.optin="optional",e._zod.optout="optional",p(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),p(e._zod,"pattern",()=>{const e=n.innerType._zod.pattern;return e?new RegExp(`^(${d(e.source)})?$`):void 0}),e._zod.parse=(e,t)=>{if("optional"===n.innerType._zod.optin){const i=n.innerType._zod.run(e,t);return i instanceof Promise?i.then(n=>En(n,e.value)):En(i,e.value)}return void 0===e.value?e:n.innerType._zod.run(e,t)}}),Pn=i("$ZodNullable",(e,n)=>{je.init(e,n),p(e._zod,"optin",()=>n.innerType._zod.optin),p(e._zod,"optout",()=>n.innerType._zod.optout),p(e._zod,"pattern",()=>{const e=n.innerType._zod.pattern;return e?new RegExp(`^(${d(e.source)}|null)$`):void 0}),p(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(e,t)=>null===e.value?e:n.innerType._zod.run(e,t)}),Tn=i("$ZodDefault",(e,n)=>{je.init(e,n),e._zod.optin="optional",p(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(e,t)=>{if("backward"===t.direction)return n.innerType._zod.run(e,t);if(void 0===e.value)return e.value=n.defaultValue,e;const i=n.innerType._zod.run(e,t);return i instanceof Promise?i.then(e=>An(e,n)):An(i,n)}});function An(e,n){return void 0===e.value&&(e.value=n.defaultValue),e}const On=i("$ZodPrefault",(e,n)=>{je.init(e,n),e._zod.optin="optional",p(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(e,t)=>("backward"===t.direction||void 0===e.value&&(e.value=n.defaultValue),n.innerType._zod.run(e,t))}),Fn=i("$ZodNonOptional",(e,n)=>{je.init(e,n),p(e._zod,"values",()=>{const e=n.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(t,i)=>{const o=n.innerType._zod.run(t,i);return o instanceof Promise?o.then(n=>jn(n,e)):jn(o,e)}});function jn(e,n){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:n}),e}const Sn=i("$ZodCatch",(e,n)=>{je.init(e,n),p(e._zod,"optin",()=>n.innerType._zod.optin),p(e._zod,"optout",()=>n.innerType._zod.optout),p(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(e,t)=>{if("backward"===t.direction)return n.innerType._zod.run(e,t);const i=n.innerType._zod.run(e,t);return i instanceof Promise?i.then(i=>(e.value=i.value,i.issues.length&&(e.value=n.catchValue({...e,error:{issues:i.issues.map(e=>T(e,t,s()))},input:e.value}),e.issues=[]),e)):(e.value=i.value,i.issues.length&&(e.value=n.catchValue({...e,error:{issues:i.issues.map(e=>T(e,t,s()))},input:e.value}),e.issues=[]),e)}}),In=i("$ZodPipe",(e,n)=>{je.init(e,n),p(e._zod,"values",()=>n.in._zod.values),p(e._zod,"optin",()=>n.in._zod.optin),p(e._zod,"optout",()=>n.out._zod.optout),p(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(e,t)=>{if("backward"===t.direction){const i=n.out._zod.run(e,t);return i instanceof Promise?i.then(e=>Cn(e,n.in,t)):Cn(i,n.in,t)}const i=n.in._zod.run(e,t);return i instanceof Promise?i.then(e=>Cn(e,n.out,t)):Cn(i,n.out,t)}});function Cn(e,n,t){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},t)}const Rn=i("$ZodReadonly",(e,n)=>{je.init(e,n),p(e._zod,"propValues",()=>n.innerType._zod.propValues),p(e._zod,"values",()=>n.innerType._zod.values),p(e._zod,"optin",()=>n.innerType._zod.optin),p(e._zod,"optout",()=>n.innerType._zod.optout),e._zod.parse=(e,t)=>{if("backward"===t.direction)return n.innerType._zod.run(e,t);const i=n.innerType._zod.run(e,t);return i instanceof Promise?i.then(Dn):Dn(i)}});function Dn(e){return e.value=Object.freeze(e.value),e}const Un=i("$ZodCustom",(e,n)=>{ve.init(e,n),je.init(e,n),e._zod.parse=(e,n)=>e,e._zod.check=t=>{const i=t.value,o=n.fn(i);if(o instanceof Promise)return o.then(n=>qn(n,t,i,e));qn(o,t,i,e)}});function qn(e,n,t,i){if(!e){const e={code:"custom",input:t,inst:i,path:[...i._zod.def.path??[]],continue:!i._zod.def.abort};i._zod.def.params&&(e.params=i._zod.def.params),n.issues.push(O(e))}}class Nn{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...n){const t=n[0];if(this._map.set(e,t),t&&"object"==typeof t&&"id"in t){if(this._idmap.has(t.id))throw new Error(`ID ${t.id} already exists in the registry`);this._idmap.set(t.id,e)}return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const n=this._map.get(e);return n&&"object"==typeof n&&"id"in n&&this._idmap.delete(n.id),this._map.delete(e),this}get(e){const n=e._zod.parent;if(n){const t={...this.get(n)??{}};delete t.id;const i={...t,...this._map.get(e)};return Object.keys(i).length?i:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function Ln(){return new Nn}const Wn=Ln();function Vn(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...x(n)})}function Jn(e,n){return new we({check:"max_length",...x(n),maximum:e})}function Mn(e,n){return new ze({check:"min_length",...x(n),minimum:e})}function Bn(e,n){return new be({check:"length_equals",...x(n),length:e})}function Kn(e){return new Ae({check:"overwrite",tx:e})}function Gn(e){const n=function(e,n){const t=new ve({check:"custom",...x(n)});return t._zod.check=e,t}(t=>(t.addIssue=e=>{if("string"==typeof e)t.issues.push(O(e,t.value,n._zod.def));else{const i=e;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=t.value),i.inst??(i.inst=n),i.continue??(i.continue=!n._zod.def.abort),t.issues.push(O(i))}},e(t.value,t)));return n}const Hn=i("ZodISODateTime",(e,n)=>{Be.init(e,n),zt.init(e,n)});function Yn(e){return function(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...x(n)})}(Hn,e)}const Qn=i("ZodISODate",(e,n)=>{Ke.init(e,n),zt.init(e,n)});function Xn(e){return function(e,n){return new e({type:"string",format:"date",check:"string_format",...x(n)})}(Qn,e)}const et=i("ZodISOTime",(e,n)=>{Ge.init(e,n),zt.init(e,n)});function nt(e){return function(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...x(n)})}(et,e)}const tt=i("ZodISODuration",(e,n)=>{He.init(e,n),zt.init(e,n)});function it(e){return function(e,n){return new e({type:"string",format:"duration",check:"string_format",...x(n)})}(tt,e)}const ot=i("ZodError",(e,n)=>{j.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>function(e,n=e=>e.message){const t={_errors:[]},i=e=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>i({issues:e}));else if("invalid_key"===o.code)i({issues:o.issues});else if("invalid_element"===o.code)i({issues:o.issues});else if(0===o.path.length)t._errors.push(n(o));else{let e=t,i=0;for(;i<o.path.length;){const t=o.path[i];i===o.path.length-1?(e[t]=e[t]||{_errors:[]},e[t]._errors.push(n(o))):e[t]=e[t]||{_errors:[]},e=e[t],i++}}};return i(e),t}(e,n)},flatten:{value:n=>function(e,n=e=>e.message){const t={},i=[];for(const o of e.issues)o.path.length>0?(t[o.path[0]]=t[o.path[0]]||[],t[o.path[0]].push(n(o))):i.push(n(o));return{formErrors:i,fieldErrors:t}}(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,l,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,l,2)}},isEmpty:{get:()=>0===e.issues.length}})},{Parent:Error}),rt=I(ot),at=C(ot),st=R(ot),lt=U(ot),ct=N(ot),ut=L(ot),dt=W(ot),ft=V(ot),pt=J(ot),_t=M(ot),mt=B(ot),ht=K(ot),gt=i("ZodType",(e,n)=>(je.init(e,n),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...t)=>e.clone(m(n,{checks:[...n.checks??[],...t.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]})),e.clone=(n,t)=>$(e,n,t),e.brand=()=>e,e.register=(n,t)=>(n.add(e,t),e),e.parse=(n,t)=>rt(e,n,t,{callee:e.parse}),e.safeParse=(n,t)=>st(e,n,t),e.parseAsync=async(n,t)=>at(e,n,t,{callee:e.parseAsync}),e.safeParseAsync=async(n,t)=>lt(e,n,t),e.spa=e.safeParseAsync,e.encode=(n,t)=>ct(e,n,t),e.decode=(n,t)=>ut(e,n,t),e.encodeAsync=async(n,t)=>dt(e,n,t),e.decodeAsync=async(n,t)=>ft(e,n,t),e.safeEncode=(n,t)=>pt(e,n,t),e.safeDecode=(n,t)=>_t(e,n,t),e.safeEncodeAsync=async(n,t)=>mt(e,n,t),e.safeDecodeAsync=async(n,t)=>ht(e,n,t),e.refine=(n,t)=>e.check(function(e,n={}){return function(e,n,t){return new e({type:"custom",check:"custom",fn:n,...x(t)})}(yi,e,n)}(n,t)),e.superRefine=n=>e.check(Gn(n)),e.overwrite=n=>e.check(Kn(n)),e.optional=()=>li(e),e.nullable=()=>ui(e),e.nullish=()=>li(ui(e)),e.nonoptional=n=>function(e,n){return new pi({type:"nonoptional",innerType:e,...x(n)})}(e,n),e.array=()=>Kt(e),e.or=n=>Qt([e,n]),e.and=n=>new Xt({type:"intersection",left:e,right:n}),e.transform=n=>hi(e,new ai({type:"transform",transform:n})),e.default=n=>{return t=n,new di({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():z(t)}});var t},e.prefault=n=>{return t=n,new fi({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():z(t)}});var t},e.catch=n=>{return new _i({type:"catch",innerType:e,catchValue:"function"==typeof(t=n)?t:()=>t});var t},e.pipe=n=>hi(e,n),e.readonly=()=>new gi({type:"readonly",innerType:e}),e.describe=n=>{const t=e.clone();return Wn.add(t,{description:n}),t},Object.defineProperty(e,"description",{get:()=>Wn.get(e)?.description,configurable:!0}),e.meta=(...n)=>{if(0===n.length)return Wn.get(e);const t=e.clone();return Wn.add(t,n[0]),t},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),yt=i("_ZodString",(e,n)=>{Se.init(e,n),gt.init(e,n);const t=e._zod.bag;e.format=t.format??null,e.minLength=t.minimum??null,e.maxLength=t.maximum??null,e.regex=(...n)=>e.check(function(e,n){return new $e({check:"string_format",format:"regex",...x(n),pattern:e})}(...n)),e.includes=(...n)=>e.check(function(e,n){return new Ze({check:"string_format",format:"includes",...x(n),includes:e})}(...n)),e.startsWith=(...n)=>e.check(function(e,n){return new Pe({check:"string_format",format:"starts_with",...x(n),prefix:e})}(...n)),e.endsWith=(...n)=>e.check(function(e,n){return new Te({check:"string_format",format:"ends_with",...x(n),suffix:e})}(...n)),e.min=(...n)=>e.check(Mn(...n)),e.max=(...n)=>e.check(Jn(...n)),e.length=(...n)=>e.check(Bn(...n)),e.nonempty=(...n)=>e.check(Mn(1,...n)),e.lowercase=n=>e.check(function(e){return new xe({check:"string_format",format:"lowercase",...x(e)})}(n)),e.uppercase=n=>e.check(function(e){return new Ee({check:"string_format",format:"uppercase",...x(e)})}(n)),e.trim=()=>e.check(Kn(e=>e.trim())),e.normalize=(...n)=>e.check(function(e){return Kn(n=>n.normalize(e))}(...n)),e.toLowerCase=()=>e.check(Kn(e=>e.toLowerCase())),e.toUpperCase=()=>e.check(Kn(e=>e.toUpperCase()))}),vt=i("ZodString",(e,n)=>{Se.init(e,n),yt.init(e,n),e.email=n=>e.check(function(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...x(n)})}(bt,n)),e.url=n=>e.check(function(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...x(n)})}(xt,n)),e.jwt=n=>e.check(function(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...x(n)})}(qt,n)),e.emoji=n=>e.check(function(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...x(n)})}(Et,n)),e.guid=n=>e.check(Vn(kt,n)),e.uuid=n=>e.check(function(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...x(n)})}($t,n)),e.uuidv4=n=>e.check(function(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...x(n)})}($t,n)),e.uuidv6=n=>e.check(function(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...x(n)})}($t,n)),e.uuidv7=n=>e.check(function(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...x(n)})}($t,n)),e.nanoid=n=>e.check(function(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...x(n)})}(Zt,n)),e.guid=n=>e.check(Vn(kt,n)),e.cuid=n=>e.check(function(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...x(n)})}(Pt,n)),e.cuid2=n=>e.check(function(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...x(n)})}(Tt,n)),e.ulid=n=>e.check(function(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...x(n)})}(At,n)),e.base64=n=>e.check(function(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...x(n)})}(Rt,n)),e.base64url=n=>e.check(function(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...x(n)})}(Dt,n)),e.xid=n=>e.check(function(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...x(n)})}(Ot,n)),e.ksuid=n=>e.check(function(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...x(n)})}(Ft,n)),e.ipv4=n=>e.check(function(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...x(n)})}(jt,n)),e.ipv6=n=>e.check(function(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...x(n)})}(St,n)),e.cidrv4=n=>e.check(function(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...x(n)})}(It,n)),e.cidrv6=n=>e.check(function(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...x(n)})}(Ct,n)),e.e164=n=>e.check(function(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...x(n)})}(Ut,n)),e.datetime=n=>e.check(Yn(n)),e.date=n=>e.check(Xn(n)),e.time=n=>e.check(nt(n)),e.duration=n=>e.check(it(n))});function wt(e){return function(e,n){return new e({type:"string",...x(n)})}(vt,e)}const zt=i("ZodStringFormat",(e,n)=>{Ie.init(e,n),yt.init(e,n)}),bt=i("ZodEmail",(e,n)=>{De.init(e,n),zt.init(e,n)}),kt=i("ZodGUID",(e,n)=>{Ce.init(e,n),zt.init(e,n)}),$t=i("ZodUUID",(e,n)=>{Re.init(e,n),zt.init(e,n)}),xt=i("ZodURL",(e,n)=>{Ue.init(e,n),zt.init(e,n)}),Et=i("ZodEmoji",(e,n)=>{qe.init(e,n),zt.init(e,n)}),Zt=i("ZodNanoID",(e,n)=>{Ne.init(e,n),zt.init(e,n)}),Pt=i("ZodCUID",(e,n)=>{Le.init(e,n),zt.init(e,n)}),Tt=i("ZodCUID2",(e,n)=>{We.init(e,n),zt.init(e,n)}),At=i("ZodULID",(e,n)=>{Ve.init(e,n),zt.init(e,n)}),Ot=i("ZodXID",(e,n)=>{Je.init(e,n),zt.init(e,n)}),Ft=i("ZodKSUID",(e,n)=>{Me.init(e,n),zt.init(e,n)}),jt=i("ZodIPv4",(e,n)=>{Ye.init(e,n),zt.init(e,n)}),St=i("ZodIPv6",(e,n)=>{Qe.init(e,n),zt.init(e,n)}),It=i("ZodCIDRv4",(e,n)=>{Xe.init(e,n),zt.init(e,n)}),Ct=i("ZodCIDRv6",(e,n)=>{en.init(e,n),zt.init(e,n)}),Rt=i("ZodBase64",(e,n)=>{tn.init(e,n),zt.init(e,n)}),Dt=i("ZodBase64URL",(e,n)=>{on.init(e,n),zt.init(e,n)}),Ut=i("ZodE164",(e,n)=>{rn.init(e,n),zt.init(e,n)}),qt=i("ZodJWT",(e,n)=>{an.init(e,n),zt.init(e,n)}),Nt=i("ZodBoolean",(e,n)=>{sn.init(e,n),gt.init(e,n)});function Lt(e){return function(e,n){return new e({type:"boolean",...x(n)})}(Nt,e)}const Wt=i("ZodUnknown",(e,n)=>{ln.init(e,n),gt.init(e,n)});function Vt(){return new Wt({type:"unknown"})}const Jt=i("ZodNever",(e,n)=>{cn.init(e,n),gt.init(e,n)});function Mt(e){return function(e,n){return new e({type:"never",...x(n)})}(Jt,e)}const Bt=i("ZodArray",(e,n)=>{dn.init(e,n),gt.init(e,n),e.element=n.element,e.min=(n,t)=>e.check(Mn(n,t)),e.nonempty=n=>e.check(Mn(1,n)),e.max=(n,t)=>e.check(Jn(n,t)),e.length=(n,t)=>e.check(Bn(n,t)),e.unwrap=()=>e.element});function Kt(e,n){return function(e,n,t){return new e({type:"array",element:n,...x(t)})}(Bt,e,n)}const Gt=i("ZodObject",(e,n)=>{hn.init(e,n),gt.init(e,n),p(e,"shape",()=>n.shape),e.keyof=()=>ii(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Vt()}),e.loose=()=>e.clone({...e._zod.def,catchall:Vt()}),e.strict=()=>e.clone({...e._zod.def,catchall:Mt()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>function(e,n){if(!w(n))throw new Error("Invalid input to extend: expected a plain object");const t=e._zod.def.checks;if(t&&t.length>0)throw new Error("Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.");const i=m(e._zod.def,{get shape(){const t={...e._zod.def.shape,...n};return _(this,"shape",t),t},checks:[]});return $(e,i)}(e,n),e.safeExtend=n=>function(e,n){if(!w(n))throw new Error("Invalid input to safeExtend: expected a plain object");const t={...e._zod.def,get shape(){const t={...e._zod.def.shape,...n};return _(this,"shape",t),t},checks:e._zod.def.checks};return $(e,t)}(e,n),e.merge=n=>function(e,n){const t=m(e._zod.def,{get shape(){const t={...e._zod.def.shape,...n._zod.def.shape};return _(this,"shape",t),t},get catchall(){return n._zod.def.catchall},checks:[]});return $(e,t)}(e,n),e.pick=n=>function(e,n){const t=e._zod.def;return $(e,m(e._zod.def,{get shape(){const e={};for(const i in n){if(!(i in t.shape))throw new Error(`Unrecognized key: "${i}"`);n[i]&&(e[i]=t.shape[i])}return _(this,"shape",e),e},checks:[]}))}(e,n),e.omit=n=>function(e,n){const t=e._zod.def,i=m(e._zod.def,{get shape(){const i={...e._zod.def.shape};for(const e in n){if(!(e in t.shape))throw new Error(`Unrecognized key: "${e}"`);n[e]&&delete i[e]}return _(this,"shape",i),i},checks:[]});return $(e,i)}(e,n),e.partial=(...n)=>function(e,n,t){const i=m(n._zod.def,{get shape(){const i=n._zod.def.shape,o={...i};if(t)for(const n in t){if(!(n in i))throw new Error(`Unrecognized key: "${n}"`);t[n]&&(o[n]=e?new e({type:"optional",innerType:i[n]}):i[n])}else for(const n in i)o[n]=e?new e({type:"optional",innerType:i[n]}):i[n];return _(this,"shape",o),o},checks:[]});return $(n,i)}(si,e,n[0]),e.required=(...n)=>function(e,n,t){const i=m(n._zod.def,{get shape(){const i=n._zod.def.shape,o={...i};if(t)for(const n in t){if(!(n in o))throw new Error(`Unrecognized key: "${n}"`);t[n]&&(o[n]=new e({type:"nonoptional",innerType:i[n]}))}else for(const n in i)o[n]=new e({type:"nonoptional",innerType:i[n]});return _(this,"shape",o),o},checks:[]});return $(n,i)}(pi,e,n[0])});function Ht(e,n){const t={type:"object",shape:e??{},...x(n)};return new Gt(t)}const Yt=i("ZodUnion",(e,n)=>{yn.init(e,n),gt.init(e,n),e.options=n.options});function Qt(e,n){return new Yt({type:"union",options:e,...x(n)})}const Xt=i("ZodIntersection",(e,n)=>{vn.init(e,n),gt.init(e,n)});const ei=i("ZodRecord",(e,n)=>{bn.init(e,n),gt.init(e,n),e.keyType=n.keyType,e.valueType=n.valueType});function ni(e,n,t){return new ei({type:"record",keyType:e,valueType:n,...x(t)})}const ti=i("ZodEnum",(e,n)=>{kn.init(e,n),gt.init(e,n),e.enum=n.entries,e.options=Object.values(n.entries);const t=new Set(Object.keys(n.entries));e.extract=(e,i)=>{const o={};for(const i of e){if(!t.has(i))throw new Error(`Key ${i} not found in enum`);o[i]=n.entries[i]}return new ti({...n,checks:[],...x(i),entries:o})},e.exclude=(e,i)=>{const o={...n.entries};for(const n of e){if(!t.has(n))throw new Error(`Key ${n} not found in enum`);delete o[n]}return new ti({...n,checks:[],...x(i),entries:o})}});function ii(e,n){const t=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new ti({type:"enum",entries:t,...x(n)})}const oi=i("ZodLiteral",(e,n)=>{$n.init(e,n),gt.init(e,n),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function ri(e,n){return new oi({type:"literal",values:Array.isArray(e)?e:[e],...x(n)})}const ai=i("ZodTransform",(e,n)=>{xn.init(e,n),gt.init(e,n),e._zod.parse=(t,i)=>{if("backward"===i.direction)throw new r(e.constructor.name);t.addIssue=i=>{if("string"==typeof i)t.issues.push(O(i,t.value,n));else{const n=i;n.fatal&&(n.continue=!1),n.code??(n.code="custom"),n.input??(n.input=t.value),n.inst??(n.inst=e),t.issues.push(O(n))}};const o=n.transform(t.value,t);return o instanceof Promise?o.then(e=>(t.value=e,t)):(t.value=o,t)}});const si=i("ZodOptional",(e,n)=>{Zn.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType});function li(e){return new si({type:"optional",innerType:e})}const ci=i("ZodNullable",(e,n)=>{Pn.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType});function ui(e){return new ci({type:"nullable",innerType:e})}const di=i("ZodDefault",(e,n)=>{Tn.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});const fi=i("ZodPrefault",(e,n)=>{On.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType});const pi=i("ZodNonOptional",(e,n)=>{Fn.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType});const _i=i("ZodCatch",(e,n)=>{Sn.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});const mi=i("ZodPipe",(e,n)=>{In.init(e,n),gt.init(e,n),e.in=n.in,e.out=n.out});function hi(e,n){return new mi({type:"pipe",in:e,out:n})}const gi=i("ZodReadonly",(e,n)=>{Rn.init(e,n),gt.init(e,n),e.unwrap=()=>e._zod.def.innerType});const yi=i("ZodCustom",(e,n)=>{Un.init(e,n),gt.init(e,n)});const vi="directus:extension",wi=Ht({app:wt(),api:wt()}),zi=Ht({request:li(Ht({urls:Kt(wt()),methods:Kt(Qt([ri("GET"),ri("POST"),ri("PATCH"),ri("PUT"),ri("DELETE")]))})),log:li(Ht({})),sleep:li(Ht({}))}),bi=li(Ht({enabled:Lt(),requestedScopes:zi})),ki=Qt([Ht({type:ii(n),name:wt(),source:wt()}),Ht({type:ii(e),name:wt(),source:wt()}),Ht({type:ii(t),name:wt(),source:wi})]),$i=Ht({host:wt(),hidden:Lt().optional()}),xi=Ht({type:ii(e),path:wt(),source:wt()}),Ei=Ht({type:ii(n),path:wt(),source:wt(),sandbox:bi}),Zi=Ht({type:ii(t),path:wi,source:wi,sandbox:bi}),Pi=Ht({type:ri("bundle"),partial:Lt().optional(),path:wi,entries:Kt(ki)});Kt(ki);const Ti=$i.and(Qt([xi,Ei,Zi,Pi]));Ht({name:wt(),version:wt(),type:Qt([ri("module"),ri("commonjs")]).optional(),description:wt().optional(),icon:wt().optional(),dependencies:ni(wt(),wt()).optional(),devDependencies:ni(wt(),wt()).optional(),[vi]:Ti});var Ai={collections:[{collection:"languages",meta:{collection:"languages",icon:null,note:null,display_template:null,hidden:!1,singleton:!1,translations:null,archive_field:null,archive_app_filter:!0,archive_value:null,unarchive_value:null,sort_field:null,accountability:"all",color:null,item_duplication_fields:null,sort:1,group:"inframe_pasta",collapse:"open",preview_url:null,versioning:!1},schema:{}},{collection:"inframe",meta:{collection:"inframe",icon:null,note:null,display_template:null,hidden:!1,singleton:!1,translations:null,archive_field:"status",archive_app_filter:!0,archive_value:"archived",unarchive_value:"draft",sort_field:"sort",accountability:"all",color:null,item_duplication_fields:null,sort:2,group:"inframe_pasta",collapse:"open",preview_url:null,versioning:!1},schema:{}},{collection:"inframe_translations",meta:{collection:"inframe_translations",icon:"import_export",note:null,display_template:null,hidden:!0,singleton:!1,translations:null,archive_field:null,archive_app_filter:!0,archive_value:null,unarchive_value:null,sort_field:null,accountability:"all",color:null,item_duplication_fields:null,sort:3,group:"inframe_pasta",collapse:"open",preview_url:null,versioning:!1},schema:{}},{collection:"inframe_pasta",meta:{collection:"inframe_pasta",icon:"folder",note:null,display_template:null,hidden:!1,singleton:!1,translations:null,archive_field:null,archive_app_filter:!0,archive_value:null,unarchive_value:null,sort_field:null,accountability:"all",color:null,item_duplication_fields:null,sort:16,group:null,collapse:"open",preview_url:null,versioning:!1},schema:null}],fields:[{collection:"languages",field:"code",type:"string",schema:{name:"code",table:"languages",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!1,is_unique:!0,is_indexed:!1,is_primary_key:!0,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"languages",field:"code",special:null,interface:"input",options:null,display:null,display_options:null,readonly:!1,hidden:!1,sort:1,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"languages",field:"name",type:"string",schema:{name:"name",table:"languages",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"languages",field:"name",special:null,interface:"input",options:null,display:null,display_options:null,readonly:!1,hidden:!1,sort:2,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"languages",field:"direction",type:"string",schema:{name:"direction",table:"languages",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"languages",field:"direction",special:null,interface:"select-dropdown",options:{choices:[{text:"ltr",value:"ltr"},{text:"rtl",value:"rtl"}]},display:null,display_options:null,readonly:!1,hidden:!1,sort:3,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe",field:"id",type:"uuid",schema:{name:"id",table:"inframe",data_type:"uuid",default_value:null,generation_expression:null,max_length:null,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!1,is_unique:!0,is_indexed:!1,is_primary_key:!0,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe",field:"id",special:["uuid"],interface:"input",options:null,display:null,display_options:null,readonly:!0,hidden:!0,sort:1,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe",field:"sort",type:"integer",schema:{name:"sort",table:"inframe",data_type:"integer",default_value:null,generation_expression:null,max_length:null,numeric_precision:32,numeric_scale:0,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe",field:"sort",special:null,interface:"input",options:null,display:null,display_options:null,readonly:!1,hidden:!0,sort:2,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe",field:"status",type:"string",schema:{name:"status",table:"inframe",data_type:"character varying",default_value:"draft",generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!1,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe",field:"status",special:null,interface:"select-dropdown",options:{choices:[{text:"Publicado",value:"published",color:"var(--theme--primary)"},{text:"Rascunho",value:"draft",color:"var(--theme--foreground)"},{text:"Arquivado",value:"archived",color:"var(--theme--warning)"}]},display:"labels",display_options:{showAsDot:!0,choices:[{text:"Publicado",value:"published",color:"var(--theme--primary)",foreground:"var(--theme--primary)",background:"var(--theme--primary-background)"},{text:"Rascunho",value:"draft",color:"var(--theme--foreground)",foreground:"var(--theme--foreground)",background:"var(--theme--background-normal)"},{text:"Arquivado",value:"archived",color:"var(--theme--warning)",foreground:"var(--theme--warning)",background:"var(--theme--warning-background)"}]},readonly:!1,hidden:!1,sort:3,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe",field:"icon",type:"string",schema:{name:"icon",table:"inframe",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe",field:"icon",special:null,interface:"select-icon",options:null,display:null,display_options:null,readonly:!1,hidden:!1,sort:4,width:"half",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe",field:"url",type:"string",schema:{name:"url",table:"inframe",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe",field:"url",special:null,interface:"input",options:{iconLeft:"link"},display:null,display_options:null,readonly:!1,hidden:!1,sort:5,width:"half",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe",field:"thumbnail",type:"uuid",schema:{name:"thumbnail",table:"inframe",data_type:"uuid",default_value:null,generation_expression:null,max_length:null,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:"public",foreign_key_table:"directus_files",foreign_key_column:"id",comment:null},meta:{collection:"inframe",field:"thumbnail",special:["file"],interface:"file-image",options:{crop:!1},display:"image",display_options:{},readonly:!1,hidden:!1,sort:6,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe_translations",field:"id",type:"integer",schema:{name:"id",table:"inframe_translations",data_type:"integer",default_value:"nextval('inframe_translations_id_seq'::regclass)",generation_expression:null,max_length:null,numeric_precision:32,numeric_scale:0,is_generated:!1,is_nullable:!1,is_unique:!0,is_indexed:!1,is_primary_key:!0,has_auto_increment:!0,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe_translations",field:"id",special:null,interface:null,options:null,display:null,display_options:null,readonly:!1,hidden:!0,sort:1,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe_translations",field:"inframe_id",type:"uuid",schema:{name:"inframe_id",table:"inframe_translations",data_type:"uuid",default_value:null,generation_expression:null,max_length:null,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:"public",foreign_key_table:"inframe",foreign_key_column:"id",comment:null},meta:{collection:"inframe_translations",field:"inframe_id",special:null,interface:null,options:null,display:null,display_options:null,readonly:!1,hidden:!0,sort:2,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe_translations",field:"languages_code",type:"string",schema:{name:"languages_code",table:"inframe_translations",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:"public",foreign_key_table:"languages",foreign_key_column:"code",comment:null},meta:{collection:"inframe_translations",field:"languages_code",special:null,interface:null,options:null,display:null,display_options:null,readonly:!1,hidden:!0,sort:3,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}},{collection:"inframe_translations",field:"title",type:"string",schema:{name:"title",table:"inframe_translations",data_type:"character varying",default_value:null,generation_expression:null,max_length:255,numeric_precision:null,numeric_scale:null,is_generated:!1,is_nullable:!0,is_unique:!1,is_indexed:!1,is_primary_key:!1,has_auto_increment:!1,foreign_key_schema:null,foreign_key_table:null,foreign_key_column:null,comment:null},meta:{collection:"inframe_translations",field:"title",special:null,interface:"input",options:null,display:null,display_options:null,readonly:!1,hidden:!1,sort:4,width:"full",translations:null,note:null,conditions:null,required:!1,group:null,validation:null,validation_message:null}}],relations:[{collection:"inframe",field:"thumbnail",related_collection:"directus_files",schema:{constraint_name:"inframe_thumbnail_foreign",table:"inframe",column:"thumbnail",foreign_key_schema:"public",foreign_key_table:"directus_files",foreign_key_column:"id",on_update:"NO ACTION",on_delete:"SET NULL"},meta:{many_collection:"inframe",many_field:"thumbnail",one_collection:"directus_files",one_field:null,one_collection_field:null,one_allowed_collections:null,junction_field:null,sort_field:null,one_deselect_action:"nullify"}},{collection:"inframe_translations",field:"languages_code",related_collection:"languages",schema:{constraint_name:"inframe_translations_languages_code_foreign",table:"inframe_translations",column:"languages_code",foreign_key_schema:"public",foreign_key_table:"languages",foreign_key_column:"code",on_update:"NO ACTION",on_delete:"SET NULL"},meta:{many_collection:"inframe_translations",many_field:"languages_code",one_collection:"languages",one_field:null,one_collection_field:null,one_allowed_collections:null,junction_field:"inframe_id",sort_field:null,one_deselect_action:"nullify"}},{collection:"inframe_translations",field:"inframe_id",related_collection:"inframe",schema:{constraint_name:"inframe_translations_inframe_id_foreign",table:"inframe_translations",column:"inframe_id",foreign_key_schema:"public",foreign_key_table:"inframe",foreign_key_column:"id",on_update:"NO ACTION",on_delete:"SET NULL"},meta:{many_collection:"inframe_translations",many_field:"inframe_id",one_collection:"inframe",one_field:"translations",one_collection_field:null,one_allowed_collections:null,junction_field:"languages_code",sort_field:null,one_deselect_action:"nullify"}}]};async function Oi({services:e,logger:n,database:t,getSchema:i}){const{CollectionsService:o,RelationsService:r,FieldsService:a}=e;n.info("[inFrame Extension] Starting collections configuration...");const s=new o({schema:await i(),knex:t});let l=[];try{l=await s.readByQuery()}catch(e){n.warn(`[inFrame Extension] Error listing collections: ${e.message}`),l=[]}const c=new Set(l.map(e=>e.collection));let u=0,d=0,f=0;const p=[...Ai.collections].sort((e,n)=>{const t=!e.meta?.group,i=!n.meta?.group;return t&&!i?-1:!t&&i?1:0}),_=p.map(e=>e.collection);n.info(`[inFrame Extension] 📋 Collections to be created (if they don't exist): ${_.join(", ")}`);for(const e of p)if(c.has(e.collection))n.info(`[inFrame Extension] ⏭️ Collection ${e.collection} already exists, checking fields...`);else try{n.info(`[inFrame Extension] 🔨 Creating collection: ${e.collection}`);const t=Ai.fields.filter(n=>n.collection===e.collection);await s.createOne({collection:e.collection,meta:e.meta,schema:e.schema||null}),u++,n.info(`[inFrame Extension] ✅ Collection ${e.collection} created (${t.length} field(s) will be created later)`)}catch(t){n.error(`[inFrame Extension] ❌ Error creating collection ${e.collection}: ${t.message}`)}if(u>0){n.info(`[inFrame Extension] ${u} collection(s) created`),n.info("[inFrame Extension] 🧹 Waiting for schema propagation in Directus..."),await new Promise(e=>setTimeout(e,3e3));for(let e=0;e<3;e++)await i({accountability:null,database:t}),await new Promise(e=>setTimeout(e,2e3));n.info("[inFrame Extension] ✅ Schema synchronized (waited 9 seconds)"),n.info("[inFrame Extension] 🔨 Creating fields...");const e=new a({schema:await i({accountability:null,database:t}),knex:t});for(const i of Ai.fields)try{if(!await t.select("*").from("directus_fields").where("collection",i.collection).where("field",i.field).first()){n.info(`[inFrame Extension] 🔨 Creating field: ${i.collection}.${i.field}`);const t={field:i.field,type:i.type,meta:i.meta};null!==i.schema&&(t.schema=i.schema),await e.createField(i.collection,t),d++,n.info(`[inFrame Extension] ✅ Field ${i.collection}.${i.field} created`)}}catch(e){n.error(`[inFrame Extension] ❌ Error creating field ${i.collection}.${i.field}: ${e.message}`)}n.info(`[inFrame Extension] ✅ ${d} field(s) created`)}const m=await i({accountability:null,database:t});n.info("[inFrame Extension] 📋 Verifying relations...");const h=Object.keys(m.collections||{}),g=h.filter(e=>e.startsWith("inframe")||"languages"===e);n.info(`[inFrame Extension] 🔍 Collections found in schema: ${g.join(", ")||"none"}`),n.info(`[inFrame Extension] 📊 Total collections in schema: ${h.length}`);const y=new r({schema:m,knex:t});for(const e of Ai.relations)try{if(!e.collection.startsWith("directus_")){if(!await t.select("collection").from("directus_collections").where("collection",e.collection).first()){n.warn(`[inFrame Extension] ⚠️ Collection ${e.collection} not found in database, skipping relation`);continue}}if(e.related_collection&&!e.related_collection.startsWith("directus_")){if(!await t.select("collection").from("directus_collections").where("collection",e.related_collection).first()){n.warn(`[inFrame Extension] ⚠️ Related collection ${e.related_collection} not found in database, skipping relation`);continue}}if(await t.select("*").from("directus_relations").where("many_collection",e.collection).where("many_field",e.field).first()){n.info(`[inFrame Extension] ⏭️ Relation ${e.collection}.${e.field} already exists`);continue}n.info(`[inFrame Extension] 🔗 Creating relation: ${e.collection}.${e.field}`);try{await t("directus_relations").insert({many_collection:e.meta.many_collection,many_field:e.meta.many_field,one_collection:e.meta.one_collection,one_field:e.meta.one_field,one_collection_field:e.meta.one_collection_field,one_allowed_collections:e.meta.one_allowed_collections?JSON.stringify(e.meta.one_allowed_collections):null,junction_field:e.meta.junction_field,sort_field:e.meta.sort_field,one_deselect_action:e.meta.one_deselect_action||"nullify"}),f++,n.info(`[inFrame Extension] ✅ Relation ${e.collection}.${e.field} created directly in database`)}catch(t){n.warn(`[inFrame Extension] Direct attempt failed: ${t.message}, trying with service...`),await y.createOne({collection:e.collection,field:e.field,related_collection:e.related_collection,meta:e.meta,schema:e.schema}),f++,n.info(`[inFrame Extension] ✅ Relation ${e.collection}.${e.field} created via service`)}}catch(t){n.error(`[inFrame Extension] ❌ Error creating relation ${e.collection}.${e.field}: ${t.message}`)}n.info(`[inFrame Extension] ✅ Configuration complete! Created: ${u} collection(s), ${d} field(s), ${f} relation(s)`);try{n.info("[inFrame Extension] 🔄 Clearing cache and updating schema..."),await i({accountability:null,database:t}),await new Promise(e=>setTimeout(e,2e3)),n.info("[inFrame Extension] ✅ Cache cleared and schema updated")}catch(e){n.warn(`[inFrame Extension] ⚠️ Error clearing cache: ${e.message}`)}}const Fi=[{name:"inframe-setup",config:({action:e,init:n},{services:t,logger:i,database:o,getSchema:r})=>{i.info("[inFrame Extension] 🔌 Hook registered, waiting for events..."),n("routes.after",async()=>{i.info("[inFrame Extension] 🚀 routes.after event triggered, running setup...");try{await Oi({services:t,logger:i,database:o,getSchema:r})}catch(e){i.error(`[inFrame Extension] Error during initial setup: ${e.message}`)}}),e("server.start",async()=>{i.info("[inFrame Extension] 🚀 server.start event triggered, running setup...");try{await Oi({services:t,logger:i,database:o,getSchema:r})}catch(e){i.error(`[inFrame Extension] Error during initial setup: ${e.message}`)}}),e("extensions.install",async({extension:e})=>{if(e?.includes("inframe")||e?.includes("@devix-tecnologia/directus-extension-inframe")){i.info("[inFrame Extension] Extension installed, configuring collections...");try{await Oi({services:t,logger:i,database:o,getSchema:r})}catch(e){i.error(`[inFrame Extension] Error during installation: ${e.message}`)}}}),e("extensions.reload",async()=>{i.info("[inFrame Extension] Verifying collections configuration...");try{await async function({logger:e,services:n,getSchema:t}){const{CollectionsService:i}=n,o=await t(),r=new i({schema:o,knex:null});try{const n=await r.readByQuery(),t=new Set(n.map(e=>e.collection)),i=Ai.collections.map(e=>e.collection),o=i.filter(e=>t.has(e)).length,a=i.length;o===a?e.info(`[inFrame Extension] All ${a} collections are configured correctly ✓`):e.warn(`[inFrame Extension] ${o}/${a} collections found. Run setup if needed.`)}catch(n){e.warn(`[inFrame Extension] Error verifying collections: ${n.message}`)}}({logger:i,services:t,getSchema:r})}catch(e){i.warn(`[inFrame Extension] Error verifying collections: ${e.message}`)}})}}],ji=[],Si=[];export{ji as endpoints,Fi as hooks,Si as operations};
|
package/dist/app.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useApi as e,defineModule as n}from"@directus/extensions-sdk";import{ref as t,defineComponent as a,resolveComponent as r,createElementBlock as i,openBlock as o,createElementVNode as s,Fragment as l,renderList as d,createVNode as c,withCtx as m,toDisplayString as u,watch as p,onMounted as f,createBlock as g,createCommentVNode as v,createSlots as h}from"vue";import{useRouter as b,useRoute as y}from"vue-router";const x=async e=>(await e.get("/users/me")).data.data.language||"en-US",w=e=>e&&0!==e.length&&e[0]&&e[0].title?e[0].title:"Item inFrame",k=()=>{const n=t([]),a=t(!1),r=e();return{items:n,loading:a,fetchItems:async()=>{a.value=!0;try{const e=await x(r),t=await r.get("/items/inframe",{params:{fields:["id","sort","status","icon","url","thumbnail","translations.languages_code","translations.title"],deep:{translations:{_filter:{languages_code:{_eq:e}}}},filter:{status:{_eq:"published"}},sort:["sort"]}});n.value=t.data}finally{a.value=!1}},getTitle:w}},_=()=>{const n=t(null),a=t(!1),r=e();return{item:n,loading:a,fetchItem:async e=>{if(e){a.value=!0;try{const t=await x(r),a=await r.get(`/items/inframe/${e}`,{params:{fields:["id","status","sort","icon","url","thumbnail","translations.languages_code","translations.title"],deep:{translations:{_filter:{languages_code:{_eq:t}}}},filter:{status:{_eq:"published"}}}});n.value=a.data}finally{a.value=!1}}},getTitle:w}};var I=a({name:"NavMenu",props:{items:{type:Array,required:!0}},setup(){const{getTitle:e}=k();return{getTitle:e}}}),T=[],q=[];function R(e,n){if(e&&"undefined"!=typeof document){var t,a=!0===n.prepend?"prepend":"append",r=!0===n.singleTag,i="string"==typeof n.container?document.querySelector(n.container):document.getElementsByTagName("head")[0];if(r){var o=T.indexOf(i);-1===o&&(o=T.push(i)-1,q[o]={}),t=q[o]&&q[o][a]?q[o][a]:q[o][a]=s()}else t=s();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function s(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),n.attributes)for(var t=Object.keys(n.attributes),r=0;r<t.length;r++)e.setAttribute(t[r],n.attributes[t[r]]);var o="prepend"===a?"afterbegin":"beforeend";return i.insertAdjacentElement(o,e),e}}R("\n.nav-menu[data-v-33faf0a5] {\n margin-top: 20px;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n.menu-list[data-v-33faf0a5] {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n.menu-item[data-v-33faf0a5] {\n margin-bottom: 8px;\n}\n.menu-link[data-v-33faf0a5] {\n display: flex;\n align-items: center;\n text-decoration: none;\n color: var(--theme--foreground-accent);\n font-size: 16px;\n padding: 12px 20px;\n transition:\n background-color 0.3s ease,\n color 0.3s ease;\n}\n.menu-link[data-v-33faf0a5]:hover {\n background-color: var(--theme--primary-light);\n color: var(--theme--primary);\n}\n.menu-link.active-link[data-v-33faf0a5] {\n background-color: var(--theme--primary);\n color: var(--white);\n font-weight: bold;\n}\n.menu-icon[data-v-33faf0a5] {\n margin-right: 10px;\n font-size: 20px;\n}\n.menu-link span[data-v-33faf0a5] {\n font-weight: 500;\n}\n",{});var S=(e,n)=>{const t=e.__vccOpts||e;for(const[e,a]of n)t[e]=a;return t};const A={class:"nav-menu"},z={class:"menu-list"},N={class:"menu-link-text"};var j=S(I,[["render",function(e,n,t,a,p,f){const g=r("v-icon"),v=r("router-link");return o(),i("nav",A,[s("ul",z,[(o(!0),i(l,null,d(e.items,n=>(o(),i("li",{key:n.id,class:"menu-item"},[c(v,{to:`/inframe/${n.id}`,class:"menu-link","active-class":"active-link"},{default:m(()=>[c(g,{class:"menu-icon",name:n.icon},null,8,["name"]),s("span",N,u(e.getTitle(n.translations)),1)]),_:2},1032,["to"])]))),128))])])}],["__scopeId","data-v-33faf0a5"]]);const C="directus_inframe_last_route",O="lastRoute",M=()=>{const e=b(),n=y(),a=t(!1),r=t=>{const a=t||n.params.id;if(a)try{localStorage.setItem(C,a);const t={...n.query};t[O]=a,e.replace({path:n.path,query:t}).catch(()=>{})}catch{}},i=()=>{try{const e=n.query[O];if(e)return e;const t=localStorage.getItem(C);if(t)return t}catch{}return null};return{saveCurrentRoute:r,getLastRoute:i,restoreLastRoute:async()=>{const n=i();if(!n)return!1;try{return a.value=!0,await e.push(`/inframe/${n}`),!0}catch{return!1}finally{a.value=!1}},clearSavedRoute:()=>{try{localStorage.removeItem(C);const t={...n.query};delete t[O],e.replace({path:n.path,query:t}).catch(()=>{})}catch{}},startAutoSave:()=>{p(()=>n.params.id,e=>{!a.value&&e&&r(e)},{immediate:!1})},isRestoringRoute:a}};var D=a({name:"InframeList",components:{NavMenu:j},setup(){const{items:e,fetchItems:n,getTitle:t}=k(),a=b(),{restoreLastRoute:r,startAutoSave:i}=M();return f(async()=>{await n(),i();if(!await r()&&e.value&&e.value.length>0){const n=e.value[0];n&&a.push(`/inframe/${n.id}`)}}),{items:e,page_title:"Organograma",getTitle:t}}});R("\n.container[data-v-8c2be81f] {\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n padding: 20px 50px;\n}\n.card-container[data-v-8c2be81f] {\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n width: 100%;\n}\n.card[data-v-8c2be81f] {\n background-color: #ffffff;\n border-radius: 8px;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n flex: 1 1 25%;\n height: 200px;\n display: flex;\n flex-direction: column; /* Para garantir que o conteúdo não sobreponha a imagem */\n justify-content: flex-end; /* Ajusta o conteúdo para o fundo */\n align-items: center;\n text-align: center;\n overflow: hidden;\n transition:\n transform 0.3s ease,\n box-shadow 0.3s ease;\n}\n.card[data-v-8c2be81f]:hover {\n transform: translateY(-10px);\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n}\n.card-link[data-v-8c2be81f] {\n display: flex;\n flex-direction: column;\n justify-content: flex-end; /* Coloca o conteúdo no fundo do link */\n align-items: center;\n height: 100%;\n text-decoration: none; /* Remove o estilo de link */\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n padding: 0;\n width: 100%;\n}\n.card-header h3[data-v-8c2be81f] {\n margin: 0; /* Remove a margem para melhor controle de espaçamento */\n padding: 10px;\n background: var(--theme--primary);\n width: 100%;\n}\n.card-header[data-v-8c2be81f] {\n background-color: var(--theme--primary-light);\n padding: 0;\n font-size: 18px;\n font-weight: bold;\n color: var(--white);\n width: 100%;\n}\n.card-body[data-v-8c2be81f] {\n padding: 16px;\n font-size: 14px;\n color: var(--theme--foreground);\n}\n.card-body p[data-v-8c2be81f] {\n margin: 0;\n}\n",{});const E={class:"container"};var L=S(D,[["render",function(e,n,t,a,i,l){const d=r("NavMenu"),u=r("router-view"),p=r("private-view");return o(),g(p,{title:e.page_title},{navigation:m(()=>[c(d,{items:e.items},null,8,["items"])]),default:m(()=>[s("div",E,[v(" O router-view vai renderizar o conteúdo do primeiro item automaticamente "),c(u)])]),_:1},8,["title"])}],["__scopeId","data-v-8c2be81f"]]),$=a({name:"ItemDetail",components:{NavMenu:j},props:{item:{type:Object,required:!0},items:{type:Array,required:!0},loading:{type:Boolean,default:!1},title:{type:String,default:""}},setup:e=>({...e,breadcrumb:[{name:"Home",to:"/inframe"}]})});R("\n.header-bar[data-v-c21b5f60] {\n display: none !important;\n}\n[data-v-c21b5f60] .header-bar {\n display: none !important;\n}\n.container[data-v-c21b5f60] {\n margin: 20px 50px;\n}\nh2[data-v-c21b5f60] {\n color: var(--theme--foreground-accent);\n margin-bottom: 10px;\n}\np[data-v-c21b5f60] {\n font-size: 16px;\n line-height: 1.5;\n color: var(--theme--foreground-accent);\n}\n.main[data-v-c21b5f60] {\n position: relative;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n}\n.iframe-area[data-v-c21b5f60] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n overflow: hidden !important;\n}\niframe[data-v-c21b5f60] {\n width: 100%;\n height: 100%;\n border: none;\n}\n",{});const B={class:"main"},F={key:0},H={key:1},P={class:"iframe-area"},U=["src"],Y={key:2};var G=a({name:"ItemDetailRoute",components:{ItemDetail:S($,[["render",function(e,n,t,a,l,d){const u=r("v-breadcrumb"),p=r("NavMenu"),f=r("private-view");return e.item?(o(),g(f,{key:0,title:e.title},h({navigation:m(()=>[c(p,{items:e.items},null,8,["items"])]),default:m(()=>[s("div",B,[e.loading?(o(),i("div",F,[...n[0]||(n[0]=[s("p",null,"Carregando...",-1)])])):e.item?(o(),i("div",H,[s("div",P,[s("iframe",{src:e.item.url,frameborder:"0",sandbox:"allow-scripts allow-same-origin"},null,8,U)])])):(o(),i("div",Y,[...n[1]||(n[1]=[s("p",null,"Erro ao carregar dados. Tente novamente mais tarde.",-1)])]))])]),_:2},[e.breadcrumb.length>0?{name:"headline",fn:m(()=>[c(u,{items:e.breadcrumb},null,8,["items"])]),key:"0"}:void 0]),1032,["title"])):v("v-if",!0)}],["__scopeId","data-v-c21b5f60"]])},setup(){const e=y(),{items:n,fetchItems:t,getTitle:a}=k(),{item:r,loading:i,fetchItem:o}=_(),{saveCurrentRoute:s,startAutoSave:l}=M();return f(async()=>{await t();const n=e.params.id;n&&(await o(n),s(n)),l()}),p(()=>e.params.id,async e=>{e&&(await o(e),s(e))}),{item:r,items:n,loading:i,getTitle:a}}});const J=[],K=[],Q=[],V=[n({id:"inframe",name:"Relatórios",icon:"document_scanner",routes:[{path:"",props:!0,component:L},{path:":id",component:S(G,[["render",function(e,n,t,a,i,s){const l=r("ItemDetail");return o(),g(l,{item:e.item,items:e.items,loading:e.loading,title:e.getTitle(e.item?.translations||[])},null,8,["item","items","loading","title"])}]]),props:!0}]})],W=[],X=[],Z=[];export{K as displays,J as interfaces,Q as layouts,V as modules,Z as operations,W as panels,X as themes};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useApi as e,defineModule as
|
|
1
|
+
import{useApi as e,defineModule as t}from"@directus/extensions-sdk";import{ref as n,defineComponent as a,resolveComponent as r,createElementBlock as i,openBlock as o,createElementVNode as s,Fragment as l,renderList as d,createVNode as c,withCtx as m,toDisplayString as u,watch as p,onMounted as f,createBlock as g,createCommentVNode as v,createSlots as h}from"vue";import{useRouter as b,useRoute as y}from"vue-router";const x=async e=>(await e.get("/users/me")).data.data.language||"en-US",w=e=>e&&0!==e.length&&e[0]&&e[0].title?e[0].title:"Item inFrame",k=()=>{const t=n([]),a=n(!1),r=e();return{items:t,loading:a,fetchItems:async()=>{a.value=!0;try{const e=await x(r),n=await r.get("/items/inframe",{params:{fields:["id","sort","status","icon","url","thumbnail","translations.languages_code","translations.title"],deep:{translations:{_filter:{languages_code:{_eq:e}}}},filter:{status:{_eq:"published"}},sort:["sort"]}});t.value=n.data}finally{a.value=!1}},getTitle:w}},_=()=>{const t=n(null),a=n(!1),r=e();return{item:t,loading:a,fetchItem:async e=>{if(e){a.value=!0;try{const n=await x(r),a=await r.get(`/items/inframe/${e}`,{params:{fields:["id","status","sort","icon","url","thumbnail","translations.languages_code","translations.title"],deep:{translations:{_filter:{languages_code:{_eq:n}}}},filter:{status:{_eq:"published"}}}});t.value=a.data}finally{a.value=!1}}},getTitle:w}};var I=a({name:"NavMenu",props:{items:{type:Array,required:!0}},setup(){const{getTitle:e}=k();return{getTitle:e}}}),T=[],q=[];function R(e,t){if(e&&"undefined"!=typeof document){var n,a=!0===t.prepend?"prepend":"append",r=!0===t.singleTag,i="string"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName("head")[0];if(r){var o=T.indexOf(i);-1===o&&(o=T.push(i)-1,q[o]={}),n=q[o]&&q[o][a]?q[o][a]:q[o][a]=s()}else n=s();65279===e.charCodeAt(0)&&(e=e.substring(1)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(document.createTextNode(e))}function s(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),t.attributes)for(var n=Object.keys(t.attributes),r=0;r<n.length;r++)e.setAttribute(n[r],t.attributes[n[r]]);var o="prepend"===a?"afterbegin":"beforeend";return i.insertAdjacentElement(o,e),e}}R("\n.nav-menu[data-v-33faf0a5] {\n margin-top: 20px;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n.menu-list[data-v-33faf0a5] {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n.menu-item[data-v-33faf0a5] {\n margin-bottom: 8px;\n}\n.menu-link[data-v-33faf0a5] {\n display: flex;\n align-items: center;\n text-decoration: none;\n color: var(--theme--foreground-accent);\n font-size: 16px;\n padding: 12px 20px;\n transition:\n background-color 0.3s ease,\n color 0.3s ease;\n}\n.menu-link[data-v-33faf0a5]:hover {\n background-color: var(--theme--primary-light);\n color: var(--theme--primary);\n}\n.menu-link.active-link[data-v-33faf0a5] {\n background-color: var(--theme--primary);\n color: var(--white);\n font-weight: bold;\n}\n.menu-icon[data-v-33faf0a5] {\n margin-right: 10px;\n font-size: 20px;\n}\n.menu-link span[data-v-33faf0a5] {\n font-weight: 500;\n}\n",{});var S=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n};const A={class:"nav-menu"},z={class:"menu-list"},N={class:"menu-link-text"};var j=S(I,[["render",function(e,t,n,a,p,f){const g=r("v-icon"),v=r("router-link");return o(),i("nav",A,[s("ul",z,[(o(!0),i(l,null,d(e.items,t=>(o(),i("li",{key:t.id,class:"menu-item"},[c(v,{to:`/inframe/${t.id}`,class:"menu-link","active-class":"active-link"},{default:m(()=>[c(g,{class:"menu-icon",name:t.icon},null,8,["name"]),s("span",N,u(e.getTitle(t.translations)),1)]),_:2},1032,["to"])]))),128))])])}],["__scopeId","data-v-33faf0a5"]]);const C="directus_inframe_last_route",O="lastRoute",M=()=>{const e=b(),t=y(),a=n(!1),r=n=>{const a=n||t.params.id;if(a)try{localStorage.setItem(C,a);const n={...t.query};n[O]=a,e.replace({path:t.path,query:n}).catch(()=>{})}catch{}},i=()=>{try{const e=t.query[O];if(e)return e;const n=localStorage.getItem(C);if(n)return n}catch{}return null};return{saveCurrentRoute:r,getLastRoute:i,restoreLastRoute:async()=>{const t=i();if(!t)return!1;try{return a.value=!0,await e.push(`/inframe/${t}`),!0}catch{return!1}finally{a.value=!1}},clearSavedRoute:()=>{try{localStorage.removeItem(C);const n={...t.query};delete n[O],e.replace({path:t.path,query:n}).catch(()=>{})}catch{}},startAutoSave:()=>{p(()=>t.params.id,e=>{!a.value&&e&&r(e)},{immediate:!1})},isRestoringRoute:a}};var D=a({name:"InframeList",components:{NavMenu:j},setup(){const{items:e,fetchItems:t,getTitle:n}=k(),a=b(),{restoreLastRoute:r,startAutoSave:i}=M();return f(async()=>{await t(),i();if(!await r()&&e.value&&e.value.length>0){const t=e.value[0];t&&a.push(`/inframe/${t.id}`)}}),{items:e,page_title:"Organograma",getTitle:n}}});R("\n.container[data-v-b493d20e] {\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n padding: 20px 50px;\n}\n.card-container[data-v-b493d20e] {\n display: flex;\n flex-wrap: wrap;\n gap: 20px;\n width: 100%;\n}\n.card[data-v-b493d20e] {\n background-color: #ffffff;\n border-radius: 8px;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n flex: 1 1 25%;\n height: 200px;\n display: flex;\n flex-direction: column; /* Para garantir que o conteúdo não sobreponha a imagem */\n justify-content: flex-end; /* Ajusta o conteúdo para o fundo */\n align-items: center;\n text-align: center;\n overflow: hidden;\n transition:\n transform 0.3s ease,\n box-shadow 0.3s ease;\n}\n.card[data-v-b493d20e]:hover {\n transform: translateY(-10px);\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);\n}\n.card-link[data-v-b493d20e] {\n display: flex;\n flex-direction: column;\n justify-content: flex-end; /* Coloca o conteúdo no fundo do link */\n align-items: center;\n height: 100%;\n text-decoration: none; /* Remove o estilo de link */\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n padding: 0;\n width: 100%;\n}\n.card-header h3[data-v-b493d20e] {\n margin: 0; /* Remove a margem para melhor controle de espaçamento */\n padding: 10px;\n background: var(--theme--primary);\n width: 100%;\n}\n.card-header[data-v-b493d20e] {\n background-color: var(--theme--primary-light);\n padding: 0;\n font-size: 18px;\n font-weight: bold;\n color: var(--white);\n width: 100%;\n}\n.card-body[data-v-b493d20e] {\n padding: 16px;\n font-size: 14px;\n color: var(--theme--foreground);\n}\n.card-body p[data-v-b493d20e] {\n margin: 0;\n}\n",{});const E={class:"container"};var L=S(D,[["render",function(e,t,n,a,i,l){const d=r("NavMenu"),u=r("router-view"),p=r("private-view");return o(),g(p,{title:e.page_title},{navigation:m(()=>[c(d,{items:e.items},null,8,["items"])]),default:m(()=>[s("div",E,[v(" O router-view vai renderizar o conteúdo do primeiro item automaticamente "),c(u)])]),_:1},8,["title"])}],["__scopeId","data-v-b493d20e"]]),$=a({name:"ItemDetail",components:{NavMenu:j},props:{item:{type:Object,required:!0},items:{type:Array,required:!0},loading:{type:Boolean,default:!1},title:{type:String,default:""}},setup:e=>({...e,breadcrumb:[{name:"Home",to:"/inframe"}]})});R("\n.header-bar[data-v-978ef17c] {\n display: none !important;\n}\n[data-v-978ef17c] .header-bar {\n display: none !important;\n}\n.container[data-v-978ef17c] {\n margin: 20px 50px;\n}\nh2[data-v-978ef17c] {\n color: var(--theme--foreground-accent);\n margin-bottom: 10px;\n}\np[data-v-978ef17c] {\n font-size: 16px;\n line-height: 1.5;\n color: var(--theme--foreground-accent);\n}\n.main[data-v-978ef17c] {\n position: relative;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n}\n.iframe-area[data-v-978ef17c] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n overflow: hidden !important;\n}\niframe[data-v-978ef17c] {\n width: 100%;\n height: 100%;\n border: none;\n}\n",{});const B={class:"main"},F={key:0},H={key:1},P={class:"iframe-area"},U=["src"],Y={key:2};var G=a({name:"ItemDetailRoute",components:{ItemDetail:S($,[["render",function(e,t,n,a,l,d){const u=r("v-breadcrumb"),p=r("NavMenu"),f=r("private-view");return e.item?(o(),g(f,{key:0,title:e.title},h({navigation:m(()=>[c(p,{items:e.items},null,8,["items"])]),default:m(()=>[s("div",B,[e.loading?(o(),i("div",F,[...t[0]||(t[0]=[s("p",null,"Carregando...",-1)])])):e.item?(o(),i("div",H,[s("div",P,[s("iframe",{src:e.item.url,frameborder:"0",sandbox:"allow-scripts allow-same-origin"},null,8,U)])])):(o(),i("div",Y,[...t[1]||(t[1]=[s("p",null,"Erro ao carregar dados. Tente novamente mais tarde.",-1)])]))])]),_:2},[e.breadcrumb.length>0?{name:"headline",fn:m(()=>[c(u,{items:e.breadcrumb},null,8,["items"])]),key:"0"}:void 0]),1032,["title"])):v("v-if",!0)}],["__scopeId","data-v-978ef17c"]])},setup(){const e=y(),{items:t,fetchItems:n,getTitle:a}=k(),{item:r,loading:i,fetchItem:o}=_(),{saveCurrentRoute:s,startAutoSave:l}=M();return f(async()=>{await n();const t=e.params.id;t&&(await o(t),s(t)),l()}),p(()=>e.params.id,async e=>{e&&(await o(e),s(e))}),{item:r,items:t,loading:i,getTitle:a}}});var J=t({id:"inframe",name:"Relatórios",icon:"document_scanner",routes:[{path:"",props:!0,component:L},{path:":id",component:S(G,[["render",function(e,t,n,a,i,s){const l=r("ItemDetail");return o(),g(l,{item:e.item,items:e.items,loading:e.loading,title:e.getTitle(e.item?.translations||[])},null,8,["item","items","loading","title"])}]]),props:!0}]});export{J as default};
|
package/package.json
CHANGED
|
@@ -1,57 +1,121 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "directus-extension-inframe",
|
|
3
|
-
"description": "
|
|
4
|
-
"icon": "
|
|
5
|
-
"
|
|
3
|
+
"description": "Display dashboards, reports and external sites in iframes, directly in your Directus panel. Install, configure and centralize everything in one place!",
|
|
4
|
+
"icon": "web_asset",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": false,
|
|
7
|
+
"version": "2.0.5",
|
|
6
8
|
"keywords": [
|
|
7
9
|
"directus",
|
|
8
10
|
"directus-extension",
|
|
9
|
-
"directus-
|
|
11
|
+
"directus-module",
|
|
12
|
+
"iframe",
|
|
13
|
+
"embed",
|
|
14
|
+
"visualization",
|
|
15
|
+
"cms",
|
|
16
|
+
"admin-panel"
|
|
10
17
|
],
|
|
11
|
-
"type": "module",
|
|
12
18
|
"files": [
|
|
13
|
-
"dist"
|
|
19
|
+
"dist/**/*",
|
|
20
|
+
"package.json",
|
|
21
|
+
"README.md"
|
|
14
22
|
],
|
|
15
23
|
"directus:extension": {
|
|
16
|
-
"type": "
|
|
17
|
-
"path":
|
|
18
|
-
|
|
24
|
+
"type": "bundle",
|
|
25
|
+
"path": {
|
|
26
|
+
"app": "dist/app.js",
|
|
27
|
+
"api": "dist/api.js"
|
|
28
|
+
},
|
|
29
|
+
"entries": [
|
|
30
|
+
{
|
|
31
|
+
"type": "module",
|
|
32
|
+
"name": "inframe",
|
|
33
|
+
"source": "src/index.ts"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "hook",
|
|
37
|
+
"name": "inframe-setup",
|
|
38
|
+
"source": "src/hook/index.ts"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
19
41
|
"host": "^10.10.0"
|
|
20
42
|
},
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"registry": "https://registry.npmjs.org/",
|
|
45
|
+
"access": "public"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/devix-tecnologia/directus-extension-inframe.git"
|
|
50
|
+
},
|
|
21
51
|
"devDependencies": {
|
|
22
|
-
"@directus/extensions-sdk": "^
|
|
23
|
-
"@eslint/js": "9.
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
52
|
+
"@directus/extensions-sdk": "^17.0.3",
|
|
53
|
+
"@eslint/js": "9.39.1",
|
|
54
|
+
"@playwright/test": "^1.56.1",
|
|
55
|
+
"@semantic-release/git": "^10.0.1",
|
|
56
|
+
"@semantic-release/github": "^12.0.2",
|
|
57
|
+
"@semantic-release/npm": "^13.1.2",
|
|
58
|
+
"@types/node": "^24.10.1",
|
|
59
|
+
"axios": "^1.13.2",
|
|
60
|
+
"dotenv": "^17.2.3",
|
|
61
|
+
"eslint": "9.39.1",
|
|
62
|
+
"eslint-config-prettier": "10.1.8",
|
|
63
|
+
"eslint-plugin-vue": "10.6.0",
|
|
64
|
+
"globals": "^16.5.0",
|
|
65
|
+
"playwright": "^1.56.1",
|
|
66
|
+
"prettier": "3.6.2",
|
|
67
|
+
"rollup": "^4.53.3",
|
|
68
|
+
"semantic-release": "^25.0.2",
|
|
69
|
+
"typescript": "^5.9.3",
|
|
70
|
+
"typescript-eslint": "8.47.0",
|
|
71
|
+
"vite": "^7.2.4",
|
|
72
|
+
"vitest": "^4.0.13",
|
|
73
|
+
"vue": "^3.5.25",
|
|
74
|
+
"vue-eslint-parser": "^10.2.0"
|
|
34
75
|
},
|
|
35
76
|
"dependencies": {
|
|
36
|
-
"vue-router": "^4.
|
|
77
|
+
"vue-router": "^4.6.3"
|
|
37
78
|
},
|
|
38
79
|
"engines": {
|
|
39
80
|
"node": "22",
|
|
40
|
-
"pnpm": "
|
|
81
|
+
"pnpm": "10.20.0"
|
|
41
82
|
},
|
|
42
83
|
"author": "Devix Tecnologia",
|
|
84
|
+
"contributors": [
|
|
85
|
+
{
|
|
86
|
+
"name": "Sidarta Veloso",
|
|
87
|
+
"github": "https://github.com/sidartaveloso",
|
|
88
|
+
"linkedin": "https://www.linkedin.com/in/sidartaveloso"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"name": "Fernando Gatti",
|
|
92
|
+
"github": "https://github.com/gattifernando",
|
|
93
|
+
"linkedin": "https://www.linkedin.com/in/gattifernando/"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
43
96
|
"license": "GPL-3.0",
|
|
44
97
|
"bugs": {
|
|
45
|
-
"url": "https://github.com/
|
|
98
|
+
"url": "https://github.com/devix-tecnologia/directus-extension-inframe/issues"
|
|
46
99
|
},
|
|
47
100
|
"homepage": "https://github.com/devix-tecnologia/directus-extension-inframe#readme",
|
|
48
101
|
"scripts": {
|
|
49
102
|
"build": "directus-extension build",
|
|
50
103
|
"dev": "directus-extension build -w --no-minify",
|
|
51
104
|
"link": "directus-extension link",
|
|
105
|
+
"validate": "directus-extension validate",
|
|
52
106
|
"lint": "eslint . --ext .ts,.vue",
|
|
53
107
|
"lint:fix": "eslint . --ext .ts,.vue --fix",
|
|
54
108
|
"format": "prettier --write .",
|
|
55
|
-
"format:check": "prettier --check ."
|
|
109
|
+
"format:check": "prettier --check .",
|
|
110
|
+
"test": "vitest run",
|
|
111
|
+
"test:version": "vitest run",
|
|
112
|
+
"test:watch": "vitest",
|
|
113
|
+
"test:coverage": "vitest run --coverage",
|
|
114
|
+
"test:e2e": "playwright test",
|
|
115
|
+
"test:e2e:ui": "playwright test --ui",
|
|
116
|
+
"test:e2e:debug": "playwright test --debug",
|
|
117
|
+
"test:e2e:headed": "playwright test --headed",
|
|
118
|
+
"test:e2e:report": "playwright show-report",
|
|
119
|
+
"semantic-release": "semantic-release"
|
|
56
120
|
}
|
|
57
121
|
}
|