@playdrop/playdrop-cli 0.5.1 → 0.5.3

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 (155) hide show
  1. package/config/client-meta.json +7 -7
  2. package/dist/apps/build.js +49 -6
  3. package/dist/apps/index.d.ts +2 -0
  4. package/dist/apps/index.js +2 -0
  5. package/dist/apps/upload.d.ts +2 -0
  6. package/dist/apps/upload.js +132 -28
  7. package/dist/assetSpecs.d.ts +16 -0
  8. package/dist/assetSpecs.js +263 -0
  9. package/dist/assets/model-artifacts.js +3 -0
  10. package/dist/catalogue.d.ts +57 -3
  11. package/dist/catalogue.js +342 -16
  12. package/dist/clientInfo.js +19 -3
  13. package/dist/commands/ads.d.ts +8 -0
  14. package/dist/commands/ads.js +124 -0
  15. package/dist/commands/boosts.d.ts +25 -0
  16. package/dist/commands/boosts.js +209 -0
  17. package/dist/commands/browse.d.ts +6 -1
  18. package/dist/commands/browse.js +365 -124
  19. package/dist/commands/captureListing.d.ts +53 -0
  20. package/dist/commands/captureListing.js +804 -0
  21. package/dist/commands/captureRemote.js +33 -0
  22. package/dist/commands/create.d.ts +1 -0
  23. package/dist/commands/create.js +183 -3
  24. package/dist/commands/credits.d.ts +6 -0
  25. package/dist/commands/credits.js +47 -1
  26. package/dist/commands/detail.js +38 -4
  27. package/dist/commands/devServer.js +10 -5
  28. package/dist/commands/generation.d.ts +2 -0
  29. package/dist/commands/generation.js +1 -0
  30. package/dist/commands/search.d.ts +5 -0
  31. package/dist/commands/search.js +139 -17
  32. package/dist/commands/tags.d.ts +7 -0
  33. package/dist/commands/tags.js +63 -0
  34. package/dist/commands/upload-content.d.ts +13 -3
  35. package/dist/commands/upload-content.js +86 -20
  36. package/dist/commands/upload.d.ts +2 -0
  37. package/dist/commands/upload.js +187 -11
  38. package/dist/commands/validate.js +163 -2
  39. package/dist/commands/versionsBrowse.js +128 -91
  40. package/dist/index.js +145 -3
  41. package/dist/refs.d.ts +2 -2
  42. package/dist/refs.js +13 -1
  43. package/dist/taskSelection.js +6 -3
  44. package/dist/taskUtils.d.ts +2 -2
  45. package/dist/taskUtils.js +1 -0
  46. package/dist/uploadLog.d.ts +1 -1
  47. package/dist/uploadLog.js +2 -2
  48. package/node_modules/@playdrop/ai-client/package.json +1 -1
  49. package/node_modules/@playdrop/api-client/dist/client.d.ts +131 -10
  50. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  51. package/node_modules/@playdrop/api-client/dist/client.js +6 -0
  52. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts +9 -1
  53. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts.map +1 -1
  54. package/node_modules/@playdrop/api-client/dist/domains/admin.js +45 -0
  55. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +3 -0
  56. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  57. package/node_modules/@playdrop/api-client/dist/domains/apps.js +27 -0
  58. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +2 -0
  59. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
  60. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +16 -0
  61. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +44 -2
  62. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
  63. package/node_modules/@playdrop/api-client/dist/domains/assets.js +260 -3
  64. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts +17 -1
  65. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts.map +1 -1
  66. package/node_modules/@playdrop/api-client/dist/domains/payments.js +173 -0
  67. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts.map +1 -1
  68. package/node_modules/@playdrop/api-client/dist/domains/search.js +39 -11
  69. package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts +34 -0
  70. package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts.map +1 -0
  71. package/node_modules/@playdrop/api-client/dist/domains/tags.js +111 -0
  72. package/node_modules/@playdrop/api-client/dist/index.d.ts +61 -1
  73. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  74. package/node_modules/@playdrop/api-client/dist/index.js +50 -0
  75. package/node_modules/@playdrop/api-client/package.json +1 -1
  76. package/node_modules/@playdrop/boxel-core/dist/test/entity-utils.test.d.ts +1 -0
  77. package/node_modules/@playdrop/boxel-core/dist/test/entity-utils.test.js +92 -0
  78. package/node_modules/@playdrop/boxel-core/dist/test/entity-utils.test.js.map +1 -0
  79. package/node_modules/@playdrop/boxel-core/dist/test/greedy-mesher.test.d.ts +1 -0
  80. package/node_modules/@playdrop/boxel-core/dist/test/greedy-mesher.test.js +48 -0
  81. package/node_modules/@playdrop/boxel-core/dist/test/greedy-mesher.test.js.map +1 -0
  82. package/node_modules/@playdrop/boxel-core/dist/test/humanoid/humanoid-builders.test.d.ts +1 -0
  83. package/node_modules/@playdrop/boxel-core/dist/test/humanoid/humanoid-builders.test.js +270 -0
  84. package/node_modules/@playdrop/boxel-core/dist/test/humanoid/humanoid-builders.test.js.map +1 -0
  85. package/node_modules/@playdrop/boxel-core/dist/test/index.test.d.ts +1 -0
  86. package/node_modules/@playdrop/boxel-core/dist/test/index.test.js +48 -0
  87. package/node_modules/@playdrop/boxel-core/dist/test/index.test.js.map +1 -0
  88. package/node_modules/@playdrop/boxel-core/dist/test/layer-mode.test.d.ts +1 -0
  89. package/node_modules/@playdrop/boxel-core/dist/test/layer-mode.test.js +67 -0
  90. package/node_modules/@playdrop/boxel-core/dist/test/layer-mode.test.js.map +1 -0
  91. package/node_modules/@playdrop/boxel-core/dist/test/materials.test.d.ts +1 -0
  92. package/node_modules/@playdrop/boxel-core/dist/test/materials.test.js +55 -0
  93. package/node_modules/@playdrop/boxel-core/dist/test/materials.test.js.map +1 -0
  94. package/node_modules/@playdrop/boxel-core/dist/test/palette-tools.test.d.ts +1 -0
  95. package/node_modules/@playdrop/boxel-core/dist/test/palette-tools.test.js +124 -0
  96. package/node_modules/@playdrop/boxel-core/dist/test/palette-tools.test.js.map +1 -0
  97. package/node_modules/@playdrop/boxel-core/dist/test/serialization.test.d.ts +1 -0
  98. package/node_modules/@playdrop/boxel-core/dist/test/serialization.test.js +35 -0
  99. package/node_modules/@playdrop/boxel-core/dist/test/serialization.test.js.map +1 -0
  100. package/node_modules/@playdrop/boxel-core/dist/test/textures.test.d.ts +1 -0
  101. package/node_modules/@playdrop/boxel-core/dist/test/textures.test.js +120 -0
  102. package/node_modules/@playdrop/boxel-core/dist/test/textures.test.js.map +1 -0
  103. package/node_modules/@playdrop/boxel-core/dist/test/types.test.d.ts +1 -0
  104. package/node_modules/@playdrop/boxel-core/dist/test/types.test.js +32 -0
  105. package/node_modules/@playdrop/boxel-core/dist/test/types.test.js.map +1 -0
  106. package/node_modules/@playdrop/boxel-core/dist/test/upscale.test.d.ts +1 -0
  107. package/node_modules/@playdrop/boxel-core/dist/test/upscale.test.js +100 -0
  108. package/node_modules/@playdrop/boxel-core/dist/test/upscale.test.js.map +1 -0
  109. package/node_modules/@playdrop/boxel-core/dist/test/validation.test.d.ts +1 -0
  110. package/node_modules/@playdrop/boxel-core/dist/test/validation.test.js +61 -0
  111. package/node_modules/@playdrop/boxel-core/dist/test/validation.test.js.map +1 -0
  112. package/node_modules/@playdrop/boxel-core/dist/test/voxels.test.d.ts +1 -0
  113. package/node_modules/@playdrop/boxel-core/dist/test/voxels.test.js +51 -0
  114. package/node_modules/@playdrop/boxel-core/dist/test/voxels.test.js.map +1 -0
  115. package/node_modules/@playdrop/boxel-core/package.json +1 -1
  116. package/node_modules/@playdrop/boxel-three/package.json +1 -1
  117. package/node_modules/@playdrop/config/client-meta.json +7 -7
  118. package/node_modules/@playdrop/config/dist/src/constants.d.ts +11 -0
  119. package/node_modules/@playdrop/config/dist/src/constants.d.ts.map +1 -1
  120. package/node_modules/@playdrop/config/dist/src/constants.js +12 -1
  121. package/node_modules/@playdrop/config/dist/src/creator-docs.d.ts +24 -0
  122. package/node_modules/@playdrop/config/dist/src/creator-docs.d.ts.map +1 -0
  123. package/node_modules/@playdrop/config/dist/src/creator-docs.js +253 -0
  124. package/node_modules/@playdrop/config/dist/src/creator-faq.d.ts +17 -0
  125. package/node_modules/@playdrop/config/dist/src/creator-faq.d.ts.map +1 -0
  126. package/node_modules/@playdrop/config/dist/src/creator-faq.js +141 -0
  127. package/node_modules/@playdrop/config/dist/test/creator-docs.test.d.ts +2 -0
  128. package/node_modules/@playdrop/config/dist/test/creator-docs.test.d.ts.map +1 -0
  129. package/node_modules/@playdrop/config/dist/test/creator-docs.test.js +36 -0
  130. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
  131. package/node_modules/@playdrop/config/package.json +1 -1
  132. package/node_modules/@playdrop/types/dist/api.d.ts +346 -6
  133. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  134. package/node_modules/@playdrop/types/dist/api.js +52 -1
  135. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +7 -1
  136. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  137. package/node_modules/@playdrop/types/dist/asset-spec-contract-meta-schema.json +86 -0
  138. package/node_modules/@playdrop/types/dist/asset-spec.d.ts +163 -0
  139. package/node_modules/@playdrop/types/dist/asset-spec.d.ts.map +1 -0
  140. package/node_modules/@playdrop/types/dist/asset-spec.js +101 -0
  141. package/node_modules/@playdrop/types/dist/asset.d.ts +23 -6
  142. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  143. package/node_modules/@playdrop/types/dist/asset.js +4 -1
  144. package/node_modules/@playdrop/types/dist/graph.d.ts +4 -2
  145. package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
  146. package/node_modules/@playdrop/types/dist/graph.js +9 -2
  147. package/node_modules/@playdrop/types/dist/index.d.ts +1 -0
  148. package/node_modules/@playdrop/types/dist/index.d.ts.map +1 -1
  149. package/node_modules/@playdrop/types/dist/index.js +1 -0
  150. package/node_modules/@playdrop/types/dist/version.d.ts +13 -0
  151. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  152. package/node_modules/@playdrop/types/dist/version.js +21 -0
  153. package/node_modules/@playdrop/types/package.json +6 -1
  154. package/node_modules/@playdrop/vox-three/package.json +1 -1
  155. package/package.json +3 -1
@@ -226,6 +226,14 @@ export async function fetchCliApiKeyStatus() {
226
226
  export async function createCliApiKey() {
227
227
  return await getDefaultClient().createCliApiKey();
228
228
  }
229
+ export async function fetchTags(options) {
230
+ const response = await getDefaultClient().fetchTags(options);
231
+ return response.groups;
232
+ }
233
+ export async function fetchTag(groupSlug, tagSlug) {
234
+ const response = await getDefaultClient().fetchTag(groupSlug, tagSlug);
235
+ return response.tag;
236
+ }
229
237
  export async function fetchApps(options = {}) {
230
238
  const response = await getDefaultClient().fetchApps(options);
231
239
  return response.apps;
@@ -430,6 +438,39 @@ export async function cancelAppIapReceipt(receiptId) {
430
438
  export async function fetchCreditTransactions(options) {
431
439
  return await getDefaultClient().fetchCreditTransactions(options);
432
440
  }
441
+ export async function fetchBoostBalance() {
442
+ return await getDefaultClient().fetchBoostBalance();
443
+ }
444
+ export async function purchaseBoostPack(request) {
445
+ return await getDefaultClient().purchaseBoostPack(request);
446
+ }
447
+ export async function activateAppBoost(appId, units = 1) {
448
+ return await getDefaultClient().activateAppBoost(appId, { units });
449
+ }
450
+ export async function fetchAppBoostStatus(appId) {
451
+ return await getDefaultClient().fetchAppBoostStatus(appId);
452
+ }
453
+ export async function fetchAppBoostHistory(appId, options) {
454
+ return await getDefaultClient().fetchAppBoostHistory(appId, options);
455
+ }
456
+ export async function fetchAppBoostReport(appId, options) {
457
+ return await getDefaultClient().fetchAppBoostReport(appId, options);
458
+ }
459
+ export async function fetchCreatorEarnings(options) {
460
+ return await getDefaultClient().fetchCreatorEarnings(options);
461
+ }
462
+ export async function loadInterstitialAd(sourceAppId) {
463
+ return await getDefaultClient().loadInterstitialAd(sourceAppId);
464
+ }
465
+ export async function showInterstitialAd(reservationId, viewedMs) {
466
+ return await getDefaultClient().showInterstitialAd({ reservationId, viewedMs });
467
+ }
468
+ export async function loadRewardedAd(sourceAppId) {
469
+ return await getDefaultClient().loadRewardedAd(sourceAppId);
470
+ }
471
+ export async function showRewardedAd(reservationId, viewedMs) {
472
+ return await getDefaultClient().showRewardedAd({ reservationId, viewedMs });
473
+ }
433
474
  export async function fetchAiGeneration(id) {
434
475
  return await getDefaultClient().fetchAiGeneration(id);
435
476
  }
@@ -535,6 +576,15 @@ export async function deleteAppVersion(creatorUsername, appName, version) {
535
576
  export async function fetchAdminApps() {
536
577
  return await getDefaultClient().fetchAdminApps();
537
578
  }
579
+ export async function fetchAdminAppVersionReviews(options) {
580
+ return await getDefaultClient().fetchAdminAppVersionReviews(options);
581
+ }
582
+ export async function claimNextAdminAppVersionReview() {
583
+ return await getDefaultClient().claimNextAdminAppVersionReview();
584
+ }
585
+ export async function updateAdminAppVersionReview(versionId, request) {
586
+ return await getDefaultClient().updateAdminAppVersionReview(versionId, request);
587
+ }
538
588
  export async function fetchAdminAppPlayerMeta(appId) {
539
589
  return await getDefaultClient().fetchAdminAppPlayerMeta(appId);
540
590
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playdrop/api-client",
3
- "version": "0.5.0",
3
+ "version": "0.5.3",
4
4
  "description": "TypeScript HTTP client for Playdrop platform API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const src_1 = require("../src");
9
+ (0, node_test_1.default)('collectPrimitiveDependencies resolves dependent ids', () => {
10
+ const entity = {
11
+ id: 'deps',
12
+ geometry: {
13
+ id: 'geo',
14
+ root: { id: 'root', position: [0, 0, 0], children: [] },
15
+ },
16
+ patterns: [{ id: 'pat', size: [1, 1], data: [0] }],
17
+ materials: [{ id: 'mat', baseColor: [0, 0, 0] }],
18
+ textures: [{ id: 'tex', pattern: 'pat', materials: ['mat'] }],
19
+ primitives: [
20
+ { id: 'plain', kind: 'plain_box', size: [1, 1, 1], material: 'mat' },
21
+ { id: 'textured', kind: 'textured_box', size: [1, 1, 1], north: 'tex' },
22
+ ],
23
+ animations: [],
24
+ };
25
+ const deps = (0, src_1.collectPrimitiveDependencies)(entity, 'textured');
26
+ strict_1.default.deepEqual(new Set(deps.primitives), new Set(['textured']));
27
+ strict_1.default.deepEqual(new Set(deps.textures), new Set(['tex']));
28
+ strict_1.default.deepEqual(new Set(deps.patterns), new Set(['pat']));
29
+ strict_1.default.deepEqual(new Set(deps.materials), new Set(['mat']));
30
+ });
31
+ (0, node_test_1.default)('collectPrimitiveUsage discovers nodes and combo slots', () => {
32
+ const combo = {
33
+ id: 'combo',
34
+ kind: 'combo_box',
35
+ size: [1, 1, 1],
36
+ slots: [{ id: 'slot', primitive: 'plain', offset: [0, 0, 0] }],
37
+ };
38
+ const entity = {
39
+ id: 'usage',
40
+ geometry: {
41
+ id: 'geo',
42
+ root: {
43
+ id: 'root',
44
+ position: [0, 0, 0],
45
+ children: [{ id: 'child', position: [0, 0, 0], mesh: 'plain', children: [] }],
46
+ },
47
+ },
48
+ patterns: [],
49
+ materials: [{ id: 'mat', baseColor: [0, 0, 0] }],
50
+ textures: [],
51
+ primitives: [
52
+ { id: 'plain', kind: 'plain_box', size: [1, 1, 1], material: 'mat' },
53
+ combo,
54
+ ],
55
+ animations: [],
56
+ };
57
+ const usage = (0, src_1.collectPrimitiveUsage)(entity, 'plain');
58
+ strict_1.default.deepEqual(usage.nodeIds, ['child']);
59
+ strict_1.default.deepEqual(usage.comboIds, ['combo']);
60
+ });
61
+ (0, node_test_1.default)('applyMaterialRewrite utilities update material references', () => {
62
+ const plain = { id: 'plain', kind: 'plain_box', size: [1, 1, 1], material: 'old' };
63
+ const rewrittenPlain = (0, src_1.applyMaterialRewriteToPrimitive)(plain, id => (id === 'old' ? 'new' : id));
64
+ strict_1.default.equal(rewrittenPlain.material, 'new');
65
+ const texture = { id: 'tex', pattern: 'pat', materials: ['old'] };
66
+ const rewrittenTexture = (0, src_1.applyMaterialRewriteToTexture)(texture, id => (id === 'old' ? 'new' : id));
67
+ strict_1.default.deepEqual(rewrittenTexture.materials, ['new']);
68
+ });
69
+ (0, node_test_1.default)('ensureNoIdCollisions throws when duplicate ids exist', () => {
70
+ strict_1.default.throws(() => (0, src_1.ensureNoIdCollisions)([{ id: 'a' }], new Set(['a']), 'test'), /test/);
71
+ });
72
+ (0, node_test_1.default)('selectByIdOrder filters and shallow copies items', () => {
73
+ const results = (0, src_1.selectByIdOrder)([{ id: 'a', value: 1 }, { id: 'b', value: 2 }], new Set(['b']));
74
+ strict_1.default.deepEqual(results, [{ id: 'b', value: 2 }]);
75
+ strict_1.default.notEqual(results[0], { id: 'b', value: 2 });
76
+ });
77
+ (0, node_test_1.default)('cloneEntity produces deep copy', () => {
78
+ const entity = {
79
+ id: 'clone',
80
+ geometry: { id: 'geo', root: { id: 'root', position: [0, 0, 0], children: [] } },
81
+ patterns: [],
82
+ materials: [],
83
+ textures: [],
84
+ primitives: [],
85
+ animations: [],
86
+ };
87
+ const copy = (0, src_1.cloneEntity)(entity);
88
+ strict_1.default.notEqual(copy, entity);
89
+ copy.geometry.root.id = 'changed';
90
+ strict_1.default.equal(entity.geometry.root.id, 'root');
91
+ });
92
+ //# sourceMappingURL=entity-utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-utils.test.js","sourceRoot":"","sources":["../../test/entity-utils.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const src_1 = require("../src");
9
+ const material = 1;
10
+ (0, node_test_1.default)('generateGreedyQuads collapses contiguous voxels into single quads per face', () => {
11
+ const dimensions = [2, 1, 1];
12
+ const voxels = [material, material];
13
+ const quads = (0, src_1.generateGreedyQuads)(voxels, dimensions);
14
+ strict_1.default.equal(quads.length, 6);
15
+ const axisCounts = new Map();
16
+ quads.forEach(quad => {
17
+ axisCounts.set(quad.axis, (axisCounts.get(quad.axis) ?? 0) + 1);
18
+ });
19
+ strict_1.default.equal(axisCounts.get(0), 2);
20
+ strict_1.default.equal(axisCounts.get(1), 2);
21
+ strict_1.default.equal(axisCounts.get(2), 2);
22
+ const posZ = quads.find(quad => quad.axis === 2 && quad.normal === 1);
23
+ strict_1.default.deepEqual(posZ?.size, [2, 1]);
24
+ strict_1.default.equal(posZ?.plane, 1);
25
+ const negX = quads.find(quad => quad.axis === 0 && quad.normal === -1);
26
+ strict_1.default.deepEqual(negX?.plane, 0);
27
+ });
28
+ (0, node_test_1.default)('generateGreedyQuads keeps seams between differing materials', () => {
29
+ const dimensions = [2, 1, 1];
30
+ const voxels = [1, 2];
31
+ const quads = (0, src_1.generateGreedyQuads)(voxels, dimensions);
32
+ strict_1.default.equal(quads.length, 12);
33
+ const sharedPlane = quads.filter(quad => quad.axis === 0 && quad.plane === 1);
34
+ strict_1.default.equal(sharedPlane.length, 2);
35
+ strict_1.default.equal(new Set(sharedPlane.map(quad => quad.material)).size, 2);
36
+ });
37
+ (0, node_test_1.default)('generateQuadsForVoxelBox normalizes voxel dimensions', () => {
38
+ const primitive = {
39
+ id: 'voxel',
40
+ kind: 'voxel_box',
41
+ size: [1.2, 1.6, 1],
42
+ palette: ['mat'],
43
+ voxels: [1, 1],
44
+ };
45
+ const quads = (0, src_1.generateQuadsForVoxelBox)(primitive);
46
+ strict_1.default.equal(quads.length, 6);
47
+ });
48
+ //# sourceMappingURL=greedy-mesher.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greedy-mesher.test.js","sourceRoot":"","sources":["../../test/greedy-mesher.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = __importDefault(require("node:test"));
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const pngjs_1 = require("pngjs");
9
+ const src_1 = require("../../src");
10
+ const HUMANOID_GEOMETRY = {
11
+ texturewidth: 64,
12
+ textureheight: 64,
13
+ bones: [
14
+ {
15
+ name: 'body',
16
+ pivot: [0, 12, 0],
17
+ cubes: [{ origin: [-4, 0, -2], size: [8, 12, 4], uv: [16, 16] }],
18
+ },
19
+ {
20
+ name: 'head',
21
+ pivot: [0, 24, 0],
22
+ cubes: [{ origin: [-4, 24, -4], size: [8, 8, 8], uv: [0, 0] }],
23
+ },
24
+ {
25
+ name: 'leftarm',
26
+ pivot: [5, 22, 0],
27
+ cubes: [{ origin: [4, 12, -2], size: [4, 12, 4], uv: [32, 48] }],
28
+ },
29
+ {
30
+ name: 'rightarm',
31
+ pivot: [-5, 22, 0],
32
+ cubes: [{ origin: [-8, 12, -2], size: [4, 12, 4], uv: [40, 16] }],
33
+ },
34
+ {
35
+ name: 'leftleg',
36
+ pivot: [1.9, 12, 0],
37
+ cubes: [{ origin: [0, 0, -2], size: [4, 12, 4], uv: [16, 48] }],
38
+ },
39
+ {
40
+ name: 'rightleg',
41
+ pivot: [-1.9, 12, 0],
42
+ cubes: [{ origin: [-4, 0, -2], size: [4, 12, 4], uv: [0, 16] }],
43
+ },
44
+ {
45
+ name: 'hat',
46
+ pivot: [0, 24, 0],
47
+ cubes: [{ origin: [-4, 24, -4], size: [8, 8, 8], uv: [32, 0], inflate: 0.5 }],
48
+ },
49
+ {
50
+ name: 'leftsleeve',
51
+ pivot: [5, 22, 0],
52
+ cubes: [{ origin: [4, 12, -2], size: [4, 12, 4], uv: [48, 48], inflate: 0.25 }],
53
+ },
54
+ {
55
+ name: 'rightsleeve',
56
+ pivot: [-5, 22, 0],
57
+ cubes: [{ origin: [-8, 12, -2], size: [4, 12, 4], uv: [40, 32], inflate: 0.25 }],
58
+ },
59
+ {
60
+ name: 'leftpants',
61
+ pivot: [1.9, 12, 0],
62
+ cubes: [{ origin: [0, 0, -2], size: [4, 12, 4], uv: [0, 48], inflate: 0.25 }],
63
+ },
64
+ {
65
+ name: 'rightpants',
66
+ pivot: [-1.9, 12, 0],
67
+ cubes: [{ origin: [-4, 0, -2], size: [4, 12, 4], uv: [32, 16], inflate: 0.25 }],
68
+ },
69
+ {
70
+ name: 'torso_outer',
71
+ pivot: [0, 12, 0],
72
+ cubes: [{ origin: [-4, 0, -2], size: [8, 12, 4], uv: [16, 32], inflate: 0.25 }],
73
+ },
74
+ ],
75
+ };
76
+ const OVERSIZED_HEAD_GEOMETRY = {
77
+ texturewidth: 64,
78
+ textureheight: 64,
79
+ bones: [
80
+ {
81
+ name: 'body',
82
+ pivot: [0, 12, 0],
83
+ cubes: [{ origin: [-4, 0, -2], size: [8, 12, 4], uv: [16, 16] }],
84
+ },
85
+ {
86
+ name: 'head',
87
+ pivot: [0, 24, 0],
88
+ cubes: [{ origin: [-5, 24, -4], size: [10, 8, 8], uv: [0, 0] }],
89
+ },
90
+ {
91
+ name: 'leftarm',
92
+ pivot: [5, 22, 0],
93
+ cubes: [{ origin: [4, 12, -2], size: [4, 12, 4], uv: [32, 48] }],
94
+ },
95
+ {
96
+ name: 'rightarm',
97
+ pivot: [-5, 22, 0],
98
+ cubes: [{ origin: [-8, 12, -2], size: [4, 12, 4], uv: [40, 16] }],
99
+ },
100
+ {
101
+ name: 'leftleg',
102
+ pivot: [1.9, 12, 0],
103
+ cubes: [{ origin: [0, 0, -2], size: [4, 12, 4], uv: [16, 48] }],
104
+ },
105
+ {
106
+ name: 'rightleg',
107
+ pivot: [-1.9, 12, 0],
108
+ cubes: [{ origin: [-4, 0, -2], size: [4, 12, 4], uv: [0, 16] }],
109
+ },
110
+ ],
111
+ };
112
+ function createTestSkin() {
113
+ const width = 64;
114
+ const height = 64;
115
+ const png = new pngjs_1.PNG({ width, height });
116
+ const data = png.data;
117
+ const setPixel = (x, y, rgba) => {
118
+ const idx = (y * width + x) << 2;
119
+ data[idx] = rgba[0];
120
+ data[idx + 1] = rgba[1];
121
+ data[idx + 2] = rgba[2];
122
+ data[idx + 3] = rgba[3];
123
+ };
124
+ for (let y = 0; y < height; y += 1) {
125
+ for (let x = 0; x < width; x += 1) {
126
+ if (y < 8) {
127
+ setPixel(x, y, [198, 134, 66, 255]);
128
+ }
129
+ else if (y < 16) {
130
+ setPixel(x, y, [160, 101, 53, 255]);
131
+ }
132
+ else if (y < 32) {
133
+ setPixel(x, y, [58, 142, 186, 255]);
134
+ }
135
+ else if (y < 48) {
136
+ setPixel(x, y, [97, 56, 24, 255]);
137
+ }
138
+ else {
139
+ setPixel(x, y, [58, 71, 166, 255]);
140
+ }
141
+ }
142
+ }
143
+ return { width, height, pixels: new Uint8Array(data) };
144
+ }
145
+ (0, node_test_1.default)('buildHumanoidR6Entity produces textured primitives for test skin', () => {
146
+ const { width, height, pixels } = createTestSkin();
147
+ const source = (0, src_1.scanHumanoidSource)({
148
+ geometryId: 'test.humanoid',
149
+ geometry: HUMANOID_GEOMETRY,
150
+ textureWidth: width,
151
+ textureHeight: height,
152
+ texturePixels: pixels,
153
+ });
154
+ const template = (0, src_1.getHumanoidTemplate)(src_1.HUMANOID_R6_TEMPLATE_ID);
155
+ const entity = (0, src_1.buildHumanoidR6Entity)({
156
+ template,
157
+ source,
158
+ geometryId: 'test.humanoid',
159
+ outputId: 'steve_core_test',
160
+ textureWidth: width,
161
+ textureHeight: height,
162
+ texturePixels: pixels,
163
+ });
164
+ const primitivesById = new Map(entity.primitives.map(primitive => [primitive.id, primitive]));
165
+ const torso = primitivesById.get('torso_primitive');
166
+ const armLeft = primitivesById.get('arm_left_primitive');
167
+ const armRight = primitivesById.get('arm_right_primitive');
168
+ strict_1.default.ok(torso, 'torso primitive missing');
169
+ strict_1.default.ok(armLeft, 'arm_left primitive missing');
170
+ strict_1.default.ok(armRight, 'arm_right primitive missing');
171
+ strict_1.default.deepEqual(torso.size, [8, 12, 4]);
172
+ strict_1.default.ok(entity.patterns.length > 0, 'expected patterns to be generated');
173
+ strict_1.default.ok(entity.textures.length > 0, 'expected textures to be generated');
174
+ });
175
+ (0, node_test_1.default)('humanoid R6 entity converts to voxel and textured R15 variants', () => {
176
+ const { width, height, pixels } = createTestSkin();
177
+ const sourceScan = (0, src_1.scanHumanoidSource)({
178
+ geometryId: 'test.humanoid',
179
+ geometry: HUMANOID_GEOMETRY,
180
+ textureWidth: width,
181
+ textureHeight: height,
182
+ texturePixels: pixels,
183
+ });
184
+ const r6Template = (0, src_1.getHumanoidTemplate)(src_1.HUMANOID_R6_TEMPLATE_ID);
185
+ const baseR6Entity = (0, src_1.buildHumanoidR6Entity)({
186
+ template: r6Template,
187
+ source: sourceScan,
188
+ geometryId: 'test.humanoid',
189
+ outputId: 'steve_r6',
190
+ textureWidth: width,
191
+ textureHeight: height,
192
+ texturePixels: pixels,
193
+ });
194
+ const r6HdEntity = (0, src_1.upscaleEntity)(baseR6Entity, 2);
195
+ const r6VoxelEntity = (0, src_1.applyLayerMode)(r6HdEntity, 'voxel');
196
+ const r15Template = (0, src_1.getHumanoidTemplate)(src_1.HUMANOID_R15_TEMPLATE_ID);
197
+ const voxelR15 = (0, src_1.buildHumanoidR15Entity)({
198
+ template: r15Template,
199
+ source: r6VoxelEntity,
200
+ outputId: 'steve_r15_voxel',
201
+ });
202
+ const voxelPrimitives = new Map(voxelR15.primitives.map(primitive => [primitive.id, primitive]));
203
+ const expectedVoxelIds = [
204
+ 'Head_voxel',
205
+ 'Chest_voxel',
206
+ 'Hip_voxel',
207
+ 'Left_Arm_voxel',
208
+ 'Left_Forearm_voxel',
209
+ 'Left_Hand_voxel',
210
+ 'Right_Arm_voxel',
211
+ 'Right_Forearm_voxel',
212
+ 'Right_Hand_voxel',
213
+ 'Left_Thigh_voxel',
214
+ 'Left_Leg_voxel',
215
+ 'Left_Foot_voxel',
216
+ 'Right_Thigh_voxel',
217
+ 'Right_Leg_voxel',
218
+ 'Right_Foot_voxel',
219
+ ];
220
+ expectedVoxelIds.forEach(id => {
221
+ const primitive = voxelPrimitives.get(id);
222
+ strict_1.default.ok(primitive, `voxel primitive ${id} missing`);
223
+ strict_1.default.equal(primitive.kind, 'voxel_box');
224
+ });
225
+ strict_1.default.equal(voxelPrimitives.size, expectedVoxelIds.length, 'unexpected voxel primitive count for R15 conversion');
226
+ strict_1.default.ok(voxelR15.materials.length > 0, 'expected voxel materials to be cloned');
227
+ });
228
+ (0, node_test_1.default)('oversized head geometry preserves dimensions through R6 and R15 builders', () => {
229
+ const { width, height, pixels } = createTestSkin();
230
+ const sourceScan = (0, src_1.scanHumanoidSource)({
231
+ geometryId: 'geometry.piglin_like',
232
+ geometry: OVERSIZED_HEAD_GEOMETRY,
233
+ textureWidth: width,
234
+ textureHeight: height,
235
+ texturePixels: pixels,
236
+ });
237
+ const r6Template = (0, src_1.getHumanoidTemplate)(src_1.HUMANOID_R6_TEMPLATE_ID);
238
+ const r6Entity = (0, src_1.buildHumanoidR6Entity)({
239
+ template: r6Template,
240
+ source: sourceScan,
241
+ geometryId: 'geometry.piglin_like',
242
+ outputId: 'oversized_r6',
243
+ textureWidth: width,
244
+ textureHeight: height,
245
+ texturePixels: pixels,
246
+ });
247
+ const r6Head = r6Entity.primitives.find(primitive => primitive.id === 'head_primitive');
248
+ strict_1.default.ok(r6Head, 'oversized head primitive missing on R6 entity');
249
+ strict_1.default.deepEqual(r6Head.size, [10, 8, 8], 'R6 head size should match oversized geometry');
250
+ const r6Hd = (0, src_1.upscaleEntity)(r6Entity, 2);
251
+ const voxelSource = (0, src_1.applyLayerMode)(r6Hd, 'voxel');
252
+ const r15Template = (0, src_1.getHumanoidTemplate)(src_1.HUMANOID_R15_TEMPLATE_ID);
253
+ const r15Voxel = (0, src_1.buildHumanoidR15Entity)({
254
+ template: r15Template,
255
+ source: voxelSource,
256
+ outputId: 'oversized_r15_voxel',
257
+ });
258
+ const headVoxel = r15Voxel.primitives.find(primitive => primitive.id === 'Head_voxel');
259
+ strict_1.default.ok(headVoxel, 'Head_voxel missing for oversized geometry');
260
+ strict_1.default.deepEqual(headVoxel.size, [20, 16, 16], 'R15 voxel head size should reflect HD upscale of oversized head');
261
+ const texturedSource = (0, src_1.buildHumanoidR15TexturedEntity)({
262
+ template: r15Template,
263
+ source: (0, src_1.applyLayerMode)(r6Hd, 'overlay'),
264
+ outputId: 'oversized_r15_textured',
265
+ });
266
+ const headTextured = texturedSource.primitives.find(primitive => primitive.id === 'Head_textured');
267
+ strict_1.default.ok(headTextured, 'Head_textured missing for oversized geometry');
268
+ strict_1.default.deepEqual(headTextured.size, [20, 16, 16], 'R15 textured head size should match voxel head size');
269
+ });
270
+ //# sourceMappingURL=humanoid-builders.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanoid-builders.test.js","sourceRoot":"","sources":["../../../test/humanoid/humanoid-builders.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const node_test_1 = __importDefault(require("node:test"));
41
+ const EntityCore = __importStar(require("../src"));
42
+ (0, node_test_1.default)('barrel exports key utilities', () => {
43
+ strict_1.default.equal(typeof EntityCore.parseBoxel, 'function');
44
+ strict_1.default.equal(typeof EntityCore.formatBoxel, 'function');
45
+ strict_1.default.equal(typeof EntityCore.uvToCanvasPixel, 'function');
46
+ strict_1.default.equal(typeof EntityCore.createFilledVoxelData, 'function');
47
+ });
48
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../test/index.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAwC;AACxC,0DAA6B;AAC7B,mDAAqC;AAErC,IAAA,mBAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,gBAAM,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACvD,gBAAM,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxD,gBAAM,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC5D,gBAAM,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}