devflare 1.0.0-next.14 → 1.0.0-next.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LLM.md +9360 -1784
- package/README.md +391 -32
- package/bin/devflare.js +17 -7
- package/dist/account-0w8wdzjv.js +475 -0
- package/dist/account-eygq6qx7.js +475 -0
- package/dist/account-fw8nafav.js +475 -0
- package/dist/account-pzq69nys.js +475 -0
- package/dist/account-s66jb15j.js +475 -0
- package/dist/api-d6ekexs5.js +25 -0
- package/dist/bridge/index.d.ts +1 -1
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/miniflare.d.ts.map +1 -1
- package/dist/bridge/protocol.d.ts +1 -1
- package/dist/bridge/protocol.d.ts.map +1 -1
- package/dist/bridge/proxy.d.ts +0 -4
- package/dist/bridge/proxy.d.ts.map +1 -1
- package/dist/bridge/serialization.d.ts.map +1 -1
- package/dist/bridge/server.d.ts +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/browser-shim/handler.d.ts +1 -1
- package/dist/browser-shim/handler.d.ts.map +1 -1
- package/dist/browser.d.ts +1651 -34
- package/dist/browser.d.ts.map +1 -1
- package/dist/build-1kmkwqgh.js +53 -0
- package/dist/build-506kjhcm.js +53 -0
- package/dist/build-66866ahs.js +53 -0
- package/dist/build-g1adm3ww.js +53 -0
- package/dist/build-p3r3117t.js +53 -0
- package/dist/bundler/do-bundler.d.ts.map +1 -1
- package/dist/bundler/rolldown-shared.d.ts +24 -0
- package/dist/bundler/rolldown-shared.d.ts.map +1 -0
- package/dist/bundler/worker-bundler.d.ts +0 -1
- package/dist/bundler/worker-bundler.d.ts.map +1 -1
- package/dist/cli/command-utils.d.ts +18 -0
- package/dist/cli/command-utils.d.ts.map +1 -0
- package/dist/cli/commands/account.d.ts +1 -1
- package/dist/cli/commands/account.d.ts.map +1 -1
- package/dist/cli/commands/build-artifacts.d.ts +27 -0
- package/dist/cli/commands/build-artifacts.d.ts.map +1 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/config.d.ts +4 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/login.d.ts +4 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/cleanup.d.ts +9 -0
- package/dist/cli/commands/previews-support/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/family.d.ts +10 -0
- package/dist/cli/commands/previews-support/family.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/render.d.ts +8 -0
- package/dist/cli/commands/previews-support/render.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/theme.d.ts +10 -0
- package/dist/cli/commands/previews-support/theme.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/types.d.ts +70 -0
- package/dist/cli/commands/previews-support/types.d.ts.map +1 -0
- package/dist/cli/commands/previews.d.ts +4 -0
- package/dist/cli/commands/previews.d.ts.map +1 -0
- package/dist/cli/commands/productions.d.ts +4 -0
- package/dist/cli/commands/productions.d.ts.map +1 -0
- package/dist/cli/commands/token.d.ts +4 -0
- package/dist/cli/commands/token.d.ts.map +1 -0
- package/dist/cli/commands/type-generation/discovery.d.ts +7 -0
- package/dist/cli/commands/type-generation/discovery.d.ts.map +1 -0
- package/dist/cli/commands/type-generation/generator.d.ts +44 -0
- package/dist/cli/commands/type-generation/generator.d.ts.map +1 -0
- package/dist/cli/commands/type-generation/models.d.ts +27 -0
- package/dist/cli/commands/type-generation/models.d.ts.map +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/worker.d.ts +4 -0
- package/dist/cli/commands/worker.d.ts.map +1 -0
- package/dist/cli/config-path.d.ts +2 -1
- package/dist/cli/config-path.d.ts.map +1 -1
- package/dist/cli/deploy-strategy.d.ts +17 -0
- package/dist/cli/deploy-strategy.d.ts.map +1 -0
- package/dist/cli/deploy-target.d.ts +17 -0
- package/dist/cli/deploy-target.d.ts.map +1 -0
- package/dist/cli/generated-artifacts.d.ts +12 -0
- package/dist/cli/generated-artifacts.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/account.d.ts +3 -0
- package/dist/cli/help-pages/pages/account.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/core.d.ts +4 -0
- package/dist/cli/help-pages/pages/core.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/index.d.ts +3 -0
- package/dist/cli/help-pages/pages/index.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/misc.d.ts +3 -0
- package/dist/cli/help-pages/pages/misc.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/previews.d.ts +3 -0
- package/dist/cli/help-pages/pages/previews.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/productions.d.ts +3 -0
- package/dist/cli/help-pages/pages/productions.d.ts.map +1 -0
- package/dist/cli/help-pages/render.d.ts +12 -0
- package/dist/cli/help-pages/render.d.ts.map +1 -0
- package/dist/cli/help-pages/shared.d.ts +15 -0
- package/dist/cli/help-pages/shared.d.ts.map +1 -0
- package/dist/cli/help-pages/types.d.ts +23 -0
- package/dist/cli/help-pages/types.d.ts.map +1 -0
- package/dist/cli/help.d.ts +6 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/preview-bindings.d.ts +42 -0
- package/dist/cli/preview-bindings.d.ts.map +1 -0
- package/dist/cli/preview.d.ts +11 -0
- package/dist/cli/preview.d.ts.map +1 -0
- package/dist/cli/ui.d.ts +37 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/workspace-build-guard.d.ts +14 -0
- package/dist/cli/workspace-build-guard.d.ts.map +1 -0
- package/dist/cloudflare/account-core.d.ts +6 -0
- package/dist/cloudflare/account-core.d.ts.map +1 -0
- package/dist/cloudflare/account-resources.d.ts +40 -0
- package/dist/cloudflare/account-resources.d.ts.map +1 -0
- package/dist/cloudflare/account-status.d.ts +11 -0
- package/dist/cloudflare/account-status.d.ts.map +1 -0
- package/dist/cloudflare/account-workers.d.ts +14 -0
- package/dist/cloudflare/account-workers.d.ts.map +1 -0
- package/dist/cloudflare/account.d.ts +7 -64
- package/dist/cloudflare/account.d.ts.map +1 -1
- package/dist/cloudflare/api.d.ts +4 -0
- package/dist/cloudflare/api.d.ts.map +1 -1
- package/dist/cloudflare/index.d.ts +57 -2
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/kv-namespace.d.ts +3 -0
- package/dist/cloudflare/kv-namespace.d.ts.map +1 -0
- package/dist/cloudflare/preferences.d.ts.map +1 -1
- package/dist/cloudflare/preview-registry-cache.d.ts +6 -0
- package/dist/cloudflare/preview-registry-cache.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-records.d.ts +61 -0
- package/dist/cloudflare/preview-registry-records.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-store.d.ts +14 -0
- package/dist/cloudflare/preview-registry-store.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-types.d.ts +103 -0
- package/dist/cloudflare/preview-registry-types.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry.d.ts +42 -0
- package/dist/cloudflare/preview-registry.d.ts.map +1 -0
- package/dist/cloudflare/registry-schema.d.ts +253 -0
- package/dist/cloudflare/registry-schema.d.ts.map +1 -0
- package/dist/cloudflare/tokens.d.ts +18 -0
- package/dist/cloudflare/tokens.d.ts.map +1 -0
- package/dist/cloudflare/types.d.ts +122 -5
- package/dist/cloudflare/types.d.ts.map +1 -1
- package/dist/cloudflare/usage.d.ts.map +1 -1
- package/dist/config/compiler.d.ts +4 -0
- package/dist/config/compiler.d.ts.map +1 -1
- package/dist/config/framework-providers.d.ts +9 -0
- package/dist/config/framework-providers.d.ts.map +1 -0
- package/dist/config/index.d.ts +5 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/loader.d.ts +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/preview-resources.d.ts +77 -0
- package/dist/config/preview-resources.d.ts.map +1 -0
- package/dist/config/preview.d.ts +31 -0
- package/dist/config/preview.d.ts.map +1 -0
- package/dist/config/ref.d.ts +0 -22
- package/dist/config/ref.d.ts.map +1 -1
- package/dist/config/resolve.d.ts +1 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resource-resolution.d.ts +60 -0
- package/dist/config/resource-resolution.d.ts.map +1 -0
- package/dist/config/schema-bindings.d.ts +693 -0
- package/dist/config/schema-bindings.d.ts.map +1 -0
- package/dist/config/schema-build.d.ts +67 -0
- package/dist/config/schema-build.d.ts.map +1 -0
- package/dist/config/schema-env.d.ts +1341 -0
- package/dist/config/schema-env.d.ts.map +1 -0
- package/dist/config/schema-normalization.d.ts +64 -0
- package/dist/config/schema-normalization.d.ts.map +1 -0
- package/dist/config/schema-runtime.d.ts +230 -0
- package/dist/config/schema-runtime.d.ts.map +1 -0
- package/dist/config/schema.d.ts +640 -3669
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config-entry.d.ts +5 -0
- package/dist/config-entry.d.ts.map +1 -0
- package/dist/config-fjwke42y.js +59 -0
- package/dist/config-hwdqjse7.js +59 -0
- package/dist/config-pxvewrhv.js +59 -0
- package/dist/config-q0g5qdga.js +59 -0
- package/dist/decorators/durable-object.d.ts.map +1 -1
- package/dist/deploy-7nmzc9r8.js +609 -0
- package/dist/deploy-csfhdr64.js +691 -0
- package/dist/deploy-ex4g5avz.js +621 -0
- package/dist/deploy-jnb0bhka.js +609 -0
- package/dist/deploy-tp0g6qdp.js +609 -0
- package/dist/deploy-ykpcjkc2.js +690 -0
- package/dist/{dev-c1xc1gq9.js → dev-2pd33m28.js} +392 -348
- package/dist/dev-7ef5e2j1.js +2409 -0
- package/dist/dev-8nssqatr.js +2409 -0
- package/dist/dev-grznx8fn.js +2409 -0
- package/dist/dev-server/d1-migrations.d.ts +14 -0
- package/dist/dev-server/d1-migrations.d.ts.map +1 -0
- package/dist/dev-server/gateway-script.d.ts +8 -0
- package/dist/dev-server/gateway-script.d.ts.map +1 -0
- package/dist/dev-server/runtime-stdio.d.ts.map +1 -1
- package/dist/dev-server/server.d.ts.map +1 -1
- package/dist/dev-server/vite-process.d.ts +14 -0
- package/dist/dev-server/vite-process.d.ts.map +1 -0
- package/dist/dev-server/vite-utils.d.ts +1 -1
- package/dist/dev-server/vite-utils.d.ts.map +1 -1
- package/dist/dev-server/worker-source-watcher.d.ts +11 -0
- package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
- package/dist/dev-server/worker-surface-paths.d.ts +6 -0
- package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
- package/dist/{doctor-z4ffybce.js → doctor-04ammrrh.js} +67 -31
- package/dist/doctor-fmjj65mc.js +245 -0
- package/dist/doctor-fzkznce1.js +245 -0
- package/dist/doctor-sa5xv1bz.js +245 -0
- package/dist/index-091sh1ma.js +1229 -0
- package/dist/index-0apbm26n.js +788 -0
- package/dist/index-0eqksag4.js +418 -0
- package/dist/{index-dr6sbp8d.js → index-0kfzdywd.js} +15 -2
- package/dist/index-0w826dsr.js +379 -0
- package/dist/{index-rfhx0yd5.js → index-11m5a8wd.js} +110 -32
- package/dist/{index-xxwbb2nt.js → index-1sp39f2f.js} +114 -58
- package/dist/index-2jnrqbny.js +1301 -0
- package/dist/index-2pb7b9mw.js +378 -0
- package/dist/{index-0kzg8wed.js → index-2x53aqjm.js} +1071 -890
- package/dist/index-3ke5d2vn.js +1229 -0
- package/dist/index-43dq8yx8.js +788 -0
- package/dist/index-4rrttqj5.js +378 -0
- package/dist/index-4v9bc2pc.js +1367 -0
- package/dist/index-61jsjnsv.js +280 -0
- package/dist/index-6jef5emv.js +176 -0
- package/dist/index-6psz1h4c.js +788 -0
- package/dist/index-72mve6vh.js +168 -0
- package/dist/{index-zbvmtcn2.js → index-74198nxd.js} +179 -77
- package/dist/index-7g8zyws4.js +192 -0
- package/dist/index-7kcxjhta.js +456 -0
- package/dist/index-7v583xan.js +418 -0
- package/dist/index-7x0ybbtx.js +133 -0
- package/dist/index-816krz9p.js +52 -0
- package/dist/index-82f1z98k.js +41 -0
- package/dist/index-8t5nb4qx.js +133 -0
- package/dist/index-9az6s7ad.js +52 -0
- package/dist/{index-59df49vn.js → index-9ba1etyz.js} +29 -51
- package/dist/{index-001mw014.js → index-9fbtk7gv.js} +134 -248
- package/dist/index-9n6djthj.js +490 -0
- package/dist/index-aabgympv.js +39 -0
- package/dist/index-b8m6883k.js +74 -0
- package/dist/{index-5yxg30va.js → index-cgbvmse6.js} +15 -6
- package/dist/index-d8etnfef.js +1229 -0
- package/dist/index-e9yw4d6y.js +133 -0
- package/dist/index-epw1jxz5.js +1204 -0
- package/dist/index-f85s8gj3.js +2649 -0
- package/dist/index-fe2ngvh7.js +1229 -0
- package/dist/index-fvsadj32.js +192 -0
- package/dist/index-gs4y9gdf.js +456 -0
- package/dist/{index-fef08w43.js → index-h18pxvzs.js} +7 -6
- package/dist/index-hfj1a2c4.js +2649 -0
- package/dist/{index-8gtqgb3q.js → index-hjy8ctpc.js} +14 -92
- package/dist/index-htzf0py1.js +1204 -0
- package/dist/index-j185x270.js +897 -0
- package/dist/index-jb75kwa4.js +519 -0
- package/dist/index-jwd8pcb2.js +897 -0
- package/dist/index-k29yjhv0.js +52 -0
- package/dist/index-k6vq6kkt.js +456 -0
- package/dist/{index-vky23txa.js → index-m3fmw6mx.js} +2 -2
- package/dist/index-maxpsfk8.js +402 -0
- package/dist/index-mbdmrner.js +402 -0
- package/dist/index-mea5bc45.js +418 -0
- package/dist/index-mqekt778.js +185 -0
- package/dist/index-na3mnm1k.js +74 -0
- package/dist/index-p03n4qet.js +1367 -0
- package/dist/index-p296ban8.js +191 -0
- package/dist/index-pnbs1b8k.js +280 -0
- package/dist/index-q4kaz181.js +1207 -0
- package/dist/index-ry131z23.js +378 -0
- package/dist/index-sgb7c8nm.js +402 -0
- package/dist/index-sqrksgb2.js +133 -0
- package/dist/index-stgn34cr.js +148 -0
- package/dist/{index-v8vvsn9x.js → index-t08te69w.js} +1 -18
- package/dist/index-thna1tkd.js +280 -0
- package/dist/index-v5nmqthy.js +74 -0
- package/dist/{index-n932ytmq.js → index-vt4yxkmf.js} +2 -2
- package/dist/index-wyq6c6yj.js +402 -0
- package/dist/index-wztc9stx.js +418 -0
- package/dist/index-x9cwdxw5.js +456 -0
- package/dist/index-xk9djfjp.js +519 -0
- package/dist/index-yc0gcchc.js +418 -0
- package/dist/index-yqbxjysa.js +897 -0
- package/dist/index-yzddwp02.js +788 -0
- package/dist/index-zfhq6s96.js +74 -0
- package/dist/index-zt22fe2j.js +54 -0
- package/dist/index-zyt5byt6.js +2649 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/{init-na2atvz2.js → init-r4hnxan3.js} +24 -17
- package/dist/login-2hnz4m4n.js +77 -0
- package/dist/login-5bsxxpvc.js +77 -0
- package/dist/login-6tzvczw2.js +77 -0
- package/dist/login-bhaw72zc.js +77 -0
- package/dist/login-x8tgckqm.js +77 -0
- package/dist/previews-3rn8mz2c.js +1168 -0
- package/dist/previews-d487qde5.js +1200 -0
- package/dist/previews-gm3z0syj.js +1168 -0
- package/dist/previews-j9ymq4ys.js +1169 -0
- package/dist/previews-q031mx34.js +1168 -0
- package/dist/productions-120xg0aq.js +505 -0
- package/dist/productions-5ev5qweg.js +505 -0
- package/dist/productions-me3tdvr9.js +505 -0
- package/dist/productions-p5rbgp2f.js +505 -0
- package/dist/productions-x9p0pym1.js +505 -0
- package/dist/runtime/context-events.d.ts +13 -0
- package/dist/runtime/context-events.d.ts.map +1 -0
- package/dist/runtime/context-types.d.ts +82 -0
- package/dist/runtime/context-types.d.ts.map +1 -0
- package/dist/runtime/context.d.ts +6 -267
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/exports.d.ts +3 -3
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/middleware.d.ts +8 -38
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/src/browser.js +23 -14
- package/dist/src/cli/index.js +3 -1
- package/dist/src/cloudflare/index.js +49 -2
- package/dist/src/config-entry.js +14 -0
- package/dist/src/index.js +33 -20
- package/dist/src/runtime/index.js +3 -9
- package/dist/src/sveltekit/index.js +10 -7
- package/dist/src/test/index.js +16 -18
- package/dist/src/vite/index.js +7 -4
- package/dist/sveltekit/platform.d.ts +1 -1
- package/dist/sveltekit/platform.d.ts.map +1 -1
- package/dist/test/cf.d.ts +10 -10
- package/dist/test/email.d.ts.map +1 -1
- package/dist/test/index.d.ts +1 -6
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/queue.d.ts.map +1 -1
- package/dist/test/remote-ai.d.ts.map +1 -1
- package/dist/test/remote-cloudflare.d.ts +13 -0
- package/dist/test/remote-cloudflare.d.ts.map +1 -0
- package/dist/test/remote-vectorize.d.ts.map +1 -1
- package/dist/test/resolve-service-bindings.d.ts.map +1 -1
- package/dist/test/scheduled.d.ts.map +1 -1
- package/dist/test/should-skip.d.ts +0 -18
- package/dist/test/should-skip.d.ts.map +1 -1
- package/dist/test/simple-context-durable-objects.d.ts +6 -0
- package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
- package/dist/test/simple-context-gateway-script.d.ts +2 -0
- package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
- package/dist/test/simple-context-paths.d.ts +40 -0
- package/dist/test/simple-context-paths.d.ts.map +1 -0
- package/dist/test/simple-context.d.ts +1 -23
- package/dist/test/simple-context.d.ts.map +1 -1
- package/dist/test/tail.d.ts.map +1 -1
- package/dist/test/worker.d.ts.map +1 -1
- package/dist/token-kedhcret.js +419 -0
- package/dist/token-m8jmnjwk.js +419 -0
- package/dist/{types-sffr9681.js → types-0sqwkp7x.js} +244 -139
- package/dist/types-1gwr2ex6.js +572 -0
- package/dist/types-6e5yx6km.js +572 -0
- package/dist/types-p0gckpn6.js +572 -0
- package/dist/utils/send-email.d.ts.map +1 -1
- package/dist/vite/config-file.d.ts.map +1 -1
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/worker-0srh2jfr.js +513 -0
- package/dist/worker-4xrfd10a.js +513 -0
- package/dist/worker-entry/composed-worker.d.ts +0 -7
- package/dist/worker-entry/composed-worker.d.ts.map +1 -1
- package/dist/worker-entry/surface-paths.d.ts +15 -0
- package/dist/worker-entry/surface-paths.d.ts.map +1 -0
- package/dist/worker-qtam8grz.js +513 -0
- package/dist/worker-qzm0b7br.js +513 -0
- package/dist/worker-y9ha6g44.js +513 -0
- package/package.json +17 -10
- package/R2.md +0 -200
- package/dist/account-8psavtg6.js +0 -420
- package/dist/build-n639efmn.js +0 -101
- package/dist/deploy-zvnq6xh7.js +0 -117
- package/dist/index-2q3pmzrx.js +0 -90
- package/dist/index-f4q0jbnj.js +0 -195
- package/dist/index-n7rs26ft.js +0 -77
- package/dist/index-tfyxa77h.js +0 -850
- package/dist/index-wyf3s77s.js +0 -343
- package/dist/test/multi-worker-context.d.ts +0 -114
- package/dist/test/multi-worker-context.d.ts.map +0 -1
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveConfigCandidatePath
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-816krz9p.js";
|
|
4
4
|
import {
|
|
5
5
|
getDependencies
|
|
6
6
|
} from "./index-1xpj0m4r.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
bold,
|
|
9
|
+
createCliTheme,
|
|
10
|
+
dim
|
|
11
|
+
} from "./index-stgn34cr.js";
|
|
12
|
+
import"./index-3t6rypgc.js";
|
|
13
|
+
import {
|
|
14
|
+
discoverEntrypointsAsync
|
|
15
|
+
} from "./index-zt22fe2j.js";
|
|
16
|
+
import {
|
|
9
17
|
resolvePackageSpecifier
|
|
10
|
-
} from "./index-
|
|
18
|
+
} from "./index-82f1z98k.js";
|
|
11
19
|
import {
|
|
12
20
|
DEFAULT_DO_PATTERN,
|
|
13
21
|
DEFAULT_ENTRYPOINT_PATTERN,
|
|
@@ -16,90 +24,179 @@ import {
|
|
|
16
24
|
import {
|
|
17
25
|
findDurableObjectClasses
|
|
18
26
|
} from "./index-9wt9x09k.js";
|
|
19
|
-
import"./index-
|
|
27
|
+
import"./index-thna1tkd.js";
|
|
20
28
|
import {
|
|
21
29
|
loadConfig,
|
|
22
30
|
normalizeDOBinding
|
|
23
|
-
} from "./index-
|
|
24
|
-
import"./index-
|
|
25
|
-
import
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
} from "./index-0apbm26n.js";
|
|
32
|
+
import"./index-jb75kwa4.js";
|
|
33
|
+
import"./index-0w826dsr.js";
|
|
34
|
+
import"./index-6jef5emv.js";
|
|
35
|
+
import"./index-t08te69w.js";
|
|
36
|
+
import"./index-37x76zdn.js";
|
|
28
37
|
|
|
29
38
|
// src/cli/commands/types.ts
|
|
30
|
-
import { resolve
|
|
39
|
+
import { resolve } from "pathe";
|
|
40
|
+
|
|
41
|
+
// src/cli/commands/type-generation/discovery.ts
|
|
42
|
+
import { readFile } from "node:fs/promises";
|
|
43
|
+
import { dirname, relative } from "pathe";
|
|
44
|
+
var DEFAULT_INTERFACE_LOOKUP_KEYS = new Set(["Worker", "Default", "MathService"]);
|
|
45
|
+
var interfaceTypeCache = new Map;
|
|
46
|
+
async function readFileIfAvailable(filePath) {
|
|
47
|
+
try {
|
|
48
|
+
return await readFile(filePath, "utf-8");
|
|
49
|
+
} catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function getInterfaceSearchKey(searchDirs) {
|
|
54
|
+
return [...new Set(searchDirs)].sort((left, right) => left.localeCompare(right)).join("\x00");
|
|
55
|
+
}
|
|
56
|
+
function getPatternMatches(pattern, code) {
|
|
57
|
+
const matches = [];
|
|
58
|
+
pattern.lastIndex = 0;
|
|
59
|
+
let nextMatch = pattern.exec(code);
|
|
60
|
+
while (nextMatch !== null) {
|
|
61
|
+
matches.push(nextMatch);
|
|
62
|
+
nextMatch = pattern.exec(code);
|
|
63
|
+
}
|
|
64
|
+
return matches;
|
|
65
|
+
}
|
|
66
|
+
function getInterfaceBaseName(interfaceName) {
|
|
67
|
+
if (interfaceName.endsWith("Interface")) {
|
|
68
|
+
return interfaceName.slice(0, -9);
|
|
69
|
+
}
|
|
70
|
+
if (interfaceName.endsWith("Rpc")) {
|
|
71
|
+
return interfaceName.slice(0, -3);
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
function registerInterfaceType(interfaces, baseName, interfaceInfo) {
|
|
76
|
+
if (!interfaces.has(baseName)) {
|
|
77
|
+
interfaces.set(baseName, interfaceInfo);
|
|
78
|
+
}
|
|
79
|
+
if (!interfaces.has("__default__") && DEFAULT_INTERFACE_LOOKUP_KEYS.has(baseName)) {
|
|
80
|
+
interfaces.set("__default__", interfaceInfo);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function collectInterfaceTypesFromFile(interfaces, filePath) {
|
|
84
|
+
const code = await readFileIfAvailable(filePath);
|
|
85
|
+
if (!code) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const interfacePattern = /export\s+interface\s+(\w+(?:Interface|Rpc))\s*\{/g;
|
|
89
|
+
for (const match of getPatternMatches(interfacePattern, code)) {
|
|
90
|
+
const interfaceName = match[1];
|
|
91
|
+
const baseName = getInterfaceBaseName(interfaceName);
|
|
92
|
+
if (!baseName) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
registerInterfaceType(interfaces, baseName, {
|
|
96
|
+
filePath,
|
|
97
|
+
interfaceName
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
31
101
|
async function parseConfigForRefs(configPath) {
|
|
32
|
-
const fs = await import("node:fs/promises");
|
|
33
102
|
const refs = [];
|
|
34
103
|
const serviceBindings = [];
|
|
35
104
|
const doBindings = [];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
105
|
+
const code = await readFileIfAvailable(configPath);
|
|
106
|
+
if (!code) {
|
|
107
|
+
return {
|
|
108
|
+
refs,
|
|
109
|
+
serviceBindings,
|
|
110
|
+
doBindings
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const refPattern = /const\s+(\w+)\s*=\s*ref\s*\(\s*(?:'[^']*'\s*,\s*)?(?:\(\s*\)\s*=>\s*)?import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
|
|
114
|
+
for (const match of getPatternMatches(refPattern, code)) {
|
|
115
|
+
refs.push({
|
|
116
|
+
varName: match[1],
|
|
117
|
+
importPath: match[2]
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
const servicePattern = /(\w+)\s*:\s*(\w+)\.worker(?:\s*\(\s*['"](\w+)['"]\s*\))?/g;
|
|
121
|
+
for (const match of getPatternMatches(servicePattern, code)) {
|
|
122
|
+
serviceBindings.push({
|
|
123
|
+
bindingName: match[1],
|
|
124
|
+
varName: match[2],
|
|
125
|
+
entrypoint: match[3]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const doPattern = /(\w+)\s*:\s*(\w+)\.([A-Z][A-Z0-9_]*)\s*[,\n\r}]/g;
|
|
129
|
+
for (const match of getPatternMatches(doPattern, code)) {
|
|
130
|
+
if (match[3] === "worker") {
|
|
131
|
+
continue;
|
|
63
132
|
}
|
|
64
|
-
|
|
65
|
-
|
|
133
|
+
doBindings.push({
|
|
134
|
+
bindingName: match[1],
|
|
135
|
+
varName: match[2],
|
|
136
|
+
doName: match[3]
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
refs,
|
|
141
|
+
serviceBindings,
|
|
142
|
+
doBindings
|
|
143
|
+
};
|
|
66
144
|
}
|
|
67
145
|
async function findInterfaceTypes(searchDirs) {
|
|
68
|
-
const fs = await import("node:fs/promises");
|
|
69
146
|
const interfaces = new Map;
|
|
70
|
-
for (const dir of searchDirs) {
|
|
147
|
+
for (const dir of [...new Set(searchDirs)]) {
|
|
71
148
|
const typeFiles = await findFiles("**/*.types.ts", { cwd: dir });
|
|
72
149
|
const srcFiles = await findFiles("src/**/*.ts", { cwd: dir });
|
|
73
150
|
const allFiles = [...new Set([...typeFiles, ...srcFiles])];
|
|
74
151
|
for (const filePath of allFiles) {
|
|
75
|
-
|
|
76
|
-
const code = await fs.readFile(filePath, "utf-8");
|
|
77
|
-
const interfacePattern = /export\s+interface\s+(\w+(?:Interface|Rpc))\s*\{/g;
|
|
78
|
-
let match;
|
|
79
|
-
while ((match = interfacePattern.exec(code)) !== null) {
|
|
80
|
-
const interfaceName = match[1];
|
|
81
|
-
let baseName;
|
|
82
|
-
if (interfaceName.endsWith("Interface")) {
|
|
83
|
-
baseName = interfaceName.slice(0, -9);
|
|
84
|
-
} else if (interfaceName.endsWith("Rpc")) {
|
|
85
|
-
baseName = interfaceName.slice(0, -3);
|
|
86
|
-
} else {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (!interfaces.has(baseName)) {
|
|
90
|
-
interfaces.set(baseName, { filePath, interfaceName });
|
|
91
|
-
}
|
|
92
|
-
if (!interfaces.has("__default__")) {
|
|
93
|
-
if (baseName === "Worker" || baseName === "Default" || baseName === "MathService") {
|
|
94
|
-
interfaces.set("__default__", { filePath, interfaceName });
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
} catch {}
|
|
152
|
+
await collectInterfaceTypesFromFile(interfaces, filePath);
|
|
99
153
|
}
|
|
100
154
|
}
|
|
101
155
|
return interfaces;
|
|
102
156
|
}
|
|
157
|
+
async function getCachedInterfaceTypes(searchDirs) {
|
|
158
|
+
const cacheKey = getInterfaceSearchKey(searchDirs);
|
|
159
|
+
const cached = interfaceTypeCache.get(cacheKey);
|
|
160
|
+
if (cached) {
|
|
161
|
+
return cached;
|
|
162
|
+
}
|
|
163
|
+
const pending = findInterfaceTypes(searchDirs);
|
|
164
|
+
interfaceTypeCache.set(cacheKey, pending);
|
|
165
|
+
try {
|
|
166
|
+
return await pending;
|
|
167
|
+
} catch (error) {
|
|
168
|
+
interfaceTypeCache.delete(cacheKey);
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async function discoverDurableObjects(cwd, pattern = DEFAULT_DO_PATTERN) {
|
|
173
|
+
const discovered = [];
|
|
174
|
+
const files = await findFiles(pattern, { cwd });
|
|
175
|
+
for (const filePath of files) {
|
|
176
|
+
const code = await readFileIfAvailable(filePath);
|
|
177
|
+
if (!code) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const classNames = findDurableObjectClasses(code);
|
|
181
|
+
for (const className of classNames) {
|
|
182
|
+
const bindingName = className.replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").toUpperCase();
|
|
183
|
+
discovered.push({
|
|
184
|
+
className,
|
|
185
|
+
filePath,
|
|
186
|
+
bindingName
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return discovered;
|
|
191
|
+
}
|
|
192
|
+
function generateImportPath(cwd, filePath) {
|
|
193
|
+
let relativePath = relative(cwd, filePath);
|
|
194
|
+
relativePath = relativePath.replace(/\.(ts|tsx|js|jsx)$/, "");
|
|
195
|
+
if (!relativePath.startsWith(".") && !relativePath.startsWith("/")) {
|
|
196
|
+
relativePath = `./${relativePath}`;
|
|
197
|
+
}
|
|
198
|
+
return relativePath;
|
|
199
|
+
}
|
|
103
200
|
async function resolveReferencedConfigs(configPath, cwd) {
|
|
104
201
|
const referenced = [];
|
|
105
202
|
const { refs, serviceBindings, doBindings } = await parseConfigForRefs(configPath);
|
|
@@ -107,6 +204,7 @@ async function resolveReferencedConfigs(configPath, cwd) {
|
|
|
107
204
|
return referenced;
|
|
108
205
|
}
|
|
109
206
|
const configDir = dirname(configPath);
|
|
207
|
+
const referencedConfigDetailsByPath = new Map;
|
|
110
208
|
for (const ref of refs) {
|
|
111
209
|
const refImportPath = resolvePackageSpecifier(ref.importPath, configDir);
|
|
112
210
|
const refConfigPath = await resolveConfigCandidatePath(refImportPath);
|
|
@@ -114,17 +212,32 @@ async function resolveReferencedConfigs(configPath, cwd) {
|
|
|
114
212
|
continue;
|
|
115
213
|
}
|
|
116
214
|
try {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
215
|
+
let referencedConfigDetails = referencedConfigDetailsByPath.get(refConfigPath);
|
|
216
|
+
if (!referencedConfigDetails) {
|
|
217
|
+
referencedConfigDetails = (async () => {
|
|
218
|
+
const refDir2 = dirname(refConfigPath);
|
|
219
|
+
return {
|
|
220
|
+
refDir: refDir2,
|
|
221
|
+
entrypoints: await discoverEntrypointsAsync(refDir2, DEFAULT_ENTRYPOINT_PATTERN),
|
|
222
|
+
refDOs: await discoverDurableObjects(refDir2, DEFAULT_DO_PATTERN),
|
|
223
|
+
interfaceMap: await getCachedInterfaceTypes([configDir, refDir2])
|
|
224
|
+
};
|
|
225
|
+
})();
|
|
226
|
+
referencedConfigDetailsByPath.set(refConfigPath, referencedConfigDetails);
|
|
227
|
+
}
|
|
228
|
+
const {
|
|
229
|
+
refDir,
|
|
230
|
+
entrypoints,
|
|
231
|
+
refDOs,
|
|
232
|
+
interfaceMap
|
|
233
|
+
} = await referencedConfigDetails;
|
|
234
|
+
const bindings = serviceBindings.filter((serviceBinding) => serviceBinding.varName === ref.varName).map((serviceBinding) => {
|
|
122
235
|
const info = {
|
|
123
|
-
bindingName:
|
|
124
|
-
entrypoint:
|
|
236
|
+
bindingName: serviceBinding.bindingName,
|
|
237
|
+
entrypoint: serviceBinding.entrypoint
|
|
125
238
|
};
|
|
126
|
-
const lookupKey =
|
|
127
|
-
const interfaceInfo = interfaceMap.get(lookupKey) ||
|
|
239
|
+
const lookupKey = serviceBinding.entrypoint || "__default__";
|
|
240
|
+
const interfaceInfo = interfaceMap.get(lookupKey) || (serviceBinding.entrypoint ? interfaceMap.get(serviceBinding.entrypoint) : undefined);
|
|
128
241
|
if (interfaceInfo) {
|
|
129
242
|
info.interfaceImport = generateImportPath(cwd, interfaceInfo.filePath);
|
|
130
243
|
info.interfaceType = interfaceInfo.interfaceName;
|
|
@@ -132,16 +245,17 @@ async function resolveReferencedConfigs(configPath, cwd) {
|
|
|
132
245
|
return info;
|
|
133
246
|
});
|
|
134
247
|
const crossWorkerDOs = doBindings.filter((doBinding) => doBinding.varName === ref.varName).map((doBinding) => {
|
|
135
|
-
const matchingDO = refDOs.find((
|
|
136
|
-
if (matchingDO) {
|
|
137
|
-
return
|
|
138
|
-
bindingName: doBinding.bindingName,
|
|
139
|
-
doName: doBinding.doName,
|
|
140
|
-
className: matchingDO.className,
|
|
141
|
-
filePath: matchingDO.filePath
|
|
142
|
-
};
|
|
248
|
+
const matchingDO = refDOs.find((doInfo) => doInfo.bindingName === doBinding.doName);
|
|
249
|
+
if (!matchingDO) {
|
|
250
|
+
return null;
|
|
143
251
|
}
|
|
144
|
-
|
|
252
|
+
const crossWorkerDO = {
|
|
253
|
+
bindingName: doBinding.bindingName,
|
|
254
|
+
doName: doBinding.doName,
|
|
255
|
+
className: matchingDO.className,
|
|
256
|
+
filePath: matchingDO.filePath
|
|
257
|
+
};
|
|
258
|
+
return crossWorkerDO;
|
|
145
259
|
}).filter((item) => item !== null);
|
|
146
260
|
referenced.push({
|
|
147
261
|
varName: ref.varName,
|
|
@@ -155,34 +269,8 @@ async function resolveReferencedConfigs(configPath, cwd) {
|
|
|
155
269
|
}
|
|
156
270
|
return referenced;
|
|
157
271
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const discovered = [];
|
|
161
|
-
const files = await findFiles(pattern, { cwd });
|
|
162
|
-
for (const filePath of files) {
|
|
163
|
-
try {
|
|
164
|
-
const code = await fs.readFile(filePath, "utf-8");
|
|
165
|
-
const classNames = findDurableObjectClasses(code);
|
|
166
|
-
for (const className of classNames) {
|
|
167
|
-
const bindingName = className.replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").toUpperCase();
|
|
168
|
-
discovered.push({
|
|
169
|
-
className,
|
|
170
|
-
filePath,
|
|
171
|
-
bindingName
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
} catch {}
|
|
175
|
-
}
|
|
176
|
-
return discovered;
|
|
177
|
-
}
|
|
178
|
-
function generateImportPath(cwd, filePath) {
|
|
179
|
-
let relativePath = relative(cwd, filePath);
|
|
180
|
-
relativePath = relativePath.replace(/\.(ts|tsx|js|jsx)$/, "");
|
|
181
|
-
if (!relativePath.startsWith(".") && !relativePath.startsWith("/")) {
|
|
182
|
-
relativePath = "./" + relativePath;
|
|
183
|
-
}
|
|
184
|
-
return relativePath;
|
|
185
|
-
}
|
|
272
|
+
|
|
273
|
+
// src/cli/commands/type-generation/generator.ts
|
|
186
274
|
function generateBindingMembers(config, doClassMap, crossWorkerDOMap, serviceBindingMap, cwd, indent) {
|
|
187
275
|
const lines = [];
|
|
188
276
|
const imports = [];
|
|
@@ -232,9 +320,9 @@ function generateBindingMembers(config, doClassMap, crossWorkerDOMap, serviceBin
|
|
|
232
320
|
if (serviceInfo?.interfaceType && serviceInfo.interfaceImport) {
|
|
233
321
|
imports.push(`import type { ${serviceInfo.interfaceType} } from '${serviceInfo.interfaceImport}'`);
|
|
234
322
|
lines.push(`${indent}${binding}: ${serviceInfo.interfaceType}`);
|
|
235
|
-
|
|
236
|
-
lines.push(`${indent}${binding}: Fetcher`);
|
|
323
|
+
continue;
|
|
237
324
|
}
|
|
325
|
+
lines.push(`${indent}${binding}: Fetcher`);
|
|
238
326
|
}
|
|
239
327
|
}
|
|
240
328
|
if (config.bindings.ai) {
|
|
@@ -251,7 +339,9 @@ function generateBindingMembers(config, doClassMap, crossWorkerDOMap, serviceBin
|
|
|
251
339
|
}
|
|
252
340
|
}
|
|
253
341
|
if (config.bindings.browser) {
|
|
254
|
-
|
|
342
|
+
for (const binding of Object.keys(config.bindings.browser)) {
|
|
343
|
+
lines.push(`${indent}${binding}: Fetcher`);
|
|
344
|
+
}
|
|
255
345
|
}
|
|
256
346
|
if (config.bindings.analyticsEngine) {
|
|
257
347
|
for (const binding of Object.keys(config.bindings.analyticsEngine)) {
|
|
@@ -278,10 +368,10 @@ function generateBindingMembers(config, doClassMap, crossWorkerDOMap, serviceBin
|
|
|
278
368
|
}
|
|
279
369
|
function generateBindingTypes(config, discoveredDOs, discoveredEntrypoints, referencedConfigs, cwd) {
|
|
280
370
|
const doClassMap = new Map;
|
|
281
|
-
for (const
|
|
282
|
-
doClassMap.set(
|
|
283
|
-
importPath: generateImportPath(cwd,
|
|
284
|
-
className:
|
|
371
|
+
for (const doInfo of discoveredDOs) {
|
|
372
|
+
doClassMap.set(doInfo.className, {
|
|
373
|
+
importPath: generateImportPath(cwd, doInfo.filePath),
|
|
374
|
+
className: doInfo.className
|
|
285
375
|
});
|
|
286
376
|
}
|
|
287
377
|
const crossWorkerDOMap = new Map;
|
|
@@ -292,8 +382,8 @@ function generateBindingTypes(config, discoveredDOs, discoveredEntrypoints, refe
|
|
|
292
382
|
}
|
|
293
383
|
const serviceBindingMap = new Map;
|
|
294
384
|
for (const ref of referencedConfigs) {
|
|
295
|
-
for (const
|
|
296
|
-
serviceBindingMap.set(
|
|
385
|
+
for (const serviceBinding of ref.serviceBindings) {
|
|
386
|
+
serviceBindingMap.set(serviceBinding.bindingName, serviceBinding);
|
|
297
387
|
}
|
|
298
388
|
}
|
|
299
389
|
const usedTypes = new Set;
|
|
@@ -319,7 +409,7 @@ function generateBindingTypes(config, discoveredDOs, discoveredEntrypoints, refe
|
|
|
319
409
|
usedTypes.add("VectorizeIndex");
|
|
320
410
|
if (config.bindings.hyperdrive && Object.keys(config.bindings.hyperdrive).length > 0)
|
|
321
411
|
usedTypes.add("Hyperdrive");
|
|
322
|
-
if (config.bindings.browser)
|
|
412
|
+
if (config.bindings.browser && Object.keys(config.bindings.browser).length > 0)
|
|
323
413
|
usedTypes.add("Fetcher");
|
|
324
414
|
if (config.bindings.analyticsEngine && Object.keys(config.bindings.analyticsEngine).length > 0)
|
|
325
415
|
usedTypes.add("AnalyticsEngineDataset");
|
|
@@ -331,7 +421,7 @@ function generateBindingTypes(config, discoveredDOs, discoveredEntrypoints, refe
|
|
|
331
421
|
"// Run `devflare types` to regenerate",
|
|
332
422
|
""
|
|
333
423
|
];
|
|
334
|
-
const hasLocalDOsWithClasses = config.bindings?.durableObjects && Object.values(config.bindings.durableObjects).some((doConfig) => doConfig.className && doClassMap.has(doConfig.className));
|
|
424
|
+
const hasLocalDOsWithClasses = Boolean(config.bindings?.durableObjects && Object.values(config.bindings.durableObjects).some((doConfig) => doConfig.className && doClassMap.has(doConfig.className)));
|
|
335
425
|
const hasCrossWorkerDOs = crossWorkerDOMap.size > 0;
|
|
336
426
|
const hasDOsWithClasses = hasLocalDOsWithClasses || hasCrossWorkerDOs;
|
|
337
427
|
if (usedTypes.size > 0) {
|
|
@@ -356,7 +446,7 @@ function generateBindingTypes(config, discoveredDOs, discoveredEntrypoints, refe
|
|
|
356
446
|
lines.push("}");
|
|
357
447
|
lines.push("");
|
|
358
448
|
if (discoveredEntrypoints.length > 0) {
|
|
359
|
-
const entrypointNames = discoveredEntrypoints.map((
|
|
449
|
+
const entrypointNames = discoveredEntrypoints.map((entrypoint) => `'${entrypoint.className}'`).join(" | ");
|
|
360
450
|
lines.push("/**");
|
|
361
451
|
lines.push(" * Named entrypoints discovered from ep.*.ts files.");
|
|
362
452
|
lines.push(" * Use with defineConfig<Entrypoints>() for type-safe cross-worker references.");
|
|
@@ -373,11 +463,24 @@ function generateBindingTypes(config, discoveredDOs, discoveredEntrypoints, refe
|
|
|
373
463
|
return lines.join(`
|
|
374
464
|
`);
|
|
375
465
|
}
|
|
466
|
+
|
|
467
|
+
// src/cli/commands/types.ts
|
|
468
|
+
function logTypesLine(logger, message = "") {
|
|
469
|
+
if (typeof logger.log === "function") {
|
|
470
|
+
logger.log(message);
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
if (typeof logger.info === "function") {
|
|
474
|
+
logger.info(message);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
376
477
|
async function runTypesCommand(parsed, logger, options) {
|
|
377
478
|
const cwd = options.cwd || process.cwd();
|
|
378
479
|
const configPath = parsed.options.config;
|
|
379
480
|
const outputPath = parsed.options.output || "env.d.ts";
|
|
380
|
-
|
|
481
|
+
const theme = createCliTheme(parsed.options);
|
|
482
|
+
logTypesLine(logger);
|
|
483
|
+
logTypesLine(logger, `${bold("types", theme)} ${dim("Generating TypeScript bindings", theme)}`);
|
|
381
484
|
try {
|
|
382
485
|
const config = await loadConfig({ cwd, configFile: configPath });
|
|
383
486
|
const requestedConfigPath = configPath ? resolve(cwd, configPath) : cwd;
|
|
@@ -390,9 +493,9 @@ async function runTypesCommand(parsed, logger, options) {
|
|
|
390
493
|
if (config.files?.durableObjects !== false) {
|
|
391
494
|
discoveredDOs = await discoverDurableObjects(cwd, doPattern);
|
|
392
495
|
if (discoveredDOs.length > 0) {
|
|
393
|
-
logger
|
|
394
|
-
for (const
|
|
395
|
-
logger
|
|
496
|
+
logTypesLine(logger, `Discovered ${discoveredDOs.length} Durable Object class(es):`);
|
|
497
|
+
for (const doInfo of discoveredDOs) {
|
|
498
|
+
logTypesLine(logger, ` • ${doInfo.className} → ${doInfo.bindingName}`);
|
|
396
499
|
}
|
|
397
500
|
}
|
|
398
501
|
}
|
|
@@ -400,11 +503,13 @@ async function runTypesCommand(parsed, logger, options) {
|
|
|
400
503
|
for (const [bindingName, doConfig] of Object.entries(config.bindings.durableObjects)) {
|
|
401
504
|
const normalized = normalizeDOBinding(doConfig);
|
|
402
505
|
const className = normalized.className;
|
|
403
|
-
if (!className)
|
|
506
|
+
if (!className) {
|
|
404
507
|
continue;
|
|
405
|
-
|
|
406
|
-
|
|
508
|
+
}
|
|
509
|
+
const existing = discoveredDOs.find((doInfo) => doInfo.className === className);
|
|
510
|
+
if (existing) {
|
|
407
511
|
continue;
|
|
512
|
+
}
|
|
408
513
|
if (normalized.scriptName && (normalized.scriptName.endsWith(".ts") || normalized.scriptName.endsWith(".js"))) {
|
|
409
514
|
const filePath = resolve(cwd, "src", normalized.scriptName);
|
|
410
515
|
discoveredDOs.push({
|
|
@@ -415,24 +520,24 @@ async function runTypesCommand(parsed, logger, options) {
|
|
|
415
520
|
}
|
|
416
521
|
}
|
|
417
522
|
}
|
|
418
|
-
const
|
|
523
|
+
const entrypointPattern = typeof config.files?.entrypoints === "string" ? config.files.entrypoints : DEFAULT_ENTRYPOINT_PATTERN;
|
|
419
524
|
let discoveredEntrypoints = [];
|
|
420
525
|
if (config.files?.entrypoints !== false) {
|
|
421
|
-
discoveredEntrypoints = await discoverEntrypointsAsync(cwd,
|
|
526
|
+
discoveredEntrypoints = await discoverEntrypointsAsync(cwd, entrypointPattern);
|
|
422
527
|
if (discoveredEntrypoints.length > 0) {
|
|
423
|
-
logger
|
|
424
|
-
for (const
|
|
425
|
-
logger
|
|
528
|
+
logTypesLine(logger, `Discovered ${discoveredEntrypoints.length} entrypoint class(es):`);
|
|
529
|
+
for (const entrypoint of discoveredEntrypoints) {
|
|
530
|
+
logTypesLine(logger, ` • ${entrypoint.className}`);
|
|
426
531
|
}
|
|
427
532
|
}
|
|
428
533
|
}
|
|
429
534
|
const referencedConfigs = await resolveReferencedConfigs(actualConfigPath, cwd);
|
|
430
535
|
if (referencedConfigs.length > 0) {
|
|
431
|
-
logger
|
|
536
|
+
logTypesLine(logger, `Found ${referencedConfigs.length} referenced worker(s):`);
|
|
432
537
|
for (const ref of referencedConfigs) {
|
|
433
|
-
const typedBindings = ref.serviceBindings.filter((
|
|
538
|
+
const typedBindings = ref.serviceBindings.filter((serviceBinding) => serviceBinding.interfaceType);
|
|
434
539
|
if (typedBindings.length > 0) {
|
|
435
|
-
logger
|
|
540
|
+
logTypesLine(logger, ` • ${ref.varName}: ${typedBindings.map((serviceBinding) => `${serviceBinding.bindingName} → ${serviceBinding.interfaceType}`).join(", ")}`);
|
|
436
541
|
}
|
|
437
542
|
}
|
|
438
543
|
}
|