@reachy/audience-module 1.0.18 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.gitlab/merge_request_templates/Default.md +31 -0
  2. package/.gitlab-ci.yml +59 -49
  3. package/CLAUDE.md +134 -0
  4. package/dist/AudienceModule.d.ts.map +1 -1
  5. package/dist/AudienceModule.js +1 -0
  6. package/dist/AudienceModule.js.map +1 -1
  7. package/dist/engine/V2AudienceEngine.d.ts +5 -0
  8. package/dist/engine/V2AudienceEngine.d.ts.map +1 -1
  9. package/dist/engine/V2AudienceEngine.js +210 -72
  10. package/dist/engine/V2AudienceEngine.js.map +1 -1
  11. package/dist/executors/ClickHouseEventQueryExecutor.d.ts +23 -0
  12. package/dist/executors/ClickHouseEventQueryExecutor.d.ts.map +1 -0
  13. package/dist/executors/ClickHouseEventQueryExecutor.js +803 -0
  14. package/dist/executors/ClickHouseEventQueryExecutor.js.map +1 -0
  15. package/dist/repositories/SupabaseContactRepository.d.ts +1 -0
  16. package/dist/repositories/SupabaseContactRepository.d.ts.map +1 -1
  17. package/dist/repositories/SupabaseContactRepository.js +1 -0
  18. package/dist/repositories/SupabaseContactRepository.js.map +1 -1
  19. package/dist/types/index.d.ts +1 -0
  20. package/dist/types/index.d.ts.map +1 -1
  21. package/jest.config.js +8 -0
  22. package/package.json +7 -2
  23. package/src/AudienceModule.ts +1 -0
  24. package/src/__tests__/AudienceModule.test.ts +382 -0
  25. package/src/__tests__/CriteriaParser.test.ts +130 -0
  26. package/src/__tests__/QueryBuilder.test.ts +198 -0
  27. package/src/__tests__/RfmEngine.test.ts +284 -0
  28. package/src/__tests__/RfmSegmentBuilder.test.ts +210 -0
  29. package/src/__tests__/StaticAudienceExecutor.test.ts +134 -0
  30. package/src/__tests__/SupabaseContactRepository.test.ts +81 -0
  31. package/src/engine/V2AudienceEngine.ts +240 -85
  32. package/src/executors/ClickHouseEventQueryExecutor.ts +853 -0
  33. package/src/repositories/SupabaseContactRepository.ts +2 -1
  34. package/src/types/index.ts +6 -0
@@ -0,0 +1,31 @@
1
+ ## Descrição
2
+
3
+ <!-- Descreva de forma clara o que foi feito e por quê -->
4
+
5
+
6
+
7
+ ## Tipo de mudança
8
+
9
+ - [ ] 🐛 Bug fix
10
+ - [ ] ✨ Nova funcionalidade
11
+ - [ ] ♻️ Refatoração
12
+ - [ ] 📦 Dependências
13
+ - [ ] ⚙️ CI/CD
14
+ - [ ] 📝 Documentação
15
+
16
+ ## O que foi alterado
17
+
18
+ -
19
+ -
20
+
21
+ ## Como testar
22
+
23
+ 1.
24
+ 2.
25
+
26
+ ## Checklist
27
+
28
+ - [ ] Código segue os padrões do projeto
29
+ - [ ] Testei localmente e funciona
30
+ - [ ] Não introduz breaking changes
31
+ - [ ] Commits seguem Conventional Commits
package/.gitlab-ci.yml CHANGED
@@ -1,60 +1,49 @@
1
1
  image: node:20
2
2
 
3
+ workflow:
4
+ rules:
5
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
6
+ - if: '$CI_COMMIT_BRANCH == "main"'
7
+ - if: '$CI_COMMIT_BRANCH'
8
+ when: always
9
+
3
10
  variables:
4
11
  GIT_DEPTH: 0
5
12
  GIT_STRATEGY: fetch
6
13
 
14
+ include:
15
+ # Módulos de qualidade
16
+ - project: 'kontrole1/cicd/pipeline'
17
+ file: 'ci/templates/claude-review.yml'
18
+ ref: 'main'
19
+ - project: 'kontrole1/cicd/pipeline'
20
+ file: 'ci/templates/mr-description-check.yml'
21
+ ref: 'main'
22
+ - project: 'kontrole1/cicd/pipeline'
23
+ file: 'ci/templates/commit-lint.yml'
24
+ ref: 'main'
25
+ - project: 'kontrole1/cicd/pipeline'
26
+ file: 'ci/templates/security.yml'
27
+ ref: 'main'
28
+ - project: 'kontrole1/cicd/pipeline'
29
+ file: 'ci/templates/review-gate.yml'
30
+ ref: 'main'
31
+ - project: 'kontrole1/cicd/pipeline'
32
+ file: 'ci/templates/approval-check.yml'
33
+ ref: 'main'
34
+ - project: 'kontrole1/cicd/pipeline'
35
+ file: 'ci/templates/notifications.yml'
36
+ ref: 'main'
37
+
7
38
  stages:
39
+ - .pre
40
+ - review
8
41
  - test
9
42
  - build
10
43
  - tag
11
44
  - publish
12
45
  - notify
13
46
 
14
- .slack-notify-template:
15
- image: alpine:3.20
16
- before_script:
17
- - apk add --no-cache curl jq
18
- - |
19
- slack_post () {
20
- [ -z "${SLACK_WEBHOOK_URL:-}" ] && { echo "SLACK_WEBHOOK_URL não configurada; pulando notificação."; return 0; }
21
- local color="$1" title="$2" emoji="$3" msg="$4"
22
- local short_sha="${CI_COMMIT_SHA:0:8}"
23
- [ -f build_info.env ] && set -a && . build_info.env && set +a || true
24
- payload="$(
25
- jq -n \
26
- --arg ch "${SLACK_CHANNEL:-}" \
27
- --arg color "$color" --arg title "$title" --arg emoji "$emoji" \
28
- --arg project "$CI_PROJECT_PATH" --arg branch "$CI_COMMIT_REF_NAME" \
29
- --arg sha "$short_sha" --arg actor "${GITLAB_USER_NAME:-ci}" \
30
- --arg job_url "$CI_JOB_URL" --arg pipe_url "$CI_PIPELINE_URL" \
31
- --arg image "${NEW_IMAGE:-${IMAGE_REPO:-}<unknown>:${IMAGE_TAG:-}}" \
32
- --arg service "${PORTAINER_SERVICE_NAME:-<desconhecido>}" \
33
- --arg msg "$msg" '
34
- def base:
35
- { attachments: [ { color: $color, blocks: [
36
- { "type":"header", "text": { "type":"plain_text", "text": ($emoji+" "+$title) } },
37
- { "type":"section", "fields": [
38
- { "type":"mrkdwn", "text": ("*Projeto:*\n"+$project) },
39
- { "type":"mrkdwn", "text": ("*Branch:*\n"+$branch) },
40
- { "type":"mrkdwn", "text": ("*Commit:*\n"+$sha) },
41
- { "type":"mrkdwn", "text": ("*Autor:*\n"+$actor) },
42
- { "type":"mrkdwn", "text": ("*Serviço:*\n"+$service) },
43
- { "type":"mrkdwn", "text": ("*Imagem:*\n"+$image) }
44
- ] },
45
- { "type":"actions", "elements": [
46
- { "type":"button", "text": { "type":"plain_text","text":"Ver Job" }, "url": $job_url },
47
- { "type":"button", "text": { "type":"plain_text","text":"Ver Pipeline" }, "url": $pipe_url }
48
- ] }
49
- ] } ] };
50
- def add_msg(obj):
51
- if ($msg|length) > 0 then obj | .attachments[0].blocks += [ { "type":"context", "elements":[ { "type":"mrkdwn", "text": $msg } ] } ] else obj end;
52
- base | (if ($ch|length) > 0 then . + {channel:$ch} else . end) | add_msg(.)
53
- '
54
- )"
55
- curl -sS -X POST -H 'Content-type: application/json' --data "$payload" "$SLACK_WEBHOOK_URL" >/dev/null || true
56
- }
57
-
58
47
  default:
59
48
  cache:
60
49
  key: ${CI_COMMIT_REF_SLUG}
@@ -65,6 +54,17 @@ default:
65
54
  tags:
66
55
  - docker
67
56
 
57
+ # Security scans
58
+ sast:
59
+ extends: .sast-scan
60
+
61
+ dependency-scan:
62
+ extends: .dependency-scan
63
+
64
+ secret-detection:
65
+ extends: .secret-detection
66
+
67
+ # Pipeline original preservada
68
68
  lint_and_test:
69
69
  stage: test
70
70
  script:
@@ -104,7 +104,7 @@ create_tag:
104
104
  - |
105
105
  AUTH_USER="oauth2"
106
106
  AUTH_TOKEN="$GITLAB_TOKEN"
107
- REPO_URL="https://${AUTH_USER}:${AUTH_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"
107
+ REPO_URL="${CI_SERVER_PROTOCOL}://${AUTH_USER}:${AUTH_TOKEN}@${CI_SERVER_HOST}${CI_SERVER_PORT:+:$CI_SERVER_PORT}/${CI_PROJECT_PATH}.git"
108
108
  git tag "$TAG"
109
109
  - git push "$REPO_URL" "$TAG"
110
110
  rules:
@@ -124,15 +124,25 @@ publish_npm:
124
124
  when: manual
125
125
  allow_failure: false
126
126
 
127
+ # Notificação unificada (Slack + Roam)
127
128
  notify:publish:
128
- stage: notify
129
- extends: [.slack-notify-template]
129
+ extends: .notify-success
130
130
  needs:
131
131
  - job: publish_npm
132
+ script:
133
+ - VERSION=$(jq -r '.version' package.json 2>/dev/null || echo "?")
134
+ - notify_all "#2EB67D" "Publicação npm @reachy/audience-module v${VERSION}" "✅" "Pacote publicado a partir da main."
132
135
  rules:
133
136
  - if: '$CI_COMMIT_BRANCH == "main"'
134
137
  when: on_success
135
138
  - when: never
139
+
140
+ notify:failure:pipeline:
141
+ extends: .notify-failure
142
+ needs: []
136
143
  script:
137
- - VERSION=$(jq -r '.version' package.json)
138
- - slack_post "#2EB67D" "Publicação npm concluída" ":white_check_mark:" "Pacote publicado a partir do branch main. Versão \`${VERSION}\`."
144
+ - notify_all "#E01E5A" "Pipeline Audience Module falhou" "❌" ""
145
+ rules:
146
+ - if: '$CI_COMMIT_BRANCH == "main"'
147
+ when: on_failure
148
+ - when: never
package/CLAUDE.md ADDED
@@ -0,0 +1,134 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Build & Development
6
+
7
+ ```bash
8
+ npm run build # Compile TypeScript → dist/
9
+ npm run watch # Compile with --watch for dev
10
+ npm run clean # Remove dist/
11
+ npx tsc --noEmit # Type-check without emitting
12
+ ```
13
+
14
+ No test framework or linter is configured. CI is GitLab (`.gitlab-ci.yml`): lint_and_test → build → tag → publish_npm (manual).
15
+
16
+ Published as `@reachy/audience-module` on npm (v1.0.19). Peer dependency: `@supabase/supabase-js ^2.x`.
17
+
18
+ ## Architecture
19
+
20
+ Standalone npm package that evaluates audience segmentation criteria against contacts and events. Consumed by `reachy-api` and other Reachy services.
21
+
22
+ ### Execution flow
23
+
24
+ ```
25
+ AudienceModule (facade)
26
+ → CriteriaParser.parse() — normalizes V1/V2/conditions into groups format
27
+ → CriteriaParser.getAudienceType() — 'static' or 'live'
28
+
29
+ ├─ Static: StaticAudienceExecutor → SupabaseContactRepository → V2AudienceEngine
30
+ └─ Live: MemberRepository.listMembers() (injected)
31
+ ```
32
+
33
+ **V2AudienceEngine** (~2200 lines) is the core. It evaluates groups of rules:
34
+ - **Property rules** (`kind='property'`) — query `contacts` table via Supabase
35
+ - **Event rules** (`kind='event'`) — routed to `ClickHouseEventQueryExecutor` when available, falls back to paginated Supabase + JS aggregation
36
+
37
+ ### Criteria formats
38
+
39
+ Three formats supported (CriteriaParser normalizes all to V2 groups via `coerceCriteriaToGroups`):
40
+ - `groups[]` — V2 preferred. Rules have `kind`, `eventName`, `field`, `op`, `frequency`, `attributes`, `time`, `negate`, `interest`, `filters[]`
41
+ - `filters[]` — V1 legacy. Special: `field='event'` becomes event rule; `field='custom_field'` uses `customFieldKey`
42
+ - `conditions[]` — normalized legacy
43
+
44
+ Live audience types: `live-actions`, `live-page-visit`, `live-referrer`, `live-page-count`. Everything else is `static`.
45
+
46
+ ### Database backends
47
+
48
+ - **Supabase (PostgreSQL)**: contacts, properties (JSONB), project settings. Always required.
49
+ - **ClickHouse** (optional): event queries. Replaces N paginated Supabase queries with single aggregation queries. Enabled via `clickhouseClient` in `AudienceBuilderConfig`.
50
+
51
+ ### Key tables
52
+
53
+ - `contacts` — `id`, `reachy_id`, `email`, `properties` (JSONB for custom fields), `is_subscribed`, `created_at`, `updated_at`
54
+ - `contact_events` — `contact_id`, `reachy_id`, `event_name`, `event_data` (JSON), `event_timestamp`, keyed by `organization_id + project_id + event_name`. Also has denormalized columns: `current_url`, `domain`, `path`, `referrer`, `page_title`, `utm_*`, `session_id`, `session_is_new`
55
+ - `projects` — `settings.timezone` (IANA timezone string)
56
+
57
+ ## V2AudienceEngine internals
58
+
59
+ ### Identity resolution (3-tier fallback)
60
+
61
+ Event rows are resolved to contact UUIDs in this order:
62
+ 1. `row.reachy_id` → lookup in `reachyIdToContactId` map
63
+ 2. `row.contact_id` → validate against `allContactIds` set
64
+ 3. Email from `event_data` (checks: `email`, `user_email`, `userEmail`, `contact_email`, `contactEmail`) → lookup in `emailToContactId`
65
+
66
+ Identity maps are lazy-loaded: only when criteria has event rules or negate rules.
67
+
68
+ ### Property rules — JSONB patterns
69
+
70
+ Known columns (`email`, `first_name`, `last_name`, `phone`, `is_subscribed`, `created_at`, `updated_at`, `name`) query directly. Unknown fields use `properties->>{field}`.
71
+
72
+ Three special handling paths for JSONB fields:
73
+ - **Numeric JSONB** (`shouldNumericJsonb`): When operator is `>`, `>=`, `<`, `<=`, `between` — fetches `id, properties`, then compares in JS (Supabase JSONB numeric comparison is unreliable)
74
+ - **Negation JSONB** (`shouldManualJsonbNegation`): `not_equals`/`not_contains` on JSONB — fetches all, filters in JS (handles null semantics correctly)
75
+ - **is_not_empty on JSONB**: Uses `filter(propertyObj, 'cs', '{"keyName":')` to check key existence in JSON object
76
+
77
+ ### Event rules — evaluation paths
78
+
79
+ ClickHouse executor has 4 optimized paths:
80
+ 1. **First Time**: `GROUP BY contact_id HAVING min(event_timestamp) >= window_start`
81
+ 2. **Last Time**: `GROUP BY contact_id HAVING max(event_timestamp) <= window_end`
82
+ 3. **Pure Frequency**: `GROUP BY contact_id` with `count()`/`sum()`/`avg()` + `HAVING`
83
+ 4. **Fetch & Process**: Fetch rows, apply in-memory filters (time_of_day, day_of_week, day_of_month, event_property, interest)
84
+
85
+ Supabase fallback: paginated `fetchAll()` + JS aggregation. First/last time uses chunked N+1 pattern (500 IDs per chunk, separate queries for `contact_id` and `reachy_id`).
86
+
87
+ ### Live presets
88
+
89
+ - `live-page-visit`: Filters on `path`/`current_url` ILIKE + `domain` ILIKE
90
+ - `live-referrer`: `session_is_new=true` + referrer/UTM ILIKE
91
+ - `live-page-count`: In-memory count threshold
92
+
93
+ ### Interest feature
94
+
95
+ - **predominantly**: Contact included if matching value count >= any other single value count
96
+ - **at_least X%**: Contact included if matching_count / total >= threshold
97
+
98
+ ### Group evaluation strategy
99
+
100
+ - **OR groups**: All rules run in parallel (`Promise.all`), results unioned
101
+ - **AND/NOT groups**: Sequential with early exit on empty set
102
+ - **Between groups**: If all combine with OR, run in parallel; otherwise sequential with early exit
103
+ - Single-contact evaluation (`matchesContact`) also has early exits: AND+false→false, OR+true→true
104
+
105
+ ## Performance safeguards
106
+
107
+ | Context | Max rows | Location |
108
+ |---------|----------|----------|
109
+ | Supabase contacts fetch | 500,000 | V2AudienceEngine `fetchAll` default |
110
+ | Supabase event queries | 200,000 | V2AudienceEngine `MAX_EVENT_ROWS` |
111
+ | ClickHouse fetch queries | 200,000 | ClickHouseEventQueryExecutor `MAX_FETCH_ROWS` |
112
+ | first/last_time boundary | 50,000 per chunk | V2AudienceEngine offset guard |
113
+
114
+ - **Timezone cache**: Static `_tzCache` with 5-min TTL, keyed by `orgId:projectId`
115
+ - **Lazy contact loading**: Identity maps only loaded when needed (event rules or negate)
116
+ - **Minimal SELECT**: Event queries select only needed fields (`contact_id, reachy_id` base; add `event_data`/`event_timestamp` only when required)
117
+ - **Set operations optimized**: `intersect` iterates smaller set; no intermediate array allocations
118
+
119
+ ## Security
120
+
121
+ - **ClickHouse**: All user values via `query_params` (`{param:Type}` syntax). Field expressions validated with `^[a-zA-Z0-9_]+$` allowlist.
122
+ - **Supabase**: Uses PostgREST query builder (parameterized by default).
123
+
124
+ ## RFM Engine
125
+
126
+ `RfmEngine` computes Recency-Frequency scores (1-5 each) using percentile cuts (20th/40th/60th/80th). 10 segments: Champions, Loyal Users, Potential Loyalists, New Users, Promising, Needing Attention, About to Sleep, Cannot Lose Them, At Risk, Hibernating.
127
+
128
+ `RfmSegmentBuilder` converts RFM thresholds into executable audience criteria (groups format with event rules + frequency filters).
129
+
130
+ ## Field mapping reference
131
+
132
+ `mapAudienceFieldToContactField`: `name`→`first_name`. All other known fields map to themselves. Unknown fields fall through to `properties->>{field}`.
133
+
134
+ Date normalization (`normalizeDateBoundary`): Accepts `YYYY-MM-DD`, `DD/MM/YYYY`, ISO timestamps. Start boundary → `00:00:00Z`. End boundary → start of next day (exclusive `.lt()`).
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceModule.d.ts","sourceRoot":"","sources":["../src/AudienceModule.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAuBhB,qBAAa,cAAc;IACzB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAwB;gBAElC,MAAM,GAAE,qBAA0B;IA2B9C,eAAe,CAAC,YAAY,EAAE;QAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAA;QACvB,kBAAkB,CAAC,EAAE,GAAG,CAAA;QACxB,gBAAgB,CAAC,EAAE,GAAG,CAAA;KACvB;IAoBK,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;IAc7B,eAAe,CACnB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC;IAQZ,aAAa,CACjB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAiBjB,cAAc,CAClB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAgCb,cAAc,CAAC,IAAI,EAAE,kBAAkB;;;;IA8BvC,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM;;;;IAmCb,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAUrE,cAAc,CAAC,EAAE,EAAE,MAAM;IAc/B,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAiCjD,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,UAAU,GAAG,UAAuB;IAkBxC,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAqBhD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;;;;IAQpD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM;YAYzD,gBAAgB;CA6B/B"}
1
+ {"version":3,"file":"AudienceModule.d.ts","sourceRoot":"","sources":["../src/AudienceModule.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAuBhB,qBAAa,cAAc;IACzB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAwB;gBAElC,MAAM,GAAE,qBAA0B;IA4B9C,eAAe,CAAC,YAAY,EAAE;QAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAA;QACvB,kBAAkB,CAAC,EAAE,GAAG,CAAA;QACxB,gBAAgB,CAAC,EAAE,GAAG,CAAA;KACvB;IAoBK,YAAY,CAChB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;IAc7B,eAAe,CACnB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC;IAQZ,aAAa,CACjB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAiBjB,cAAc,CAClB,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EACnC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAgCb,cAAc,CAAC,IAAI,EAAE,kBAAkB;;;;IA8BvC,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM;;;;IAmCb,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAUrE,cAAc,CAAC,EAAE,EAAE,MAAM;IAc/B,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAiCjD,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,UAAU,GAAG,UAAuB;IAkBxC,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAqBhD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;;;;IAQpD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM;YAYzD,gBAAgB;CA6B/B"}
@@ -10,6 +10,7 @@ class AudienceModule {
10
10
  if (config.supabaseClient) {
11
11
  const repo = new SupabaseContactRepository_1.SupabaseContactRepository({
12
12
  supabaseClient: config.supabaseClient,
13
+ clickhouseClient: config.clickhouseClient,
13
14
  debug: !!config.enableDebugLogs,
14
15
  logger: console
15
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceModule.js","sourceRoot":"","sources":["../src/AudienceModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudienceModule.js","sourceRoot":"","sources":["../src/AudienceModule.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,16 @@ export declare class V2AudienceEngine {
7
7
  private supabase;
8
8
  private debug;
9
9
  private logger;
10
+ private chExecutor;
11
+ private static _tzCache;
12
+ private static TZ_CACHE_TTL;
10
13
  constructor(params: {
11
14
  supabaseClient: any;
15
+ clickhouseClient?: any;
12
16
  debug?: boolean;
13
17
  logger?: Logger;
14
18
  });
19
+ private getProjectTimezone;
15
20
  getContactIdsByAudienceCriteriaV2(organizationId: string, projectId: string, criteriaRaw: any): Promise<Set<string>>;
16
21
  matchesContactByAudienceCriteriaV2(organizationId: string, projectId: string, criteriaRaw: any, contactId: string): Promise<boolean>;
17
22
  private dlog;
@@ -1 +1 @@
1
- {"version":3,"file":"V2AudienceEngine.d.ts","sourceRoot":"","sources":["../../src/engine/V2AudienceEngine.ts"],"names":[],"mappings":"AAGA,KAAK,MAAM,GAAG;IACZ,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC7B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC9B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CAChC,CAAA;AAgRD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE;QAAE,cAAc,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAMvE,iCAAiC,CACrC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IA05BjB,kCAAkC,CACtC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAwqBnB,OAAO,CAAC,IAAI;CAIb"}
1
+ {"version":3,"file":"V2AudienceEngine.d.ts","sourceRoot":"","sources":["../../src/engine/V2AudienceEngine.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG;IACZ,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC7B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC9B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CAChC,CAAA;AAgRD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAA4C;IAE9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuD;IAC9E,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgB;gBAE/B,MAAM,EAAE;QAAE,cAAc,EAAE,GAAG,CAAC;QAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;YAUvF,kBAAkB;IAyB1B,iCAAiC,CACrC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAw/BjB,kCAAkC,CACtC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAmsBnB,OAAO,CAAC,IAAI;CAIb"}