---
title: "Route Flow: ssutil /src/index.ts "
---
flowchart TD
subgraph USE ["USE"]
hono_use__["USE *"]
style hono_use__ fill:#5E377B,color:#fff,stroke:#B4976A
hono_use__["USE *"]
style hono_use__ fill:#5E377B,color:#fff,stroke:#B4976A
hono_use__dolater_v1__["USE /dolater/v1/*"]
style hono_use__dolater_v1__ fill:#5E377B,color:#fff,stroke:#B4976A
hono_use__slack_v1__["USE /slack/v1/*"]
style hono_use__slack_v1__ fill:#5E377B,color:#fff,stroke:#B4976A
hono_use__email_v1__["USE /email/v1/*"]
style hono_use__email_v1__ fill:#5E377B,color:#fff,stroke:#B4976A
end
subgraph GET ["GET"]
hono_get__platform_webflow_js["GET /platform-webflow.js"]
style hono_get__platform_webflow_js fill:#5E377B,color:#fff,stroke:#B4976A
hono_get__canonclient_js["GET /canonclient.js"]
style hono_get__canonclient_js fill:#5E377B,color:#fff,stroke:#B4976A
hono_get__domain_to_id["GET /domain-to-id"]
style hono_get__domain_to_id fill:#5E377B,color:#fff,stroke:#B4976A
end
subgraph ROUTE ["ROUTE"]
hono_route__canon_v1["ROUTE /canon/v1"]
style hono_route__canon_v1 fill:#5E377B,color:#fff,stroke:#B4976A
hono_route__dolater_v1["ROUTE /dolater/v1"]
style hono_route__dolater_v1 fill:#5E377B,color:#fff,stroke:#B4976A
hono_route__slack_v1["ROUTE /slack/v1"]
style hono_route__slack_v1 fill:#5E377B,color:#fff,stroke:#B4976A
hono_route__email_v1["ROUTE /email/v1"]
style hono_route__email_v1 fill:#5E377B,color:#fff,stroke:#B4976A
end
subgraph ALL ["ALL"]
hono_all__platformscrape["ALL /platformscrape"]
style hono_all__platformscrape fill:#5E377B,color:#fff,stroke:#B4976A
end
linkStyle default stroke:#c2a35d,stroke-width:2px,color:#fff
classDef default color:#fff
---
title: "AST Structure: ssutil /src/index.ts "
---
%%{init: { 'flowchart': { 'nodeSpacing': 20, 'rankSpacing': 30 }, 'themeVariables': { 'fontSize': '11px' } } }%%
graph LR
n0["SF"]
n2["hono"]
style n2 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
n3["ID: Hono"]
n0 --> n3
n3 --> n2
style n3 stroke-dasharray:5,stroke:#B4976A
n5["hono/cors"]
style n5 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
n6["ID: cors"]
n0 --> n6
n6 --> n5
style n6 stroke-dasharray:5,stroke:#B4976A
n8["./middleware/guard"]
style n8 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n8 cursor:pointer,stroke-width:2px,stroke:#B4976A
n9["ID: protectAdminRoutes"]
n0 --> n9
n9 --> n8
style n9 stroke-dasharray:5,stroke:#B4976A
n11["./utils/crypto.js"]
style n11 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n11 cursor:pointer,stroke-width:2px,stroke:#B4976A
n12["ID: encryptToken"]
n0 --> n12
n12 --> n11
style n12 stroke-dasharray:5,stroke:#B4976A
n13["ID: inspectToken"]
n0 --> n13
n13 --> n11
style n13 stroke-dasharray:5,stroke:#B4976A
n15["./middleware/adminauth"]
style n15 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n15 cursor:pointer,stroke-width:2px,stroke:#B4976A
n16["ID: adminAuthMiddleware"]
n0 --> n16
n16 --> n15
style n16 stroke-dasharray:5,stroke:#B4976A
n18["./middleware/platformscrape"]
style n18 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n18 cursor:pointer,stroke-width:2px,stroke:#B4976A
n19["ID: platformscrapeMiddleware"]
n0 --> n19
n19 --> n18
style n19 stroke-dasharray:5,stroke:#B4976A
n21["./middleware/slackhandler"]
style n21 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n21 cursor:pointer,stroke-width:2px,stroke:#B4976A
n22["ID: slackhandler"]
n0 --> n22
n22 --> n21
style n22 stroke-dasharray:5,stroke:#B4976A
n24["./middleware/mailhandler"]
style n24 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n24 cursor:pointer,stroke-width:2px,stroke:#B4976A
n25["ID: mailhandler"]
n0 --> n25
n25 --> n24
style n25 stroke-dasharray:5,stroke:#B4976A
n27["./utils/domain-to-id-handler"]
style n27 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n27 cursor:pointer,stroke-width:2px,stroke:#B4976A
n28["ID: domainToIdHandler"]
n0 --> n28
n28 --> n27
style n28 stroke-dasharray:5,stroke:#B4976A
n30["./middleware/dolater"]
style n30 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n30 cursor:pointer,stroke-width:2px,stroke:#B4976A
n31["ID: dolater"]
n0 --> n31
n31 --> n30
style n31 stroke-dasharray:5,stroke:#B4976A
n33["./middleware/canon"]
style n33 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n33 cursor:pointer,stroke-width:2px,stroke:#B4976A
n34["ID: canonAuthMiddleware"]
n0 --> n34
n34 --> n33
style n34 stroke-dasharray:5,stroke:#B4976A
n35["ID: canonmiddleware"]
n0 --> n35
n35 --> n33
style n35 stroke-dasharray:5,stroke:#B4976A
n37["mustache"]
style n37 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
n38["ID: mustache"]
n0 --> n38
n38 --> n37
style n38 stroke-dasharray:5,stroke:#B4976A
n40["./middleware/auth"]
style n40 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n40 cursor:pointer,stroke-width:2px,stroke:#B4976A
n41["ID: domaintopassword"]
n0 --> n41
n41 --> n40
style n41 stroke-dasharray:5,stroke:#B4976A
n42["ID: saltpassword"]
n0 --> n42
n42 --> n40
style n42 stroke-dasharray:5,stroke:#B4976A
n44["./scripts/platform-webflow.js.txt"]
style n44 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n44 cursor:pointer,stroke-width:2px,stroke:#B4976A
n45["ID: platformWebflow"]
n0 --> n45
n45 --> n44
style n45 stroke-dasharray:5,stroke:#B4976A
n47["./scripts/canonclient.js.txt"]
style n47 fill:#ffffff10,stroke:#ffffff33,color:#a1a1a1
style n47 cursor:pointer,stroke-width:2px,stroke:#B4976A
n48["ID: canonclient"]
n0 --> n48
n48 --> n47
style n48 stroke-dasharray:5,stroke:#B4976A
n67["CE: app.use('*')"]
n0 --> n67
n74["CE: app.use('*')"]
n0 --> n74
n108["CE: app.get('/platform-webflow.js')"]
n0 --> n108
n118["CE: c.text"]
n108 --> n118
n131["CE: app.get('/canonclient.js')"]
n0 --> n131
n141["CE: c.text"]
n131 --> n141
n154["CE: app.route('/canon/v1')"]
n0 --> n154
n160["CE: app.use('/dolater/v1/*')"]
n0 --> n160
n166["CE: app.route('/dolater/v1')"]
n0 --> n166
n172["CE: app.get('/domain-to-id')"]
n0 --> n172
n179["CE: app.all('/platformscrape')"]
n0 --> n179
n186["CE: app.use('/slack/v1/*')"]
n0 --> n186
n192["CE: app.route('/slack/v1')"]
n0 --> n192
n198["CE: app.use('/email/v1/*')"]
n0 --> n198
n204["CE: app.route('/email/v1')"]
n0 --> n204
n229["MD: fetch"]
n0 --> n229
n249["CE: app.fetch(request)"]
n229 --> n249
n256["MD: scheduled"]
n0 --> n256
n377["CE: app.fetch(request)"]
n256 --> n377
style n0 fill:#5E377B,color:#fff,stroke:#B4976A
linkStyle default stroke:#c2a35d,stroke-width:1px,opacity:0.6
click n8 "middleware/guard.html" "View Documentation"
click n11 "utils/crypto.html" "View Documentation"
click n15 "middleware/adminauth.html" "View Documentation"
click n18 "middleware/platformscrape.html" "View Documentation"
click n21 "middleware/slackhandler.html" "View Documentation"
click n24 "middleware/mailhandler.html" "View Documentation"
click n27 "utils/domain-to-id-handler.html" "View Documentation"
click n30 "middleware/dolater.html" "View Documentation"
click n33 "middleware/canon.html" "View Documentation"
click n40 "middleware/auth.html" "View Documentation"
click n44 "scripts/platform-webflow.js.txt" "View Documentation"
click n47 "scripts/canonclient.js.txt" "View Documentation"
CE CallExpressionID ImportDeclarationMD MethodDeclarationSF SourceFile