@digital-alchemy/core 24.8.4 → 24.9.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.
Files changed (119) hide show
  1. package/README.md +17 -27
  2. package/dist/helpers/async.helper.d.ts +1 -1
  3. package/dist/helpers/async.helper.js +13 -14
  4. package/dist/helpers/async.helper.js.map +1 -1
  5. package/dist/helpers/config-environment-loader.helper.js +16 -20
  6. package/dist/helpers/config-environment-loader.helper.js.map +1 -1
  7. package/dist/helpers/config-file-loader.helper.d.ts +5 -3
  8. package/dist/helpers/config-file-loader.helper.js +45 -52
  9. package/dist/helpers/config-file-loader.helper.js.map +1 -1
  10. package/dist/helpers/config.helper.d.ts +24 -3
  11. package/dist/helpers/config.helper.js +30 -37
  12. package/dist/helpers/config.helper.js.map +1 -1
  13. package/dist/helpers/context.helper.js +1 -2
  14. package/dist/helpers/cron.helper.d.ts +27 -0
  15. package/dist/helpers/cron.helper.js +4 -7
  16. package/dist/helpers/cron.helper.js.map +1 -1
  17. package/dist/helpers/errors.helper.d.ts +0 -12
  18. package/dist/helpers/errors.helper.js +2 -23
  19. package/dist/helpers/errors.helper.js.map +1 -1
  20. package/dist/helpers/events.helper.js +4 -10
  21. package/dist/helpers/events.helper.js.map +1 -1
  22. package/dist/helpers/extend.helper.d.ts +2 -0
  23. package/dist/helpers/extend.helper.js +19 -24
  24. package/dist/helpers/extend.helper.js.map +1 -1
  25. package/dist/helpers/index.d.ts +2 -4
  26. package/dist/helpers/index.js +14 -19
  27. package/dist/helpers/index.js.map +1 -1
  28. package/dist/helpers/lifecycle.helper.d.ts +1 -5
  29. package/dist/helpers/lifecycle.helper.js +1 -4
  30. package/dist/helpers/lifecycle.helper.js.map +1 -1
  31. package/dist/{extensions/logger.extension.d.ts → helpers/logger.helper.d.ts} +33 -40
  32. package/dist/helpers/logger.helper.js +10 -0
  33. package/dist/helpers/logger.helper.js.map +1 -0
  34. package/dist/helpers/module.helper.d.ts +74 -0
  35. package/dist/helpers/module.helper.js +131 -0
  36. package/dist/helpers/module.helper.js.map +1 -0
  37. package/dist/helpers/utilities.helper.d.ts +3 -14
  38. package/dist/helpers/utilities.helper.js +51 -73
  39. package/dist/helpers/utilities.helper.js.map +1 -1
  40. package/dist/helpers/wiring.helper.d.ts +77 -23
  41. package/dist/helpers/wiring.helper.js +45 -47
  42. package/dist/helpers/wiring.helper.js.map +1 -1
  43. package/dist/index.d.ts +2 -1
  44. package/dist/index.js +3 -5
  45. package/dist/index.js.map +1 -1
  46. package/dist/services/als.extension.d.ts +2 -0
  47. package/dist/services/als.extension.js +17 -0
  48. package/dist/services/als.extension.js.map +1 -0
  49. package/dist/services/configuration.extension.d.ts +7 -0
  50. package/dist/services/configuration.extension.js +117 -0
  51. package/dist/services/configuration.extension.js.map +1 -0
  52. package/dist/{extensions → services}/index.d.ts +1 -3
  53. package/dist/services/index.js +8 -0
  54. package/dist/services/index.js.map +1 -0
  55. package/dist/{extensions → services}/internal.extension.d.ts +7 -23
  56. package/dist/{extensions → services}/internal.extension.js +43 -55
  57. package/dist/services/internal.extension.js.map +1 -0
  58. package/dist/{extensions → services}/is.extension.d.ts +5 -0
  59. package/dist/{extensions → services}/is.extension.js +20 -15
  60. package/dist/services/is.extension.js.map +1 -0
  61. package/dist/{extensions → services}/lifecycle.extension.js +17 -19
  62. package/dist/services/lifecycle.extension.js.map +1 -0
  63. package/dist/services/logger.extension.d.ts +2 -0
  64. package/dist/services/logger.extension.js +201 -0
  65. package/dist/services/logger.extension.js.map +1 -0
  66. package/dist/services/scheduler.extension.d.ts +2 -0
  67. package/dist/services/scheduler.extension.js +108 -0
  68. package/dist/services/scheduler.extension.js.map +1 -0
  69. package/dist/services/wiring.extension.d.ts +111 -0
  70. package/dist/services/wiring.extension.js +437 -0
  71. package/dist/services/wiring.extension.js.map +1 -0
  72. package/dist/testing/index.d.ts +2 -0
  73. package/dist/testing/index.js +3 -0
  74. package/dist/testing/index.js.map +1 -0
  75. package/dist/testing/mock-logger.d.ts +2 -0
  76. package/dist/testing/mock-logger.js +11 -0
  77. package/dist/testing/mock-logger.js.map +1 -0
  78. package/dist/testing/test-module.d.ts +112 -0
  79. package/dist/testing/test-module.js +138 -0
  80. package/dist/testing/test-module.js.map +1 -0
  81. package/package.json +56 -43
  82. package/dist/extensions/cache.extension.d.ts +0 -2
  83. package/dist/extensions/cache.extension.js +0 -90
  84. package/dist/extensions/cache.extension.js.map +0 -1
  85. package/dist/extensions/configuration.extension.d.ts +0 -52
  86. package/dist/extensions/configuration.extension.js +0 -131
  87. package/dist/extensions/configuration.extension.js.map +0 -1
  88. package/dist/extensions/fetch.extension.d.ts +0 -17
  89. package/dist/extensions/fetch.extension.js +0 -133
  90. package/dist/extensions/fetch.extension.js.map +0 -1
  91. package/dist/extensions/index.js +0 -13
  92. package/dist/extensions/index.js.map +0 -1
  93. package/dist/extensions/internal.extension.js.map +0 -1
  94. package/dist/extensions/is.extension.js.map +0 -1
  95. package/dist/extensions/lifecycle.extension.js.map +0 -1
  96. package/dist/extensions/logger.extension.js +0 -186
  97. package/dist/extensions/logger.extension.js.map +0 -1
  98. package/dist/extensions/metrics.extension.d.ts +0 -18
  99. package/dist/extensions/metrics.extension.js +0 -156
  100. package/dist/extensions/metrics.extension.js.map +0 -1
  101. package/dist/extensions/scheduler.extension.d.ts +0 -21
  102. package/dist/extensions/scheduler.extension.js +0 -133
  103. package/dist/extensions/scheduler.extension.js.map +0 -1
  104. package/dist/extensions/wiring.extension.d.ts +0 -50
  105. package/dist/extensions/wiring.extension.js +0 -374
  106. package/dist/extensions/wiring.extension.js.map +0 -1
  107. package/dist/helpers/cache-memory.helper.d.ts +0 -6
  108. package/dist/helpers/cache-memory.helper.js +0 -68
  109. package/dist/helpers/cache-memory.helper.js.map +0 -1
  110. package/dist/helpers/cache-redis.helper.d.ts +0 -6
  111. package/dist/helpers/cache-redis.helper.js +0 -73
  112. package/dist/helpers/cache-redis.helper.js.map +0 -1
  113. package/dist/helpers/cache.helper.d.ts +0 -19
  114. package/dist/helpers/cache.helper.js +0 -9
  115. package/dist/helpers/cache.helper.js.map +0 -1
  116. package/dist/helpers/fetch.helper.d.ts +0 -165
  117. package/dist/helpers/fetch.helper.js +0 -173
  118. package/dist/helpers/fetch.helper.js.map +0 -1
  119. /package/dist/{extensions → services}/lifecycle.extension.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-memory.helper.js","sourceRoot":"","sources":["../../src/helpers/cache-memory.helper.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { createClient } from "redis";
2
- import { CacheDriverOptions, ICacheDriver } from "..";
3
- /**
4
- * url & name properties automatically generated from config
5
- */
6
- export declare function createRedisDriver({ logger, config, lifecycle, internal }: CacheDriverOptions, options?: Parameters<typeof createClient>[0]): Promise<ICacheDriver>;
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRedisDriver = createRedisDriver;
4
- /* eslint-disable sonarjs/no-duplicate-string */
5
- /* eslint-disable @typescript-eslint/no-magic-numbers */
6
- const redis_1 = require("redis");
7
- const __1 = require("..");
8
- /**
9
- * url & name properties automatically generated from config
10
- */
11
- async function createRedisDriver({ logger, config, lifecycle, internal }, options) {
12
- let client = (0, redis_1.createClient)({
13
- url: config.boilerplate.REDIS_URL,
14
- ...options,
15
- });
16
- await client.connect();
17
- lifecycle.onShutdownStart(async () => {
18
- logger.info({ name: "onShutdownStart" }, `disconnecting`);
19
- await client.disconnect();
20
- client = undefined;
21
- });
22
- return {
23
- async del(key) {
24
- try {
25
- await client.del(key);
26
- }
27
- catch (error) {
28
- logger.error({ err: error, name: "del" }, "redis cache error");
29
- internal.boilerplate.metrics.REDIS_ERROR_COUNT.inc();
30
- }
31
- },
32
- async get(key, defaultValue) {
33
- try {
34
- const start = process.hrtime();
35
- const out = await client.get(key);
36
- const diff = process.hrtime(start);
37
- const durationInMilliseconds = diff[0] * __1.SECOND + diff[1] / 1e6;
38
- internal.boilerplate.metrics.REDIS_OPERATION_LATENCY_MS.observe(durationInMilliseconds);
39
- if (out !== null && __1.is.string(out)) {
40
- return JSON.parse(out);
41
- }
42
- return defaultValue;
43
- }
44
- catch (error) {
45
- logger.error({ err: error, name: "get" }, "redis cache error");
46
- internal.boilerplate.metrics.REDIS_ERROR_COUNT.inc();
47
- return defaultValue;
48
- }
49
- },
50
- async keys(pattern) {
51
- try {
52
- return await client.keys(pattern || "*");
53
- }
54
- catch (error) {
55
- logger.error({ err: error, name: "keys" }, "redis cache error");
56
- internal.boilerplate.metrics.REDIS_ERROR_COUNT.inc();
57
- return [];
58
- }
59
- },
60
- async set(key, value, ttl) {
61
- try {
62
- await client.set(key, JSON.stringify(value), {
63
- EX: ttl,
64
- });
65
- }
66
- catch (error) {
67
- logger.error({ err: error, name: "set" }, "redis cache error");
68
- internal.boilerplate.metrics.REDIS_ERROR_COUNT.inc();
69
- }
70
- },
71
- };
72
- }
73
- //# sourceMappingURL=cache-redis.helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-redis.helper.js","sourceRoot":"","sources":["../../src/helpers/cache-redis.helper.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { TServiceParams } from ".";
2
- export type CacheDriverOptions = Pick<TServiceParams, "logger" | "config" | "lifecycle" | "internal">;
3
- export interface ICacheDriver {
4
- get<T>(key: string, defaultValue?: T): Promise<T | undefined>;
5
- set<T>(key: string, value: T, ttl: number): Promise<void>;
6
- del(key: string): Promise<void>;
7
- keys(pattern?: string): Promise<string[]>;
8
- }
9
- export type TCache = {
10
- del: (key: string) => Promise<void>;
11
- get: <T>(key: string, defaultValue?: T) => Promise<T>;
12
- set: <T>(key: string, value: T, ttl?: number) => Promise<void>;
13
- keys: (pattern?: string) => Promise<string[]>;
14
- setClient: (client: ICacheDriver) => void;
15
- };
16
- export declare enum CacheProviders {
17
- redis = "redis",
18
- memory = "memory"
19
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CacheProviders = void 0;
4
- var CacheProviders;
5
- (function (CacheProviders) {
6
- CacheProviders["redis"] = "redis";
7
- CacheProviders["memory"] = "memory";
8
- })(CacheProviders || (exports.CacheProviders = CacheProviders = {}));
9
- //# sourceMappingURL=cache.helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.helper.js","sourceRoot":"","sources":["../../src/helpers/cache.helper.ts"],"names":[],"mappings":";;;AAsBA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB"}
@@ -1,165 +0,0 @@
1
- import { MergeExclusive } from "type-fest";
2
- import { TContext } from "..";
3
- /**
4
- * Defines the types of parameters that can be used in fetch requests.
5
- */
6
- export type FetchParameterTypes = string | boolean | Date | number | Array<string | Date | number>;
7
- /**
8
- * Enumerates HTTP methods used in fetch requests.
9
- */
10
- export declare enum HTTP_METHODS {
11
- get = "get",
12
- delete = "delete",
13
- put = "put",
14
- patch = "patch",
15
- post = "post"
16
- }
17
- type NoBodyMethods = "get" | "delete";
18
- type BodyMethods = "put" | "patch" | "post";
19
- /**
20
- * Represents a fetch request with additional properties and body content.
21
- */
22
- export type FetchWith<EXTRA extends Record<never, string> = Record<never, string>, BODY extends TFetchBody = undefined> = Partial<FetchArguments<BODY>> & EXTRA;
23
- export type FetchProcessTypes = boolean | "text" | "json" | "raw" | undefined;
24
- type BaseFetchArguments = {
25
- /**
26
- * Headers to append
27
- */
28
- headers?: Record<string, string>;
29
- /**
30
- * Query params to send
31
- */
32
- params?: Record<string, FetchParameterTypes>;
33
- /**
34
- * Built in post-processing
35
- *
36
- * - true / "json" = attempt to decode as json
37
- * - false / "raw" = return the node-fetch response object without processing
38
- * - "text" = return result as text, no additional processing
39
- *
40
- * ? boolean values are deprecated
41
- */
42
- process?: FetchProcessTypes;
43
- /**
44
- * If provided, metrics will be kept for this request, and associated with labels
45
- */
46
- label?: string;
47
- /**
48
- * Defaults to global fetch context
49
- */
50
- context?: TContext;
51
- };
52
- type BaseFetchUrl = {
53
- /**
54
- * URL to send request to
55
- */
56
- url: string;
57
- } & MergeExclusive<{
58
- /**
59
- * Frequently filled in by wrapper services
60
- */
61
- baseUrl?: string;
62
- }, {
63
- /**
64
- * URL is the full path (includes http://...)
65
- *
66
- * Ignores baseUrl if set
67
- */
68
- rawUrl?: boolean;
69
- }>;
70
- type BaseFetchBody<BODY extends TFetchBody = undefined> = MergeExclusive<{
71
- /**
72
- * POSTDATA
73
- */
74
- body?: BODY;
75
- /**
76
- * HTTP method
77
- */
78
- method: BodyMethods;
79
- }, {
80
- /**
81
- * HTTP method
82
- */
83
- method?: NoBodyMethods;
84
- }>;
85
- /**
86
- * Defines the structure and types for arguments passed to fetch requests.
87
- */
88
- export type FetchArguments<BODY extends TFetchBody = undefined> = BaseFetchUrl & BaseFetchArguments & BaseFetchBody<BODY>;
89
- /**
90
- * Represents a subset of FetchArguments for specific use cases.
91
- */
92
- export type FilteredFetchArguments<BODY extends TFetchBody = undefined> = BaseFetchBody<BODY> & Pick<BaseFetchUrl, "url"> & Pick<BaseFetchArguments, "process" | "params">;
93
- /**
94
- * Same thing as FetchWith, but the function doesn't need any args
95
- *
96
- * This is a work around, for some reason the default value approach isn't work as I had hoped
97
- */
98
- export type BaseFetch = Partial<FetchArguments>;
99
- /**
100
- * Defines the types of values that can be used in filter operations.
101
- */
102
- export type FilterValueType = string | boolean | number | Date | RegExp | unknown | Record<string, string>;
103
- /**
104
- * Enumerates the types of operations available for data filtering.
105
- */
106
- export declare enum FILTER_OPERATIONS {
107
- elem = "elem",
108
- regex = "regex",
109
- in = "in",
110
- nin = "nin",
111
- lt = "lt",
112
- lte = "lte",
113
- gt = "gt",
114
- gte = "gte",
115
- exists = "exists",
116
- empty = "empty",
117
- ne = "ne",
118
- eq = "eq"
119
- }
120
- export interface ComparisonDTO {
121
- operation?: FILTER_OPERATIONS | `${FILTER_OPERATIONS}`;
122
- value?: FilterValueType | FilterValueType[];
123
- }
124
- export interface Filter<FIELDS = string> extends ComparisonDTO {
125
- empty?: boolean;
126
- exists?: boolean;
127
- field?: FIELDS;
128
- }
129
- export interface ResultControl {
130
- filters?: Set<Filter>;
131
- limit?: number;
132
- select?: string[];
133
- skip?: number;
134
- sort?: string[];
135
- }
136
- export declare function controlToQuery(value: Readonly<ResultControl>): Record<string, string>;
137
- export declare function buildFilter(key: string, value: FilterValueType | FilterValueType[]): Filter;
138
- export declare function queryToControl(value: Readonly<Record<string, string>>): ResultControl;
139
- /**
140
- * Properties that alter the way that fetcher works.
141
- */
142
- export type FetcherOptions = {
143
- /**
144
- * typically domain names with scheme, added to the front of urls if the individual request doesn't override
145
- */
146
- baseUrl?: string;
147
- /**
148
- * merged into every request
149
- */
150
- headers?: Record<string, string>;
151
- /**
152
- * Alter the context attached to the log statements emitted from the fetcher
153
- */
154
- context?: TContext;
155
- };
156
- export type DownloadOptions<BODY extends TFetchBody = undefined> = Partial<FetchArguments<BODY>> & {
157
- destination: string;
158
- };
159
- export declare function fetchCast(item: FetchParameterTypes): string;
160
- export type TFetchBody = object | undefined;
161
- export declare function buildFilterString(fetchWith: FetchWith<{
162
- filters?: Readonly<ResultControl>;
163
- params?: Record<string, FetchParameterTypes>;
164
- }>): string;
165
- export {};
@@ -1,173 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FILTER_OPERATIONS = exports.HTTP_METHODS = void 0;
4
- exports.controlToQuery = controlToQuery;
5
- exports.buildFilter = buildFilter;
6
- exports.queryToControl = queryToControl;
7
- exports.fetchCast = fetchCast;
8
- exports.buildFilterString = buildFilterString;
9
- const __1 = require("..");
10
- /**
11
- * Enumerates HTTP methods used in fetch requests.
12
- */
13
- var HTTP_METHODS;
14
- (function (HTTP_METHODS) {
15
- HTTP_METHODS["get"] = "get";
16
- HTTP_METHODS["delete"] = "delete";
17
- HTTP_METHODS["put"] = "put";
18
- HTTP_METHODS["patch"] = "patch";
19
- HTTP_METHODS["post"] = "post";
20
- })(HTTP_METHODS || (exports.HTTP_METHODS = HTTP_METHODS = {}));
21
- /**
22
- * Enumerates the types of operations available for data filtering.
23
- */
24
- var FILTER_OPERATIONS;
25
- (function (FILTER_OPERATIONS) {
26
- // "elemMatch" functionality in mongo
27
- // eslint-disable-next-line unicorn/prevent-abbreviations
28
- FILTER_OPERATIONS["elem"] = "elem";
29
- FILTER_OPERATIONS["regex"] = "regex";
30
- FILTER_OPERATIONS["in"] = "in";
31
- FILTER_OPERATIONS["nin"] = "nin";
32
- FILTER_OPERATIONS["lt"] = "lt";
33
- FILTER_OPERATIONS["lte"] = "lte";
34
- FILTER_OPERATIONS["gt"] = "gt";
35
- FILTER_OPERATIONS["gte"] = "gte";
36
- FILTER_OPERATIONS["exists"] = "exists";
37
- FILTER_OPERATIONS["empty"] = "empty";
38
- FILTER_OPERATIONS["ne"] = "ne";
39
- FILTER_OPERATIONS["eq"] = "eq";
40
- })(FILTER_OPERATIONS || (exports.FILTER_OPERATIONS = FILTER_OPERATIONS = {}));
41
- // eslint-disable-next-line sonarjs/cognitive-complexity
42
- function controlToQuery(value) {
43
- const out = new Map();
44
- if (value?.limit) {
45
- out.set("limit", value.limit.toString());
46
- }
47
- if (value?.skip) {
48
- out.set("skip", value.skip.toString());
49
- }
50
- if (value?.sort) {
51
- out.set("sort", value.sort.join(","));
52
- }
53
- if (value?.select) {
54
- out.set("select", value.select.join(","));
55
- }
56
- value?.filters?.forEach((f) => {
57
- let field = f.field;
58
- if (f.operation && f.operation !== FILTER_OPERATIONS.eq) {
59
- field = `${field}__${f.operation}`;
60
- }
61
- let value = f.value;
62
- if (__1.is.array(value)) {
63
- value = value.join(",");
64
- }
65
- if (value instanceof Date) {
66
- value = value.toISOString();
67
- }
68
- if (value === null) {
69
- value = "null";
70
- }
71
- if (field) {
72
- out.set(field, (value ?? "").toString());
73
- }
74
- });
75
- return Object.fromEntries(out.entries());
76
- }
77
- function buildFilter(key, value) {
78
- const [name, operation] = key.split("__");
79
- switch (operation) {
80
- case "in":
81
- case "nin":
82
- if (!__1.is.array(value)) {
83
- value = __1.is.string(value) ? value.split(",") : [value];
84
- }
85
- return {
86
- field: name,
87
- operation,
88
- value: value,
89
- };
90
- case "elem":
91
- return {
92
- field: name,
93
- operation,
94
- value: __1.is.string(value) ? JSON.parse(value) : value,
95
- };
96
- default:
97
- return {
98
- field: name,
99
- operation,
100
- value,
101
- };
102
- }
103
- }
104
- function queryToControl(value) {
105
- const filters = new Set();
106
- const out = { filters };
107
- const parameters = new Map(Object.entries(value));
108
- parameters.forEach((value, key) => {
109
- const [name, operation] = key.split("__");
110
- switch (key) {
111
- case "select":
112
- out.select = value.split(",");
113
- return;
114
- case "sort":
115
- out.sort = value.split(",");
116
- return;
117
- case "limit":
118
- out.limit = Number(value);
119
- return;
120
- case "skip":
121
- out.skip = Number(value);
122
- return;
123
- }
124
- switch (operation) {
125
- case "in":
126
- case "nin":
127
- filters.add({
128
- field: name,
129
- operation,
130
- value: value.split(","),
131
- });
132
- return;
133
- case "elem":
134
- filters.add({
135
- field: name,
136
- operation,
137
- value: JSON.parse(value),
138
- });
139
- return;
140
- default:
141
- filters.add({
142
- field: name,
143
- operation,
144
- value,
145
- });
146
- }
147
- });
148
- return out;
149
- }
150
- function fetchCast(item) {
151
- if (__1.is.array(item)) {
152
- return item.map((i) => fetchCast(i)).join(",");
153
- }
154
- if (item instanceof Date) {
155
- return item.toISOString();
156
- }
157
- if (__1.is.number(item)) {
158
- return item.toString();
159
- }
160
- if (__1.is.boolean(item)) {
161
- return item ? "true" : "false";
162
- }
163
- return item;
164
- }
165
- function buildFilterString(fetchWith) {
166
- return new URLSearchParams({
167
- ...Object.fromEntries(Object.entries(fetchWith.params ?? {}).map(([label, value]) => [
168
- label,
169
- fetchCast(value),
170
- ])),
171
- }).toString();
172
- }
173
- //# sourceMappingURL=fetch.helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.helper.js","sourceRoot":"","sources":["../../src/helpers/fetch.helper.ts"],"names":[],"mappings":"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"}