Skip to content

Commit d5829da

Browse files
authored
Update signals-runtime to compile to es5 (#1250)
1 parent d3b68e6 commit d5829da

File tree

8 files changed

+325
-7
lines changed

8 files changed

+325
-7
lines changed

.changeset/perfect-actors-tease.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@segment/analytics-signals-runtime': minor
3+
---
4+
5+
Transpile to es5
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = {
2+
presets: [
3+
[
4+
'@babel/preset-env',
5+
{
6+
targets: {
7+
ie: '11', // target es5 -- for example, react-native's QuickJS does not support class
8+
},
9+
},
10+
],
11+
],
12+
}

packages/signals/signals-runtime/build-signals-runtime-global.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const esbuild = require('esbuild')
22
const path = require('path')
33
const fs = require('fs')
44
const fsPromises = fs.promises
5+
const babel = require('esbuild-plugin-babel-cjs')
56

67
const getBanner = (entryPoint) => {
78
const content = [
@@ -67,19 +68,35 @@ const buildRuntime = async (platform) => {
6768
const entryPoint = getEntryPoint(platform)
6869
const { outfileUnminified, outfileMinified } = getOutFiles(platform)
6970

70-
// Build minified version
71+
// Transpile with Babel
72+
const transpiledFile = `./dist/runtime/index.${platform}.transpiled.js`
7173
await esbuild.build({
7274
entryPoints: [entryPoint],
75+
outfile: transpiledFile,
76+
bundle: true,
77+
minify: false,
78+
plugins: [
79+
babel({
80+
config: {
81+
presets: ['@babel/preset-env', '@babel/preset-typescript'],
82+
},
83+
}),
84+
],
85+
})
86+
87+
// Bundle and minify with esbuild
88+
await esbuild.build({
89+
entryPoints: [transpiledFile],
7390
outfile: outfileMinified,
7491
bundle: true,
7592
minify: true,
7693
banner: { js: getBanner(entryPoint) },
7794
})
7895
console.log(`wrote: ${outfileMinified}`)
7996

80-
// Build unminified version
97+
// Bundle without minification
8198
await esbuild.build({
82-
entryPoints: [entryPoint],
99+
entryPoints: [transpiledFile],
83100
outfile: outfileUnminified,
84101
bundle: true,
85102
minify: false,

packages/signals/signals-runtime/bundle-build-tests/runtime-env.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ describe('Global Scope Test: Web', () => {
2626
expect(dom.window).toBeDefined()
2727
// @ts-ignore
2828
expect(typeof dom.window.signals).toBe('object')
29+
expect(typeof dom.window.signals.find).toBe('function')
30+
expect(typeof dom.window.signals.filter).toBe('function')
2931
})
3032

3133
test('should expose constants', () => {
@@ -59,6 +61,8 @@ describe('Global Scope Test: Mobile', () => {
5961
expect(dom.window).toBeDefined()
6062
// @ts-ignore
6163
expect(typeof dom.window.signals).toBe('object')
64+
expect(typeof dom.window.signals.find).toBe('function')
65+
expect(typeof dom.window.signals.filter).toBe('function')
6266
})
6367

6468
test('should expose constants', () => {

packages/signals/signals-runtime/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,13 @@
4444
"url": "https://github.com/segmentio/analytics-next"
4545
},
4646
"devDependencies": {
47+
"@babel/cli": "^7.22.10",
48+
"@babel/core": "^7.22.11",
49+
"@babel/preset-env": "^7.22.10",
50+
"@babel/preset-typescript": "^7.22.11",
4751
"@internal/test-helpers": "workspace:^",
48-
"@microsoft/api-extractor": "^7.47.9"
52+
"@microsoft/api-extractor": "^7.47.9",
53+
"babel-preset-minify": "^0.5.2",
54+
"esbuild-plugin-babel-cjs": "^1.0.0"
4955
}
5056
}

packages/signals/signals-runtime/src/mobile/get-runtime-code.generated.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
// GENERATED, DO NOT EDIT
33
// Entry point: src/mobile/index.signals-runtime.ts
44
export const getRuntimeCode = (): string => `
5-
"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);})();
5+
"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)})();})();
66
`
77

packages/signals/signals-runtime/src/web/get-runtime-code.generated.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
// GENERATED, DO NOT EDIT
33
// Entry point: src/web/index.signals-runtime.ts
44
export const getRuntimeCode = (): string => `
5-
"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);})();
5+
"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)})();})();
66
`
77

0 commit comments

Comments
 (0)