@etohq/utils 1.5.1-alpha.3 → 1.5.1-alpha.4
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/access-link/case-sensitivity.d.ts +14 -0
- package/dist/access-link/case-sensitivity.d.ts.map +1 -0
- package/dist/access-link/case-sensitivity.js +57 -0
- package/dist/access-link/case-sensitivity.js.map +1 -0
- package/dist/access-link/check-if-key-exists.d.ts +7 -0
- package/dist/access-link/check-if-key-exists.d.ts.map +1 -0
- package/dist/access-link/check-if-key-exists.js +36 -0
- package/dist/access-link/check-if-key-exists.js.map +1 -0
- package/dist/access-link/index.d.ts +11 -0
- package/dist/access-link/index.d.ts.map +1 -0
- package/dist/access-link/index.js +27 -0
- package/dist/access-link/index.js.map +1 -0
- package/dist/access-link/key-checks.d.ts +12 -0
- package/dist/access-link/key-checks.d.ts.map +1 -0
- package/dist/access-link/key-checks.js +78 -0
- package/dist/access-link/key-checks.js.map +1 -0
- package/dist/access-link/link-resolution.d.ts +26 -0
- package/dist/access-link/link-resolution.d.ts.map +1 -0
- package/dist/access-link/link-resolution.js +111 -0
- package/dist/access-link/link-resolution.js.map +1 -0
- package/dist/access-link/link-utils.d.ts +23 -0
- package/dist/access-link/link-utils.d.ts.map +1 -0
- package/dist/access-link/link-utils.js +61 -0
- package/dist/access-link/link-utils.js.map +1 -0
- package/dist/access-link/process-key.d.ts +5 -0
- package/dist/access-link/process-key.d.ts.map +1 -0
- package/dist/access-link/process-key.js +58 -0
- package/dist/access-link/process-key.js.map +1 -0
- package/dist/access-link/process-utils.d.ts +19 -0
- package/dist/access-link/process-utils.d.ts.map +1 -0
- package/dist/access-link/process-utils.js +52 -0
- package/dist/access-link/process-utils.js.map +1 -0
- package/dist/access-link/transform-link.d.ts +47 -0
- package/dist/access-link/transform-link.d.ts.map +1 -0
- package/dist/access-link/transform-link.js +25 -0
- package/dist/access-link/transform-link.js.map +1 -0
- package/dist/access-link/url-detection.d.ts +10 -0
- package/dist/access-link/url-detection.d.ts.map +1 -0
- package/dist/access-link/url-detection.js +63 -0
- package/dist/access-link/url-detection.js.map +1 -0
- package/dist/access-link/validation-utils.d.ts +23 -0
- package/dist/access-link/validation-utils.d.ts.map +1 -0
- package/dist/access-link/validation-utils.js +57 -0
- package/dist/access-link/validation-utils.js.map +1 -0
- package/dist/analytics/detect-bot.d.ts +2 -0
- package/dist/analytics/detect-bot.d.ts.map +1 -0
- package/dist/analytics/detect-bot.js +21 -0
- package/dist/analytics/detect-bot.js.map +1 -0
- package/dist/analytics/detect-qr.d.ts +2 -0
- package/dist/analytics/detect-qr.d.ts.map +1 -0
- package/dist/analytics/detect-qr.js +10 -0
- package/dist/analytics/detect-qr.js.map +1 -0
- package/dist/analytics/get-click-event.d.ts +8 -0
- package/dist/analytics/get-click-event.d.ts.map +1 -0
- package/dist/analytics/get-click-event.js +24 -0
- package/dist/analytics/get-click-event.js.map +1 -0
- package/dist/analytics/get-geolocation.d.ts +12 -0
- package/dist/analytics/get-geolocation.d.ts.map +1 -0
- package/dist/analytics/get-geolocation.js +51 -0
- package/dist/analytics/get-geolocation.js.map +1 -0
- package/dist/analytics/get-grant-event.d.ts +8 -0
- package/dist/analytics/get-grant-event.d.ts.map +1 -0
- package/dist/analytics/get-grant-event.js +24 -0
- package/dist/analytics/get-grant-event.js.map +1 -0
- package/dist/analytics/get-import-error-logs.d.ts +17 -0
- package/dist/analytics/get-import-error-logs.d.ts.map +1 -0
- package/dist/analytics/get-import-error-logs.js +23 -0
- package/dist/analytics/get-import-error-logs.js.map +1 -0
- package/dist/analytics/get-lead-events.d.ts +17 -0
- package/dist/analytics/get-lead-events.d.ts.map +1 -0
- package/dist/analytics/get-lead-events.js +17 -0
- package/dist/analytics/get-lead-events.js.map +1 -0
- package/dist/analytics/get-webhook-events.d.ts +17 -0
- package/dist/analytics/get-webhook-events.d.ts.map +1 -0
- package/dist/analytics/get-webhook-events.js +22 -0
- package/dist/analytics/get-webhook-events.js.map +1 -0
- package/dist/analytics/index.d.ts +18 -0
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +18 -0
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/log-conversion-events.d.ts +6 -0
- package/dist/analytics/log-conversion-events.d.ts.map +1 -0
- package/dist/analytics/log-conversion-events.js +20 -0
- package/dist/analytics/log-conversion-events.js.map +1 -0
- package/dist/analytics/log-import-error.d.ts +6 -0
- package/dist/analytics/log-import-error.d.ts.map +1 -0
- package/dist/analytics/log-import-error.js +18 -0
- package/dist/analytics/log-import-error.js.map +1 -0
- package/dist/analytics/parse-user-agent.d.ts +13 -0
- package/dist/analytics/parse-user-agent.d.ts.map +1 -0
- package/dist/analytics/parse-user-agent.js +174 -0
- package/dist/analytics/parse-user-agent.js.map +1 -0
- package/dist/analytics/record-approval.d.ts +56 -0
- package/dist/analytics/record-approval.d.ts.map +1 -0
- package/dist/analytics/record-approval.js +32 -0
- package/dist/analytics/record-approval.js.map +1 -0
- package/dist/analytics/record-click.d.ts +32 -0
- package/dist/analytics/record-click.d.ts.map +1 -0
- package/dist/analytics/record-click.js +136 -0
- package/dist/analytics/record-click.js.map +1 -0
- package/dist/analytics/record-lead.d.ts +24 -0
- package/dist/analytics/record-lead.d.ts.map +1 -0
- package/dist/analytics/record-lead.js +72 -0
- package/dist/analytics/record-lead.js.map +1 -0
- package/dist/analytics/record-link.d.ts +106 -0
- package/dist/analytics/record-link.d.ts.map +1 -0
- package/dist/analytics/record-link.js +78 -0
- package/dist/analytics/record-link.js.map +1 -0
- package/dist/analytics/record-sale.d.ts +10 -0
- package/dist/analytics/record-sale.d.ts.map +1 -0
- package/dist/analytics/record-sale.js +35 -0
- package/dist/analytics/record-sale.js.map +1 -0
- package/dist/analytics/record-webhook-event.d.ts +26 -0
- package/dist/analytics/record-webhook-event.d.ts.map +1 -0
- package/dist/analytics/record-webhook-event.js +22 -0
- package/dist/analytics/record-webhook-event.js.map +1 -0
- package/dist/analytics/schemas.d.ts +257 -0
- package/dist/analytics/schemas.d.ts.map +1 -0
- package/dist/analytics/schemas.js +99 -0
- package/dist/analytics/schemas.js.map +1 -0
- package/dist/analytics/tinybird-client.d.ts +6 -0
- package/dist/analytics/tinybird-client.d.ts.map +1 -0
- package/dist/analytics/tinybird-client.js +11 -0
- package/dist/analytics/tinybird-client.js.map +1 -0
- package/dist/common/constants.d.ts +24 -0
- package/dist/common/constants.d.ts.map +1 -0
- package/dist/common/constants.js +196 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/domains.d.ts +8 -0
- package/dist/common/domains.d.ts.map +1 -0
- package/dist/common/domains.js +88 -0
- package/dist/common/domains.js.map +1 -0
- package/dist/common/dynamic-import.d.ts.map +1 -1
- package/dist/common/dynamic-import.js +24 -1
- package/dist/common/dynamic-import.js.map +1 -1
- package/dist/common/fetch-with-retry.d.ts +6 -0
- package/dist/common/fetch-with-retry.d.ts.map +1 -0
- package/dist/common/fetch-with-retry.js +63 -0
- package/dist/common/fetch-with-retry.js.map +1 -0
- package/dist/common/get-identity-hash.d.ts +2 -0
- package/dist/common/get-identity-hash.d.ts.map +1 -0
- package/dist/common/get-identity-hash.js +19 -0
- package/dist/common/get-identity-hash.js.map +1 -0
- package/dist/common/index.d.ts +3 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +3 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/is-valid-url.d.ts +2 -0
- package/dist/common/is-valid-url.d.ts.map +1 -0
- package/dist/common/is-valid-url.js +14 -0
- package/dist/common/is-valid-url.js.map +1 -0
- package/dist/common/reserved-slugs.d.ts +7 -0
- package/dist/common/reserved-slugs.d.ts.map +1 -0
- package/dist/common/reserved-slugs.js +64 -0
- package/dist/common/reserved-slugs.js.map +1 -0
- package/dist/common/to-snake-case.d.ts +5 -0
- package/dist/common/to-snake-case.d.ts.map +1 -0
- package/dist/common/to-snake-case.js +14 -0
- package/dist/common/to-snake-case.js.map +1 -0
- package/dist/dml/entity-builder.d.ts +68 -0
- package/dist/dml/entity-builder.d.ts.map +1 -1
- package/dist/dml/entity-builder.js +76 -0
- package/dist/dml/entity-builder.js.map +1 -1
- package/dist/dml/helpers/entity-builder/define-property.d.ts.map +1 -1
- package/dist/dml/helpers/entity-builder/define-property.js +77 -0
- package/dist/dml/helpers/entity-builder/define-property.js.map +1 -1
- package/dist/dml/helpers/mikro-orm/custom-type/geo-json-geometry.d.ts +10 -0
- package/dist/dml/helpers/mikro-orm/custom-type/geo-json-geometry.d.ts.map +1 -0
- package/dist/dml/helpers/mikro-orm/custom-type/geo-json-geometry.js +31 -0
- package/dist/dml/helpers/mikro-orm/custom-type/geo-json-geometry.js.map +1 -0
- package/dist/dml/properties/enum.d.ts.map +1 -1
- package/dist/dml/properties/enum.js +0 -1
- package/dist/dml/properties/enum.js.map +1 -1
- package/dist/dml/properties/geometry.d.ts +8 -0
- package/dist/dml/properties/geometry.d.ts.map +1 -0
- package/dist/dml/properties/geometry.js +14 -0
- package/dist/dml/properties/geometry.js.map +1 -0
- package/dist/dml/properties/index.d.ts +4 -0
- package/dist/dml/properties/index.d.ts.map +1 -1
- package/dist/dml/properties/index.js +4 -0
- package/dist/dml/properties/index.js.map +1 -1
- package/dist/dml/properties/multipolygon.d.ts +8 -0
- package/dist/dml/properties/multipolygon.d.ts.map +1 -0
- package/dist/dml/properties/multipolygon.js +14 -0
- package/dist/dml/properties/multipolygon.js.map +1 -0
- package/dist/dml/properties/point.d.ts +8 -0
- package/dist/dml/properties/point.d.ts.map +1 -0
- package/dist/dml/properties/point.js +14 -0
- package/dist/dml/properties/point.js.map +1 -0
- package/dist/dml/properties/polygon.d.ts +8 -0
- package/dist/dml/properties/polygon.d.ts.map +1 -0
- package/dist/dml/properties/polygon.js +14 -0
- package/dist/dml/properties/polygon.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/modules-sdk/build-query.d.ts.map +1 -1
- package/dist/modules-sdk/build-query.js +3 -1
- package/dist/modules-sdk/build-query.js.map +1 -1
- package/dist/modules-sdk/definition.d.ts +18 -0
- package/dist/modules-sdk/definition.d.ts.map +1 -1
- package/dist/modules-sdk/definition.js +12 -0
- package/dist/modules-sdk/definition.js.map +1 -1
- package/dist/modules-sdk/spatial-query-processor.d.ts +2 -0
- package/dist/modules-sdk/spatial-query-processor.d.ts.map +1 -0
- package/dist/modules-sdk/spatial-query-processor.js +105 -0
- package/dist/modules-sdk/spatial-query-processor.js.map +1 -0
- package/dist/permissions/ability.d.ts +39 -0
- package/dist/permissions/ability.d.ts.map +1 -0
- package/dist/permissions/ability.js +51 -0
- package/dist/permissions/ability.js.map +1 -0
- package/dist/permissions/context-builder.d.ts +24 -0
- package/dist/permissions/context-builder.d.ts.map +1 -0
- package/dist/permissions/context-builder.js +30 -0
- package/dist/permissions/context-builder.js.map +1 -0
- package/dist/permissions/index.d.ts +4 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +20 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permission-service.d.ts +8 -0
- package/dist/permissions/permission-service.d.ts.map +1 -0
- package/dist/permissions/permission-service.js +20 -0
- package/dist/permissions/permission-service.js.map +1 -0
- package/dist/permissions/types.d.ts +17 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/permissions/types.js +11 -0
- package/dist/permissions/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/zod/schemas/approvals.d.ts +91 -0
- package/dist/zod/schemas/approvals.d.ts.map +1 -0
- package/dist/zod/schemas/approvals.js +38 -0
- package/dist/zod/schemas/approvals.js.map +1 -0
- package/dist/zod/schemas/clicks.d.ts +394 -0
- package/dist/zod/schemas/clicks.d.ts.map +1 -0
- package/dist/zod/schemas/clicks.js +85 -0
- package/dist/zod/schemas/clicks.js.map +1 -0
- package/dist/zod/schemas/leads.d.ts +423 -0
- package/dist/zod/schemas/leads.d.ts.map +1 -0
- package/dist/zod/schemas/leads.js +58 -0
- package/dist/zod/schemas/leads.js.map +1 -0
- package/package.json +8 -2
- package/dist/feature-flags/eto-v2.d.ts +0 -3
- package/dist/feature-flags/eto-v2.d.ts.map +0 -1
- package/dist/feature-flags/eto-v2.js +0 -10
- package/dist/feature-flags/eto-v2.js.map +0 -1
- package/dist/feature-flags/order-editing.d.ts +0 -3
- package/dist/feature-flags/order-editing.d.ts.map +0 -1
- package/dist/feature-flags/order-editing.js +0 -10
- package/dist/feature-flags/order-editing.js.map +0 -1
- package/dist/feature-flags/product-categories.d.ts +0 -3
- package/dist/feature-flags/product-categories.d.ts.map +0 -1
- package/dist/feature-flags/product-categories.js +0 -10
- package/dist/feature-flags/product-categories.js.map +0 -1
- package/dist/feature-flags/sales-channels.d.ts +0 -3
- package/dist/feature-flags/sales-channels.d.ts.map +0 -1
- package/dist/feature-flags/sales-channels.js +0 -10
- package/dist/feature-flags/sales-channels.js.map +0 -1
- package/dist/feature-flags/tax-inclusive-pricing.d.ts +0 -3
- package/dist/feature-flags/tax-inclusive-pricing.d.ts.map +0 -1
- package/dist/feature-flags/tax-inclusive-pricing.js +0 -10
- package/dist/feature-flags/tax-inclusive-pricing.js.map +0 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Access link processing utilities (following Dub's process-link pattern)
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.processAccessLink = processAccessLink;
|
|
5
|
+
async function processAccessLink(data, options = {}) {
|
|
6
|
+
const processed = { ...data };
|
|
7
|
+
// Process domain
|
|
8
|
+
if (processed.domain) {
|
|
9
|
+
processed.domain = processed.domain.toLowerCase().trim();
|
|
10
|
+
}
|
|
11
|
+
// Process key
|
|
12
|
+
if (processed.key) {
|
|
13
|
+
processed.key = processed.key.trim();
|
|
14
|
+
// Remove leading slash if present
|
|
15
|
+
if (processed.key.startsWith('/')) {
|
|
16
|
+
processed.key = processed.key.slice(1);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Process URL
|
|
20
|
+
if (processed.url) {
|
|
21
|
+
processed.url = processed.url.trim();
|
|
22
|
+
// Ensure URL has protocol
|
|
23
|
+
if (!processed.url.startsWith('http://') && !processed.url.startsWith('https://')) {
|
|
24
|
+
processed.url = `https://${processed.url}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Process expiration
|
|
28
|
+
if (processed.expires_at) {
|
|
29
|
+
// Ensure expiration is in the future
|
|
30
|
+
if (processed.expires_at <= new Date()) {
|
|
31
|
+
throw new Error("Expiration date must be in the future");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Process max uses
|
|
35
|
+
if (processed.max_uses !== undefined) {
|
|
36
|
+
if (processed.max_uses < 0) {
|
|
37
|
+
throw new Error("Max uses cannot be negative");
|
|
38
|
+
}
|
|
39
|
+
if (processed.max_uses === 0) {
|
|
40
|
+
processed.max_uses = null; // Unlimited
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Validate resource targeting
|
|
44
|
+
if (processed.target_resource_type && !processed.target_resource_id) {
|
|
45
|
+
throw new Error("target_resource_id is required when target_resource_type is specified");
|
|
46
|
+
}
|
|
47
|
+
if (processed.target_resource_id && !processed.target_resource_type) {
|
|
48
|
+
throw new Error("target_resource_type is required when target_resource_id is specified");
|
|
49
|
+
}
|
|
50
|
+
return processed;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=process-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../src/access-link/process-utils.ts"],"names":[],"mappings":";AAAA,0EAA0E;;AAiB1E,8CA2DC;AA3DM,KAAK,UAAU,iBAAiB,CACrC,IAA8B,EAC9B,UAGI,EAAE;IAEN,MAAM,SAAS,GAAQ,EAAE,GAAG,IAAI,EAAE,CAAA;IAElC,iBAAiB;IACjB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAC1D,CAAC;IAED,cAAc;IACd,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACpC,kCAAkC;QAClC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAED,cAAc;IACd,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACpC,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAClF,SAAS,CAAC,GAAG,GAAG,WAAW,SAAS,CAAC,GAAG,EAAE,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,qCAAqC;QACrC,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAA,CAAC,YAAY;QACxC,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,SAAS,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,SAAS,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type ExpandedAccessLink = {
|
|
2
|
+
id: string;
|
|
3
|
+
domain: string;
|
|
4
|
+
key: string;
|
|
5
|
+
url: string;
|
|
6
|
+
short_link: string;
|
|
7
|
+
project_id: string;
|
|
8
|
+
creator_user_id: string;
|
|
9
|
+
target_resource_type?: string | null;
|
|
10
|
+
target_resource_id?: string | null;
|
|
11
|
+
access_role?: string | null;
|
|
12
|
+
purpose?: string | null;
|
|
13
|
+
max_uses?: number | null;
|
|
14
|
+
expires_at?: Date | null;
|
|
15
|
+
created_at: Date;
|
|
16
|
+
updated_at: Date;
|
|
17
|
+
};
|
|
18
|
+
export declare const transformLink: (link: ExpandedAccessLink, { skipDecodeKey }?: {
|
|
19
|
+
skipDecodeKey?: boolean;
|
|
20
|
+
}) => {
|
|
21
|
+
qrCode: string;
|
|
22
|
+
projectId: string;
|
|
23
|
+
creatorUserId: string;
|
|
24
|
+
targetResourceType: string | null | undefined;
|
|
25
|
+
targetResourceId: string | null | undefined;
|
|
26
|
+
accessRole: string | null | undefined;
|
|
27
|
+
maxUses: number | null | undefined;
|
|
28
|
+
expiresAt: Date | null | undefined;
|
|
29
|
+
createdAt: Date;
|
|
30
|
+
updatedAt: Date;
|
|
31
|
+
id: string;
|
|
32
|
+
domain: string;
|
|
33
|
+
key: string;
|
|
34
|
+
url: string;
|
|
35
|
+
short_link: string;
|
|
36
|
+
project_id: string;
|
|
37
|
+
creator_user_id: string;
|
|
38
|
+
target_resource_type?: string | null;
|
|
39
|
+
target_resource_id?: string | null;
|
|
40
|
+
access_role?: string | null;
|
|
41
|
+
purpose?: string | null;
|
|
42
|
+
max_uses?: number | null;
|
|
43
|
+
expires_at?: Date | null;
|
|
44
|
+
created_at: Date;
|
|
45
|
+
updated_at: Date;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=transform-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-link.d.ts","sourceRoot":"","sources":["../../src/access-link/transform-link.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,UAAU,EAAE,IAAI,CAAA;IAChB,UAAU,EAAE,IAAI,CAAA;CAEjB,CAAA;AAGD,eAAO,MAAM,aAAa,GACxB,MAAM,kBAAkB,EACxB,oBAA2B;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;;QArBvD,MAAM;YACF,MAAM;SACT,MAAM;SACN,MAAM;gBACC,MAAM;gBACN,MAAM;qBACD,MAAM;2BACA,MAAM,GAAG,IAAI;yBACf,MAAM,GAAG,IAAI;kBACpB,MAAM,GAAG,IAAI;cACjB,MAAM,GAAG,IAAI;eACZ,MAAM,GAAG,IAAI;iBACX,IAAI,GAAG,IAAI;gBACZ,IAAI;gBACJ,IAAI;CA0BjB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformLink = void 0;
|
|
4
|
+
const case_sensitivity_1 = require("./case-sensitivity");
|
|
5
|
+
// Transform access link with additional properties (following Dub's pattern)
|
|
6
|
+
const transformLink = (link, { skipDecodeKey = false } = {}) => {
|
|
7
|
+
if (!skipDecodeKey) {
|
|
8
|
+
link = (0, case_sensitivity_1.decodeLinkIfCaseSensitive)(link);
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
...link,
|
|
12
|
+
qrCode: `${link.short_link}?qr=1`,
|
|
13
|
+
projectId: link.project_id, // backwards compatibility
|
|
14
|
+
creatorUserId: link.creator_user_id, // backwards compatibility
|
|
15
|
+
targetResourceType: link.target_resource_type,
|
|
16
|
+
targetResourceId: link.target_resource_id,
|
|
17
|
+
accessRole: link.access_role,
|
|
18
|
+
maxUses: link.max_uses,
|
|
19
|
+
expiresAt: link.expires_at,
|
|
20
|
+
createdAt: link.created_at,
|
|
21
|
+
updatedAt: link.updated_at,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.transformLink = transformLink;
|
|
25
|
+
//# sourceMappingURL=transform-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-link.js","sourceRoot":"","sources":["../../src/access-link/transform-link.ts"],"names":[],"mappings":";;;AAAA,yDAA8D;AAsB9D,6EAA6E;AACtE,MAAM,aAAa,GAAG,CAC3B,IAAwB,EACxB,EAAE,aAAa,GAAG,KAAK,KAAkC,EAAE,EAC3D,EAAE;IACF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,GAAG,IAAA,4CAAyB,EAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,OAAO;QACjC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,0BAA0B;QACtD,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,0BAA0B;QAC/D,kBAAkB,EAAE,IAAI,CAAC,oBAAoB;QAC7C,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;QACzC,UAAU,EAAE,IAAI,CAAC,WAAW;QAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,SAAS,EAAE,IAAI,CAAC,UAAU;QAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;QAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;KAC3B,CAAA;AACH,CAAC,CAAA;AArBY,QAAA,aAAa,iBAqBzB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL detection utilities for ETO access links
|
|
3
|
+
* Following Dub's exact patterns
|
|
4
|
+
*/
|
|
5
|
+
export declare const isSingularTrackingUrl: (url: string | null | undefined) => boolean;
|
|
6
|
+
export declare const isGooglePlayStoreUrl: (url: string | null | undefined) => boolean;
|
|
7
|
+
export declare const isIosAppStoreUrl: (url: string | null | undefined) => boolean;
|
|
8
|
+
export declare const isTrackingUrl: (url: string | null | undefined) => boolean;
|
|
9
|
+
export declare const hashString: (str: string) => number;
|
|
10
|
+
//# sourceMappingURL=url-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-detection.d.ts","sourceRoot":"","sources":["../../src/access-link/url-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,OAStE,CAAA;AAGD,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,OASrE,CAAA;AAGD,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,OASjE,CAAA;AAGD,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,OAE9D,CAAA;AAGD,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAQxC,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* URL detection utilities for ETO access links
|
|
4
|
+
* Following Dub's exact patterns
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.hashString = exports.isTrackingUrl = exports.isIosAppStoreUrl = exports.isGooglePlayStoreUrl = exports.isSingularTrackingUrl = void 0;
|
|
8
|
+
// ETO equivalent of Dub's isSingularTrackingUrl
|
|
9
|
+
const isSingularTrackingUrl = (url) => {
|
|
10
|
+
if (!url)
|
|
11
|
+
return false;
|
|
12
|
+
try {
|
|
13
|
+
const parsedUrl = new URL(url);
|
|
14
|
+
return parsedUrl.hostname.endsWith(".sng.link");
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.isSingularTrackingUrl = isSingularTrackingUrl;
|
|
21
|
+
// ETO equivalent of Dub's isGooglePlayStoreUrl
|
|
22
|
+
const isGooglePlayStoreUrl = (url) => {
|
|
23
|
+
if (!url)
|
|
24
|
+
return false;
|
|
25
|
+
try {
|
|
26
|
+
const parsedUrl = new URL(url);
|
|
27
|
+
return parsedUrl.hostname === "play.google.com";
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.isGooglePlayStoreUrl = isGooglePlayStoreUrl;
|
|
34
|
+
// ETO equivalent of Dub's isIosAppStoreUrl
|
|
35
|
+
const isIosAppStoreUrl = (url) => {
|
|
36
|
+
if (!url)
|
|
37
|
+
return false;
|
|
38
|
+
try {
|
|
39
|
+
const parsedUrl = new URL(url);
|
|
40
|
+
return parsedUrl.hostname === "apps.apple.com";
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.isIosAppStoreUrl = isIosAppStoreUrl;
|
|
47
|
+
// ETO tracking URL detection (combining Singular and other tracking services)
|
|
48
|
+
const isTrackingUrl = (url) => {
|
|
49
|
+
return (0, exports.isSingularTrackingUrl)(url);
|
|
50
|
+
};
|
|
51
|
+
exports.isTrackingUrl = isTrackingUrl;
|
|
52
|
+
// Simple hash function for consistent user assignment
|
|
53
|
+
const hashString = (str) => {
|
|
54
|
+
let hash = 0;
|
|
55
|
+
for (let i = 0; i < str.length; i++) {
|
|
56
|
+
const char = str.charCodeAt(i);
|
|
57
|
+
hash = ((hash << 5) - hash) + char;
|
|
58
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
59
|
+
}
|
|
60
|
+
return Math.abs(hash) / 2147483647; // Normalize to 0-1
|
|
61
|
+
};
|
|
62
|
+
exports.hashString = hashString;
|
|
63
|
+
//# sourceMappingURL=url-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-detection.js","sourceRoot":"","sources":["../../src/access-link/url-detection.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gDAAgD;AACzC,MAAM,qBAAqB,GAAG,CAAC,GAA8B,EAAW,EAAE;IAC/E,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IAEtB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AATY,QAAA,qBAAqB,yBASjC;AAED,iDAAiD;AAC1C,MAAM,oBAAoB,GAAG,CAAC,GAA8B,EAAW,EAAE;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IAEtB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,OAAO,SAAS,CAAC,QAAQ,KAAK,iBAAiB,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AATY,QAAA,oBAAoB,wBAShC;AAED,2CAA2C;AACpC,MAAM,gBAAgB,GAAG,CAAC,GAA8B,EAAW,EAAE;IAC1E,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IAEtB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,OAAO,SAAS,CAAC,QAAQ,KAAK,gBAAgB,CAAA;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AATY,QAAA,gBAAgB,oBAS5B;AAED,8EAA8E;AACvE,MAAM,aAAa,GAAG,CAAC,GAA8B,EAAW,EAAE;IACvE,OAAO,IAAA,6BAAqB,EAAC,GAAG,CAAC,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,aAAa,iBAEzB;AAED,sDAAsD;AAC/C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;IAChD,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;QAClC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,4BAA4B;IACjD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA,CAAC,mBAAmB;AACxD,CAAC,CAAA;AARY,QAAA,UAAU,cAQtB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const checkIfLinksHaveProjects: (links: {
|
|
2
|
+
project_id?: string | null;
|
|
3
|
+
}[]) => boolean;
|
|
4
|
+
export declare const checkIfLinksHaveTargetResources: (links: {
|
|
5
|
+
target_resource_type?: string | null;
|
|
6
|
+
target_resource_id?: string | null;
|
|
7
|
+
}[]) => boolean;
|
|
8
|
+
export declare const checkIfLinksHaveExpiration: (links: {
|
|
9
|
+
expires_at?: Date | null;
|
|
10
|
+
}[]) => boolean;
|
|
11
|
+
export declare const checkIfLinksHaveUsageLimits: (links: {
|
|
12
|
+
max_uses?: number | null;
|
|
13
|
+
}[]) => boolean;
|
|
14
|
+
export declare const RESERVED_ACCESS_KEYS: string[];
|
|
15
|
+
export declare const isReservedAccessKey: (key: string) => boolean;
|
|
16
|
+
export declare function accessKeyChecks({ domain, key, checkExists, }: {
|
|
17
|
+
domain: string;
|
|
18
|
+
key: string;
|
|
19
|
+
checkExists?: (domain: string, key: string) => Promise<boolean>;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
error: string | null;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=validation-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-utils.d.ts","sourceRoot":"","sources":["../../src/access-link/validation-utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,GACnC,OAAO;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,YACC,CAAA;AAE1C,eAAO,MAAM,+BAA+B,GAC1C,OAAO;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,YACR,CAAA;AAE/E,eAAO,MAAM,0BAA0B,GACrC,OAAO;IAAE,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,EAAE,YACG,CAAA;AAE1C,eAAO,MAAM,2BAA2B,GACtC,OAAO;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,YACsB,CAAA;AAG7D,eAAO,MAAM,oBAAoB,UAahC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,OAEjD,CAAA;AAED,wBAAsB,eAAe,CAAC,EACpC,MAAM,EACN,GAAG,EACH,WAAW,GACZ,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAChE,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA4BpC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Access link validation utilities (following Dub's patterns)
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isReservedAccessKey = exports.RESERVED_ACCESS_KEYS = exports.checkIfLinksHaveUsageLimits = exports.checkIfLinksHaveExpiration = exports.checkIfLinksHaveTargetResources = exports.checkIfLinksHaveProjects = void 0;
|
|
5
|
+
exports.accessKeyChecks = accessKeyChecks;
|
|
6
|
+
const checkIfLinksHaveProjects = (links) => links.some((link) => link.project_id);
|
|
7
|
+
exports.checkIfLinksHaveProjects = checkIfLinksHaveProjects;
|
|
8
|
+
const checkIfLinksHaveTargetResources = (links) => links.some((link) => link.target_resource_type && link.target_resource_id);
|
|
9
|
+
exports.checkIfLinksHaveTargetResources = checkIfLinksHaveTargetResources;
|
|
10
|
+
const checkIfLinksHaveExpiration = (links) => links.some((link) => link.expires_at);
|
|
11
|
+
exports.checkIfLinksHaveExpiration = checkIfLinksHaveExpiration;
|
|
12
|
+
const checkIfLinksHaveUsageLimits = (links) => links.some((link) => link.max_uses && link.max_uses > 0);
|
|
13
|
+
exports.checkIfLinksHaveUsageLimits = checkIfLinksHaveUsageLimits;
|
|
14
|
+
// Reserved keys for access links
|
|
15
|
+
exports.RESERVED_ACCESS_KEYS = [
|
|
16
|
+
"admin",
|
|
17
|
+
"api",
|
|
18
|
+
"app",
|
|
19
|
+
"auth",
|
|
20
|
+
"dashboard",
|
|
21
|
+
"help",
|
|
22
|
+
"invite",
|
|
23
|
+
"login",
|
|
24
|
+
"logout",
|
|
25
|
+
"settings",
|
|
26
|
+
"support",
|
|
27
|
+
"www"
|
|
28
|
+
];
|
|
29
|
+
const isReservedAccessKey = (key) => {
|
|
30
|
+
return exports.RESERVED_ACCESS_KEYS.includes(key.toLowerCase());
|
|
31
|
+
};
|
|
32
|
+
exports.isReservedAccessKey = isReservedAccessKey;
|
|
33
|
+
async function accessKeyChecks({ domain, key, checkExists, }) {
|
|
34
|
+
if ((0, exports.isReservedAccessKey)(key)) {
|
|
35
|
+
return {
|
|
36
|
+
error: `The key "${key}" is reserved and cannot be used for access links.`
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (key.length < 1) {
|
|
40
|
+
return {
|
|
41
|
+
error: "Access link key must be at least 1 character long."
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (key.length > 50) {
|
|
45
|
+
return {
|
|
46
|
+
error: "Access link key cannot be longer than 50 characters."
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Check if key already exists
|
|
50
|
+
if (checkExists && await checkExists(domain, key)) {
|
|
51
|
+
return {
|
|
52
|
+
error: `The key "${key}" already exists for domain "${domain}".`
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return { error: null };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=validation-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-utils.js","sourceRoot":"","sources":["../../src/access-link/validation-utils.ts"],"names":[],"mappings":";AAAA,8DAA8D;;;AAsC9D,0CAoCC;AAxEM,MAAM,wBAAwB,GAAG,CACtC,KAAuC,EACvC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAF7B,QAAA,wBAAwB,4BAEK;AAEnC,MAAM,+BAA+B,GAAG,CAC7C,KAAqF,EACrF,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAA;AAFlE,QAAA,+BAA+B,mCAEmC;AAExE,MAAM,0BAA0B,GAAG,CACxC,KAAqC,EACrC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAF7B,QAAA,0BAA0B,8BAEG;AAEnC,MAAM,2BAA2B,GAAG,CACzC,KAAqC,EACrC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;AAFhD,QAAA,2BAA2B,+BAEqB;AAE7D,iCAAiC;AACpB,QAAA,oBAAoB,GAAG;IAClC,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,WAAW;IACX,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,UAAU;IACV,SAAS;IACT,KAAK;CACN,CAAA;AAEM,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAW,EAAE;IAC1D,OAAO,4BAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;AACzD,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B;AAEM,KAAK,UAAU,eAAe,CAAC,EACpC,MAAM,EACN,GAAG,EACH,WAAW,GAKZ;IAEC,IAAI,IAAA,2BAAmB,EAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,YAAY,GAAG,oDAAoD;SAC3E,CAAA;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,oDAAoD;SAC5D,CAAA;IACH,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,sDAAsD;SAC9D,CAAA;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,WAAW,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,YAAY,GAAG,gCAAgC,MAAM,IAAI;SACjE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-bot.d.ts","sourceRoot":"","sources":["../../src/analytics/detect-bot.ts"],"names":[],"mappings":"AAMA,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAe/C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectBot = detectBot;
|
|
4
|
+
// Basic bot detection patterns (simplified from Dub's implementation)
|
|
5
|
+
const UA_BOTS = [
|
|
6
|
+
"bot", "crawler", "spider", "scraper", "facebook", "twitter", "linkedin",
|
|
7
|
+
"whatsapp", "telegram", "slack", "discord", "googlebot", "bingbot"
|
|
8
|
+
];
|
|
9
|
+
function detectBot(req) {
|
|
10
|
+
const searchParams = new URL(req.url).searchParams;
|
|
11
|
+
if (searchParams.get("bot")) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
// Check user agent
|
|
15
|
+
const userAgent = req.headers.get("user-agent")?.toLowerCase();
|
|
16
|
+
if (userAgent) {
|
|
17
|
+
return UA_BOTS.some((bot) => userAgent.includes(bot));
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=detect-bot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-bot.js","sourceRoot":"","sources":["../../src/analytics/detect-bot.ts"],"names":[],"mappings":";;AAMA,8BAeC;AArBD,sEAAsE;AACtE,MAAM,OAAO,GAAG;IACd,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;IACxE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CACnE,CAAA;AAED,SAAgB,SAAS,CAAC,GAAY;IACpC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAA;IAElD,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAE9D,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-qr.d.ts","sourceRoot":"","sources":["../../src/analytics/detect-qr.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI9C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectQr = detectQr;
|
|
4
|
+
function detectQr(req) {
|
|
5
|
+
const searchParams = new URL(req.url).searchParams;
|
|
6
|
+
if (searchParams.get("qr") === "1")
|
|
7
|
+
return true;
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=detect-qr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-qr.js","sourceRoot":"","sources":["../../src/analytics/detect-qr.ts"],"names":[],"mappings":";;AAAA,4BAIC;AAJD,SAAgB,QAAQ,CAAC,GAAY;IACnC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAA;IAClD,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IAC/C,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-click-event.d.ts","sourceRoot":"","sources":["../../src/analytics/get-click-event.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,EAClC,cAAc,EACd,OAAO,GACR,EAAE;IACD,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;CAChB,gBAuBA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { createTinybirdClient } from "./tinybird-client"
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getClickEvent = getClickEvent;
|
|
5
|
+
async function getClickEvent({ tinybirdConfig, clickId, }) {
|
|
6
|
+
// const tb = createTinybirdClient(tinybirdConfig)
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(`${tinybirdConfig.apiUrl}/v0/pipes/get_click_event.json?click_id=${clickId}`, {
|
|
9
|
+
headers: {
|
|
10
|
+
Authorization: `Bearer ${tinybirdConfig.apiKey}`,
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
if (!response.ok) {
|
|
14
|
+
throw new Error(`Failed to get click event: ${response.status}`);
|
|
15
|
+
}
|
|
16
|
+
const data = await response.json();
|
|
17
|
+
return data.data?.[0] || null;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error("Failed to get click event:", error);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=get-click-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-click-event.js","sourceRoot":"","sources":["../../src/analytics/get-click-event.ts"],"names":[],"mappings":";AAAA,2DAA2D;;AAE3D,sCA6BC;AA7BM,KAAK,UAAU,aAAa,CAAC,EAClC,cAAc,EACd,OAAO,GAIR;IACC,kDAAkD;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,cAAc,CAAC,MAAM,2CAA2C,OAAO,EAAE,EAC5E;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,cAAc,CAAC,MAAM,EAAE;aACjD;SACF,CACF,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface GeolocationData {
|
|
2
|
+
continent?: string | null;
|
|
3
|
+
country?: string | null;
|
|
4
|
+
region?: string | null;
|
|
5
|
+
city?: string | null;
|
|
6
|
+
latitude?: string | null;
|
|
7
|
+
longitude?: string | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function getGeolocationFromHeaders(headers: Record<string, string>): GeolocationData;
|
|
10
|
+
export declare function getGeolocationFromIP(ip: string): Promise<GeolocationData>;
|
|
11
|
+
export declare function getIPFromRequest(headers: Record<string, string>): string | null;
|
|
12
|
+
//# sourceMappingURL=get-geolocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-geolocation.d.ts","sourceRoot":"","sources":["../../src/analytics/get-geolocation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAGD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,CAS1F;AAGD,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA0B/E;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAQ/E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// IP Geolocation utilities for access link analytics
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getGeolocationFromHeaders = getGeolocationFromHeaders;
|
|
5
|
+
exports.getGeolocationFromIP = getGeolocationFromIP;
|
|
6
|
+
exports.getIPFromRequest = getIPFromRequest;
|
|
7
|
+
// Extract geolocation from request headers (CloudFlare, AWS CloudFront, etc.)
|
|
8
|
+
function getGeolocationFromHeaders(headers) {
|
|
9
|
+
return {
|
|
10
|
+
continent: headers['cf-ipcontinent'] || headers['cloudfront-viewer-continent'] || null,
|
|
11
|
+
country: headers['cf-ipcountry'] || headers['cloudfront-viewer-country'] || null,
|
|
12
|
+
region: headers['cf-region'] || headers['cloudfront-viewer-country-region'] || null,
|
|
13
|
+
city: headers['cf-ipcity'] || null,
|
|
14
|
+
latitude: headers['cf-iplatitude'] || null,
|
|
15
|
+
longitude: headers['cf-iplongitude'] || null,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Fallback geolocation using IP API service
|
|
19
|
+
async function getGeolocationFromIP(ip) {
|
|
20
|
+
if (!ip || ip === '127.0.0.1' || ip === '::1') {
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const response = await fetch(`http://ip-api.com/json/${ip}?fields=continent,country,regionName,city,lat,lon`);
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
const data = await response.json();
|
|
29
|
+
return {
|
|
30
|
+
continent: data.continent || null,
|
|
31
|
+
country: data.country || null,
|
|
32
|
+
region: data.regionName || null,
|
|
33
|
+
city: data.city || null,
|
|
34
|
+
latitude: data.lat?.toString() || null,
|
|
35
|
+
longitude: data.lon?.toString() || null,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('Failed to get geolocation from IP:', error);
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Get IP address from request
|
|
44
|
+
function getIPFromRequest(headers) {
|
|
45
|
+
return (headers['cf-connecting-ip'] ||
|
|
46
|
+
headers['x-forwarded-for']?.split(',')[0]?.trim() ||
|
|
47
|
+
headers['x-real-ip'] ||
|
|
48
|
+
headers['x-client-ip'] ||
|
|
49
|
+
null);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=get-geolocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-geolocation.js","sourceRoot":"","sources":["../../src/analytics/get-geolocation.ts"],"names":[],"mappings":";AAAA,qDAAqD;;AAYrD,8DASC;AAGD,oDA0BC;AAGD,4CAQC;AAlDD,8EAA8E;AAC9E,SAAgB,yBAAyB,CAAC,OAA+B;IACvE,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,6BAA6B,CAAC,IAAI,IAAI;QACtF,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,2BAA2B,CAAC,IAAI,IAAI;QAChF,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,kCAAkC,CAAC,IAAI,IAAI;QACnF,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI;QAClC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI;QAC1C,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI;KAC7C,CAAA;AACH,CAAC;AAED,4CAA4C;AACrC,KAAK,UAAU,oBAAoB,CAAC,EAAU;IACnD,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,0BAA0B,EAAE,mDAAmD,CAAC,CAAA;QAE7G,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAElC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;YAC7B,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,IAAI;YACtC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,IAAI;SACxC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;QAC1D,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,8BAA8B;AAC9B,SAAgB,gBAAgB,CAAC,OAA+B;IAC9D,OAAO,CACL,OAAO,CAAC,kBAAkB,CAAC;QAC3B,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;QACjD,OAAO,CAAC,WAAW,CAAC;QACpB,OAAO,CAAC,aAAa,CAAC;QACtB,IAAI,CACL,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-grant-event.d.ts","sourceRoot":"","sources":["../../src/analytics/get-grant-event.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,EAClC,cAAc,EACd,OAAO,GACR,EAAE;IACD,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;CAChB,gBAuBA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { createTinybirdClient } from "./tinybird-client"
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getGrantEvent = getGrantEvent;
|
|
5
|
+
async function getGrantEvent({ tinybirdConfig, grantId, }) {
|
|
6
|
+
// const tb = createTinybirdClient(tinybirdConfig)
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(`${tinybirdConfig.apiUrl}/v0/pipes/get_grant_event.json?grant_id=${grantId}`, {
|
|
9
|
+
headers: {
|
|
10
|
+
Authorization: `Bearer ${tinybirdConfig.apiKey}`,
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
if (!response.ok) {
|
|
14
|
+
throw new Error(`Failed to get grant event: ${response.status}`);
|
|
15
|
+
}
|
|
16
|
+
const data = await response.json();
|
|
17
|
+
return data.data?.[0] || null;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error("Failed to get grant event:", error);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=get-grant-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-grant-event.js","sourceRoot":"","sources":["../../src/analytics/get-grant-event.ts"],"names":[],"mappings":";AAAA,2DAA2D;;AAE3D,sCA6BC;AA7BM,KAAK,UAAU,aAAa,CAAC,EAClC,cAAc,EACd,OAAO,GAIR;IACC,kDAAkD;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,cAAc,CAAC,MAAM,2CAA2C,OAAO,EAAE,EAC5E;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,cAAc,CAAC,MAAM,EAAE;aACjD;SACF,CACF,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Tinybird } from "@chronark/zod-bird";
|
|
2
|
+
export declare function createGetImportErrorLogs(tb: Tinybird): (params: any) => Promise<{
|
|
3
|
+
meta: {
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
}[];
|
|
7
|
+
rows?: number | undefined;
|
|
8
|
+
rows_before_limit_at_least?: number | undefined;
|
|
9
|
+
statistics?: {
|
|
10
|
+
elapsed?: number | undefined;
|
|
11
|
+
rows_read?: number | undefined;
|
|
12
|
+
bytes_read?: number | undefined;
|
|
13
|
+
} | undefined;
|
|
14
|
+
} & {
|
|
15
|
+
data: any[];
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=get-import-error-logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-import-error-logs.d.ts","sourceRoot":"","sources":["../../src/analytics/get-import-error-logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAS7C,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ;;;;;;;;eAYyhB,CAAC;iBAAuC,CAAC;kBAAwC,CAAC;;;;GAD/pB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGetImportErrorLogs = createGetImportErrorLogs;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const importErrorLogSchema = zod_1.z.object({
|
|
6
|
+
project_id: zod_1.z.string(),
|
|
7
|
+
import_id: zod_1.z.string(),
|
|
8
|
+
error: zod_1.z.string(),
|
|
9
|
+
context: zod_1.z.string().default(""),
|
|
10
|
+
});
|
|
11
|
+
function createGetImportErrorLogs(tb) {
|
|
12
|
+
return tb.buildPipe({
|
|
13
|
+
pipe: "get_import_error_logs",
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
parameters: zod_1.z.object({
|
|
16
|
+
projectId: zod_1.z.string(),
|
|
17
|
+
importId: zod_1.z.string(),
|
|
18
|
+
}),
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
data: importErrorLogSchema,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=get-import-error-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-import-error-logs.js","sourceRoot":"","sources":["../../src/analytics/get-import-error-logs.ts"],"names":[],"mappings":";;AAUA,4DAWC;AArBD,6BAAuB;AAGvB,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAChC,CAAC,CAAA;AAEF,SAAgB,wBAAwB,CAAC,EAAY;IACnD,OAAO,EAAE,CAAC,SAAS,CAAC;QAClB,IAAI,EAAE,uBAAuB;QAC7B,aAAa;QACb,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;SACrB,CAAC;QACF,aAAa;QACb,IAAI,EAAE,oBAAoB;KAC3B,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Tinybird } from "@chronark/zod-bird";
|
|
2
|
+
export declare function createGetLeadEvents(tb: Tinybird): (params: any) => Promise<{
|
|
3
|
+
meta: {
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
}[];
|
|
7
|
+
rows?: number | undefined;
|
|
8
|
+
rows_before_limit_at_least?: number | undefined;
|
|
9
|
+
statistics?: {
|
|
10
|
+
elapsed?: number | undefined;
|
|
11
|
+
rows_read?: number | undefined;
|
|
12
|
+
bytes_read?: number | undefined;
|
|
13
|
+
} | undefined;
|
|
14
|
+
} & {
|
|
15
|
+
data: any[];
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=get-lead-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-lead-events.d.ts","sourceRoot":"","sources":["../../src/analytics/get-lead-events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ;;;;;;;;eAWgqB,CAAC;iBAAuC,CAAC;kBAAwC,CAAC;;;;GADjyB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGetLeadEvents = createGetLeadEvents;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const leads_1 = require("../zod/schemas/leads");
|
|
6
|
+
function createGetLeadEvents(tb) {
|
|
7
|
+
return tb.buildPipe({
|
|
8
|
+
pipe: "get_lead_events",
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
parameters: zod_1.z.object({
|
|
11
|
+
userIds: zod_1.z.string().array(),
|
|
12
|
+
}),
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
data: leads_1.leadEventSchemaTB,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=get-lead-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-lead-events.js","sourceRoot":"","sources":["../../src/analytics/get-lead-events.ts"],"names":[],"mappings":";;AAIA,kDAUC;AAdD,6BAAuB;AAEvB,gDAAwD;AAExD,SAAgB,mBAAmB,CAAC,EAAY;IAC9C,OAAO,EAAE,CAAC,SAAS,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,aAAa;QACb,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;SAC5B,CAAC;QACF,aAAa;QACb,IAAI,EAAE,yBAAiB;KACxB,CAAC,CAAA;AACJ,CAAC"}
|