mirror of
https://github.com/lighttransport/tinyusdz.git
synced 2026-01-18 01:11:17 +01:00
remove unused file.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// W.I.P.
|
||||
// Based on GLTFLoader and USDZLoader
|
||||
// https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/USDZLoader.js
|
||||
// https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/GLTFLoader.js
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
let TinyUSDZ = null;
|
||||
|
||||
const TINYUSDZ_PATH = './tinyusdz.js';
|
||||
|
||||
async function TinyUSDZLoader() {
|
||||
if ( TinyUSDZ === null ) {
|
||||
|
||||
const { default: initTinyUSDZ } = await import( TINYUSDZ_PATH );
|
||||
TinyUSDZ = await initTinyUSDZ();
|
||||
|
||||
}
|
||||
|
||||
console.log( TinyUSDZ );
|
||||
}
|
||||
|
||||
export { TinyUSDZLoader };
|
||||
@@ -1,2 +0,0 @@
|
||||
based on threejs-starter-bun https://github.com/j1m-ryan/threejs-starter-bun
|
||||
(MIT license)
|
||||
@@ -1,14 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" type="text/css" href="./src/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./src/reset.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>ThreeJS Starter</title>
|
||||
</head>
|
||||
<body>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
<canvas id="c"></canvas>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "simple-threejs-tinyusdzloader-demo",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/three": "^0.160.0",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^5.0.8",
|
||||
"@types/bun": "latest"
|
||||
},
|
||||
"dependencies": {
|
||||
"gsap": "^3.12.4",
|
||||
"lil-gui": "^0.19.1",
|
||||
"stats.js": "^0.17.0",
|
||||
"three": "^0.160.0"
|
||||
},
|
||||
"module": "index.ts"
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import { cameraFolder } from "./lilgui";
|
||||
const camera = new THREE.PerspectiveCamera(75, 2, 0.1, 100);
|
||||
|
||||
camera.position.z = 2;
|
||||
|
||||
cameraFolder.add(camera.position, "x").min(-3).max(3).step(0.001).name("X");
|
||||
cameraFolder.add(camera.position, "y").min(-3).max(3).step(0.001).name("Y");
|
||||
cameraFolder.add(camera.position, "z").min(-3).max(3).step(0.001).name("Z");
|
||||
|
||||
export default camera;
|
||||
@@ -1,3 +0,0 @@
|
||||
const canvas = document.getElementById("c") as HTMLCanvasElement;
|
||||
|
||||
export default canvas;
|
||||
@@ -1,8 +0,0 @@
|
||||
import { OrbitControls } from "three/examples/jsm/Addons.js";
|
||||
import camera from "./camera";
|
||||
import canvas from "./canvas";
|
||||
|
||||
const controls = new OrbitControls(camera, canvas);
|
||||
controls.enableDamping = true;
|
||||
|
||||
export default controls;
|
||||
@@ -1,5 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
const axesHelper = new THREE.AxesHelper();
|
||||
|
||||
export default axesHelper;
|
||||
@@ -1,14 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import { directionalLight, hemisphereLight } from "../lights";
|
||||
|
||||
const hemisphereLightHelper = new THREE.HemisphereLightHelper(
|
||||
hemisphereLight,
|
||||
0.1
|
||||
);
|
||||
|
||||
const directionalLightHelper = new THREE.DirectionalLightHelper(
|
||||
directionalLight,
|
||||
0.3
|
||||
);
|
||||
|
||||
export { hemisphereLightHelper, directionalLightHelper };
|
||||
@@ -1,9 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
import { directionalLight } from "../lights";
|
||||
|
||||
const directionalLightShadowCameraHelper = new THREE.CameraHelper(
|
||||
directionalLight.shadow.camera
|
||||
);
|
||||
|
||||
export { directionalLightShadowCameraHelper };
|
||||
@@ -1,56 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import {
|
||||
directionalLightFolder,
|
||||
ambientLightFolder,
|
||||
hemisphereLightFolder,
|
||||
} from "./lilgui";
|
||||
|
||||
const ambientLight = new THREE.AmbientLight("white", 1);
|
||||
|
||||
ambientLightFolder
|
||||
.add(ambientLight, "intensity")
|
||||
.min(0)
|
||||
.max(5)
|
||||
.step(0.01)
|
||||
.name("Intensity");
|
||||
|
||||
const hemisphereLight = new THREE.HemisphereLight("white", "green", 1);
|
||||
hemisphereLightFolder
|
||||
.add(hemisphereLight, "intensity")
|
||||
.min(0)
|
||||
.max(10)
|
||||
.step(0.01)
|
||||
.name("Intensity");
|
||||
|
||||
const directionalLight = new THREE.DirectionalLight("white", 2);
|
||||
directionalLight.position.set(2, 2, 2);
|
||||
directionalLightFolder
|
||||
.add(directionalLight, "intensity")
|
||||
.min(0)
|
||||
.max(10)
|
||||
.step(0.01)
|
||||
.name("Intensity");
|
||||
|
||||
directionalLight.castShadow = true;
|
||||
directionalLight.shadow.camera.far = 10;
|
||||
|
||||
const directionalLightShadowMapSizeResolution = 2048;
|
||||
directionalLight.shadow.mapSize.set(
|
||||
directionalLightShadowMapSizeResolution,
|
||||
directionalLightShadowMapSizeResolution
|
||||
);
|
||||
|
||||
directionalLightFolder
|
||||
.add(
|
||||
directionalLight.shadow.mapSize,
|
||||
"x",
|
||||
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
|
||||
)
|
||||
.onChange((v: number) => {
|
||||
directionalLight.shadow.mapSize.y = v;
|
||||
directionalLight.shadow.map && directionalLight.shadow.map.dispose();
|
||||
directionalLight.shadow.map = null;
|
||||
})
|
||||
.name("Shadow Map Resolution");
|
||||
|
||||
export { ambientLight, hemisphereLight, directionalLight };
|
||||
@@ -1,22 +0,0 @@
|
||||
import GUI from "lil-gui";
|
||||
|
||||
const gui = new GUI({
|
||||
title: "ThreeJS Starter Bun",
|
||||
});
|
||||
|
||||
const cubeFolder = gui.addFolder("Cube");
|
||||
const cameraFolder = gui.addFolder("Camera");
|
||||
const lightsFolder = gui.addFolder("Lights");
|
||||
|
||||
const directionalLightFolder = lightsFolder.addFolder("Directional Light");
|
||||
const ambientLightFolder = lightsFolder.addFolder("Ambient Light");
|
||||
const hemisphereLightFolder = lightsFolder.addFolder("Hemisphere Light");
|
||||
|
||||
export {
|
||||
cubeFolder,
|
||||
cameraFolder,
|
||||
lightsFolder,
|
||||
directionalLightFolder,
|
||||
hemisphereLightFolder,
|
||||
ambientLightFolder,
|
||||
};
|
||||
@@ -1,18 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
const onLoad = () => {
|
||||
console.log("loaded");
|
||||
};
|
||||
const onProgress = (url: string, loaded: number, total: number) => {
|
||||
console.log(`Loading URL: ${url}`);
|
||||
console.log(`Percent loaded: ${(100 * loaded) / total}%`);
|
||||
};
|
||||
const onError = (url: string) => {
|
||||
console.error(`Error loading: ${url}`);
|
||||
};
|
||||
|
||||
const loadingManager = new THREE.LoadingManager(onLoad, onProgress, onError);
|
||||
|
||||
const textureLoader = new THREE.TextureLoader(loadingManager);
|
||||
|
||||
export { textureLoader };
|
||||
@@ -1,41 +0,0 @@
|
||||
import { createDoubleClickListener } from "./utils/fullscreen";
|
||||
import scene from "./scene";
|
||||
import canvas from "./canvas";
|
||||
import cube from "./meshes/cube";
|
||||
import { ambientLight, directionalLight, hemisphereLight } from "./lights";
|
||||
import { tick } from "./timer";
|
||||
import sphere from "./meshes/sphere";
|
||||
import torus from "./meshes/torus";
|
||||
import floor from "./meshes/floor";
|
||||
import axesHelper from "./helpers/axesHelper";
|
||||
import {
|
||||
directionalLightHelper,
|
||||
hemisphereLightHelper,
|
||||
} from "./helpers/lightHelpers";
|
||||
import { directionalLightShadowCameraHelper } from "./helpers/shadowCameraHelpers";
|
||||
|
||||
function main() {
|
||||
// Meshes
|
||||
scene.add(cube);
|
||||
scene.add(sphere);
|
||||
scene.add(torus);
|
||||
scene.add(floor);
|
||||
|
||||
// Lights
|
||||
scene.add(ambientLight);
|
||||
scene.add(hemisphereLight);
|
||||
scene.add(directionalLight);
|
||||
|
||||
// Helpers
|
||||
scene.add(axesHelper);
|
||||
scene.add(hemisphereLightHelper);
|
||||
scene.add(directionalLightHelper);
|
||||
scene.add(directionalLightShadowCameraHelper);
|
||||
|
||||
// EventListeners
|
||||
createDoubleClickListener(canvas);
|
||||
|
||||
tick();
|
||||
}
|
||||
|
||||
main();
|
||||
@@ -1,51 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import { cubeFolder } from "../lilgui";
|
||||
import gsap from "gsap";
|
||||
import { cubeMaterial } from "../shared/materials";
|
||||
|
||||
const cubeProperties = {
|
||||
subdivisions: 20,
|
||||
animation: () => {},
|
||||
};
|
||||
|
||||
cubeFolder.add(cubeMaterial, "wireframe");
|
||||
|
||||
const geometry = new THREE.BoxGeometry(
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
cubeProperties.subdivisions,
|
||||
cubeProperties.subdivisions,
|
||||
cubeProperties.subdivisions
|
||||
);
|
||||
|
||||
const cube = new THREE.Mesh(geometry, cubeMaterial);
|
||||
cubeFolder.add(cube.position, "y").min(-3).max(3).step(0.1).name("elevation");
|
||||
|
||||
cube.castShadow = true;
|
||||
|
||||
cubeFolder
|
||||
.add(cubeProperties, "subdivisions")
|
||||
.min(1)
|
||||
.max(20)
|
||||
.step(1)
|
||||
.onFinishChange(() => {
|
||||
cube.geometry.dispose();
|
||||
cube.geometry = new THREE.BoxGeometry(
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
cubeProperties.subdivisions,
|
||||
cubeProperties.subdivisions,
|
||||
cubeProperties.subdivisions
|
||||
);
|
||||
});
|
||||
|
||||
cubeProperties.animation = () => {
|
||||
gsap.to(cube.rotation, { x: cube.rotation.x + Math.PI });
|
||||
};
|
||||
cubeFolder.add(cubeProperties, "animation").name("roll");
|
||||
|
||||
cubeFolder.add(cube, "visible");
|
||||
|
||||
export default cube;
|
||||
@@ -1,13 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
import { floorMaterial } from "../shared/materials";
|
||||
|
||||
const geometry = new THREE.PlaneGeometry(20, 20, 20);
|
||||
|
||||
const floor = new THREE.Mesh(geometry, floorMaterial);
|
||||
floor.rotation.x = Math.PI / 2;
|
||||
floor.position.y = -2;
|
||||
|
||||
floor.receiveShadow = true;
|
||||
|
||||
export default floor;
|
||||
@@ -1,11 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
import { earthMaterial } from "../shared/materials";
|
||||
|
||||
const geometry = new THREE.SphereGeometry(0.5, 20, 20);
|
||||
|
||||
const sphere = new THREE.Mesh(geometry, earthMaterial);
|
||||
sphere.position.x = -2;
|
||||
sphere.castShadow = true;
|
||||
|
||||
export default sphere;
|
||||
@@ -1,10 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import { normalMaterial } from "../shared/materials";
|
||||
|
||||
const geometry = new THREE.TorusGeometry(0.3, 0.1, 20);
|
||||
|
||||
const torus = new THREE.Mesh(geometry, normalMaterial);
|
||||
torus.position.x = 2;
|
||||
torus.castShadow = true;
|
||||
|
||||
export default torus;
|
||||
@@ -1,9 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import canvas from "./canvas";
|
||||
|
||||
const renderer = new THREE.WebGLRenderer({ antialias: true, canvas });
|
||||
renderer.shadowMap.enabled = true;
|
||||
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
|
||||
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
|
||||
|
||||
export default renderer;
|
||||
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
1. Use a more-intuitive box-sizing model.
|
||||
*/
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/*
|
||||
2. Remove default margin
|
||||
*/
|
||||
* {
|
||||
margin: 0;
|
||||
}
|
||||
/*
|
||||
Typographic tweaks!
|
||||
3. Add accessible line-height
|
||||
4. Improve text rendering
|
||||
*/
|
||||
body {
|
||||
line-height: 1.5;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
/*
|
||||
5. Improve media defaults
|
||||
*/
|
||||
img,
|
||||
picture,
|
||||
video,
|
||||
canvas,
|
||||
svg {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
/*
|
||||
6. Remove built-in form typography styles
|
||||
*/
|
||||
input,
|
||||
button,
|
||||
textarea,
|
||||
select {
|
||||
font: inherit;
|
||||
}
|
||||
/*
|
||||
7. Avoid text overflows
|
||||
*/
|
||||
p,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
/*
|
||||
8. Create a root stacking context
|
||||
*/
|
||||
#root,
|
||||
#__next {
|
||||
isolation: isolate;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
|
||||
const scene = new THREE.Scene();
|
||||
|
||||
export default scene;
|
||||
@@ -1,29 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import { cobbleDiffTexture, earthTexture, woodTexture } from "./textures";
|
||||
const cubeMaterial = new THREE.MeshStandardMaterial({
|
||||
map: woodTexture,
|
||||
});
|
||||
|
||||
cubeMaterial.side = THREE.DoubleSide;
|
||||
|
||||
const floorMaterial = new THREE.MeshStandardMaterial({
|
||||
map: cobbleDiffTexture,
|
||||
displacementMap: cobbleDiffTexture,
|
||||
displacementScale: 1.2,
|
||||
});
|
||||
|
||||
floorMaterial.side = THREE.DoubleSide;
|
||||
|
||||
if (floorMaterial.map) {
|
||||
floorMaterial.map.repeat.set(8, 8);
|
||||
floorMaterial.map.wrapS = THREE.RepeatWrapping;
|
||||
floorMaterial.map.wrapT = THREE.RepeatWrapping;
|
||||
}
|
||||
|
||||
const normalMaterial = new THREE.MeshNormalMaterial();
|
||||
|
||||
const earthMaterial = new THREE.MeshStandardMaterial({
|
||||
map: earthTexture,
|
||||
});
|
||||
|
||||
export { cubeMaterial, floorMaterial, normalMaterial, earthMaterial };
|
||||
@@ -1,29 +0,0 @@
|
||||
import * as THREE from "three";
|
||||
import { textureLoader } from "../loadingManager";
|
||||
import woodImage from "../../static/textures/wood/wood_floor_worn_diff_1k.jpg";
|
||||
|
||||
import cobbleDiff from "../../static/textures/cobble/grassy_cobblestone_diff_1k.jpg";
|
||||
import cobbleDisp from "../../static/textures/cobble/grassy_cobblestone_disp_1k.png";
|
||||
import cobbleMask from "../../static/textures/cobble/grassy_cobblestone_mask_1k.png";
|
||||
import earth from "../../static/textures/earth/earth.jpg";
|
||||
|
||||
const woodTexture = textureLoader.load(woodImage);
|
||||
woodTexture.colorSpace = THREE.SRGBColorSpace;
|
||||
|
||||
const cobbleDiffTexture = textureLoader.load(cobbleDiff);
|
||||
cobbleDiffTexture.colorSpace = THREE.SRGBColorSpace;
|
||||
|
||||
const cobbleDispTexture = textureLoader.load(cobbleDisp);
|
||||
|
||||
const cobbleMaskTexture = textureLoader.load(cobbleMask);
|
||||
|
||||
const earthTexture = textureLoader.load(earth);
|
||||
earthTexture.colorSpace = THREE.SRGBColorSpace;
|
||||
|
||||
export {
|
||||
woodTexture,
|
||||
cobbleDiffTexture,
|
||||
cobbleDispTexture,
|
||||
cobbleMaskTexture,
|
||||
earthTexture,
|
||||
};
|
||||
@@ -1,12 +0,0 @@
|
||||
#c {
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
* {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
body {
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
import { Timer } from "three/examples/jsm/misc/Timer.js";
|
||||
import { resizeRendererToDisplaySize } from "./utils/resize";
|
||||
import cube from "./meshes/cube";
|
||||
import sphere from "./meshes/sphere";
|
||||
import torus from "./meshes/torus";
|
||||
import renderer from "./renderer";
|
||||
import camera from "./camera";
|
||||
import scene from "./scene";
|
||||
import controls from "./controls";
|
||||
import stats from "./utils/stats";
|
||||
|
||||
const timer = new Timer();
|
||||
|
||||
export default timer;
|
||||
|
||||
export const tick = () => {
|
||||
stats.begin();
|
||||
const elapsedTime = timer.getElapsed();
|
||||
timer.update();
|
||||
cube.rotation.y = elapsedTime * 0.5;
|
||||
sphere.rotation.y = elapsedTime * 0.5;
|
||||
torus.rotation.y = elapsedTime * 0.5;
|
||||
|
||||
if (resizeRendererToDisplaySize(renderer)) {
|
||||
const canvas = renderer.domElement;
|
||||
camera.aspect = canvas.clientWidth / canvas.clientHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
|
||||
}
|
||||
|
||||
renderer.render(scene, camera);
|
||||
controls.update();
|
||||
stats.end();
|
||||
requestAnimationFrame(tick);
|
||||
};
|
||||
@@ -1,36 +0,0 @@
|
||||
declare global {
|
||||
interface Document {
|
||||
mozCancelFullScreen?: () => Promise<void>;
|
||||
msExitFullscreen?: () => Promise<void>;
|
||||
webkitExitFullscreen?: () => Promise<void>;
|
||||
mozFullScreenElement?: Element;
|
||||
msFullscreenElement?: Element;
|
||||
webkitFullscreenElement?: Element;
|
||||
}
|
||||
|
||||
interface HTMLElement {
|
||||
msRequestFullscreen?: () => Promise<void>;
|
||||
mozRequestFullscreen?: () => Promise<void>;
|
||||
webkitRequestFullscreen?: () => Promise<void>;
|
||||
}
|
||||
}
|
||||
|
||||
const createDoubleClickListener = (canvas: HTMLCanvasElement) => {
|
||||
window.addEventListener("dblclick", () => {
|
||||
const fullScreenElement =
|
||||
document.fullscreenElement || document.webkitFullscreenElement;
|
||||
|
||||
if (!fullScreenElement) {
|
||||
if (canvas.requestFullscreen) {
|
||||
canvas.requestFullscreen();
|
||||
} else if (canvas.webkitRequestFullscreen) {
|
||||
// Does not work on safari mobile
|
||||
canvas.webkitRequestFullscreen();
|
||||
}
|
||||
} else {
|
||||
document.exitFullscreen();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export { createDoubleClickListener };
|
||||
@@ -1,12 +0,0 @@
|
||||
function resizeRendererToDisplaySize(renderer: THREE.WebGLRenderer) {
|
||||
const canvas = renderer.domElement;
|
||||
const width = canvas.clientWidth;
|
||||
const height = canvas.clientHeight;
|
||||
const needResize = canvas.width !== width || canvas.height !== height;
|
||||
if (needResize) {
|
||||
renderer.setSize(width, height, false);
|
||||
}
|
||||
return needResize;
|
||||
}
|
||||
|
||||
export { resizeRendererToDisplaySize };
|
||||
@@ -1,8 +0,0 @@
|
||||
import Stats from "stats.js";
|
||||
|
||||
const stats = new Stats();
|
||||
stats.showPanel(0);
|
||||
|
||||
document.body.appendChild(stats.dom);
|
||||
|
||||
export default stats;
|
||||
1
sandbox/threejs/web/src/vite-env.d.ts
vendored
1
sandbox/threejs/web/src/vite-env.d.ts
vendored
@@ -1 +0,0 @@
|
||||
/// <reference types="vite/client" />
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 725 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 542 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 110 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 614 KiB |
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2020",
|
||||
"useDefineForClassFields": true,
|
||||
"module": "ESNext",
|
||||
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||
"skipLibCheck": true,
|
||||
|
||||
/* Bundler mode */
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
|
||||
/* Linting */
|
||||
"strict": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noFallthroughCasesInSwitch": true
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
Reference in New Issue
Block a user