Merge branch 'develop' into issue-to-operator-priority
This commit is contained in:
		
						commit
						1bb9e75ed3
					
				
							
								
								
									
										16
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -26,27 +26,27 @@ jobs: | ||||||
|     steps: |     steps: | ||||||
|       - id: skip_lang_check |       - id: skip_lang_check | ||||||
|         name: Check if the changes are about squiggle-lang src files |         name: Check if the changes are about squiggle-lang src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/squiggle-lang/**"]' |           paths: '["packages/squiggle-lang/**"]' | ||||||
|       - id: skip_components_check |       - id: skip_components_check | ||||||
|         name: Check if the changes are about components src files |         name: Check if the changes are about components src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/components/**"]' |           paths: '["packages/components/**"]' | ||||||
|       - id: skip_website_check |       - id: skip_website_check | ||||||
|         name: Check if the changes are about website src files |         name: Check if the changes are about website src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/website/**"]' |           paths: '["packages/website/**"]' | ||||||
|       - id: skip_vscodeext_check |       - id: skip_vscodeext_check | ||||||
|         name: Check if the changes are about vscode extension src files |         name: Check if the changes are about vscode extension src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/vscode-ext/**"]' |           paths: '["packages/vscode-ext/**"]' | ||||||
|       - id: skip_cli_check |       - id: skip_cli_check | ||||||
|         name: Check if the changes are about cli src files |         name: Check if the changes are about cli src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/cli/**"]' |           paths: '["packages/cli/**"]' | ||||||
| 
 | 
 | ||||||
|  | @ -116,8 +116,8 @@ jobs: | ||||||
|           dry: true |           dry: true | ||||||
|           prettier_options: --check packages/components --ignore-path packages/components/.prettierignore |           prettier_options: --check packages/components --ignore-path packages/components/.prettierignore | ||||||
| 
 | 
 | ||||||
|   components-bundle-build: |   components-bundle-build-test: | ||||||
|     name: Components bundle and build |     name: Components bundle, build and test | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     needs: pre_check |     needs: pre_check | ||||||
|     if: ${{ (needs.pre_check.outputs.should_skip_components != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') }} |     if: ${{ (needs.pre_check.outputs.should_skip_components != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') }} | ||||||
|  | @ -135,6 +135,8 @@ jobs: | ||||||
|         run: yarn bundle |         run: yarn bundle | ||||||
|       - name: Build storybook |       - name: Build storybook | ||||||
|         run: yarn build |         run: yarn build | ||||||
|  |       - name: Test components  | ||||||
|  |         run: yarn test | ||||||
| 
 | 
 | ||||||
|   website-lint: |   website-lint: | ||||||
|     name: Website lint |     name: Website lint | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								.github/workflows/release-please.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/release-please.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -18,27 +18,27 @@ jobs: | ||||||
|     steps: |     steps: | ||||||
|       - id: skip_lang_check |       - id: skip_lang_check | ||||||
|         name: Check if the changes are about squiggle-lang src files |         name: Check if the changes are about squiggle-lang src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/squiggle-lang/**"]' |           paths: '["packages/squiggle-lang/**"]' | ||||||
|       - id: skip_components_check |       - id: skip_components_check | ||||||
|         name: Check if the changes are about components src files |         name: Check if the changes are about components src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/components/**"]' |           paths: '["packages/components/**"]' | ||||||
|       - id: skip_website_check |       - id: skip_website_check | ||||||
|         name: Check if the changes are about website src files |         name: Check if the changes are about website src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/website/**"]' |           paths: '["packages/website/**"]' | ||||||
|       - id: skip_vscodeext_check |       - id: skip_vscodeext_check | ||||||
|         name: Check if the changes are about vscode extension src files |         name: Check if the changes are about vscode extension src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/vscode-ext/**"]' |           paths: '["packages/vscode-ext/**"]' | ||||||
|       - id: skip_cli_check |       - id: skip_cli_check | ||||||
|         name: Check if the changes are about cli src files |         name: Check if the changes are about cli src files | ||||||
|         uses: fkirc/skip-duplicate-actions@v5.1.0 |         uses: fkirc/skip-duplicate-actions@v5.2.0 | ||||||
|         with: |         with: | ||||||
|           paths: '["packages/cli/**"]' |           paths: '["packages/cli/**"]' | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "chalk": "^5.0.1", |     "chalk": "^5.0.1", | ||||||
|     "chokidar": "^3.5.3", |     "chokidar": "^3.5.3", | ||||||
|     "commander": "^9.4.0", |     "commander": "^9.4.1", | ||||||
|     "fs": "^0.0.1-security", |     "fs": "^0.0.1-security", | ||||||
|     "glob": "^8.0.3", |     "glob": "^8.0.3", | ||||||
|     "indent-string": "^5.0.0" |     "indent-string": "^5.0.0" | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								packages/components/jest.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								packages/components/jest.config.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | /** @type {import('ts-jest').JestConfigWithTsJest} */ | ||||||
|  | module.exports = { | ||||||
|  |   preset: "ts-jest", | ||||||
|  |   setupFilesAfterEnv: ["<rootDir>/test/setup.js"], | ||||||
|  |   testEnvironment: "jsdom", | ||||||
|  | }; | ||||||
|  | @ -5,13 +5,13 @@ | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@floating-ui/react-dom": "^1.0.0", |     "@floating-ui/react-dom": "^1.0.0", | ||||||
|     "@floating-ui/react-dom-interactions": "^0.10.1", |     "@floating-ui/react-dom-interactions": "^0.10.1", | ||||||
|     "@headlessui/react": "^1.7.2", |     "@headlessui/react": "^1.7.3", | ||||||
|     "@heroicons/react": "^1.0.6", |     "@heroicons/react": "^1.0.6", | ||||||
|     "@hookform/resolvers": "^2.9.8", |     "@hookform/resolvers": "^2.9.8", | ||||||
|     "@quri/squiggle-lang": "^0.5.0", |     "@quri/squiggle-lang": "^0.5.0", | ||||||
|     "@react-hook/size": "^2.1.2", |     "@react-hook/size": "^2.1.2", | ||||||
|     "clsx": "^1.2.1", |     "clsx": "^1.2.1", | ||||||
|     "framer-motion": "^7.4.0", |     "framer-motion": "^7.5.1", | ||||||
|     "lodash": "^4.17.21", |     "lodash": "^4.17.21", | ||||||
|     "react": "^18.1.0", |     "react": "^18.1.0", | ||||||
|     "react-ace": "^10.1.0", |     "react-ace": "^10.1.0", | ||||||
|  | @ -38,12 +38,16 @@ | ||||||
|     "@testing-library/react": "^13.4.0", |     "@testing-library/react": "^13.4.0", | ||||||
|     "@testing-library/user-event": "^14.4.3", |     "@testing-library/user-event": "^14.4.3", | ||||||
|     "@types/jest": "^27.5.0", |     "@types/jest": "^27.5.0", | ||||||
|     "@types/lodash": "^4.14.185", |     "@types/lodash": "^4.14.186", | ||||||
|     "@types/node": "^18.7.22", |     "@types/node": "^18.8.0", | ||||||
|     "@types/react": "^18.0.21", |     "@types/react": "^18.0.21", | ||||||
|     "@types/styled-components": "^5.1.26", |     "@types/styled-components": "^5.1.26", | ||||||
|     "@types/webpack": "^5.28.0", |     "@types/webpack": "^5.28.0", | ||||||
|  |     "canvas": "^2.10.1", | ||||||
|     "cross-env": "^7.0.3", |     "cross-env": "^7.0.3", | ||||||
|  |     "jest": "^29.0.3", | ||||||
|  |     "jest-environment-jsdom": "^29.0.3", | ||||||
|  |     "jsdom": "^20.0.0", | ||||||
|     "mini-css-extract-plugin": "^2.6.1", |     "mini-css-extract-plugin": "^2.6.1", | ||||||
|     "postcss-cli": "^10.0.0", |     "postcss-cli": "^10.0.0", | ||||||
|     "postcss-import": "^15.0.0", |     "postcss-import": "^15.0.0", | ||||||
|  | @ -53,9 +57,10 @@ | ||||||
|     "react-scripts": "^5.0.1", |     "react-scripts": "^5.0.1", | ||||||
|     "style-loader": "^3.3.1", |     "style-loader": "^3.3.1", | ||||||
|     "tailwindcss": "^3.1.8", |     "tailwindcss": "^3.1.8", | ||||||
|  |     "ts-jest": "^29.0.2", | ||||||
|     "ts-loader": "^9.4.1", |     "ts-loader": "^9.4.1", | ||||||
|     "tsconfig-paths-webpack-plugin": "^4.0.0", |     "tsconfig-paths-webpack-plugin": "^4.0.0", | ||||||
|     "typescript": "^4.8.3", |     "typescript": "^4.8.4", | ||||||
|     "web-vitals": "^3.0.2", |     "web-vitals": "^3.0.2", | ||||||
|     "webpack": "^5.74.0", |     "webpack": "^5.74.0", | ||||||
|     "webpack-cli": "^4.10.0", |     "webpack-cli": "^4.10.0", | ||||||
|  | @ -75,7 +80,9 @@ | ||||||
|     "all": "yarn bundle && yarn build", |     "all": "yarn bundle && yarn build", | ||||||
|     "lint": "prettier --check .", |     "lint": "prettier --check .", | ||||||
|     "format": "prettier --write .", |     "format": "prettier --write .", | ||||||
|     "prepack": "yarn run build:cjs && yarn run bundle" |     "prepack": "yarn run build:cjs && yarn run bundle", | ||||||
|  |     "test": "jest", | ||||||
|  |     "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand" | ||||||
|   }, |   }, | ||||||
|   "eslintConfig": { |   "eslintConfig": { | ||||||
|     "extends": [ |     "extends": [ | ||||||
|  |  | ||||||
|  | @ -83,18 +83,32 @@ export const DistributionChart: React.FC<DistributionChartProps> = (props) => { | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const spec = buildVegaSpec(props); |     const domain = shapes.value.flatMap((shape) => | ||||||
|  |       shape.discrete.concat(shape.continuous) | ||||||
|  |     ); | ||||||
| 
 | 
 | ||||||
|     let widthProp = width ? width : size.width; |     const spec = buildVegaSpec({ | ||||||
|  |       ...props, | ||||||
|  |       minX: props.minX ?? Math.min(...domain.map((x) => x.x)), | ||||||
|  |       maxX: props.minX ?? Math.max(...domain.map((x) => x.x)), | ||||||
|  |       maxY: Math.max(...domain.map((x) => x.y)), | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // I think size.width is sometimes not finite due to the component not being in a visible context
 | ||||||
|  |     // This occurs during testing
 | ||||||
|  |     let widthProp = width | ||||||
|  |       ? width | ||||||
|  |       : Number.isFinite(size.width) | ||||||
|  |       ? size.width | ||||||
|  |       : 400; | ||||||
|     if (widthProp < 20) { |     if (widthProp < 20) { | ||||||
|       console.warn( |       console.warn( | ||||||
|         `Width of Distribution is set to ${widthProp}, which is too small` |         `Width of Distribution is set to ${widthProp}, which is too small` | ||||||
|       ); |       ); | ||||||
|       widthProp = 20; |       widthProp = 20; | ||||||
|     } |     } | ||||||
|     const domain = shapes.value.flatMap((shape) => | 
 | ||||||
|       shape.discrete.concat(shape.continuous) |     const vegaData = { data: shapes.value, samples }; | ||||||
|     ); |  | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <div style={{ width: widthProp }}> |       <div style={{ width: widthProp }}> | ||||||
|  | @ -105,7 +119,7 @@ export const DistributionChart: React.FC<DistributionChartProps> = (props) => { | ||||||
|         ) : ( |         ) : ( | ||||||
|           <Vega |           <Vega | ||||||
|             spec={spec} |             spec={spec} | ||||||
|             data={{ data: shapes.value, domain, samples }} |             data={vegaData} | ||||||
|             width={widthProp - 10} |             width={widthProp - 10} | ||||||
|             height={height} |             height={height} | ||||||
|             actions={actions} |             actions={actions} | ||||||
|  |  | ||||||
|  | @ -26,7 +26,6 @@ export const linearXScale: LinearScale = { | ||||||
|   range: "width", |   range: "width", | ||||||
|   zero: false, |   zero: false, | ||||||
|   nice: false, |   nice: false, | ||||||
|   domain: { data: "domain", field: "x" }, |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const logXScale: LogScale = { | export const logXScale: LogScale = { | ||||||
|  | @ -37,7 +36,6 @@ export const logXScale: LogScale = { | ||||||
|   base: 10, |   base: 10, | ||||||
|   nice: false, |   nice: false, | ||||||
|   clamp: true, |   clamp: true, | ||||||
|   domain: { data: "domain", field: "x" }, |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const timeXScale: TimeScale = { | export const timeXScale: TimeScale = { | ||||||
|  | @ -46,7 +44,6 @@ export const timeXScale: TimeScale = { | ||||||
|   type: "time", |   type: "time", | ||||||
|   range: "width", |   range: "width", | ||||||
|   nice: false, |   nice: false, | ||||||
|   domain: { data: "domain", field: "x" }, |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /** Y Scales */ | /** Y Scales */ | ||||||
|  | @ -55,7 +52,6 @@ export const linearYScale: LinearScale = { | ||||||
|   type: "linear", |   type: "linear", | ||||||
|   range: "height", |   range: "height", | ||||||
|   zero: true, |   zero: true, | ||||||
|   domain: { data: "domain", field: "y" }, |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const expYScale: PowScale = { | export const expYScale: PowScale = { | ||||||
|  | @ -65,7 +61,6 @@ export const expYScale: PowScale = { | ||||||
|   range: "height", |   range: "height", | ||||||
|   zero: true, |   zero: true, | ||||||
|   nice: false, |   nice: false, | ||||||
|   domain: { data: "domain", field: "y" }, |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const defaultTickFormat = ".9~s"; | export const defaultTickFormat = ".9~s"; | ||||||
|  | @ -73,9 +68,17 @@ export const timeTickFormat = "%b %d, %Y %H:%M"; | ||||||
| const width = 500; | const width = 500; | ||||||
| 
 | 
 | ||||||
| export function buildVegaSpec( | export function buildVegaSpec( | ||||||
|   specOptions: DistributionChartSpecOptions |   specOptions: DistributionChartSpecOptions & { maxY: number } | ||||||
| ): VisualizationSpec { | ): VisualizationSpec { | ||||||
|   const { title, minX, maxX, logX, expY, xAxisType = "number" } = specOptions; |   const { | ||||||
|  |     title, | ||||||
|  |     minX, | ||||||
|  |     maxX, | ||||||
|  |     logX, | ||||||
|  |     expY, | ||||||
|  |     xAxisType = "number", | ||||||
|  |     maxY, | ||||||
|  |   } = specOptions; | ||||||
| 
 | 
 | ||||||
|   const dateTime = xAxisType === "dateTime"; |   const dateTime = xAxisType === "dateTime"; | ||||||
| 
 | 
 | ||||||
|  | @ -88,13 +91,15 @@ export function buildVegaSpec( | ||||||
| 
 | 
 | ||||||
|   let xScale = dateTime ? timeXScale : logX ? logXScale : linearXScale; |   let xScale = dateTime ? timeXScale : logX ? logXScale : linearXScale; | ||||||
| 
 | 
 | ||||||
|   if (minX !== undefined && Number.isFinite(minX)) { |   xScale = { | ||||||
|     xScale = { ...xScale, domainMin: minX }; |     ...xScale, | ||||||
|   } |     domain: [minX ?? 0, maxX ?? 1], | ||||||
|  |     domainMin: minX, | ||||||
|  |     domainMax: maxX, | ||||||
|  |   }; | ||||||
| 
 | 
 | ||||||
|   if (maxX !== undefined && Number.isFinite(maxX)) { |   let yScale = expY ? expYScale : linearYScale; | ||||||
|     xScale = { ...xScale, domainMax: maxX }; |   yScale = { ...yScale, domain: [0, maxY ?? 1], domainMin: 0, domainMax: maxY }; | ||||||
|   } |  | ||||||
| 
 | 
 | ||||||
|   const spec: VisualizationSpec = { |   const spec: VisualizationSpec = { | ||||||
|     $schema: "https://vega.github.io/schema/vega/v5.json", |     $schema: "https://vega.github.io/schema/vega/v5.json", | ||||||
|  | @ -128,7 +133,7 @@ export function buildVegaSpec( | ||||||
|     ], |     ], | ||||||
|     scales: [ |     scales: [ | ||||||
|       xScale, |       xScale, | ||||||
|       expY ? expYScale : linearYScale, |       yScale, | ||||||
|       { |       { | ||||||
|         name: "color", |         name: "color", | ||||||
|         type: "ordinal", |         type: "ordinal", | ||||||
|  |  | ||||||
							
								
								
									
										13
									
								
								packages/components/test/basic.test.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								packages/components/test/basic.test.tsx
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | import { render } from "@testing-library/react"; | ||||||
|  | import React from "react"; | ||||||
|  | import "@testing-library/jest-dom"; | ||||||
|  | import { SquiggleChart } from "../src/index"; | ||||||
|  | 
 | ||||||
|  | test("Logs no warnings or errors", async () => { | ||||||
|  |   debugger; | ||||||
|  |   const { unmount } = render(<SquiggleChart code={"normal(0, 1)"} />); | ||||||
|  |   unmount(); | ||||||
|  | 
 | ||||||
|  |   expect(console.warn).not.toBeCalled(); | ||||||
|  |   expect(console.error).not.toBeCalled(); | ||||||
|  | }); | ||||||
							
								
								
									
										8
									
								
								packages/components/test/setup.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packages/components/test/setup.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | global.console = { | ||||||
|  |   ...console, | ||||||
|  |   log: jest.fn(console.log), | ||||||
|  |   debug: jest.fn(console.debug), | ||||||
|  |   info: jest.fn(console.info), | ||||||
|  |   warn: jest.fn(console.warn), | ||||||
|  |   error: jest.fn(console.error), | ||||||
|  | }; | ||||||
|  | @ -112,6 +112,25 @@ describe("project2", () => { | ||||||
|   }) |   }) | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  | describe("removing sources", () => { | ||||||
|  |   let project = Project.createProject() | ||||||
|  |   Project.setContinues(project, "main", ["second"]) | ||||||
|  |   Project.setContinues(project, "second", ["first"]) | ||||||
|  |   Project.setSource(project, "first", "x=1") | ||||||
|  |   Project.setSource(project, "second", "y=2") | ||||||
|  |   Project.setSource(project, "main", "y") | ||||||
|  | 
 | ||||||
|  |   Project.removeSource(project, "main") | ||||||
|  | 
 | ||||||
|  |   test("project doesn't have source", () => { | ||||||
|  |     expect(Project.getSource(project, "main")) == None | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   test("dependents get updated", () => { | ||||||
|  |     expect(Project.getDependents(project, "second")) == [] | ||||||
|  |   }) | ||||||
|  | }) | ||||||
|  | 
 | ||||||
| describe("project with include", () => { | describe("project with include", () => { | ||||||
|   let project = Project.createProject() |   let project = Project.createProject() | ||||||
|   Project.setContinues(project, "main", ["second"]) |   Project.setContinues(project, "main", ["second"]) | ||||||
|  |  | ||||||
|  | @ -70,7 +70,7 @@ | ||||||
|     "ts-jest": "^27.1.4", |     "ts-jest": "^27.1.4", | ||||||
|     "ts-loader": "^9.4.1", |     "ts-loader": "^9.4.1", | ||||||
|     "ts-node": "^10.9.1", |     "ts-node": "^10.9.1", | ||||||
|     "typescript": "^4.8.3", |     "typescript": "^4.8.4", | ||||||
|     "webpack": "^5.74.0", |     "webpack": "^5.74.0", | ||||||
|     "webpack-cli": "^4.10.0" |     "webpack-cli": "^4.10.0" | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|  | @ -22,6 +22,10 @@ export class SqProject { | ||||||
|     return RSProject.setSource(this._value, sourceId, value); |     return RSProject.setSource(this._value, sourceId, value); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   removeSource(sourceId: string) { | ||||||
|  |     RSProject.removeSource(this._value, sourceId); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   getSource(sourceId: string) { |   getSource(sourceId: string) { | ||||||
|     return RSProject.getSource(this._value, sourceId); |     return RSProject.getSource(this._value, sourceId); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -50,6 +50,13 @@ Sets the source for a given source Id. | ||||||
| let setSource = (project: reducerProject, sourceId: string, value: string): unit => | let setSource = (project: reducerProject, sourceId: string, value: string): unit => | ||||||
|   project->Private.setSource(sourceId, value) |   project->Private.setSource(sourceId, value) | ||||||
| 
 | 
 | ||||||
|  | /* | ||||||
|  | Removes the source for a given source Id. | ||||||
|  | */ | ||||||
|  | @genType | ||||||
|  | let removeSource = (project: reducerProject, sourceId: string): unit => | ||||||
|  |   project->Private.removeSource(sourceId) | ||||||
|  | 
 | ||||||
| /* | /* | ||||||
| Gets the source for a given source id. | Gets the source for a given source id. | ||||||
| */ | */ | ||||||
|  |  | ||||||
|  | @ -61,6 +61,10 @@ let setSource = (project: t, sourceId: string, value: string): unit => { | ||||||
|   touchDependents(project, sourceId) |   touchDependents(project, sourceId) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | let removeSource = (project: t, sourceId: string): unit => { | ||||||
|  |   Belt.MutableMap.String.remove(project.items, sourceId) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| let clean = (project: t, sourceId: string): unit => { | let clean = (project: t, sourceId: string): unit => { | ||||||
|   let newItem = project->getItem(sourceId)->ProjectItem.clean |   let newItem = project->getItem(sourceId)->ProjectItem.clean | ||||||
|   project->setItem(sourceId, newItem) |   project->setItem(sourceId, newItem) | ||||||
|  |  | ||||||
|  | @ -131,7 +131,7 @@ | ||||||
|     "@types/vscode": "^1.70.0", |     "@types/vscode": "^1.70.0", | ||||||
|     "glob": "^8.0.3", |     "glob": "^8.0.3", | ||||||
|     "js-yaml": "^4.1.0", |     "js-yaml": "^4.1.0", | ||||||
|     "typescript": "^4.8.3", |     "typescript": "^4.8.4", | ||||||
|     "vsce-yarn-patch": "^1.66.2" |     "vsce-yarn-patch": "^1.66.2" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user