posthog-node 5.8.8 → 5.9.0
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.
- package/dist/{index.d.ts → client.d.ts} +7 -378
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +481 -0
- package/dist/client.mjs +437 -0
- package/dist/entrypoints/index.edge.d.ts +6 -0
- package/dist/entrypoints/index.edge.d.ts.map +1 -0
- package/dist/entrypoints/index.edge.js +89 -0
- package/dist/entrypoints/index.edge.mjs +12 -0
- package/dist/entrypoints/index.node.d.ts +6 -0
- package/dist/entrypoints/index.node.d.ts.map +1 -0
- package/dist/entrypoints/index.node.js +99 -0
- package/dist/entrypoints/index.node.mjs +16 -0
- package/dist/exports.d.ts +4 -0
- package/dist/exports.d.ts.map +1 -0
- package/dist/exports.js +78 -0
- package/dist/exports.mjs +3 -0
- package/dist/extensions/error-tracking/autocapture.d.ts +4 -0
- package/dist/extensions/error-tracking/autocapture.d.ts.map +1 -0
- package/dist/extensions/error-tracking/autocapture.js +68 -0
- package/dist/extensions/error-tracking/autocapture.mjs +31 -0
- package/dist/extensions/error-tracking/chunk-ids.d.ts +5 -0
- package/dist/extensions/error-tracking/chunk-ids.d.ts.map +1 -0
- package/dist/extensions/error-tracking/chunk-ids.js +68 -0
- package/dist/extensions/error-tracking/chunk-ids.mjs +34 -0
- package/dist/extensions/error-tracking/context-lines.node.d.ts +5 -0
- package/dist/extensions/error-tracking/context-lines.node.d.ts.map +1 -0
- package/dist/extensions/error-tracking/context-lines.node.js +227 -0
- package/dist/extensions/error-tracking/context-lines.node.mjs +187 -0
- package/dist/extensions/error-tracking/error-conversion.d.ts +4 -0
- package/dist/extensions/error-tracking/error-conversion.d.ts.map +1 -0
- package/dist/extensions/error-tracking/error-conversion.js +183 -0
- package/dist/extensions/error-tracking/error-conversion.mjs +146 -0
- package/dist/extensions/error-tracking/get-module.node.d.ts +3 -0
- package/dist/extensions/error-tracking/get-module.node.d.ts.map +1 -0
- package/dist/extensions/error-tracking/get-module.node.js +57 -0
- package/dist/extensions/error-tracking/get-module.node.mjs +23 -0
- package/dist/extensions/error-tracking/index.d.ts +20 -0
- package/dist/extensions/error-tracking/index.d.ts.map +1 -0
- package/dist/extensions/error-tracking/index.js +97 -0
- package/dist/extensions/error-tracking/index.mjs +63 -0
- package/dist/extensions/error-tracking/reduceable-cache.d.ts +13 -0
- package/dist/extensions/error-tracking/reduceable-cache.d.ts.map +1 -0
- package/dist/extensions/error-tracking/reduceable-cache.js +57 -0
- package/dist/extensions/error-tracking/reduceable-cache.mjs +23 -0
- package/dist/extensions/error-tracking/stack-parser.d.ts +3 -0
- package/dist/extensions/error-tracking/stack-parser.d.ts.map +1 -0
- package/dist/extensions/error-tracking/stack-parser.js +148 -0
- package/dist/extensions/error-tracking/stack-parser.mjs +114 -0
- package/dist/extensions/error-tracking/type-checking.d.ts +8 -0
- package/dist/extensions/error-tracking/type-checking.d.ts.map +1 -0
- package/dist/extensions/error-tracking/type-checking.js +80 -0
- package/dist/extensions/error-tracking/type-checking.mjs +31 -0
- package/dist/extensions/error-tracking/types.d.ts +61 -0
- package/dist/extensions/error-tracking/types.d.ts.map +1 -0
- package/dist/extensions/error-tracking/types.js +43 -0
- package/dist/extensions/error-tracking/types.mjs +9 -0
- package/dist/extensions/express.d.ts +17 -0
- package/dist/extensions/express.d.ts.map +1 -0
- package/dist/extensions/express.js +61 -0
- package/dist/extensions/express.mjs +17 -0
- package/dist/extensions/feature-flags/crypto-helpers.d.ts +3 -0
- package/dist/extensions/feature-flags/crypto-helpers.d.ts.map +1 -0
- package/dist/extensions/feature-flags/crypto-helpers.js +77 -0
- package/dist/extensions/feature-flags/crypto-helpers.mjs +22 -0
- package/dist/extensions/feature-flags/crypto.d.ts +2 -0
- package/dist/extensions/feature-flags/crypto.d.ts.map +1 -0
- package/dist/extensions/feature-flags/crypto.js +47 -0
- package/dist/extensions/feature-flags/crypto.mjs +13 -0
- package/dist/extensions/feature-flags/feature-flags.d.ts +89 -0
- package/dist/extensions/feature-flags/feature-flags.d.ts.map +1 -0
- package/dist/extensions/feature-flags/feature-flags.js +529 -0
- package/dist/extensions/feature-flags/feature-flags.mjs +483 -0
- package/dist/extensions/feature-flags/lazy.d.ts +24 -0
- package/dist/extensions/feature-flags/lazy.d.ts.map +1 -0
- package/dist/extensions/feature-flags/lazy.js +60 -0
- package/dist/extensions/feature-flags/lazy.mjs +26 -0
- package/dist/extensions/sentry-integration.d.ts +54 -0
- package/dist/extensions/sentry-integration.d.ts.map +1 -0
- package/dist/extensions/sentry-integration.js +113 -0
- package/dist/extensions/sentry-integration.mjs +73 -0
- package/dist/storage-memory.d.ts +7 -0
- package/dist/storage-memory.d.ts.map +1 -0
- package/dist/storage-memory.js +46 -0
- package/dist/storage-memory.mjs +12 -0
- package/dist/types.d.ts +253 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.mjs +0 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +63 -0
- package/dist/utils/logger.mjs +29 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +36 -0
- package/dist/version.mjs +2 -0
- package/package.json +32 -31
- package/src/client.ts +1532 -0
- package/src/entrypoints/index.edge.ts +15 -0
- package/src/entrypoints/index.node.ts +17 -0
- package/src/exports.ts +3 -0
- package/src/extensions/error-tracking/autocapture.ts +65 -0
- package/src/extensions/error-tracking/chunk-ids.ts +58 -0
- package/src/extensions/error-tracking/context-lines.node.ts +392 -0
- package/src/extensions/error-tracking/error-conversion.ts +291 -0
- package/src/extensions/error-tracking/get-module.node.ts +57 -0
- package/src/extensions/error-tracking/index.ts +103 -0
- package/src/extensions/error-tracking/reduceable-cache.ts +39 -0
- package/src/extensions/error-tracking/stack-parser.ts +212 -0
- package/src/extensions/error-tracking/type-checking.ts +40 -0
- package/src/extensions/error-tracking/types.ts +71 -0
- package/src/extensions/express.ts +39 -0
- package/src/extensions/feature-flags/crypto-helpers.ts +36 -0
- package/src/extensions/feature-flags/crypto.ts +22 -0
- package/src/extensions/feature-flags/feature-flags.ts +1003 -0
- package/src/extensions/feature-flags/lazy.ts +55 -0
- package/src/extensions/sentry-integration.ts +216 -0
- package/src/storage-memory.ts +13 -0
- package/src/types.ts +294 -0
- package/src/utils/logger.ts +39 -0
- package/src/version.ts +1 -0
- package/dist/edge/index.cjs +0 -3150
- package/dist/edge/index.cjs.map +0 -1
- package/dist/edge/index.mjs +0 -3144
- package/dist/edge/index.mjs.map +0 -1
- package/dist/node/index.cjs +0 -3556
- package/dist/node/index.cjs.map +0 -1
- package/dist/node/index.mjs +0 -3550
- package/dist/node/index.mjs.map +0 -1
package/dist/client.mjs
ADDED
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
import { version } from "./version.mjs";
|
|
2
|
+
import { PostHogCoreStateless, getFeatureFlagValue, safeSetTimeout } from "@posthog/core";
|
|
3
|
+
import { FeatureFlagsPoller } from "./extensions/feature-flags/feature-flags.mjs";
|
|
4
|
+
import error_tracking from "./extensions/error-tracking/index.mjs";
|
|
5
|
+
import { isPlainObject } from "./extensions/error-tracking/type-checking.mjs";
|
|
6
|
+
import { PostHogMemoryStorage } from "./storage-memory.mjs";
|
|
7
|
+
import { createLogger } from "./utils/logger.mjs";
|
|
8
|
+
const MINIMUM_POLLING_INTERVAL = 100;
|
|
9
|
+
const THIRTY_SECONDS = 30000;
|
|
10
|
+
const MAX_CACHE_SIZE = 50000;
|
|
11
|
+
class PostHogBackendClient extends PostHogCoreStateless {
|
|
12
|
+
constructor(apiKey, options = {}){
|
|
13
|
+
super(apiKey, options), this._memoryStorage = new PostHogMemoryStorage();
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.logger = createLogger(this.logMsgIfDebug.bind(this));
|
|
16
|
+
this.options.featureFlagsPollingInterval = 'number' == typeof options.featureFlagsPollingInterval ? Math.max(options.featureFlagsPollingInterval, MINIMUM_POLLING_INTERVAL) : THIRTY_SECONDS;
|
|
17
|
+
if (options.personalApiKey) {
|
|
18
|
+
if (options.personalApiKey.includes('phc_')) throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');
|
|
19
|
+
const shouldEnableLocalEvaluation = false !== options.enableLocalEvaluation;
|
|
20
|
+
if (shouldEnableLocalEvaluation) this.featureFlagsPoller = new FeatureFlagsPoller({
|
|
21
|
+
pollingInterval: this.options.featureFlagsPollingInterval,
|
|
22
|
+
personalApiKey: options.personalApiKey,
|
|
23
|
+
projectApiKey: apiKey,
|
|
24
|
+
timeout: options.requestTimeout ?? 10000,
|
|
25
|
+
host: this.host,
|
|
26
|
+
fetch: options.fetch,
|
|
27
|
+
onError: (err)=>{
|
|
28
|
+
this._events.emit('error', err);
|
|
29
|
+
},
|
|
30
|
+
onLoad: (count)=>{
|
|
31
|
+
this._events.emit('localEvaluationFlagsLoaded', count);
|
|
32
|
+
},
|
|
33
|
+
customHeaders: this.getCustomHeaders()
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
this.errorTracking = new error_tracking(this, options, this.logger);
|
|
37
|
+
this.distinctIdHasSentFlagCalls = {};
|
|
38
|
+
this.maxCacheSize = options.maxCacheSize || MAX_CACHE_SIZE;
|
|
39
|
+
}
|
|
40
|
+
getPersistedProperty(key) {
|
|
41
|
+
return this._memoryStorage.getProperty(key);
|
|
42
|
+
}
|
|
43
|
+
setPersistedProperty(key, value) {
|
|
44
|
+
return this._memoryStorage.setProperty(key, value);
|
|
45
|
+
}
|
|
46
|
+
fetch(url, options) {
|
|
47
|
+
return this.options.fetch ? this.options.fetch(url, options) : fetch(url, options);
|
|
48
|
+
}
|
|
49
|
+
getLibraryVersion() {
|
|
50
|
+
return version;
|
|
51
|
+
}
|
|
52
|
+
getCustomUserAgent() {
|
|
53
|
+
return `${this.getLibraryId()}/${this.getLibraryVersion()}`;
|
|
54
|
+
}
|
|
55
|
+
enable() {
|
|
56
|
+
return super.optIn();
|
|
57
|
+
}
|
|
58
|
+
disable() {
|
|
59
|
+
return super.optOut();
|
|
60
|
+
}
|
|
61
|
+
debug(enabled = true) {
|
|
62
|
+
super.debug(enabled);
|
|
63
|
+
this.featureFlagsPoller?.debug(enabled);
|
|
64
|
+
}
|
|
65
|
+
capture(props) {
|
|
66
|
+
if ('string' == typeof props) this.logMsgIfDebug(()=>console.warn('Called capture() with a string as the first argument when an object was expected.'));
|
|
67
|
+
this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStateless(distinctId, event, properties, {
|
|
68
|
+
timestamp: options.timestamp,
|
|
69
|
+
disableGeoip: options.disableGeoip,
|
|
70
|
+
uuid: options.uuid
|
|
71
|
+
})).catch((err)=>{
|
|
72
|
+
if (err) console.error(err);
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
async captureImmediate(props) {
|
|
76
|
+
if ('string' == typeof props) this.logMsgIfDebug(()=>console.warn('Called captureImmediate() with a string as the first argument when an object was expected.'));
|
|
77
|
+
return this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStatelessImmediate(distinctId, event, properties, {
|
|
78
|
+
timestamp: options.timestamp,
|
|
79
|
+
disableGeoip: options.disableGeoip,
|
|
80
|
+
uuid: options.uuid
|
|
81
|
+
})).catch((err)=>{
|
|
82
|
+
if (err) console.error(err);
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
identify({ distinctId, properties, disableGeoip }) {
|
|
86
|
+
const userPropsOnce = properties?.$set_once;
|
|
87
|
+
delete properties?.$set_once;
|
|
88
|
+
const userProps = properties?.$set || properties;
|
|
89
|
+
super.identifyStateless(distinctId, {
|
|
90
|
+
$set: userProps,
|
|
91
|
+
$set_once: userPropsOnce
|
|
92
|
+
}, {
|
|
93
|
+
disableGeoip
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async identifyImmediate({ distinctId, properties, disableGeoip }) {
|
|
97
|
+
const userPropsOnce = properties?.$set_once;
|
|
98
|
+
delete properties?.$set_once;
|
|
99
|
+
const userProps = properties?.$set || properties;
|
|
100
|
+
await super.identifyStatelessImmediate(distinctId, {
|
|
101
|
+
$set: userProps,
|
|
102
|
+
$set_once: userPropsOnce
|
|
103
|
+
}, {
|
|
104
|
+
disableGeoip
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
alias(data) {
|
|
108
|
+
super.aliasStateless(data.alias, data.distinctId, void 0, {
|
|
109
|
+
disableGeoip: data.disableGeoip
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
async aliasImmediate(data) {
|
|
113
|
+
await super.aliasStatelessImmediate(data.alias, data.distinctId, void 0, {
|
|
114
|
+
disableGeoip: data.disableGeoip
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
isLocalEvaluationReady() {
|
|
118
|
+
return this.featureFlagsPoller?.isLocalEvaluationReady() ?? false;
|
|
119
|
+
}
|
|
120
|
+
async waitForLocalEvaluationReady(timeoutMs = THIRTY_SECONDS) {
|
|
121
|
+
if (this.isLocalEvaluationReady()) return true;
|
|
122
|
+
if (void 0 === this.featureFlagsPoller) return false;
|
|
123
|
+
return new Promise((resolve)=>{
|
|
124
|
+
const timeout = setTimeout(()=>{
|
|
125
|
+
cleanup();
|
|
126
|
+
resolve(false);
|
|
127
|
+
}, timeoutMs);
|
|
128
|
+
const cleanup = this._events.on('localEvaluationFlagsLoaded', (count)=>{
|
|
129
|
+
clearTimeout(timeout);
|
|
130
|
+
cleanup();
|
|
131
|
+
resolve(count > 0);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async getFeatureFlag(key, distinctId, options) {
|
|
136
|
+
const { groups, disableGeoip } = options || {};
|
|
137
|
+
let { onlyEvaluateLocally, sendFeatureFlagEvents, personProperties, groupProperties } = options || {};
|
|
138
|
+
const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);
|
|
139
|
+
personProperties = adjustedProperties.allPersonProperties;
|
|
140
|
+
groupProperties = adjustedProperties.allGroupProperties;
|
|
141
|
+
if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = false;
|
|
142
|
+
if (void 0 == sendFeatureFlagEvents) sendFeatureFlagEvents = this.options.sendFeatureFlagEvent ?? true;
|
|
143
|
+
let response = await this.featureFlagsPoller?.getFeatureFlag(key, distinctId, groups, personProperties, groupProperties);
|
|
144
|
+
const flagWasLocallyEvaluated = void 0 !== response;
|
|
145
|
+
let requestId;
|
|
146
|
+
let flagDetail;
|
|
147
|
+
if (!flagWasLocallyEvaluated && !onlyEvaluateLocally) {
|
|
148
|
+
const remoteResponse = await super.getFeatureFlagDetailStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);
|
|
149
|
+
if (void 0 === remoteResponse) return;
|
|
150
|
+
flagDetail = remoteResponse.response;
|
|
151
|
+
response = getFeatureFlagValue(flagDetail);
|
|
152
|
+
requestId = remoteResponse?.requestId;
|
|
153
|
+
}
|
|
154
|
+
const featureFlagReportedKey = `${key}_${response}`;
|
|
155
|
+
if (sendFeatureFlagEvents && (!(distinctId in this.distinctIdHasSentFlagCalls) || !this.distinctIdHasSentFlagCalls[distinctId].includes(featureFlagReportedKey))) {
|
|
156
|
+
if (Object.keys(this.distinctIdHasSentFlagCalls).length >= this.maxCacheSize) this.distinctIdHasSentFlagCalls = {};
|
|
157
|
+
if (Array.isArray(this.distinctIdHasSentFlagCalls[distinctId])) this.distinctIdHasSentFlagCalls[distinctId].push(featureFlagReportedKey);
|
|
158
|
+
else this.distinctIdHasSentFlagCalls[distinctId] = [
|
|
159
|
+
featureFlagReportedKey
|
|
160
|
+
];
|
|
161
|
+
this.capture({
|
|
162
|
+
distinctId,
|
|
163
|
+
event: '$feature_flag_called',
|
|
164
|
+
properties: {
|
|
165
|
+
$feature_flag: key,
|
|
166
|
+
$feature_flag_response: response,
|
|
167
|
+
$feature_flag_id: flagDetail?.metadata?.id,
|
|
168
|
+
$feature_flag_version: flagDetail?.metadata?.version,
|
|
169
|
+
$feature_flag_reason: flagDetail?.reason?.description ?? flagDetail?.reason?.code,
|
|
170
|
+
locally_evaluated: flagWasLocallyEvaluated,
|
|
171
|
+
[`$feature/${key}`]: response,
|
|
172
|
+
$feature_flag_request_id: requestId
|
|
173
|
+
},
|
|
174
|
+
groups,
|
|
175
|
+
disableGeoip
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return response;
|
|
179
|
+
}
|
|
180
|
+
async getFeatureFlagPayload(key, distinctId, matchValue, options) {
|
|
181
|
+
const { groups, disableGeoip } = options || {};
|
|
182
|
+
let { onlyEvaluateLocally, personProperties, groupProperties } = options || {};
|
|
183
|
+
const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);
|
|
184
|
+
personProperties = adjustedProperties.allPersonProperties;
|
|
185
|
+
groupProperties = adjustedProperties.allGroupProperties;
|
|
186
|
+
let response;
|
|
187
|
+
const localEvaluationEnabled = void 0 !== this.featureFlagsPoller;
|
|
188
|
+
if (localEvaluationEnabled) {
|
|
189
|
+
await this.featureFlagsPoller?.loadFeatureFlags();
|
|
190
|
+
const flag = this.featureFlagsPoller?.featureFlagsByKey[key];
|
|
191
|
+
if (flag) {
|
|
192
|
+
const result = await this.featureFlagsPoller?.computeFlagAndPayloadLocally(flag, distinctId, groups, personProperties, groupProperties, matchValue);
|
|
193
|
+
if (result) {
|
|
194
|
+
matchValue = result.value;
|
|
195
|
+
response = result.payload;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = false;
|
|
200
|
+
const payloadWasLocallyEvaluated = void 0 !== response;
|
|
201
|
+
if (!payloadWasLocallyEvaluated && !onlyEvaluateLocally) response = await super.getFeatureFlagPayloadStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);
|
|
202
|
+
return response;
|
|
203
|
+
}
|
|
204
|
+
async getRemoteConfigPayload(flagKey) {
|
|
205
|
+
if (!this.options.personalApiKey) throw new Error('Personal API key is required for remote config payload decryption');
|
|
206
|
+
const response = await this._requestRemoteConfigPayload(flagKey);
|
|
207
|
+
if (!response) return;
|
|
208
|
+
const parsed = await response.json();
|
|
209
|
+
if ('string' == typeof parsed) try {
|
|
210
|
+
return JSON.parse(parsed);
|
|
211
|
+
} catch (e) {}
|
|
212
|
+
return parsed;
|
|
213
|
+
}
|
|
214
|
+
async isFeatureEnabled(key, distinctId, options) {
|
|
215
|
+
const feat = await this.getFeatureFlag(key, distinctId, options);
|
|
216
|
+
if (void 0 === feat) return;
|
|
217
|
+
return !!feat || false;
|
|
218
|
+
}
|
|
219
|
+
async getAllFlags(distinctId, options) {
|
|
220
|
+
const response = await this.getAllFlagsAndPayloads(distinctId, options);
|
|
221
|
+
return response.featureFlags || {};
|
|
222
|
+
}
|
|
223
|
+
async getAllFlagsAndPayloads(distinctId, options) {
|
|
224
|
+
const { groups, disableGeoip, flagKeys } = options || {};
|
|
225
|
+
let { onlyEvaluateLocally, personProperties, groupProperties } = options || {};
|
|
226
|
+
const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);
|
|
227
|
+
personProperties = adjustedProperties.allPersonProperties;
|
|
228
|
+
groupProperties = adjustedProperties.allGroupProperties;
|
|
229
|
+
if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = false;
|
|
230
|
+
const localEvaluationResult = await this.featureFlagsPoller?.getAllFlagsAndPayloads(distinctId, groups, personProperties, groupProperties, flagKeys);
|
|
231
|
+
let featureFlags = {};
|
|
232
|
+
let featureFlagPayloads = {};
|
|
233
|
+
let fallbackToFlags = true;
|
|
234
|
+
if (localEvaluationResult) {
|
|
235
|
+
featureFlags = localEvaluationResult.response;
|
|
236
|
+
featureFlagPayloads = localEvaluationResult.payloads;
|
|
237
|
+
fallbackToFlags = localEvaluationResult.fallbackToFlags;
|
|
238
|
+
}
|
|
239
|
+
if (fallbackToFlags && !onlyEvaluateLocally) {
|
|
240
|
+
const remoteEvaluationResult = await super.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeys);
|
|
241
|
+
featureFlags = {
|
|
242
|
+
...featureFlags,
|
|
243
|
+
...remoteEvaluationResult.flags || {}
|
|
244
|
+
};
|
|
245
|
+
featureFlagPayloads = {
|
|
246
|
+
...featureFlagPayloads,
|
|
247
|
+
...remoteEvaluationResult.payloads || {}
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
featureFlags,
|
|
252
|
+
featureFlagPayloads
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
groupIdentify({ groupType, groupKey, properties, distinctId, disableGeoip }) {
|
|
256
|
+
super.groupIdentifyStateless(groupType, groupKey, properties, {
|
|
257
|
+
disableGeoip
|
|
258
|
+
}, distinctId);
|
|
259
|
+
}
|
|
260
|
+
async reloadFeatureFlags() {
|
|
261
|
+
await this.featureFlagsPoller?.loadFeatureFlags(true);
|
|
262
|
+
}
|
|
263
|
+
async _shutdown(shutdownTimeoutMs) {
|
|
264
|
+
this.featureFlagsPoller?.stopPoller();
|
|
265
|
+
this.errorTracking.shutdown();
|
|
266
|
+
return super._shutdown(shutdownTimeoutMs);
|
|
267
|
+
}
|
|
268
|
+
async _requestRemoteConfigPayload(flagKey) {
|
|
269
|
+
if (!this.options.personalApiKey) return;
|
|
270
|
+
const url = `${this.host}/api/projects/@current/feature_flags/${flagKey}/remote_config?token=${encodeURIComponent(this.apiKey)}`;
|
|
271
|
+
const options = {
|
|
272
|
+
method: 'GET',
|
|
273
|
+
headers: {
|
|
274
|
+
...this.getCustomHeaders(),
|
|
275
|
+
'Content-Type': 'application/json',
|
|
276
|
+
Authorization: `Bearer ${this.options.personalApiKey}`
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
let abortTimeout = null;
|
|
280
|
+
if (this.options.requestTimeout && 'number' == typeof this.options.requestTimeout) {
|
|
281
|
+
const controller = new AbortController();
|
|
282
|
+
abortTimeout = safeSetTimeout(()=>{
|
|
283
|
+
controller.abort();
|
|
284
|
+
}, this.options.requestTimeout);
|
|
285
|
+
options.signal = controller.signal;
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
return await this.fetch(url, options);
|
|
289
|
+
} catch (error) {
|
|
290
|
+
this._events.emit('error', error);
|
|
291
|
+
return;
|
|
292
|
+
} finally{
|
|
293
|
+
if (abortTimeout) clearTimeout(abortTimeout);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
extractPropertiesFromEvent(eventProperties, groups) {
|
|
297
|
+
if (!eventProperties) return {
|
|
298
|
+
personProperties: {},
|
|
299
|
+
groupProperties: {}
|
|
300
|
+
};
|
|
301
|
+
const personProperties = {};
|
|
302
|
+
const groupProperties = {};
|
|
303
|
+
for (const [key, value] of Object.entries(eventProperties))if (isPlainObject(value) && groups && key in groups) {
|
|
304
|
+
const groupProps = {};
|
|
305
|
+
for (const [groupKey, groupValue] of Object.entries(value))groupProps[String(groupKey)] = String(groupValue);
|
|
306
|
+
groupProperties[String(key)] = groupProps;
|
|
307
|
+
} else personProperties[String(key)] = String(value);
|
|
308
|
+
return {
|
|
309
|
+
personProperties,
|
|
310
|
+
groupProperties
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
async getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions) {
|
|
314
|
+
const finalPersonProperties = sendFeatureFlagsOptions?.personProperties || {};
|
|
315
|
+
const finalGroupProperties = sendFeatureFlagsOptions?.groupProperties || {};
|
|
316
|
+
const flagKeys = sendFeatureFlagsOptions?.flagKeys;
|
|
317
|
+
const onlyEvaluateLocally = sendFeatureFlagsOptions?.onlyEvaluateLocally ?? false;
|
|
318
|
+
if (onlyEvaluateLocally) if (!((this.featureFlagsPoller?.featureFlags?.length || 0) > 0)) return {};
|
|
319
|
+
else {
|
|
320
|
+
const groupsWithStringValues = {};
|
|
321
|
+
for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);
|
|
322
|
+
return await this.getAllFlags(distinctId, {
|
|
323
|
+
groups: groupsWithStringValues,
|
|
324
|
+
personProperties: finalPersonProperties,
|
|
325
|
+
groupProperties: finalGroupProperties,
|
|
326
|
+
disableGeoip,
|
|
327
|
+
onlyEvaluateLocally: true,
|
|
328
|
+
flagKeys
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
if ((this.featureFlagsPoller?.featureFlags?.length || 0) > 0) {
|
|
332
|
+
const groupsWithStringValues = {};
|
|
333
|
+
for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);
|
|
334
|
+
return await this.getAllFlags(distinctId, {
|
|
335
|
+
groups: groupsWithStringValues,
|
|
336
|
+
personProperties: finalPersonProperties,
|
|
337
|
+
groupProperties: finalGroupProperties,
|
|
338
|
+
disableGeoip,
|
|
339
|
+
onlyEvaluateLocally: true,
|
|
340
|
+
flagKeys
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
return (await super.getFeatureFlagsStateless(distinctId, groups, finalPersonProperties, finalGroupProperties, disableGeoip)).flags;
|
|
344
|
+
}
|
|
345
|
+
addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties) {
|
|
346
|
+
const allPersonProperties = {
|
|
347
|
+
distinct_id: distinctId,
|
|
348
|
+
...personProperties || {}
|
|
349
|
+
};
|
|
350
|
+
const allGroupProperties = {};
|
|
351
|
+
if (groups) for (const groupName of Object.keys(groups))allGroupProperties[groupName] = {
|
|
352
|
+
$group_key: groups[groupName],
|
|
353
|
+
...groupProperties?.[groupName] || {}
|
|
354
|
+
};
|
|
355
|
+
return {
|
|
356
|
+
allPersonProperties,
|
|
357
|
+
allGroupProperties
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
captureException(error, distinctId, additionalProperties) {
|
|
361
|
+
const syntheticException = new Error('PostHog syntheticException');
|
|
362
|
+
this.addPendingPromise(error_tracking.buildEventMessage(error, {
|
|
363
|
+
syntheticException
|
|
364
|
+
}, distinctId, additionalProperties).then((msg)=>this.capture(msg)));
|
|
365
|
+
}
|
|
366
|
+
async captureExceptionImmediate(error, distinctId, additionalProperties) {
|
|
367
|
+
const syntheticException = new Error('PostHog syntheticException');
|
|
368
|
+
this.addPendingPromise(error_tracking.buildEventMessage(error, {
|
|
369
|
+
syntheticException
|
|
370
|
+
}, distinctId, additionalProperties).then((msg)=>this.captureImmediate(msg)));
|
|
371
|
+
}
|
|
372
|
+
async prepareEventMessage(props) {
|
|
373
|
+
const { distinctId, event, properties, groups, sendFeatureFlags, timestamp, disableGeoip, uuid } = props;
|
|
374
|
+
const eventMessage = this._runBeforeSend({
|
|
375
|
+
distinctId,
|
|
376
|
+
event,
|
|
377
|
+
properties,
|
|
378
|
+
groups,
|
|
379
|
+
sendFeatureFlags,
|
|
380
|
+
timestamp,
|
|
381
|
+
disableGeoip,
|
|
382
|
+
uuid
|
|
383
|
+
});
|
|
384
|
+
if (!eventMessage) return Promise.reject(null);
|
|
385
|
+
const eventProperties = await Promise.resolve().then(async ()=>{
|
|
386
|
+
if (sendFeatureFlags) {
|
|
387
|
+
const sendFeatureFlagsOptions = 'object' == typeof sendFeatureFlags ? sendFeatureFlags : void 0;
|
|
388
|
+
return await this.getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions);
|
|
389
|
+
}
|
|
390
|
+
return {};
|
|
391
|
+
}).then((flags)=>{
|
|
392
|
+
const additionalProperties = {};
|
|
393
|
+
if (flags) for (const [feature, variant] of Object.entries(flags))additionalProperties[`$feature/${feature}`] = variant;
|
|
394
|
+
const activeFlags = Object.keys(flags || {}).filter((flag)=>flags?.[flag] !== false).sort();
|
|
395
|
+
if (activeFlags.length > 0) additionalProperties['$active_feature_flags'] = activeFlags;
|
|
396
|
+
return additionalProperties;
|
|
397
|
+
}).catch(()=>({})).then((additionalProperties)=>{
|
|
398
|
+
const props = {
|
|
399
|
+
...additionalProperties,
|
|
400
|
+
...eventMessage.properties || {},
|
|
401
|
+
$groups: eventMessage.groups || groups
|
|
402
|
+
};
|
|
403
|
+
return props;
|
|
404
|
+
});
|
|
405
|
+
return {
|
|
406
|
+
distinctId: eventMessage.distinctId,
|
|
407
|
+
event: eventMessage.event,
|
|
408
|
+
properties: eventProperties,
|
|
409
|
+
options: {
|
|
410
|
+
timestamp: eventMessage.timestamp,
|
|
411
|
+
disableGeoip: eventMessage.disableGeoip,
|
|
412
|
+
uuid: eventMessage.uuid
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
_runBeforeSend(eventMessage) {
|
|
417
|
+
const beforeSend = this.options.before_send;
|
|
418
|
+
if (!beforeSend) return eventMessage;
|
|
419
|
+
const fns = Array.isArray(beforeSend) ? beforeSend : [
|
|
420
|
+
beforeSend
|
|
421
|
+
];
|
|
422
|
+
let result = eventMessage;
|
|
423
|
+
for (const fn of fns){
|
|
424
|
+
result = fn(result);
|
|
425
|
+
if (!result) {
|
|
426
|
+
this.logMsgIfDebug(()=>console.info(`Event '${eventMessage.event}' was rejected in beforeSend function`));
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
if (!result.properties || 0 === Object.keys(result.properties).length) {
|
|
430
|
+
const message = `Event '${result.event}' has no properties after beforeSend function, this is likely an error.`;
|
|
431
|
+
this.logMsgIfDebug(()=>console.warn(message));
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
return result;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
export { PostHogBackendClient };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.edge.d.ts","sourceRoot":"","sources":["../../src/entrypoints/index.edge.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMhD,qBAAa,OAAQ,SAAQ,oBAAoB;IAC/C,YAAY,IAAI,MAAM;CAGvB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_modules__ = {
|
|
3
|
+
"../client": function(module) {
|
|
4
|
+
module.exports = require("../client.js");
|
|
5
|
+
},
|
|
6
|
+
"../exports": function(module) {
|
|
7
|
+
module.exports = require("../exports.js");
|
|
8
|
+
},
|
|
9
|
+
"../extensions/error-tracking": function(module) {
|
|
10
|
+
module.exports = require("../extensions/error-tracking/index.js");
|
|
11
|
+
},
|
|
12
|
+
"../extensions/error-tracking/stack-parser": function(module) {
|
|
13
|
+
module.exports = require("../extensions/error-tracking/stack-parser.js");
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var __webpack_module_cache__ = {};
|
|
17
|
+
function __webpack_require__(moduleId) {
|
|
18
|
+
var cachedModule = __webpack_module_cache__[moduleId];
|
|
19
|
+
if (void 0 !== cachedModule) return cachedModule.exports;
|
|
20
|
+
var module = __webpack_module_cache__[moduleId] = {
|
|
21
|
+
exports: {}
|
|
22
|
+
};
|
|
23
|
+
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
24
|
+
return module.exports;
|
|
25
|
+
}
|
|
26
|
+
(()=>{
|
|
27
|
+
__webpack_require__.n = (module)=>{
|
|
28
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
29
|
+
__webpack_require__.d(getter, {
|
|
30
|
+
a: getter
|
|
31
|
+
});
|
|
32
|
+
return getter;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
(()=>{
|
|
36
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
37
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: definition[key]
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
(()=>{
|
|
44
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
45
|
+
})();
|
|
46
|
+
(()=>{
|
|
47
|
+
__webpack_require__.r = (exports1)=>{
|
|
48
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
49
|
+
value: 'Module'
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
52
|
+
value: true
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
})();
|
|
56
|
+
var __webpack_exports__ = {};
|
|
57
|
+
(()=>{
|
|
58
|
+
__webpack_require__.r(__webpack_exports__);
|
|
59
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
60
|
+
PostHog: ()=>PostHog
|
|
61
|
+
});
|
|
62
|
+
var _exports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../exports");
|
|
63
|
+
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
64
|
+
for(var __WEBPACK_IMPORT_KEY__ in _exports__WEBPACK_IMPORTED_MODULE_0__)if ([
|
|
65
|
+
"default",
|
|
66
|
+
"PostHog"
|
|
67
|
+
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
68
|
+
return _exports__WEBPACK_IMPORTED_MODULE_0__[key];
|
|
69
|
+
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
70
|
+
__webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
|
|
71
|
+
var _extensions_error_tracking__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../extensions/error-tracking");
|
|
72
|
+
var _extensions_error_tracking__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_1__);
|
|
73
|
+
var _client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../client");
|
|
74
|
+
var _extensions_error_tracking_stack_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../extensions/error-tracking/stack-parser");
|
|
75
|
+
_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_1___default().stackParser = (0, _extensions_error_tracking_stack_parser__WEBPACK_IMPORTED_MODULE_3__.createStackParser)();
|
|
76
|
+
_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_1___default().frameModifiers = [];
|
|
77
|
+
class PostHog extends _client__WEBPACK_IMPORTED_MODULE_2__.PostHogBackendClient {
|
|
78
|
+
getLibraryId() {
|
|
79
|
+
return 'posthog-edge';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
})();
|
|
83
|
+
exports.PostHog = __webpack_exports__.PostHog;
|
|
84
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
85
|
+
"PostHog"
|
|
86
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
87
|
+
Object.defineProperty(exports, '__esModule', {
|
|
88
|
+
value: true
|
|
89
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import error_tracking from "../extensions/error-tracking/index.mjs";
|
|
2
|
+
import { PostHogBackendClient } from "../client.mjs";
|
|
3
|
+
import { createStackParser } from "../extensions/error-tracking/stack-parser.mjs";
|
|
4
|
+
export * from "../exports.mjs";
|
|
5
|
+
error_tracking.stackParser = createStackParser();
|
|
6
|
+
error_tracking.frameModifiers = [];
|
|
7
|
+
class PostHog extends PostHogBackendClient {
|
|
8
|
+
getLibraryId() {
|
|
9
|
+
return 'posthog-edge';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export { PostHog };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../src/entrypoints/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAM1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMhD,qBAAa,OAAQ,SAAQ,oBAAoB;IAC/C,YAAY,IAAI,MAAM;CAGvB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_modules__ = {
|
|
3
|
+
"../client": function(module) {
|
|
4
|
+
module.exports = require("../client.js");
|
|
5
|
+
},
|
|
6
|
+
"../exports": function(module) {
|
|
7
|
+
module.exports = require("../exports.js");
|
|
8
|
+
},
|
|
9
|
+
"../extensions/error-tracking/context-lines.node": function(module) {
|
|
10
|
+
module.exports = require("../extensions/error-tracking/context-lines.node.js");
|
|
11
|
+
},
|
|
12
|
+
"../extensions/error-tracking/get-module.node": function(module) {
|
|
13
|
+
module.exports = require("../extensions/error-tracking/get-module.node.js");
|
|
14
|
+
},
|
|
15
|
+
"../extensions/error-tracking": function(module) {
|
|
16
|
+
module.exports = require("../extensions/error-tracking/index.js");
|
|
17
|
+
},
|
|
18
|
+
"../extensions/error-tracking/stack-parser": function(module) {
|
|
19
|
+
module.exports = require("../extensions/error-tracking/stack-parser.js");
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var __webpack_module_cache__ = {};
|
|
23
|
+
function __webpack_require__(moduleId) {
|
|
24
|
+
var cachedModule = __webpack_module_cache__[moduleId];
|
|
25
|
+
if (void 0 !== cachedModule) return cachedModule.exports;
|
|
26
|
+
var module = __webpack_module_cache__[moduleId] = {
|
|
27
|
+
exports: {}
|
|
28
|
+
};
|
|
29
|
+
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
30
|
+
return module.exports;
|
|
31
|
+
}
|
|
32
|
+
(()=>{
|
|
33
|
+
__webpack_require__.n = (module)=>{
|
|
34
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
35
|
+
__webpack_require__.d(getter, {
|
|
36
|
+
a: getter
|
|
37
|
+
});
|
|
38
|
+
return getter;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
(()=>{
|
|
42
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
43
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: definition[key]
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
(()=>{
|
|
50
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
51
|
+
})();
|
|
52
|
+
(()=>{
|
|
53
|
+
__webpack_require__.r = (exports1)=>{
|
|
54
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
55
|
+
value: 'Module'
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
58
|
+
value: true
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
})();
|
|
62
|
+
var __webpack_exports__ = {};
|
|
63
|
+
(()=>{
|
|
64
|
+
__webpack_require__.r(__webpack_exports__);
|
|
65
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
66
|
+
PostHog: ()=>PostHog
|
|
67
|
+
});
|
|
68
|
+
var _exports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../exports");
|
|
69
|
+
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
70
|
+
for(var __WEBPACK_IMPORT_KEY__ in _exports__WEBPACK_IMPORTED_MODULE_0__)if ([
|
|
71
|
+
"default",
|
|
72
|
+
"PostHog"
|
|
73
|
+
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
74
|
+
return _exports__WEBPACK_IMPORTED_MODULE_0__[key];
|
|
75
|
+
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
76
|
+
__webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
|
|
77
|
+
var _extensions_error_tracking_get_module_node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../extensions/error-tracking/get-module.node");
|
|
78
|
+
var _extensions_error_tracking_context_lines_node__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../extensions/error-tracking/context-lines.node");
|
|
79
|
+
var _extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../extensions/error-tracking");
|
|
80
|
+
var _extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/ __webpack_require__.n(_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3__);
|
|
81
|
+
var _client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../client");
|
|
82
|
+
var _extensions_error_tracking_stack_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../extensions/error-tracking/stack-parser");
|
|
83
|
+
_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3___default().stackParser = (0, _extensions_error_tracking_stack_parser__WEBPACK_IMPORTED_MODULE_5__.createStackParser)((0, _extensions_error_tracking_get_module_node__WEBPACK_IMPORTED_MODULE_1__.createGetModuleFromFilename)());
|
|
84
|
+
_extensions_error_tracking__WEBPACK_IMPORTED_MODULE_3___default().frameModifiers = [
|
|
85
|
+
_extensions_error_tracking_context_lines_node__WEBPACK_IMPORTED_MODULE_2__.addSourceContext
|
|
86
|
+
];
|
|
87
|
+
class PostHog extends _client__WEBPACK_IMPORTED_MODULE_4__.PostHogBackendClient {
|
|
88
|
+
getLibraryId() {
|
|
89
|
+
return 'posthog-node';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
})();
|
|
93
|
+
exports.PostHog = __webpack_exports__.PostHog;
|
|
94
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
95
|
+
"PostHog"
|
|
96
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
97
|
+
Object.defineProperty(exports, '__esModule', {
|
|
98
|
+
value: true
|
|
99
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createGetModuleFromFilename } from "../extensions/error-tracking/get-module.node.mjs";
|
|
2
|
+
import { addSourceContext } from "../extensions/error-tracking/context-lines.node.mjs";
|
|
3
|
+
import error_tracking from "../extensions/error-tracking/index.mjs";
|
|
4
|
+
import { PostHogBackendClient } from "../client.mjs";
|
|
5
|
+
import { createStackParser } from "../extensions/error-tracking/stack-parser.mjs";
|
|
6
|
+
export * from "../exports.mjs";
|
|
7
|
+
error_tracking.stackParser = createStackParser(createGetModuleFromFilename());
|
|
8
|
+
error_tracking.frameModifiers = [
|
|
9
|
+
addSourceContext
|
|
10
|
+
];
|
|
11
|
+
class PostHog extends PostHogBackendClient {
|
|
12
|
+
getLibraryId() {
|
|
13
|
+
return 'posthog-node';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export { PostHog };
|