-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.ts
276 lines (242 loc) · 6.85 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
/**
* An object containing the name and value of a query string parameter
* from a URL's query string.
*/
export interface QueryStringParam {
name: string;
value: string;
}
export enum ResourceLevel {
/**
* Default value: resource level could not be determined.
*/
Unknown,
/**
* The resource requested by a URL applies to the entire collection, not a specific token.
*/
Collection,
/**
* The resource requested by a URL applies only to a specific token.
*/
Token,
}
export enum ResourceType {
/**
* Default value: resource type could not be determined
*/
Unknown,
/**
* Description:
* - JSON array of all token IDs in the collection
*
* Path:
* - /collection
*/
Collection,
/**
* Description:
* - JSON object containing general information about the collection or token
*
* Paths:
* - /collection/info
* - /-/{token_id}/info
*/
Info,
/**
* Description:
* - JSON array of all ledger transactions for the collection or token
* - Note: This is an internal ledger of digital certificate sales.
* - OGY transactions are tracked in a separate OGY ledger canister.
*
* Paths:
* - /collection/ledger_info
* - /-/{token_id}/ledger_info
*/
LedgerInfo,
/**
* Description:
* - JSON array of objects (for collection) or single object (for a token) containing
* the token ID in the collection and the corresponding token IDs for the "ext" and
* "dip721" standards
*
* Paths:
* - /collection/translate
* - /-/{token_id}/translate
*/
Translate,
/**
* Description:
* - JSON array of all library assets in the collection or token
* - A library is a list of assets in the collection or token (uploaded
* files or URLs to external web resources)
*
* Paths:
* - /collection/library
* - /-/{token_id}/library
*/
Library,
/**
* Description:
* - Shortcut to a library asset designated as the primary asset of a
* collection or token.
*
* Paths:
* - /collection/primary
* - /-/{token_id}/-/primary
*/
PrimaryAsset,
/**
* Description:
* - Shortcut to a library asset designated as the preview asset of a
* collection or token.
*
* Paths:
* - /collection/preview
* - /-/{token_id}/-/preview
*/
PreviewAsset,
/**
* Description:
* - Shortcut to a library asset designated as the hidden asset of a
* collection or token.
*
* Paths:
* - /collection/hidden
* - /-/{token_id}/-/hidden
*/
HiddenAsset,
/**
* Description:
* - Shortcut to a library asset designated as the experience asset of a
* collection or token.
* - This may be an HTML page, a video, or another asset providing a default
* user experience.
*
* Paths:
* - /collection/ex
* - /-/{token_id}/-/ex
*/
ExperienceAsset,
/**
* Description:
* - A specific library asset in the collection or token library
* - A library asset can be any file uploaded to the canister (including an
* html file that serves a dapp), or a URL to an external web resource.
*
* Paths:
* - /collection/-/{library_id}
* - /-/{token_id}/-/{library_id}
*/
LibraryAsset,
}
export interface URLContext {
/**
* The complete original URL that was parsed.
*/
fullUrl: string;
/**
* Root-url or pseudo-root URL that references the canister
*/
canisterUrl: string;
/**
* Root-url or pseudo-root URL that references the canister directly with the canister ID.
* This may be the same as the canisterUrl if the URL is targeting a canister directly.
*/
directCanisterUrl: string;
/**
* Same as the `directCanisterUrl` if `isDevServer` equals `true`, otherwise, `canisterUrl`.
* Note: When hosting a dApp with webpack dev server, asset URLs that use the same port as the dev server
* will return the entire dApp, resulting in broken images and other links. In this specific case, the
* direct canister URL must be used to retrieve assets correctly.
*/
assetCanisterUrl: string;
/**
* The port number of the canister URL if specified.
*/
port: string;
/**
* Principal ID of the canister as a string
*/
canisterId: string;
/**
* Collection ID as registered in the ORIGYN Phone Book canister,
* if used in place of the canister ID. The phone book maps
* collection IDs (friendly names) to canister IDs (principals).
*/
collectionId: string;
/**
* The part of the URL after the canisterUrl.
* This is similar to a root-relative URL, except that it starts after
* the part of the URL that references the canister, which may be
* a root URL or a pseudo root URL.
*/
canisterRelativeUrl: string;
/**
* The canisterRelativeUrl without the hash or query string.
* It may be equal to the canisterRelativeUrl if the URL does not contain
* a hash or query string.
*/
canisterRelativePath: string;
/**
* An array of objects containing the name and value of each query string
* parameter.
*/
queryStringParams: QueryStringParam[];
/**
* The part of the URL following the '#' character used to reference a
* specific location in an HTML page
*/
fragment: string;
/**
* Indicates that the URL is targeting a canister running on localhost.
* If false, the URL is targeting a canister running on the Internet Computer
* mainnet network.
*/
isLocal: boolean;
/**
* Indicates that the URL is local, but targeting a canister running on the Internet Computer.
* This is true when the port is 8080.
* The Origyn DApps run locally on port 8080 (ex: `npm run start:marketplace`) while targeting
* a mainnet canister.
*/
isDevServer: boolean;
/**
* Indicates that the URL is referencing a canister directly.
* If false, the URL is using the prptl.io (or legacy exos.origyn.network)
* domain which goes through a reverse-proxy to request canister resources.
*/
isDirect: boolean;
/**
* Indicates that the URL requesting a resource in the raw format
* (.raw.ic0.app or .raw.icp0.io). These URLs bypass the process of
* certifying data returned by the canister via a service worker.
*/
isRaw: boolean;
/**
* The level in the resource hierarchy that contains the resource being requested by the URL:
* - Collection
* - Token
*/
resourceLevel: ResourceLevel;
/**
* The text representation of the ResourceLevel enum value.
*/
resourceLevelText: string;
/**
* The type of the resource being requested by the URL.
* The `ResourceType` depends on the `ResourceLevel` to provide the full context.
*/
resourceType: ResourceType;
/**
* The text representation of the ResourceType enum value.
*/
resourceTypeText: string;
/**
* The ID of the token (if specified) containing the resource requested by the URL
*/
tokenId: string;
/**
* The ID of the library asset requested by the URL
*/
libraryId: string;
}