@needle-tools/engine 4.5.8 → 4.6.0-next.74b55ae

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 (55) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{gltf-progressive-Bx_ZJgfQ.min.js → gltf-progressive-Bm9eEfgu.min.js} +1 -1
  3. package/dist/{gltf-progressive-Ccf3INjK.umd.cjs → gltf-progressive-Dn6o99rH.umd.cjs} +1 -1
  4. package/dist/{gltf-progressive-D8GP6sjZ.js → gltf-progressive-GjIqwSG3.js} +2 -2
  5. package/dist/{needle-engine.bundle-2--i65ba.umd.cjs → needle-engine.bundle-B28dL528.umd.cjs} +125 -125
  6. package/dist/{needle-engine.bundle-DsPSVnUc.min.js → needle-engine.bundle-DDJrVI3Z.min.js} +122 -122
  7. package/dist/{needle-engine.bundle-A-KGqR38.js → needle-engine.bundle-ZjqmTqX5.js} +3948 -3931
  8. package/dist/needle-engine.js +4 -4
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/dist/{postprocessing-CLwnKusi.umd.cjs → postprocessing-CRQa6Qxn.umd.cjs} +177 -97
  12. package/dist/{postprocessing-DS5I4Iim.js → postprocessing-D6W1EyZ-.js} +1095 -1001
  13. package/dist/{postprocessing-CdIScgB8.min.js → postprocessing-DF8AlRgW.min.js} +178 -98
  14. package/dist/{three-CFtLGNtV.min.js → three-Boa-jOq-.min.js} +18 -18
  15. package/dist/{three-1JG7vpNC.js → three-Bz6X1mrw.js} +0 -1
  16. package/dist/{three-f-JuZtOs.umd.cjs → three-DMrv-4ar.umd.cjs} +20 -20
  17. package/dist/{three-examples-BeoqFh8m.umd.cjs → three-examples-C7ryg8vN.umd.cjs} +1 -1
  18. package/dist/{three-examples-CPlN41GO.min.js → three-examples-DuVhxqft.min.js} +1 -1
  19. package/dist/{three-examples-CyWe9wwo.js → three-examples-GggCDHv0.js} +1 -1
  20. package/dist/{three-mesh-ui-B18kdQmk.js → three-mesh-ui-CLNOfsWn.js} +1 -1
  21. package/dist/{three-mesh-ui-BMeLuYD5.min.js → three-mesh-ui-CY6Izc7C.min.js} +1 -1
  22. package/dist/{three-mesh-ui-DMdtSVhY.umd.cjs → three-mesh-ui-CwlN0FUC.umd.cjs} +1 -1
  23. package/dist/{vendor-BbM-oI6p.js → vendor-BSD1RQIh.js} +1 -1
  24. package/dist/{vendor-CJFfVMoq.umd.cjs → vendor-DHr4aqIZ.umd.cjs} +1 -1
  25. package/dist/{vendor-CTtGKiDe.min.js → vendor-zxXa3Dmr.min.js} +1 -1
  26. package/lib/engine/engine_assetdatabase.js +3 -1
  27. package/lib/engine/engine_assetdatabase.js.map +1 -1
  28. package/lib/engine/engine_context.d.ts +2 -2
  29. package/lib/engine/engine_context.js +11 -10
  30. package/lib/engine/engine_context.js.map +1 -1
  31. package/lib/engine/engine_utils.js +1 -1
  32. package/lib/engine/engine_utils.js.map +1 -1
  33. package/lib/engine-components/AudioSource.d.ts +1 -1
  34. package/lib/engine-components/AudioSource.js +5 -4
  35. package/lib/engine-components/AudioSource.js.map +1 -1
  36. package/lib/engine-components/ReflectionProbe.d.ts +2 -1
  37. package/lib/engine-components/ReflectionProbe.js +4 -1
  38. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  39. package/lib/engine-components/Renderer.js +9 -5
  40. package/lib/engine-components/Renderer.js.map +1 -1
  41. package/lib/engine-components/Skybox.d.ts +7 -1
  42. package/lib/engine-components/Skybox.js +30 -9
  43. package/lib/engine-components/Skybox.js.map +1 -1
  44. package/package.json +2 -2
  45. package/plugins/types/userconfig.d.ts +1 -1
  46. package/plugins/vite/asap.js +26 -20
  47. package/plugins/vite/dependency-watcher.js +8 -2
  48. package/plugins/vite/local-files.js +268 -59
  49. package/src/engine/engine_assetdatabase.ts +3 -1
  50. package/src/engine/engine_context.ts +14 -11
  51. package/src/engine/engine_utils.ts +1 -1
  52. package/src/engine-components/AudioSource.ts +5 -5
  53. package/src/engine-components/ReflectionProbe.ts +5 -1
  54. package/src/engine-components/Renderer.ts +10 -7
  55. package/src/engine-components/Skybox.ts +30 -10
@@ -1 +1 @@
1
- {"version":3,"file":"Skybox.js","sourceRoot":"","sources":["../../src/engine-components/Skybox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Skybox.js","sourceRoot":"","sources":["../../src/engine-components/Skybox.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "4.5.8",
3
+ "version": "4.6.0-next.74b55ae",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
5
5
  "main": "dist/needle-engine.min.js",
6
6
  "exports": {
@@ -167,4 +167,4 @@
167
167
  "module": "lib/needle-engine.js",
168
168
  "typings": "lib/needle-engine.d.ts",
169
169
  "types": "lib/needle-engine.d.ts"
170
- }
170
+ }
@@ -108,7 +108,7 @@ export type userSettings = {
108
108
  /**
109
109
  * Experimental: When enabled then fonts from google fonts will be downloaded and copied to the output directory
110
110
  */
111
- makeFilesLocal?: {
111
+ makeFilesLocal?: boolean | {
112
112
  enabled: boolean;
113
113
  }
114
114
 
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs';
2
2
  import path from 'path';
3
3
  import { preloadScriptPaths } from './dependencies.js';
4
+ import { makeFilesLocalIsEnabled } from './local-files.js';
4
5
 
5
6
  const code = `import('@needle-tools/engine/src/asap/needle-asap.ts');`
6
7
 
@@ -31,7 +32,7 @@ export const needleAsap = async (command, config, userSettings) => {
31
32
  console.warn("Could not load needle logo svg", err.message);
32
33
  }
33
34
 
34
- /** @type {import("vite").ResolvedConfig} */
35
+ /** @type {import("vite").ResolvedConfig | null} */
35
36
  let viteConfig = null;
36
37
 
37
38
  return [{
@@ -52,21 +53,23 @@ export const needleAsap = async (command, config, userSettings) => {
52
53
  console.error("Error generating gltf preload links", err);
53
54
  }
54
55
 
55
- // preconnect to gstatic.com and fonts.googleapis.com to safe 100ms according to lighthouse
56
- tags.push({
57
- tag: 'link',
58
- attrs: {
59
- rel: "preconnect",
60
- href: "https://fonts.gstatic.com",
61
- }
62
- });
63
- tags.push({
64
- tag: 'link',
65
- attrs: {
66
- rel: "preconnect",
67
- href: "https://fonts.googleapis.com",
68
- }
69
- });
56
+ if (!makeFilesLocalIsEnabled(userSettings)) {
57
+ // preconnect to gstatic.com and fonts.googleapis.com to safe 100ms according to lighthouse
58
+ tags.push({
59
+ tag: 'link',
60
+ attrs: {
61
+ rel: "preconnect",
62
+ href: "https://fonts.gstatic.com",
63
+ }
64
+ });
65
+ tags.push({
66
+ tag: 'link',
67
+ attrs: {
68
+ rel: "preconnect",
69
+ href: "https://fonts.googleapis.com",
70
+ }
71
+ });
72
+ }
70
73
 
71
74
  // we insert the logo late because the logo svg string is quite long
72
75
  if (logoSvg?.length) {
@@ -94,11 +97,14 @@ export const needleAsap = async (command, config, userSettings) => {
94
97
  transformIndexHtml: {
95
98
  order: 'post',
96
99
  handler(html, _ctx) {
97
-
98
100
  /** @type {import('vite').HtmlTagDescriptor[]} */
99
101
  const tags = [];
100
- // we need to wait for the files to exist
101
- generateScriptPreloadLinks(viteConfig, tags);
102
+
103
+ if (viteConfig) {
104
+ // we need to wait for the files to exist
105
+ generateScriptPreloadLinks(viteConfig, tags);
106
+ }
107
+
102
108
  return {
103
109
  html,
104
110
  tags
@@ -170,7 +176,7 @@ function generateGltfPreloadLinks(config, html, tags) {
170
176
  while (true) {
171
177
  const match = needleEngineMatches.next();
172
178
  if (match.done) break;
173
- /** @type {null | string} */
179
+ /** @type {undefined | null | string} */
174
180
  const value = match.value?.groups?.src;
175
181
  if (value) {
176
182
  if (value.startsWith("[")) {
@@ -162,8 +162,14 @@ function testIfInstallIsRequired(projectDir, packageJson) {
162
162
  }
163
163
  if (expectedVersion?.length > 0) {
164
164
  const isRange = expectedVersion.includes("x") || expectedVersion.includes("^") || expectedVersion.includes(">") || expectedVersion.includes("<") || expectedVersion.includes("~");
165
- const isLatest = expectedVersion === "latest";
166
- if (!isRange && !isLatest) {
165
+ const isTagName = expectedVersion === "stable" ||
166
+ expectedVersion === "latest" ||
167
+ expectedVersion === "next" ||
168
+ expectedVersion === "beta" ||
169
+ expectedVersion === "alpha" ||
170
+ expectedVersion === "canary" ||
171
+ expectedVersion === "experimental";
172
+ if (!isRange && !isTagName) {
167
173
  const packageJsonPath = path.join(depPath, "package.json");
168
174
  /** @type {String} */
169
175
  const installedVersion = JSON.parse(readFileSync(packageJsonPath, "utf8")).version;
@@ -1,116 +1,290 @@
1
1
  import https from 'https';
2
2
  import { createHash } from 'crypto';
3
- import { runInNewContext } from 'vm';
3
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
4
+ import { resolve } from 'path';
5
+ import { start } from 'repl';
4
6
 
5
7
  /**
6
- * @typedef {{pluginContext:import('rollup').TransformPluginContext, cache:Cache}} Context
8
+ * @typedef {{pluginContext:import('rollup').TransformPluginContext, cache:Cache, command:string, viteConfig:import("vite").ResolvedConfig | null}} Context
7
9
  */
8
10
 
11
+ const debug = false;
12
+
13
+ /**
14
+ * Checks if the local files plugin is enabled in user settings.
15
+ * @param {import('../types/userconfig.js').userSettings} userSettings - The user settings object
16
+ */
17
+ export const makeFilesLocalIsEnabled = (userSettings) => {
18
+ if (typeof userSettings?.makeFilesLocal === "object") return userSettings?.makeFilesLocal?.enabled === true;
19
+ return userSettings?.makeFilesLocal === true;
20
+ }
21
+
9
22
  /**
10
23
  * Download files and rewrite code
11
24
  * @param {string} command - The command that is being run
12
25
  * @param {object} config - The config object
13
26
  * @param {import('../types/userconfig.js').userSettings} userSettings
14
- * @returns {import('vite').Plugin}
27
+ * @returns {import('vite').Plugin | null}
15
28
  */
16
29
  export const needleMakeFilesLocal = (command, config, userSettings) => {
17
30
 
18
- if (!userSettings?.makeFilesLocal?.enabled) {
19
- return;
31
+ if (!makeFilesLocalIsEnabled(userSettings)) {
32
+ return null;
20
33
  }
21
34
 
22
35
  console.log(`[needle:local-files] Local files plugin is enabled`);
23
36
 
24
37
  const cache = new Cache();
25
38
 
26
- return {
39
+ /** @type {import("vite").ResolvedConfig | null} */
40
+ let viteConfig = null;
41
+
42
+ /** @type {import("vite").Plugin} */
43
+ const plugin = {
27
44
  name: "needle:local-files",
28
- enforce: 'pre',
45
+ // enforce: 'pre', // explictly DON'T define enforce:pre because of svelte postcss compat
29
46
  apply: "build",
47
+ configResolved(config) {
48
+ viteConfig = config;
49
+ },
30
50
  // transform bundle
31
- async transform(src, id) {
51
+ async transform(src, _id) {
32
52
  src = await makeLocal(src, "ext/", "", {
33
53
  pluginContext: this,
34
54
  cache: cache,
55
+ command: command,
56
+ viteConfig: viteConfig,
35
57
  });
36
58
  return {
37
59
  code: src,
38
60
  map: null,
39
61
  };
62
+ },
63
+ buildEnd() {
64
+ const map = cache.map;
65
+ console.log(""); // Make a new line for better readability
66
+ console.log(`[needle:local-files] Made ${map.size} files local:`);
67
+ for (const [key, value] of map.entries()) {
68
+ console.log(`- ${key} → ${value}`);
69
+ }
40
70
  }
41
71
  }
42
-
72
+ return plugin;
43
73
  }
44
74
 
45
-
46
75
  /**
47
76
  * Rewrites the source code to make local files
48
77
  * @param {string} src - The source code to rewrite
49
78
  * @param {string} basePath - The base path where the files will be saved
50
79
  * @param {string} currentDir - The current directory of the file being processed
51
- * @param {Context} context - The Vite plugin context
80
+ * @param {Context} context - The Vite plugin context and command
52
81
  */
53
82
  async function makeLocal(src, basePath, currentDir, context) {
54
83
 
55
- // find all google font urls fonts.googleapis.com
56
- const googleFontRegex = /["'](https:\/\/fonts\.googleapis\.com\/.+?)["']/g;
57
- let match;
84
+ const command = context.command;
85
+
86
+ if (debug) {
87
+ // Find all urls in the source code.
88
+ // Exclude URLs inside comments, like:
89
+ // - // https://example.com
90
+ // - /* ... https://example.com ... */
91
+ // - @link https://example.com
92
+ // - * ... https://example.com
93
+ const urlRegexExcludingComments = /(?<!\/\/.*)(?<!\/\*.*)(?<!@link\s+)(["'])(https?:\/\/[^\s'"]+?)\1/g;
94
+ let match0;
95
+ while ((match0 = urlRegexExcludingComments.exec(src)) !== null) {
96
+ const url = match0[2];
97
+ if (debug) console.log(`\nFound URL: ${url} in ${currentDir}`);
98
+ }
99
+ }
58
100
 
59
- while ((match = googleFontRegex.exec(src)) !== null) {
60
- const fontUrl = match[1];
61
- console.log(`\nFound google font URL: ${fontUrl}`);
101
+ // Google Fonts URLs
102
+ while (true) {
103
+ const match = /["'](https:\/\/fonts\.googleapis\.com\/.+?)["']/g.exec(src);
104
+ if (match === null) {
105
+ break;
106
+ }
107
+ const url = match[1];
108
+ if (debug) console.log(`\nFound google font URL: ${url}`);
62
109
  // Check if the font URL is already in the cache
63
- const cachedPath = context.cache.getFromCache(fontUrl);
110
+ const cachedPath = context.cache.getFromCache(url);
64
111
  if (cachedPath) {
65
- console.log(`Using cached font URL: ${cachedPath}`);
66
- src = src.replace(fontUrl, cachedPath);
112
+ if (debug) console.log(`Using cached font URL: ${cachedPath}`);
113
+ src = src.replace(url, cachedPath);
67
114
  continue; // Skip downloading if already cached
68
115
  }
69
- let font = await downloadText(fontUrl);
70
- const familyNameMatch = /family=([^&]+)/.exec(fontUrl);
71
- const familyName = getValidFilename(familyNameMatch[1], font);
116
+ let font = await downloadText(url);
117
+ const familyNameMatch = /family=([^&]+)/.exec(url);
118
+ const familyName = familyNameMatch ? getValidFilename(familyNameMatch[1], font) : (new URL(url).pathname.split('/').pop());
72
119
  font = await makeLocal(font, basePath, basePath, context);
73
120
  const fontFileName = `font-${familyName}.css`;
74
121
  const outputPath = basePath + fontFileName;
75
- const referenceId = context.pluginContext.emitFile({
76
- type: 'asset',
77
- fileName: outputPath,
78
- source: font,
79
- });
80
- const localPath = `${context.pluginContext.getFileName(referenceId)}`;
81
- const newPath = getRelativeToBasePath(localPath, currentDir);
82
- context.cache.addToCache(fontUrl, newPath);
83
- src = src.replace(fontUrl, newPath);
122
+ let newPath;
123
+ if (command === 'build') {
124
+ const referenceId = context.pluginContext.emitFile({
125
+ type: 'asset',
126
+ fileName: outputPath,
127
+ source: font,
128
+ });
129
+ const localPath = `${context.pluginContext.getFileName(referenceId)}`;
130
+ newPath = getRelativeToBasePath(localPath, currentDir);
131
+ // ensureFileExists(localPath, font);
132
+ }
133
+ else {
134
+ // Create base64 URL for dev mode
135
+ const base64Font = Buffer.from(font).toString('base64');
136
+ newPath = `data:text/css;base64,${base64Font}`;
137
+ }
138
+ if (newPath) {
139
+ context.cache.addToCache(url, newPath);
140
+ src = src.replace(url, newPath);
141
+ }
84
142
  }
85
143
 
86
-
87
- const gstatic = /["'(](https:\/\/fonts\.gstatic\.com\/)(.+?)["')]/g;
88
- while ((match = gstatic.exec(src)) !== null) {
144
+ // Google Fonts gstatic URLs
145
+ while (true) {
146
+ const match = /["'(](https:\/\/fonts\.gstatic\.com\/)(.+?)["')]/g.exec(src);
147
+ if (match === null) {
148
+ break;
149
+ }
89
150
  const fontPath = match[2];
90
- const fontUrl = match[1] + fontPath;
91
- console.log(`\nFound gstatic URL: ${fontUrl}`);
151
+ const url = match[1] + fontPath;
152
+ if (debug) console.log(`\nFound gstatic URL: ${url}`);
92
153
  // Check if the font URL is already in the cache
93
- const cachedPath = context.cache.getFromCache(fontUrl);
154
+ const cachedPath = context.cache.getFromCache(url);
94
155
  if (cachedPath) {
95
- console.log(`Using cached gstatic font URL: ${cachedPath}`);
96
- src = src.replace(fontUrl, cachedPath);
156
+ if (debug) console.log(`Using cached gstatic font URL: ${cachedPath}`);
157
+ src = src.replace(url, cachedPath);
97
158
  continue; // Skip downloading if already cached
98
159
  }
99
- let font = await downloadBinary(fontUrl);
160
+ const font = await downloadBinary(url);
100
161
  const filename = getValidFilename(fontPath, font);
101
- console.log(`Saving font to: ${basePath + filename}`);
102
- const referenceId = context.pluginContext.emitFile({
103
- type: 'asset',
104
- fileName: basePath + filename,
105
- source: font,
106
- });
107
- const localPath = `${context.pluginContext.getFileName(referenceId)}`;
108
- const newPath = getRelativeToBasePath(localPath, currentDir);
109
- context.cache.addToCache(fontUrl, newPath);
110
- src = src.replace(fontUrl, newPath);
162
+ if (debug) console.log(`Saving font to: ${basePath + filename}`);
163
+ let newPath;
164
+ if (command === 'build') {
165
+ const referenceId = context.pluginContext.emitFile({
166
+ type: 'asset',
167
+ fileName: basePath + filename,
168
+ source: font,
169
+ });
170
+ const localPath = `${context.pluginContext.getFileName(referenceId)}`;
171
+ newPath = getRelativeToBasePath(localPath, currentDir);
172
+ // ensureFileExists(localPath, font);
173
+ } else {
174
+ // Create base64 URL for dev mode
175
+ const base64Font = Buffer.from(font).toString('base64');
176
+ newPath = `data:text/css;base64,${base64Font}`;
177
+ }
178
+ context.cache.addToCache(url, newPath);
179
+ src = src.replace(url, newPath);
180
+ }
181
+
182
+ // Load QRCode.js
183
+ while (true) {
184
+ // https://cdn.jsdelivr.net/gh/davidshimjs/qrcodejs@gh-pages/qrcode.min.js
185
+ const match = /["'](https:\/\/cdn\.jsdelivr\.net\/gh\/davidshimjs\/qrcodejs@[^'"]+?\/qrcode\.min\.js)["']/g.exec(src);
186
+ if (match === null) {
187
+ break;
188
+ }
189
+ const url = match[1];
190
+ if (debug) console.log(`\nFound QR code URL: ${url}`);
191
+ // Check if the QR code URL is already in the cache
192
+ const cachedPath = context.cache.getFromCache(url);
193
+ if (cachedPath) {
194
+ if (debug) console.log(`Using cached QR code URL: ${cachedPath}`);
195
+ src = src.replace(url, cachedPath);
196
+ continue; // Skip downloading if already cached
197
+ }
198
+ const qrCode = await downloadBinary(url);
199
+ const filename = getValidFilename(url, qrCode);
200
+ if (debug) console.log(`Saving QR code to: ${basePath + filename}`);
201
+ let newPath;
202
+ if (command === 'build') {
203
+ const referenceId = context.pluginContext.emitFile({
204
+ type: 'asset',
205
+ fileName: basePath + filename,
206
+ source: qrCode,
207
+ });
208
+ const localPath = `${context.pluginContext.getFileName(referenceId)}`;
209
+ newPath = getRelativeToBasePath(localPath, currentDir);
210
+ // ensureFileExists(localPath, qrCode);
211
+ } else {
212
+ // create base64 URL for dev mode
213
+ const base64QrCode = Buffer.from(qrCode).toString('base64');
214
+ newPath = `data:application/javascript;base64,${base64QrCode}`;
215
+ }
216
+ context.cache.addToCache(url, newPath);
217
+ src = src.replace(url, newPath);
218
+ }
219
+
220
+ // Polyhaven.org URLs
221
+ let startIndex = 0;
222
+ while (true) {
223
+ const match = /["'](https:\/\/dl\.polyhaven\.org\/file\/.+?)["']/g.exec(src.slice(startIndex));
224
+ if (match === null) {
225
+ break;
226
+ }
227
+ startIndex += match.index + match[0].length; // Update startIndex to continue searching
228
+ const url = match[1];
229
+ if (url.endsWith("/")) {
230
+ if (debug) console.warn(`Skipping Polyhaven URL that ends with a slash: ${url}`);
231
+ continue; // Skip URLs that end with a slash
232
+ }
233
+ if (url.includes("\"") || url.includes("'")) {
234
+ if (debug) console.warn(`Skipping Polyhaven URL with quotes: ${url}`);
235
+ continue; // Skip URLs with quotes
236
+ }
237
+ if (debug) console.log(`\nFound Polyhaven URL: ${url}`);
238
+ // Check if the Polyhaven URL is already in the cache
239
+ const cachedPath = context.cache.getFromCache(url);
240
+ if (cachedPath) {
241
+ if (debug) console.log(`Using cached Polyhaven URL: ${cachedPath}`);
242
+ src = src.replace(url, cachedPath);
243
+ continue; // Skip downloading if already cached
244
+ }
245
+ const polyhavenFile = await downloadBinary(url);
246
+ const filename = getValidFilename(url, polyhavenFile);
247
+ if (debug) console.log(`Saving Polyhaven file to: ${basePath + filename}`);
248
+ let newPath;
249
+ if (command === 'build') {
250
+ const referenceId = context.pluginContext.emitFile({
251
+ type: 'asset',
252
+ fileName: basePath + filename,
253
+ source: polyhavenFile,
254
+ });
255
+ const localPath = `${context.pluginContext.getFileName(referenceId)}`;
256
+ newPath = getRelativeToBasePath(localPath, currentDir);
257
+ // ensureFileExists(localPath, polyhavenFile);
258
+ } else {
259
+ // Create base64 URL for dev mode
260
+ const base64PolyhavenFile = Buffer.from(polyhavenFile).toString('base64');
261
+ newPath = `data:application/octet-stream;base64,${base64PolyhavenFile}`;
262
+ }
263
+ if (newPath) {
264
+ context.cache.addToCache(url, newPath);
265
+ src = src.replace(url, newPath);
266
+ }
111
267
  }
112
268
 
113
269
  return src;
270
+
271
+ // /**
272
+ // * Ensures that a file exists at the specified relative path with the given content.
273
+ // * If the file does not exist, it will be created with the provided content.
274
+ // * @param {string} relPath - The relative path to the file
275
+ // * @param {string|Uint8Array} content - The content to write to the file
276
+ // * @returns {void}
277
+ // */
278
+ // function ensureFileExists(relPath, content) {
279
+ // const outputPath = context.viteConfig?.build?.outDir || "dist";
280
+ // const fullPath = resolve(outputPath, relPath);
281
+ // if (!existsSync(fullPath)) {
282
+ // if (debug) console.log(`Creating file: ${fullPath}`);
283
+ // const dir = resolve(fullPath, '..');
284
+ // mkdirSync(dir, { recursive: true });
285
+ // writeFileSync(fullPath, content);
286
+ // }
287
+ // }
114
288
  }
115
289
 
116
290
 
@@ -124,7 +298,7 @@ class Cache {
124
298
  */
125
299
  addToCache(key, value) {
126
300
  if (this.__cache.has(key)) {
127
- console.warn(`Key ${key} already exists in cache, overwriting.`);
301
+ if (debug) console.warn(`Key ${key} already exists in cache, overwriting.`);
128
302
  }
129
303
  this.__cache.set(key, value);
130
304
  }
@@ -139,9 +313,18 @@ class Cache {
139
313
  return null;
140
314
  }
141
315
  }
316
+ get map() {
317
+ return this.__cache;
318
+ }
142
319
  }
143
320
 
144
321
 
322
+ /**
323
+ * Returns a relative path based on the base path.
324
+ * @param {string} path - The path to check
325
+ * @param {string | undefined | null} basePath - The base path to compare against
326
+ * @return {string} - The relative path if it starts with the base path, otherwise the original path
327
+ */
145
328
  function getRelativeToBasePath(path, basePath) {
146
329
  if (basePath?.length && path.startsWith(basePath)) {
147
330
  return "./" + path.substring(basePath.length);
@@ -156,6 +339,15 @@ function getRelativeToBasePath(path, basePath) {
156
339
  * @param {string|Uint8Array} content - The content to hash for uniqueness (not used in this example)
157
340
  */
158
341
  function getValidFilename(path, content) {
342
+ if (path.startsWith("http:") || path.startsWith("https:")) {
343
+ const url = new URL(path);
344
+ const pathParts = url.pathname.split('/');
345
+ const filename = pathParts.pop() || 'file';
346
+ const nameParts = filename.split('.');
347
+ const nameWithoutExt = nameParts.slice(0, -1).join('.');
348
+ path = `${nameWithoutExt}-${createContentMd5(url.host + pathParts.join('/'))}.${nameParts.pop() || 'unknown'}`;
349
+ }
350
+
159
351
  // Remove any characters that are not valid in filenames
160
352
  let name = path.replace(/[^a-z0-9_\-\.\+]/gi, '-');
161
353
 
@@ -190,20 +382,25 @@ function createContentMd5(str) {
190
382
  * @param {string} url - The URL of the font to download
191
383
  */
192
384
  function downloadText(url) {
193
- return new Promise((res => {
385
+ return new Promise(((res, rej) => {
194
386
  https.get(url, (response) => {
195
387
  if (response.statusCode !== 200) {
196
- console.error(`Failed to download font from ${url}: ${response.statusCode}`);
197
- res(null);
388
+ console.log();
389
+ console.error(`Failed to download (${response.statusCode}): ${url}`);
390
+ rej(new Error(`Failed to download (${response.statusCode}): ${url}`));
198
391
  return;
199
392
  }
393
+
394
+ console.log(""); // Make a new line for better readability
395
+ console.log(`[needle:local-files] Make local: ${url}`);
396
+
200
397
  let data = '';
201
398
  response.on('data', (chunk) => {
202
399
  data += chunk;
203
400
  });
204
401
  response.on('end', () => {
205
402
  // Here you can save the data to a file or process it as needed
206
- console.log(`Downloaded from ${url}`);
403
+ if (debug) console.log(`Downloaded from ${url}`);
207
404
  res(data);
208
405
  });
209
406
  });
@@ -213,18 +410,30 @@ function downloadText(url) {
213
410
  function downloadBinary(url) {
214
411
  return new Promise((res, rej) => {
215
412
  https.get(url, (response) => {
413
+
414
+ // Handle redirects
415
+ if (response.statusCode && response.statusCode >= 300 && response.statusCode < 400 && response.headers.location) {
416
+ if (debug) console.log(`Redirecting to ${response.headers.location}`);
417
+ return downloadBinary(response.headers.location).then(res).catch(rej);
418
+ }
419
+
216
420
  if (response.statusCode !== 200) {
217
- console.error(`Failed to download font from ${url}: ${response.statusCode}`);
218
- rej(new Error(`Failed to download font from ${url}: ${response.statusCode}`));
421
+ console.log();
422
+ console.error(`Failed to download (${response.statusCode}): ${url}`);
423
+ rej(new Error(`Failed to download (${response.statusCode}): ${url}`));
219
424
  return;
220
425
  }
426
+
427
+ console.log(""); // Make a new line for better readability
428
+ console.log(`[needle:local-files] Make local: ${url}`);
429
+
221
430
  const chunks = [];
222
431
  response.on('data', (chunk) => {
223
432
  chunks.push(chunk);
224
433
  });
225
434
  response.on('end', () => {
226
435
  // Here you can save the data to a file or process it as needed
227
- console.log(`Downloaded from ${url}`);
436
+ if (debug) console.log(`Downloaded from ${url}`);
228
437
  res(Buffer.concat(chunks));
229
438
  });
230
439
  });
@@ -61,7 +61,9 @@ export function disposeObjectResources(obj: object | null | undefined) {
61
61
  return;
62
62
  }
63
63
 
64
- obj[$disposed] = true;
64
+ if(typeof obj === "object") {
65
+ obj[$disposed] = true;
66
+ }
65
67
 
66
68
  if (obj instanceof Scene) {
67
69
  disposeObjectResources(obj.environment);