انتقل إلى المحتوى

مرجع الحزم والمزوّدات ​

تنظّم هذه الصفحة المعلومات حول السؤال الذي يحاول التطبيق حله، لا حول ترتيب مجلد packages/. استورد من أصغر حزمة عامة تملك العقد. ويُعرَض السلوك الخاص ببيئة التشغيل عبر مسار فرعي صريح. حزم المزوّدات ليست تطبيقات متبادلة تملك ضماناً كونياً واحداً.

كيف تقرأ هذه الصفحة ​

  • العقد يعني واجهة محمولة أو محايدة تجاه المزوّد.
  • المزوّد يعني تطبيقاً يعتمد على الذاكرة أو ملف أو خدمة شبكة أو مكتبة أصلية.
  • محوّل دورة الحياة يعني غلاف Server حول مورد أصلي أنشأه التطبيق.
  • الدليل يحدد نوع سند المستودع: مصدر/تصدير، أو اختبارات معلنة، أو نتيجة أمر محلي مُبلّغ عنها. ولا يحوّل إصدار الحزمة إلى ادعاء بالنشر على npm أو بالتوفر في الإنتاج.

يحتوي جرد المصدر الحالي على 45 manifest لحزم @go-like/* غير خاصة، و27 مسار source عاماً، وكلها بالإصدار 0.0.1 في هذا checkout. أما مساحات العمل الـ44 ضمن examples/* فهي تطبيقات خاصة وليست حزم عامة.

اختر حسب المهمة ​

المهمةابدأ بـأضف عند الحاجةما لا تملكه go-like
عرض Web API@go-like/web, @go-like/core@go-like/web/node أو Fetch Handler أصلي لإطار ماRouter وmiddleware الإطار وauth وسياسة الاستجابة
استدعاء خدمة داخلية@go-like/client, @go-like/transport@go-like/transport-memory, @go-like/transport-http, @go-like/structidempotency الخاصة بالعمل وIDL المولّد وfull-duplex RPC
اكتشاف مثيلات الخدمة@go-like/registryمزوّد Registry وfilters وSelectorاتساق lease/revision في backend أو service locator عام
تحميل الإعداد@go-like/configenv/file/YAML أو مزوّد Config خارجيإعداد عام ضمني ومعاملات بين الموارد
تخزين bytes مرجعية@go-like/storeمزوّد Memory أو File أو Consul أو etcd أو Vaultقاعدة بيانات/ORM عامة أو ضمانات موحدة للمزوّد
تخزين قيم مؤقتة قابلة للتخلص@go-like/cacheمزوّد Memory أو Redisالمرجعية أو الاستمرارية أو CAS أو حالة العمل الدائمة
نشر bytes أو استهلاكها@go-like/brokerMemory أو RabbitMQ أو NATSack/nack/term عامة وDLQ وoffset دائم وexactly-once
إضافة payloads typed للأحداث@go-like/eventCodec يملكه التطبيقschema registry أو replay أو سياسة التسوية
تشغيل مجدول أو worker موجود@go-like/core@go-like/croner أو @go-like/bullmq أو @go-like/natsqueue أو processor أو سياسة job أو اتصال broker
إضافة العمليات التشغيلية@go-like/health, @go-like/resiliencePino أو Winston أو OTel أو Prometheusالقياس العام أو auth أو سياسة النشر

الحزم الأساسية ​

الحزمةاستخدمها من أجلأهم API عامةملاحظة بيئة التشغيل والملكية
@go-like/contextالإلغاء والمهل والأسباب والقيم الصريحةbackground, todo, withCancel, withCancelCause, withDeadline, withDeadlineCause, withTimeout, withTimeoutCause, cause, withoutCancel, withValue, afterFunc, canceled, deadlineExceededعقد مصدر محمول. يستخدم Context داخلياً AbortSignal؛ وليس Go ABI ولا حقيبة DI
@go-like/coreتركيب دورة حياة التطبيق والمواردnewApp, server, registrar, beforeStart, afterStart, beforeStop, afterStop, startTimeout, stopTimeout, context, id, name, version, metadata, endpoint, newContext, fromContextServer وApp بنيويان ومحمولان. يجري إيقاف الأشقاء بالتوازي
@go-like/metadataبيانات وصفية متعددة القيم غير قابلة للتغيير ونشر صريحأنواع metadata ودوال نشرهانطاقا metadata في Client وServer منفصلان؛ والـ metadata ليست هوية موثوقة
@go-like/structتحقق Struct وقت التشغيل لنقاط النهاية typed وJSONstruct, Infer, Struct, StructErrorحزمة عامة حالية. تحقق وقت التشغيل، وليست Protobuf أو IDL أو شيفرة مولّدة
@go-like/healthسجل فحوص liveness وreadinessnewProbeRegistry, ProbeRegistry, Probe, ProbeReportتنجح liveness الفارغة؛ وتفشل readiness الفارغة افتراضياً؛ مهلة الفحص الافتراضية 1,000 ms
@go-like/resilienceretry صريح وcircuit breaker وrate limiting غير حاجبretry, exponentialBackoff, newCircuitBreaker, newTokenBucketLimiter, circuitOpenيصرّح المستدعي بتفويض retry؛ لا idempotency تلقائية ولا مهمة limiter في الخلفية

حزم Web والاستدعاء الداخلي ​

الحزمةاستخدمها من أجلأهم API عامةما لا تملكه
@go-like/webWeb Handler القياسي وجسر Context للطلبHandler, ContextHandler, contextHandlerRoutes وWebSockets وسياسة SSE وlistener والمصادقة
@go-like/web/healthمسارات Health HandlercreateHealthHandlerتسجيل probes أو تركيب مسارات الإطار
@go-like/web/nodeListener في Node حول Fetch HandlernewNodeServer, hostname, port, nodeShutdownTimeoutTLS/HTTP2 في HTTP Transport الداخلي؛ استخدم @go-like/transport-http/node لذلك
@go-like/clientاستدعاءات داخلية أحادية وdiscovery وselection وmiddleware وretries وpoolingnewClient, withTransport, withEndpoint, withDiscovery, withSelector, withFilter, withBlock, withRetry, middleware, use, circuitBreakerMiddleware, closeTimeout, poolSize, poolTtlRoutes الإطار وسلامة replay في العمل وحدود sockets الفعلية
@go-like/serverخادم Message داخلي أحادي وتوجيه routesnewServer, transport, address, advertise, Server.registerHandler, httpRoute, middleware, use, listenOption, rateLimitMiddlewareموجّه إطار العمل وتفويض التطبيق
@go-like/transportTransport SPI وحدّ Fetch Request/ResponseTransport, Client, Listener, defineService, ServerStream, TransportInfo, Endpoint, endpoint, chain, serviceErrorسلك فعلي إن لم يُختَر مزوّد؛ ولا وعد بـ full-duplex داخلي
@go-like/transport-memoryTransport أحادي داخل العمليةnewMemoryTransportسلوك بين العمليات أو persistence أو network fallback أو TLS
@go-like/transport-httpHTTP Transport داخلي مبني على FetchnewHTTPTransport, executor, maxMessageBytesListener محمول كامل بلا HTTPHost محقون؛ ولا عناصر TLS أصلية في Node
@go-like/transport-http/nodeHTTP Transport داخلي أصلي في NodenewNodeHTTPTransport, allowHTTP1, clientAuthسياسة أمان تلقائية
@go-like/transport-grpc-bufConnect/gRPC-Web unary, server-streamingnewHandler, fromHandlerContext, callOptionsشيفرة Context-first فوق Protobuf-ES
@go-like/transport-grpc-buf/nativegRPC قياسي بالأنماط الأربعة عبر /nativenewClient, newServerDiscovery, Selector, TLS/mTLS
@go-like/protoc-gen-likeمولّد Node وقت البناءprotoc-gen-like, protocGenLikeProtobuf-ES

حزم Config ​

الحزمة أو المسار الفرعياستخدمه من أجلالدالة الرئيسيةالحدّ
@go-like/configمدير Config ومصادر objectnewConfig, source, objectSource, schema, resolver, placeholderResolver, onReloadError, onTerminalErrorلقطات غير قابلة للتغيير ودورة حياة watcher مقبولة؛ ليس Core Server بحد ذاته
@go-like/config/envمصدر صريح لسجل البيئةenvSourceيقبل record محقوناً؛ ولا يقرأ globals الضمنية لبيئة التشغيل
@go-like/config/fileمصدر ملف وعقد JSON decoderfileSource, jsonFileDecoderيحتاج إلى capability صريحة للملف
@go-like/config/nodecapability ملف في NodenewNodeFileCapabilityمسار فرعي خاص ببيئة Node
@go-like/config/yamlفك YAML إلى ConfigObjectdecodeYamlفك الترميز ليس مراقبة مصدر ولا نشر مخطط
@go-like/config-consulمصدر إعداد Consul عبر HTTPconsulSource, jsonConsulDecoderسلوك blocking-query واتساق خاصان بـ Consul
@go-like/config-etcdمصدر إعداد عبر etcd gatewayetcdSource, jsonEtcdDecoderrevision وcompaction وبروتوكول gateway
@go-like/config-kubernetesمفتاح واحد من ConfigMap أو SecretkubernetesSource, jsonKubernetesDecoderدلالات resource-version/relist؛ ولا معاملة بين الموارد
@go-like/config-vaultمصدر Vault KV v2vaultSourceمصادقة Vault وTLS وسياسة token ودلالات KV

تستخدم مزوّدات Config الخارجية Fetch قياسياً محقوناً. ولـ credentials وredirects سلوك أمان خاص بكل مزوّد؛ وتظل http مقابل https قراراً للتطبيق أو للنشر، ما لم يرفضه المزوّد.

حزم Registry ​

الحزمةاستخدمها من أجلالدالة الرئيسيةملاحظة بيئة التشغيل/backend
@go-like/registryالعقد وsnapshot وfilters وselectorsfilterVersion, filterLabel, newRandomSelector, newRoundRobinSelector, newWeightedRoundRobinSelector, newP2CSelector, newEWMASelectorلقطات استبدال كاملة؛ وfeedback الاختيار صريح
@go-like/registry/providerمساعدات مؤلفي المزوّد وتشخيص التسجيلproviderOptions, notifyRegistrationError, مساعدات snapshot/providerمسار فرعي للمزوّد، وليس نقطة الدخول المعتادة للتطبيق
@go-like/registry-consulتسجيل Consul واكتشافهnewConsulRegistryhealth-filtered وblocking-query وTTL وسلوك critical أصلي في Consul
@go-like/registry-etcdتسجيل etcd واكتشافهnewEtcdRegistryLeases وrevisions وwatch/relist وcompaction
@go-like/registry-kubernetesاكتشاف EndpointSlice وتسجيل اختياريnewKubernetesRegistryKubernetes EndpointSlice وowner references؛ ولا TTL مختلق
@go-like/registry-mdnsاكتشاف multicast محليnewMDNSRegistryالمزوّد الجذري محمول عمداً؛ وUDP host في /node
@go-like/registry-mdns/nodecapability multicast UDP في NodenewNodeMDNSHostمسار فرعي صريح لبيئة Node
@go-like/registry-zookeeperتسجيل ZooKeeper المؤقت واكتشافهnewZookeeperRegistryNode.js وBun موثقان

يمثل Registry حالة قابلية الوصول، لا بيانات العمل الدائمة. قد يحتفظ المزوّد بآخر snapshot أثناء إعادة بناء watcher مؤقت، لكن snapshot الفارغ المرجعي يجب أن يفشل مغلقاً.

حزم Store وCache ​

الحزمةاستخدمها من أجلالدالة الرئيسيةالحدّ
@go-like/storeعقد السجل والخياراتexpiresIn, ifAbsent, ifRevision, prefix, limit, cursorrevisions وCAS وTTL وpagination؛ وتختلف قدرات المزوّد
@go-like/store/providerمساعدات write/delete/list للمزوّدwriteOptions, deleteOptions, listOptions, ومساعدات snapshot وconflictموجّه للمزوّد؛ وليس backend دائماً بحد ذاته
@go-like/store-memoryاختبارات Store داخل العمليةnewMemoryStore, clockلا durability بعد restart ولا حالة بين العمليات
@go-like/store-fileStore محلي في ملفnewFileStoreحالة محلية لمالك واحد؛ استخدم /node لمضيف Node
@go-like/store-file/nodecapability ملف في NodenewNodeFileStoreHostمسار فرعي صريح لـ Node
@go-like/store-consulStore KV في ConsulnewConsulStoreجلسات Consul وتركيبات TTL/CAS وسلوك mutation غير اليقيني
@go-like/store-etcdStore KV في etcdnewEtcdStoreGateway وlease وrevision وcompaction وسلوك mutation غير اليقيني
@go-like/store-vaultStore Vault KV v2newVaultStoreلا يَعِد بدلالات TTL/CAS موحدة لـ Store
@go-like/cacheعقد قيم مؤقتة/TTLexpiresInلا CAS ولا revision ولا durability ولا authority
@go-like/cache-memoryCache داخل العمليةnewMemoryCache, clockلا persistence؛ انتهاء كسول؛ مناسب للاختبارات والتسريع المحلي
@go-like/cache-redisCache مبني على RedisnewRedisCacheاتصال Redis أصلي ومعالجة credentials في URL ومتطلبات بيئة التشغيل تبقى ظاهرة

حزم Broker وevent والعمل ​

الحزمة أو المسار الفرعياستخدمه من أجلالدالة الرئيسيةالحدّ
@go-like/brokerعقد Broker للـ bytes/topicsnewBrokerServerلا ack/nack/term أو DLQ أو retry أو offset دائم محمول
@go-like/broker/providerتسجيل النهاية الطرفية للمزوّدregisterSubscriberTerminal, subscriberTerminalحفظ دورة الحياة الموجّه للمزوّد
@go-like/broker-memoryBroker داخل العملية بمواضيع exactnewMemoryBrokerخاص بالمثيل، broadcast، ومن دون تسوية دائمة
@go-like/broker-rabbitmqBroker RabbitMQ المستعار أو المؤكِّد أو المستعيدnewRabbitMqBroker, newConfirmRabbitMqBroker, newRecoveringRabbitMqBrokerقناة/اتصال amqplib ودلالات التسوية الأصلية
@go-like/eventCodec typed فوق BrokereventBrokerيبقى التسليم الأصلي ظاهراً؛ لا replay ولا schema registry
@go-like/natsدورة حياة NATS ونقاط دخول broker الأصليةnewNatsCoreServer, natsCoreDrainTimeoutاتصال Core ودلالات الاشتراك تبقى أصلية
@go-like/nats/brokerNATS Core BrokernewNatsCoreBrokerMsg أصلي وqueue group وdrain ودلالة at-most-once
@go-like/nats/jetstreamدورة حياة ConsumerMessages في JetStreamnewNatsJetStreamServer, natsJetStreamCloseTimeoutسلوك close/stop/closed الأصلي لـ ConsumerMessages
@go-like/nats/jetstream/brokerBroker bytes typed فوق JetStreamnewNatsJetStreamBrokerتبقى JsMsg وPubAck وack/nak/term وredelivery وDLQ أصلية
@go-like/cronerدورة حياة وظائف Croner الموجودةnewCronerServerschedule وcallback وoverlap والدلالة النهائية السلبية لـ Croner
@go-like/bullmqدورة حياة BullMQ Worker الموجودnewBullMqWorkerServer, bullMqWorkerShutdownTimeoutqueue وRedis وprocessor وretry/backoff وstalled jobs وهوية job

حزم التسجيل وقابلية الرصد ​

الحزمةاستخدمها من أجلالدالة الرئيسيةما لا تملكه
@go-like/pinoأغلفة Pino للطلبات/الوسطاء ودورة حياة drainlogClient, logUnaryMiddleware, logWebHandler, logBroker, newPinoServer, pinoDrainTimeoutإنشاء logger وسياسة الوجهة والإخفاء والإعداد العام
@go-like/winstonأغلفة Winston ودورة حياة الإيقافأغلفة logging وnewWinstonServerlogger/transports ودلالات finish/close الأصلية
@go-like/otelأغلفة OpenTelemetry الصريحة للتتبّع/المقاييسnewOtelServer, traceClient, traceUnaryMiddleware, traceWebHandler, traceBroker, measureClient, measureClientMiddleware, measureUnaryMiddleware, newRequestMetricsالمزوّدات العامة والمصدّرات ومدير السياق والقياس التلقائي
@go-like/prometheusمقاييس الطلبات وscrape Handler في PrometheusnewRequestMetrics, measureClient, measureUnaryMiddleware, measureWebHandler, measureBroker, createPrometheusHandlerRegistry العام وcollectors خارج Registry المقدّم والمهام الخلفية

الجرد الكامل لمسارات المصدر العامة ​

هذه هي مسارات المصدر العامة الـ25 الصريحة التي تعلنها manifests الحزم الحالية. قد تضيف الحزم المولّدة export باسم ./package.json يحوي metadata فقط؛ وهذا ليس حزمة إضافية ولا API مصدر.

#المسار الفرعيأهم الصادراتالجمهور
1@go-like/broker/providerregisterSubscriberTerminal, subscriberTerminalمؤلفو المزوّدات
2@go-like/cache/providerputOptionsمؤلفو المزوّدات
3@go-like/config/envenvSourceمؤلفو التطبيقات
4@go-like/config/filefileSource, jsonFileDecoderمؤلفو التطبيقات
5@go-like/config/nodenewNodeFileCapabilityمؤلفو بيئة Node
6@go-like/config/yamldecodeYamlمؤلفو التطبيقات
7@go-like/core/lifecyclewaitForContextمؤلفو دورة الحياة/المزوّدات
8@go-like/core/nodesignalتكامل عمليات Node/Bun
9@go-like/nats/brokernewNatsCoreBrokerتطبيقات NATS Core
10@go-like/nats/jetstreamnewNatsJetStreamServer, natsJetStreamCloseTimeoutتطبيقات JetStream
11@go-like/nats/jetstream/brokernewNatsJetStreamBrokerتطبيقات Broker في JetStream
12@go-like/registry/providerخيارات المزوّد ومساعدات snapshotمؤلفو المزوّدات
13@go-like/registry-mdns/nodenewNodeMDNSHostتطبيقات mDNS في Node
14@go-like/store/providerخيارات write/delete/list وsnapshotsمؤلفو المزوّدات
15@go-like/store-file/nodenewNodeFileStoreHostتطبيقات Store الملفية في Node
16@go-like/struct/codecencodeJson, decodeJsonمؤلفو العقود typed
17@go-like/struct/runtimeمساعدات introspection وparsingمؤلفو runtime/المزوّدات
18@go-like/transport/headersGo-Like-Metadata, Go-Like-Timeout-Msمؤلفو Transport/المزوّدات
19@go-like/transport/jsonencodeJsonBody, decodeJsonBody, jsonContentTypeمؤلفو Transport typed/raw
20@go-like/transport/providermetadata وcodecs ServiceError وأخطاء transport وobserveCallمؤلفو المزوّدات
21@go-like/transport-http/nodenewNodeHTTPTransport, allowHTTP1, clientAuthتطبيقات HTTP في Node
22@go-like/web/healthcreateHealthHandlerتطبيقات Web
23@go-like/web/nodenewNodeServer, hostname, port, nodeShutdownTimeoutتطبيقات مضيف Web في Node
24@go-like/client/discoverynewDiscoveryResolver, DiscoveryResolverمؤلفو التطبيقات
25@go-like/transport-grpc-buf/nativenewClient, newServerمؤلفو التطبيقات
26@go-like/transport/sseencodeSSEComment, encodeSSEEvent, encodeSSEJsonEvent, eventStreamContentTypeSSE server streams
27@go-like/web/bunnewBunServer, hostname, port, bunShutdownTimeoutWeb applications

لا تُعدّ @go-like/otel/testing و@go-like/web/node/testing path mappings في TypeScript ولا exports حالية في manifests الحزم. لا توثّقها كنقاط دخول عامة.

مصفوفة قرار بيئة التشغيل ​

المدخل أو عائلة المزوّدالمصدر المحمولأصلي في Bun/Nodeصياغة الدليل
Context وCore root وHealth وMetadata وResilience وStructنعملا حاجة إلى import أصليعقد مصدر؛ تحقق من المصفوفة المنفذة قبل صياغة release
Web root وWeb healthنعميحتاج إلى Host منفصلHandler محمول؛ لكنه ليس listener
Memory Transport وMemory Store وMemory Cache وMemory Brokerمصدر داخل العمليةلا خدمة خارجيةليس موزعاً ولا دائماً ولا بين العمليات
HTTP root ومزوّدات Config/Registry/Store المبنية على FetchFetch محقونتختار بيئة التشغيل Fetchمحمول بالمصدر أو بمسار runtime معلن، لا بتكافؤ شامل
المسارات الفرعية /nodeلاخاصة بـ Node، مع إمكان تشغيل بعضها على Bunالاستيراد الصريح يغيّر رسم بيئة التشغيل
NATS وRabbitMQ وBullMQ وRedis وPino وWinston وSDKs الأصلية لـ OTelيعتمد على المزوّدfixtures Node/Bun أو دليل خاص بالحزمةاقرأ README الخاص بالمزوّد ونطاق E2E
ZooKeeperلاNode/Bunلا تعمّم من Registry root

قواعد اختيار الدوال ​

  • استخدم contextHandler عند حافة Web عندما تحتاج إلى Context، بدلاً من حقيبة طلب خاصة بالإطار.
  • استخدم newApp وserver(...) عندما تضم العملية أكثر من مورد مقبول، أو عندما يجب أن تكون ملكية الإشارة والإيقاف صريحة.
  • استخدم server.registerHandler(endpoint, handler) typed عندما ينبغي للطرفين مشاركة تحقق Struct وقت التشغيل. استخدم server.registerHandler(service, endpoint, handler) الخام عندما يملك التطبيق عقد bytes مختلفاً.
  • استخدم withEndpoint(...) وقت إنشاء العميل للتوجيه المباشر. ولـ Discovery استخدم withEndpoint("discovery:///<name>") وwithDiscovery(...) معاً، ولا تجمع العناوين المباشرة مع Discovery. يستخدم المصدران Selector نفسه.
  • استخدم withSelector(...) وwithFilter(...) وwithBlock() فقط عندما تحتاج الخدمة إلى سلوك مستوى التحكم الذي تضيفه.
  • استخدم withRetry(...) بعد كتابة تفويض replay وعدد المحاولات الإجمالي الأقصى وpredicate الفشل وidempotency الخاصة بالعمل.
  • استخدم newMemoryStore للاختبارات الحتمية، لا لادعاء durability.
  • استخدم newMemoryCache للتسريع القابل للتخلص، لا بوصفه مرجع المواعيد أو المدفوعات.
  • استخدم newBrokerServer لربط اشتراك واحد بـ Core، لا للحصول على queue worker عام أو API تسوية عامة.
  • استخدم newOtelServer أو newPinoServer أو newWinstonServer أو Prometheus Handler بعد أن ينشئ التطبيق المزوّد أو Registry الأصلي.

الاستبعادات الصريحة ​

يوفّر @go-like/protoc-gen-like شيفرة Protobuf RPC مولّدة تضع Context أولاً، باستخدام Protobuf-ES. يوفّر @go-like/transport-grpc-buf عبر Fetch استدعاءات Connect/gRPC-Web الأحادية وتدفق استجابات الخادم؛ ويضيف /native معيار gRPC بالأنماط الأربعة، بما فيها تدفق طلبات العميل والتدفق ثنائي الاتجاه. هذا مسار مستقل عن Transport SPI الأحادي.

لا يشمل ذلك gRPC القياسي داخل المتصفح، أو تدفق طلبات Fetch ثنائي الاتجاه، أو health/reflection القياسيين، أو مصادقة عامة، أو Event Store/replay، أو ORM، أو تنسيق العناقيد.

اجتاز gRPC المُدار في Node 26.12.1 وBun 1.4.4 اختبار تصريف التدفق مع مستهلك بطيء. لم يُتحقق من إصلاح قيود الإلغاء والإيقاف المسجلة سابقاً في Connect 2.1.2 وBun 1.4.2 Fetch.