From 26460c383b9424adf730621f1c39e9976de6952d Mon Sep 17 00:00:00 2001 From: sujit Date: Mon, 11 Aug 2025 11:15:13 +0545 Subject: [PATCH] refactor: move examples --- examples/app/complex.json | 161 --- examples/app/comprehensive-validation.json | 681 ---------- examples/app/schema.json | 528 -------- examples/app/server.go | 83 -- examples/app/templates/advanced.html | 29 - examples/app/templates/basic.html | 42 - examples/app/templates/form.css | 780 ----------- examples/app/validation-features.json | 586 -------- examples/certs/ca.crt | 22 - examples/certs/ca.key | 27 - examples/certs/server.crt | 20 - examples/certs/server.key | 27 - examples/clean_dag_demo.go | 683 ---------- examples/config/production.json | 139 -- examples/consumer.go | 15 - examples/dag.go | 122 -- examples/dag_consumer.go | 35 - examples/data_transform_demo.go | 827 ----------- examples/dedup.go | 58 - examples/email/contact-form.html | 190 --- examples/email/error.html | 134 -- examples/email/success.html | 210 --- examples/email_notification_dag.go | 460 ------- examples/enhanced_pool_demo.go | 164 --- examples/form.go | 160 --- examples/form.json | 44 - examples/generate_cert.go | 468 ------- examples/hmac.go | 26 - examples/json.go | 166 --- examples/login.json | 63 - examples/minimal_admin/main.go | 121 -- examples/minimal_admin/static/admin/README.md | 284 ---- .../minimal_admin/static/admin/css/admin.css | 550 -------- .../minimal_admin/static/admin/index.html | 628 --------- .../minimal_admin/static/admin/js/admin.js | 1203 ----------------- .../minimal_admin/static/admin/js/socket.js | 249 ---- examples/parse.go | 12 - examples/pool.go | 66 - examples/priority.go | 34 - examples/publisher.go | 24 - examples/scheduler.go | 108 -- examples/schema.json | 105 -- examples/server.go | 17 - examples/sms_form_dag.go | 708 ---------- examples/static.go | 94 -- examples/tasks/operations.go | 135 -- examples/tasks/scheduler.go | 20 - examples/tasks/tasks.go | 110 -- examples/v2.go | 189 --- examples/webroot/css/app.css | 25 - examples/webroot/favicon.ico | 0 examples/webroot/form.html | 103 -- examples/webroot/index.html | 117 -- examples/webroot/js/app.js | 186 --- examples/webroot/js/socket.js | 233 ---- examples/webroot/result.html | 239 ---- go.mod | 8 +- go.sum | 8 + services/examples/app/data/login_output.json | 4 - services/examples/app/templates/basic.html | 42 - services/examples/app/templates/error.html | 134 -- .../examples/config/policies/apis/sample.json | 21 - .../config/policies/handlers/login.json | 88 -- .../config/policies/handlers/print-check.json | 11 - .../config/policies/handlers/send-email.json | 29 - .../config/policies/schemas/login.json | 63 - .../config/policies/schemas/schema.json | 105 -- .../config/policies/schemas/test-route.json | 18 - services/examples/config/policies/web.json | 16 - services/examples/main.go | 36 - .../assets/InterVariable-CWi-zmRD.woff2 | Bin 345588 -> 0 bytes .../InterVariable-Italic-d6KXgdvN.woff2 | Bin 380904 -> 0 bytes .../examples/public/assets/index-B0w5Q249.js | 1102 --------------- .../public/assets/index-B0w5Q249.js.fiber.gz | Bin 152190 -> 0 bytes .../examples/public/assets/index-Bc6Em-gk.css | 1 - .../public/assets/index-Bc6Em-gk.css.fiber.gz | Bin 24718 -> 0 bytes services/examples/public/index.html | 14 - services/examples/public/index.html.fiber.gz | Bin 312 -> 0 bytes 78 files changed, 12 insertions(+), 14198 deletions(-) delete mode 100644 examples/app/complex.json delete mode 100644 examples/app/comprehensive-validation.json delete mode 100644 examples/app/schema.json delete mode 100644 examples/app/server.go delete mode 100644 examples/app/templates/advanced.html delete mode 100644 examples/app/templates/basic.html delete mode 100644 examples/app/templates/form.css delete mode 100644 examples/app/validation-features.json delete mode 100644 examples/certs/ca.crt delete mode 100644 examples/certs/ca.key delete mode 100644 examples/certs/server.crt delete mode 100644 examples/certs/server.key delete mode 100644 examples/clean_dag_demo.go delete mode 100644 examples/config/production.json delete mode 100644 examples/consumer.go delete mode 100644 examples/dag.go delete mode 100644 examples/dag_consumer.go delete mode 100644 examples/data_transform_demo.go delete mode 100644 examples/dedup.go delete mode 100644 examples/email/contact-form.html delete mode 100644 examples/email/error.html delete mode 100644 examples/email/success.html delete mode 100644 examples/email_notification_dag.go delete mode 100644 examples/enhanced_pool_demo.go delete mode 100644 examples/form.go delete mode 100644 examples/form.json delete mode 100644 examples/generate_cert.go delete mode 100644 examples/hmac.go delete mode 100644 examples/json.go delete mode 100644 examples/login.json delete mode 100644 examples/minimal_admin/main.go delete mode 100644 examples/minimal_admin/static/admin/README.md delete mode 100644 examples/minimal_admin/static/admin/css/admin.css delete mode 100644 examples/minimal_admin/static/admin/index.html delete mode 100644 examples/minimal_admin/static/admin/js/admin.js delete mode 100644 examples/minimal_admin/static/admin/js/socket.js delete mode 100644 examples/parse.go delete mode 100644 examples/pool.go delete mode 100644 examples/priority.go delete mode 100644 examples/publisher.go delete mode 100644 examples/scheduler.go delete mode 100644 examples/schema.json delete mode 100644 examples/server.go delete mode 100644 examples/sms_form_dag.go delete mode 100644 examples/static.go delete mode 100644 examples/tasks/operations.go delete mode 100644 examples/tasks/scheduler.go delete mode 100644 examples/tasks/tasks.go delete mode 100644 examples/v2.go delete mode 100644 examples/webroot/css/app.css delete mode 100644 examples/webroot/favicon.ico delete mode 100644 examples/webroot/form.html delete mode 100644 examples/webroot/index.html delete mode 100644 examples/webroot/js/app.js delete mode 100644 examples/webroot/js/socket.js delete mode 100644 examples/webroot/result.html delete mode 100644 services/examples/app/data/login_output.json delete mode 100644 services/examples/app/templates/basic.html delete mode 100644 services/examples/app/templates/error.html delete mode 100644 services/examples/config/policies/apis/sample.json delete mode 100644 services/examples/config/policies/handlers/login.json delete mode 100644 services/examples/config/policies/handlers/print-check.json delete mode 100644 services/examples/config/policies/handlers/send-email.json delete mode 100644 services/examples/config/policies/schemas/login.json delete mode 100644 services/examples/config/policies/schemas/schema.json delete mode 100644 services/examples/config/policies/schemas/test-route.json delete mode 100644 services/examples/config/policies/web.json delete mode 100644 services/examples/main.go delete mode 100644 services/examples/public/assets/InterVariable-CWi-zmRD.woff2 delete mode 100644 services/examples/public/assets/InterVariable-Italic-d6KXgdvN.woff2 delete mode 100644 services/examples/public/assets/index-B0w5Q249.js delete mode 100644 services/examples/public/assets/index-B0w5Q249.js.fiber.gz delete mode 100644 services/examples/public/assets/index-Bc6Em-gk.css delete mode 100644 services/examples/public/assets/index-Bc6Em-gk.css.fiber.gz delete mode 100644 services/examples/public/index.html delete mode 100644 services/examples/public/index.html.fiber.gz diff --git a/examples/app/complex.json b/examples/app/complex.json deleted file mode 100644 index 6c12758..0000000 --- a/examples/app/complex.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "object", - "title": "Company Registration", - "properties": { - "session_id": { - "type": "string", - "title": "Session ID", - "ui": { - "element": "input", - "type": "hidden", - "name": "session_id", - "value": "{{session_id}}" - } - }, - "task_id": { - "type": "string", - "title": "Task ID", - "ui": { - "element": "input", - "type": "hidden", - "name": "task_id", - "value": "{{task_id}}" - } - }, - "company": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Company Name", - "ui": { - "element": "input", - "type": "text", - "name": "name", - "class": "form-group", - "order": 1 - } - }, - "address": { - "type": "object", - "properties": { - "street": { - "type": "string", - "title": "Street Address", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 2 - } - }, - "city": { - "type": "string", - "title": "City", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 3 - } - }, - "country": { - "type": "string", - "title": "Country", - "enum": [ "US", "CA", "UK", "DE", "FR" ], - "ui": { - "element": "select", - "class": "form-group", - "order": 4, - "options": [ - { "value": "US", "text": "United States" }, - { "value": "CA", "text": "Canada" }, - { "value": "UK", "text": "United Kingdom" }, - { "value": "DE", "text": "Germany" }, - { "value": "FR", "text": "France" } - ] - } - }, - "zipCode": { - "type": "string", - "title": "ZIP/Postal Code", - "pattern": "^[0-9]{5}(-[0-9]{4})?$", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 5 - } - } - }, - "required": [ "street", "city", "country" ] - }, - "contact": { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Contact Email", - "ui": { - "element": "input", - "type": "email", - "class": "form-group", - "order": 6 - } - }, - "phone": { - "type": "string", - "title": "Phone Number", - "ui": { - "element": "input", - "type": "tel", - "class": "form-group", - "order": 7 - } - } - }, - "required": [ "email" ] - } - }, - "required": [ "name", "address", "contact" ] - } - }, - "required": [ "company" ], - "form": { - "class": "company-registration-form", - "action": "/process", - "method": "POST", - "groups": [ - { - "title": { - "text": "Company Information", - "class": "group-header" - }, - "class": "company-info", - "fields": [ "company.name" ] - }, - { - "title": { - "text": "Address Details", - "class": "group-header" - }, - "class": "flex items-start gap-4 address-info", - "fields": [ "company.address.street", "company.address.city", "company.address.country", "company.address.zipCode" ] - }, - { - "title": { - "text": "Contact Information", - "class": "group-header" - }, - "class": "flex items-start gap-4 contact-info", - "fields": [ "company.contact.email", "company.contact.phone" ] - } - ], - "submit": { - "label": "Register Company", - "class": "btn btn-success btn-lg px-4 py-2" - } - } -} diff --git a/examples/app/comprehensive-validation.json b/examples/app/comprehensive-validation.json deleted file mode 100644 index 0a4b792..0000000 --- a/examples/app/comprehensive-validation.json +++ /dev/null @@ -1,681 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "object", - "title": "Comprehensive Validation Demo", - "description": "A complete example showcasing all JSON Schema 2020-12 validation features", - "properties": { - "personalInfo": { - "type": "object", - "title": "Personal Information", - "properties": { - "firstName": { - "type": "string", - "title": "First Name", - "minLength": 2, - "maxLength": 50, - "pattern": "^[A-Za-z\\s]+$", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 1, - "placeholder": "Enter your first name" - } - }, - "lastName": { - "type": "string", - "title": "Last Name", - "minLength": 2, - "maxLength": 50, - "pattern": "^[A-Za-z\\s]+$", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 2 - } - }, - "age": { - "type": "integer", - "title": "Age", - "minimum": 18, - "maximum": 120, - "ui": { - "element": "input", - "type": "number", - "class": "form-group", - "order": 3 - } - }, - "email": { - "type": "string", - "format": "email", - "title": "Email Address", - "ui": { - "element": "input", - "type": "email", - "class": "form-group", - "order": 4 - } - }, - "phone": { - "type": "string", - "title": "Phone Number", - "pattern": "^\\+?[1-9]\\d{1,14}$", - "ui": { - "element": "input", - "type": "tel", - "class": "form-group", - "order": 5 - } - }, - "dateOfBirth": { - "type": "string", - "format": "date", - "title": "Date of Birth", - "ui": { - "element": "input", - "type": "date", - "class": "form-group", - "order": 6 - } - }, - "website": { - "type": "string", - "format": "uri", - "title": "Personal Website", - "ui": { - "element": "input", - "type": "url", - "class": "form-group", - "order": 7 - } - } - }, - "required": [ "firstName", "lastName", "email" ], - "dependentRequired": { - "phone": [ "email" ], - "website": [ "email" ] - } - }, - "address": { - "type": "object", - "title": "Address Information", - "properties": { - "street": { - "type": "string", - "title": "Street Address", - "minLength": 5, - "maxLength": 100, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 1 - } - }, - "city": { - "type": "string", - "title": "City", - "minLength": 2, - "maxLength": 50, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 2 - } - }, - "state": { - "type": "string", - "title": "State/Province", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 3 - } - }, - "country": { - "type": "string", - "title": "Country", - "enum": [ "US", "CA", "UK", "DE", "FR", "AU", "JP", "IN" ], - "ui": { - "element": "select", - "class": "form-group", - "order": 4, - "options": [ - { "value": "US", "text": "United States" }, - { "value": "CA", "text": "Canada" }, - { "value": "UK", "text": "United Kingdom" }, - { "value": "DE", "text": "Germany" }, - { "value": "FR", "text": "France" }, - { "value": "AU", "text": "Australia" }, - { "value": "JP", "text": "Japan" }, - { "value": "IN", "text": "India" } - ] - } - }, - "postalCode": { - "type": "string", - "title": "Postal Code", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 5 - } - } - }, - "required": [ "street", "city", "country" ], - "allOf": [ - { - "if": { - "properties": { - "country": { "const": "US" } - } - }, - "then": { - "properties": { - "postalCode": { - "pattern": "^\\d{5}(-\\d{4})?$" - } - } - } - }, - { - "if": { - "properties": { - "country": { "const": "CA" } - } - }, - "then": { - "properties": { - "postalCode": { - "pattern": "^[A-Z]\\d[A-Z] \\d[A-Z]\\d$" - } - } - } - } - ] - }, - "preferences": { - "type": "object", - "title": "User Preferences", - "properties": { - "newsletter": { - "type": "boolean", - "title": "Subscribe to Newsletter", - "default": false, - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-group", - "order": 1 - } - }, - "notifications": { - "type": "array", - "title": "Notification Types", - "minItems": 1, - "maxItems": 5, - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ "email", "sms", "push", "phone", "mail" ] - }, - "ui": { - "element": "select", - "class": "form-group", - "order": 2, - "multiple": true, - "options": [ - { "value": "email", "text": "Email Notifications" }, - { "value": "sms", "text": "SMS Notifications" }, - { "value": "push", "text": "Push Notifications" }, - { "value": "phone", "text": "Phone Calls" }, - { "value": "mail", "text": "Physical Mail" } - ] - } - }, - "theme": { - "type": "string", - "title": "Preferred Theme", - "enum": [ "light", "dark", "auto" ], - "default": "auto", - "ui": { - "element": "select", - "class": "form-group", - "order": 3, - "options": [ - { "value": "light", "text": "Light Theme" }, - { "value": "dark", "text": "Dark Theme" }, - { "value": "auto", "text": "Auto (System)" } - ] - } - }, - "language": { - "type": "string", - "title": "Preferred Language", - "enum": [ "en", "es", "fr", "de", "zh", "ja" ], - "default": "en", - "ui": { - "element": "select", - "class": "form-group", - "order": 4, - "options": [ - { "value": "en", "text": "English" }, - { "value": "es", "text": "Español" }, - { "value": "fr", "text": "Français" }, - { "value": "de", "text": "Deutsch" }, - { "value": "zh", "text": "中文" }, - { "value": "ja", "text": "日本語" } - ] - } - } - } - }, - "financial": { - "type": "object", - "title": "Financial Information", - "properties": { - "annualIncome": { - "type": "number", - "title": "Annual Income", - "minimum": 0, - "maximum": 10000000, - "multipleOf": 1000, - "ui": { - "element": "input", - "type": "number", - "class": "form-group", - "order": 1, - "step": "1000" - } - }, - "creditScore": { - "type": "integer", - "title": "Credit Score", - "minimum": 300, - "maximum": 850, - "ui": { - "element": "input", - "type": "range", - "class": "form-group", - "order": 2, - "min": "300", - "max": "850" - } - }, - "accountType": { - "type": "string", - "title": "Account Type", - "oneOf": [ - { - "const": "basic", - "title": "Basic Account", - "description": "Free account with basic features" - }, - { - "const": "premium", - "title": "Premium Account", - "description": "Paid account with advanced features" - }, - { - "const": "enterprise", - "title": "Enterprise Account", - "description": "Business account with full features" - } - ], - "ui": { - "element": "select", - "class": "form-group", - "order": 3, - "options": [ - { "value": "basic", "text": "Basic Account" }, - { "value": "premium", "text": "Premium Account" }, - { "value": "enterprise", "text": "Enterprise Account" } - ] - } - } - }, - "if": { - "properties": { - "accountType": { "const": "premium" } - } - }, - "then": { - "properties": { - "paymentMethod": { - "type": "string", - "title": "Payment Method", - "enum": [ "credit_card", "debit_card", "paypal", "bank_transfer" ], - "ui": { - "element": "select", - "class": "form-group", - "order": 4, - "options": [ - { "value": "credit_card", "text": "Credit Card" }, - { "value": "debit_card", "text": "Debit Card" }, - { "value": "paypal", "text": "PayPal" }, - { "value": "bank_transfer", "text": "Bank Transfer" } - ] - } - } - }, - "required": [ "paymentMethod" ] - }, - "else": { - "not": { - "required": [ "paymentMethod" ] - } - } - }, - "skills": { - "type": "array", - "title": "Technical Skills", - "minItems": 1, - "maxItems": 10, - "uniqueItems": true, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Skill Name", - "minLength": 2, - "maxLength": 50 - }, - "level": { - "type": "string", - "title": "Proficiency Level", - "enum": [ "beginner", "intermediate", "advanced", "expert" ] - }, - "yearsExperience": { - "type": "number", - "title": "Years of Experience", - "minimum": 0, - "maximum": 50, - "multipleOf": 0.5 - } - }, - "required": [ "name", "level" ] - }, - "ui": { - "element": "fieldset", - "class": "skills-section", - "order": 1 - } - }, - "portfolio": { - "type": "object", - "title": "Portfolio", - "properties": { - "projects": { - "type": "array", - "title": "Projects", - "maxItems": 5, - "items": { - "type": "object", - "properties": { - "title": { - "type": "string", - "title": "Project Title", - "minLength": 3, - "maxLength": 100 - }, - "description": { - "type": "string", - "title": "Description", - "maxLength": 500, - "ui": { - "element": "textarea", - "rows": 4, - "class": "form-group" - } - }, - "url": { - "type": "string", - "format": "uri", - "title": "Project URL" - }, - "technologies": { - "type": "array", - "title": "Technologies Used", - "items": { - "type": "string" - }, - "minItems": 1, - "maxItems": 10, - "uniqueItems": true - } - }, - "required": [ "title", "description" ] - } - } - }, - "anyOf": [ - { - "properties": { - "githubUrl": { - "type": "string", - "format": "uri", - "pattern": "^https://github\\.com/", - "title": "GitHub Profile" - } - } - }, - { - "properties": { - "linkedinUrl": { - "type": "string", - "format": "uri", - "pattern": "^https://www\\.linkedin\\.com/", - "title": "LinkedIn Profile" - } - } - }, - { - "properties": { - "personalWebsite": { - "type": "string", - "format": "uri", - "title": "Personal Website" - } - } - } - ] - }, - "comments": { - "type": "string", - "title": "Additional Comments", - "maxLength": 1000, - "ui": { - "element": "textarea", - "class": "form-group", - "rows": 5, - "placeholder": "Any additional information you'd like to share..." - } - }, - "termsAccepted": { - "type": "boolean", - "title": "I accept the terms and conditions", - "const": true, - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-group required-checkbox" - } - }, - "privacyAccepted": { - "type": "boolean", - "title": "I accept the privacy policy", - "const": true, - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-group required-checkbox" - } - } - }, - "required": [ "personalInfo", "address", "termsAccepted", "privacyAccepted" ], - "dependentSchemas": { - "financial": { - "properties": { - "personalInfo": { - "properties": { - "age": { - "minimum": 21 - } - } - } - } - } - }, - "form": { - "class": "comprehensive-form", - "action": "/api/submit-comprehensive-form", - "method": "POST", - "enctype": "multipart/form-data", - "groups": [ - { - "title": { - "text": "Personal Information", - "class": "section-header" - }, - "class": "personal-info-section", - "fields": [ - "personalInfo.firstName", - "personalInfo.lastName", - "personalInfo.age", - "personalInfo.email", - "personalInfo.phone", - "personalInfo.dateOfBirth", - "personalInfo.website" - ] - }, - { - "title": { - "text": "Address Information", - "class": "section-header" - }, - "class": "address-section flex flex-wrap gap-4", - "fields": [ - "address.street", - "address.city", - "address.state", - "address.country", - "address.postalCode" - ] - }, - { - "title": { - "text": "Preferences & Settings", - "class": "section-header" - }, - "class": "preferences-section", - "fields": [ - "preferences.newsletter", - "preferences.notifications", - "preferences.theme", - "preferences.language" - ] - }, - { - "title": { - "text": "Financial Information", - "class": "section-header" - }, - "class": "financial-section", - "fields": [ - "financial.annualIncome", - "financial.creditScore", - "financial.accountType" - ] - }, - { - "title": { - "text": "Skills & Portfolio", - "class": "section-header" - }, - "class": "skills-section", - "fields": [ - "skills", - "portfolio" - ] - }, - { - "title": { - "text": "Final Details", - "class": "section-header" - }, - "class": "final-section", - "fields": [ - "comments", - "termsAccepted", - "privacyAccepted" - ] - } - ], - "submit": { - "label": "Submit Application", - "class": "btn btn-primary btn-lg", - "id": "submit-btn" - }, - "reset": { - "label": "Reset Form", - "class": "btn btn-secondary", - "id": "reset-btn" - }, - "buttons": [ - { - "type": "button", - "label": "Save Draft", - "class": "btn btn-outline-secondary", - "id": "save-draft-btn", - "onclick": "saveDraft()" - }, - { - "type": "button", - "label": "Preview", - "class": "btn btn-outline-primary", - "id": "preview-btn", - "onclick": "showPreview()" - } - ] - }, - "examples": [ - { - "personalInfo": { - "firstName": "John", - "lastName": "Doe", - "age": 30, - "email": "john.doe@example.com", - "phone": "+1-555-123-4567", - "dateOfBirth": "1993-05-15", - "website": "https://johndoe.com" - }, - "address": { - "street": "123 Main St", - "city": "New York", - "state": "NY", - "country": "US", - "postalCode": "10001" - }, - "preferences": { - "newsletter": true, - "notifications": [ "email", "push" ], - "theme": "dark", - "language": "en" - }, - "financial": { - "annualIncome": 75000, - "creditScore": 750, - "accountType": "premium", - "paymentMethod": "credit_card" - }, - "termsAccepted": true, - "privacyAccepted": true - } - ] -} diff --git a/examples/app/schema.json b/examples/app/schema.json deleted file mode 100644 index ec92b22..0000000 --- a/examples/app/schema.json +++ /dev/null @@ -1,528 +0,0 @@ -{ - "type": "object", - "properties": { - "page_title": { - "type": "string", - "title": "Main Page Title", - "order": 1, - "ui": { - "element": "h1", - "class": "text-3xl font-bold text-center mb-6", - "name": "page_title", - "content": "Comprehensive HTML Form Demo" - } - }, - "intro_paragraph": { - "type": "string", - "title": "Introduction", - "order": 2, - "ui": { - "element": "p", - "class": "text-gray-600 mb-4", - "name": "intro", - "content": "This form demonstrates all supported HTML DOM elements in the renderer." - } - }, - "divider": { - "type": "string", - "order": 3, - "ui": { - "element": "hr", - "class": "my-6 border-gray-300" - } - }, - "first_name": { - "type": "string", - "title": "First Name", - "placeholder": "Enter your first name", - "order": 10, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "name": "first_name", - "autocomplete": "given-name", - "maxlength": "50" - } - }, - "last_name": { - "type": "string", - "title": "Last Name", - "placeholder": "Enter your last name", - "order": 11, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "name": "last_name", - "autocomplete": "family-name", - "maxlength": "50" - } - }, - "email": { - "type": "email", - "title": "Email Address", - "placeholder": "your.email@example.com", - "order": 12, - "ui": { - "element": "input", - "type": "email", - "class": "form-group", - "name": "email", - "autocomplete": "email" - } - }, - "password": { - "type": "password", - "title": "Password", - "placeholder": "Enter a secure password", - "order": 13, - "ui": { - "element": "input", - "type": "password", - "class": "form-group", - "name": "password", - "minlength": "8" - } - }, - "age": { - "type": "number", - "title": "Age", - "order": 14, - "ui": { - "element": "input", - "type": "number", - "class": "form-group", - "name": "age", - "min": "18", - "max": "120" - } - }, - "birth_date": { - "type": "date", - "title": "Birth Date", - "order": 15, - "ui": { - "element": "input", - "type": "date", - "class": "form-group", - "name": "birth_date" - } - }, - "website": { - "type": "url", - "title": "Personal Website", - "placeholder": "https://example.com", - "order": 16, - "ui": { - "element": "input", - "type": "url", - "class": "form-group", - "name": "website" - } - }, - "phone": { - "type": "tel", - "title": "Phone Number", - "placeholder": "+1-555-123-4567", - "order": 17, - "ui": { - "element": "input", - "type": "tel", - "class": "form-group", - "name": "phone" - } - }, - "favorite_color": { - "type": "color", - "title": "Favorite Color", - "order": 18, - "ui": { - "element": "input", - "type": "color", - "class": "form-group", - "name": "favorite_color", - "value": "#3B82F6" - } - }, - "satisfaction": { - "type": "range", - "title": "Satisfaction Level", - "order": 19, - "ui": { - "element": "input", - "type": "range", - "class": "form-group", - "name": "satisfaction", - "min": "1", - "max": "10", - "value": "5" - } - }, - "profile_picture": { - "type": "file", - "title": "Profile Picture", - "order": 20, - "ui": { - "element": "input", - "type": "file", - "class": "form-group", - "name": "profile_picture", - "accept": "image/*" - } - }, - "newsletter": { - "type": "boolean", - "title": "Subscribe to Newsletter", - "order": 21, - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-group", - "name": "newsletter", - "value": "yes" - } - }, - "gender": { - "type": "string", - "title": "Gender", - "order": 22, - "ui": { - "element": "select", - "class": "form-group", - "name": "gender", - "options": [ - { "value": "", "text": "Select Gender", "selected": true }, - { "value": "male", "text": "Male" }, - { "value": "female", "text": "Female" }, - { "value": "other", "text": "Other" }, - { "value": "prefer_not_to_say", "text": "Prefer not to say" } - ] - } - }, - "country": { - "type": "string", - "title": "Country", - "order": 23, - "ui": { - "element": "select", - "class": "form-group", - "name": "country", - "options": [ - { "value": "us", "text": "United States" }, - { "value": "ca", "text": "Canada" }, - { "value": "uk", "text": "United Kingdom" }, - { "value": "de", "text": "Germany" }, - { "value": "fr", "text": "France" }, - { "value": "jp", "text": "Japan" }, - { "value": "au", "text": "Australia" } - ] - } - }, - "skills": { - "type": "string", - "title": "Skills", - "order": 24, - "ui": { - "element": "select", - "class": "form-group", - "name": "skills", - "multiple": true, - "options": [ - { "value": "javascript", "text": "JavaScript" }, - { "value": "python", "text": "Python" }, - { "value": "go", "text": "Go" }, - { "value": "rust", "text": "Rust" }, - { "value": "java", "text": "Java" }, - { "value": "csharp", "text": "C#" } - ] - } - }, - "bio": { - "type": "string", - "title": "Biography", - "placeholder": "Tell us about yourself...", - "order": 25, - "ui": { - "element": "textarea", - "class": "form-group", - "name": "bio", - "rows": "4", - "cols": "50", - "maxlength": "500" - } - }, - "section_header": { - "type": "string", - "order": 30, - "ui": { - "element": "h2", - "class": "text-2xl font-semibold mt-8 mb-4", - "content": "Additional Information" - } - }, - "experience_fieldset": { - "type": "object", - "order": 31, - "ui": { - "element": "fieldset", - "class": "border border-gray-300 rounded p-4 mb-4", - "children": [ - { - "ui": { - "element": "legend", - "class": "font-medium px-2", - "content": "Work Experience" - } - }, - { - "title": "Years of Experience", - "ui": { - "element": "input", - "type": "number", - "name": "years_experience", - "class": "form-group", - "min": "0", - "max": "50" - } - }, - { - "title": "Current Position", - "ui": { - "element": "input", - "type": "text", - "name": "current_position", - "class": "form-group", - "placeholder": "e.g., Software Engineer" - } - } - ] - } - }, - "technologies_datalist": { - "type": "string", - "title": "Preferred Technology", - "order": 32, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "name": "preferred_tech", - "list": "technologies", - "placeholder": "Start typing..." - } - }, - "tech_datalist": { - "type": "string", - "order": 33, - "ui": { - "element": "datalist", - "id": "technologies", - "options": [ - "React", "Vue.js", "Angular", "Node.js", "Express", - "Django", "Flask", "Spring Boot", "ASP.NET", "Laravel" - ] - } - }, - "completion_progress": { - "type": "string", - "order": 34, - "ui": { - "element": "div", - "class": "mb-4", - "contentHTML": "70%" - } - }, - "rating_meter": { - "type": "string", - "order": 35, - "ui": { - "element": "div", - "class": "mb-4", - "contentHTML": "8 out of 10" - } - }, - "media_section": { - "type": "string", - "order": 40, - "ui": { - "element": "section", - "class": "mt-8 mb-4", - "contentHTML": "

Media Examples

" - } - }, - "demo_image": { - "type": "string", - "order": 41, - "ui": { - "element": "figure", - "class": "mb-4", - "contentHTML": "Demo placeholder image
Sample image with caption
" - } - }, - "table_section": { - "type": "string", - "order": 50, - "ui": { - "element": "div", - "class": "mt-8 mb-4", - "contentHTML": "

Data Table Example

NameRoleExperience
John DoeDeveloper5 years
Jane SmithDesigner3 years
" - } - }, - "list_examples": { - "type": "string", - "order": 60, - "ui": { - "element": "div", - "class": "mt-8 mb-4", - "contentHTML": "

List Examples

Unordered List:

  • First item
  • Second item
  • Third item

Ordered List:

  1. Step one
  2. Step two
  3. Step three

Description List:

Term 1:
Definition 1
Term 2:
Definition 2
" - } - }, - "interactive_details": { - "type": "string", - "order": 70, - "ui": { - "element": "details", - "class": "border border-gray-300 rounded p-4 mb-4", - "contentHTML": "Click to expand advanced options
" - } - }, - "code_example": { - "type": "string", - "order": 80, - "ui": { - "element": "div", - "class": "mt-8 mb-4", - "contentHTML": "

Code Example

function greetUser(name) {\n    return `Hello, ${name}!`;\n}\n\nconsole.log(greetUser('World'));
" - } - }, - "text_formatting": { - "type": "string", - "order": 90, - "ui": { - "element": "div", - "class": "mt-8 mb-4", - "contentHTML": "

Text Formatting Examples

This paragraph contains various text formatting: bold text, italic text, highlighted text, small text, deleted text, inserted text, superscript, subscript, and HTML abbreviation.

This is a blockquote that can contain longer quoted text with proper styling and indentation.
Contact: demo@example.com
" - } - }, - "break_line": { - "type": "string", - "order": 95, - "ui": { - "element": "br" - } - }, - "final_divider": { - "type": "string", - "order": 96, - "ui": { - "element": "hr", - "class": "my-8 border-gray-300" - } - }, - "footer_note": { - "type": "string", - "order": 97, - "ui": { - "element": "footer", - "class": "text-center text-gray-500 text-sm", - "contentHTML": "

This comprehensive form demonstrates the full capabilities of the enhanced JSON Schema renderer.

" - } - } - }, - "required": [ - "first_name", "last_name", "email", "age", "birth_date", "gender", "bio" - ], - "form": { - "class": "max-w-4xl mx-auto p-6 bg-white shadow-lg rounded-lg", - "action": "/process?task_id={{task_id}}&form=comprehensive", - "method": "POST", - "enctype": "multipart/form-data", - "groups": [ - { - "title": { - "text": "Header Section", - "class": "sr-only" - }, - "fields": [ "page_title", "intro_paragraph", "divider" ], - "class": "mb-8" - }, - { - "title": { - "text": "Personal Information", - "class": "text-2xl font-semibold mb-6 text-gray-800" - }, - "fields": [ - "first_name", "last_name", "email", "password", "age", - "birth_date", "website", "phone", "favorite_color", - "satisfaction", "profile_picture", "newsletter" - ], - "class": "grid grid-cols-1 md:grid-cols-2 gap-4 mb-8" - }, - { - "title": { - "text": "Preferences & Background", - "class": "text-2xl font-semibold mb-6 text-gray-800" - }, - "fields": [ "gender", "country", "skills", "bio" ], - "class": "space-y-4 mb-8" - }, - { - "title": { - "text": "Professional Details", - "class": "sr-only" - }, - "fields": [ - "section_header", "experience_fieldset", "technologies_datalist", - "tech_datalist", "completion_progress", "rating_meter" - ], - "class": "mb-8" - }, - { - "title": { - "text": "Media & Content Examples", - "class": "sr-only" - }, - "fields": [ "media_section", "demo_image" ], - "class": "mb-8" - }, - { - "title": { - "text": "Data & Text Examples", - "class": "sr-only" - }, - "fields": [ - "table_section", "list_examples", "interactive_details", - "code_example", "text_formatting" - ], - "class": "mb-8" - }, - { - "title": { - "text": "Footer", - "class": "sr-only" - }, - "fields": [ "break_line", "final_divider", "footer_note" ], - "class": "mt-8" - } - ], - "submit": { - "type": "submit", - "label": "Submit Complete Form", - "class": "bg-blue-600 hover:bg-blue-700 text-white font-medium py-3 px-6 rounded-lg transition-colors duration-200 mr-4" - }, - "reset": { - "type": "reset", - "label": "Reset All Fields", - "class": "bg-gray-500 hover:bg-gray-600 text-white font-medium py-3 px-6 rounded-lg transition-colors duration-200 mr-4" - }, - "buttons": [ - { - "type": "button", - "label": "Save Draft", - "class": "bg-green-600 hover:bg-green-700 text-white font-medium py-3 px-6 rounded-lg transition-colors duration-200", - "onclick": "saveDraft()" - } - ] - } -} diff --git a/examples/app/server.go b/examples/app/server.go deleted file mode 100644 index fb980cc..0000000 --- a/examples/app/server.go +++ /dev/null @@ -1,83 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "io" - "net/http" - "os" - "strings" - - "github.com/oarkflow/mq/renderer" - - "github.com/oarkflow/form" -) - -func main() { - http.Handle("/form.css", http.FileServer(http.Dir("templates"))) - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - // Serve the main form page - http.ServeFile(w, r, "templates/form.html") - }) - http.HandleFunc("/process", func(w http.ResponseWriter, r *http.Request) { - body, err := io.ReadAll(r.Body) - if err != nil { - http.Error(w, fmt.Sprintf("Failed to read request body: %v", err), http.StatusBadRequest) - return - } - data, err := form.DecodeForm(body) - if err != nil { - http.Error(w, fmt.Sprintf("Failed to decode form: %v", err), http.StatusBadRequest) - return - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - json.NewEncoder(w).Encode(data) - }) - http.HandleFunc("/render", func(w http.ResponseWriter, r *http.Request) { - templateName := r.URL.Query().Get("template") - if templateName == "" { - templateName = "basic" - } - schemaHTML := r.URL.Query().Get("schema") - if schemaHTML == "" { - http.Error(w, "Schema parameter is required", http.StatusBadRequest) - return - } - if !strings.Contains(schemaHTML, ".json") { - schemaHTML = fmt.Sprintf("%s.json", schemaHTML) - } - renderer, err := renderer.GetFromFile(schemaHTML, templateName) - if err != nil { - http.Error(w, fmt.Sprintf("Failed to get cached template: %v", err), http.StatusInternalServerError) - return - } - - // Set template data for dynamic interpolation - templateData := map[string]interface{}{ - "task_id": r.URL.Query().Get("task_id"), // Get task_id from query params - "session_id": "test_session_123", // Example session_id - } - // If task_id is not provided, use a default value - if templateData["task_id"] == "" { - templateData["task_id"] = "default_task_123" - } - - renderedHTML, err := renderer.RenderFields(templateData) - if err != nil { - http.Error(w, fmt.Sprintf("Failed to render fields: %v", err), http.StatusInternalServerError) - return - } - - w.Header().Set("Content-Type", "text/html") - w.Write([]byte(renderedHTML)) - }) - - port := os.Getenv("PORT") - if port == "" { - port = "8080" - } - - fmt.Printf("Server running on port http://localhost:%s\n", port) - http.ListenAndServe(fmt.Sprintf(":%s", port), nil) -} diff --git a/examples/app/templates/advanced.html b/examples/app/templates/advanced.html deleted file mode 100644 index ebaf6b8..0000000 --- a/examples/app/templates/advanced.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Advanced Template - - - - - - -
-
-

Form Fields

- {{form_groups}} -
- {{form_buttons}} -
-
-
- - - diff --git a/examples/app/templates/basic.html b/examples/app/templates/basic.html deleted file mode 100644 index f4ed557..0000000 --- a/examples/app/templates/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Template - - - - - - -
-
- {{form_groups}} -
- {{form_buttons}} -
-
-
- - - diff --git a/examples/app/templates/form.css b/examples/app/templates/form.css deleted file mode 100644 index df6615b..0000000 --- a/examples/app/templates/form.css +++ /dev/null @@ -1,780 +0,0 @@ -/* CSS Reset and Base Styles */ -* { - box-sizing: border-box; - margin: 0; - padding: 0; -} - -html { - font-size: 16px; - line-height: 1.6; - scroll-behavior: smooth; -} - -body { - font-family: 'Arial', 'Helvetica', sans-serif; - background-color: #f8f9fa; - color: #333; - margin: 0; - padding: 0; -} - -/* Typography and Text Elements */ -h1, h2, h3, h4, h5, h6 { - font-weight: bold; - line-height: 1.2; - margin-bottom: 0.5rem; - color: #2c3e50; -} - -h1 { font-size: 2.5rem; } -h2 { font-size: 2rem; } -h3 { font-size: 1.75rem; } -h4 { font-size: 1.5rem; } -h5 { font-size: 1.25rem; } -h6 { font-size: 1rem; } - -p { - margin-bottom: 1rem; - line-height: 1.6; -} - -/* Inline text elements */ -strong, b { - font-weight: bold; -} - -em, i { - font-style: italic; -} - -small { - font-size: 0.875rem; - color: #666; -} - -mark { - background-color: #fff3cd; - padding: 0.125rem 0.25rem; - border-radius: 0.125rem; -} - -del { - text-decoration: line-through; - color: #dc3545; -} - -ins { - text-decoration: underline; - color: #28a745; - background-color: #d4edda; -} - -sub, sup { - font-size: 0.75rem; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { bottom: -0.25rem; } -sup { top: -0.5rem; } - -abbr { - text-decoration: underline dotted; - cursor: help; -} - -code { - font-family: 'Courier New', monospace; - background-color: #f8f9fa; - padding: 0.125rem 0.25rem; - border-radius: 0.125rem; - font-size: 0.875rem; - color: #e83e8c; -} - -pre { - font-family: 'Courier New', monospace; - background-color: #f8f9fa; - padding: 1rem; - border-radius: 0.25rem; - overflow-x: auto; - margin-bottom: 1rem; - border: 1px solid #dee2e6; -} - -pre code { - background: none; - padding: 0; - font-size: inherit; - color: inherit; -} - -blockquote { - margin: 1rem 0; - padding: 1rem; - border-left: 4px solid #007bff; - background-color: #f8f9fa; - font-style: italic; -} - -cite { - font-style: italic; - color: #666; -} - -address { - font-style: normal; - margin-bottom: 1rem; -} - -time { - color: #666; -} - -/* Links */ -a { - color: #007bff; - text-decoration: none; - transition: color 0.2s ease; -} - -a:hover { - color: #0056b3; - text-decoration: underline; -} - -a:focus { - outline: 2px solid #007bff; - outline-offset: 2px; -} - -a:visited { - color: #6f42c1; -} - -/* Lists */ -ul, ol { - margin-bottom: 1rem; - padding-left: 2rem; -} - -ul { - list-style-type: disc; -} - -ol { - list-style-type: decimal; -} - -li { - margin-bottom: 0.25rem; -} - -ul ul, ol ol, ul ol, ol ul { - margin-bottom: 0; - margin-top: 0.25rem; -} - -/* Nested list styles */ -ul ul { list-style-type: circle; } -ul ul ul { list-style-type: square; } - -ol ol { list-style-type: lower-alpha; } -ol ol ol { list-style-type: lower-roman; } - -/* Description lists */ -dl { - margin-bottom: 1rem; -} - -dt { - font-weight: bold; - margin-top: 0.5rem; -} - -dd { - margin-left: 1rem; - margin-bottom: 0.5rem; -} - -/* Form Elements */ -.form-group { - margin-bottom: 1rem; - width: 100%; -} - -.required { - color: #dc3545; -} - -.form-group label { - display: block; - font-weight: bold; - margin-bottom: 0.5rem; - color: #333; -} - -/* Input elements */ -input[type="text"], -input[type="email"], -input[type="password"], -input[type="number"], -input[type="tel"], -input[type="url"], -input[type="search"], -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"], -input[type="week"], -input[type="color"], -input[type="file"], -select, -textarea { - width: 100%; - padding: 0.75rem; - border: 1px solid #ccc; - border-radius: 0.25rem; - font-size: 1rem; - font-family: inherit; - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); - transition: border-color 0.2s ease, box-shadow 0.2s ease; -} - -/* Ensure form-group input styles apply to all types including password */ -.form-group input[type="password"], .form-group select { - width: 100%; - padding: 0.75rem; - border: 1px solid #ccc; - border-radius: 0.25rem; - font-size: 1rem; - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); -} - -input:focus, -select:focus, -textarea:focus { - border-color: #007bff; - outline: none; - box-shadow: 0 0 5px rgba(0, 123, 255, 0.5); -} - -/* Specific focus styles for form-group inputs */ -.form-group input[type="password"]:focus, -.form-group input[type="text"]:focus, -.form-group input[type="email"]:focus, -.form-group input[type="number"]:focus, -.form-group select:focus, -.form-group textarea:focus { - border-color: #007bff; - outline: none; - box-shadow: 0 0 5px rgba(0, 123, 255, 0.5); -} - -input:invalid { - border-color: #dc3545; -} - -input:invalid:focus { - box-shadow: 0 0 5px rgba(220, 53, 69, 0.5); -} - -/* Range input */ -input[type="range"] { - width: 100%; - height: 0.5rem; - background: #ddd; - border-radius: 0.25rem; - outline: none; - padding: 0; - box-shadow: none; -} - -input[type="range"]::-webkit-slider-thumb { - appearance: none; - width: 1.5rem; - height: 1.5rem; - background: #007bff; - border-radius: 50%; - cursor: pointer; -} - -input[type="range"]::-moz-range-thumb { - width: 1.5rem; - height: 1.5rem; - background: #007bff; - border-radius: 50%; - cursor: pointer; - border: none; -} - -/* Checkbox and radio */ -input[type="checkbox"], -input[type="radio"] { - width: auto; - margin-right: 0.5rem; - padding: 0; - box-shadow: none; -} - -input[type="checkbox"] { - border-radius: 0.125rem; -} - -input[type="radio"] { - border-radius: 50%; -} - -/* Select styling */ -select { - appearance: none; - background: url('data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns%3D%22http%3A//www.w3.org/2000/svg%22 viewBox%3D%220 0 4 5%22%3E%3Cpath fill%3D%22%23000%22 d%3D%22M2 0L0 2h4z%22/%3E%3C/svg%3E') no-repeat right 0.75rem center; - background-size: 0.5rem; - padding-right: 2.5rem; -} - -select[multiple] { - background-image: none; - padding-right: 0.75rem; - height: auto; - min-height: 6rem; -} - -optgroup { - font-weight: bold; - color: #666; -} - -option { - padding: 0.25rem; -} - -/* Textarea */ -textarea { - resize: vertical; - min-height: 6rem; -} - -/* Fieldset and Legend */ -fieldset { - border: 1px solid #ccc; - border-radius: 0.25rem; - padding: 1rem; - margin-bottom: 1rem; -} - -legend { - font-weight: bold; - padding: 0 0.5rem; - color: #333; -} - -/* Progress and Meter */ -progress, meter { - width: 100%; - height: 1.5rem; - appearance: none; - border: none; - border-radius: 0.25rem; - background-color: #e9ecef; -} - -progress::-webkit-progress-bar, -meter::-webkit-meter-bar { - background-color: #e9ecef; - border-radius: 0.25rem; -} - -progress::-webkit-progress-value { - background-color: #007bff; - border-radius: 0.25rem; -} - -meter::-webkit-meter-optimum-value { - background-color: #28a745; -} - -meter::-webkit-meter-suboptimum-value { - background-color: #ffc107; -} - -meter::-webkit-meter-even-less-good-value { - background-color: #dc3545; -} - -/* Output */ -output { - display: inline-block; - padding: 0.375rem 0.75rem; - background-color: #f8f9fa; - border: 1px solid #ced4da; - border-radius: 0.25rem; -} - -/* Datalist styling (limited browser support) */ -datalist { - display: none; -} - -/* Buttons */ -button, -input[type="button"], -input[type="submit"], -input[type="reset"] { - display: inline-block; - padding: 0.75rem 1.5rem; - font-size: 1rem; - font-weight: bold; - font-family: inherit; - border: none; - border-radius: 0.25rem; - cursor: pointer; - text-align: center; - text-decoration: none; - transition: all 0.2s ease; - background-color: #6c757d; - color: white; -} - -button:hover, -input[type="button"]:hover, -input[type="submit"]:hover, -input[type="reset"]:hover { - transform: translateY(-1px); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); -} - -button:active, -input[type="button"]:active, -input[type="submit"]:active, -input[type="reset"]:active { - transform: translateY(0); -} - -button:disabled, -input[type="button"]:disabled, -input[type="submit"]:disabled, -input[type="reset"]:disabled { - background-color: #ccc; - cursor: not-allowed; - transform: none; - box-shadow: none; -} - -button:focus, -input[type="button"]:focus, -input[type="submit"]:focus, -input[type="reset"]:focus { - outline: 2px solid #007bff; - outline-offset: 2px; -} - -/* Button variants */ -.btn-primary { - background-color: #007bff; - color: white; -} - -.btn-primary:hover { - background-color: #0056b3; -} - -.btn-primary:active { - background-color: #004085; -} - -.btn-secondary { - background-color: #6c757d; - color: white; -} - -.btn-secondary:hover { - background-color: #5a6268; -} - -.btn-secondary:active { - background-color: #4e555b; -} - -.btn-success { - background-color: #28a745; - color: white; -} - -.btn-success:hover { - background-color: #218838; -} - -.btn-danger { - background-color: #dc3545; - color: white; -} - -.btn-danger:hover { - background-color: #c82333; -} - -.btn-warning { - background-color: #ffc107; - color: #212529; -} - -.btn-warning:hover { - background-color: #e0a800; -} - -.btn-info { - background-color: #17a2b8; - color: white; -} - -.btn-info:hover { - background-color: #138496; -} - -.btn-light { - background-color: #f8f9fa; - color: #212529; - border: 1px solid #dee2e6; -} - -.btn-light:hover { - background-color: #e2e6ea; -} - -.btn-dark { - background-color: #343a40; - color: white; -} - -.btn-dark:hover { - background-color: #23272b; -} - -/* Tables */ -table { - width: 100%; - border-collapse: collapse; - margin-bottom: 1rem; - background-color: white; -} - -th, td { - padding: 0.75rem; - text-align: left; - border-bottom: 1px solid #dee2e6; - vertical-align: top; -} - -th { - font-weight: bold; - background-color: #f8f9fa; - border-top: 1px solid #dee2e6; -} - -tr:hover { - background-color: #f5f5f5; -} - -caption { - font-weight: bold; - margin-bottom: 0.5rem; - color: #666; -} - -thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; -} - -tbody + tbody { - border-top: 2px solid #dee2e6; -} - -/* Table variants */ -.table-striped tbody tr:nth-of-type(odd) { - background-color: #f9f9f9; -} - -.table-bordered { - border: 1px solid #dee2e6; -} - -.table-bordered th, -.table-bordered td { - border: 1px solid #dee2e6; -} - -/* Images and Media */ -img { - max-width: 100%; - height: auto; - border-radius: 0.25rem; -} - -figure { - margin: 1rem 0; - text-align: center; -} - -figcaption { - font-size: 0.875rem; - color: #666; - margin-top: 0.5rem; - font-style: italic; -} - -audio, video { - width: 100%; - max-width: 100%; -} - -canvas { - max-width: 100%; - height: auto; -} - -svg { - max-width: 100%; - height: auto; - fill: currentColor; -} - -/* Sectioning Elements */ -article, section, nav, aside { - margin-bottom: 1rem; -} - -header, footer { - padding: 1rem 0; -} - -main { - min-height: calc(100vh - 200px); -} - -/* Interactive Elements */ -details { - margin-bottom: 1rem; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - padding: 1rem; -} - -summary { - font-weight: bold; - cursor: pointer; - margin-bottom: 0.5rem; - padding: 0.5rem; - background-color: #f8f9fa; - border-radius: 0.25rem; - transition: background-color 0.2s ease; -} - -summary:hover { - background-color: #e9ecef; -} - -details[open] summary { - margin-bottom: 1rem; -} - -dialog { - border: 1px solid #ccc; - border-radius: 0.5rem; - padding: 1rem; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); - background: white; -} - -dialog::backdrop { - background: rgba(0, 0, 0, 0.5); -} - -/* Embedded Content */ -iframe { - width: 100%; - border: none; - border-radius: 0.25rem; -} - -embed, object { - max-width: 100%; -} - -/* Custom Layout Utilities (Non-Tailwind) */ -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 1rem; -} - -.row { - display: flex; - flex-wrap: wrap; - margin: -0.5rem; -} - -.col { - flex: 1; - padding: 0.5rem; -} - -/* Error states */ -.form-control-error { - color: #dc3545; - font-size: 0.875rem; - margin-top: 0.25rem; -} - -.is-invalid { - border-color: #dc3545; -} - -.is-valid { - border-color: #28a745; -} - -/* Print styles */ -@media print { - * { - box-shadow: none !important; - text-shadow: none !important; - } - - a, a:visited { - text-decoration: underline; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - pre, blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - - thead { - display: table-header-group; - } - - tr, img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - p, h2, h3 { - orphans: 3; - widows: 3; - } - - h2, h3 { - page-break-after: avoid; - } -} diff --git a/examples/app/validation-features.json b/examples/app/validation-features.json deleted file mode 100644 index 81dcc9e..0000000 --- a/examples/app/validation-features.json +++ /dev/null @@ -1,586 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "title": "Advanced Validation Features Demo", - "description": "Demonstrates all implemented validation features", - "properties": { - "stringValidations": { - "type": "object", - "title": "String Validation Examples", - "properties": { - "basicString": { - "type": "string", - "title": "Basic String with Length Limits", - "minLength": 3, - "maxLength": 20, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 1 - } - }, - "patternString": { - "type": "string", - "title": "Pattern Validation (Letters Only)", - "pattern": "^[A-Za-z\\s]+$", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "order": 2, - "placeholder": "Letters and spaces only" - } - }, - "emailField": { - "type": "string", - "format": "email", - "title": "Email Format Validation", - "ui": { - "element": "input", - "type": "email", - "class": "form-group", - "order": 3 - } - }, - "urlField": { - "type": "string", - "format": "uri", - "title": "URL Format Validation", - "ui": { - "element": "input", - "type": "url", - "class": "form-group", - "order": 4 - } - }, - "dateField": { - "type": "string", - "format": "date", - "title": "Date Format Validation", - "ui": { - "element": "input", - "type": "date", - "class": "form-group", - "order": 5 - } - }, - "enumField": { - "type": "string", - "title": "Enum Selection", - "enum": [ "option1", "option2", "option3" ], - "ui": { - "element": "select", - "class": "form-group", - "order": 6, - "options": [ - { "value": "option1", "text": "Option 1" }, - { "value": "option2", "text": "Option 2" }, - { "value": "option3", "text": "Option 3" } - ] - } - } - }, - "required": [ "basicString", "emailField" ] - }, - "numericValidations": { - "type": "object", - "title": "Numeric Validation Examples", - "properties": { - "integerField": { - "type": "integer", - "title": "Integer with Range", - "minimum": 1, - "maximum": 100, - "ui": { - "element": "input", - "type": "number", - "class": "form-group", - "order": 1 - } - }, - "numberField": { - "type": "number", - "title": "Number with Exclusive Range", - "exclusiveMinimum": 0, - "exclusiveMaximum": 1000, - "multipleOf": 0.5, - "ui": { - "element": "input", - "type": "number", - "class": "form-group", - "order": 2, - "step": "0.5" - } - }, - "rangeField": { - "type": "integer", - "title": "Range Slider", - "minimum": 0, - "maximum": 100, - "default": 50, - "ui": { - "element": "input", - "type": "range", - "class": "form-group", - "order": 3 - } - } - } - }, - "arrayValidations": { - "type": "object", - "title": "Array Validation Examples", - "properties": { - "multiSelect": { - "type": "array", - "title": "Multi-Select with Constraints", - "minItems": 2, - "maxItems": 4, - "uniqueItems": true, - "items": { - "type": "string", - "enum": [ "red", "green", "blue", "yellow", "purple", "orange" ] - }, - "ui": { - "element": "select", - "class": "form-group", - "order": 1, - "multiple": true, - "options": [ - { "value": "red", "text": "Red" }, - { "value": "green", "text": "Green" }, - { "value": "blue", "text": "Blue" }, - { "value": "yellow", "text": "Yellow" }, - { "value": "purple", "text": "Purple" }, - { "value": "orange", "text": "Orange" } - ] - } - }, - "dynamicList": { - "type": "array", - "title": "Dynamic List of Objects", - "minItems": 1, - "maxItems": 5, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "minLength": 2 - }, - "value": { - "type": "number", - "title": "Value", - "minimum": 0 - } - }, - "required": [ "name" ] - }, - "ui": { - "element": "fieldset", - "class": "dynamic-list", - "order": 2 - } - } - } - }, - "conditionalValidations": { - "type": "object", - "title": "Conditional Validation Examples", - "properties": { - "userType": { - "type": "string", - "title": "User Type", - "enum": [ "individual", "business", "non-profit" ], - "ui": { - "element": "select", - "class": "form-group", - "order": 1, - "options": [ - { "value": "individual", "text": "Individual" }, - { "value": "business", "text": "Business" }, - { "value": "non-profit", "text": "Non-Profit" } - ] - } - }, - "individualInfo": { - "type": "object", - "title": "Individual Information", - "properties": { - "ssn": { - "type": "string", - "title": "Social Security Number", - "pattern": "^\\d{3}-\\d{2}-\\d{4}$", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "placeholder": "XXX-XX-XXXX" - } - } - } - }, - "businessInfo": { - "type": "object", - "title": "Business Information", - "properties": { - "taxId": { - "type": "string", - "title": "Tax ID", - "pattern": "^\\d{2}-\\d{7}$", - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "placeholder": "XX-XXXXXXX" - } - }, - "businessName": { - "type": "string", - "title": "Business Name", - "minLength": 2, - "ui": { - "element": "input", - "type": "text", - "class": "form-group" - } - } - } - } - }, - "allOf": [ - { - "if": { - "properties": { - "userType": { "const": "individual" } - } - }, - "then": { - "properties": { - "individualInfo": { - "required": [ "ssn" ] - } - } - } - }, - { - "if": { - "properties": { - "userType": { "const": "business" } - } - }, - "then": { - "properties": { - "businessInfo": { - "required": [ "taxId", "businessName" ] - } - } - } - } - ] - }, - "dependentFields": { - "type": "object", - "title": "Dependent Field Examples", - "properties": { - "hasPhone": { - "type": "boolean", - "title": "I have a phone number", - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-group", - "order": 1 - } - }, - "phoneNumber": { - "type": "string", - "title": "Phone Number", - "pattern": "^\\+?[1-9]\\d{1,14}$", - "ui": { - "element": "input", - "type": "tel", - "class": "form-group", - "order": 2 - } - }, - "preferredContact": { - "type": "string", - "title": "Preferred Contact Method", - "enum": [ "email", "phone", "mail" ], - "ui": { - "element": "select", - "class": "form-group", - "order": 3, - "options": [ - { "value": "email", "text": "Email" }, - { "value": "phone", "text": "Phone" }, - { "value": "mail", "text": "Physical Mail" } - ] - } - }, - "mailingAddress": { - "type": "string", - "title": "Mailing Address", - "ui": { - "element": "textarea", - "class": "form-group", - "order": 4, - "rows": 3 - } - } - }, - "dependentRequired": { - "hasPhone": [ "phoneNumber" ], - "preferredContact": [ "preferredContact" ] - }, - "if": { - "properties": { - "preferredContact": { "const": "phone" } - } - }, - "then": { - "required": [ "phoneNumber" ] - }, - "else": { - "if": { - "properties": { - "preferredContact": { "const": "mail" } - } - }, - "then": { - "required": [ "mailingAddress" ] - } - } - }, - "compositionValidations": { - "type": "object", - "title": "Composition Validation Examples (allOf, anyOf, oneOf)", - "properties": { - "contactMethod": { - "title": "Contact Method Validation", - "anyOf": [ - { - "type": "object", - "properties": { - "email": { - "type": "string", - "format": "email", - "title": "Email Address" - } - }, - "required": [ "email" ] - }, - { - "type": "object", - "properties": { - "phone": { - "type": "string", - "pattern": "^\\+?[1-9]\\d{1,14}$", - "title": "Phone Number" - } - }, - "required": [ "phone" ] - } - ], - "ui": { - "element": "fieldset", - "class": "contact-methods", - "order": 1 - } - }, - "paymentMethod": { - "title": "Payment Method (One Of)", - "oneOf": [ - { - "type": "object", - "properties": { - "type": { "const": "credit_card" }, - "cardNumber": { - "type": "string", - "pattern": "^\\d{16}$", - "title": "Card Number" - }, - "expiryDate": { - "type": "string", - "pattern": "^(0[1-9]|1[0-2])\\/\\d{2}$", - "title": "Expiry Date (MM/YY)" - } - }, - "required": [ "type", "cardNumber", "expiryDate" ] - }, - { - "type": "object", - "properties": { - "type": { "const": "paypal" }, - "paypalEmail": { - "type": "string", - "format": "email", - "title": "PayPal Email" - } - }, - "required": [ "type", "paypalEmail" ] - } - ], - "ui": { - "element": "fieldset", - "class": "payment-methods", - "order": 2 - } - } - } - }, - "advancedFeatures": { - "type": "object", - "title": "Advanced Features", - "properties": { - "constField": { - "const": "REQUIRED_VALUE", - "title": "Constant Value Field", - "ui": { - "element": "input", - "type": "hidden", - "value": "REQUIRED_VALUE" - } - }, - "booleanField": { - "type": "boolean", - "title": "Boolean Checkbox", - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-group" - } - }, - "readOnlyField": { - "type": "string", - "title": "Read Only Field", - "default": "This is read only", - "readOnly": true, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "readonly": true - } - }, - "textareaField": { - "type": "string", - "title": "Large Text Area", - "maxLength": 500, - "ui": { - "element": "textarea", - "class": "form-group", - "rows": 4, - "placeholder": "Enter detailed information here..." - } - } - } - } - }, - "required": [ "stringValidations" ], - "form": { - "class": "validation-demo-form", - "action": "/api/validate-form", - "method": "POST", - "groups": [ - { - "title": { - "text": "String Validations", - "class": "section-header" - }, - "class": "string-validation-section", - "fields": [ - "stringValidations.basicString", - "stringValidations.patternString", - "stringValidations.emailField", - "stringValidations.urlField", - "stringValidations.dateField", - "stringValidations.enumField" - ] - }, - { - "title": { - "text": "Numeric Validations", - "class": "section-header" - }, - "class": "numeric-validation-section", - "fields": [ - "numericValidations.integerField", - "numericValidations.numberField", - "numericValidations.rangeField" - ] - }, - { - "title": { - "text": "Array Validations", - "class": "section-header" - }, - "class": "array-validation-section", - "fields": [ - "arrayValidations.multiSelect", - "arrayValidations.dynamicList" - ] - }, - { - "title": { - "text": "Conditional Validations", - "class": "section-header" - }, - "class": "conditional-validation-section", - "fields": [ - "conditionalValidations.userType", - "conditionalValidations.individualInfo", - "conditionalValidations.businessInfo" - ] - }, - { - "title": { - "text": "Dependent Fields", - "class": "section-header" - }, - "class": "dependent-validation-section", - "fields": [ - "dependentFields.hasPhone", - "dependentFields.phoneNumber", - "dependentFields.preferredContact", - "dependentFields.mailingAddress" - ] - }, - { - "title": { - "text": "Composition Validations", - "class": "section-header" - }, - "class": "composition-validation-section", - "fields": [ - "compositionValidations.contactMethod", - "compositionValidations.paymentMethod" - ] - }, - { - "title": { - "text": "Advanced Features", - "class": "section-header" - }, - "class": "advanced-features-section", - "fields": [ - "advancedFeatures.constField", - "advancedFeatures.booleanField", - "advancedFeatures.readOnlyField", - "advancedFeatures.textareaField" - ] - } - ], - "submit": { - "label": "Validate Form", - "class": "btn btn-primary" - }, - "reset": { - "label": "Reset All", - "class": "btn btn-secondary" - } - } -} diff --git a/examples/certs/ca.crt b/examples/certs/ca.crt deleted file mode 100644 index c366a6e..0000000 --- a/examples/certs/ca.crt +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIQBuz6Swcf+c/9yR95gWHeMzANBgkqhkiG9w0BAQsFADBu -MQswCQYDVQQGEwJVUzEJMAcGA1UECBMAMRAwDgYDVQQHEwdNeSBDaXR5MRIwEAYD -VQQJEwlNeSBTdHJlZXQxDjAMBgNVBBETBTAwMDAwMQ4wDAYDVQQKEwVNeSBDQTEO -MAwGA1UEAxMFTXkgQ0EwHhcNMjQxMDAxMDU0MzE2WhcNMjUxMDAxMDU0MzE2WjBu -MQswCQYDVQQGEwJVUzEJMAcGA1UECBMAMRAwDgYDVQQHEwdNeSBDaXR5MRIwEAYD -VQQJEwlNeSBTdHJlZXQxDjAMBgNVBBETBTAwMDAwMQ4wDAYDVQQKEwVNeSBDQTEO -MAwGA1UEAxMFTXkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDD -hr0IwUOXUWzfZOdxjMEGxbp7q5jGzeC0VmjCRmvvWQgV4aX+pCYSEzDBwe+2ryFx -Kpvp75/SDTTT93bC3/wYSS0XpcJoISoSb3qVhcoQXGB7d80tPfyZO+MCPOCtnJf2 -2mRT1uN79tA2gsMLYboatTQVQ1HJZQbs7h+HQQsm2PBdIRBwZGRlh90eFzF/BUIj -rJq9Dg0xmI1lmKXW/XuUR8P8rwMf0CZSpKYAvf4P6ORF8oJlhfuj5im+eH2pYkGZ -kpA7I2+1wk8UJSIXXR4XMkd9PsByHjeRWLBDViFaiKPqf/XdHda56lxhnOQGTidU -cGud/8MsWJj5c9hdBDPPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIChDAPBgNVHRMB -Af8EBTADAQH/MB0GA1UdDgQWBBTiLIKo+Kb2S1OK6Ch3p3+ZghZfEzANBgkqhkiG -9w0BAQsFAAOCAQEAN49h/WETvhyCuLTWFgl+dGK+uM0k5yRwTFtThu7FLZdqOvis -l4WthkLt3oanNSyxs4RhDvd6oZ6lQvY7lNy4Z6U83QYR1O7dTVPb7wWrsnjUd4/l -be3qfoIo5SMPr3db0D019LI+vq5UUk4DC0YpI/DPFLL9kfDHvdtlRbIrmgbEjwwN -smu2wcbSNM22yk2P5vFE9jgRLZ4rQYpvMPrnTEACr6uLdVut6rpx2PpVq6W0vNK4 -4c2PGNxXolTlZBmz7knih3WJrgOuoaeVIN8WqR9GiZQjFPzr4AFM31q5BNUlK4TU -Xi1a0yAjs0xWu0NCq1zbwh9+SB8SuYtIvsjILQ== ------END CERTIFICATE----- diff --git a/examples/certs/ca.key b/examples/certs/ca.key deleted file mode 100644 index 4a61a2f..0000000 --- a/examples/certs/ca.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAw4a9CMFDl1Fs32TncYzBBsW6e6uYxs3gtFZowkZr71kIFeGl -/qQmEhMwwcHvtq8hcSqb6e+f0g000/d2wt/8GEktF6XCaCEqEm96lYXKEFxge3fN -LT38mTvjAjzgrZyX9tpkU9bje/bQNoLDC2G6GrU0FUNRyWUG7O4fh0ELJtjwXSEQ -cGRkZYfdHhcxfwVCI6yavQ4NMZiNZZil1v17lEfD/K8DH9AmUqSmAL3+D+jkRfKC -ZYX7o+Ypvnh9qWJBmZKQOyNvtcJPFCUiF10eFzJHfT7Ach43kViwQ1YhWoij6n/1 -3R3WuepcYZzkBk4nVHBrnf/DLFiY+XPYXQQzzwIDAQABAoIBAAkE2w1fVM3TDLGV -RvO+6Vx1nG9979Mjxfyri7OCahIlSjEwMmb3jWYCCpq1ZmhH1cQRkhWNXxLiVxB7 -9rdwe4FnRrQzii8hcH5fNAlXnYV5rV2kngs7M76hu4vr4PVBJuVVF5GidOXP8bTB -/Vs2C86Vkyxz6X7fsR0Wss+bWXdWL8RRTrFqPlHRjaaCcOK6dDzFRafvBN1CzaJ0 -Acv03BZITVSgjTfg2kNhwyrrq6EqExxLAxXrY/3cSI+bDx68W0LxVgNTfjceY5uP -uJhnYO6riuSaSD4uz3SKUUXH6zR5RDUGAPnICgM5MEDtAA3ZY3jGfbu9cJYkx9oL -rB6+1nECgYEA39PKyhHo++/wu46P94RpLZ1+RoKiE94DoZjdw9gRa4QGJUO7KGJ+ -Utnp+KzoeB3FSaXJyGj/1cLrmccsdRdSs6l4NAihQRDM8kB+7TEUCFoNfCRDQZ+J -Pf+afv/v+jR0WdlguDhFmMnAN3euJXAuHwOaZseeIRTXu8RDPkDE6qcCgYEA36GM -5Szc0TVTbcVhK3vPEBn/CgcLyjfrDbyAQp+Y0InUaQnrpzcW37sejsiK3rVyFTeQ -WQdobm6MGT+QkO3nE1/riJmyEUq3/WRYtRnGjurq6EwYeG6QxXV6SqkA9OXZSqKX -aFfH6lUs+6m4drPPzzmNEBSxt3esZGDXq29pGpkCgYByr2Z822hxjqPetlF2FdZ+ -lPAa2NyLKXra1iTrME7ctC0h8u525uCrOxTzYkVLJpXsApK9qW9M7C8kADX7WRP7 -Ep6QqstVN3KLvhhLGJaXIO0/6qS7fy8nIUzcPe+MWEw1rXgtbEfc3aMryJrme/Bl -28bFWwrfEHrprsp1n2JGiQKBgDgROdDveYFePEeGOAF97gEcc2vhLlyJvn3YJ9QM -TXTjSYT4PsPStQJs2JF1yBNkLHETWDZp/A3L24YtAKLFcqzR3KyH1DQvpod6FB97 -keOdFD4fbfcryVIoTPvQ+XNs+RiUQR+g+ndO2ZNTDvN7y3sp86r3dUMJVwhnm0rZ -COHpAoGBAJf7y/PM4T5xeBZ4LhHzGIIWaBJRRo9JkWCyLkQBVNpDs9chK6CPUcR4 -61ouAGAIRRUJt4KTJAuyt+rnEvvCTGkpq2MtrMx5+SLmj4Soh9Fo+FTqkVA15Kr/ -+05wVMIWkVqKXGF7Um9duPRUpRHhGSML3uG6rujSQWHJqibooyje ------END RSA PRIVATE KEY----- diff --git a/examples/certs/server.crt b/examples/certs/server.crt deleted file mode 100644 index cfd7865..0000000 --- a/examples/certs/server.crt +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDUjCCAjqgAwIBAgIRAMdsW2PjhMRI5lI74hlnjacwDQYJKoZIhvcNAQELBQAw -bjELMAkGA1UEBhMCVVMxCTAHBgNVBAgTADEQMA4GA1UEBxMHTXkgQ2l0eTESMBAG -A1UECRMJTXkgU3RyZWV0MQ4wDAYDVQQREwUwMDAwMDEOMAwGA1UEChMFTXkgQ0Ex -DjAMBgNVBAMTBU15IENBMB4XDTI0MTAwMTA1NDMxNloXDTI1MTAwMTA1NDMxNlow -ETEPMA0GA1UEAxMGc2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAxMrkyIFnEaGoZ9Z5iVVdSzoq8FTrJE3iGCZYjLRLTO/1Hq6L5C6tDqzYq3fv -V64G3B6yuWYE1SpqJ5C8T9G89Gc1jp6ZklP92nL+S7hOPjWsm+y33vM4WQQzqmY7 -BucE4yMXVZSAkr4uCe9/iTIeUBYgDOPmoJRwOS+y9mlBi6gqoWre3NDHbt9h4zim -Hg2Nsd6HT0kKcSKhrr3Xz87o8pWHyi/O7hexB3WBLIjgX43Wh0jhxwZ84FVHyCH3 -VR1UuhrInUxrWBE2HF9hhRp/8RUMgPggYIXDTNycUBJy0PEjBHy1s1hIqX75tEfP -JHNQj0NCHJ7UPFf7x1GsKPF62QIDAQABo0gwRjAOBgNVHQ8BAf8EBAMCBaAwEwYD -VR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU4iyCqPim9ktTiugod6d/mYIW -XxMwDQYJKoZIhvcNAQELBQADggEBACdY5KqLAXNHoZDof02daC+veHMM09VhFBrZ -UugYnXh6xmP+cKiINKfylr3Vqdtt4JXXMR8teTdv/Dk5ho17XtWyHbQ22bZN2DwH -vCgs4pPyqZvwfuBuWJ85fiu7B0AsrInSmdxMJeBIenTWyWU4bg19NsTejfJKIhk9 -dkvTLWryCZpoaA8lQZ+l39p10/L2PPnOdNU+TOzsbrJKnZkwCdlkAvZhyaVzTQfk -YSjVr1cakmq5T9u/8kWeb3Bx1z0GVXy0Jbgr1XBUv88IuGYH/KnrEfCweN5B+KQ7 -zwGD9PPu7E7+TpFkRH5uzv+3y8C6bICetlhWnWhQ237IEaoRpfU= ------END CERTIFICATE----- diff --git a/examples/certs/server.key b/examples/certs/server.key deleted file mode 100644 index d1e01d4..0000000 --- a/examples/certs/server.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAxMrkyIFnEaGoZ9Z5iVVdSzoq8FTrJE3iGCZYjLRLTO/1Hq6L -5C6tDqzYq3fvV64G3B6yuWYE1SpqJ5C8T9G89Gc1jp6ZklP92nL+S7hOPjWsm+y3 -3vM4WQQzqmY7BucE4yMXVZSAkr4uCe9/iTIeUBYgDOPmoJRwOS+y9mlBi6gqoWre -3NDHbt9h4zimHg2Nsd6HT0kKcSKhrr3Xz87o8pWHyi/O7hexB3WBLIjgX43Wh0jh -xwZ84FVHyCH3VR1UuhrInUxrWBE2HF9hhRp/8RUMgPggYIXDTNycUBJy0PEjBHy1 -s1hIqX75tEfPJHNQj0NCHJ7UPFf7x1GsKPF62QIDAQABAoIBAESksSDvYlBYHzH5 -MfOhfyVaaNfkBxFmyVK7LXAHA60Wll3ZbJpvXZYc3IcTEr12ypXFb3oUB+ODI/wh -FE6TTmHCDoBs+gx8l7O3INSwuToh5s+MxqZSGHmUaaEqf7RsqNvBxcXoQuDszYpR -rB7jCIfO7+cPJ8cjf/Gyna4uENrxdQgy8ESDYiLif5RhXZtYcuJ1dlojAshrzgz+ -PhFN7TeXTYNAit9txVybHt6m7hCzkmGjyUAhIrNoeIxizIu4osu/IoRrwhCuBRSw -3zqvOErr7JG2gI8Wj5Bs9Mkwn9iJeB4tZzGAwmw2t2eqqfdVNFFUNHE7vVRZ03/T -t/DwjLECgYEA1c79kQjzhwbuccPEOpBwl6hBngbbNw5+PtqBtizo12T3b2LsOqlZ -eb2G+5yUFW2enrZIl+KS6iCrutW1wHbxIxYijy13hlp/ecmLJeDRRdseOEagh8Re -NticHiNjluTns/sBl56unpm2lw+dp75cm+R1IiRkyiOdPcdvsfaPUZsCgYEA66BN -Z7mS6HL/juMEO5IGVluVMpIwq8seVWG8s6vQF1COlYfC/tWwxM/+95bKI/SmCMTK -83CtDrvGQ6dax2QjsxeP9mJ1GKIwEGrFrPn+vsmh0KBChG9HxVq2miWicH32WA+8 -MDwVFQUQa0MI1LsSrZsqhBGq+3KkKuBPuejTVpsCgYASnzCejTUIsaXa6r4Qi7wC -uXjdlqNJLE36k3VwtICjIfwbC3aftVhBriwvhfev1hhWonG4KNe65JWQdEScOr/N -2oOwDLm4TfGEXfVsmyQe/XKoXB5nNMcv57XROivWXKGBn38IAZ4b2i95ALcugPn3 -6fH5w0m0AV4Un2YvDdZ1uQKBgH2kUuIWYDG28HK+tskVCnAOEbaPoYhZnOkmXrrn -yORFvmIZrG66f7HSv0BClbMqh0ZxuU6qLH2IvyXgHVXpHegnjkpxIcNq6Ho4lQOx -opcVaUWXzyBTPlAMGQaFPuMBJ9S5Pz3xK8SzmJe5fQICZulPrhISYbwG22dJiPm3 -Hso1AoGAUqBG8FEyw6qQ+M3wg1n79QAWKQO8cJft7MU5ruTTJEZzm8kSqMzJ8UPz -C/CQiCehFjKNflYUZQV6RNWJp6H2vhe2qprDV88j6fhKfFi4va3CsELAKE/tAWs/ -WqydAe/dOQ8HwJCBrC4vRds8KOQTxPJUhPm/eM0Jf2Zocs5Axdc= ------END RSA PRIVATE KEY----- diff --git a/examples/clean_dag_demo.go b/examples/clean_dag_demo.go deleted file mode 100644 index af91ce3..0000000 --- a/examples/clean_dag_demo.go +++ /dev/null @@ -1,683 +0,0 @@ -package main - -import ( - "context" - "encoding/json" - "fmt" - "log" - "net/http" - "os" - "path/filepath" - "strings" - "time" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/dag" -) - -// StartProcessor - Initial node that receives and processes the input data -type StartProcessor struct { - dag.Operation -} - -func (p *StartProcessor) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - fmt.Printf("[START] Processing task %s - Initial data processing\n", task.ID) - - // Simulate initial processing work - time.Sleep(100 * time.Millisecond) - - // Create detailed result with node-specific information - processingResult := map[string]interface{}{ - "node_name": "start", - "task_id": task.ID, - "processed_at": time.Now().Format("15:04:05"), - "duration_ms": 100, - "status": "success", - "action": "initialized_data", - "data_size": len(fmt.Sprintf("%v", task.Payload)), - } - - // Initialize or update node results in context - var nodeResults map[string]interface{} - if existing, ok := ctx.Value("nodeResults").(map[string]interface{}); ok { - nodeResults = existing - } else { - nodeResults = make(map[string]interface{}) - } - nodeResults["start"] = processingResult - - // Create new context with updated results - newCtx := context.WithValue(ctx, "nodeResults", nodeResults) - - fmt.Printf("[START] Node completed - data initialized for task %s\n", task.ID) - - return mq.Result{ - TaskID: task.ID, - Status: mq.Completed, - Payload: task.Payload, - Ctx: newCtx, - } -} - -// ProcessorNode - Processes and transforms the data -type ProcessorNode struct { - dag.Operation -} - -func (p *ProcessorNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - fmt.Printf("[PROCESS] Processing task %s - Data transformation\n", task.ID) - - // Simulate processing work - time.Sleep(100 * time.Millisecond) - - processingResult := map[string]interface{}{ - "node_name": "process", - "task_id": task.ID, - "processed_at": time.Now().Format("15:04:05"), - "duration_ms": 100, - "status": "success", - "action": "transformed_data", - "data_size": len(fmt.Sprintf("%v", task.Payload)), - } - - // Update node results in context - var nodeResults map[string]interface{} - if existing, ok := ctx.Value("nodeResults").(map[string]interface{}); ok { - nodeResults = existing - } else { - nodeResults = make(map[string]interface{}) - } - nodeResults["process"] = processingResult - - newCtx := context.WithValue(ctx, "nodeResults", nodeResults) - - fmt.Printf("[PROCESS] Node completed - data transformed for task %s\n", task.ID) - - return mq.Result{ - TaskID: task.ID, - Status: mq.Completed, - Payload: task.Payload, - Ctx: newCtx, - } -} - -// ValidatorNode - Validates the processed data -type ValidatorNode struct { - dag.Operation -} - -func (p *ValidatorNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - fmt.Printf("[VALIDATE] Processing task %s - Data validation\n", task.ID) - - // Simulate validation work - time.Sleep(100 * time.Millisecond) - - processingResult := map[string]interface{}{ - "node_name": "validate", - "task_id": task.ID, - "processed_at": time.Now().Format("15:04:05"), - "duration_ms": 100, - "status": "success", - "action": "validated_data", - "validation": "passed", - "data_size": len(fmt.Sprintf("%v", task.Payload)), - } - - // Update node results in context - var nodeResults map[string]interface{} - if existing, ok := ctx.Value("nodeResults").(map[string]interface{}); ok { - nodeResults = existing - } else { - nodeResults = make(map[string]interface{}) - } - nodeResults["validate"] = processingResult - - newCtx := context.WithValue(ctx, "nodeResults", nodeResults) - - fmt.Printf("[VALIDATE] Node completed - data validated for task %s\n", task.ID) - - return mq.Result{ - TaskID: task.ID, - Status: mq.Completed, - Payload: task.Payload, - Ctx: newCtx, - } -} - -// EndProcessor - Final node that completes the processing -type EndProcessor struct { - dag.Operation -} - -func (p *EndProcessor) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - fmt.Printf("[END] Processing task %s - Final processing\n", task.ID) - - // Simulate final processing work - time.Sleep(100 * time.Millisecond) - - processingResult := map[string]interface{}{ - "node_name": "end", - "task_id": task.ID, - "processed_at": time.Now().Format("15:04:05"), - "duration_ms": 100, - "status": "success", - "action": "finalized_data", - "data_size": len(fmt.Sprintf("%v", task.Payload)), - } - - // Update node results in context - var nodeResults map[string]interface{} - if existing, ok := ctx.Value("nodeResults").(map[string]interface{}); ok { - nodeResults = existing - } else { - nodeResults = make(map[string]interface{}) - } - nodeResults["end"] = processingResult - - newCtx := context.WithValue(ctx, "nodeResults", nodeResults) - - fmt.Printf("[END] Node completed - processing finished for task %s\n", task.ID) - - return mq.Result{ - TaskID: task.ID, - Status: mq.Completed, - Payload: task.Payload, - Ctx: newCtx, - } -} - -func main() { - // Create a new DAG with enhanced features - d := dag.NewDAG("enhanced-example", "example", finalResultCallback) - - // Build the DAG structure (avoiding cycles) - buildDAG(d) - - fmt.Println("DAG validation passed! (cycle-free structure)") - - // Set up basic API endpoints - setupAPI(d) - - // Process some tasks - processTasks(d) - - // Display basic statistics - displayStatistics(d) - - // Start HTTP server for API - fmt.Println("Starting HTTP server on :8080") - fmt.Println("Visit http://localhost:8080 for the dashboard") - log.Fatal(http.ListenAndServe(":8080", nil)) -} - -func finalResultCallback(taskID string, result mq.Result) { - fmt.Printf("Task %s completed with status: %v\n", taskID, result.Status) -} - -func buildDAG(d *dag.DAG) { - // Add nodes in a linear flow to avoid cycles - using proper processor types - d.AddNode(dag.Function, "Start Node", "start", &StartProcessor{}, true) - d.AddNode(dag.Function, "Process Node", "process", &ProcessorNode{}) - d.AddNode(dag.Function, "Validate Node", "validate", &ValidatorNode{}) - d.AddNode(dag.Function, "End Node", "end", &EndProcessor{}) - - // Add edges in a linear fashion (no cycles) - d.AddEdge(dag.Simple, "start-to-process", "start", "process") - d.AddEdge(dag.Simple, "process-to-validate", "process", "validate") - d.AddEdge(dag.Simple, "validate-to-end", "validate", "end") - - fmt.Println("DAG structure built successfully") -} - -func setupAPI(d *dag.DAG) { - // Basic status endpoint - http.HandleFunc("/api/status", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - status := map[string]interface{}{ - "status": "running", - "dag_name": d.GetType(), - "timestamp": time.Now(), - } - json.NewEncoder(w).Encode(status) - }) - - // Task metrics endpoint - http.HandleFunc("/api/metrics", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - metrics := d.GetTaskMetrics() - // Create a safe copy to avoid lock issues - safeMetrics := map[string]interface{}{ - "completed": metrics.Completed, - "failed": metrics.Failed, - "cancelled": metrics.Cancelled, - "not_started": metrics.NotStarted, - "queued": metrics.Queued, - } - json.NewEncoder(w).Encode(safeMetrics) - }) - - // API endpoint to process a task and return results - http.HandleFunc("/api/process", func(w http.ResponseWriter, r *http.Request) { - taskData := map[string]interface{}{ - "id": fmt.Sprintf("api-task-%d", time.Now().UnixNano()), - "payload": "api-data", - "timestamp": time.Now(), - } - payload, _ := json.Marshal(taskData) - - fmt.Printf("Processing API request with payload: %s\n", string(payload)) - - // Initialize context with empty node results - ctx := context.WithValue(context.Background(), "nodeResults", make(map[string]interface{})) - result := d.Process(ctx, payload) - - fmt.Printf("Processing completed. Status: %v\n", result.Status) - - // Get the actual execution order from DAG topology - executionOrder := d.TopologicalSort() - fmt.Printf("DAG execution order: %v\n", executionOrder) - - resp := map[string]interface{}{ - "overall_result": fmt.Sprintf("%v", result.Status), - "task_id": result.TaskID, - "payload": result.Payload, - "timestamp": time.Now(), - "execution_order": executionOrder, // Include the actual execution order - } - - if result.Error != nil { - resp["error"] = result.Error.Error() - fmt.Printf("Error occurred: %v\n", result.Error) - } - - // Extract node results from context - if nodeResults, ok := result.Ctx.Value("nodeResults").(map[string]interface{}); ok && len(nodeResults) > 0 { - resp["node_results"] = nodeResults - fmt.Printf("Node results captured: %v\n", nodeResults) - } else { - // Create a comprehensive view based on the actual DAG execution order - nodeResults := make(map[string]interface{}) - for i, nodeKey := range executionOrder { - nodeResults[nodeKey] = map[string]interface{}{ - "node_name": nodeKey, - "status": "success", - "action": fmt.Sprintf("executed_step_%d", i+1), - "executed_at": time.Now().Format("15:04:05"), - "execution_step": i + 1, - } - } - resp["node_results"] = nodeResults - fmt.Printf("📝 Created node results based on DAG topology: %v\n", nodeResults) - } - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(resp) - }) - - // DAG Diagram endpoint - generates and serves PNG diagram - http.HandleFunc("/api/diagram", func(w http.ResponseWriter, r *http.Request) { - // Generate PNG file in a temporary location - diagramPath := filepath.Join(os.TempDir(), fmt.Sprintf("dag-%d.png", time.Now().UnixNano())) - - fmt.Printf("Generating DAG diagram at: %s\n", diagramPath) - - // Generate the PNG diagram - if err := d.SavePNG(diagramPath); err != nil { - fmt.Printf("Failed to generate diagram: %v\n", err) - http.Error(w, fmt.Sprintf("Failed to generate diagram: %v", err), http.StatusInternalServerError) - return - } - - // Ensure cleanup - defer func() { - if err := os.Remove(diagramPath); err != nil { - fmt.Printf("Failed to cleanup diagram file: %v\n", err) - } - }() - - // Serve the PNG file - w.Header().Set("Content-Type", "image/png") - w.Header().Set("Cache-Control", "no-cache") - http.ServeFile(w, r, diagramPath) - - fmt.Printf("DAG diagram served successfully\n") - }) - - // DAG DOT source endpoint - returns the DOT source code - http.HandleFunc("/api/dot", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/plain") - dotContent := d.ExportDOT() - w.Write([]byte(dotContent)) - }) - - // DAG structure and execution order endpoint - http.HandleFunc("/api/structure", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - - executionOrder := d.TopologicalSort() - - structure := map[string]interface{}{ - "execution_order": executionOrder, - "dag_name": d.GetType(), - "dag_key": d.GetKey(), - "total_nodes": len(executionOrder), - "timestamp": time.Now(), - } - - json.NewEncoder(w).Encode(structure) - }) - - // Root dashboard - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/html") - fmt.Fprintf(w, ` - - - - Enhanced DAG Demo - - - -
-
-

Enhanced DAG Demo Dashboard

-

DAG is running successfully!

-
- -
- - - -
- -
-
-

API Endpoints

-
- GET - /api/status - Get DAG status -
-
- GET - /api/metrics - Get task metrics -
-
- POST - /api/process - Process a new task -
-
- GET - /api/diagram - Get DAG diagram (PNG) -
-
- GET - /api/dot - Get DAG structure (DOT format) -
-
- GET - /api/structure - Get DAG structure and execution order -
-
-
- -
-
-

DAG Visual Structure

-

Flow: Start -> Process -> Validate -> End

-

Type: Linear (Cycle-free)

-

This structure ensures no circular dependencies while demonstrating the enhanced features.

- -
- -
- - -
-
- -
-
-

Run Example Task

- -
-
-
-
- - - - `) - }) -} - -func processTasks(d *dag.DAG) { - fmt.Println("Processing example tasks...") - - for i := 0; i < 3; i++ { - taskData := map[string]interface{}{ - "id": fmt.Sprintf("task-%d", i), - "payload": fmt.Sprintf("example-data-%d", i), - "timestamp": time.Now(), - } - - payload, _ := json.Marshal(taskData) - - fmt.Printf("Processing task %d...\n", i) - result := d.Process(context.Background(), payload) - - // Show overall result - if result.Error == nil { - fmt.Printf("Task %d completed successfully\n", i) - } else { - fmt.Printf("Task %d failed: %v\n", i, result.Error) - } - - // Show per-node results in DAG execution order - if nodeResults, ok := result.Ctx.Value("nodeResults").(map[string]interface{}); ok { - fmt.Println("Node Results (DAG Execution Order):") - // Get the actual execution order from DAG topology - executionOrder := d.TopologicalSort() - nodeLabels := map[string]string{ - "start": "Start Node", - "process": "Process Node", - "validate": "Validate Node", - "end": "End Node", - } - - stepNum := 1 - for _, nodeKey := range executionOrder { - if res, exists := nodeResults[nodeKey]; exists { - label := nodeLabels[nodeKey] - if label == "" { - // Capitalize first letter of node key - if len(nodeKey) > 0 { - label = fmt.Sprintf("%s%s Node", strings.ToUpper(nodeKey[:1]), nodeKey[1:]) - } else { - label = fmt.Sprintf("%s Node", nodeKey) - } - } - fmt.Printf(" Step %d - %s: %v\n", stepNum, label, res) - stepNum++ - } - } - - // Show the execution order - fmt.Printf(" DAG Execution Order: %s\n", strings.Join(executionOrder, " → ")) - } - - time.Sleep(200 * time.Millisecond) - } - - fmt.Println("Task processing completed!") -} - -func displayStatistics(d *dag.DAG) { - fmt.Println("\n=== DAG Statistics ===") - - // Get basic task metrics - metrics := d.GetTaskMetrics() - fmt.Printf("Task Metrics:\n") - fmt.Printf(" Completed: %d\n", metrics.Completed) - fmt.Printf(" Failed: %d\n", metrics.Failed) - fmt.Printf(" Cancelled: %d\n", metrics.Cancelled) - fmt.Printf(" Not Started: %d\n", metrics.NotStarted) - fmt.Printf(" Queued: %d\n", metrics.Queued) - - // Get DAG information - fmt.Printf("\nDAG Information:\n") - fmt.Printf(" Name: %s\n", d.GetType()) - fmt.Printf(" Key: %s\n", d.GetKey()) - - // Check if DAG is ready - if d.IsReady() { - fmt.Printf(" Status: Ready\n") - } else { - fmt.Printf(" Status: Not Ready\n") - } - - fmt.Println("\n=== End Statistics ===\n") -} diff --git a/examples/config/production.json b/examples/config/production.json deleted file mode 100644 index 72a41bc..0000000 --- a/examples/config/production.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "broker": { - "address": "localhost", - "port": 8080, - "max_connections": 1000, - "connection_timeout": "0s", - "read_timeout": "0s", - "write_timeout": "0s", - "idle_timeout": "0s", - "keep_alive": true, - "keep_alive_period": "60s", - "max_queue_depth": 10000, - "enable_dead_letter": true, - "dead_letter_max_retries": 3 - }, - "consumer": { - "enable_http_api": true, - "max_retries": 5, - "initial_delay": "2s", - "max_backoff": "30s", - "jitter_percent": 0.5, - "batch_size": 10, - "prefetch_count": 100, - "auto_ack": false, - "requeue_on_failure": true - }, - "publisher": { - "enable_http_api": true, - "max_retries": 3, - "initial_delay": "1s", - "max_backoff": "10s", - "jitter_percent": 0.5, - "connection_pool_size": 10, - "publish_timeout": "5s", - "enable_batching": false, - "batch_size": 100, - "batch_timeout": "1s" - }, - "pool": { - "min_workers": 1, - "max_workers": 100, - "queue_size": 1000, - "max_memory_load": 1073741824, - "task_timeout": "30s", - "idle_worker_timeout": "5m", - "enable_dynamic_scaling": true, - "scaling_factor": 1.5, - "scaling_interval": "1m", - "max_queue_wait_time": "10s", - "enable_work_stealing": false, - "enable_priority_scheduling": true, - "graceful_shutdown_timeout": "30s" - }, - "security": { - "enable_tls": false, - "tls_cert_path": "", - "tls_key_path": "", - "tls_ca_path": "", - "tls_insecure_skip_verify": false, - "enable_authentication": false, - "authentication_method": "basic", - "enable_authorization": false, - "enable_encryption": false, - "encryption_key": "", - "enable_audit_log": false, - "audit_log_path": "/var/log/mq/audit.log", - "session_timeout": "30m", - "max_login_attempts": 3, - "lockout_duration": "15m" - }, - "monitoring": { - "enable_metrics": true, - "metrics_port": 9090, - "metrics_path": "/metrics", - "enable_health_check": true, - "health_check_port": 8081, - "health_check_path": "/health", - "health_check_interval": "30s", - "enable_tracing": false, - "tracing_endpoint": "", - "tracing_sample_rate": 0.1, - "enable_logging": true, - "log_level": "info", - "log_format": "json", - "log_output": "stdout", - "log_file_path": "/var/log/mq/app.log", - "log_max_size": 100, - "log_max_backups": 10, - "log_max_age": 30, - "enable_profiling": false, - "profiling_port": 6060 - }, - "persistence": { - "enable_persistence": false, - "storage_type": "memory", - "connection_string": "", - "max_connections": 10, - "connection_timeout": "10s", - "retention_period": "168h", - "cleanup_interval": "1h", - "backup_enabled": false, - "backup_interval": "6h", - "backup_path": "/var/backup/mq", - "compression_enabled": true, - "encryption_enabled": false, - "replication_enabled": false, - "replication_nodes": [ ] - }, - "clustering": { - "enable_clustering": false, - "node_id": "", - "cluster_nodes": [ ], - "discovery_method": "static", - "discovery_endpoint": "", - "heartbeat_interval": "5s", - "election_timeout": "15s", - "enable_load_balancing": false, - "load_balancing_strategy": "round_robin", - "enable_failover": false, - "failover_timeout": "30s", - "enable_replication": false, - "replication_factor": 3, - "consistency_level": "strong" - }, - "rate_limit": { - "enable_broker_rate_limit": false, - "broker_rate": 1000, - "broker_burst": 100, - "enable_consumer_rate_limit": false, - "consumer_rate": 100, - "consumer_burst": 10, - "enable_publisher_rate_limit": false, - "publisher_rate": 100, - "publisher_burst": 10, - "enable_per_queue_rate_limit": false, - "per_queue_rate": 50, - "per_queue_burst": 5 - } -} diff --git a/examples/consumer.go b/examples/consumer.go deleted file mode 100644 index 3ca7842..0000000 --- a/examples/consumer.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -import ( - "context" - - "github.com/oarkflow/mq" - - "github.com/oarkflow/mq/examples/tasks" -) - -func main() { - n := &tasks.Node6{} - consumer1 := mq.NewConsumer("F", "queue1", n.ProcessTask, mq.WithBrokerURL(":8081"), mq.WithHTTPApi(true), mq.WithWorkerPool(100, 4, 50000)) - consumer1.Consume(context.Background()) -} diff --git a/examples/dag.go b/examples/dag.go deleted file mode 100644 index cee5e03..0000000 --- a/examples/dag.go +++ /dev/null @@ -1,122 +0,0 @@ -package main - -import ( - "context" - "fmt" - - "github.com/oarkflow/json" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/dag" - "github.com/oarkflow/mq/examples/tasks" -) - -func subDAG() *dag.DAG { - f := dag.NewDAG("Sub DAG", "sub-dag", func(taskID string, result mq.Result) { - fmt.Printf("Sub DAG Final result for task %s: %s\n", taskID, string(result.Payload)) - }, mq.WithSyncMode(true)) - f. - AddNode(dag.Function, "Store data", "store:data", &tasks.StoreData{Operation: dag.Operation{Type: dag.Function}}, true). - AddNode(dag.Function, "Send SMS", "send:sms", &tasks.SendSms{Operation: dag.Operation{Type: dag.Function}}). - AddNode(dag.Function, "Notification", "notification", &tasks.InAppNotification{Operation: dag.Operation{Type: dag.Function}}). - AddEdge(dag.Simple, "Store Payload to send sms", "store:data", "send:sms"). - AddEdge(dag.Simple, "Store Payload to notification", "send:sms", "notification") - return f -} - -func main() { - flow := dag.NewDAG("Sample DAG", "sample-dag", func(taskID string, result mq.Result) { - fmt.Printf("DAG Final result for task %s: %s\n", taskID, string(result.Payload)) - }) - flow.AddNode(dag.Function, "GetData", "GetData", &GetData{}, true) - flow.AddNode(dag.Function, "Loop", "Loop", &Loop{}) - flow.AddNode(dag.Function, "ValidateAge", "ValidateAge", &ValidateAge{}) - flow.AddNode(dag.Function, "ValidateGender", "ValidateGender", &ValidateGender{}) - flow.AddNode(dag.Function, "Final", "Final", &Final{}) - flow.AddDAGNode(dag.Function, "Check", "persistent", subDAG()) - flow.AddEdge(dag.Simple, "GetData", "GetData", "Loop") - flow.AddEdge(dag.Iterator, "Validate age for each item", "Loop", "ValidateAge") - flow.AddCondition("ValidateAge", map[string]string{"pass": "ValidateGender", "default": "persistent"}) - flow.AddEdge(dag.Simple, "Mark as Done", "Loop", "Final") - - // flow.Start(":8080") - data := []byte(`[{"age": "15", "gender": "female"}, {"age": "18", "gender": "male"}]`) - if flow.Error != nil { - panic(flow.Error) - } - - rs := flow.Process(context.Background(), data) - if rs.Error != nil { - panic(rs.Error) - } - fmt.Println(rs.Status, rs.Topic, string(rs.Payload)) -} - -type GetData struct { - dag.Operation -} - -func (p *GetData) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return mq.Result{Ctx: ctx, Payload: task.Payload} -} - -type Loop struct { - dag.Operation -} - -func (p *Loop) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return mq.Result{Ctx: ctx, Payload: task.Payload} -} - -type ValidateAge struct { - dag.Operation -} - -func (p *ValidateAge) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: fmt.Errorf("ValidateAge Error: %s", err.Error()), Ctx: ctx} - } - var status string - if data["age"] == "18" { - status = "pass" - } else { - status = "default" - } - updatedPayload, _ := json.Marshal(data) - return mq.Result{Payload: updatedPayload, Ctx: ctx, ConditionStatus: status} -} - -type ValidateGender struct { - dag.Operation -} - -func (p *ValidateGender) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: fmt.Errorf("ValidateGender Error: %s", err.Error()), Ctx: ctx} - } - data["female_voter"] = data["gender"] == "female" - updatedPayload, _ := json.Marshal(data) - return mq.Result{Payload: updatedPayload, Ctx: ctx} -} - -type Final struct { - dag.Operation -} - -func (p *Final) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data []map[string]any - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: fmt.Errorf("Final Error: %s", err.Error()), Ctx: ctx} - } - for i, row := range data { - row["done"] = true - data[i] = row - } - updatedPayload, err := json.Marshal(data) - if err != nil { - panic(err) - } - return mq.Result{Payload: updatedPayload, Ctx: ctx} -} diff --git a/examples/dag_consumer.go b/examples/dag_consumer.go deleted file mode 100644 index 921e5e2..0000000 --- a/examples/dag_consumer.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -import ( - "context" - "fmt" - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/dag" - "github.com/oarkflow/mq/examples/tasks" -) - -func main() { - d := dag.NewDAG("Sample DAG", "sample-dag", func(taskID string, result mq.Result) { - fmt.Println("Final", string(result.Payload)) - }, - mq.WithSyncMode(true), - mq.WithNotifyResponse(tasks.NotifyResponse), - ) - d.AddNode(dag.Function, "C", "C", &tasks.Node3{}, true) - d.AddNode(dag.Function, "D", "D", &tasks.Node4{}) - d.AddNode(dag.Function, "E", "E", &tasks.Node5{}) - d.AddNode(dag.Function, "F", "F", &tasks.Node6{}) - d.AddNode(dag.Function, "G", "G", &tasks.Node7{}) - d.AddNode(dag.Function, "H", "H", &tasks.Node8{}) - - d.AddCondition("C", map[string]string{"PASS": "D", "FAIL": "E"}) - d.AddEdge(dag.Simple, "Label 1", "B", "C") - d.AddEdge(dag.Simple, "Label 2", "D", "F") - d.AddEdge(dag.Simple, "Label 3", "E", "F") - d.AddEdge(dag.Simple, "Label 4", "F", "G", "H") - d.AssignTopic("queue") - err := d.Consume(context.Background()) - if err != nil { - panic(err) - } -} diff --git a/examples/data_transform_demo.go b/examples/data_transform_demo.go deleted file mode 100644 index e545cf2..0000000 --- a/examples/data_transform_demo.go +++ /dev/null @@ -1,827 +0,0 @@ -package main - -import ( - "context" - "encoding/json" - "fmt" - "log" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/dag" - "github.com/oarkflow/mq/handlers" -) - -func main() { - fmt.Println("=== Data Transformation Handlers Examples ===") - - // Test each handler with sample data - testFormatHandler() - testGroupHandler() - testSplitJoinHandler() - testFlattenHandler() - testJSONHandler() - testFieldHandler() - testDataHandler() - - // Example of chaining handlers - exampleDAGChaining() -} - -func testFormatHandler() { - fmt.Println("\n1. FORMAT HANDLER TESTS") - fmt.Println("========================") - - // Test uppercase formatting - testData := map[string]any{ - "name": "john doe", - "title": "software engineer", - "age": 30, - } - - handler := handlers.NewFormatHandler("format-test") - config := dag.Payload{ - Data: map[string]any{ - "format_type": "uppercase", - "fields": []string{"name", "title"}, - }, - } - handler.SetConfig(config) - - result := runHandler(handler, testData, "Uppercase Format") - printResult("Uppercase formatting", result) - printRequestConfigResult(testData, config, result) - - // Test currency formatting - currencyData := map[string]any{ - "price": 99.99, - "tax": "15.50", - "total": 115.49, - } - - currencyHandler := handlers.NewFormatHandler("currency-test") - currencyConfig := dag.Payload{ - Data: map[string]any{ - "format_type": "currency", - "fields": []string{"price", "tax", "total"}, - "currency": "$", - }, - } - currencyHandler.SetConfig(currencyConfig) - - result = runHandler(currencyHandler, currencyData, "Currency Format") - printResult("Currency formatting", result) - printRequestConfigResult(currencyData, currencyConfig, result) - - // Test date formatting - dateData := map[string]any{ - "created_at": "2023-06-15T10:30:00Z", - "updated_at": "2023-06-20", - } - - dateHandler := handlers.NewFormatHandler("date-test") - dateConfig := dag.Payload{ - Data: map[string]any{ - "format_type": "date", - "fields": []string{"created_at", "updated_at"}, - "date_format": "2006-01-02", - }, - } - dateHandler.SetConfig(dateConfig) - - result = runHandler(dateHandler, dateData, "Date Format") - printResult("Date formatting", result) - printRequestConfigResult(dateData, dateConfig, result) -} - -func testGroupHandler() { - fmt.Println("\n2. GROUP HANDLER TESTS") - fmt.Println("======================") - - // Test data grouping with aggregation - testData := map[string]any{ - "data": []interface{}{ - map[string]any{"department": "Engineering", "salary": 80000, "age": 30, "name": "John"}, - map[string]any{"department": "Engineering", "salary": 90000, "age": 25, "name": "Jane"}, - map[string]any{"department": "Marketing", "salary": 60000, "age": 35, "name": "Bob"}, - map[string]any{"department": "Marketing", "salary": 65000, "age": 28, "name": "Alice"}, - map[string]any{"department": "Engineering", "salary": 95000, "age": 32, "name": "Mike"}, - }, - } - - handler := handlers.NewGroupHandler("group-test") - config := dag.Payload{ - Data: map[string]any{ - "group_by": []string{"department"}, - "aggregations": map[string]any{ - "salary": "sum", - "age": "avg", - "name": "concat", - }, - "concat_separator": ", ", - }, - } - handler.SetConfig(config) - - result := runHandler(handler, testData, "Group by Department") - printResult("Data grouping", result) - printRequestConfigResult(testData, config, result) -} - -func testSplitJoinHandler() { - fmt.Println("\n3. SPLIT/JOIN HANDLER TESTS") - fmt.Println("============================") - - // Test split operation - testData := map[string]any{ - "full_name": "John Michael Doe", - "tags": "go,programming,backend,api", - "skills": "golang python javascript", - } - - splitHandler := handlers.NewSplitHandler("split-test") - splitConfig := dag.Payload{ - Data: map[string]any{ - "operation": "split", - "fields": []string{"full_name", "skills"}, - "separator": " ", - }, - } - splitHandler.SetConfig(splitConfig) - - result := runHandler(splitHandler, testData, "Split Operation (space)") - printResult("String splitting with space", result) - printRequestConfigResult(testData, splitConfig, result) - - // Test split with comma - splitHandler2 := handlers.NewSplitHandler("split-test-2") - splitConfig2 := dag.Payload{ - Data: map[string]any{ - "operation": "split", - "fields": []string{"tags"}, - "separator": ",", - }, - } - splitHandler2.SetConfig(splitConfig2) - - result = runHandler(splitHandler2, testData, "Split Operation (comma)") - printResult("String splitting with comma", result) - printRequestConfigResult(testData, splitConfig2, result) - - // Test join operation - joinData := map[string]any{ - "first_name": "John", - "middle_name": "Michael", - "last_name": "Doe", - "title": "Mr.", - } - - joinHandler := handlers.NewJoinHandler("join-test") - joinConfig := dag.Payload{ - Data: map[string]any{ - "operation": "join", - "source_fields": []string{"title", "first_name", "middle_name", "last_name"}, - "target_field": "full_name_with_title", - "separator": " ", - }, - } - joinHandler.SetConfig(joinConfig) - - result = runHandler(joinHandler, joinData, "Join Operation") - printResult("String joining", result) - printRequestConfigResult(joinData, joinConfig, result) - - fmt.Printf("Split Test Data: %+v\n", testData) - fmt.Printf("Split Config: %+v\n", splitConfig.Data) - fmt.Printf("Split Result: %+v\n", result) - - fmt.Printf("Split Test Data (comma): %+v\n", testData) - fmt.Printf("Split Config (comma): %+v\n", splitConfig2.Data) - fmt.Printf("Split Result (comma): %+v\n", result) - - fmt.Printf("Join Test Data: %+v\n", joinData) - fmt.Printf("Join Config: %+v\n", joinConfig.Data) - fmt.Printf("Join Result: %+v\n", result) -} - -func testFlattenHandler() { - fmt.Println("\n4. FLATTEN HANDLER TESTS") - fmt.Println("=========================") - - // Test flatten settings - testData := map[string]any{ - "user_id": 123, - "settings": []interface{}{ - map[string]any{"key": "theme", "value": "dark", "value_type": "string"}, - map[string]any{"key": "notifications", "value": "true", "value_type": "boolean"}, - map[string]any{"key": "max_items", "value": "50", "value_type": "integer"}, - map[string]any{"key": "timeout", "value": "30.5", "value_type": "float"}, - }, - } - - handler := handlers.NewFlattenHandler("flatten-test") - config := dag.Payload{ - Data: map[string]any{ - "operation": "flatten_settings", - "source_field": "settings", - "target_field": "user_config", - }, - } - handler.SetConfig(config) - - result := runHandler(handler, testData, "Flatten Settings") - printResult("Settings flattening", result) - printRequestConfigResult(testData, config, result) - - // Test flatten key-value pairs - kvData := map[string]any{ - "user_id": 456, - "properties": []interface{}{ - map[string]any{"name": "color", "val": "blue"}, - map[string]any{"name": "size", "val": "large"}, - map[string]any{"name": "weight", "val": "heavy"}, - }, - } - - kvHandler := handlers.NewFlattenHandler("kv-test") - kvConfig := dag.Payload{ - Data: map[string]any{ - "operation": "flatten_key_value", - "source_field": "properties", - "key_field": "name", - "value_field": "val", - "target_field": "flattened_props", - }, - } - kvHandler.SetConfig(kvConfig) - - result = runHandler(kvHandler, kvData, "Flatten Key-Value") - printResult("Key-value flattening", result) - printRequestConfigResult(kvData, kvConfig, result) - - // Test flatten nested objects - nestedData := map[string]any{ - "user": map[string]any{ - "id": 123, - "profile": map[string]any{ - "name": "John Doe", - "email": "john@example.com", - "address": map[string]any{ - "street": "123 Main St", - "city": "New York", - "country": "USA", - }, - "preferences": map[string]any{ - "theme": "dark", - "language": "en", - }, - }, - }, - } - - nestedHandler := handlers.NewFlattenHandler("nested-test") - nestedConfig := dag.Payload{ - Data: map[string]any{ - "operation": "flatten_nested_objects", - "separator": "_", - }, - } - nestedHandler.SetConfig(nestedConfig) - - result = runHandler(nestedHandler, nestedData, "Flatten Nested Objects") - printResult("Nested object flattening", result) - printRequestConfigResult(nestedData, nestedConfig, result) -} - -func testJSONHandler() { - fmt.Println("\n5. JSON HANDLER TESTS") - fmt.Println("=====================") - - // Test JSON parsing - testData := map[string]any{ - "config": `{"theme": "dark", "language": "en", "notifications": true, "max_items": 100}`, - "metadata": `["tag1", "tag2", "tag3"]`, - "user": `{"id": 123, "name": "John Doe", "active": true}`, - } - - parseHandler := handlers.NewJSONHandler("json-parse-test") - parseConfig := dag.Payload{ - Data: map[string]any{ - "operation": "parse", - "fields": []string{"config", "metadata", "user"}, - }, - } - parseHandler.SetConfig(parseConfig) - - result := runHandler(parseHandler, testData, "JSON Parsing") - printResult("JSON parsing", result) - printRequestConfigResult(testData, parseConfig, result) - - // Test JSON stringifying - objData := map[string]any{ - "user": map[string]any{ - "id": 123, - "name": "John Doe", - "active": true, - "roles": []string{"admin", "user"}, - }, - "preferences": map[string]any{ - "theme": "dark", - "notifications": true, - "language": "en", - }, - } - - stringifyHandler := handlers.NewJSONHandler("json-stringify-test") - stringifyConfig := dag.Payload{ - Data: map[string]any{ - "operation": "stringify", - "fields": []string{"user", "preferences"}, - "indent": true, - }, - } - stringifyHandler.SetConfig(stringifyConfig) - - result = runHandler(stringifyHandler, objData, "JSON Stringifying") - printResult("JSON stringifying", result) - printRequestConfigResult(objData, stringifyConfig, result) - - // Test JSON validation - validationData := map[string]any{ - "valid_json": `{"key": "value"}`, - "invalid_json": `{"key": value}`, // Missing quotes around value - "valid_array": `[1, 2, 3]`, - } - - validateHandler := handlers.NewJSONHandler("json-validate-test") - validateConfig := dag.Payload{ - Data: map[string]any{ - "operation": "validate", - "fields": []string{"valid_json", "invalid_json", "valid_array"}, - }, - } - validateHandler.SetConfig(validateConfig) - - result = runHandler(validateHandler, validationData, "JSON Validation") - printResult("JSON validation", result) - printRequestConfigResult(validationData, validateConfig, result) -} - -func testFieldHandler() { - fmt.Println("\n6. FIELD HANDLER TESTS") - fmt.Println("======================") - - testData := map[string]any{ - "id": 123, - "first_name": "John", - "last_name": "Doe", - "email_addr": "john@example.com", - "phone_number": "555-1234", - "internal_id": "INT-123", - "created_at": "2023-01-15", - "updated_at": "2023-06-20", - "is_active": true, - "salary": 75000.50, - } - - // Test field filtering/selection - filterHandler := handlers.NewFieldHandler("filter-test") - filterConfig := dag.Payload{ - Data: map[string]any{ - "operation": "filter", - "fields": []string{"id", "first_name", "last_name", "email_addr", "is_active"}, - }, - } - filterHandler.SetConfig(filterConfig) - - result := runHandler(filterHandler, testData, "Filter/Select Fields") - printResult("Field filtering", result) - printRequestConfigResult(testData, filterConfig, result) - - // Test field exclusion/removal - excludeHandler := handlers.NewFieldHandler("exclude-test") - excludeConfig := dag.Payload{ - Data: map[string]any{ - "operation": "exclude", - "fields": []string{"internal_id", "created_at", "updated_at"}, - }, - } - excludeHandler.SetConfig(excludeConfig) - - result = runHandler(excludeHandler, testData, "Exclude Fields") - printResult("Field exclusion", result) - printRequestConfigResult(testData, excludeConfig, result) - - // Test field renaming - renameHandler := handlers.NewFieldHandler("rename-test") - renameConfig := dag.Payload{ - Data: map[string]any{ - "operation": "rename", - "mapping": map[string]any{ - "first_name": "firstName", - "last_name": "lastName", - "email_addr": "email", - "phone_number": "phone", - "created_at": "createdAt", - "updated_at": "updatedAt", - "is_active": "active", - }, - }, - } - renameHandler.SetConfig(renameConfig) - - result = runHandler(renameHandler, testData, "Rename Fields") - printResult("Field renaming", result) - printRequestConfigResult(testData, renameConfig, result) - - // Test adding new fields - addHandler := handlers.NewFieldHandler("add-test") - addConfig := dag.Payload{ - Data: map[string]any{ - "operation": "add", - "new_fields": map[string]any{ - "status": "active", - "version": "1.0", - "is_verified": true, - "last_login": "2023-06-20T10:30:00Z", - "department": "Engineering", - "access_level": 3, - }, - }, - } - addHandler.SetConfig(addConfig) - - result = runHandler(addHandler, testData, "Add Fields") - printResult("Adding fields", result) - printRequestConfigResult(testData, addConfig, result) - - // Test field copying - copyHandler := handlers.NewFieldHandler("copy-test") - copyConfig := dag.Payload{ - Data: map[string]any{ - "operation": "copy", - "mapping": map[string]any{ - "first_name": "display_name", - "email_addr": "contact_email", - "id": "user_id", - }, - }, - } - copyHandler.SetConfig(copyConfig) - - result = runHandler(copyHandler, testData, "Copy Fields") - printResult("Field copying", result) - printRequestConfigResult(testData, copyConfig, result) - - // Test key transformation - transformHandler := handlers.NewFieldHandler("transform-test") - transformConfig := dag.Payload{ - Data: map[string]any{ - "operation": "transform_keys", - "transformation": "snake_case", - }, - } - transformHandler.SetConfig(transformConfig) - - result = runHandler(transformHandler, testData, "Transform Keys") - printResult("Key transformation", result) - printRequestConfigResult(testData, transformConfig, result) -} - -func testDataHandler() { - fmt.Println("\n7. DATA HANDLER TESTS") - fmt.Println("=====================") - - // Test data sorting - testData := map[string]any{ - "data": []interface{}{ - map[string]any{"name": "John", "age": 30, "salary": 80000, "department": "Engineering"}, - map[string]any{"name": "Jane", "age": 25, "salary": 90000, "department": "Engineering"}, - map[string]any{"name": "Bob", "age": 35, "salary": 75000, "department": "Marketing"}, - map[string]any{"name": "Alice", "age": 28, "salary": 85000, "department": "Marketing"}, - }, - } - - sortHandler := handlers.NewDataHandler("sort-test") - sortConfig := dag.Payload{ - Data: map[string]any{ - "operation": "sort", - "sort_field": "salary", - "sort_order": "desc", - }, - } - sortHandler.SetConfig(sortConfig) - - result := runHandler(sortHandler, testData, "Sort Data by Salary (Desc)") - printResult("Data sorting", result) - printRequestConfigResult(testData, sortConfig, result) - - // Test field calculations - calcData := map[string]any{ - "base_price": 100.0, - "tax_rate": 0.15, - "shipping_cost": 10.0, - "discount": 5.0, - "quantity": 2, - } - - calcHandler := handlers.NewDataHandler("calc-test") - calcConfig := dag.Payload{ - Data: map[string]any{ - "operation": "calculate", - "calculations": map[string]any{ - "tax_amount": map[string]any{ - "operation": "multiply", - "fields": []string{"base_price", "tax_rate"}, - }, - "subtotal": map[string]any{ - "operation": "sum", - "fields": []string{"base_price", "tax_amount", "shipping_cost"}, - }, - "total": map[string]any{ - "operation": "subtract", - "fields": []string{"subtotal", "discount"}, - }, - "grand_total": map[string]any{ - "operation": "multiply", - "fields": []string{"total", "quantity"}, - }, - }, - }, - } - calcHandler.SetConfig(calcConfig) - - result = runHandler(calcHandler, calcData, "Field Calculations") - printResult("Field calculations", result) - printRequestConfigResult(calcData, calcConfig, result) - - // Test data deduplication - dupData := map[string]any{ - "data": []interface{}{ - map[string]any{"email": "john@example.com", "name": "John Doe", "id": 1}, - map[string]any{"email": "jane@example.com", "name": "Jane Smith", "id": 2}, - map[string]any{"email": "john@example.com", "name": "John D.", "id": 3}, // duplicate email - map[string]any{"email": "bob@example.com", "name": "Bob Jones", "id": 4}, - map[string]any{"email": "jane@example.com", "name": "Jane S.", "id": 5}, // duplicate email - }, - } - - dedupHandler := handlers.NewDataHandler("dedup-test") - dedupConfig := dag.Payload{ - Data: map[string]any{ - "operation": "deduplicate", - "dedupe_fields": []string{"email"}, - }, - } - dedupHandler.SetConfig(dedupConfig) - - result = runHandler(dedupHandler, dupData, "Data Deduplication") - printResult("Data deduplication", result) - printRequestConfigResult(dupData, dedupConfig, result) - - // Test type casting - castData := map[string]any{ - "user_id": "123", - "age": "30", - "salary": "75000.50", - "is_active": "true", - "score": "95.5", - "name": 123, - "is_verified": "false", - } - - castHandler := handlers.NewDataHandler("cast-test") - castConfig := dag.Payload{ - Data: map[string]any{ - "operation": "type_cast", - "cast": map[string]any{ - "user_id": "int", - "age": "int", - "salary": "float", - "is_active": "bool", - "score": "float", - "name": "string", - "is_verified": "bool", - }, - }, - } - castHandler.SetConfig(castConfig) - - result = runHandler(castHandler, castData, "Type Casting") - printResult("Type casting", result) - printRequestConfigResult(castData, castConfig, result) - - // Test conditional field setting - condData := map[string]any{ - "age": 25, - "salary": 60000, - "years_experience": 3, - } - - condHandler := handlers.NewDataHandler("conditional-test") - condConfig := dag.Payload{ - Data: map[string]any{ - "operation": "conditional_set", - "conditions": map[string]any{ - "salary_level": map[string]any{ - "condition": "salary > 70000", - "if_true": "high", - "if_false": "standard", - }, - "experience_level": map[string]any{ - "condition": "years_experience >= 5", - "if_true": "senior", - "if_false": "junior", - }, - }, - }, - } - condHandler.SetConfig(condConfig) - - result = runHandler(condHandler, condData, "Conditional Field Setting") - printResult("Conditional setting", result) - printRequestConfigResult(condData, condConfig, result) -} - -// Helper functions -func runHandler(handler dag.Processor, data map[string]any, description string) map[string]any { - fmt.Printf("\n--- Testing: %s ---\n", description) - - // Convert data to JSON payload - payload, err := json.Marshal(data) - if err != nil { - log.Printf("Error marshaling test data: %v", err) - return nil - } - - // Create a task - task := &mq.Task{ - ID: mq.NewID(), - Payload: payload, - } - - // Process the task - ctx := context.Background() - result := handler.ProcessTask(ctx, task) - - if result.Error != nil { - log.Printf("Handler error: %v", result.Error) - return nil - } - - // Parse result payload - var resultData map[string]any - if err := json.Unmarshal(result.Payload, &resultData); err != nil { - log.Printf("Error unmarshaling result: %v", err) - return nil - } - - return resultData -} - -func printResult(operation string, result map[string]any) { - if result == nil { - fmt.Printf("❌ %s failed\n", operation) - return - } - - fmt.Printf("✅ %s succeeded\n", operation) - - // Pretty print the result (truncated for readability) - resultJSON, err := json.MarshalIndent(result, "", " ") - if err != nil { - fmt.Printf("Error formatting result: %v\n", err) - return - } - - // Truncate very long results - resultStr := string(resultJSON) - if len(resultStr) > 1000 { - resultStr = resultStr[:997] + "..." - } -} - -func printRequestConfigResult(requestData map[string]any, config dag.Payload, result map[string]any) { - fmt.Println("\n=== Request Data ===") - requestJSON, err := json.MarshalIndent(requestData, "", " ") - if err != nil { - fmt.Printf("Error formatting request data: %v\n", err) - } else { - fmt.Println(string(requestJSON)) - } - - fmt.Println("\n=== Configuration ===") - configJSON, err := json.MarshalIndent(config.Data, "", " ") - if err != nil { - fmt.Printf("Error formatting configuration: %v\n", err) - } else { - fmt.Println(string(configJSON)) - } - - fmt.Println("\n=== Result ===") - if result == nil { - fmt.Println("❌ Operation failed") - } else { - resultJSON, err := json.MarshalIndent(result, "", " ") - if err != nil { - fmt.Printf("Error formatting result: %v\n", err) - } else { - fmt.Println(string(resultJSON)) - } - } -} - -// Example of chaining handlers in a DAG workflow -func exampleDAGChaining() { - fmt.Println("\n=== CHAINING HANDLERS EXAMPLE ===") - fmt.Println("==================================") - - // Sample input data with nested JSON and various formatting needs - inputData := map[string]any{ - "user_data": `{"firstName": "john", "lastName": "doe", "age": "30", "salary": "75000.50", "isActive": "true"}`, - "metadata": `{"department": "engineering", "level": "senior", "skills": ["go", "python", "javascript"]}`, - } - - fmt.Println("🔗 Chaining multiple handlers to transform data...") - fmt.Printf("Input data: %+v\n", inputData) - - // Step 1: Parse JSON strings - jsonHandler := handlers.NewJSONHandler("json-step") - jsonConfig := dag.Payload{ - Data: map[string]any{ - "operation": "parse", - "fields": []string{"user_data", "metadata"}, - }, - } - jsonHandler.SetConfig(jsonConfig) - - step1Result := runHandler(jsonHandler, inputData, "Step 1: Parse JSON strings") - - if step1Result != nil { - // Step 2: Flatten the parsed nested data - flattenHandler := handlers.NewFlattenHandler("flatten-step") - flattenConfig := dag.Payload{ - Data: map[string]any{ - "operation": "flatten_nested_objects", - "separator": "_", - }, - } - flattenHandler.SetConfig(flattenConfig) - - step2Result := runHandler(flattenHandler, step1Result, "Step 2: Flatten nested objects") - - if step2Result != nil { - // Step 3: Format name fields to proper case - formatHandler := handlers.NewFormatHandler("format-step") - formatConfig := dag.Payload{ - Data: map[string]any{ - "format_type": "capitalize", - "fields": []string{"user_data_parsed_firstName", "user_data_parsed_lastName"}, - }, - } - formatHandler.SetConfig(formatConfig) - - step3Result := runHandler(formatHandler, step2Result, "Step 3: Format names to proper case") - - if step3Result != nil { - // Step 4: Rename fields to standard naming - fieldHandler := handlers.NewFieldHandler("rename-step") - renameConfig := dag.Payload{ - Data: map[string]any{ - "operation": "rename", - "mapping": map[string]any{ - "user_data_parsed_firstName": "first_name", - "user_data_parsed_lastName": "last_name", - "user_data_parsed_age": "age", - "user_data_parsed_salary": "salary", - "user_data_parsed_isActive": "is_active", - "metadata_parsed_department": "department", - "metadata_parsed_level": "level", - }, - }, - } - fieldHandler.SetConfig(renameConfig) - - step4Result := runHandler(fieldHandler, step3Result, "Step 4: Rename fields") - - if step4Result != nil { - // Step 5: Cast data types - dataHandler := handlers.NewDataHandler("cast-step") - castConfig := dag.Payload{ - Data: map[string]any{ - "operation": "type_cast", - "cast": map[string]any{ - "age": "int", - "salary": "float", - "is_active": "bool", - }, - }, - } - dataHandler.SetConfig(castConfig) - - finalResult := runHandler(dataHandler, step4Result, "Step 5: Cast data types") - printResult("🎉 Final chained transformation result", finalResult) - } - } - } - } -} diff --git a/examples/dedup.go b/examples/dedup.go deleted file mode 100644 index ca04122..0000000 --- a/examples/dedup.go +++ /dev/null @@ -1,58 +0,0 @@ -package main - -import ( - "context" - "fmt" - "time" - - "github.com/oarkflow/json" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/examples/tasks" -) - -func main() { - handler := tasks.SchedulerHandler - callback := tasks.SchedulerCallback - - // Initialize the pool with various parameters. - pool := mq.NewPool(3, - mq.WithTaskQueueSize(5), - mq.WithMaxMemoryLoad(1000), - mq.WithHandler(handler), - mq.WithPoolCallback(callback), - mq.WithTaskStorage(mq.NewMemoryTaskStorage(10*time.Minute)), - ) - scheduler := mq.NewScheduler(pool) - scheduler.Start() - ctx := context.Background() - - // Example: Schedule an email task with deduplication. - // DedupKey here is set to the recipient's email (e.g., "user@example.com") to avoid duplicate email tasks. - emailPayload := json.RawMessage(`{"email": "user@example.com", "message": "Hello, Customer!"}`) - scheduler.AddTask(ctx, mq.NewTask("Email Task", emailPayload, "email", - mq.WithDedupKey("user@example.com"), - ), - mq.WithScheduleSpec("@every 1m"), // runs every minute for demonstration - mq.WithRecurring(), - ) - - scheduler.AddTask(ctx, mq.NewTask("Duplicate Email Task", emailPayload, "email", - mq.WithDedupKey("user@example.com"), - ), - mq.WithScheduleSpec("@every 1m"), - mq.WithRecurring(), - ) - - go func() { - for { - for _, task := range scheduler.ListScheduledTasks() { - fmt.Println("Scheduled.....", task) - } - time.Sleep(1 * time.Minute) - } - }() - - time.Sleep(10 * time.Minute) - -} diff --git a/examples/email/contact-form.html b/examples/email/contact-form.html deleted file mode 100644 index c3313c6..0000000 --- a/examples/email/contact-form.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - Contact Us - Email Notification System - - - - -
-

📧 Contact Us

-
Advanced Email Notification System with DAG Workflow
- -
-

🔄 Smart Routing: Our system automatically routes your message based on your user type - and preferences.

-
- -
-
- 📱 Instant Notifications
- Real-time email delivery -
-
- 🎯 Smart Targeting
- User-specific content -
-
- 🔒 Secure Processing
- Enterprise-grade security -
-
-
-
- {{form_groups}} -
- {{form_buttons}} -
-
-
-
- - - diff --git a/examples/email/error.html b/examples/email/error.html deleted file mode 100644 index 9935457..0000000 --- a/examples/email/error.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Email Error - - - - -
-
-

Email Processing Error

- -
- {{error_message}} -
- - {{if error_field}} -
- 🎯 Error Field: {{error_field}}
- ⚡ Action Required: Please correct the highlighted field and try again.
- 💡 Tip: Make sure all required fields are properly filled out. -
- {{end}} - - {{if retry_suggested}} -
- ⚠️ Temporary Issue: This appears to be a temporary system issue. - Please try sending your message again in a few moments.
- 🔄 Auto-Retry: Our system will automatically retry failed deliveries. -
- {{end}} - - - -
- 🔄 DAG Error Handler | Email Notification Workflow Failed
- Our advanced routing system ensures reliable message delivery. -
-
- - - diff --git a/examples/email/success.html b/examples/email/success.html deleted file mode 100644 index f26e89d..0000000 --- a/examples/email/success.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - Message Sent Successfully - - - - -
-
-

Message Sent Successfully!

- -
{{email_status}}
- -
-
-
👤 Recipient
-
{{full_name}}
-
-
-
📧 Email Address
-
{{email}}
-
-
-
🆔 Email ID
-
{{email_id}}
-
-
-
⏰ Sent At
-
{{sent_at}}
-
-
-
📨 Email Type
-
{{email_type}}
-
-
-
👥 User Type
-
{{user_type}}
-
-
-
🚨 Priority
-
{{priority}}
-
-
-
🚚 Delivery
-
{{delivery_estimate}}
-
-
- -
-
📋 Subject:
-
- {{subject}} -
-
💬 Message ({{message_length}} chars):
-
- "{{message}}" -
-
- - - -
- 🔄 Workflow Details:
- Gateway: {{gateway}} | Template: {{email_template}} | Processed: {{processed_at}}
- This message was processed through our advanced DAG workflow system with conditional routing. -
-
- - - diff --git a/examples/email_notification_dag.go b/examples/email_notification_dag.go deleted file mode 100644 index a5598aa..0000000 --- a/examples/email_notification_dag.go +++ /dev/null @@ -1,460 +0,0 @@ -package main - -import ( - "context" - "fmt" - "os" - "regexp" - "strings" - "time" - - "github.com/oarkflow/json" - - "github.com/oarkflow/mq/dag" - "github.com/oarkflow/mq/handlers" - "github.com/oarkflow/mq/utils" - - "github.com/oarkflow/jet" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/consts" -) - -type ValidateLoginNode struct { - dag.Operation -} - -func (v *ValidateLoginNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: fmt.Errorf("invalid input data: %v", err), Ctx: ctx} - } - - username, _ := inputData["username"].(string) - password, _ := inputData["password"].(string) - - if username == "" || password == "" { - inputData["validation_error"] = "Username and password are required" - inputData["error_field"] = "credentials" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - // Simulate user validation - if username == "admin" && password == "password" { - inputData["validation_status"] = "success" - } else { - inputData["validation_error"] = "Invalid username or password" - inputData["error_field"] = "credentials" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - validatedData := map[string]any{ - "username": username, - "validated_at": time.Now().Format("2006-01-02 15:04:05"), - "validation_status": "success", - } - - bt, _ := json.Marshal(validatedData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "valid"} -} - -func loginDAG() *dag.DAG { - flow := dag.NewDAG("Login Flow", "login-flow", func(taskID string, result mq.Result) { - fmt.Printf("Login flow completed for task %s: %s\n", taskID, string(result.Payload)) - }, mq.WithSyncMode(true), mq.WithLogger(nil)) - renderHTML := handlers.NewRenderHTMLNode("render-html") - renderHTML.Payload.Data = map[string]any{ - "schema_file": "login.json", - "template_file": "app/templates/basic.html", - } - flow.AddNode(dag.Page, "Login Form", "LoginForm", renderHTML, true) - flow.AddNode(dag.Function, "Validate Login", "ValidateLogin", &ValidateLoginNode{}) - flow.AddNode(dag.Page, "Error Page", "ErrorPage", &EmailErrorPageNode{}) - flow.AddNode(dag.Function, "Output", "Output", &handlers.OutputHandler{}) - flow.AddEdge(dag.Simple, "Validate Login", "LoginForm", "ValidateLogin") - flow.AddCondition("ValidateLogin", map[string]string{ - "invalid": "ErrorPage", - "valid": "Output", - }) - return flow -} - -func main() { - flow := dag.NewDAG("Email Notification System", "email-notification", func(taskID string, result mq.Result) { - fmt.Printf("Email notification workflow completed for task %s: %s\n", taskID, string(utils.RemoveRecursiveFromJSON(result.Payload, "html_content"))) - }, mq.WithSyncMode(true), mq.WithLogger(nil)) - - renderHTML := handlers.NewRenderHTMLNode("render-html") - renderHTML.Payload.Data = map[string]any{ - "schema_file": "schema.json", - "template_file": "app/templates/basic.html", - } - flow.AddDAGNode(dag.Page, "Check Login", "Login", loginDAG(), true) - flow.AddNode(dag.Page, "Contact Form", "ContactForm", renderHTML) - flow.AddNode(dag.Function, "Validate Contact Data", "ValidateContact", &ValidateContactNode{}) - flow.AddNode(dag.Function, "Check User Type", "CheckUserType", &CheckUserTypeNode{}) - flow.AddNode(dag.Function, "Send Welcome Email", "SendWelcomeEmail", &SendWelcomeEmailNode{}) - flow.AddNode(dag.Function, "Send Premium Email", "SendPremiumEmail", &SendPremiumEmailNode{}) - flow.AddNode(dag.Function, "Send Standard Email", "SendStandardEmail", &SendStandardEmailNode{}) - flow.AddNode(dag.Page, "Success Page", "SuccessPage", &SuccessPageNode{}) - flow.AddNode(dag.Page, "Error Page", "ErrorPage", &EmailErrorPageNode{}) - flow.AddEdge(dag.Simple, "Login to Contact", "Login.Output", "ContactForm") - // Define conditional flow - flow.AddEdge(dag.Simple, "Form to Validation", "ContactForm", "ValidateContact") - flow.AddCondition("ValidateContact", map[string]string{ - "valid": "CheckUserType", - "invalid": "ErrorPage", - }) - flow.AddCondition("CheckUserType", map[string]string{ - "new_user": "SendWelcomeEmail", - "premium_user": "SendPremiumEmail", - "standard_user": "SendStandardEmail", - }) - flow.AddCondition("SendWelcomeEmail", map[string]string{ - "sent": "SuccessPage", - "failed": "ErrorPage", - }) - flow.AddCondition("SendPremiumEmail", map[string]string{ - "sent": "SuccessPage", - "failed": "ErrorPage", - }) - flow.AddCondition("SendStandardEmail", map[string]string{ - "sent": "SuccessPage", - "failed": "ErrorPage", - }) - - // Start the flow - if flow.Error != nil { - panic(flow.Error) - } - - fmt.Println("Starting Email Notification DAG server on http://0.0.0.0:8084") - fmt.Println("Navigate to the URL to access the contact form") - flow.Start(context.Background(), "0.0.0.0:8084") -} - -// RenderHTMLNode - Page node with JSONSchema-based fields and custom HTML layout -// Usage: Pass JSONSchema and HTML layout to the node for dynamic form rendering and validation - -// ValidateContactNode - Validates contact form data -type ValidateContactNode struct { - dag.Operation -} - -func (v *ValidateContactNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{ - Error: fmt.Errorf("invalid input data: %v", err), - Ctx: ctx, - } - } - - // Extract form data - firstName, _ := inputData["first_name"].(string) - lastName, _ := inputData["last_name"].(string) - email, _ := inputData["email"].(string) - userType, _ := inputData["user_type"].(string) - priority, _ := inputData["priority"].(string) - subject, _ := inputData["subject"].(string) - message, _ := inputData["message"].(string) - - // Validate required fields - if firstName == "" { - inputData["validation_error"] = "First name is required" - inputData["error_field"] = "first_name" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if lastName == "" { - inputData["validation_error"] = "Last name is required" - inputData["error_field"] = "last_name" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if email == "" { - inputData["validation_error"] = "Email address is required" - inputData["error_field"] = "email" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - // Validate email format - emailRegex := regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`) - if !emailRegex.MatchString(email) { - inputData["validation_error"] = "Please enter a valid email address" - inputData["error_field"] = "email" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if userType == "" { - inputData["validation_error"] = "Please select your user type" - inputData["error_field"] = "user_type" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if priority == "" { - inputData["validation_error"] = "Please select a priority level" - inputData["error_field"] = "priority" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if subject == "" { - inputData["validation_error"] = "Subject is required" - inputData["error_field"] = "subject" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if message == "" { - inputData["validation_error"] = "Message is required" - inputData["error_field"] = "message" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - // Check for spam patterns - spamPatterns := []string{"click here", "free money", "act now", "limited time"} - messageLower := strings.ToLower(message) - subjectLower := strings.ToLower(subject) - - for _, pattern := range spamPatterns { - if strings.Contains(messageLower, pattern) || strings.Contains(subjectLower, pattern) { - inputData["validation_error"] = "Message contains prohibited content" - inputData["error_field"] = "message" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - } - - // All validations passed - validatedData := map[string]any{ - "first_name": firstName, - "last_name": lastName, - "full_name": fmt.Sprintf("%s %s", firstName, lastName), - "email": email, - "user_type": userType, - "priority": priority, - "subject": subject, - "message": message, - "validated_at": time.Now().Format("2006-01-02 15:04:05"), - "validation_status": "success", - "message_length": len(message), - } - - bt, _ := json.Marshal(validatedData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "valid"} -} - -// CheckUserTypeNode - Determines routing based on user type -type CheckUserTypeNode struct { - dag.Operation -} - -func (c *CheckUserTypeNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - userType, _ := inputData["user_type"].(string) - - // Add timestamp and additional metadata - inputData["processed_at"] = time.Now().Format("2006-01-02 15:04:05") - inputData["routing_decision"] = userType - - var conditionStatus string - switch userType { - case "new": - conditionStatus = "new_user" - inputData["email_template"] = "welcome" - case "premium": - conditionStatus = "premium_user" - inputData["email_template"] = "premium" - case "standard": - conditionStatus = "standard_user" - inputData["email_template"] = "standard" - default: - conditionStatus = "standard_user" - inputData["email_template"] = "standard" - } - - fmt.Printf("🔀 Routing decision: %s -> %s\n", userType, conditionStatus) - - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: conditionStatus} -} - -// Email sending nodes -type SendWelcomeEmailNode struct { - dag.Operation -} - -func (s *SendWelcomeEmailNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return s.sendEmail(ctx, task, "Welcome to our platform! 🎉") -} - -type SendPremiumEmailNode struct { - dag.Operation -} - -func (s *SendPremiumEmailNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return s.sendEmail(ctx, task, "Premium Support Response 💎") -} - -type SendStandardEmailNode struct { - dag.Operation -} - -func (s *SendStandardEmailNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return s.sendEmail(ctx, task, "Thank you for contacting us ⭐") -} - -// Helper method for email sending -func (s *SendWelcomeEmailNode) sendEmail(ctx context.Context, task *mq.Task, emailType string) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - email, _ := inputData["email"].(string) - - // Simulate email sending delay - time.Sleep(300 * time.Millisecond) - - // Simulate occasional failures for demo purposes - timestamp := time.Now() - success := timestamp.Second()%15 != 0 // 93% success rate - - if !success { - errorData := inputData - errorData["email_status"] = "failed" - errorData["error_message"] = "Email gateway temporarily unavailable. Please try again." - errorData["sent_at"] = timestamp.Format("2006-01-02 15:04:05") - errorData["retry_suggested"] = true - - bt, _ := json.Marshal(errorData) - return mq.Result{ - Payload: bt, - Ctx: ctx, - ConditionStatus: "failed", - } - } - - // Generate mock email ID and response - emailID := fmt.Sprintf("EMAIL_%d_%s", timestamp.Unix(), email[0:3]) - - resultData := inputData - resultData["email_status"] = "sent" - resultData["email_id"] = emailID - resultData["email_type"] = emailType - resultData["sent_at"] = timestamp.Format("2006-01-02 15:04:05") - resultData["delivery_estimate"] = "Instant" - resultData["gateway"] = "MockEmail Gateway" - - fmt.Printf("📧 Email sent successfully! Type: %s, ID: %s, To: %s\n", emailType, emailID, email) - - bt, _ := json.Marshal(resultData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "sent"} -} - -// Helper methods for other email nodes -func (s *SendPremiumEmailNode) sendEmail(ctx context.Context, task *mq.Task, emailType string) mq.Result { - node := &SendWelcomeEmailNode{} - return node.sendEmail(ctx, task, emailType) -} - -func (s *SendStandardEmailNode) sendEmail(ctx context.Context, task *mq.Task, emailType string) mq.Result { - node := &SendWelcomeEmailNode{} - return node.sendEmail(ctx, task, emailType) -} - -// SuccessPageNode - Shows successful email result -type SuccessPageNode struct { - dag.Operation -} - -func (s *SuccessPageNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - htmlTemplate, err := os.ReadFile("email/success.html") - if err != nil { - return mq.Result{Error: fmt.Errorf("failed to read success template: %v", err)} - } - - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - rs, err := parser.ParseTemplate(string(htmlTemplate), inputData) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - finalData := map[string]any{ - "html_content": rs, - "result": inputData, - "step": "success", - } - bt, _ := json.Marshal(finalData) - return mq.Result{Payload: bt, Ctx: ctx} -} - -// EmailErrorPageNode - Shows validation or sending errors -type EmailErrorPageNode struct { - dag.Operation -} - -func (e *EmailErrorPageNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - // Determine error type and message - errorMessage, _ := inputData["validation_error"].(string) - errorField, _ := inputData["error_field"].(string) - emailError, _ := inputData["error_message"].(string) - - if errorMessage == "" && emailError != "" { - errorMessage = emailError - errorField = "email_sending" - } - if errorMessage == "" { - errorMessage = "An unknown error occurred" - } - - htmlTemplate, err := os.ReadFile("email/error.html") - if err != nil { - return mq.Result{Error: fmt.Errorf("failed to read error template: %v", err)} - } - - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - templateData := map[string]any{ - "error_message": errorMessage, - "error_field": errorField, - "retry_suggested": inputData["retry_suggested"], - } - - rs, err := parser.ParseTemplate(string(htmlTemplate), templateData) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - finalData := map[string]any{ - "html_content": rs, - "error_data": inputData, - "step": "error", - } - bt, _ := json.Marshal(finalData) - return mq.Result{Payload: bt, Ctx: ctx} -} diff --git a/examples/enhanced_pool_demo.go b/examples/enhanced_pool_demo.go deleted file mode 100644 index 55a80b5..0000000 --- a/examples/enhanced_pool_demo.go +++ /dev/null @@ -1,164 +0,0 @@ -// This is a demo showing the enhanced worker pool capabilities -// Run with: go run enhanced_pool_demo.go - -package main - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/oarkflow/mq" -) - -// DemoHandler demonstrates a simple task handler -func DemoHandler(ctx context.Context, task *mq.Task) mq.Result { - fmt.Printf("Processing task: %s\n", task.ID) - - // Simulate some work - time.Sleep(100 * time.Millisecond) - - return mq.Result{ - TaskID: task.ID, - Status: mq.Completed, - Payload: task.Payload, - } -} - -// DemoCallback demonstrates result processing -func DemoCallback(ctx context.Context, result mq.Result) error { - if result.Error != nil { - fmt.Printf("Task %s failed: %v\n", result.TaskID, result.Error) - } else { - fmt.Printf("Task %s completed successfully\n", result.TaskID) - } - return nil -} - -func main() { - fmt.Println("=== Enhanced Worker Pool Demo ===") - - // Create task storage - storage := mq.NewMemoryTaskStorage(1 * time.Hour) - - // Configure circuit breaker - circuitBreaker := mq.CircuitBreakerConfig{ - Enabled: true, - FailureThreshold: 5, - ResetTimeout: 30 * time.Second, - } - - // Create pool with enhanced configuration - pool := mq.NewPool(5, - mq.WithHandler(DemoHandler), - mq.WithPoolCallback(DemoCallback), - mq.WithTaskStorage(storage), - mq.WithBatchSize(3), - mq.WithMaxMemoryLoad(50*1024*1024), // 50MB - mq.WithCircuitBreaker(circuitBreaker), - ) - - fmt.Printf("Worker pool created with %d workers\n", 5) - - // Enqueue some tasks - fmt.Println("\n=== Enqueueing Tasks ===") - for i := 0; i < 10; i++ { - task := mq.NewTask( - fmt.Sprintf("demo-task-%d", i), - []byte(fmt.Sprintf(`{"message": "Hello from task %d", "timestamp": "%s"}`, i, time.Now().Format(time.RFC3339))), - "demo", - ) - - // Add some tasks with higher priority - priority := 1 - if i%3 == 0 { - priority = 5 // Higher priority - } - - err := pool.EnqueueTask(context.Background(), task, priority) - if err != nil { - log.Printf("Failed to enqueue task %d: %v", i, err) - } else { - fmt.Printf("Enqueued task %s with priority %d\n", task.ID, priority) - } - } - - // Monitor progress - fmt.Println("\n=== Monitoring Progress ===") - for i := 0; i < 10; i++ { - time.Sleep(500 * time.Millisecond) - - metrics := pool.FormattedMetrics() - health := pool.GetHealthStatus() - - fmt.Printf("Progress: %d/%d completed, %d errors, Queue: %d, Healthy: %v\n", - metrics.CompletedTasks, - metrics.TotalTasks, - metrics.ErrorCount, - health.QueueDepth, - health.IsHealthy, - ) - - if metrics.CompletedTasks >= 10 { - break - } - } - - // Display final metrics - fmt.Println("\n=== Final Metrics ===") - finalMetrics := pool.FormattedMetrics() - fmt.Printf("Total Tasks: %d\n", finalMetrics.TotalTasks) - fmt.Printf("Completed: %d\n", finalMetrics.CompletedTasks) - fmt.Printf("Errors: %d\n", finalMetrics.ErrorCount) - fmt.Printf("Memory Used: %s\n", finalMetrics.CurrentMemoryUsed) - fmt.Printf("Execution Time: %s\n", finalMetrics.CumulativeExecution) - fmt.Printf("Average Execution: %s\n", finalMetrics.AverageExecution) - - // Test dynamic worker scaling - fmt.Println("\n=== Dynamic Scaling Demo ===") - fmt.Printf("Current workers: %d\n", 5) - - pool.AdjustWorkerCount(8) - fmt.Printf("Scaled up to: %d workers\n", 8) - - time.Sleep(1 * time.Second) - - pool.AdjustWorkerCount(3) - fmt.Printf("Scaled down to: %d workers\n", 3) - - // Test health status - fmt.Println("\n=== Health Status ===") - health := pool.GetHealthStatus() - fmt.Printf("Health Status: %+v\n", health) - - // Test DLQ (simulate some failures) - fmt.Println("\n=== Dead Letter Queue Demo ===") - dlqTasks := pool.DLQ().Tasks() - fmt.Printf("Tasks in DLQ: %d\n", len(dlqTasks)) - - // Test configuration update - fmt.Println("\n=== Configuration Update Demo ===") - currentConfig := pool.GetCurrentConfig() - fmt.Printf("Current batch size: %d\n", currentConfig.BatchSize) - - newConfig := currentConfig - newConfig.BatchSize = 5 - newConfig.NumberOfWorkers = 4 - - err := pool.UpdateConfig(&newConfig) - if err != nil { - log.Printf("Failed to update config: %v", err) - } else { - fmt.Printf("Updated batch size to: %d\n", newConfig.BatchSize) - fmt.Printf("Updated worker count to: %d\n", newConfig.NumberOfWorkers) - } - - // Graceful shutdown - fmt.Println("\n=== Graceful Shutdown ===") - fmt.Println("Shutting down pool...") - pool.Stop() - fmt.Println("Pool shutdown completed") - - fmt.Println("\n=== Demo Complete ===") -} diff --git a/examples/form.go b/examples/form.go deleted file mode 100644 index b63b356..0000000 --- a/examples/form.go +++ /dev/null @@ -1,160 +0,0 @@ -package main - -import ( - "context" - "fmt" - - "github.com/oarkflow/json" - - "github.com/oarkflow/mq/dag" - - "github.com/oarkflow/jet" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/consts" -) - -func main() { - flow := dag.NewDAG("Multi-Step Form", "multi-step-form", func(taskID string, result mq.Result) { - fmt.Printf("Final result for task %s: %s\n", taskID, string(result.Payload)) - }) - flow.AddNode(dag.Page, "Form Step1", "FormStep1", &FormStep1{}) - flow.AddNode(dag.Page, "Form Step2", "FormStep2", &FormStep2{}) - flow.AddNode(dag.Page, "Form Result", "FormResult", &FormResult{}) - - // Define edges - flow.AddEdge(dag.Simple, "Form Step1", "FormStep1", "FormStep2") - flow.AddEdge(dag.Simple, "Form Step2", "FormStep2", "FormResult") - - // Start the flow - if flow.Error != nil { - panic(flow.Error) - } - flow.Start(context.Background(), "0.0.0.0:8082") -} - -type FormStep1 struct { - dag.Operation -} - -func (p *FormStep1) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - bt := []byte(` - - - -
- - - - - -
- - - -
- {{ if show_voting_controls }} - - - - {{ else }} -

You are not eligible to vote.

- {{ end }} -
- - -`) - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - inputData["task_id"] = ctx.Value("task_id") - rs, err := parser.ParseTemplate(string(bt), inputData) - if err != nil { - fmt.Println("FormStep2", inputData) - return mq.Result{Error: err, Ctx: ctx} - } - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - inputData["html_content"] = rs - bt, _ = json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx} -} - -type FormResult struct { - dag.Operation -} - -func (p *FormResult) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - // Load HTML template for results - bt := []byte(` - - - -

Form Summary

-

Name: {{ name }}

-

Age: {{ age }}

-{{ if register_vote }} -

You have registered to vote!

-{{ else }} -

You did not register to vote.

-{{ end }} - - - - -`) - var inputData map[string]any - if task.Payload != nil { - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - } - if inputData != nil { - if isEligible, ok := inputData["register_vote"].(string); ok { - inputData["register_vote"] = isEligible - } else { - inputData["register_vote"] = false - } - } - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - rs, err := parser.ParseTemplate(string(bt), inputData) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - inputData["html_content"] = rs - bt, _ = json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx} -} diff --git a/examples/form.json b/examples/form.json deleted file mode 100644 index ef87dab..0000000 --- a/examples/form.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "Multi-Step Form", - "key": "multi-step-form", - "nodes": [ - { - "name": "Form Step1", - "id": "FormStep1", - "node": "Page", - "data": { - "template": "
", - "mapping": {} - }, - "first_node": true - }, - { - "name": "Form Step2", - "id": "FormStep2", - "node": "Page", - "data": { - "template": "
{{ if show_voting_controls }}{{ else }}

You are not eligible to vote.

{{ end }}
", - "mapping": {} - } - }, - { - "name": "Form Result", - "id": "FormResult", - "node": "Page", - "data": { - "template": "

Form Summary

Name: {{ name }}

Age: {{ age }}

{{ if register_vote }}

You have registered to vote!

{{ else }}

You did not register to vote.

{{ end }}", - "mapping": {} - } - } - ], - "edges": [ - { - "source": "FormStep1", - "target": ["FormStep2"] - }, - { - "source": "FormStep2", - "target": ["FormResult"] - } - ] -} diff --git a/examples/generate_cert.go b/examples/generate_cert.go deleted file mode 100644 index 77b368d..0000000 --- a/examples/generate_cert.go +++ /dev/null @@ -1,468 +0,0 @@ -package main - -import ( - "crypto" - "crypto/ecdsa" - "crypto/ed25519" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "crypto/sha256" - "crypto/x509" - "crypto/x509/pkix" - "encoding/asn1" - "encoding/pem" - "errors" - "fmt" - "log" - "math/big" - "net" - "os" - "time" - - "github.com/oarkflow/json" -) - -func main() { - - caCertDER, caPrivateKey := generateCA("P384", "My Secure CA") - saveCertificate("ca.crt", caCertDER) - signFileContent("ca.crt", caPrivateKey) - - caCert, err := x509.ParseCertificate(caCertDER) - if err != nil { - log.Fatal("Failed to parse CA certificate:", err) - } - - serverCertDER, serverKey := generateServerCert(caCert, caPrivateKey, "P256", "server.example.com", - []string{"localhost", "server.example.com"}, []net.IP{net.ParseIP("127.0.0.1")}) - saveCertificate("server.crt", serverCertDER) - signFileContent("server.crt", caPrivateKey) - - clientCertDER, clientKey := generateClientCert(caCert, caPrivateKey, "client-user") - saveCertificate("client.crt", clientCertDER) - signFileContent("client.crt", caPrivateKey) - - codeSignCertDER, codeSignKey := generateCodeSigningCert(caCert, caPrivateKey, 2048, "file-signer") - saveCertificate("code_sign.crt", codeSignCertDER) - signFileContent("code_sign.crt", caPrivateKey) - - revokedCerts := []pkix.RevokedCertificate{ - {SerialNumber: big.NewInt(1), RevocationTime: time.Now()}, - } - generateCRL(caCert, caPrivateKey, revokedCerts) - - if err := validateClientCert("client.crt", "ca.crt"); err != nil { - log.Fatal("Client certificate validation failed:", err) - } - - log.Println("All certificates generated and signed successfully.") - - dss := NewDigitalSignatureService(clientKey) - - plainText := "The quick brown fox jumps over the lazy dog." - textSig, err := dss.SignText(plainText) - if err != nil { - log.Fatal("Failed to sign plain text:", err) - } - if err := dss.VerifyText(plainText, textSig); err != nil { - log.Fatal("Plain text signature verification failed:", err) - } - log.Println("Plain text signature verified.") - - jsonData := map[string]interface{}{ - "name": "Alice", - "age": 30, - "premium": true, - } - jsonSig, err := dss.SignJSON(jsonData) - if err != nil { - log.Fatal("Failed to sign JSON data:", err) - } - fmt.Println(string(jsonSig)) - if err := dss.VerifyJSON(jsonData, jsonSig); err != nil { - log.Fatal("JSON signature verification failed:", err) - } - log.Println("JSON signature verified.") - - _ = serverKey - _ = codeSignKey -} - -type DigitalSignatureService struct { - Signer crypto.Signer - PublicKey crypto.PublicKey -} - -func NewDigitalSignatureService(signer crypto.Signer) *DigitalSignatureService { - return &DigitalSignatureService{ - Signer: signer, - PublicKey: signer.Public(), - } -} - -func (dss *DigitalSignatureService) SignData(data []byte) ([]byte, error) { - switch dss.Signer.(type) { - case ed25519.PrivateKey: - return dss.Signer.Sign(rand.Reader, data, crypto.Hash(0)) - default: - h := sha256.New() - h.Write(data) - hashed := h.Sum(nil) - return dss.Signer.Sign(rand.Reader, hashed, crypto.SHA256) - } -} - -func (dss *DigitalSignatureService) VerifyData(data, signature []byte) error { - switch pub := dss.PublicKey.(type) { - case ed25519.PublicKey: - if ed25519.Verify(pub, data, signature) { - return nil - } - return errors.New("ed25519 signature verification failed") - case *rsa.PublicKey: - h := sha256.New() - h.Write(data) - hashed := h.Sum(nil) - return rsa.VerifyPKCS1v15(pub, crypto.SHA256, hashed, signature) - case *ecdsa.PublicKey: - h := sha256.New() - h.Write(data) - hashed := h.Sum(nil) - var sig struct { - R, S *big.Int - } - if _, err := asn1.Unmarshal(signature, &sig); err != nil { - return err - } - if ecdsa.Verify(pub, hashed, sig.R, sig.S) { - return nil - } - return errors.New("ecdsa signature verification failed") - default: - return errors.New("unsupported public key type") - } -} - -func (dss *DigitalSignatureService) SignText(text string) ([]byte, error) { - return dss.SignData([]byte(text)) -} - -func (dss *DigitalSignatureService) VerifyText(text string, signature []byte) error { - return dss.VerifyData([]byte(text), signature) -} - -func (dss *DigitalSignatureService) SignJSON(v interface{}) ([]byte, error) { - b, err := json.Marshal(v) - if err != nil { - return nil, err - } - return dss.SignData(b) -} - -func (dss *DigitalSignatureService) VerifyJSON(v interface{}, signature []byte) error { - b, err := json.Marshal(v) - if err != nil { - return err - } - return dss.VerifyData(b, signature) -} - -func generateCA(curveName string, commonName string) ([]byte, crypto.Signer) { - privKey, err := generatePrivateKey("ECDSA", curveName) - if err != nil { - log.Fatal("CA key generation failed:", err) - } - subject := pkix.Name{ - CommonName: commonName, - Organization: []string{"Secure CA Org"}, - Country: []string{"US"}, - } - template := x509.Certificate{ - SerialNumber: randomSerial(), - Subject: subject, - NotBefore: time.Now(), - NotAfter: time.Now().AddDate(10, 0, 0), - IsCA: true, - KeyUsage: x509.KeyUsageCertSign | x509.KeyUsageCRLSign, - BasicConstraintsValid: true, - MaxPathLenZero: true, - } - certBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, privKey.Public(), privKey) - if err != nil { - log.Fatal("CA cert creation failed:", err) - } - - return certBytes, privKey -} - -func generateServerCert(caCert *x509.Certificate, caKey crypto.Signer, keyType string, commonName string, dnsNames []string, ips []net.IP) ([]byte, crypto.Signer) { - privKey, err := generatePrivateKey("ECDSA", keyType) - if err != nil { - log.Fatal("Server key generation failed:", err) - } - template := x509.Certificate{ - SerialNumber: randomSerial(), - Subject: pkix.Name{ - CommonName: commonName, - }, - NotBefore: time.Now(), - NotAfter: time.Now().AddDate(1, 0, 0), - KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, - DNSNames: dnsNames, - IPAddresses: ips, - } - certBytes, err := x509.CreateCertificate(rand.Reader, &template, caCert, privKey.Public(), caKey) - if err != nil { - log.Fatal("Server cert creation failed:", err) - } - return certBytes, privKey -} - -func generateClientCert(caCert *x509.Certificate, caKey crypto.Signer, commonName string) ([]byte, crypto.Signer) { - privKey, err := generatePrivateKey("Ed25519", nil) - if err != nil { - log.Fatal("Client key generation failed:", err) - } - template := x509.Certificate{ - SerialNumber: randomSerial(), - Subject: pkix.Name{ - CommonName: commonName, - }, - NotBefore: time.Now(), - NotAfter: time.Now().AddDate(1, 0, 0), - KeyUsage: x509.KeyUsageDigitalSignature, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth}, - } - certBytes, err := x509.CreateCertificate(rand.Reader, &template, caCert, privKey.Public(), caKey) - if err != nil { - log.Fatal("Client cert creation failed:", err) - } - return certBytes, privKey -} - -func generateCodeSigningCert(caCert *x509.Certificate, caKey crypto.Signer, rsaBits int, commonName string) ([]byte, crypto.Signer) { - privKey, err := generatePrivateKey("RSA", rsaBits) - if err != nil { - log.Fatal("Code signing key generation failed:", err) - } - template := x509.Certificate{ - SerialNumber: randomSerial(), - Subject: pkix.Name{ - CommonName: commonName, - }, - NotBefore: time.Now(), - NotAfter: time.Now().AddDate(5, 0, 0), - KeyUsage: x509.KeyUsageDigitalSignature, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageCodeSigning}, - } - certBytes, err := x509.CreateCertificate(rand.Reader, &template, caCert, privKey.Public(), caKey) - if err != nil { - log.Fatal("Code signing cert creation failed:", err) - } - return certBytes, privKey -} - -func generateCRL(caCert *x509.Certificate, caKey crypto.Signer, revoked []pkix.RevokedCertificate) { - crlTemplate := &x509.RevocationList{ - SignatureAlgorithm: caCert.SignatureAlgorithm, - RevokedCertificates: revoked, - Number: randomSerial(), - ThisUpdate: time.Now(), - NextUpdate: time.Now().AddDate(0, 1, 0), - Issuer: caCert.Subject, - } - crlBytes, err := x509.CreateRevocationList(rand.Reader, crlTemplate, caCert, caKey) - if err != nil { - log.Fatal("CRL creation failed:", err) - } - saveCRL("ca.crl", crlBytes) - signFileContent("ca.crl", caKey) -} - -func generatePrivateKey(algo string, param interface{}) (crypto.Signer, error) { - switch algo { - case "RSA": - bits, ok := param.(int) - if !ok { - return nil, fmt.Errorf("invalid RSA parameter") - } - return rsa.GenerateKey(rand.Reader, bits) - case "ECDSA": - curveName, ok := param.(string) - if !ok { - return nil, fmt.Errorf("invalid ECDSA parameter") - } - var curve elliptic.Curve - switch curveName { - case "P224": - curve = elliptic.P224() - case "P256": - curve = elliptic.P256() - case "P384": - curve = elliptic.P384() - case "P521": - curve = elliptic.P521() - default: - return nil, fmt.Errorf("unsupported curve") - } - return ecdsa.GenerateKey(curve, rand.Reader) - case "Ed25519": - _, priv, err := ed25519.GenerateKey(rand.Reader) - return priv, err - default: - return nil, fmt.Errorf("unsupported algorithm") - } -} - -func saveCertificate(filename string, cert []byte) { - err := os.WriteFile(filename, pem.EncodeToMemory(&pem.Block{ - Type: "CERTIFICATE", - Bytes: cert, - }), 0644) - if err != nil { - log.Fatal("Failed to save certificate:", err) - } -} - -func savePrivateKey(filename string, key crypto.Signer) { - keyBytes, err := x509.MarshalPKCS8PrivateKey(key) - if err != nil { - log.Fatal("Failed to marshal private key:", err) - } - err = os.WriteFile(filename, pem.EncodeToMemory(&pem.Block{ - Type: "PRIVATE KEY", - Bytes: keyBytes, - }), 0600) - if err != nil { - log.Fatal("Failed to save private key:", err) - } -} - -func saveCRL(filename string, crl []byte) { - err := os.WriteFile(filename, pem.EncodeToMemory(&pem.Block{ - Type: "X509 CRL", - Bytes: crl, - }), 0644) - if err != nil { - log.Fatal("Failed to save CRL:", err) - } -} - -func signFileContent(filename string, signer crypto.Signer) { - data, err := os.ReadFile(filename) - if err != nil { - log.Fatal("Failed to read file for signing:", err) - } - sig, err := signData(data, signer) - if err != nil { - log.Fatal("Failed to sign file content:", err) - } - err = os.WriteFile(filename+".sig", sig, 0644) - if err != nil { - log.Fatal("Failed to save signature file:", err) - } -} - -func signData(data []byte, key crypto.Signer) ([]byte, error) { - switch key.(type) { - case ed25519.PrivateKey: - return key.Sign(rand.Reader, data, crypto.Hash(0)) - default: - h := sha256.New() - h.Write(data) - hashed := h.Sum(nil) - return key.Sign(rand.Reader, hashed, crypto.SHA256) - } -} - -func verifyDataSignature(data, signature []byte, pub crypto.PublicKey) error { - switch pub := pub.(type) { - case ed25519.PublicKey: - if ed25519.Verify(pub, data, signature) { - return nil - } - return errors.New("ed25519 signature verification failed") - case *rsa.PublicKey: - h := sha256.New() - h.Write(data) - hashed := h.Sum(nil) - return rsa.VerifyPKCS1v15(pub, crypto.SHA256, hashed, signature) - case *ecdsa.PublicKey: - h := sha256.New() - h.Write(data) - hashed := h.Sum(nil) - var sig struct { - R, S *big.Int - } - if _, err := asn1.Unmarshal(signature, &sig); err != nil { - return err - } - if ecdsa.Verify(pub, hashed, sig.R, sig.S) { - return nil - } - return errors.New("ecdsa signature verification failed") - default: - return errors.New("unsupported public key type") - } -} - -func verifyFileContentSignature(filename, sigFilename string, pub crypto.PublicKey) error { - data, err := os.ReadFile(filename) - if err != nil { - return fmt.Errorf("failed to read file: %w", err) - } - sig, err := os.ReadFile(sigFilename) - if err != nil { - return fmt.Errorf("failed to read signature file: %w", err) - } - return verifyDataSignature(data, sig, pub) -} - -func validateClientCert(clientCertPath, caCertPath string) error { - caCertBytes, err := os.ReadFile(caCertPath) - if err != nil { - return err - } - block, _ := pem.Decode(caCertBytes) - if block == nil { - return fmt.Errorf("failed to decode CA cert PEM") - } - caCert, err := x509.ParseCertificate(block.Bytes) - if err != nil { - return err - } - clientCertBytes, err := os.ReadFile(clientCertPath) - if err != nil { - return err - } - block, _ = pem.Decode(clientCertBytes) - if block == nil { - return fmt.Errorf("failed to decode client cert PEM") - } - clientCert, err := x509.ParseCertificate(block.Bytes) - if err != nil { - return err - } - opts := x509.VerifyOptions{ - Roots: x509.NewCertPool(), - KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth}, - } - opts.Roots.AddCert(caCert) - if _, err = clientCert.Verify(opts); err != nil { - return fmt.Errorf("certificate chain verification failed: %w", err) - } - if err = verifyFileContentSignature(clientCertPath, clientCertPath+".sig", caCert.PublicKey); err != nil { - return fmt.Errorf("file signature verification failed: %w", err) - } - return nil -} - -func randomSerial() *big.Int { - serial, err := rand.Int(rand.Reader, new(big.Int).Lsh(big.NewInt(1), 128)) - if err != nil { - log.Fatal("failed to generate serial number:", err) - } - return serial -} diff --git a/examples/hmac.go b/examples/hmac.go deleted file mode 100644 index e8e0038..0000000 --- a/examples/hmac.go +++ /dev/null @@ -1,26 +0,0 @@ -package main - -import ( - "crypto/rand" - "encoding/hex" - "fmt" -) - -func generateHMACKey() ([]byte, error) { - key := make([]byte, 32) // 32 bytes = 256 bits - _, err := rand.Read(key) - if err != nil { - return nil, err - } - return key, nil -} - -func main() { - hmacKey, err := generateHMACKey() - if err != nil { - fmt.Println("Error generating HMAC key:", err) - return - } - - fmt.Println("HMAC Key (hex):", hex.EncodeToString(hmacKey)) -} diff --git a/examples/json.go b/examples/json.go deleted file mode 100644 index dc115c7..0000000 --- a/examples/json.go +++ /dev/null @@ -1,166 +0,0 @@ -package main - -import ( - "context" - "fmt" - "log" - - "github.com/oarkflow/jet" - "github.com/oarkflow/json" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/consts" - "github.com/oarkflow/mq/dag" -) - -type Data struct { - Template string `json:"template"` - Mapping map[string]string `json:"mapping"` - AdditionalData map[string]any `json:"additional_data"` -} - -type Node struct { - Name string `json:"name"` - ID string `json:"id"` - Node string `json:"node"` - Data Data `json:"data"` - FirstNode bool `json:"first_node"` -} - -type Edge struct { - Source string `json:"source"` - Target []string `json:"target"` -} - -type Handler struct { - Name string `json:"name"` - Key string `json:"key"` - Nodes []Node `json:"nodes"` - Edges []Edge `json:"edges"` -} - -func CreateDAGFromJSON(config string) (*dag.DAG, error) { - var handler Handler - err := json.Unmarshal([]byte(config), &handler) - if err != nil { - return nil, fmt.Errorf("failed to parse JSON: %v", err) - } - - flow := dag.NewDAG(handler.Name, handler.Key, func(taskID string, result mq.Result) { - fmt.Printf("Final result for task %s: %s\n", taskID, string(result.Payload)) - }) - - nodeMap := make(map[string]mq.Processor) - - for _, node := range handler.Nodes { - op := &HTMLProcessor{ - Operation: dag.Operation{ - Payload: dag.Payload{ - Mapping: node.Data.Mapping, - Data: node.Data.AdditionalData, - }, - }, - Template: node.Data.Template, - } - nodeMap[node.ID] = op - flow.AddNode(dag.Page, node.Name, node.ID, op, node.FirstNode) - } - - for _, edge := range handler.Edges { - for _, target := range edge.Target { - flow.AddEdge(dag.Simple, edge.Source, edge.Source, target) - } - } - - if flow.Error != nil { - return nil, flow.Error - } - return flow, nil -} - -type HTMLProcessor struct { - dag.Operation - Template string -} - -func (p *HTMLProcessor) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - data := map[string]interface{}{ - "task_id": ctx.Value("task_id"), - } - p.Debug(ctx, task) - for key, value := range p.Payload.Mapping { - data[key] = value - } - - rs, err := parser.ParseTemplate(p.Template, data) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - response := map[string]interface{}{ - "html_content": rs, - } - payload, _ := json.Marshal(response) - - return mq.Result{Payload: payload, Ctx: ctx} -} - -func main() { - // JSON configuration - jsonConfig := `{ - "name": "Multi-Step Form", - "key": "multi-step-form", - "nodes": [ - { - "name": "Form Step1", - "id": "FormStep1", - "node": "Page", - "data": { - "additional_data": {"debug": true}, - "template": "\n\n
\n \n \n \n \n \n
\n\n", - "mapping": {} - }, - "first_node": true - }, - { - "name": "Form Step2", - "id": "FormStep2", - "node": "Page", - "data": { - "template": "\n\n
\n {{ if show_voting_controls }}\n \n \n \n {{ else }}\n

You are not eligible to vote.

\n {{ end }}\n
\n\n", - "mapping": { - "show_voting_controls": "conditional" - } - } - }, - { - "name": "Form Result", - "id": "FormResult", - "node": "Page", - "data": { - "template": "\n\n

Form Summary

\n

Name: {{ name }}

\n

Age: {{ age }}

\n{{ if register_vote }}\n

You have registered to vote!

\n{{ else }}\n

You did not register to vote.

\n{{ end }}\n\n", - "mapping": {} - } - } - ], - "edges": [ - { - "source": "FormStep1", - "target": ["FormStep2"] - }, - { - "source": "FormStep2", - "target": ["FormResult"] - } - ] -}` - - flow, err := CreateDAGFromJSON(jsonConfig) - if err != nil { - log.Fatalf("Error creating DAG: %v", err) - } - - flow.Start(context.Background(), "0.0.0.0:8082") -} diff --git a/examples/login.json b/examples/login.json deleted file mode 100644 index 8f9cec1..0000000 --- a/examples/login.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "type": "object", - "properties": { - "username": { - "type": "string", - "title": "Username or Email", - "order": 1, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "name": "username", - "placeholder": "Enter your username or email" - } - }, - "password": { - "type": "string", - "title": "Password", - "order": 2, - "ui": { - "element": "input", - "type": "password", - "class": "form-group", - "name": "password", - "placeholder": "Enter your password" - } - }, - "remember_me": { - "type": "boolean", - "title": "Remember Me", - "order": 3, - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-check", - "name": "remember_me" - } - } - }, - "required": [ "username", "password" ], - "form": { - "class": "form-horizontal", - "action": "/process?task_id={{task_id}}&next=true", - "method": "POST", - "enctype": "application/x-www-form-urlencoded", - "groups": [ - { - "title": "Login Credentials", - "fields": [ "username", "password", "remember_me" ] - } - ], - "submit": { - "type": "submit", - "label": "Log In", - "class": "btn btn-primary" - }, - "reset": { - "type": "reset", - "label": "Clear", - "class": "btn btn-secondary" - } - } -} diff --git a/examples/minimal_admin/main.go b/examples/minimal_admin/main.go deleted file mode 100644 index 6355e89..0000000 --- a/examples/minimal_admin/main.go +++ /dev/null @@ -1,121 +0,0 @@ -package main - -import ( - "context" - "fmt" - "log" - "net/http" - "time" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/logger" -) - -// Example: Proper timeout patterns for different connection types -func demonstrateTimeoutPatterns() { - fmt.Println("\n=== Connection Timeout Patterns ===") - - // ✅ GOOD: No I/O timeout for persistent broker-consumer connections - fmt.Println("✅ Broker-Consumer: NO I/O timeouts (persistent connection)") - fmt.Println(" - Uses TCP keep-alive for network detection") - fmt.Println(" - Uses context cancellation for graceful shutdown") - fmt.Println(" - Connection stays open indefinitely waiting for messages") - - // ✅ GOOD: Timeout for connection establishment - fmt.Println("✅ Connection Setup: WITH timeout (initial connection)") - fmt.Println(" - 10-30 second timeout for initial TCP handshake") - fmt.Println(" - Prevents hanging on unreachable servers") - - // ✅ GOOD: Timeout for individual task processing - fmt.Println("✅ Task Processing: WITH timeout (individual operations)") - fmt.Println(" - 30 second timeout per task (configurable)") - fmt.Println(" - Prevents individual tasks from hanging forever") - - // ❌ BAD: I/O timeout on persistent connections - fmt.Println("❌ Persistent I/O: NO timeouts on read/write operations") - fmt.Println(" - Would cause 'i/o timeout' errors on idle connections") - fmt.Println(" - Breaks the persistent connection model") - - fmt.Println("\n💡 Key Principle:") - fmt.Println(" - Connection timeouts: Only for establishment") - fmt.Println(" - I/O timeouts: Only for request/response patterns") - fmt.Println(" - Persistent connections: Use keep-alive + context cancellation") -} - -func main() { - fmt.Println("=== Minimal Admin Server Test ===") - - // Demonstrate proper timeout patterns - demonstrateTimeoutPatterns() - - // Create logger - lg := logger.NewDefaultLogger() - fmt.Println("\n✅ Logger created") - - // Create broker with NO I/O timeouts for persistent connections - broker := mq.NewBroker(mq.WithLogger(lg), mq.WithBrokerURL(":8081")) - fmt.Println("✅ Broker created (NO I/O timeouts - persistent connections)") - - // Start broker - ctx := context.Background() - fmt.Println("🚀 Starting broker...") - - // Start broker in goroutine since it blocks - go func() { - if err := broker.Start(ctx); err != nil { - log.Printf("❌ Broker error: %v", err) - } - }() - - // Give broker time to start - time.Sleep(500 * time.Millisecond) - fmt.Println("✅ Broker started") - defer broker.Close() - - // Create admin server - fmt.Println("🔧 Creating admin server...") - adminServer := mq.NewAdminServer(broker, ":8090", lg) - fmt.Println("✅ Admin server created") - - // Start admin server - fmt.Println("🚀 Starting admin server...") - if err := adminServer.Start(); err != nil { - log.Fatalf("❌ Failed to start admin server: %v", err) - } - defer adminServer.Stop() - fmt.Println("✅ Admin server started") - - // Wait and test - fmt.Println("⏳ Waiting 2 seconds...") - time.Sleep(2 * time.Second) - - fmt.Println("🔍 Testing connectivity...") - - // ✅ GOOD: HTTP client WITH timeout (request/response pattern) - client := &http.Client{Timeout: 5 * time.Second} - resp, err := client.Get("http://localhost:8090/api/admin/health") - if err != nil { - fmt.Printf("❌ Connection failed: %v\n", err) - } else { - fmt.Printf("✅ Connection successful! Status: %d\n", resp.StatusCode) - resp.Body.Close() - } - - fmt.Println("\n🌐 Admin Dashboard: http://localhost:8090/admin") - fmt.Println("📊 Health API: http://localhost:8090/api/admin/health") - fmt.Println("📡 Broker API: http://localhost:8090/api/admin/broker") - fmt.Println("📋 Queue API: http://localhost:8090/api/admin/queues") - - fmt.Println("\n💡 Connection Patterns Demonstrated:") - fmt.Println(" 🔗 Broker ↔ Consumer: Persistent (NO I/O timeouts)") - fmt.Println(" 🌐 HTTP Client ↔ Admin: Request/Response (WITH timeouts)") - fmt.Println(" ⚡ WebSocket ↔ Dashboard: Persistent (NO I/O timeouts)") - - fmt.Println("\n⚠️ Server running - Press Ctrl+C to stop") - fmt.Println(" - Broker connections will remain persistent") - fmt.Println(" - No 'i/o timeout' errors should occur") - fmt.Println(" - TCP keep-alive handles network detection") - - // Keep running - select {} -} diff --git a/examples/minimal_admin/static/admin/README.md b/examples/minimal_admin/static/admin/README.md deleted file mode 100644 index bb5c99f..0000000 --- a/examples/minimal_admin/static/admin/README.md +++ /dev/null @@ -1,284 +0,0 @@ -# MQ Admin Dashboard - -The MQ Admin Dashboard provides a comprehensive web-based interface for managing and monitoring your MQ broker, queues, consumers, and worker pools. It offers real-time metrics, control capabilities, and health monitoring similar to RabbitMQ's management interface. - -## Features - -### 🌟 **Comprehensive Dashboard** -- **Real-time Monitoring**: Live charts showing throughput, queue depth, and system metrics -- **Broker Management**: Monitor broker status, uptime, and configuration -- **Queue Management**: View queue depths, consumer counts, and flush capabilities -- **Consumer Control**: Monitor consumer status, pause/resume operations, and performance metrics -- **Worker Pool Management**: Track pool status, worker counts, and memory usage -- **Health Checks**: System health monitoring with detailed status reports - -### 📊 **Real-time Visualizations** -- Interactive charts powered by Chart.js -- Live WebSocket updates for real-time data -- Throughput history and trend analysis -- System resource monitoring (CPU, Memory, Goroutines) - -### 🎛️ **Management Controls** -- Pause/Resume consumers -- Adjust worker pool settings -- Flush queues -- Restart/Stop broker operations -- Configuration management - -## Quick Start - -### 1. Run the Admin Demo - -```bash -cd examples/admin -go run main.go -``` - -This will start: -- MQ Broker (background) -- Admin Dashboard on http://localhost:8090/admin -- Sample task simulation for demonstration - -### 2. Access the Dashboard - -Open your browser and navigate to: -``` -http://localhost:8090/admin -``` - -### 3. Explore the Interface - -The dashboard consists of several tabs: - -- **📈 Overview**: High-level metrics and system status -- **🔧 Broker**: Broker configuration and control -- **📋 Queues**: Queue monitoring and management -- **👥 Consumers**: Consumer status and control -- **🏊 Pools**: Worker pool monitoring -- **❤️ Monitoring**: Health checks and system metrics - -## Integration in Your Application - -### Basic Usage - -```go -package main - -import ( - "context" - "log" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/logger" -) - -func main() { - // Create logger - lg := logger.NewDefaultLogger() - - // Create broker - broker := mq.NewBroker(mq.WithLogger(lg)) - - // Start broker - ctx := context.Background() - if err := broker.Start(ctx); err != nil { - log.Fatalf("Failed to start broker: %v", err) - } - defer broker.Close() - - // Create admin server - adminServer := mq.NewAdminServer(broker, ":8090", lg) - if err := adminServer.Start(); err != nil { - log.Fatalf("Failed to start admin server: %v", err) - } - defer adminServer.Stop() - - // Your application logic here... -} -``` - -### Configuration Options - -The admin server can be configured with different options: - -```go -// Custom port -adminServer := mq.NewAdminServer(broker, ":9090", lg) - -// With custom logger -customLogger := logger.NewDefaultLogger() -adminServer := mq.NewAdminServer(broker, ":8090", customLogger) -``` - -## API Endpoints - -The admin server exposes several REST API endpoints: - -### Core Endpoints -- `GET /admin` - Main dashboard interface -- `GET /api/admin/metrics` - Real-time metrics -- `GET /api/admin/broker` - Broker information -- `GET /api/admin/queues` - Queue status -- `GET /api/admin/consumers` - Consumer information -- `GET /api/admin/pools` - Worker pool status -- `GET /api/admin/health` - Health checks - -### Control Endpoints -- `POST /api/admin/broker/restart` - Restart broker -- `POST /api/admin/broker/stop` - Stop broker -- `POST /api/admin/queues/flush` - Flush all queues - -### Example API Usage - -```bash -# Get current metrics -curl http://localhost:8090/api/admin/metrics - -# Get broker status -curl http://localhost:8090/api/admin/broker - -# Flush all queues -curl -X POST http://localhost:8090/api/admin/queues/flush -``` - -## Dashboard Features - -### 🎨 **Modern UI Design** -- Responsive design with Tailwind CSS -- Clean, intuitive interface -- Dark/light theme support -- Mobile-friendly layout - -### 📊 **Real-time Charts** -- Live throughput monitoring -- Queue depth trends -- System resource usage -- Error rate tracking - -### ⚡ **Interactive Controls** -- Consumer pause/resume buttons -- Pool configuration modals -- Queue management tools -- Real-time status updates - -### 🔄 **WebSocket Integration** -- Live data updates without page refresh -- Real-time event streaming -- Automatic reconnection -- Low-latency monitoring - -## File Structure - -The admin interface consists of: - -``` -static/admin/ -├── index.html # Main dashboard interface -├── css/ -│ └── admin.css # Custom styling -└── js/ - └── admin.js # Dashboard JavaScript logic -``` - -## Metrics and Monitoring - -### System Metrics -- **Throughput**: Messages processed per second -- **Queue Depth**: Number of pending messages -- **Active Consumers**: Currently running consumers -- **Error Rate**: Failed message percentage -- **Memory Usage**: System memory consumption -- **CPU Usage**: System CPU utilization - -### Queue Metrics -- Message count per queue -- Consumer count per queue -- Processing rate per queue -- Error count per queue - -### Consumer Metrics -- Messages processed -- Error count -- Last activity timestamp -- Configuration parameters - -### Pool Metrics -- Active workers -- Queue size -- Memory load -- Task distribution - -## Customization - -### Styling -The interface uses Tailwind CSS and can be customized by modifying `static/admin/css/admin.css`. - -### JavaScript -Dashboard functionality can be extended by modifying `static/admin/js/admin.js`. - -### Backend -Additional API endpoints can be added to `admin_server.go`. - -## Production Considerations - -### Security -- Add authentication/authorization -- Use HTTPS in production -- Implement rate limiting -- Add CORS configuration - -### Performance -- Enable caching for static assets -- Use compression middleware -- Monitor memory usage -- Implement connection pooling - -### Monitoring -- Add logging for admin operations -- Implement audit trails -- Monitor admin API usage -- Set up alerting for critical events - -## Troubleshooting - -### Common Issues - -1. **Dashboard not loading** - - Check if static files are in the correct location - - Verify server is running on correct port - - Check browser console for errors - -2. **API endpoints returning 404** - - Ensure admin server is started - - Verify correct port configuration - - Check route registration - -3. **Real-time updates not working** - - Check WebSocket connection in browser dev tools - - Verify broker is running and accessible - - Check for CORS issues - -### Debug Mode - -Enable debug logging: - -```go -lg := logger.NewDefaultLogger() -lg.Debug("Admin server starting") -``` - -## License - -This admin dashboard is part of the MQ package and follows the same license terms. - -## Contributing - -To contribute to the admin dashboard: - -1. Fork the repository -2. Create a feature branch -3. Make your changes -4. Add tests if applicable -5. Submit a pull request - -For issues or feature requests, please open an issue on the main repository. diff --git a/examples/minimal_admin/static/admin/css/admin.css b/examples/minimal_admin/static/admin/css/admin.css deleted file mode 100644 index 4565694..0000000 --- a/examples/minimal_admin/static/admin/css/admin.css +++ /dev/null @@ -1,550 +0,0 @@ -/* Admin Dashboard Custom Styles */ - -:root { - --primary-color: #1e40af; - --secondary-color: #3b82f6; - --success-color: #10b981; - --warning-color: #f59e0b; - --danger-color: #ef4444; - --info-color: #06b6d4; - --dark-color: #374151; - --light-color: #f9fafb; -} - -/* Chart containers to prevent infinite resize loops */ -.chart-container { - position: relative; - width: 100%; - max-width: 100%; - overflow: hidden; -} - -.chart-container canvas { - display: block; - width: 100% !important; - height: auto !important; - max-width: 100%; -} - -/* Custom scrollbar */ -.scrollbar { - scrollbar-width: thin; - scrollbar-color: #d1d5db #e5e7eb; -} - -.scrollbar::-webkit-scrollbar { - width: 8px; -} - -.scrollbar::-webkit-scrollbar-track { - background: #e5e7eb; -} - -.scrollbar::-webkit-scrollbar-thumb { - background-color: #d1d5db; - border-radius: 9999px; -} - -/* Tab styles */ -.tab-btn { - border-bottom-color: transparent; - color: #6b7280; - transition: all 0.2s ease; -} - -.tab-btn.active { - border-bottom-color: var(--primary-color); - color: var(--primary-color); -} - -.tab-btn:hover:not(.active) { - color: #374151; -} - -.tab-content { - display: none; - animation: fadeIn 0.3s ease-in; -} - -.tab-content.active { - display: block; -} - -@keyframes fadeIn { - from { opacity: 0; transform: translateY(10px); } - to { opacity: 1; transform: translateY(0); } -} - -/* Status indicators */ -.status-indicator { - display: inline-flex; - align-items: center; - padding: 0.25rem 0.75rem; - border-radius: 9999px; - font-size: 0.75rem; - font-weight: 500; -} - -.status-running { - background-color: #d1fae5; - color: #065f46; -} - -.status-paused { - background-color: #fef3c7; - color: #92400e; -} - -.status-stopped { - background-color: #fee2e2; - color: #991b1b; -} - -.status-healthy { - background-color: #d1fae5; - color: #065f46; -} - -.status-warning { - background-color: #fef3c7; - color: #92400e; -} - -.status-error { - background-color: #fee2e2; - color: #991b1b; -} - -/* Connection status */ -.connection-status .connected { - background-color: var(--success-color); -} - -.connection-status .disconnected { - background-color: var(--danger-color); -} - -/* Card hover effects */ -.card { - transition: transform 0.2s ease, box-shadow 0.2s ease; -} - -.card:hover { - transform: translateY(-2px); - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); -} - -/* Button styles */ -.btn-primary { - background-color: var(--primary-color); - color: white; - padding: 0.5rem 1rem; - border-radius: 0.375rem; - font-weight: 500; - transition: background-color 0.2s ease; -} - -.btn-primary:hover { - background-color: #1d4ed8; -} - -.btn-secondary { - background-color: #6b7280; - color: white; - padding: 0.5rem 1rem; - border-radius: 0.375rem; - font-weight: 500; - transition: background-color 0.2s ease; -} - -.btn-secondary:hover { - background-color: #4b5563; -} - -.btn-success { - background-color: var(--success-color); - color: white; - padding: 0.5rem 1rem; - border-radius: 0.375rem; - font-weight: 500; - transition: background-color 0.2s ease; -} - -.btn-success:hover { - background-color: #059669; -} - -.btn-warning { - background-color: var(--warning-color); - color: white; - padding: 0.5rem 1rem; - border-radius: 0.375rem; - font-weight: 500; - transition: background-color 0.2s ease; -} - -.btn-warning:hover { - background-color: #d97706; -} - -.btn-danger { - background-color: var(--danger-color); - color: white; - padding: 0.5rem 1rem; - border-radius: 0.375rem; - font-weight: 500; - transition: background-color 0.2s ease; -} - -.btn-danger:hover { - background-color: #dc2626; -} - -/* Table styles */ -.table-container { - max-height: 500px; - overflow-y: auto; -} - -.table-row:hover { - background-color: #f9fafb; -} - -/* Modal styles */ -.modal { - z-index: 1000; -} - -.modal-backdrop { - background-color: rgba(0, 0, 0, 0.5); -} - -.modal-content { - animation: modalSlideIn 0.3s ease; -} - -@keyframes modalSlideIn { - from { - opacity: 0; - transform: scale(0.9) translateY(-50px); - } - to { - opacity: 1; - transform: scale(1) translateY(0); - } -} - -/* Chart containers */ -.chart-container { - position: relative; - height: 300px; -} - -/* Activity feed */ -.activity-item { - display: flex; - align-items: center; - padding: 1rem 0; - border-bottom: 1px solid #e5e7eb; -} - -.activity-item:last-child { - border-bottom: none; -} - -.activity-icon { - width: 2rem; - height: 2rem; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - margin-right: 1rem; -} - -.activity-icon.success { - background-color: var(--success-color); - color: white; -} - -.activity-icon.warning { - background-color: var(--warning-color); - color: white; -} - -.activity-icon.error { - background-color: var(--danger-color); - color: white; -} - -.activity-icon.info { - background-color: var(--info-color); - color: white; -} - -/* Metrics cards */ -.metric-card { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); - color: white; - border-radius: 0.5rem; - padding: 1.5rem; - text-align: center; -} - -.metric-value { - font-size: 2rem; - font-weight: bold; - margin-bottom: 0.5rem; -} - -.metric-label { - font-size: 0.875rem; - opacity: 0.8; -} - -/* Health check styles */ -.health-check { - display: flex; - align-items: center; - justify-content: between; - padding: 1rem; - border-radius: 0.375rem; - margin-bottom: 0.5rem; -} - -.health-check.healthy { - background-color: #d1fae5; - border: 1px solid #10b981; -} - -.health-check.warning { - background-color: #fef3c7; - border: 1px solid #f59e0b; -} - -.health-check.error { - background-color: #fee2e2; - border: 1px solid #ef4444; -} - -.health-check-icon { - width: 1.5rem; - height: 1.5rem; - margin-right: 0.75rem; -} - -/* Loading spinner */ -.spinner { - border: 2px solid #f3f3f3; - border-top: 2px solid var(--primary-color); - border-radius: 50%; - width: 1rem; - height: 1rem; - animation: spin 1s linear infinite; - display: inline-block; - margin-left: 0.5rem; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -/* Responsive adjustments */ -@media (max-width: 768px) { - .grid-cols-4 { - grid-template-columns: repeat(2, 1fr); - } - - .grid-cols-2 { - grid-template-columns: 1fr; - } - - .tab-btn { - padding: 0.5rem 0.25rem; - font-size: 0.875rem; - } - - .modal-content { - margin: 1rem; - max-width: calc(100% - 2rem); - } -} - -/* Toast notifications */ -.toast { - position: fixed; - top: 1rem; - right: 1rem; - background-color: white; - border-radius: 0.5rem; - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); - padding: 1rem; - z-index: 2000; - max-width: 300px; - transform: translateX(400px); - transition: transform 0.3s ease; -} - -.toast.show { - transform: translateX(0); -} - -.toast.success { - border-left: 4px solid var(--success-color); -} - -.toast.warning { - border-left: 4px solid var(--warning-color); -} - -.toast.error { - border-left: 4px solid var(--danger-color); -} - -.toast.info { - border-left: 4px solid var(--info-color); -} - -/* Progress bars */ -.progress-bar { - width: 100%; - height: 0.5rem; - background-color: #e5e7eb; - border-radius: 9999px; - overflow: hidden; -} - -.progress-fill { - height: 100%; - background-color: var(--primary-color); - transition: width 0.3s ease; -} - -.progress-fill.success { - background-color: var(--success-color); -} - -.progress-fill.warning { - background-color: var(--warning-color); -} - -.progress-fill.danger { - background-color: var(--danger-color); -} - -/* Form styles */ -.form-group { - margin-bottom: 1rem; -} - -.form-label { - display: block; - margin-bottom: 0.25rem; - font-weight: 500; - color: #374151; -} - -.form-input { - width: 100%; - padding: 0.5rem 0.75rem; - border: 1px solid #d1d5db; - border-radius: 0.375rem; - font-size: 0.875rem; - transition: border-color 0.2s ease, box-shadow 0.2s ease; -} - -.form-input:focus { - outline: none; - border-color: var(--primary-color); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} - -.form-input:invalid { - border-color: var(--danger-color); -} - -/* Custom toggle switch */ -.toggle { - position: relative; - display: inline-block; - width: 3rem; - height: 1.5rem; -} - -.toggle input { - opacity: 0; - width: 0; - height: 0; -} - -.toggle-slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - transition: 0.4s; - border-radius: 1.5rem; -} - -.toggle-slider:before { - position: absolute; - content: ""; - height: 1.25rem; - width: 1.25rem; - left: 0.125rem; - bottom: 0.125rem; - background-color: white; - transition: 0.4s; - border-radius: 50%; -} - -.toggle input:checked + .toggle-slider { - background-color: var(--primary-color); -} - -.toggle input:checked + .toggle-slider:before { - transform: translateX(1.5rem); -} - -/* Tooltips */ -.tooltip { - position: relative; - display: inline-block; -} - -.tooltip .tooltip-text { - visibility: hidden; - width: 120px; - background-color: #374151; - color: white; - text-align: center; - border-radius: 0.375rem; - padding: 0.5rem; - font-size: 0.75rem; - position: absolute; - z-index: 1; - bottom: 125%; - left: 50%; - margin-left: -60px; - opacity: 0; - transition: opacity 0.3s; -} - -.tooltip:hover .tooltip-text { - visibility: visible; - opacity: 1; -} - -/* Dark mode support */ -@media (prefers-color-scheme: dark) { - :root { - --background-color: #1f2937; - --surface-color: #374151; - --text-primary: #f9fafb; - --text-secondary: #d1d5db; - } -} diff --git a/examples/minimal_admin/static/admin/index.html b/examples/minimal_admin/static/admin/index.html deleted file mode 100644 index edaca18..0000000 --- a/examples/minimal_admin/static/admin/index.html +++ /dev/null @@ -1,628 +0,0 @@ - - - - - - - MQ Admin Dashboard - - - - - - - - - - - -
- -
- -
- - -
- -
- -
-
-
-
-
-
- - - - - -
-
-
-
-
Total Messages
-
0
-
-
-
-
-
- -
-
-
-
-
- - - - -
-
-
-
-
Active Consumers
-
0
-
-
-
-
-
- -
-
-
-
-
- - - - -
-
-
-
-
Active Queues
-
0
-
-
-
-
-
- -
-
-
-
-
- - - -
-
-
-
-
Failed Messages
-
0
-
-
-
-
-
-
- - -
-
-

Message Throughput

-
- -
-
-
-

Queue Depths

-
- -
-
-
- - -
-
-

Recent Activity

-
-
    - -
-
-
-
-
- - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - diff --git a/examples/minimal_admin/static/admin/js/admin.js b/examples/minimal_admin/static/admin/js/admin.js deleted file mode 100644 index 6fdb104..0000000 --- a/examples/minimal_admin/static/admin/js/admin.js +++ /dev/null @@ -1,1203 +0,0 @@ -// MQ Admin Dashboard JavaScript -class MQAdminDashboard { - constructor() { - this.wsConnection = null; - this.isConnected = false; - this.charts = {}; - this.refreshInterval = null; - this.currentTab = 'overview'; - this.data = { - metrics: {}, - queues: [], - consumers: [], - pools: [], - broker: {}, - healthChecks: [] - }; - - this.init(); - } - - init() { - this.setupEventListeners(); - this.initializeCharts(); - this.connectWebSocket(); - this.startRefreshInterval(); - this.loadInitialData(); - } - - setupEventListeners() { - // Tab navigation - document.querySelectorAll('.tab-btn').forEach(btn => { - btn.addEventListener('click', (e) => { - this.switchTab(e.target.dataset.tab); - }); - }); - - // Refresh button - document.getElementById('refreshBtn').addEventListener('click', () => { - this.refreshData(); - }); - - // Modal handlers - this.setupModalHandlers(); - - // Broker controls - this.setupBrokerControls(); - - // Form handlers - this.setupFormHandlers(); - } - - setupModalHandlers() { - // Consumer modal - const consumerModal = document.getElementById('consumerModal'); - const cancelConsumerBtn = document.getElementById('cancelConsumerConfig'); - - cancelConsumerBtn.addEventListener('click', () => { - consumerModal.classList.add('hidden'); - }); - - // Pool modal - const poolModal = document.getElementById('poolModal'); - const cancelPoolBtn = document.getElementById('cancelPoolConfig'); - - cancelPoolBtn.addEventListener('click', () => { - poolModal.classList.add('hidden'); - }); - - // Close modals on backdrop click - [consumerModal, poolModal].forEach(modal => { - modal.addEventListener('click', (e) => { - if (e.target === modal) { - modal.classList.add('hidden'); - } - }); - }); - } - - setupBrokerControls() { - document.getElementById('restartBroker').addEventListener('click', () => { - this.confirmAction('restart broker', () => this.restartBroker()); - }); - - document.getElementById('stopBroker').addEventListener('click', () => { - this.confirmAction('stop broker', () => this.stopBroker()); - }); - - document.getElementById('flushQueues').addEventListener('click', () => { - this.confirmAction('flush all queues', () => this.flushQueues()); - }); - - // Tasks refresh button - document.getElementById('refreshTasks').addEventListener('click', () => { - this.fetchTasks(); - }); - } - - setupFormHandlers() { - // Consumer form - document.getElementById('consumerForm').addEventListener('submit', (e) => { - e.preventDefault(); - this.updateConsumerConfig(); - }); - - // Pool form - document.getElementById('poolForm').addEventListener('submit', (e) => { - e.preventDefault(); - this.updatePoolConfig(); - }); - } - - switchTab(tabName) { - // Update active tab button - document.querySelectorAll('.tab-btn').forEach(btn => { - btn.classList.remove('active'); - }); - document.querySelector(`[data-tab="${tabName}"]`).classList.add('active'); - - // Show corresponding content - document.querySelectorAll('.tab-content').forEach(content => { - content.classList.remove('active'); - content.classList.add('hidden'); - }); - document.getElementById(tabName).classList.remove('hidden'); - document.getElementById(tabName).classList.add('active'); - - this.currentTab = tabName; - this.loadTabData(tabName); - } - - loadTabData(tabName) { - switch (tabName) { - case 'overview': - this.loadOverviewData(); - break; - case 'broker': - this.loadBrokerData(); - break; - case 'queues': - this.loadQueuesData(); - break; - case 'consumers': - this.loadConsumersData(); - break; - case 'pools': - this.loadPoolsData(); - break; - case 'tasks': - this.loadTasksData(); - break; - case 'monitoring': - this.loadMonitoringData(); - break; - } - } - - connectWebSocket() { - try { - const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; - const wsUrl = `${protocol}//${window.location.host}/ws`; - - // Use the Socket class instead of raw WebSocket - this.wsConnection = new Socket(wsUrl, 'admin-user'); - this.wsConnection.connect().then(connected => { - console.log('WebSocket connected'); - this.wsConnection.onConnect(() => { - this.updateConnectionStatus(true); - this.showToast('Connected to MQ Admin', 'success'); - console.log('WebSocket connected'); - }); - - this.wsConnection.on('update', (data) => { - try { - // Data is already parsed by the Socket class - this.handleWebSocketMessage(data); - } catch (error) { - console.error('Failed to handle WebSocket message:', error); - } - }); - - this.wsConnection.onDisconnect(() => { - this.updateConnectionStatus(false); - this.showToast('Disconnected from MQ Admin', 'warning'); - console.log('WebSocket disconnected'); - // Socket class handles reconnection automatically - }); - }); - } catch (error) { - console.error('Failed to connect WebSocket:', error); - this.updateConnectionStatus(false); - } - } - - handleWebSocketMessage(data) { - console.log('WebSocket message received:', data); - - switch (data.type) { - case 'metrics': - this.updateMetrics(data.data); - break; - case 'queues': - this.updateQueues(data.data); - break; - case 'consumers': - this.updateConsumers(data.data); - break; - case 'pools': - this.updatePools(data.data); - break; - case 'broker': - this.updateBroker(data.data); - break; - case 'task_update': - this.handleTaskUpdate(data.data); - break; - case 'broker_restart': - case 'broker_stop': - case 'broker_pause': - case 'broker_resume': - this.showToast(data.data.message || 'Broker operation completed', 'info'); - // Refresh broker info - this.fetchBrokerInfo(); - break; - case 'consumer_pause': - case 'consumer_resume': - case 'consumer_stop': - this.showToast(data.data.message || 'Consumer operation completed', 'info'); - // Refresh consumer info - this.fetchConsumers(); - break; - case 'pool_pause': - case 'pool_resume': - case 'pool_stop': - this.showToast(data.data.message || 'Pool operation completed', 'info'); - // Refresh pool info - this.fetchPools(); - break; - case 'queue_purge': - case 'queues_flush': - this.showToast(data.data.message || 'Queue operation completed', 'info'); - // Refresh queue info - this.fetchQueues(); - break; - default: - console.log('Unknown WebSocket message type:', data.type); - } - } - - handleTaskUpdate(taskData) { - // Add to activity feed - const activity = { - type: 'task', - message: `Task ${taskData.task_id} ${taskData.status} in queue ${taskData.queue}`, - timestamp: new Date(taskData.updated_at), - status: taskData.status === 'completed' ? 'success' : taskData.status === 'failed' ? 'error' : 'info' - }; - this.addActivity(activity); - - // Update metrics if on overview tab - if (this.currentTab === 'overview') { - this.fetchMetrics(); - } - } - - updateConnectionStatus(connected) { - this.isConnected = connected; - const indicator = document.getElementById('connectionIndicator'); - const status = document.getElementById('connectionStatus'); - - if (connected) { - indicator.className = 'w-3 h-3 bg-green-500 rounded-full'; - status.textContent = 'Connected'; - } else { - indicator.className = 'w-3 h-3 bg-red-500 rounded-full'; - status.textContent = 'Disconnected'; - } - } - - initializeCharts() { - // Throughput Chart - const throughputCtx = document.getElementById('throughputChart').getContext('2d'); - this.charts.throughput = new Chart(throughputCtx, { - type: 'line', - data: { - labels: [], - datasets: [{ - label: 'Messages/sec', - data: [], - borderColor: 'rgb(59, 130, 246)', - backgroundColor: 'rgba(59, 130, 246, 0.1)', - tension: 0.4 - }] - }, - options: { - responsive: true, - maintainAspectRatio: false, - animation: false, // Disable animations to prevent loops - scales: { - y: { - beginAtZero: true - } - }, - plugins: { - legend: { - display: false - } - } - } - }); - - // Queue Depth Chart - const queueDepthCtx = document.getElementById('queueDepthChart').getContext('2d'); - this.charts.queueDepth = new Chart(queueDepthCtx, { - type: 'bar', - data: { - labels: [], - datasets: [{ - label: 'Queue Depth', - data: [], - backgroundColor: 'rgba(16, 185, 129, 0.8)', - borderColor: 'rgb(16, 185, 129)', - borderWidth: 1 - }] - }, - options: { - responsive: true, - maintainAspectRatio: false, - scales: { - y: { - beginAtZero: true - } - }, - plugins: { - legend: { - display: false - } - } - } - }); - - // System Performance Chart - const systemCtx = document.getElementById('systemChart').getContext('2d'); - this.charts.system = new Chart(systemCtx, { - type: 'line', - data: { - labels: [], - datasets: [ - { - label: 'CPU %', - data: [], - borderColor: 'rgb(239, 68, 68)', - backgroundColor: 'rgba(239, 68, 68, 0.1)', - tension: 0.4 - }, - { - label: 'Memory %', - data: [], - borderColor: 'rgb(245, 158, 11)', - backgroundColor: 'rgba(245, 158, 11, 0.1)', - tension: 0.4 - } - ] - }, - options: { - responsive: true, - maintainAspectRatio: false, - scales: { - y: { - beginAtZero: true, - max: 100 - } - } - } - }); - - // Error Rate Chart - const errorCtx = document.getElementById('errorChart').getContext('2d'); - this.charts.error = new Chart(errorCtx, { - type: 'doughnut', - data: { - labels: ['Success', 'Failed'], - datasets: [{ - data: [0, 0], - backgroundColor: [ - 'rgba(16, 185, 129, 0.8)', - 'rgba(239, 68, 68, 0.8)' - ], - borderWidth: 0 - }] - }, - options: { - responsive: true, - maintainAspectRatio: false, - plugins: { - legend: { - position: 'bottom' - } - } - } - }); - } - - async loadInitialData() { - try { - await Promise.all([ - this.fetchMetrics(), - this.fetchQueues(), - this.fetchConsumers(), - this.fetchPools(), - this.fetchBrokerInfo(), - this.fetchHealthChecks() - ]); - } catch (error) { - console.error('Failed to load initial data:', error); - this.showToast('Failed to load initial data', 'error'); - } - } - - async fetchMetrics() { - try { - const response = await fetch('/api/admin/metrics'); - const metrics = await response.json(); - this.updateMetrics(metrics); - } catch (error) { - console.error('Failed to fetch metrics:', error); - } - } - - async fetchQueues() { - try { - const response = await fetch('/api/admin/queues'); - const queues = await response.json(); - this.updateQueues(queues); - } catch (error) { - console.error('Failed to fetch queues:', error); - } - } - - async fetchConsumers() { - try { - const response = await fetch('/api/admin/consumers'); - const consumers = await response.json(); - this.updateConsumers(consumers); - } catch (error) { - console.error('Failed to fetch consumers:', error); - } - } - - async fetchPools() { - try { - const response = await fetch('/api/admin/pools'); - const pools = await response.json(); - this.updatePools(pools); - } catch (error) { - console.error('Failed to fetch pools:', error); - } - } - - async fetchBrokerInfo() { - try { - const response = await fetch('/api/admin/broker'); - const broker = await response.json(); - this.updateBroker(broker); - } catch (error) { - console.error('Failed to fetch broker info:', error); - } - } - - async fetchHealthChecks() { - try { - const response = await fetch('/api/admin/health'); - const healthChecks = await response.json(); - this.updateHealthChecks(healthChecks); - } catch (error) { - console.error('Failed to fetch health checks:', error); - } - } - - async fetchTasks() { - try { - const response = await fetch('/api/admin/tasks'); - const data = await response.json(); - this.updateTasks(data.tasks || []); - } catch (error) { - console.error('Failed to fetch tasks:', error); - } - } - - updateTasks(tasks) { - this.data.tasks = tasks; - - // Update task count cards - const activeTasks = tasks.filter(task => task.status === 'queued' || task.status === 'processing').length; - const completedTasks = tasks.filter(task => task.status === 'completed').length; - const failedTasks = tasks.filter(task => task.status === 'failed').length; - const queuedTasks = tasks.filter(task => task.status === 'queued').length; - - document.getElementById('activeTasks').textContent = activeTasks; - document.getElementById('completedTasks').textContent = completedTasks; - document.getElementById('failedTasks').textContent = failedTasks; - document.getElementById('queuedTasks').textContent = queuedTasks; - - // Update tasks table - this.renderTasksTable(tasks); - } - - renderTasksTable(tasks) { - const tbody = document.getElementById('tasksTableBody'); - tbody.innerHTML = ''; - - if (!tasks || tasks.length === 0) { - tbody.innerHTML = ` - - - No tasks found - - - `; - return; - } - - tasks.forEach(task => { - const row = document.createElement('tr'); - row.className = 'hover:bg-gray-50'; - - const statusClass = this.getStatusClass(task.status); - const createdAt = this.formatTime(task.created_at); - const payload = typeof task.payload === 'string' ? task.payload : JSON.stringify(task.payload); - const truncatedPayload = payload.length > 50 ? payload.substring(0, 50) + '...' : payload; - - row.innerHTML = ` - - ${task.id} - - - ${task.queue} - - - - ${task.status} - - - - ${task.retry_count || 0} - - - ${createdAt} - - - ${truncatedPayload} - - `; - - tbody.appendChild(row); - }); - } - - updateMetrics(metrics) { - this.data.metrics = metrics; - - // Update overview cards - document.getElementById('totalMessages').textContent = this.formatNumber(metrics.total_messages || 0); - document.getElementById('activeConsumers').textContent = metrics.active_consumers || 0; - document.getElementById('activeQueues').textContent = metrics.active_queues || 0; - document.getElementById('failedMessages').textContent = this.formatNumber(metrics.failed_messages || 0); - - // Update charts - this.updateThroughputChart(metrics.throughput_history || []); - this.updateErrorChart(metrics.success_count || 0, metrics.error_count || 0); - } - - updateQueues(queues) { - this.data.queues = queues; - this.renderQueuesTable(queues); - this.updateQueueDepthChart(queues); - } - - updateConsumers(consumers) { - this.data.consumers = consumers; - this.renderConsumersTable(consumers); - } - - updatePools(pools) { - this.data.pools = pools; - this.renderPoolsTable(pools); - } - - updateBroker(broker) { - this.data.broker = broker; - this.renderBrokerInfo(broker); - } - - updateHealthChecks(healthChecks) { - this.data.healthChecks = healthChecks; - this.renderHealthChecks(healthChecks); - } - - updateThroughputChart(throughputHistory) { - const chart = this.charts.throughput; - if (!chart || !throughputHistory) return; - - try { - const now = new Date(); - - // Keep last 20 data points - chart.data.labels = throughputHistory.map((_, index) => { - const time = new Date(now.getTime() - (throughputHistory.length - index - 1) * 5000); - return time.toLocaleTimeString(); - }); - - chart.data.datasets[0].data = throughputHistory; - chart.update('none'); - } catch (error) { - console.error('Error updating throughput chart:', error); - } - } - - updateQueueDepthChart(queues) { - const chart = this.charts.queueDepth; - if (!chart || !queues) return; - - try { - chart.data.labels = queues.map(q => q.name); - chart.data.datasets[0].data = queues.map(q => q.depth || 0); - chart.update('none'); - } catch (error) { - console.error('Error updating queue depth chart:', error); - } - } - - updateErrorChart(successCount, errorCount) { - const chart = this.charts.error; - if (!chart) return; - - try { - chart.data.datasets[0].data = [successCount, errorCount]; - chart.update('none'); - } catch (error) { - console.error('Error updating error chart:', error); - } - } - - renderQueuesTable(queues) { - const tbody = document.getElementById('queuesTable'); - tbody.innerHTML = ''; - - queues.forEach(queue => { - const row = document.createElement('tr'); - row.className = 'table-row'; - row.innerHTML = ` - ${queue.name} - ${queue.depth || 0} - ${queue.consumers || 0} - ${queue.rate || 0}/sec - - - - - `; - tbody.appendChild(row); - }); - } - - renderConsumersTable(consumers) { - const tbody = document.getElementById('consumersTable'); - tbody.innerHTML = ''; - - consumers.forEach(consumer => { - const row = document.createElement('tr'); - row.className = 'table-row'; - row.innerHTML = ` - ${consumer.id} - ${consumer.queue} - - ${consumer.status} - - ${consumer.processed || 0} - ${consumer.errors || 0} - - - - - - `; - tbody.appendChild(row); - }); - } - - renderPoolsTable(pools) { - const tbody = document.getElementById('poolsTable'); - tbody.innerHTML = ''; - - pools.forEach(pool => { - const row = document.createElement('tr'); - row.className = 'table-row'; - row.innerHTML = ` - ${pool.id} - ${pool.workers || 0} - ${pool.queue_size || 0} - ${pool.active_tasks || 0} - - ${pool.status} - - - - - - - `; - tbody.appendChild(row); - }); - } - - renderBrokerInfo(broker) { - document.getElementById('brokerStatus').textContent = broker.status || 'Unknown'; - document.getElementById('brokerStatus').className = `px-2 py-1 text-xs rounded-full ${this.getStatusClass(broker.status)}`; - document.getElementById('brokerAddress').textContent = broker.address || 'N/A'; - document.getElementById('brokerUptime').textContent = this.formatDuration(broker.uptime || 0); - document.getElementById('brokerConnections').textContent = broker.connections || 0; - - // Render broker configuration - this.renderBrokerConfig(broker.config || {}); - } - - renderBrokerConfig(config) { - const container = document.getElementById('brokerConfig'); - container.innerHTML = ''; - - Object.entries(config).forEach(([key, value]) => { - const div = document.createElement('div'); - div.className = 'flex justify-between items-center p-3 bg-gray-50 rounded'; - div.innerHTML = ` - ${this.formatConfigKey(key)}: - ${this.formatConfigValue(value)} - `; - container.appendChild(div); - }); - } - - renderHealthChecks(healthChecks) { - const container = document.getElementById('healthChecks'); - container.innerHTML = ''; - - healthChecks.forEach(check => { - const div = document.createElement('div'); - div.className = `health-check ${check.status}`; - div.innerHTML = ` -
-
-
- ${this.getHealthIcon(check.status)} -
-
-
${check.name}
-
${check.message}
-
-
-
- ${this.formatDuration(check.duration)} -
-
- `; - container.appendChild(div); - }); - } - - addActivity(activity) { - const feed = document.getElementById('activityFeed'); - const item = document.createElement('li'); - item.className = 'activity-item'; - - item.innerHTML = ` -
- ${this.getActivityIcon(activity.type)} -
-
-
${activity.title}
-
${activity.description}
-
${this.formatTime(activity.timestamp)}
-
- `; - - feed.insertBefore(item, feed.firstChild); - - // Keep only last 50 items - while (feed.children.length > 50) { - feed.removeChild(feed.lastChild); - } - } - - // Action methods - async pauseConsumer(consumerId) { - try { - const consumer = this.data.consumers.find(c => c.id === consumerId); - const action = consumer?.status === 'paused' ? 'resume' : 'pause'; - - const response = await fetch(`/api/admin/consumers/${action}?id=${consumerId}`, { - method: 'POST' - }); - - if (response.ok) { - this.showToast(`Consumer ${action}d successfully`, 'success'); - this.fetchConsumers(); - } else { - throw new Error(`Failed to ${action} consumer`); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - async stopConsumer(consumerId) { - this.confirmAction('stop this consumer', async () => { - try { - const response = await fetch(`/api/admin/consumers/stop?id=${consumerId}`, { - method: 'POST' - }); - - if (response.ok) { - this.showToast('Consumer stopped successfully', 'success'); - this.fetchConsumers(); - } else { - throw new Error('Failed to stop consumer'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - }); - } - - configureConsumer(consumerId) { - const consumer = this.data.consumers.find(c => c.id === consumerId); - if (!consumer) return; - - document.getElementById('consumerIdField').value = consumer.id; - document.getElementById('maxConcurrentTasks').value = consumer.max_concurrent_tasks || 10; - document.getElementById('taskTimeout').value = consumer.task_timeout || 30; - document.getElementById('maxRetries').value = consumer.max_retries || 3; - - document.getElementById('consumerModal').classList.remove('hidden'); - } - - async updateConsumerConfig() { - try { - const consumerId = document.getElementById('consumerIdField').value; - const config = { - max_concurrent_tasks: parseInt(document.getElementById('maxConcurrentTasks').value), - task_timeout: parseInt(document.getElementById('taskTimeout').value), - max_retries: parseInt(document.getElementById('maxRetries').value) - }; - - const response = await fetch(`/api/admin/consumers/${consumerId}/config`, { - method: 'PUT', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(config) - }); - - if (response.ok) { - this.showToast('Consumer configuration updated', 'success'); - document.getElementById('consumerModal').classList.add('hidden'); - this.fetchConsumers(); - } else { - throw new Error('Failed to update consumer configuration'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - async pausePool(poolId) { - try { - const pool = this.data.pools.find(p => p.id === poolId); - const action = pool?.status === 'paused' ? 'resume' : 'pause'; - - const response = await fetch(`/api/admin/pools/${poolId}/${action}`, { - method: 'POST' - }); - - if (response.ok) { - this.showToast(`Pool ${action}d successfully`, 'success'); - this.fetchPools(); - } else { - throw new Error(`Failed to ${action} pool`); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - async stopPool(poolId) { - this.confirmAction('stop this pool', async () => { - try { - const response = await fetch(`/api/admin/pools/${poolId}/stop`, { - method: 'POST' - }); - - if (response.ok) { - this.showToast('Pool stopped successfully', 'success'); - this.fetchPools(); - } else { - throw new Error('Failed to stop pool'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - }); - } - - configurePool(poolId) { - const pool = this.data.pools.find(p => p.id === poolId); - if (!pool) return; - - document.getElementById('poolIdField').value = pool.id; - document.getElementById('numWorkers').value = pool.workers || 4; - document.getElementById('queueSize').value = pool.queue_size || 100; - document.getElementById('maxMemoryLoad').value = pool.max_memory_load || 5000000; - - document.getElementById('poolModal').classList.remove('hidden'); - } - - async updatePoolConfig() { - try { - const poolId = document.getElementById('poolIdField').value; - const config = { - workers: parseInt(document.getElementById('numWorkers').value), - queue_size: parseInt(document.getElementById('queueSize').value), - max_memory_load: parseInt(document.getElementById('maxMemoryLoad').value) - }; - - const response = await fetch(`/api/admin/pools/${poolId}/config`, { - method: 'PUT', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(config) - }); - - if (response.ok) { - this.showToast('Pool configuration updated', 'success'); - document.getElementById('poolModal').classList.add('hidden'); - this.fetchPools(); - } else { - throw new Error('Failed to update pool configuration'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - async purgeQueue(queueName) { - this.confirmAction(`purge queue "${queueName}"`, async () => { - try { - const response = await fetch(`/api/admin/queues/${queueName}/purge`, { - method: 'POST' - }); - - if (response.ok) { - this.showToast('Queue purged successfully', 'success'); - this.fetchQueues(); - } else { - throw new Error('Failed to purge queue'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - }); - } - - async restartBroker() { - try { - const response = await fetch('/api/admin/broker/restart', { - method: 'POST' - }); - - if (response.ok) { - this.showToast('Broker restart initiated', 'success'); - this.fetchBrokerInfo(); - } else { - throw new Error('Failed to restart broker'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - async stopBroker() { - try { - const response = await fetch('/api/admin/broker/stop', { - method: 'POST' - }); - - if (response.ok) { - this.showToast('Broker stop initiated', 'warning'); - this.fetchBrokerInfo(); - } else { - throw new Error('Failed to stop broker'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - async flushQueues() { - try { - const response = await fetch('/api/admin/queues/flush', { - method: 'POST' - }); - - if (response.ok) { - this.showToast('All queues flushed', 'success'); - this.fetchQueues(); - } else { - throw new Error('Failed to flush queues'); - } - } catch (error) { - this.showToast(error.message, 'error'); - } - } - - // Utility methods - confirmAction(action, callback) { - if (confirm(`Are you sure you want to ${action}?`)) { - callback(); - } - } - - showToast(message, type = 'info') { - const toast = document.createElement('div'); - toast.className = `toast ${type}`; - toast.innerHTML = ` -
- ${message} - -
- `; - - document.body.appendChild(toast); - - // Show toast - setTimeout(() => toast.classList.add('show'), 100); - - // Auto-remove after 5 seconds - setTimeout(() => { - toast.classList.remove('show'); - setTimeout(() => toast.remove(), 300); - }, 5000); - } - - formatNumber(num) { - if (num >= 1000000) { - return (num / 1000000).toFixed(1) + 'M'; - } else if (num >= 1000) { - return (num / 1000).toFixed(1) + 'K'; - } - return num.toString(); - } - - formatDuration(ms) { - if (ms < 1000) return `${ms}ms`; - if (ms < 60000) return `${Math.floor(ms / 1000)}s`; - if (ms < 3600000) return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`; - const hours = Math.floor(ms / 3600000); - const minutes = Math.floor((ms % 3600000) / 60000); - return `${hours}h ${minutes}m`; - } - - formatTime(timestamp) { - return new Date(timestamp).toLocaleTimeString(); - } - - formatConfigKey(key) { - return key.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase()); - } - - formatConfigValue(value) { - if (typeof value === 'boolean') return value ? 'Yes' : 'No'; - if (typeof value === 'object') return JSON.stringify(value); - return value.toString(); - } - - getStatusClass(status) { - switch (status?.toLowerCase()) { - case 'running': - case 'active': - case 'healthy': - return 'status-running'; - case 'paused': - case 'warning': - return 'status-paused'; - case 'stopped': - case 'error': - case 'failed': - return 'status-stopped'; - default: - return 'status-paused'; - } - } - - getHealthIcon(status) { - switch (status) { - case 'healthy': - return '✓'; - case 'warning': - return '⚠'; - case 'error': - return '✗'; - default: - return '?'; - } - } - - getActivityIcon(type) { - switch (type) { - case 'success': - return '✓'; - case 'warning': - return '⚠'; - case 'error': - return '✗'; - case 'info': - default: - return 'i'; - } - } - - refreshData() { - this.loadInitialData(); - this.showToast('Data refreshed', 'success'); - } - - startRefreshInterval() { - // Clear any existing interval first - if (this.refreshInterval) { - clearInterval(this.refreshInterval); - this.refreshInterval = null; - } - - // Refresh data every 15 seconds (reduced frequency to prevent overload) - this.refreshInterval = setInterval(() => { - if (this.isConnected && this.currentTab) { - try { - this.loadTabData(this.currentTab); - } catch (error) { - console.error('Error during refresh:', error); - } - } - }, 15000); - } - - loadOverviewData() { - this.fetchMetrics(); - } - - loadBrokerData() { - this.fetchBrokerInfo(); - } - - loadQueuesData() { - this.fetchQueues(); - } - - loadConsumersData() { - this.fetchConsumers(); - } - - loadPoolsData() { - this.fetchPools(); - } - - loadTasksData() { - this.fetchTasks(); - } - - loadMonitoringData() { - this.fetchHealthChecks(); - this.fetchMetrics(); - } -} - -// Initialize dashboard when DOM is loaded -document.addEventListener('DOMContentLoaded', () => { - window.adminDashboard = new MQAdminDashboard(); -}); diff --git a/examples/minimal_admin/static/admin/js/socket.js b/examples/minimal_admin/static/admin/js/socket.js deleted file mode 100644 index ceb8686..0000000 --- a/examples/minimal_admin/static/admin/js/socket.js +++ /dev/null @@ -1,249 +0,0 @@ -class Socket { - events = {} - reconnectInterval - reconnectOpts = { enabled: true, replayOnConnect: true, intervalMS: 5000 } - reconnecting = false - connectedOnce = false - headerStartCharCode = 1 - headerStartChar - dataStartCharCode = 2 - dataStartChar - subProtocol = 'sac-sock' - ws - reconnected = false - maxAttempts = 3 - totalAttempts = 0 - kickedOut = false - userID - url - - constructor(url, userID, opts = { reconnectOpts: {} }) { - opts = opts || { reconnectOpts: {} }; - this.headerStartChar = String.fromCharCode(this.headerStartCharCode) - this.dataStartChar = String.fromCharCode(this.dataStartCharCode) - this.url = url - this.userID = userID - if (typeof opts.reconnectOpts == 'object') { - for (let i in opts.reconnectOpts) { - if (!opts.reconnectOpts.hasOwnProperty(i)) continue; - this.reconnectOpts[i] = opts.reconnectOpts[i]; - } - } - } - - noop() { } - - async connect(timeout = 10000) { - try { - this.ws = new WebSocket(this.url, this.subProtocol); - this.ws.binaryType = 'arraybuffer'; - this.handleEvents() - const isOpened = () => (this.ws.readyState === WebSocket.OPEN) - - if (this.ws.readyState !== WebSocket.CONNECTING) { - return isOpened() - } - } catch (err) { - console.log("Error on reconnection", err) - } - - } - - handleEvents() { - let self = this - this.onConnect(this.noop) - this.onDisconnect(this.noop) - this.ws.onmessage = function (e) { - let msg = e.data, - headers = {}, - eventName = '', - data = '', - chr = null, - i, msgLen; - - if (typeof msg === 'string') { - let dataStarted = false, - headerStarted = false; - - for (i = 0, msgLen = msg.length; i < msgLen; i++) { - chr = msg[i]; - if (!dataStarted && !headerStarted && chr !== self.dataStartChar && chr !== self.headerStartChar) { - eventName += chr; - } else if (!headerStarted && chr === self.headerStartChar) { - headerStarted = true; - } else if (headerStarted && !dataStarted && chr !== self.dataStartChar) { - headers[chr] = true; - } else if (!dataStarted && chr === self.dataStartChar) { - dataStarted = true; - } else { - data += chr; - } - } - } else if (msg && msg instanceof ArrayBuffer && msg.byteLength !== undefined) { - let dv = new DataView(msg), - headersStarted = false; - - for (i = 0, msgLen = dv.byteLength; i < msgLen; i++) { - chr = dv.getUint8(i); - - if (chr !== self.dataStartCharCode && chr !== self.headerStartCharCode && !headersStarted) { - eventName += String.fromCharCode(chr); - } else if (chr === self.headerStartCharCode && !headersStarted) { - headersStarted = true; - } else if (headersStarted && chr !== self.dataStartCharCode) { - headers[String.fromCharCode(chr)] = true; - } else if (chr === self.dataStartCharCode) { - // @ts-ignore - data = dv.buffer.slice(i + 1); - break; - } - } - } - - if (eventName.length === 0) return; //no event to dispatch - if (typeof self.events[eventName] === 'undefined') return; - // @ts-ignore - self.events[eventName].call(self, (headers.J) ? JSON.parse(data) : data); - } - } - - startReconnect(timeout = 10000) { - let self = this - setTimeout(async function () { - try { - if (self.maxAttempts > self.totalAttempts) { - return - } - let newWS = new WebSocket(self.url, self.subProtocol); - self.totalAttempts += 1 - console.log("attempt to reconnect...", self.totalAttempts) - newWS.onmessage = self.ws.onmessage; - newWS.onclose = self.ws.onclose; - newWS.binaryType = self.ws.binaryType; - self.handleEvents() - - //we need to run the initially set onConnect function on the first successful connecting, - //even if replayOnConnect is disabled. The server might not be available on a first - //connection attempt. - if (self.reconnectOpts.replayOnConnect || !self.connectedOnce) { - newWS.onopen = self.ws.onopen; - } - self.ws = newWS; - if (!self.reconnectOpts.replayOnConnect && self.connectedOnce) { - self.onConnect(self.noop); - } - self.ws = newWS - const isOpened = () => (self.ws.readyState === WebSocket.OPEN) - - if (self.ws.readyState !== WebSocket.CONNECTING) { - const opened = isOpened() - if (!opened) { - self.startReconnect(timeout) - } else { - console.log("connected with signal server") - } - return opened - } - else { - const intrasleep = 100 - const ttl = timeout / intrasleep // time to loop - let loop = 0 - while (self.ws.readyState === WebSocket.CONNECTING && loop < ttl) { - await new Promise(resolve => setTimeout(resolve, intrasleep)) - loop++ - } - const opened = isOpened() - if (!opened) { - self.startReconnect(timeout) - } else { - console.log("connected with signal server") - } - return opened - } - } catch (err) { - console.log("Error on reconnection", err) - } - }, self.reconnectOpts.intervalMS); - } - - onConnect(callback) { - let self = this - this.ws.onopen = function () { - self.connectedOnce = true; - callback.apply(self, arguments); - if (self.reconnecting) { - self.reconnecting = false; - } - }; - }; - - onDisconnect(callback) { - let self = this - this.ws.onclose = function () { - if (!self.reconnecting && self.connectedOnce) { - callback.apply(self, arguments); - } - if (self.reconnectOpts.enabled && !self.kickedOut) { - self.reconnecting = true; - self.startReconnect(); - } - }; - }; - - on(eventName, callback, override) { - override = override || false - if (!this.events.hasOwnProperty(eventName)) { - this.events[eventName] = callback; - } else if (override) { - this.off(eventName) - this.events[eventName] = callback; - } - } - off(eventName) { - if (this.events[eventName]) { - delete this.events[eventName]; - } - } - - emit(eventName, data) { - let rs = this.ws.readyState; - if (rs === 0) { - console.warn("websocket is not open yet"); - return; - } else if (rs === 2 || rs === 3) { - console.error("websocket is closed"); - return; - } - let msg; - if (data instanceof ArrayBuffer) { - let ab = new ArrayBuffer(data.byteLength + eventName.length + 1), - newBuf = new DataView(ab), - oldBuf = new DataView(data), - i = 0; - for (let evtLen = eventName.length; i < evtLen; i++) { - newBuf.setUint8(i, eventName.charCodeAt(i)); - } - newBuf.setUint8(i, this.dataStartCharCode); - i++; - for (let x = 0, xLen = oldBuf.byteLength; x < xLen; x++, i++) { - newBuf.setUint8(i, oldBuf.getUint8(x)); - } - msg = ab; - } else if (typeof data === 'object') { - msg = eventName + this.dataStartChar + JSON.stringify(data); - } else { - msg = eventName + this.dataStartChar + data; - } - this.ws.send(msg); - } - - close() { - this.reconnectOpts.enabled = false; - return this.ws.close(1000); - } -} - -// Initialize dashboard when DOM is loaded -document.addEventListener('DOMContentLoaded', () => { - window.Socket = Socket; -}); diff --git a/examples/parse.go b/examples/parse.go deleted file mode 100644 index 7298d2d..0000000 --- a/examples/parse.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/oarkflow/form" -) - -func main() { - queryString := []byte("fields[0][method]=GET&fields[0][path]=/user/:id&fields[0][handlerMsg]=User Profile&fields[1][method]=POST&fields[1][path]=/user/create&fields[1][handlerMsg]=Create User") - fmt.Println(form.DecodeForm(queryString)) -} diff --git a/examples/pool.go b/examples/pool.go deleted file mode 100644 index 33a3cec..0000000 --- a/examples/pool.go +++ /dev/null @@ -1,66 +0,0 @@ -package main - -import ( - "context" - "fmt" - "math/rand" - "os/signal" - "syscall" - "time" - - "github.com/oarkflow/json" - - v1 "github.com/oarkflow/mq" -) - -func main() { - ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) - defer stop() - pool := v1.NewPool(5, - v1.WithTaskStorage(v1.NewMemoryTaskStorage(10*time.Minute)), - v1.WithHandler(func(ctx context.Context, payload *v1.Task) v1.Result { - v1.Logger.Info().Str("taskID", payload.ID).Msg("Processing task payload") - time.Sleep(500 * time.Millisecond) - return v1.Result{} - }), - v1.WithPoolCallback(func(ctx context.Context, result v1.Result) error { - v1.Logger.Info().Msg("Task callback invoked") - return nil - }), - v1.WithCircuitBreaker(v1.CircuitBreakerConfig{ - Enabled: true, - FailureThreshold: 3, - ResetTimeout: 5 * time.Second, - }), - v1.WithWarningThresholds(v1.ThresholdConfig{ - HighMemory: v1.Config.WarningThreshold.HighMemory, - LongExecution: v1.Config.WarningThreshold.LongExecution, - }), - v1.WithDiagnostics(true), - v1.WithMetricsRegistry(v1.NewInMemoryMetricsRegistry()), - v1.WithGracefulShutdown(10*time.Second), - v1.WithPlugin(&v1.DefaultPlugin{}), - ) - defer func() { - metrics := pool.Metrics() - v1.Logger.Info().Msgf("Metrics: %+v", metrics) - pool.Stop() - v1.Logger.Info().Msgf("Dead Letter Queue has %d tasks", len(pool.DLQ().Tasks())) - }() - - go func() { - for i := 0; i < 50; i++ { - task := &v1.Task{ - ID: "", - Payload: json.RawMessage(fmt.Sprintf("Task Payload %d", i)), - } - if err := pool.EnqueueTask(context.Background(), task, rand.Intn(10)); err != nil { - v1.Logger.Error().Err(err).Msg("Failed to enqueue task") - } - time.Sleep(200 * time.Millisecond) - } - }() - - <-ctx.Done() - v1.Logger.Info().Msg("Received shutdown signal, exiting...") -} diff --git a/examples/priority.go b/examples/priority.go deleted file mode 100644 index bb1e9bd..0000000 --- a/examples/priority.go +++ /dev/null @@ -1,34 +0,0 @@ -package main - -import ( - "context" - "time" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/examples/tasks" -) - -func main() { - pool := mq.NewPool(2, - mq.WithTaskQueueSize(5), - mq.WithMaxMemoryLoad(1000), - mq.WithHandler(tasks.SchedulerHandler), - mq.WithPoolCallback(tasks.SchedulerCallback), - mq.WithTaskStorage(mq.NewMemoryTaskStorage(10*time.Minute)), - mq.WithDiagnostics(false), - ) - - for i := 0; i < 100; i++ { - if i%10 == 0 { - pool.EnqueueTask(context.Background(), &mq.Task{ID: "High Priority Task: I'm high"}, 10) - } else if i%15 == 0 { - pool.EnqueueTask(context.Background(), &mq.Task{ID: "Super High Priority Task: {}"}, 15) - } else { - pool.EnqueueTask(context.Background(), &mq.Task{ID: "Low Priority Task"}, 1) - } - } - - time.Sleep(15 * time.Second) - pool.Metrics() - pool.Stop() -} diff --git a/examples/publisher.go b/examples/publisher.go deleted file mode 100644 index f823f96..0000000 --- a/examples/publisher.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import ( - "context" - "fmt" - - "github.com/oarkflow/mq" -) - -func main() { - payload := []byte(`{"phone": "+123456789", "email": "abc.xyz@gmail.com", "age": 12}`) - task := mq.Task{ - Payload: payload, - } - publisher := mq.NewPublisher("publish-1", mq.WithBrokerURL(":8081")) - for i := 0; i < 2; i++ { - // publisher := mq.NewPublisher("publish-1", mq.WithTLS(true, "./certs/server.crt", "./certs/server.key")) - err := publisher.Publish(context.Background(), task, "queue1") - if err != nil { - panic(err) - } - } - fmt.Println("Async task published successfully") -} diff --git a/examples/scheduler.go b/examples/scheduler.go deleted file mode 100644 index 0a0e06e..0000000 --- a/examples/scheduler.go +++ /dev/null @@ -1,108 +0,0 @@ -package main - -import ( - "context" - "fmt" - "time" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/examples/tasks" -) - -func main() { - handler := tasks.SchedulerHandler - callback := tasks.SchedulerCallback - - // Initialize the pool with various parameters. - pool := mq.NewPool(3, - mq.WithTaskQueueSize(5), - mq.WithMaxMemoryLoad(1000), - mq.WithHandler(handler), - mq.WithPoolCallback(callback), - mq.WithTaskStorage(mq.NewMemoryTaskStorage(10*time.Minute)), - ) - scheduler := mq.NewScheduler(pool) - scheduler.Start() - ctx := context.Background() - - // ------------------------------- - // Special String Examples - // ------------------------------- - - // Task scheduled with @every for a duration of 30 seconds. - scheduler.AddTask(ctx, &mq.Task{ID: "Every 30 Seconds Task"}, - mq.WithScheduleSpec("@every 30s"), - mq.WithRecurring(), - ) - - // Task scheduled with @every using a 1-minute duration. - scheduler.AddTask(ctx, &mq.Task{ID: "Every Minute Task"}, - mq.WithScheduleSpec("@every 1m"), - mq.WithRecurring(), - ) - - // Task scheduled with @daily (runs at midnight by default). - scheduler.AddTask(ctx, &mq.Task{ID: "Daily Task"}, - mq.WithScheduleSpec("@daily"), - mq.WithRecurring(), - ) - - // Task scheduled with @weekly (runs at midnight on Sundays). - scheduler.AddTask(ctx, &mq.Task{ID: "Weekly Task"}, - mq.WithScheduleSpec("@weekly"), - mq.WithRecurring(), - ) - - // Task scheduled with @monthly (runs on the 1st of every month at midnight). - scheduler.AddTask(ctx, &mq.Task{ID: "Monthly Task"}, - mq.WithScheduleSpec("@monthly"), - mq.WithRecurring(), - ) - - // Task scheduled with @yearly (or @annually) – runs on January 1st at midnight. - scheduler.AddTask(ctx, &mq.Task{ID: "Yearly Task"}, - mq.WithScheduleSpec("@yearly"), - mq.WithRecurring(), - ) - - // ------------------------------- - // Cron Spec Examples - // ------------------------------- - - // Example using a standard 5-field cron expression: - // "0 * * * *" means at minute 0 of every hour. - scheduler.AddTask(ctx, &mq.Task{ID: "Cron 5-field Task"}, - mq.WithScheduleSpec("0 * * * *"), - mq.WithRecurring(), - ) - - // Example using an extended 6-field cron expression: - // "30 * * * * *" means at 30 seconds past every minute. - scheduler.AddTask(ctx, &mq.Task{ID: "Cron 6-field Task"}, - mq.WithScheduleSpec("30 * * * * *"), - mq.WithRecurring(), - ) - - // ------------------------------- - // Example Task Enqueuing (Immediate Tasks) - // ------------------------------- - // These tasks are enqueued immediately into the pool queue. - pool.EnqueueTask(context.Background(), &mq.Task{ID: "Immediate Task 1"}, 1) - time.Sleep(1 * time.Second) - pool.EnqueueTask(context.Background(), &mq.Task{ID: "Immediate Task 2"}, 5) - - time.Sleep(10 * time.Minute) - // Remove scheduled tasks after demonstration. - scheduler.RemoveTask("Every 30 Seconds Task") - scheduler.RemoveTask("Every Minute Task") - scheduler.RemoveTask("Daily Task") - scheduler.RemoveTask("Weekly Task") - scheduler.RemoveTask("Monthly Task") - scheduler.RemoveTask("Yearly Task") - scheduler.RemoveTask("Cron 5-field Task") - scheduler.RemoveTask("Cron 6-field Task") - scheduler.Close() - - // Retrieve metrics, then stop the pool. - fmt.Println(pool.FormattedMetrics()) -} diff --git a/examples/schema.json b/examples/schema.json deleted file mode 100644 index 4195ea0..0000000 --- a/examples/schema.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "type": "object", - "properties": { - "first_name": { - "type": "string", - "title": "First Name", - "order": 1, - "ui": { - "element": "input", - "class": "form-group", - "name": "first_name" - } - }, - "last_name": { - "type": "string", - "title": "Last Name", - "order": 2, - "ui": { - "element": "input", - "class": "form-group", - "name": "last_name" - } - }, - "email": { - "type": "email", - "title": "Email Address", - "order": 3, - "ui": { - "element": "input", - "type": "email", - "class": "form-group", - "name": "email" - } - }, - "user_type": { - "type": "string", - "title": "User Type", - "order": 4, - "ui": { - "element": "select", - "class": "form-group", - "name": "user_type", - "options": [ "new", "premium", "standard" ] - } - }, - "priority": { - "type": "string", - "title": "Priority Level", - "order": 5, - "ui": { - "element": "select", - "class": "form-group", - "name": "priority", - "options": [ "low", "medium", "high", "urgent" ] - } - }, - "subject": { - "type": "string", - "title": "Subject", - "order": 6, - "ui": { - "element": "input", - "class": "form-group", - "name": "subject" - } - }, - "message": { - "type": "textarea", - "title": "Message", - "order": 7, - "ui": { - "element": "textarea", - "class": "form-group", - "name": "message" - } - } - }, - "required": [ "first_name", "last_name", "email", "user_type", "priority", "subject", "message" ], - "form": { - "class": "form-horizontal", - "action": "/process?task_id={{task_id}}&next=true", - "method": "POST", - "enctype": "application/x-www-form-urlencoded", - "groups": [ - { - "title": "User Information", - "fields": [ "first_name", "last_name", "email" ] - }, - { - "title": "Ticket Details", - "fields": [ "user_type", "priority", "subject", "message" ] - } - ], - "submit": { - "type": "submit", - "label": "Submit", - "class": "btn btn-primary" - }, - "reset": { - "type": "reset", - "label": "Reset", - "class": "btn btn-secondary" - } - } -} diff --git a/examples/server.go b/examples/server.go deleted file mode 100644 index 450149f..0000000 --- a/examples/server.go +++ /dev/null @@ -1,17 +0,0 @@ -package main - -import ( - "context" - - "github.com/oarkflow/mq" - - "github.com/oarkflow/mq/examples/tasks" -) - -func main() { - b := mq.NewBroker(mq.WithCallback(tasks.Callback), mq.WithBrokerURL(":8081")) - // b := mq.NewBroker(mq.WithCallback(tasks.Callback), mq.WithTLS(true, "./certs/server.crt", "./certs/server.key"), mq.WithCAPath("./certs/ca.cert")) - b.NewQueue("queue1") - b.NewQueue("queue2") - b.Start(context.Background()) -} diff --git a/examples/sms_form_dag.go b/examples/sms_form_dag.go deleted file mode 100644 index 316f164..0000000 --- a/examples/sms_form_dag.go +++ /dev/null @@ -1,708 +0,0 @@ -package main - -import ( - "context" - "fmt" - "regexp" - "strings" - "time" - - "github.com/oarkflow/json" - - "github.com/oarkflow/mq/dag" - "github.com/oarkflow/mq/utils" - - "github.com/oarkflow/jet" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/consts" -) - -func main() { - flow := dag.NewDAG("SMS Sender", "sms-sender", func(taskID string, result mq.Result) { - fmt.Printf("SMS workflow completed for task %s: %s\n", taskID, string(utils.RemoveRecursiveFromJSON(result.Payload, "html_content"))) - }) - - // Add SMS workflow nodes - // Note: Page nodes have no timeout by default, allowing users unlimited time for form input - flow.AddNode(dag.Page, "SMS Form", "SMSForm", &SMSFormNode{}) - flow.AddNode(dag.Function, "Validate Input", "ValidateInput", &ValidateInputNode{}) - flow.AddNode(dag.Function, "Send SMS", "SendSMS", &SendSMSNode{}) - flow.AddNode(dag.Page, "SMS Result", "SMSResult", &SMSResultNode{}) - flow.AddNode(dag.Page, "Error Page", "ErrorPage", &ErrorPageNode{}) - - // Define edges for SMS workflow - flow.AddEdge(dag.Simple, "Form to Validation", "SMSForm", "ValidateInput") - flow.AddCondition("ValidateInput", map[string]string{"valid": "SendSMS", "invalid": "ErrorPage"}) - flow.AddCondition("SendSMS", map[string]string{"sent": "SMSResult", "failed": "ErrorPage"}) - - // Start the flow - if flow.Error != nil { - panic(flow.Error) - } - - fmt.Println("Starting SMS DAG server on http://0.0.0.0:8083") - fmt.Println("Navigate to the URL to access the SMS form") - flow.Start(context.Background(), "0.0.0.0:8083") -} - -// SMSFormNode - Initial form to collect SMS data -type SMSFormNode struct { - dag.Operation -} - -func (s *SMSFormNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - // Check if this is a form submission - var inputData map[string]any - if task.Payload != nil && len(task.Payload) > 0 { - if err := json.Unmarshal(task.Payload, &inputData); err == nil { - // If we have valid input data, pass it through for validation - return mq.Result{Payload: task.Payload, Ctx: ctx} - } - } - - // Otherwise, show the form - htmlTemplate := ` - - - - SMS Sender - - - -
-

📱 SMS Sender

-
-

Send SMS messages through our secure DAG workflow

-
-
-
- - -
- Supports US format: +1234567890 or 1234567890 -
-
- -
- - -
0/160 characters
-
- -
- - -
- - -
-
- - - -` - - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - rs, err := parser.ParseTemplate(htmlTemplate, map[string]any{ - "task_id": ctx.Value("task_id"), - }) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - data := map[string]any{ - "html_content": rs, - "step": "form", - } - bt, _ := json.Marshal(data) - return mq.Result{Payload: bt, Ctx: ctx} -} - -// ValidateInputNode - Validates phone number and message -type ValidateInputNode struct { - dag.Operation -} - -func (v *ValidateInputNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{ - Error: fmt.Errorf("invalid input data: %v", err), - Ctx: ctx, - } - } - - // Extract form data - phone, _ := inputData["phone"].(string) - message, _ := inputData["message"].(string) - senderName, _ := inputData["sender_name"].(string) - - // Validate phone number - if phone == "" { - inputData["validation_error"] = "Phone number is required" - inputData["error_field"] = "phone" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - // Clean and validate phone number format - cleanPhone := regexp.MustCompile(`\D`).ReplaceAllString(phone, "") - - // Check for valid US phone number (10 or 11 digits) - if len(cleanPhone) == 10 { - cleanPhone = "1" + cleanPhone // Add country code - } else if len(cleanPhone) != 11 || !strings.HasPrefix(cleanPhone, "1") { - inputData["validation_error"] = "Invalid phone number format. Please use US format: +1234567890 or 1234567890" - inputData["error_field"] = "phone" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - // Validate message - if message == "" { - inputData["validation_error"] = "Message is required" - inputData["error_field"] = "message" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - if len(message) > 160 { - inputData["validation_error"] = "Message too long. Maximum 160 characters allowed" - inputData["error_field"] = "message" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - - // Check for potentially harmful content - forbiddenWords := []string{"spam", "scam", "fraud", "hack"} - messageLower := strings.ToLower(message) - for _, word := range forbiddenWords { - if strings.Contains(messageLower, word) { - inputData["validation_error"] = "Message contains prohibited content" - inputData["error_field"] = "message" - bt, _ := json.Marshal(inputData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "invalid"} - } - } - - // All validations passed - validatedData := map[string]any{ - "phone": cleanPhone, - "message": message, - "sender_name": senderName, - "validated_at": time.Now().Format("2006-01-02 15:04:05"), - "validation_status": "success", - "formatted_phone": formatPhoneForDisplay(cleanPhone), - "char_count": len(message), - } - - bt, _ := json.Marshal(validatedData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "valid"} -} - -// SendSMSNode - Simulates sending SMS -type SendSMSNode struct { - dag.Operation -} - -func (s *SendSMSNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - phone, _ := inputData["phone"].(string) - message, _ := inputData["message"].(string) - senderName, _ := inputData["sender_name"].(string) - - // Simulate SMS sending delay - time.Sleep(500 * time.Millisecond) - - // Simulate occasional failures for demo purposes - timestamp := time.Now() - success := timestamp.Second()%10 != 0 // 90% success rate - - if !success { - errorData := map[string]any{ - "phone": phone, - "message": message, - "sender_name": senderName, - "sms_status": "failed", - "error_message": "SMS gateway temporarily unavailable. Please try again.", - "sent_at": timestamp.Format("2006-01-02 15:04:05"), - "retry_suggested": true, - } - bt, _ := json.Marshal(errorData) - return mq.Result{ - Payload: bt, - Ctx: ctx, - ConditionStatus: "failed", - } - } - - // Generate mock SMS ID and response - smsID := fmt.Sprintf("SMS_%d_%s", timestamp.Unix(), phone[len(phone)-4:]) - - resultData := map[string]any{ - "phone": phone, - "formatted_phone": formatPhoneForDisplay(phone), - "message": message, - "sender_name": senderName, - "sms_status": "sent", - "sms_id": smsID, - "sent_at": timestamp.Format("2006-01-02 15:04:05"), - "delivery_estimate": "1-2 minutes", - "cost_estimate": "$0.02", - "gateway": "MockSMS Gateway", - "char_count": len(message), - } - - fmt.Printf("📱 SMS sent successfully! ID: %s, Phone: %s\n", smsID, formatPhoneForDisplay(phone)) - - bt, _ := json.Marshal(resultData) - return mq.Result{Payload: bt, Ctx: ctx, ConditionStatus: "sent"} -} - -// SMSResultNode - Shows successful SMS result -type SMSResultNode struct { - dag.Operation -} - -func (r *SMSResultNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - htmlTemplate := ` - - - - SMS Sent Successfully - - - -
-
-

SMS Sent Successfully!

- -
{{sms_status}}
- -
-
-
📱 Phone Number
-
{{formatted_phone}}
-
-
-
🆔 SMS ID
-
{{sms_id}}
-
-
-
⏰ Sent At
-
{{sent_at}}
-
-
-
🚚 Delivery
-
{{delivery_estimate}}
-
- {{if sender_name}} -
-
👤 Sender
-
{{sender_name}}
-
- {{end}} -
-
💰 Cost
-
{{cost_estimate}}
-
-
- -
-
💬 Message Sent ({{char_count}} chars):
-
- "{{message}}" -
-
- - - -
- Gateway: {{gateway}} | Task completed in DAG workflow -
-
- -` - - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - rs, err := parser.ParseTemplate(htmlTemplate, inputData) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - finalData := map[string]any{ - "html_content": rs, - "result": inputData, - "step": "success", - } - bt, _ := json.Marshal(finalData) - return mq.Result{Payload: bt, Ctx: ctx} -} - -// ErrorPageNode - Shows validation or sending errors -type ErrorPageNode struct { - dag.Operation -} - -func (e *ErrorPageNode) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var inputData map[string]any - if err := json.Unmarshal(task.Payload, &inputData); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - // Determine error type and message - errorMessage, _ := inputData["validation_error"].(string) - errorField, _ := inputData["error_field"].(string) - smsError, _ := inputData["error_message"].(string) - - if errorMessage == "" && smsError != "" { - errorMessage = smsError - errorField = "sms_sending" - } - if errorMessage == "" { - errorMessage = "An unknown error occurred" - } - - htmlTemplate := ` - - - - SMS Error - - - -
-
-

SMS Error

- -
- {{error_message}} -
- - {{if error_field}} -
- Error Field: {{error_field}}
- Action Required: Please correct the highlighted field and try again. -
- {{end}} - - {{if retry_suggested}} -
- ⚠️ Temporary Issue: This appears to be a temporary gateway issue. - Please try sending your SMS again in a few moments. -
- {{end}} - - - -
- DAG Error Handler | SMS Workflow Failed -
-
- -` - - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - templateData := map[string]any{ - "error_message": errorMessage, - "error_field": errorField, - "retry_suggested": inputData["retry_suggested"], - } - - rs, err := parser.ParseTemplate(htmlTemplate, templateData) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - finalData := map[string]any{ - "html_content": rs, - "error_data": inputData, - "step": "error", - } - bt, _ := json.Marshal(finalData) - return mq.Result{Payload: bt, Ctx: ctx} -} - -// Helper function to format phone number for display -func formatPhoneForDisplay(phone string) string { - if len(phone) == 11 && strings.HasPrefix(phone, "1") { - // Format as +1 (XXX) XXX-XXXX - return fmt.Sprintf("+1 (%s) %s-%s", - phone[1:4], - phone[4:7], - phone[7:11]) - } - return phone -} diff --git a/examples/static.go b/examples/static.go deleted file mode 100644 index b1144fb..0000000 --- a/examples/static.go +++ /dev/null @@ -1,94 +0,0 @@ -package main - -import ( - "log" - "mime" - "os" - "path/filepath" - "strings" - - "github.com/gofiber/fiber/v2" - "github.com/gofiber/fiber/v2/middleware/compress" - "github.com/gofiber/fiber/v2/middleware/rewrite" -) - -type Config struct { - Prefix string `json:"prefix"` - Root string `json:"root"` - Index string `json:"index"` - UseIndex bool `json:"use_index"` - Compress bool `json:"compress"` -} - -func main() { - app := fiber.New() - config := Config{ - Prefix: "/data", - Root: "/Users/sujit/Sites/mq/examples/webroot", - UseIndex: true, - Compress: true, - } - New(app, config) - log.Fatal(app.Listen(":3000")) -} - -func New(router fiber.Router, cfg ...Config) { - var config Config - if len(cfg) > 0 { - config = cfg[0] - } - if config.Root == "" { - config.Root = "./" - } - if config.Prefix == "/" { - config.Prefix = "" - } - if config.UseIndex && config.Index == "" { - config.Index = "index.html" - } - if config.Compress { - router.Use(compress.New(compress.Config{ - Level: compress.LevelBestSpeed, - })) - } - rules := make(map[string]string) - root := filepath.Clean(config.Root) - filepath.WalkDir(config.Root, func(path string, d os.DirEntry, err error) error { - if !d.IsDir() { - path = strings.TrimPrefix(path, root) - rules[path] = filepath.Join(config.Prefix, path) - } - return nil - }) - router.Use(rewrite.New(rewrite.Config{Rules: rules})) - router.Get(config.Prefix+"/*", handleStaticFile(config)) -} - -func handleStaticFile(config Config) fiber.Handler { - return func(c *fiber.Ctx) error { - fullPath := c.Params("*") - filePath := filepath.Join(config.Root, fullPath) - fileInfo, err := os.Stat(filePath) - if err != nil { - return c.Status(fiber.StatusNotFound).SendString("File not found") - } - if fileInfo.IsDir() { - if !config.UseIndex { - return c.Status(fiber.StatusNotFound).SendString("Invalid file") - } - filePath = filepath.Join(filePath, config.Index) - } - fileContent, err := os.ReadFile(filePath) - if err != nil { - return c.Status(fiber.StatusNotFound).SendString("File not found") - } - ext := filepath.Ext(filePath) - mimeType := mime.TypeByExtension(ext) - if mimeType == "" { - mimeType = "application/octet-stream" - } - c.Set("Content-Type", mimeType) - c.Set("Cache-Control", "public, max-age=31536000") - return c.Send(fileContent) - } -} diff --git a/examples/tasks/operations.go b/examples/tasks/operations.go deleted file mode 100644 index 9f1513e..0000000 --- a/examples/tasks/operations.go +++ /dev/null @@ -1,135 +0,0 @@ -package tasks - -import ( - "context" - - "github.com/oarkflow/json" - - v2 "github.com/oarkflow/mq/dag" - - "github.com/oarkflow/mq" -) - -type GetData struct { - v2.Operation -} - -func (e *GetData) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return mq.Result{Payload: task.Payload, Ctx: ctx} -} - -type Loop struct { - v2.Operation -} - -func (e *Loop) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - return mq.Result{Payload: task.Payload, Ctx: ctx} -} - -type Condition struct { - v2.Operation -} - -func (e *Condition) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - err := json.Unmarshal(task.Payload, &data) - if err != nil { - panic(err) - } - switch email := data["email"].(type) { - case string: - if email == "abc.xyz@gmail.com" { - return mq.Result{Payload: task.Payload, ConditionStatus: "pass", Ctx: ctx} - } - return mq.Result{Payload: task.Payload, ConditionStatus: "fail", Ctx: ctx} - default: - return mq.Result{Payload: task.Payload, ConditionStatus: "fail", Ctx: ctx} - } -} - -type PrepareEmail struct { - v2.Operation -} - -func (e *PrepareEmail) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - err := json.Unmarshal(task.Payload, &data) - if err != nil { - panic(err) - } - data["email_valid"] = true - d, _ := json.Marshal(data) - return mq.Result{Payload: d, Ctx: ctx} -} - -type EmailDelivery struct { - v2.Operation -} - -func (e *EmailDelivery) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - err := json.Unmarshal(task.Payload, &data) - if err != nil { - panic(err) - } - data["email_sent"] = true - d, _ := json.Marshal(data) - return mq.Result{Payload: d, Ctx: ctx} -} - -type SendSms struct { - v2.Operation -} - -func (e *SendSms) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - err := json.Unmarshal(task.Payload, &data) - if err != nil { - panic(err) - } - data["sms_sent"] = true - d, _ := json.Marshal(data) - return mq.Result{Payload: d, Ctx: ctx} -} - -type StoreData struct { - v2.Operation -} - -func (e *StoreData) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - err := json.Unmarshal(task.Payload, &data) - if err != nil { - panic(err) - } - data["stored"] = true - d, _ := json.Marshal(data) - return mq.Result{Payload: d, Ctx: ctx} -} - -type InAppNotification struct { - v2.Operation -} - -func (e *InAppNotification) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - err := json.Unmarshal(task.Payload, &data) - if err != nil { - panic(err) - } - data["notified"] = true - d, _ := json.Marshal(data) - return mq.Result{Payload: d, Ctx: ctx} -} - -type Final struct { - v2.Operation -} - -func (e *Final) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - rs := map[string]any{ - "html_content": `Processed successfully!`, - } - bt, _ := json.Marshal(rs) - return mq.Result{Payload: bt, Ctx: ctx} -} diff --git a/examples/tasks/scheduler.go b/examples/tasks/scheduler.go deleted file mode 100644 index f913926..0000000 --- a/examples/tasks/scheduler.go +++ /dev/null @@ -1,20 +0,0 @@ -package tasks - -import ( - "context" - "fmt" - - "github.com/oarkflow/mq" -) - -func SchedulerHandler(ctx context.Context, task *mq.Task) mq.Result { - fmt.Printf("Processing task: %s\n", task.ID) - return mq.Result{Error: nil} -} - -func SchedulerCallback(ctx context.Context, result mq.Result) error { - if result.Error != nil { - fmt.Println("Task failed!", result.Error.Error()) - } - return nil -} diff --git a/examples/tasks/tasks.go b/examples/tasks/tasks.go deleted file mode 100644 index aac868f..0000000 --- a/examples/tasks/tasks.go +++ /dev/null @@ -1,110 +0,0 @@ -package tasks - -import ( - "context" - "fmt" - "log" - - "github.com/oarkflow/json" - - v2 "github.com/oarkflow/mq/dag" - - "github.com/oarkflow/mq" -) - -type Node1 struct{ v2.Operation } - -func (t *Node1) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - fmt.Println("Node 1", string(task.Payload)) - return mq.Result{Payload: task.Payload, TaskID: task.ID} -} - -type Node2 struct{ v2.Operation } - -func (t *Node2) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - fmt.Println("Node 2", string(task.Payload)) - return mq.Result{Payload: task.Payload, TaskID: task.ID} -} - -type Node3 struct{ v2.Operation } - -func (t *Node3) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - var user map[string]any - fmt.Println(string(task.Payload)) - err := json.Unmarshal(task.Payload, &user) - if err != nil { - panic(err) - } - age := int(user["age"].(float64)) - status := "FAIL" - if age > 20 { - status = "PASS" - } - user["status"] = status - resultPayload, _ := json.Marshal(user) - return mq.Result{Payload: resultPayload, ConditionStatus: status} -} - -type Node4 struct{ v2.Operation } - -func (t *Node4) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - var user map[string]any - _ = json.Unmarshal(task.Payload, &user) - user["node"] = "D" - resultPayload, _ := json.Marshal(user) - return mq.Result{Payload: resultPayload} -} - -type Node5 struct{ v2.Operation } - -func (t *Node5) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - var user map[string]any - _ = json.Unmarshal(task.Payload, &user) - user["node"] = "E" - resultPayload, _ := json.Marshal(user) - return mq.Result{Payload: resultPayload} -} - -type Node6 struct{ v2.Operation } - -func (t *Node6) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - var user map[string]any - _ = json.Unmarshal(task.Payload, &user) - resultPayload, _ := json.Marshal(map[string]any{"storage": user}) - return mq.Result{Payload: resultPayload} -} - -type Node7 struct{ v2.Operation } - -func (t *Node7) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - var user map[string]any - _ = json.Unmarshal(task.Payload, &user) - user["node"] = "G" - resultPayload, _ := json.Marshal(user) - return mq.Result{Payload: resultPayload} -} - -type Node8 struct{ v2.Operation } - -func (t *Node8) ProcessTask(_ context.Context, task *mq.Task) mq.Result { - var user map[string]any - _ = json.Unmarshal(task.Payload, &user) - user["node"] = "H" - resultPayload, _ := json.Marshal(user) - return mq.Result{Payload: resultPayload} -} - -func Callback(_ context.Context, task mq.Result) mq.Result { - fmt.Println("Received task", task.TaskID, "Payload", string(task.Payload), task.Error, task.Topic) - return mq.Result{} -} - -func NotifyResponse(_ context.Context, result mq.Result) error { - log.Printf("DAG - FINAL_RESPONSE ~> TaskID: %s, Payload: %s, Topic: %s, Error: %v, Latency: %s", result.TaskID, result.Payload, result.Topic, result.Error, result.Latency) - return nil -} - -func NotifySubDAGResponse(_ context.Context, result mq.Result) error { - log.Printf("SUB DAG - FINAL_RESPONSE ~> TaskID: %s, Payload: %s, Topic: %s, Error: %v, Latency: %s", result.TaskID, result.Payload, result.Topic, result.Error, result.Latency) - return nil -} diff --git a/examples/v2.go b/examples/v2.go deleted file mode 100644 index 2db4ed9..0000000 --- a/examples/v2.go +++ /dev/null @@ -1,189 +0,0 @@ -package main - -import ( - "context" - "fmt" - "os" - - "github.com/oarkflow/json" - - "github.com/gofiber/fiber/v2" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/dag" - - "github.com/oarkflow/jet" - - "github.com/oarkflow/mq/consts" -) - -type Form struct { - dag.Operation -} - -func (p *Form) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - baseURI := "" - if dg, ok := task.GetFlow().(*dag.DAG); ok { - baseURI = dg.BaseURI() - } - bt, err := os.ReadFile("webroot/form.html") - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - rs, err := parser.ParseTemplate(string(bt), map[string]any{ - "task_id": ctx.Value("task_id"), - "base_uri": baseURI, - }) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - data := map[string]any{ - "html_content": rs, - } - bt, _ = json.Marshal(data) - return mq.Result{Payload: bt, Ctx: ctx} -} - -type NodeA struct { - dag.Operation -} - -func (p *NodeA) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - data["allowed_voting"] = data["age"] == "18" - updatedPayload, _ := json.Marshal(data) - return mq.Result{Payload: updatedPayload, Ctx: ctx} -} - -type NodeB struct { - dag.Operation -} - -func (p *NodeB) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - data["female_voter"] = data["gender"] == "female" - updatedPayload, _ := json.Marshal(data) - return mq.Result{Payload: updatedPayload, Ctx: ctx} -} - -type NodeC struct { - dag.Operation -} - -func (p *NodeC) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - var data map[string]any - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - data["voted"] = true - updatedPayload, _ := json.Marshal(data) - return mq.Result{Payload: updatedPayload, Ctx: ctx} -} - -type Result struct { - dag.Operation -} - -func (p *Result) ProcessTask(ctx context.Context, task *mq.Task) mq.Result { - baseURI := "" - if dg, ok := task.GetFlow().(*dag.DAG); ok { - baseURI = dg.BaseURI() - } - bt, err := os.ReadFile("webroot/result.html") - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - data := map[string]any{ - "base_uri": baseURI, - } - if task.Payload != nil { - if err := json.Unmarshal(task.Payload, &data); err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - } - if bt != nil { - parser := jet.NewWithMemory(jet.WithDelims("{{", "}}")) - rs, err := parser.ParseTemplate(string(bt), data) - if err != nil { - return mq.Result{Error: err, Ctx: ctx} - } - ctx = context.WithValue(ctx, consts.ContentType, consts.TypeHtml) - data := map[string]any{ - "html_content": rs, - } - bt, _ := json.Marshal(data) - return mq.Result{Payload: bt, Ctx: ctx} - } - return mq.Result{Payload: task.Payload, Ctx: ctx} -} - -// RemoveHTMLContent recursively removes the "html_content" field from the given JSON. -func RemoveHTMLContent(data json.RawMessage, field string) (json.RawMessage, error) { - var result interface{} - if err := json.Unmarshal(data, &result); err != nil { - return nil, err - } - removeField(result, field) - return json.Marshal(result) -} - -// removeField recursively traverses the structure and removes "html_content" field. -func removeField(v interface{}, field string) { - switch v := v.(type) { - case map[string]interface{}: - // Check if the field is in the map and remove it. - delete(v, field) - // Recursively remove the field from nested objects. - for _, value := range v { - removeField(value, field) - } - case []interface{}: - // If it's an array, recursively process each item. - for _, item := range v { - removeField(item, field) - } - } -} - -func notify(taskID string, result mq.Result) { - filteredData, err := RemoveHTMLContent(result.Payload, "html_content") - if err != nil { - panic(err) - } - fmt.Printf("Final result for task %s: %s, status: %s, latency: %s\n", taskID, string(filteredData), result.Status, result.Latency) -} - -func main() { - flow := dag.NewDAG("Sample DAG", "sample-dag", notify, mq.WithBrokerURL(":8083"), mq.WithHTTPApi(true)) - flow.AddNode(dag.Page, "Form", "Form", &Form{}) - flow.AddNode(dag.Function, "NodeA", "NodeA", &NodeA{}) - flow.AddNode(dag.Function, "NodeB", "NodeB", &NodeB{}) - flow.AddNode(dag.Function, "NodeC", "NodeC", &NodeC{}) - flow.AddNode(dag.Page, "Result", "Result", &Result{}) - flow.AddEdge(dag.Simple, "Form", "Form", "NodeA") - flow.AddEdge(dag.Simple, "NodeA", "NodeA", "NodeB") - flow.AddEdge(dag.Simple, "NodeB", "NodeB", "NodeC") - flow.AddEdge(dag.Simple, "NodeC", "NodeC", "Result") - dag.AddHandler("Form", func(s string) mq.Processor { - opt := dag.Operation{ - Tags: []string{"built-in", "form"}, - } - return &Form{Operation: opt} - }) - fmt.Println(dag.AvailableHandlers()) - if flow.Error != nil { - panic(flow.Error) - } - app := fiber.New() - flowApp := app.Group("/") - flow.Handlers(flowApp, "/") - app.Listen(":8082") -} diff --git a/examples/webroot/css/app.css b/examples/webroot/css/app.css deleted file mode 100644 index fdfe2e2..0000000 --- a/examples/webroot/css/app.css +++ /dev/null @@ -1,25 +0,0 @@ -#container{ - width: 400px; - margin: 30px auto 0 auto; -} - -#messages{ - height: 200px; - overflow-y: scroll; -} - -.control-item{ - margin-top: 15px; -} - -#message-send-btn, #clear-messages-btn{ - width: 100%; -} - -#message-list{ - padding-left: 25px; -} - -.message-item{ - margin-bottom: 8px; -} \ No newline at end of file diff --git a/examples/webroot/favicon.ico b/examples/webroot/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/examples/webroot/form.html b/examples/webroot/form.html deleted file mode 100644 index 6484306..0000000 --- a/examples/webroot/form.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - User Data Form - - - -

Enter Your Information

-
-
-
- - -
- -
- - -
- -
- - -
- -
- -
-
-
- - - - diff --git a/examples/webroot/index.html b/examples/webroot/index.html deleted file mode 100644 index 662bb0e..0000000 --- a/examples/webroot/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - Task Status Dashboard - - - - - -
-
-
-
-
-
-
-
- -
-
-
-
-
-
- - -
-
-

Table

-
- - - - - - - - - - - - - - -
Task IDCreated AtProcessed AtLatencyStatusView
-
-
-
-
-
-
-
-
-
-

DAG Image view per task

-
- -
-
-
-

Node Result:

-
-

Node Result per task

-
-
-
- -
-
-
-
- - - - - diff --git a/examples/webroot/js/app.js b/examples/webroot/js/app.js deleted file mode 100644 index a3791af..0000000 --- a/examples/webroot/js/app.js +++ /dev/null @@ -1,186 +0,0 @@ -(function(SS) { - 'use strict'; - let uiContent - function loadSVG(url) { - fetch(url) - .then(response => response.text()) - .then(svgContent => { - const container = document.getElementById('svg-container'); - container.src = url; - uiContent = svgContent; - }) - .catch(err => console.error('Failed to load SVG:', err)); - } - - window.onload = function() { - loadSVG('/ui'); - }; - document.getElementById('send-request').addEventListener('click', function() { - const input = document.getElementById('payload'); - const payloadData = JSON.parse(input.value); - const data = { payload: payloadData }; - - fetch('/request', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }) - .then(response => { - const contentType = response.headers.get('Content-Type'); - if (contentType && contentType.includes("text/html")) { - return response.text().then(html => ({ html })); - } else { - return response.json(); - } - }) - .then(data => { - if (data.html) { - const el = document.getElementById("response"); - el.innerHTML = data.html; - } else { - console.log("Success", data); - } - }) - .catch(error => console.error('Error:', error)); - - }); - - const tasks = {}; - - function attachSVGNodeEvents() { - const svgNodes = document.querySelectorAll('g.node'); // Adjust selector as per your SVG structure - svgNodes.forEach(node => { - node.classList.add("cursor-pointer") - node.addEventListener('click', handleSVGNodeClick); - }); - } - - // Function to handle the click on an SVG node and show the popover - function handleSVGNodeClick(event) { - const nodeId = event.currentTarget.id; // Get the node ID (e.g., 'node_store:data') - const nodeData = findNodeDataById(nodeId); // Fetch data related to the node (status, result, etc.) - if (nodeData) { - showSVGPopover(event, nodeData); - } - } - - // Function to show the popover next to the clicked SVG node - function showSVGPopover(event, nodeData) { - const popover = document.getElementById('svg-popover'); - document.getElementById('task-id').innerHTML = nodeData.task_id - popover.classList.add('visible'); - popover.innerHTML = ` -
-
- Node: - ${nodeData.topic} - - Status: - ${nodeData.status} - - Result: -
${JSON.stringify(nodeData.payload, null, 2)}
-                        
- - Error: - ${nodeData.error || 'N/A'} - - Created At: - ${nodeData.created_at} - - Processed At: - ${nodeData.processed_at} - - Latency: - ${nodeData.latency} -
-
- - `; - } - - // Function to find node data (status, result, error) by the node's ID - function findNodeDataById(nodeId) { - for (const taskId in tasks) { - const task = tasks[taskId]; - const node = task.nodes.find(n => `node_${n.topic}` === nodeId); // Ensure the ID format matches your SVG - if (node) { - return node; - } - } - return null; // Return null if no matching node is found - } - - function addOrUpdateTask(message, isFinal = false) { - const taskTableBody = document.getElementById('taskTableBody'); - const taskId = message.task_id; - const rowId = `row-${taskId}`; - let existingRow = document.getElementById(rowId); - - if (!existingRow) { - const row = document.createElement('tr'); - row.id = rowId; - taskTableBody.insertBefore(row, taskTableBody.firstChild); - existingRow = row; - } - - tasks[taskId] = tasks[taskId] || { nodes: [], final: null }; - if (isFinal) tasks[taskId].final = message; - else tasks[taskId].nodes.push(message); - - const latestStatus = isFinal ? message.status : message.status; - const statusColor = latestStatus === 'success' ? 'bg-green-100 text-green-700' : - latestStatus === 'fail' ? 'bg-red-100 text-red-700' : 'bg-yellow-100 text-yellow-700'; - - existingRow.innerHTML = ` - ${taskId} - ${new Date(message.created_at).toLocaleString()} - ${new Date(message.processed_at).toLocaleString()} - ${message.latency} - ${latestStatus} - - - - `; - - attachViewButtonEvent(); - } - - function attachViewButtonEvent() { - const buttons = document.querySelectorAll('.view-btn'); - buttons.forEach(button => { - button.removeEventListener('click', handleViewButtonClick); - button.addEventListener('click', handleViewButtonClick); - }); - } - - function handleViewButtonClick(event) { - document.getElementById("task-svg").innerHTML = uiContent - attachSVGNodeEvents(); - const taskId = event.target.getAttribute('data-task-id'); - const task = tasks[taskId]; - updateSVGNodes(task); - } - - function updateSVGNodes(task) { - console.log(task) - task.nodes.forEach((node) => { - const svgNode = document.querySelector(`#node_${node.topic.replace(':', '\\:')}`); - console.log(svgNode) - if (svgNode) { - const fillColor = node.status === 'success' ? '#A5D6A7' : node.status === 'fail' ? '#EF9A9A' : '#FFE082'; - const path = svgNode.querySelector('path'); - if (path) path.setAttribute('fill', fillColor); - } - }); - } - - - let ss = new SS('ws://' + window.location.host + '/notify'); - ss.onConnect(() => ss.emit('join', "global")); - ss.onDisconnect(() => alert('chat disconnected')); - ss.on('message', msg => addOrUpdateTask(msg, false)); - ss.on('final-message', msg => addOrUpdateTask(msg, true)); -})(window.SS); \ No newline at end of file diff --git a/examples/webroot/js/socket.js b/examples/webroot/js/socket.js deleted file mode 100644 index c990810..0000000 --- a/examples/webroot/js/socket.js +++ /dev/null @@ -1,233 +0,0 @@ -if (typeof window === 'undefined') { - var window = {}; -} -if (typeof module === 'undefined') { - var module = {}; -} -(function (window, module) { - 'use strict'; - var SS = function (url, opts) { - opts = opts || {}; - - var self = this, - events = {}, - reconnectOpts = { enabled: true, replayOnConnect: true, intervalMS: 5000 }, - reconnecting = false, - connectedOnce = false, - headerStartCharCode = 1, - headerStartChar = String.fromCharCode(headerStartCharCode), - dataStartCharCode = 2, - dataStartChar = String.fromCharCode(dataStartCharCode), - subProtocol = 'sac-sock', - ws = new WebSocket(url, subProtocol); - - //blomp blomp-a noop noop a-noop noop noop - self.noop = function () { }; - - //we really only support reconnect options for now - if (typeof opts.reconnectOpts == 'object') { - for (var i in opts.reconnectOpts) { - if (!opts.reconnectOpts.hasOwnProperty(i)) continue; - reconnectOpts[i] = opts.reconnectOpts[i]; - } - } - - //sorry, only supporting arraybuffer at this time - //maybe if there is demand for it, I'll add Blob support - ws.binaryType = 'arraybuffer'; - - //Parses all incoming messages and dispatches their payload to the appropriate eventName if one has been registered. Messages received for unregistered events will be ignored. - ws.onmessage = function (e) { - var msg = e.data, - headers = {}, - eventName = '', - data = '', - chr = null, - i, msgLen; - - if (typeof msg === 'string') { - var dataStarted = false, - headerStarted = false; - - for (i = 0, msgLen = msg.length; i < msgLen; i++) { - chr = msg[i]; - if (!dataStarted && !headerStarted && chr !== dataStartChar && chr !== headerStartChar) { - eventName += chr; - } else if (!headerStarted && chr === headerStartChar) { - headerStarted = true; - } else if (headerStarted && !dataStarted && chr !== dataStartChar) { - headers[chr] = true; - } else if (!dataStarted && chr === dataStartChar) { - dataStarted = true; - } else { - data += chr; - } - } - } else if (msg && msg instanceof ArrayBuffer && msg.byteLength !== undefined) { - var dv = new DataView(msg), - headersStarted = false; - - for (i = 0, msgLen = dv.byteLength; i < msgLen; i++) { - chr = dv.getUint8(i); - - if (chr !== dataStartCharCode && chr !== headerStartCharCode && !headersStarted) { - eventName += String.fromCharCode(chr); - } else if (chr === headerStartCharCode && !headersStarted) { - headersStarted = true; - } else if (headersStarted && chr !== dataStartCharCode) { - headers[String.fromCharCode(chr)] = true; - } else if (chr === dataStartCharCode) { - data = dv.buffer.slice(i + 1); - break; - } - } - } - - if (eventName.length === 0) return; //no event to dispatch - if (typeof events[eventName] === 'undefined') return; - events[eventName].call(self, (headers.J) ? JSON.parse(data) : data); - }; - - /** - * startReconnect is an internal function for reconnecting after an unexpected disconnect - * - * @function startReconnect - * - */ - function startReconnect() { - setTimeout(function () { - console.log('attempting reconnect'); - var newWS = new WebSocket(url, subProtocol); - newWS.onmessage = ws.onmessage; - newWS.onclose = ws.onclose; - newWS.binaryType = ws.binaryType; - - //we need to run the initially set onConnect function on first successful connect, - //even if replayOnConnect is disabled. The server might not be available on first - //connection attempt. - if (reconnectOpts.replayOnConnect || !connectedOnce) { - newWS.onopen = ws.onopen; - } - ws = newWS; - if (!reconnectOpts.replayOnConnect && connectedOnce) { - self.onConnect(self.noop); - } - }, reconnectOpts.intervalMS); - } - - /** - * onConnect registers a callback to be run when the websocket connection is open. - * - * @method onConnect - * @param {Function} callback(event) - The callback that will be executed when the websocket connection opens. - * - */ - self.onConnect = function (callback) { - ws.onopen = function () { - connectedOnce = true; - var args = arguments; - callback.apply(self, args); - if (reconnecting) { - reconnecting = false; - } - }; - }; - self.onConnect(self.noop); - - /** - * onDisconnect registers a callback to be run when the websocket connection is closed. - * - * @method onDisconnect - * @param {Function} callback(event) - The callback that will be executed when the websocket connection is closed. - */ - self.onDisconnect = function (callback) { - ws.onclose = function () { - var args = arguments; - if (!reconnecting && connectedOnce) { - callback.apply(self, args); - } - if (reconnectOpts.enabled) { - reconnecting = true; - startReconnect(); - } - }; - }; - self.onDisconnect(self.noop); - - /** - * on registers an event to be called when the client receives an emit from the server for - * the given eventName. - * - * @method on - * @param {String} eventName - The name of the event being registerd - * @param {Function} callback(payload) - The callback that will be ran whenever the client receives an emit from the server for the given eventName. The payload passed into callback may be of type String, Object, or ArrayBuffer - * - */ - self.on = function (eventName, callback) { - events[eventName] = callback; - }; - - /** - * off unregisters an emit event - * - * @method off - * @param {String} eventName - The name of event being unregistered - */ - self.off = function (eventName) { - if (events[eventName]) { - delete events[eventName]; - } - }; - - /** - * emit dispatches an event to the server - * - * @method emit - * @param {String} eventName - The event to dispatch - * @param {String|Object|ArrayBuffer} data - The data to be sent to the server. If data is a string then it will be sent as a normal string to the server. If data is an object it will be converted to JSON before being sent to the server. If data is an ArrayBuffer then it will be sent to the server as a uint8 binary payload. - */ - self.emit = function (eventName, data) { - var rs = ws.readyState; - if (rs === 0) { - console.warn("websocket is not open yet"); - return; - } else if (rs === 2 || rs === 3) { - console.error("websocket is closed"); - return; - } - var msg = ''; - if (data instanceof ArrayBuffer) { - var ab = new ArrayBuffer(data.byteLength + eventName.length + 1), - newBuf = new DataView(ab), - oldBuf = new DataView(data), - i = 0; - for (var evtLen = eventName.length; i < evtLen; i++) { - newBuf.setUint8(i, eventName.charCodeAt(i)); - } - newBuf.setUint8(i, dataStartCharCode); - i++; - for (var x = 0, xLen = oldBuf.byteLength; x < xLen; x++, i++) { - newBuf.setUint8(i, oldBuf.getUint8(x)); - } - msg = ab; - } else if (typeof data === 'object') { - msg = eventName + dataStartChar + JSON.stringify(data); - } else { - msg = eventName + dataStartChar + data; - } - ws.send(msg); - }; - - /** - * close will close the websocket connection, calling the "onDisconnect" event if one has been registered. - * - * @method close - */ - self.close = function () { - reconnectOpts.enabled = false; //don't reconnect if close is called - return ws.close(1000); - }; - }; - window.SS = SS; - module.exports = SS; -})(window, module); diff --git a/examples/webroot/result.html b/examples/webroot/result.html deleted file mode 100644 index 7ea68e3..0000000 --- a/examples/webroot/result.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - Task Result - - - - -

Task Result

- -
-

Loading result...

-
- - - - - - - diff --git a/go.mod b/go.mod index 7ffef39..7ae18dd 100644 --- a/go.mod +++ b/go.mod @@ -12,9 +12,9 @@ require ( github.com/oarkflow/form v0.0.0-20241203111156-b1be5636af43 github.com/oarkflow/jet v0.0.4 github.com/oarkflow/json v0.0.28 - github.com/oarkflow/log v1.0.79 + github.com/oarkflow/log v1.0.83 github.com/oarkflow/xid v1.2.8 - golang.org/x/crypto v0.33.0 + golang.org/x/crypto v0.41.0 golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 golang.org/x/time v0.11.0 ) @@ -25,7 +25,7 @@ require ( github.com/gotnospirit/makeplural v0.0.0-20180622080156-a5f48d94d976 // indirect github.com/gotnospirit/messageformat v0.0.0-20221001023931-dfe49f1eb092 // indirect github.com/kaptinlin/go-i18n v0.1.4 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.28.0 // indirect ) require ( @@ -40,5 +40,5 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.59.0 // indirect - golang.org/x/sys v0.31.0 // indirect + golang.org/x/sys v0.35.0 // indirect ) diff --git a/go.sum b/go.sum index 782da54..29a1f86 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,8 @@ github.com/oarkflow/jsonschema v0.0.4 h1:n5Sb7WVb7NNQzn/ei9++4VPqKXCPJhhsHeTGJkI github.com/oarkflow/jsonschema v0.0.4/go.mod h1:AxNG3Nk7KZxnnjRJlHLmS1wE9brtARu5caTFuicCtnA= github.com/oarkflow/log v1.0.79 h1:DxhtkBGG+pUu6cudSVw5g75FbKEQJkij5w7n5AEN00M= github.com/oarkflow/log v1.0.79/go.mod h1:U/4chr1DyOiQvS6JiQpjYTCJhK7RGR8xrXPsGlouLzM= +github.com/oarkflow/log v1.0.83 h1:T/38wvjuNeVJ9PDo0wJDTnTUQZ5XeqlcvpbCItuFFJo= +github.com/oarkflow/log v1.0.83/go.mod h1:dMn57z9uq11Y264cx9c9Ac7ska9qM+EBhn4qf9CNlsM= github.com/oarkflow/xid v1.2.8 h1:uCIX61Binq2RPMsqImZM6pPGzoZTmRyD6jguxF9aAA0= github.com/oarkflow/xid v1.2.8/go.mod h1:jG4YBh+swbjlWApGWDBYnsJEa7hi3CCpmuqhB3RAxVo= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= @@ -65,13 +67,19 @@ github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/services/examples/app/data/login_output.json b/services/examples/app/data/login_output.json deleted file mode 100644 index 7e3f3da..0000000 --- a/services/examples/app/data/login_output.json +++ /dev/null @@ -1,4 +0,0 @@ -{"html_content":"\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\n\u003chead\u003e\n \u003ctitle\u003eBasic Template\u003c/title\u003e\n \u003cscript src=\"https://cdn.tailwindcss.com\"\u003e\u003c/script\u003e\n \u003clink rel=\"stylesheet\" href=\"form.css\"\u003e\n \u003cstyle\u003e\n .required {\n color: #dc3545;\n }\n\n .group-header {\n font-weight: bold;\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n }\n\n .section-title {\n color: #0d6efd;\n border-bottom: 2px solid #0d6efd;\n padding-bottom: 0.5rem;\n }\n\n .form-group-fields\u003ediv {\n margin-bottom: 1rem;\n }\n \u003c/style\u003e\n\u003c/head\u003e\n\n\u003cbody class=\"bg-gray-100\"\u003e\n \u003cform class=\"form-horizontal\" action=\"/process?task_id=345053712301170690\u0026next=true\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\"\u003e\n \u003cdiv class=\"form-container p-4 bg-white shadow-md rounded\"\u003e\n \n\u003cdiv class=\"form-group-container\"\u003e\n\t\n\t\u003cdiv class=\"form-group-fields\"\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"username\"\u003eUsername or Email \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"username\" id=\"username\" type=\"text\" required=\"required\" title=\"Username or Email\" placeholder=\"Enter your username or email\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"username\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validateusername(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validateusername(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('username_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'username_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validateusername(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('username_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"password\"\u003ePassword \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"password\" id=\"password\" type=\"password\" required=\"required\" title=\"Password\" placeholder=\"Enter your password\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"password\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validatepassword(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validatepassword(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('password_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'password_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validatepassword(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('password_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-check\"\u003e\u003clabel for=\"remember_me\"\u003eRemember Me\u003c/label\u003e\u003cinput name=\"remember_me\" id=\"remember_me\" type=\"checkbox\" title=\"Remember Me\" placeholder=\"Enter remember me\" class=\"form-check\" /\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e\n\n \u003cdiv class=\"mt-4 flex gap-2\"\u003e\n \u003cbutton type=\"submit\" class=\"btn btn-primary\"\u003eLog In\u003c/button\u003e\u003cbutton type=\"reset\" class=\"btn btn-secondary\"\u003eClear\u003c/button\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e\n\u003c/body\u003e\n\n\u003c/html\u003e\n","login_message":"Login successful!","next":"true","password":"password","step":"form","task_id":"345053712301170690","username":"admin"} -{"html_content":"\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\n\u003chead\u003e\n \u003ctitle\u003eBasic Template\u003c/title\u003e\n \u003cscript src=\"https://cdn.tailwindcss.com\"\u003e\u003c/script\u003e\n \u003clink rel=\"stylesheet\" href=\"form.css\"\u003e\n \u003cstyle\u003e\n .required {\n color: #dc3545;\n }\n\n .group-header {\n font-weight: bold;\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n }\n\n .section-title {\n color: #0d6efd;\n border-bottom: 2px solid #0d6efd;\n padding-bottom: 0.5rem;\n }\n\n .form-group-fields\u003ediv {\n margin-bottom: 1rem;\n }\n \u003c/style\u003e\n\u003c/head\u003e\n\n\u003cbody class=\"bg-gray-100\"\u003e\n \u003cform class=\"form-horizontal\" action=\"/process?task_id=345054073104531457\u0026next=true\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\"\u003e\n \u003cdiv class=\"form-container p-4 bg-white shadow-md rounded\"\u003e\n \n\u003cdiv class=\"form-group-container\"\u003e\n\t\n\t\u003cdiv class=\"form-group-fields\"\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"username\"\u003eUsername or Email \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"username\" id=\"username\" type=\"text\" required=\"required\" title=\"Username or Email\" placeholder=\"Enter your username or email\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"username\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validateusername(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validateusername(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('username_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'username_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validateusername(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('username_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"password\"\u003ePassword \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"password\" id=\"password\" type=\"password\" required=\"required\" title=\"Password\" placeholder=\"Enter your password\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"password\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validatepassword(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validatepassword(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('password_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'password_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validatepassword(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('password_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-check\"\u003e\u003clabel for=\"remember_me\"\u003eRemember Me\u003c/label\u003e\u003cinput name=\"remember_me\" id=\"remember_me\" type=\"checkbox\" title=\"Remember Me\" placeholder=\"Enter remember me\" class=\"form-check\" /\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e\n\n \u003cdiv class=\"mt-4 flex gap-2\"\u003e\n \u003cbutton type=\"submit\" class=\"btn btn-primary\"\u003eLog In\u003c/button\u003e\u003cbutton type=\"reset\" class=\"btn btn-secondary\"\u003eClear\u003c/button\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e\n\u003c/body\u003e\n\n\u003c/html\u003e\n","login_message":"Login successful!","next":"true","password":"password","step":"form","task_id":"345054073104531457","username":"admin"} -{"html_content":"\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\n\u003chead\u003e\n \u003ctitle\u003eBasic Template\u003c/title\u003e\n \u003cscript src=\"https://cdn.tailwindcss.com\"\u003e\u003c/script\u003e\n \u003clink rel=\"stylesheet\" href=\"form.css\"\u003e\n \u003cstyle\u003e\n .required {\n color: #dc3545;\n }\n\n .group-header {\n font-weight: bold;\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n }\n\n .section-title {\n color: #0d6efd;\n border-bottom: 2px solid #0d6efd;\n padding-bottom: 0.5rem;\n }\n\n .form-group-fields\u003ediv {\n margin-bottom: 1rem;\n }\n \u003c/style\u003e\n\u003c/head\u003e\n\n\u003cbody class=\"bg-gray-100\"\u003e\n \u003cform class=\"form-horizontal\" action=\"/process?task_id=345055067016990721\u0026next=true\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\"\u003e\n \u003cdiv class=\"form-container p-4 bg-white shadow-md rounded\"\u003e\n \n\u003cdiv class=\"form-group-container\"\u003e\n\t\n\t\u003cdiv class=\"form-group-fields\"\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"username\"\u003eUsername or Email \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"username\" id=\"username\" type=\"text\" required=\"required\" title=\"Username or Email\" placeholder=\"Enter your username or email\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"username\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validateusername(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validateusername(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('username_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'username_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validateusername(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('username_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"password\"\u003ePassword \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"password\" id=\"password\" type=\"password\" required=\"required\" title=\"Password\" placeholder=\"Enter your password\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"password\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validatepassword(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validatepassword(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('password_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'password_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validatepassword(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('password_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-check\"\u003e\u003clabel for=\"remember_me\"\u003eRemember Me\u003c/label\u003e\u003cinput name=\"remember_me\" id=\"remember_me\" type=\"checkbox\" title=\"Remember Me\" placeholder=\"Enter remember me\" class=\"form-check\" /\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e\n\n \u003cdiv class=\"mt-4 flex gap-2\"\u003e\n \u003cbutton type=\"submit\" class=\"btn btn-primary\"\u003eLog In\u003c/button\u003e\u003cbutton type=\"reset\" class=\"btn btn-secondary\"\u003eClear\u003c/button\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e\n\u003c/body\u003e\n\n\u003c/html\u003e\n","login_message":"Login successful!","next":"true","password":"password","step":"form","task_id":"345055067016990721","username":"admin"} -{"html_content":"\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\n\u003chead\u003e\n \u003ctitle\u003eBasic Template\u003c/title\u003e\n \u003cscript src=\"https://cdn.tailwindcss.com\"\u003e\u003c/script\u003e\n \u003clink rel=\"stylesheet\" href=\"form.css\"\u003e\n \u003cstyle\u003e\n .required {\n color: #dc3545;\n }\n\n .group-header {\n font-weight: bold;\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n }\n\n .section-title {\n color: #0d6efd;\n border-bottom: 2px solid #0d6efd;\n padding-bottom: 0.5rem;\n }\n\n .form-group-fields\u003ediv {\n margin-bottom: 1rem;\n }\n \u003c/style\u003e\n\u003c/head\u003e\n\n\u003cbody class=\"bg-gray-100\"\u003e\n \u003cform class=\"form-horizontal\" action=\"{{current_uri}}?task_id=345181241327013889\u0026next=true\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\"\u003e\n \u003cdiv class=\"form-container p-4 bg-white shadow-md rounded\"\u003e\n \n\u003cdiv class=\"form-group-container\"\u003e\n\t\n\t\u003cdiv class=\"form-group-fields\"\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"username\"\u003eUsername or Email \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"username\" id=\"username\" type=\"text\" required=\"required\" title=\"Username or Email\" placeholder=\"Enter your username or email\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"username\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validateusername(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validateusername(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('username_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'username_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validateusername(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('username_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-group\"\u003e\u003clabel for=\"password\"\u003ePassword \u003cspan class=\"required\"\u003e*\u003c/span\u003e\u003c/label\u003e\u003cinput name=\"password\" id=\"password\" type=\"password\" required=\"required\" title=\"Password\" placeholder=\"Enter your password\" class=\"form-group\" /\u003e\n\t\t\u003cscript\u003e\n\t\t(function() {\n\t\t\tvar field = document.querySelector('[name=\"password\"]');\n\t\t\tif (!field) return;\n\n\t\t\tfunction validatepassword(value) {\n\t\t\t\t\n\t\t\tif (!value || (typeof value === 'string' \u0026\u0026 value.trim() === '')) {\n\t\t\t\treturn 'This field is required';\n\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction validateForm() {\n\t\t\t\t// Dependent validations that check other fields\n\t\t\t\t\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfield.addEventListener('blur', function() {\n\t\t\t\tvar error = validatepassword(this.value) || validateForm();\n\t\t\t\tvar errorElement = document.getElementById('password_error');\n\n\t\t\t\tif (error) {\n\t\t\t\t\tif (!errorElement) {\n\t\t\t\t\t\terrorElement = document.createElement('div');\n\t\t\t\t\t\terrorElement.id = 'password_error';\n\t\t\t\t\t\terrorElement.className = 'validation-error';\n\t\t\t\t\t\terrorElement.style.color = 'red';\n\t\t\t\t\t\terrorElement.style.fontSize = '0.875rem';\n\t\t\t\t\t\terrorElement.style.marginTop = '0.25rem';\n\t\t\t\t\t\tthis.parentNode.appendChild(errorElement);\n\t\t\t\t\t}\n\t\t\t\t\terrorElement.textContent = error;\n\t\t\t\t\tthis.classList.add('invalid');\n\t\t\t\t\tthis.style.borderColor = 'red';\n\t\t\t\t} else {\n\t\t\t\t\tif (errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t}\n\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Also validate on input for immediate feedback\n\t\t\tfield.addEventListener('input', function() {\n\t\t\t\tif (this.classList.contains('invalid')) {\n\t\t\t\t\tvar error = validatepassword(this.value);\n\t\t\t\t\tvar errorElement = document.getElementById('password_error');\n\t\t\t\t\tif (!error \u0026\u0026 errorElement) {\n\t\t\t\t\t\terrorElement.remove();\n\t\t\t\t\t\tthis.classList.remove('invalid');\n\t\t\t\t\t\tthis.style.borderColor = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t\t\u003c/script\u003e\n\t\u003c/div\u003e\u003cdiv class=\"form-check\"\u003e\u003clabel for=\"remember_me\"\u003eRemember Me\u003c/label\u003e\u003cinput name=\"remember_me\" id=\"remember_me\" type=\"checkbox\" title=\"Remember Me\" placeholder=\"Enter remember me\" class=\"form-check\" /\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e\n\n \u003cdiv class=\"mt-4 flex gap-2\"\u003e\n \u003cbutton type=\"submit\" class=\"btn btn-primary\"\u003eLog In\u003c/button\u003e\u003cbutton type=\"reset\" class=\"btn btn-secondary\"\u003eClear\u003c/button\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/form\u003e\n\u003c/body\u003e\n\n\u003c/html\u003e\n","login_message":"Login successful!","next":"true","password":"password","step":"form","task_id":"345181241327013889","username":"admin"} diff --git a/services/examples/app/templates/basic.html b/services/examples/app/templates/basic.html deleted file mode 100644 index f4ed557..0000000 --- a/services/examples/app/templates/basic.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - Basic Template - - - - - - -
-
- {{form_groups}} -
- {{form_buttons}} -
-
-
- - - diff --git a/services/examples/app/templates/error.html b/services/examples/app/templates/error.html deleted file mode 100644 index 9935457..0000000 --- a/services/examples/app/templates/error.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Email Error - - - - -
-
-

Email Processing Error

- -
- {{error_message}} -
- - {{if error_field}} -
- 🎯 Error Field: {{error_field}}
- ⚡ Action Required: Please correct the highlighted field and try again.
- 💡 Tip: Make sure all required fields are properly filled out. -
- {{end}} - - {{if retry_suggested}} -
- ⚠️ Temporary Issue: This appears to be a temporary system issue. - Please try sending your message again in a few moments.
- 🔄 Auto-Retry: Our system will automatically retry failed deliveries. -
- {{end}} - - - -
- 🔄 DAG Error Handler | Email Notification Workflow Failed
- Our advanced routing system ensures reliable message delivery. -
-
- - - diff --git a/services/examples/config/policies/apis/sample.json b/services/examples/config/policies/apis/sample.json deleted file mode 100644 index 9f0df17..0000000 --- a/services/examples/config/policies/apis/sample.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "routes": [ - { - "route_uri": "/test-route", - "route_method": "POST", - "schema_file": "test-route.json", - "description": "Handle test route", - "model": "test_route", - "operation": "custom", - "handler_key": "print:check" - }, - { - "route_uri": "/print", - "route_method": "GET", - "description": "Handles print", - "model": "print", - "operation": "custom", - "handler_key": "print:check" - } - ] -} diff --git a/services/examples/config/policies/handlers/login.json b/services/examples/config/policies/handlers/login.json deleted file mode 100644 index 06bf793..0000000 --- a/services/examples/config/policies/handlers/login.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "Login Flow", - "key": "login:flow", - "nodes": [ - { - "id": "LoginForm", - "first_node": true, - "node": "render-html", - "data": { - "additional_data": { - "schema_file": "login.json", - "template_file": "app/templates/basic.html" - } - } - }, - { - "id": "ValidateLogin", - "node": "condition", - "data": { - "mapping": { - "username": "username", - "password": "password" - }, - "additional_data": { - "conditions": { - "default": { - "id": "condition:default", - "node": "output" - }, - "invalid": { - "id": "condition:invalid_login", - "node": "error-page", - "group": { - "reverse": true, - "filters": [ - { - "field": "username", - "operator": "eq", - "value": "admin" - }, - { - "field": "password", - "operator": "eq", - "value": "password" - } - ] - } - } - } - } - } - }, - { - "id": "error-page", - "node": "render-html", - "data": { - "mapping": { - "error_message": "eval.{{'Invalid login credentials.'}}", - "error_field": "eval.{{'username'}}", - "retry_suggested": "eval.{{true}}" - }, - "additional_data": { - "template_file": "app/templates/error.html" - } - } - }, - { - "id": "output", - "node": "output", - "data": { - "additional_data": { - "output_type": "file", - "file_path": "app/data/login_output.json" - }, - "mapping": { - "login_message": "eval.{{'Login successful!'}}" - } - } - } - ], - "edges": [ - { - "source": "LoginForm", - "target": [ "ValidateLogin" ] - } - ] - -} diff --git a/services/examples/config/policies/handlers/print-check.json b/services/examples/config/policies/handlers/print-check.json deleted file mode 100644 index 41c8ebd..0000000 --- a/services/examples/config/policies/handlers/print-check.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "Sample Print", - "key": "print:check", - "nodes": [ - { - "id": "print1", - "node": "print", - "first_node": true - } - ] -} diff --git a/services/examples/config/policies/handlers/send-email.json b/services/examples/config/policies/handlers/send-email.json deleted file mode 100644 index 1c5d19c..0000000 --- a/services/examples/config/policies/handlers/send-email.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "Email Notification System", - "key": "email:notification", - "nodes": [ - { - "id": "Login", - "name": "Check Login", - "node_key": "login:flow", - "first_node": true - }, - { - "id": "ContactForm", - "node": "render-html", - "data": { - "additional_data": { - "schema_file": "schema.json", - "template_file": "app/templates/basic.html" - } - } - } - ], - "edges": [ - { - "source": "Login.output", - "label": "on_success", - "target": [ "ContactForm" ] - } - ] -} diff --git a/services/examples/config/policies/schemas/login.json b/services/examples/config/policies/schemas/login.json deleted file mode 100644 index 032714a..0000000 --- a/services/examples/config/policies/schemas/login.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "type": "object", - "properties": { - "username": { - "type": "string", - "title": "Username or Email", - "order": 1, - "ui": { - "element": "input", - "type": "text", - "class": "form-group", - "name": "username", - "placeholder": "Enter your username or email" - } - }, - "password": { - "type": "string", - "title": "Password", - "order": 2, - "ui": { - "element": "input", - "type": "password", - "class": "form-group", - "name": "password", - "placeholder": "Enter your password" - } - }, - "remember_me": { - "type": "boolean", - "title": "Remember Me", - "order": 3, - "ui": { - "element": "input", - "type": "checkbox", - "class": "form-check", - "name": "remember_me" - } - } - }, - "required": [ "username", "password" ], - "form": { - "class": "form-horizontal", - "action": "{{current_uri}}?task_id={{task_id}}&next=true", - "method": "POST", - "enctype": "application/x-www-form-urlencoded", - "groups": [ - { - "title": "Login Credentials", - "fields": [ "username", "password", "remember_me" ] - } - ], - "submit": { - "type": "submit", - "label": "Log In", - "class": "btn btn-primary" - }, - "reset": { - "type": "reset", - "label": "Clear", - "class": "btn btn-secondary" - } - } -} diff --git a/services/examples/config/policies/schemas/schema.json b/services/examples/config/policies/schemas/schema.json deleted file mode 100644 index 02dd052..0000000 --- a/services/examples/config/policies/schemas/schema.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "type": "object", - "properties": { - "first_name": { - "type": "string", - "title": "First Name", - "order": 1, - "ui": { - "element": "input", - "class": "form-group", - "name": "first_name" - } - }, - "last_name": { - "type": "string", - "title": "Last Name", - "order": 2, - "ui": { - "element": "input", - "class": "form-group", - "name": "last_name" - } - }, - "email": { - "type": "email", - "title": "Email Address", - "order": 3, - "ui": { - "element": "input", - "type": "email", - "class": "form-group", - "name": "email" - } - }, - "user_type": { - "type": "string", - "title": "User Type", - "order": 4, - "ui": { - "element": "select", - "class": "form-group", - "name": "user_type", - "options": [ "new", "premium", "standard" ] - } - }, - "priority": { - "type": "string", - "title": "Priority Level", - "order": 5, - "ui": { - "element": "select", - "class": "form-group", - "name": "priority", - "options": [ "low", "medium", "high", "urgent" ] - } - }, - "subject": { - "type": "string", - "title": "Subject", - "order": 6, - "ui": { - "element": "input", - "class": "form-group", - "name": "subject" - } - }, - "message": { - "type": "textarea", - "title": "Message", - "order": 7, - "ui": { - "element": "textarea", - "class": "form-group", - "name": "message" - } - } - }, - "required": [ "first_name", "last_name", "email", "user_type", "priority", "subject", "message" ], - "form": { - "class": "form-horizontal", - "action": "/process?task_id={{task_id}}&next=true", - "method": "POST", - "enctype": "application/x-www-form-urlencoded", - "groups": [ - { - "title": "User Information", - "fields": [ "first_name", "last_name", "email" ] - }, - { - "title": "Ticket Details", - "fields": [ "user_type", "priority", "subject", "message" ] - } - ], - "submit": { - "type": "submit", - "label": "Submit", - "class": "btn btn-primary" - }, - "reset": { - "type": "reset", - "label": "Reset", - "class": "btn btn-secondary" - } - } -} diff --git a/services/examples/config/policies/schemas/test-route.json b/services/examples/config/policies/schemas/test-route.json deleted file mode 100644 index 076ba1c..0000000 --- a/services/examples/config/policies/schemas/test-route.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "object", - "description": "users", - "required": [ "user_id" ], - "properties": { - "last_name": { - "type": "string", - "default": "now()" - }, - "user_id": { - "type": [ - "integer", - "string" - ], - "maxLength": 64 - } - } -} \ No newline at end of file diff --git a/services/examples/config/policies/web.json b/services/examples/config/policies/web.json deleted file mode 100644 index 0c83df7..0000000 --- a/services/examples/config/policies/web.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "prefix": "/", - "middlewares": [ - {"name": "cors"} - ], - "static": { - "dir": "./public", - "prefix": "/", - "options": { - "byte_range": true, - "browse": true, - "compress": true, - "index_file": "index.html" - } - } -} diff --git a/services/examples/main.go b/services/examples/main.go deleted file mode 100644 index 3893424..0000000 --- a/services/examples/main.go +++ /dev/null @@ -1,36 +0,0 @@ -package main - -import ( - "github.com/gofiber/fiber/v2" - "github.com/oarkflow/cli" - "github.com/oarkflow/cli/console" - "github.com/oarkflow/cli/contracts" - - "github.com/oarkflow/mq" - "github.com/oarkflow/mq/dag" - "github.com/oarkflow/mq/handlers" - "github.com/oarkflow/mq/services" - dagConsole "github.com/oarkflow/mq/services/console" -) - -func main() { - handlers.Init() - brokerAddr := ":5051" - loader := services.NewLoader("config") - loader.Load() - serverApp := fiber.New(fiber.Config{EnablePrintRoutes: true}) - services.Setup(loader, serverApp, brokerAddr) - cli.Run("mq", "0.0.1", func(client contracts.Cli) []contracts.Command { - return []contracts.Command{ - console.NewListCommand(client), - dagConsole.NewRunHandler(loader.UserConfig, loader.ParsedPath, brokerAddr), - dagConsole.NewRunServer(serverApp), - } - }) -} - -func init() { - dag.AddHandler("render-html", func(id string) mq.Processor { return handlers.NewRenderHTMLNode(id) }) - dag.AddHandler("condition", func(id string) mq.Processor { return handlers.NewCondition(id) }) - dag.AddHandler("output", func(id string) mq.Processor { return handlers.NewOutputHandler(id) }) -} diff --git a/services/examples/public/assets/InterVariable-CWi-zmRD.woff2 b/services/examples/public/assets/InterVariable-CWi-zmRD.woff2 deleted file mode 100644 index 22a12b04e1abd959c00f9d8429ca78ddae3f7dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345588 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]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∈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 UMQ*lvlk>j@mv~dN-b!vFvP diff --git a/services/examples/public/assets/InterVariable-Italic-d6KXgdvN.woff2 b/services/examples/public/assets/InterVariable-Italic-d6KXgdvN.woff2 deleted file mode 100644 index f22ec255493ebf94d16270d6279c1c9f2001278c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380904 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

j2*lzMF$7|q6-@wZpQL{bn=0F#vb59BA}K%X zi%z<8zBDV>X6)szT~M?xT@Z3j!cCS(Zu0^f;7!jEHRTh6;bN5M%xuLR13EKPsmB*h zVu3fIUDcF_f$1_%%%E^-3VbRvjqnLMdBFW+b**sdqzzqm5DyR1=N!~{20tp=a3taQ zYe_<`)^sU7f9kjn>`}e4OFkQC;{Nd(SiJY?1vQNPgj^t&T#vf%`*SY_b8uOyL7>+o z%t0?w#FAg5DEA_>0`_Y%M!n9jYT*;x@zDG%PBeiIK2U`BbYm>a*S1a|c?N$pC)=i; z6+d;8!17llsk+3!qKWlLI}GDa;1XsQ|f_oe+z6}>CPb34dT$>L1zbHWMiPk(%NBAyUBGd zTwxYc(;6c~R(lB~!$2#kV&HEXP2@Cc`UEmYlF5NdpG;~pLt=(zH0Fh{+Ow28ArWa} zKPK*QCweW=)?|yYhqXNZ(zpGzepvG|hqP9Q2HLP%b7ClYulaD0F-0z;-C$@m7fBk( zQmr&;rRQ!DJS=Gm?9`dnp&&*}L_Rh>i$tA^z61l+Q*v~OES=+-IEaPZU!pbNq!PPtDlbwPOSBY!ru ziCwTJvoTO|ERAwSxKRfwi9_;+X!2#wyB!JhytvYtpPU|;7oG1~z!# zFRmJw5Z3ZVN^8vvBZD>8!vsV-b0r8g=X&8mI#zR=Tc2jCAxZeY->JR|J$iO^(#zN$ zg^qJ|&Hxfuv>#1dDrp;i(|cRU*9@Dc-ObX%>3@BkTrDB9$UAwOrC>F*q#bi-GYrEp z%vw=05j})Rm_o@!!xTy;+KFJ+1C|r_zm@{VG1de>{Atg|w6N&jHaq5|-bfO6=j3(s z$$_RZD2Ug`lK1DYz)8(q7I*dx+VsBH$bvRqVVXWrEnZPtr3?BPY3-AuS95}BZc;j_ zO+icz$I5fmvAD8EqKu+gnB%HBJJ0Yqu4=rqx|fK(#tPE20er3GNxMF0hYxv5kW4Q_ zvY4kC_Q*!!vRXP?m3pk+It}z#V^|{1YrXC2*|dkHpp2FrF4ow?u5YnQ_q(0ZdYf9m z6bshr)IZ6{v;u(^=mcH+3A*M5Iz}JOwDh=&b9TF`cndhaB^_7>5?_2AUYB}-EUy3c z*US%fA>FiK#cnJIogyn?p(MqT$nK&dy0xe$mWwte4P2g(&?=<$^k-raPeRS3H3ohw z@)F`DM8%dS^yrAysnM%XTU=cy&^~_G)Tk=5>qnt?6pq z+N9Z-DJwgn$giF;WajcOlVxv}O5j65OOLgp+3Akw+&&`;j^&^3MI@5BPpq-oo1207 zlg$+wIf@O5?I7E2?UUO}LN`=3)XeQzA9L+y7AfAVjC-oeU0Q!}drYn69hi+h zEsD;Tfv?`~^oHS4+$Y>L1);v?bZ;{kbLXxzcyyGN^4>B;%YS*n?K~4Z1K7Kxzq`%= z0C+%$zoo&sjo1XH>3KX4(0H%M@OjM2+2H%J$d_MA`3jzeCXB-GRWn zr5AGM%BS;eNzizgOhUaa2XxP-6EYMrSS-Y#Th}JL6S%|8n*P&al4k(^hMK9Z zv~rG2DdF22%;Yy;f)7s2`fNYmPD1;?!c6ZEY6$!+4&d9f`C5Hr$9>|@-IOKaoYcJ_ zpENU~QL@jHnrxk*YWaXmOAeh<&ekXB?$vVd)UjoYcQAQG=j`+UpoQ%@|LN3jC0i;t z<(w$>BhNs90D|Zsyy@?sbu@j`KPgF{)AvdL{1(4*{U?%n{2f_F$MM^^HgQa-^zLW! zG7c`Az{ComdEg{5r7d1>dmu=TwotWP)$4-rxfq#`tcs)d(~)x zef+PuCTLGsMQ9?`#Deq_2g%oMgG&-zJ@k{bTji1zUAt8-Nz=7j=9~;ot7SfuC9Ai{ zHaVhtb8M3*s;4#udx{vvW;mwAFw8Dxj&b&>u(ep?lq!W@>Tsp(r@5FGGVMCIbeO(d z<&rKPd-^d(8Rgh!OjK{~Gl!!dy~ke2(`%b&$CRc3{VcPj z8DNzaRS*5FaZ1f{&PGZpTc~C_*`bt~Vv#*Yl^ISsylS+-KF3#$7TD%QRB!Hu^M^WP z^m4(fw#YSCu~}}pNz8E0ou-XO47fbJc}R`3%oC@^9EZH9I%wn#kZ+K2J}A{@+2zaB z&$5#=1FZ6+>SK^UOr3R33!oP$Gs>tS0JMT-Mwu0YQAxZ|J=wwddk!ovg+P(@sa3 zl!-vT>|Qw_1^Qp+nrrTIJLZ{Z-txLP|Al;gFV1|(*Jq1o1svVBcvdJi!nh*1QiIGY z2CFj9XC(qtoGTR)tK4RnYZVNQCRwa1Sap%ZYRId#RnOK!ZH?8nkZUzrWLFzWgZbBO z$J55gIx*|2tOr`J&MceyaB57l=p0goarQfp*+tX(Qw@+cT438CQH=>E8#-;+wUJ1p zOiUXKHGx)Xg87-`q?1nG%P1<0GwTXcnGwcKA(R=S*EB$`9vj@7Vd;E1vswDCzTY_^ zgY;Ucb8nHYn|4b;I9r}~4Wrr=%dW$@bOWc>EZbIz8Z5l-O%jZ)nM`wTovw#z8zddp zxwXkL$~dOeCeOCGdTnuUM{1PbZZUWJ(H*9C%H0LX_T4I<-Fwq$olEzrnk}&H0baFn zCOw2H(r<@ndn_H+xb=vRwI?E7*17EYqZdr=SE$0oOU=~^g`-!&mf!dzW6C)$~KbyDKV$R_KVyfDQI=agvLtZ+>E zO@mpcsle5kW|1mNwF&mAk#tz$nEI=FGb}^mR2gRy08>LE4VfX9Jw+)q%skCJo3vG? zn5TnOYKX~nbLn$*+Tfl66Wa{=J;SIs!*WLG86#$r%Z#tjF3-$4x)^2whLQWYTklV$;mCMaZWy`|h0H=VHs%Yn$iXIK4EJpSx$Cs(CN-EwRoItI`WwZuPyF{Ftl0XR47Y_mDdd;(_ofW;TRQ085RMSug500UJLcv z=24{7Ak(5i@^staQZ!Ywc{Yo|E%w}dqFUm85a8cO;}Tt^ys9_DWU1MGp)Mo0%u3l- z%FC(kt8aPUy<*%cvG4hncURTF)i31gvd*O%swVSns->Y{ zy>X46HE-84SnGN1lR7}8*OfWF)_1xC0{ZDS2vTI=b$`7;upvbwIMt?@HHuVbh~CCP zjg!@q9G1ArZGX7BtaE9Kro|$=rU`0HGHV8*#2~$90djn|%DFkJW{d2bC#fUbLWgHd zY7v(wa^7YUdUpoP~EglK+@K3lfQNzS0N=)jI3{4Bg$>pcmpNc6pIsVk`ln2bx z1j^BAjdNNQjpkUVja6ZSMLJkDX4s@l)L@oXdU(~QSxg^0!_1zAW_-#_gg;9d+*xO4 z3(Y}pgkg?g`Fd<}n+vEH9G%uU=StCJo=t8zRmPe35~JEQ>re#s=Go^?)L@qFJY#uz zZE??=q0JBW`4H8bVxBKTi9ve#K@{K}+A{yq0&xqP6bw^DaG}Bz?ncmQFw4BxNTr78 z_vS^eF6&%+OVi>9pS>evSX6W|k;NYRz|m!cTk%XCR=M<%rqvSX5*WH@m-wQ{Fq4wd zDoiq4GG-~IrC$3S=FyiZi)Fl(sVBGWaXB73%k`B9fV+J9zL6`ysWQQ^LWmhwE6T2T zRSCv8gOy?Xk!M>u0ZkQJ)6A<3GhEfC8Yb_ny;g6hyhiYvdTVK|^|E&Nepc4$T90$R zvh|M}0JGVUb|cD-syA*Kmbc0L{@^xs+l*_oj4e*KEZ&M{tCg)E_xHNZ=(Z`_6>Z;t z4&DDGeC}eltL1JK-3DmyzWaE9g8_q5hSL}>XRyiepd+x1P&8urNS-6JjT|t_<=~vr zTu0j(oo!E;V<3zPI7B;Ujd4b?faK_~#BQv(*uk9RAgeRUBu(tNWm~3MSKG7 zez1%mEmxxnCJ8_k>$Axv!8i4$m?i|3ugfaOgo&z6FiixmSif!ViPE)NWS1CT^n4cO$=HeQ)NYwX*>DA8k?O}j`1 zzFTD39!#!w3oN()x&!47%N3=*@Qq5u?>x;vR{>ILAoY zhFJB8u9wNk$fJymb`=7unQ_b%qg-Pl+v6T91#N6)wy~oW>#@o{4lL3*ebza|#Wlfa z+-_#$8OMt>VTWUUD1~bO<=rBy_`%<_1jPpI^GJw=eZrH8YA1G@cz6=pNzx`&Nrpy$ zvgyg$C;vG`>y$P}rKXM<(4EG1nlIDxOb0sM(G0YEmY?zBnn1|XYKC#90I8}C*<_y? zQoeR;+%jkB;*y1*L6$IO#Iu6y=RRwDHW+H>d0kr!EVC=j0g|KH6xTU<=G>m^>)iH3 z<#YG=!Ehe_dE({;o3}AE5LXy1i2?*%7nol#Vj+r!8WzSb9Kmi8oLEr9lvP%d|p}49#YlRRn=kaglW;Ncq~$GpiINQ=>VyeJ83h$+R-KVgq#h0g&yxbuLwa zm5`~*Nqg0x)yP(xUfpwz{hDAJXw(cP)e$52M^D^wDhqAWt9d z27&VR)9=@dd_A-q0x34axM93jKiD@yRAZWXqevA-ST}}IVT5txP{oGmH35+AJN>W_ z`NkME2~}W%X}{r$^)u@aLWx1UJey+au)?uvw(nN?Y=*3pX0re}+AVWvj-<{s^X8Gt z3^Qs0rqnRQ79k4t+2Pp|Q=4TDEwgpm16?||E(#0cAt5OVd= z?-+)z|5Tnkq3yKN8O;#o&f)5_gUsW zApXn*mg%D%1Rz(ZHO@gPn#{8a2dBz7vv3j2fJm(Q{MjROF zX^)5_M~-4TO5~^-gKwh2t1-zuIvVCZ>5f4(#`6$|vDC&o8pk9qGtY6e$IFcW71ac( z6JAbKGx2AVeeRRNBcjEUB{r?Rjx_v)NDQl$eWiu9m&5&Vx5^^89?md=?fPN5{IJfbB#EU+(yq|O|(K7nOvw#25iBHN|omO)*n ze%buxTFNJ>G|8fGXyr!eRsfKr)hg!-DOxP^SrJ7Gjg@%%Znem+GJ-nOEcOGv^5?1m zs}`>ow0giA9ktLknqyNdUX4*kwZWAdw#}n+A5S zpP`BL25S4I+Hh&3wT($P&KUN-Kf29;H@n+Hy(PSA6HHr%D>gv46#$%8F^IReY8|e` zB+LH7m7C?!KaMtPZM;a=V1hxLAf=YLwDqcuLEB6{)Y<{4Hf)F6cHg$Q-9h`;;m3~J zJ67&Q(i; z{T@q4SB~Dsd5p&~jmNwit8HwIu}8)c92aohsqyH?TN$4rekQ#Mm?ub_kawb{NvJ1P zoJ?!p>i#W?->3HHh}%zOdG1y+6s$?+^$ypUp{47CQS7v`t2aK&C{dqY6dTZ0u= zi+n3ez@=z8i()8v7kgZsX7PbOLUk}NLCAWEu9BGCmh41uw0+FPfzvmT6m- zW;xvDR+mRver(^GE2yowx9_l(o%aK`a$1!LIIH4TO;DuGD#vQ@6spCkpj;h=;p%N` zIM-w`%e7_>n_3VU)|Raur;?BJ(>i*$69VD7Ue_&Hk8!=_^({9*X)w*SUl6(4EwbFu zZNu}8(i&H?+k|S^*(N{xO;BOb7U%wuR1t3qpqKroC7aQ1cD;Go7F1hww+vv_s?oSD z?puHDFG#ULn)}CXBjk`vn<>U^A!K3RHg!9Mb`kcuw)d*aEYtR-I&EBclO-HZkOn;jI6rmkm&~CJGpKN#_2Eb|HXd!2l%gtc~%Oliyh|olG=Wh zuV*>z?=YHtdDfTD_LbS+KF25L{9vv_Y|s5~^XR<4#@T$I;L-d+r1HiPBmk1$9w!}w z!Tm@JV~C-xS~;Rd@SpMD7^(YFCoF;2x-1?e3-%iU7A6ouU;>ziP}l4Ke!W(Thn>8+ z0bIh2+6`tR7fY7M5l#-GfGn86*^= zIUx)Q`#+>|=xVRQ=?v3IrclDC1?9rIQ%49yscryjxz2ODF7%xxJfXnPvFDzawiUdc zgVz$C6X)L`$^4lf`JrKr2p(5T)=9-B#W%Z}1JB|#$!#6*NAZntz?ry&aFCMXL=+O@ z5v%Fx=;c)k&-<5;6~Nl7dA<1#2s4K_#2yeZAVEIZ)g4y$6{RJ46g>I>JU&a%A}Hwn z2vPQJ(RUgw4j3?kI3vJ^JRn7OQ;%8FC28KCfZgk9>Nob@l#AdVt||uKLB>CY;@DF7 ztgml91vLL``Ja2dwW$uFCzX=9wcJ^xx27OcKg(GYsM209lT^EPrgjZ(6&p+^N(rir zY?J#y(1X?H5%vZ4)mp+0L7!7%;D4b8xa8+45kUQ6_zzA3^lS+B1F&H*0$5*Y2d@4<6uv^`7GH;^NcH4oqb1&q#lF>}q!^;Ua{3uD*4DMN0AywS?fEQ!zY z*CK8n0YVfWclCNY6C$G=0}mZopE2C;{rJ`7+>I-h|376M%#IY@i)^JYj`%;6$t<$5 zwl8JLPE3%NF-AzzTx9{K z5IPM{zW3$;h#yji9IpUFg^aH-tENj8SEf_AdL(u7{l@Nq-)gU|g;cu^vYNtkAywKF zBAeIpNJjTuG7G7S5I4u|d-hEoPF!qm6A6D)uSERS6!CII@=QewmLn}9SJ3z09j&pY z%GbUl!Z3aPJFn(k;nJ& z{Wt7yJcFK>X$L!=Lidaks#d^tiiX{Ro#x>Tw$H%ms2wn@6mjI)=cb3xNz<^AI=-O= zn8~DTQvfN=q^#n3m_mItG!(`F080j?bBr}amFK0P|CfiaRd(1=B<&o(*-n{~Q#&K& z-;Y4C;#vGH<=kPxC~Cs_FN#{G@Fc1||6+3Zgx3pbRX}icZQzl#Bn?M7ga8Jec0=9| zw*(YW7I$V7$8*-to+Gj@L4)@ulLn#eTR!WE}td;AS3zeS6TuoV$B+L^dfpUER(Pc`6XS&Mme-q%FvGOaKHX4EtZ@z>HD2W9oOH)xz zDg;YflcB)2$7~j)@B-+QmUz5#Nw!s3HoXU=sq}?pQv9(v_nNl&M zs5rlwP9jtdK{!t0=TWF5iMdLHx~K}c;>JQWad=n5nCQ!b>2_6!)kjwIDNV-LUfdqF&p0*+>FUd zlqCNEg1qsUYKd?(f`UhzpMsFDObr9Rsv*#9>JWrSP&NCKyZLYd-#xN+K^6QZSIT6|5-8wKMdF`G|weHgdnV98Ops@6@GpdU?P#HrN#sCL?X=}-r zH&PIVP|fdNq7)i$ep!#mpN66^bM<-c^<=HRt6DchN{?Y{Xt@j-NIzY}q zMNWpAtcjm>L*HSt&436^)AbBR5^)lhLlRV!fF8qgIn2@|)b5&@qG2k!CMkUQe!Hqf zpy;?^s9eKch1-#)DI_sTt7Xv26NZY#yopzQ?SD8Nwa=Bv+OuQPkkB@9cw$#5^f`Ed zd~jC8gL%@Obd@!LX2$5Qy)7kL_A# zqlu%20&3)z-f!#QVj&WsS;HQtPHA4dsh9u##a@MA1{eZ{W`Rr8h`_LVEo;4`#TYm% zCYs`2Uw;M+-Yn3By=>w6pkb=_Z0L-#=?LR+60fD?0%Qow2AF;yRm@ek<`gBA%Chlj zaFTyXFD{@DIryS6my)dnxWm9$ZxlykFjDDwLcr7=J*>1feL)x6X1i{!|P+Teh?(5n49_RhX+xa!EQ>*CEXu~k*;``YHYFp07 zazZU@C_lbzAd`Vay8W#$&6{?p;zD?4M01?6ny*joFB2!B<0tBC!ZMXb=m9)|+B16>$`BArq4X24Z(lZT-YGbOv(&U2jKpz%%45H?$e|#R+Kr zMSCKOb`!clqH=ao&-IlOS}Pl z67Aq*+zjeTtdS-4yF#88NXzsqUuvPSxI!ksvl-p+{a6Pa$Aow2_{ZN7z@R!!*?be| zP7JdcdM0S+JUZ_)NP~Lk{*aGB)F2-@Nld3GGf<~e-S5`As7s$5s_gab)9t;`HsSky zx9IXkFkE$$=k*j-UF*czfh3O-K{{ElUR$7Bd$}5!id&kwwnHVBKto>Tw2b>f*yFa9 z5~8q#`6P`4H;%gl4&ezLi8-P7(|!dNQ^Yzeh)0IPK!2#l-GiF`-{ZQewNh=@rdSl$ zPx4DM_KArT>Qx8NIj+MH5hEgRT;%xIo-5tcM^WX^nbyrEZ)__UQ1NF&!TBbYJ#yAy zBI^Nc4bt#g;=&}$cByatkq>2>*cnxK1!Vs=uF*){S~DBTJU-%MSd53^XnVXuV?CeZ zz-ChHnI(PG*vQ$(^b}7SV?`niyNQ7>%CJWlnZt-4q0(CChOTW4EpA~H{sEl|U$;|T zTSbvjA`YdK4gP-qR}h?z)}&T}tV(3LY0rp^`3!LB{wq*vx$eYZNY779l-_niN=0)d_) zd>71nqa$#6_YSxvFcAv-JoWVhsW*Q(Xv}~f^5pn}D?X_8>h(q`GXf0mm!^P%P*z5# z9osKVP#?*z8q*mHIg#;^RF-fAVRgRvfRq*6r6d}yau@?`%)PT|t~evInyx^M;(jeN z<+@e0ERm(4?_Uo|K{n+@q1KuiAC5y1p-{okKWK`B{>vk1=>j?4MSv;EYo<(hesTMU z_QDMHd_=RsY4F<-ln$4 z>_&4J;M&09i#Tb!(u?!#JGwBc3(>va+T3!^oT;jj%puj@ZGfFbznU?&X5VY;d6;}3_l0O?UiKHLMS@gC>Xagx z$f4K6kAQM!S~&Nr3oysG*N{rPKh40($BA8ldry(#acJdM^3*>uVz79;d!}OoaKD&_ zriEzIb;eu|-lsPm*MB{tA8&M%dyb0Fb&3&iHubD88T=#pRiTp}MHCjJF;6ZN2-a6m=Y^kZ>Fo^qvp zB?0GUq)Q#Z^CvP@c%x+|xRd&gB>N7NrrD<4kEDd1gq=&_N;^`p=_vgx%qj~yFWut) zafG-0O}E{l)ap`u%9UT1v071#bHvP|;L2WJ(?tbh!P@S3+=gp5SoquyQ{5+Za9uxo zPPeai{*+{(hD;SokwrFzBni_~B>7Uf0CJR;I9o)W2YZQi+!*CqYos{O{A+4RF>$Hy z=~IQtP188B&N1gxq|+tJr*nn%u40*EI91p|3L#Tkio+L1A^xAd4%;=?$_C3_u4q-b zl7e?8a9q;?cHRSX7iTgOfPZ>y=@npw2%S(v1krcprZdXDU5Dbk@-j<5$$7jE#WA>f zSH;Cvy~$C#y^b@fRYQ5#*U>k^PcM_0-M3SHbne^m$)&I3r}}jf$vQ zdbw02@qjzG`|q1uQY~F#MV*P;lL?J4UE(NWiU<}rtN(98W1Huz5}aW4;%KeX-|MZE#84?PlCwL z36^a`#XE_QM8GF!?)QZ)b60 z{h*QYCTIc~c!PHtmqq4q{4((Xf7k}%hze0EdMdSFR8adpx#3)dF8Sd_Qh@oD;Gb(? z7OfYPIBJ`+wBaOp!i$9_!-yz`f!r#n$9DACH*_xon6d?BQH;Z_f)rlO>)s4K?Sp!C znqKrc+NrdJDPtm#LK>LBr0`;XO5)KPQCn^h)_qPY1G# zT!iOykINnCwM(-g%5 zO&S&8(73ul?dmn=o6-psHp0C|?H|tNowLZI)Tt(m-Rr1s_wVj6FYS6drrYSug>crB zXR;xD3SoP%xIf+4w1cc#*QH1Er(3hx@24*$(cyZNIxwgCa9G#fbbnS}jz^Eo^t*kT z8yH9h)92t=G==?$rgTR5z4@=&o+n}_cz_{DGo#69jR!(J^ou_klHHzGHN&%|SJA7| zr&D7G4C61ij;qI#UTxq3UFCEGk~~kh+xQ}g*tHLu4(^?{<+Wf%x#o&W<-JgGQLsxo z%Vd09t~H^Qi1QGF2PJ!vVO{HzagME?5X#289&8bFyOjBUT@h<_-+J$dG3Y;o7Lh$- z=|_O$ZoDFs3*`r`93y*|Vbb?OzpW`y+Td97C8ic_tgpa!hu(qM=W_Q)Y>+$NL3XiI ze@E!Zo(|YBTYyb?6t=+T{W#O{qec|jD0H1#NBW9Y%(4CC$(`XtVa_4~X`)bg2BiJC z7sNm3*%(C~OATLhtc}A z>kD1@%JS|D_0%~eSU#+SN0>hK72EL?%Kf+-e%W+>NmW_VtgL#GvRG~K)b^7yL`$tX z4gqYUf^1;B9~OW4T6CNDhxY2Xb|%3u5zS;O&pF$vYlB-nNMcQlqHThm(S8$se|~cA z1Nr%PjF`pn%v=aazpV2pzv@Z3W~KUr(?DnQ(X53d&HX@PcxPTi_ZKJMYJA;9X@Q|Q zonEIFPcqR0U!SxDSf0Or`BKqyStbX0(&OPEM1WY0>IfW0X#+!qQQlu|n8h`PoRUCk zmZga?aI_bgW+Q>I6H7e~p0JK#;pTLvqPC!YuL4U&{)q3j!}j_`qDY2)>gWG-)&9Xu z-n~R!8#Cy% z8UJJm+S2Q2Rj|}TlQ#`-_N~_&Xkzw^<}@qqBJ)QNHDc5Ez?NS!unQ_A>hm_R?-cmR zYq6=YTF|JR5BGk#fZ+%U6j8HMYYdqgf%P0M?WmgqOZaYwjutH3bg9W4UPun+^mcn# zwa~Wx&?t~*NwlutMG4i3JFmm zF3{ynqVoeUm=$``&-z2zquPrgTJ4_cA?EZ@AsNhc8NCU9J$rm?%k6r#X_5-4+u;%G zrfRfE#U0HHT#JrXx1uILOJTkmb+~2BliS7G>r~gbkK`O)joe4m{cCjK5H_F#Z7ayg zlgCATOx2K-VlF=HsDfu5ruxs1T>_a`y>lxPMEhe{iP-t8!2Xw)0u!-^^;-uSDcGLh zlkdRFXU|Fm@f@9=e@tfQ<;6uMv+`j=x>c(3y2Diexn&c`^y(M4BEh#k#);I0iuw;( zQ%$(fhCtHp!h43G>gseLu0~I#2wL32i>A(M+hNOt9=iv_%?Qpd*u0oiT4jw3XT@q_ z2%SKe5!*M?z8T@byDHyzayadPO=BuPH%*WGDr!OvUiuNC!k zU8dm}@PwQqGsmP}P416Wqlg*F17QR#8-o)jq)Sk^n>sC;vYo%(1s}nPbfT-!!si=v z%mcUkQP53u>texvCSMlUp{Y>not%uf^GNzaBT`EDAbyX~xO6Dqzaw(Qqt_O=8x-E#5+ zhn&&fIwi3q%hjr?*6VqlS{0m&qBK48t)Kc2OY;1`(x-FpcE42ekr5~j`<~DHq*@6* z9|MfNgVOagxE0hBNx?Wcbu0RGb=(sU%U5ou_m(nx>u|R}>lI36*+k@ZHWjp|aJisa zUcBX)F4$_1)1nwehg%SJa8_Y+7NL;Cfl!1d1PL9RebLS^2q41T_dMyaDXh|yOMc(f z&Fqlgtea{NV6O1xj^4WDV^dtE-|FRrGTT1nD{oJ^UD|(iDl@*X_!|l1E3ne>Nc35J zY*rWdPzVFxBM4(jv@5Jy57zO?21|TB%qG038@eKbaZmkTi?kfzg9w7@9r>T59+UGLy)bh>OSP6XHgxr=;*Hr~xeWN&#e{0fNu4)P%W z$9!ZUb#$zB0lbPHLWGMpay>=jIEX_7NPuWCB_cw8)4X3RUB#^!*&er?(6>Z&VcIn@ zqEO1TFz}S^2cWSQ;{Hq5J5@d+Hmc%3A7s4~k+QUCxPGJFs{#4utXg>Z)Mz^IpPRWd zcc8k);Cf75-Ohk?JjTv!`->C4vgQ!etW3h9bP-i24xCr=K%U?g_CzW}}Zz zHT{E$s${(PoQk2;(?*Aby$0A|aCNEv-6SL<`;>AU1I?nTymkH7FXDS_V*k-ls*e~_ ztc|F(lv*7UzF9r(4ee|}PHGs0Hyu_Xn9$H@57!3QQO4&t3~+NfoI2-<=>2wj&_~F) zdcXBKJa1RKi>v)l$g2kxY?v6AI3u9?=bEXaHvUd9(bIz&uCId&8C?Q(TSm3XQJG_Y zm8_$C6%FBUMf>bi)#!F*t)n|>4dF-F3hRizBV*df&vZf!;RrYBuhFgsyLqh_-lcA% z`z!t$-e@uH}fmIj@} z4zIO1z)EMs>QjFYFILrih)67j+lj};<7Z=3_7GyM#U}q}l>(0{(m1`}0I}}zQ$m^R zC_@+53_!XMgR9W%@4W(TXY-T)2mN0TXfzi7`G9=!x355XLvEF;zh$q-h&gN$zZ*5p z>V>etYa1ElJ0Z-fuH)n{ zr|J26a%!s3{F3T(rWKqSwhh9p>O2bmz0@n}QFPX>s?V8TfFWt-y~2F$I!4I9o(^a0 zQgR3mFJU1L*h=|XC%_bVN(F-{aGr+2jNcA4O z)S4<_CUu9nkIQ)#7tY~80R(A8ih?0jAvB@uuh-M#1z^=9D)b-6Y+P0F4u9T`xx zBds=2_@=1V1|}>U3hp+5PlmUtEMr!ser#@Nvu<#=1)$;T#9&Aq3y3y&BmQZOq~1X7 z-uz-uO?ey6cH7H%ueGyZ1wU#v1i>cP+9VEYhIfVReXsjw8$v+Jc;&Q3A=l=KPovIzZVk@d<^vuD8j`d|f0MauNIPBe;-b_&u|#fb z*Zz{9sOR|*2kR5PI&_d<^dt3xelS$$7yW2`qZfurCHWc^%GozUG=;uKk4J{U z-a&}v+???Iy};ybCp3o`Z#%qrX z+&wk?wd(t8C7{o)|%An(yZ>%OC(_)Xj-?XZh=V^B`g5r${c&8)^vs)G*$ z!Sl=*y?r8E81%rVOpj3IdeB2tHsFenZs}n?wp)`An9&EgD|7EEj zqh*>+pq~*s^ZvH3j$k8hl-a+num+BCjiHPkx}3jx%CrowV0vW@Ea&MXbX9PyQ}rf= zX#@7IT*D9NWI9DFSVAAxbd-!uXr~9qhQw8~aG9SC>7IPTpU?~^zO8t|ajr9zF+-O^ zN5!ptK9tX4{8+PVXRBYWl+Hw&9DdHl_k> zkySPMuR={<5`{MY7|U(k40($wRhzGs!s#1h)W+Mf*2Z{1EwU>&e^|gjiK=my^V$g< zE?Ll#-<$_@n!lvaJ*X?)KqWnmb_4IEWbPtmx9qM6`i25W-I`5FUNgdr$)x6ec(o&b0R1Thd2H&Y5ReH&G<;=Yz)W5k z3{!YvDv9|$!gWne_ois9tz^+LYVxSEDg zZKIY=bR+51eu-!eB|I|`)~_XRhc2squa^hb9H=U3)CLtsW9jn?9;IqJqoFE+gy6aN zG^mLfg`&4zXC>&mQRVzO=xih`WeSDC77VAbKJb9C;n-8K%q_c$*8G9aroan!2;#=f zB_nVjGuT76ENOgjElOi0^ud8PwEs=36c4>slMzC4j{#DYa9&X!OeZj%dG3%D3ONp` zQ7#y-lJQVIbKmBR#E9)9hq#b;n>z3d!%BnU&E*j}Ha+|Ji}bkh(x@{Jkf~bk)b^A; zQmykpuyP{1mfrqQR|a~FD08ll%|!~wj-g);M#|(GP#^)ur>|RUjMwz(dkh9D48yJv zfT*(zK-My#SlahNwC!zdwm(pR^besGN!5|x3Ro3kY?twA604xErztN#l9@?a=5bt- zby1>aNdab+c=19k3zV#+`C`5A#?VU(YB+ca=>R`x`ab2m1a?sZUM|3#I2gN(f{&0B zjf_Vt3>B+1wj|IbW!VDu`P-Ht|QS7(^clI0(;p`XvGnLp(1yfYd>slOt(AEfzvC zPoJdE(1_m%E@%h=mlXf`!98MiI<_sfn_8>U3Ta0I!x=@8uX|r>pIobb(RTCU|Dse9 z=jS6A{2&dD?5_@}&N2r*(YV2WLV5n5Z;nKzfY?>?BN;J|C|c`1?pq%t)4FMeWry7zh1(0;t{=#i^DoSL$Px^zsu}=l%-tKqLK(krYmu zUvp>K`zSqZxZ#2iaF?|<_#i#S0}gZ$BM!PyC;t_^bZ(iZ%UxS{Ov8{BVi^{g3M&fA zkizc~ij=5|@I)OesC{{u(kqAEmk+j1g|+hJkmuLI(eY}~4;Nyk?lE?ljI=BN*S{@y zpBO;$<8|c10c^j21y$=33@Kou{cteXrbOxRZ41BgZ~}Nzn%nW@D^9XPx0JRW4zx`aOUtV!0u6wKa(s#Jv_hytJ`@~78%>x5KtY91Z7VZ z)V^$3LqKEN@SZZ^aI>l=FXRtE6OtZ!EQ);(_yb&_Jt*AGHYC+^IN)WZyRxN|8lg2?S=EMy1!&Phn|AII+y?X+p41a6867wDVmO! zPzzvz!414_2OXhZl|O}nK1!dVAzwKej`~!f#F>2SY#FFP57F=5)1nVREA$c}bi_gX z3p{tU-4CQ(O{|ZZ^4f1D?py}Lk6`8=c+$02iAaSlD+lD?RC_PzasUa6LzUQCt&aID zeJgZk8MGJtZe})z!1;UZ0s;SYXHtY+Ei)iLz|Y{JLqh1PX$LPw*fV`mN^2D-#3^0( z10UMXHd}=l?ai@GU)n6j+zy+sMuUcn*{^kJt=?dBS?%615*sD8Bsk9j z%&b=U*udd{dAgQB(Qej{QE2p$!XvPSg~X-6(PY?C_wKOQl&cGzBPkm?ftr2m#?UPo zs3ou}>XTNijqWp`WlKq#j$^aolD0U(CQ+Y34a9C=`_3M|bmOp7O2?uE+!|?rDz2Z8 z1v>;wL7NZ5zp3KtpT;71lRPKN+aY+hNgh|KX}9v&*0w99h1O}C>f{~QESlhW=Qh7! z=Px{)Up}oBAq?7jZSD`WHun9M(GAmyX1PyH!2$SB&tzNowBhlmw??=gOLuVp_wueI zzLepd2WQEOtIq4}9n!2vfm$I=Ic=jsDK5g2c`SiMHj-yX?-wzqXt#n>N_n7FyWIB2 zEjINexrpc^MmX?l$FZFfSy+nCk#DO?zINI2;G+ql%!UDKK8W>Wfl&-2_z1Yiq}Tm_ zAhq85wqASffL%>N#)K;qyMj=!nl?wmRG&AN%6JeLBUeuX6_@K_3CTMw)`+$D@D@NH#ALtUz$+ z*H;DGe|y`g%7&x~3!VzSaa{8!I{J)9>2pZn0E3$1s{okRLP(`-5h2l5k68Hi6?*M` zb$!q;8=Zgln7rF=+kt?X@viuim9uT{nhxglc(2_k?E+z?4=|EjlVIS~!g`h$@e!Gz z$4_N;McVxR&K3+FfOjMmku^&mf$C+P2xV^_F7dw_e9a#uT6TtFgn}dpSHqNEwYmH z#RQ0}{MA>ax!|u2Y~l#`j6?NkA`E_GVH0P-SASSwA#sH~k>DSnu$i#k;n3*~R=dqc zKVg3cjY3JbT$q_#^7Y;qX0(i=>|b4QWzFXnc8{+1R0ic0ctG&i`=4<_?DgZ5Kda&s z^OA5)Inz%#R!TkWcuC8 zD{8k=oD9-`$3nfvzT;$Sc+VQ9N_1oLq}sPJh=-4j7|l_7<*dw=u4M&ZD9B{D8ihK$ zQ9?L?^u=-59)x*=4>3@pR@h^!WLHuNm&SQP>BF=m4UP;!EqX_s==_ARMx|kS1Kbm4 zY})UzFs1DnfyiQo4Pz&6Y9Z?)+6LThbO1F#%D)0OPt&#guX21@%`nCFG4=}|c#FRM zIba4@OxlP}{Yn)S+@#%(fU9>$C=e4MB|JPONl{AyzhPF=c-Tdsd*&@p4UT({E)b#g>| zSU1wVByZA>7S@lz;N4FJ;PdSha||;O+qXbkDbbD??_$PXw-4$JM*%<3C%!B`rrx=V@%n!e#Rk`PemqiBI_)9uU}8%urPy%MDXiNWsK{@kH&^-c~-w__-^qo!dR3W z95pJcfRmxCTcVsd#}x%8b!{irkNvG})pzzGxc%;L;0K90nwfZ!ShgOb4?1C0P!JGH z-H5*lKlf3Er-4J66niI5;pfPr)oSV0ZF&vwf$QOKa2R&DOWrbcTMwz#j+pp)$_?Qa z$1;E5|23Hqrp1MNzP$RYJplUdeRH|mXg|>SUyhA5vj6`}Al;+!Odb+iYBLOc`wqMh z(_Oc5ND~?KI9a@Z>uWN_QcU=j9C*;b{fg(JyeP@4WHxoZfOQEe2ga0RD>Tt2DGPJ& z&{l>+4Y#^tNQp+<&-Gljg_Ej#==l34r3|y>!aBcT-oo> zZ~GsgEUo_}BH~H>Q<4C!Ta@`o`VhqWwUt@Dr%JhLApO>$WWCE;I-sWt5>FBHd-8_q zXtE+J_Yq45H0Efq2GWnq-vW{qz41B5i)gl2QifgD-tKc|rgClHkIq$|sz(3U}6hH3SRqqy_WqAdIK zsv7CJ(zhv@yo$+t3n%j5`MTYow-T~o-z9IrvSy(`ZoOSgI}z)9citpq=R$~FJD=R? z!$MYPm;@(KA>kG!*{VkhbuR)q$}@@*buYT}Q2HIy1nYoe<9zv7X?j5e$&Iy>Q@HHE z*C9l>5!|bMsq7@)O-;(yM;|@`a{Kcb_CJ5{=H1rxI>6m~n&ZZt);`vKT3?5{<2m61 z4=an{+pq2L7nqR|Z0Jhayde5u{}7)al3+nOG7$S`-n)9m;a=bmTfZNFJcW~jhI%XwMVndWs#YXXL<79ti`F#H*o;%P zI}Ut`ygOr|^i`1@qclt&hgcW{;8ViA<*H*0JbbS%^SBS)SV(+FwNa{zY*;)%(vN(3 z<@*_gM8wEy#_?QuNotx_hZcbeqMgvEV@Tv?_{DIbsEEPM=-x4YpUhGE0bTb=-24q1 z=FRRScT~;4xE{yIA=>c^L_!b*)rDht>w^@uYZ~o*@GQ?OTdL+);bjEa;@X66g69jM6ebaj zK!kbqLj|?BZaZBS_*QC9zwseCoheiWM7_rkiOV+exSbhn1$`Y04mrbQC;V;qQtYL) zp~qofWbE@d9K1jesv*I*gUYMFl&;=04O}zbFTZ|B@s;$D2P;?PGAUf2W2GL0?P3A+{ge3R)EU>QQ@VC1v}ViyypZIdJ5<+3ID(*(f}5=4ou_b}vsYHNQOtwPDX5ec$ntdY$4| znj~M(WPX%47xB9`v^-KcIc1LlZkpSK1#9vVC62AlzG! zeJ)!@uqK>pCTS9H2d!ZMRKX;wYL?$`{w$5VJFE24?NZ#ZCe+|v260t}Cb6k%&dq=r z$})_BP!d5LHAqBqg<|ANPTb9R9Ozd_ZWk(-f2&QIi==$_GG{QCJBN7IIfRt(RIcPv zPe{!tvpZ#e;CSo#rX!H$(ao8!E1E>gNDlhE2GNQbS}V2NsZ#Y48d&9K^nrhCddgWs z6^%EX)y#ayp{^|FM(iWqk!;_i#ZTQiN<`J4!Yp0wExEd=(NO+ol z_s+|ODrpU3-+XK3$`Jd^U247Ood>do=fLB)Qwxd>P*&V?f~H9as?Bobef@Z4>+gol zQwzGaYQ5QP$x35&**fL0%2p@OnGI7r3%vI*aPSHv)^#^_Jsq|E_ZS$w?Qx|jfVks$ zKn!GH#g@c@Af_`JoO&JH^M3+wcj0@l=^N{_t=zY} zJ<)5NJQGBib+hX1pB^1#l&ghnS4H%-F9y@naVeO08R{d z9Jt&rtdem#4nr9<+k%8T?d%<#c%8mjtWvG#;{n2r1ORQxKEA%)-8|x?GPEGRPwA8> zZs^%}Fi9yt8k_U3)m}Wk;*;KOzKcA;_(DgYTCb>cd+iaQ2>7y8f2H1n`#a|r`@fvE zaYH!`Nxm<3~VtJ;!*518^TGIWA|1Z}4&nc+5 zW0Q=VUSlZq2@W1Gr#ggQu5i=n$^AQ_%RQ=kL}#1D_01+p_xGVRW;BYQP@X>f^#ES`5U6 zq^KnMh5=}L6#mL=s6%KS9zRWI6)cea2y40VgOgW*yRtbJ(R#53>T#s#>oFm#)`b_} zACBi}_-nR;1G5{RzK0;l+ec;!{%__TMIZ{Z;;>x39>_4If9sEo^A8=VpDE5g1L;g- z5>=sux*H@XZDpE#aQg8p6MpJOal0FbzbibB$59=R#|_}GAHnYZeU_j&Vn2eKBYz33 z?0z1@9navkSJD1=hEEQk8Cq_n6C%KvpPj1q#+D{9#Ezqbzeq^x87ODI{pf`!?S;aT zD@Lo;X0LwCNRBeO-7AFkZ%_TE@NdJ98;|H)AJg}~RUu~u%FZFedU&^>uU~4)+*Zn@BY6V!Vb_U?n_d~+ ztDj(%^}e+_!1w!s<`g%jT*PJ;p41GfimeK2F<%s8NdMQ2R-vnW=_fLz$r1;O)s|KJ z_0W)))@vJm3~O54jVJ^Xchf?`JL0A1wZ<#``Y7k%lR}j z73l4J$@*(0M;WVl|9=r=%g1B?Yz`;ob(XK@fWN`V^pv2@FVeLr>u^j)U=B?mJs2AZ z*`{+lY|)@rS$(6J%3wFljsWU+n{WqZP=M)B2BVuFGGZ8RZ&xoiqp?;>Eb*&?=R%q; zD^BDavg7soSgF@quLTa$Z_1!eQti9I-YXc+PF(6`uS}TY0y^YC1T{4nK{0=0Wd$GD zb7)vJGI4O;x-Q{Oq5|)9qkqD&|7%q3nvd^O46~jav*ezPC#>4+t5(OE+!ST@arT&s9^Fgr1rqh}3a92jAg?*IF}J+^ID#;-V* zlT)rb6>UZyUc|gqbIu?q``}>{JND}@bn4KmiR9-?)t&Oe_LZs7Uk*L$&ECnt$j%38 zOH(EqY&N`gZ><#4U>Pu;OwVaRGY^t5u}>L0&lnx=<`<)Z{02PeiV@QbL2l4Vw$CSP z=;ne_f3S&}X3eQ6P`%gMz0_4{GP|;^Hfr_e)#+8`SIs=@=bqst{V^6HO1BhSSC8p0 z+voOu9n8UOUV+u5@Io;E7<$S~3avz1n>poE5?lMl8$ub^-_YSUJ>7?zyWz5!JE_y@ zgfs$?+QgQ*Ow{&nHk*U3>%^(KoL;evOXq4#pp?iJi+TKB?*NbRlSb8bW8*xBGmSN--b@Hmkz6Fn1rPe*xP3<{56k& z2j(6y`_v+!pb=SJp3t0ZeP?9mozFQ3uPJuBL&??xC=n|Ti!QsVZSHi}n&Q5hs3ouX zLm5lF8X?+l7vtp^^C;($-eAJ`Qr@cLQbr#us z^|3i?)y1drPmKJJtd4B=x8-c z*8%8x)Hk6JqJME^1#XwxLMV2Y0dphY(wS|2+Uu3+G)J#l4w@-fKeJcsHEx>|C!6kg z^U`&{>-lVX8EW&vNNn4ty=rpUjftD{H@M#anWLM)aGb#Yh^;>B&&@mGj4V{I?iu$^ zVw6)%7g@JADX-2&R)|Ga*a91n?rm}>mZ&3hmU`tCN4+!fx?2@HicpfFLyUWZam-?9_}&RaXq2pByr(?{22* zykKx8drsuKTD{_nR_1-1H(#T!DRmPG>6~Y6>Uq+8tw+*13y#|4p~f%Gp)abk(isoK zSZQZT9Hm(n{RV!qlRP~B$}Qhv-re-gB1DU3Wo3EpD`JHX??lUMHs1f#8`6z0FYP3X z96&m{6lVVBk^B2~TI);yrvBE;5%ztWIHa%dcqB)vlvWHFSCcn4 zaqVO{zVNN2-RbbsUhr5>yjGVc!~08Z;te{~DGPw#nq=kVqJ=F-5{r@BI|T5{HWdTo zr|Me_E7enXr(bN{eEU8H5IW&c1Jt>fIVbRM+3t;wKvjkBBXRL`U=TPa{5a$M>9v)* z4&_Mm&?UjdDs@sl7|Z>g6(LyFGWO#=NqZmFhhw0WYf)1x%&gTaOl)I6#zZCChG;6I z7G@0!fbg+^)>>l>H6{>PJwpyvQ2JHCeg5qEuj=Ubx^&h+1ud8`T7e)OO)A;s0_z?< zYhhb3T4c>skC?hP^))jzD1;@TjV%)HJ%;OT7N4vooQ)5F)kmwKauF1!A;(mSh1)U~3$y|mM9enFz zkZ%uv*C-G8e@n-WIzvKyZ#vc{m0hcn|kS|)i=^q z;GkoeR?4|{hDO1WK?_MmY@xW_X=JTlB?5oXcIAFa?^U6I!UvZ@zqc5BB>H8?gu6R3 z^NB;M?2>>yTJl2k^YL*sZxEH6()}O#8^~F?>tiEf#5z|j%Wn$J6*7?@Ad9;+Sn%C} zyy33urc3cS2hw^>%YdR0G+vpyn2hwQP~^hLK9HtxqKjhZ1ZEYrEhH_Gzhv?#%+cL~ zcoGswud+l@6v{XNc9+m^{)IfoW!$ZtLSOu=jsJL?s+3~T6dhvJXpa9qVniN8^l}QVas-mI+&!G&}9LpVVEWu4U0e*>#eN!0aRmS zq;_pjbs7|+QkJG*8 zGKw9!HV!hsTip__!8m-yo;T?^nCs7-vp2RLk>3 zsnqhoJ@V5)?<;jicu>!rP|+B8`ZwG^@85w4zH-aGs)p@B={ZMYFK{{2({!1q=IKQ>;& zQ!7h$Up0p4!N*9(e5X0l!j%FM@qfUtIYF;rb6Jk$9uuHVgac8$ey@C1OwqC|cID_o zhYw)FVz<_MOMdOIlnr)X(Xa1maBWNZ^7ZH|N(tStN-;e~q`@I-T!UV6>YMj;=K1a) ztmk8m5m>=F+mMXcbCwJtbvhQ<>YZdNQfpJ!rIIz3d~I$rb>`-pQ<<(Ej!NTgPtqZC zly0-85{!op;O$49V;@4e?gLJGvq~UAizFCfoDR=m%u`OTL6brydEJ5z>Uij$E6Fs? z9(Bfq0s5j$EtQUF*8h2t7=6$XU-T=&Nk!ycB$%*reEp5;3hhlECCSWX@?npZdhCKl z_fMx1f)ZFobBU{QG%Fp`>D5z)wT($t#c6oc>6N-TreI7;3{JHuFksvg=U*?@65UoL z4T^@TKvM@ZVM$kLX^E2{a4mG&zB$~!x*m`CN>g$L!ZE$V7oR~Sc-@W>(X`nOtpo1_ z*$e$wNfL=XDt# zMVVxP~y(*1zvkaf-B@!i!D-O(xu5~pdX5}w?hQmM3tpx3Mr59hM*`n`)?Ps;yB zo89#WiIw1W&f!p_9qNWO`Dh=q= z>@wW*9yYMqw@x|9oo{}6gj$i7{_RbhmG=gX+c`8G5+4Y!n`r0&S6L8VyN5 z?k@B>$nHM+sOPjUE2_99N_#nDLcCT0VaEdmTX{jidan8q>0lf6CgVd7vwtJQ7}vVV z>m%cTF4Pr+6x>rFFOGMiwj}&$;y$oI7_0cOT=@8Nk{dwU&HOc_F|D(NsRjJ0f$Moq zAxMWvcok7H7WC_!d{p_{2o@^B+hrCY)>o_wqftgRU2awcZ)fvS-;WmW&LBtEtwEXw zZ?9mTdi~xlI<7}OT$S+5XQj*onq|=TDdsyjiJ^U<`CkXgdJWg`!M?-p_ZNm^LDlTD z`)L6GF8-Bp*zJ}lF{LbFX3l^TNbb2WjFvY)OVYfEn};Sk4MnByKBolS>q~U;!ATCartqn3UZhdymr4bP z4QBJ8?fW&{x#7CDBc^85L+|ufgwD^m-IvbUn1PiP%GTZ$1<1vcL(ai^)XHvyv<%wn z&mZ>vzFqDCYTlB!&0bw6MemgK&oBa>XKG{OZggi%zP0D6=4i&6xz<0&tOs z#Us1MFzW;BOakM+JHz1s=ZV5evU$Jr(aD@O+w=g*6?t8@cDxkFw3OGYU|E&!aT8iJ z3`oEN%RXO3q9Gj$O;;XXjnZI{uCn;byK|`}Ftg}6Oq9u=|Ig70@Lxe&d3La>nYn)= zi?-GTw$+2Y!X?T&T_r&Jc5dZ|v(z#PQti}vWaPzGXJRpC)lr%8*6PY*D-F%E>y2Wg z85kHjfqHphkG|sE2odzUvW3`r23JJEq7mxg#Tm_fzU>&tq^pA%sPo&C_Xp`>4sy6< zVaL=B)0&MoP3D5hU<|{=#DtXwKw-BLS4b1${kUV5cZ6=AybSi@S&DCpsqm~6MnkVB zfUv8Lw?$2Tj@19~LFK^w)CCFngo zEag@RqF2r+K>`9jU0?P`+WruOOR_a4)7pjZgs1JMiS<(I6Gn|^TG^~{t+ z;6oR_tZSz1?1328H|#!Hl93cd-^A*APo6_@!d69pY)(qa6H1Uz=^s}*Yg+YvZR+by=suEtU#;U><~L+?NC04#X`05dmd z^Z2M(f}1Y5?ujCliuQTW_pPiy1%&b5`YgK{QU47^^9P`yTxeUq?BTAHM_-Tp#%pPk z1R0VhX-cAX%JsPIK+9oT_KY$OQ!!#FdzvQlFT36!-4=?OW~Kv3)6f6+rG2)v*NefX z!cir;%zqUfVQJyLaTXkln*Z_g;S8)js*^+p!o?&CgE*8;!$Ea?c>42qiy}zO7I;qN zA(W-I-XPCW@Y625Q0IPNe`*Lfuq{ElI^ZeL=&5!w=`53T-D1t@wrYDdt$Sj)UZ~UD zOE-?ISICV#J%$#ub5AxPpa1j7CaWBr2d&4CT#DT|4(3lj(L=6Mj zb%5x@n<~#1n(cC=v<#FTu##3&Sm2{6Y-hB~22O*uC}tz|)N zt<;b<#QZO1q z;X6r-Gnp@oTy&7z{Z%?X_Ayg;TFXAGtxA)FqDm|{_6@UMV@*S07!hAfN)})YH(oc% zb?nHkVKD30i3juRTN;gqd%QG#d6YYLV?7`#hEuy>nhg5wQ~&eA-yey1C+wGY|Ne^4 zk$ALnmIYT>T#4~kiCi^-IxJC<-G@n(MpnRuT8Fnk^2xJ*L2i9Qrm|_QEAO_=pAx9{ zQxw|UBz$|(nYM2@y=Ps zrh>Xo!ca-ds6)OU8g{}P$mCF$NNUCMI;oMj71J~{+?~^2Gzu}3JkQbN*l?M+gdj*< zIMC2idNxS?=8m+FJIguQj%|XIh^rfQ7|rn1{&2d6#3OJ{aNx8Ez<41Bp3p+jYI3=R z8@!&;BxQc%R4aO%@Xjtl;a|G(wEPwWqaNS!z79?g)^>bm1N}!00lbfu^&n{FYq;q9 z1di#K^ZU{vDk;;hPLs*WR&C2#QDKL)-UHI}=#!1#ms0^A zFeR8rpa5=?q=mpUc(My$sy$i~KBEfpG|3xP>co;H#a@y5#WS(PALY4%=8>WOaVJt8 zz20sim!wOPBOl|>nOs>;ZNDPGxeeI>{Z0Fq<6*Y;vsJ)bjC~dy!0Cp|W6^$Ala%V$ zBa^O*UUHchO>(RHp}1VC)@>bmhn-pLsN9m|Ree3Ji;YTk#nL+YrIkz1%96Mxe^%!` zD4i(VuGYhFuB)fFS}|N&Hi-`Ll0LTU5=ou4oUP|;m%RR9cE#;BUWukX1F2t`RM^+z zyXo3Xeph@oO!lSn6(^S2{1lmLi~*Uy&O!fV@=6m9+_jCO%M%)2%EEU#o!zy;N*;hT zM%HJqUA=tqvBQvwTGZk+icpCPLjK#2tHN32qZAiWMZS66Cl5w0ig5;6^w>B2d=gLJ zVM=C#`=DRV$C`QgFLw@evt_~;UOFG|9G8M}?mL3eZ68+rB04sX!7HCqsNNzp4oq}f zdR)E55^i^L42S;sWyMXFH1!%oaM^6uH&>TyA4n`?pW7N+t$*$%z#&=NACC*?*sQ^n zQif#RRyQ5kXMNoalRo=8d5;-!CUl-FhsIX10UM@JlM{MTb z3_GkXpW@|cVy4Q;4ZnrsOB!7^q40)u2^BQHKDqmJep?Wr>&q{WPt@-hF!cM~{HvJk zrmjZP)aEv1@NK_4?7hm36pVTAjMBz|3u1dmH5c04$~W zmdLZpdoW|N(UohfO?-il+weaaF-^w_+BYdToCCuTig+Qnx?I;Ri`D=1npC#i>QCp@ z_Qf2w{BohT9{8e1RSV6q%gQzyg;C4b0zwm8`px|Qi=JAJ70dlfwcoM4bjJP5QwD9~ z8vo{zUQruG%QFT;uO{J-wZc;ER(dD&4{+&r;PrB?TM`q#7B}KlIk2fmLx3sotTZ0= zPWTeVDq*hms@XkX6@Lc)+5$-)&A^91N&FinJ$vo!%J;F1VA^!*Mw~m+(Zk+ECff4TD{vhTb%8dhHIphFOTL~YZp?Ge&D$ReoGYM0~#*f3C4nf$eHpa z9w~WXofHa*)ZAW26X0+VkTYF@E7cm^iu-pWPjoOI4Ep-=pD9lMji(z{I?-~2gNT z-EIF&2WxBX1Vj0x-kpGm;a~cx9CbximnQe@s@UVxcr$oBCSK zh90-Him^#vsTG#ZYZ#lV)T~we7Pq`TA%q6bhal);Y|kaxE_-uQ4o9VJlAhr-wC~w4 z;53?zX{gqEv;11T5FSXqSFf~gr!DbD7+x%0CwiU9A{HA?n^%05uL4aBhVQ#IH^_c6 zx!Vq490x{Snibudn#7*CT-33IPg3e?Ewu6)d%J&Nz+QEaqq@v-Aj zsdezaZfx*W6T~ul?(_1FP-l7P&15_dFpgLz-`MGjPPfD>=onLTb{-RhA)zc|OGMDN z=EsQF*YD+}EgZn!oTQtZ_EDZioC-x^L!A|G@`rhv#c|%sFsJ=`$#dWd2|g)`x_eN? zv{VQK(a|Eg$qSOqT(BRJvlcR25-kh9JBUlV_eN~MF-weedEq?LYE3|6A()U<+waSO zFmf6N7{C-1Am1%ad$^FIDRK2Vad?FFM<=D32@f`3YG*Q=Q=iY zO!Qqz0=@~_ye0bB|HuDqvJH+>=CF^&__N=Ns@GvqFNzUml|DY-{3|eD=?mJ$C2nsi zJI?lb<;qqZ_dJtj_E4SA{$lP;M3zWmG0NozmsO`HRl;CaI1Rk#xcp%KfA(I6)ZKV}y_>n_0L4zUbFI!Olj;H@TPrgAor>xDG5c;1e*>)<~aF zBzhI;m2-NvNsrm~x){khjrrMT`&iY&J9dwbb-yQb5WSHc-l*OEJ_2JmfDit2nyAe( zx(@EFpZG4!-^gHy5whLl8`~Y@kQ|FwViuo{>gXm8vkjr zen?Z#sc7W?-&HT1u5M~tUEE%5#_Q|aD$oFqG2-1`SpoR#@((>Z2qq^6fyxp_M4ur)1Ca+g`Il=Lx~KlDIG<4&+L=V0j5@w=T84R|wAE9Q!aYjP)> z4hw6R_5?fJP7_ga8F|Ir927e=`8@MN;~L#cfESH6fQR0nl=WwqiJq%(Mmc7W?m1F5 z7b_af<-)Pmi&|;XM(DCGq?ZzFeX;=owgb>{#`gvDG}YIq^k!fn^oug9So8g+BJRqz zO;u9z^ zuid&+lAXZ$cP?H_m0=3-;~!M+fe79TrmgVp;0n4Rp>U?WsT#;AV8*NPp_Yo4Nk;uN zRSSg`-!+994a32YUeE6>HDC&FYbilD@w=M=oJ;feik_^W?cZ7wBaFm{d*J%z{LJe` z?J{#7uDxUo*X%yAb3?{rF2!%V1{;s%^+H0|Wm!y-wKYXJz(7=!PZmLI? z6#*l4-)+WwuG8n~IGG7fB8=}_8QZStypx0~R{)RdDATs;D%Ew6CpDI21lGBakG0D$ ztOm{N3?6V}HzIfP0$sKoT$_Y*t}M5)&ZL>fejIR1>!lCbBZ_Scs#^=Bsu5|g>mb?^Xm_kd=Zp{TMLSx2|rZUZUkhk?`V0?Hj3lvdL(Q(0g0$e#g#HZZhmn)6B4G#CncLK4+e6~15^$1lYACn7AozPoby zQg;H_{^wo*voc_h|_{7+47Hk63TDxaQ>j3(fm<86Qla_zFfZ+3;3K$Nf zYzRJcKgB0rjTCL3`gccte8}#;R&%BdFgu(sqe&MIWn+e`z`3CB6h62XH0NDYbV1kItX+KijX2}>D4K}EwN`d+e27=V2+sCL z!@)kPh)%w(`E}#8c-($?tC8F%d=(wupcAf6CXb9t7PCnAm?q)tV)jV>xagg!%SSOo z8y~Hw7v%_Sv)Vq)`PSi@ z);M0Jsf4XB#sa$WDTi(9e_#5?;o#JS=NFn6=KV4D&eo}Y7G`l_f)nzVTn~lHE*0SA zddV{|AR_5J$>9bK!GeO7%5mAo%fovaXBDOPN+my1(>Vdi-?>j z(~fS8lRk}OlE&0C0nIS)Jo{)>W*6yCLh_Z=APx#Ujn)`m%vlPYIefMD3J;So`Lhty z)GfbOd1pBEq}k@?)b5=h8b0We9KAsQPqBXycjkd_Z2+ik6Y};)2k$LoB)xuKFRB&a zsXu$2fd~Kbc0SpE1_ThZ?Nwo=i{P5l4Xi~jorRt+(N7yBB8FniY$$SuWEppdq|3`z z@qN2B5!y6Y`zNwS@^yctK4z6Zk0(1MS{K z?1|=z@|wtUNF3Ew<@7|6N56^kf#wQOfaKEvH(RR}oCF zSV=7xEi=KzPigN4wj#_l%T#Htg=g7(ooeDA>}YZ$eNr>htFPo!$UoO!<1Wu1jKIH} z@L#yo>T3miectAOfe z8Z_9c{czm6L_hM0ZT%C5bH*5w@<*q;?LP(6Dit$cf-|LF8-l^8wG%ws-S?tknQW(%g}yQy{4h zXHf+=dTfOD=O%EzwKY9h@nxW%L^)xgZ97DNAn!4oFZ88okFvqIp=YMZ?lF9!pct@RaW zcaLv6bKPwxp;jF0Z>?=-fpdzR$3L#vV4fKJHy7Mk4yGI9O2SC+;;*2%4qLf19=X}N zd59gSH^+X*7Rt4p%1nvh_UC@K!E(ha*aNuZU3@G6GjsdzTvpF3)7 zs4&|?=wK^H2#H(Zn-%96;9Z#Qo8*rDFQf#PYirqAlT5TNBlwOjBy`P6^Hj#NQYlNq zL#b?O(({V)mX10Ty~gj{wZ|lg46|(P6GFJ^@(CJvv9%|z&;(q*K_vHraO0M1s5i|* z-8x_b4+b!JbxI6GqX=n~qYyFO{~46c%bSk5p1J0rIvV|Keq9mU!0So zfnwLA54&cNYcI+%;+x{#9H_SK2r$*A!;u!`(R&GeNp_Q`7#5EZLU6?T8n-HVg$0GC25y>H~_myH)`b3)Zk_^Os^He0n~cJiXG z%d+9sdL^FJWY%#gH-5t(T_M&HWScG-M<}w2Wx?14zF&U9(a7wb7>M%Hs$mjL$?q5` zqF!o`lj|0h%v)P#pLGNErgu_K8O=srEM1Rc!yYfde>y5mq>{SBW5MB@!Y|&EmQ?`= zbsnuQ)N`s|TM?n*Ua;4B@BY$OydT4T9#Dnb(xeEDWTM>*OM9O5 z{>#k$6Xs%bU#;HUc=F%2-^&PX<9cAxxue&IGnXtaB;UC))FeRm3k~^LkA=$rJfiTQ zZ85g0sR_pDFYX@%*2w(Lr%zfc3Z;v>@+OFPM+n-s{Q6i@TjARhbd9?McoxZKtxAIp ze=M%*WuL`SpTYfFdnh_2L7~wWMvrjNm0VTmE{n#O{b{L@@@sYI^%gVAZ{e^sO);UQ zGrdC-%xzVriI{GsI7p&~CskET*KuulLQA2TL=vsj^z`Zrk;=P?KrkDtupaH0`ikoA zANq`X9n0xx>4iAe6l|2N@`#YuShTQwuL)EceKqYiC(}-Wnao$~qRQm$=W||ct9E|= zfHziTu`>j!MqaC$bnh%TkBJmZ4vTK*dS1D7pvI_Ck${X|f-J`&P}Tc1Hzj0F3wU$` zekNN*JB#i+GoE`Z2l5LPQ2dHrUbn&l=MZp#&E;?e06c-YRO)qB-XGgq*KHuDmh+=Z zXc#HUyB_gE%m?T7ra9)wDmbqmi#a$ag8*C^{;}%0nfkjkcPpoq;Yj=Gtho4AZXugzmZD8sz~b$-3V4icRBwp;L8M-_+ii$`>AU!Ikuc*;NLC(*C5K zg8qTsBN<0nQq_rHNVsjzm+xZ#weqbz$H^oBML@d0;n0-TFFAH+VC6jl zC0;jrFCIYif1Tw2%Nq7nEZ>dPf7tFzv?U({|%FIQhQ_THN?+=v-9#2%TAcCJX`!=v}mm zS=s_~=!5f}{h##Ii>k1}hZk>3huCTAfjL6pOFhzq4uJFRRuE2n7Ta$Qg)rHJ$&XqFur3penj7Q*c z@IjL;w1FVDQfR!;Th`B+Cn3mLpe01IxI9QUK5M)W+JM-JJhOG>upWm2-cNKNBD8e zWFaMedwL!3Y>sZPqP{Nr*(|GYL^x!__zrbGp8J@^n%*%hgHAE91+8`2K9(K?&DC!Y zCm-24tOsAJe!-6C`!alpM{c+g6s3bxPfaoy-;RRq?4&8Kej)`*^%3TV)Jv3c7m4AQ z4ffeps{&bwUC~xX%P&euC3m6j;pw2l+ZCkaA2Hkly9 zeo24_Esm2cD@NXEU1b7y#`dH)tMqtM%_w}tr*5s)(m@;#UgM09J?KPKihQOQqzuhb z{2wO;b9sW)Xd=zftXP^3yEjGtW@SdcTAUgTji z&Dus>IMVj#CglOVK2a$ec<|N?tJ+L@zMYILOkCIvaTrN_q7`%Xbqx9*z)IYS16UDT z-Y%LqZ?Bbexf@l@M)PE_Ru^YbtUMwdE`~G;_krFf)OcsP=wgu5|)wO8|mk#FA>j6R%16@TbKh4F2XmB&9VPLA9nDv5EEI*Q7YzphxLAFUI#bX)- z81tcXNz35I+<%Wn5DM!Jf9LOxyXL{`FZ+yyE<6?#H@lR5)|%3>d{8PRkgD=NuBt(Q z-?+1;2^Nqj8usr8CO(<4?O#<7Y2tN>F0lqhWN&LBElljtQbPsD)elxy-^IYF7+1N! zZk2i97-cZvUm3sea&pUn4@N?m8BIzgWN9!8mS~LJ$Um@X`uCP!!yp`t9AckS)xX(& zg-m)?K7XI8AfaB?UAN%A9LE1iMFOgV6+#Ck1b?741!RPOF~o}c*pa~7=)G$WOQdnV z=(9pQG_7bb(}9BTC>LIB$SK68B4%%eo$i`6i*}C|_lA`cjU9juL(V1Ez>vt54oh&( z_x|=aYDT{G0HkdlV4!B0hsDqY4HWZ3x66l8ZYtsOY3M?-kXbrgzP6@@=gV_SIMbyF z?9<546U08#Q0Ds~&q^or*5dKf%E+OCw)kMx7j+LlI4w=OR>J z#2=0AE{Mx0r+GGkjo)A(LI?;U8A2drW;j7r%{(`HQ{_S+-o(ffs<_lHW)HRHOsA&!Z+(2#maC%o5plPN=Lk#D|PU94;2{-(dP(V-OESyM4;K9`bz#ZYW zeeoL7y7I-Yi-s2|p|p#j020sw1yEpMJ&JR>D``7^Sy9zmy{RkD1CgPFYZ2;UU*(*7 z_Vr*uDhh28zKfDfQxeV=u5&qPjoCsmTFYa)(jg_Uf6sGTTTy8L+S<}Tb6A?>&Cv+Uxo7yKJM>Id9?)lMWL0*;L!>83Xmk!7QYIcX7=@HBsfqlW~td_6M5&= zu_o|>{gKL^EX_vKkOhVLZv`+8LWwDod!H!!lQYqp$Kn|jycS`4zuoB#AOsU22eK(z zgt@Tak0A(`_W*Aab++O}Hgm1aS`{2py+sxi!KBs;lXv`~&%*54D{(A%q1X2~?(CP_ z)OEC`mgb&)p51O+iEo&|{CR&(oChNaN-W^j{TmjPjgsN1jTXx&0!Xa8@!4e26{me77!faKEsykvyC`lEo z$8Obl4F1TD8>EAY!r7jX#N-P)J(UXK>4y>_pKj6eBjpFoz$xpYf1=H%LP%5J1AI`w zzIFyFjj$9iDYuRU& zy3-V`cRLxa#Y(d}>*M(ehKNTZnF7)-`BWe7lr~2qnYxL&)Exv2p@Z!-}QpLU3Cmx7jYe5J;nq zwSssg!g^G2O*!QZJb((D+3i z8bycy-(*Fx3?Qw3LP`BYnuMV3y_$z7)av!9#R3ZO#QJ3T*OvrSyx=js&xHm`fjoK8 z{0u1p4(?!c8IAk10UaYl)1WfcY!o?`20_DARY#vY%+^B;41B~*Zl(T-<01E9Hhw{6 z&eTXpQjxNNWR6mf?2h5i%GE#OkIdf4vsq&xW&N&{A7VZj-}>hM^=JGgVLXe{g`em9 zdSqh3$$9{kGvz%I9%pJ|87KW7rDs^xPqIwqqbO_Sks!1|>CPK#tl&tH>0#OS2EaHR zMQn4pL%o=ZdNP0#EdIT*7C;J`DoI|PAidWZwl)^bYQX3Q7zI{9*YPkHvQnBxWAi1F zX+Bfhq$t=Ei3CCcpHKCTo;u4D@-21jB)8+so8OQ{-s67k+pj&d-K^V8mh-OZ-IF9K z@9XfJWFnEbUnDA34rLHRqgF-Osc<9Yp7#DKK`reZo;Q|nz#)&_VmSm%d}3JD8=4ch zSVuIMHL<3JxQVkO2l^F4sxf>eCn~*M0ap8GD~SFlLtWP}A$;c6B2)~uMWZHe>?q11 zQ?`O&LhsLTP9NSe=kg+#8?u12V}yb=73UX(=eINnhPinxX zxRty=`{-f{-pwi&GbVC{dcv4m6APTO>Ca?*$BYz`i|tC7(#e|P5nPSvFY!A_`PJDt z`*P7Op(U4brigfQ{_wWqv==`HyXoANsg~Y+bdX?aSZl zPJyM<8N3-rG*?EB$0pw7Kb<5MU1?dZ)HM{5XQE`>)(swk<@>HW&?2Y_kI@nh2Tc+8 zWy?Nogg&r4e&x}qw76=YkhE4Nwp^mzK0WC-T`4f@6N8^y8hfG^E^K4Pab0Fujtf>X z;#)-yu>kNByc#XmBTDR0IzX^6Y`Se>wHS8Mt1(1SnI0i9yR)5|nvndP@v*2*Z%w+e zrI~*Gr@1bf=-sp1>sFvG>QWI{AZt)En`kOd$ioDi+%YU-_~mQm25POP&y2=WADzGu&9$rRO983 zA-mcoF~dHyta)L$?fCPpsjrfn>4C?Xe!uJx?aFm|BPM-IyzCa8E~JRp2E(hEKV-P~ zFQnF+PwL#?r((7UTNA}9_2o2tP`D9jNYT@jP2*Idi_}kT`ZaA^;3&Xy zw7yq?YfunP&?krH<>4PW???+S|8~3a$-RE=Q`+u-@ojYXO7h(A_TFz|sfm8Y_!aJh^1C1S^rsg`ZPTgY7 z?xVL(dbeEAm_Q@TXx+&IU1T^61f7WQ4lYJv#dNU921OIvU#t&^>f>=e`|0Y&>@Wz? z0n*GJMCgDDLK2Ft2ACH;EtyQ_7OCBG6N1^`)w9QhQQ7sndoAjyma<6go zE?$;>AJ~(&Ni$Rpr<`JDzLZnQDW@?M3lxivX`rhyQnMJYOH!SKm&~rtB9OKJF!hGY z{>Ia6?y;#r&t$gUxPaG5$vEBVsnO7XB;dkUcoq#$j&KxR0sr8AZV+bpQ=}PlvflEL=b3 z{!CzG>jeIf7W^Mn$s+VAJ=sE_6@-|2pln)|3WUZOf_zo^)mSLk%h6^m6|SP!aJYDp z09_}THXx>iMc_)(G#L)C6+Py*f#(f$N2TFJat^0%Ypu2c_9mm0mpnHE=Stv(J#Xa! z_*J7ytyC~RWs#RgRBL=*(hN<(M>q^A-5V@x4eeBNzM0nMzO&1-Zy}{Ie*AaKtjF!1 z9B*F;Uln+JYwg;eKfA%szd51?S4*!_b+B&0{Ba;S416eAyo?+IWSE^ZlE|6l&*Wq> z8d@uo6VY3Mz^vp=6?RyIXpALkBkmibH+1)S>4i!x=BX^p$rHy-O&X#3TOSuYA%r>g zFutCD%(yPo+xDl4!4VPhIMNlOVSFFr>J9-sQ70#@*HVt4(>c^~W-B0R(<-Za+Ia{6 zY&U`2&IK{Rn{iRXF^6;})H4s?ixR(7m5+U9a$XNHzlQsUfh#Yowm#rN&u){-uYEq| z5x7noqag-!XDMjy6TimUy*V3{egVE*F`5&6I!g4rB!H8abUH+MgrK}qD~s|uDX1Bn ztu`15Z!jR|a)g{mjM4Mh&%0RO_@RK8P~Bd|Up7Z($10$px%ao2L87_+H2Fuz;NTME zeD{yQl*ist{~dMnPoAQqpi?+V*>L4pV>454_519pv(b?O|BJcLUE)P+%E$qlP<1Z% ziiy>jXxAAoITXvYB4k5TyZ|xca3Md1wLSD<0+{4j*WBo|gL@~&iJ(eLYo?~eOwojT zqXmZ2yR#w^<0$ww=4K9^<|Z@MR@hE zfIlI4?;nCmkGx&A<}(|`#aK7~_$k`)#e}1!>8#)!k#EJCX4)w8Z-OK2WS59>cPRey z;ur26JdRrmhCo}#ZUGbIFH2sDCruxfd6hHU8IK|b`S{{oniDvJ5CkkOh)}jiD%3GC zg;UUrF%n+0b}(S0;A#V~!vMtmMF_=z$Uy2{7STL2i=@*dXu*RSFe5jlEZEVg#j5$< zp1-!}JNBJc&-I(2;jjvnpDK z!q7H8n-fU6c?cBb1hhSuY!T_0SajTB@sV5TX%qL>q)BM}#ZLwpBU{_u>{&+MX*i9g zRloaQKQ69na-XJfB={eOTzLI`3scl&wmpu&YTjxR-t0Pxst(q1H$E7UyHW+KMNLIZ zKVDu{Syq==CWvF(n8A5b+If0X8)t84dEMOV+>w5U$Y_dSI0Cu*yVnNiBa1fdW9LT) zQsKMw_4pXQ&H{c%TEqEd1UgO67V(@7-_1VQ-Fn}7cFFFb4G&2nsw5h~`ag0coks|a z@=CY-26Sl>w9n3VoZ^-2E!fr=5>+wFxG(is(&6n0RMu8(ztCf1rs!Ox@@Fs$i&9$< z>-Q+U63cJ6THBocYCN7aa)?kAhEp2i%{b~(;HzS;Vyl~8EGfDSme=)KV`kMY<_N}A zkl}CU1B}5xi{z>i5o3nmV1H_4QA*D#1>7}G^>l}zNp%xv~ z`B22Ti+3|e#4=KsXe&D3MZXqv+>ueWc->*i-(4_N8}GYieo|_i)7!}L2bY)pD>qA( z%bY9j=$~Ux6I-{>*0t5In$G#PbKn9W_Xsu%uQjO8|8Z6SWqj*;HB@dxM2&Fy#KR-U z?96`ml!cL>B#LMRd6sM(gdv|t?LO^#Nf=22k)v6*BAI#9DK)9gzr1;Y=UJMjNP*=z z3Ntkub7)D_5&5WG&MF-3d|jnf{tsk6AV9&^8vF7y$c0slL}!2?cxvhl0DwS;x0!e$ zMkgv@L#nGV&`3CfA(X9voSHhpUYG*dC51j8&Vifl6#z|n^l?{y*DEb=Ttt`a?gq-s#<)q03CWu6F8Wo1Xif zmL65@!M`;JN}z)ol%NdnHoKrMw`3KEa-;l0`aZZEj3+lMz1B%@dS9j`cTKNVx>c4^ z_l%CLQ_Yus&eSLHV=zwh)0Y^)Uv)BMH0j5_2A+qnK3*FreG?O}h(dNc1R*hTJC6V4 z7%pz=)6^;pcK=VuEX*b~u-E!k^<9$01N!tEjj-A4UjdN2fezPY>8P(gagh#LtH2b> zjh0hWmm)nBLvq>FHB|V98ue8d8e`pi%dL<(IujGL-yd_upvRta^1KEW+4+W%s?`wQ zSU6I99=Ly5cL-;J+C1$4IwS(;PoaH0I5}vQ;VsyqMJWBsv@KW$+=1kgWg?t;02PB@ zt=nX-*(?d;AW^hWe%W3Mtbr*o1wAki=Da>(h9q$Pa@TFn>2#v`SDAa!dy&}7Nr6pm zb4=x0yHFE@$rekZOVIuf?RP5nPzz9>-a>M08iE9>I@GtL*r= z8e=e(U2w>F7)T0U1)#;2on>Hds_VJ5&)KI6E4`bN)y~Lo&-2glP{Ryv?_ygoo8qHA z0%SYhTx(`^fjkWy8>dcH7}5L4Rya~gH`k@ti)JH-7Ly$lEkI_FGLl8|NFF4s!ChvR zCY-3(46WW{KgyXn>5NT7sHqz(-Qm|2`uB;VzNUB6=CMDf>_p|lLaBlRC>SJN3Y1qH z^xu9+E4Hcot1C0%&(nv2dR2~HBIlUEE=;mX}Etb zBSwR2>9R$_2IIm6>j$|ni6D6eF%GOxt|cY^kcGB!vzZ2=`@)2Cb`fGcxVE!%*?*zv z)4KNydggVFi|1i%b(8)bU=OT+d-eouczetL`0wrTf6(?V6>osOdiY*_MFiQ>niB$E&^BB!C;*$IVTJ)1a&q8io)AqOoe-mg=ee z%C{Xm1b`L}DfzpQNj^r{_Mq~c-g${YrpSTt1=BUDeCn|ac!)1t%%dq8a}&?$+#|z zA6A9~s|!c-^0nJH?RwI)1P^oN^5-JtXf*NPR28ngyt(CXHOW2_F6|z||YXem#`myx1t3mRuk30_u9SQQvONkOLx#7A>i%%%oy{=M%7e?+;EL zV}q;f9BtqB5SZ*G|CGqjIWFEtr4tr+Te|a+MlRWT(qActlJtmzgN*R90NpME*{W4( ztq$OAMYoo4#Ns4$V`DCZlswPjhpKZ|l83iZ6@6~rY_{(Ep^);ZY{p8~#Zi`<)Q;<& z=%HR`9G0;k^%y%4uCwIyiPAfQ4)!=VEyst#+#MP{^#Vwi&Y$Pa*vyJXJuk1D;y+i@;i!o{(DS4fV zQbp6G6DyNrTu~ZHdQ^WJb}_i*JTIk$?#W|q2;M5QUNLpYdmYJYR%?|mw^ER!v-9hL zkdket=usTvlHOgnJI96@1NGEUL5>M?V%zrcBPiEWY?zTNdMp&ow+gqmYJKcqw7`a- zHcB&Cp?z0PrLf5HdG0+xb_X%hCR`R9D!e_HHeZ`brt2wI{EOhI6q*>gO#nwlVk~gY zqs-XqhG|>+Lw`0}v~H?>>^hV(;++9Wn3gXZ(uOe{y%Di_|Hg&fydU(P?=^2XsT=_{?kf^yPcW3PQjyPn^$ljXqIkH9<^SjXe=$H6UKBeuX|^wW9A=jXgcRYJh%S zHTLx4ssUoQ?7bO1xi9@+nh(7wP=OO08U{x#-xT)`9~zJ$Wu!!{o7a)6U-kOeZMC(| zdmcGEA0p&ZL1tj!zKvbDj@)u89G=ZA8&#D=&f|v&IaIW@SakdvA^n;DSxcMFbzB+| zXG{^>tG>wj{}7W`otXi5n5kPGIk{{ZOS$rG^+wtXLOh4M?|cJ+tRbW{Q3ga~-*=_M|IL>B4-|ryIi9|Z#mzD-Triw%=Fapdl!zVk8yX7>o2AgfT84!I;lS zR!U1&0&prhauK5ySavs`QT?M?TlmPP)@;17sKE#FHx(PJiiT3ENB;i!Ef0M)vppg% z-@u^w_6|97aO6+;T9g}n zC*poU#YOw-v_i8I(OHA;-@*Ss*2|A!65{g5y7=f_-JJCHV*NA-Z|1hJ=HvA%aF>15x1z?P_w# zVL{{YlAu9uMoGye$uc#2ob>Q2W+D(Q+8tFS|NOXHPAR|8;ia6|9{JJ}e(g8<*_+RA zbJLRKWl)<~Fa2Gop6mYdb#JI(_kUg)Z@7-Y`EI2k_cuCXVDKGU4eSBTibTC$1-0;W z7(*nu2^Ulpg2wDvw8_cE+87_?dwpMvV-ZeIPy2Zk{I4c|y03+xw83t5&m*bcaHvm% z?CM%+?TDpaU-X>@JzI&~8@2LWcFqeu75Qhz)GW)WM;MNOy4m%NS8~>q zCtXZu^Tpx6)bi=?)v@YyA{Ge|h$f5!`^%6kT8J1(n$j*Zf$T$$4Sp+Cue`KJU8St; zy$gG<%)LFmdc3uo7)-Ud)lD_B?26qBtqbuWO(RgL$hXfO$>-hhW>(`$# zFf9tVOp!N+ippB8-tXt~%~lboI6)L4Me)(vD-#n{IhwozV98vmIDL)kZDe4F!Qg-- zNj``VVjSC@YVr0QuTWd_HOs|3zFfD7s;(7=;8d7nFvOpOV zG#-a+GifkyE*3}@*-&q%w1_VTXmT_^jnAQ@>iio9-yIN)IY!V#No%Vn$khx(z^q?; z7P1GjdmB(wx)HhdM_gxeWHAyrjKIo`n|!DDSfokxnKR?`I9#;TlfJ30El0mI;R#D6 zS}IT+R-mFa9*y(v*hR;|#d^rtv_>pkmLReTyDpX?SCA+n0+rKaM79(MtJ*JfP#KT1TBgB;-jTpfKh@>>A@6FeH(fhj z;Hy%)!YI87W?PR?GMH5CG0&t>Q^u=Ou_q&&A(pDlKke=LJS|~f5S9huQ}aNJ^@972 z16|u!fjv3p5UT6I_?DCX0)^mHKoeRA3=6_2&{Ft+fbMDlc9$@T$*4fhAn|cW`<0O( z^+wOUXkR4a@94(81l{)M(|Tvq)vQ$z=;A!(CJ#RFybtQU6Fcx2TzBnEX2me-!Y4U;*&hqzpzX$wdpb%7p zoN7~}B;Zy($8pYk!_DG*Mw*)tji}dJ;T8bjo`_HM31I?H8{qZG;CPwtPco0!O23)RU6|Frpg(mx0N5ZF< zqRK$B$}pq@zC{+z5HBrZg0V~Y7?p?(k!hv;lLv3^da_Kux>T;*`BQm_K(8+RrS_lv z75EJIJT*Od|75J*D$cG0K~pM&8+v2*GhBJRj#mUpeO-2 zMUj&f_sOylRp}%xy!SP}WlEKeCZ@J*6|6uonz{F@#=NMIO#N$TS*Ekrwro_i-{xi% z8vO95zrSZkm+L9A4>l>^@Bj0G24Th1SdGG!FTc3Jz+10LL6z|@` zaF|o?eh2y|W8BzDV*r&GN+#!bR70CN&KSJ8EmENN$(^qMlceVAoX*I{q7#;8*EUXT zbT8ySd?<15Ds;=zp)Dd0z ziztoZqhG`G9S{KO!COMfFBkRFxhynSbC+sC_5$xd>-v3Wb(_G1`thBI*gx*09~7Yz8Ja|Tc* z`CYu3$0V*;>PhBo?5k^_oSLWN%3IInb-$iSnQ%pX99leH@`=arOGs;5m}$WELhI%bmk$j`->67EZi>i2*SN6@18%{%L&?%!UOhX6Y`p%&sHz8Z-wY-w%Y(T8fm z>J1P<&@jnK;w@W=Ra!dRJ;3_3pjua{P#OeVsvGko>a+^^+!`?vvTW1NhhB(&79FKD zR2Yy`iZ}QAzQ!q86shsiS#sp$$*1im?{Z@K3Q&a>ApciC`-JhMrT;UqZ3K%EMu2}n zVft%uS!|wLIWj}9L#NJ(qr>o%enjNBC=K48UN-xZV)n!E0rGa@`&*^~OENGUti_ib z5F)P(khjhjzk-8^Vf(`R_6u!){olxbZ09Bk0sMI&#~;uYAGYTIfQGZ8+sTIN(df(J zO@2|Ef;)d_nBZbxozGuG8TZ5fNL(z#gJ=OjzUpX)-qM#VhQ-=( zfIeNFyFb##=)ftx9$IH`>%y(6-d9Z%!Tk(T$Ahz4<(I>0FJH%PSn(&5JM$zR52DtA zQh$)7>ZsAk>$B2_KAYeWq2=h&Z6+6xn896ljb@ULT}6Gr{qdSaWdC&2N<`EP5#`CGS0~_U@poa0MFQ{;3!7Hn{hCI z1J(tUEG{_ORbjnd*YEy?tLtQb%R~l2Mn|N$Q*$Z9A#YH2LQ{bSnxyGQvY7-61HPJ0 z#J$zF5-*rhy(oXu=6M2m*+ZXCd>9ax@5{%-I$%_vIww=01xH)m9`3f)En1dv-fuf{ zX$OfhtgMf^ijwT8s-2008g7yaQ(>Ak6j3^1URf7>_QAG4%NeR zi!u`qW?K;u6)_O^7edWaljce^ZVvAc)-B2eIhbvQpy*&kqH3z@np*)pEqie^d`g;` zL(6HrT9XMC>qG57{;Pjo6zLUn@GQeG;841pRS<_u(jY1jyJ zvg`y2j)4TqMf}8R)%NoZm>B7T5MeEfLNm`v-CLFT!baP&m9PjUp`FUh(o+^k4Tp_T z`E5m;ZaYi#n{PP#Zl2&2)}x`@nL^sQH71I=4#NU56kiEdJE@L&s3Z|*spLE!VNgqD zJYX9L5sH=Uvcxo||kWE2`YO>!nbf3|Hat!-?`_eK{$p zF1A&DCloTCS5f`mdS&KIzwq_yxW%U(tvi|S-ak4!+iYyRD}JmJhM?5A`D!ZXghlNQ2Fe#)vao15$7l# z0rP}oH``i6lhcdx(F`-J&X?s$1Af-G0+S$4@8=mO>p8lOwg-C!!INKQBHUD@uwRz-bHXlM z&fJVzs*4O{^#2F8o#;oZ5_-u$3Ei5z3Qo2kvQ03 zQ%jN^WvZU4H;IE%HuWgkF^<;{vIT4ioHQ{kF%}M8R6+OK%Ns=9;u(y9Kh7uz6}^&e zXe-q;i?&f>xgL}kDp}=)l2BUNuDNeVsETEJqmx2iG*i;f&h^;LsLJ~iy==jkxyq*F zq#$!n5ZMj*Ha=m5J!r~rAFDrYD(`5qZLM#p#Pj2gnzm%QE&lII&qOb)inSHI%32}K zl7Sr0DN%S(GIAcWYsGR+th;+1h4+jI0h8t!vk6kuOqwZ;nWz-YRW+(bjAR>frPyiJ zdWNHr3vf6nbp3>^DP}+cQiq18q&R&7D!6n4M*5w zv_1amVyO^cl>KTslb}IBnL}b@5%4Ai^#=t><80MDnEqCWFTekI2LCJ}70f1ynH8xc zV?wnXalH~yJZ0>Gn+0<=0qkqt5VBY<J4t8`pfloJ|Oxx*dvon-W z*2>B!FYRZWCJoyJ{W)QH+H?aSBd^DDC*q6Xa#iggzyrDl5Fvswd+yOlpd}aFeTJd) zj|=PVoUKA3UswYGcW_#>g}zccVkWiL^RHKzwYSOzxD$;=SFdIP_FXXa$d`;T^;n1Q ze#m)bGG0gAm@3_^x}x660;=Rq)T^KV!yLo>o)R;7lFLF4y&m0k_IC~Yyr}vd%oS=h zC0S8kqlHCvMw^)EO>_X@_Eqb736HFoDQ*={iJV$4%-|b?mgi>FrGF@`6#}QbdUKpI zj`=E`G`E-mb9oxJZRv`9Bqcr9CCT=+*lVvEZ|gU0`F%e4><;u@kYG&6=Pu;=J7=R8q{Ov5C5Kw#Zm+BF=kvwwIJAYWg` zVjQAS`}EFY<|Tp4jVPl-@HwnIR)S<9(Y`y640IPlw3?A3yn%UE+UUuv!O@6phKvIe zR+pe&1<3~4mbt{3D77im#g%MjQBE&Hc(=#TMab{zwvX%FUo|PZ>KnasMIVCZU~Xtq zZ>0R}?&`pKd*ACEdjvi6fC35*lV;Vy{|G~4<)ZAK71x>#pfe_m5ArCzfKA z+~R?Gm}Pv$NjiENm`jV&ClITlpzlzpLo}jltQ^E8XfZ^~NmeQ*ZFN&cP)sGrxNaCx z&MOSgW+s zYqw8zK8Kxy2^w2Lyd?3v+#D>b1;_+1TFT5M6O#W4x}({^zS?S)lPe<)96Z@=tjOiB z7~kWjE2G$9Gr6mI@i4A44~`t6`TT)EKai6TxHGUcJoZ|nS%R?5<|XG#ZUzJ?5k!R5 zEDu{P#5YSiH-A#GFI^L>XwQSYjstr=QU z^P;5`{d=+S9GAqsK8?mO9Hp)+sTaF!obss@m&z@-jj)NW;n&DOv@{@gQ}{V z>!@G6v1jz!!`1W2G3=CZJSlwkjh|^Y12&**jAka4nHTir;Q1ZDhP@tLfaOKRs14P- zv82!{-ho2Dw4Du=P1S8p?Pu zbcqBNU-N=U7e5)D3El^q-lcO$3h@RsF7O!{~HimJans(<9(u0!vfbb%>KsNTH`!@S)Ia*q967CR|-f� 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 z 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%0DF6I5* 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 d of r)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&l(h)}).observe(document,{childList:!0,subtree:!0});function t(r){const d={};return r.integrity&&(d.integrity=r.integrity),r.referrerPolicy&&(d.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?d.credentials="include":r.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function l(r){if(r.ep)return;r.ep=!0;const d=t(r);fetch(r.href,d)}})();function Um(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var af={exports:{}},il={},of={exports:{}},gt={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Vp;function Lh(){if(Vp)return gt;Vp=1;var a=Symbol.for("react.element"),i=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),h=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),E=Symbol.iterator;function N(L){return L===null||typeof L!="object"?null:(L=E&&L[E]||L["@@iterator"],typeof L=="function"?L:null)}var I={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},M=Object.assign,D={};function B(L,X,K){this.props=L,this.context=X,this.refs=D,this.updater=K||I}B.prototype.isReactComponent={},B.prototype.setState=function(L,X){if(typeof L!="object"&&typeof L!="function"&&L!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,L,X,"setState")},B.prototype.forceUpdate=function(L){this.updater.enqueueForceUpdate(this,L,"forceUpdate")};function _(){}_.prototype=B.prototype;function $(L,X,K){this.props=L,this.context=X,this.refs=D,this.updater=K||I}var W=$.prototype=new _;W.constructor=$,M(W,B.prototype),W.isPureReactComponent=!0;var he=Array.isArray,Se=Object.prototype.hasOwnProperty,Oe={current:null},ye={key:!0,ref:!0,__self:!0,__source:!0};function De(L,X,K){var J,ie={},ve=null,Ne=null;if(X!=null)for(J in X.ref!==void 0&&(Ne=X.ref),X.key!==void 0&&(ve=""+X.key),X)Se.call(X,J)&&!ye.hasOwnProperty(J)&&(ie[J]=X[J]);var qe=arguments.length-2;if(qe===1)ie.children=K;else if(1>>1,X=te[L];if(0>>1;Lr(ie,we))ver(Ne,ie)?(te[L]=Ne,te[ve]=we,L=ve):(te[L]=ie,te[J]=we,L=J);else if(ver(Ne,we))te[L]=Ne,te[ve]=we,L=ve;else break e}}return de}function r(te,de){var we=te.sortIndex-de.sortIndex;return we!==0?we:te.id-de.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;a.unstable_now=function(){return d.now()}}else{var h=Date,v=h.now();a.unstable_now=function(){return h.now()-v}}var g=[],y=[],k=1,E=null,N=3,I=!1,M=!1,D=!1,B=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,$=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function W(te){for(var de=t(y);de!==null;){if(de.callback===null)l(y);else if(de.startTime<=te)l(y),de.sortIndex=de.expirationTime,i(g,de);else break;de=t(y)}}function he(te){if(D=!1,W(te),!M)if(t(g)!==null)M=!0,Ye(Se);else{var de=t(y);de!==null&&Ve(he,de.startTime-te)}}function Se(te,de){M=!1,D&&(D=!1,_(De),De=-1),I=!0;var we=N;try{for(W(de),E=t(g);E!==null&&(!(E.expirationTime>de)||te&&!oe());){var L=E.callback;if(typeof L=="function"){E.callback=null,N=E.priorityLevel;var X=L(E.expirationTime<=de);de=a.unstable_now(),typeof X=="function"?E.callback=X:E===t(g)&&l(g),W(de)}else l(g);E=t(g)}if(E!==null)var K=!0;else{var J=t(y);J!==null&&Ve(he,J.startTime-de),K=!1}return K}finally{E=null,N=we,I=!1}}var Oe=!1,ye=null,De=-1,z=5,U=-1;function oe(){return!(a.unstable_now()-Ute||125L?(te.sortIndex=we,i(y,te),t(g)===null&&te===t(y)&&(D?(_(De),De=-1):D=!0,Ve(he,we-L))):(te.sortIndex=X,i(g,te),M||I||(M=!0,Ye(Se))),te},a.unstable_shouldYield=oe,a.unstable_wrapCallback=function(te){var de=N;return function(){var we=N;N=de;try{return te.apply(this,arguments)}finally{N=we}}}}(sf)),sf}var Gp;function $h(){return Gp||(Gp=1,uf.exports=_h()),uf.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Qp;function Bh(){if(Qp)return Pr;Qp=1;var a=Wf(),i=$h();function t(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,y=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k={},E={};function N(e){return g.call(E,e)?!0:g.call(k,e)?!1:y.test(e)?E[e]=!0:(k[e]=!0,!1)}function I(e,n,o,u){if(o!==null&&o.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return u?!1:o!==null?!o.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function M(e,n,o,u){if(n===null||typeof n>"u"||I(e,n,o,u))return!0;if(u)return!1;if(o!==null)switch(o.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function D(e,n,o,u,s,f,w){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=u,this.attributeNamespace=s,this.mustUseProperty=o,this.propertyName=e,this.type=n,this.sanitizeURL=f,this.removeEmptyString=w}var B={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){B[e]=new D(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];B[n]=new D(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){B[e]=new D(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){B[e]=new D(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){B[e]=new D(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){B[e]=new D(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){B[e]=new D(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){B[e]=new D(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){B[e]=new D(e,5,!1,e.toLowerCase(),null,!1,!1)});var _=/[\-:]([a-z])/g;function $(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(_,$);B[n]=new D(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(_,$);B[n]=new D(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(_,$);B[n]=new D(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){B[e]=new D(e,1,!1,e.toLowerCase(),null,!1,!1)}),B.xlinkHref=new D("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){B[e]=new D(e,1,!1,e.toLowerCase(),null,!0,!0)});function W(e,n,o,u){var s=B.hasOwnProperty(n)?B[n]:null;(s!==null?s.type!==0:u||!(2O||s[w]!==f[O]){var T=` -`+s[w].replace(" at new "," at ");return e.displayName&&T.includes("")&&(T=T.replace("",e.displayName)),T}while(1<=w&&0<=O);break}}}finally{K=!1,Error.prepareStackTrace=o}return(e=e?e.displayName||e.name:"")?X(e):""}function ie(e){switch(e.tag){case 5:return X(e.type);case 16:return X("Lazy");case 13:return X("Suspense");case 19:return X("SuspenseList");case 0:case 2:case 15:return e=J(e.type,!1),e;case 11:return e=J(e.type.render,!1),e;case 1:return e=J(e.type,!0),e;default:return""}}function ve(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ye:return"Fragment";case Oe:return"Portal";case z:return"Profiler";case De:return"StrictMode";case q:return"Suspense";case Ie:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case oe:return(e.displayName||"Context")+".Consumer";case U:return(e._context.displayName||"Context")+".Provider";case _e:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case se:return n=e.displayName||null,n!==null?n:ve(e.type)||"Memo";case Ye:n=e._payload,e=e._init;try{return ve(e(n))}catch{}}return null}function Ne(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ve(n);case 8:return n===De?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function qe(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function dt(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Ue(e){var n=dt(e)?"checked":"value",o=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),u=""+e[n];if(!e.hasOwnProperty(n)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var s=o.get,f=o.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return s.call(this)},set:function(w){u=""+w,f.call(this,w)}}),Object.defineProperty(e,n,{enumerable:o.enumerable}),{getValue:function(){return u},setValue:function(w){u=""+w},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Bt(e){e._valueTracker||(e._valueTracker=Ue(e))}function Yt(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var o=n.getValue(),u="";return e&&(u=dt(e)?e.checked?"true":"false":e.value),e=u,e!==o?(n.setValue(e),!0):!1}function Pt(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function yt(e,n){var o=n.checked;return we({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:o??e._wrapperState.initialChecked})}function zt(e,n){var o=n.defaultValue==null?"":n.defaultValue,u=n.checked!=null?n.checked:n.defaultChecked;o=qe(n.value!=null?n.value:o),e._wrapperState={initialChecked:u,initialValue:o,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function dr(e,n){n=n.checked,n!=null&&W(e,"checked",n,!1)}function rn(e,n){dr(e,n);var o=qe(n.value),u=n.type;if(o!=null)u==="number"?(o===0&&e.value===""||e.value!=o)&&(e.value=""+o):e.value!==""+o&&(e.value=""+o);else if(u==="submit"||u==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?dn(e,n.type,o):n.hasOwnProperty("defaultValue")&&dn(e,n.type,qe(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Dt(e,n,o){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var u=n.type;if(!(u!=="submit"&&u!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,o||n===e.value||(e.value=n),e.defaultValue=n}o=e.name,o!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,o!==""&&(e.name=o)}function dn(e,n,o){(n!=="number"||Pt(e.ownerDocument)!==e)&&(o==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+o&&(e.defaultValue=""+o))}var In=Array.isArray;function Ht(e,n,o,u){if(e=e.options,n){n={};for(var s=0;s"+n.valueOf().toString()+"",n=Tn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function bn(e,n){if(n){var o=e.firstChild;if(o&&o===e.lastChild&&o.nodeType===3){o.nodeValue=n;return}}e.textContent=n}var Gt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qn=["Webkit","ms","Moz","O"];Object.keys(Gt).forEach(function(e){qn.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Gt[n]=Gt[e]})});function mn(e,n,o){return n==null||typeof n=="boolean"||n===""?"":o||typeof n!="number"||n===0||Gt.hasOwnProperty(e)&&Gt[e]?(""+n).trim():n+"px"}function zn(e,n){e=e.style;for(var o in n)if(n.hasOwnProperty(o)){var u=o.indexOf("--")===0,s=mn(o,n[o],u);o==="float"&&(o="cssFloat"),u?e.setProperty(o,s):e[o]=s}}var Jn=we({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vr(e,n){if(n){if(Jn[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(t(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(t(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(t(61))}if(n.style!=null&&typeof n.style!="object")throw Error(t(62))}}function er(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var jn=null;function Ke(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ne=null,Me=null,at=null;function lt(e){if(e=Uo(e)){if(typeof ne!="function")throw Error(t(280));var n=e.stateNode;n&&(n=ru(n),ne(e.stateNode,e.type,n))}}function Je(e){Me?at?at.push(e):at=[e]:Me=e}function ft(){if(Me){var e=Me,n=at;if(at=Me=null,lt(e),n)for(e=0;e>>=0,e===0?32:31-(it(e)/Vt|0)|0}var ht=64,Nt=4194304;function ct(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Xe(e,n){var o=e.pendingLanes;if(o===0)return 0;var u=0,s=e.suspendedLanes,f=e.pingedLanes,w=o&268435455;if(w!==0){var O=w&~s;O!==0?u=ct(O):(f&=w,f!==0&&(u=ct(f)))}else w=o&~s,w!==0?u=ct(w):f!==0&&(u=ct(f));if(u===0)return 0;if(n!==0&&n!==u&&!(n&s)&&(s=u&-u,f=n&-n,s>=f||s===16&&(f&4194240)!==0))return n;if(u&4&&(u|=o&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=u;0o;o++)n.push(e);return n}function qt(e,n,o){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Fe(n),e[n]=o}function Qt(e,n){var o=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var u=e.eventTimes;for(e=e.expirationTimes;0=bi),_o=" ",Wa=!1;function Ya(e,n){switch(e){case"keyup":return Fs.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Yl(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ga=!1;function _s(e,n){switch(e){case"compositionend":return Yl(n);case"keypress":return n.which!==32?null:(Wa=!0,_o);case"textInput":return e=n.data,e===_o&&Wa?null:e;default:return null}}function $s(e,n){if(Ga)return e==="compositionend"||!Sa&&Ya(e,n)?(e=jo(),Ha=Ki=Kn=null,Ga=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:o,offset:n-e};e=u}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=c(o)}}function x(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?x(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function b(){for(var e=window,n=Pt();n instanceof e.HTMLIFrameElement;){try{var o=typeof n.contentWindow.location.href=="string"}catch{o=!1}if(o)e=n.contentWindow;else break;n=Pt(e.document)}return n}function F(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function V(e){var n=b(),o=e.focusedElem,u=e.selectionRange;if(n!==o&&o&&o.ownerDocument&&x(o.ownerDocument.documentElement,o)){if(u!==null&&F(o)){if(n=u.start,e=u.end,e===void 0&&(e=n),"selectionStart"in o)o.selectionStart=n,o.selectionEnd=Math.min(e,o.value.length);else if(e=(n=o.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var s=o.textContent.length,f=Math.min(u.start,s);u=u.end===void 0?f:Math.min(u.end,s),!e.extend&&f>u&&(s=u,u=f,f=s),s=p(o,f);var w=p(o,u);s&&w&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==w.node||e.focusOffset!==w.offset)&&(n=n.createRange(),n.setStart(s.node,s.offset),e.removeAllRanges(),f>u?(e.addRange(n),e.extend(w.node,w.offset)):(n.setEnd(w.node,w.offset),e.addRange(n)))}}for(n=[],e=o;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o=document.documentMode,ae=null,Le=null,rt=null,ut=!1;function Te(e,n,o){var u=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;ut||ae==null||ae!==Pt(u)||(u=ae,"selectionStart"in u&&F(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),rt&&R(rt,u)||(rt=u,u=eu(Le,"onSelect"),0Ji||(e.current=tc[Ji],tc[Ji]=null,Ji--)}function $t(e,n){Ji++,tc[Ji]=e.current,e.current=n}var Za={},or=Xa(Za),br=Xa(!1),Oi=Za;function eo(e,n){var o=e.type.contextTypes;if(!o)return Za;var u=e.stateNode;if(u&&u.__reactInternalMemoizedUnmaskedChildContext===n)return u.__reactInternalMemoizedMaskedChildContext;var s={},f;for(f in o)s[f]=n[f];return u&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=s),s}function Sr(e){return e=e.childContextTypes,e!=null}function au(){Wt(br),Wt(or)}function fd(e,n,o){if(or.current!==Za)throw Error(t(168));$t(or,n),$t(br,o)}function dd(e,n,o){var u=e.stateNode;if(n=n.childContextTypes,typeof u.getChildContext!="function")return o;u=u.getChildContext();for(var s in u)if(!(s in n))throw Error(t(108,Ne(e)||"Unknown",s));return we({},o,u)}function iu(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Za,Oi=or.current,$t(or,e),$t(br,br.current),!0}function pd(e,n,o){var u=e.stateNode;if(!u)throw Error(t(169));o?(e=dd(e,n,Oi),u.__reactInternalMemoizedMergedChildContext=e,Wt(br),Wt(or),$t(or,e)):Wt(br),$t(br,o)}var Pa=null,ou=!1,nc=!1;function md(e){Pa===null?Pa=[e]:Pa.push(e)}function th(e){ou=!0,md(e)}function qa(){if(!nc&&Pa!==null){nc=!0;var e=0,n=vt;try{var o=Pa;for(vt=1;e>=w,s-=w,Oa=1<<32-Fe(n)+s|o<st?(An=nt,nt=null):An=nt.sibling;var kt=me(H,nt,Y[st],Ce);if(kt===null){nt===null&&(nt=An);break}e&&nt&&kt.alternate===null&&n(H,nt),j=f(kt,j,st),tt===null?He=kt:tt.sibling=kt,tt=kt,nt=An}if(st===Y.length)return o(H,nt),Xt&&Ni(H,st),He;if(nt===null){for(;stst?(An=nt,nt=null):An=nt.sibling;var li=me(H,nt,kt.value,Ce);if(li===null){nt===null&&(nt=An);break}e&&nt&&li.alternate===null&&n(H,nt),j=f(li,j,st),tt===null?He=li:tt.sibling=li,tt=li,nt=An}if(kt.done)return o(H,nt),Xt&&Ni(H,st),He;if(nt===null){for(;!kt.done;st++,kt=Y.next())kt=be(H,kt.value,Ce),kt!==null&&(j=f(kt,j,st),tt===null?He=kt:tt.sibling=kt,tt=kt);return Xt&&Ni(H,st),He}for(nt=u(H,nt);!kt.done;st++,kt=Y.next())kt=Re(nt,H,st,kt.value,Ce),kt!==null&&(e&&kt.alternate!==null&&nt.delete(kt.key===null?st:kt.key),j=f(kt,j,st),tt===null?He=kt:tt.sibling=kt,tt=kt);return e&&nt.forEach(function(Rh){return n(H,Rh)}),Xt&&Ni(H,st),He}function fn(H,j,Y,Ce){if(typeof Y=="object"&&Y!==null&&Y.type===ye&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case Se:e:{for(var He=Y.key,tt=j;tt!==null;){if(tt.key===He){if(He=Y.type,He===ye){if(tt.tag===7){o(H,tt.sibling),j=s(tt,Y.props.children),j.return=H,H=j;break e}}else if(tt.elementType===He||typeof He=="object"&&He!==null&&He.$$typeof===Ye&&xd(He)===tt.type){o(H,tt.sibling),j=s(tt,Y.props),j.ref=Ko(H,tt,Y),j.return=H,H=j;break e}o(H,tt);break}else n(H,tt);tt=tt.sibling}Y.type===ye?(j=Ai(Y.props.children,H.mode,Ce,Y.key),j.return=H,H=j):(Ce=Ru(Y.type,Y.key,Y.props,null,H.mode,Ce),Ce.ref=Ko(H,j,Y),Ce.return=H,H=Ce)}return w(H);case Oe:e:{for(tt=Y.key;j!==null;){if(j.key===tt)if(j.tag===4&&j.stateNode.containerInfo===Y.containerInfo&&j.stateNode.implementation===Y.implementation){o(H,j.sibling),j=s(j,Y.children||[]),j.return=H,H=j;break e}else{o(H,j);break}else n(H,j);j=j.sibling}j=Jc(Y,H.mode,Ce),j.return=H,H=j}return w(H);case Ye:return tt=Y._init,fn(H,j,tt(Y._payload),Ce)}if(In(Y))return $e(H,j,Y,Ce);if(de(Y))return ze(H,j,Y,Ce);cu(H,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,j!==null&&j.tag===6?(o(H,j.sibling),j=s(j,Y),j.return=H,H=j):(o(H,j),j=qc(Y,H.mode,Ce),j.return=H,H=j),w(H)):o(H,j)}return fn}var ao=bd(!0),Sd=bd(!1),fu=Xa(null),du=null,io=null,uc=null;function sc(){uc=io=du=null}function cc(e){var n=fu.current;Wt(fu),e._currentValue=n}function fc(e,n,o){for(;e!==null;){var u=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,u!==null&&(u.childLanes|=n)):u!==null&&(u.childLanes&n)!==n&&(u.childLanes|=n),e===o)break;e=e.return}}function oo(e,n){du=e,uc=io=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&n&&(Er=!0),e.firstContext=null)}function Vr(e){var n=e._currentValue;if(uc!==e)if(e={context:e,memoizedValue:n,next:null},io===null){if(du===null)throw Error(t(308));io=e,du.dependencies={lanes:0,firstContext:e}}else io=io.next=e;return n}var Ii=null;function dc(e){Ii===null?Ii=[e]:Ii.push(e)}function Ed(e,n,o,u){var s=n.interleaved;return s===null?(o.next=o,dc(n)):(o.next=s.next,s.next=o),n.interleaved=o,Na(e,u)}function Na(e,n){e.lanes|=n;var o=e.alternate;for(o!==null&&(o.lanes|=n),o=e,e=e.return;e!==null;)e.childLanes|=n,o=e.alternate,o!==null&&(o.childLanes|=n),o=e,e=e.return;return o.tag===3?o.stateNode:null}var Ja=!1;function pc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Cd(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ia(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function ei(e,n,o){var u=e.updateQueue;if(u===null)return null;if(u=u.shared,Et&2){var s=u.pending;return s===null?n.next=n:(n.next=s.next,s.next=n),u.pending=n,Na(e,o)}return s=u.interleaved,s===null?(n.next=n,dc(u)):(n.next=s.next,s.next=n),u.interleaved=n,Na(e,o)}function pu(e,n,o){if(n=n.updateQueue,n!==null&&(n=n.shared,(o&4194240)!==0)){var u=n.lanes;u&=e.pendingLanes,o|=u,n.lanes=o,ar(e,o)}}function kd(e,n){var o=e.updateQueue,u=e.alternate;if(u!==null&&(u=u.updateQueue,o===u)){var s=null,f=null;if(o=o.firstBaseUpdate,o!==null){do{var w={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};f===null?s=f=w:f=f.next=w,o=o.next}while(o!==null);f===null?s=f=n:f=f.next=n}else s=f=n;o={baseState:u.baseState,firstBaseUpdate:s,lastBaseUpdate:f,shared:u.shared,effects:u.effects},e.updateQueue=o;return}e=o.lastBaseUpdate,e===null?o.firstBaseUpdate=n:e.next=n,o.lastBaseUpdate=n}function mu(e,n,o,u){var s=e.updateQueue;Ja=!1;var f=s.firstBaseUpdate,w=s.lastBaseUpdate,O=s.shared.pending;if(O!==null){s.shared.pending=null;var T=O,Q=T.next;T.next=null,w===null?f=Q:w.next=Q,w=T;var ge=e.alternate;ge!==null&&(ge=ge.updateQueue,O=ge.lastBaseUpdate,O!==w&&(O===null?ge.firstBaseUpdate=Q:O.next=Q,ge.lastBaseUpdate=T))}if(f!==null){var be=s.baseState;w=0,ge=Q=T=null,O=f;do{var me=O.lane,Re=O.eventTime;if((u&me)===me){ge!==null&&(ge=ge.next={eventTime:Re,lane:0,tag:O.tag,payload:O.payload,callback:O.callback,next:null});e:{var $e=e,ze=O;switch(me=n,Re=o,ze.tag){case 1:if($e=ze.payload,typeof $e=="function"){be=$e.call(Re,be,me);break e}be=$e;break e;case 3:$e.flags=$e.flags&-65537|128;case 0:if($e=ze.payload,me=typeof $e=="function"?$e.call(Re,be,me):$e,me==null)break e;be=we({},be,me);break e;case 2:Ja=!0}}O.callback!==null&&O.lane!==0&&(e.flags|=64,me=s.effects,me===null?s.effects=[O]:me.push(O))}else Re={eventTime:Re,lane:me,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ge===null?(Q=ge=Re,T=be):ge=ge.next=Re,w|=me;if(O=O.next,O===null){if(O=s.shared.pending,O===null)break;me=O,O=me.next,me.next=null,s.lastBaseUpdate=me,s.shared.pending=null}}while(!0);if(ge===null&&(T=be),s.baseState=T,s.firstBaseUpdate=Q,s.lastBaseUpdate=ge,n=s.shared.interleaved,n!==null){s=n;do w|=s.lane,s=s.next;while(s!==n)}else f===null&&(s.shared.lanes=0);ji|=w,e.lanes=w,e.memoizedState=be}}function Pd(e,n,o){if(e=n.effects,n.effects=null,e!==null)for(n=0;no?o:4,e(!0);var u=yc.transition;yc.transition={};try{e(!1),n()}finally{vt=o,yc.transition=u}}function Kd(){return Ur().memoizedState}function ih(e,n,o){var u=ai(e);if(o={lane:u,action:o,hasEagerState:!1,eagerState:null,next:null},Wd(e))Yd(n,o);else if(o=Ed(e,n,o,u),o!==null){var s=yr();ta(o,e,u,s),Gd(o,n,u)}}function oh(e,n,o){var u=ai(e),s={lane:u,action:o,hasEagerState:!1,eagerState:null,next:null};if(Wd(e))Yd(n,s);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=n.lastRenderedReducer,f!==null))try{var w=n.lastRenderedState,O=f(w,o);if(s.hasEagerState=!0,s.eagerState=O,Ir(O,w)){var T=n.interleaved;T===null?(s.next=s,dc(n)):(s.next=T.next,T.next=s),n.interleaved=s;return}}catch{}finally{}o=Ed(e,n,s,u),o!==null&&(s=yr(),ta(o,e,u,s),Gd(o,n,u))}}function Wd(e){var n=e.alternate;return e===en||n!==null&&n===en}function Yd(e,n){Qo=gu=!0;var o=e.pending;o===null?n.next=n:(n.next=o.next,o.next=n),e.pending=n}function Gd(e,n,o){if(o&4194240){var u=n.lanes;u&=e.pendingLanes,o|=u,n.lanes=o,ar(e,o)}}var xu={readContext:Vr,useCallback:lr,useContext:lr,useEffect:lr,useImperativeHandle:lr,useInsertionEffect:lr,useLayoutEffect:lr,useMemo:lr,useReducer:lr,useRef:lr,useState:lr,useDebugValue:lr,useDeferredValue:lr,useTransition:lr,useMutableSource:lr,useSyncExternalStore:lr,useId:lr,unstable_isNewReconciler:!1},lh={readContext:Vr,useCallback:function(e,n){return ma().memoizedState=[e,n===void 0?null:n],e},useContext:Vr,useEffect:Ad,useImperativeHandle:function(e,n,o){return o=o!=null?o.concat([e]):null,yu(4194308,4,Bd.bind(null,n,e),o)},useLayoutEffect:function(e,n){return yu(4194308,4,e,n)},useInsertionEffect:function(e,n){return yu(4,2,e,n)},useMemo:function(e,n){var o=ma();return n=n===void 0?null:n,e=e(),o.memoizedState=[e,n],e},useReducer:function(e,n,o){var u=ma();return n=o!==void 0?o(n):n,u.memoizedState=u.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},u.queue=e,e=e.dispatch=ih.bind(null,en,e),[u.memoizedState,e]},useRef:function(e){var n=ma();return e={current:e},n.memoizedState=e},useState:Ld,useDebugValue:kc,useDeferredValue:function(e){return ma().memoizedState=e},useTransition:function(){var e=Ld(!1),n=e[0];return e=ah.bind(null,e[1]),ma().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,o){var u=en,s=ma();if(Xt){if(o===void 0)throw Error(t(407));o=o()}else{if(o=n(),Fn===null)throw Error(t(349));Mi&30||Id(u,n,o)}s.memoizedState=o;var f={value:o,getSnapshot:n};return s.queue=f,Ad(Md.bind(null,u,f,e),[e]),u.flags|=2048,qo(9,Td.bind(null,u,f,o,n),void 0,null),o},useId:function(){var e=ma(),n=Fn.identifierPrefix;if(Xt){var o=Da,u=Oa;o=(u&~(1<<32-Fe(u)-1)).toString(32)+o,n=":"+n+"R"+o,o=Xo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof u.is=="string"?e=w.createElement(o,{is:u.is}):(e=w.createElement(o),o==="select"&&(w=e,u.multiple?w.multiple=!0:u.size&&(w.size=u.size))):e=w.createElementNS(e,o),e[da]=n,e[Vo]=u,mp(e,n,!1,!1),n.stateNode=e;e:{switch(w=er(o,u),o){case"dialog":bt("cancel",e),bt("close",e),s=u;break;case"iframe":case"object":case"embed":bt("load",e),s=u;break;case"video":case"audio":for(s=0;sfo&&(n.flags|=128,u=!0,Jo(f,!1),n.lanes=4194304)}else{if(!u)if(e=vu(w),e!==null){if(n.flags|=128,u=!0,o=e.updateQueue,o!==null&&(n.updateQueue=o,n.flags|=4),Jo(f,!0),f.tail===null&&f.tailMode==="hidden"&&!w.alternate&&!Xt)return ur(n),null}else 2*Pe()-f.renderingStartTime>fo&&o!==1073741824&&(n.flags|=128,u=!0,Jo(f,!1),n.lanes=4194304);f.isBackwards?(w.sibling=n.child,n.child=w):(o=f.last,o!==null?o.sibling=w:n.child=w,f.last=w)}return f.tail!==null?(n=f.tail,f.rendering=n,f.tail=n.sibling,f.renderingStartTime=Pe(),n.sibling=null,o=Jt.current,$t(Jt,u?o&1|2:o&1),n):(ur(n),null);case 22:case 23:return Qc(),u=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==u&&(n.flags|=8192),u&&n.mode&1?Rr&1073741824&&(ur(n),n.subtreeFlags&6&&(n.flags|=8192)):ur(n),null;case 24:return null;case 25:return null}throw Error(t(156,n.tag))}function vh(e,n){switch(ac(n),n.tag){case 1:return Sr(n.type)&&au(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return lo(),Wt(br),Wt(or),gc(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return vc(n),null;case 13:if(Wt(Jt),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(t(340));ro()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Wt(Jt),null;case 4:return lo(),null;case 10:return cc(n.type._context),null;case 22:case 23:return Qc(),null;case 24:return null;default:return null}}var Cu=!1,sr=!1,hh=typeof WeakSet=="function"?WeakSet:Set,Ae=null;function so(e,n){var o=e.ref;if(o!==null)if(typeof o=="function")try{o(null)}catch(u){on(e,n,u)}else o.current=null}function Ac(e,n,o){try{o()}catch(u){on(e,n,u)}}var gp=!1;function gh(e,n){if(Qs=hi,e=b(),F(e)){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else e:{o=(o=e.ownerDocument)&&o.defaultView||window;var u=o.getSelection&&o.getSelection();if(u&&u.rangeCount!==0){o=u.anchorNode;var s=u.anchorOffset,f=u.focusNode;u=u.focusOffset;try{o.nodeType,f.nodeType}catch{o=null;break e}var w=0,O=-1,T=-1,Q=0,ge=0,be=e,me=null;t:for(;;){for(var Re;be!==o||s!==0&&be.nodeType!==3||(O=w+s),be!==f||u!==0&&be.nodeType!==3||(T=w+u),be.nodeType===3&&(w+=be.nodeValue.length),(Re=be.firstChild)!==null;)me=be,be=Re;for(;;){if(be===e)break t;if(me===o&&++Q===s&&(O=w),me===f&&++ge===u&&(T=w),(Re=be.nextSibling)!==null)break;be=me,me=be.parentNode}be=Re}o=O===-1||T===-1?null:{start:O,end:T}}else o=null}o=o||{start:0,end:0}}else o=null;for(Xs={focusedElem:e,selectionRange:o},hi=!1,Ae=n;Ae!==null;)if(n=Ae,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Ae=e;else for(;Ae!==null;){n=Ae;try{var $e=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if($e!==null){var ze=$e.memoizedProps,fn=$e.memoizedState,H=n.stateNode,j=H.getSnapshotBeforeUpdate(n.elementType===n.type?ze:qr(n.type,ze),fn);H.__reactInternalSnapshotBeforeUpdate=j}break;case 3:var Y=n.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(t(163))}}catch(Ce){on(n,n.return,Ce)}if(e=n.sibling,e!==null){e.return=n.return,Ae=e;break}Ae=n.return}return $e=gp,gp=!1,$e}function el(e,n,o){var u=n.updateQueue;if(u=u!==null?u.lastEffect:null,u!==null){var s=u=u.next;do{if((s.tag&e)===e){var f=s.destroy;s.destroy=void 0,f!==void 0&&Ac(n,o,f)}s=s.next}while(s!==u)}}function ku(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var u=o.create;o.destroy=u()}o=o.next}while(o!==n)}}function _c(e){var n=e.ref;if(n!==null){var o=e.stateNode;switch(e.tag){case 5:e=o;break;default:e=o}typeof n=="function"?n(e):n.current=e}}function yp(e){var n=e.alternate;n!==null&&(e.alternate=null,yp(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[da],delete n[Vo],delete n[ec],delete n[Jv],delete n[eh])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function wp(e){return e.tag===5||e.tag===3||e.tag===4}function xp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||wp(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function $c(e,n,o){var u=e.tag;if(u===5||u===6)e=e.stateNode,n?o.nodeType===8?o.parentNode.insertBefore(e,n):o.insertBefore(e,n):(o.nodeType===8?(n=o.parentNode,n.insertBefore(e,o)):(n=o,n.appendChild(e)),o=o._reactRootContainer,o!=null||n.onclick!==null||(n.onclick=nu));else if(u!==4&&(e=e.child,e!==null))for($c(e,n,o),e=e.sibling;e!==null;)$c(e,n,o),e=e.sibling}function Bc(e,n,o){var u=e.tag;if(u===5||u===6)e=e.stateNode,n?o.insertBefore(e,n):o.appendChild(e);else if(u!==4&&(e=e.child,e!==null))for(Bc(e,n,o),e=e.sibling;e!==null;)Bc(e,n,o),e=e.sibling}var Yn=null,Jr=!1;function ti(e,n,o){for(o=o.child;o!==null;)bp(e,n,o),o=o.sibling}function bp(e,n,o){if(ee&&typeof ee.onCommitFiberUnmount=="function")try{ee.onCommitFiberUnmount(re,o)}catch{}switch(o.tag){case 5:sr||so(o,n);case 6:var u=Yn,s=Jr;Yn=null,ti(e,n,o),Yn=u,Jr=s,Yn!==null&&(Jr?(e=Yn,o=o.stateNode,e.nodeType===8?e.parentNode.removeChild(o):e.removeChild(o)):Yn.removeChild(o.stateNode));break;case 18:Yn!==null&&(Jr?(e=Yn,o=o.stateNode,e.nodeType===8?Js(e.parentNode,o):e.nodeType===1&&Js(e,o),vi(e)):Js(Yn,o.stateNode));break;case 4:u=Yn,s=Jr,Yn=o.stateNode.containerInfo,Jr=!0,ti(e,n,o),Yn=u,Jr=s;break;case 0:case 11:case 14:case 15:if(!sr&&(u=o.updateQueue,u!==null&&(u=u.lastEffect,u!==null))){s=u=u.next;do{var f=s,w=f.destroy;f=f.tag,w!==void 0&&(f&2||f&4)&&Ac(o,n,w),s=s.next}while(s!==u)}ti(e,n,o);break;case 1:if(!sr&&(so(o,n),u=o.stateNode,typeof u.componentWillUnmount=="function"))try{u.props=o.memoizedProps,u.state=o.memoizedState,u.componentWillUnmount()}catch(O){on(o,n,O)}ti(e,n,o);break;case 21:ti(e,n,o);break;case 22:o.mode&1?(sr=(u=sr)||o.memoizedState!==null,ti(e,n,o),sr=u):ti(e,n,o);break;default:ti(e,n,o)}}function Sp(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var o=e.stateNode;o===null&&(o=e.stateNode=new hh),n.forEach(function(u){var s=Ph.bind(null,e,u);o.has(u)||(o.add(u),u.then(s,s))})}}function ea(e,n){var o=n.deletions;if(o!==null)for(var u=0;us&&(s=w),u&=~f}if(u=s,u=Pe()-u,u=(120>u?120:480>u?480:1080>u?1080:1920>u?1920:3e3>u?3e3:4320>u?4320:1960*wh(u/1960))-u,10e?16:e,ri===null)var u=!1;else{if(e=ri,ri=null,Iu=0,Et&6)throw Error(t(331));var s=Et;for(Et|=4,Ae=e.current;Ae!==null;){var f=Ae,w=f.child;if(Ae.flags&16){var O=f.deletions;if(O!==null){for(var T=0;TPe()-Vc?Li(e,0):Hc|=o),kr(e,n)}function Lp(e,n){n===0&&(e.mode&1?(n=Nt,Nt<<=1,!(Nt&130023424)&&(Nt=4194304)):n=1);var o=yr();e=Na(e,n),e!==null&&(qt(e,n,o),kr(e,o))}function kh(e){var n=e.memoizedState,o=0;n!==null&&(o=n.retryLane),Lp(e,o)}function Ph(e,n){var o=0;switch(e.tag){case 13:var u=e.stateNode,s=e.memoizedState;s!==null&&(o=s.retryLane);break;case 19:u=e.stateNode;break;default:throw Error(t(314))}u!==null&&u.delete(n),Lp(e,o)}var Fp;Fp=function(e,n,o){if(e!==null)if(e.memoizedProps!==n.pendingProps||br.current)Er=!0;else{if(!(e.lanes&o)&&!(n.flags&128))return Er=!1,ph(e,n,o);Er=!!(e.flags&131072)}else Er=!1,Xt&&n.flags&1048576&&vd(n,uu,n.index);switch(n.lanes=0,n.tag){case 2:var u=n.type;Eu(e,n),e=n.pendingProps;var s=eo(n,or.current);oo(n,o),s=xc(null,n,u,e,s,o);var f=bc();return n.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,Sr(u)?(f=!0,iu(n)):f=!1,n.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,pc(n),s.updater=bu,n.stateNode=s,s._reactInternals=n,Oc(n,u,e,o),n=Tc(null,n,u,!0,f,o)):(n.tag=0,Xt&&f&&rc(n),gr(null,n,s,o),n=n.child),n;case 16:u=n.elementType;e:{switch(Eu(e,n),e=n.pendingProps,s=u._init,u=s(u._payload),n.type=u,s=n.tag=Dh(u),e=qr(u,e),s){case 0:n=Ic(null,n,u,e,o);break e;case 1:n=up(null,n,u,e,o);break e;case 11:n=rp(null,n,u,e,o);break e;case 14:n=ap(null,n,u,qr(u.type,e),o);break e}throw Error(t(306,u,""))}return n;case 0:return u=n.type,s=n.pendingProps,s=n.elementType===u?s:qr(u,s),Ic(e,n,u,s,o);case 1:return u=n.type,s=n.pendingProps,s=n.elementType===u?s:qr(u,s),up(e,n,u,s,o);case 3:e:{if(sp(n),e===null)throw Error(t(387));u=n.pendingProps,f=n.memoizedState,s=f.element,Cd(e,n),mu(n,u,null,o);var w=n.memoizedState;if(u=w.element,f.isDehydrated)if(f={element:u,isDehydrated:!1,cache:w.cache,pendingSuspenseBoundaries:w.pendingSuspenseBoundaries,transitions:w.transitions},n.updateQueue.baseState=f,n.memoizedState=f,n.flags&256){s=uo(Error(t(423)),n),n=cp(e,n,u,o,s);break e}else if(u!==s){s=uo(Error(t(424)),n),n=cp(e,n,u,o,s);break e}else for(jr=Qa(n.stateNode.containerInfo.firstChild),Mr=n,Xt=!0,Zr=null,o=Sd(n,null,u,o),n.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(ro(),u===s){n=Ta(e,n,o);break e}gr(e,n,u,o)}n=n.child}return n;case 5:return Od(n),e===null&&oc(n),u=n.type,s=n.pendingProps,f=e!==null?e.memoizedProps:null,w=s.children,Zs(u,s)?w=null:f!==null&&Zs(u,f)&&(n.flags|=32),lp(e,n),gr(e,n,w,o),n.child;case 6:return e===null&&oc(n),null;case 13:return fp(e,n,o);case 4:return mc(n,n.stateNode.containerInfo),u=n.pendingProps,e===null?n.child=ao(n,null,u,o):gr(e,n,u,o),n.child;case 11:return u=n.type,s=n.pendingProps,s=n.elementType===u?s:qr(u,s),rp(e,n,u,s,o);case 7:return gr(e,n,n.pendingProps,o),n.child;case 8:return gr(e,n,n.pendingProps.children,o),n.child;case 12:return gr(e,n,n.pendingProps.children,o),n.child;case 10:e:{if(u=n.type._context,s=n.pendingProps,f=n.memoizedProps,w=s.value,$t(fu,u._currentValue),u._currentValue=w,f!==null)if(Ir(f.value,w)){if(f.children===s.children&&!br.current){n=Ta(e,n,o);break e}}else for(f=n.child,f!==null&&(f.return=n);f!==null;){var O=f.dependencies;if(O!==null){w=f.child;for(var T=O.firstContext;T!==null;){if(T.context===u){if(f.tag===1){T=Ia(-1,o&-o),T.tag=2;var Q=f.updateQueue;if(Q!==null){Q=Q.shared;var ge=Q.pending;ge===null?T.next=T:(T.next=ge.next,ge.next=T),Q.pending=T}}f.lanes|=o,T=f.alternate,T!==null&&(T.lanes|=o),fc(f.return,o,n),O.lanes|=o;break}T=T.next}}else if(f.tag===10)w=f.type===n.type?null:f.child;else if(f.tag===18){if(w=f.return,w===null)throw Error(t(341));w.lanes|=o,O=w.alternate,O!==null&&(O.lanes|=o),fc(w,o,n),w=f.sibling}else w=f.child;if(w!==null)w.return=f;else for(w=f;w!==null;){if(w===n){w=null;break}if(f=w.sibling,f!==null){f.return=w.return,w=f;break}w=w.return}f=w}gr(e,n,s.children,o),n=n.child}return n;case 9:return s=n.type,u=n.pendingProps.children,oo(n,o),s=Vr(s),u=u(s),n.flags|=1,gr(e,n,u,o),n.child;case 14:return u=n.type,s=qr(u,n.pendingProps),s=qr(u.type,s),ap(e,n,u,s,o);case 15:return ip(e,n,n.type,n.pendingProps,o);case 17:return u=n.type,s=n.pendingProps,s=n.elementType===u?s:qr(u,s),Eu(e,n),n.tag=1,Sr(u)?(e=!0,iu(n)):e=!1,oo(n,o),Xd(n,u,s),Oc(n,u,s,o),Tc(null,n,u,!0,e,o);case 19:return pp(e,n,o);case 22:return op(e,n,o)}throw Error(t(156,n.tag))};function Ap(e,n){return ke(e,n)}function Oh(e,n,o,u){this.tag=e,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Wr(e,n,o,u){return new Oh(e,n,o,u)}function Zc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Dh(e){if(typeof e=="function")return Zc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===_e)return 11;if(e===se)return 14}return 2}function oi(e,n){var o=e.alternate;return o===null?(o=Wr(e.tag,n,e.key,e.mode),o.elementType=e.elementType,o.type=e.type,o.stateNode=e.stateNode,o.alternate=e,e.alternate=o):(o.pendingProps=n,o.type=e.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=e.flags&14680064,o.childLanes=e.childLanes,o.lanes=e.lanes,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,n=e.dependencies,o.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},o.sibling=e.sibling,o.index=e.index,o.ref=e.ref,o}function Ru(e,n,o,u,s,f){var w=2;if(u=e,typeof e=="function")Zc(e)&&(w=1);else if(typeof e=="string")w=5;else e:switch(e){case ye:return Ai(o.children,s,f,n);case De:w=8,s|=8;break;case z:return e=Wr(12,o,n,s|2),e.elementType=z,e.lanes=f,e;case q:return e=Wr(13,o,n,s),e.elementType=q,e.lanes=f,e;case Ie:return e=Wr(19,o,n,s),e.elementType=Ie,e.lanes=f,e;case Ve:return Lu(o,s,f,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case U:w=10;break e;case oe:w=9;break e;case _e:w=11;break e;case se:w=14;break e;case Ye:w=16,u=null;break e}throw Error(t(130,e==null?e:typeof e,""))}return n=Wr(w,o,n,s),n.elementType=e,n.type=u,n.lanes=f,n}function Ai(e,n,o,u){return e=Wr(7,e,u,n),e.lanes=o,e}function Lu(e,n,o,u){return e=Wr(22,e,u,n),e.elementType=Ve,e.lanes=o,e.stateNode={isHidden:!1},e}function qc(e,n,o){return e=Wr(6,e,null,n),e.lanes=o,e}function Jc(e,n,o){return n=Wr(4,e.children!==null?e.children:[],e.key,n),n.lanes=o,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Nh(e,n,o,u,s){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=sn(0),this.expirationTimes=sn(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=sn(0),this.identifierPrefix=u,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function ef(e,n,o,u,s,f,w,O,T){return e=new Nh(e,n,o,O,T),n===1?(n=1,f===!0&&(n|=8)):n=0,f=Wr(3,null,null,n),e.current=f,f.stateNode=e,f.memoizedState={element:u,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},pc(f),e}function Ih(e,n,o){var u=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(i){console.error(i)}}return a(),lf.exports=Bh(),lf.exports}var Zp;function zh(){if(Zp)return Hu;Zp=1;var a=Km();return Hu.createRoot=a.createRoot,Hu.hydrateRoot=a.hydrateRoot,Hu}var Hh=zh(),m=Wf();const wr=Um(m);var ol={},qp;function Vh(){if(qp)return ol;qp=1,Object.defineProperty(ol,"__esModule",{value:!0}),ol.parse=h,ol.serialize=y;const a=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,i=/^[\u0021-\u003A\u003C-\u007E]*$/,t=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,l=/^[\u0020-\u003A\u003D-\u007E]*$/,r=Object.prototype.toString,d=(()=>{const N=function(){};return N.prototype=Object.create(null),N})();function h(N,I){const M=new d,D=N.length;if(D<2)return M;const B=(I==null?void 0:I.decode)||k;let _=0;do{const $=N.indexOf("=",_);if($===-1)break;const W=N.indexOf(";",_),he=W===-1?D:W;if($>he){_=N.lastIndexOf(";",$-1)+1;continue}const Se=v(N,_,$),Oe=g(N,$,Se),ye=N.slice(Se,Oe);if(M[ye]===void 0){let De=v(N,$+1,he),z=g(N,he,De);const U=B(N.slice(De,z));M[ye]=U}_=he+1}while(_M;){const D=N.charCodeAt(--I);if(D!==32&&D!==9)return I+1}return M}function y(N,I,M){const D=(M==null?void 0:M.encode)||encodeURIComponent;if(!a.test(N))throw new TypeError(`argument name is invalid: ${N}`);const B=D(I);if(!i.test(B))throw new TypeError(`argument val is invalid: ${I}`);let _=N+"="+B;if(!M)return _;if(M.maxAge!==void 0){if(!Number.isInteger(M.maxAge))throw new TypeError(`option maxAge is invalid: ${M.maxAge}`);_+="; Max-Age="+M.maxAge}if(M.domain){if(!t.test(M.domain))throw new TypeError(`option domain is invalid: ${M.domain}`);_+="; Domain="+M.domain}if(M.path){if(!l.test(M.path))throw new TypeError(`option path is invalid: ${M.path}`);_+="; Path="+M.path}if(M.expires){if(!E(M.expires)||!Number.isFinite(M.expires.valueOf()))throw new TypeError(`option expires is invalid: ${M.expires}`);_+="; Expires="+M.expires.toUTCString()}if(M.httpOnly&&(_+="; HttpOnly"),M.secure&&(_+="; Secure"),M.partitioned&&(_+="; Partitioned"),M.priority)switch(typeof M.priority=="string"?M.priority.toLowerCase():void 0){case"low":_+="; Priority=Low";break;case"medium":_+="; Priority=Medium";break;case"high":_+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${M.priority}`)}if(M.sameSite)switch(typeof M.sameSite=="string"?M.sameSite.toLowerCase():M.sameSite){case!0:case"strict":_+="; SameSite=Strict";break;case"lax":_+="; SameSite=Lax";break;case"none":_+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${M.sameSite}`)}return _}function k(N){if(N.indexOf("%")===-1)return N;try{return decodeURIComponent(N)}catch{return N}}function E(N){return r.call(N)==="[object Date]"}return ol}Vh();/** - * react-router v7.1.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var Jp="popstate";function Uh(a={}){function i(l,r){let{pathname:d,search:h,hash:v}=l.location;return hf("",{pathname:d,search:h,hash:v},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function t(l,r){return typeof r=="string"?r:yl(r)}return Wh(i,t,null,a)}function nn(a,i){if(a===!1||a===null||typeof a>"u")throw new Error(i)}function ya(a,i){if(!a){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function Kh(){return Math.random().toString(36).substring(2,10)}function em(a,i){return{usr:a.state,key:a.key,idx:i}}function hf(a,i,t=null,l){return{pathname:typeof a=="string"?a:a.pathname,search:"",hash:"",...typeof i=="string"?Po(i):i,state:t,key:i&&i.key||l||Kh()}}function yl({pathname:a="/",search:i="",hash:t=""}){return i&&i!=="?"&&(a+=i.charAt(0)==="?"?i:"?"+i),t&&t!=="#"&&(a+=t.charAt(0)==="#"?t:"#"+t),a}function Po(a){let i={};if(a){let t=a.indexOf("#");t>=0&&(i.hash=a.substring(t),a=a.substring(0,t));let l=a.indexOf("?");l>=0&&(i.search=a.substring(l),a=a.substring(0,l)),a&&(i.pathname=a)}return i}function Wh(a,i,t,l={}){let{window:r=document.defaultView,v5Compat:d=!1}=l,h=r.history,v="POP",g=null,y=k();y==null&&(y=0,h.replaceState({...h.state,idx:y},""));function k(){return(h.state||{idx:null}).idx}function E(){v="POP";let B=k(),_=B==null?null:B-y;y=B,g&&g({action:v,location:D.location,delta:_})}function N(B,_){v="PUSH";let $=hf(D.location,B,_);y=k()+1;let W=em($,y),he=D.createHref($);try{h.pushState(W,"",he)}catch(Se){if(Se instanceof DOMException&&Se.name==="DataCloneError")throw Se;r.location.assign(he)}d&&g&&g({action:v,location:D.location,delta:1})}function I(B,_){v="REPLACE";let $=hf(D.location,B,_);y=k();let W=em($,y),he=D.createHref($);h.replaceState(W,"",he),d&&g&&g({action:v,location:D.location,delta:0})}function M(B){let _=r.location.origin!=="null"?r.location.origin:r.location.href,$=typeof B=="string"?B:yl(B);return $=$.replace(/ $/,"%20"),nn(_,`No window.location.(origin|href) available to create URL for href: ${$}`),new URL($,_)}let D={get action(){return v},get location(){return a(r,h)},listen(B){if(g)throw new Error("A history only accepts one active listener");return r.addEventListener(Jp,E),g=B,()=>{r.removeEventListener(Jp,E),g=null}},createHref(B){return i(r,B)},createURL:M,encodeLocation(B){let _=M(B);return{pathname:_.pathname,search:_.search,hash:_.hash}},push:N,replace:I,go(B){return h.go(B)}};return D}function Wm(a,i,t="/"){return Yh(a,i,t,!1)}function Yh(a,i,t,l){let r=typeof i=="string"?Po(i):i,d=ci(r.pathname||"/",t);if(d==null)return null;let h=Ym(a);Gh(h);let v=null;for(let g=0;v==null&&g{let g={relativePath:v===void 0?d.path||"":v,caseSensitive:d.caseSensitive===!0,childrenIndex:h,route:d};g.relativePath.startsWith("/")&&(nn(g.relativePath.startsWith(l),`Absolute route path "${g.relativePath}" nested under path "${l}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(l.length));let y=Aa([l,g.relativePath]),k=t.concat(g);d.children&&d.children.length>0&&(nn(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${y}".`),Ym(d.children,i,k,y)),!(d.path==null&&!d.index)&&i.push({path:y,score:tg(y,d.index),routesMeta:k})};return a.forEach((d,h)=>{var v;if(d.path===""||!((v=d.path)!=null&&v.includes("?")))r(d,h);else for(let g of Gm(d.path))r(d,h,g)}),i}function Gm(a){let i=a.split("/");if(i.length===0)return[];let[t,...l]=i,r=t.endsWith("?"),d=t.replace(/\?$/,"");if(l.length===0)return r?[d,""]:[d];let h=Gm(l.join("/")),v=[];return v.push(...h.map(g=>g===""?d:[d,g].join("/"))),r&&v.push(...h),v.map(g=>a.startsWith("/")&&g===""?"/":g)}function Gh(a){a.sort((i,t)=>i.score!==t.score?t.score-i.score:ng(i.routesMeta.map(l=>l.childrenIndex),t.routesMeta.map(l=>l.childrenIndex)))}var Qh=/^:[\w-]+$/,Xh=3,Zh=2,qh=1,Jh=10,eg=-2,tm=a=>a==="*";function tg(a,i){let t=a.split("/"),l=t.length;return t.some(tm)&&(l+=eg),i&&(l+=Zh),t.filter(r=>!tm(r)).reduce((r,d)=>r+(Qh.test(d)?Xh:d===""?qh:Jh),l)}function ng(a,i){return a.length===i.length&&a.slice(0,-1).every((l,r)=>l===i[r])?a[a.length-1]-i[i.length-1]:0}function rg(a,i,t=!1){let{routesMeta:l}=a,r={},d="/",h=[];for(let v=0;v{if(k==="*"){let M=v[N]||"";h=d.slice(0,d.length-M.length).replace(/(.)\/+$/,"$1")}const I=v[N];return E&&!I?y[k]=void 0:y[k]=(I||"").replace(/%2F/g,"/"),y},{}),pathname:d,pathnameBase:h,pattern:a}}function ag(a,i=!1,t=!0){ya(a==="*"||!a.endsWith("*")||a.endsWith("/*"),`Route path "${a}" will be treated as if it were "${a.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${a.replace(/\*$/,"/*")}".`);let l=[],r="^"+a.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(h,v,g)=>(l.push({paramName:v,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return a.endsWith("*")?(l.push({paramName:"*"}),r+=a==="*"||a==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):t?r+="\\/*$":a!==""&&a!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,i?void 0:"i"),l]}function ig(a){try{return a.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return ya(!1,`The URL path "${a}" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),a}}function ci(a,i){if(i==="/")return a;if(!a.toLowerCase().startsWith(i.toLowerCase()))return null;let t=i.endsWith("/")?i.length-1:i.length,l=a.charAt(t);return l&&l!=="/"?null:a.slice(t)||"/"}function og(a,i="/"){let{pathname:t,search:l="",hash:r=""}=typeof a=="string"?Po(a):a;return{pathname:t?t.startsWith("/")?t:lg(t,i):i,search:cg(l),hash:fg(r)}}function lg(a,i){let t=i.replace(/\/+$/,"").split("/");return a.split("/").forEach(r=>{r===".."?t.length>1&&t.pop():r!=="."&&t.push(r)}),t.length>1?t.join("/"):"/"}function cf(a,i,t,l){return`Cannot include a '${a}' character in a manually specified \`to.${i}\` field [${JSON.stringify(l)}]. Please separate it out to the \`to.${t}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function ug(a){return a.filter((i,t)=>t===0||i.route.path&&i.route.path.length>0)}function Qm(a){let i=ug(a);return i.map((t,l)=>l===i.length-1?t.pathname:t.pathnameBase)}function Xm(a,i,t,l=!1){let r;typeof a=="string"?r=Po(a):(r={...a},nn(!r.pathname||!r.pathname.includes("?"),cf("?","pathname","search",r)),nn(!r.pathname||!r.pathname.includes("#"),cf("#","pathname","hash",r)),nn(!r.search||!r.search.includes("#"),cf("#","search","hash",r)));let d=a===""||r.pathname==="",h=d?"/":r.pathname,v;if(h==null)v=t;else{let E=i.length-1;if(!l&&h.startsWith("..")){let N=h.split("/");for(;N[0]==="..";)N.shift(),E-=1;r.pathname=N.join("/")}v=E>=0?i[E]:"/"}let g=og(r,v),y=h&&h!=="/"&&h.endsWith("/"),k=(d||h===".")&&t.endsWith("/");return!g.pathname.endsWith("/")&&(y||k)&&(g.pathname+="/"),g}var Aa=a=>a.join("/").replace(/\/\/+/g,"/"),sg=a=>a.replace(/\/+$/,"").replace(/^\/*/,"/"),cg=a=>!a||a==="?"?"":a.startsWith("?")?a:"?"+a,fg=a=>!a||a==="#"?"":a.startsWith("#")?a:"#"+a;function dg(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.internal=="boolean"&&"data"in a}var Zm=["POST","PUT","PATCH","DELETE"];new Set(Zm);var pg=["GET",...Zm];new Set(pg);var Oo=m.createContext(null);Oo.displayName="DataRouter";var vs=m.createContext(null);vs.displayName="DataRouterState";var qm=m.createContext({isTransitioning:!1});qm.displayName="ViewTransition";var mg=m.createContext(new Map);mg.displayName="Fetchers";var vg=m.createContext(null);vg.displayName="Await";var wa=m.createContext(null);wa.displayName="Navigation";var Il=m.createContext(null);Il.displayName="Location";var _a=m.createContext({outlet:null,matches:[],isDataRoute:!1});_a.displayName="Route";var Yf=m.createContext(null);Yf.displayName="RouteError";function hg(a,{relative:i}={}){nn(Tl(),"useHref() may be used only in the context of a component.");let{basename:t,navigator:l}=m.useContext(wa),{hash:r,pathname:d,search:h}=Ml(a,{relative:i}),v=d;return t!=="/"&&(v=d==="/"?t:Aa([t,d])),l.createHref({pathname:v,search:h,hash:r})}function Tl(){return m.useContext(Il)!=null}function Hi(){return nn(Tl(),"useLocation() may be used only in the context of a component."),m.useContext(Il).location}var Jm="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function ev(a){m.useContext(wa).static||m.useLayoutEffect(a)}function gg(){let{isDataRoute:a}=m.useContext(_a);return a?Ig():yg()}function yg(){nn(Tl(),"useNavigate() may be used only in the context of a component.");let a=m.useContext(Oo),{basename:i,navigator:t}=m.useContext(wa),{matches:l}=m.useContext(_a),{pathname:r}=Hi(),d=JSON.stringify(Qm(l)),h=m.useRef(!1);return ev(()=>{h.current=!0}),m.useCallback((g,y={})=>{if(ya(h.current,Jm),!h.current)return;if(typeof g=="number"){t.go(g);return}let k=Xm(g,JSON.parse(d),r,y.relative==="path");a==null&&i!=="/"&&(k.pathname=k.pathname==="/"?i:Aa([i,k.pathname])),(y.replace?t.replace:t.push)(k,y.state,y)},[i,t,d,r,a])}m.createContext(null);function Ml(a,{relative:i}={}){let{matches:t}=m.useContext(_a),{pathname:l}=Hi(),r=JSON.stringify(Qm(t));return m.useMemo(()=>Xm(a,JSON.parse(r),l,i==="path"),[a,r,l,i])}function wg(a,i){return tv(a,i)}function tv(a,i,t,l){var _;nn(Tl(),"useRoutes() may be used only in the context of a component.");let{navigator:r}=m.useContext(wa),{matches:d}=m.useContext(_a),h=d[d.length-1],v=h?h.params:{},g=h?h.pathname:"/",y=h?h.pathnameBase:"/",k=h&&h.route;{let $=k&&k.path||"";nv(g,!k||$.endsWith("*")||$.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let E=Hi(),N;if(i){let $=typeof i=="string"?Po(i):i;nn(y==="/"||((_=$.pathname)==null?void 0:_.startsWith(y)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${y}" but pathname "${$.pathname}" was given in the \`location\` prop.`),N=$}else N=E;let I=N.pathname||"/",M=I;if(y!=="/"){let $=y.replace(/^\//,"").split("/");M="/"+I.replace(/^\//,"").split("/").slice($.length).join("/")}let D=Wm(a,{pathname:M});ya(k||D!=null,`No routes matched location "${N.pathname}${N.search}${N.hash}" `),ya(D==null||D[D.length-1].route.element!==void 0||D[D.length-1].route.Component!==void 0||D[D.length-1].route.lazy!==void 0,`Matched leaf route at location "${N.pathname}${N.search}${N.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let B=Cg(D&&D.map($=>Object.assign({},$,{params:Object.assign({},v,$.params),pathname:Aa([y,r.encodeLocation?r.encodeLocation($.pathname).pathname:$.pathname]),pathnameBase:$.pathnameBase==="/"?y:Aa([y,r.encodeLocation?r.encodeLocation($.pathnameBase).pathname:$.pathnameBase])})),d,t,l);return i&&B?m.createElement(Il.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...N},navigationType:"POP"}},B):B}function xg(){let a=Ng(),i=dg(a)?`${a.status} ${a.statusText}`:a instanceof Error?a.message:JSON.stringify(a),t=a instanceof Error?a.stack:null,l="rgba(200,200,200, 0.5)",r={padding:"0.5rem",backgroundColor:l},d={padding:"2px 4px",backgroundColor:l},h=null;return console.error("Error handled by React Router default ErrorBoundary:",a),h=m.createElement(m.Fragment,null,m.createElement("p",null,"💿 Hey developer 👋"),m.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",m.createElement("code",{style:d},"ErrorBoundary")," or"," ",m.createElement("code",{style:d},"errorElement")," prop on your route.")),m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},i),t?m.createElement("pre",{style:r},t):null,h)}var bg=m.createElement(xg,null),Sg=class extends m.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,i){return i.location!==a.location||i.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:i.error,location:i.location,revalidation:a.revalidation||i.revalidation}}componentDidCatch(a,i){console.error("React Router caught the following error during render",a,i)}render(){return this.state.error!==void 0?m.createElement(_a.Provider,{value:this.props.routeContext},m.createElement(Yf.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Eg({routeContext:a,match:i,children:t}){let l=m.useContext(Oo);return l&&l.static&&l.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(l.staticContext._deepestRenderedBoundaryId=i.route.id),m.createElement(_a.Provider,{value:a},t)}function Cg(a,i=[],t=null,l=null){if(a==null){if(!t)return null;if(t.errors)a=t.matches;else if(i.length===0&&!t.initialized&&t.matches.length>0)a=t.matches;else return null}let r=a,d=t==null?void 0:t.errors;if(d!=null){let g=r.findIndex(y=>y.route.id&&(d==null?void 0:d[y.route.id])!==void 0);nn(g>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),r=r.slice(0,Math.min(r.length,g+1))}let h=!1,v=-1;if(t)for(let g=0;g=0?r=r.slice(0,v+1):r=[r[0]];break}}}return r.reduceRight((g,y,k)=>{let E,N=!1,I=null,M=null;t&&(E=d&&y.route.id?d[y.route.id]:void 0,I=y.route.errorElement||bg,h&&(v<0&&k===0?(nv("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),N=!0,M=null):v===k&&(N=!0,M=y.route.hydrateFallbackElement||null)));let D=i.concat(r.slice(0,k+1)),B=()=>{let _;return E?_=I:N?_=M:y.route.Component?_=m.createElement(y.route.Component,null):y.route.element?_=y.route.element:_=g,m.createElement(Eg,{match:y,routeContext:{outlet:g,matches:D,isDataRoute:t!=null},children:_})};return t&&(y.route.ErrorBoundary||y.route.errorElement||k===0)?m.createElement(Sg,{location:t.location,revalidation:t.revalidation,component:I,error:E,children:B(),routeContext:{outlet:null,matches:D,isDataRoute:!0}}):B()},null)}function Gf(a){return`${a} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function kg(a){let i=m.useContext(Oo);return nn(i,Gf(a)),i}function Pg(a){let i=m.useContext(vs);return nn(i,Gf(a)),i}function Og(a){let i=m.useContext(_a);return nn(i,Gf(a)),i}function Qf(a){let i=Og(a),t=i.matches[i.matches.length-1];return nn(t.route.id,`${a} can only be used on routes that contain a unique "id"`),t.route.id}function Dg(){return Qf("useRouteId")}function Ng(){var l;let a=m.useContext(Yf),i=Pg("useRouteError"),t=Qf("useRouteError");return a!==void 0?a:(l=i.errors)==null?void 0:l[t]}function Ig(){let{router:a}=kg("useNavigate"),i=Qf("useNavigate"),t=m.useRef(!1);return ev(()=>{t.current=!0}),m.useCallback(async(r,d={})=>{ya(t.current,Jm),t.current&&(typeof r=="number"?a.navigate(r):await a.navigate(r,{fromRouteId:i,...d}))},[a,i])}var nm={};function nv(a,i,t){!i&&!nm[a]&&(nm[a]=!0,ya(!1,t))}m.memo(Tg);function Tg({routes:a,future:i,state:t}){return tv(a,void 0,t,i)}function sl(a){nn(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Mg({basename:a="/",children:i=null,location:t,navigationType:l="POP",navigator:r,static:d=!1}){nn(!Tl(),"You cannot render a inside another . You should never have more than one in your app.");let h=a.replace(/^\/*/,"/"),v=m.useMemo(()=>({basename:h,navigator:r,static:d,future:{}}),[h,r,d]);typeof t=="string"&&(t=Po(t));let{pathname:g="/",search:y="",hash:k="",state:E=null,key:N="default"}=t,I=m.useMemo(()=>{let M=ci(g,h);return M==null?null:{location:{pathname:M,search:y,hash:k,state:E,key:N},navigationType:l}},[h,g,y,k,E,N,l]);return ya(I!=null,` is not able to match the URL "${g}${y}${k}" because it does not start with the basename, so the won't render anything.`),I==null?null:m.createElement(wa.Provider,{value:v},m.createElement(Il.Provider,{children:i,value:I}))}function jg({children:a,location:i}){return wg(gf(a),i)}function gf(a,i=[]){let t=[];return m.Children.forEach(a,(l,r)=>{if(!m.isValidElement(l))return;let d=[...i,r];if(l.type===m.Fragment){t.push.apply(t,gf(l.props.children,d));return}nn(l.type===sl,`[${typeof l.type=="string"?l.type:l.type.name}] is not a component. All component children of must be a or `),nn(!l.props.index||!l.props.children,"An index route cannot have child routes.");let h={id:l.props.id||d.join("-"),caseSensitive:l.props.caseSensitive,element:l.props.element,Component:l.props.Component,index:l.props.index,path:l.props.path,loader:l.props.loader,action:l.props.action,hydrateFallbackElement:l.props.hydrateFallbackElement,HydrateFallback:l.props.HydrateFallback,errorElement:l.props.errorElement,ErrorBoundary:l.props.ErrorBoundary,hasErrorBoundary:l.props.hasErrorBoundary===!0||l.props.ErrorBoundary!=null||l.props.errorElement!=null,shouldRevalidate:l.props.shouldRevalidate,handle:l.props.handle,lazy:l.props.lazy};l.props.children&&(h.children=gf(l.props.children,d)),t.push(h)}),t}var ns="get",rs="application/x-www-form-urlencoded";function hs(a){return a!=null&&typeof a.tagName=="string"}function Rg(a){return hs(a)&&a.tagName.toLowerCase()==="button"}function Lg(a){return hs(a)&&a.tagName.toLowerCase()==="form"}function Fg(a){return hs(a)&&a.tagName.toLowerCase()==="input"}function Ag(a){return!!(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)}function _g(a,i){return a.button===0&&(!i||i==="_self")&&!Ag(a)}var Vu=null;function $g(){if(Vu===null)try{new FormData(document.createElement("form"),0),Vu=!1}catch{Vu=!0}return Vu}var Bg=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function ff(a){return a!=null&&!Bg.has(a)?(ya(!1,`"${a}" is not a valid \`encType\` for \`

\`/\`\` and will default to "${rs}"`),null):a}function zg(a,i){let t,l,r,d,h;if(Lg(a)){let v=a.getAttribute("action");l=v?ci(v,i):null,t=a.getAttribute("method")||ns,r=ff(a.getAttribute("enctype"))||rs,d=new FormData(a)}else if(Rg(a)||Fg(a)&&(a.type==="submit"||a.type==="image")){let v=a.form;if(v==null)throw new Error('Cannot submit a