55 ViewColumn ,
66 window ,
77} from "vscode" ;
8- import { join } from "path" ;
98import { RequestError } from "@octokit/request-error" ;
109import {
1110 AbstractWebview ,
@@ -21,8 +20,6 @@ import {
2120 showAndLogExceptionWithTelemetry ,
2221 showAndLogErrorMessage ,
2322} from "../common/logging" ;
24- import { outputFile , readFile } from "fs-extra" ;
25- import { load as loadYaml } from "js-yaml" ;
2623import { DatabaseItem , DatabaseManager } from "../databases/local-databases" ;
2724import { CodeQLCliServer } from "../codeql-cli/cli" ;
2825import { asError , assertNever , getErrorMessage } from "../common/helpers-pure" ;
@@ -34,11 +31,6 @@ import { showResolvableLocation } from "../databases/local-databases/locations";
3431import { decodeBqrsToExternalApiUsages } from "./bqrs" ;
3532import { redactableError } from "../common/errors" ;
3633import { readQueryResults , runQuery } from "./external-api-usage-query" ;
37- import {
38- createDataExtensionYamlsForApplicationMode ,
39- createDataExtensionYamlsForFrameworkMode ,
40- loadDataExtensionYaml ,
41- } from "./yaml" ;
4234import { ExternalApiUsage } from "./external-api-usage" ;
4335import { ModeledMethod } from "./modeled-method" ;
4436import { ExtensionPack } from "./shared/extension-pack" ;
@@ -49,8 +41,9 @@ import {
4941} from "./auto-model" ;
5042import { enableFrameworkMode , showLlmGeneration } from "../config" ;
5143import { getAutoModelUsages } from "./auto-model-usages-query" ;
52- import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders" ;
5344import { Mode } from "./shared/mode" ;
45+ import { loadModeledMethods , saveModeledMethods } from "./modeled-method-fs" ;
46+ import { join } from "path" ;
5447
5548export class DataExtensionsEditorView extends AbstractWebview <
5649 ToDataExtensionsEditorMessage ,
@@ -123,9 +116,14 @@ export class DataExtensionsEditorView extends AbstractWebview<
123116
124117 break ;
125118 case "saveModeledMethods" :
126- await this . saveModeledMethods (
119+ await saveModeledMethods (
120+ this . extensionPack ,
121+ this . databaseItem . name ,
122+ this . databaseItem . language ,
127123 msg . externalApiUsages ,
128124 msg . modeledMethods ,
125+ this . mode ,
126+ this . app . logger ,
129127 ) ;
130128 await Promise . all ( [ this . setViewState ( ) , this . loadExternalApiUsages ( ) ] ) ;
131129
@@ -194,79 +192,16 @@ export class DataExtensionsEditorView extends AbstractWebview<
194192 }
195193 }
196194
197- protected async saveModeledMethods (
198- externalApiUsages : ExternalApiUsage [ ] ,
199- modeledMethods : Record < string , ModeledMethod > ,
200- ) : Promise < void > {
201- let yamls : Record < string , string > ;
202- switch ( this . mode ) {
203- case Mode . Application :
204- yamls = createDataExtensionYamlsForApplicationMode (
205- this . databaseItem . language ,
206- externalApiUsages ,
207- modeledMethods ,
208- ) ;
209- break ;
210- case Mode . Framework :
211- yamls = createDataExtensionYamlsForFrameworkMode (
212- this . databaseItem . name ,
213- this . databaseItem . language ,
214- externalApiUsages ,
215- modeledMethods ,
216- ) ;
217- break ;
218- default :
219- assertNever ( this . mode ) ;
220- }
221-
222- for ( const [ filename , yaml ] of Object . entries ( yamls ) ) {
223- await outputFile ( join ( this . extensionPack . path , filename ) , yaml ) ;
224- }
225-
226- void this . app . logger . log ( `Saved data extension YAML` ) ;
227- }
228-
229195 protected async loadExistingModeledMethods ( ) : Promise < void > {
230196 try {
231- const extensions = await this . cliServer . resolveExtensions (
232- this . extensionPack . path ,
233- getOnDiskWorkspaceFolders ( ) ,
197+ const modeledMethods = await loadModeledMethods (
198+ this . extensionPack ,
199+ this . cliServer ,
200+ this . app . logger ,
234201 ) ;
235-
236- const modelFiles = new Set < string > ( ) ;
237-
238- if ( this . extensionPack . path in extensions . data ) {
239- for ( const extension of extensions . data [ this . extensionPack . path ] ) {
240- modelFiles . add ( extension . file ) ;
241- }
242- }
243-
244- const existingModeledMethods : Record < string , ModeledMethod > = { } ;
245-
246- for ( const modelFile of modelFiles ) {
247- const yaml = await readFile ( modelFile , "utf8" ) ;
248-
249- const data = loadYaml ( yaml , {
250- filename : modelFile ,
251- } ) ;
252-
253- const modeledMethods = loadDataExtensionYaml ( data ) ;
254- if ( ! modeledMethods ) {
255- void showAndLogErrorMessage (
256- this . app . logger ,
257- `Failed to parse data extension YAML ${ modelFile } .` ,
258- ) ;
259- continue ;
260- }
261-
262- for ( const [ key , value ] of Object . entries ( modeledMethods ) ) {
263- existingModeledMethods [ key ] = value ;
264- }
265- }
266-
267202 await this . postMessage ( {
268203 t : "loadModeledMethods" ,
269- modeledMethods : existingModeledMethods ,
204+ modeledMethods,
270205 } ) ;
271206 } catch ( e : unknown ) {
272207 void showAndLogErrorMessage (
0 commit comments