Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/perfect-actors-tease.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@segment/analytics-signals-runtime': minor
---

Transpile to es5
12 changes: 12 additions & 0 deletions packages/signals/signals-runtime/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
ie: '11', // target es5 -- for example, react-native's QuickJS does not support class
},
},
],
],
}
23 changes: 20 additions & 3 deletions packages/signals/signals-runtime/build-signals-runtime-global.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const esbuild = require('esbuild')
const path = require('path')
const fs = require('fs')
const fsPromises = fs.promises
const babel = require('esbuild-plugin-babel-cjs')

const getBanner = (entryPoint) => {
const content = [
Expand Down Expand Up @@ -67,19 +68,35 @@ const buildRuntime = async (platform) => {
const entryPoint = getEntryPoint(platform)
const { outfileUnminified, outfileMinified } = getOutFiles(platform)

// Build minified version
// Transpile with Babel
const transpiledFile = `./dist/runtime/index.${platform}.transpiled.js`
await esbuild.build({
entryPoints: [entryPoint],
outfile: transpiledFile,
bundle: true,
minify: false,
plugins: [
babel({
config: {
presets: ['@babel/preset-env', '@babel/preset-typescript'],
},
}),
],
})

// Bundle and minify with esbuild
await esbuild.build({
entryPoints: [transpiledFile],
outfile: outfileMinified,
bundle: true,
minify: true,
banner: { js: getBanner(entryPoint) },
})
console.log(`wrote: ${outfileMinified}`)

// Build unminified version
// Bundle without minification
await esbuild.build({
entryPoints: [entryPoint],
entryPoints: [transpiledFile],
outfile: outfileUnminified,
bundle: true,
minify: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ describe('Global Scope Test: Web', () => {
expect(dom.window).toBeDefined()
// @ts-ignore
expect(typeof dom.window.signals).toBe('object')
expect(typeof dom.window.signals.find).toBe('function')
expect(typeof dom.window.signals.filter).toBe('function')
})

test('should expose constants', () => {
Expand Down Expand Up @@ -59,6 +61,8 @@ describe('Global Scope Test: Mobile', () => {
expect(dom.window).toBeDefined()
// @ts-ignore
expect(typeof dom.window.signals).toBe('object')
expect(typeof dom.window.signals.find).toBe('function')
expect(typeof dom.window.signals.filter).toBe('function')
})

test('should expose constants', () => {
Expand Down
8 changes: 7 additions & 1 deletion packages/signals/signals-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,13 @@
"url": "https://github.com/segmentio/analytics-next"
},
"devDependencies": {
"@babel/cli": "^7.22.10",
"@babel/core": "^7.22.11",
"@babel/preset-env": "^7.22.10",
"@babel/preset-typescript": "^7.22.11",
"@internal/test-helpers": "workspace:^",
"@microsoft/api-extractor": "^7.47.9"
"@microsoft/api-extractor": "^7.47.9",
"babel-preset-minify": "^0.5.2",
"esbuild-plugin-babel-cjs": "^1.0.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
// GENERATED, DO NOT EDIT
// Entry point: src/mobile/index.signals-runtime.ts
export const getRuntimeCode = (): string => `
"use strict";(()=>{var g=Object.defineProperty;var f=(r,n)=>{for(var e in n)g(r,e,{get:n[e],enumerable:!0})};var l={};f(l,{EventType:()=>d,LocalDataAction:()=>c,NavigationAction:()=>S,NetworkAction:()=>u,SignalType:()=>p});var p=Object.freeze({Interaction:"interaction",Navigation:"navigation",Network:"network",LocalData:"localData",Instrumentation:"instrumentation",UserDefined:"userDefined"}),d=Object.freeze({Track:"track",Page:"page",Screen:"screen",Identify:"identify",Group:"group",Alias:"alias"}),S=Object.freeze({Forward:"forward",Backward:"backward",Modal:"modal",Entering:"entering",Leaving:"leaving",Page:"page",Popup:"popup"}),u=Object.freeze({Request:"request",Response:"response"}),c=Object.freeze({Loaded:"loaded",Updated:"updated",Saved:"saved",Deleted:"deleted",Undefined:"undefined"});var a=class{constructor(n=[]){this.find=(n,e,i)=>this.filter(n,e,i)[0];this.filter=(n,e,i)=>{let o=s=>s.type===e;return this.signalBuffer.slice(this.signalBuffer.indexOf(n)+1).filter(o).filter(s=>i?i(s):()=>!0)};this.signalBuffer=n}};var t=class extends a{constructor(e=[]){super(e);this.add=e=>{this.signalCounter<0&&(this.signalCounter=0),"index"in e&&e.index==-1&&(e.index=this.getNextIndex()),this.signalBuffer.unshift(e),this.signalBuffer.length>this.maxBufferSize&&this.signalBuffer.pop()};this.getNextIndex=()=>{let e=this.signalCounter;return this.signalCounter+=1,e};this.signalCounter=0,this.maxBufferSize=1e3}};Object.assign(globalThis,{signals:new t},l);})();
"use strict";(()=>{(()=>{var _=Object.defineProperty,h=(t,e)=>{for(var n in e)_(t,n,{get:e[n],enumerable:!0})},s={};h(s,{EventType:()=>S,LocalDataAction:()=>j,NavigationAction:()=>w,NetworkAction:()=>P,SignalType:()=>O});var O=Object.freeze({Interaction:"interaction",Navigation:"navigation",Network:"network",LocalData:"localData",Instrumentation:"instrumentation",UserDefined:"userDefined"}),S=Object.freeze({Track:"track",Page:"page",Screen:"screen",Identify:"identify",Group:"group",Alias:"alias"}),w=Object.freeze({Forward:"forward",Backward:"backward",Modal:"modal",Entering:"entering",Leaving:"leaving",Page:"page",Popup:"popup"}),P=Object.freeze({Request:"request",Response:"response"}),j=Object.freeze({Loaded:"loaded",Updated:"updated",Saved:"saved",Deleted:"deleted",Undefined:"undefined"});function a(t){"@babel/helpers - typeof";return a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(t)}function y(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,p(r.key),r)}}function x(t,e,n){return e&&y(t.prototype,e),n&&y(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function R(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function b(t,e,n){return e=p(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function p(t){var e=T(t,"string");return a(e)==="symbol"?e:String(e)}function T(t,e){if(a(t)!=="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(a(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}var N=x(function t(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];R(this,t),b(this,"find",function(r,o,i){return e.filter(r,o,i)[0]}),b(this,"filter",function(r,o,i){var M=function(U){return U.type===o};return e.signalBuffer.slice(e.signalBuffer.indexOf(r)+1).filter(M).filter(function(d){return i?i(d):function(){return!0}})}),this.signalBuffer=n});function f(t){"@babel/helpers - typeof";return f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(t)}function g(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,m(r.key),r)}}function B(t,e,n){return e&&g(t.prototype,e),n&&g(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function E(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function z(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},l(t,e)}function D(t){var e=I();return function(){var r=u(t),o;if(e){var i=u(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return A(this,o)}}function A(t,e){if(e&&(f(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return c(t)}function c(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function I(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},u(t)}function v(t,e,n){return e=m(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function m(t){var e=k(t,"string");return f(e)==="symbol"?e:String(e)}function k(t,e){if(f(t)!=="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(f(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}var L=function(t){z(n,t);var e=D(n);function n(){var r,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return E(this,n),r=e.call(this,o),v(c(r),"add",function(i){r.signalCounter<0&&(r.signalCounter=0),"index"in i&&i.index==-1&&(i.index=r.getNextIndex()),r.signalBuffer.unshift(i),r.signalBuffer.length>r.maxBufferSize&&r.signalBuffer.pop()}),v(c(r),"getNextIndex",function(){var i=r.signalCounter;return r.signalCounter+=1,i}),r.signalCounter=0,r.maxBufferSize=1e3,r}return B(n)}(N);Object.assign(globalThis,{signals:new L},s)})();})();
`

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
// GENERATED, DO NOT EDIT
// Entry point: src/web/index.signals-runtime.ts
export const getRuntimeCode = (): string => `
"use strict";(()=>{var o=Object.defineProperty;var S=(l,e)=>{for(var n in e)o(l,n,{get:e[n],enumerable:!0})};var i=class{constructor(e=[]){this.find=(e,n,a)=>this.filter(e,n,a)[0];this.filter=(e,n,a)=>{let s=g=>g.type===n;return this.signalBuffer.slice(this.signalBuffer.indexOf(e)+1).filter(s).filter(g=>a?a(g):()=>!0)};this.signalBuffer=e}};var t=class extends i{};var r={};S(r,{EventType:()=>f,NavigationAction:()=>p,SignalType:()=>y});var f=Object.freeze({Track:"track",Page:"page",Screen:"screen",Identify:"identify",Group:"group",Alias:"alias"}),p=Object.freeze({URLChange:"urlChange",PageLoad:"pageLoad"}),y=Object.freeze({Interaction:"interaction",Navigation:"navigation",Network:"network",LocalData:"localData",Instrumentation:"instrumentation",UserDefined:"userDefined"});Object.assign(globalThis,{signals:new t},r);})();
"use strict";(()=>{(()=>{var g=Object.defineProperty,m=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})};function a(t){"@babel/helpers - typeof";return a=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(t)}function c(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,s(n.key),n)}}function _(t,e,r){return e&&c(t.prototype,e),r&&c(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function y(t,e,r){return e=s(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function s(t){var e=O(t,"string");return a(e)==="symbol"?e:String(e)}function O(t,e){if(a(t)!=="object"||t===null)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(a(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}var S=_(function t(){var e=this,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];h(this,t),y(this,"find",function(n,i,f){return e.filter(n,i,f)[0]}),y(this,"filter",function(n,i,f){var z=function(L){return L.type===i};return e.signalBuffer.slice(e.signalBuffer.indexOf(n)+1).filter(z).filter(function(v){return f?f(v):function(){return!0}})}),this.signalBuffer=r});function o(t){"@babel/helpers - typeof";return o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(t)}function b(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,w(n.key),n)}}function P(t,e,r){return e&&b(t.prototype,e),r&&b(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function w(t){var e=d(t,"string");return o(e)==="symbol"?e:String(e)}function d(t,e){if(o(t)!=="object"||t===null)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(o(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function j(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function T(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,i){return n.__proto__=i,n},l(t,e)}function R(t){var e=k();return function(){var n=u(t),i;if(e){var f=u(this).constructor;i=Reflect.construct(n,arguments,f)}else i=n.apply(this,arguments);return E(this,i)}}function E(t,e){if(e&&(o(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return N(t)}function N(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function k(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},u(t)}var x=function(t){T(r,t);var e=R(r);function r(){return j(this,r),e.apply(this,arguments)}return P(r)}(S),p={};m(p,{EventType:()=>B,NavigationAction:()=>D,SignalType:()=>I});var B=Object.freeze({Track:"track",Page:"page",Screen:"screen",Identify:"identify",Group:"group",Alias:"alias"}),D=Object.freeze({URLChange:"urlChange",PageLoad:"pageLoad"}),I=Object.freeze({Interaction:"interaction",Navigation:"navigation",Network:"network",LocalData:"localData",Instrumentation:"instrumentation",UserDefined:"userDefined"});Object.assign(globalThis,{signals:new x},p)})();})();
`

Loading