वर्कबॉक्स-कोर

Workbox को मॉड्यूलर के तौर पर बनाया गया है, ताकि डेवलपर अपनी ज़रूरत के हिसाब से इसके अलग-अलग हिस्सों का इस्तेमाल कर सकें. इसके लिए, उन्हें एक ही फ़ाइल में सब कुछ डाउनलोड करने की ज़रूरत नहीं पड़ती.

हालांकि, मॉड्यूल के बीच ओवरलैप होता है. उदाहरण के लिए, हर मॉड्यूल को कंसोल के साथ इंटरैक्ट करना होगा, काम की गड़बड़ियां दिखानी होंगी, और नेटवर्क या कैश मेमोरी का इस्तेमाल करना होगा. हर मॉड्यूल में एक ही लॉजिक लागू करने से बचने के लिए, workbox-core में यह सामान्य कोड होता है जिस पर हर मॉड्यूल निर्भर करता है.

यह मॉड्यूल, डेवलपर को कुछ फ़ंक्शन देता है. हालांकि, लॉग लेवल और कैश मेमोरी के अलावा, workbox-core हर मॉड्यूल के लिए, डेवलपर के बजाय इंटरनल लॉजिक उपलब्ध कराता है.

कैश मेमोरी के डिफ़ॉल्ट नाम देखना और उन्हें बदलना

Workbox, cacheNames के ज़रिए अपनी कैश मेमोरी तय करता है:

import {cacheNames} from 'workbox-core';

console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);

कैश मेमोरी के इन नामों को प्रीफ़िक्स, नाम, और सफ़िक्स के फ़ॉर्मैट में बनाया जाता है. इसमें नाम, कैश मेमोरी के इस्तेमाल के हिसाब से बदलता रहता है.

<prefix>-<cache-id>-<suffix>

setCacheNameDetails() को पास की गई सभी या कुछ वैल्यू में बदलाव करके, इन डिफ़ॉल्ट नामों को बदला जा सकता है.

import {cacheNames, setCacheNameDetails} from 'workbox-core';

setCacheNameDetails({
  prefix: 'my-app',
  suffix: 'v1',
  precache: 'install-time',
  runtime: 'run-time',
  googleAnalytics: 'ga',
});

// Will print 'my-app-install-time-v1'
console.log(cacheNames.precache);

// Will print 'my-app-run-time-v1'
console.log(cacheNames.runtime);

// Will print 'my-app-ga-v1'
console.log(cacheNames.googleAnalytics);

प्रीफ़िक्स और सफ़िक्स का मुख्य इस्तेमाल यह है कि अगर कई प्रोजेक्ट के लिए Workbox का इस्तेमाल किया जाता है और हर प्रोजेक्ट के लिए एक ही localhost पोर्ट का इस्तेमाल किया जाता है, तो हर मॉड्यूल के लिए कस्टम प्रीफ़िक्स सेट करने से, कैश मेमोरी एक-दूसरे से मेल नहीं खाएगी.

क्लाइंट का दावा

कुछ डेवलपर, नया सेवा वर्कर पब्लिश करना चाहते हैं और चाहते हैं कि वह चालू होने के साथ ही, पहले से खुले वेब पेजों को कंट्रोल करे. हालांकि, ऐसा डिफ़ॉल्ट रूप से नहीं होगा.

अगर आपको यह तरीका अपनाना है, तो workbox-core में एक सहायक तरीका दिया गया है:

import {clientsClaim} from 'workbox-core';

// This clientsClaim() should be at the top level
// of your service worker, not inside of, e.g.,
// an event handler.
clientsClaim();

workbox-core में मौजूद clientsClaim() तरीका, आपके सेवा वर्कर में activate इवेंट लिसनर को अपने-आप जोड़ता है. साथ ही, इसके अंदर self.clients.claim() को कॉल करता है. मौजूदा सेवा वर्कअर चालू होने से पहले self.clients.claim() को कॉल करने पर, रनटाइम अपवाद दिखेगा. साथ ही, workbox-core के रैपर से यह पक्का करने में मदद मिलती है कि आपने इसे सही समय पर कॉल किया है.

skipWaiting रैपर का इस्तेमाल बंद कर दिया गया है

Workbox v6 से पहले, डेवलपर को workbox-core के skipWaiting() तरीके का इस्तेमाल करने का सुझाव भी दिया गया था. हालांकि, इस तरीके से डेवलपर को उतनी ही वैल्यू मिलती थी जितनी उन्हें self.skipWaiting() को साफ़ तौर पर कॉल करने पर मिलती थी.

लेगसी workbox-core रैपर ने install इवेंट हैंडलर को भी रजिस्टर किया था, जिसमें self.skipWaiting() को कॉल किया गया था. इसलिए, अगर इंस्टॉलेशन पूरा होने के बाद, message जैसे किसी दूसरे इवेंट हैंडलर में रैपर को कॉल किया जाता, तो वह उम्मीद के मुताबिक काम नहीं करता.

इन वजहों से, workbox-core के skipWaiting() को बंद कर दिया गया है. डेवलपर को सीधे self.skipWaiting() को कॉल करना चाहिए. self.clients.claim() के उलट, "गलत" समय पर कॉल करने पर, self.skipWaiting() कोई अपवाद नहीं दिखाएगा. इसलिए, इसे इवेंट हैंडलर में रैप करने की ज़रूरत नहीं है.

टाइप

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void>

CacheDidUpdateCallbackParam

प्रॉपर्टी

  • cacheName

    स्ट्रिंग

  • इवेंट

    ExtendableEvent

  • newResponse

    जवाब

  • oldResponse

    जवाब देना ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

CachedResponseWillBeUsedCallback()

workbox-core.CachedResponseWillBeUsedCallback(
  param: CachedResponseWillBeUsedCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void | Response>

CachedResponseWillBeUsedCallbackParam

प्रॉपर्टी

  • cacheName

    स्ट्रिंग

  • cachedResponse

    जवाब देना ज़रूरी नहीं

  • इवेंट

    ExtendableEvent

  • matchOptions

    CacheQueryOptions ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<string | Request>

CacheKeyWillBeUsedCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • मोड

    स्ट्रिंग

  • पैरामीटर

    कोई भी ज़रूरी नहीं है

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void | Response>

CacheWillUpdateCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब

  • राज्य

    MapLikeObject ज़रूरी नहीं

FetchDidFailCallback()

workbox-core.FetchDidFailCallback(
  param: FetchDidFailCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void>

FetchDidFailCallbackParam

प्रॉपर्टी

  • गड़बड़ी

    गड़बड़ी

  • इवेंट

    ExtendableEvent

  • originalRequest

    अनुरोध

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

FetchDidSucceedCallback()

workbox-core.FetchDidSucceedCallback(
  param: FetchDidSucceedCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<Response>

FetchDidSucceedCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब

  • राज्य

    MapLikeObject ज़रूरी नहीं

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void>

HandlerDidCompleteCallbackParam

प्रॉपर्टी

  • गड़बड़ी

    गड़बड़ी ज़रूरी नहीं है

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब देना ज़रूरी नहीं

  • राज्य

    MapLikeObject ज़रूरी नहीं

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<Response>

HandlerDidErrorCallbackParam

प्रॉपर्टी

  • गड़बड़ी

    गड़बड़ी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void>

HandlerDidRespondCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब देना ज़रूरी नहीं

  • राज्य

    MapLikeObject ज़रूरी नहीं

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<Response>

HandlerWillRespondCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब

  • राज्य

    MapLikeObject ज़रूरी नहीं

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<void>

HandlerWillStartCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

ManualHandlerCallback()

workbox-core.ManualHandlerCallback(
  options: ManualHandlerCallbackOptions,
)

जब भी कोई Router अपने RouteMatchCallback के ज़रिए, Route के किसी यूआरएल/अनुरोध से मैच करता है, तब "हैंडलर" कॉलबैक को ट्रिगर किया जाता है. इस हैंडलर कॉलबैक से, Response के साथ हल होने वाला Promise दिखना चाहिए.

अगर RouteMatchCallback से कोई खाली नहीं, बल्कि कोई ऐरे या ऑब्जेक्ट मिलता है, तो उसे इस हैंडलर के options.params आर्ग्युमेंट के तौर पर पास किया जाएगा.

पैरामीटर

रिटर्न

  • Promise<Response>

ManualHandlerCallbackOptions

ManualHandlerCallback फ़ंक्शन में इस्तेमाल किए गए विकल्प.

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    स्ट्रिंग | अनुरोध

MapLikeObject

PluginState

फ़िलहाल, सिर्फ़ MapLikeObject का इस्तेमाल किया जा रहा है. हालांकि, आने वाले समय में इसकी सीमा बढ़ाई या घटाई जा सकती है.

टाइप

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

पैरामीटर

रिटर्न

  • Promise<Request>

RequestWillFetchCallbackParam

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • राज्य

    MapLikeObject ज़रूरी नहीं

RouteHandler

RouteHandlerCallback या RouteHandlerObject. workbox-routing में मौजूद ज़्यादातर एपीआई, रास्ते के हैंडलर को स्वीकार करते हैं.

RouteHandlerCallback()

workbox-core.RouteHandlerCallback(
  options: RouteHandlerCallbackOptions,
)

जब भी कोई Router अपने RouteMatchCallback के ज़रिए, Route के किसी यूआरएल/अनुरोध से मैच करता है, तब "हैंडलर" कॉलबैक को ट्रिगर किया जाता है. इस हैंडलर कॉलबैक से, Promise दिखना चाहिए, जो Response पर रिज़ॉल्व होता है.

अगर RouteMatchCallback से कोई खाली नहीं, बल्कि कोई ऐरे या ऑब्जेक्ट मिलता है, तो उसे इस हैंडलर के options.params आर्ग्युमेंट के तौर पर पास किया जाएगा.

पैरामीटर

रिटर्न

  • Promise<Response>

RouteHandlerCallbackOptions

RouteHandlerCallback फ़ंक्शन में इस्तेमाल किए गए विकल्प.

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • पैरामीटर

    string[] | MapLikeObject ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • url

    URL

RouteHandlerObject

RouteHandlerCallback टाइप का handle तरीका वाला ऑब्जेक्ट.

Route ऑब्जेक्ट को RouteHandlerCallback फ़ंक्शन या इस RouteHandler ऑब्जेक्ट की मदद से बनाया जा सकता है. RouteHandler का फ़ायदा यह है कि इसकी अवधि बढ़ाई जा सकती है, जैसा कि workbox-strategies पैकेज में किया जाता है.

प्रॉपर्टी

RouteMatchCallback()

workbox-core.RouteMatchCallback(
  options: RouteMatchCallbackOptions,
)

"match" कॉलबैक का इस्तेमाल यह तय करने के लिए किया जाता है कि किसी खास यूआरएल और अनुरोध के लिए Route लागू होना चाहिए या नहीं. जब क्लाइंट से फ़ेच इवेंट के जवाब में मैचिंग होती है, तो event ऑब्जेक्ट भी दिया जाता है. हालांकि, मैच कॉलबैक को फ़ेच इवेंट के बाहर भी शुरू किया जा सकता है. इसलिए, मैच करने वाले लॉजिक को यह नहीं मानना चाहिए कि event ऑब्जेक्ट हमेशा उपलब्ध होगा. अगर मैच कॉलबैक, 'सही' वैल्यू दिखाता है, तो मैच होने वाले रूट का RouteHandlerCallback तुरंत लागू हो जाएगा. अगर रिटर्न की गई वैल्यू कोई खाली कलेक्शन या ऑब्जेक्ट है, तो वह वैल्यू हैंडलर के options.params आर्ग्युमेंट पर सेट की जाएगी.

पैरामीटर

रिटर्न

  • कोई

RouteMatchCallbackOptions

RouteMatchCallback फ़ंक्शन में इस्तेमाल किए गए विकल्प.

प्रॉपर्टी

  • इवेंट

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • sameOrigin

    बूलियन

  • url

    URL

WorkboxPlugin

फ़ेच और कैश मेमोरी से जुड़े ऑपरेशन के लिए, लाइफ़साइकल कॉलबैक प्रॉपर्टी वाला ऑब्जेक्ट.

प्रॉपर्टी

WorkboxPluginCallbackParam

प्रॉपर्टी

प्रॉपर्टी

cacheNames

Workbox के इस्तेमाल किए गए मौजूदा कैश मेमोरी के नाम और प्रीफ़िक्स/सर्फ़िक्स पाएं.

cacheNames.precache का इस्तेमाल पहले से कैश मेमोरी में सेव ऐसेट के लिए किया जाता है, cacheNames.googleAnalytics का इस्तेमाल workbox-google-analytics, analytics.js को सेव करने के लिए करता है, और cacheNames.runtime का इस्तेमाल बाकी सभी चीज़ों के लिए किया जाता है.

cacheNames.prefix का इस्तेमाल, सिर्फ़ प्रीफ़िक्स की मौजूदा वैल्यू को वापस पाने के लिए किया जा सकता है. cacheNames.suffix का इस्तेमाल, सिर्फ़ मौजूदा सफ़िक्स वैल्यू को वापस पाने के लिए किया जा सकता है.

टाइप

ऑब्जेक्ट

प्रॉपर्टी

  • googleAnalytics

    स्ट्रिंग

  • precache

    स्ट्रिंग

  • उपसर्ग

    स्ट्रिंग

  • रनटाइम

    स्ट्रिंग

  • प्रत्यय

    स्ट्रिंग

तरीके

clientsClaim()

workbox-core.clientsClaim()

सेवा वर्कर के चालू होने के बाद, फ़िलहाल उपलब्ध किसी भी क्लाइंट पर दावा करें. आम तौर पर, इसका इस्तेमाल skipWaiting() के साथ किया जाता है.

copyResponse()

workbox-core.copyResponse(
  response: Response,
  modifier?: function,
)

इसकी मदद से, डेवलपर किसी रिस्पॉन्स को कॉपी कर सकते हैं और उसकी headers, status या statusText वैल्यू में बदलाव कर सकते हैं. ये वैल्यू, कॉन्स्ट्रक्टर में [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax ऑब्जेक्ट की मदद से सेट की जा सकती हैं. इन वैल्यू में बदलाव करने के लिए, दूसरे आर्ग्युमेंट के तौर पर कोई फ़ंक्शन पास करें. उस फ़ंक्शन को रिस्पॉन्स प्रॉपर्टी {headers, status, statusText} वाले एक ऑब्जेक्ट के साथ लागू किया जाएगा. इस फ़ंक्शन की रिटर्न वैल्यू का इस्तेमाल, नए Response के लिए ResponseInit के तौर पर किया जाएगा. वैल्यू बदलने के लिए, पास किए गए पैरामीटर में बदलाव करें और उसे दिखाएं या फिर एक नया ऑब्जेक्ट दिखाएं.

इस तरीके को जान-बूझकर, एक ही ऑरिजिन के रिस्पॉन्स तक सीमित रखा गया है. भले ही, सीओआरएस का इस्तेमाल किया गया हो या नहीं.

पैरामीटर

  • जवाब

    जवाब

  • मॉडिफ़ायर

    फ़ंक्शन ज़रूरी नहीं

    modifier पैरामीटर इस तरह दिखता है:

    (responseInit: ResponseInit) => ResponseInit

    • responseInit

      ResponseInit

    • returns

      ResponseInit

रिटर्न

  • Promise<Response>

registerQuotaErrorCallback()

workbox-core.registerQuotaErrorCallback(
  callback: Function,
)

quotaErrorCallbacks के सेट में एक फ़ंक्शन जोड़ता है. यह फ़ंक्शन, कोटा से जुड़ी गड़बड़ी होने पर चालू होगा.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

setCacheNameDetails()

workbox-core.setCacheNameDetails(
  details: PartialCacheNameDetails,
)

Workbox पैकेज के इस्तेमाल किए जाने वाले डिफ़ॉल्ट कैश मेमोरी के नामों में बदलाव करता है. कैश मेमोरी के नाम <prefix>-<Cache Name>-<suffix> के तौर पर जनरेट होते हैं.

पैरामीटर

  • विवरण

    PartialCacheNameDetails

skipWaiting()

workbox-core.skipWaiting()

इस तरीके का इस्तेमाल नहीं किया जा सकता. इसे Workbox के वर्शन 7 में हटा दिया जाएगा.

self.skipWaiting() का इस्तेमाल करने पर भी यही काम होता है. इसलिए, इसके बजाय इसका इस्तेमाल किया जाना चाहिए.