Module: Cloudflare::Bindings
- Defined in:
- lib/homura/runtime.rb
Class Method Summary collapse
- .ai(env) ⇒ Object
- .attach!(env, js_env, js_ctx = nil) ⇒ Object
- .attach_durable_object!(env, name, js_binding) ⇒ Object
- .attach_queue!(env, name, js_binding, binding_name) ⇒ Object
- .attach_send_email!(env, js_env) ⇒ Object
- .build_env(js_env, js_ctx = nil, extras = nil) ⇒ Object
- .durable_object(env, name, id_or_name = nil) ⇒ Object
- .normalize_binding_name(name) ⇒ Object
Class Method Details
.ai(env) ⇒ Object
973 974 975 976 977 978 979 980 |
# File 'lib/homura/runtime.rb', line 973 def ai(env) raw = env['cloudflare.AI'] return nil if `(#{raw} == null || #{raw} === undefined || #{raw} === Opal.nil)` return raw if defined?(::Cloudflare::AI::Binding) && `(#{raw} != null && #{raw}.$$class === #{::Cloudflare::AI::Binding})` return ::Cloudflare::AI::Binding.new(raw) if defined?(::Cloudflare::AI::Binding) raw end |
.attach!(env, js_env, js_ctx = nil) ⇒ Object
909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 |
# File 'lib/homura/runtime.rb', line 909 def attach!(env, js_env, js_ctx = nil) env['cloudflare.env'] = js_env env['cloudflare.ctx'] = js_ctx unless `(#{js_ctx} == null || #{js_ctx} === undefined || #{js_ctx} === Opal.nil)` return env if `(#{js_env} == null || #{js_env} === undefined || #{js_env} === Opal.nil)` js_db = `#{js_env} && #{js_env}.DB` js_kv = `#{js_env} && #{js_env}.KV` js_r2 = `#{js_env} && #{js_env}.BUCKET` js_ai = `#{js_env} && #{js_env}.AI` env['cloudflare.DB'] = D1Database.new(js_db) if `#{js_db} != null` env['cloudflare.KV'] = KVNamespace.new(js_kv) if `#{js_kv} != null` env['cloudflare.BUCKET'] = R2Bucket.new(js_r2) if `#{js_r2} != null` env['cloudflare.AI'] = js_ai if `#{js_ai} != null` attach_durable_object!(env, :counter, `#{js_env} && #{js_env}.COUNTER`) attach_queue!(env, :jobs, `#{js_env} && #{js_env}.JOBS_QUEUE`, 'JOBS_QUEUE') attach_queue!(env, :jobs_dlq, `#{js_env} && #{js_env}.JOBS_DLQ`, 'JOBS_DLQ') attach_send_email!(env, js_env) env end |
.attach_durable_object!(env, name, js_binding) ⇒ Object
931 932 933 934 935 936 937 938 |
# File 'lib/homura/runtime.rb', line 931 def attach_durable_object!(env, name, js_binding) return env if `(#{js_binding} == null || #{js_binding} === undefined || #{js_binding} === Opal.nil)` return env unless defined?(::Cloudflare::DurableObjectNamespace) suffix = normalize_binding_name(name) env["cloudflare.DO_#{suffix}"] = DurableObjectNamespace.new(js_binding) env end |
.attach_queue!(env, name, js_binding, binding_name) ⇒ Object
940 941 942 943 944 945 946 947 |
# File 'lib/homura/runtime.rb', line 940 def attach_queue!(env, name, js_binding, binding_name) return env if `(#{js_binding} == null || #{js_binding} === undefined || #{js_binding} === Opal.nil)` return env unless defined?(::Cloudflare::Queue) suffix = normalize_binding_name(name) env["cloudflare.QUEUE_#{suffix}"] = Queue.new(js_binding, binding_name) env end |
.attach_send_email!(env, js_env) ⇒ Object
949 950 951 952 953 954 955 956 957 958 |
# File 'lib/homura/runtime.rb', line 949 def attach_send_email!(env, js_env) return env unless defined?(::Cloudflare::Email) js_send_email = `#{js_env} && #{js_env}.SEND_EMAIL` if `#{js_send_email} == null || #{js_send_email} === undefined` js_send_email = `(typeof globalThis !== 'undefined' && globalThis.__OPAL_WORKERS__ && globalThis.__OPAL_WORKERS__.sendEmailBinding) || null` end env['cloudflare.SEND_EMAIL'] = Email.new(js_send_email) if `#{js_send_email} != null` env end |
.build_env(js_env, js_ctx = nil, extras = nil) ⇒ Object
904 905 906 907 |
# File 'lib/homura/runtime.rb', line 904 def build_env(js_env, js_ctx = nil, extras = nil) env = extras ? extras.dup : {} attach!(env, js_env, js_ctx) end |
.durable_object(env, name, id_or_name = nil) ⇒ Object
964 965 966 967 968 969 970 971 |
# File 'lib/homura/runtime.rb', line 964 def durable_object(env, name, id_or_name = nil) suffix = normalize_binding_name(name) ns = env["cloudflare.DO_#{suffix}"] || env["cloudflare.#{suffix}"] return nil unless ns return ns if id_or_name.nil? ns.get_by_name(id_or_name.to_s) end |
.normalize_binding_name(name) ⇒ Object
960 961 962 |
# File 'lib/homura/runtime.rb', line 960 def normalize_binding_name(name) name.to_s.upcase.gsub(/[^A-Z0-9]+/, '_').sub(/\A_+/, '').sub(/_+\z/, '') end |