@permaweb/libs 0.0.24 → 0.0.26

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 (55) hide show
  1. package/dist/index.cjs +8 -7
  2. package/dist/index.cjs.map +3 -3
  3. package/dist/index.esm.js +7 -6
  4. package/dist/index.esm.js.map +3 -3
  5. package/dist/index.js +8 -7
  6. package/dist/index.js.map +3 -3
  7. package/dist/types/common/gql.d.ts +2 -1
  8. package/dist/types/helpers/config.d.ts +1 -0
  9. package/dist/types/helpers/types.d.ts +4 -3
  10. package/dist/types/index.d.ts +2 -0
  11. package/dist/types/services/collections.d.ts +1 -0
  12. package/package.json +3 -2
  13. package/dist/bundle.esm.js +0 -1
  14. package/dist/common/ao.d.ts +0 -24
  15. package/dist/common/ao.js +0 -326
  16. package/dist/common/ao.js.map +0 -1
  17. package/dist/common/arweave.d.ts +0 -7
  18. package/dist/common/arweave.js +0 -62
  19. package/dist/common/arweave.js.map +0 -1
  20. package/dist/common/gql.d.ts +0 -3
  21. package/dist/common/gql.js +0 -176
  22. package/dist/common/gql.js.map +0 -1
  23. package/dist/common/index.d.ts +0 -3
  24. package/dist/common/index.js +0 -4
  25. package/dist/common/index.js.map +0 -1
  26. package/dist/helpers/config.d.ts +0 -67
  27. package/dist/helpers/config.js +0 -68
  28. package/dist/helpers/config.js.map +0 -1
  29. package/dist/helpers/endpoints.d.ts +0 -3
  30. package/dist/helpers/endpoints.js +0 -17
  31. package/dist/helpers/endpoints.js.map +0 -1
  32. package/dist/helpers/index.d.ts +0 -4
  33. package/dist/helpers/index.js +0 -5
  34. package/dist/helpers/index.js.map +0 -1
  35. package/dist/helpers/types.d.ts +0 -184
  36. package/dist/helpers/types.js +0 -2
  37. package/dist/helpers/types.js.map +0 -1
  38. package/dist/helpers/utils.d.ts +0 -37
  39. package/dist/helpers/utils.js +0 -245
  40. package/dist/helpers/utils.js.map +0 -1
  41. package/dist/index.cjs.js +0 -153
  42. package/dist/index.cjs.js.map +0 -7
  43. package/dist/index.d.ts +0 -3
  44. package/dist/services/assets.d.ts +0 -5
  45. package/dist/services/assets.js +0 -277
  46. package/dist/services/assets.js.map +0 -1
  47. package/dist/services/index.d.ts +0 -3
  48. package/dist/services/index.js +0 -4
  49. package/dist/services/index.js.map +0 -1
  50. package/dist/services/profiles.d.ts +0 -5
  51. package/dist/services/profiles.js +0 -146
  52. package/dist/services/profiles.js.map +0 -1
  53. package/dist/services/zones.d.ts +0 -10
  54. package/dist/services/zones.js +0 -78
  55. package/dist/services/zones.js.map +0 -1
@@ -1,67 +0,0 @@
1
- export declare const AO: {
2
- module: string;
3
- scheduler: string;
4
- mu: string;
5
- src: {
6
- asset: string;
7
- zone: string;
8
- };
9
- };
10
- export declare const CONTENT_TYPES: {
11
- [key: string]: {
12
- type: string;
13
- serialize: (data: any) => any;
14
- };
15
- };
16
- export declare const GATEWAYS: {
17
- arweave: string;
18
- goldsky: string;
19
- };
20
- export declare const LICENSES: {
21
- udl: {
22
- label: string;
23
- address: string;
24
- };
25
- };
26
- export declare const TAGS: {
27
- keys: {
28
- access: string;
29
- banner: string;
30
- bootloader: string;
31
- bootloaderInit: string;
32
- collectionId: string;
33
- collectionName: string;
34
- commericalUse: string;
35
- contentType: string;
36
- creator: string;
37
- currency: string;
38
- dataModelTraining: string;
39
- dataProtocol: string;
40
- dateCreated: string;
41
- derivations: string;
42
- description: string;
43
- displayName: string;
44
- handle: string;
45
- implements: string;
46
- initialOwner: string;
47
- license: string;
48
- name: string;
49
- paymentAddress: string;
50
- paymentMode: string;
51
- profileIndex: string;
52
- protocolName: string;
53
- renderWith: string;
54
- thumbnail: string;
55
- title: string;
56
- topic: string;
57
- type: string;
58
- zoneType: string;
59
- };
60
- };
61
- export declare const UPLOAD: {
62
- node1: string;
63
- node2: string;
64
- batchSize: number;
65
- chunkSize: number;
66
- dispatchUploadSize: number;
67
- };
@@ -1,68 +0,0 @@
1
- export const AO = {
2
- module: 'Do_Uc2Sju_ffp6Ev0AnLVdPtot15rvMjP-a9VVaA5fM',
3
- scheduler: '_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA',
4
- mu: 'fcoN_xJeisVsPXA-trzVAuIiqO3ydLQxM-L4XbrQKzY',
5
- src: {
6
- asset: 'gyvfBebLlNJw0_bdq6NLL_BK_dqpgj9nRTYebyoOmKI',
7
- zone: 'UmDqxL8ufIj2Zj9eKDQfDj_hyJ8rWZn7VaTgpyeRT94'
8
- }
9
- };
10
- export const CONTENT_TYPES = {
11
- 'application/json': {
12
- type: 'application/json',
13
- serialize: (data) => JSON.stringify(data),
14
- },
15
- };
16
- export const GATEWAYS = {
17
- arweave: 'arweave.net',
18
- goldsky: 'arweave-search.goldsky.com',
19
- };
20
- export const LICENSES = {
21
- udl: {
22
- label: 'Universal Data License',
23
- address: 'dE0rmDfl9_OWjkDznNEXHaSO_JohJkRolvMzaCroUdw'
24
- },
25
- };
26
- export const TAGS = {
27
- keys: {
28
- access: 'Access-Fee',
29
- banner: 'Banner',
30
- bootloader: 'Bootloader',
31
- bootloaderInit: 'On-Boot',
32
- collectionId: 'Collection-Id',
33
- collectionName: 'Collection-Name',
34
- commericalUse: 'Commercial-Use',
35
- contentType: 'Content-Type',
36
- creator: 'Creator',
37
- currency: 'Currency',
38
- dataModelTraining: 'Data-Model-Training',
39
- dataProtocol: 'Data-Protocol',
40
- dateCreated: 'Date-Created',
41
- derivations: 'Derivations',
42
- description: 'Description',
43
- displayName: 'Display-Name',
44
- handle: 'Handle',
45
- implements: 'Implements',
46
- initialOwner: 'Initial-Owner',
47
- license: 'License',
48
- name: 'Name',
49
- paymentAddress: 'Payment-Address',
50
- paymentMode: 'Payment-Mode',
51
- profileIndex: 'Profile-Index',
52
- protocolName: 'Protocol-Name',
53
- renderWith: 'Render-With',
54
- thumbnail: 'Thumbnail',
55
- title: 'Title',
56
- topic: 'Topic',
57
- type: 'Type',
58
- zoneType: 'Zone-Type'
59
- }
60
- };
61
- export const UPLOAD = {
62
- node1: 'https://up.arweave.net',
63
- node2: 'https://turbo.ardrive.io',
64
- batchSize: 1,
65
- chunkSize: 7500000,
66
- dispatchUploadSize: 100 * 1024,
67
- };
68
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/helpers/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IACjB,MAAM,EAAE,6CAA6C;IACrD,SAAS,EAAE,6CAA6C;IACxD,EAAE,EAAE,6CAA6C;IACjD,GAAG,EAAE;QACJ,KAAK,EAAE,6CAA6C;QACpD,IAAI,EAAE,6CAA6C;KACnD;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuE;IAChG,kBAAkB,EAAE;QACnB,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC9C;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,4BAA4B;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,GAAG,EAAE;QACJ,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,6CAA6C;KACtD;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG;IACnB,IAAI,EAAE;QACL,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,eAAe;QAC7B,cAAc,EAAE,iBAAiB;QACjC,aAAa,EAAE,gBAAgB;QAC/B,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,iBAAiB,EAAE,qBAAqB;QACxC,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,cAAc;QAC3B,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,YAAY,EAAE,eAAe;QAC7B,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,iBAAiB;QACjC,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,eAAe;QAC7B,UAAU,EAAE,aAAa;QACzB,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,WAAW;KACrB;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,KAAK,EAAE,wBAAwB;IAC/B,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,OAAO;IAClB,kBAAkB,EAAE,GAAG,GAAG,IAAI;CAC9B,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function getARBalanceEndpoint(walletAddress: string): string;
2
- export declare function getTxEndpoint(txId: string): string;
3
- export declare function getRendererEndpoint(renderWith: string, tx: string): string;
@@ -1,17 +0,0 @@
1
- import { checkValidAddress } from './utils';
2
- const arweaveEndpoint = 'https://arweave.net';
3
- export function getARBalanceEndpoint(walletAddress) {
4
- return `${arweaveEndpoint}/wallet/${walletAddress}/balance`;
5
- }
6
- export function getTxEndpoint(txId) {
7
- return `${arweaveEndpoint}/${txId}`;
8
- }
9
- export function getRendererEndpoint(renderWith, tx) {
10
- if (checkValidAddress(renderWith)) {
11
- return `${arweaveEndpoint}/${renderWith}/?tx=${tx}`;
12
- }
13
- else {
14
- return `https://${renderWith}.arweave.net/?tx=${tx}`;
15
- }
16
- }
17
- //# sourceMappingURL=endpoints.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/helpers/endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACzD,OAAO,GAAG,eAAe,WAAW,aAAa,UAAU,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,GAAG,eAAe,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,EAAU;IACjE,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,eAAe,IAAI,UAAU,QAAQ,EAAE,EAAE,CAAC;IACrD,CAAC;SAAM,CAAC;QACP,OAAO,WAAW,UAAU,oBAAoB,EAAE,EAAE,CAAC;IACtD,CAAC;AACF,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from './config';
2
- export * from './endpoints';
3
- export * from './types';
4
- export * from './utils';
@@ -1,5 +0,0 @@
1
- export * from './config';
2
- export * from './endpoints';
3
- export * from './types';
4
- export * from './utils';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -1,184 +0,0 @@
1
- export type ProcessSpawnType = {
2
- module: string;
3
- scheduler: string;
4
- data: any;
5
- tags: TagType[];
6
- wallet: any;
7
- };
8
- export type ProcessCreateType = {
9
- module?: string;
10
- scheduler?: string;
11
- spawnData?: any;
12
- spawnTags?: TagType[];
13
- evalTags?: TagType[];
14
- evalTxId?: string;
15
- evalSrc?: string;
16
- wallet: any;
17
- };
18
- export type MessageSendType = {
19
- processId: string;
20
- wallet: any;
21
- action: string;
22
- tags?: TagType[] | null;
23
- data?: any;
24
- useRawData?: boolean;
25
- };
26
- export type MessageResultType = {
27
- messageId: string;
28
- processId: string;
29
- action: string;
30
- };
31
- export type MessageDryRunType = {
32
- processId: string;
33
- action: string;
34
- tags?: TagType[] | null;
35
- data?: string | object;
36
- };
37
- export type ZoneType = {
38
- store: any;
39
- assets: ZoneAssetType[];
40
- };
41
- export type ZoneAssetType = {
42
- id: string;
43
- balance: string;
44
- dateCreated: number;
45
- lastUpdate: number;
46
- };
47
- export type ProfileArgsType = {
48
- username: string;
49
- displayName: string;
50
- description: string;
51
- thumbnail?: any;
52
- banner?: any;
53
- };
54
- export type ProfileType = {
55
- id: string;
56
- walletAddress: string;
57
- username: string;
58
- displayName: string;
59
- description: string;
60
- thumbnail?: any;
61
- banner?: any;
62
- assets: {
63
- id: string;
64
- quantity: string;
65
- }[];
66
- } & any;
67
- export type AssetCreateArgsType = {
68
- title: string;
69
- description: string;
70
- type: string;
71
- topics: string[];
72
- contentType: string;
73
- data: any;
74
- creator?: string;
75
- collectionId?: string;
76
- renderWith?: string;
77
- thumbnail?: string;
78
- supply?: number;
79
- denomination?: number;
80
- transferable?: boolean;
81
- tags?: TagType[];
82
- src?: string;
83
- };
84
- export type AssetHeaderType = {
85
- id: string;
86
- owner: string | null;
87
- creator: string | null;
88
- title: string | null;
89
- description: string | null;
90
- type: string | null;
91
- topics: string[] | null;
92
- implementation: string | null;
93
- contentType: string | null;
94
- renderWith: string | null;
95
- thumbnail: string | null;
96
- udl: UDLicenseType | null;
97
- collectionId: string | null;
98
- dateCreated: number | null;
99
- blockHeight: number | null;
100
- tags?: TagType[];
101
- };
102
- export type AssetStateType = {
103
- ticker: string | null;
104
- denomination: string | null;
105
- balances: {
106
- [key: string]: string;
107
- } | null;
108
- transferable: boolean | null;
109
- };
110
- export type AssetDetailType = AssetHeaderType & AssetStateType;
111
- export type UDLicenseType = {
112
- access: UDLicenseValueType | null;
113
- derivations: UDLicenseValueType | null;
114
- commercialUse: UDLicenseValueType | null;
115
- dataModelTraining: UDLicenseValueType | null;
116
- paymentMode: string | null;
117
- paymentAddress: string | null;
118
- currency: string | null;
119
- };
120
- export type UDLicenseValueType = {
121
- value: string | null;
122
- icon?: string;
123
- endText?: string;
124
- };
125
- export type BaseGQLArgsType = {
126
- ids?: string[] | null;
127
- tags?: TagFilterType[] | null;
128
- owners?: string[] | null;
129
- cursor?: string | null;
130
- paginator?: number;
131
- minBlock?: number;
132
- maxBlock?: number;
133
- };
134
- export type GQLArgsType = {
135
- gateway: string;
136
- } & BaseGQLArgsType;
137
- export type QueryBodyGQLArgsType = BaseGQLArgsType & {
138
- gateway?: string;
139
- queryKey?: string;
140
- };
141
- export type BatchGQLArgsType = {
142
- gateway: string;
143
- entries: {
144
- [queryKey: string]: BaseGQLArgsType;
145
- };
146
- };
147
- export type GQLNodeResponseType = {
148
- cursor: string | null;
149
- node: {
150
- id: string;
151
- tags: TagType[];
152
- data: {
153
- size: string;
154
- type: string;
155
- };
156
- owner: {
157
- address: string;
158
- };
159
- block: {
160
- height: number;
161
- timestamp: number;
162
- };
163
- };
164
- };
165
- export type GQLResponseType = {
166
- count: number;
167
- nextCursor: string | null;
168
- previousCursor: string | null;
169
- };
170
- export type DefaultGQLResponseType = {
171
- data: GQLNodeResponseType[];
172
- } & GQLResponseType;
173
- export type BatchAGQLResponseType = {
174
- [queryKey: string]: DefaultGQLResponseType;
175
- };
176
- export type TagType = {
177
- name: string;
178
- value: string;
179
- };
180
- export type TagFilterType = {
181
- name: string;
182
- values: string[];
183
- match?: string;
184
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/helpers/types.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- export declare function checkValidAddress(address: string | null): boolean;
2
- export declare function formatAddress(address: string | null, wrap: boolean): string;
3
- export declare function getTagValue(list: {
4
- [key: string]: any;
5
- }[], name: string): string | null;
6
- export declare function formatCount(count: string): string;
7
- export declare function formatPercentage(percentage: any): string;
8
- export declare function formatDate(dateArg: string | number | null, dateType: 'iso' | 'epoch', fullTime?: boolean): string | null;
9
- export declare function getRelativeDate(timestamp: number): string;
10
- export declare function formatRequiredField(field: string): string;
11
- export declare function splitTagValue(tag: any): any;
12
- export declare function getTagDisplay(value: string): string;
13
- export declare function getDataURLContentType(dataURL: string): string | null;
14
- export declare function getBase64Data(dataURL: string): string;
15
- export declare function getByteSize(input: string | Buffer): number;
16
- export declare function getTotalTokenBalance(tokenBalances: {
17
- profileBalance: number;
18
- walletBalance: number;
19
- } | null): number | null;
20
- export declare function isFirefox(): boolean;
21
- export declare function reverseDenomination(number: number): number;
22
- export declare function cleanTagValue(value: string): string;
23
- /**
24
- * Extracts all values from a key-value store that match a given prefix
25
- * @param store The key-value store object to search
26
- * @param prefix The prefix to filter keys by (e.g., 'portal')
27
- * @returns Array of values whose keys match the prefix
28
- */
29
- export declare function getStoreNamespace<T = any>(prefix: string, store: Record<string, T>): T[];
30
- export declare function buildStoreNamespace(prefix: string, value: string): string;
31
- export declare const globalLog: (...args: any[]) => void;
32
- export declare function mapToProcessCase(obj: any): any;
33
- export declare function mapFromProcessCase(obj: any): any;
34
- export declare function getBootTag(key: string, value: string): {
35
- name: string;
36
- value: string;
37
- };
@@ -1,245 +0,0 @@
1
- import { TAGS } from './config';
2
- export function checkValidAddress(address) {
3
- if (!address)
4
- return false;
5
- return /^[a-z0-9_-]{43}$/i.test(address);
6
- }
7
- export function formatAddress(address, wrap) {
8
- if (!address)
9
- return '';
10
- if (!checkValidAddress(address))
11
- return address;
12
- const formattedAddress = address.substring(0, 5) + '...' + address.substring(36, address.length);
13
- return wrap ? `(${formattedAddress})` : formattedAddress;
14
- }
15
- export function getTagValue(list, name) {
16
- for (let i = 0; i < list.length; i++) {
17
- if (list[i]) {
18
- if (list[i].name === name) {
19
- return list[i].value;
20
- }
21
- }
22
- }
23
- return null;
24
- }
25
- export function formatCount(count) {
26
- if (count === '0' || !Number(count))
27
- return '0';
28
- if (count.includes('.')) {
29
- let parts = count.split('.');
30
- parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
31
- // Find the position of the last non-zero digit within the first 6 decimal places
32
- let index = 0;
33
- for (let i = 0; i < Math.min(parts[1].length, 6); i++) {
34
- if (parts[1][i] !== '0') {
35
- index = i + 1;
36
- }
37
- }
38
- if (index === 0) {
39
- // If all decimals are zeros, keep two decimal places
40
- parts[1] = '00';
41
- }
42
- else {
43
- // Otherwise, truncate to the last non-zero digit
44
- parts[1] = parts[1].substring(0, index);
45
- // If the decimal part is longer than 4 digits, truncate to 4 digits
46
- if (parts[1].length > 4 && parts[1].substring(0, 4) !== '0000') {
47
- parts[1] = parts[1].substring(0, 4);
48
- }
49
- }
50
- return parts.join('.');
51
- }
52
- else {
53
- return count.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
54
- }
55
- }
56
- export function formatPercentage(percentage) {
57
- if (isNaN(percentage))
58
- return '0%';
59
- let multiplied = percentage * 100;
60
- let decimalPart = multiplied.toString().split('.')[1];
61
- if (!decimalPart) {
62
- return `${multiplied.toFixed(0)}%`;
63
- }
64
- if (decimalPart.length > 6 && decimalPart.substring(0, 6) === '000000') {
65
- return `${multiplied.toFixed(0)}%`;
66
- }
67
- let nonZeroIndex = decimalPart.length;
68
- for (let i = 0; i < decimalPart.length; i++) {
69
- if (decimalPart[i] !== '0') {
70
- nonZeroIndex = i + 1;
71
- break;
72
- }
73
- }
74
- return `${multiplied.toFixed(nonZeroIndex)}%`;
75
- }
76
- export function formatDate(dateArg, dateType, fullTime) {
77
- if (!dateArg) {
78
- return null;
79
- }
80
- let date = null;
81
- switch (dateType) {
82
- case 'iso':
83
- date = new Date(dateArg);
84
- break;
85
- case 'epoch':
86
- date = new Date(Number(dateArg));
87
- break;
88
- default:
89
- date = new Date(dateArg);
90
- break;
91
- }
92
- return fullTime
93
- ? `${date.toLocaleString('default', { month: 'long' })} ${date.getDate()}, ${date.getUTCFullYear()} at ${date.getHours() % 12 || 12}:${date.getMinutes().toString().padStart(2, '0')} ${date.getHours() >= 12 ? 'PM' : 'AM'}`
94
- : `${date.toLocaleString('default', { month: 'long' })} ${date.getDate()}, ${date.getUTCFullYear()}`;
95
- }
96
- export function getRelativeDate(timestamp) {
97
- if (!timestamp)
98
- return '-';
99
- const currentDate = new Date();
100
- const inputDate = new Date(timestamp);
101
- const timeDifference = currentDate.getTime() - inputDate.getTime();
102
- const secondsDifference = Math.floor(timeDifference / 1000);
103
- const minutesDifference = Math.floor(secondsDifference / 60);
104
- const hoursDifference = Math.floor(minutesDifference / 60);
105
- const daysDifference = Math.floor(hoursDifference / 24);
106
- const monthsDifference = Math.floor(daysDifference / 30.44); // Average days in a month
107
- const yearsDifference = Math.floor(monthsDifference / 12);
108
- if (yearsDifference > 0) {
109
- return `${yearsDifference} year${yearsDifference > 1 ? 's' : ''} ago`;
110
- }
111
- else if (monthsDifference > 0) {
112
- return `${monthsDifference} month${monthsDifference > 1 ? 's' : ''} ago`;
113
- }
114
- else if (daysDifference > 0) {
115
- return `${daysDifference} day${daysDifference > 1 ? 's' : ''} ago`;
116
- }
117
- else if (hoursDifference > 0) {
118
- return `${hoursDifference} hour${hoursDifference > 1 ? 's' : ''} ago`;
119
- }
120
- else if (minutesDifference > 0) {
121
- return `${minutesDifference} minute${minutesDifference > 1 ? 's' : ''} ago`;
122
- }
123
- else {
124
- return `${secondsDifference} second${secondsDifference !== 1 ? 's' : ''} ago`;
125
- }
126
- }
127
- export function formatRequiredField(field) {
128
- return `${field} *`;
129
- }
130
- export function splitTagValue(tag) {
131
- let parts = tag.split('-');
132
- let lastPart = parts[parts.length - 1];
133
- if (!isNaN(lastPart)) {
134
- parts = parts.slice(0, -1).join(' ') + ': ' + lastPart;
135
- }
136
- else {
137
- parts = parts.join(' ');
138
- }
139
- return parts;
140
- }
141
- export function getTagDisplay(value) {
142
- let result = value.replace(/([A-Z])/g, ' $1').trim();
143
- result = result.charAt(0).toUpperCase() + result.slice(1);
144
- return result;
145
- }
146
- export function getDataURLContentType(dataURL) {
147
- const result = dataURL.match(/^data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+);base64,/);
148
- return result ? result[1] : null;
149
- }
150
- export function getBase64Data(dataURL) {
151
- return dataURL.split(',')[1];
152
- }
153
- export function getByteSize(input) {
154
- let sizeInBytes;
155
- if (Buffer.isBuffer(input)) {
156
- sizeInBytes = input.length;
157
- }
158
- else if (typeof input === 'string') {
159
- sizeInBytes = Buffer.byteLength(input, 'utf-8');
160
- }
161
- else {
162
- throw new Error('Input must be a string or a Buffer');
163
- }
164
- return sizeInBytes;
165
- }
166
- export function getTotalTokenBalance(tokenBalances) {
167
- if (!tokenBalances)
168
- return null;
169
- const total = (tokenBalances.profileBalance || 0) + (tokenBalances.walletBalance || 0);
170
- return total;
171
- }
172
- export function isFirefox() {
173
- return typeof InstallTrigger !== 'undefined';
174
- }
175
- export function reverseDenomination(number) {
176
- let count = 0;
177
- while (number > 0 && number % 10 === 0) {
178
- count++;
179
- number /= 10;
180
- }
181
- return count;
182
- }
183
- export function cleanTagValue(value) {
184
- let updatedValue;
185
- updatedValue = value.replace(/\[|\]/g, '');
186
- return updatedValue;
187
- }
188
- /**
189
- * Extracts all values from a key-value store that match a given prefix
190
- * @param store The key-value store object to search
191
- * @param prefix The prefix to filter keys by (e.g., 'portal')
192
- * @returns Array of values whose keys match the prefix
193
- */
194
- export function getStoreNamespace(prefix, store) {
195
- if (!store)
196
- return [];
197
- const searchPrefix = `${prefix}:`;
198
- return Object.keys(store)
199
- .filter(key => key.startsWith(searchPrefix))
200
- .map(key => store[key]);
201
- }
202
- export function buildStoreNamespace(prefix, value) {
203
- return `${prefix}:${value.toLowerCase().replace(/\s+/g, '-')}`;
204
- }
205
- export const globalLog = (...args) => {
206
- console.log('[@permaweb/libs]', ...args);
207
- };
208
- function toProcessCase(str) {
209
- return str.replace(/^[a-z]/, (match) => match.toUpperCase());
210
- }
211
- /* Maps an object from camel case to pascal case */
212
- export function mapToProcessCase(obj) {
213
- if (Array.isArray(obj)) {
214
- return obj.map(mapToProcessCase);
215
- }
216
- else if (obj && typeof obj === 'object') {
217
- return Object.entries(obj).reduce((acc, [key, value]) => {
218
- const toKey = toProcessCase(key);
219
- acc[toKey] = mapToProcessCase(value);
220
- return acc;
221
- }, {});
222
- }
223
- return obj;
224
- }
225
- function fromProcessCase(str) {
226
- return str.charAt(0).toLowerCase() + str.slice(1);
227
- }
228
- /* Maps an object from pascal case to camel case */
229
- export function mapFromProcessCase(obj) {
230
- if (Array.isArray(obj)) {
231
- return obj.map(mapFromProcessCase);
232
- }
233
- else if (obj && typeof obj === 'object') {
234
- return Object.entries(obj).reduce((acc, [key, value]) => {
235
- const fromKey = fromProcessCase(key);
236
- acc[fromKey] = mapFromProcessCase(value);
237
- return acc;
238
- }, {});
239
- }
240
- return obj;
241
- }
242
- export function getBootTag(key, value) {
243
- return { name: `${TAGS.keys.bootloader}-${key}`, value };
244
- }
245
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"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"}