@aura3d/asset-index 3.0.1 → 4.0.2
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/dist/CanonicalAsset.d.ts +41 -1
- package/dist/CanonicalAsset.d.ts.map +1 -1
- package/dist/CanonicalAsset.js.map +1 -1
- package/dist/adapters/ambientcg.d.ts +3 -0
- package/dist/adapters/ambientcg.d.ts.map +1 -0
- package/dist/adapters/ambientcg.js +112 -0
- package/dist/adapters/ambientcg.js.map +1 -0
- package/dist/adapters/aura-library.d.ts +69 -0
- package/dist/adapters/aura-library.d.ts.map +1 -0
- package/dist/adapters/aura-library.js +75 -0
- package/dist/adapters/aura-library.js.map +1 -0
- package/dist/adapters/poly-haven.d.ts.map +1 -1
- package/dist/adapters/poly-haven.js +164 -25
- package/dist/adapters/poly-haven.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/CanonicalAsset.d.ts
CHANGED
|
@@ -29,7 +29,29 @@ export interface AuraAssetLicense {
|
|
|
29
29
|
/** Human-checkable page where the license can be confirmed. */
|
|
30
30
|
readonly sourcePage?: string;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* `glb`/`gltf` for models; `hdr` for radiance environment maps; `texture-set`
|
|
34
|
+
* for a PBR map bundle (base/normal/ORM/...) assembled per-source; `image` for
|
|
35
|
+
* a standalone texture file. PRD-05 §6.6 added the non-model values so HDRI and
|
|
36
|
+
* texture sources federate through the same canonical record.
|
|
37
|
+
*/
|
|
38
|
+
export type AuraAssetFormat = "glb" | "gltf" | "hdr" | "texture-set" | "image";
|
|
39
|
+
/** One directly-fetchable file belonging to a canonical record. */
|
|
40
|
+
export interface AuraAssetFileEntry {
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly url: string;
|
|
43
|
+
readonly sizeBytes?: number;
|
|
44
|
+
readonly md5?: string;
|
|
45
|
+
}
|
|
46
|
+
/** Membership of the curated §6.6 library (aura.library.json). */
|
|
47
|
+
export interface AuraLibraryMembership {
|
|
48
|
+
/** Kit id, e.g. "characters/humanoid-pbr" or "hdri". */
|
|
49
|
+
readonly kitId: string;
|
|
50
|
+
/** Entry id inside the kit. */
|
|
51
|
+
readonly entryId: string;
|
|
52
|
+
/** Repo-relative path of the admitted bytes (e.g. assets/library/hdri/x.hdr). */
|
|
53
|
+
readonly path: string;
|
|
54
|
+
}
|
|
33
55
|
/** Whether the file can be fetched directly or is a discovery deep-link only. */
|
|
34
56
|
export type AuraAssetAccess = "direct-download" | "deep-link-only";
|
|
35
57
|
export interface AuraAssetBounds {
|
|
@@ -91,6 +113,24 @@ export interface AuraCanonicalAsset {
|
|
|
91
113
|
readonly qualityWarnings?: readonly string[];
|
|
92
114
|
readonly duplicateHash?: string;
|
|
93
115
|
readonly duplicateOkReason?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Multi-file pull set (PRD-05 §6.6): HDRIs carry one entry per resolution;
|
|
118
|
+
* texture-sets carry one entry per map/zip. `url`/`downloadUrl` remain the
|
|
119
|
+
* canonical single-file choice when the source has one.
|
|
120
|
+
*/
|
|
121
|
+
readonly downloadFileset?: readonly AuraAssetFileEntry[];
|
|
122
|
+
/** §6.6 library membership — set only for entries read from aura.library.json. */
|
|
123
|
+
readonly library?: AuraLibraryMembership;
|
|
124
|
+
/** True when the entry carries an approved §6.7 look-dev record (G9). */
|
|
125
|
+
readonly lookDevApproved?: boolean;
|
|
126
|
+
/** `assets/art-direction/<id>.json` id the entry was admitted under (G10). */
|
|
127
|
+
readonly artDirection?: string;
|
|
128
|
+
/** §6.7 HDRI: dominant-light direction (unit vector, equirect). */
|
|
129
|
+
readonly sunDirection?: readonly [number, number, number];
|
|
130
|
+
/** §6.7 HDRI: 99th-percentile relative luminance. */
|
|
131
|
+
readonly luminanceP99?: number;
|
|
132
|
+
/** §6.7 HDRI: estimated white balance (McCamy CCT, kelvin). */
|
|
133
|
+
readonly whiteBalanceK?: number;
|
|
94
134
|
readonly rawCatalogMetadata?: Readonly<Record<string, unknown>>;
|
|
95
135
|
}
|
|
96
136
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanonicalAsset.d.ts","sourceRoot":"","sources":["../../../../packages/asset-index/src/CanonicalAsset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"CanonicalAsset.d.ts","sourceRoot":"","sources":["../../../../packages/asset-index/src/CanonicalAsset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanonicalAsset.js","sourceRoot":"","sources":["../../../../packages/asset-index/src/CanonicalAsset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"CanonicalAsset.js","sourceRoot":"","sources":["../../../../packages/asset-index/src/CanonicalAsset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuJH;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,iBAAiB;QAClC,KAAK,CAAC,OAAO,CAAC,QAAQ;QACtB,KAAK,CAAC,OAAO,CAAC,eAAe,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAiE;IAClF,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;IAC3F,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;IACjG,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;IACvG,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IAChG,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IACpG,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;CACrG,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAA8B,EAC9B,UAAmB;IAEnB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,GAAG,IAAI,EAAE;QACd,QAAQ,EAAE,KAAK;QACf,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE,KAAK;QACtB,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ambientcg.d.ts","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/ambientcg.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,aAAa,EACd,MAAM,qBAAqB,CAAC;AA4I7B,wBAAgB,sBAAsB,IAAI,aAAa,CAWtD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { normalizeLicense } from "../CanonicalAsset.js";
|
|
2
|
+
/**
|
|
3
|
+
* ambientCG adapter — https://ambientcg.com (free public JSON API, NO key).
|
|
4
|
+
*
|
|
5
|
+
* Verified live (Oct 2026):
|
|
6
|
+
* GET https://ambientcg.com/api/v2/full_json?type=Material&include=downloadData&limit=N&offset=N
|
|
7
|
+
* -> { foundAssets: [{
|
|
8
|
+
* assetId, displayName, displayCategory, tags[], popularityScore,
|
|
9
|
+
* shortLink, dataType ("Material"), dimensionX/Y/Z,
|
|
10
|
+
* downloadFolders: { default: { downloadFiletypeCategories:
|
|
11
|
+
* { zip: { downloads: [{ fullDownloadPath, fileName, size, attribute: "1K-JPG", ... }] } } } }
|
|
12
|
+
* }], nextPageHttp }
|
|
13
|
+
*
|
|
14
|
+
* All ambientCG content is released under CC0-1.0 (stated on the API's own
|
|
15
|
+
* terms-of-use page: https://docs.ambientcg.com/legal/), so the license is
|
|
16
|
+
* verified + redistributable.
|
|
17
|
+
*
|
|
18
|
+
* Every record is a single-zip direct download; `downloadUrl` is the 2K-JPG
|
|
19
|
+
* zip (the lane's default ingest res) and `downloadFileset` carries the
|
|
20
|
+
* 1K/2K PNG+JPG variants so a puller can pick. Records are `texture-set`
|
|
21
|
+
* format — ambientCG materials are map bundles, not meshes.
|
|
22
|
+
*/
|
|
23
|
+
const API_URL = "https://ambientcg.com/api/v2/full_json";
|
|
24
|
+
const PAGE_BASE = "https://ambientcg.com/a";
|
|
25
|
+
/** Pages of 200 catalog rows; the full material catalog is ~2.5k rows. */
|
|
26
|
+
const PAGE_LIMIT = 200;
|
|
27
|
+
const MAX_PAGES = 14;
|
|
28
|
+
const PREFERRED_ZIP = "2K-JPG";
|
|
29
|
+
const FILESET_ZIP_ATTRS = ["1K-JPG", "2K-JPG", "1K-PNG", "2K-PNG"];
|
|
30
|
+
function tokenize(text) {
|
|
31
|
+
return text
|
|
32
|
+
.replace(/[_-]+/g, " ")
|
|
33
|
+
.toLowerCase()
|
|
34
|
+
.split(/[^a-z0-9]+/)
|
|
35
|
+
.filter((t) => t.length > 1);
|
|
36
|
+
}
|
|
37
|
+
function toCanonical(asset) {
|
|
38
|
+
const id = asset.assetId;
|
|
39
|
+
if (!id)
|
|
40
|
+
return undefined;
|
|
41
|
+
const zips = asset.downloadFolders?.default?.downloadFiletypeCategories?.zip?.downloads ?? [];
|
|
42
|
+
const preferred = zips.find((z) => z.attribute === PREFERRED_ZIP && z.fullDownloadPath);
|
|
43
|
+
if (!preferred?.fullDownloadPath)
|
|
44
|
+
return undefined;
|
|
45
|
+
const fileset = FILESET_ZIP_ATTRS.flatMap((attr) => {
|
|
46
|
+
const zip = zips.find((z) => z.attribute === attr && z.fullDownloadPath);
|
|
47
|
+
return zip ? [{ name: zip.fileName ?? `${id}-${attr}.zip`, url: zip.fullDownloadPath, sizeBytes: zip.size }] : [];
|
|
48
|
+
});
|
|
49
|
+
const sourcePage = asset.shortLink ?? `${PAGE_BASE}/${id}`;
|
|
50
|
+
const title = asset.displayName ?? id;
|
|
51
|
+
const sizeCm = asset.dimensionX;
|
|
52
|
+
const tags = Array.from(new Set([
|
|
53
|
+
...(asset.tags ?? []).map((t) => t.toLowerCase()),
|
|
54
|
+
...(asset.displayCategory ? [asset.displayCategory.toLowerCase()] : []),
|
|
55
|
+
...tokenize(title),
|
|
56
|
+
"texture", "pbr", "material",
|
|
57
|
+
]));
|
|
58
|
+
return {
|
|
59
|
+
id: `ambientcg:${id}`,
|
|
60
|
+
source: "ambientcg",
|
|
61
|
+
title,
|
|
62
|
+
description: asset.description || asset.displayCategory,
|
|
63
|
+
url: preferred.fullDownloadPath,
|
|
64
|
+
downloadUrl: preferred.fullDownloadPath,
|
|
65
|
+
downloadFileset: fileset.length > 0 ? fileset : [{ name: preferred.fileName ?? `${id}-${PREFERRED_ZIP}.zip`, url: preferred.fullDownloadPath, sizeBytes: preferred.size }],
|
|
66
|
+
access: "direct-download",
|
|
67
|
+
format: "texture-set",
|
|
68
|
+
license: normalizeLicense("CC0-1.0", sourcePage),
|
|
69
|
+
licenseName: "CC0-1.0",
|
|
70
|
+
licenseUrl: "https://docs.ambientcg.com/legal/",
|
|
71
|
+
fileSizeBytes: preferred.size,
|
|
72
|
+
bounds: typeof sizeCm === "number" && sizeCm > 0
|
|
73
|
+
? { size: [sizeCm / 100, (asset.dimensionY ?? sizeCm) / 100, (asset.dimensionZ ?? 0) / 100] }
|
|
74
|
+
: undefined,
|
|
75
|
+
qualityScore: typeof asset.popularityScore === "number" ? asset.popularityScore : undefined,
|
|
76
|
+
tags,
|
|
77
|
+
sourcePage,
|
|
78
|
+
sourceFamily: "ambientcg",
|
|
79
|
+
author: "ambientCG",
|
|
80
|
+
attribution: "ambientCG (CC0)",
|
|
81
|
+
intendedRole: "set-dressing",
|
|
82
|
+
roleSuitability: "Tiling PBR texture set (diffuse/normal/ORM-style maps in one zip) — assemble into a material entry.",
|
|
83
|
+
rawCatalogMetadata: { dataType: asset.dataType, dimensionCm: [asset.dimensionX, asset.dimensionY, asset.dimensionZ] },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async function loadAll(ctx) {
|
|
87
|
+
const out = [];
|
|
88
|
+
let url = `${API_URL}?type=Material&include=downloadData&limit=${PAGE_LIMIT}&offset=0`;
|
|
89
|
+
for (let page = 0; page < MAX_PAGES && url; page++) {
|
|
90
|
+
const res = (await ctx.fetchJson(url));
|
|
91
|
+
for (const asset of res.foundAssets ?? []) {
|
|
92
|
+
const record = toCanonical(asset);
|
|
93
|
+
if (record)
|
|
94
|
+
out.push(record);
|
|
95
|
+
}
|
|
96
|
+
url = res.nextPageHttp;
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
export function createAmbientCgAdapter() {
|
|
101
|
+
let cache = null;
|
|
102
|
+
return {
|
|
103
|
+
id: "ambientcg",
|
|
104
|
+
label: "ambientCG (CC0)",
|
|
105
|
+
async search(_query, ctx) {
|
|
106
|
+
if (!cache)
|
|
107
|
+
cache = await loadAll(ctx);
|
|
108
|
+
return cache;
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=ambientcg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ambientcg.js","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/ambientcg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { SourceAdapter } from "../SourceAdapter.js";
|
|
2
|
+
/**
|
|
3
|
+
* §6.6 curated-library adapter (PRD-05 Phase 5).
|
|
4
|
+
*
|
|
5
|
+
* The library is the project's own `aura.library.json`: every kit/entry in it
|
|
6
|
+
* was admitted through §6.4 G1–G11 with an approved §6.7 look-dev record, so
|
|
7
|
+
* its records are always verified-licensed, direct-"download" (local copy),
|
|
8
|
+
* and carry the §6.6 ranking signals (`library`, `lookDevApproved`,
|
|
9
|
+
* `artDirection`) that make them resolve first per the §6.6 rule "catalog
|
|
10
|
+
* search/resolve ranks library entries first".
|
|
11
|
+
*
|
|
12
|
+
* The adapter is pure: callers inject the parsed manifest so the index layer
|
|
13
|
+
* stays free of filesystem assumptions (the CLI reads the file; browser-side
|
|
14
|
+
* consumers can pass a bundled manifest).
|
|
15
|
+
*/
|
|
16
|
+
/** Minimal entry shape the adapter needs — a superset-free view of the CLI's library entry. */
|
|
17
|
+
export interface AuraLibraryEntryShape {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly kit?: string;
|
|
20
|
+
readonly type: string;
|
|
21
|
+
readonly format: string;
|
|
22
|
+
/** Repo-relative path of the admitted bytes under assets/library/. */
|
|
23
|
+
readonly libraryPath: string;
|
|
24
|
+
readonly title?: string;
|
|
25
|
+
readonly sizeBytes?: number;
|
|
26
|
+
readonly bounds?: readonly [number, number, number];
|
|
27
|
+
readonly triangleCount?: number;
|
|
28
|
+
readonly meshCount?: number;
|
|
29
|
+
readonly materialCount?: number;
|
|
30
|
+
readonly textureCount?: number;
|
|
31
|
+
readonly animationClips?: readonly {
|
|
32
|
+
readonly name: string;
|
|
33
|
+
}[];
|
|
34
|
+
readonly animations?: readonly string[];
|
|
35
|
+
readonly skinned?: boolean;
|
|
36
|
+
readonly role?: string;
|
|
37
|
+
readonly artDirection?: string;
|
|
38
|
+
readonly lookDevApproved?: boolean;
|
|
39
|
+
readonly sourcePage?: string;
|
|
40
|
+
readonly source?: string;
|
|
41
|
+
readonly license?: string;
|
|
42
|
+
readonly author?: string;
|
|
43
|
+
readonly attribution?: string;
|
|
44
|
+
readonly retrievedAt?: string;
|
|
45
|
+
readonly tags?: readonly string[];
|
|
46
|
+
/** §6.7 HDRI environment fields, carried through to canonical. */
|
|
47
|
+
readonly sunDirection?: readonly [number, number, number];
|
|
48
|
+
readonly luminanceP99?: number;
|
|
49
|
+
readonly whiteBalanceK?: number;
|
|
50
|
+
readonly downloadFileset?: readonly {
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly url: string;
|
|
53
|
+
readonly sizeBytes?: number;
|
|
54
|
+
readonly md5?: string;
|
|
55
|
+
}[];
|
|
56
|
+
}
|
|
57
|
+
export interface AuraLibraryManifestShape {
|
|
58
|
+
readonly schema: string;
|
|
59
|
+
readonly kits?: readonly {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
readonly artDirection?: string;
|
|
62
|
+
}[];
|
|
63
|
+
readonly entries: readonly AuraLibraryEntryShape[];
|
|
64
|
+
}
|
|
65
|
+
export interface AuraLibraryAdapterOptions {
|
|
66
|
+
readonly manifest: AuraLibraryManifestShape;
|
|
67
|
+
}
|
|
68
|
+
export declare function createAuraLibraryAdapter(options: AuraLibraryAdapterOptions): SourceAdapter;
|
|
69
|
+
//# sourceMappingURL=aura-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aura-library.d.ts","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/aura-library.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AAEH,+FAA+F;AAC/F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3I;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnF,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;CAC7C;AAmED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,aAAa,CAW1F"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { normalizeLicense } from "../CanonicalAsset.js";
|
|
2
|
+
const ROLE_MAP = {
|
|
3
|
+
character: "character",
|
|
4
|
+
enemy: "character",
|
|
5
|
+
hero: "character",
|
|
6
|
+
vehicle: "vehicle",
|
|
7
|
+
world: "world",
|
|
8
|
+
environment: "environment",
|
|
9
|
+
track: "track",
|
|
10
|
+
product: "product",
|
|
11
|
+
weapon: "weapon",
|
|
12
|
+
prop: "prop",
|
|
13
|
+
"set-dressing": "set-dressing",
|
|
14
|
+
backdrop: "set-dressing",
|
|
15
|
+
debug: "debug",
|
|
16
|
+
abstract: "abstract",
|
|
17
|
+
hdri: "environment",
|
|
18
|
+
texture: "set-dressing",
|
|
19
|
+
};
|
|
20
|
+
function toCanonical(entry, kitArtDirection) {
|
|
21
|
+
const sourcePage = entry.sourcePage ?? entry.source ?? `library:${entry.kit ?? "misc"}/${entry.id}`;
|
|
22
|
+
const license = normalizeLicense(entry.license ?? "UNVERIFIED", sourcePage);
|
|
23
|
+
const role = entry.role ? ROLE_MAP[entry.role] : undefined;
|
|
24
|
+
const clips = entry.animationClips?.map((c) => c.name) ?? entry.animations;
|
|
25
|
+
return {
|
|
26
|
+
id: `library:${entry.id}`,
|
|
27
|
+
source: "aura-library",
|
|
28
|
+
title: entry.title ?? entry.id,
|
|
29
|
+
url: entry.libraryPath,
|
|
30
|
+
downloadUrl: entry.libraryPath,
|
|
31
|
+
access: "direct-download",
|
|
32
|
+
format: (entry.format === "gltf" || entry.format === "glb" ? entry.format : entry.format),
|
|
33
|
+
license,
|
|
34
|
+
licenseName: entry.license,
|
|
35
|
+
licenseUrl: sourcePage,
|
|
36
|
+
fileSizeBytes: entry.sizeBytes,
|
|
37
|
+
bounds: entry.bounds ? { size: entry.bounds } : undefined,
|
|
38
|
+
dimensions: entry.bounds,
|
|
39
|
+
triangleCount: entry.triangleCount,
|
|
40
|
+
triangles: entry.triangleCount,
|
|
41
|
+
meshCount: entry.meshCount,
|
|
42
|
+
materialCount: entry.materialCount,
|
|
43
|
+
textureCount: entry.textureCount,
|
|
44
|
+
animationClips: clips,
|
|
45
|
+
animationClipCount: clips?.length,
|
|
46
|
+
skinCount: entry.skinned ? 1 : undefined,
|
|
47
|
+
hasAnimations: clips !== undefined && clips.length > 0,
|
|
48
|
+
tags: (entry.tags ?? []).map((t) => t.toLowerCase()),
|
|
49
|
+
sourcePage,
|
|
50
|
+
sourceFamily: entry.kit ? `library/${entry.kit}` : "aura-library",
|
|
51
|
+
retrievedAt: entry.retrievedAt,
|
|
52
|
+
author: entry.author,
|
|
53
|
+
attribution: entry.attribution ?? entry.author,
|
|
54
|
+
intendedRole: role,
|
|
55
|
+
library: { kitId: entry.kit ?? "misc", entryId: entry.id, path: entry.libraryPath },
|
|
56
|
+
lookDevApproved: entry.lookDevApproved === true,
|
|
57
|
+
artDirection: entry.artDirection ?? kitArtDirection,
|
|
58
|
+
...(entry.sunDirection ? { sunDirection: entry.sunDirection } : {}),
|
|
59
|
+
...(entry.luminanceP99 !== undefined ? { luminanceP99: entry.luminanceP99 } : {}),
|
|
60
|
+
...(entry.whiteBalanceK !== undefined ? { whiteBalanceK: entry.whiteBalanceK } : {}),
|
|
61
|
+
...(entry.downloadFileset ? { downloadFileset: entry.downloadFileset } : {}),
|
|
62
|
+
rawCatalogMetadata: { kit: entry.kit },
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function createAuraLibraryAdapter(options) {
|
|
66
|
+
const kitArtDirection = new Map((options.manifest.kits ?? []).map((kit) => [kit.id, kit.artDirection]));
|
|
67
|
+
return {
|
|
68
|
+
id: "aura-library",
|
|
69
|
+
label: "Aura3D §6.6 curated library",
|
|
70
|
+
async search(_query, _ctx) {
|
|
71
|
+
return options.manifest.entries.map((entry) => toCanonical(entry, kitArtDirection.get(entry.kit ?? "")));
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=aura-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aura-library.js","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/aura-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poly-haven.d.ts","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/poly-haven.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,aAAa,EACd,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"poly-haven.d.ts","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/poly-haven.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,aAAa,EACd,MAAM,qBAAqB,CAAC;AA4R7B,wBAAgB,sBAAsB,IAAI,aAAa,CAWtD"}
|
|
@@ -2,19 +2,31 @@ import { normalizeLicense } from "../CanonicalAsset.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Poly Haven adapter — https://polyhaven.com (free public API, NO key).
|
|
4
4
|
*
|
|
5
|
-
* Verified live (June 2026):
|
|
6
|
-
* GET https://api.polyhaven.com/assets?t=models
|
|
5
|
+
* Verified live (June 2026; HDRI/texture files verified Oct 2026):
|
|
6
|
+
* GET https://api.polyhaven.com/assets?t=models|hdris|textures
|
|
7
7
|
* -> Record<assetId, {
|
|
8
8
|
* name, type, categories: string[], tags: string[],
|
|
9
9
|
* authors: Record<author, role>, dimensions?: [x,y,z] (millimetres),
|
|
10
10
|
* polycount?: number, thumbnail_url?, date_published, description?
|
|
11
11
|
* }>
|
|
12
12
|
* GET https://api.polyhaven.com/files/{id}
|
|
13
|
-
* -> { gltf: { "1k"|"2k"|"4k": { gltf: { url, size, include: {...} } } }, blend, fbx, usd }
|
|
13
|
+
* -> models: { gltf: { "1k"|"2k"|"4k": { gltf: { url, size, include: {...} } } }, blend, fbx, usd }
|
|
14
|
+
* hdris: { hdri: { "1k"|"2k"|"4k"|"8k"|"16k": { hdr: {url,size,md5}, exr: {...} } }, tonemapped, colorchart }
|
|
15
|
+
* textures: { Diffuse|nor_gl|arm|AO|Displacement|Rough|...: { "1k"|...: { jpg|png|exr: {url,size,md5} } } }
|
|
14
16
|
*
|
|
15
17
|
* Every Poly Haven asset is CC0 (the entire library is CC0-1.0), so the license
|
|
16
18
|
* is genuinely verified + redistributable.
|
|
17
19
|
*
|
|
20
|
+
* PRD-05 §6.6: HDRIs and textures are DIRECT downloads —
|
|
21
|
+
* .hdr files are single-file (`dl.polyhaven.org/file/ph-assets/HDRIs/...`),
|
|
22
|
+
* texture records carry `downloadFileset` with the per-map JPG/PNG URLs the
|
|
23
|
+
* puller assembles into a material entry.
|
|
24
|
+
* The file endpoints are fetched lazily for the best query matches only
|
|
25
|
+
* (bounded at FILE_ENRICH_LIMIT) — the catalog listing does not carry URLs,
|
|
26
|
+
* and constructing them from a guessed pattern without verification would be
|
|
27
|
+
* a provenance lie. Unmatched records stay `deep-link-only` on the source
|
|
28
|
+
* page, honestly.
|
|
29
|
+
*
|
|
18
30
|
* IMPORTANT honesty note on `access`: Poly Haven models are multi-file glTF —
|
|
19
31
|
* the `.gltf` references an external `.bin` plus texture files (see the `include`
|
|
20
32
|
* map on the /files endpoint). Fetching only the `.gltf` URL therefore does NOT
|
|
@@ -24,8 +36,17 @@ import { normalizeLicense } from "../CanonicalAsset.js";
|
|
|
24
36
|
* resolve a packaged single-file pull), but they are not auto-pullable as-is.
|
|
25
37
|
*/
|
|
26
38
|
const API_BASE = "https://api.polyhaven.com";
|
|
27
|
-
const ASSETS_URL = `${API_BASE}/assets
|
|
39
|
+
const ASSETS_URL = `${API_BASE}/assets`;
|
|
40
|
+
const FILES_URL = `${API_BASE}/files`;
|
|
28
41
|
const PAGE_BASE = "https://polyhaven.com/a";
|
|
42
|
+
/** Max per-asset /files/<id> lookups per search call, spread over matches. */
|
|
43
|
+
const FILE_ENRICH_LIMIT = 16;
|
|
44
|
+
/** Preferred resolution picked for `downloadUrl`/first fileset entry. */
|
|
45
|
+
const PREFERRED_HDRI_RES = "2k";
|
|
46
|
+
const PREFERRED_TEXTURE_RES = "2k";
|
|
47
|
+
const PREFERRED_TEXTURE_FORMAT = "jpg";
|
|
48
|
+
/** Canonical PBR slots pulled into a texture-set fileset when present. */
|
|
49
|
+
const TEXTURE_MAP_KEYS = ["Diffuse", "nor_gl", "arm", "AO", "Rough", "Displacement", "rough_ao"];
|
|
29
50
|
/** Millimetres -> metres for the canonical bounds size. */
|
|
30
51
|
const MM_TO_M = 0.001;
|
|
31
52
|
function tokenize(text) {
|
|
@@ -55,7 +76,7 @@ function authorsToAttribution(authors) {
|
|
|
55
76
|
const names = Object.keys(authors).filter((n) => n.length > 0);
|
|
56
77
|
return names.length > 0 ? names.join(", ") : undefined;
|
|
57
78
|
}
|
|
58
|
-
function toCanonical(id, asset) {
|
|
79
|
+
function toCanonical(id, asset, kind) {
|
|
59
80
|
const sourcePage = `${PAGE_BASE}/${id}`;
|
|
60
81
|
const title = asset.name ?? id;
|
|
61
82
|
const author = authorsToAttribution(asset.authors);
|
|
@@ -64,56 +85,174 @@ function toCanonical(id, asset) {
|
|
|
64
85
|
...(asset.tags ?? []).map((t) => t.toLowerCase()),
|
|
65
86
|
...(asset.categories ?? []).map((c) => c.toLowerCase()),
|
|
66
87
|
...tokenize(title),
|
|
88
|
+
...(kind !== "models" ? [kind === "hdris" ? "hdri" : "texture", kind.slice(0, -1)] : []),
|
|
67
89
|
]));
|
|
68
|
-
|
|
90
|
+
const base = {
|
|
69
91
|
id: `poly-haven:${id}`,
|
|
70
92
|
source: "poly-haven",
|
|
71
93
|
title,
|
|
72
94
|
description: asset.description,
|
|
73
|
-
// Multi-file glTF: the canonical page is the honest deep-link target.
|
|
74
95
|
url: sourcePage,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// Entire Poly Haven library is CC0 — a verified, redistributable license.
|
|
96
|
+
sourcePage,
|
|
97
|
+
thumbnailUrl: asset.thumbnail_url,
|
|
78
98
|
license: normalizeLicense("CC0", sourcePage),
|
|
79
99
|
licenseName: "CC0",
|
|
80
100
|
licenseUrl: sourcePage,
|
|
81
|
-
thumbnailUrl: asset.thumbnail_url,
|
|
82
|
-
triangles: typeof asset.polycount === "number" ? asset.polycount : undefined,
|
|
83
|
-
triangleCount: typeof asset.polycount === "number" ? asset.polycount : undefined,
|
|
84
101
|
bounds,
|
|
85
102
|
dimensions: bounds?.size,
|
|
103
|
+
triangles: typeof asset.polycount === "number" ? asset.polycount : undefined,
|
|
104
|
+
triangleCount: typeof asset.polycount === "number" ? asset.polycount : undefined,
|
|
86
105
|
tags,
|
|
87
|
-
sourcePage,
|
|
88
106
|
sourceFamily: "poly-haven",
|
|
89
107
|
retrievedAt: typeof asset.date_published === "number" ? new Date(asset.date_published * 1000).toISOString() : undefined,
|
|
90
108
|
author,
|
|
91
109
|
attribution: author,
|
|
92
|
-
|
|
110
|
+
};
|
|
111
|
+
if (kind === "models") {
|
|
112
|
+
return {
|
|
113
|
+
...base,
|
|
114
|
+
// Multi-file glTF: the canonical page is the honest deep-link target.
|
|
115
|
+
access: "deep-link-only",
|
|
116
|
+
format: "gltf",
|
|
117
|
+
rawCatalogMetadata: { ...asset },
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
...base,
|
|
122
|
+
// HDRI/texture records start deep-link-only; query-matched records get a
|
|
123
|
+
// verified direct-download upgrade from /files/<id> in `enrichMatches`.
|
|
124
|
+
access: "deep-link-only",
|
|
125
|
+
format: kind === "hdris" ? "hdr" : "texture-set",
|
|
126
|
+
intendedRole: kind === "hdris" ? "environment" : undefined,
|
|
127
|
+
rawCatalogMetadata: { ...asset, polyhavenType: kind, filesEndpoint: `${FILES_URL}/${id}` },
|
|
93
128
|
};
|
|
94
129
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
130
|
+
/** Cheap local relevance so /files lookups go to plausible matches only. */
|
|
131
|
+
function queryRelevance(query, asset) {
|
|
132
|
+
const terms = tokenize(query);
|
|
133
|
+
if (terms.length === 0)
|
|
134
|
+
return 0;
|
|
135
|
+
const hay = `${asset.title} ${asset.description ?? ""} ${asset.tags.join(" ")}`.toLowerCase();
|
|
136
|
+
let score = 0;
|
|
137
|
+
for (const t of terms)
|
|
138
|
+
if (hay.includes(t))
|
|
139
|
+
score += 1;
|
|
140
|
+
return score;
|
|
141
|
+
}
|
|
142
|
+
function fileEntry(name, variant) {
|
|
143
|
+
if (!variant?.url)
|
|
144
|
+
return undefined;
|
|
145
|
+
return { name, url: variant.url, sizeBytes: variant.size, md5: variant.md5 };
|
|
146
|
+
}
|
|
147
|
+
/** /files/<id> → canonical upgrade for an HDRI record. */
|
|
148
|
+
function enrichHdri(asset, files) {
|
|
149
|
+
const hdri = files["hdri"];
|
|
150
|
+
if (!hdri)
|
|
151
|
+
return asset;
|
|
152
|
+
const fileset = [];
|
|
153
|
+
for (const res of ["1k", "2k", "4k", "8k"]) {
|
|
154
|
+
const entry = fileEntry(`${res}.hdr`, hdri[res]?.["hdr"]);
|
|
155
|
+
if (entry)
|
|
156
|
+
fileset.push(entry);
|
|
157
|
+
}
|
|
158
|
+
if (fileset.length === 0)
|
|
159
|
+
return asset;
|
|
160
|
+
const preferred = fileset.find((f) => f.name === `${PREFERRED_HDRI_RES}.hdr`) ?? fileset[0];
|
|
161
|
+
return {
|
|
162
|
+
...asset,
|
|
163
|
+
url: preferred.url,
|
|
164
|
+
downloadUrl: preferred.url,
|
|
165
|
+
access: "direct-download",
|
|
166
|
+
downloadFileset: fileset,
|
|
167
|
+
fileSizeBytes: preferred.sizeBytes,
|
|
168
|
+
rawCatalogMetadata: { ...(asset.rawCatalogMetadata ?? {}), filesVerified: true },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/** /files/<id> → canonical upgrade for a texture-set record (per-map pulls). */
|
|
172
|
+
function enrichTexture(asset, files) {
|
|
173
|
+
const fileset = [];
|
|
174
|
+
for (const mapKey of TEXTURE_MAP_KEYS) {
|
|
175
|
+
const map = files[mapKey];
|
|
176
|
+
if (!map)
|
|
177
|
+
continue;
|
|
178
|
+
const res = map[PREFERRED_TEXTURE_RES] ?? map["1k"];
|
|
179
|
+
const variant = res?.[PREFERRED_TEXTURE_FORMAT] ?? res?.["png"];
|
|
180
|
+
const entry = fileEntry(`${mapKey}.${PREFERRED_TEXTURE_FORMAT}`, variant);
|
|
181
|
+
if (entry)
|
|
182
|
+
fileset.push(entry);
|
|
99
183
|
}
|
|
184
|
+
if (fileset.length === 0)
|
|
185
|
+
return asset;
|
|
186
|
+
return {
|
|
187
|
+
...asset,
|
|
188
|
+
// No single-file URL exists; url stays the source page and the puller
|
|
189
|
+
// consumes downloadFileset (assembled locally into a material entry).
|
|
190
|
+
access: "direct-download",
|
|
191
|
+
downloadFileset: fileset,
|
|
192
|
+
textureCount: fileset.length,
|
|
193
|
+
rawCatalogMetadata: { ...(asset.rawCatalogMetadata ?? {}), filesVerified: true },
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
async function loadAll(ctx) {
|
|
197
|
+
const [models, hdris, textures] = await Promise.all([
|
|
198
|
+
ctx.fetchJson(`${ASSETS_URL}?t=models`),
|
|
199
|
+
ctx.fetchJson(`${ASSETS_URL}?t=hdris`),
|
|
200
|
+
ctx.fetchJson(`${ASSETS_URL}?t=textures`),
|
|
201
|
+
]);
|
|
100
202
|
const out = [];
|
|
101
|
-
|
|
102
|
-
if (
|
|
103
|
-
|
|
203
|
+
const push = (raw, kind) => {
|
|
204
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
205
|
+
throw new Error(`poly-haven /assets?t=${kind} did not return an object map`);
|
|
104
206
|
}
|
|
105
|
-
|
|
207
|
+
for (const [id, value] of Object.entries(raw)) {
|
|
208
|
+
if (id && value && typeof value === "object") {
|
|
209
|
+
out.push(toCanonical(id, value, kind));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
push(models, "models");
|
|
214
|
+
push(hdris, "hdris");
|
|
215
|
+
push(textures, "textures");
|
|
106
216
|
return out;
|
|
107
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Fetch /files/<id> for the best query matches among HDRI/texture records and
|
|
220
|
+
* upgrade them to verified direct-downloads. Bounded + parallel; failures leave
|
|
221
|
+
* the record deep-link-only (still CC0-correct, just not pullable).
|
|
222
|
+
*/
|
|
223
|
+
async function enrichMatches(query, assets, ctx) {
|
|
224
|
+
const enrichable = assets
|
|
225
|
+
.filter((a) => a.rawCatalogMetadata?.polyhavenType !== undefined)
|
|
226
|
+
.map((asset) => ({ asset, relevance: queryRelevance(query.text, asset) }))
|
|
227
|
+
.filter((m) => m.relevance > 0)
|
|
228
|
+
.sort((a, b) => b.relevance - a.relevance)
|
|
229
|
+
.slice(0, FILE_ENRICH_LIMIT);
|
|
230
|
+
if (enrichable.length === 0)
|
|
231
|
+
return assets;
|
|
232
|
+
const byId = new Map(enrichable.map(({ asset }) => [asset.id, asset]));
|
|
233
|
+
await Promise.all(enrichable.map(async ({ asset }) => {
|
|
234
|
+
const localId = asset.id.slice("poly-haven:".length);
|
|
235
|
+
try {
|
|
236
|
+
const files = (await ctx.fetchJson(`${FILES_URL}/${localId}`));
|
|
237
|
+
const kind = asset.rawCatalogMetadata.polyhavenType;
|
|
238
|
+
const upgraded = kind === "hdris" ? enrichHdri(asset, files) : enrichTexture(asset, files);
|
|
239
|
+
byId.set(asset.id, upgraded);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
// leave the deep-link-only record as-is
|
|
243
|
+
}
|
|
244
|
+
}));
|
|
245
|
+
return assets.map((asset) => byId.get(asset.id) ?? asset);
|
|
246
|
+
}
|
|
108
247
|
export function createPolyHavenAdapter() {
|
|
109
248
|
let cache = null;
|
|
110
249
|
return {
|
|
111
250
|
id: "poly-haven",
|
|
112
251
|
label: "Poly Haven (CC0)",
|
|
113
|
-
async search(
|
|
252
|
+
async search(query, ctx) {
|
|
114
253
|
if (!cache)
|
|
115
254
|
cache = await loadAll(ctx);
|
|
116
|
-
return cache;
|
|
255
|
+
return enrichMatches(query, cache, ctx);
|
|
117
256
|
},
|
|
118
257
|
};
|
|
119
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poly-haven.js","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/poly-haven.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOxD
|
|
1
|
+
{"version":3,"file":"poly-haven.js","sourceRoot":"","sources":["../../../../../packages/asset-index/src/adapters/poly-haven.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAC7C,MAAM,UAAU,GAAG,GAAG,QAAQ,SAAS,CAAC;AACxC,MAAM,SAAS,GAAG,GAAG,QAAQ,QAAQ,CAAC;AACtC,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAE5C,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,yEAAyE;AACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,0EAA0E;AAC1E,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,CAAU,CAAC;AAE1G,2DAA2D;AAC3D,MAAM,OAAO,GAAG,KAAK,CAAC;AA0BtB,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI;SACR,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,WAAW,EAAE;SACb,KAAK,CAAC,YAAY,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,UAAyC;IACzD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;IAC7B,IACE,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EACnB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA2C;IAE3C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,EAAU,EAAE,KAAqB,EAAE,IAAmB;IACzE,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,IAAI,GAAG,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,GAAG,QAAQ,CAAC,KAAK,CAAC;QAClB,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC,CACH,CAAC;IACF,MAAM,IAAI,GAAG;QACX,EAAE,EAAE,cAAc,EAAE,EAAE;QACtB,MAAM,EAAE,YAAY;QACpB,KAAK;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,EAAE,UAAU;QACf,UAAU;QACV,YAAY,EAAE,KAAK,CAAC,aAAa;QACjC,OAAO,EAAE,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC;QAC5C,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,UAAU;QACtB,MAAM;QACN,UAAU,EAAE,MAAM,EAAE,IAAI;QACxB,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC5E,aAAa,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAChF,IAAI;QACJ,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;QACvH,MAAM;QACN,WAAW,EAAE,MAAM;KACpB,CAAC;IACF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,IAAI;YACP,sEAAsE;YACtE,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,MAAM;YACd,kBAAkB,EAAE,EAAE,GAAG,KAAK,EAAE;SACjC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa;QAChD,YAAY,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC1D,kBAAkB,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,IAAI,EAAE,EAAE,EAAE;KAC3F,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,SAAS,cAAc,CAAC,KAAa,EAAE,KAAyB;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,OAAqC;IACpE,IAAI,CAAC,OAAO,EAAE,GAAG;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/E,CAAC;AAED,0DAA0D;AAC1D,SAAS,UAAU,CAAC,KAAyB,EAAE,KAAoB;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAA6E,CAAC;IACvG,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,kBAAkB,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC;IAC7F,OAAO;QACL,GAAG,KAAK;QACR,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,WAAW,EAAE,SAAS,CAAC,GAAG;QAC1B,MAAM,EAAE,iBAAiB;QACzB,eAAe,EAAE,OAAO;QACxB,aAAa,EAAE,SAAS,CAAC,SAAS;QAClC,kBAAkB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE;KACjF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS,aAAa,CAAC,KAAyB,EAAE,KAAoB;IACpE,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAA6E,CAAC;QACtG,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,GAAG,GAAG,GAAG,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,MAAM,IAAI,wBAAwB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO;QACL,GAAG,KAAK;QACR,sEAAsE;QACtE,sEAAsE;QACtE,MAAM,EAAE,iBAAiB;QACzB,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,kBAAkB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE;KACjF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,GAAmB;IACxC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU,WAAW,CAAC;QACvC,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU,UAAU,CAAC;QACtC,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU,aAAa,CAAC;KAC1C,CAAC,CAAC;IACH,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,IAAmB,EAAE,EAAE;QACjD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,+BAA+B,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;YACzE,IAAI,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,KAAuB,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,KAAmB,EACnB,MAA4B,EAC5B,GAAmB;IAEnB,MAAM,UAAU,GAAG,MAAM;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,kBAA6D,EAAE,aAAa,KAAK,SAAS,CAAC;SAC5G,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACzE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;SACzC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE3C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAkB,CAAC;YAChF,MAAM,IAAI,GAAI,KAAK,CAAC,kBAAiD,CAAC,aAAa,CAAC;YACpF,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,IAAI,KAAK,GAAgC,IAAI,CAAC;IAE9C,OAAO;QACL,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,kBAAkB;QACzB,KAAK,CAAC,MAAM,CAAC,KAAmB,EAAE,GAAmB;YACnD,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -27,6 +27,9 @@ export { FederatedResolver } from "./federate.js";
|
|
|
27
27
|
export { createKhronosAdapter } from "./adapters/khronos.js";
|
|
28
28
|
export { createOS3AAdapter } from "./adapters/os3a.js";
|
|
29
29
|
export { createPolyHavenAdapter } from "./adapters/poly-haven.js";
|
|
30
|
+
export { createAmbientCgAdapter } from "./adapters/ambientcg.js";
|
|
31
|
+
export { createAuraLibraryAdapter } from "./adapters/aura-library.js";
|
|
32
|
+
export type { AuraLibraryAdapterOptions, AuraLibraryEntryShape, AuraLibraryManifestShape } from "./adapters/aura-library.js";
|
|
30
33
|
export { createPolyPizzaAdapter } from "./adapters/poly-pizza.js";
|
|
31
34
|
export type { PolyPizzaAdapterOptions } from "./adapters/poly-pizza.js";
|
|
32
35
|
export { createSketchfabAdapter } from "./adapters/sketchfab.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/asset-index/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,YAAY,EACV,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACzH,YAAY,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAChJ,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEtF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/asset-index/src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,8 @@ export { FederatedResolver } from "./federate.js";
|
|
|
21
21
|
export { createKhronosAdapter } from "./adapters/khronos.js";
|
|
22
22
|
export { createOS3AAdapter } from "./adapters/os3a.js";
|
|
23
23
|
export { createPolyHavenAdapter } from "./adapters/poly-haven.js";
|
|
24
|
+
export { createAmbientCgAdapter } from "./adapters/ambientcg.js";
|
|
25
|
+
export { createAuraLibraryAdapter } from "./adapters/aura-library.js";
|
|
24
26
|
export { createPolyPizzaAdapter } from "./adapters/poly-pizza.js";
|
|
25
27
|
export { createSketchfabAdapter } from "./adapters/sketchfab.js";
|
|
26
28
|
export { createMarketplaceDeepLinkAdapter } from "./adapters/marketplace.js";
|
|
@@ -32,6 +34,7 @@ export { LocalHashEmbedding, cosineSimilarity, assetEmbeddingText, embeddingRank
|
|
|
32
34
|
import { createKhronosAdapter } from "./adapters/khronos.js";
|
|
33
35
|
import { createOS3AAdapter } from "./adapters/os3a.js";
|
|
34
36
|
import { createPolyHavenAdapter } from "./adapters/poly-haven.js";
|
|
37
|
+
import { createAmbientCgAdapter } from "./adapters/ambientcg.js";
|
|
35
38
|
import { createJsDelivrMirrorAdapter } from "./adapters/jsdelivr-mirror.js";
|
|
36
39
|
import { createAnimationStarterPackAdapter } from "./animation-starter-pack.js";
|
|
37
40
|
/**
|
|
@@ -52,6 +55,7 @@ export function defaultAdapters() {
|
|
|
52
55
|
createKhronosAdapter(),
|
|
53
56
|
createOS3AAdapter(),
|
|
54
57
|
createPolyHavenAdapter(),
|
|
58
|
+
createAmbientCgAdapter(),
|
|
55
59
|
createJsDelivrMirrorAdapter(),
|
|
56
60
|
];
|
|
57
61
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/asset-index/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEzH,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,iCAAiC,EAAE;QACnC,oBAAoB,EAAE;QACtB,iBAAiB,EAAE;QACnB,sBAAsB,EAAE;QACxB,2BAA2B,EAAE;KAC9B,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/asset-index/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAWH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEzH,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,iCAAiC,EAAE;QACnC,oBAAoB,EAAE;QACtB,iBAAiB,EAAE;QACnB,sBAAsB,EAAE;QACxB,sBAAsB,EAAE;QACxB,2BAA2B,EAAE;KAC9B,CAAC;AACJ,CAAC"}
|