From 751a9280e73fd0cf43ed9242a16cbf767bff388a Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:33:01 -0500 Subject: [PATCH 01/30] add page call library --- packages/page-tools/package.json | 45 ++++++++++++++++++++++++++++++++ yarn.lock | 9 +++++++ 2 files changed, 54 insertions(+) create mode 100644 packages/page-tools/package.json diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json new file mode 100644 index 000000000..15efbc356 --- /dev/null +++ b/packages/page-tools/package.json @@ -0,0 +1,45 @@ +{ + "name": "@segment/analytics-page-tools", + "keywords": [ + "segment", + "analytics" + ], + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "types": "./dist/types/index.d.ts", + "files": [ + "LICENSE", + "dist/", + "src/", + "!**/__tests__/**", + "!**/test-helpers/**", + "!*.tsbuildinfo" + ], + "scripts": { + ".": "yarn run -T turbo run --filter=$npm_package_name...", + "test": "yarn jest", + "lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'", + "build": "rm -rf dist && yarn concurrently 'yarn:build:*'", + "build:esm": "yarn tsc -p tsconfig.build.json", + "build:cjs": "yarn tsc -p tsconfig.build.json --outDir ./dist/cjs --module commonjs", + "watch": "yarn concurrently 'yarn build:bundle-dev --watch' 'yarn build:esm --watch'", + "watch:test": "yarn test --watch", + "tsc": "yarn run -T tsc", + "eslint": "yarn run -T eslint", + "concurrently": "yarn run -T concurrently", + "jest": "yarn run -T jest" + }, + "dependencies": { + "tslib": "^2.4.1" + }, + "packageManager": "yarn@3.4.1", + "license": "MIT", + "repository": { + "directory": "packages/page-tools", + "type": "git", + "url": "https://github.com/segmentio/analytics-next" + }, + "devDependencies": { + "@internal/config": "workspace:^" + } +} diff --git a/yarn.lock b/yarn.lock index 055d5e18e..620b6ac2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5997,6 +5997,15 @@ __metadata: languageName: unknown linkType: soft +"@segment/analytics-page-tools@workspace:packages/page-tools": + version: 0.0.0-use.local + resolution: "@segment/analytics-page-tools@workspace:packages/page-tools" + dependencies: + "@internal/config": "workspace:^" + tslib: ^2.4.1 + languageName: unknown + linkType: soft + "@segment/analytics-signals-runtime@1.5.0, @segment/analytics-signals-runtime@workspace:packages/signals/signals-runtime": version: 0.0.0-use.local resolution: "@segment/analytics-signals-runtime@workspace:packages/signals/signals-runtime" From b0e6d45ff80e7dd3b0b8d68f1c06c1085a4d5016 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:34:36 -0500 Subject: [PATCH 02/30] add new package --- packages/page-tools/.eslintrc.js | 4 ++++ packages/page-tools/.lintstagedrc.js | 1 + packages/page-tools/CHANGELOG.md | 25 +++++++++++++++++++++++++ packages/page-tools/LICENSE | 21 +++++++++++++++++++++ packages/page-tools/README.md | 3 +++ packages/page-tools/jest.config.js | 3 +++ packages/page-tools/src/index.ts | 1 + packages/page-tools/tsconfig.build.json | 9 +++++++++ packages/page-tools/tsconfig.json | 11 +++++++++++ 9 files changed, 78 insertions(+) create mode 100644 packages/page-tools/.eslintrc.js create mode 100644 packages/page-tools/.lintstagedrc.js create mode 100644 packages/page-tools/CHANGELOG.md create mode 100644 packages/page-tools/LICENSE create mode 100644 packages/page-tools/README.md create mode 100644 packages/page-tools/jest.config.js create mode 100644 packages/page-tools/src/index.ts create mode 100644 packages/page-tools/tsconfig.build.json create mode 100644 packages/page-tools/tsconfig.json diff --git a/packages/page-tools/.eslintrc.js b/packages/page-tools/.eslintrc.js new file mode 100644 index 000000000..9065f4523 --- /dev/null +++ b/packages/page-tools/.eslintrc.js @@ -0,0 +1,4 @@ +/** @type { import('eslint').Linter.Config } */ +module.exports = { + extends: ['../../.eslintrc'], +} diff --git a/packages/page-tools/.lintstagedrc.js b/packages/page-tools/.lintstagedrc.js new file mode 100644 index 000000000..bc1f1c780 --- /dev/null +++ b/packages/page-tools/.lintstagedrc.js @@ -0,0 +1 @@ +module.exports = require("@internal/config").lintStagedConfig diff --git a/packages/page-tools/CHANGELOG.md b/packages/page-tools/CHANGELOG.md new file mode 100644 index 000000000..34a3463b1 --- /dev/null +++ b/packages/page-tools/CHANGELOG.md @@ -0,0 +1,25 @@ +# @segment/analytics-generic-utils + +## 1.2.0 + +### Minor Changes + +- [#945](https://github.com/segmentio/analytics-next/pull/945) [`d212633`](https://github.com/segmentio/analytics-next/commit/d21263369d5980f4f57b13795524dbc345a02e5c) Thanks [@zikaari](https://github.com/zikaari)! - Load destinations lazily and start sending events as each becomes available instead of waiting for all to load first + +## 1.1.1 + +### Patch Changes + +- [#1020](https://github.com/segmentio/analytics-next/pull/1020) [`7b93e7b`](https://github.com/segmentio/analytics-next/commit/7b93e7b50fa293aebaf6767a44bf7708b231d5cd) Thanks [@silesky](https://github.com/silesky)! - Add tslib to resolve unsound dependency warning. + +## 1.1.0 + +### Minor Changes + +- [#993](https://github.com/segmentio/analytics-next/pull/993) [`d9b47c4`](https://github.com/segmentio/analytics-next/commit/d9b47c43e5e08efce14fe4150536ff60b8df91e0) Thanks [@silesky](https://github.com/silesky)! - Add Emitter library. Log default warning if a listeners exceeds 10 for a specific event type (configurable) + +## 1.0.0 + +### Major Changes + +- [#974](https://github.com/segmentio/analytics-next/pull/974) [`c879377`](https://github.com/segmentio/analytics-next/commit/c87937720941ad830c5fdd76b0c049435a6ddec6) Thanks [@silesky](https://github.com/silesky)! - Refactor to get createDeferred from @segment/analytics-generic-utils lib diff --git a/packages/page-tools/LICENSE b/packages/page-tools/LICENSE new file mode 100644 index 000000000..a0378adfd --- /dev/null +++ b/packages/page-tools/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright © 2023 Segment + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/page-tools/README.md b/packages/page-tools/README.md new file mode 100644 index 000000000..b0696f6d8 --- /dev/null +++ b/packages/page-tools/README.md @@ -0,0 +1,3 @@ +# @segment/analytics-page-tools + +Helpers for generating page events with analytics.js diff --git a/packages/page-tools/jest.config.js b/packages/page-tools/jest.config.js new file mode 100644 index 000000000..68ccd2e05 --- /dev/null +++ b/packages/page-tools/jest.config.js @@ -0,0 +1,3 @@ +const { createJestTSConfig } = require('@internal/config') + +module.exports = createJestTSConfig(__dirname) diff --git a/packages/page-tools/src/index.ts b/packages/page-tools/src/index.ts new file mode 100644 index 000000000..371fdfb15 --- /dev/null +++ b/packages/page-tools/src/index.ts @@ -0,0 +1 @@ +console.log('hello') diff --git a/packages/page-tools/tsconfig.build.json b/packages/page-tools/tsconfig.build.json new file mode 100644 index 000000000..830170446 --- /dev/null +++ b/packages/page-tools/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "include": ["src"], + "exclude": ["**/__tests__/**", "**/*.test.*"], + "compilerOptions": { + "outDir": "./dist/esm", + "declarationDir": "./dist/types" + } +} diff --git a/packages/page-tools/tsconfig.json b/packages/page-tools/tsconfig.json new file mode 100644 index 000000000..4e403a914 --- /dev/null +++ b/packages/page-tools/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "module": "esnext", + "target": "ES5", + "moduleResolution": "node", + "resolveJsonModule": true, + "lib": ["es2020"] + } +} From d6f9a2a9beef195ec6608fd0f1b87c69619df748 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:11:48 -0500 Subject: [PATCH 03/30] add new package that uses tsup --- package.json | 1 + packages/page-tools/package.json | 38 +- packages/page-tools/tsconfig.build.json | 7 +- packages/page-tools/tsconfig.json | 5 +- yarn.lock | 849 +++++++++++++++++++++++- 5 files changed, 866 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 95fee3480..c262078e9 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "prettier": "^2.6.2", "ts-jest": "^29.1.1", "ts-node": "^10.8.0", + "tsup": "^8.4.0", "turbo": "^2.3.4", "typescript": "^4.7.0", "webpack": "^5.94.0", diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index 15efbc356..cc61ea513 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -1,12 +1,14 @@ { "name": "@segment/analytics-page-tools", - "keywords": [ - "segment", - "analytics" - ], - "main": "./dist/cjs/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/types/index.d.ts", + "module": "./dist/esm/index.mjs", + "types": "./dist/esm/index.d.ts", + "exports": { + ".": { + "import": "./dist/esm/index.mjs", + "types": "./dist/esm/index.d.ts" + } + }, + "sideEffects": false, "files": [ "LICENSE", "dist/", @@ -16,29 +18,13 @@ "!*.tsbuildinfo" ], "scripts": { - ".": "yarn run -T turbo run --filter=$npm_package_name...", - "test": "yarn jest", - "lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'", - "build": "rm -rf dist && yarn concurrently 'yarn:build:*'", - "build:esm": "yarn tsc -p tsconfig.build.json", - "build:cjs": "yarn tsc -p tsconfig.build.json --outDir ./dist/cjs --module commonjs", - "watch": "yarn concurrently 'yarn build:bundle-dev --watch' 'yarn build:esm --watch'", - "watch:test": "yarn test --watch", - "tsc": "yarn run -T tsc", - "eslint": "yarn run -T eslint", - "concurrently": "yarn run -T concurrently", - "jest": "yarn run -T jest" + "build": "rm -rf dist && yarn build:esm", + "build:esm": "yarn tsup src/index.ts --format esm --dts --out-dir dist/esm", + "tsup": "yarn run -T tsup" }, "dependencies": { "tslib": "^2.4.1" }, - "packageManager": "yarn@3.4.1", - "license": "MIT", - "repository": { - "directory": "packages/page-tools", - "type": "git", - "url": "https://github.com/segmentio/analytics-next" - }, "devDependencies": { "@internal/config": "workspace:^" } diff --git a/packages/page-tools/tsconfig.build.json b/packages/page-tools/tsconfig.build.json index 830170446..55432f7ad 100644 --- a/packages/page-tools/tsconfig.build.json +++ b/packages/page-tools/tsconfig.build.json @@ -1,9 +1,10 @@ { "extends": "./tsconfig.json", "include": ["src"], - "exclude": ["**/__tests__/**", "**/*.test.*"], + "exclude": ["**/__tests__/**"], "compilerOptions": { - "outDir": "./dist/esm", - "declarationDir": "./dist/types" + // Options tsup Ignores: + // module: tsup always outputs ESM or CommonJS based on its --format option. + // outDir: tsup uses its own --out-dir option to control output. } } diff --git a/packages/page-tools/tsconfig.json b/packages/page-tools/tsconfig.json index 4e403a914..5da5184dd 100644 --- a/packages/page-tools/tsconfig.json +++ b/packages/page-tools/tsconfig.json @@ -3,9 +3,8 @@ "exclude": ["node_modules", "dist"], "compilerOptions": { "module": "esnext", - "target": "ES5", + "target": "ES2020", "moduleResolution": "node", - "resolveJsonModule": true, - "lib": ["es2020"] + "lib": ["es2020", "DOM", "DOM.Iterable"] } } diff --git a/yarn.lock b/yarn.lock index 620b6ac2e..786a7c56c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2653,6 +2653,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/aix-ppc64@npm:0.25.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-arm64@npm:0.17.19" @@ -2660,6 +2667,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/android-arm64@npm:0.25.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-arm@npm:0.17.19" @@ -2667,6 +2681,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/android-arm@npm:0.25.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/android-x64@npm:0.17.19" @@ -2674,6 +2695,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/android-x64@npm:0.25.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/darwin-arm64@npm:0.17.19" @@ -2681,6 +2709,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/darwin-arm64@npm:0.25.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/darwin-x64@npm:0.17.19" @@ -2688,6 +2723,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/darwin-x64@npm:0.25.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/freebsd-arm64@npm:0.17.19" @@ -2695,6 +2737,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/freebsd-arm64@npm:0.25.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/freebsd-x64@npm:0.17.19" @@ -2702,6 +2751,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/freebsd-x64@npm:0.25.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-arm64@npm:0.17.19" @@ -2709,6 +2765,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-arm64@npm:0.25.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-arm@npm:0.17.19" @@ -2716,6 +2779,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-arm@npm:0.25.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-ia32@npm:0.17.19" @@ -2723,6 +2793,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-ia32@npm:0.25.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.14.54": version: 0.14.54 resolution: "@esbuild/linux-loong64@npm:0.14.54" @@ -2737,6 +2814,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-loong64@npm:0.25.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-mips64el@npm:0.17.19" @@ -2744,6 +2828,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-mips64el@npm:0.25.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-ppc64@npm:0.17.19" @@ -2751,6 +2842,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-ppc64@npm:0.25.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-riscv64@npm:0.17.19" @@ -2758,6 +2856,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-riscv64@npm:0.25.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-s390x@npm:0.17.19" @@ -2765,6 +2870,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-s390x@npm:0.25.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/linux-x64@npm:0.17.19" @@ -2772,6 +2884,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/linux-x64@npm:0.25.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/netbsd-arm64@npm:0.25.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/netbsd-x64@npm:0.17.19" @@ -2779,6 +2905,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/netbsd-x64@npm:0.25.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/openbsd-arm64@npm:0.25.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/openbsd-x64@npm:0.17.19" @@ -2786,6 +2926,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/openbsd-x64@npm:0.25.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/sunos-x64@npm:0.17.19" @@ -2793,6 +2940,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/sunos-x64@npm:0.25.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/win32-arm64@npm:0.17.19" @@ -2800,6 +2954,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-arm64@npm:0.25.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/win32-ia32@npm:0.17.19" @@ -2807,6 +2968,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-ia32@npm:0.25.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.17.19": version: 0.17.19 resolution: "@esbuild/win32-x64@npm:0.17.19" @@ -2814,6 +2982,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-x64@npm:0.25.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -5753,6 +5928,146 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.39.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-android-arm64@npm:4.39.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.39.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.39.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-arm64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.39.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.39.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.39.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.39.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.39.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.39.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.39.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.39.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.39.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.39.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.39.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.39.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.39.0": + version: 4.39.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.39.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rushstack/eslint-patch@npm:^1.1.3": version: 1.6.0 resolution: "@rushstack/eslint-patch@npm:1.6.0" @@ -7846,6 +8161,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:1.0.7": + version: 1.0.7 + resolution: "@types/estree@npm:1.0.7" + checksum: d9312b7075bdd08f3c9e1bb477102f5458aaa42a8eec31a169481ce314ca99ac716645cff4fca81ea65a2294b0276a0de63159d1baca0f8e7b5050a92de950ad + languageName: node + linkType: hard + "@types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" @@ -9696,6 +10018,7 @@ __metadata: prettier: ^2.6.2 ts-jest: ^29.1.1 ts-node: ^10.8.0 + tsup: ^8.4.0 turbo: ^2.3.4 typescript: ^4.7.0 webpack: ^5.94.0 @@ -9846,6 +10169,13 @@ __metadata: languageName: node linkType: hard +"any-promise@npm:^1.0.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de + languageName: node + linkType: hard + "anymatch@npm:^3.0.3": version: 3.1.1 resolution: "anymatch@npm:3.1.1" @@ -11128,6 +11458,17 @@ __metadata: languageName: node linkType: hard +"bundle-require@npm:^5.1.0": + version: 5.1.0 + resolution: "bundle-require@npm:5.1.0" + dependencies: + load-tsconfig: ^0.2.3 + peerDependencies: + esbuild: ">=0.18" + checksum: 78a972b2d83b212f8bf3919bf806cc0846db4fb2182eb85770d4caec459f3b78053477acffb7396c6c15ceb7e132f22b18c1b430388d0f1b335a3b73b5012a1c + languageName: node + linkType: hard + "bytes-iec@npm:^3.1.1": version: 3.1.1 resolution: "bytes-iec@npm:3.1.1" @@ -11164,6 +11505,13 @@ __metadata: languageName: node linkType: hard +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a + languageName: node + linkType: hard + "cacache@npm:^16.1.0": version: 16.1.0 resolution: "cacache@npm:16.1.0" @@ -11486,6 +11834,15 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^4.0.3": + version: 4.0.3 + resolution: "chokidar@npm:4.0.3" + dependencies: + readdirp: ^4.0.1 + checksum: a8765e452bbafd04f3f2fad79f04222dd65f43161488bb6014a41099e6ca18d166af613d59a90771908c1c823efa3f46ba36b86ac50b701c20c1b9908c5fe36e + languageName: node + linkType: hard + "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -11880,7 +12237,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^4.0.1": +"commander@npm:^4.0.0, commander@npm:^4.0.1": version: 4.1.1 resolution: "commander@npm:4.1.1" checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 @@ -12074,6 +12431,13 @@ __metadata: languageName: node linkType: hard +"consola@npm:^3.4.0": + version: 3.4.2 + resolution: "consola@npm:3.4.2" + checksum: 32d1339e0505842f033ca34cb4572a841281caa367f438b785d3b284ab2a06134f009e605908480402c5f57f56c1e3210090c37e6417923416f76ce730d39361 + languageName: node + linkType: hard + "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -12596,6 +12960,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.4.0": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.0 resolution: "decamelize-keys@npm:1.1.0" @@ -13881,6 +14257,92 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.25.0": + version: 0.25.2 + resolution: "esbuild@npm:0.25.2" + dependencies: + "@esbuild/aix-ppc64": 0.25.2 + "@esbuild/android-arm": 0.25.2 + "@esbuild/android-arm64": 0.25.2 + "@esbuild/android-x64": 0.25.2 + "@esbuild/darwin-arm64": 0.25.2 + "@esbuild/darwin-x64": 0.25.2 + "@esbuild/freebsd-arm64": 0.25.2 + "@esbuild/freebsd-x64": 0.25.2 + "@esbuild/linux-arm": 0.25.2 + "@esbuild/linux-arm64": 0.25.2 + "@esbuild/linux-ia32": 0.25.2 + "@esbuild/linux-loong64": 0.25.2 + "@esbuild/linux-mips64el": 0.25.2 + "@esbuild/linux-ppc64": 0.25.2 + "@esbuild/linux-riscv64": 0.25.2 + "@esbuild/linux-s390x": 0.25.2 + "@esbuild/linux-x64": 0.25.2 + "@esbuild/netbsd-arm64": 0.25.2 + "@esbuild/netbsd-x64": 0.25.2 + "@esbuild/openbsd-arm64": 0.25.2 + "@esbuild/openbsd-x64": 0.25.2 + "@esbuild/sunos-x64": 0.25.2 + "@esbuild/win32-arm64": 0.25.2 + "@esbuild/win32-ia32": 0.25.2 + "@esbuild/win32-x64": 0.25.2 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2c4e91948b939e711e9342e692fc3c8b0a95acbc1fc9c7628db6092c4aef7c32aa643b2782111625871756084536cebc4831b3f1d5c3b6bd4e4774e21bc4bbea + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -14767,6 +15229,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.3": + version: 6.4.3 + resolution: "fdir@npm:6.4.3" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: fa53e13c63e8c14add5b70fd47e28267dd5481ebbba4b47720ec25aae7d10a800ef0f2e33de350faaf63c10b3d7b64138925718832220d593f75e724846c736d + languageName: node + linkType: hard + "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -15444,6 +15918,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 + bin: + glob: dist/esm/bin.mjs + checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + languageName: node + linkType: hard + "glob@npm:^7.1.2, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -17212,6 +17702,19 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 + languageName: node + linkType: hard + "jake@npm:^10.8.5": version: 10.8.7 resolution: "jake@npm:10.8.7" @@ -17862,6 +18365,13 @@ __metadata: languageName: node linkType: hard +"joycon@npm:^3.1.1": + version: 3.1.1 + resolution: "joycon@npm:3.1.1" + checksum: 8003c9c3fc79c5c7602b1c7e9f7a2df2e9916f046b0dbad862aa589be78c15734d11beb9fe846f5e06138df22cb2ad29961b6a986ba81c4920ce2b15a7f11067 + languageName: node + linkType: hard + "jpeg-js@npm:^0.4.1, jpeg-js@npm:^0.4.3": version: 0.4.4 resolution: "jpeg-js@npm:0.4.4" @@ -18365,6 +18875,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:^3.1.1": + version: 3.1.3 + resolution: "lilconfig@npm:3.1.3" + checksum: 644eb10830350f9cdc88610f71a921f510574ed02424b57b0b3abb66ea725d7a082559552524a842f4e0272c196b88dfe1ff7d35ffcc6f45736777185cd67c9a + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.1.6 resolution: "lines-and-columns@npm:1.1.6" @@ -18466,6 +18983,13 @@ __metadata: languageName: node linkType: hard +"load-tsconfig@npm:^0.2.3": + version: 0.2.5 + resolution: "load-tsconfig@npm:0.2.5" + checksum: 631740833c4a7157bb7b6eeae6e1afb6a6fac7416b7ba91bd0944d5c5198270af2d68bf8347af3cc2ba821adc4d83ef98f66278bd263bc284c863a09ec441503 + languageName: node + linkType: hard + "load-yaml-file@npm:^0.2.0": version: 0.2.0 resolution: "load-yaml-file@npm:0.2.0" @@ -18646,6 +19170,13 @@ __metadata: languageName: node linkType: hard +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: db170c9396d29d11fe9a9f25668c4993e0c1331bcb941ddbd48fb76f492e732add7f2a47cfdf8e9d740fa59ac41bbfaf931d268bc72aab3ab49e9f89354d718c + languageName: node + linkType: hard + "lodash.startcase@npm:^4.4.0": version: 4.4.0 resolution: "lodash.startcase@npm:4.4.0" @@ -18782,6 +19313,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a + languageName: node + linkType: hard + "lru-cache@npm:^4.0.1": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -19291,6 +19829,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: ^2.0.1 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 + languageName: node + linkType: hard + "minimatch@npm:~3.0.2, minimatch@npm:~3.0.3": version: 3.0.8 resolution: "minimatch@npm:3.0.8" @@ -19406,6 +19953,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 + languageName: node + linkType: hard + "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -19516,7 +20070,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -19551,6 +20105,17 @@ __metadata: languageName: node linkType: hard +"mz@npm:^2.7.0": + version: 2.7.0 + resolution: "mz@npm:2.7.0" + dependencies: + any-promise: ^1.0.0 + object-assign: ^4.0.1 + thenify-all: ^1.0.0 + checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87 + languageName: node + linkType: hard + "n12@npm:0.4.0": version: 0.4.0 resolution: "n12@npm:0.4.0" @@ -20415,6 +20980,13 @@ __metadata: languageName: node linkType: hard +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + languageName: node + linkType: hard + "package-json@npm:^6.3.0": version: 6.5.0 resolution: "package-json@npm:6.5.0" @@ -20600,6 +21172,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 + languageName: node + linkType: hard + "path-scurry@npm:^1.7.0": version: 1.9.2 resolution: "path-scurry@npm:1.9.2" @@ -20672,6 +21254,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3": version: 2.3.0 resolution: "picomatch@npm:2.3.0" @@ -20686,6 +21275,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 + languageName: node + linkType: hard + "pidtree@npm:^0.5.0": version: 0.5.0 resolution: "pidtree@npm:0.5.0" @@ -20732,6 +21328,13 @@ __metadata: languageName: node linkType: hard +"pirates@npm:^4.0.1": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 3dcbaff13c8b5bc158416feb6dc9e49e3c6be5fddc1ea078a05a73ef6b85d79324bbb1ef59b954cdeff000dbf000c1d39f32dc69310c7b78fbada5171b583e40 + languageName: node + linkType: hard + "pirates@npm:^4.0.4": version: 4.0.5 resolution: "pirates@npm:4.0.5" @@ -20779,6 +21382,29 @@ __metadata: languageName: node linkType: hard +"postcss-load-config@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-load-config@npm:6.0.1" + dependencies: + lilconfig: ^3.1.1 + peerDependencies: + jiti: ">=1.21.0" + postcss: ">=8.0.9" + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + checksum: 701061264cce7646e53e4cecd14aa95432a9bd508f30520a31dfa4c86fe9252d5d8d0204fdbfbddc1559c9b8791556e9c4b92c56070f5fca0a6c60e5ee9ad0fd + languageName: node + linkType: hard + "postcss-modules-extract-imports@npm:^3.1.0": version: 3.1.0 resolution: "postcss-modules-extract-imports@npm:3.1.0" @@ -21836,6 +22462,13 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:^4.0.1": + version: 4.1.2 + resolution: "readdirp@npm:4.1.2" + checksum: 3242ee125422cb7c0e12d51452e993f507e6ed3d8c490bc8bf3366c5cdd09167562224e429b13e9cb2b98d4b8b2b11dc100d3c73883aa92d657ade5a21ded004 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -22415,6 +23048,81 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.34.8": + version: 4.39.0 + resolution: "rollup@npm:4.39.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.39.0 + "@rollup/rollup-android-arm64": 4.39.0 + "@rollup/rollup-darwin-arm64": 4.39.0 + "@rollup/rollup-darwin-x64": 4.39.0 + "@rollup/rollup-freebsd-arm64": 4.39.0 + "@rollup/rollup-freebsd-x64": 4.39.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.39.0 + "@rollup/rollup-linux-arm-musleabihf": 4.39.0 + "@rollup/rollup-linux-arm64-gnu": 4.39.0 + "@rollup/rollup-linux-arm64-musl": 4.39.0 + "@rollup/rollup-linux-loongarch64-gnu": 4.39.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.39.0 + "@rollup/rollup-linux-riscv64-gnu": 4.39.0 + "@rollup/rollup-linux-riscv64-musl": 4.39.0 + "@rollup/rollup-linux-s390x-gnu": 4.39.0 + "@rollup/rollup-linux-x64-gnu": 4.39.0 + "@rollup/rollup-linux-x64-musl": 4.39.0 + "@rollup/rollup-win32-arm64-msvc": 4.39.0 + "@rollup/rollup-win32-ia32-msvc": 4.39.0 + "@rollup/rollup-win32-x64-msvc": 4.39.0 + "@types/estree": 1.0.7 + fsevents: ~2.3.2 + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: e5205be3107221bc0de467c6f9d2cc4bef18019f5111fa84f24dd640cb1c82c0c46a5f51c052df956fe24bd6a1e34398fb5abe08470f94d29aa7ad08208115e9 + languageName: node + linkType: hard + "run-async@npm:^3.0.0": version: 3.0.0 resolution: "run-async@npm:3.0.0" @@ -23177,6 +23885,15 @@ __metadata: languageName: node linkType: hard +"source-map@npm:0.8.0-beta.0": + version: 0.8.0-beta.0 + resolution: "source-map@npm:0.8.0-beta.0" + dependencies: + whatwg-url: ^7.0.0 + checksum: e94169be6461ab0ac0913313ad1719a14c60d402bd22b0ad96f4a6cffd79130d91ab5df0a5336a326b04d2df131c1409f563c9dc0d21a6ca6239a44b6c8dbd92 + languageName: node + linkType: hard + "sourcemap-codec@npm:^1.4.8": version: 1.4.8 resolution: "sourcemap-codec@npm:1.4.8" @@ -23731,6 +24448,24 @@ __metadata: languageName: node linkType: hard +"sucrase@npm:^3.35.0": + version: 3.35.0 + resolution: "sucrase@npm:3.35.0" + dependencies: + "@jridgewell/gen-mapping": ^0.3.2 + commander: ^4.0.0 + glob: ^10.3.10 + lines-and-columns: ^1.1.6 + mz: ^2.7.0 + pirates: ^4.0.1 + ts-interface-checker: ^0.1.9 + bin: + sucrase: bin/sucrase + sucrase-node: bin/sucrase-node + checksum: 9fc5792a9ab8a14dcf9c47dcb704431d35c1cdff1d17d55d382a31c2e8e3063870ad32ce120a80915498486246d612e30cda44f1624d9d9a10423e1a43487ad1 + languageName: node + linkType: hard + "suffix@npm:^0.1.0": version: 0.1.1 resolution: "suffix@npm:0.1.1" @@ -24031,6 +24766,24 @@ __metadata: languageName: node linkType: hard +"thenify-all@npm:^1.0.0": + version: 1.6.0 + resolution: "thenify-all@npm:1.6.0" + dependencies: + thenify: ">= 3.1.0 < 4" + checksum: dba7cc8a23a154cdcb6acb7f51d61511c37a6b077ec5ab5da6e8b874272015937788402fd271fdfc5f187f8cb0948e38d0a42dcc89d554d731652ab458f5343e + languageName: node + linkType: hard + +"thenify@npm:>= 3.1.0 < 4": + version: 3.3.1 + resolution: "thenify@npm:3.3.1" + dependencies: + any-promise: ^1.0.0 + checksum: 84e1b804bfec49f3531215f17b4a6e50fd4397b5f7c1bccc427b9c656e1ecfb13ea79d899930184f78bc2f57285c54d9a50a590c8868f4f0cef5c1d9f898b05e + languageName: node + linkType: hard + "third-party-web@npm:^0.12.4": version: 0.12.7 resolution: "third-party-web@npm:0.12.7" @@ -24080,6 +24833,23 @@ __metadata: languageName: node linkType: hard +"tinyexec@npm:^0.3.2": + version: 0.3.2 + resolution: "tinyexec@npm:0.3.2" + checksum: bd491923020610bdeadb0d8cf5d70e7cbad5a3201620fd01048c9bf3b31ffaa75c33254e1540e13b993ce4e8187852b0b5a93057bb598e7a57afa2ca2048a35c + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.11": + version: 0.2.12 + resolution: "tinyglobby@npm:0.2.12" + dependencies: + fdir: ^6.4.3 + picomatch: ^4.0.2 + checksum: ef9357fa1b2b661afdccd315cb4995f5f36bce948faaace68aae85fe57bdd8f837883045c88efc50d3186bac6586e4ae2f31026b9a3aac061b884217e6092e23 + languageName: node + linkType: hard + "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -24151,6 +24921,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^1.0.1": + version: 1.0.1 + resolution: "tr46@npm:1.0.1" + dependencies: + punycode: ^2.1.0 + checksum: 96d4ed46bc161db75dbf9247a236ea0bfcaf5758baae6749e92afab0bc5a09cb59af21788ede7e55080f2bf02dce3e4a8f2a484cc45164e29f4b5e68f7cbcc1a + languageName: node + linkType: hard + "tr46@npm:^3.0.0": version: 3.0.0 resolution: "tr46@npm:3.0.0" @@ -24211,6 +24990,13 @@ __metadata: languageName: node linkType: hard +"ts-interface-checker@npm:^0.1.9": + version: 0.1.13 + resolution: "ts-interface-checker@npm:0.1.13" + checksum: 20c29189c2dd6067a8775e07823ddf8d59a33e2ffc47a1bd59a5cb28bb0121a2969a816d5e77eda2ed85b18171aa5d1c4005a6b88ae8499ec7cc49f78571cb5e + languageName: node + linkType: hard + "ts-jest@npm:^29.1.1": version: 29.1.1 resolution: "ts-jest@npm:29.1.1" @@ -24363,6 +25149,47 @@ __metadata: languageName: node linkType: hard +"tsup@npm:^8.4.0": + version: 8.4.0 + resolution: "tsup@npm:8.4.0" + dependencies: + bundle-require: ^5.1.0 + cac: ^6.7.14 + chokidar: ^4.0.3 + consola: ^3.4.0 + debug: ^4.4.0 + esbuild: ^0.25.0 + joycon: ^3.1.1 + picocolors: ^1.1.1 + postcss-load-config: ^6.0.1 + resolve-from: ^5.0.0 + rollup: ^4.34.8 + source-map: 0.8.0-beta.0 + sucrase: ^3.35.0 + tinyexec: ^0.3.2 + tinyglobby: ^0.2.11 + tree-kill: ^1.2.2 + peerDependencies: + "@microsoft/api-extractor": ^7.36.0 + "@swc/core": ^1 + postcss: ^8.4.12 + typescript: ">=4.5.0" + peerDependenciesMeta: + "@microsoft/api-extractor": + optional: true + "@swc/core": + optional: true + postcss: + optional: true + typescript: + optional: true + bin: + tsup: dist/cli-default.js + tsup-node: dist/cli-node.js + checksum: 8c632adcec8b91cb266e3179f92390d994da2f744fcea066932ca3f4332db06aae5363655a035fd3d4a215985f362763b22f1051744552b7fb6f90dc1a95043c + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -25292,6 +26119,13 @@ __metadata: languageName: node linkType: hard +"webidl-conversions@npm:^4.0.2": + version: 4.0.2 + resolution: "webidl-conversions@npm:4.0.2" + checksum: c93d8dfe908a0140a4ae9c0ebc87a33805b416a33ee638a605b551523eec94a9632165e54632f6d57a39c5f948c4bab10e0e066525e9a4b87a79f0d04fbca374 + languageName: node + linkType: hard + "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" @@ -25634,6 +26468,17 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^7.0.0": + version: 7.1.0 + resolution: "whatwg-url@npm:7.1.0" + dependencies: + lodash.sortby: ^4.7.0 + tr46: ^1.0.1 + webidl-conversions: ^4.0.2 + checksum: fecb07c87290b47d2ec2fb6d6ca26daad3c9e211e0e531dd7566e7ff95b5b3525a57d4f32640ad4adf057717e0c215731db842ad761e61d947e81010e05cf5fd + languageName: node + linkType: hard + "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" From bff76626261714015ad1c5bb35621e4a395c500a Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:12:11 -0500 Subject: [PATCH 04/30] update README --- packages/page-tools/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/page-tools/README.md b/packages/page-tools/README.md index b0696f6d8..f7dd53312 100644 --- a/packages/page-tools/README.md +++ b/packages/page-tools/README.md @@ -1,3 +1,3 @@ # @segment/analytics-page-tools -Helpers for generating page events with analytics.js +Browser-only helper for generating page events with analytics.js. From 864bd2daae1e86c0e2b8ae4a5ac2a0adcc66ee45 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:12:16 -0500 Subject: [PATCH 05/30] wip --- packages/page-tools/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/page-tools/README.md b/packages/page-tools/README.md index f7dd53312..bbc3892e2 100644 --- a/packages/page-tools/README.md +++ b/packages/page-tools/README.md @@ -1,3 +1,3 @@ # @segment/analytics-page-tools -Browser-only helper for generating page events with analytics.js. +Browser-only helpers for generating page events with analytics.js. From 7b9bbac313589aebfd9005c9fc09b53cf66e57e5 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:29:37 -0500 Subject: [PATCH 06/30] add page context --- packages/page-tools/src/index.ts | 2 +- packages/page-tools/src/page-context.ts | 146 ++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 packages/page-tools/src/page-context.ts diff --git a/packages/page-tools/src/index.ts b/packages/page-tools/src/index.ts index 371fdfb15..9b703305b 100644 --- a/packages/page-tools/src/index.ts +++ b/packages/page-tools/src/index.ts @@ -1 +1 @@ -console.log('hello') +export * from './page-context' diff --git a/packages/page-tools/src/page-context.ts b/packages/page-tools/src/page-context.ts new file mode 100644 index 000000000..a39ea6440 --- /dev/null +++ b/packages/page-tools/src/page-context.ts @@ -0,0 +1,146 @@ +function isPlainObject( + obj: unknown +): obj is Record { + return ( + Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object' + ) +} + +/** + * Final Page Context object expected in the Segment Event context + */ +export interface PageContext { + path: string + referrer: string + search: string + title: string + url: string +} + +type CanonicalUrl = string | undefined + +export const BufferedPageContextDiscriminant = 'bpc' as const +/** + * Page Context expected to be built by the snippet. + * Note: The key names are super short because we want to keep the strings in the html snippet short to save bytes. + */ +export interface BufferedPageContext { + __t: typeof BufferedPageContextDiscriminant // for extra uniqeness + c: CanonicalUrl + p: PageContext['path'] + u: PageContext['url'] + s: PageContext['search'] + t: PageContext['title'] + r: PageContext['referrer'] +} + +/** + * `BufferedPageContext` object builder + */ +export const createBufferedPageContext = ( + url: string, + canonicalUrl: CanonicalUrl, + search: string, + path: string, + title: string, + referrer: string +): BufferedPageContext => ({ + __t: BufferedPageContextDiscriminant, + c: canonicalUrl, + p: path, + u: url, + s: search, + t: title, + r: referrer, +}) + +// my clever/dubious way of making sure this type guard does not get out sync with the type definition +const BUFFERED_PAGE_CONTEXT_KEYS = Object.keys( + createBufferedPageContext('', '', '', '', '', '') +) as (keyof BufferedPageContext)[] + +export function isBufferedPageContext( + bufferedPageCtx: unknown +): bufferedPageCtx is BufferedPageContext { + if (!isPlainObject(bufferedPageCtx)) return false + if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false + + // ensure obj has all the keys we expect, and none we don't. + for (const k in bufferedPageCtx) { + if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k as keyof BufferedPageContext)) { + return false + } + } + return true +} + +// Legacy logic: we are we appending search parameters to the canonical URL -- I guess the canonical URL is "not canonical enough" (lol) +const createCanonicalURL = (canonicalUrl: string, searchParams: string) => { + return canonicalUrl.indexOf('?') > -1 + ? canonicalUrl + : canonicalUrl + searchParams +} + +/** + * Strips hash from URL. + * http://www.segment.local#test -> http://www.segment.local + */ +const removeHash = (href: string) => { + const hashIdx = href.indexOf('#') + return hashIdx === -1 ? href : href.slice(0, hashIdx) +} + +const parseCanonicalPath = (canonicalUrl: string): string => { + try { + return new URL(canonicalUrl).pathname + } catch (_e) { + // this is classic behavior -- we assume that if the canonical URL is invalid, it's a raw path. + return canonicalUrl[0] === '/' ? canonicalUrl : '/' + canonicalUrl + } +} + +/** + * Create a `PageContext` from a `BufferedPageContext`. + * `BufferedPageContext` keys are minified to save bytes in the snippet. + */ +export const createPageContext = ({ + c: canonicalUrl, + p: pathname, + s: search, + u: url, + r: referrer, + t: title, +}: BufferedPageContext): PageContext => { + const newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname + const newUrl = canonicalUrl + ? createCanonicalURL(canonicalUrl, search) + : removeHash(url) + return { + path: newPath, + referrer, + search, + title, + url: newUrl, + } +} + +/** + * Get page properties from the browser window/document. + */ +export const getDefaultBufferedPageContext = (): BufferedPageContext => { + const c = document.querySelector("link[rel='canonical']") + return createBufferedPageContext( + location.href, + (c && c.getAttribute('href')) || undefined, + location.search, + location.pathname, + document.title, + document.referrer + ) +} + +/** + * Get page properties from the browser window/document. + */ +export const getDefaultPageContext = (): PageContext => + createPageContext(getDefaultBufferedPageContext()) From f6eaf37a050ae97e20f25511862f9aaa549e8c90 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:40:09 -0500 Subject: [PATCH 07/30] add page package --- .buildkite/pipeline.yml | 8 +- packages/page-tools/LICENSE | 2 +- packages/page-tools/jest.config.js | 4 +- packages/page-tools/package.json | 10 +- .../src/__tests__/page-context.test.ts | 130 ++++++++++++++++++ 5 files changed, 149 insertions(+), 5 deletions(-) create mode 100644 packages/page-tools/src/__tests__/page-context.test.ts diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 73bb0b23f..d03fd26d5 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -114,20 +114,24 @@ steps: key: "v1.1-cache-dev-{{ checksum 'yarn.lock' }}" paths: ['.yarn/cache/'] - - label: '[Generic Utils] Lint + Test' + - label: '[Misc Utils] Lint + Test' agents: queue: v1 commands: - npm config set "//registry.npmjs.org/:_authToken" $${NPM_TOKEN} - echo "--- Install dependencies" - PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 HUSKY=0 yarn install --immutable - - echo "+++ Run QA" + - echo "+++ Run QA for generic-utils" - yarn turbo run --filter=@segment/analytics-generic-utils lint - yarn turbo run --filter=@segment/analytics-generic-utils test + - echo "+++ Run QA for page-tools" + - yarn turbo run --filter=@segment/analytics-page-tools lint + - yarn turbo run --filter=@segment/analytics-page-tools test plugins: - ssh://git@github.com/segmentio/cache-buildkite-plugin#v2.0.0: key: "v1.1-cache-dev-{{ checksum 'yarn.lock' }}" paths: ['.yarn/cache/'] + - label: '[Consent] Lint + Test' agents: diff --git a/packages/page-tools/LICENSE b/packages/page-tools/LICENSE index a0378adfd..e993861f3 100644 --- a/packages/page-tools/LICENSE +++ b/packages/page-tools/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright © 2023 Segment +Copyright © 2025 Segment Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/page-tools/jest.config.js b/packages/page-tools/jest.config.js index 68ccd2e05..06534cb19 100644 --- a/packages/page-tools/jest.config.js +++ b/packages/page-tools/jest.config.js @@ -1,3 +1,5 @@ const { createJestTSConfig } = require('@internal/config') -module.exports = createJestTSConfig(__dirname) +module.exports = createJestTSConfig(__dirname, { + testEnvironment: 'jsdom', +}) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index cc61ea513..b633dfaf4 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -20,7 +20,15 @@ "scripts": { "build": "rm -rf dist && yarn build:esm", "build:esm": "yarn tsup src/index.ts --format esm --dts --out-dir dist/esm", - "tsup": "yarn run -T tsup" + "lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'", + "tsup": "yarn run -T tsup", + "test": "yarn jest", + "watch": "yarn build:esm --watch", + "watch:test": "yarn test --watch", + "tsc": "yarn run -T tsc", + "eslint": "yarn run -T eslint", + "concurrently": "yarn run -T concurrently", + "jest": "yarn run -T jest" }, "dependencies": { "tslib": "^2.4.1" diff --git a/packages/page-tools/src/__tests__/page-context.test.ts b/packages/page-tools/src/__tests__/page-context.test.ts new file mode 100644 index 000000000..b1f166cff --- /dev/null +++ b/packages/page-tools/src/__tests__/page-context.test.ts @@ -0,0 +1,130 @@ +import { + BufferedPageContextDiscriminant, + getDefaultBufferedPageContext, + getDefaultPageContext, + isBufferedPageContext, +} from '../' +import { pickBy } from 'lodash' + +const originalLocation = window.location +beforeEach(() => { + Object.defineProperty(window, 'location', { + value: { + ...originalLocation, + }, + writable: true, + }) +}) + +describe(isBufferedPageContext, () => { + it('should return true if object is page context', () => { + expect(isBufferedPageContext(getDefaultBufferedPageContext())).toBe(true) + }) + it('should return false if object is not page context', () => { + expect(isBufferedPageContext(undefined)).toBe(false) + expect(isBufferedPageContext({})).toBe(false) + expect(isBufferedPageContext('')).toBe(false) + expect(isBufferedPageContext({ foo: false })).toBe(false) + expect(isBufferedPageContext({ u: 'hello' })).toBe(false) + expect(isBufferedPageContext(null)).toBe(false) + + expect( + isBufferedPageContext({ + ...getDefaultBufferedPageContext(), + some_unknown_key: 123, + }) + ).toBe(false) + + const missingDiscriminant = pickBy( + getDefaultBufferedPageContext(), + (v) => v !== BufferedPageContextDiscriminant + ) + // should not be missing the dscriminant + expect(isBufferedPageContext(missingDiscriminant)).toBe(false) + }) +}) + +describe(getDefaultPageContext, () => { + describe('hash', () => { + it('strips the hash from the URL', () => { + window.location.href = 'http://www.segment.local#test' + const defs = getDefaultPageContext() + expect(defs.url).toBe('http://www.segment.local') + + window.location.href = 'http://www.segment.local/#test' + const defs2 = getDefaultPageContext() + expect(defs2.url).toBe('http://www.segment.local/') + }) + }) + + describe('canonical URL', () => { + const el = document.createElement('link') + beforeEach(() => { + el.setAttribute('rel', 'canonical') + el.setAttribute('href', '') + document.clear() + }) + + it('returns location.href if canonical URL does not exist', () => { + el.setAttribute('rel', 'nope') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual(window.location.href) + }) + + it('does not throw an error if canonical URL is not a valid URL', () => { + el.setAttribute('href', 'foo.com/bar') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual('foo.com/bar') // this is analytics.js classic behavior + expect(defs.path).toEqual('/foo.com/bar') // this is analytics.js classic behavior + }) + + it('handles a leading slash', () => { + el.setAttribute('href', 'foo') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual('foo') + expect(defs.path).toEqual('/foo') // this is analytics.js classic behavior + }) + + it('handles canonical links', () => { + el.setAttribute('href', 'http://www.segment.local') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual('http://www.segment.local') + }) + + it('favors canonical path over location.pathname', () => { + window.location.pathname = '/nope' + el.setAttribute('href', 'http://www.segment.local/test') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.path).toEqual('/test') + }) + + it('handles canonical links with a path', () => { + el.setAttribute('href', 'http://www.segment.local/test') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual('http://www.segment.local/test') + expect(defs.path).toEqual('/test') + }) + + it('handles canonical links with search params in the url', () => { + el.setAttribute('href', 'http://www.segment.local?test=true') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual('http://www.segment.local?test=true') + }) + + it('will add search params from the document to the canonical path if it does not have search params', () => { + // This seems like weird behavior to me, but I found it in the codebase so adding a test for it. + window.location.search = '?foo=123' + el.setAttribute('href', 'http://www.segment.local') + document.body.appendChild(el) + const defs = getDefaultPageContext() + expect(defs.url).toEqual('http://www.segment.local?foo=123') + }) + }) +}) From 4f9281ced2171dc255fd2caa8a07075a09077626 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:43:42 -0500 Subject: [PATCH 08/30] wip --- .changeset/wet-waves-pull.md | 5 +++++ packages/page-tools/package.json | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 .changeset/wet-waves-pull.md diff --git a/.changeset/wet-waves-pull.md b/.changeset/wet-waves-pull.md new file mode 100644 index 000000000..d96e990a5 --- /dev/null +++ b/.changeset/wet-waves-pull.md @@ -0,0 +1,5 @@ +--- +'@segment/analytics-page-tools': major +--- + +Release package diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index b633dfaf4..da7951906 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -1,5 +1,12 @@ { "name": "@segment/analytics-page-tools", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/segmentio/analytics-next", + "directory": "packages/page-tools" + }, + "license": "MIT", "module": "./dist/esm/index.mjs", "types": "./dist/esm/index.d.ts", "exports": { From 5b2c79f6531943351fdf2db09448bf050680c282 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:44:53 -0500 Subject: [PATCH 09/30] add generic utils --- packages/browser/package.json | 1 + yarn.lock | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 5b16f477f..5a9c4893c 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -52,6 +52,7 @@ "@lukeed/uuid": "^2.0.0", "@segment/analytics-core": "1.8.1", "@segment/analytics-generic-utils": "1.2.0", + "@segment/analytics-page-tools": "0.0.1", "@segment/analytics.js-video-plugins": "^0.2.1", "@segment/facade": "^3.4.9", "dset": "^3.1.4", diff --git a/yarn.lock b/yarn.lock index 786a7c56c..ca5a48066 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6248,6 +6248,7 @@ __metadata: "@segment/analytics-browser-actions-braze": ^1.3.0 "@segment/analytics-core": 1.8.1 "@segment/analytics-generic-utils": 1.2.0 + "@segment/analytics-page-tools": 0.0.1 "@segment/analytics.js-integration": ^3.3.3 "@segment/analytics.js-integration-amplitude": ^3.3.3 "@segment/analytics.js-video-plugins": ^0.2.1 @@ -6312,7 +6313,7 @@ __metadata: languageName: unknown linkType: soft -"@segment/analytics-page-tools@workspace:packages/page-tools": +"@segment/analytics-page-tools@0.0.1, @segment/analytics-page-tools@workspace:packages/page-tools": version: 0.0.0-use.local resolution: "@segment/analytics-page-tools@workspace:packages/page-tools" dependencies: From d75c746d6ccc1107eeb93100446ae0f095515f89 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:45:33 -0500 Subject: [PATCH 10/30] add changeset --- .changeset/bright-readers-wait.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/bright-readers-wait.md diff --git a/.changeset/bright-readers-wait.md b/.changeset/bright-readers-wait.md new file mode 100644 index 000000000..c7c346772 --- /dev/null +++ b/.changeset/bright-readers-wait.md @@ -0,0 +1,5 @@ +--- +'@segment/analytics-next': minor +--- + +Refactor to use page-tools package From da205e8ffd2cd9c1ea5d72fb35a6731a10207dd9 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:52:38 -0500 Subject: [PATCH 11/30] fix --- packages/page-tools/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index da7951906..835ecdd0b 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -8,11 +8,11 @@ }, "license": "MIT", "module": "./dist/esm/index.mjs", - "types": "./dist/esm/index.d.ts", + "types": "./dist/esm/index.d.mts", "exports": { ".": { "import": "./dist/esm/index.mjs", - "types": "./dist/esm/index.d.ts" + "types": "./dist/esm/index.d.mts" } }, "sideEffects": false, From 65bb5f8af28cc9200018720b7b73cf11bf5bd822 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:55:06 -0500 Subject: [PATCH 12/30] add page context --- packages/browser/src/core/page/add-page-context.ts | 2 +- packages/browser/src/core/page/index.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/browser/src/core/page/add-page-context.ts b/packages/browser/src/core/page/add-page-context.ts index 9d2c61148..8efcdebdb 100644 --- a/packages/browser/src/core/page/add-page-context.ts +++ b/packages/browser/src/core/page/add-page-context.ts @@ -1,6 +1,6 @@ import { pick } from '../../lib/pick' import { EventProperties, SegmentEvent } from '../events' -import { getDefaultPageContext } from './get-page-context' +import { getDefaultPageContext } from '@segment/analytics-page-tools' /** * Augments a segment event with information about the current page. diff --git a/packages/browser/src/core/page/index.ts b/packages/browser/src/core/page/index.ts index c6ff6b3cf..8b72840fe 100644 --- a/packages/browser/src/core/page/index.ts +++ b/packages/browser/src/core/page/index.ts @@ -1,2 +1,12 @@ -export * from './get-page-context' +export { + type BufferedPageContext, + type PageContext, + BufferedPageContextDiscriminant, + createBufferedPageContext, + createPageContext, + getDefaultBufferedPageContext, + getDefaultPageContext, + isBufferedPageContext, +} from '@segment/analytics-page-tools' + export * from './add-page-context' From a4d2367e58bb21db6c955bef0ee141b301e4199f Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 16:31:29 -0500 Subject: [PATCH 13/30] wip --- package.json | 1 + packages/browser/.gitignore | 1 + packages/browser/scripts/umd-diff.sh | 35 +++++++ packages/page-tools/tsconfig.json | 2 +- yarn.lock | 133 +++++++++++++++++++++++++++ 5 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 packages/browser/.gitignore create mode 100644 packages/browser/scripts/umd-diff.sh diff --git a/package.json b/package.json index c262078e9..55e7f3f10 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@changesets/cli": "^2.23.2", "@microsoft/api-extractor": "^7.47.9", "@npmcli/promise-spawn": "^7.0.0", + "@swc/core": "^1.11.18", "@types/express": "4", "@types/jest": "^29.5.11", "@types/lodash": "^4", diff --git a/packages/browser/.gitignore b/packages/browser/.gitignore new file mode 100644 index 000000000..d00bbd1ff --- /dev/null +++ b/packages/browser/.gitignore @@ -0,0 +1 @@ +umd.old diff --git a/packages/browser/scripts/umd-diff.sh b/packages/browser/scripts/umd-diff.sh new file mode 100644 index 000000000..0893db224 --- /dev/null +++ b/packages/browser/scripts/umd-diff.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# This script is for detecting how the webpack build has changed. + +# 1. yarn umd && cp dist/umd dist/umd.old +# 2. make changes to your webpack config +# 3. `bash scripts/umd-diff.sh` to see changes + +# Ensure the script stops on errors +set -e + +# Define directories +DIST_DIR="./dist/umd" +TMP_DIR="./dist/umd.old" + +# Run the UMD build +echo "Running 'yarn umd' to compile into $DIST_DIR..." +yarn umd + +# Check if the temporary directory exists +if [ ! -d "$TMP_DIR" ]; then + echo "Temporary directory $TMP_DIR does not exist. Exiting." + exit 1 +fi + +# Compare the directories +echo "Comparing $DIST_DIR with $TMP_DIR..." +if command -v colordiff &> /dev/null; then + # Use colordiff if available for a prettier diff + diff -r "$DIST_DIR" "$TMP_DIR" | grep -E "^(Only in|diff|@@)" | colordiff +fi + +rm +# Print completion message +echo "Comparison complete." diff --git a/packages/page-tools/tsconfig.json b/packages/page-tools/tsconfig.json index 5da5184dd..4caaf8cd8 100644 --- a/packages/page-tools/tsconfig.json +++ b/packages/page-tools/tsconfig.json @@ -3,7 +3,7 @@ "exclude": ["node_modules", "dist"], "compilerOptions": { "module": "esnext", - "target": "ES2020", + "target": "ES5", "moduleResolution": "node", "lib": ["es2020", "DOM", "DOM.Iterable"] } diff --git a/yarn.lock b/yarn.lock index ca5a48066..5237b885a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7924,6 +7924,129 @@ __metadata: languageName: node linkType: hard +"@swc/core-darwin-arm64@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-darwin-arm64@npm:1.11.18" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-x64@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-darwin-x64@npm:1.11.18" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.11.18" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-linux-arm64-gnu@npm:1.11.18" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-arm64-musl@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-linux-arm64-musl@npm:1.11.18" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-linux-x64-gnu@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-linux-x64-gnu@npm:1.11.18" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-musl@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-linux-x64-musl@npm:1.11.18" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-win32-arm64-msvc@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-win32-arm64-msvc@npm:1.11.18" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-win32-ia32-msvc@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-win32-ia32-msvc@npm:1.11.18" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@swc/core-win32-x64-msvc@npm:1.11.18": + version: 1.11.18 + resolution: "@swc/core-win32-x64-msvc@npm:1.11.18" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@swc/core@npm:^1.11.18": + version: 1.11.18 + resolution: "@swc/core@npm:1.11.18" + dependencies: + "@swc/core-darwin-arm64": 1.11.18 + "@swc/core-darwin-x64": 1.11.18 + "@swc/core-linux-arm-gnueabihf": 1.11.18 + "@swc/core-linux-arm64-gnu": 1.11.18 + "@swc/core-linux-arm64-musl": 1.11.18 + "@swc/core-linux-x64-gnu": 1.11.18 + "@swc/core-linux-x64-musl": 1.11.18 + "@swc/core-win32-arm64-msvc": 1.11.18 + "@swc/core-win32-ia32-msvc": 1.11.18 + "@swc/core-win32-x64-msvc": 1.11.18 + "@swc/counter": ^0.1.3 + "@swc/types": ^0.1.21 + peerDependencies: + "@swc/helpers": "*" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: ccf06f3cc553defa2288a99beb35aeb3ca3c450920c5eafd1583136a3ef5963e128c34671f34bdbcc7d4760f60692498c9b145ba8eeb99beff6643bd71637577 + languageName: node + linkType: hard + +"@swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 + languageName: node + linkType: hard + "@swc/helpers@npm:0.4.11": version: 0.4.11 resolution: "@swc/helpers@npm:0.4.11" @@ -7942,6 +8065,15 @@ __metadata: languageName: node linkType: hard +"@swc/types@npm:^0.1.21": + version: 0.1.21 + resolution: "@swc/types@npm:0.1.21" + dependencies: + "@swc/counter": ^0.1.3 + checksum: 857621e50ec78407bfeaa92663be86fc9ee2c9c103ccffd7f48c55b6f3c67a82e270f6524c7974c2c608a2ed0fcf4f00c20f61c8d1fdfd2aa55b2c42a28223f1 + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^1.1.2": version: 1.1.2 resolution: "@szmarczak/http-timer@npm:1.1.2" @@ -9996,6 +10128,7 @@ __metadata: "@changesets/cli": ^2.23.2 "@microsoft/api-extractor": ^7.47.9 "@npmcli/promise-spawn": ^7.0.0 + "@swc/core": ^1.11.18 "@types/express": 4 "@types/jest": ^29.5.11 "@types/lodash": ^4 From 085df5d961947f8edf08a82a433f382d25bdbc1f Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 16:36:32 -0500 Subject: [PATCH 14/30] wip --- packages/browser/package.json | 1 + packages/browser/webpack.config.js | 8 +++++++- yarn.lock | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/browser/package.json b/packages/browser/package.json index 5a9c4893c..98214806a 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -80,6 +80,7 @@ "aws-sdk": "^2.814.0", "circular-dependency-plugin": "^5.2.2", "compression-webpack-plugin": "^8.0.1", + "ecma-version-validator-webpack-plugin": "^1.2.1", "execa": "^4.1.0", "flat": "^5.0.2", "fs-extra": "^9.0.1", diff --git a/packages/browser/webpack.config.js b/packages/browser/webpack.config.js index a51fd7774..872b9a72b 100644 --- a/packages/browser/webpack.config.js +++ b/packages/browser/webpack.config.js @@ -5,7 +5,9 @@ const CompressionPlugin = require('compression-webpack-plugin') const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin const CircularDependencyPlugin = require('circular-dependency-plugin') - +const { + ECMAVersionValidatorPlugin, +} = require('ecma-version-validator-webpack-plugin') const isProd = process.env.NODE_ENV === 'production' const ASSET_PATH = process.env.ASSET_PATH @@ -30,6 +32,10 @@ const plugins = [ new CircularDependencyPlugin({ failOnError: true, }), + // ensure our js bundle only contains syntax supported in ie11. + // This does not check polyfills. + // This is especially neccessary because by default, node_modules are not transformed. + new ECMAVersionValidatorPlugin({ ecmaVersion: 5 }), ] if (process.env.ANALYZE) { diff --git a/yarn.lock b/yarn.lock index 5237b885a..412490130 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6268,6 +6268,7 @@ __metadata: circular-dependency-plugin: ^5.2.2 compression-webpack-plugin: ^8.0.1 dset: ^3.1.4 + ecma-version-validator-webpack-plugin: ^1.2.1 execa: ^4.1.0 flat: ^5.0.2 fs-extra: ^9.0.1 From 79ddf83a60226070baa02f7c27f73b23d6af82e5 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 16:40:05 -0500 Subject: [PATCH 15/30] wip --- packages/browser/webpack.config.js | 2 ++ packages/signals/signals-integration-tests/tsconfig.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/browser/webpack.config.js b/packages/browser/webpack.config.js index 872b9a72b..2c33236f6 100644 --- a/packages/browser/webpack.config.js +++ b/packages/browser/webpack.config.js @@ -1,3 +1,5 @@ +// TODO: use webpack.config.common.js + const path = require('path') const webpack = require('webpack') const TerserPlugin = require('terser-webpack-plugin') diff --git a/packages/signals/signals-integration-tests/tsconfig.json b/packages/signals/signals-integration-tests/tsconfig.json index 30cc88da4..1ce6b26c7 100644 --- a/packages/signals/signals-integration-tests/tsconfig.json +++ b/packages/signals/signals-integration-tests/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../../../tsconfig.json", - "exclude": ["node_modules", "dist"], + "exclude": ["node_modules", "dist", "playwright-report"], "compilerOptions": { "jsx": "react", "module": "esnext", From eefe18048486cde1b97112439e52c4a8e74d10b5 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 16:49:37 -0500 Subject: [PATCH 16/30] remove accidental changelog --- packages/page-tools/CHANGELOG.md | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 packages/page-tools/CHANGELOG.md diff --git a/packages/page-tools/CHANGELOG.md b/packages/page-tools/CHANGELOG.md deleted file mode 100644 index 34a3463b1..000000000 --- a/packages/page-tools/CHANGELOG.md +++ /dev/null @@ -1,25 +0,0 @@ -# @segment/analytics-generic-utils - -## 1.2.0 - -### Minor Changes - -- [#945](https://github.com/segmentio/analytics-next/pull/945) [`d212633`](https://github.com/segmentio/analytics-next/commit/d21263369d5980f4f57b13795524dbc345a02e5c) Thanks [@zikaari](https://github.com/zikaari)! - Load destinations lazily and start sending events as each becomes available instead of waiting for all to load first - -## 1.1.1 - -### Patch Changes - -- [#1020](https://github.com/segmentio/analytics-next/pull/1020) [`7b93e7b`](https://github.com/segmentio/analytics-next/commit/7b93e7b50fa293aebaf6767a44bf7708b231d5cd) Thanks [@silesky](https://github.com/silesky)! - Add tslib to resolve unsound dependency warning. - -## 1.1.0 - -### Minor Changes - -- [#993](https://github.com/segmentio/analytics-next/pull/993) [`d9b47c4`](https://github.com/segmentio/analytics-next/commit/d9b47c43e5e08efce14fe4150536ff60b8df91e0) Thanks [@silesky](https://github.com/silesky)! - Add Emitter library. Log default warning if a listeners exceeds 10 for a specific event type (configurable) - -## 1.0.0 - -### Major Changes - -- [#974](https://github.com/segmentio/analytics-next/pull/974) [`c879377`](https://github.com/segmentio/analytics-next/commit/c87937720941ad830c5fdd76b0c049435a6ddec6) Thanks [@silesky](https://github.com/silesky)! - Refactor to get createDeferred from @segment/analytics-generic-utils lib From 059e8278ad7b392e9a8bfb55800f5656367d1f23 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 17:30:08 -0500 Subject: [PATCH 17/30] wip --- packages/browser/src/core/page/index.ts | 12 +++++++++--- packages/page-tools/package.json | 10 +++------- packages/page-tools/src/index.ts | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/browser/src/core/page/index.ts b/packages/browser/src/core/page/index.ts index 8b72840fe..215a95134 100644 --- a/packages/browser/src/core/page/index.ts +++ b/packages/browser/src/core/page/index.ts @@ -1,6 +1,4 @@ -export { - type BufferedPageContext, - type PageContext, +import { BufferedPageContextDiscriminant, createBufferedPageContext, createPageContext, @@ -8,5 +6,13 @@ export { getDefaultPageContext, isBufferedPageContext, } from '@segment/analytics-page-tools' +export { + BufferedPageContextDiscriminant, + createBufferedPageContext, + createPageContext, + getDefaultBufferedPageContext, + getDefaultPageContext, + isBufferedPageContext, +} export * from './add-page-context' diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index 835ecdd0b..e1d3fea2a 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -9,12 +9,7 @@ "license": "MIT", "module": "./dist/esm/index.mjs", "types": "./dist/esm/index.d.mts", - "exports": { - ".": { - "import": "./dist/esm/index.mjs", - "types": "./dist/esm/index.d.mts" - } - }, + "main": "./dist/cjs/index.js", "sideEffects": false, "files": [ "LICENSE", @@ -25,8 +20,9 @@ "!*.tsbuildinfo" ], "scripts": { - "build": "rm -rf dist && yarn build:esm", + "build": "rm -rf dist && yarn concurrently 'yarn:build:*'", "build:esm": "yarn tsup src/index.ts --format esm --dts --out-dir dist/esm", + "build:cjs": "yarn tsup src/index.ts --format cjs --dts --out-dir dist/cjs", "lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'", "tsup": "yarn run -T tsup", "test": "yarn jest", diff --git a/packages/page-tools/src/index.ts b/packages/page-tools/src/index.ts index 9b703305b..5ad703a61 100644 --- a/packages/page-tools/src/index.ts +++ b/packages/page-tools/src/index.ts @@ -1 +1 @@ -export * from './page-context' +export * from './page-context.js' From 7cb0bf66d89c89023337569850e44df8f22d29ba Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 20:52:48 -0500 Subject: [PATCH 18/30] wip --- packages/browser/src/core/buffer/index.ts | 3 +- .../browser/src/core/page/get-page-context.ts | 140 ------------------ packages/browser/src/core/page/index.ts | 10 +- 3 files changed, 2 insertions(+), 151 deletions(-) delete mode 100644 packages/browser/src/core/page/get-page-context.ts diff --git a/packages/browser/src/core/buffer/index.ts b/packages/browser/src/core/buffer/index.ts index 8a359d37b..e8a18bb2a 100644 --- a/packages/browser/src/core/buffer/index.ts +++ b/packages/browser/src/core/buffer/index.ts @@ -6,12 +6,11 @@ import { version } from '../../generated/version' import { getGlobalAnalytics } from '../../lib/global-analytics-helper' import { isBufferedPageContext, - BufferedPageContext, getDefaultBufferedPageContext, createPageContext, - PageContext, } from '../page' import { getVersionType } from '../../lib/version-type' +import { PageContext, BufferedPageContext } from '@segment/analytics-page-tools' /** * The names of any AnalyticsBrowser methods that also exist on Analytics diff --git a/packages/browser/src/core/page/get-page-context.ts b/packages/browser/src/core/page/get-page-context.ts deleted file mode 100644 index 3a56bd783..000000000 --- a/packages/browser/src/core/page/get-page-context.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { isPlainObject } from '@segment/analytics-core' - -/** - * Final Page Context object expected in the Segment Event context - */ -export interface PageContext { - path: string - referrer: string - search: string - title: string - url: string -} - -type CanonicalUrl = string | undefined - -export const BufferedPageContextDiscriminant = 'bpc' as const -/** - * Page Context expected to be built by the snippet. - * Note: The key names are super short because we want to keep the strings in the html snippet short to save bytes. - */ -export interface BufferedPageContext { - __t: typeof BufferedPageContextDiscriminant // for extra uniqeness - c: CanonicalUrl - p: PageContext['path'] - u: PageContext['url'] - s: PageContext['search'] - t: PageContext['title'] - r: PageContext['referrer'] -} - -/** - * `BufferedPageContext` object builder - */ -export const createBufferedPageContext = ( - url: string, - canonicalUrl: CanonicalUrl, - search: string, - path: string, - title: string, - referrer: string -): BufferedPageContext => ({ - __t: BufferedPageContextDiscriminant, - c: canonicalUrl, - p: path, - u: url, - s: search, - t: title, - r: referrer, -}) - -// my clever/dubious way of making sure this type guard does not get out sync with the type definition -const BUFFERED_PAGE_CONTEXT_KEYS = Object.keys( - createBufferedPageContext('', '', '', '', '', '') -) as (keyof BufferedPageContext)[] - -export function isBufferedPageContext( - bufferedPageCtx: unknown -): bufferedPageCtx is BufferedPageContext { - if (!isPlainObject(bufferedPageCtx)) return false - if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false - - // ensure obj has all the keys we expect, and none we don't. - for (const k in bufferedPageCtx) { - if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k as keyof BufferedPageContext)) { - return false - } - } - return true -} - -// Legacy logic: we are we appending search parameters to the canonical URL -- I guess the canonical URL is "not canonical enough" (lol) -const createCanonicalURL = (canonicalUrl: string, searchParams: string) => { - return canonicalUrl.indexOf('?') > -1 - ? canonicalUrl - : canonicalUrl + searchParams -} - -/** - * Strips hash from URL. - * http://www.segment.local#test -> http://www.segment.local - */ -const removeHash = (href: string) => { - const hashIdx = href.indexOf('#') - return hashIdx === -1 ? href : href.slice(0, hashIdx) -} - -const parseCanonicalPath = (canonicalUrl: string): string => { - try { - return new URL(canonicalUrl).pathname - } catch (_e) { - // this is classic behavior -- we assume that if the canonical URL is invalid, it's a raw path. - return canonicalUrl[0] === '/' ? canonicalUrl : '/' + canonicalUrl - } -} - -/** - * Create a `PageContext` from a `BufferedPageContext`. - * `BufferedPageContext` keys are minified to save bytes in the snippet. - */ -export const createPageContext = ({ - c: canonicalUrl, - p: pathname, - s: search, - u: url, - r: referrer, - t: title, -}: BufferedPageContext): PageContext => { - const newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname - const newUrl = canonicalUrl - ? createCanonicalURL(canonicalUrl, search) - : removeHash(url) - return { - path: newPath, - referrer, - search, - title, - url: newUrl, - } -} - -/** - * Get page properties from the browser window/document. - */ -export const getDefaultBufferedPageContext = (): BufferedPageContext => { - const c = document.querySelector("link[rel='canonical']") - return createBufferedPageContext( - location.href, - (c && c.getAttribute('href')) || undefined, - location.search, - location.pathname, - document.title, - document.referrer - ) -} - -/** - * Get page properties from the browser window/document. - */ -export const getDefaultPageContext = (): PageContext => - createPageContext(getDefaultBufferedPageContext()) diff --git a/packages/browser/src/core/page/index.ts b/packages/browser/src/core/page/index.ts index 215a95134..6c26dc59f 100644 --- a/packages/browser/src/core/page/index.ts +++ b/packages/browser/src/core/page/index.ts @@ -1,11 +1,3 @@ -import { - BufferedPageContextDiscriminant, - createBufferedPageContext, - createPageContext, - getDefaultBufferedPageContext, - getDefaultPageContext, - isBufferedPageContext, -} from '@segment/analytics-page-tools' export { BufferedPageContextDiscriminant, createBufferedPageContext, @@ -13,6 +5,6 @@ export { getDefaultBufferedPageContext, getDefaultPageContext, isBufferedPageContext, -} +} from '@segment/analytics-page-tools' export * from './add-page-context' From 6283fe2dbaa00e577ce73ae0207735b141d091e7 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 20:54:20 -0500 Subject: [PATCH 19/30] wip --- packages/browser/src/core/buffer/index.ts | 3 ++- packages/browser/src/core/page/index.ts | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/browser/src/core/buffer/index.ts b/packages/browser/src/core/buffer/index.ts index e8a18bb2a..0fe60e2ce 100644 --- a/packages/browser/src/core/buffer/index.ts +++ b/packages/browser/src/core/buffer/index.ts @@ -8,9 +8,10 @@ import { isBufferedPageContext, getDefaultBufferedPageContext, createPageContext, + BufferedPageContext, + PageContext, } from '../page' import { getVersionType } from '../../lib/version-type' -import { PageContext, BufferedPageContext } from '@segment/analytics-page-tools' /** * The names of any AnalyticsBrowser methods that also exist on Analytics diff --git a/packages/browser/src/core/page/index.ts b/packages/browser/src/core/page/index.ts index 6c26dc59f..4eeb8dfd8 100644 --- a/packages/browser/src/core/page/index.ts +++ b/packages/browser/src/core/page/index.ts @@ -3,6 +3,8 @@ export { createBufferedPageContext, createPageContext, getDefaultBufferedPageContext, + PageContext, + BufferedPageContext, getDefaultPageContext, isBufferedPageContext, } from '@segment/analytics-page-tools' From 3936772cd472a80bff0cb3f6457123921a47cf06 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 20:55:57 -0500 Subject: [PATCH 20/30] wip --- packages/page-tools/src/index.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/page-tools/src/index.ts b/packages/page-tools/src/index.ts index 5ad703a61..46c65dfb6 100644 --- a/packages/page-tools/src/index.ts +++ b/packages/page-tools/src/index.ts @@ -1 +1,10 @@ -export * from './page-context.js' +export { + BufferedPageContextDiscriminant, + createBufferedPageContext, + createPageContext, + getDefaultBufferedPageContext, + PageContext, + BufferedPageContext, + getDefaultPageContext, + isBufferedPageContext, +} from './page-context.js' From 56e346778960ff726e1d41c5de31d2d768b722d9 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 20:58:32 -0500 Subject: [PATCH 21/30] wip --- packages/page-tools/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index e1d3fea2a..64a4bfe5e 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -8,7 +8,7 @@ }, "license": "MIT", "module": "./dist/esm/index.mjs", - "types": "./dist/esm/index.d.mts", + "types": "./dist/cjs/index.d.ts", "main": "./dist/cjs/index.js", "sideEffects": false, "files": [ From af39c7aed796d9278470a61a266e9da255266bea Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:14:28 -0500 Subject: [PATCH 22/30] simplify structure --- packages/config/src/index.js | 1 + packages/config/src/tsup/config.js | 12 ++++++++++++ packages/page-tools/package.json | 10 ++++------ packages/page-tools/tsup.config.js | 1 + 4 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 packages/config/src/tsup/config.js create mode 100644 packages/page-tools/tsup.config.js diff --git a/packages/config/src/index.js b/packages/config/src/index.js index 824089237..6f92296dc 100644 --- a/packages/config/src/index.js +++ b/packages/config/src/index.js @@ -1,4 +1,5 @@ module.exports = { createJestTSConfig: require('./jest/config').createJestTSConfig, lintStagedConfig: require('./lint-staged/config'), + tsupConfig: require('./tsup/config'), } diff --git a/packages/config/src/tsup/config.js b/packages/config/src/tsup/config.js new file mode 100644 index 000000000..468ea3978 --- /dev/null +++ b/packages/config/src/tsup/config.js @@ -0,0 +1,12 @@ +const { defineConfig } = require('tsup') + +module.exports = defineConfig({ + entry: ['src/index.ts'], + format: ['esm', 'cjs'], + dts: { + resolve: true, + entry: 'src/index.ts', + }, + outDir: 'dist', + clean: true, +}) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index 64a4bfe5e..ccc1e44cd 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -7,9 +7,9 @@ "directory": "packages/page-tools" }, "license": "MIT", - "module": "./dist/esm/index.mjs", - "types": "./dist/cjs/index.d.ts", - "main": "./dist/cjs/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "main": "./dist/index.js", "sideEffects": false, "files": [ "LICENSE", @@ -20,9 +20,7 @@ "!*.tsbuildinfo" ], "scripts": { - "build": "rm -rf dist && yarn concurrently 'yarn:build:*'", - "build:esm": "yarn tsup src/index.ts --format esm --dts --out-dir dist/esm", - "build:cjs": "yarn tsup src/index.ts --format cjs --dts --out-dir dist/cjs", + "build": "yarn tsup --config tsup.config.js", "lint": "yarn concurrently 'yarn:eslint .' 'yarn:tsc --noEmit'", "tsup": "yarn run -T tsup", "test": "yarn jest", diff --git a/packages/page-tools/tsup.config.js b/packages/page-tools/tsup.config.js new file mode 100644 index 000000000..6c074db50 --- /dev/null +++ b/packages/page-tools/tsup.config.js @@ -0,0 +1 @@ +module.exports = require('@internal/config').tsupConfig From 37ed24ca83599c4975fd792305d0737cdc15491d Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:15:57 -0500 Subject: [PATCH 23/30] wip --- packages/browser/src/core/page/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/browser/src/core/page/index.ts b/packages/browser/src/core/page/index.ts index 4eeb8dfd8..44b546579 100644 --- a/packages/browser/src/core/page/index.ts +++ b/packages/browser/src/core/page/index.ts @@ -3,10 +3,13 @@ export { createBufferedPageContext, createPageContext, getDefaultBufferedPageContext, - PageContext, - BufferedPageContext, getDefaultPageContext, isBufferedPageContext, } from '@segment/analytics-page-tools' +export type { + BufferedPageContext, + PageContext, +} from '@segment/analytics-page-tools' + export * from './add-page-context' From ab826fae4cbff29dae64b9ba82cbed4ed66c6a05 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:16:46 -0500 Subject: [PATCH 24/30] wip --- packages/browser/src/core/page/index.ts | 7 ++----- packages/browser/src/test-helpers/fixtures/page-context.ts | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/browser/src/core/page/index.ts b/packages/browser/src/core/page/index.ts index 44b546579..be4b05e07 100644 --- a/packages/browser/src/core/page/index.ts +++ b/packages/browser/src/core/page/index.ts @@ -5,11 +5,8 @@ export { getDefaultBufferedPageContext, getDefaultPageContext, isBufferedPageContext, -} from '@segment/analytics-page-tools' - -export type { - BufferedPageContext, - PageContext, + type PageContext, + type BufferedPageContext, } from '@segment/analytics-page-tools' export * from './add-page-context' diff --git a/packages/browser/src/test-helpers/fixtures/page-context.ts b/packages/browser/src/test-helpers/fixtures/page-context.ts index c8949d4c5..80ca1605c 100644 --- a/packages/browser/src/test-helpers/fixtures/page-context.ts +++ b/packages/browser/src/test-helpers/fixtures/page-context.ts @@ -1,8 +1,8 @@ import { - BufferedPageContext, + type BufferedPageContext, + type PageContext, getDefaultBufferedPageContext, getDefaultPageContext, - PageContext, } from '../../core/page' export const getPageCtxFixture = (): PageContext => getDefaultPageContext() From 81e4eee5f98e0e531883fd1b54ebd78870cae38e Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:27:30 -0500 Subject: [PATCH 25/30] wip --- packages/config/src/tsup/config.js | 4 ++-- packages/page-tools/src/index.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/config/src/tsup/config.js b/packages/config/src/tsup/config.js index 468ea3978..f90e797c3 100644 --- a/packages/config/src/tsup/config.js +++ b/packages/config/src/tsup/config.js @@ -1,6 +1,6 @@ const { defineConfig } = require('tsup') -module.exports = defineConfig({ +module.exports = defineConfig(() => ({ entry: ['src/index.ts'], format: ['esm', 'cjs'], dts: { @@ -9,4 +9,4 @@ module.exports = defineConfig({ }, outDir: 'dist', clean: true, -}) +})) diff --git a/packages/page-tools/src/index.ts b/packages/page-tools/src/index.ts index 46c65dfb6..d8553663d 100644 --- a/packages/page-tools/src/index.ts +++ b/packages/page-tools/src/index.ts @@ -7,4 +7,4 @@ export { BufferedPageContext, getDefaultPageContext, isBufferedPageContext, -} from './page-context.js' +} from './page-context' From cd291c45662405c6f683090fd3c12ddad9c5bb5d Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:28:56 -0500 Subject: [PATCH 26/30] wip --- packages/page-tools/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index ccc1e44cd..e871270ba 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -14,7 +14,6 @@ "files": [ "LICENSE", "dist/", - "src/", "!**/__tests__/**", "!**/test-helpers/**", "!*.tsbuildinfo" From 47d89995ecea6747b230fa679f496e77f89ff2b8 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:38:58 -0500 Subject: [PATCH 27/30] wip --- packages/page-tools/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index e871270ba..46c8e5a1a 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -8,7 +8,7 @@ }, "license": "MIT", "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "main": "./dist/index.js", "sideEffects": false, "files": [ From 6a7638258958302b14c4a1608180282363345823 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:23:17 -0500 Subject: [PATCH 28/30] update build --- packages/config/src/tsup/config.js | 11 +++++++++-- packages/page-tools/package.json | 6 +++--- playgrounds/standalone-playground/package.json | 5 ++++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/config/src/tsup/config.js b/packages/config/src/tsup/config.js index f90e797c3..8e1ea9699 100644 --- a/packages/config/src/tsup/config.js +++ b/packages/config/src/tsup/config.js @@ -2,11 +2,18 @@ const { defineConfig } = require('tsup') module.exports = defineConfig(() => ({ entry: ['src/index.ts'], - format: ['esm', 'cjs'], + format: ['esm', 'cjs'], // Output both ESM and CJS formats dts: { resolve: true, entry: 'src/index.ts', }, - outDir: 'dist', clean: true, + esbuildOptions(options, context) { + if (context.format === 'esm') { + options.outdir = 'dist/esm' // Output ESM files to dist/esm + options.outExtension = { '.js': '.mjs' } // Use .mjs for ESM files + } else if (context.format === 'cjs') { + options.outdir = 'dist/cjs' // Output CJS files to dist/cjs + } + }, })) diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index 46c8e5a1a..77ece32af 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -7,9 +7,9 @@ "directory": "packages/page-tools" }, "license": "MIT", - "module": "./dist/index.mjs", - "types": "./dist/index.d.mts", - "main": "./dist/index.js", + "module": "./dist/esm/index.mjs", + "main": "./dist/cjs/index.js", + "types": "./dist/index.d.ts", "sideEffects": false, "files": [ "LICENSE", diff --git a/playgrounds/standalone-playground/package.json b/playgrounds/standalone-playground/package.json index 140c87124..45a168240 100644 --- a/playgrounds/standalone-playground/package.json +++ b/playgrounds/standalone-playground/package.json @@ -7,7 +7,10 @@ "scripts": { ".": "yarn run -T turbo run --filter=@playground/standalone-playground...", "start": "yarn http-server . -o /pages", - "dev": "yarn concurrently 'yarn start' 'sleep 3 && ASSET_PATH='/node_modules/@segment/analytics-next/dist/umd/' yarn . watch'", + "dev": "yarn concurrently 'yarn start' 'yarn watch'", + "watch": "yarn concurrently 'yarn:watch:*'", + "watch:ajs": "ASSET_PATH='/node_modules/@segment/analytics-next/dist/umd/' yarn workspace @segment/analytics-next watch", + "watch:signals": "yarn workspace @segment/analytics-signals watch", "concurrently": "yarn run -T concurrently" }, "dependencies": { From 9b99a924c8060b6c637b53c9002b3b061248d2ec Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:31:49 -0500 Subject: [PATCH 29/30] add config tsup --- packages/{config/src/tsup => config-tsup}/config.js | 0 packages/config-tsup/package.json | 6 ++++++ packages/config/src/index.js | 1 - packages/page-tools/package.json | 3 ++- packages/page-tools/tsup.config.js | 2 +- yarn.lock | 7 +++++++ 6 files changed, 16 insertions(+), 3 deletions(-) rename packages/{config/src/tsup => config-tsup}/config.js (100%) create mode 100644 packages/config-tsup/package.json diff --git a/packages/config/src/tsup/config.js b/packages/config-tsup/config.js similarity index 100% rename from packages/config/src/tsup/config.js rename to packages/config-tsup/config.js diff --git a/packages/config-tsup/package.json b/packages/config-tsup/package.json new file mode 100644 index 000000000..662fe3fce --- /dev/null +++ b/packages/config-tsup/package.json @@ -0,0 +1,6 @@ +{ + "name": "@internal/config-tsup", + "version": "0.0.0", + "private": true, + "packageManager": "yarn@3.4.1" +} diff --git a/packages/config/src/index.js b/packages/config/src/index.js index 6f92296dc..824089237 100644 --- a/packages/config/src/index.js +++ b/packages/config/src/index.js @@ -1,5 +1,4 @@ module.exports = { createJestTSConfig: require('./jest/config').createJestTSConfig, lintStagedConfig: require('./lint-staged/config'), - tsupConfig: require('./tsup/config'), } diff --git a/packages/page-tools/package.json b/packages/page-tools/package.json index 77ece32af..4e79b2932 100644 --- a/packages/page-tools/package.json +++ b/packages/page-tools/package.json @@ -34,6 +34,7 @@ "tslib": "^2.4.1" }, "devDependencies": { - "@internal/config": "workspace:^" + "@internal/config": "workspace:^", + "@internal/config-tsup": "workspace:^" } } diff --git a/packages/page-tools/tsup.config.js b/packages/page-tools/tsup.config.js index 6c074db50..f3c8ee58f 100644 --- a/packages/page-tools/tsup.config.js +++ b/packages/page-tools/tsup.config.js @@ -1 +1 @@ -module.exports = require('@internal/config').tsupConfig +module.exports = require('@internal/config-tsup/config') diff --git a/yarn.lock b/yarn.lock index 412490130..0cc37f1da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3129,6 +3129,12 @@ __metadata: languageName: unknown linkType: soft +"@internal/config-tsup@workspace:^, @internal/config-tsup@workspace:packages/config-tsup": + version: 0.0.0-use.local + resolution: "@internal/config-tsup@workspace:packages/config-tsup" + languageName: unknown + linkType: soft + "@internal/config-webpack@workspace:^, @internal/config-webpack@workspace:packages/config-webpack": version: 0.0.0-use.local resolution: "@internal/config-webpack@workspace:packages/config-webpack" @@ -6319,6 +6325,7 @@ __metadata: resolution: "@segment/analytics-page-tools@workspace:packages/page-tools" dependencies: "@internal/config": "workspace:^" + "@internal/config-tsup": "workspace:^" tslib: ^2.4.1 languageName: unknown linkType: soft From 3920a8c23d0fea003e39eb2e071982bf10f19e61 Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:34:51 -0500 Subject: [PATCH 30/30] add tsup --- packages/config-tsup/package.json | 5 ++++- yarn.lock | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/config-tsup/package.json b/packages/config-tsup/package.json index 662fe3fce..c2eaf5f63 100644 --- a/packages/config-tsup/package.json +++ b/packages/config-tsup/package.json @@ -2,5 +2,8 @@ "name": "@internal/config-tsup", "version": "0.0.0", "private": true, - "packageManager": "yarn@3.4.1" + "packageManager": "yarn@3.4.1", + "devDependencies": { + "tsup": "^8.4.0" + } } diff --git a/yarn.lock b/yarn.lock index 0cc37f1da..db9479889 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3132,6 +3132,8 @@ __metadata: "@internal/config-tsup@workspace:^, @internal/config-tsup@workspace:packages/config-tsup": version: 0.0.0-use.local resolution: "@internal/config-tsup@workspace:packages/config-tsup" + dependencies: + tsup: ^8.4.0 languageName: unknown linkType: soft