@dcl/sdk 7.0.6-4006744889.commit-c6aff5f → 7.0.6-4009803567.commit-112733c
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/cli/commands/build/helpers.d.ts +25 -0
- package/cli/commands/build/helpers.js +50 -0
- package/cli/commands/build/helpers.ts +95 -0
- package/cli/commands/build/index.d.ts +19 -0
- package/cli/commands/build/index.js +64 -0
- package/cli/commands/build/index.ts +91 -0
- package/cli/commands/init/index.d.ts +1 -1
- package/cli/commands/init/index.js +8 -14
- package/cli/commands/init/index.ts +8 -18
- package/cli/commands/init/repos.js +1 -1
- package/cli/commands/init/repos.ts +1 -2
- package/cli/commands/preview/bff.d.ts +3 -0
- package/cli/commands/preview/bff.js +50 -0
- package/cli/commands/preview/bff.ts +59 -0
- package/cli/commands/preview/catalyst.d.ts +5 -0
- package/cli/commands/preview/catalyst.js +24 -0
- package/cli/commands/preview/catalyst.ts +31 -0
- package/cli/commands/preview/coordinates.d.ts +20 -0
- package/cli/commands/preview/coordinates.js +90 -0
- package/cli/commands/preview/coordinates.ts +146 -0
- package/cli/commands/preview/endpoints.d.ts +10 -0
- package/cli/commands/preview/endpoints.js +500 -0
- package/cli/commands/preview/endpoints.ts +594 -0
- package/cli/commands/preview/eth.d.ts +2 -0
- package/cli/commands/preview/eth.js +6 -0
- package/cli/commands/preview/eth.ts +3 -0
- package/cli/commands/preview/index.d.ts +18 -0
- package/cli/commands/preview/index.js +75 -0
- package/cli/commands/preview/index.ts +88 -0
- package/cli/commands/preview/port.d.ts +1 -0
- package/cli/commands/preview/port.js +21 -0
- package/cli/commands/preview/port.ts +15 -0
- package/cli/commands/preview/project.d.ts +14 -0
- package/cli/commands/preview/project.js +77 -0
- package/cli/commands/preview/project.ts +112 -0
- package/cli/commands/preview/types.d.ts +13 -0
- package/cli/commands/preview/types.js +3 -0
- package/cli/commands/preview/types.ts +19 -0
- package/cli/commands/preview/wire.d.ts +14 -0
- package/cli/commands/preview/wire.js +28 -0
- package/cli/commands/preview/wire.ts +48 -0
- package/cli/commands/preview/ws.d.ts +7 -0
- package/cli/commands/preview/ws.js +16 -0
- package/cli/commands/preview/ws.ts +24 -0
- package/cli/commands/start/index.d.ts +29 -0
- package/cli/commands/start/index.js +121 -0
- package/cli/commands/start/index.ts +132 -0
- package/cli/components/fs.d.ts +2 -1
- package/cli/components/fs.js +1 -1
- package/cli/components/fs.ts +2 -11
- package/cli/index.js +4 -6
- package/cli/index.ts +9 -10
- package/cli/utils/args.js +2 -2
- package/cli/utils/args.ts +2 -8
- package/cli/utils/commands.js +2 -2
- package/cli/utils/commands.ts +3 -7
- package/cli/utils/exec.d.ts +8 -0
- package/cli/utils/exec.js +33 -0
- package/cli/utils/exec.ts +38 -0
- package/cli/utils/fs.js +1 -1
- package/cli/utils/fs.ts +1 -4
- package/cli/utils/handler.d.ts +6 -0
- package/cli/utils/handler.js +19 -0
- package/cli/utils/handler.ts +23 -0
- package/cli/utils/object.d.ts +9 -0
- package/cli/utils/object.js +45 -0
- package/cli/utils/object.ts +62 -0
- package/cli/utils/out-messages.d.ts +1 -0
- package/cli/utils/out-messages.js +8 -0
- package/cli/utils/out-messages.ts +3 -0
- package/index.d.ts +0 -1
- package/index.js +12 -3
- package/internal/Observable.js +3 -7
- package/internal/provider.js +1 -1
- package/internal/transports/rendererTransport.js +2 -3
- package/messageBus.js +1 -1
- package/observables.js +1 -1
- package/package.json +20 -9
- package/src/index.ts +16 -2
- package/src/internal/Observable.ts +9 -44
- package/src/internal/provider.ts +3 -11
- package/src/internal/transports/rendererTransport.ts +4 -12
- package/src/messageBus.ts +1 -4
- package/src/observables.ts +27 -63
- package/tsconfig.cli.json +10 -1
- package/cli/utils/spinner.d.ts +0 -15
- package/cli/utils/spinner.js +0 -41
- package/cli/utils/spinner.ts +0 -44
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.fetchEntityByPointer = void 0;
|
4
|
+
const undici_1 = require("undici");
|
5
|
+
async function fetchEntityByPointer(baseUrl, pointers) {
|
6
|
+
if (pointers.length === 0)
|
7
|
+
return {
|
8
|
+
baseUrl,
|
9
|
+
deployments: []
|
10
|
+
};
|
11
|
+
const activeEntities = baseUrl + '/content/entities/active';
|
12
|
+
const response = await (0, undici_1.fetch)(activeEntities, {
|
13
|
+
method: 'post',
|
14
|
+
headers: { 'content-type': 'application/json', connection: 'close' },
|
15
|
+
body: JSON.stringify({ pointers })
|
16
|
+
});
|
17
|
+
const deployments = response.ok ? (await response.json()) : [];
|
18
|
+
return {
|
19
|
+
baseUrl,
|
20
|
+
deployments
|
21
|
+
};
|
22
|
+
}
|
23
|
+
exports.fetchEntityByPointer = fetchEntityByPointer;
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWx5c3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjYXRhbHlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtQ0FBOEI7QUFFdkIsS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxPQUFlLEVBQ2YsUUFBa0I7SUFLbEIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDdkIsT0FBTztZQUNMLE9BQU87WUFDUCxXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFBO0lBRUgsTUFBTSxjQUFjLEdBQUcsT0FBTyxHQUFHLDBCQUEwQixDQUFBO0lBRTNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxjQUFLLEVBQUMsY0FBYyxFQUFFO1FBQzNDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUU7UUFDcEUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztLQUNuQyxDQUFDLENBQUE7SUFFRixNQUFNLFdBQVcsR0FBYSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBRSxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUV0RixPQUFPO1FBQ0wsT0FBTztRQUNQLFdBQVc7S0FDWixDQUFBO0FBQ0gsQ0FBQztBQTNCRCxvREEyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHkgfSBmcm9tICdAZGNsL3NjaGVtYXMnXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gJ3VuZGljaSdcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoRW50aXR5QnlQb2ludGVyKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIHBvaW50ZXJzOiBzdHJpbmdbXVxuKTogUHJvbWlzZTx7XG4gIGJhc2VVcmw6IHN0cmluZ1xuICBkZXBsb3ltZW50czogRW50aXR5W11cbn0+IHtcbiAgaWYgKHBvaW50ZXJzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4ge1xuICAgICAgYmFzZVVybCxcbiAgICAgIGRlcGxveW1lbnRzOiBbXVxuICAgIH1cblxuICBjb25zdCBhY3RpdmVFbnRpdGllcyA9IGJhc2VVcmwgKyAnL2NvbnRlbnQvZW50aXRpZXMvYWN0aXZlJ1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYWN0aXZlRW50aXRpZXMsIHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBoZWFkZXJzOiB7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsIGNvbm5lY3Rpb246ICdjbG9zZScgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBvaW50ZXJzIH0pXG4gIH0pXG5cbiAgY29uc3QgZGVwbG95bWVudHM6IEVudGl0eVtdID0gcmVzcG9uc2Uub2sgPyAoKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgRW50aXR5W10pIDogW11cblxuICByZXR1cm4ge1xuICAgIGJhc2VVcmwsXG4gICAgZGVwbG95bWVudHNcbiAgfVxufVxuIl19
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { Entity } from '@dcl/schemas'
|
2
|
+
import { fetch } from 'undici'
|
3
|
+
|
4
|
+
export async function fetchEntityByPointer(
|
5
|
+
baseUrl: string,
|
6
|
+
pointers: string[]
|
7
|
+
): Promise<{
|
8
|
+
baseUrl: string
|
9
|
+
deployments: Entity[]
|
10
|
+
}> {
|
11
|
+
if (pointers.length === 0)
|
12
|
+
return {
|
13
|
+
baseUrl,
|
14
|
+
deployments: []
|
15
|
+
}
|
16
|
+
|
17
|
+
const activeEntities = baseUrl + '/content/entities/active'
|
18
|
+
|
19
|
+
const response = await fetch(activeEntities, {
|
20
|
+
method: 'post',
|
21
|
+
headers: { 'content-type': 'application/json', connection: 'close' },
|
22
|
+
body: JSON.stringify({ pointers })
|
23
|
+
})
|
24
|
+
|
25
|
+
const deployments: Entity[] = response.ok ? ((await response.json()) as Entity[]) : []
|
26
|
+
|
27
|
+
return {
|
28
|
+
baseUrl,
|
29
|
+
deployments
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
export interface IBounds {
|
2
|
+
minX: number;
|
3
|
+
minY: number;
|
4
|
+
maxX: number;
|
5
|
+
maxY: number;
|
6
|
+
}
|
7
|
+
export type Coords = {
|
8
|
+
x: number;
|
9
|
+
y: number;
|
10
|
+
};
|
11
|
+
export declare function getBounds(): IBounds;
|
12
|
+
export declare function parse(coordinates: string): string[];
|
13
|
+
export declare function validate(answers: string): Promise<boolean>;
|
14
|
+
export declare function isValid(val: string): boolean;
|
15
|
+
export declare function getObject(coords: string): Coords;
|
16
|
+
export declare function getObject(coords: number[]): Coords;
|
17
|
+
export declare function getString({ x, y }: Coords): string;
|
18
|
+
export declare function inBounds(x: number, y: number): boolean;
|
19
|
+
export declare function areConnected(parcels: Coords[]): boolean;
|
20
|
+
export declare function isEqual(p1: Coords, p2: Coords): boolean;
|
@@ -0,0 +1,90 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isEqual = exports.areConnected = exports.inBounds = exports.getString = exports.getObject = exports.isValid = exports.validate = exports.parse = exports.getBounds = void 0;
|
4
|
+
function getBounds() {
|
5
|
+
return {
|
6
|
+
minX: -150,
|
7
|
+
minY: -150,
|
8
|
+
maxX: 165,
|
9
|
+
maxY: 165
|
10
|
+
};
|
11
|
+
}
|
12
|
+
exports.getBounds = getBounds;
|
13
|
+
function parse(coordinates) {
|
14
|
+
return coordinates.split(';').map((coord) => {
|
15
|
+
const [x = 0, y = 0] = coord.split(',').map(($) => {
|
16
|
+
return parseInt($, 10)
|
17
|
+
.toString()
|
18
|
+
.replace('-0', '0')
|
19
|
+
.replace(/undefined|NaN/g, '0');
|
20
|
+
});
|
21
|
+
return `${x},${y}`;
|
22
|
+
});
|
23
|
+
}
|
24
|
+
exports.parse = parse;
|
25
|
+
function validate(answers) {
|
26
|
+
return new Promise((resolve, reject) => {
|
27
|
+
if (answers.trim().length === 0) {
|
28
|
+
resolve(true);
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
answers.split(/;\s/g).forEach((answer) => {
|
32
|
+
if (!isValid(answer)) {
|
33
|
+
reject(new Error(`Invalid coordinate ${answer}`));
|
34
|
+
}
|
35
|
+
});
|
36
|
+
resolve(true);
|
37
|
+
}
|
38
|
+
});
|
39
|
+
}
|
40
|
+
exports.validate = validate;
|
41
|
+
function isValid(val) {
|
42
|
+
if (!val.match(/^(-?\d)+\,(-?\d)+$/g)) {
|
43
|
+
return false;
|
44
|
+
}
|
45
|
+
return true;
|
46
|
+
}
|
47
|
+
exports.isValid = isValid;
|
48
|
+
function getObject(coords) {
|
49
|
+
const [x, y] = typeof coords === 'string' ? parse(coords)[0].split(',') : coords;
|
50
|
+
return { x: parseInt(x.toString(), 10), y: parseInt(y.toString(), 10) };
|
51
|
+
}
|
52
|
+
exports.getObject = getObject;
|
53
|
+
function getString({ x, y }) {
|
54
|
+
return `${x},${y}`;
|
55
|
+
}
|
56
|
+
exports.getString = getString;
|
57
|
+
function inBounds(x, y) {
|
58
|
+
const { minX, minY, maxX, maxY } = getBounds();
|
59
|
+
return x >= minX && x <= maxX && y >= minY && y <= maxY;
|
60
|
+
}
|
61
|
+
exports.inBounds = inBounds;
|
62
|
+
function areConnected(parcels) {
|
63
|
+
if (parcels.length === 0) {
|
64
|
+
return false;
|
65
|
+
}
|
66
|
+
const visited = visitParcel(parcels[0], parcels);
|
67
|
+
return visited.length === parcels.length;
|
68
|
+
}
|
69
|
+
exports.areConnected = areConnected;
|
70
|
+
function visitParcel(parcel, allParcels = [parcel], visited = []) {
|
71
|
+
const isVisited = visited.some((visitedParcel) => isEqual(visitedParcel, parcel));
|
72
|
+
if (!isVisited) {
|
73
|
+
visited.push(parcel);
|
74
|
+
const neighbours = getNeighbours(parcel.x, parcel.y, allParcels);
|
75
|
+
neighbours.forEach((neighbours) => visitParcel(neighbours, allParcels, visited));
|
76
|
+
}
|
77
|
+
return visited;
|
78
|
+
}
|
79
|
+
function getIsNeighbourMatcher(x, y) {
|
80
|
+
return (coords) => (coords.x === x && (coords.y + 1 === y || coords.y - 1 === y)) ||
|
81
|
+
(coords.y === y && (coords.x + 1 === x || coords.x - 1 === x));
|
82
|
+
}
|
83
|
+
function getNeighbours(x, y, parcels) {
|
84
|
+
return parcels.filter(getIsNeighbourMatcher(x, y));
|
85
|
+
}
|
86
|
+
function isEqual(p1, p2) {
|
87
|
+
return p1.x === p2.x && p1.y === p2.y;
|
88
|
+
}
|
89
|
+
exports.isEqual = isEqual;
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb29yZGluYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFlQSxTQUFnQixTQUFTO0lBQ3ZCLE9BQU87UUFDTCxJQUFJLEVBQUUsQ0FBQyxHQUFHO1FBQ1YsSUFBSSxFQUFFLENBQUMsR0FBRztRQUNWLElBQUksRUFBRSxHQUFHO1FBQ1QsSUFBSSxFQUFFLEdBQUc7S0FDVixDQUFBO0FBQ0gsQ0FBQztBQVBELDhCQU9DO0FBU0QsU0FBZ0IsS0FBSyxDQUFDLFdBQW1CO0lBQ3ZDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUNsRCxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUNuQixRQUFRLEVBQUU7aUJBQ1YsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7aUJBQ2xCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7SUFDcEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBVkQsc0JBVUM7QUFVRCxTQUFnQixRQUFRLENBQUMsT0FBZTtJQUN0QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ2Q7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QUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLENBQVMsRUFBRSxDQUFTO0lBQ2pELE9BQU8sQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUN4QixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNsRSxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxPQUFpQjtJQUM1RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDcEQsQ0FBQztBQUVELFNBQWdCLE9BQU8sQ0FBQyxFQUFVLEVBQUUsRUFBVTtJQUM1QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDdkMsQ0FBQztBQUZELDBCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJQm91bmRzIHtcbiAgbWluWDogbnVtYmVyXG4gIG1pblk6IG51bWJlclxuICBtYXhYOiBudW1iZXJcbiAgbWF4WTogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIENvb3JkcyA9IHtcbiAgeDogbnVtYmVyXG4gIHk6IG51bWJlclxufVxuXG4vKipcbiAqIFJldHVybnMgbWV0YXZlcnNlIGNvb3JkaW5hdGVzIGJvdW5kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdW5kcygpOiBJQm91bmRzIHtcbiAgcmV0dXJuIHtcbiAgICBtaW5YOiAtMTUwLFxuICAgIG1pblk6IC0xNTAsXG4gICAgbWF4WDogMTY1LFxuICAgIG1heFk6IDE2NVxuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGEgc3RyaW5nLWJhc2VkIHNldCBvZiBjb29yZGluYXRlcy5cbiAqIC0gQWxsIHNwYWNlcyBhcmUgcmVtb3ZlZFxuICogLSBMZWFkaW5nIHplcm9lcyBhcmUgcmVtb3ZlZFxuICogLSBgLTBgIGlzIGNvbnZlcnRlZCB0byBgMGBcbiAqIEBwYXJhbSBjb29yZGluYXRlcyBBbiBzdHJpbmcgY29udGFpbmluZyBjb29yZGluYXRlcyBpbiB0aGUgYHgseTsgeCx5OyAuLi5gIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoY29vcmRpbmF0ZXM6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGNvb3JkaW5hdGVzLnNwbGl0KCc7JykubWFwKChjb29yZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW3ggPSAwLCB5ID0gMF0gPSBjb29yZC5zcGxpdCgnLCcpLm1hcCgoJCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KCQsIDEwKVxuICAgICAgICAudG9TdHJpbmcoKSAvLyByZW1vdmVzIHNwYWNlcyA6KVxuICAgICAgICAucmVwbGFjZSgnLTAnLCAnMCcpXG4gICAgICAgIC5yZXBsYWNlKC91bmRlZmluZWR8TmFOL2csICcwJylcbiAgICB9KVxuICAgIHJldHVybiBgJHt4fSwke3l9YFxuICB9KVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYHRydWVgIGlmIHRoZSBnaXZlbiBzZXQgb2YgY29vcmRpbmF0ZXMgaXMgdmFsaWQuXG4gKiBGb3IgaW52YWxpZCBjb29yZGluYXRlcywgdGhlIHByb21pc2Ugd2lsbCByZWplY3Qgd2l0aCBhbiBlcnJvciBtZXNzYWdlLlxuICogKlRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBhcyBhbiBpbnF1aXJlciB2YWxpZGF0b3IuKlxuICpcbiAqIEVtcHR5IGlucHV0cyB3aWxsIHJlc29sdmUgYHRydWVgXG4gKiBAcGFyYW0gYW5zd2VycyBBbiBzdHJpbmcgY29udGFpbmluZyBjb29yZGluYXRlcyBpbiB0aGUgYHgseTsgeCx5OyAuLi5gIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGUoYW5zd2Vyczogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKGFuc3dlcnMudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBhbnN3ZXJzLnNwbGl0KC87XFxzL2cpLmZvckVhY2goKGFuc3dlcikgPT4ge1xuICAgICAgICBpZiAoIWlzVmFsaWQoYW5zd2VyKSkge1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEludmFsaWQgY29vcmRpbmF0ZSAke2Fuc3dlcn1gKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb29yZGluYXRlJ3MgZm9ybWF0IGlzIHZhbGlkXG4gKlxuICogYGBgXG4gKiBpc1ZhbGlkKCcwLDAnKSAvLyByZXR1cm5zIHRydWVcbiAqIGlzVmFsaWQoJywgMCcpIC8vIHJldHVybnMgZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHZhbCBUaGUgY29vZGluYXRlIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZCh2YWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXZhbC5tYXRjaCgvXigtP1xcZCkrXFwsKC0/XFxkKSskL2cpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZy1iYXNlZCBzZXQgb2YgY29vcmRpbmF0ZXMgdG8gYW4gb2JqZWN0XG4gKiBAcGFyYW0gY29vcmRzIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBzZXQgb2YgY29vcmRpbmF0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdChjb29yZHM6IHN0cmluZyk6IENvb3Jkc1xuLyoqXG4gKiBDb252ZXJ0cyBhIGFycmF5LWJhc2VkIHNldCBvZiBjb29yZGluYXRlcyB0byBhbiBvYmplY3RcbiAqIEBwYXJhbSBjb29yZHMgQW4gYXJyYXkgY29udGFpbmluZyBhIHNldCBvZiBjb29yZGluYXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0KGNvb3JkczogbnVtYmVyW10pOiBDb29yZHNcbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3QoY29vcmRzOiBudW1iZXJbXSB8IHN0cmluZyk6IENvb3JkcyB7XG4gIGNvbnN0IFt4LCB5XSA9IHR5cGVvZiBjb29yZHMgPT09ICdzdHJpbmcnID8gcGFyc2UoY29vcmRzKVswXS5zcGxpdCgnLCcpIDogY29vcmRzXG4gIHJldHVybiB7IHg6IHBhcnNlSW50KHgudG9TdHJpbmcoKSwgMTApLCB5OiBwYXJzZUludCh5LnRvU3RyaW5nKCksIDEwKSB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBDb29yZHMgb2JqZWN0IHRvIGEgc3RyaW5nLWJhc2VkIHNldCBvZiBjb29yZGluYXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RyaW5nKHsgeCwgeSB9OiBDb29yZHMpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7eH0sJHt5fWBcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIGFyZSBpbiBtZXRhdmVyc2UgYm91bmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbkJvdW5kcyh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xuICBjb25zdCB7IG1pblgsIG1pblksIG1heFgsIG1heFkgfSA9IGdldEJvdW5kcygpXG4gIHJldHVybiB4ID49IG1pblggJiYgeCA8PSBtYXhYICYmIHkgPj0gbWluWSAmJiB5IDw9IG1heFlcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHBhcmNlbHMgYXJyYXkgYXJlIGNvbm5lY3RlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJlQ29ubmVjdGVkKHBhcmNlbHM6IENvb3Jkc1tdKTogYm9vbGVhbiB7XG4gIGlmIChwYXJjZWxzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IHZpc2l0ZWQgPSB2aXNpdFBhcmNlbChwYXJjZWxzWzBdLCBwYXJjZWxzKVxuICByZXR1cm4gdmlzaXRlZC5sZW5ndGggPT09IHBhcmNlbHMubGVuZ3RoXG59XG5cbmZ1bmN0aW9uIHZpc2l0UGFyY2VsKHBhcmNlbDogQ29vcmRzLCBhbGxQYXJjZWxzOiBDb29yZHNbXSA9IFtwYXJjZWxdLCB2aXNpdGVkOiBDb29yZHNbXSA9IFtdKTogQ29vcmRzW10ge1xuICBjb25zdCBpc1Zpc2l0ZWQgPSB2aXNpdGVkLnNvbWUoKHZpc2l0ZWRQYXJjZWwpID0+IGlzRXF1YWwodmlzaXRlZFBhcmNlbCwgcGFyY2VsKSlcbiAgaWYgKCFpc1Zpc2l0ZWQpIHtcbiAgICB2aXNpdGVkLnB1c2gocGFyY2VsKVxuICAgIGNvbnN0IG5laWdoYm91cnMgPSBnZXROZWlnaGJvdXJzKHBhcmNlbC54LCBwYXJjZWwueSwgYWxsUGFyY2VscylcbiAgICBuZWlnaGJvdXJzLmZvckVhY2goKG5laWdoYm91cnMpID0+IHZpc2l0UGFyY2VsKG5laWdoYm91cnMsIGFsbFBhcmNlbHMsIHZpc2l0ZWQpKVxuICB9XG4gIHJldHVybiB2aXNpdGVkXG59XG5cbmZ1bmN0aW9uIGdldElzTmVpZ2hib3VyTWF0Y2hlcih4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICByZXR1cm4gKGNvb3JkczogQ29vcmRzKSA9PlxuICAgIChjb29yZHMueCA9PT0geCAmJiAoY29vcmRzLnkgKyAxID09PSB5IHx8IGNvb3Jkcy55IC0gMSA9PT0geSkpIHx8XG4gICAgKGNvb3Jkcy55ID09PSB5ICYmIChjb29yZHMueCArIDEgPT09IHggfHwgY29vcmRzLnggLSAxID09PSB4KSlcbn1cblxuZnVuY3Rpb24gZ2V0TmVpZ2hib3Vycyh4OiBudW1iZXIsIHk6IG51bWJlciwgcGFyY2VsczogQ29vcmRzW10pOiBDb29yZHNbXSB7XG4gIHJldHVybiBwYXJjZWxzLmZpbHRlcihnZXRJc05laWdoYm91ck1hdGNoZXIoeCwgeSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VxdWFsKHAxOiBDb29yZHMsIHAyOiBDb29yZHMpOiBib29sZWFuIHtcbiAgcmV0dXJuIHAxLnggPT09IHAyLnggJiYgcDEueSA9PT0gcDIueVxufVxuIl19
|
@@ -0,0 +1,146 @@
|
|
1
|
+
export interface IBounds {
|
2
|
+
minX: number
|
3
|
+
minY: number
|
4
|
+
maxX: number
|
5
|
+
maxY: number
|
6
|
+
}
|
7
|
+
|
8
|
+
export type Coords = {
|
9
|
+
x: number
|
10
|
+
y: number
|
11
|
+
}
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Returns metaverse coordinates bounds.
|
15
|
+
*/
|
16
|
+
export function getBounds(): IBounds {
|
17
|
+
return {
|
18
|
+
minX: -150,
|
19
|
+
minY: -150,
|
20
|
+
maxX: 165,
|
21
|
+
maxY: 165
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Parses a string-based set of coordinates.
|
27
|
+
* - All spaces are removed
|
28
|
+
* - Leading zeroes are removed
|
29
|
+
* - `-0` is converted to `0`
|
30
|
+
* @param coordinates An string containing coordinates in the `x,y; x,y; ...` format
|
31
|
+
*/
|
32
|
+
export function parse(coordinates: string): string[] {
|
33
|
+
return coordinates.split(';').map((coord: string) => {
|
34
|
+
const [x = 0, y = 0] = coord.split(',').map(($) => {
|
35
|
+
return parseInt($, 10)
|
36
|
+
.toString() // removes spaces :)
|
37
|
+
.replace('-0', '0')
|
38
|
+
.replace(/undefined|NaN/g, '0')
|
39
|
+
})
|
40
|
+
return `${x},${y}`
|
41
|
+
})
|
42
|
+
}
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Returns a promise that resolves `true` if the given set of coordinates is valid.
|
46
|
+
* For invalid coordinates, the promise will reject with an error message.
|
47
|
+
* *This is meant to be used as an inquirer validator.*
|
48
|
+
*
|
49
|
+
* Empty inputs will resolve `true`
|
50
|
+
* @param answers An string containing coordinates in the `x,y; x,y; ...` format
|
51
|
+
*/
|
52
|
+
export function validate(answers: string): Promise<boolean> {
|
53
|
+
return new Promise((resolve, reject) => {
|
54
|
+
if (answers.trim().length === 0) {
|
55
|
+
resolve(true)
|
56
|
+
} else {
|
57
|
+
answers.split(/;\s/g).forEach((answer) => {
|
58
|
+
if (!isValid(answer)) {
|
59
|
+
reject(new Error(`Invalid coordinate ${answer}`))
|
60
|
+
}
|
61
|
+
})
|
62
|
+
resolve(true)
|
63
|
+
}
|
64
|
+
})
|
65
|
+
}
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Returns true if the given coordinate's format is valid
|
69
|
+
*
|
70
|
+
* ```
|
71
|
+
* isValid('0,0') // returns true
|
72
|
+
* isValid(', 0') // returns false
|
73
|
+
* ```
|
74
|
+
* @param val The coodinate string
|
75
|
+
*/
|
76
|
+
export function isValid(val: string): boolean {
|
77
|
+
if (!val.match(/^(-?\d)+\,(-?\d)+$/g)) {
|
78
|
+
return false
|
79
|
+
}
|
80
|
+
return true
|
81
|
+
}
|
82
|
+
|
83
|
+
/**
|
84
|
+
* Converts a string-based set of coordinates to an object
|
85
|
+
* @param coords A string containing a set of coordinates
|
86
|
+
*/
|
87
|
+
export function getObject(coords: string): Coords
|
88
|
+
/**
|
89
|
+
* Converts a array-based set of coordinates to an object
|
90
|
+
* @param coords An array containing a set of coordinates
|
91
|
+
*/
|
92
|
+
export function getObject(coords: number[]): Coords
|
93
|
+
export function getObject(coords: number[] | string): Coords {
|
94
|
+
const [x, y] = typeof coords === 'string' ? parse(coords)[0].split(',') : coords
|
95
|
+
return { x: parseInt(x.toString(), 10), y: parseInt(y.toString(), 10) }
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Converts a Coords object to a string-based set of coordinates
|
100
|
+
*/
|
101
|
+
export function getString({ x, y }: Coords): string {
|
102
|
+
return `${x},${y}`
|
103
|
+
}
|
104
|
+
|
105
|
+
/**
|
106
|
+
* Returns true if the given coordinates are in metaverse bounds
|
107
|
+
*/
|
108
|
+
export function inBounds(x: number, y: number): boolean {
|
109
|
+
const { minX, minY, maxX, maxY } = getBounds()
|
110
|
+
return x >= minX && x <= maxX && y >= minY && y <= maxY
|
111
|
+
}
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Returns true if the given parcels array are connected
|
115
|
+
*/
|
116
|
+
export function areConnected(parcels: Coords[]): boolean {
|
117
|
+
if (parcels.length === 0) {
|
118
|
+
return false
|
119
|
+
}
|
120
|
+
const visited = visitParcel(parcels[0], parcels)
|
121
|
+
return visited.length === parcels.length
|
122
|
+
}
|
123
|
+
|
124
|
+
function visitParcel(parcel: Coords, allParcels: Coords[] = [parcel], visited: Coords[] = []): Coords[] {
|
125
|
+
const isVisited = visited.some((visitedParcel) => isEqual(visitedParcel, parcel))
|
126
|
+
if (!isVisited) {
|
127
|
+
visited.push(parcel)
|
128
|
+
const neighbours = getNeighbours(parcel.x, parcel.y, allParcels)
|
129
|
+
neighbours.forEach((neighbours) => visitParcel(neighbours, allParcels, visited))
|
130
|
+
}
|
131
|
+
return visited
|
132
|
+
}
|
133
|
+
|
134
|
+
function getIsNeighbourMatcher(x: number, y: number) {
|
135
|
+
return (coords: Coords) =>
|
136
|
+
(coords.x === x && (coords.y + 1 === y || coords.y - 1 === y)) ||
|
137
|
+
(coords.y === y && (coords.x + 1 === x || coords.x - 1 === x))
|
138
|
+
}
|
139
|
+
|
140
|
+
function getNeighbours(x: number, y: number, parcels: Coords[]): Coords[] {
|
141
|
+
return parcels.filter(getIsNeighbourMatcher(x, y))
|
142
|
+
}
|
143
|
+
|
144
|
+
export function isEqual(p1: Coords, p2: Coords): boolean {
|
145
|
+
return p1.x === p2.x && p1.y === p2.y
|
146
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { Router } from '@well-known-components/http-server';
|
2
|
+
import { PreviewComponents } from './types';
|
3
|
+
import { ContentMapping } from '@dcl/schemas';
|
4
|
+
export declare function setupEcs6Endpoints(dir: string, router: Router<PreviewComponents>): void;
|
5
|
+
export declare function getFilesFromFolder({ folder, addOriginalPath, ignorePattern, customHashMaker }: {
|
6
|
+
folder: string;
|
7
|
+
addOriginalPath?: boolean;
|
8
|
+
ignorePattern?: string;
|
9
|
+
customHashMaker?: (str: string) => string;
|
10
|
+
}): ContentMapping[];
|