diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5d35777..35789cf 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,28 +1,28 @@ ### Description - + ### Type of Change - + - [ ] 🐛 Bug fix - [ ] ✨ New feature - [ ] 💥 Breaking change - [ ] 📝 Documentation - [ ] ♻️ Refactoring -- [ ] ⚡ Performance +- [ ] 🏃➡️ Performance - [ ] ✅ Tests - [ ] 🔐 Security - [ ] 🔧 Build/CI -### Related Issue +### Related Issues - + ### Changes - + ### Checklist @@ -31,6 +31,6 @@ - [ ] I have commented on my code, particularly in hard-to-understand areas. - [ ] I have made corresponding changes to the documentation. -### Notes +#### Notes diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f598826..4bf5235 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,50 +1,64 @@ -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates +# yaml-language-server: $schema=https://json.schemastore.org/dependabot-2.0.json version: 2 +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates updates: - package-ecosystem: github-actions - open-pull-requests-limit: 1 - commit-message: { prefix: 'chore(deps)' } + commit-message: { prefix: sec(gha) } + open-pull-requests-limit: 0 directory: '/' schedule: interval: daily + timezone: Europe/Berlin groups: - github-actions: + security: + applies-to: security-updates + group-by: dependency-name patterns: ['*'] cooldown: default-days: 3 - - package-ecosystem: docker - open-pull-requests-limit: 1 - commit-message: { prefix: 'sec(deps)' } + - package-ecosystem: gomod + commit-message: { prefix: sec(gomod) } + open-pull-requests-limit: 0 directory: '/' schedule: interval: daily + timezone: Europe/Berlin groups: security: applies-to: security-updates - update-types: [ minor, patch ] + group-by: dependency-name patterns: ['*'] - ignore: - - dependency-name: "*" - update-types: ["version-update:semver-major"] cooldown: default-days: 3 - - package-ecosystem: gomod - open-pull-requests-limit: 1 - commit-message: { prefix: 'sec(deps)' } + - package-ecosystem: docker + commit-message: { prefix: sec(docker) } + open-pull-requests-limit: 0 directory: '/' schedule: interval: daily + timezone: Europe/Berlin + groups: + security: + applies-to: security-updates + group-by: dependency-name + patterns: ['*'] + cooldown: + default-days: 3 + + - package-ecosystem: npm + commit-message: { prefix: sec(npm) } + open-pull-requests-limit: 0 + directory: '/docs' + schedule: + interval: daily + timezone: Europe/Berlin groups: security: applies-to: security-updates - update-types: [ minor, patch ] + group-by: dependency-name patterns: ['*'] - ignore: - - dependency-name: "*" - update-types: ["version-update:semver-major"] cooldown: default-days: 3 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 618c6c8..b29f644 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -7,20 +7,23 @@ on: workflow_dispatch: permissions: + contents: read pages: write - contents: write id-token: write jobs: docs: runs-on: ubuntu-latest + timeout-minutes: 15 environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - - uses: actions/checkout@v6 + # https://github.com/actions/checkout/releases + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - - uses: oven-sh/setup-bun@v2 + # https://github.com/oven-sh/setup-bun/releases + - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2 - name: Install dependencies working-directory: docs @@ -30,12 +33,15 @@ jobs: working-directory: docs run: bun run build - - uses: actions/configure-pages@v6 + # https://github.com/actions/configure-pages/releases + - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6 - - uses: actions/upload-pages-artifact@v5 + # https://github.com/actions/upload-pages-artifact/releases + - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5 with: path: docs/.vitepress/dist - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v5 + # https://github.com/actions/deploy-pages/releases + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6e20ed2..cfb50ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,23 +12,31 @@ permissions: jobs: release: runs-on: ubuntu-latest + timeout-minutes: 30 steps: - - uses: actions/checkout@v6 + # https://github.com/actions/checkout/releases + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: fetch-depth: 0 - - uses: jdx/mise-action@v4 - - uses: actions/setup-go@v6 + # https://github.com/jdx/mise-action/releases + - uses: jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4 + + # https://github.com/actions/setup-go/releases + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: check-latest: true go-version-file: go.mod - - uses: docker/setup-qemu-action@v4 + # https://github.com/docker/setup-qemu-action/releases + - uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4 - - uses: docker/setup-buildx-action@v4 + # https://github.com/docker/setup-buildx-action/releases + - uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 + # https://github.com/tibdex/github-app-token/releases - id: app_token - uses: tibdex/github-app-token@v2 + uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2 with: app_id: ${{ secrets.TOKEN_APP_ID }} private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }} @@ -36,7 +44,8 @@ jobs: - name: Login to docker.io run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} - - uses: goreleaser/goreleaser-action@v7 + # https://github.com/goreleaser/goreleaser-action/releases + - uses: goreleaser/goreleaser-action@5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89 # v7 with: version: '~> v2' args: release --clean diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5e5eea1..8b9f3f2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,18 +18,23 @@ concurrency: jobs: test: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - - uses: actions/checkout@v6 + # https://github.com/actions/checkout/releases + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - - uses: jdx/mise-action@v4 + # https://github.com/jdx/mise-action/releases + - uses: jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4 - - uses: actions/setup-go@v6 + # https://github.com/actions/setup-go/releases + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: check-latest: true go-version-file: go.mod - name: Setup golangci-lint cache - uses: actions/cache@v5 + # https://github.com/actions/cache/releases + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5 with: path: ~/.cache/golangci-lint key: golangci-lint-${{ runner.os }}-${{ hashFiles('**/go.mod') }} @@ -47,3 +52,11 @@ jobs: - name: Run tests run: make test + + # https://github.com/codecov/codecov-action/releases + - uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 + if: success() && github.ref == 'refs/heads/main' + with: + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} + files: ./coverage.out diff --git a/.golangci.yaml b/.golangci.yaml index 8914ae5..7cb566c 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -56,9 +56,6 @@ linters: # https://golangci-lint.run/docs/linters/ settings: - # https://golangci-lint.run/docs/linters/configuration/#exhaustive - exhaustive: - default-signifies-exhaustive: true # https://golangci-lint.run/docs/linters/configuration/#gosec gosec: severity: medium @@ -72,7 +69,11 @@ linters: gocritic: disabled-checks: - ifElseChain + # https://golangci-lint.run/docs/linters/configuration/#exhaustive + exhaustive: + default-signifies-exhaustive: true exclusions: + generated: lax presets: - comments - common-false-positives @@ -83,8 +84,13 @@ linters: linters: - forbidigo paths: - - docs - - tmp + - (^|/)\..* + - (^|/)bin/ + - (^|/)tmp/ + - (^|/)docs/ + - (^|/)node_modules/ + +# https://golangci-lint.run/docs/formatters/ formatters: enable: - gofmt diff --git a/.lefthook.yaml b/.lefthook.yaml index 3eff260..acec0da 100644 --- a/.lefthook.yaml +++ b/.lefthook.yaml @@ -13,14 +13,10 @@ pre-commit: echo "Error: Branch name must start with 'feature/' or 'fix/'. Your branch: $branch_name" exit 1 fi - golangci-fmt: + golangci: glob: "*.go" run: golangci-lint fmt {staged_files} stage_fixed: true - golangci-lint: - glob: "*.go" - run: golangci-lint run --new --fast-only - stage_fixed: false commit-msg: skip: [ merge, rebase ] diff --git a/.mise.toml b/.mise.toml index 394dff4..574441f 100644 --- a/.mise.toml +++ b/.mise.toml @@ -1,10 +1,12 @@ +#:schema https://mise.jdx.dev/schema/mise.json + [settings] minimum_release_age = "3d" [tools] # https://mise-tools.jdx.dev/tools/bun bun = "1.3.14" -# https://mise-tools.jdx.dev/tools/lefthook -lefthook = "2.1.8" # https://mise-tools.jdx.dev/tools/golangci-lint golangci-lint = "2.12.2" +# https://mise-tools.jdx.dev/tools/lefthook +lefthook = "2.1.9" diff --git a/README.md b/README.md index e8118f8..5367a75 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ -[](https://github.com/foomo/sesamy-cli/actions/workflows/test.yml) -[](https://goreportcard.com/report/github.com/foomo/sesamy-cli) -[](https://godoc.org/github.com/foomo/sesamy-cli) -[](https://github.com/foomo/sesamy-cli/actions) +[](https://goreportcard.com/report/github.com/foomo/sesamy-cli) +[](https://godoc.org/github.com/foomo/sesamy-cli) +[](https://app.codecov.io/gh/foomo/sesamy-cli) +[](https://github.com/foomo/sesamy-cli/releases) +[](https://hub.docker.com/r/foomo/sesamy-cli) +[](https://github.com/foomo/sesamy-cli)
diff --git a/cmd/sesamy-cli-docs/main.go b/cmd/sesamy-cli-docs/main.go
index 6cb2bba..2e4db32 100644
--- a/cmd/sesamy-cli-docs/main.go
+++ b/cmd/sesamy-cli-docs/main.go
@@ -12,6 +12,7 @@ import (
func main() {
out := flag.String("out", "docs/reference/cli", "output directory")
+
flag.Parse()
if err := os.MkdirAll(*out, 0o755); err != nil {
diff --git a/docs/providers/mixpanel.md b/docs/providers/mixpanel.md
index f13493a..9f88df7 100644
--- a/docs/providers/mixpanel.md
+++ b/docs/providers/mixpanel.md
@@ -12,6 +12,7 @@ mixpanel:
enabled: true
mode: analytics_storage
serverContainer:
+ userId: user_id
track:
directory: .
packages:
@@ -35,4 +36,5 @@ mixpanel:
|-------|---------|
| `projectToken` | Mixpanel project token. |
| `googleConsent.mode` | Defaults to `analytics_storage`. |
+| `serverContainer.userId` | Event-data property holding the user ID, forwarded to Mixpanel. |
| `serverContainer.track.packages` | Events to forward to Mixpanel's `/track` endpoint. |
diff --git a/go.mod b/go.mod
index fb58542..3d1bde6 100644
--- a/go.mod
+++ b/go.mod
@@ -1,12 +1,12 @@
module github.com/foomo/sesamy-cli
-go 1.26.2
+go 1.26.4
require (
github.com/Code-Hex/Neo-cowsay/v2 v2.0.4
github.com/alecthomas/chroma v0.10.0
github.com/fatih/structtag v1.2.0
- github.com/foomo/go v0.11.0
+ github.com/foomo/go v0.13.0
github.com/foomo/gocontemplate v0.2.0
github.com/foomo/sesamy-go v0.12.2
github.com/invopop/jsonschema v0.14.0
@@ -15,7 +15,7 @@ require (
github.com/knadh/koanf/parsers/yaml v1.1.0
github.com/knadh/koanf/providers/file v1.2.1
github.com/knadh/koanf/providers/rawbytes v1.0.0
- github.com/knadh/koanf/v2 v2.3.4
+ github.com/knadh/koanf/v2 v2.3.5
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/pkg/errors v0.9.1
github.com/pterm/pterm v0.12.83
@@ -25,7 +25,7 @@ require (
github.com/stoewer/go-strcase v1.3.1
github.com/stretchr/testify v1.11.1
github.com/wissance/stringFormatter v1.6.3
- google.golang.org/api v0.281.0
+ google.golang.org/api v0.285.0
)
require (
@@ -59,12 +59,12 @@ require (
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/knadh/koanf/maps v0.1.2 // indirect
github.com/lithammer/fuzzysearch v1.1.8 // indirect
- github.com/mattn/go-runewidth v0.0.23 // indirect
+ github.com/mattn/go-runewidth v0.0.24 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/pb33f/ordered-map/v2 v2.3.1 // indirect
- github.com/pelletier/go-toml/v2 v2.3.1 // indirect
+ github.com/pelletier/go-toml/v2 v2.4.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.12.0 // indirect
@@ -79,17 +79,17 @@ require (
go.opentelemetry.io/otel/metric v1.43.0 // indirect
go.opentelemetry.io/otel/trace v1.43.0 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
- go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect
- golang.org/x/crypto v0.51.0 // indirect
- golang.org/x/mod v0.35.0 // indirect
- golang.org/x/net v0.55.0 // indirect
+ go.yaml.in/yaml/v4 v4.0.0-rc.5 // indirect
+ golang.org/x/crypto v0.53.0 // indirect
+ golang.org/x/mod v0.36.0 // indirect
+ golang.org/x/net v0.56.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
- golang.org/x/sync v0.20.0 // indirect
- golang.org/x/sys v0.45.0 // indirect
- golang.org/x/term v0.43.0 // indirect
- golang.org/x/text v0.37.0 // indirect
- golang.org/x/tools v0.44.0 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 // indirect
+ golang.org/x/sync v0.21.0 // indirect
+ golang.org/x/sys v0.46.0 // indirect
+ golang.org/x/term v0.44.0 // indirect
+ golang.org/x/text v0.38.0 // indirect
+ golang.org/x/tools v0.45.0 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect
google.golang.org/grpc v1.81.1 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index f4fc826..4cbc97c 100644
--- a/go.sum
+++ b/go.sum
@@ -43,8 +43,8 @@ github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/foomo/go v0.11.0 h1:YSKHryh9+F/b9NKxmwySZGYdzINsNZNFHwaGZU3pmng=
-github.com/foomo/go v0.11.0/go.mod h1:jeSB/atkoqSoJ3+ak0+b/Xtj7IMyDj1odzJroudT7Dw=
+github.com/foomo/go v0.13.0 h1:yD0NYRu9lvF5z4z3y1R010Hixsz0TmPZVxX7qg97f7w=
+github.com/foomo/go v0.13.0/go.mod h1:jeSB/atkoqSoJ3+ak0+b/Xtj7IMyDj1odzJroudT7Dw=
github.com/foomo/gocontemplate v0.2.0 h1:YbgNUwZ9mK9Wj05cGVTPamCpMuxlaL4qegkbZv2eqOY=
github.com/foomo/gocontemplate v0.2.0/go.mod h1:VOYIvxPPAT7HxrderRexS0EttcT8pyfSRkCMvS8rtxA=
github.com/foomo/gostandards v0.3.0 h1:Ev88Tdu0+52UH/d0l2KcAWx542A13o42d++LSTG0DC4=
@@ -99,8 +99,8 @@ github.com/knadh/koanf/providers/file v1.2.1 h1:bEWbtQwYrA+W2DtdBrQWyXqJaJSG3KrP
github.com/knadh/koanf/providers/file v1.2.1/go.mod h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA=
github.com/knadh/koanf/providers/rawbytes v1.0.0 h1:MrKDh/HksJlKJmaZjgs4r8aVBb/zsJyc/8qaSnzcdNI=
github.com/knadh/koanf/providers/rawbytes v1.0.0/go.mod h1:KxwYJf1uezTKy6PBtfE+m725NGp4GPVA7XoNTJ/PtLo=
-github.com/knadh/koanf/v2 v2.3.4 h1:fnynNSDlujWE+v83hAp8wKr/cdoxHLO0629SN+U8Urc=
-github.com/knadh/koanf/v2 v2.3.4/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28=
+github.com/knadh/koanf/v2 v2.3.5 h1:2dXJUYaKGm4SGYeoAtBviq9+02JZo/pxQ2ssOd60rJg=
+github.com/knadh/koanf/v2 v2.3.5/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -109,8 +109,8 @@ github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8
github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4=
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw=
-github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
+github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU=
+github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 h1:BpfhmLKZf+SjVanKKhCgf3bg+511DmU9eDQTen7LLbY=
@@ -119,8 +119,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/pb33f/ordered-map/v2 v2.3.1 h1:5319HDO0aw4DA4gzi+zv4FXU9UlSs3xGZ40wcP1nBjY=
github.com/pb33f/ordered-map/v2 v2.3.1/go.mod h1:qxFQgd0PkVUtOMCkTapqotNgzRhMPL7VvaHKbd1HnmQ=
-github.com/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc=
-github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
+github.com/pelletier/go-toml/v2 v2.4.0 h1:Mwu0mAkUKbittDs3/ADDWXqMmq3EOK2VHiuCkV00Row=
+github.com/pelletier/go-toml/v2 v2.4.0/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -188,31 +188,31 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
-go.yaml.in/yaml/v4 v4.0.0-rc.4 h1:UP4+v6fFrBIb1l934bDl//mmnoIZEDK0idg1+AIvX5U=
-go.yaml.in/yaml/v4 v4.0.0-rc.4/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
+go.yaml.in/yaml/v4 v4.0.0-rc.5 h1:JVliQq9EGOYaTgMi+k8BhUJyqcGk4ZqeuiN1Cirba9c=
+go.yaml.in/yaml/v4 v4.0.0-rc.5/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
-golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
+golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
+golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 h1:jiDhWWeC7jfWqR9c/uplMOqJ0sbNlNWv0UkzE0vX1MA=
golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90/go.mod h1:xE1HEv6b+1SCZ5/uscMRjUBKtIxworgEcEi+/n9NQDQ=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM=
-golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU=
+golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
+golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
-golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
+golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
+golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
-golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
+golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
+golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -220,39 +220,39 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
-golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
+golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
-golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
+golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc=
+golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
-golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
+golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
+golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c=
-golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
+golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8=
+golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
-google.golang.org/api v0.281.0 h1:sohYgszGGg3zC0P6ncdV6J9IOBtN9LVfFKz8C9tTtJU=
-google.golang.org/api v0.281.0/go.mod h1:6Wssta4c5n9qHq5CBhmlai5h/PUa1djdDAIhYEHyvcM=
+google.golang.org/api v0.285.0 h1:B7eHHoKGAX/LrPkQvhQqnGwjgWxofbdGwCTQvpm8FkM=
+google.golang.org/api v0.285.0/go.mod h1:NlOlUIr8MPoIhT9Bb/oUnRuHbJOLwxb6JSYJM8Yz+jQ=
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgnawEVsOn6OFsnpyxNPRY9QV01dNB0=
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I=
google.golang.org/genproto/googleapis/api v0.0.0-20260406210006-6f92a3bedf2d h1:/aDRtSZJjyLQzm75d+a1wOJaqyKBMvIAfeQmoa3ORiI=
google.golang.org/genproto/googleapis/api v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:etfGUgejTiadZAUaEP14NP97xi1RGeawqkjDARA/UOs=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 h1:PvEgGJf9C/1u5CHkInMg7UFYYUoiaQmW2LbtH0pjB78=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ=
google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
diff --git a/internal/cli/cli.go b/internal/cli/cli.go
index 44bf393..3498cb8 100644
--- a/internal/cli/cli.go
+++ b/internal/cli/cli.go
@@ -19,5 +19,6 @@ func NewCommand(l *slog.Logger) *cobra.Command {
NewTypeScript(l),
NewVersion(l),
)
+
return root
}
diff --git a/pkg/config/mixpanel.go b/pkg/config/mixpanel.go
index f73e0f7..3336604 100644
--- a/pkg/config/mixpanel.go
+++ b/pkg/config/mixpanel.go
@@ -16,6 +16,7 @@ type (
ServerContainer MixpanelServerContainer `json:"serverContainer" yaml:"serverContainer"`
}
MixpanelServerContainer struct {
+ UserID string `json:"userId" yaml:"userId"`
// Set events
Set contemplate.Config `json:"set" yaml:"set"`
// SetOnce events
@@ -24,7 +25,5 @@ type (
Reset contemplate.Config `json:"reset" yaml:"reset"`
// Track events
Track contemplate.Config `json:"track" yaml:"track"`
- // Identify events
- Identify contemplate.Config `json:"identify" yaml:"identify"`
}
)
diff --git a/pkg/provider/mixpanel/server.go b/pkg/provider/mixpanel/server.go
index 4775d93..7978759 100644
--- a/pkg/provider/mixpanel/server.go
+++ b/pkg/provider/mixpanel/server.go
@@ -43,6 +43,11 @@ func Server(ctx context.Context, l *slog.Logger, tm *tagmanager.TagManager, cfg
return err
}
+ userID, err := tm.UpsertVariable(ctx, folder, variable.NewEventData(cfg.ServerContainer.UserID))
+ if err != nil {
+ return err
+ }
+
{ // create set tags
eventParameters, err := utils.LoadEventParams(ctx, cfg.ServerContainer.Set)
if err != nil {
@@ -80,7 +85,7 @@ func Server(ctx context.Context, l *slog.Logger, tm *tagmanager.TagManager, cfg
return errors.Wrap(err, "failed to upsert event trigger: "+event)
}
- if _, err := tm.UpsertTag(ctx, folder, servertagx.NewSet(event, projectToken, template, eventParams, eventTrigger)); err != nil {
+ if _, err := tm.UpsertTag(ctx, folder, servertagx.NewSet(event, projectToken, userID, template, eventParams, eventTrigger)); err != nil {
return err
}
}
@@ -123,7 +128,7 @@ func Server(ctx context.Context, l *slog.Logger, tm *tagmanager.TagManager, cfg
return errors.Wrap(err, "failed to upsert event trigger: "+event)
}
- if _, err := tm.UpsertTag(ctx, folder, servertagx.NewSetOnce(event, projectToken, template, eventParams, eventTrigger)); err != nil {
+ if _, err := tm.UpsertTag(ctx, folder, servertagx.NewSetOnce(event, projectToken, userID, template, eventParams, eventTrigger)); err != nil {
return err
}
}
@@ -199,45 +204,7 @@ func Server(ctx context.Context, l *slog.Logger, tm *tagmanager.TagManager, cfg
return errors.Wrap(err, "failed to upsert event trigger: "+event)
}
- if _, err := tm.UpsertTag(ctx, folder, servertagx.NewTrack(event, projectToken, template, eventParams, eventTrigger)); err != nil {
- return err
- }
- }
- }
-
- { // create reset tags
- eventParameters, err := utils.LoadEventParams(ctx, cfg.ServerContainer.Identify)
- if err != nil {
- return err
- }
-
- for event := range eventParameters {
- var eventTriggerOpts []trigger.EventOption
-
- if cfg.GoogleConsent.Enabled {
- if err := googleconsent.ServerEnsure(ctx, tm); err != nil {
- return err
- }
-
- consentVariable, err := tm.LookupVariable(ctx, googleconsentvariable.GoogleConsentModeName(cfg.GoogleConsent.Mode))
- if err != nil {
- return err
- }
-
- eventTriggerOpts = append(eventTriggerOpts, trigger.EventWithConsentMode(consentVariable))
- }
-
- eventTrigger, err := tm.UpsertTrigger(ctx, folder, trigger.NewEvent(event, eventTriggerOpts...))
- if err != nil {
- return errors.Wrap(err, "failed to upsert event trigger: "+event)
- }
-
- userID, err := tm.UpsertVariable(ctx, gtmFolder, variable.NewEventData("user_id"))
- if err != nil {
- return err
- }
-
- if _, err := tm.UpsertTag(ctx, folder, servertagx.NewIdentify(event, userID, projectToken, template, eventTrigger)); err != nil {
+ if _, err := tm.UpsertTag(ctx, folder, servertagx.NewTrack(event, projectToken, userID, template, eventParams, eventTrigger)); err != nil {
return err
}
}
diff --git a/pkg/provider/mixpanel/server/tag/identify.go b/pkg/provider/mixpanel/server/tag/identify.go
deleted file mode 100644
index 75209c6..0000000
--- a/pkg/provider/mixpanel/server/tag/identify.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package tag
-
-import (
- "github.com/foomo/sesamy-cli/pkg/utils"
- "google.golang.org/api/tagmanager/v2"
-)
-
-func IdentifyName(v string) string {
- return "Mixpanel Identify - " + v
-}
-
-func NewIdentify(name string, identifier, projectToken *tagmanager.Variable, template *tagmanager.CustomTemplate, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
- return &tagmanager.Tag{
- FiringTriggerId: utils.TriggerIDs(triggers),
- Name: IdentifyName(name),
- TagFiringOption: "oncePerEvent",
- Parameter: []*tagmanager.Parameter{
- {
- Key: "serverEU",
- Type: "boolean",
- Value: "true",
- },
- {
- Key: "logType",
- Type: "template",
- Value: "debug",
- },
- {
- Key: "identifier",
- Type: "template",
- Value: "{{" + identifier.Name + "}}",
- },
- {
- Key: "identifyAuto",
- Type: "boolean",
- Value: "true",
- },
- {
- Key: "type",
- Type: "template",
- Value: "reset",
- },
- {
- Key: "token",
- Type: "template",
- Value: "{{" + projectToken.Name + "}}",
- },
- },
- Type: utils.TemplateType(template),
- }
-}
diff --git a/pkg/provider/mixpanel/server/tag/reset.go b/pkg/provider/mixpanel/server/tag/reset.go
index 70d2383..d26b21c 100644
--- a/pkg/provider/mixpanel/server/tag/reset.go
+++ b/pkg/provider/mixpanel/server/tag/reset.go
@@ -21,9 +21,9 @@ func NewReset(name string, projectToken *tagmanager.Variable, template *tagmanag
Value: "true",
},
{
- Key: "logType",
+ Key: "analyticsStorageConsent",
Type: "template",
- Value: "debug",
+ Value: "optional",
},
{
Key: "type",
diff --git a/pkg/provider/mixpanel/server/tag/set.go b/pkg/provider/mixpanel/server/tag/set.go
index d46a888..6ed1679 100644
--- a/pkg/provider/mixpanel/server/tag/set.go
+++ b/pkg/provider/mixpanel/server/tag/set.go
@@ -12,7 +12,7 @@ func SetName(v string) string {
return "Mixpanel Set - " + v
}
-func NewSet(name string, projectToken *tagmanager.Variable, template *tagmanager.CustomTemplate, params map[string]*tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
+func NewSet(name string, projectToken, userID *tagmanager.Variable, template *tagmanager.CustomTemplate, params map[string]*tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
parameter := []*tagmanager.Parameter{
{
Key: "serverEU",
@@ -20,9 +20,14 @@ func NewSet(name string, projectToken *tagmanager.Variable, template *tagmanager
Value: "true",
},
{
- Key: "logType",
+ Key: "idMergeApi",
Type: "template",
- Value: "debug",
+ Value: "simplified",
+ },
+ {
+ Key: "analyticsStorageConsent",
+ Type: "template",
+ Value: "optional",
},
{
Key: "identifyAuto",
@@ -44,6 +49,11 @@ func NewSet(name string, projectToken *tagmanager.Variable, template *tagmanager
Type: "template",
Value: "{{" + projectToken.Name + "}}",
},
+ {
+ Key: "userId",
+ Type: "template",
+ Value: "{{" + userID.Name + "}}",
+ },
{
Key: "trackFromVariable",
Type: "boolean",
diff --git a/pkg/provider/mixpanel/server/tag/setonce.go b/pkg/provider/mixpanel/server/tag/setonce.go
index e124d86..3474027 100644
--- a/pkg/provider/mixpanel/server/tag/setonce.go
+++ b/pkg/provider/mixpanel/server/tag/setonce.go
@@ -12,7 +12,7 @@ func SetOnceName(v string) string {
return "Mixpanel SetOnce - " + v
}
-func NewSetOnce(name string, projectToken *tagmanager.Variable, template *tagmanager.CustomTemplate, params map[string]*tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
+func NewSetOnce(name string, projectToken, userID *tagmanager.Variable, template *tagmanager.CustomTemplate, params map[string]*tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
parameter := []*tagmanager.Parameter{
{
Key: "serverEU",
@@ -20,9 +20,14 @@ func NewSetOnce(name string, projectToken *tagmanager.Variable, template *tagman
Value: "true",
},
{
- Key: "logType",
+ Key: "idMergeApi",
Type: "template",
- Value: "debug",
+ Value: "simplified",
+ },
+ {
+ Key: "analyticsStorageConsent",
+ Type: "template",
+ Value: "optional",
},
{
Key: "identifyAuto",
@@ -44,6 +49,11 @@ func NewSetOnce(name string, projectToken *tagmanager.Variable, template *tagman
Type: "template",
Value: "{{" + projectToken.Name + "}}",
},
+ {
+ Key: "userId",
+ Type: "template",
+ Value: "{{" + userID.Name + "}}",
+ },
{
Key: "trackFromVariable",
Type: "boolean",
diff --git a/pkg/provider/mixpanel/server/tag/track.go b/pkg/provider/mixpanel/server/tag/track.go
index 5a6f49c..9d82b0a 100644
--- a/pkg/provider/mixpanel/server/tag/track.go
+++ b/pkg/provider/mixpanel/server/tag/track.go
@@ -12,7 +12,7 @@ func TrackName(v string) string {
return "Mixpanel Track - " + v
}
-func NewTrack(name string, projectToken *tagmanager.Variable, template *tagmanager.CustomTemplate, params map[string]*tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
+func NewTrack(name string, projectToken, userID *tagmanager.Variable, template *tagmanager.CustomTemplate, params map[string]*tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
parameter := []*tagmanager.Parameter{
{
Key: "serverEU",
@@ -20,9 +20,14 @@ func NewTrack(name string, projectToken *tagmanager.Variable, template *tagmanag
Value: "true",
},
{
- Key: "logType",
+ Key: "idMergeApi",
Type: "template",
- Value: "debug",
+ Value: "simplified",
+ },
+ {
+ Key: "analyticsStorageConsent",
+ Type: "template",
+ Value: "optional",
},
{
Key: "trackCommonData",
@@ -49,6 +54,11 @@ func NewTrack(name string, projectToken *tagmanager.Variable, template *tagmanag
Type: "template",
Value: "{{" + projectToken.Name + "}}",
},
+ {
+ Key: "userId",
+ Type: "template",
+ Value: "{{" + userID.Name + "}}",
+ },
{
Key: "trackFromVariable",
Type: "boolean",
diff --git a/sesamy.schema.json b/sesamy.schema.json
index 61ef825..6fc9ad8 100644
--- a/sesamy.schema.json
+++ b/sesamy.schema.json
@@ -725,6 +725,9 @@
},
"github.com.foomo.sesamy-cli.pkg.config.MixpanelServerContainer": {
"properties": {
+ "userId": {
+ "type": "string"
+ },
"set": {
"$ref": "#/$defs/github.com.foomo.gocontemplate.pkg.contemplate.Config",
"description": "Set events"
@@ -740,10 +743,6 @@
"track": {
"$ref": "#/$defs/github.com.foomo.gocontemplate.pkg.contemplate.Config",
"description": "Track events"
- },
- "identify": {
- "$ref": "#/$defs/github.com.foomo.gocontemplate.pkg.contemplate.Config",
- "description": "Identify events"
}
},
"additionalProperties": false,
diff --git a/sesamy.yaml b/sesamy.yaml
index 9201983..2d60b77 100644
--- a/sesamy.yaml
+++ b/sesamy.yaml
@@ -456,6 +456,8 @@ mixpanel:
mode: analytics_storage
# Google Tag Manager server container settings
serverContainer:
+ # User id event data property
+ userId: 'user_id'
# Track events
track:
# Directory containing the go.mod file