@surfside/ads-core-web 0.1.0 → 0.1.2

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.
Files changed (51) hide show
  1. package/README.md +15 -15
  2. package/lib/cjs/debug/carousel.js +74 -0
  3. package/lib/cjs/debug/carousel.js.map +1 -0
  4. package/lib/cjs/helpers/Dom.js +52 -0
  5. package/lib/cjs/helpers/Dom.js.map +1 -0
  6. package/lib/cjs/helpers/Trackers.js +20 -0
  7. package/lib/cjs/helpers/Trackers.js.map +1 -0
  8. package/lib/cjs/helpers/index.js +19 -0
  9. package/lib/cjs/helpers/index.js.map +1 -0
  10. package/lib/cjs/index.js +49 -6099
  11. package/lib/cjs/index.js.map +1 -0
  12. package/lib/cjs/rendering/Banner.js +93 -0
  13. package/lib/cjs/rendering/Banner.js.map +1 -0
  14. package/lib/cjs/rendering/Carousel.js +350 -0
  15. package/lib/cjs/rendering/Carousel.js.map +1 -0
  16. package/lib/cjs/rendering/Framework.js +90 -0
  17. package/lib/cjs/rendering/Framework.js.map +1 -0
  18. package/lib/cjs/rendering/ProductCard.js +106 -0
  19. package/lib/cjs/rendering/ProductCard.js.map +1 -0
  20. package/lib/cjs/rendering/Video.js +299 -0
  21. package/lib/cjs/rendering/Video.js.map +1 -0
  22. package/lib/cjs/rendering/Watermark.js +59 -0
  23. package/lib/cjs/rendering/Watermark.js.map +1 -0
  24. package/lib/cjs/rendering/index.js +23 -0
  25. package/lib/cjs/rendering/index.js.map +1 -0
  26. package/lib/esm/debug/carousel.js +72 -0
  27. package/lib/esm/debug/carousel.js.map +1 -0
  28. package/lib/esm/helpers/Dom.js +43 -0
  29. package/lib/esm/helpers/Dom.js.map +1 -0
  30. package/lib/esm/helpers/Trackers.js +15 -0
  31. package/lib/esm/helpers/Trackers.js.map +1 -0
  32. package/lib/esm/helpers/index.js +3 -0
  33. package/lib/esm/helpers/index.js.map +1 -0
  34. package/lib/esm/index.js +26 -6063
  35. package/lib/esm/index.js.map +1 -0
  36. package/lib/esm/rendering/Banner.js +88 -0
  37. package/lib/esm/rendering/Banner.js.map +1 -0
  38. package/lib/esm/rendering/Carousel.js +344 -0
  39. package/lib/esm/rendering/Carousel.js.map +1 -0
  40. package/lib/esm/rendering/Framework.js +83 -0
  41. package/lib/esm/rendering/Framework.js.map +1 -0
  42. package/lib/esm/rendering/ProductCard.js +101 -0
  43. package/lib/esm/rendering/ProductCard.js.map +1 -0
  44. package/lib/esm/rendering/Video.js +295 -0
  45. package/lib/esm/rendering/Video.js.map +1 -0
  46. package/lib/esm/rendering/Watermark.js +55 -0
  47. package/lib/esm/rendering/Watermark.js.map +1 -0
  48. package/lib/esm/rendering/index.js +7 -0
  49. package/lib/esm/rendering/index.js.map +1 -0
  50. package/package.json +37 -27
  51. package/lib/types/debug/dist/index-7was9ptg.d.ts +0 -2
package/README.md CHANGED
@@ -1,15 +1,15 @@
1
- # @surfside/ads-core-web
2
-
3
- To install dependencies:
4
-
5
- ```bash
6
- bun install
7
- ```
8
-
9
- To run:
10
-
11
- ```bash
12
- bun run src/index.ts
13
- ```
14
-
15
- This project was created using `bun init` in bun v1.2.10. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
1
+ # @surfside/ads-core-web
2
+
3
+ To install dependencies:
4
+
5
+ ```bash
6
+ bun install
7
+ ```
8
+
9
+ To run:
10
+
11
+ ```bash
12
+ bun run src/index.ts
13
+ ```
14
+
15
+ This project was created using `bun init` in bun v1.2.10. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ads_core_client_1 = require("@surfside/ads-core-client");
4
+ const __1 = require("..");
5
+ const ads_core_mock_1 = require("@surfside/ads-core-mock");
6
+ await (async () => {
7
+ const { buildHybridCarousel, startRequest, defaultNative, buildBannerResponse, requestBids, renderCarousel, renderBanner, buildVideoResponse, renderVideo } = (0, ads_core_client_1.GetValueOrThrow)(await (0, __1.InitSurfAdsWebInternal)((0, ads_core_mock_1.InitSurfAdsCoreMock)('ec981', // Account ID
8
+ '544fa', // Channel ID
9
+ 'bf9bc', // Site ID
10
+ 'greengoddess', // Location ID
11
+ undefined, (0, ads_core_client_1.InitLogger)())));
12
+ /* ===== Carousel ===== */
13
+ /* Make request, build response */
14
+ const carouselRes = await buildHybridCarousel({
15
+ type: 'top-products',
16
+ }, startRequest('my-zone') // Zone ID
17
+ .withNative(defaultNative()
18
+ .withMetaProduct()
19
+ .build())
20
+ .build());
21
+ if (!carouselRes.ok) {
22
+ console.error(carouselRes.error);
23
+ return;
24
+ }
25
+ const carousel = carouselRes.value;
26
+ /* Render carousel */
27
+ const rendered = (0, ads_core_client_1.GetValueOrThrow)(await renderCarousel(carousel, 300, {
28
+ type: 'infinite'
29
+ }, 'page'));
30
+ /* Add to page */
31
+ document.querySelector('.carousel-container').appendChild(rendered.element);
32
+ const success = await rendered.init();
33
+ if (!success.ok) {
34
+ throw success.error;
35
+ }
36
+ /* ===== Banner ===== */
37
+ const bidRes = await requestBids(startRequest('banner-zone')
38
+ .withBanner(4, 1)
39
+ .build());
40
+ if (!bidRes.ok) {
41
+ console.error('No banners');
42
+ return;
43
+ }
44
+ const bid = bidRes.value.seatbid?.[0]?.bid?.[0];
45
+ if (bid === undefined) {
46
+ console.log('no bids');
47
+ return;
48
+ }
49
+ const banner = renderBanner((0, ads_core_client_1.GetValueOrThrow)(buildBannerResponse(bid)));
50
+ if (!banner.ok) {
51
+ throw banner.error;
52
+ }
53
+ document.querySelector('.banner-container')?.appendChild(banner.value);
54
+ const video = await (0, ads_core_client_1.AsyncPipe)(requestBids(startRequest('video-zone')
55
+ .withVideo(320, 240, 0, 30)
56
+ .build()))
57
+ .then(resp => (0, ads_core_client_1.WrapValue)(resp.seatbid?.[0]?.bid?.[0]))
58
+ .then(buildVideoResponse)
59
+ .then(renderVideo)
60
+ .result();
61
+ if (!video.ok) {
62
+ console.error('Video failed!');
63
+ throw video.error;
64
+ }
65
+ document.querySelector('.video-container')?.appendChild(video.value);
66
+ /* Dynamic Zones */
67
+ // const dynamicZone = GetValueOrThrow(await getDynamicZone('my-zone'));
68
+ // const dynamicZoneRequest = GetValueOrThrow(buildDynamicZoneRequest('my-zone', dynamicZone));
69
+ // const dynamicResponse = GetValueOrThrow(await buildDynamicResponse(dynamicZoneRequest));
70
+ // const htmlElement = buildDynamicCreative(dynamicResponse);
71
+ // const htmlElement = await getDynamicCreative('my-zone');
72
+ // console.log(dynamicResponse);
73
+ })();
74
+ //# sourceMappingURL=carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.js","sourceRoot":"src/","sources":["debug/carousel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotANumberError = exports.MissingAttributeError = exports.GetNumberAttributeOr = exports.GetNumberAttribute = exports.GetAttributeOr = exports.GetAttribute = void 0;
4
+ const ads_core_client_1 = require("@surfside/ads-core-client");
5
+ const GetAttribute = (element, attributeName) => {
6
+ const attribute = element.getAttribute(attributeName);
7
+ if (attribute === null) {
8
+ return (0, ads_core_client_1.Err)(new MissingAttributeError(element, attributeName));
9
+ }
10
+ return (0, ads_core_client_1.Ok)(attribute);
11
+ };
12
+ exports.GetAttribute = GetAttribute;
13
+ const GetAttributeOr = (element, attributeName, or) => (0, ads_core_client_1.GetValue)((0, exports.GetAttribute)(element, attributeName)) ?? or;
14
+ exports.GetAttributeOr = GetAttributeOr;
15
+ const GetNumberAttribute = (element, attributeName) => {
16
+ const attribute = (0, exports.GetAttribute)(element, attributeName);
17
+ if (!attribute.ok) {
18
+ return attribute;
19
+ }
20
+ const num = Number(attribute.value);
21
+ if (Number.isNaN(num)) {
22
+ return (0, ads_core_client_1.Err)(new NotANumberError(element, attributeName, attribute.value));
23
+ }
24
+ return (0, ads_core_client_1.Ok)(num);
25
+ };
26
+ exports.GetNumberAttribute = GetNumberAttribute;
27
+ const GetNumberAttributeOr = (element, attributeName, or) => (0, ads_core_client_1.GetValue)((0, exports.GetNumberAttribute)(element, attributeName)) ?? or;
28
+ exports.GetNumberAttributeOr = GetNumberAttributeOr;
29
+ class MissingAttributeError extends Error {
30
+ element;
31
+ attributeName;
32
+ constructor(element, attributeName) {
33
+ super(`Failed to get attribute ${attributeName} on element ${element.tagName}`);
34
+ this.element = element;
35
+ this.attributeName = attributeName;
36
+ }
37
+ }
38
+ exports.MissingAttributeError = MissingAttributeError;
39
+ class NotANumberError extends Error {
40
+ element;
41
+ attributeName;
42
+ value;
43
+ constructor(element, attributeName, value) {
44
+ super(`Attribute ${attributeName} on element ${element.tagName} was NaN. Value was '${value}'`);
45
+ this.element = element;
46
+ this.attributeName = attributeName;
47
+ this.value = value;
48
+ }
49
+ }
50
+ exports.NotANumberError = NotANumberError;
51
+ ;
52
+ //# sourceMappingURL=Dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dom.js","sourceRoot":"src/","sources":["helpers/Dom.ts"],"names":[],"mappings":";;;AAAA,+DAA2E;AAEpE,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,aAAqB,EAAkB,EAAE;IACpF,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAA,qBAAG,EAAC,IAAI,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAA,oBAAE,EAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AANW,QAAA,YAAY,gBAMvB;AAEK,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,aAAqB,EAAE,EAAU,EAAU,EAAE,CAC1F,IAAA,0BAAQ,EAAC,IAAA,oBAAY,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;AAD5C,QAAA,cAAc,kBAC8B;AAElD,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAE,aAAqB,EAAkB,EAAE;IAC1F,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,IAAA,qBAAG,EAAC,IAAI,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,IAAA,oBAAE,EAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAEK,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,aAAqB,EAAE,EAAU,EAAU,EAAE,CAChG,IAAA,0BAAQ,EAAC,IAAA,0BAAkB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;AADlD,QAAA,oBAAoB,wBAC8B;AAE/D,MAAa,qBAAsB,SAAQ,KAAK;IAChB;IAAkC;IAA9D,YAA4B,OAAgB,EAAkB,aAAqB;QAC/E,KAAK,CAAC,2BAA2B,aAAa,eAAe,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QADxD,YAAO,GAAP,OAAO,CAAS;QAAkB,kBAAa,GAAb,aAAa,CAAQ;IAEnF,CAAC;CACJ;AAJD,sDAIC;AAED,MAAa,eAAgB,SAAQ,KAAK;IAElB;IACA;IACA;IAHpB,YACoB,OAAgB,EAChB,aAAqB,EACrB,KAAa;QAE7B,KAAK,CAAC,aAAa,aAAa,eAAe,OAAO,CAAC,OAAO,wBAAwB,KAAK,GAAG,CAAC,CAAC;QAJhF,YAAO,GAAP,OAAO,CAAS;QAChB,kBAAa,GAAb,aAAa,CAAQ;QACrB,UAAK,GAAL,KAAK,CAAQ;IAGjC,CAAC;CACJ;AARD,0CAQC;AAAA,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScriptTracker = exports.PixelTracker = void 0;
4
+ const PixelTracker = (url) => {
5
+ const img = document.createElement('img');
6
+ img.src = url;
7
+ img.width = 1;
8
+ img.height = 1;
9
+ img.style.display = 'none';
10
+ return img;
11
+ };
12
+ exports.PixelTracker = PixelTracker;
13
+ const ScriptTracker = (url) => {
14
+ const script = new HTMLScriptElement;
15
+ script.defer = true;
16
+ script.src = url;
17
+ return script;
18
+ };
19
+ exports.ScriptTracker = ScriptTracker;
20
+ //# sourceMappingURL=Trackers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Trackers.js","sourceRoot":"src/","sources":["helpers/Trackers.ts"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IACd,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACd,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC3B,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAPW,QAAA,YAAY,gBAOvB;AAEK,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;IACzC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;IACrC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AALW,QAAA,aAAa,iBAKxB"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Dom"), exports);
18
+ __exportStar(require("./Trackers"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,6CAA2B"}