@dcl/sdk 7.0.0-2536021667.commit-17c845c
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/LICENSE +201 -0
- package/dist/ecs7/index.d.ts +1721 -0
- package/dist/ecs7/index.js +6173 -0
- package/dist/ecs7/index.min.js +1 -0
- package/dist/ecs7/index.min.js.map +1 -0
- package/dist/ecs7/proto-definitions/AudioSource.proto +13 -0
- package/dist/ecs7/proto-definitions/AudioStream.proto +10 -0
- package/dist/ecs7/proto-definitions/BoxShape.proto +11 -0
- package/dist/ecs7/proto-definitions/CylinderShape.proto +12 -0
- package/dist/ecs7/proto-definitions/NFTShape.proto +16 -0
- package/dist/ecs7/proto-definitions/PlaneShape.proto +11 -0
- package/dist/ecs7/proto-definitions/README.md +32 -0
- package/dist/ecs7/proto-definitions/SphereShape.proto +10 -0
- package/dist/ecs7/proto-definitions/TextShape.proto +33 -0
- package/dist/ecs7/proto-definitions/Transform.md +25 -0
- package/dist/ecs7/proto-definitions/common/Color3.proto +8 -0
- package/dist/ecs7/proto-definitions/common/id.md +2 -0
- package/dist/ecs7/proto-definitions/common/id.proto +7 -0
- package/package.json +42 -0
- package/src/cli/mock-catalyst/index.js +170 -0
- package/src/cli/setupUtils.js +345 -0
- package/src/cli/wearables.js +145 -0
- package/src/setupExport.js +43 -0
- package/src/setupProxy.js +165 -0
- package/types/@decentraland/CommunicationsController/index.d.ts +7 -0
- package/types/@decentraland/EnvironmentAPI/index.d.ts +45 -0
- package/types/@decentraland/EthereumController/index.d.ts +47 -0
- package/types/@decentraland/Identity/index.d.ts +42 -0
- package/types/@decentraland/ParcelIdentity/index.d.ts +49 -0
- package/types/@decentraland/Players/index.d.ts +47 -0
- package/types/@decentraland/PortableExperiences/index.d.ts +39 -0
- package/types/@decentraland/RestrictedActions/index.d.ts +41 -0
- package/types/@decentraland/SignedFetch/index.d.ts +16 -0
- package/types/@decentraland/SocialController/index.d.ts +1 -0
- package/types/@decentraland/web3-provider/index.d.ts +7 -0
- package/types/dcl/decentraland-ecs.api.json +61732 -0
- package/types/dcl/decentraland-ecs.api.md +2717 -0
- package/types/ecs7/index.d.ts +1721 -0
- package/types/ecs7-env/es2015.iterable.d.ts +486 -0
- package/types/ecs7-env/es2015.symbol.d.ts +46 -0
- package/types/ecs7-env/index.d.ts +19 -0
- package/types/env/es5.d.ts +4565 -0
- package/types/env/index.d.ts +411 -0
- package/types/tsconfig.ecs7.json +27 -0
- package/types/tsconfig.ecs7.strict.json +13 -0
@@ -0,0 +1,345 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
15
|
+
function step(op) {
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
17
|
+
while (_) try {
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
20
|
+
switch (op[0]) {
|
21
|
+
case 0: case 1: t = op; break;
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
25
|
+
default:
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
30
|
+
if (t[2]) _.ops.pop();
|
31
|
+
_.trys.pop(); continue;
|
32
|
+
}
|
33
|
+
op = body.call(thisArg, _);
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
36
|
+
}
|
37
|
+
};
|
38
|
+
exports.__esModule = true;
|
39
|
+
exports.createStaticRoutes = exports.getDirectories = exports.defaultDclIgnore = exports.shaHashMaker = exports.downloadFile = exports.ensureCopyFile = exports.ensureWriteFile = exports.getSceneJson = exports.entityV3FromFolder = exports.getFilesFromFolder = exports.defaultHashMaker = exports.copyDir = void 0;
|
40
|
+
var fs = require("fs");
|
41
|
+
var glob_1 = require("glob");
|
42
|
+
var path = require("path");
|
43
|
+
var http = require("http");
|
44
|
+
var https = require("https");
|
45
|
+
var crypto = require("crypto");
|
46
|
+
var ignore_1 = require("ignore");
|
47
|
+
var wearables_1 = require("./wearables");
|
48
|
+
// instead of using fs-extra, create a custom function to no need to rollup
|
49
|
+
function copyDir(src, dest) {
|
50
|
+
return __awaiter(this, void 0, void 0, function () {
|
51
|
+
var entries, _i, entries_1, entry, srcPath, destPath, _a;
|
52
|
+
return __generator(this, function (_b) {
|
53
|
+
switch (_b.label) {
|
54
|
+
case 0: return [4 /*yield*/, fs.promises.mkdir(dest, { recursive: true })];
|
55
|
+
case 1:
|
56
|
+
_b.sent();
|
57
|
+
return [4 /*yield*/, fs.promises.readdir(src, { withFileTypes: true })];
|
58
|
+
case 2:
|
59
|
+
entries = _b.sent();
|
60
|
+
_i = 0, entries_1 = entries;
|
61
|
+
_b.label = 3;
|
62
|
+
case 3:
|
63
|
+
if (!(_i < entries_1.length)) return [3 /*break*/, 9];
|
64
|
+
entry = entries_1[_i];
|
65
|
+
srcPath = path.join(src, entry.name);
|
66
|
+
destPath = path.join(dest, entry.name);
|
67
|
+
if (!entry.isDirectory()) return [3 /*break*/, 5];
|
68
|
+
return [4 /*yield*/, copyDir(srcPath, destPath)];
|
69
|
+
case 4:
|
70
|
+
_a = _b.sent();
|
71
|
+
return [3 /*break*/, 7];
|
72
|
+
case 5: return [4 /*yield*/, fs.promises.copyFile(srcPath, destPath)];
|
73
|
+
case 6:
|
74
|
+
_a = _b.sent();
|
75
|
+
_b.label = 7;
|
76
|
+
case 7:
|
77
|
+
_a;
|
78
|
+
_b.label = 8;
|
79
|
+
case 8:
|
80
|
+
_i++;
|
81
|
+
return [3 /*break*/, 3];
|
82
|
+
case 9: return [2 /*return*/];
|
83
|
+
}
|
84
|
+
});
|
85
|
+
});
|
86
|
+
}
|
87
|
+
exports.copyDir = copyDir;
|
88
|
+
var defaultHashMaker = function (str) {
|
89
|
+
return 'b64-' + Buffer.from(str).toString('base64');
|
90
|
+
};
|
91
|
+
exports.defaultHashMaker = defaultHashMaker;
|
92
|
+
var getFilesFromFolder = function (_a) {
|
93
|
+
var folder = _a.folder, addOriginalPath = _a.addOriginalPath, ignorePattern = _a.ignorePattern, customHashMaker = _a.customHashMaker;
|
94
|
+
var hashMaker = customHashMaker ? customHashMaker : exports.defaultHashMaker;
|
95
|
+
var allFiles = (0, glob_1.sync)('**/*', {
|
96
|
+
cwd: folder,
|
97
|
+
dot: false,
|
98
|
+
absolute: true
|
99
|
+
})
|
100
|
+
.map(function (file) {
|
101
|
+
try {
|
102
|
+
if (!fs.statSync(file).isFile())
|
103
|
+
return;
|
104
|
+
}
|
105
|
+
catch (err) {
|
106
|
+
return;
|
107
|
+
}
|
108
|
+
var _folder = folder.replace(/\\/gi, '/');
|
109
|
+
var key = file.replace(_folder, '').replace(/^\/+/, '');
|
110
|
+
return key;
|
111
|
+
})
|
112
|
+
.filter(function ($) { return !!$; });
|
113
|
+
var ensureIgnorePattern = ignorePattern && ignorePattern !== '' ? ignorePattern : (0, exports.defaultDclIgnore)();
|
114
|
+
var ig = (0, ignore_1["default"])().add(ensureIgnorePattern);
|
115
|
+
var filteredFiles = ig.filter(allFiles);
|
116
|
+
return filteredFiles
|
117
|
+
.map(function (file) {
|
118
|
+
var absolutePath = path.resolve(folder, file);
|
119
|
+
try {
|
120
|
+
if (!fs.statSync(absolutePath).isFile())
|
121
|
+
return;
|
122
|
+
}
|
123
|
+
catch (err) {
|
124
|
+
console.log(err);
|
125
|
+
return;
|
126
|
+
}
|
127
|
+
var absoluteFolder = folder.replace(/\\/gi, '/');
|
128
|
+
var relativeFilePathToFolder = file
|
129
|
+
.replace(absoluteFolder, '')
|
130
|
+
.replace(/^\/+/, '');
|
131
|
+
return {
|
132
|
+
file: relativeFilePathToFolder.toLowerCase(),
|
133
|
+
original_path: addOriginalPath ? absolutePath : undefined,
|
134
|
+
hash: hashMaker(absolutePath)
|
135
|
+
};
|
136
|
+
})
|
137
|
+
.filter(function ($) { return !!$; });
|
138
|
+
};
|
139
|
+
exports.getFilesFromFolder = getFilesFromFolder;
|
140
|
+
function entityV3FromFolder(_a) {
|
141
|
+
var folder = _a.folder, addOriginalPath = _a.addOriginalPath, ignorePattern = _a.ignorePattern, customHashMaker = _a.customHashMaker;
|
142
|
+
var sceneJsonPath = path.resolve(folder, './scene.json');
|
143
|
+
var wearableJsonPath = path.resolve(folder, './wearable.json');
|
144
|
+
var wearableJson = fs.existsSync(wearableJsonPath) &&
|
145
|
+
JSON.parse(fs.readFileSync(wearableJsonPath).toString());
|
146
|
+
var isParcelScene = !wearableJson || !(0, wearables_1.wearableValidator)(wearableJson);
|
147
|
+
var hashMaker = customHashMaker ? customHashMaker : exports.defaultHashMaker;
|
148
|
+
if (fs.existsSync(sceneJsonPath) && isParcelScene) {
|
149
|
+
var sceneJson = JSON.parse(fs.readFileSync(sceneJsonPath).toString());
|
150
|
+
var _b = sceneJson.scene, base = _b.base, parcels = _b.parcels;
|
151
|
+
var pointers_1 = new Set();
|
152
|
+
pointers_1.add(base);
|
153
|
+
parcels.forEach(function ($) { return pointers_1.add($); });
|
154
|
+
var mappedFiles = (0, exports.getFilesFromFolder)({
|
155
|
+
folder: folder,
|
156
|
+
addOriginalPath: addOriginalPath,
|
157
|
+
ignorePattern: ignorePattern,
|
158
|
+
customHashMaker: customHashMaker
|
159
|
+
});
|
160
|
+
return {
|
161
|
+
version: 'v3',
|
162
|
+
type: 'scene',
|
163
|
+
id: hashMaker(folder),
|
164
|
+
pointers: Array.from(pointers_1),
|
165
|
+
timestamp: Date.now(),
|
166
|
+
metadata: sceneJson,
|
167
|
+
content: mappedFiles
|
168
|
+
};
|
169
|
+
}
|
170
|
+
return null;
|
171
|
+
}
|
172
|
+
exports.entityV3FromFolder = entityV3FromFolder;
|
173
|
+
function getSceneJson(_a) {
|
174
|
+
var baseFolders = _a.baseFolders, pointers = _a.pointers, customHashMaker = _a.customHashMaker;
|
175
|
+
var requestedPointers = new Set(pointers);
|
176
|
+
var resultEntities = [];
|
177
|
+
var allDeployments = baseFolders.map(function (folder) {
|
178
|
+
var dclIgnorePath = path.resolve(folder, '.dclignore');
|
179
|
+
var ignoreFileContent = '';
|
180
|
+
if (fs.existsSync(dclIgnorePath)) {
|
181
|
+
ignoreFileContent = fs.readFileSync(path.resolve(folder, '.dclignore'), 'utf-8');
|
182
|
+
}
|
183
|
+
return entityV3FromFolder({
|
184
|
+
folder: folder,
|
185
|
+
addOriginalPath: false,
|
186
|
+
ignorePattern: ignoreFileContent,
|
187
|
+
customHashMaker: customHashMaker
|
188
|
+
});
|
189
|
+
});
|
190
|
+
var _loop_1 = function (pointer) {
|
191
|
+
// get deployment by pointer
|
192
|
+
var theDeployment = allDeployments.find(function ($) { return $ && $.pointers.includes(pointer); });
|
193
|
+
if (theDeployment) {
|
194
|
+
// remove all the required pointers from the requestedPointers set
|
195
|
+
// to prevent sending duplicated entities
|
196
|
+
theDeployment.pointers.forEach(function ($) { return requestedPointers["delete"]($); });
|
197
|
+
// add the deployment to the results
|
198
|
+
resultEntities.push(theDeployment);
|
199
|
+
}
|
200
|
+
};
|
201
|
+
for (var _i = 0, _b = Array.from(requestedPointers); _i < _b.length; _i++) {
|
202
|
+
var pointer = _b[_i];
|
203
|
+
_loop_1(pointer);
|
204
|
+
}
|
205
|
+
return resultEntities;
|
206
|
+
}
|
207
|
+
exports.getSceneJson = getSceneJson;
|
208
|
+
function ensureWriteFile(filePath, data) {
|
209
|
+
return __awaiter(this, void 0, void 0, function () {
|
210
|
+
var directoryPath;
|
211
|
+
return __generator(this, function (_a) {
|
212
|
+
switch (_a.label) {
|
213
|
+
case 0:
|
214
|
+
directoryPath = path.dirname(filePath);
|
215
|
+
if (!!fs.existsSync(directoryPath)) return [3 /*break*/, 2];
|
216
|
+
return [4 /*yield*/, fs.promises.mkdir(directoryPath, { recursive: true })];
|
217
|
+
case 1:
|
218
|
+
_a.sent();
|
219
|
+
_a.label = 2;
|
220
|
+
case 2: return [4 /*yield*/, fs.promises.writeFile(filePath, data, 'utf-8')];
|
221
|
+
case 3:
|
222
|
+
_a.sent();
|
223
|
+
return [2 /*return*/];
|
224
|
+
}
|
225
|
+
});
|
226
|
+
});
|
227
|
+
}
|
228
|
+
exports.ensureWriteFile = ensureWriteFile;
|
229
|
+
function ensureCopyFile(fromFilePath, filePath) {
|
230
|
+
return __awaiter(this, void 0, void 0, function () {
|
231
|
+
var directoryPath;
|
232
|
+
return __generator(this, function (_a) {
|
233
|
+
switch (_a.label) {
|
234
|
+
case 0:
|
235
|
+
directoryPath = path.dirname(filePath);
|
236
|
+
if (!!fs.existsSync(directoryPath)) return [3 /*break*/, 2];
|
237
|
+
return [4 /*yield*/, fs.promises.mkdir(directoryPath, { recursive: true })];
|
238
|
+
case 1:
|
239
|
+
_a.sent();
|
240
|
+
_a.label = 2;
|
241
|
+
case 2: return [4 /*yield*/, fs.promises.copyFile(fromFilePath, filePath)];
|
242
|
+
case 3:
|
243
|
+
_a.sent();
|
244
|
+
return [2 /*return*/];
|
245
|
+
}
|
246
|
+
});
|
247
|
+
});
|
248
|
+
}
|
249
|
+
exports.ensureCopyFile = ensureCopyFile;
|
250
|
+
var downloadFile = function (url, path, timeout_seg) {
|
251
|
+
if (timeout_seg === void 0) { timeout_seg = 15; }
|
252
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
253
|
+
return __generator(this, function (_a) {
|
254
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
255
|
+
var file = fs.createWriteStream(path);
|
256
|
+
var schema = http;
|
257
|
+
if (url.toLowerCase().startsWith('https:')) {
|
258
|
+
schema = https;
|
259
|
+
}
|
260
|
+
var finished = false;
|
261
|
+
var request = schema
|
262
|
+
.get(url, function (response) {
|
263
|
+
response.pipe(file);
|
264
|
+
file.on('finish', function () {
|
265
|
+
file.close();
|
266
|
+
finished = true;
|
267
|
+
resolve(true);
|
268
|
+
});
|
269
|
+
})
|
270
|
+
.on('error', function (err) {
|
271
|
+
fs.unlinkSync(path);
|
272
|
+
finished = true;
|
273
|
+
reject(err);
|
274
|
+
});
|
275
|
+
setTimeout(function () {
|
276
|
+
if (!finished) {
|
277
|
+
request.destroy();
|
278
|
+
reject(new Error("Timeout " + url));
|
279
|
+
}
|
280
|
+
}, timeout_seg * 1000);
|
281
|
+
})];
|
282
|
+
});
|
283
|
+
});
|
284
|
+
};
|
285
|
+
exports.downloadFile = downloadFile;
|
286
|
+
var shaHashMaker = function (str) {
|
287
|
+
return crypto.createHash('sha1').update(str).digest('hex');
|
288
|
+
};
|
289
|
+
exports.shaHashMaker = shaHashMaker;
|
290
|
+
var defaultDclIgnore = function () {
|
291
|
+
return [
|
292
|
+
'.*',
|
293
|
+
'package.json',
|
294
|
+
'package-lock.json',
|
295
|
+
'yarn-lock.json',
|
296
|
+
'build.json',
|
297
|
+
'export',
|
298
|
+
'tsconfig.json',
|
299
|
+
'tslint.json',
|
300
|
+
'node_modules',
|
301
|
+
'*.ts',
|
302
|
+
'*.tsx',
|
303
|
+
'Dockerfile',
|
304
|
+
'dist',
|
305
|
+
'README.md',
|
306
|
+
'*.blend',
|
307
|
+
'*.fbx',
|
308
|
+
'*.zip',
|
309
|
+
'*.rar'
|
310
|
+
].join('\n');
|
311
|
+
};
|
312
|
+
exports.defaultDclIgnore = defaultDclIgnore;
|
313
|
+
var getDirectories = function (source) {
|
314
|
+
if (!fs.existsSync(source))
|
315
|
+
return [];
|
316
|
+
return fs
|
317
|
+
.readdirSync(source, { withFileTypes: true })
|
318
|
+
.filter(function (dirent) { return dirent.isDirectory(); })
|
319
|
+
.map(function (dirent) { return dirent.name; });
|
320
|
+
};
|
321
|
+
exports.getDirectories = getDirectories;
|
322
|
+
var createStaticRoutes = function (app, route, localFolder, mapFile) {
|
323
|
+
app.use(route, function (req, res, next) {
|
324
|
+
var options = {
|
325
|
+
root: localFolder,
|
326
|
+
dotfiles: 'deny',
|
327
|
+
maxAge: 1,
|
328
|
+
cacheControl: false,
|
329
|
+
lastModified: true,
|
330
|
+
headers: {
|
331
|
+
'x-timestamp': Date.now(),
|
332
|
+
'x-sent': true,
|
333
|
+
etag: JSON.stringify(Date.now().toString()),
|
334
|
+
'cache-control': 'no-cache,private,max-age=1'
|
335
|
+
}
|
336
|
+
};
|
337
|
+
var fileName = mapFile ? mapFile(req.params[0]) : req.params[0];
|
338
|
+
res.sendFile(fileName, options, function (err) {
|
339
|
+
if (err) {
|
340
|
+
next(err);
|
341
|
+
}
|
342
|
+
});
|
343
|
+
});
|
344
|
+
};
|
345
|
+
exports.createStaticRoutes = createStaticRoutes;
|
@@ -0,0 +1,145 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20
|
+
});
|
21
|
+
};
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
26
|
+
function step(op) {
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
28
|
+
while (_) try {
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
31
|
+
switch (op[0]) {
|
32
|
+
case 0: case 1: t = op; break;
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
36
|
+
default:
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
41
|
+
if (t[2]) _.ops.pop();
|
42
|
+
_.trys.pop(); continue;
|
43
|
+
}
|
44
|
+
op = body.call(thisArg, _);
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
47
|
+
}
|
48
|
+
};
|
49
|
+
exports.__esModule = true;
|
50
|
+
exports.mockPreviewWearables = exports.getAllPreviewWearables = exports.wearableValidator = void 0;
|
51
|
+
var path = require("path");
|
52
|
+
var fs = require("fs");
|
53
|
+
var setupUtils_1 = require("./setupUtils");
|
54
|
+
var schemas_1 = require("@dcl/schemas");
|
55
|
+
exports.wearableValidator = (0, schemas_1.generateValidator)(schemas_1.Wearable.schema);
|
56
|
+
var serveWearable = function (_a) {
|
57
|
+
var _b;
|
58
|
+
var wearableJsonPath = _a.wearableJsonPath, baseUrl = _a.baseUrl;
|
59
|
+
var wearableDir = path.dirname(wearableJsonPath);
|
60
|
+
var wearableJson = JSON.parse(fs.readFileSync(wearableJsonPath).toString());
|
61
|
+
if (!(0, exports.wearableValidator)(wearableJson)) {
|
62
|
+
var errors = (exports.wearableValidator.errors || [])
|
63
|
+
.map(function (a) { return a.dataPath + " " + a.message; })
|
64
|
+
.join('');
|
65
|
+
if (errors.length > 0) {
|
66
|
+
console.error("Unable to validate '" + wearableJsonPath + "' properly, please check it: " + errors);
|
67
|
+
}
|
68
|
+
else {
|
69
|
+
console.error("Unable to validate '" + wearableJsonPath + "' properly, please check it.");
|
70
|
+
}
|
71
|
+
throw new Error("Invalid wearable.json (" + wearableJson + ")");
|
72
|
+
}
|
73
|
+
else {
|
74
|
+
}
|
75
|
+
var dclIgnorePath = path.resolve(wearableDir, '.dclignore');
|
76
|
+
var ignoreFileContent = '';
|
77
|
+
if (fs.existsSync(dclIgnorePath)) {
|
78
|
+
ignoreFileContent = fs.readFileSync(path.resolve(wearableDir, '.dclignore'), 'utf-8');
|
79
|
+
}
|
80
|
+
var hashedFiles = (0, setupUtils_1.getFilesFromFolder)({
|
81
|
+
folder: wearableDir,
|
82
|
+
addOriginalPath: false,
|
83
|
+
ignorePattern: ignoreFileContent
|
84
|
+
});
|
85
|
+
var thumbnailFiltered = hashedFiles.filter(function ($) { return ($ === null || $ === void 0 ? void 0 : $.file) === wearableJson.thumbnail; });
|
86
|
+
var thumbnail = thumbnailFiltered.length > 0 &&
|
87
|
+
((_b = thumbnailFiltered[0]) === null || _b === void 0 ? void 0 : _b.hash) &&
|
88
|
+
baseUrl + "/" + thumbnailFiltered[0].hash;
|
89
|
+
var wearableJsonWithContents = __assign(__assign({}, wearableJson), { baseUrl: baseUrl, thumbnail: thumbnail, data: __assign(__assign({}, wearableJson.data), { thumbnail: thumbnail, scene: hashedFiles, baseUrl: baseUrl, representations: wearableJson.data.representations.map(function (representation) { return (__assign(__assign({}, representation), { contents: hashedFiles.map(function (file) { return ({
|
90
|
+
key: "" + (file === null || file === void 0 ? void 0 : file.file),
|
91
|
+
url: baseUrl + "/" + (file === null || file === void 0 ? void 0 : file.hash)
|
92
|
+
}); }) })); }) }) });
|
93
|
+
return wearableJsonWithContents;
|
94
|
+
};
|
95
|
+
var getAllPreviewWearables = function (_a) {
|
96
|
+
var baseFolders = _a.baseFolders, baseUrl = _a.baseUrl;
|
97
|
+
var wearablePathArray = [];
|
98
|
+
for (var _i = 0, baseFolders_1 = baseFolders; _i < baseFolders_1.length; _i++) {
|
99
|
+
var wearableDir = baseFolders_1[_i];
|
100
|
+
var wearableJsonPath = path.resolve(wearableDir, 'wearable.json');
|
101
|
+
if (fs.existsSync(wearableJsonPath)) {
|
102
|
+
wearablePathArray.push(wearableJsonPath);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
var ret = [];
|
106
|
+
for (var _b = 0, wearablePathArray_1 = wearablePathArray; _b < wearablePathArray_1.length; _b++) {
|
107
|
+
var wearableJsonPath = wearablePathArray_1[_b];
|
108
|
+
try {
|
109
|
+
ret.push(serveWearable({ wearableJsonPath: wearableJsonPath, baseUrl: baseUrl }));
|
110
|
+
}
|
111
|
+
catch (err) {
|
112
|
+
console.error("Couldn't mock the wearable " + wearableJsonPath + ". Please verify the correct format and scheme.", err);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
return ret;
|
116
|
+
};
|
117
|
+
exports.getAllPreviewWearables = getAllPreviewWearables;
|
118
|
+
var mockPreviewWearables = function (app, baseFolders) {
|
119
|
+
app.use('/preview-wearables/:id', function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
120
|
+
var baseUrl, wearables, wearableId;
|
121
|
+
return __generator(this, function (_a) {
|
122
|
+
baseUrl = req.protocol + "://" + req.get('host') + "/content/contents";
|
123
|
+
wearables = (0, exports.getAllPreviewWearables)({
|
124
|
+
baseUrl: baseUrl,
|
125
|
+
baseFolders: baseFolders
|
126
|
+
});
|
127
|
+
wearableId = req.params.id;
|
128
|
+
return [2 /*return*/, res.json({
|
129
|
+
ok: true,
|
130
|
+
data: wearables.filter(function (w) { return (w === null || w === void 0 ? void 0 : w.id) === wearableId; })
|
131
|
+
})];
|
132
|
+
});
|
133
|
+
}); });
|
134
|
+
app.use('/preview-wearables', function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
135
|
+
var baseUrl;
|
136
|
+
return __generator(this, function (_a) {
|
137
|
+
baseUrl = req.protocol + "://" + req.get('host') + "/content/contents";
|
138
|
+
return [2 /*return*/, res.json({
|
139
|
+
ok: true,
|
140
|
+
data: (0, exports.getAllPreviewWearables)({ baseUrl: baseUrl, baseFolders: baseFolders })
|
141
|
+
})];
|
142
|
+
});
|
143
|
+
}); });
|
144
|
+
};
|
145
|
+
exports.mockPreviewWearables = mockPreviewWearables;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
15
|
+
function step(op) {
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
17
|
+
while (_) try {
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
20
|
+
switch (op[0]) {
|
21
|
+
case 0: case 1: t = op; break;
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
25
|
+
default:
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
30
|
+
if (t[2]) _.ops.pop();
|
31
|
+
_.trys.pop(); continue;
|
32
|
+
}
|
33
|
+
op = body.call(thisArg, _);
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
36
|
+
}
|
37
|
+
};
|
38
|
+
var setupExport = function () { return __awaiter(void 0, void 0, void 0, function () {
|
39
|
+
return __generator(this, function (_a) {
|
40
|
+
throw new Error('Export is no long supported in SDK 7');
|
41
|
+
});
|
42
|
+
}); };
|
43
|
+
module.exports = setupExport;
|