@needle-tools/engine 4.16.1 → 4.16.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/CHANGELOG.md +7 -0
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-C3aSGlMn.min.js → needle-engine.bundle-BOzZVXHu.min.js} +132 -132
- package/dist/{needle-engine.bundle-CKIxz09L.js → needle-engine.bundle-VXttgVve.js} +5357 -5342
- package/dist/{needle-engine.bundle-DSHShuiJ.umd.cjs → needle-engine.bundle-nJtehyVz.umd.cjs} +131 -131
- package/dist/needle-engine.d.ts +45 -23
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine-components/EventType.d.ts +1 -13
- package/lib/engine-components/EventType.js +13 -12
- package/lib/engine-components/EventType.js.map +1 -1
- package/lib/engine-components/ReflectionProbe.d.ts +31 -8
- package/lib/engine-components/ReflectionProbe.js +57 -15
- package/lib/engine-components/ReflectionProbe.js.map +1 -1
- package/package.json +15 -6
- package/plugins/next/next.d.ts +8 -0
- package/plugins/next/next.js +7 -6
- package/plugins/types/userconfig.d.ts +4 -6
- package/plugins/vite/ai.d.ts +17 -0
- package/plugins/vite/ai.js +2 -2
- package/plugins/vite/alias.d.ts +8 -0
- package/plugins/vite/alias.js +5 -2
- package/plugins/vite/asap.d.ts +7 -0
- package/plugins/vite/asap.js +3 -3
- package/plugins/vite/build-pipeline.d.ts +15 -0
- package/plugins/vite/build-pipeline.js +5 -6
- package/plugins/vite/build.d.ts +7 -0
- package/plugins/vite/build.js +5 -2
- package/plugins/vite/buildinfo.d.ts +7 -0
- package/plugins/vite/buildinfo.js +4 -2
- package/plugins/vite/config.d.ts +13 -0
- package/plugins/vite/config.js +1 -1
- package/plugins/vite/copyfiles.d.ts +7 -0
- package/plugins/vite/copyfiles.js +4 -2
- package/plugins/vite/custom-element-data.d.ts +25 -0
- package/plugins/vite/custom-element-data.js +2 -1
- package/plugins/vite/defines.d.ts +10 -0
- package/plugins/vite/defines.js +4 -3
- package/plugins/vite/dependencies.d.ts +21 -0
- package/plugins/vite/dependencies.js +3 -1
- package/plugins/vite/dependency-watcher.d.ts +11 -0
- package/plugins/vite/dependency-watcher.js +2 -1
- package/plugins/vite/drop-client.d.ts +1 -0
- package/plugins/vite/drop.d.ts +7 -0
- package/plugins/vite/drop.js +4 -4
- package/plugins/vite/editor-connection.d.ts +8 -0
- package/plugins/vite/editor-connection.js +6 -2
- package/plugins/vite/facebook-instant-games.d.ts +7 -0
- package/plugins/vite/facebook-instant-games.js +4 -2
- package/plugins/vite/gzip.d.ts +6 -0
- package/plugins/vite/gzip.js +5 -0
- package/plugins/vite/imports-logger.d.ts +13 -0
- package/plugins/vite/imports-logger.js +2 -1
- package/plugins/vite/index.d.ts +54 -0
- package/plugins/vite/index.js +16 -15
- package/plugins/vite/license.d.ts +7 -0
- package/plugins/vite/license.js +6 -6
- package/plugins/vite/local-files-analysis.d.ts +95 -0
- package/plugins/vite/local-files-analysis.js +2 -1
- package/plugins/vite/local-files-core.d.ts +51 -0
- package/plugins/vite/local-files-core.js +2 -2
- package/plugins/vite/local-files-internals.d.ts +3 -0
- package/plugins/vite/local-files-utils.d.ts +77 -0
- package/plugins/vite/local-files.d.ts +2 -0
- package/plugins/vite/logger.d.ts +8 -0
- package/plugins/vite/logger.js +1 -1
- package/plugins/vite/logging.d.ts +31 -0
- package/plugins/vite/meta.d.ts +7 -0
- package/plugins/vite/meta.js +4 -3
- package/plugins/vite/needle-app.d.ts +7 -0
- package/plugins/vite/needle-app.js +1 -1
- package/plugins/vite/npm.d.ts +4 -0
- package/plugins/vite/npm.js +1 -1
- package/plugins/vite/peer.d.ts +7 -0
- package/plugins/vite/peer.js +3 -1
- package/plugins/vite/poster-client.d.ts +1 -0
- package/plugins/vite/poster.d.ts +8 -0
- package/plugins/vite/poster.js +5 -2
- package/plugins/vite/pwa.d.ts +7 -0
- package/plugins/vite/pwa.js +4 -4
- package/plugins/vite/reload-client.d.ts +1 -0
- package/plugins/vite/reload.d.ts +7 -0
- package/plugins/vite/reload.js +7 -6
- package/plugins/vite/server.d.ts +7 -0
- package/plugins/vite/server.js +5 -5
- package/plugins/vite/transform-codegen.d.ts +8 -0
- package/plugins/vite/transform-codegen.js +6 -4
- package/plugins/vite/transform.d.ts +5 -0
- package/plugins/vite/transform.js +1 -1
- package/plugins/vite/vite-4.4-hack.d.ts +8 -0
- package/plugins/vite/vite-4.4-hack.js +1 -1
- package/src/engine-components/EventType.ts +13 -12
- package/src/engine-components/ReflectionProbe.ts +65 -20
- package/plugins/types/next.d.ts +0 -3
- package/plugins/types/vite.d.ts +0 -14
|
@@ -24,10 +24,12 @@ export function isLocalNeedleEngineInstalled(root = process.cwd()) {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
+
* @param {"build" | "serve"} command
|
|
28
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
27
29
|
* @param {import('../types').userSettings} userSettings
|
|
28
30
|
* @returns {import('vite').Plugin[]}
|
|
29
31
|
*/
|
|
30
|
-
export
|
|
32
|
+
export function needleDependencies(command, config, userSettings) {
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* @type {import('vite').Plugin}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {unknown} _config
|
|
4
|
+
* @param {import('../types').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin | null}
|
|
6
|
+
*/
|
|
7
|
+
export function needleDependencyWatcher(command: "build" | "serve", _config: unknown, userSettings: import("../types").userSettings): import("vite").Plugin | null;
|
|
8
|
+
export type PackageJson = {
|
|
9
|
+
dependencies?: Record<string, string>;
|
|
10
|
+
devDependencies?: Record<string, string>;
|
|
11
|
+
};
|
|
@@ -15,8 +15,9 @@ function log(...msg) {
|
|
|
15
15
|
* @param {"build" | "serve"} command
|
|
16
16
|
* @param {unknown} _config
|
|
17
17
|
* @param {import('../types').userSettings} userSettings
|
|
18
|
+
* @returns {import('vite').Plugin | null}
|
|
18
19
|
*/
|
|
19
|
-
export
|
|
20
|
+
export function needleDependencyWatcher(command, _config, userSettings) {
|
|
20
21
|
if (command === "build") return null;
|
|
21
22
|
|
|
22
23
|
if (userSettings?.noDependencyWatcher === true) return null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Experimental, allow dropping files from Unity into the running scene.
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
4
|
+
* @param {import('../types/userconfig.js').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin | null | undefined}
|
|
6
|
+
*/
|
|
7
|
+
export function needleDrop(command: "build" | "serve", config: import("../types/needleConfig").needleMeta | null | undefined, userSettings: import("../types/userconfig.js").userSettings): import("vite").Plugin | null | undefined;
|
package/plugins/vite/drop.js
CHANGED
|
@@ -6,13 +6,13 @@ import { fileURLToPath } from 'url';
|
|
|
6
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = path.dirname(__filename);
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
* @param {string} command
|
|
9
|
+
/** Experimental, allow dropping files from Unity into the running scene.
|
|
10
|
+
* @param {"build" | "serve"} command
|
|
12
11
|
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
13
12
|
* @param {import('../types/userconfig.js').userSettings} userSettings
|
|
13
|
+
* @returns {import('vite').Plugin | null | undefined}
|
|
14
14
|
*/
|
|
15
|
-
export
|
|
15
|
+
export function needleDrop(command, config, userSettings) {
|
|
16
16
|
if (command === "build") return;
|
|
17
17
|
|
|
18
18
|
if(userSettings.useDrop !== true) return null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
4
|
+
* @param {import('../types').userSettings} userSettings
|
|
5
|
+
* @param {import('vite').Plugin[]} [pluginsArray]
|
|
6
|
+
* @returns {Promise<import('vite').Plugin | undefined>}
|
|
7
|
+
*/
|
|
8
|
+
export function editorConnection(command: "build" | "serve", config: import("../types/needleConfig").needleMeta | null | undefined, userSettings: import("../types").userSettings, pluginsArray?: import("vite").Plugin[]): Promise<import("vite").Plugin | undefined>;
|
|
@@ -14,9 +14,13 @@ const editorSyncPackageName = "@needle-tools/editor-sync"
|
|
|
14
14
|
let editorSyncEnabled = false;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* @
|
|
17
|
+
* @param {"build" | "serve"} command
|
|
18
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
19
|
+
* @param {import('../types').userSettings} userSettings
|
|
20
|
+
* @param {import('vite').Plugin[]} [pluginsArray]
|
|
21
|
+
* @returns {Promise<import('vite').Plugin | undefined>}
|
|
18
22
|
*/
|
|
19
|
-
export
|
|
23
|
+
export async function editorConnection(command, config, userSettings, pluginsArray) {
|
|
20
24
|
if (command === "build") return;
|
|
21
25
|
|
|
22
26
|
// Editor sync currently only supports Unity
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
4
|
+
* @param {import('../types').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin | undefined}
|
|
6
|
+
*/
|
|
7
|
+
export function needleFacebookInstantGames(command: "build" | "serve", config: import("../types/needleConfig").needleMeta | null | undefined, userSettings: import("../types").userSettings): import("vite").Plugin | undefined;
|
|
@@ -31,10 +31,12 @@ function log(...any) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* @param {
|
|
34
|
+
* @param {"build" | "serve"} command
|
|
35
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
35
36
|
* @param {import('../types').userSettings} userSettings
|
|
37
|
+
* @returns {import('vite').Plugin | undefined}
|
|
36
38
|
*/
|
|
37
|
-
export
|
|
39
|
+
export function needleFacebookInstantGames(command, config, userSettings) {
|
|
38
40
|
|
|
39
41
|
if (userSettings.noFacebookInstantGames === true) return;
|
|
40
42
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Returns `true` when the Needle project is configured to serve gzip-compressed assets.
|
|
2
|
+
* Reads the `gzip` field from the config object.
|
|
3
|
+
* @param {import('../types/needleConfig').needleConfig | undefined} config
|
|
4
|
+
* @returns {boolean}
|
|
5
|
+
*/
|
|
6
|
+
export function useGzip(config: import("../types/needleConfig").needleConfig | undefined): boolean;
|
package/plugins/vite/gzip.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
// import { existsSync } from 'fs';
|
|
3
3
|
|
|
4
|
+
/** Returns `true` when the Needle project is configured to serve gzip-compressed assets.
|
|
5
|
+
* Reads the `gzip` field from the config object.
|
|
6
|
+
* @param {import('../types/needleConfig').needleConfig | undefined} config
|
|
7
|
+
* @returns {boolean}
|
|
8
|
+
*/
|
|
4
9
|
export function useGzip(config) {
|
|
5
10
|
return config?.gzip ? true : false;
|
|
6
11
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** @typedef {{ id: string, imports: GraphNode[], importedBy: GraphNode[] }} GraphNode */
|
|
2
|
+
/**
|
|
3
|
+
* @param {"build" | "serve"} _command
|
|
4
|
+
* @param {unknown} _config
|
|
5
|
+
* @param {import('../types').userSettings} userSettings
|
|
6
|
+
* @returns {import('vite').Plugin | null}
|
|
7
|
+
*/
|
|
8
|
+
export function needleImportsLogger(_command: "build" | "serve", _config: unknown, userSettings: import("../types").userSettings): import("vite").Plugin | null;
|
|
9
|
+
export type GraphNode = {
|
|
10
|
+
id: string;
|
|
11
|
+
imports: GraphNode[];
|
|
12
|
+
importedBy: GraphNode[];
|
|
13
|
+
};
|
|
@@ -8,8 +8,9 @@ import fs from 'fs';
|
|
|
8
8
|
* @param {"build" | "serve"} _command
|
|
9
9
|
* @param {unknown} _config
|
|
10
10
|
* @param {import('../types').userSettings} userSettings
|
|
11
|
+
* @returns {import('vite').Plugin | null}
|
|
11
12
|
*/
|
|
12
|
-
export
|
|
13
|
+
export function needleImportsLogger(_command, _config, userSettings) {
|
|
13
14
|
|
|
14
15
|
if (!userSettings.debugImportChains) return null;
|
|
15
16
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** # Needle Engine plugins for Vite
|
|
2
|
+
* Plugins include hot reload support, meta tags, defines, build pipeline, PWA, and more.
|
|
3
|
+
* ## Using PWA
|
|
4
|
+
* How to add PWA support to your vite project:
|
|
5
|
+
* 1) Install the [vite pwa plugin](https://vite-pwa-org.netlify.app/): `npm install vite-plugin-pwa --save-dev`
|
|
6
|
+
* 2) Add the following to your vite.config.js:
|
|
7
|
+
* You first pass the PWAOptions to the needlePlugins function, then you pass the same PWAOptions to the VitePWA plugin.
|
|
8
|
+
* You *can* use also add a `.webmanifest` file to your web project and edit the [PWA manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) settings there.
|
|
9
|
+
* ```js
|
|
10
|
+
* export default defineConfig(async ({ command }) => {
|
|
11
|
+
* // @type {import("vite-plugin-pwa").VitePWAOptions}
|
|
12
|
+
* const PWAOptions = {};
|
|
13
|
+
* ...
|
|
14
|
+
* return {
|
|
15
|
+
* plugins: [
|
|
16
|
+
* ...
|
|
17
|
+
* needlePlugins(command, needleConfig, { pwaOptions: PWAOptions }),
|
|
18
|
+
* VitePWA(PWAOptions),
|
|
19
|
+
* ],
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
* @param {"build" | "serve"} command
|
|
23
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
24
|
+
* @param {import('../types/index.js').userSettings} [userSettings]
|
|
25
|
+
* @returns {Promise<import('vite').Plugin[]>}
|
|
26
|
+
*/
|
|
27
|
+
export function needlePlugins(command: "build" | "serve", config?: import("../types/needleConfig").needleMeta | null | undefined, userSettings?: import("../types/index.js").userSettings): Promise<import("vite").Plugin[]>;
|
|
28
|
+
export { needleAI } from "./ai.js";
|
|
29
|
+
export { needleAsap } from "./asap.js";
|
|
30
|
+
export { needleDefines } from "./defines.js";
|
|
31
|
+
export { needleBuildPipeline } from "./build-pipeline.js";
|
|
32
|
+
export { needleBuild } from "./build.js";
|
|
33
|
+
export { needleMeta } from "./meta.js";
|
|
34
|
+
export { needlePoster } from "./poster.js";
|
|
35
|
+
export { needlePWA } from "./pwa.js";
|
|
36
|
+
export { needleReload } from "./reload.js";
|
|
37
|
+
export { needleDrop } from "./drop.js";
|
|
38
|
+
export { editorConnection } from "./editor-connection.js";
|
|
39
|
+
export { needleCopyFiles } from "./copyfiles.js";
|
|
40
|
+
export { needleViteAlias } from "./alias.js";
|
|
41
|
+
export { needleCustomElementData } from "./custom-element-data.js";
|
|
42
|
+
export { needleTransformCodegen } from "./transform-codegen.js";
|
|
43
|
+
export { needleLicense } from "./license.js";
|
|
44
|
+
export { needlePeerjs } from "./peer.js";
|
|
45
|
+
export { needleDependencyWatcher } from "./dependency-watcher.js";
|
|
46
|
+
export { needleDependencies } from "./dependencies.js";
|
|
47
|
+
export { needleFacebookInstantGames } from "./facebook-instant-games.js";
|
|
48
|
+
export { needleImportsLogger } from "./imports-logger.js";
|
|
49
|
+
export { needleBuildInfo } from "./buildinfo.js";
|
|
50
|
+
export { needleApp } from "./needle-app.js";
|
|
51
|
+
export { needleServer } from "./server.js";
|
|
52
|
+
export * from "./gzip.js";
|
|
53
|
+
export * from "./config.js";
|
|
54
|
+
export { needleMakeFilesLocal, needleLocalFilesSceneAnalysis } from "./local-files.js";
|
package/plugins/vite/index.js
CHANGED
|
@@ -94,27 +94,28 @@ const defaultUserSettings = {
|
|
|
94
94
|
* ## Using PWA
|
|
95
95
|
* How to add PWA support to your vite project:
|
|
96
96
|
* 1) Install the [vite pwa plugin](https://vite-pwa-org.netlify.app/): `npm install vite-plugin-pwa --save-dev`
|
|
97
|
-
* 2) Add the following to your vite.config.js:
|
|
97
|
+
* 2) Add the following to your vite.config.js:
|
|
98
98
|
* You first pass the PWAOptions to the needlePlugins function, then you pass the same PWAOptions to the VitePWA plugin.
|
|
99
99
|
* You *can* use also add a `.webmanifest` file to your web project and edit the [PWA manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) settings there.
|
|
100
|
-
* ```js
|
|
100
|
+
* ```js
|
|
101
101
|
* export default defineConfig(async ({ command }) => {
|
|
102
|
-
//
|
|
103
|
-
const PWAOptions = {};
|
|
104
|
-
...
|
|
105
|
-
return {
|
|
106
|
-
plugins: [
|
|
107
|
-
...
|
|
108
|
-
needlePlugins(command, needleConfig, { pwaOptions: PWAOptions }),
|
|
109
|
-
VitePWA(PWAOptions),
|
|
110
|
-
],
|
|
111
|
-
}
|
|
102
|
+
* // @type {import("vite-plugin-pwa").VitePWAOptions}
|
|
103
|
+
* const PWAOptions = {};
|
|
104
|
+
* ...
|
|
105
|
+
* return {
|
|
106
|
+
* plugins: [
|
|
107
|
+
* ...
|
|
108
|
+
* needlePlugins(command, needleConfig, { pwaOptions: PWAOptions }),
|
|
109
|
+
* VitePWA(PWAOptions),
|
|
110
|
+
* ],
|
|
111
|
+
* }
|
|
112
112
|
* ```
|
|
113
113
|
* @param {"build" | "serve"} command
|
|
114
|
-
* @param {
|
|
115
|
-
* @param {import('../types/index.js').userSettings} userSettings
|
|
114
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
115
|
+
* @param {import('../types/index.js').userSettings} [userSettings]
|
|
116
|
+
* @returns {Promise<import('vite').Plugin[]>}
|
|
116
117
|
*/
|
|
117
|
-
export
|
|
118
|
+
export async function needlePlugins(command, config = undefined, userSettings = {}) {
|
|
118
119
|
|
|
119
120
|
if (!config) config = {}
|
|
120
121
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** This plugin is used to apply the license to the needle engine.
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
4
|
+
* @param {import('../types/userconfig.js').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin}
|
|
6
|
+
*/
|
|
7
|
+
export function needleLicense(command: "build" | "serve", config: import("../types/needleConfig").needleMeta | null | undefined, userSettings: import("../types/userconfig.js").userSettings): import("vite").Plugin;
|
package/plugins/vite/license.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { resolveLicense } from '../common/license.js';
|
|
2
2
|
import { loadConfig } from './config.js';
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {object} config - The config object
|
|
4
|
+
/** This plugin is used to apply the license to the needle engine.
|
|
5
|
+
* @param {"build" | "serve"} command
|
|
6
|
+
* @param {import('../types/needleConfig').needleMeta | null | undefined} config
|
|
8
7
|
* @param {import('../types/userconfig.js').userSettings} userSettings
|
|
8
|
+
* @returns {import('vite').Plugin}
|
|
9
9
|
*/
|
|
10
|
-
export
|
|
10
|
+
export function needleLicense(command, config, userSettings) {
|
|
11
11
|
let license = undefined;
|
|
12
12
|
|
|
13
13
|
return {
|
|
@@ -53,4 +53,4 @@ export const needleLicense = (command, config, userSettings) => {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {unknown} _config
|
|
4
|
+
* @param {import('../types').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin | null}
|
|
6
|
+
*/
|
|
7
|
+
export function needleLocalFilesSceneAnalysis(command: "build" | "serve", _config: unknown, userSettings: import("../types").userSettings): import("vite").Plugin | null;
|
|
8
|
+
/**
|
|
9
|
+
* @param {string} projectDir
|
|
10
|
+
* @returns {AutoPolicy | null}
|
|
11
|
+
*/
|
|
12
|
+
export function getLocalFilesAutoPolicy(projectDir: string): AutoPolicy | null;
|
|
13
|
+
/**
|
|
14
|
+
* @param {import('../types').userSettings | undefined | null} userSettings
|
|
15
|
+
* @returns {boolean}
|
|
16
|
+
*/
|
|
17
|
+
export function makeFilesLocalIsEnabled(userSettings: import("../types").userSettings | undefined | null): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* @param {import('../types').userSettings | undefined | null} userSettings
|
|
20
|
+
* @returns {LocalizationOptions}
|
|
21
|
+
*/
|
|
22
|
+
export function resolveOptions(userSettings: import("../types").userSettings | undefined | null): LocalizationOptions;
|
|
23
|
+
/**
|
|
24
|
+
* @param {string | string[] | undefined} features
|
|
25
|
+
* @returns {boolean}
|
|
26
|
+
*/
|
|
27
|
+
export function hasAutoFeatureSelection(features: string | string[] | undefined): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* @param {LocalizationOptions} options
|
|
30
|
+
* @param {string} projectDir
|
|
31
|
+
* @returns {AutoPolicy | null}
|
|
32
|
+
*/
|
|
33
|
+
export function buildAutoPolicy(options: LocalizationOptions, projectDir: string): AutoPolicy | null;
|
|
34
|
+
/**
|
|
35
|
+
* @param {string} projectDir
|
|
36
|
+
* @param {LocalizationOptions} options
|
|
37
|
+
* @param {SceneAnalysisReport | null} [cachedAnalysis]
|
|
38
|
+
* @returns {AutoPolicy}
|
|
39
|
+
*/
|
|
40
|
+
export function detectAutoPolicy(projectDir: string, options: LocalizationOptions, cachedAnalysis?: SceneAnalysisReport | null): AutoPolicy;
|
|
41
|
+
/**
|
|
42
|
+
* @param {string} projectDir
|
|
43
|
+
* @returns {SceneAnalysisReport}
|
|
44
|
+
*/
|
|
45
|
+
export function analyzeProjectGlbs(projectDir: string): SceneAnalysisReport;
|
|
46
|
+
/**
|
|
47
|
+
* @param {string} projectDir
|
|
48
|
+
* @returns {string[]}
|
|
49
|
+
*/
|
|
50
|
+
export function collectAssetGlbs(projectDir: string): string[];
|
|
51
|
+
/**
|
|
52
|
+
* @param {string} filePath
|
|
53
|
+
* @returns {Record<string, unknown>}
|
|
54
|
+
*/
|
|
55
|
+
export function readGlbJsonChunk(filePath: string): Record<string, unknown>;
|
|
56
|
+
/**
|
|
57
|
+
* @param {unknown} json
|
|
58
|
+
* @returns {string[]}
|
|
59
|
+
*/
|
|
60
|
+
export function collectNeedleComponentExtensionBlobs(json: unknown): string[];
|
|
61
|
+
/**
|
|
62
|
+
* @param {string} indexHtml
|
|
63
|
+
* @returns {Set<string>}
|
|
64
|
+
*/
|
|
65
|
+
export function collectIndexHtmlSkyboxUrls(indexHtml: string): Set<string>;
|
|
66
|
+
/**
|
|
67
|
+
* @param {string | string[] | undefined | null} skyboxOption
|
|
68
|
+
* @param {Set<string>} indexSkyboxUrls
|
|
69
|
+
* @returns {Set<string> | null}
|
|
70
|
+
*/
|
|
71
|
+
export function resolveSkyboxSelectionUrls(skyboxOption: string | string[] | undefined | null, indexSkyboxUrls: Set<string>): Set<string> | null;
|
|
72
|
+
/**
|
|
73
|
+
* @param {string | null | undefined} value
|
|
74
|
+
* @returns {string | null}
|
|
75
|
+
*/
|
|
76
|
+
export function resolveSkyboxValueToUrl(value: string | null | undefined): string | null;
|
|
77
|
+
/**
|
|
78
|
+
* @param {string | undefined} mode
|
|
79
|
+
* @returns {string[]}
|
|
80
|
+
*/
|
|
81
|
+
export function getWebXRProfilesForMode(mode: string | undefined): string[];
|
|
82
|
+
/**
|
|
83
|
+
* @param {string} url
|
|
84
|
+
* @param {UrlHandler} handler
|
|
85
|
+
* @param {LocalizationContext} context
|
|
86
|
+
* @returns {boolean}
|
|
87
|
+
*/
|
|
88
|
+
export function shouldHandleUrlInAutoMode(url: string, handler: UrlHandler, context: LocalizationContext): boolean;
|
|
89
|
+
export const SKYBOX_MAGIC_KEYWORDS: string[];
|
|
90
|
+
export type LocalizationOptions = import("./local-files-types.js").LocalizationOptions;
|
|
91
|
+
export type AutoPolicy = import("./local-files-types.js").AutoPolicy;
|
|
92
|
+
export type SceneAnalysisReport = import("./local-files-types.js").SceneAnalysisReport;
|
|
93
|
+
export type SceneFile = import("./local-files-types.js").SceneFile;
|
|
94
|
+
export type UrlHandler = import("./local-files-types.js").UrlHandler;
|
|
95
|
+
export type LocalizationContext = import("./local-files-types.js").LocalizationContext;
|
|
@@ -19,9 +19,10 @@ const HLS_CDN_SEGMENT = "/npm/hls.js@";
|
|
|
19
19
|
const analysisByProject = new Map();
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* @param {
|
|
22
|
+
* @param {"build" | "serve"} command
|
|
23
23
|
* @param {unknown} _config
|
|
24
24
|
* @param {import('../types').userSettings} userSettings
|
|
25
|
+
* @returns {import('vite').Plugin | null}
|
|
25
26
|
*/
|
|
26
27
|
export function needleLocalFilesSceneAnalysis(command, _config, userSettings) {
|
|
27
28
|
if (!makeFilesLocalIsEnabled(userSettings)) return null;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {unknown} _config
|
|
4
|
+
* @param {import('../types').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin | null}
|
|
6
|
+
*/
|
|
7
|
+
export function needleMakeFilesLocal(command: "build" | "serve", _config: unknown, userSettings: import("../types").userSettings): import("vite").Plugin | null;
|
|
8
|
+
/**
|
|
9
|
+
* @param {LocalizationOptions} options
|
|
10
|
+
* @param {AutoPolicy | null} autoPolicy
|
|
11
|
+
* @returns {UrlHandler[]}
|
|
12
|
+
*/
|
|
13
|
+
export function getActiveHandlers(options: LocalizationOptions, autoPolicy: AutoPolicy | null): UrlHandler[];
|
|
14
|
+
/**
|
|
15
|
+
* @param {string} src
|
|
16
|
+
* @param {string} basePath
|
|
17
|
+
* @param {string} currentDir
|
|
18
|
+
* @param {LocalizationContext} context
|
|
19
|
+
* @param {UrlHandler[]} [handlers]
|
|
20
|
+
* @returns {Promise<string>}
|
|
21
|
+
*/
|
|
22
|
+
export function makeLocal(src: string, basePath: string, currentDir: string, context: LocalizationContext, handlers?: UrlHandler[]): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* @param {string} html
|
|
25
|
+
* @param {string} basePath
|
|
26
|
+
* @param {LocalizationContext} context
|
|
27
|
+
* @param {UrlHandler[]} [handlers]
|
|
28
|
+
* @returns {Promise<string>}
|
|
29
|
+
*/
|
|
30
|
+
export function makeLocalHtml(html: string, basePath: string, context: LocalizationContext, handlers?: UrlHandler[]): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* @param {string} basePath
|
|
33
|
+
* @param {string} feature
|
|
34
|
+
* @returns {string}
|
|
35
|
+
*/
|
|
36
|
+
export function getFeatureBasePath(basePath: string, feature: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* @param {string} baseUrl
|
|
39
|
+
* @param {string} basePath
|
|
40
|
+
* @param {string} currentDir
|
|
41
|
+
* @param {LocalizationContext} context
|
|
42
|
+
* @returns {Promise<string>}
|
|
43
|
+
*/
|
|
44
|
+
export function handleWebXRProfiles(baseUrl: string, basePath: string, currentDir: string, context: LocalizationContext): Promise<string>;
|
|
45
|
+
export { makeFilesLocalIsEnabled };
|
|
46
|
+
export type LocalizationContext = import("./local-files-types.js").LocalizationContext;
|
|
47
|
+
export type LocalizationOptions = import("./local-files-types.js").LocalizationOptions;
|
|
48
|
+
export type LocalizationStats = import("./local-files-types.js").LocalizationStats;
|
|
49
|
+
export type AutoPolicy = import("./local-files-types.js").AutoPolicy;
|
|
50
|
+
export type UrlHandler = import("./local-files-types.js").UrlHandler;
|
|
51
|
+
import { makeFilesLocalIsEnabled } from './local-files-analysis.js';
|
|
@@ -213,7 +213,7 @@ function recordLocalizedAsset(stats, url, sizeBytes, mimeType) {
|
|
|
213
213
|
* @param {import('../types').userSettings} userSettings
|
|
214
214
|
* @returns {import('vite').Plugin | null}
|
|
215
215
|
*/
|
|
216
|
-
export
|
|
216
|
+
export function needleMakeFilesLocal(command, _config, userSettings) {
|
|
217
217
|
if (!makeFilesLocalIsEnabled(userSettings)) {
|
|
218
218
|
return null;
|
|
219
219
|
}
|
|
@@ -373,7 +373,7 @@ export const needleMakeFilesLocal = (command, _config, userSettings) => {
|
|
|
373
373
|
}
|
|
374
374
|
});
|
|
375
375
|
return plugin;
|
|
376
|
-
}
|
|
376
|
+
}
|
|
377
377
|
|
|
378
378
|
/**
|
|
379
379
|
* @param {LocalizationOptions} options
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { getActiveHandlers, getFeatureBasePath, handleWebXRProfiles, makeLocal, makeLocalHtml } from "./local-files-core.js";
|
|
2
|
+
export { analyzeProjectGlbs, buildAutoPolicy, collectAssetGlbs, collectIndexHtmlSkyboxUrls, collectNeedleComponentExtensionBlobs, detectAutoPolicy, getWebXRProfilesForMode, hasAutoFeatureSelection, readGlbJsonChunk, resolveSkyboxSelectionUrls, resolveSkyboxValueToUrl, shouldHandleUrlInAutoMode } from "./local-files-analysis.js";
|
|
3
|
+
export { fixDracoRangeQueryProbe, fixRelativeNewURL, getRelativeToBasePath } from "./local-files-utils.js";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export function finishMakeLocalProgress(): void;
|
|
2
|
+
/**
|
|
3
|
+
* @param {string} src
|
|
4
|
+
* @param {string} search
|
|
5
|
+
* @param {string} replacement
|
|
6
|
+
* @returns {string}
|
|
7
|
+
*/
|
|
8
|
+
export function replaceAll(src: string, search: string, replacement: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* @param {string} path
|
|
11
|
+
* @param {string} basePath
|
|
12
|
+
* @returns {string}
|
|
13
|
+
*/
|
|
14
|
+
export function getRelativeToBasePath(path: string, basePath: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} path
|
|
17
|
+
* @returns {string}
|
|
18
|
+
*/
|
|
19
|
+
export function normalizeWebPath(path: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} path
|
|
22
|
+
* @returns {string}
|
|
23
|
+
*/
|
|
24
|
+
export function ensureTrailingSlash(path: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* @param {string} src
|
|
27
|
+
* @returns {string}
|
|
28
|
+
*/
|
|
29
|
+
export function fixRelativeNewURL(src: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* @param {string} src
|
|
32
|
+
* @returns {string}
|
|
33
|
+
*/
|
|
34
|
+
export function fixDracoRangeQueryProbe(src: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* @param {string} path
|
|
37
|
+
* @param {string|Buffer} content
|
|
38
|
+
* @returns {string}
|
|
39
|
+
*/
|
|
40
|
+
export function getValidFilename(path: string, content: string | Buffer): string;
|
|
41
|
+
/**
|
|
42
|
+
* @param {string} url
|
|
43
|
+
* @returns {Promise<string>}
|
|
44
|
+
*/
|
|
45
|
+
export function downloadText(url: string): Promise<string>;
|
|
46
|
+
/**
|
|
47
|
+
* @param {string} url
|
|
48
|
+
* @returns {Promise<Buffer>}
|
|
49
|
+
*/
|
|
50
|
+
export function downloadBinary(url: string): Promise<Buffer>;
|
|
51
|
+
/**
|
|
52
|
+
* @param {LocalizationContext} context
|
|
53
|
+
* @param {string} url
|
|
54
|
+
* @param {unknown} err
|
|
55
|
+
*/
|
|
56
|
+
export function recordFailedDownload(context: LocalizationContext, url: string, err: unknown): void;
|
|
57
|
+
/**
|
|
58
|
+
* @param {string} url
|
|
59
|
+
* @returns {string}
|
|
60
|
+
*/
|
|
61
|
+
export function getShortUrlName(url: string): string;
|
|
62
|
+
export class Cache {
|
|
63
|
+
/** @type {Map<string, Buffer|string>} */
|
|
64
|
+
__cache: Map<string, Buffer | string>;
|
|
65
|
+
/**
|
|
66
|
+
* @param {string} key
|
|
67
|
+
* @param {Buffer|string} value
|
|
68
|
+
*/
|
|
69
|
+
addToCache(key: string, value: Buffer | string): void;
|
|
70
|
+
/**
|
|
71
|
+
* @param {string} key
|
|
72
|
+
* @returns {Buffer|string|null}
|
|
73
|
+
*/
|
|
74
|
+
getFromCache(key: string): Buffer | string | null;
|
|
75
|
+
get map(): Map<string, string | Buffer<ArrayBufferLike>>;
|
|
76
|
+
}
|
|
77
|
+
export type LocalizationContext = import("./local-files-types.js").LocalizationContext;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* write logs to local file
|
|
3
|
+
* @param {string} command
|
|
4
|
+
* @param {unknown} _config
|
|
5
|
+
* @param {import('../types/userconfig.js').userSettings} userSettings
|
|
6
|
+
* @returns {import('vite').Plugin | null}
|
|
7
|
+
*/
|
|
8
|
+
export function needleLogger(command: string, _config: unknown, userSettings: import("../types/userconfig.js").userSettings): import("vite").Plugin | null;
|
package/plugins/vite/logger.js
CHANGED
|
@@ -15,7 +15,7 @@ const __dirname = path.dirname(__filename);
|
|
|
15
15
|
* @param {import('../types/userconfig.js').userSettings} userSettings
|
|
16
16
|
* @returns {import('vite').Plugin | null}
|
|
17
17
|
*/
|
|
18
|
-
export
|
|
18
|
+
export function needleLogger(command, _config, userSettings) {
|
|
19
19
|
|
|
20
20
|
if (userSettings?.disableLogging === true) {
|
|
21
21
|
return null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resets the sticky-header state so the next needleLog call always emits its
|
|
3
|
+
* [plugin-name] header. Call this at the start of a new build or any logical
|
|
4
|
+
* output section where you want a guaranteed fresh header.
|
|
5
|
+
*/
|
|
6
|
+
export function resetLastLoggedPlugin(): void;
|
|
7
|
+
/**
|
|
8
|
+
* @param {string} pluginName
|
|
9
|
+
* @param {string | string[]} message
|
|
10
|
+
* @param {'log' | 'warn' | 'error'} [level='log']
|
|
11
|
+
* @param {{ dimBody?: boolean, leadingNewline?: boolean, showHeader?: boolean }} [options]
|
|
12
|
+
*/
|
|
13
|
+
export function needleLog(pluginName: string, message: string | string[], level?: "log" | "warn" | "error", options?: {
|
|
14
|
+
dimBody?: boolean;
|
|
15
|
+
leadingNewline?: boolean;
|
|
16
|
+
showHeader?: boolean;
|
|
17
|
+
}): void;
|
|
18
|
+
/**
|
|
19
|
+
* @param {string} pluginName
|
|
20
|
+
* @param {string[]} lines
|
|
21
|
+
* @param {'log' | 'warn' | 'error'} [level='log']
|
|
22
|
+
*/
|
|
23
|
+
export function needleLogLines(pluginName: string, lines: string[], level?: "log" | "warn" | "error"): void;
|
|
24
|
+
export function needleSupportsColor(): boolean;
|
|
25
|
+
export function needleBlue(text: any): string;
|
|
26
|
+
export function needleDim(text: any): string;
|
|
27
|
+
export function needleGreenBold(text: any): string;
|
|
28
|
+
/**
|
|
29
|
+
* @param {(() => void) | null} cleaner
|
|
30
|
+
*/
|
|
31
|
+
export function setTransientLogLineCleaner(cleaner: (() => void) | null): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {"build" | "serve"} command
|
|
3
|
+
* @param {import('../types/needleConfig').needleMeta | null} config
|
|
4
|
+
* @param {import('../types').userSettings} userSettings
|
|
5
|
+
* @returns {import('vite').Plugin}
|
|
6
|
+
*/
|
|
7
|
+
export function needleMeta(command: "build" | "serve", config: import("../types/needleConfig").needleMeta | null, userSettings: import("../types").userSettings): import("vite").Plugin;
|