این سند به تشریح API ها برای برچسب گذاری سمت سرور می پردازد.
addEventCallback
یک تابع فراخوانی را ثبت می کند که در پایان یک رویداد فراخوانی می شود. زمانی که همه تگهای رویداد اجرا شدند، تماس برگشتی فراخوانی میشود. به callback دو مقدار داده میشود: شناسه ظرفی که تابع را فراخوانی میکند و یک شی که حاوی اطلاعات مربوط به رویداد است.
هنگامی که این API در یک برچسب استفاده می شود، به رویداد فعلی مرتبط می شود. هنگامی که این API در یک کلاینت استفاده می شود، باید با استفاده از تابع bindToEvent
runContainer
API به یک رویداد خاص متصل شود. برای جزئیات بیشتر به مثال مراجعه کنید.
نحو
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
callback | تابع | تابعی که در پایان رویداد فراخوانی می شود. |
شی eventData
حاوی داده های زیر است:
نام کلید | تایپ کنید | توضیحات |
---|---|---|
tags | آرایه | آرایه ای از اشیاء داده برچسب. هر برچسبی که در طول رویداد اجرا می شود یک ورودی در این آرایه خواهد داشت. شی داده برچسب حاوی شناسه برچسب ( id )، وضعیت اجرای آن ( status ) و زمان اجرای آن ( executionTime ) است. دادههای برچسب همچنین شامل ابردادههای برچسب اضافی هستند که روی برچسب پیکربندی شدهاند. |
در مشتری:
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
در یک برچسب:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
مجوزهای مرتبط
callLater
فراخوانی یک تابع را به صورت ناهمزمان برنامه ریزی می کند. تابع پس از بازگشت کد فعلی فراخوانی می شود. این معادل setTimeout(<function>, 0)
است.
مثال
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
نحو
callLater(function)
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
function | تابع | تابع برای فراخوانی. |
مجوزهای مرتبط
هیچ کدام
claimRequest
از این API در یک کلاینت برای ادعای درخواست استفاده کنید. هنگامی که یک درخواست ادعا می شود، کانتینر کلاینت های اضافی را اجرا نمی کند.
این API در صورت فراخوانی در تگ یا متغیر، یک استثنا ایجاد می کند. اگر پس از بازگشت کلاینت فراخوانی شود، این API یک استثنا ایجاد می کند (مثلاً اگر در یک فراخوانی غیر همگام مانند در callLater
یا تابع runContainer
onComplete
فراخوانی شود).
یک کلاینت باید قبل از فراخوانی runContainer
API درخواست را با استفاده از این API ادعا کند.
مثال
const claimRequest = require('claimRequest');
claimRequest();
نحو
claimRequest();
مجوزهای مرتبط
هیچ کدام
computeEffectiveTldPlusOne
دامنه موثر سطح بالای + 1 (eTLD+1) دامنه یا URL داده شده را برمی گرداند. eTLD+1 با ارزیابی دامنه در برابر قوانین فهرست پسوند عمومی محاسبه می شود. eTLD+1 معمولاً بالاترین سطح دامنه ای است که می توانید روی آن کوکی تنظیم کنید.
اگر آرگومان تهی یا تعریف نشده باشد، مقدار آرگومان بدون تغییر برگردانده می شود. در غیر این صورت آرگومان به یک رشته اجباری می شود. اگر آرگومان یک دامنه یا URL معتبر نباشد، یک رشته خالی برگردانده می شود. اگر سرور نتواند لیست پسوند عمومی را واکشی کند، مقدار آرگومان بدون تغییر برگردانده می شود.
مثال
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
نحو
computeEffectiveTldPlusOne(domainOrUrl);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
domainOrUrl | رشته | دامنه یا نشانی اینترنتی که بر روی آن eTLD+1 محاسبه شود. |
مجوزهای مرتبط
هیچ کدام
createRegex
یک نمونه regex جدید ایجاد می کند و آن را در یک شیء پیچیده شده برمی گرداند. شما نمی توانید مستقیماً به regex دسترسی پیدا کنید. با این حال، می توانید آن را به testRegex
API، String.replace()
, String.match()
و String.search()
ارسال کنید.
اگر regex نامعتبر باشد یا Re2 در سرور در دسترس نباشد، null
برمیگرداند.
این API از پیاده سازی Re2 استفاده می کند. تصویر سرور Docker باید در نسخه 2.0.0 یا بالاتر باشد.
مثال
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
نحو
createRegex(pattern, flags);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
pattern | رشته | متن عبارت منظم |
flags | رشته | یک رشته اختیاری حاوی پرچمهایی برای regex در حال ایجاد. «g» (جهانی) و «i» (حرف نادیده گرفتن) پشتیبانی میشوند. همه شخصیت های دیگر در سکوت نادیده گرفته می شوند. |
مجوزهای مرتبط
هیچ کدام
حداقل نسخه تصویر
decodeUri
هر کاراکتر رمزگذاری شده را در URI ارائه شده رمزگشایی می کند. رشته ای را برمی گرداند که نشان دهنده URI رمزگشایی شده است. وقتی با ورودی نامعتبر ارائه شود، undefined
برمی گردد.
مثال
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
نحو
decodeUri(encoded_uri);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
encoded_uri | رشته | یک URI که توسط encodeUri() یا با ابزارهای دیگر کدگذاری شده است. |
مجوزهای مرتبط
هیچ کدام
decodeUriComponent
هر کاراکتر رمزگذاری شده را در مؤلفه URI ارائه شده رمزگشایی می کند. رشته ای را برمی گرداند که مؤلفه URI رمزگشایی شده را نشان می دهد. وقتی ورودی نامعتبر داده می شود، undefined
برمی گردد.
مثال
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
نحو
decodeUriComponent(encoded_uri_component);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
encoded_uri_component | رشته | یک مؤلفه URI که توسط encodeUriComponent() یا با ابزارهای دیگر کدگذاری شده است. |
مجوزهای مرتبط
هیچ کدام
encodeUri
با فرار از نویسههای خاص، یک شناسه منبع یکنواخت (URI) کدگذاری شده را برمیگرداند. رشته ای را برمی گرداند که نشان دهنده رشته ارائه شده به صورت URI است.
مثال
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
نحو
encodeUri(uri);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
uri | رشته | یک URI کامل |
مجوزهای مرتبط
هیچ کدام
encodeUriComponent
با فرار از نویسههای خاص، یک شناسه منبع یکنواخت (URI) کدگذاری شده را برمیگرداند. رشته ای را برمی گرداند که نشان دهنده رشته ارائه شده به صورت URI است.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
نحو
encodeUriComponent(str);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
str | رشته | جزء یک URI |
مجوزهای مرتبط
هیچ کدام
extractEventsFromMpv1
یک درخواست پروتکل اندازه گیری ورودی V1 را به لیستی از رویدادها در قالب طرحواره یکپارچه ترجمه می کند. لیست رویدادهای استخراج شده را برمی گرداند. اگر فرمت درخواستی درست نباشد، خطا می دهد.
مثال
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
نحو
extractEventsFromMpv1();
مجوزهای مرتبط
به مجوز read_request
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
-
body
-
query parameters
extractEventsFromMpv2
یک درخواست پروتکل اندازه گیری ورودی V2 را به لیستی از رویدادها در قالب طرحواره یکپارچه ترجمه می کند. لیست رویدادهای استخراج شده را برمی گرداند. اگر فرمت درخواستی درست نباشد، خطا می دهد.
مثال
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
نحو
extractEventsFromMpv2();
مجوزهای مرتبط
به مجوز read_request
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
-
body
-
query parameters
fromBase64
یک رشته رمزگذاری شده با base64 را رمزگشایی می کند. اگر ورودی نامعتبر باشد، undefined
برمیگرداند.
نحو
fromBase64(base64EncodedString);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
base64EncodedString | رشته | رشته رمزگذاری شده Base64. |
مثال
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
مجوزهای مرتبط
هیچ کدام
generateRandom
یک عدد تصادفی (عدد صحیح) را در محدوده داده شده برمی گرداند.
مثال
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
نحو
generateRandom(min, max);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
min | شماره | حداقل مقدار بالقوه عدد صحیح برگشتی (شامل). |
max | شماره | حداکثر مقدار بالقوه عدد صحیح برگشتی (شامل). |
مجوزهای مرتبط
هیچ کدام
getAllEventData
یک کپی از داده های رویداد را برمی گرداند.
نحو
getAllEventData();
مجوزهای مرتبط
getClientName
رشته ای را برمی گرداند که حاوی نام مشتری فعلی است.
نحو
getClientName();
مجوزهای مرتبط
getContainerVersion
یک شی حاوی دادههای مربوط به ظرف فعلی را برمیگرداند. شیء برگشتی دارای فیلدهای زیر خواهد بود:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
مثال
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
نحو
getContainerVersion();
مجوزهای مرتبط
getCookieValues
آرایهای را برمیگرداند که حاوی مقادیر همه کوکیها با نام داده شده است.
مثال
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
نحو
getCookieValues(name[, noDecode]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
name | رشته | نام کوکی |
noDecode | بولی | اگر true ، مقادیر کوکی قبل از بازگرداندن رمزگشایی نمیشوند. پیش فرض ها به false . |
مجوزهای مرتبط
getEventData
یک کپی از مقدار در مسیر داده شده در داده رویداد را برمی گرداند. اگر داده رویداد وجود نداشته باشد یا در مسیر داده شده مقداری وجود نداشته باشد undefined
برمیگرداند.
مثال
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
keyPath | هر | مسیر کلید، جایی که اجزای مسیر با نقطه از هم جدا می شوند. اجزای مسیر می توانند کلیدهای یک شی یا اندیس هایی در یک آرایه باشند. اگر keyPath یک رشته نباشد، به یک رشته تبدیل می شود. |
نحو
getEventData(keyPath);
مجوزهای مرتبط
getGoogleAuth
یک شی مجوز را برمیگرداند که وقتی با sendHttpGet
یا sendHttpRequest
استفاده میشود، یک سرصفحه مجوز برای APIهای Google Cloud را شامل میشود. این API از Application Default Credentials برای یافتن خودکار اعتبار از محیط سرور استفاده می کند.
مثال
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
نحو
getGoogleAuth(scopes);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
scopes | آرایه | آرایهای از دامنههای API Google OAuth 2.0 برای درخواست دسترسی. |
مجوزهای مرتبط
به مجوز use_google_credentials
نیاز دارد. مجوز باید با یک یا چند محدوده مجاز پیکربندی شود.
getGoogleScript
منبعی را از مجموعه ای از پیش تعیین شده از اسکریپت های Google بازیابی می کند و یک وعده را همراه با اسکریپت و ابرداده ذخیره سازی مربوطه برمی گرداند.
وعده به یک شی حاوی دو کلید حل می شود: script
و metadata
. اگر درخواست ناموفق باشد، قول با کلید reason
رد می شود.
شی metadata
حاوی ابرداده های ذخیره سازی زیر بر اساس سرصفحه های پاسخ منبع خواهد بود. هر فیلد فقط در صورتی وجود خواهد داشت که هدر مربوطه در پاسخ منبع موجود باشد.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
مثال
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
نحو
getGoogleScript(script[, options]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
script | رشته | نام فیلمنامه. اسکریپت های پشتیبانی شده عبارتند از 'ANALYTICS' ، 'GTAG' و 'GTM' .گزینه 'ANALYTICS' اسکریپت Google Analytics را از https://www.google-analytics.com/analytics.js واکشی می کند.گزینه 'GTAG' اسکریپت برچسب سایت جهانی (gtag.js) را از https://www.googletagmanager.com/gtag/js واکشی می کند.گزینه 'GTM' اسکریپت مدیر برچسب گوگل را از https://www.googletagmanager.com/gtm.js واکشی می کند. |
options | شی | گزینه های درخواست اختیاری برای گزینه های پشتیبانی شده به زیر مراجعه کنید. |
گزینه ها
گزینه | تایپ کنید | توضیحات |
---|---|---|
id | رشته | قابل استفاده برای 'GTAG' با شناسه اندازهگیری gtag و 'GTM' با شناسه محفظه وب (مثلاً GTM-XXXX). |
debug | هر | اگر درست باشد، نسخه اشکال زدایی اسکریپت اندازه گیری را درخواست کرده و برمی گرداند. |
timeout | شماره | مهلت درخواست در میلی ثانیه؛ مقادیر غیر مثبت نادیده گرفته می شوند. اگر زمان درخواست به پایان برسد، تماس برگشتی با undefined برای مقدار اسکریپت و {} برای شی فوق داده فراخوانی می شود. |
کلیدهای گزینه ناشناس نادیده گرفته می شوند.
مجوزهای مرتبط
به مجوز send_http
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
- Google Domains را مجاز کنید
getRemoteAddress
با خواندن سرصفحههای درخواست مانند Forwarded و X-Forwarded، یک نمایش رشتهای از آدرس IP که در آن درخواست منشا گرفته است، به عنوان مثال 12.345.67.890
برای IPv4 یا 2001:0db8:85a3:0:0:8a2e:0370:7334
برای IPv6 برمیگرداند. برای. توجه: این API بهترین تلاش را برای کشف IP مبدا انجام می دهد، اما نمی تواند تضمین کند که نتیجه دقیق است.
نحو
getRemoteAddress();
مجوزهای مرتبط
به مجوز read_request
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
- هدرهای
Forwarded
وX-Forwarded-For
- آدرس IP راه دور
getRequestBody
بدنه درخواست را در صورت وجود یا undefined
به عنوان یک رشته برمیگرداند.
نحو
getRequestBody();
مجوزهای مرتبط
getRequestHeader
مقدار هدر درخواست نامگذاری شده را در صورت وجود یا undefined
به صورت رشته ای برمی گرداند. اگر سرصفحه تکرار شود، مقادیر برگشتی با ', '
به یکدیگر متصل می شوند.
مثال
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
نحو
getRequestHeader(headerName);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
headerName | رشته | نام سرصفحه. این مقدار به حروف بزرگ و کوچک حساس نیست. |
مجوزهای مرتبط
getRequestMethod
روش درخواست، به عنوان مثال 'GET'
یا 'POST'
را به عنوان یک رشته برمی گرداند.
مثال
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
نحو
getRequestMethod();
مجوزهای مرتبط
هیچ کدام
getRequestPath
مسیر درخواست را بدون رشته پرس و جو برمی گرداند. برای مثال، اگر URL '/foo?id=123'
باشد، '/foo'
را برمیگرداند. به طور خودکار پیشوند URL ظرف سرور را از مسیر حذف می کند. برای مثال، اگر نشانی وب محفظه سرور https://example.com/analytics
و مسیر درخواست '/analytics/foo'
باشد، '/foo'
را برمیگرداند.
مثال
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
نحو
getRequestPath();
مجوزهای مرتبط
getRequestQueryParameter
مقدار رمزگشایی شده پارامتر رشته پرس و جو نامگذاری شده را به صورت رشته ای برمی گرداند، یا اگر پارامتر موجود نباشد، undefined
. اگر پارامتر در رشته پرس و جو تکرار شود، اولین مقداری که در رشته پرس و جو ظاهر می شود، برگردانده می شود.
مثال
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
نحو
getRequestQueryParameter(name);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
name | رشته | نام پارامتر پرس و جو |
مجوزهای مرتبط
getRequestQueryParameters
پارامترهای پرس و جو درخواست HTTP ورودی را به عنوان یک شی برمی گرداند که نام پارامترهای درخواست را به مقدار یا مقادیر مربوطه نگاشت می کند. نام پارامترها و مقادیر رمزگشایی می شوند.
مثال
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
نحو
getRequestQueryParameters();
مجوزهای مرتبط
getRequestQueryString
درخواست درخواست را به عنوان یک رشته، بدون علامت سوال اصلی، یا یک رشته خالی در صورتی که URL درخواست شامل یک رشته جستجو نباشد، برمیگرداند.
مثال
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
نحو
getRequestQueryString();
مجوزهای مرتبط
getTimestamp
منسوخ شده است. getTimestampMillis را ترجیح دهید.
عددی را برمیگرداند که نشاندهنده زمان فعلی بر حسب میلیثانیه از زمان یونیکس است، همانطور که توسط Date.now()
برگردانده شده است.
نحو
getTimestamp();
مجوزهای مرتبط
هیچ کدام
getTimestampMillis
عددی را برمیگرداند که نشاندهنده زمان فعلی بر حسب میلیثانیه از زمان یونیکس است، همانطور که توسط Date.now()
برگردانده شده است.
نحو
getTimestampMillis();
مجوزهای مرتبط
هیچ کدام
getType
رشته ای را برمی گرداند که نوع مقدار داده شده را توصیف می کند.
نوع ورودی | ارزش برگشتی |
---|---|
رشته | 'string' |
شماره | 'number' |
بولی | 'boolean' |
تهی | 'null' |
تعریف نشده | 'undefined' |
آرایه | 'array' |
شیء | 'object' |
تابع | 'function' |
مثال
const getType = require('getType');
const type = getType(value);
if (type === 'string') {
// Handle string input.
} else if (type === 'number') {
// Handle numeric input.
} else {
logToConsole('Unsupported input type: ', type);
}
نحو
getType(value);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
value | هر | مقدار ورودی |
مجوزهای مرتبط
هیچ کدام
hmacSha256
یک امضای رمزگذاری شده را با استفاده از کد احراز هویت پیام مبتنی بر هش (HMAC) با SHA-256 محاسبه میکند. به طور پیش فرض برای رمزگذاری base64url
.
برای استفاده از این API، متغیر محیطی SGTM_CREDENTIALS
را روی سرور روی مسیر فایل کلید JSON کدگذاری شده UTF-8 با فرمت زیر تنظیم کنید:
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
مقادیر، کلیدهای HMAC با کدگذاری پایه 64 هستند. متن JSON نباید با نشانگر ترتیب بایت شروع شود.
مثال
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
نحو
hmacSha256(data, keyId, options)
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
data | رشته | داده برای محاسبه مقدار HMAC. |
keyId | رشته | شناسه کلید از فایل کلید JSON که به کلید مورد استفاده اشاره دارد. |
options | شی | تنظیمات API اختیاری . ( گزینه های زیر را ببینید.) |
گزینه ها
گزینه | تایپ کنید | توضیحات |
---|---|---|
outputEncoding | رشته | فرمت رمزگذاری را برای مقدار برگشتی مشخص می کند. فرمت های پشتیبانی شده hex ، base64 یا base64url هستند. اگر مشخص نشده باشد به صورت پیشفرض روی base64url میشود. |
مجوزهای مرتبط
حداقل نسخه تصویر
isRequestMpv1
اگر درخواست دریافتی یک درخواست پروتکل اندازهگیری V1 باشد، true
است، یا در غیر این صورت false
.
مثال
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
نحو
isRequestMpv1();
مجوزهای مرتبط
هیچ کدام
isRequestMpv2
اگر درخواست ورودی یک درخواست پروتکل اندازهگیری V2 باشد، true
است، یا در غیر این صورت false
.
مثال
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
نحو
isRequestMpv2();
مجوزهای مرتبط
هیچ کدام
logToConsole
آرگومان(های) خود را در کنسول ثبت می کند.
این گزارشها در Logs Explorer در Google Cloud Console قابل مشاهده هستند. از Logs Explorer، query logName =~ "stdout"
اجرا کنید تا ورودی های گزارش ایجاد شده توسط این API را ببینید.
مثال
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
نحو
logToConsole(argument1[, argument2, ...]);
پارامترها
API یک یا چند آرگومان می گیرد که هر کدام در صورت لزوم به یک رشته تبدیل می شود و به کنسول وارد می شود.
مجوزهای مرتبط
makeInteger
مقدار داده شده را به عدد (عدد صحیح) تبدیل می کند.
نحو
makeInteger(value);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
value | هر نوع | مقدار برای تبدیل |
مجوزهای مرتبط
هیچ کدام
makeNumber
مقدار داده شده را به عدد تبدیل می کند.
نحو
makeNumber(value);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
value | هر نوع | مقدار برای تبدیل |
مجوزهای مرتبط
هیچ کدام
makeString
مقدار داده شده را به عنوان یک رشته برمی گرداند.
نحو
makeString(value);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
value | هر نوع | مقدار برای تبدیل |
مجوزهای مرتبط
هیچ کدام
makeTableMap
یک شی جدول ساده با دو ستون را به Map
تبدیل می کند. این برای تغییر یک فیلد الگوی SIMPLE_TABLE
با دو ستون به قالبی قابل مدیریت تر استفاده می شود.
به عنوان مثال، این تابع می تواند یک شی جدول را تبدیل کند:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
در یک نقشه:
{
'k1': 'v1',
'k2': 'v2'
}
یک شی را برمی گرداند: Map
تبدیل شده از جفت های کلید-مقدار به آن اضافه شده است، یا در غیر این صورت null
.
نحو
makeTableMap(tableObj, keyColumnName, valueColumnName);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
tableObj | فهرست کنید | شی جدول برای تبدیل. این فهرست نقشه هایی است که هر Map نشان دهنده یک ردیف در جدول است. نام هر ویژگی در یک شی ردیف، نام ستون است و مقدار ویژگی، مقدار ستون در سطر است. |
keyColumnName | رشته | نام ستونی که مقادیر آن در Map تبدیل شده به کلید تبدیل می شود. |
valueColumnName | رشته | نام ستونی که مقادیر آن در Map تبدیل شده به مقادیر تبدیل می شود. |
مجوزهای مرتبط
هیچ کدام
parseUrl
یک شی را برمیگرداند که شامل تمام اجزای یک URL معین، مشابه شی URL
است.
این API برای هر URL نادرست undefined
برمی گردد. برای URL هایی که به درستی قالب بندی شده اند، فیلدهایی که در رشته URL موجود نیستند دارای مقدار یک رشته خالی یا در مورد searchParams
، یک شی خالی خواهند بود.
شیء برگشتی دارای فیلدهای زیر خواهد بود:
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
مثال
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
نحو
parseUrl(url);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
url | رشته | URL کاملی که تجزیه خواهد شد. |
مجوزهای مرتبط
هیچ کدام
returnResponse
پاسخی را که قبلاً توسط الگوهای دیگر تنظیم شده بود با استفاده از APIهایی که پاسخ را تغییر میدهند، از جمله setCookie ، setPixelResponse ، setResponseBody ، setResponseHeader ، و setResponseStatus ، صاف میکند. پیشفرض کد وضعیت HTTP 200، متن خالی و بدون سرصفحه.
توصیه می شود که این API از یک الگوی مشتری استفاده شود.
نحو
returnResponse();
مثال
مثال runContainer
را ببینید.
مجوزهای مرتبط
runContainer
منطق کانتینر (متغیرها، محرکها، برچسبها) را در محدوده یک رویداد اجرا میکند. اگر این API در حین اجرای کانتینر فراخوانی شود، کانتینر دوباره اجرا می شود.
تماسهای onComplete
و onStart
تابعی به نام bindToEvent
دریافت میکنند. از bindToEvent
برای اجرای یک API در زمینه رویداد استفاده کنید. برای جزئیات بیشتر به مثال addEventCallback مراجعه کنید.
توصیه می شود که این API از یک الگوی مشتری استفاده شود.
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
نحو
runContainer(event, onComplete, onStart);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
event | شی | پارامترهای رویداد |
onComplete | تابع | یک تماس برگشتی که پس از اتمام شلیک همه برچسب ها فراخوانی می شود. |
onStart | تابع | تماسی که بلافاصله قبل از شروع شلیک برچسب ها فراخوانی می شود. |
مجوزهای مرتبط
sendEventToGoogleAnalytics
یک رویداد واحد را با استفاده از Common Event Data به Google Analytics ارسال میکند و قولی را برمیگرداند که به یک شی با یک کلید location
حل میشود یا به یک شی با یک کلید reason
رد میشود. مقصد، Google Analytics 4، بر اساس شناسه اندازهگیری در دادههای رویداد است.
فیلد location
در صورت وجود روی سرصفحه location
تنظیم می شود.
مثال
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
نحو
sendEventToGoogleAnalytics(event);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
event | شی | رویداد در قالب یکپارچه طرحواره. |
مجوزهای مرتبط
به مجوز send_http
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
- Google Domains را مجاز کنید
sendHttpGet
یک درخواست HTTP GET به URL مشخص شده میدهد و قولی را برمیگرداند که پس از تکمیل یا اتمام درخواست، نتیجه را برطرف میکند.
نتیجه حل شده یک شی حاوی سه کلید است: statusCode
، headers
و body
. اگر درخواست ناموفق بود (مثلاً URL نامعتبر، بدون مسیر به میزبان، شکست در مذاکره SSL، و غیره)، وعده با: {reason: 'failed'}
رد میشود. اگر گزینه timeout
تنظیم شده باشد و زمان درخواست به پایان برسد، قول با این موارد رد می شود: {reason: 'timed_out'}
مثال
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
نحو
sendHttpGet(url[, options]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
url | رشته | URL درخواستی |
options | شی | گزینه های درخواست اختیاری ( گزینه های زیر را ببینید.) |
گزینه ها
گزینه | تایپ کنید | توضیحات |
---|---|---|
headers | رشته | سرصفحه های درخواست اضافی |
timeout | شماره | مهلت زمانی، در میلی ثانیه، قبل از لغو درخواست. پیش فرض 15000 است. |
authorization | شی | موضوع مجوز اختیاری از تماس با getGoogleAuth برای اضافه کردن سرصفحههای مجوز هنگام درخواست به googleapis.com . |
مجوزهای مرتبط
sendHttpRequest
یک درخواست HTTP به URL مشخص شده میدهد و قولی را برمیگرداند که پس از تکمیل یا اتمام درخواست، با پاسخ برطرف میشود.
نتیجه حل شده یک شی حاوی سه کلید است: statusCode
، headers
و body
. اگر درخواست ناموفق بود (مثلاً URL نامعتبر، بدون مسیر به میزبان، شکست در مذاکره SSL، و غیره)، وعده با: {reason: 'failed'}
رد میشود. اگر گزینه timeout
تنظیم شده باشد و زمان درخواست به پایان برسد، قول با این موارد رد می شود: {reason: 'timed_out'}
مثال
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
نحو
sendHttpRequest(url[, options[, body]]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
url | رشته | URL درخواستی |
options | شی | گزینه های درخواست اختیاری ( گزینه های زیر را ببینید.) |
body | رشته | بدنه درخواست اختیاری . |
گزینه ها
گزینه | تایپ کنید | توضیحات |
---|---|---|
headers | رشته | سرصفحه های درخواست اضافی |
method | شی | روش درخواست پیشفرض GET است. |
timeout | شماره | مهلت زمانی، در میلی ثانیه، قبل از لغو درخواست. پیش فرض 15000 است. |
authorization | شی | موضوع مجوز اختیاری از تماس با getGoogleAuth برای اضافه کردن سرصفحههای مجوز هنگام درخواست به googleapis.com . |
مجوزهای مرتبط
sendPixelFromBrowser
دستوری را به مرورگر ارسال می کند تا URL ارائه شده را به عنوان تگ <img>
بارگیری کند. این پروتکل فرمان در برچسب های گوگل برای GA4 و Google Analytics: GA Event تگ های وب پشتیبانی می شود. شما باید URL ظرف سرور را پیکربندی کنید. برای جزئیات بیشتر به دستورالعمل ها مراجعه کنید.
اگر درخواست ورودی از پروتکل فرمان پشتیبانی نکند، یا اگر پاسخ قبلاً flush شده باشد، این API false
را برمیگرداند. در غیر این صورت این API true
را برمی گرداند.
مثال:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
نحو
sendPixelFromBrowser(url)
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
url | رشته | آدرس اینترنتی برای ارسال به مرورگر. |
مجوزهای مرتبط
setCookie
یک کوکی را با گزینه های مشخص شده تنظیم یا حذف می کند.
برای حذف یک کوکی، باید یک کوکی با همان مسیر و دامنهای تنظیم کنید که کوکی با آن ایجاد شده است، و یک مقدار منقضی که در گذشته است به آن اختصاص دهید، به عنوان مثال "Thu, 01 Jan 1970 00:00:00 GMT"
.
توجه داشته باشید که returnResponse باید برای ارسال پاسخ به مشتری فراخوانی شود.
مثال
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
نحو
setCookie(name, value[, options[, noEncode]]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
name | رشته | نام کوکی این نام به حروف بزرگ و کوچک حساس است. |
value | رشته | مقدار کوکی |
options | شی | ویژگیهای کوکی اختیاری: دامنه ، انقضا ، دامنه بازگشت ، httpOnly ، حداکثر ، مسیر ، امن ، و sameSite . ( گزینه ها را در زیر ببینید.) |
noEncode | بولی | اگر درست باشد، مقدار کوکی کدگذاری نمی شود. پیش فرض ها به false . |
دامنه: میزبانی که کوکی به آن ارسال خواهد شد. اگر روی مقدار ویژه "auto" تنظیم شود، میزبان به طور خودکار با استفاده از استراتژی زیر محاسبه می شود:
- eTLD+1 سرصفحه
Forwarded
، در صورت وجود. - eTLD+1 هدر
X-Forwarded-Host
، در صورت وجود. - eTLD+1 سربرگ
Host
.
- eTLD+1 سرصفحه
expires : حداکثر طول عمر کوکی. این باید یک رشته تاریخ با فرمت UTC باشد، به عنوان مثال "شنبه، 26 اکتبر 1985 08:21:00 GMT". اگر هر دو
expires
وmax-age
تعیین شده باشد،max-age
اولویت دارد.httpOnly : در صورت
true
، جاوا اسکریپت را از دسترسی به کوکی منع می کند.max-age : تعداد ثانیه تا زمان انقضای کوکی. یک عدد صفر یا منفی، کوکی را فورا منقضی می کند. اگر هر دو
expires
وmax-age
تعیین شده باشد،max-age
اولویت دارد.path : مسیری که باید در URL درخواستی وجود داشته باشد، در غیر این صورت مرورگر سرصفحه کوکی را ارسال نمی کند.
امن : اگر روی
true
تنظیم شود، کوکی تنها زمانی به سرور ارسال می شود که از یک نقطه پایانیhttps:
درخواست شود.sameSite : ادعا می کند که یک کوکی نباید با درخواست های متقاطع ارسال شود. باید
'strict'
،'lax'
یا'none'
باشد.
مجوزهای مرتبط
setPixelResponse
بدنه پاسخ را روی یک GIF 1×1 تنظیم میکند، هدر Content-Type را روی «تصویر/گیف» تنظیم میکند، سرصفحههای ذخیرهسازی را طوری تنظیم میکند که عاملهای کاربر پاسخ را ذخیره نکنند، و وضعیت پاسخ را روی 200 تنظیم میکند.
توجه داشته باشید که returnResponse باید برای ارسال پاسخ به مشتری فراخوانی شود.
نحو
setPixelResponse();
مجوزهای مرتبط
به مجوز access_response
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
-
headers
- باید کلیدهای زیر را مجاز کند-
content-type
-
cache-control
-
expires
-
pragma
-
-
body
-
status
setResponseBody
بدنه پاسخ را روی آرگومان تنظیم می کند.
توجه داشته باشید که returnResponse باید برای ارسال پاسخ به مشتری فراخوانی شود.
نحو
setResponseBody(body[, encoding]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
body | رشته | مقداری که باید به عنوان بدنه پاسخ تنظیم شود. |
encoding | رشته | رمزگذاری کاراکتر بدنه پاسخ (به طور پیش فرض به 'utf8' ). مقادیر پشتیبانی شده عبارتند از 'ascii' ، 'utf8' ، 'utf16le' ، 'ucs2' ، 'base64' ، 'latin1' ، 'binary' و 'hex' . |
مجوزهای مرتبط
به مجوز access_response
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
-
body
setResponseHeader
یک هدر در پاسخی که برگردانده می شود تنظیم می کند. اگر هدر با این نام (حساس به حروف بزرگ) قبلاً توسط این API تنظیم شده باشد، تماس دوم مقدار تعیین شده توسط تماسگیرنده قبلی را بازنویسی یا پاک میکند.
توجه داشته باشید که returnResponse باید برای ارسال پاسخ به مشتری فراخوانی شود.
نحو
setResponseHeader(name, value);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
name | رشته | نام سرصفحه. نام سرصفحه HTTP به حروف بزرگ و کوچک حساس نیست، بنابراین نام سرصفحه کوچک خواهد شد. |
value | رشته تعریف نشده | مقدار هدر. اگر تهی یا تعریف نشده باشد، این هدر نامگذاری شده را از پاسخی که برگردانده می شود پاک می کند. |
مجوزهای مرتبط
به مجوز access_response
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
-
headers
setResponseStatus
کد وضعیت HTTP پاسخی که برگردانده می شود را تنظیم می کند.
توجه داشته باشید که returnResponse باید برای ارسال پاسخ به مشتری فراخوانی شود.
نحو
setResponseStatus(statusCode);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
statusCode | شماره | کد وضعیت HTTP که باید برگردانده شود. |
مجوزهای مرتبط
به مجوز access_response
نیاز دارد. مجوز باید طوری پیکربندی شود که اجازه دسترسی به حداقل موارد زیر را بدهد:
-
status
sha256
خلاصه SHA-256 ورودی را محاسبه می کند و یک فراخوانی با خلاصه کدگذاری شده در base64 فراخوانی می کند، مگر اینکه شی options
کدگذاری خروجی متفاوتی را مشخص کند.
این امضا و رفتار API با sha256
API برای کانتینرهای وب مطابقت دارد. با این حال، قالبهای سفارشی در کانتینرهای سرور باید از sha256Sync
API برای کد سادهتر استفاده کنند.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
نحو
sha256(input, onSuccess, options = undefined);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
input | رشته | رشته برای هش کردن. |
onSuccess | تابع | با خلاصه حاصل، کدگذاری شده در base64 فراخوانی می شود، مگر اینکه شی options کدگذاری خروجی متفاوتی را مشخص کند. |
options | شی | گزینه های اختیاری برای تعیین کدگذاری خروجی ایراد دارند. اگر مشخص شده باشد، شی باید حاوی کلید outputEncoding با مقدار یکی از base64 یا hex باشد. |
مجوزهای مرتبط
هیچ کدام
sha256Sync
خلاصه SHA-256 ورودی کدگذاری شده در base64 را محاسبه و برمی گرداند، مگر اینکه شی options
کدگذاری خروجی متفاوتی را مشخص کند.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
نحو
sha256Sync(input, options = undefined);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
input | رشته | رشته به هش. |
options | شی | گزینه های اختیاری برای تعیین کدگذاری خروجی ایراد دارند. اگر مشخص شده باشد، شی باید حاوی کلید outputEncoding با مقدار یکی از base64 یا hex باشد. |
مجوزهای مرتبط
هیچ کدام
templateDataStorage
یک شی را با روشهایی برای دسترسی به ذخیرهسازی دادههای الگو برمیگرداند. ذخیره سازی داده های الگو اجازه می دهد تا داده ها در بین اجرای یک الگو به اشتراک گذاشته شوند. دادههای ذخیرهشده در ذخیرهسازی دادههای الگو بر روی سروری که ظرف را اجرا میکند باقی میماند. در بیشتر موارد چندین سرور در حال اجرا در کانتینر هستند، بنابراین ذخیره داده ها در ذخیره سازی داده های الگو تضمین نمی کند که هر درخواست بعدی به داده ها دسترسی داشته باشد.
"داده" در نام "templateDataStorage" به این واقعیت اشاره دارد که فقط انواع داده های ساده و غیر عملکردی ممکن است با استفاده از این API ذخیره شوند. هر توابع یا ارجاع به توابع ارسال شده به API در عوض به صورت null
ذخیره می شود.
نحو
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
مثال
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
مجوزهای مرتبط
testRegex
یک رشته را در برابر regex ایجاد شده از طریق createRegex
API آزمایش می کند. اگر regex مطابقت داشته باشد true
برمیگرداند. در غیر این صورت false
برمی گرداند.
Regex ایجاد شده با پرچم جهانی حالتی است. برای جزئیات به مستندات RegExp مراجعه کنید.
مثال
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
نحو
testRegex(regex, string);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
regex | شیء | regex برای آزمایش، از createRegex API برگردانده شد. |
string | رشته | تست رشته برای تست. |
مجوزهای مرتبط
هیچ کدام
toBase64
رشته ای را به صورت base64 یا base64url کد می کند. پیشفرض کدگذاری base64 است.
نحو
toBase64(input, options);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
input | رشته | رشته ای برای رمزگذاری |
options | شی | تنظیمات API اختیاری ( گزینه های زیر را ببینید.) |
گزینه ها
گزینه | تایپ کنید | توضیحات | حداقل نسخه |
---|---|---|---|
urlEncoding | بولی | اگر درست باشد، نتیجه با استفاده از قالب base64url کدگذاری میشود. | 1.0.0 |
مثال
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
مجوزهای مرتبط
هیچ کدام
BigQuery
شیئی را برمی گرداند که توابع BigQuery را ارائه می دهد.
تابع BigQuery.insert
اجازه می دهد تا داده ها را در جدول BigQuery بنویسید. قولی را برمیگرداند که پس از درج موفقیتآمیز برطرف میشود یا در صورت یک خطا رد میشود.
وقتی درج موفقیت آمیز بود، قول بدون هیچ استدلالی حل می شود.
هنگامی که درج ناموفق است، وعده با لیستی از اشیاء حاوی دلیل خطا و احتمالاً یک شی ردیف در صورت بروز خطا، رد می شود. این امکان وجود دارد که بخشی از درخواست با موفقیت تکمیل شود، در حالی که سایر قسمت ها اینطور نیستند. وعده در این مورد با لیستی از خطاها برای هر ردیف با یک شی ردیف رد می شود تا به تشخیص ردیف هایی که درج شده اند کمک کند ( به مثال های خطا در زیر مراجعه کنید). برای اطلاعات بیشتر به مستندات BigQuery در مورد پیام های خطا مراجعه کنید.
نحو
BigQuery.insert(connectionInfo, rows[, options]);
پارامتر | تایپ کنید | توضیحات |
---|---|---|
connectionInfo | شی | اطلاعات مورد نیاز برای اتصال به جدول BigQuery را تعریف می کند. یک پارامتر اختیاری و دو پارامتر مورد نیاز وجود دارد:
|
rows | آرایه | سطرهایی که باید در جدول درج شوند. |
options | شی | گزینه های درخواست اختیاری گزینه های پشتیبانی شده عبارتند از: ignoreUnknownValues و skipInvalidRows . کلیدهای گزینه ناشناخته نادیده گرفته می شوند. ( گزینه ها را در زیر ببینید.) |
پارامتر | تایپ کنید | توضیحات |
---|---|---|
ignoreUnknownValues | بولی | اگر روی true تنظیم شده باشد، سطرهایی را بپذیرید که حاوی مقادیری هستند که با این طرح مطابقت ندارند. مقادیر ناشناخته نادیده گرفته می شوند. پیش فرض ها به false . |
skipInvalidRows | بولی | اگر روی true تنظیم شود، تمام ردیف های معتبر درخواست را وارد کنید، حتی اگر ردیف های نامعتبر وجود داشته باشد. پیش فرض ها به false . |
خطای ماژول یافت نشد به این معنی است که محفظه سرور شما احتمالاً نسخه قدیمیتری از تصویر ما را اجرا میکند که هنوز ماژول BigQuery را شامل نشده است. لطفاً با استفاده از اسکریپت استقرار ما، محفظه سرور خود را با همان تنظیمات مجدداً مستقر کنید. پس از اتمام عملیات، ماژول به طور خودکار گنجانده می شود.
یک خطای غیر درج معمولاً یک شی خطا با یک کلید reason
دارد:
[{reason: 'invalid'}]
یک خطای درج می تواند شامل چندین شی خطا با یک آرایه errors
و یک شی row
باشد. در زیر نمونه ای از پاسخ خطا از درج دو ردیف است که در آن فقط یک ردیف دارای خطا است:
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
مثال
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
مجوزهای مرتبط
Firestore
شیئی را برمی گرداند که توابع Firestore را ارائه می کند.
این API فقط از Firestore در حالت Native پشتیبانی می کند، نه Firestore در حالت Datastore . همچنین، API فقط با استفاده از پایگاه داده پیش فرض پشتیبانی می کند.
Firestore.read
تابع Firestore.read
دادهها را از یک سند Firestore میخواند و قولی را برمیگرداند که به یک شی حاوی دو کلید حل میشود: id
و data
. اگر سند وجود نداشته باشد، قول با یک شی حاوی یک کلید reason
برابر با not_found
رد می شود.
نحو
Firestore.read(path[, options]);
پارامتر | تایپ کنید | توضیحات |
---|---|---|
path | رشته | مسیر سند یا مجموعه. نباید با "/" شروع یا ختم شود. |
options | شی | گزینه های درخواست اختیاری گزینه های پشتیبانی شده عبارتند از: projectId ، disableCache و تراکنش . کلیدهای گزینه ناشناخته نادیده گرفته می شوند. ( گزینه ها را در زیر ببینید.) |
پارامتر | تایپ کنید | توضیحات |
---|---|---|
projectId | رشته | اختیاری شناسه پروژه Google Cloud Platform. اگر حذف شود، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می شود تا زمانی که تنظیمات مجوز access_firestore برای ID پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر ظرف سرور در Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT قبلاً روی شناسه پروژه Google Cloud تنظیم میشود. |
disableCache | بولی | اختیاری تعیین می کند که حافظه نهان غیرفعال شود یا خیر. ذخیره سازی به طور پیش فرض فعال است، که نتایج را برای مدت زمان درخواست ذخیره می کند. |
transaction | رشته | اختیاری مقدار بازیابی شده از Firestore.runTransaction(). عملیات مورد استفاده در یک تراکنش را علامت گذاری می کند. |
مثال
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
تابع Firestore.write
داده ها را در یک سند یا مجموعه Firestore می نویسد. اگر مسیر به یک مجموعه باشد، یک سند با یک شناسه تصادفی ایجاد می شود. اگر مسیر به یک سند باشد و وجود نداشته باشد، ایجاد می شود. این API وعده ای را برمی گرداند که به شناسه سند اضافه یا اصلاح شده حل می شود. اگر گزینه تراکنش استفاده شود، API همچنان یک وعده را برمیگرداند، اما از آنجایی که نوشتهها دستهبندی میشوند، شناسه را شامل نمیشود.
نحو
Firestore.write(path, input[, options]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
path | رشته | مسیر سند یا مجموعه. نباید با "/" شروع یا ختم شود. |
input | شی | مقدار برای نوشتن در سند. اگر گزینه ادغام تنظیم شده باشد، API کلیدهای ورودی را در سند ادغام می کند. |
options | شی | گزینه های درخواست اختیاری گزینه های پشتیبانی شده عبارتند از: projectId ، ادغام و تراکنش . کلیدهای گزینه ناشناخته نادیده گرفته می شوند. ( گزینه ها را در زیر ببینید.) |
پارامتر | تایپ کنید | توضیحات |
---|---|---|
projectId | رشته | اختیاری شناسه پروژه Google Cloud Platform. اگر حذف شود، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می شود تا زمانی که تنظیمات مجوز access_firestore برای ID پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر ظرف سرور در Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT قبلاً روی شناسه پروژه Google Cloud تنظیم میشود. |
merge | بولی | اختیاری اگر روی true تنظیم شود، کلیدهای ورودی را در سند ادغام کنید، در غیر این صورت روش کل سند را لغو می کند. پیش فرض ها به false . |
transaction | رشته | اختیاری مقدار بازیابی شده از Firestore.runTransaction(). عملیات مورد استفاده در یک تراکنش را علامت گذاری می کند. |
مثال
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
تابع Firestore.query
مجموعه داده شده را پرس و جو می کند و قولی را برمی گرداند که به آرایه ای از اسناد Firestore که با شرایط پرس و جو منطبق است حل می شود. شی سند Firestore همان است که در بالا در Firestore.read
فهرست شده است. اگر هیچ سندی وجود نداشته باشد که با شرایط پرس و جو مطابقت داشته باشد، وعده برگشتی به یک آرایه خالی حل می شود.
نحو
Firestore.query(collection, queryConditions[, options]);
پارامتر | تایپ کنید | توضیحات |
---|---|---|
collection | رشته | مسیر رسیدن به مجموعه نباید با "/" شروع یا ختم شود. |
queryConditions | آرایه | آرایه ای از شرایط پرس و جو هر پرس و جو به شکل یک آرایه با سه مقدار کلید ، عملگر ، و expectValue ارائه می شود. به عنوان مثال: [['id'، '<'، '5']، ['state'، '=='، 'CA']]. شرایط با هم AND می شوند تا نتیجه پرس و جو ایجاد شود. لطفاً برای لیستی از اپراتورهای پرس و جوی سازگار به عملگرهای پرس و جو Firestore مراجعه کنید. |
options | شی | گزینه های درخواست اختیاری گزینه های پشتیبانی شده عبارتند از: projectId ، disableCache ، limit و تراکنش . کلیدهای گزینه ناشناخته نادیده گرفته می شوند. ( گزینه ها را در زیر ببینید.) |
پارامتر | تایپ کنید | توضیحات |
---|---|---|
projectId | رشته | اختیاری شناسه پروژه Google Cloud Platform. اگر حذف شود، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می شود تا زمانی که تنظیمات مجوز access_firestore برای ID پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر ظرف سرور در Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT قبلاً روی شناسه پروژه Google Cloud تنظیم میشود. |
disableCache | بولی | اختیاری تعیین می کند که حافظه نهان غیرفعال شود یا خیر. ذخیره سازی به طور پیش فرض فعال است، که نتایج را برای مدت زمان درخواست ذخیره می کند. |
limit | شماره | اختیاری حداکثر تعداد نتایج برگردانده شده توسط پرس و جو را به طور پیش فرض به 5 تغییر می دهد. |
transaction | رشته | اختیاری مقدار بازیابی شده از Firestore.runTransaction(). عملیات مورد استفاده در یک تراکنش را علامت گذاری می کند. |
مثال
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
تابع Firestore.runTransaction
به کاربر اجازه می دهد تا به صورت اتمی از Firestore بخواند و بنویسد. اگر نوشتن همزمان یا تضاد تراکنش دیگری اتفاق بیفتد، تراکنش تا دو بار دوباره امتحان میشود. اگر پس از سه بار تلاش شکست بخورد، API با یک خطا رد می شود. این API قولی را برمیگرداند که برای هر عملیات نوشتن، در صورت موفقیتآمیز تراکنش، به آرایهای از شناسههای سند حل میشود و در صورت عدم موفقیت، خطا را رد میکند.
نحو
Firestore.runTransaction(callback[, options]);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
callback | تابع | تماس برگشتی که با شناسه تراکنش رشته ای فراخوانی می شود. شناسه تراکنش می تواند به فراخوانی های API خواندن/نوشتن/پرس و جو منتقل شود. این تابع callback باید یک وعده را برگرداند. تماس برگشتی ممکن است قبل از شکست تا سه بار اجرا شود. |
options | شی | گزینه های درخواست اختیاری تنها گزینه پشتیبانی شده projectId است. کلیدهای گزینه ناشناخته نادیده گرفته می شوند. ( گزینه ها را در زیر ببینید.) |
پارامتر | تایپ کنید | توضیحات |
---|---|---|
projectId | رشته | اختیاری شناسه پروژه Google Cloud Platform. اگر حذف شود، projectId از متغیر محیطی GOOGLE_CLOUD_PROJECT بازیابی می شود تا زمانی که تنظیمات مجوز access_firestore برای ID پروژه روی * یا GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر ظرف سرور در Google Cloud در حال اجرا باشد، GOOGLE_CLOUD_PROJECT قبلاً روی شناسه پروژه Google Cloud تنظیم میشود. |
مثال
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
خطاهای موجود در هر تابع Firestore با یک شی حاوی یک کلید reason
رد خواهند شد:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
دلایل خطا می تواند حاوی کدهای خطای Firestore REST API باشد، اما محدود به آن نیست.
مجوزهای مرتبط
JSON
شیئی را برمی گرداند که توابع JSON را ارائه می دهد.
تابع parse()
یک رشته JSON را برای ساخت مقدار یا شی توصیف شده توسط رشته تجزیه می کند. اگر مقدار قابل تجزیه نباشد (به عنوان مثال JSON دارای شکل نادرست)، تابع undefined
برمی گردد. اگر مقدار ورودی یک رشته نباشد، ورودی به یک رشته اجباری می شود.
عملکرد stringify()
ورودی را به یک رشته JSON تبدیل می کند. اگر مقدار قابل تجزیه نباشد (به عنوان مثال شیء دارای یک چرخه است) ، این روش undefined
باز می گردد.
مثال
const JSON = require('JSON');
// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');
// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});
نحو
JSON.parse(stringInput);
JSON.stringify(value);
مجوزهای مرتبط
هیچ کدام
Math
یک شیء که عملکردهای Math
را ارائه می دهد.
نحو
const Math = require('Math');
// Retrieve the absolute value.
const absolute = Math.abs(-3);
// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);
// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);
// Round the input to the nearest integer.
const rounded = Math.round(3.1);
// Return the largest argument.
const biggest = Math.max(1, 3);
// Return the smallest argument.
const smallest = Math.min(3, 5);
// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);
// Return the square root of the argument.
const unsquared = Math.sqrt(9);
پارامترها
پارامترهای عملکرد ریاضی به اعداد تبدیل می شوند.
مجوزهای مرتبط
هیچ کدام
Messages
API های زیر با هم کار می کنند تا پیام های بین قسمت های مختلف یک ظرف را منتقل کنند.
addMessageListener
تابعی را اضافه می کند که برای یک پیام از یک نوع خاص گوش می دهد. هنگامی که پیامی از آن نوع با استفاده از API sendMessage
(به طور معمول توسط یک برچسب) ارسال می شود ، پاسخ به صورت همزمان اجرا می شود. پاسخ به تماس با دو پارامتر اجرا می شود:
-
messageType:string
-
message:Object
اگر پاسخ به تماس در مشتری اضافه شود ، پاسخ به تماس در تمام رویدادهایی که مشتری ایجاد می کند پیام دریافت می کند. اگر پاسخ به تماس باید فقط از یک رویداد خاص پیام دریافت کند ، این API را با استفاده bindToEvent
در عملکرد onStart
runContainer
API به رویداد متصل کنید. مثال را ببینید.
نحو
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
messageType | رشته | نوع پیام برای گوش دادن. اگر مقدار یک رشته نباشد ، به یک رشته مجبور می شود. |
callback | تابع | هنگام ارسال پیام از نوع پیام قابل اجرا ، تماس تلفنی برای اجرای آن انجام می شود. اگر پاسخ به تماس یک عملکردی نباشد ، API هیچ کاری نمی کند. |
مثال
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
مجوزهای مرتبط
نیاز به مجوز use_message
دارد. مجوز باید حداقل برای اجازه پیکربندی شود:
- نوع پیام با
Usage
ازlisten
یاlisten_and_send
.
hasMessageListener
اگر شنونده پیام برای نوع پیام داده شده اضافه شده باشد ، درست برمی گردد. در غیر این صورت نادرست است.
نحو
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
مجوزهای مرتبط
هیچ کدام
sendMessage
پیام از نوع مشخص شده را به یک شنونده ثبت شده ارسال می کند. این می تواند برای ارسال پیام از یک برچسب به مشتری که ظرف را اداره می کند استفاده شود.
نحو
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
messageType | رشته | نوع پیام برای ارسال. اگر مقدار یک رشته نباشد ، به یک رشته مجبور می شود. |
message | شی | پیام ارسال اگر پیام یک شیء نباشد ، API هیچ کاری نمی کند. |
مجوزهای مرتبط
نیاز به مجوز use_message
دارد. مجوز باید حداقل برای اجازه پیکربندی شود:
- یک نوع پیام با
Usage
ازlisten_and_send
یاsend
.
Object
یک شیء را که روشهای Object
را ارائه می دهد ، برمی گرداند.
روش keys()
رفتار استاندارد کتابخانه را ارائه می دهد. رفتارهای کلیدی () . این مجموعه ای از نام های دارایی قابل توجه یک شیء خاص را به همان ترتیب که A for...in...
حلقه می کند ، برمی گرداند. اگر مقدار ورودی یک شی نباشد ، به یک شیء اجبار می شود.
روش values()
رفتار استاندارد کتابخانه. Values () رفتار () را ارائه می دهد. این مجموعه ای از مقادیر خاص خاص خاص خود را به همان ترتیب که A for...in...
حلقه می کند ، برمی گرداند. اگر مقدار ورودی یک شی نباشد ، به یک شیء اجبار می شود.
روش entries()
رفتار استاندارد کتابخانه را ارائه می دهد. رفتار () . این مجموعه از ویژگی های قابل توجه خود یک شیء خاص [key, value]
را به همان ترتیب که A for...in...
حلقه می کند ، باز می گرداند. اگر مقدار ورودی یک شیء نباشد ، به یک شیء مجبور می شود.
روش freeze()
رفتار استاندارد کتابخانه را ارائه می دهد. رفتار Freeze () . دیگر یک شیء یخ زده قابل تغییر نیست. انجماد یک شی مانع از افزودن خصوصیات جدید به آن ، حذف خواص موجود و تغییر مقادیر خاصیت موجود در آن می شود. freeze()
همان شیء را که در آن منتقل شده است باز می گرداند. یک استدلال بدوی یا تهی به گونه ای رفتار می شود که گویی یک شی یخ زده است و بازگردانده خواهد شد.
روش delete()
رفتار اپراتور حذف کتابخانه استاندارد را ارائه می دهد. این کلید داده شده را از جسم خارج می کند مگر اینکه جسم منجمد شود. مانند اپراتور استاندارد حذف کتابخانه ، اگر اولین مقدار ورودی ( objectInput
) یک شیء true
که حتی اگر مقدار ورودی دوم ( keyToDelete
) کلید را مشخص کند ، کلید را مشخص می کند. در همه موارد دیگر false
است. با این حال ، با روش های زیر با اپراتور حذف کتابخانه استاندارد تفاوت دارد:
-
keyToDelete
نمی تواند یک رشته با نفوذ باشد که یک کلید تو در تو را مشخص می کند. -
delete()
برای حذف عناصر از یک آرایه قابل استفاده نیست. -
delete()
برای حذف هرگونه خاصیت از دامنه جهانی قابل استفاده نیست.
نحو
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
پارامترها
شیء.
پارامتر | تایپ کنید | توضیحات |
---|---|---|
عینی | هر | شیئی که کلیدهای آن برای شمارش است. اگر ورودی یک شی نباشد ، به یک شیء اجبار می شود. |
مقادیر
پارامتر | تایپ کنید | توضیحات |
---|---|---|
عینی | هر | شیء که ارزشهای آن برای شمارش است. اگر ورودی یک شی نباشد ، به یک شیء اجبار می شود. |
شیء.
پارامتر | تایپ کنید | توضیحات |
---|---|---|
عینی | هر | شیء آن که کلید/مقدار آن را برای شمارش جفت می کند. اگر ورودی یک شی نباشد ، به یک شیء اجبار می شود. |
object.freeze
پارامتر | تایپ کنید | توضیحات |
---|---|---|
عینی | هر | جسمی که باید منجمد شود. اگر ورودی یک شی نباشد ، به عنوان یک شی یخ زده رفتار می شود. |
شیء. delete
پارامتر | تایپ کنید | توضیحات |
---|---|---|
عینی | هر | شیء که کلید آن برای حذف است. |
کلیدی | رشته | کلید سطح بالا برای حذف. |
مثال
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
یک شیء را برمی گرداند که روش هایی را برای تعامل با وعده ها فراهم می کند.
وعده ها از نظر عملکردی معادل وعده های جاوا اسکریپت هستند. هر نمونه دارای سه روش است که وعده ای را برمی گرداند که در صورت تسویه حساب یک عمل بیشتر امکان پذیر است:
-
.then()
- هر دو موارد حل شده و رد شده را کنترل می کند. این دو تماس به عنوان پارامتر طول می کشد: یکی برای مورد موفقیت و دیگری برای پرونده شکست. -
.catch()
- فقط موارد رد شده را اداره می کند. به عنوان یک پارامتر یک پاسخ به تماس می گیرد. -
.finally()
- راهی را برای اجرای کد فراهم می کند که آیا قول برطرف شده یا رد شده است. به عنوان پارامتر که بدون استدلال فراخوانی می شود ، یک پاسخ به تماس می گیرد.
متغیری که یک وعده را برمی گرداند برابر است با ارزش حل شده وعده ، یا اگر قول رد false
شود.
مثال
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
قولی را برمی گرداند که یا:
- هنگامی که تمام ورودی ها برطرف شده ، حل می شود ، یا
- رد می کند وقتی هر یک از ورودی ها رد می شوند
نحو
Promise.all(inputs);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
inputs | آرایه | مجموعه ای از ارزش ها یا وعده ها. اگر یک ورودی وعده ای نداشته باشد ، ورودی به گونه ای منتقل می شود که گویی مقدار حل شده یک وعده است. اگر ورودی آرایه ای نباشد ، خطایی را پرتاب می کند. |
مثال
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
مجوزهای مرتبط
هیچ کدام
Promise.create
قولی را ایجاد می کند که از نظر عملکردی معادل یک وعده جاوا اسکریپت باشد.
نحو
Promise.create(resolver);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
resolver | تابع | تابعی که با دو کارکرد فراخوانی می شود - حل و فصل کنید. وعده برگشتی هنگامی که پارامتر مربوطه فراخوانی می شود ، برطرف یا رد می شود. اگر Resolver تابعی نباشد ، خطایی را پرتاب می کند. |
مثال
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
مجوزهای مرتبط
هیچ کدام
تست API ها
این API ها با تست های JavaScript Sandboxed برای ساخت تست برای الگوهای سفارشی در Google Tag Manager کار می کنند. این API های تست require()
نیاز ندارند. [در مورد تست های الگوی سفارشی بیشتر بدانید].
assertApi
یک شیء Matcher را باز می گرداند که می تواند برای بیان صریح در مورد API داده شده استفاده شود.
نحو
assertApi(apiName)
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
apiName | رشته | نام API برای بررسی ؛ همان رشته ای که برای require() . |
همسان
-
Subject.wasCalled()
-
Subject.wasNotCalled()
-
Subject.wasCalledWith(...expected)
-
Subject.wasNotCalledWith(...expected)
نمونه ها
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
assertThat
API پس از کتابخانه [حقیقت] Google مدل سازی شده است. این شیء را برمی گرداند که می تواند برای بیان صریح در مورد ارزش یک موضوع مورد استفاده قرار گیرد. شکست ادعای بلافاصله آزمون را متوقف می کند و آن را به صورت شکست خورده علامت گذاری می کند. با این حال ، عدم موفقیت در یک آزمون بر سایر موارد آزمون تأثیر نمی گذارد.
نحو
assertThat(actual, opt_message)
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
actual | هر | مقدار استفاده در بررسی های مسلط. |
opt_message | رشته | در صورت عدم موفقیت ، پیام اختیاری برای چاپ. |
همسان
تطبیق | توضیحات |
---|---|
isUndefined() | ادعا می کند که موضوع undefined است. |
isDefined() | ادعا می کند که موضوع undefined است. |
isNull() | ادعا می کند که موضوع null است. |
isNotNull() | ادعا می کند که موضوع null نیست. |
isFalse() | ادعا می کند که موضوع false است. |
isTrue() | ادعا می کند که موضوع true است. |
isFalsy() | ادعا می کند که موضوع فال است. مقادیر فال undefined ، null ، false ، NaN ، 0 و '' (رشته خالی). |
isTruthy() | ادعا می کند که موضوع درست است. مقادیر فال undefined ، null ، false ، NaN ، 0 و '' (رشته خالی). |
isNaN() | ادعا می کند که موضوع NAN ارزش است. |
isNotNaN() | ادعا می کند که موضوع علاوه بر NAN ، ارزش دارد. |
isInfinity() | ادعا می کند که موضوع بی نهایت مثبت یا منفی است. |
isNotInfinity() | ادعا می کند که موضوع علاوه بر بی نهایت مثبت یا منفی ، هر مقدار ارزش دارد. |
isEqualTo(expected) | ادعا می کند که موضوع برابر با مقدار داده شده است. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
isNotEqualTo(expected) | ادعا می کند که موضوع برابر با مقدار داده شده نیست. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
isAnyOf(...expected) | ادعا می کند که موضوع برابر با یکی از مقدار داده شده است. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
isNoneOf(...expected) | ادعا می کند که موضوع با هیچ یک از مقادیر داده شده برابر نیست. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
isStrictlyEqualTo(expected) | ادعا می کند که موضوع کاملاً برابر ( === ) با مقدار داده شده است. |
isNotStrictlyEqualTo(expected) | ادعا می کند که موضوع کاملاً برابر نیست ( !== ) با مقدار داده شده. |
isGreaterThan(expected) | ادعا می کند که موضوع بیشتر از ( > ) مقدار داده شده در یک مقایسه سفارش داده شده است. |
isGreaterThanOrEqualTo(expected) | ادعا می کند که موضوع بیشتر از یا مساوی ( >= ) مقدار داده شده در یک مقایسه سفارش داده شده است. |
isLessThan(expected) | ادعا می کند که موضوع کمتر از ( < ) مقدار داده شده در یک مقایسه سفارش داده شده است. |
isLessThanOrEqualTo(expected) | ادعا می کند که موضوع کمتر یا مساوی با ( <= ) مقدار داده شده در یک مقایسه مرتب شده است. |
contains(...expected) | ادعا می کند که موضوع آرایه یا رشته ای است که شامل تمام مقادیر داده شده به هر ترتیب است. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
doesNotContain(...expected) | ادعا می کند که موضوع آرایه یا رشته ای است که حاوی هیچ یک از مقادیر داده شده نیست. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
containsExactly(...expected) | ادعا می کند که موضوع آرایه ای است که شامل تمام مقادیر داده شده به هر ترتیب و هیچ ارزش دیگری است. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
doesNotContainExactly(...expected) | ادعا می کند که موضوع آرایه ای است که شامل مجموعه ای متفاوت از مقادیر از مقادیر داده شده به هر ترتیب است. این یک مقایسه ارزش است ، نه یک مقایسه مرجع. محتوای اشیاء و آرایه ها به صورت بازگشتی مقایسه می شوند. |
hasLength(expected) | ادعا می کند که موضوع آرایه یا رشته ای با طول داده شده است. اگر مقدار آرایه یا رشته ای نباشد ، این ادعا همیشه شکست می خورد. |
isEmpty() | ادعا می کند که موضوع آرایه یا رشته ای خالی است (طول = 0). اگر مقدار آرایه یا رشته ای نباشد ، این ادعا همیشه شکست می خورد. |
isNotEmpty() | ادعا می کند که موضوع آرایه یا رشته ای است که خالی نیست (طول> 0). اگر مقدار آرایه یا رشته ای نباشد ، این ادعا همیشه شکست می خورد. |
isArray() | ادعا می کند که نوع موضوع آرایه ای است. |
isBoolean() | ادعا می کند که نوع موضوع یک بولی است. |
isFunction() | ادعا می کند که نوع موضوع یک تابع است. |
isNumber() | ادعا می کند که نوع موضوع یک عدد است. |
isObject() | ادعا می کند که نوع موضوع یک شی است. |
isString() | ادعا می کند که نوع موضوع یک رشته است. |
نمونه ها
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
در صورت تهیه بلافاصله آزمایش فعلی را شکست داده و پیام داده شده را چاپ می کند.
نحو
fail(opt_message);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
opt_message | رشته | متن پیام خطای اختیاری. |
مثال
fail('This test has failed.');
mock
API mock
به شما امکان می دهد تا رفتار API های ماسه ای را نادیده بگیرید. API مسخره برای استفاده در کد قالب بی خطر است ، اما فقط در حالت تست عملیاتی است. قبل از اجرای هر آزمون ، مسخره ها دوباره تنظیم می شوند.
نحو
mock(apiName, returnValue);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
apiName | رشته | نام API برای مسخره کردن ؛ همان رشته ای که برای require() |
returnValue | هر | مقدار بازگشت برای API یا تابعی که به جای API نامیده می شود. اگر returnValue یک تابع است ، آن عملکرد به جای API ماسهبازی نامیده می شود. اگر returnValue چیزی غیر از یک عملکرد باشد ، این مقدار به جای API ماسهبازی بازگردانده می شود. |
نمونه ها
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
API mockObject
به شما امکان می دهد تا رفتار API های ماسه ای را که یک شی را برمی گردانند ، نادیده بگیرید. API برای استفاده در کد قالب بی خطر است ، اما فقط در حالت تست عملیاتی است. قبل از اجرای هر آزمون ، مسخره ها دوباره تنظیم می شوند.
نحو
mockObject(apiName, objectMock);
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
apiName | رشته | نام API برای مسخره کردن ؛ همان رشته ای که برای require() |
objectMock | شی | مقدار بازگشت برای API یا تابعی که به جای API نامیده می شود. باید یک شی باشد. |
نمونه ها
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
کد را برای الگوی ، یعنی محتوای برگه کد ، در محیط آزمون فعلی با یک شیء داده ورودی داده شده اجرا می کند.
نحو
runCode(data)
پارامترها
پارامتر | تایپ کنید | توضیحات |
---|---|---|
data | شی | شیء داده ها در آزمون مورد استفاده قرار می گیرند. |
ارزش بازگشتی
مقدار یک متغیر را برای الگوهای متغیر برمی گرداند. برای همه انواع دیگر الگوهای undefined
برمی گردد.
مثال
runCode({field1: 123, field2: 'value'});