dcl-catalyst-client 17.0.0 → 17.1.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.
Files changed (83) hide show
  1. package/dist/client/CatalystClient.d.ts +13 -0
  2. package/dist/client/CatalystClient.d.ts.map +1 -0
  3. package/dist/client/CatalystClient.js +74 -0
  4. package/dist/client/CatalystClient.js.map +1 -0
  5. package/dist/client/ContentClient.d.ts +28 -0
  6. package/dist/client/ContentClient.d.ts.map +1 -0
  7. package/dist/client/ContentClient.js +173 -0
  8. package/dist/client/ContentClient.js.map +1 -0
  9. package/dist/client/LambdasClient.d.ts +17 -0
  10. package/dist/client/LambdasClient.d.ts.map +1 -0
  11. package/dist/client/LambdasClient.js +115 -0
  12. package/dist/client/LambdasClient.js.map +1 -0
  13. package/dist/client/types.d.ts +51 -0
  14. package/dist/client/types.d.ts.map +1 -0
  15. package/dist/client/types.js +3 -0
  16. package/dist/client/types.js.map +1 -0
  17. package/dist/client/utils/DeploymentBuilder.d.ts +47 -0
  18. package/dist/client/utils/DeploymentBuilder.d.ts.map +1 -0
  19. package/dist/client/utils/DeploymentBuilder.js +162 -0
  20. package/dist/client/utils/DeploymentBuilder.js.map +1 -0
  21. package/dist/client/utils/Helper.d.ts +62 -0
  22. package/dist/client/utils/Helper.d.ts.map +1 -0
  23. package/dist/client/utils/Helper.js +274 -0
  24. package/dist/client/utils/Helper.js.map +1 -0
  25. package/dist/client/utils/fetcher.d.ts +3 -0
  26. package/dist/client/utils/fetcher.d.ts.map +1 -0
  27. package/dist/client/utils/fetcher.js +16 -0
  28. package/dist/client/utils/fetcher.js.map +1 -0
  29. package/dist/client/utils/retry.d.ts +2 -0
  30. package/dist/client/utils/retry.d.ts.map +1 -0
  31. package/dist/client/utils/retry.js +26 -0
  32. package/dist/client/utils/retry.js.map +1 -0
  33. package/dist/contracts/abi.d.ts +59 -0
  34. package/dist/contracts/abi.d.ts.map +1 -0
  35. package/dist/contracts/abi.js +942 -0
  36. package/dist/contracts/abi.js.map +1 -0
  37. package/dist/contracts/index.d.ts +19 -0
  38. package/dist/contracts/index.d.ts.map +1 -0
  39. package/dist/contracts/index.js +86 -0
  40. package/dist/contracts/index.js.map +1 -0
  41. package/dist/contracts/types.d.ts +2 -0
  42. package/dist/contracts/types.d.ts.map +1 -0
  43. package/dist/contracts/types.js +3 -0
  44. package/dist/contracts/types.js.map +1 -0
  45. package/dist/contracts-snapshots/data.d.ts +22 -0
  46. package/dist/contracts-snapshots/data.d.ts.map +1 -0
  47. package/dist/contracts-snapshots/data.js +355 -0
  48. package/dist/contracts-snapshots/data.js.map +1 -0
  49. package/dist/contracts-snapshots/index.d.ts +6 -0
  50. package/dist/contracts-snapshots/index.d.ts.map +1 -0
  51. package/dist/contracts-snapshots/index.js +17 -0
  52. package/dist/contracts-snapshots/index.js.map +1 -0
  53. package/dist/index.d.ts +4 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +20 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/package.json +7 -3
  58. package/dist/types.d.ts +6 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +3 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +9 -5
  63. package/.eslintignore +0 -6
  64. package/.eslintrc.json +0 -13
  65. package/.github/dependabot.yml +0 -17
  66. package/.github/workflows/build-and-publish.yml +0 -23
  67. package/.github/workflows/validate-pr-title.yml +0 -9
  68. package/.prettierignore +0 -3
  69. package/.vscode/launch.json +0 -14
  70. package/.vscode/settings.json +0 -26
  71. package/coverage/clover.xml +0 -452
  72. package/coverage/coverage-final.json +0 -11
  73. package/coverage/lcov-report/base.css +0 -224
  74. package/coverage/lcov-report/block-navigation.js +0 -87
  75. package/coverage/lcov-report/favicon.png +0 -0
  76. package/coverage/lcov-report/index.html +0 -161
  77. package/coverage/lcov-report/prettify.css +0 -1
  78. package/coverage/lcov-report/prettify.js +0 -2
  79. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  80. package/coverage/lcov-report/sorter.js +0 -196
  81. package/coverage/lcov.info +0 -863
  82. package/jest.config.js +0 -13
  83. package/scripts/generate-snapshots.ts +0 -49
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildEntityWithoutNewFiles = exports.buildEntity = exports.buildEntityAndFile = void 0;
4
+ const hashing_1 = require("@dcl/hashing");
5
+ const schemas_1 = require("@dcl/schemas");
6
+ /**
7
+ * Take all the entity's data, build the entity file with it, and calculate its id
8
+ */
9
+ async function buildEntityAndFile({ type, pointers, timestamp, content, metadata }) {
10
+ var _a;
11
+ // Make sure that there is at least one pointer
12
+ if (pointers.length === 0)
13
+ throw new Error(`All entities must have at least one pointer.`);
14
+ const entity = {
15
+ // default version is V3
16
+ version: 'v3',
17
+ type,
18
+ pointers,
19
+ timestamp,
20
+ content,
21
+ metadata
22
+ };
23
+ // prevent duplicated file names
24
+ if (content) {
25
+ const usedFilenames = new Set();
26
+ for (const a of content) {
27
+ const lowerCasedFileName = a.file.toLowerCase();
28
+ if (usedFilenames.has(lowerCasedFileName)) {
29
+ throw new Error(`Error creating the deployable entity: Decentraland's file system is case insensitive, the file ${JSON.stringify(a.file)} is repeated`);
30
+ }
31
+ usedFilenames.add(lowerCasedFileName);
32
+ }
33
+ }
34
+ const entityFile = new TextEncoder().encode(JSON.stringify(entity));
35
+ const entityId = await (0, hashing_1.hashV1)(entityFile);
36
+ const entityWithId = {
37
+ id: entityId,
38
+ ...entity
39
+ };
40
+ if (!schemas_1.Entity.validate(entityWithId)) {
41
+ throw new Error('Generated entity is not valid:\n' + ((_a = schemas_1.Entity.validate.errors) === null || _a === void 0 ? void 0 : _a.map(($) => $.message).join('\n')));
42
+ }
43
+ return { entity: entityWithId, entityFile };
44
+ }
45
+ exports.buildEntityAndFile = buildEntityAndFile;
46
+ /**
47
+ * As part of the deployment process, an entity has to be built. In this method, we are building it, based on the data provided.
48
+ * After the entity is built, the user will have to sign the entity id, to prove they are actually who they say they are.
49
+ */
50
+ async function buildEntity({ type, pointers, files, metadata, timestamp }) {
51
+ // Reorder input
52
+ const contentFiles = Array.from(files ? files : []).map(([key, content]) => ({
53
+ key,
54
+ content
55
+ }));
56
+ // Calculate hashes
57
+ const allInfo = await Promise.all(contentFiles.map(async ({ key, content }) => ({ key, content, hash: await (0, hashing_1.hashV1)(content) })));
58
+ const hashesByKey = new Map(allInfo.map(({ hash, key }) => [key, hash]));
59
+ const filesByHash = new Map(allInfo.map(({ hash, content }) => [hash, content]));
60
+ return buildEntityInternal(type, pointers, {
61
+ hashesByKey,
62
+ filesByHash,
63
+ metadata,
64
+ timestamp
65
+ });
66
+ }
67
+ exports.buildEntity = buildEntity;
68
+ /**
69
+ * In cases where we don't need upload content files, we can simply generate the new entity.
70
+ * We can still use already uploaded hashes on this new entity.
71
+ */
72
+ async function buildEntityWithoutNewFiles(fetcher, { contentUrl, type, pointers, hashesByKey, metadata, timestamp }) {
73
+ const givenFilesMaps = (hashesByKey !== null && hashesByKey !== void 0 ? hashesByKey : metadata) ? getHashesByKey(metadata) : undefined;
74
+ // When the old entity has the old hashing algorithm, then the full entity with new hash will need to be deployed.
75
+ if (!!givenFilesMaps && isObsoleteProfile(type, givenFilesMaps)) {
76
+ const files = await downloadAllFiles(fetcher, contentUrl, givenFilesMaps);
77
+ const metadataWithNewHash = await updateMetadata(files, metadata);
78
+ return buildEntity({
79
+ type,
80
+ pointers,
81
+ files,
82
+ metadata: metadataWithNewHash,
83
+ timestamp
84
+ });
85
+ }
86
+ return buildEntityInternal(type, pointers, { hashesByKey, metadata, timestamp });
87
+ }
88
+ exports.buildEntityWithoutNewFiles = buildEntityWithoutNewFiles;
89
+ async function buildEntityInternal(type, pointers, options) {
90
+ // Make sure that there is at least one pointer
91
+ if (pointers.length === 0) {
92
+ throw new Error(`All entities must have at least one pointer.`);
93
+ }
94
+ // Re-organize the hashes
95
+ const hashesByKey = (options === null || options === void 0 ? void 0 : options.hashesByKey) ? options === null || options === void 0 ? void 0 : options.hashesByKey : new Map();
96
+ const entityContent = Array.from(hashesByKey.entries()).map(([key, hash]) => ({
97
+ file: key,
98
+ hash
99
+ }));
100
+ // Calculate timestamp if necessary
101
+ const timestamp = (options === null || options === void 0 ? void 0 : options.timestamp) ? options === null || options === void 0 ? void 0 : options.timestamp : Date.now();
102
+ // Build entity file
103
+ const { entity, entityFile } = await buildEntityAndFile({
104
+ type,
105
+ pointers,
106
+ timestamp,
107
+ content: entityContent,
108
+ metadata: options === null || options === void 0 ? void 0 : options.metadata
109
+ });
110
+ // Add entity file to content files
111
+ const filesByHash = (options === null || options === void 0 ? void 0 : options.filesByHash) ? options.filesByHash : new Map();
112
+ filesByHash.set(entity.id, entityFile);
113
+ return { files: filesByHash, entityId: entity.id };
114
+ }
115
+ function isObsoleteProfile(type, hashesByKey) {
116
+ return type === schemas_1.EntityType.PROFILE && Array.from(hashesByKey).some(([, hash]) => hash.toLowerCase().startsWith('qm'));
117
+ }
118
+ async function fetchArrayBuffer(fetcher, url) {
119
+ const response = await fetcher.fetch(url);
120
+ const buffer = await response.arrayBuffer();
121
+ return new Uint8Array(buffer);
122
+ }
123
+ async function downloadAllFiles(fetcher, contentUrl, hashes) {
124
+ const oldBodyHash = hashes.get('body.png');
125
+ const oldFaceHash = hashes.get('face256.png');
126
+ const bodyUrl = new URL(`${contentUrl}/contents/${oldBodyHash}`).toString();
127
+ const faceUrl = new URL(`${contentUrl}/contents/${oldFaceHash}`).toString();
128
+ const [bodyFileContent, faceFileContent] = await Promise.all([
129
+ fetchArrayBuffer(fetcher, bodyUrl),
130
+ fetchArrayBuffer(fetcher, faceUrl)
131
+ ]);
132
+ return new Map([
133
+ ['body.png', bodyFileContent],
134
+ ['face256.png', faceFileContent]
135
+ ]);
136
+ }
137
+ async function updateMetadata(files, metadata) {
138
+ if (!metadata)
139
+ return metadata;
140
+ metadata.avatars = await Promise.all(metadata.avatars.map(async (avatar) => {
141
+ const newSnapshots = { face256: '', body: '' };
142
+ const face256Content = files.get('face256.png');
143
+ if (!!face256Content) {
144
+ newSnapshots['face256'] = await (0, hashing_1.hashV1)(face256Content);
145
+ }
146
+ const bodyContent = files.get('body.png');
147
+ if (!!bodyContent) {
148
+ newSnapshots['body'] = await (0, hashing_1.hashV1)(bodyContent);
149
+ }
150
+ avatar.avatar.snapshots = newSnapshots;
151
+ return avatar;
152
+ }));
153
+ return metadata;
154
+ }
155
+ function getHashesByKey(metadata) {
156
+ const avatar = metadata.avatars[0];
157
+ return new Map([
158
+ ['body.png', avatar.avatar.snapshots.body],
159
+ ['face256.png', avatar.avatar.snapshots.face256]
160
+ ]);
161
+ }
162
+ //# sourceMappingURL=DeploymentBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeploymentBuilder.js","sourceRoot":"","sources":["../../../src/client/utils/DeploymentBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { IFetchComponent, RequestOptions } from '@well-known-components/interfaces';
2
+ import type FormData from 'form-data';
3
+ export declare function getCurrentVersion(): string;
4
+ export declare function addModelToFormData(model: any, form: FormData, namespace?: string): FormData;
5
+ /**
6
+ * This method performs one or more fetches to the given server, splitting query params into different queries to avoid exceeding the max length of urls
7
+ */
8
+ export declare const MAX_URL_LENGTH: number;
9
+ export declare function splitAndFetch<E>({ baseUrl, path, queryParams, fetcher, uniqueBy, options }: Omit<SplitAndFetchParams<E>, 'elementsProperty'>): Promise<E[]>;
10
+ /**
11
+ * This method performs one or more fetches to the given server, splitting query params into different queries to avoid exceeding the max length of urls
12
+ * This method should be used if the result is paginated, and needs to be queries many times
13
+ */
14
+ export declare function splitAndFetchPaginated<E>({ baseUrl, path, queryParams, elementsProperty, uniqueBy, options, fetcher }: RequiredOne<SplitAndFetchParams<E>, 'uniqueBy'>): Promise<E[]>;
15
+ export declare function splitValuesIntoManyQueryBuilders({ queryParams, baseUrl, path, reservedParams }: SplitIntoQueriesParams): QueryBuilder[];
16
+ export declare function splitValuesIntoManyQueries(parameters: SplitIntoQueriesParams): string[];
17
+ export declare function convertFiltersToQueryParams(filters?: Record<string, any>): Map<string, string[]>;
18
+ export declare function isNode(): boolean;
19
+ export declare function mergeRequestOptions(target: RequestOptions, source?: RequestOptions): RequestOptions;
20
+ /** Remove white spaces and add https if no protocol is specified */
21
+ export declare function sanitizeUrl(url: string): string;
22
+ type RequiredOne<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
23
+ type QueryParams = {
24
+ name: string;
25
+ values: string[];
26
+ } | Map<string, string[]>;
27
+ type SplitIntoQueriesParams = {
28
+ baseUrl: string;
29
+ path: string;
30
+ queryParams: QueryParams;
31
+ reservedParams?: Map<string, number>;
32
+ };
33
+ type SplitAndFetchParams<E> = {
34
+ baseUrl: string;
35
+ path: string;
36
+ queryParams: QueryParams;
37
+ elementsProperty: string;
38
+ uniqueBy?: keyof E;
39
+ fetcher?: IFetchComponent;
40
+ options?: RequestOptions;
41
+ };
42
+ export declare class QueryBuilder {
43
+ private readonly baseUrl;
44
+ private readonly queryParams;
45
+ private readonly reservedParams;
46
+ private length;
47
+ constructor(baseUrl: string, queryParams?: Map<string, string[]>, reservedParams?: Map<string, number>);
48
+ canAddParam(paramName: string, paramValue: string): boolean;
49
+ addParam(paramName: string, paramValue: string): this;
50
+ canSetParams(paramName: string, paramValues: any[]): boolean;
51
+ /** This action will override whatever configuration there was previously for the given query parameter */
52
+ setParams(paramName: string, paramValues: (string | number)[]): this;
53
+ /** This action will override whatever configuration there was previously for the given query parameter */
54
+ setParam(paramName: string, paramValue: string | number): this;
55
+ toString(): string;
56
+ private calculateUrlLength;
57
+ static clone(queryBuilder: QueryBuilder): QueryBuilder;
58
+ private calculateAddedLength;
59
+ private calculateArrayLength;
60
+ }
61
+ export {};
62
+ //# sourceMappingURL=Helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Helper.d.ts","sourceRoot":"","sources":["../../../src/client/utils/Helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryBuilder = exports.sanitizeUrl = exports.mergeRequestOptions = exports.isNode = exports.convertFiltersToQueryParams = exports.splitValuesIntoManyQueries = exports.splitValuesIntoManyQueryBuilders = exports.splitAndFetchPaginated = exports.splitAndFetch = exports.MAX_URL_LENGTH = exports.addModelToFormData = exports.getCurrentVersion = void 0;
4
+ const fetch_component_1 = require("@well-known-components/fetch-component");
5
+ const package_json_1 = require("./../../package.json");
6
+ function getCurrentVersion() {
7
+ return package_json_1.version || package_json_1.commit || 'Unknown';
8
+ }
9
+ exports.getCurrentVersion = getCurrentVersion;
10
+ function addModelToFormData(model, form, namespace = '') {
11
+ for (const propertyName in model) {
12
+ if (!model.hasOwnProperty(propertyName) || model[propertyName] === null || model[propertyName] === undefined)
13
+ continue;
14
+ const formKey = namespace ? `${namespace}[${propertyName}]` : propertyName;
15
+ if (model[propertyName] instanceof Date) {
16
+ form.append(formKey, model[propertyName].toISOString());
17
+ }
18
+ else if (model[propertyName] instanceof Array) {
19
+ model[propertyName].forEach((element, index) => {
20
+ const tempFormKey = `${formKey}[${index}]`;
21
+ addModelToFormData(element, form, tempFormKey);
22
+ });
23
+ }
24
+ else if (typeof model[propertyName] === 'object') {
25
+ addModelToFormData(model[propertyName], form, formKey);
26
+ }
27
+ else {
28
+ form.append(formKey, model[propertyName].toString());
29
+ }
30
+ }
31
+ return form;
32
+ }
33
+ exports.addModelToFormData = addModelToFormData;
34
+ function removeDuplicates(array) {
35
+ return Array.from(new Set(array));
36
+ }
37
+ /**
38
+ * This method performs one or more fetches to the given server, splitting query params into different queries to avoid exceeding the max length of urls
39
+ */
40
+ exports.MAX_URL_LENGTH = 2048;
41
+ async function splitAndFetch({ baseUrl, path, queryParams, fetcher, uniqueBy, options }) {
42
+ // Adding default
43
+ fetcher = fetcher ? fetcher : (0, fetch_component_1.createFetchComponent)();
44
+ // Split values into different queries
45
+ const queries = splitValuesIntoManyQueries({ baseUrl, path, queryParams });
46
+ const results = new Map();
47
+ for (const query of queries) {
48
+ // Perform the different queries
49
+ const elements = (await (await fetcher.fetch(query, { ...options, headers: { 'Content-Type': 'application/json' } })).json());
50
+ // Group by unique property (if set), or add all of them to the map
51
+ elements.forEach((element) => results.set(uniqueBy ? element[uniqueBy] : results.size, element));
52
+ }
53
+ // Return results
54
+ return Array.from(results.values());
55
+ }
56
+ exports.splitAndFetch = splitAndFetch;
57
+ const CHARS_LEFT_FOR_OFFSET = 7;
58
+ /**
59
+ * This method performs one or more fetches to the given server, splitting query params into different queries to avoid exceeding the max length of urls
60
+ * This method should be used if the result is paginated, and needs to be queries many times
61
+ */
62
+ async function splitAndFetchPaginated({ baseUrl, path, queryParams, elementsProperty, uniqueBy, options, fetcher }) {
63
+ // Set default
64
+ fetcher = fetcher ? fetcher : (0, fetch_component_1.createFetchComponent)();
65
+ // Reserve a few chars to send the offset
66
+ const reservedParams = new Map([['offset', CHARS_LEFT_FOR_OFFSET]]);
67
+ // Split values into different queries
68
+ const queries = splitValuesIntoManyQueries({ baseUrl, path, queryParams, reservedParams });
69
+ // Perform the different queries
70
+ const foundElements = new Map();
71
+ let exit = false;
72
+ for (let i = 0; i < queries.length && !exit; i++) {
73
+ let url = queries[i];
74
+ while (url && !exit) {
75
+ try {
76
+ const response = (await fetcher.fetch(url, options)).json();
77
+ const elements = response[elementsProperty];
78
+ elements.forEach((element) => foundElements.set(element[uniqueBy], element));
79
+ const nextRelative = response.pagination.next;
80
+ url = nextRelative ? new URL(nextRelative, url).toString() : undefined;
81
+ }
82
+ catch (error) {
83
+ exit = true;
84
+ }
85
+ }
86
+ }
87
+ return Array.from(foundElements.values());
88
+ }
89
+ exports.splitAndFetchPaginated = splitAndFetchPaginated;
90
+ function splitValuesIntoManyQueryBuilders({ queryParams, baseUrl, path, reservedParams }) {
91
+ const queryParamsMap = 'name' in queryParams ? new Map([[queryParams.name, queryParams.values]]) : queryParams;
92
+ // Check that it makes sent to apply the algorithm
93
+ if (queryParamsMap.size === 0) {
94
+ return [new QueryBuilder(baseUrl + path, queryParamsMap, reservedParams)];
95
+ }
96
+ // Remove duplicates
97
+ const withoutDuplicates = Array.from(queryParamsMap.entries()).map(([name, values]) => [
98
+ name,
99
+ removeDuplicates(values)
100
+ ]);
101
+ // Sort params by amount of values
102
+ const sortedByValues = withoutDuplicates.sort(([_, values1], [__, values2]) => values1.length - values2.length);
103
+ // Add all params (except the last one that is the one with the most values) into the url
104
+ const defaultQueryBuilder = new QueryBuilder(baseUrl + path, new Map(), reservedParams);
105
+ for (let i = 0; i < sortedByValues.length - 1; i++) {
106
+ const [paramName, paramValues] = sortedByValues[i];
107
+ if (!defaultQueryBuilder.canSetParams(paramName, paramValues)) {
108
+ throw new Error(`This library can split one query param into many HTTP requests, but it can't split more than one. You will need to do that on the client side.`);
109
+ }
110
+ defaultQueryBuilder.setParams(paramName, paramValues);
111
+ }
112
+ // Prepare everything
113
+ let queryBuilder = QueryBuilder.clone(defaultQueryBuilder);
114
+ const [lastParamName, lastParamValues] = sortedByValues[sortedByValues.length - 1];
115
+ const result = [];
116
+ for (const value of lastParamValues) {
117
+ // Check url length
118
+ if (!queryBuilder.canAddParam(lastParamName, value)) {
119
+ result.push(queryBuilder);
120
+ queryBuilder = QueryBuilder.clone(defaultQueryBuilder);
121
+ }
122
+ queryBuilder.addParam(lastParamName, value);
123
+ }
124
+ // Add current builder one last time
125
+ result.push(queryBuilder);
126
+ return result;
127
+ }
128
+ exports.splitValuesIntoManyQueryBuilders = splitValuesIntoManyQueryBuilders;
129
+ function splitValuesIntoManyQueries(parameters) {
130
+ const builders = splitValuesIntoManyQueryBuilders(parameters);
131
+ return builders.map((builder) => builder.toString());
132
+ }
133
+ exports.splitValuesIntoManyQueries = splitValuesIntoManyQueries;
134
+ function convertFiltersToQueryParams(filters) {
135
+ if (!filters) {
136
+ return new Map();
137
+ }
138
+ const entries = Object.entries(filters)
139
+ .filter(([_, value]) => !!value)
140
+ .map(([name, value]) => {
141
+ const newName = name.endsWith('s') ? name.slice(0, -1) : name;
142
+ let newValues;
143
+ // Force coersion of number, boolean, or string into string
144
+ if (Array.isArray(value)) {
145
+ newValues = [...value].filter(isValidQueryParamValue).map((_) => `${_}`);
146
+ }
147
+ else if (isValidQueryParamValue(value)) {
148
+ newValues = [`${value}`];
149
+ }
150
+ else {
151
+ throw new Error('Query params must be either a string, a number, a boolean or an array of the types just mentioned');
152
+ }
153
+ return [newName, newValues];
154
+ })
155
+ .filter(([_, values]) => values.length > 0);
156
+ return new Map(entries);
157
+ }
158
+ exports.convertFiltersToQueryParams = convertFiltersToQueryParams;
159
+ function isNode() {
160
+ return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';
161
+ }
162
+ exports.isNode = isNode;
163
+ function mergeRequestOptions(target, source) {
164
+ const combinedHeaders = {
165
+ ...target === null || target === void 0 ? void 0 : target.headers,
166
+ ...source === null || source === void 0 ? void 0 : source.headers
167
+ };
168
+ return {
169
+ ...target,
170
+ ...source,
171
+ headers: combinedHeaders
172
+ };
173
+ }
174
+ exports.mergeRequestOptions = mergeRequestOptions;
175
+ function isValidQueryParamValue(value) {
176
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
177
+ }
178
+ /** Remove white spaces and add https if no protocol is specified */
179
+ function sanitizeUrl(url) {
180
+ // Remove empty spaces
181
+ url = url.trim();
182
+ // Add protocol if necessary
183
+ if (!url.startsWith('https://') && !url.startsWith('http://')) {
184
+ url = 'https://' + url;
185
+ }
186
+ // Remove trailing slash if present
187
+ if (url.endsWith('/')) {
188
+ url = url.slice(0, -1);
189
+ }
190
+ return url;
191
+ }
192
+ exports.sanitizeUrl = sanitizeUrl;
193
+ class QueryBuilder {
194
+ constructor(baseUrl, queryParams = new Map(), reservedParams = new Map()) {
195
+ this.baseUrl = baseUrl;
196
+ this.queryParams = queryParams;
197
+ this.reservedParams = reservedParams;
198
+ this.length = this.calculateUrlLength(queryParams, reservedParams);
199
+ }
200
+ canAddParam(paramName, paramValue) {
201
+ return this.length + paramName.length + paramValue.length + 2 < exports.MAX_URL_LENGTH;
202
+ }
203
+ addParam(paramName, paramValue) {
204
+ if (!this.canAddParam(paramName, paramValue)) {
205
+ throw new Error(`You can't add this parameter '${paramName}', since it would exceed the max url length`);
206
+ }
207
+ const queryParam = this.queryParams.get(paramName);
208
+ const values = queryParam ? queryParam : [];
209
+ values.push(paramValue);
210
+ this.queryParams.set(paramName, values);
211
+ this.length += this.calculateAddedLength(paramName, [paramValue]);
212
+ return this;
213
+ }
214
+ canSetParams(paramName, paramValues) {
215
+ const newQueryParams = new Map([...this.queryParams, [paramName, paramValues]]);
216
+ const newLength = this.calculateUrlLength(newQueryParams, this.reservedParams);
217
+ return newLength < exports.MAX_URL_LENGTH;
218
+ }
219
+ /** This action will override whatever configuration there was previously for the given query parameter */
220
+ setParams(paramName, paramValues) {
221
+ if (!this.canSetParams(paramName, paramValues)) {
222
+ throw new Error(`You can't add this parameter '${paramName}', since it would exceed the max url length`);
223
+ }
224
+ this.queryParams.set(paramName, paramValues.map((value) => `${value}`));
225
+ this.length = this.calculateUrlLength(this.queryParams, this.reservedParams);
226
+ return this;
227
+ }
228
+ /** This action will override whatever configuration there was previously for the given query parameter */
229
+ setParam(paramName, paramValue) {
230
+ this.setParams(paramName, [paramValue]);
231
+ return this;
232
+ }
233
+ toString() {
234
+ let url = this.baseUrl;
235
+ let addedParamAlready = false;
236
+ for (const [paramName, paramValues] of this.queryParams) {
237
+ for (const paramValue of paramValues) {
238
+ if (addedParamAlready) {
239
+ url += `&${paramName}=${paramValue}`;
240
+ }
241
+ else {
242
+ url += `?${paramName}=${paramValue}`;
243
+ addedParamAlready = true;
244
+ }
245
+ }
246
+ }
247
+ return url;
248
+ }
249
+ calculateUrlLength(queryParams, reservedParams) {
250
+ let length = this.baseUrl.length;
251
+ for (const [paramName, reserved] of reservedParams) {
252
+ if (!this.queryParams.has(paramName)) {
253
+ // We will avoid the reserved parameters that already have a value set
254
+ length += paramName.length + 2 + reserved;
255
+ }
256
+ }
257
+ for (const [paramName, paramValues] of queryParams) {
258
+ length += this.calculateAddedLength(paramName, paramValues);
259
+ }
260
+ return length;
261
+ }
262
+ static clone(queryBuilder) {
263
+ return new QueryBuilder(queryBuilder.baseUrl, new Map(queryBuilder.queryParams), queryBuilder.reservedParams);
264
+ }
265
+ calculateAddedLength(paramName, paramValues) {
266
+ const valuesLength = this.calculateArrayLength(paramValues);
267
+ return valuesLength + (paramName.length + 2) * paramValues.length;
268
+ }
269
+ calculateArrayLength(array) {
270
+ return array.map((value) => `${value}`).reduce((accum, curr) => accum + curr.length, 0);
271
+ }
272
+ }
273
+ exports.QueryBuilder = QueryBuilder;
274
+ //# sourceMappingURL=Helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Helper.js","sourceRoot":"","sources":["../../../src/client/utils/Helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { IFetchComponent } from '@well-known-components/interfaces';
2
+ export declare function withDefaultHeadersInjection(fetcher: IFetchComponent): IFetchComponent;
3
+ //# sourceMappingURL=fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/client/utils/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,mCAAmC,CAAA;AAInF,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAUrF"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withDefaultHeadersInjection = void 0;
4
+ const Helper_1 = require("./Helper");
5
+ function withDefaultHeadersInjection(fetcher) {
6
+ return {
7
+ fetch: async (url, init) => {
8
+ const optionsWithInjectedClientAgent = (0, Helper_1.mergeRequestOptions)(init ? init : {}, {
9
+ headers: { 'X-Requested-With': (0, Helper_1.getCurrentVersion)() }
10
+ });
11
+ return await fetcher.fetch(url, optionsWithInjectedClientAgent);
12
+ }
13
+ };
14
+ }
15
+ exports.withDefaultHeadersInjection = withDefaultHeadersInjection;
16
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../../src/client/utils/fetcher.ts"],"names":[],"mappings":";;;AAEA,qCAAiE;AAEjE,SAAgB,2BAA2B,CAAC,OAAwB;IAClE,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,GAA0B,EAAE,IAAqB,EAA+B,EAAE;YAC9F,MAAM,8BAA8B,GAAG,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3E,OAAO,EAAE,EAAE,kBAAkB,EAAE,IAAA,0BAAiB,GAAE,EAAE;aACrD,CAAC,CAAA;YAEF,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;QACjE,CAAC;KACF,CAAA;AACH,CAAC;AAVD,kEAUC"}
@@ -0,0 +1,2 @@
1
+ export declare function retry<T>(description: string, execution: () => Promise<T>, attempts: number, waitTimeInMs: number): Promise<T>;
2
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/client/utils/retry.ts"],"names":[],"mappings":"AAEA,wBAAsB,KAAK,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CAmBZ"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retry = void 0;
4
+ const promises_1 = require("timers/promises");
5
+ async function retry(description, execution, attempts, waitTimeInMs) {
6
+ while (attempts > 0) {
7
+ try {
8
+ return await execution();
9
+ // ^^^^^ never remove this "await" keyword, otherwise this function won't
10
+ // catch the exception and perform the retries
11
+ }
12
+ catch (error) {
13
+ attempts--;
14
+ if (attempts > 0) {
15
+ console.info(`Failed to ${description}. Still have ${attempts} attempt/s left. Will try again in ${waitTimeInMs}`);
16
+ await (0, promises_1.setTimeout)(waitTimeInMs, null);
17
+ }
18
+ else {
19
+ throw error;
20
+ }
21
+ }
22
+ }
23
+ throw new Error('Please specify more than one attempt for the retry function');
24
+ }
25
+ exports.retry = retry;
26
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/client/utils/retry.ts"],"names":[],"mappings":";;;AAAA,8CAA4C;AAErC,KAAK,UAAU,KAAK,CACzB,WAAmB,EACnB,SAA2B,EAC3B,QAAgB,EAChB,YAAoB;IAEpB,OAAO,QAAQ,GAAG,CAAC,EAAE;QACnB,IAAI;YACF,OAAO,MAAM,SAAS,EAAE,CAAA;YACxB,6EAA6E;YAC7E,wDAAwD;SACzD;QAAC,OAAO,KAAK,EAAE;YACd,QAAQ,EAAE,CAAA;YACV,IAAI,QAAQ,GAAG,CAAC,EAAE;gBAChB,OAAO,CAAC,IAAI,CACV,aAAa,WAAW,gBAAgB,QAAQ,sCAAsC,YAAY,EAAE,CACrG,CAAA;gBACD,MAAM,IAAA,qBAAU,EAAC,YAAY,EAAE,IAAI,CAAC,CAAA;aACrC;iBAAM;gBACL,MAAM,KAAK,CAAA;aACZ;SACF;KACF;IACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;AAChF,CAAC;AAxBD,sBAwBC"}