@lhremote/core 0.6.0 → 0.7.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/README.md +39 -0
- package/dist/cdp/client.d.ts +5 -1
- package/dist/cdp/client.d.ts.map +1 -1
- package/dist/cdp/client.js +11 -3
- package/dist/cdp/client.js.map +1 -1
- package/dist/data/index.d.ts +1 -0
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +1 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/linkedin-reference.d.ts +44 -0
- package/dist/data/linkedin-reference.d.ts.map +1 -0
- package/dist/data/linkedin-reference.js +316 -0
- package/dist/data/linkedin-reference.js.map +1 -0
- package/dist/data/linkedin-reference.test.d.ts +2 -0
- package/dist/data/linkedin-reference.test.d.ts.map +1 -0
- package/dist/data/linkedin-reference.test.js +124 -0
- package/dist/data/linkedin-reference.test.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/operations/build-linkedin-url.d.ts +39 -0
- package/dist/operations/build-linkedin-url.d.ts.map +1 -0
- package/dist/operations/build-linkedin-url.js +72 -0
- package/dist/operations/build-linkedin-url.js.map +1 -0
- package/dist/operations/index.d.ts +2 -0
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +3 -0
- package/dist/operations/index.js.map +1 -1
- package/dist/operations/resolve-linkedin-entity.d.ts +33 -0
- package/dist/operations/resolve-linkedin-entity.d.ts.map +1 -0
- package/dist/operations/resolve-linkedin-entity.js +198 -0
- package/dist/operations/resolve-linkedin-entity.js.map +1 -0
- package/dist/services/app.d.ts.map +1 -1
- package/dist/services/app.js +37 -12
- package/dist/services/app.js.map +1 -1
- package/dist/services/app.test.js +57 -0
- package/dist/services/app.test.js.map +1 -1
- package/dist/services/boolean-expression.d.ts +29 -0
- package/dist/services/boolean-expression.d.ts.map +1 -0
- package/dist/services/boolean-expression.js +79 -0
- package/dist/services/boolean-expression.js.map +1 -0
- package/dist/services/boolean-expression.test.d.ts +2 -0
- package/dist/services/boolean-expression.test.d.ts.map +1 -0
- package/dist/services/boolean-expression.test.js +64 -0
- package/dist/services/boolean-expression.test.js.map +1 -0
- package/dist/services/collection.d.ts.map +1 -1
- package/dist/services/collection.js +9 -0
- package/dist/services/collection.js.map +1 -1
- package/dist/services/collection.test.js +17 -1
- package/dist/services/collection.test.js.map +1 -1
- package/dist/services/errors.d.ts +11 -0
- package/dist/services/errors.d.ts.map +1 -1
- package/dist/services/errors.js +15 -0
- package/dist/services/errors.js.map +1 -1
- package/dist/services/index.d.ts +5 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance.d.ts +12 -0
- package/dist/services/instance.d.ts.map +1 -1
- package/dist/services/instance.js +28 -0
- package/dist/services/instance.js.map +1 -1
- package/dist/services/instance.test.js +31 -0
- package/dist/services/instance.test.js.map +1 -1
- package/dist/services/launcher.d.ts +16 -0
- package/dist/services/launcher.d.ts.map +1 -1
- package/dist/services/launcher.js +63 -10
- package/dist/services/launcher.js.map +1 -1
- package/dist/services/launcher.test.js +109 -42
- package/dist/services/launcher.test.js.map +1 -1
- package/dist/services/sn-url-builder.d.ts +21 -0
- package/dist/services/sn-url-builder.d.ts.map +1 -0
- package/dist/services/sn-url-builder.js +132 -0
- package/dist/services/sn-url-builder.js.map +1 -0
- package/dist/services/sn-url-builder.test.d.ts +2 -0
- package/dist/services/sn-url-builder.test.d.ts.map +1 -0
- package/dist/services/sn-url-builder.test.js +130 -0
- package/dist/services/sn-url-builder.test.js.map +1 -0
- package/dist/services/url-builder.d.ts +12 -0
- package/dist/services/url-builder.d.ts.map +1 -0
- package/dist/services/url-builder.js +100 -0
- package/dist/services/url-builder.js.map +1 -0
- package/dist/services/url-builder.test.d.ts +2 -0
- package/dist/services/url-builder.test.d.ts.map +1 -0
- package/dist/services/url-builder.test.js +79 -0
- package/dist/services/url-builder.test.js.map +1 -0
- package/dist/services/url-templates.d.ts +41 -0
- package/dist/services/url-templates.d.ts.map +1 -0
- package/dist/services/url-templates.js +118 -0
- package/dist/services/url-templates.js.map +1 -0
- package/dist/services/url-templates.test.d.ts +2 -0
- package/dist/services/url-templates.test.d.ts.map +1 -0
- package/dist/services/url-templates.test.js +159 -0
- package/dist/services/url-templates.test.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/linkedin-url.d.ts +109 -0
- package/dist/types/linkedin-url.d.ts.map +1 -0
- package/dist/types/linkedin-url.js +4 -0
- package/dist/types/linkedin-url.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BasicSearchParams, UrlBuilderResult } from "../types/linkedin-url.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build a LinkedIn basic search (`/search/results/people/`) URL.
|
|
4
|
+
*
|
|
5
|
+
* Handles JSON-array encoding for faceted filters and boolean
|
|
6
|
+
* keyword composition.
|
|
7
|
+
*
|
|
8
|
+
* @param params - Search parameters
|
|
9
|
+
* @returns URL and any warnings
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildBasicSearchUrl(params: BasicSearchParams): UrlBuilderResult;
|
|
12
|
+
//# sourceMappingURL=url-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-builder.d.ts","sourceRoot":"","sources":["../../src/services/url-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAwClC;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,GACxB,gBAAgB,CAkElB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { buildBooleanExpression } from "./boolean-expression.js";
|
|
4
|
+
const BASE_URL = "https://www.linkedin.com/search/results/people/";
|
|
5
|
+
/**
|
|
6
|
+
* Parameter names that are only valid for Sales Navigator searches.
|
|
7
|
+
* If passed to the basic search builder, a warning is emitted.
|
|
8
|
+
*/
|
|
9
|
+
const SN_ONLY_PARAMS = new Set([
|
|
10
|
+
"seniorityLevel",
|
|
11
|
+
"function",
|
|
12
|
+
"companyHeadcount",
|
|
13
|
+
"companyType",
|
|
14
|
+
"yearsAtCurrentCompany",
|
|
15
|
+
"yearsAtCurrentPosition",
|
|
16
|
+
"yearsOfExperience",
|
|
17
|
+
]);
|
|
18
|
+
/**
|
|
19
|
+
* Resolve keywords to a string.
|
|
20
|
+
*
|
|
21
|
+
* Accepts either a plain string or a structured/raw boolean expression.
|
|
22
|
+
*/
|
|
23
|
+
function resolveKeywords(keywords) {
|
|
24
|
+
if (typeof keywords === "string")
|
|
25
|
+
return keywords;
|
|
26
|
+
return buildBooleanExpression(keywords);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Encode a string array as a JSON array string for LinkedIn URL params.
|
|
30
|
+
*
|
|
31
|
+
* LinkedIn uses `["value1","value2"]` encoding for faceted filters.
|
|
32
|
+
*/
|
|
33
|
+
function encodeJsonArray(values) {
|
|
34
|
+
return JSON.stringify(values);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build a LinkedIn basic search (`/search/results/people/`) URL.
|
|
38
|
+
*
|
|
39
|
+
* Handles JSON-array encoding for faceted filters and boolean
|
|
40
|
+
* keyword composition.
|
|
41
|
+
*
|
|
42
|
+
* @param params - Search parameters
|
|
43
|
+
* @returns URL and any warnings
|
|
44
|
+
*/
|
|
45
|
+
export function buildBasicSearchUrl(params) {
|
|
46
|
+
const warnings = [];
|
|
47
|
+
const searchParams = new URLSearchParams();
|
|
48
|
+
// Keywords
|
|
49
|
+
if (params.keywords !== undefined) {
|
|
50
|
+
const keywordsStr = resolveKeywords(params.keywords);
|
|
51
|
+
if (keywordsStr.length > 0) {
|
|
52
|
+
searchParams.set("keywords", keywordsStr);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Faceted array filters
|
|
56
|
+
const arrayFilters = [
|
|
57
|
+
{
|
|
58
|
+
key: "currentCompany",
|
|
59
|
+
urlKey: "currentCompany",
|
|
60
|
+
values: params.currentCompany,
|
|
61
|
+
},
|
|
62
|
+
{ key: "pastCompany", urlKey: "pastCompany", values: params.pastCompany },
|
|
63
|
+
{ key: "geoUrn", urlKey: "geoUrn", values: params.geoUrn },
|
|
64
|
+
{ key: "industry", urlKey: "industry", values: params.industry },
|
|
65
|
+
{ key: "school", urlKey: "schoolFilter", values: params.school },
|
|
66
|
+
{ key: "network", urlKey: "network", values: params.network },
|
|
67
|
+
{
|
|
68
|
+
key: "profileLanguage",
|
|
69
|
+
urlKey: "profileLanguage",
|
|
70
|
+
values: params.profileLanguage,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: "serviceCategory",
|
|
74
|
+
urlKey: "serviceCategory",
|
|
75
|
+
values: params.serviceCategory,
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
for (const filter of arrayFilters) {
|
|
79
|
+
if (filter.values !== undefined) {
|
|
80
|
+
if (filter.values.length === 0) {
|
|
81
|
+
warnings.push(`Empty filter array for "${filter.key}" — ignored`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
searchParams.set(filter.urlKey, encodeJsonArray(filter.values));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Check for SN-only params passed via extra keys
|
|
88
|
+
// (This is a type-level guard — the BasicSearchParams interface
|
|
89
|
+
// doesn't include SN-only params, but callers may pass them via
|
|
90
|
+
// a wider type.)
|
|
91
|
+
for (const key of Object.keys(params)) {
|
|
92
|
+
if (SN_ONLY_PARAMS.has(key)) {
|
|
93
|
+
warnings.push(`"${key}" is a Sales Navigator filter — not applicable to basic search`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const qs = searchParams.toString();
|
|
97
|
+
const url = qs.length > 0 ? `${BASE_URL}?${qs}` : BASE_URL;
|
|
98
|
+
return { url, sourceType: "SearchPage", warnings };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=url-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-builder.js","sourceRoot":"","sources":["../../src/services/url-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-builder.test.d.ts","sourceRoot":"","sources":["../../src/services/url-builder.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { detectSourceType } from "./source-type-registry.js";
|
|
5
|
+
import { buildBasicSearchUrl } from "./url-builder.js";
|
|
6
|
+
describe("buildBasicSearchUrl", () => {
|
|
7
|
+
it("builds base URL with no params", () => {
|
|
8
|
+
const result = buildBasicSearchUrl({});
|
|
9
|
+
expect(result.url).toBe("https://www.linkedin.com/search/results/people/");
|
|
10
|
+
expect(result.sourceType).toBe("SearchPage");
|
|
11
|
+
expect(result.warnings).toHaveLength(0);
|
|
12
|
+
});
|
|
13
|
+
it("includes keywords as query param", () => {
|
|
14
|
+
const result = buildBasicSearchUrl({ keywords: "software engineer" });
|
|
15
|
+
expect(result.url).toContain("keywords=software+engineer");
|
|
16
|
+
});
|
|
17
|
+
it("accepts boolean expression as keywords", () => {
|
|
18
|
+
const result = buildBasicSearchUrl({
|
|
19
|
+
keywords: { and: ["SaaS", "B2B"] },
|
|
20
|
+
});
|
|
21
|
+
expect(result.url).toContain("keywords=SaaS+AND+B2B");
|
|
22
|
+
});
|
|
23
|
+
it("accepts raw boolean expression as keywords", () => {
|
|
24
|
+
const result = buildBasicSearchUrl({
|
|
25
|
+
keywords: { raw: 'SaaS AND "VP"' },
|
|
26
|
+
});
|
|
27
|
+
expect(result.url).toContain("keywords=SaaS+AND+");
|
|
28
|
+
});
|
|
29
|
+
it("encodes currentCompany as JSON array", () => {
|
|
30
|
+
const result = buildBasicSearchUrl({ currentCompany: ["1441"] });
|
|
31
|
+
const url = new URL(result.url);
|
|
32
|
+
expect(url.searchParams.get("currentCompany")).toBe('["1441"]');
|
|
33
|
+
});
|
|
34
|
+
it("encodes multiple geoUrn values", () => {
|
|
35
|
+
const result = buildBasicSearchUrl({
|
|
36
|
+
geoUrn: ["103644278", "102277331"],
|
|
37
|
+
});
|
|
38
|
+
const url = new URL(result.url);
|
|
39
|
+
expect(url.searchParams.get("geoUrn")).toBe('["103644278","102277331"]');
|
|
40
|
+
});
|
|
41
|
+
it("encodes network filter", () => {
|
|
42
|
+
const result = buildBasicSearchUrl({ network: ["F", "S"] });
|
|
43
|
+
const url = new URL(result.url);
|
|
44
|
+
expect(url.searchParams.get("network")).toBe('["F","S"]');
|
|
45
|
+
});
|
|
46
|
+
it("encodes profileLanguage filter", () => {
|
|
47
|
+
const result = buildBasicSearchUrl({ profileLanguage: ["en"] });
|
|
48
|
+
const url = new URL(result.url);
|
|
49
|
+
expect(url.searchParams.get("profileLanguage")).toBe('["en"]');
|
|
50
|
+
});
|
|
51
|
+
it("encodes school as schoolFilter", () => {
|
|
52
|
+
const result = buildBasicSearchUrl({ school: ["13596"] });
|
|
53
|
+
const url = new URL(result.url);
|
|
54
|
+
expect(url.searchParams.get("schoolFilter")).toBe('["13596"]');
|
|
55
|
+
});
|
|
56
|
+
it("warns on empty filter arrays", () => {
|
|
57
|
+
const result = buildBasicSearchUrl({ currentCompany: [] });
|
|
58
|
+
expect(result.warnings).toHaveLength(1);
|
|
59
|
+
expect(result.warnings[0]).toContain("Empty filter array");
|
|
60
|
+
});
|
|
61
|
+
it("combines multiple filters", () => {
|
|
62
|
+
const result = buildBasicSearchUrl({
|
|
63
|
+
keywords: "software engineer",
|
|
64
|
+
currentCompany: ["1441"],
|
|
65
|
+
geoUrn: ["103644278"],
|
|
66
|
+
});
|
|
67
|
+
const url = new URL(result.url);
|
|
68
|
+
expect(url.searchParams.get("keywords")).toBe("software engineer");
|
|
69
|
+
expect(url.searchParams.get("currentCompany")).toBe('["1441"]');
|
|
70
|
+
expect(url.searchParams.get("geoUrn")).toBe('["103644278"]');
|
|
71
|
+
});
|
|
72
|
+
it("output URL is detected as SearchPage", () => {
|
|
73
|
+
const result = buildBasicSearchUrl({
|
|
74
|
+
keywords: "test",
|
|
75
|
+
});
|
|
76
|
+
expect(detectSourceType(result.url)).toBe("SearchPage");
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=url-builder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-builder.test.js","sourceRoot":"","sources":["../../src/services/url-builder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { SourceType } from "../types/collection.js";
|
|
2
|
+
/**
|
|
3
|
+
* Check whether a source type uses a fixed URL (no parameters needed).
|
|
4
|
+
*/
|
|
5
|
+
export declare function isFixedUrlType(sourceType: SourceType): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Check whether a source type uses a parameterised template.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isParameterisedType(sourceType: SourceType): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Check whether a source type uses the basic search URL builder.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isSearchBuilderType(sourceType: SourceType): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check whether a source type uses the Sales Navigator URL builder.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isSNSearchBuilderType(sourceType: SourceType): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Get the fixed URL for a source type.
|
|
20
|
+
*
|
|
21
|
+
* @returns The URL, or `undefined` if the source type is not a fixed URL type.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getFixedUrl(sourceType: SourceType): string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Build a parameterised URL for a source type.
|
|
26
|
+
*
|
|
27
|
+
* @param sourceType - The source type to build a URL for.
|
|
28
|
+
* @param params - The slug or ID to substitute.
|
|
29
|
+
* @returns The built URL, or `undefined` if the source type is not parameterised.
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildParameterisedUrl(sourceType: SourceType, params: {
|
|
32
|
+
slug?: string;
|
|
33
|
+
id?: string;
|
|
34
|
+
}): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Get the required parameter type for a parameterised source type.
|
|
37
|
+
*
|
|
38
|
+
* @returns `"slug"`, `"id"`, or `undefined` if not a parameterised type.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getParameterType(sourceType: SourceType): "slug" | "id" | undefined;
|
|
41
|
+
//# sourceMappingURL=url-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-templates.d.ts","sourceRoot":"","sources":["../../src/services/url-templates.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAqEzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAErE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,MAAM,GAAG,SAAS,CASpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,GACrB,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3B"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
/**
|
|
4
|
+
* Fixed LinkedIn URLs that require no parameters.
|
|
5
|
+
*/
|
|
6
|
+
const FIXED_URLS = {
|
|
7
|
+
MyConnections: "https://www.linkedin.com/mynetwork/invite-connect/connections/",
|
|
8
|
+
LWVYPP: "https://www.linkedin.com/me/profile-views/",
|
|
9
|
+
SentInvitationPage: "https://www.linkedin.com/mynetwork/invitation-manager/sent/",
|
|
10
|
+
FollowersPage: "https://www.linkedin.com/me/my-network/followers/",
|
|
11
|
+
FollowingPage: "https://www.linkedin.com/me/my-network/following/",
|
|
12
|
+
SNOrgsPage: "https://www.linkedin.com/sales/search/company",
|
|
13
|
+
TSearchPage: "https://www.linkedin.com/talent/search/",
|
|
14
|
+
RSearchPage: "https://www.linkedin.com/recruiter/search/",
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Parameterised URL templates.
|
|
18
|
+
*
|
|
19
|
+
* - `{slug}` is replaced with the provided slug string.
|
|
20
|
+
* - `{id}` is replaced with the provided ID string.
|
|
21
|
+
*/
|
|
22
|
+
const PARAMETERISED_TEMPLATES = {
|
|
23
|
+
OrganizationPeople: {
|
|
24
|
+
template: "https://www.linkedin.com/company/{slug}/people/",
|
|
25
|
+
param: "slug",
|
|
26
|
+
},
|
|
27
|
+
Alumni: {
|
|
28
|
+
template: "https://www.linkedin.com/school/{slug}/people/",
|
|
29
|
+
param: "slug",
|
|
30
|
+
},
|
|
31
|
+
Group: {
|
|
32
|
+
template: "https://www.linkedin.com/groups/{id}/members/",
|
|
33
|
+
param: "id",
|
|
34
|
+
},
|
|
35
|
+
Event: {
|
|
36
|
+
template: "https://www.linkedin.com/events/{id}/attendees/",
|
|
37
|
+
param: "id",
|
|
38
|
+
},
|
|
39
|
+
SNListPage: {
|
|
40
|
+
template: "https://www.linkedin.com/sales/lists/people/{id}/",
|
|
41
|
+
param: "id",
|
|
42
|
+
},
|
|
43
|
+
SNOrgsListsPage: {
|
|
44
|
+
template: "https://www.linkedin.com/sales/lists/company/{id}/",
|
|
45
|
+
param: "id",
|
|
46
|
+
},
|
|
47
|
+
TProjectPage: {
|
|
48
|
+
template: "https://www.linkedin.com/talent/projects/{id}/",
|
|
49
|
+
param: "id",
|
|
50
|
+
},
|
|
51
|
+
RProjectPage: {
|
|
52
|
+
template: "https://www.linkedin.com/recruiter/projects/{id}/",
|
|
53
|
+
param: "id",
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
/** Source types that use the basic search URL builder. */
|
|
57
|
+
const SEARCH_BUILDER_TYPES = new Set(["SearchPage"]);
|
|
58
|
+
/** Source types that use the SN search URL builder. */
|
|
59
|
+
const SN_SEARCH_BUILDER_TYPES = new Set([
|
|
60
|
+
"SNSearchPage",
|
|
61
|
+
]);
|
|
62
|
+
/**
|
|
63
|
+
* Check whether a source type uses a fixed URL (no parameters needed).
|
|
64
|
+
*/
|
|
65
|
+
export function isFixedUrlType(sourceType) {
|
|
66
|
+
return sourceType in FIXED_URLS;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check whether a source type uses a parameterised template.
|
|
70
|
+
*/
|
|
71
|
+
export function isParameterisedType(sourceType) {
|
|
72
|
+
return sourceType in PARAMETERISED_TEMPLATES;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check whether a source type uses the basic search URL builder.
|
|
76
|
+
*/
|
|
77
|
+
export function isSearchBuilderType(sourceType) {
|
|
78
|
+
return SEARCH_BUILDER_TYPES.has(sourceType);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check whether a source type uses the Sales Navigator URL builder.
|
|
82
|
+
*/
|
|
83
|
+
export function isSNSearchBuilderType(sourceType) {
|
|
84
|
+
return SN_SEARCH_BUILDER_TYPES.has(sourceType);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the fixed URL for a source type.
|
|
88
|
+
*
|
|
89
|
+
* @returns The URL, or `undefined` if the source type is not a fixed URL type.
|
|
90
|
+
*/
|
|
91
|
+
export function getFixedUrl(sourceType) {
|
|
92
|
+
return FIXED_URLS[sourceType];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build a parameterised URL for a source type.
|
|
96
|
+
*
|
|
97
|
+
* @param sourceType - The source type to build a URL for.
|
|
98
|
+
* @param params - The slug or ID to substitute.
|
|
99
|
+
* @returns The built URL, or `undefined` if the source type is not parameterised.
|
|
100
|
+
*/
|
|
101
|
+
export function buildParameterisedUrl(sourceType, params) {
|
|
102
|
+
const entry = PARAMETERISED_TEMPLATES[sourceType];
|
|
103
|
+
if (entry === undefined)
|
|
104
|
+
return undefined;
|
|
105
|
+
const value = entry.param === "slug" ? params.slug : params.id;
|
|
106
|
+
if (value === undefined)
|
|
107
|
+
return undefined;
|
|
108
|
+
return entry.template.replace(`{${entry.param}}`, encodeURIComponent(value));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the required parameter type for a parameterised source type.
|
|
112
|
+
*
|
|
113
|
+
* @returns `"slug"`, `"id"`, or `undefined` if not a parameterised type.
|
|
114
|
+
*/
|
|
115
|
+
export function getParameterType(sourceType) {
|
|
116
|
+
return PARAMETERISED_TEMPLATES[sourceType]?.param;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=url-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-templates.js","sourceRoot":"","sources":["../../src/services/url-templates.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAIpC;;GAEG;AACH,MAAM,UAAU,GAAwC;IACtD,aAAa,EACX,gEAAgE;IAClE,MAAM,EAAE,4CAA4C;IACpD,kBAAkB,EAChB,6DAA6D;IAC/D,aAAa,EAAE,mDAAmD;IAClE,aAAa,EAAE,mDAAmD;IAClE,UAAU,EAAE,+CAA+C;IAC3D,WAAW,EAAE,yCAAyC;IACtD,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,uBAAuB,GAEzB;IACF,kBAAkB,EAAE;QAClB,QAAQ,EAAE,iDAAiD;QAC3D,KAAK,EAAE,MAAM;KACd;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,gDAAgD;QAC1D,KAAK,EAAE,MAAM;KACd;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,+CAA+C;QACzD,KAAK,EAAE,IAAI;KACZ;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,iDAAiD;QAC3D,KAAK,EAAE,IAAI;KACZ;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,mDAAmD;QAC7D,KAAK,EAAE,IAAI;KACZ;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,oDAAoD;QAC9D,KAAK,EAAE,IAAI;KACZ;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,gDAAgD;QAC1D,KAAK,EAAE,IAAI;KACZ;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,mDAAmD;QAC7D,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAEF,0DAA0D;AAC1D,MAAM,oBAAoB,GAA4B,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAE9E,uDAAuD;AACvD,MAAM,uBAAuB,GAA4B,IAAI,GAAG,CAAC;IAC/D,cAAc;CACf,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAsB;IACnD,OAAO,UAAU,IAAI,UAAU,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,OAAO,UAAU,IAAI,uBAAuB,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsB;IACxD,OAAO,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAsB;IAC1D,OAAO,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,UAAsB;IAChD,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAsB,EACtB,MAAsC;IAEtC,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,KAAK,GACT,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAsB;IAEtB,OAAO,uBAAuB,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-templates.test.d.ts","sourceRoot":"","sources":["../../src/services/url-templates.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { detectSourceType } from "./source-type-registry.js";
|
|
5
|
+
import { buildParameterisedUrl, getFixedUrl, getParameterType, isFixedUrlType, isParameterisedType, isSNSearchBuilderType, isSearchBuilderType, } from "./url-templates.js";
|
|
6
|
+
describe("isFixedUrlType", () => {
|
|
7
|
+
it("returns true for fixed URL types", () => {
|
|
8
|
+
expect(isFixedUrlType("MyConnections")).toBe(true);
|
|
9
|
+
expect(isFixedUrlType("LWVYPP")).toBe(true);
|
|
10
|
+
expect(isFixedUrlType("SentInvitationPage")).toBe(true);
|
|
11
|
+
expect(isFixedUrlType("FollowersPage")).toBe(true);
|
|
12
|
+
expect(isFixedUrlType("FollowingPage")).toBe(true);
|
|
13
|
+
expect(isFixedUrlType("SNOrgsPage")).toBe(true);
|
|
14
|
+
expect(isFixedUrlType("TSearchPage")).toBe(true);
|
|
15
|
+
expect(isFixedUrlType("RSearchPage")).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
it("returns false for non-fixed types", () => {
|
|
18
|
+
expect(isFixedUrlType("SearchPage")).toBe(false);
|
|
19
|
+
expect(isFixedUrlType("SNSearchPage")).toBe(false);
|
|
20
|
+
expect(isFixedUrlType("OrganizationPeople")).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("isParameterisedType", () => {
|
|
24
|
+
it("returns true for parameterised types", () => {
|
|
25
|
+
expect(isParameterisedType("OrganizationPeople")).toBe(true);
|
|
26
|
+
expect(isParameterisedType("Alumni")).toBe(true);
|
|
27
|
+
expect(isParameterisedType("Group")).toBe(true);
|
|
28
|
+
expect(isParameterisedType("Event")).toBe(true);
|
|
29
|
+
expect(isParameterisedType("SNListPage")).toBe(true);
|
|
30
|
+
expect(isParameterisedType("SNOrgsListsPage")).toBe(true);
|
|
31
|
+
expect(isParameterisedType("TProjectPage")).toBe(true);
|
|
32
|
+
expect(isParameterisedType("RProjectPage")).toBe(true);
|
|
33
|
+
});
|
|
34
|
+
it("returns false for non-parameterised types", () => {
|
|
35
|
+
expect(isParameterisedType("SearchPage")).toBe(false);
|
|
36
|
+
expect(isParameterisedType("MyConnections")).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe("isSearchBuilderType", () => {
|
|
40
|
+
it("returns true for SearchPage", () => {
|
|
41
|
+
expect(isSearchBuilderType("SearchPage")).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
it("returns false for other types", () => {
|
|
44
|
+
expect(isSearchBuilderType("SNSearchPage")).toBe(false);
|
|
45
|
+
expect(isSearchBuilderType("MyConnections")).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe("isSNSearchBuilderType", () => {
|
|
49
|
+
it("returns true for SNSearchPage", () => {
|
|
50
|
+
expect(isSNSearchBuilderType("SNSearchPage")).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it("returns false for other types", () => {
|
|
53
|
+
expect(isSNSearchBuilderType("SearchPage")).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe("getFixedUrl", () => {
|
|
57
|
+
it("returns correct URL for MyConnections", () => {
|
|
58
|
+
const url = getFixedUrl("MyConnections");
|
|
59
|
+
expect(url).toBe("https://www.linkedin.com/mynetwork/invite-connect/connections/");
|
|
60
|
+
expect(detectSourceType(url ?? "")).toBe("MyConnections");
|
|
61
|
+
});
|
|
62
|
+
it("returns correct URL for LWVYPP", () => {
|
|
63
|
+
const url = getFixedUrl("LWVYPP");
|
|
64
|
+
expect(url).toBe("https://www.linkedin.com/me/profile-views/");
|
|
65
|
+
expect(detectSourceType(url ?? "")).toBe("LWVYPP");
|
|
66
|
+
});
|
|
67
|
+
it("returns correct URL for SentInvitationPage", () => {
|
|
68
|
+
const url = getFixedUrl("SentInvitationPage");
|
|
69
|
+
expect(url).toBe("https://www.linkedin.com/mynetwork/invitation-manager/sent/");
|
|
70
|
+
expect(detectSourceType(url ?? "")).toBe("SentInvitationPage");
|
|
71
|
+
});
|
|
72
|
+
it("returns correct URL for FollowersPage", () => {
|
|
73
|
+
const url = getFixedUrl("FollowersPage");
|
|
74
|
+
expect(url).toBe("https://www.linkedin.com/me/my-network/followers/");
|
|
75
|
+
expect(detectSourceType(url ?? "")).toBe("FollowersPage");
|
|
76
|
+
});
|
|
77
|
+
it("returns correct URL for FollowingPage", () => {
|
|
78
|
+
const url = getFixedUrl("FollowingPage");
|
|
79
|
+
expect(url).toBe("https://www.linkedin.com/me/my-network/following/");
|
|
80
|
+
expect(detectSourceType(url ?? "")).toBe("FollowingPage");
|
|
81
|
+
});
|
|
82
|
+
it("returns undefined for non-fixed types", () => {
|
|
83
|
+
expect(getFixedUrl("SearchPage")).toBeUndefined();
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe("buildParameterisedUrl", () => {
|
|
87
|
+
it("builds OrganizationPeople URL with slug", () => {
|
|
88
|
+
const url = buildParameterisedUrl("OrganizationPeople", {
|
|
89
|
+
slug: "google",
|
|
90
|
+
});
|
|
91
|
+
expect(url).toBe("https://www.linkedin.com/company/google/people/");
|
|
92
|
+
expect(detectSourceType(url ?? "")).toBe("OrganizationPeople");
|
|
93
|
+
});
|
|
94
|
+
it("builds Alumni URL with slug", () => {
|
|
95
|
+
const url = buildParameterisedUrl("Alumni", { slug: "stanford" });
|
|
96
|
+
expect(url).toBe("https://www.linkedin.com/school/stanford/people/");
|
|
97
|
+
expect(detectSourceType(url ?? "")).toBe("Alumni");
|
|
98
|
+
});
|
|
99
|
+
it("builds Group URL with id", () => {
|
|
100
|
+
const url = buildParameterisedUrl("Group", { id: "12345" });
|
|
101
|
+
expect(url).toBe("https://www.linkedin.com/groups/12345/members/");
|
|
102
|
+
expect(detectSourceType(url ?? "")).toBe("Group");
|
|
103
|
+
});
|
|
104
|
+
it("builds Event URL with id", () => {
|
|
105
|
+
const url = buildParameterisedUrl("Event", { id: "67890" });
|
|
106
|
+
expect(url).toBe("https://www.linkedin.com/events/67890/attendees/");
|
|
107
|
+
expect(detectSourceType(url ?? "")).toBe("Event");
|
|
108
|
+
});
|
|
109
|
+
it("builds SNListPage URL with id", () => {
|
|
110
|
+
const url = buildParameterisedUrl("SNListPage", { id: "abc123" });
|
|
111
|
+
expect(url).toBe("https://www.linkedin.com/sales/lists/people/abc123/");
|
|
112
|
+
expect(detectSourceType(url ?? "")).toBe("SNListPage");
|
|
113
|
+
});
|
|
114
|
+
it("builds SNOrgsListsPage URL with id", () => {
|
|
115
|
+
const url = buildParameterisedUrl("SNOrgsListsPage", { id: "xyz" });
|
|
116
|
+
expect(url).toBe("https://www.linkedin.com/sales/lists/company/xyz/");
|
|
117
|
+
expect(detectSourceType(url ?? "")).toBe("SNOrgsListsPage");
|
|
118
|
+
});
|
|
119
|
+
it("builds TProjectPage URL with id", () => {
|
|
120
|
+
const url = buildParameterisedUrl("TProjectPage", { id: "proj1" });
|
|
121
|
+
expect(url).toBe("https://www.linkedin.com/talent/projects/proj1/");
|
|
122
|
+
expect(detectSourceType(url ?? "")).toBe("TProjectPage");
|
|
123
|
+
});
|
|
124
|
+
it("builds RProjectPage URL with id", () => {
|
|
125
|
+
const url = buildParameterisedUrl("RProjectPage", { id: "proj2" });
|
|
126
|
+
expect(url).toBe("https://www.linkedin.com/recruiter/projects/proj2/");
|
|
127
|
+
expect(detectSourceType(url ?? "")).toBe("RProjectPage");
|
|
128
|
+
});
|
|
129
|
+
it("returns undefined when required param is missing", () => {
|
|
130
|
+
expect(buildParameterisedUrl("OrganizationPeople", {})).toBeUndefined();
|
|
131
|
+
expect(buildParameterisedUrl("OrganizationPeople", { id: "123" })).toBeUndefined();
|
|
132
|
+
expect(buildParameterisedUrl("Group", { slug: "test" })).toBeUndefined();
|
|
133
|
+
});
|
|
134
|
+
it("encodes special characters in params", () => {
|
|
135
|
+
const url = buildParameterisedUrl("OrganizationPeople", {
|
|
136
|
+
slug: "my company",
|
|
137
|
+
});
|
|
138
|
+
expect(url).toContain("my%20company");
|
|
139
|
+
});
|
|
140
|
+
it("returns undefined for non-parameterised types", () => {
|
|
141
|
+
expect(buildParameterisedUrl("MyConnections", { id: "123" })).toBeUndefined();
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
describe("getParameterType", () => {
|
|
145
|
+
it("returns slug for slug-based types", () => {
|
|
146
|
+
expect(getParameterType("OrganizationPeople")).toBe("slug");
|
|
147
|
+
expect(getParameterType("Alumni")).toBe("slug");
|
|
148
|
+
});
|
|
149
|
+
it("returns id for id-based types", () => {
|
|
150
|
+
expect(getParameterType("Group")).toBe("id");
|
|
151
|
+
expect(getParameterType("Event")).toBe("id");
|
|
152
|
+
expect(getParameterType("SNListPage")).toBe("id");
|
|
153
|
+
});
|
|
154
|
+
it("returns undefined for non-parameterised types", () => {
|
|
155
|
+
expect(getParameterType("SearchPage")).toBeUndefined();
|
|
156
|
+
expect(getParameterType("MyConnections")).toBeUndefined();
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=url-templates.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-templates.test.js","sourceRoot":"","sources":["../../src/services/url-templates.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export type { Account } from "./account.js";
|
|
|
4
4
|
export type { Chat, ChatParticipant, ConversationMessages, ConversationThread, Message, MessageStats, MessageSummary, } from "./messaging.js";
|
|
5
5
|
export type { CriticalErrorIssueData, DialogIssueData, InstanceIssue, PopupState, UIHealthStatus, } from "./ui-health.js";
|
|
6
6
|
export type { SourceTier, SourceType } from "./collection.js";
|
|
7
|
+
export type { BasicSearchParams, BooleanExpressionInput, BooleanExpressionRaw, BooleanExpressionStructured, CompanySizeEntry, ConnectionDegreeEntry, EntityMatch, EntityType, FunctionEntry, IndustryEntry, ProfileLanguageEntry, ReferenceDataType, SNFilter, SNFilterValue, SNSearchParams, SeniorityEntry, UrlBuilderResult, } from "./linkedin-url.js";
|
|
7
8
|
export type { ActionConfig, ActionErrorSummary, ActionPeopleCounts, ActionStatistics, CampaignActionConfig, CampaignActionResult, CampaignActionUpdateConfig, ActionSettings, ActionTargetPerson, Campaign, CampaignAction, CampaignConfig, CampaignPersonEntry, CampaignPersonState, CampaignRunResult, CampaignState, ResultProfileData, CampaignStatistics, CampaignUpdateConfig, ExcludeListEntry, GetResultsOptions, GetStatisticsOptions, ImportPeopleResult, RemovePeopleResult, CampaignStatus, CampaignSummary, ListCampaignPeopleOptions, ListCampaignsOptions, RunnerState, } from "./campaign.js";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,KAAK,GACN,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,YAAY,EACV,IAAI,EACJ,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,GACZ,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,KAAK,GACN,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,YAAY,EACV,IAAI,EACJ,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,GACZ,MAAM,eAAe,CAAC"}
|