@shware/analytics 2.2.4 → 2.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/schema/index.d.cts
CHANGED
|
@@ -13,13 +13,13 @@ declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
|
|
|
13
13
|
browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
14
14
|
browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
15
15
|
platform: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
16
|
-
unknown: "unknown";
|
|
17
16
|
ios: "ios";
|
|
18
17
|
android: "android";
|
|
19
18
|
web: "web";
|
|
20
19
|
macos: "macos";
|
|
21
20
|
windows: "windows";
|
|
22
21
|
linux: "linux";
|
|
22
|
+
unknown: "unknown";
|
|
23
23
|
}>>;
|
|
24
24
|
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
25
25
|
device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -85,13 +85,13 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
|
|
|
85
85
|
browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
86
86
|
browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
87
87
|
platform: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
88
|
-
unknown: "unknown";
|
|
89
88
|
ios: "ios";
|
|
90
89
|
android: "android";
|
|
91
90
|
web: "web";
|
|
92
91
|
macos: "macos";
|
|
93
92
|
windows: "windows";
|
|
94
93
|
linux: "linux";
|
|
94
|
+
unknown: "unknown";
|
|
95
95
|
}>>;
|
|
96
96
|
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
97
97
|
device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -13,13 +13,13 @@ declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
|
|
|
13
13
|
browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
14
14
|
browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
15
15
|
platform: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
16
|
-
unknown: "unknown";
|
|
17
16
|
ios: "ios";
|
|
18
17
|
android: "android";
|
|
19
18
|
web: "web";
|
|
20
19
|
macos: "macos";
|
|
21
20
|
windows: "windows";
|
|
22
21
|
linux: "linux";
|
|
22
|
+
unknown: "unknown";
|
|
23
23
|
}>>;
|
|
24
24
|
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
25
25
|
device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -85,13 +85,13 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
|
|
|
85
85
|
browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
86
86
|
browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
87
87
|
platform: z.ZodMiniOptional<z.ZodMiniEnum<{
|
|
88
|
-
unknown: "unknown";
|
|
89
88
|
ios: "ios";
|
|
90
89
|
android: "android";
|
|
91
90
|
web: "web";
|
|
92
91
|
macos: "macos";
|
|
93
92
|
windows: "windows";
|
|
94
93
|
linux: "linux";
|
|
94
|
+
unknown: "unknown";
|
|
95
95
|
}>>;
|
|
96
96
|
device: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
97
97
|
device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -105,6 +105,9 @@ function getUserData(tags, data) {
|
|
|
105
105
|
}
|
|
106
106
|
if (tags.fbc) {
|
|
107
107
|
userData.setFbc(tags.fbc);
|
|
108
|
+
} else if (tags.fbclid) {
|
|
109
|
+
const fbc = `fb.1.${Date.now()}.${tags.fbclid}`;
|
|
110
|
+
userData.setFbc(fbc);
|
|
108
111
|
}
|
|
109
112
|
if (tags.fbp) {
|
|
110
113
|
userData.setFbp(tags.fbp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/server/conversions-api.ts"],"sourcesContent":["import {\n AppData,\n Content,\n CustomData,\n EventRequest,\n ExtendedDeviceInfo,\n ServerEvent,\n UserData,\n} from 'facebook-nodejs-business-sdk';\nimport { mapFBEvent } from '../track/fbq';\nimport type { TrackEvent, TrackTags, UserProvidedData } from '../track/types';\n\nfunction getUserData(tags: TrackTags, data: UserProvidedData) {\n const userData = new UserData();\n\n // set user provided data\n if (data.email) {\n if (Array.isArray(data.email)) {\n userData.setEmails(data.email);\n } else {\n userData.setEmail(data.email);\n }\n }\n if (data.phone_number) {\n if (Array.isArray(data.phone_number)) {\n userData.setPhones(data.phone_number);\n } else {\n userData.setPhone(data.phone_number);\n }\n }\n if (data.gender) {\n if (data.gender === 'female') {\n userData.setGender('f');\n } else if (data.gender === 'male') {\n userData.setGender('m');\n }\n }\n if (data.address) {\n if (Array.isArray(data.address)) {\n const firstNames = data.address.map((a) => a.first_name).filter(Boolean);\n const lastNames = data.address.map((a) => a.last_name).filter(Boolean);\n const cities = data.address.map((a) => a.city).filter(Boolean);\n const states = data.address.map((a) => a.region).filter(Boolean);\n const postalCodes = data.address.map((a) => a.postal_code).filter(Boolean);\n const countries = data.address.map((a) => a.country?.split(/[-_]/).at(0)).filter(Boolean);\n userData.setFirstNames(firstNames as string[]);\n userData.setLastNames(lastNames as string[]);\n userData.setCities(cities as string[]);\n userData.setStates(states as string[]);\n userData.setZips(postalCodes as string[]);\n userData.setCountries(countries as string[]);\n } else {\n if (data.address.first_name) {\n userData.setFirstName(data.address.first_name);\n userData.setF5First(data.address.first_name.slice(0, 5));\n }\n if (data.address.last_name) {\n userData.setLastName(data.address.last_name);\n userData.setF5Last(data.address.last_name.slice(0, 5));\n }\n if (data.address.city) userData.setCity(data.address.city);\n if (data.address.region) userData.setState(data.address.region);\n if (data.address.postal_code) userData.setZip(data.address.postal_code);\n if (data.address.country) userData.setCountry(data.address.country.split(/[-_]/).at(0)!);\n }\n }\n if (data.birthday) {\n userData.setDoby(data.birthday.year.toString());\n userData.setDobm(data.birthday.month.toString());\n userData.setDobd(data.birthday.day.toString());\n }\n if (data.user_id && data.user_id.length !== 0) {\n userData.setExternalId(data.user_id);\n }\n if (data.ip_address) {\n userData.setClientIpAddress(data.ip_address);\n }\n if (data.user_agent) {\n userData.setClientUserAgent(data.user_agent);\n }\n if (data.fb_login_id) {\n userData.setFbLoginId(data.fb_login_id);\n }\n if (data.fb_page_id) {\n userData.setPageId(data.fb_page_id);\n }\n\n // set tags info\n if (tags.fbc) {\n userData.setFbc(tags.fbc);\n }\n if (tags.fbp) {\n userData.setFbp(tags.fbp);\n }\n if (tags.advertising_id) {\n userData.setMadid(tags.advertising_id);\n }\n if (tags.ip_address && typeof tags.ip_address === 'string') {\n userData.setClientIpAddress(tags.ip_address);\n }\n\n return userData;\n}\n\nfunction getAppData(tags: TrackTags, appPackageName: string) {\n const extinfo = new ExtendedDeviceInfo();\n if (tags.os_name) {\n if (tags.os_name === 'iOS' || tags.os_name === 'iPadOS') {\n extinfo.setExtInfoVersion('i2');\n } else if (tags.os_name === 'Android') {\n extinfo.setExtInfoVersion('a2');\n }\n }\n extinfo.setAppPackageName(appPackageName);\n const shortVersion = tags.release?.split('.').at(0);\n if (shortVersion) {\n extinfo.setShortVersion(shortVersion);\n }\n if (tags.release) {\n extinfo.setLongVersion(tags.release);\n }\n if (tags.os_version) {\n extinfo.setOsVersion(tags.os_version);\n }\n if (tags.device_model_id) {\n extinfo.setDeviceModelName(tags.device_model_id);\n }\n if (tags.language) {\n extinfo.setLocale(tags.language);\n }\n if (tags.screen_width) {\n extinfo.setScreenWidth(tags.screen_width);\n }\n if (tags.screen_height) {\n extinfo.setScreenHeight(tags.screen_height);\n }\n if (tags.device_pixel_ratio) {\n extinfo.setScreenDensity(tags.device_pixel_ratio);\n }\n\n const appData = new AppData();\n appData.setExtinfo(extinfo);\n if (tags.install_referrer) {\n appData.setInstallReferrer(tags.install_referrer);\n }\n if (tags.advertising_id) {\n appData.setAdvertiserTrackingEnabled(true);\n }\n\n return appData;\n}\n\nfunction getCustomData({ name, properties }: TrackEvent<any>) {\n const data = new CustomData();\n const [_, _name, fbEventProperties] = mapFBEvent(name, properties);\n const {\n value,\n currency,\n content_name,\n content_category,\n content_ids,\n contents,\n content_type,\n // order_id,\n predicted_ltv,\n num_items,\n search_string,\n status,\n // item_number,\n delivery_category,\n ...custom_properties\n } = fbEventProperties;\n if (value) data.setValue(value);\n if (currency) data.setCurrency(currency);\n if (content_name) data.setContentName(content_name);\n if (content_category) data.setContentCategory(content_category);\n if (content_ids) data.setContentIds(content_ids);\n if (contents)\n data.setContents(\n contents.map((c) => {\n const result = new Content().setId(c.id).setQuantity(c.quantity);\n if (c.item_price) result.setItemPrice(c.item_price);\n if (c.title) result.setTitle(c.title);\n if (c.description) result.setDescription(c.description);\n if (c.brand) result.setBrand(c.brand);\n if (c.category) result.setCategory(c.category);\n if (c.delivery_category) result.setDeliveryCategory(c.delivery_category);\n return result;\n })\n );\n if (content_type) data.setContentType(content_type);\n // if (order_id) data.setOrderId(order_id);\n if (predicted_ltv) data.setPredictedLtv(predicted_ltv);\n if (num_items) data.setNumItems(num_items);\n if (search_string) data.setSearchString(search_string);\n if (status) data.setStatus(status.toString());\n // if (item_number) data.setItemNumber(item_number);\n if (delivery_category) data.setDeliveryCategory(delivery_category);\n if (custom_properties) data.setCustomProperties(custom_properties);\n return data;\n}\n\nexport function getServerEvent(\n event: TrackEvent<any>,\n data: UserProvidedData,\n appPackageName?: string\n) {\n const userData = getUserData(event.tags, data);\n const customData = getCustomData(event);\n const [_, eventName] = mapFBEvent(event.name, event.properties);\n const serverEvent = new ServerEvent()\n .setEventId(event.tags.idempotency_key ?? event.id.toString())\n .setEventName(eventName)\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setCustomData(customData);\n\n if (event.tags.source === 'app' && appPackageName) {\n const appData = getAppData(event.tags, appPackageName);\n serverEvent.setAppData(appData);\n }\n if (event.tags.source_url) {\n serverEvent.setEventSourceUrl(event.tags.source_url);\n }\n switch (event.tags.source) {\n case 'app':\n serverEvent.setActionSource('app');\n break;\n case 'web':\n serverEvent.setActionSource('website');\n break;\n default:\n break;\n }\n return serverEvent;\n}\n\nexport async function sendEvent(\n accessToken: string,\n pixelId: string,\n event: TrackEvent<any>,\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const request = new EventRequest(accessToken, pixelId);\n const fbEvent = getServerEvent(event, data, appPackageName);\n request.setEvents([fbEvent]);\n return request.execute();\n}\n\nexport async function sendEvents(\n accessToken: string,\n pixelId: string,\n events: TrackEvent<any>[],\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const fbEvents = events.map((event) => getServerEvent(event, data, appPackageName));\n const request = new EventRequest(accessToken, pixelId);\n request.setEvents(fbEvents);\n return request.execute();\n}\n\nexport async function sendTestEvent(accessToken: string, pixelId: string, testEventCode: string) {\n const extinfo = new ExtendedDeviceInfo()\n .setExtInfoVersion('a2')\n .setAppPackageName('com.some.app')\n .setShortVersion('771')\n .setLongVersion('Version 7.7.1')\n .setOsVersion('10.1.1')\n .setDeviceModelName('OnePlus6')\n .setLocale('en_US')\n .setTimezoneAbbreviation('GMT-1')\n .setCarrier('TMobile')\n .setScreenWidth(1920)\n .setScreenHeight(1080)\n .setScreenDensity('2.00')\n .setCpuCoreCount(2)\n .setTotalDiskSpaceGb(128)\n .setFreeDiskSpaceGb(8)\n .setDeviceTimeZone('USA/New York');\n\n const userData = new UserData().setEmail('test@example.com');\n const appData = new AppData().setExtinfo(extinfo);\n const event = new ServerEvent()\n .setEventId(Math.round(Math.random() * 1000_000).toString())\n .setEventName('TestEvent')\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setAppData(appData)\n .setActionSource('app');\n\n const request = new EventRequest(accessToken, pixelId);\n request.setTestEventCode(testEventCode);\n request.setEvents([event]);\n return request.execute();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAQO;AACP,iBAA2B;AAG3B,SAAS,YAAY,MAAiB,MAAwB;AAC5D,QAAM,WAAW,IAAI,6CAAS;AAG9B,MAAI,KAAK,OAAO;AACd,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,eAAS,UAAU,KAAK,KAAK;AAAA,IAC/B,OAAO;AACL,eAAS,SAAS,KAAK,KAAK;AAAA,IAC9B;AAAA,EACF;AACA,MAAI,KAAK,cAAc;AACrB,QAAI,MAAM,QAAQ,KAAK,YAAY,GAAG;AACpC,eAAS,UAAU,KAAK,YAAY;AAAA,IACtC,OAAO;AACL,eAAS,SAAS,KAAK,YAAY;AAAA,IACrC;AAAA,EACF;AACA,MAAI,KAAK,QAAQ;AACf,QAAI,KAAK,WAAW,UAAU;AAC5B,eAAS,UAAU,GAAG;AAAA,IACxB,WAAW,KAAK,WAAW,QAAQ;AACjC,eAAS,UAAU,GAAG;AAAA,IACxB;AAAA,EACF;AACA,MAAI,KAAK,SAAS;AAChB,QAAI,MAAM,QAAQ,KAAK,OAAO,GAAG;AAC/B,YAAM,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,OAAO;AACvE,YAAM,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,OAAO;AACrE,YAAM,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,OAAO;AAC7D,YAAM,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,OAAO;AAC/D,YAAM,cAAc,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,OAAO;AACzE,YAAM,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAG;AA5C7C;AA4CgD,uBAAE,YAAF,mBAAW,MAAM,QAAQ,GAAG;AAAA,OAAE,EAAE,OAAO,OAAO;AACxF,eAAS,cAAc,UAAsB;AAC7C,eAAS,aAAa,SAAqB;AAC3C,eAAS,UAAU,MAAkB;AACrC,eAAS,UAAU,MAAkB;AACrC,eAAS,QAAQ,WAAuB;AACxC,eAAS,aAAa,SAAqB;AAAA,IAC7C,OAAO;AACL,UAAI,KAAK,QAAQ,YAAY;AAC3B,iBAAS,aAAa,KAAK,QAAQ,UAAU;AAC7C,iBAAS,WAAW,KAAK,QAAQ,WAAW,MAAM,GAAG,CAAC,CAAC;AAAA,MACzD;AACA,UAAI,KAAK,QAAQ,WAAW;AAC1B,iBAAS,YAAY,KAAK,QAAQ,SAAS;AAC3C,iBAAS,UAAU,KAAK,QAAQ,UAAU,MAAM,GAAG,CAAC,CAAC;AAAA,MACvD;AACA,UAAI,KAAK,QAAQ,KAAM,UAAS,QAAQ,KAAK,QAAQ,IAAI;AACzD,UAAI,KAAK,QAAQ,OAAQ,UAAS,SAAS,KAAK,QAAQ,MAAM;AAC9D,UAAI,KAAK,QAAQ,YAAa,UAAS,OAAO,KAAK,QAAQ,WAAW;AACtE,UAAI,KAAK,QAAQ,QAAS,UAAS,WAAW,KAAK,QAAQ,QAAQ,MAAM,MAAM,EAAE,GAAG,CAAC,CAAE;AAAA,IACzF;AAAA,EACF;AACA,MAAI,KAAK,UAAU;AACjB,aAAS,QAAQ,KAAK,SAAS,KAAK,SAAS,CAAC;AAC9C,aAAS,QAAQ,KAAK,SAAS,MAAM,SAAS,CAAC;AAC/C,aAAS,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC;AAAA,EAC/C;AACA,MAAI,KAAK,WAAW,KAAK,QAAQ,WAAW,GAAG;AAC7C,aAAS,cAAc,KAAK,OAAO;AAAA,EACrC;AACA,MAAI,KAAK,YAAY;AACnB,aAAS,mBAAmB,KAAK,UAAU;AAAA,EAC7C;AACA,MAAI,KAAK,YAAY;AACnB,aAAS,mBAAmB,KAAK,UAAU;AAAA,EAC7C;AACA,MAAI,KAAK,aAAa;AACpB,aAAS,aAAa,KAAK,WAAW;AAAA,EACxC;AACA,MAAI,KAAK,YAAY;AACnB,aAAS,UAAU,KAAK,UAAU;AAAA,EACpC;AAGA,MAAI,KAAK,KAAK;AACZ,aAAS,OAAO,KAAK,GAAG;AAAA,EAC1B;AACA,MAAI,KAAK,KAAK;AACZ,aAAS,OAAO,KAAK,GAAG;AAAA,EAC1B;AACA,MAAI,KAAK,gBAAgB;AACvB,aAAS,SAAS,KAAK,cAAc;AAAA,EACvC;AACA,MAAI,KAAK,cAAc,OAAO,KAAK,eAAe,UAAU;AAC1D,aAAS,mBAAmB,KAAK,UAAU;AAAA,EAC7C;AAEA,SAAO;AACT;AAEA,SAAS,WAAW,MAAiB,gBAAwB;AAxG7D;AAyGE,QAAM,UAAU,IAAI,uDAAmB;AACvC,MAAI,KAAK,SAAS;AAChB,QAAI,KAAK,YAAY,SAAS,KAAK,YAAY,UAAU;AACvD,cAAQ,kBAAkB,IAAI;AAAA,IAChC,WAAW,KAAK,YAAY,WAAW;AACrC,cAAQ,kBAAkB,IAAI;AAAA,IAChC;AAAA,EACF;AACA,UAAQ,kBAAkB,cAAc;AACxC,QAAM,gBAAe,UAAK,YAAL,mBAAc,MAAM,KAAK,GAAG;AACjD,MAAI,cAAc;AAChB,YAAQ,gBAAgB,YAAY;AAAA,EACtC;AACA,MAAI,KAAK,SAAS;AAChB,YAAQ,eAAe,KAAK,OAAO;AAAA,EACrC;AACA,MAAI,KAAK,YAAY;AACnB,YAAQ,aAAa,KAAK,UAAU;AAAA,EACtC;AACA,MAAI,KAAK,iBAAiB;AACxB,YAAQ,mBAAmB,KAAK,eAAe;AAAA,EACjD;AACA,MAAI,KAAK,UAAU;AACjB,YAAQ,UAAU,KAAK,QAAQ;AAAA,EACjC;AACA,MAAI,KAAK,cAAc;AACrB,YAAQ,eAAe,KAAK,YAAY;AAAA,EAC1C;AACA,MAAI,KAAK,eAAe;AACtB,YAAQ,gBAAgB,KAAK,aAAa;AAAA,EAC5C;AACA,MAAI,KAAK,oBAAoB;AAC3B,YAAQ,iBAAiB,KAAK,kBAAkB;AAAA,EAClD;AAEA,QAAM,UAAU,IAAI,4CAAQ;AAC5B,UAAQ,WAAW,OAAO;AAC1B,MAAI,KAAK,kBAAkB;AACzB,YAAQ,mBAAmB,KAAK,gBAAgB;AAAA,EAClD;AACA,MAAI,KAAK,gBAAgB;AACvB,YAAQ,6BAA6B,IAAI;AAAA,EAC3C;AAEA,SAAO;AACT;AAEA,SAAS,cAAc,EAAE,MAAM,WAAW,GAAoB;AAC5D,QAAM,OAAO,IAAI,+CAAW;AAC5B,QAAM,CAAC,GAAG,OAAO,iBAAiB,QAAI,uBAAW,MAAM,UAAU;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,MAAI,MAAO,MAAK,SAAS,KAAK;AAC9B,MAAI,SAAU,MAAK,YAAY,QAAQ;AACvC,MAAI,aAAc,MAAK,eAAe,YAAY;AAClD,MAAI,iBAAkB,MAAK,mBAAmB,gBAAgB;AAC9D,MAAI,YAAa,MAAK,cAAc,WAAW;AAC/C,MAAI;AACF,SAAK;AAAA,MACH,SAAS,IAAI,CAAC,MAAM;AAClB,cAAM,SAAS,IAAI,4CAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ;AAC/D,YAAI,EAAE,WAAY,QAAO,aAAa,EAAE,UAAU;AAClD,YAAI,EAAE,MAAO,QAAO,SAAS,EAAE,KAAK;AACpC,YAAI,EAAE,YAAa,QAAO,eAAe,EAAE,WAAW;AACtD,YAAI,EAAE,MAAO,QAAO,SAAS,EAAE,KAAK;AACpC,YAAI,EAAE,SAAU,QAAO,YAAY,EAAE,QAAQ;AAC7C,YAAI,EAAE,kBAAmB,QAAO,oBAAoB,EAAE,iBAAiB;AACvE,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACF,MAAI,aAAc,MAAK,eAAe,YAAY;AAElD,MAAI,cAAe,MAAK,gBAAgB,aAAa;AACrD,MAAI,UAAW,MAAK,YAAY,SAAS;AACzC,MAAI,cAAe,MAAK,gBAAgB,aAAa;AACrD,MAAI,OAAQ,MAAK,UAAU,OAAO,SAAS,CAAC;AAE5C,MAAI,kBAAmB,MAAK,oBAAoB,iBAAiB;AACjE,MAAI,kBAAmB,MAAK,oBAAoB,iBAAiB;AACjE,SAAO;AACT;AAEO,SAAS,eACd,OACA,MACA,gBACA;AACA,QAAM,WAAW,YAAY,MAAM,MAAM,IAAI;AAC7C,QAAM,aAAa,cAAc,KAAK;AACtC,QAAM,CAAC,GAAG,SAAS,QAAI,uBAAW,MAAM,MAAM,MAAM,UAAU;AAC9D,QAAM,cAAc,IAAI,gDAAY,EACjC,WAAW,MAAM,KAAK,mBAAmB,MAAM,GAAG,SAAS,CAAC,EAC5D,aAAa,SAAS,EACtB,aAAa,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,EAC1C,YAAY,QAAQ,EACpB,cAAc,UAAU;AAE3B,MAAI,MAAM,KAAK,WAAW,SAAS,gBAAgB;AACjD,UAAM,UAAU,WAAW,MAAM,MAAM,cAAc;AACrD,gBAAY,WAAW,OAAO;AAAA,EAChC;AACA,MAAI,MAAM,KAAK,YAAY;AACzB,gBAAY,kBAAkB,MAAM,KAAK,UAAU;AAAA,EACrD;AACA,UAAQ,MAAM,KAAK,QAAQ;AAAA,IACzB,KAAK;AACH,kBAAY,gBAAgB,KAAK;AACjC;AAAA,IACF,KAAK;AACH,kBAAY,gBAAgB,SAAS;AACrC;AAAA,IACF;AACE;AAAA,EACJ;AACA,SAAO;AACT;AAEA,eAAsB,UACpB,aACA,SACA,OACA,OAAyB,CAAC,GAC1B,gBACA;AACA,QAAM,UAAU,IAAI,iDAAa,aAAa,OAAO;AACrD,QAAM,UAAU,eAAe,OAAO,MAAM,cAAc;AAC1D,UAAQ,UAAU,CAAC,OAAO,CAAC;AAC3B,SAAO,QAAQ,QAAQ;AACzB;AAEA,eAAsB,WACpB,aACA,SACA,QACA,OAAyB,CAAC,GAC1B,gBACA;AACA,QAAM,WAAW,OAAO,IAAI,CAAC,UAAU,eAAe,OAAO,MAAM,cAAc,CAAC;AAClF,QAAM,UAAU,IAAI,iDAAa,aAAa,OAAO;AACrD,UAAQ,UAAU,QAAQ;AAC1B,SAAO,QAAQ,QAAQ;AACzB;AAEA,eAAsB,cAAc,aAAqB,SAAiB,eAAuB;AAC/F,QAAM,UAAU,IAAI,uDAAmB,EACpC,kBAAkB,IAAI,EACtB,kBAAkB,cAAc,EAChC,gBAAgB,KAAK,EACrB,eAAe,eAAe,EAC9B,aAAa,QAAQ,EACrB,mBAAmB,UAAU,EAC7B,UAAU,OAAO,EACjB,wBAAwB,OAAO,EAC/B,WAAW,SAAS,EACpB,eAAe,IAAI,EACnB,gBAAgB,IAAI,EACpB,iBAAiB,MAAM,EACvB,gBAAgB,CAAC,EACjB,oBAAoB,GAAG,EACvB,mBAAmB,CAAC,EACpB,kBAAkB,cAAc;AAEnC,QAAM,WAAW,IAAI,6CAAS,EAAE,SAAS,kBAAkB;AAC3D,QAAM,UAAU,IAAI,4CAAQ,EAAE,WAAW,OAAO;AAChD,QAAM,QAAQ,IAAI,gDAAY,EAC3B,WAAW,KAAK,MAAM,KAAK,OAAO,IAAI,GAAQ,EAAE,SAAS,CAAC,EAC1D,aAAa,WAAW,EACxB,aAAa,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,EAC1C,YAAY,QAAQ,EACpB,WAAW,OAAO,EAClB,gBAAgB,KAAK;AAExB,QAAM,UAAU,IAAI,iDAAa,aAAa,OAAO;AACrD,UAAQ,iBAAiB,aAAa;AACtC,UAAQ,UAAU,CAAC,KAAK,CAAC;AACzB,SAAO,QAAQ,QAAQ;AACzB;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/server/conversions-api.ts"],"sourcesContent":["import {\n AppData,\n Content,\n CustomData,\n EventRequest,\n ExtendedDeviceInfo,\n ServerEvent,\n UserData,\n} from 'facebook-nodejs-business-sdk';\nimport { mapFBEvent } from '../track/fbq';\nimport type { TrackEvent, TrackTags, UserProvidedData } from '../track/types';\n\nfunction getUserData(tags: TrackTags, data: UserProvidedData) {\n const userData = new UserData();\n\n // set user provided data\n if (data.email) {\n if (Array.isArray(data.email)) {\n userData.setEmails(data.email);\n } else {\n userData.setEmail(data.email);\n }\n }\n if (data.phone_number) {\n if (Array.isArray(data.phone_number)) {\n userData.setPhones(data.phone_number);\n } else {\n userData.setPhone(data.phone_number);\n }\n }\n if (data.gender) {\n if (data.gender === 'female') {\n userData.setGender('f');\n } else if (data.gender === 'male') {\n userData.setGender('m');\n }\n }\n if (data.address) {\n if (Array.isArray(data.address)) {\n const firstNames = data.address.map((a) => a.first_name).filter(Boolean);\n const lastNames = data.address.map((a) => a.last_name).filter(Boolean);\n const cities = data.address.map((a) => a.city).filter(Boolean);\n const states = data.address.map((a) => a.region).filter(Boolean);\n const postalCodes = data.address.map((a) => a.postal_code).filter(Boolean);\n const countries = data.address.map((a) => a.country?.split(/[-_]/).at(0)).filter(Boolean);\n userData.setFirstNames(firstNames as string[]);\n userData.setLastNames(lastNames as string[]);\n userData.setCities(cities as string[]);\n userData.setStates(states as string[]);\n userData.setZips(postalCodes as string[]);\n userData.setCountries(countries as string[]);\n } else {\n if (data.address.first_name) {\n userData.setFirstName(data.address.first_name);\n userData.setF5First(data.address.first_name.slice(0, 5));\n }\n if (data.address.last_name) {\n userData.setLastName(data.address.last_name);\n userData.setF5Last(data.address.last_name.slice(0, 5));\n }\n if (data.address.city) userData.setCity(data.address.city);\n if (data.address.region) userData.setState(data.address.region);\n if (data.address.postal_code) userData.setZip(data.address.postal_code);\n if (data.address.country) userData.setCountry(data.address.country.split(/[-_]/).at(0)!);\n }\n }\n if (data.birthday) {\n userData.setDoby(data.birthday.year.toString());\n userData.setDobm(data.birthday.month.toString());\n userData.setDobd(data.birthday.day.toString());\n }\n if (data.user_id && data.user_id.length !== 0) {\n userData.setExternalId(data.user_id);\n }\n if (data.ip_address) {\n userData.setClientIpAddress(data.ip_address);\n }\n if (data.user_agent) {\n userData.setClientUserAgent(data.user_agent);\n }\n if (data.fb_login_id) {\n userData.setFbLoginId(data.fb_login_id);\n }\n if (data.fb_page_id) {\n userData.setPageId(data.fb_page_id);\n }\n\n // set tags info\n if (tags.fbc) {\n userData.setFbc(tags.fbc);\n } else if (tags.fbclid) {\n // ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc#2--format-clickid\n // The formatted ClickID value must be of the form `version.subdomainIndex.creationTime.<fbclid>`, where:\n // - version is always this prefix: fb\n // - subdomainIndex is which domain the cookie is defined on ('com' = 0, 'example.com' = 1, 'www.example.com' = 2)\n // - creationTime is the UNIX time since epoch in milliseconds when the _fbc was stored. If you don't save the _fbc cookie, use the timestamp when you first observed or received this fbclid value\n // - <fbclid> is the value for the fbclid query parameter in the page URL.\n\n const fbc = `fb.1.${Date.now()}.${tags.fbclid}`;\n userData.setFbc(fbc);\n }\n\n if (tags.fbp) {\n userData.setFbp(tags.fbp);\n }\n if (tags.advertising_id) {\n userData.setMadid(tags.advertising_id);\n }\n if (tags.ip_address && typeof tags.ip_address === 'string') {\n userData.setClientIpAddress(tags.ip_address);\n }\n\n return userData;\n}\n\nfunction getAppData(tags: TrackTags, appPackageName: string) {\n const extinfo = new ExtendedDeviceInfo();\n if (tags.os_name) {\n if (tags.os_name === 'iOS' || tags.os_name === 'iPadOS') {\n extinfo.setExtInfoVersion('i2');\n } else if (tags.os_name === 'Android') {\n extinfo.setExtInfoVersion('a2');\n }\n }\n extinfo.setAppPackageName(appPackageName);\n const shortVersion = tags.release?.split('.').at(0);\n if (shortVersion) {\n extinfo.setShortVersion(shortVersion);\n }\n if (tags.release) {\n extinfo.setLongVersion(tags.release);\n }\n if (tags.os_version) {\n extinfo.setOsVersion(tags.os_version);\n }\n if (tags.device_model_id) {\n extinfo.setDeviceModelName(tags.device_model_id);\n }\n if (tags.language) {\n extinfo.setLocale(tags.language);\n }\n if (tags.screen_width) {\n extinfo.setScreenWidth(tags.screen_width);\n }\n if (tags.screen_height) {\n extinfo.setScreenHeight(tags.screen_height);\n }\n if (tags.device_pixel_ratio) {\n extinfo.setScreenDensity(tags.device_pixel_ratio);\n }\n\n const appData = new AppData();\n appData.setExtinfo(extinfo);\n if (tags.install_referrer) {\n appData.setInstallReferrer(tags.install_referrer);\n }\n if (tags.advertising_id) {\n appData.setAdvertiserTrackingEnabled(true);\n }\n\n return appData;\n}\n\nfunction getCustomData({ name, properties }: TrackEvent<any>) {\n const data = new CustomData();\n const [_, _name, fbEventProperties] = mapFBEvent(name, properties);\n const {\n value,\n currency,\n content_name,\n content_category,\n content_ids,\n contents,\n content_type,\n // order_id,\n predicted_ltv,\n num_items,\n search_string,\n status,\n // item_number,\n delivery_category,\n ...custom_properties\n } = fbEventProperties;\n if (value) data.setValue(value);\n if (currency) data.setCurrency(currency);\n if (content_name) data.setContentName(content_name);\n if (content_category) data.setContentCategory(content_category);\n if (content_ids) data.setContentIds(content_ids);\n if (contents)\n data.setContents(\n contents.map((c) => {\n const result = new Content().setId(c.id).setQuantity(c.quantity);\n if (c.item_price) result.setItemPrice(c.item_price);\n if (c.title) result.setTitle(c.title);\n if (c.description) result.setDescription(c.description);\n if (c.brand) result.setBrand(c.brand);\n if (c.category) result.setCategory(c.category);\n if (c.delivery_category) result.setDeliveryCategory(c.delivery_category);\n return result;\n })\n );\n if (content_type) data.setContentType(content_type);\n // if (order_id) data.setOrderId(order_id);\n if (predicted_ltv) data.setPredictedLtv(predicted_ltv);\n if (num_items) data.setNumItems(num_items);\n if (search_string) data.setSearchString(search_string);\n if (status) data.setStatus(status.toString());\n // if (item_number) data.setItemNumber(item_number);\n if (delivery_category) data.setDeliveryCategory(delivery_category);\n if (custom_properties) data.setCustomProperties(custom_properties);\n return data;\n}\n\nexport function getServerEvent(\n event: TrackEvent<any>,\n data: UserProvidedData,\n appPackageName?: string\n) {\n const userData = getUserData(event.tags, data);\n const customData = getCustomData(event);\n const [_, eventName] = mapFBEvent(event.name, event.properties);\n const serverEvent = new ServerEvent()\n .setEventId(event.tags.idempotency_key ?? event.id.toString())\n .setEventName(eventName)\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setCustomData(customData);\n\n if (event.tags.source === 'app' && appPackageName) {\n const appData = getAppData(event.tags, appPackageName);\n serverEvent.setAppData(appData);\n }\n if (event.tags.source_url) {\n serverEvent.setEventSourceUrl(event.tags.source_url);\n }\n switch (event.tags.source) {\n case 'app':\n serverEvent.setActionSource('app');\n break;\n case 'web':\n serverEvent.setActionSource('website');\n break;\n default:\n break;\n }\n return serverEvent;\n}\n\nexport async function sendEvent(\n accessToken: string,\n pixelId: string,\n event: TrackEvent<any>,\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const request = new EventRequest(accessToken, pixelId);\n const fbEvent = getServerEvent(event, data, appPackageName);\n request.setEvents([fbEvent]);\n return request.execute();\n}\n\nexport async function sendEvents(\n accessToken: string,\n pixelId: string,\n events: TrackEvent<any>[],\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const fbEvents = events.map((event) => getServerEvent(event, data, appPackageName));\n const request = new EventRequest(accessToken, pixelId);\n request.setEvents(fbEvents);\n return request.execute();\n}\n\nexport async function sendTestEvent(accessToken: string, pixelId: string, testEventCode: string) {\n const extinfo = new ExtendedDeviceInfo()\n .setExtInfoVersion('a2')\n .setAppPackageName('com.some.app')\n .setShortVersion('771')\n .setLongVersion('Version 7.7.1')\n .setOsVersion('10.1.1')\n .setDeviceModelName('OnePlus6')\n .setLocale('en_US')\n .setTimezoneAbbreviation('GMT-1')\n .setCarrier('TMobile')\n .setScreenWidth(1920)\n .setScreenHeight(1080)\n .setScreenDensity('2.00')\n .setCpuCoreCount(2)\n .setTotalDiskSpaceGb(128)\n .setFreeDiskSpaceGb(8)\n .setDeviceTimeZone('USA/New York');\n\n const userData = new UserData().setEmail('test@example.com');\n const appData = new AppData().setExtinfo(extinfo);\n const event = new ServerEvent()\n .setEventId(Math.round(Math.random() * 1000_000).toString())\n .setEventName('TestEvent')\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setAppData(appData)\n .setActionSource('app');\n\n const request = new EventRequest(accessToken, pixelId);\n request.setTestEventCode(testEventCode);\n request.setEvents([event]);\n return request.execute();\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/server/conversions-api.ts"],"sourcesContent":["import {\n AppData,\n Content,\n CustomData,\n EventRequest,\n ExtendedDeviceInfo,\n ServerEvent,\n UserData,\n} from 'facebook-nodejs-business-sdk';\nimport { mapFBEvent } from '../track/fbq';\nimport type { TrackEvent, TrackTags, UserProvidedData } from '../track/types';\n\nfunction getUserData(tags: TrackTags, data: UserProvidedData) {\n const userData = new UserData();\n\n // set user provided data\n if (data.email) {\n if (Array.isArray(data.email)) {\n userData.setEmails(data.email);\n } else {\n userData.setEmail(data.email);\n }\n }\n if (data.phone_number) {\n if (Array.isArray(data.phone_number)) {\n userData.setPhones(data.phone_number);\n } else {\n userData.setPhone(data.phone_number);\n }\n }\n if (data.gender) {\n if (data.gender === 'female') {\n userData.setGender('f');\n } else if (data.gender === 'male') {\n userData.setGender('m');\n }\n }\n if (data.address) {\n if (Array.isArray(data.address)) {\n const firstNames = data.address.map((a) => a.first_name).filter(Boolean);\n const lastNames = data.address.map((a) => a.last_name).filter(Boolean);\n const cities = data.address.map((a) => a.city).filter(Boolean);\n const states = data.address.map((a) => a.region).filter(Boolean);\n const postalCodes = data.address.map((a) => a.postal_code).filter(Boolean);\n const countries = data.address.map((a) => a.country?.split(/[-_]/).at(0)).filter(Boolean);\n userData.setFirstNames(firstNames as string[]);\n userData.setLastNames(lastNames as string[]);\n userData.setCities(cities as string[]);\n userData.setStates(states as string[]);\n userData.setZips(postalCodes as string[]);\n userData.setCountries(countries as string[]);\n } else {\n if (data.address.first_name) {\n userData.setFirstName(data.address.first_name);\n userData.setF5First(data.address.first_name.slice(0, 5));\n }\n if (data.address.last_name) {\n userData.setLastName(data.address.last_name);\n userData.setF5Last(data.address.last_name.slice(0, 5));\n }\n if (data.address.city) userData.setCity(data.address.city);\n if (data.address.region) userData.setState(data.address.region);\n if (data.address.postal_code) userData.setZip(data.address.postal_code);\n if (data.address.country) userData.setCountry(data.address.country.split(/[-_]/).at(0)!);\n }\n }\n if (data.birthday) {\n userData.setDoby(data.birthday.year.toString());\n userData.setDobm(data.birthday.month.toString());\n userData.setDobd(data.birthday.day.toString());\n }\n if (data.user_id && data.user_id.length !== 0) {\n userData.setExternalId(data.user_id);\n }\n if (data.ip_address) {\n userData.setClientIpAddress(data.ip_address);\n }\n if (data.user_agent) {\n userData.setClientUserAgent(data.user_agent);\n }\n if (data.fb_login_id) {\n userData.setFbLoginId(data.fb_login_id);\n }\n if (data.fb_page_id) {\n userData.setPageId(data.fb_page_id);\n }\n\n // set tags info\n if (tags.fbc) {\n userData.setFbc(tags.fbc);\n }\n if (tags.fbp) {\n userData.setFbp(tags.fbp);\n }\n if (tags.advertising_id) {\n userData.setMadid(tags.advertising_id);\n }\n if (tags.ip_address && typeof tags.ip_address === 'string') {\n userData.setClientIpAddress(tags.ip_address);\n }\n\n return userData;\n}\n\nfunction getAppData(tags: TrackTags, appPackageName: string) {\n const extinfo = new ExtendedDeviceInfo();\n if (tags.os_name) {\n if (tags.os_name === 'iOS' || tags.os_name === 'iPadOS') {\n extinfo.setExtInfoVersion('i2');\n } else if (tags.os_name === 'Android') {\n extinfo.setExtInfoVersion('a2');\n }\n }\n extinfo.setAppPackageName(appPackageName);\n const shortVersion = tags.release?.split('.').at(0);\n if (shortVersion) {\n extinfo.setShortVersion(shortVersion);\n }\n if (tags.release) {\n extinfo.setLongVersion(tags.release);\n }\n if (tags.os_version) {\n extinfo.setOsVersion(tags.os_version);\n }\n if (tags.device_model_id) {\n extinfo.setDeviceModelName(tags.device_model_id);\n }\n if (tags.language) {\n extinfo.setLocale(tags.language);\n }\n if (tags.screen_width) {\n extinfo.setScreenWidth(tags.screen_width);\n }\n if (tags.screen_height) {\n extinfo.setScreenHeight(tags.screen_height);\n }\n if (tags.device_pixel_ratio) {\n extinfo.setScreenDensity(tags.device_pixel_ratio);\n }\n\n const appData = new AppData();\n appData.setExtinfo(extinfo);\n if (tags.install_referrer) {\n appData.setInstallReferrer(tags.install_referrer);\n }\n if (tags.advertising_id) {\n appData.setAdvertiserTrackingEnabled(true);\n }\n\n return appData;\n}\n\nfunction getCustomData({ name, properties }: TrackEvent<any>) {\n const data = new CustomData();\n const [_, _name, fbEventProperties] = mapFBEvent(name, properties);\n const {\n value,\n currency,\n content_name,\n content_category,\n content_ids,\n contents,\n content_type,\n // order_id,\n predicted_ltv,\n num_items,\n search_string,\n status,\n // item_number,\n delivery_category,\n ...custom_properties\n } = fbEventProperties;\n if (value) data.setValue(value);\n if (currency) data.setCurrency(currency);\n if (content_name) data.setContentName(content_name);\n if (content_category) data.setContentCategory(content_category);\n if (content_ids) data.setContentIds(content_ids);\n if (contents)\n data.setContents(\n contents.map((c) => {\n const result = new Content().setId(c.id).setQuantity(c.quantity);\n if (c.item_price) result.setItemPrice(c.item_price);\n if (c.title) result.setTitle(c.title);\n if (c.description) result.setDescription(c.description);\n if (c.brand) result.setBrand(c.brand);\n if (c.category) result.setCategory(c.category);\n if (c.delivery_category) result.setDeliveryCategory(c.delivery_category);\n return result;\n })\n );\n if (content_type) data.setContentType(content_type);\n // if (order_id) data.setOrderId(order_id);\n if (predicted_ltv) data.setPredictedLtv(predicted_ltv);\n if (num_items) data.setNumItems(num_items);\n if (search_string) data.setSearchString(search_string);\n if (status) data.setStatus(status.toString());\n // if (item_number) data.setItemNumber(item_number);\n if (delivery_category) data.setDeliveryCategory(delivery_category);\n if (custom_properties) data.setCustomProperties(custom_properties);\n return data;\n}\n\nexport function getServerEvent(\n event: TrackEvent<any>,\n data: UserProvidedData,\n appPackageName?: string\n) {\n const userData = getUserData(event.tags, data);\n const customData = getCustomData(event);\n const [_, eventName] = mapFBEvent(event.name, event.properties);\n const serverEvent = new ServerEvent()\n .setEventId(event.tags.idempotency_key ?? event.id.toString())\n .setEventName(eventName)\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setCustomData(customData);\n\n if (event.tags.source === 'app' && appPackageName) {\n const appData = getAppData(event.tags, appPackageName);\n serverEvent.setAppData(appData);\n }\n if (event.tags.source_url) {\n serverEvent.setEventSourceUrl(event.tags.source_url);\n }\n switch (event.tags.source) {\n case 'app':\n serverEvent.setActionSource('app');\n break;\n case 'web':\n serverEvent.setActionSource('website');\n break;\n default:\n break;\n }\n return serverEvent;\n}\n\nexport async function sendEvent(\n accessToken: string,\n pixelId: string,\n event: TrackEvent<any>,\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const request = new EventRequest(accessToken, pixelId);\n const fbEvent = getServerEvent(event, data, appPackageName);\n request.setEvents([fbEvent]);\n return request.execute();\n}\n\nexport async function sendEvents(\n accessToken: string,\n pixelId: string,\n events: TrackEvent<any>[],\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const fbEvents = events.map((event) => getServerEvent(event, data, appPackageName));\n const request = new EventRequest(accessToken, pixelId);\n request.setEvents(fbEvents);\n return request.execute();\n}\n\nexport async function sendTestEvent(accessToken: string, pixelId: string, testEventCode: string) {\n const extinfo = new ExtendedDeviceInfo()\n .setExtInfoVersion('a2')\n .setAppPackageName('com.some.app')\n .setShortVersion('771')\n .setLongVersion('Version 7.7.1')\n .setOsVersion('10.1.1')\n .setDeviceModelName('OnePlus6')\n .setLocale('en_US')\n .setTimezoneAbbreviation('GMT-1')\n .setCarrier('TMobile')\n .setScreenWidth(1920)\n .setScreenHeight(1080)\n .setScreenDensity('2.00')\n .setCpuCoreCount(2)\n .setTotalDiskSpaceGb(128)\n .setFreeDiskSpaceGb(8)\n .setDeviceTimeZone('USA/New York');\n\n const userData = new UserData().setEmail('test@example.com');\n const appData = new AppData().setExtinfo(extinfo);\n const event = new ServerEvent()\n .setEventId(Math.round(Math.random() * 1000_000).toString())\n .setEventName('TestEvent')\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setAppData(appData)\n .setActionSource('app');\n\n const request = new EventRequest(accessToken, pixelId);\n request.setTestEventCode(testEventCode);\n request.setEvents([event]);\n return request.execute();\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/server/conversions-api.ts"],"sourcesContent":["import {\n AppData,\n Content,\n CustomData,\n EventRequest,\n ExtendedDeviceInfo,\n ServerEvent,\n UserData,\n} from 'facebook-nodejs-business-sdk';\nimport { mapFBEvent } from '../track/fbq';\nimport type { TrackEvent, TrackTags, UserProvidedData } from '../track/types';\n\nfunction getUserData(tags: TrackTags, data: UserProvidedData) {\n const userData = new UserData();\n\n // set user provided data\n if (data.email) {\n if (Array.isArray(data.email)) {\n userData.setEmails(data.email);\n } else {\n userData.setEmail(data.email);\n }\n }\n if (data.phone_number) {\n if (Array.isArray(data.phone_number)) {\n userData.setPhones(data.phone_number);\n } else {\n userData.setPhone(data.phone_number);\n }\n }\n if (data.gender) {\n if (data.gender === 'female') {\n userData.setGender('f');\n } else if (data.gender === 'male') {\n userData.setGender('m');\n }\n }\n if (data.address) {\n if (Array.isArray(data.address)) {\n const firstNames = data.address.map((a) => a.first_name).filter(Boolean);\n const lastNames = data.address.map((a) => a.last_name).filter(Boolean);\n const cities = data.address.map((a) => a.city).filter(Boolean);\n const states = data.address.map((a) => a.region).filter(Boolean);\n const postalCodes = data.address.map((a) => a.postal_code).filter(Boolean);\n const countries = data.address.map((a) => a.country?.split(/[-_]/).at(0)).filter(Boolean);\n userData.setFirstNames(firstNames as string[]);\n userData.setLastNames(lastNames as string[]);\n userData.setCities(cities as string[]);\n userData.setStates(states as string[]);\n userData.setZips(postalCodes as string[]);\n userData.setCountries(countries as string[]);\n } else {\n if (data.address.first_name) {\n userData.setFirstName(data.address.first_name);\n userData.setF5First(data.address.first_name.slice(0, 5));\n }\n if (data.address.last_name) {\n userData.setLastName(data.address.last_name);\n userData.setF5Last(data.address.last_name.slice(0, 5));\n }\n if (data.address.city) userData.setCity(data.address.city);\n if (data.address.region) userData.setState(data.address.region);\n if (data.address.postal_code) userData.setZip(data.address.postal_code);\n if (data.address.country) userData.setCountry(data.address.country.split(/[-_]/).at(0)!);\n }\n }\n if (data.birthday) {\n userData.setDoby(data.birthday.year.toString());\n userData.setDobm(data.birthday.month.toString());\n userData.setDobd(data.birthday.day.toString());\n }\n if (data.user_id && data.user_id.length !== 0) {\n userData.setExternalId(data.user_id);\n }\n if (data.ip_address) {\n userData.setClientIpAddress(data.ip_address);\n }\n if (data.user_agent) {\n userData.setClientUserAgent(data.user_agent);\n }\n if (data.fb_login_id) {\n userData.setFbLoginId(data.fb_login_id);\n }\n if (data.fb_page_id) {\n userData.setPageId(data.fb_page_id);\n }\n\n // set tags info\n if (tags.fbc) {\n userData.setFbc(tags.fbc);\n } else if (tags.fbclid) {\n // ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc#2--format-clickid\n // The formatted ClickID value must be of the form `version.subdomainIndex.creationTime.<fbclid>`, where:\n // - version is always this prefix: fb\n // - subdomainIndex is which domain the cookie is defined on ('com' = 0, 'example.com' = 1, 'www.example.com' = 2)\n // - creationTime is the UNIX time since epoch in milliseconds when the _fbc was stored. If you don't save the _fbc cookie, use the timestamp when you first observed or received this fbclid value\n // - <fbclid> is the value for the fbclid query parameter in the page URL.\n\n const fbc = `fb.1.${Date.now()}.${tags.fbclid}`;\n userData.setFbc(fbc);\n }\n\n if (tags.fbp) {\n userData.setFbp(tags.fbp);\n }\n if (tags.advertising_id) {\n userData.setMadid(tags.advertising_id);\n }\n if (tags.ip_address && typeof tags.ip_address === 'string') {\n userData.setClientIpAddress(tags.ip_address);\n }\n\n return userData;\n}\n\nfunction getAppData(tags: TrackTags, appPackageName: string) {\n const extinfo = new ExtendedDeviceInfo();\n if (tags.os_name) {\n if (tags.os_name === 'iOS' || tags.os_name === 'iPadOS') {\n extinfo.setExtInfoVersion('i2');\n } else if (tags.os_name === 'Android') {\n extinfo.setExtInfoVersion('a2');\n }\n }\n extinfo.setAppPackageName(appPackageName);\n const shortVersion = tags.release?.split('.').at(0);\n if (shortVersion) {\n extinfo.setShortVersion(shortVersion);\n }\n if (tags.release) {\n extinfo.setLongVersion(tags.release);\n }\n if (tags.os_version) {\n extinfo.setOsVersion(tags.os_version);\n }\n if (tags.device_model_id) {\n extinfo.setDeviceModelName(tags.device_model_id);\n }\n if (tags.language) {\n extinfo.setLocale(tags.language);\n }\n if (tags.screen_width) {\n extinfo.setScreenWidth(tags.screen_width);\n }\n if (tags.screen_height) {\n extinfo.setScreenHeight(tags.screen_height);\n }\n if (tags.device_pixel_ratio) {\n extinfo.setScreenDensity(tags.device_pixel_ratio);\n }\n\n const appData = new AppData();\n appData.setExtinfo(extinfo);\n if (tags.install_referrer) {\n appData.setInstallReferrer(tags.install_referrer);\n }\n if (tags.advertising_id) {\n appData.setAdvertiserTrackingEnabled(true);\n }\n\n return appData;\n}\n\nfunction getCustomData({ name, properties }: TrackEvent<any>) {\n const data = new CustomData();\n const [_, _name, fbEventProperties] = mapFBEvent(name, properties);\n const {\n value,\n currency,\n content_name,\n content_category,\n content_ids,\n contents,\n content_type,\n // order_id,\n predicted_ltv,\n num_items,\n search_string,\n status,\n // item_number,\n delivery_category,\n ...custom_properties\n } = fbEventProperties;\n if (value) data.setValue(value);\n if (currency) data.setCurrency(currency);\n if (content_name) data.setContentName(content_name);\n if (content_category) data.setContentCategory(content_category);\n if (content_ids) data.setContentIds(content_ids);\n if (contents)\n data.setContents(\n contents.map((c) => {\n const result = new Content().setId(c.id).setQuantity(c.quantity);\n if (c.item_price) result.setItemPrice(c.item_price);\n if (c.title) result.setTitle(c.title);\n if (c.description) result.setDescription(c.description);\n if (c.brand) result.setBrand(c.brand);\n if (c.category) result.setCategory(c.category);\n if (c.delivery_category) result.setDeliveryCategory(c.delivery_category);\n return result;\n })\n );\n if (content_type) data.setContentType(content_type);\n // if (order_id) data.setOrderId(order_id);\n if (predicted_ltv) data.setPredictedLtv(predicted_ltv);\n if (num_items) data.setNumItems(num_items);\n if (search_string) data.setSearchString(search_string);\n if (status) data.setStatus(status.toString());\n // if (item_number) data.setItemNumber(item_number);\n if (delivery_category) data.setDeliveryCategory(delivery_category);\n if (custom_properties) data.setCustomProperties(custom_properties);\n return data;\n}\n\nexport function getServerEvent(\n event: TrackEvent<any>,\n data: UserProvidedData,\n appPackageName?: string\n) {\n const userData = getUserData(event.tags, data);\n const customData = getCustomData(event);\n const [_, eventName] = mapFBEvent(event.name, event.properties);\n const serverEvent = new ServerEvent()\n .setEventId(event.tags.idempotency_key ?? event.id.toString())\n .setEventName(eventName)\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setCustomData(customData);\n\n if (event.tags.source === 'app' && appPackageName) {\n const appData = getAppData(event.tags, appPackageName);\n serverEvent.setAppData(appData);\n }\n if (event.tags.source_url) {\n serverEvent.setEventSourceUrl(event.tags.source_url);\n }\n switch (event.tags.source) {\n case 'app':\n serverEvent.setActionSource('app');\n break;\n case 'web':\n serverEvent.setActionSource('website');\n break;\n default:\n break;\n }\n return serverEvent;\n}\n\nexport async function sendEvent(\n accessToken: string,\n pixelId: string,\n event: TrackEvent<any>,\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const request = new EventRequest(accessToken, pixelId);\n const fbEvent = getServerEvent(event, data, appPackageName);\n request.setEvents([fbEvent]);\n return request.execute();\n}\n\nexport async function sendEvents(\n accessToken: string,\n pixelId: string,\n events: TrackEvent<any>[],\n data: UserProvidedData = {},\n appPackageName?: string\n) {\n const fbEvents = events.map((event) => getServerEvent(event, data, appPackageName));\n const request = new EventRequest(accessToken, pixelId);\n request.setEvents(fbEvents);\n return request.execute();\n}\n\nexport async function sendTestEvent(accessToken: string, pixelId: string, testEventCode: string) {\n const extinfo = new ExtendedDeviceInfo()\n .setExtInfoVersion('a2')\n .setAppPackageName('com.some.app')\n .setShortVersion('771')\n .setLongVersion('Version 7.7.1')\n .setOsVersion('10.1.1')\n .setDeviceModelName('OnePlus6')\n .setLocale('en_US')\n .setTimezoneAbbreviation('GMT-1')\n .setCarrier('TMobile')\n .setScreenWidth(1920)\n .setScreenHeight(1080)\n .setScreenDensity('2.00')\n .setCpuCoreCount(2)\n .setTotalDiskSpaceGb(128)\n .setFreeDiskSpaceGb(8)\n .setDeviceTimeZone('USA/New York');\n\n const userData = new UserData().setEmail('test@example.com');\n const appData = new AppData().setExtinfo(extinfo);\n const event = new ServerEvent()\n .setEventId(Math.round(Math.random() * 1000_000).toString())\n .setEventName('TestEvent')\n .setEventTime(Math.round(Date.now() / 1000))\n .setUserData(userData)\n .setAppData(appData)\n .setActionSource('app');\n\n const request = new EventRequest(accessToken, pixelId);\n request.setTestEventCode(testEventCode);\n request.setEvents([event]);\n return request.execute();\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shware/analytics",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -63,12 +63,12 @@
|
|
|
63
63
|
"@repo/eslint-config": "workspace:*",
|
|
64
64
|
"@repo/typescript-config": "workspace:*",
|
|
65
65
|
"@types/facebook-nodejs-business-sdk": "^22.0.0",
|
|
66
|
-
"@types/node": "^24.0.
|
|
66
|
+
"@types/node": "^24.0.15",
|
|
67
67
|
"@types/react": "^19.1.8",
|
|
68
68
|
"typescript": "^5.8.3"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
|
-
"facebook-nodejs-business-sdk": "^
|
|
71
|
+
"facebook-nodejs-business-sdk": "^23.0.1",
|
|
72
72
|
"next": ">= 15",
|
|
73
73
|
"react": "^19.0.0",
|
|
74
74
|
"react-router": "^7"
|