@akanjs/cli 3.0.0-alpha.11 → 3.0.0-alpha.110
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/.build-stamp +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/{abstractCompactor-e5yq60qz.js → abstractCompactor-mjh5ppsq.js} +3 -5
- package/{agent.command-a3n15c6t.js → agent.command-d2gfxfck.js} +11 -13
- package/{application.command-rdm3et0g.js → application.command-pj2m7584.js} +65 -38
- package/{applicationBuildRunner-6m8n71w4.js → applicationBuildRunner-kxwbssgn.js} +27 -23
- package/{applicationReleasePackager-gg8ccbeh.js → applicationReleasePackager-4yasxwv9.js} +8 -9
- package/buildBatch.proc.js +12 -14
- package/capacitorApp-36rbr858.js +12 -0
- package/{cloud.command-56aeekqn.js → cloud.command-gxqp8xdv.js} +15 -18
- package/commandManifest.json +1 -1
- package/{context.command-ysxawe7h.js → context.command-ez8a0zyz.js} +19 -23
- package/dependencyScanner-shs82ynp.js +8 -0
- package/devTui-40ggmd99.js +553 -0
- package/devTuiView-c08ccbat.js +9 -0
- package/getDirname-dr3jz1xg.js +7 -0
- package/{guideline.command-yqf9a372.js → guideline.command-xmqwx8zm.js} +24 -22
- package/guidelines/agentRule/agentRule.generate.json +31 -0
- package/guidelines/agentRule/agentRule.instruction.md +531 -0
- package/guidelines/conventions/conventions.instruction.md +493 -369
- package/guidelines/framework/framework.generate.json +3 -2
- package/guidelines/framework/framework.instruction.md +0 -9
- package/guidelines/mcpRule/mcpRule.generate.json +35 -0
- package/guidelines/mcpRule/mcpRule.instruction.md +460 -0
- package/guidelines/modelStore/modelStore.instruction.md +12 -0
- package/guidelines/modelTemplate/modelTemplate.instruction.md +5 -0
- package/guidelines/queryRule/queryRule.generate.json +31 -0
- package/guidelines/queryRule/queryRule.instruction.md +178 -0
- package/guidelines/runtimeRule/runtimeRule.generate.json +25 -0
- package/guidelines/runtimeRule/runtimeRule.instruction.md +220 -0
- package/guidelines/ssrRule/ssrRule.instruction.md +51 -5
- package/guidelines/transportRule/transportRule.generate.json +31 -0
- package/guidelines/transportRule/transportRule.instruction.md +60 -0
- package/guidelines/workspaceOnboarding/workspaceOnboarding.instruction.md +54 -764
- package/guidelines/workspaceRecipes/workspaceRecipes.generate.json +33 -0
- package/guidelines/workspaceRecipes/workspaceRecipes.instruction.md +467 -0
- package/incrementalBuilder.proc.js +26 -25
- package/{index-8pd02prk.js → index-259dsnz3.js} +58 -25
- package/{index-yzsxc30b.js → index-2tv3fdx4.js} +975 -234
- package/index-3d9y066c.js +76 -0
- package/{index-76rn3g2c.js → index-47pj3aee.js} +4 -4
- package/{index-m90fn8xe.js → index-4edzf1gr.js} +32 -32
- package/{index-3789fdpg.js → index-600zhnve.js} +94 -61
- package/{index-1577bej2.js → index-6wwzs1bc.js} +2 -2
- package/{index-cv9cxs5k.js → index-7737gxcp.js} +18 -18
- package/{index-a5cs7d8r.js → index-8few9nyh.js} +13 -13
- package/{index-mewacxye.js → index-8pm30m73.js} +57 -57
- package/{index-wnp7hwq7.js → index-92zztqy1.js} +7 -7
- package/{index-fgc8r6dj.js → index-a5vmm6x4.js} +3 -1
- package/{index-cav1azma.js → index-a64esmtb.js} +1106 -1369
- package/{index-nwqqssnb.js → index-aj7tyh5w.js} +26 -23
- package/{index-xys926f2.js → index-by5gpp8x.js} +4 -4
- package/{index-yzmqvg23.js → index-fz5q3gd7.js} +8 -8
- package/{index-kcsa1zff.js → index-gyd220p2.js} +4 -4
- package/{index-j37qq1f2.js → index-h7yw2z9n.js} +7 -7
- package/{index-bjpxzr6s.js → index-hwkygn9s.js} +51 -3
- package/index-j9yhg404.js +159 -0
- package/{index-46tjzh6s.js → index-kcxmv48c.js} +29 -29
- package/{index-0cj2zxbm.js → index-kn1h7p1x.js} +12 -11
- package/{index-e4b2ae6b.js → index-ktb5njgy.js} +41 -34
- package/{index-etwh7sd3.js → index-mak3cd28.js} +100 -32
- package/{index-xjd3rqzj.js → index-n68jx79w.js} +6 -15
- package/{index-z1s5f4e0.js → index-ne2qy0nk.js} +36 -37
- package/{index-65aeh789.js → index-pnqbkf5p.js} +1 -1
- package/{index-67546d0j.js → index-q0y2jq9j.js} +14 -2
- package/{index-4mgkgba3.js → index-rwg2aa4f.js} +14 -14
- package/{index-bzznxgcx.js → index-v0qh106m.js} +1002 -128
- package/{index-j9cxndc0.js → index-w8kmx1b6.js} +20 -11
- package/{index-h5whaj26.js → index-ws5e0j51.js} +16 -12
- package/{index-9va8zayb.js → index-wt7qrtd4.js} +27 -27
- package/index.js +22 -25
- package/{library.command-x6t29a30.js → library.command-nbsky672.js} +11 -10
- package/{localRegistry.command-649g1n7b.js → localRegistry.command-ts6t5e5a.js} +20 -23
- package/{module.command-8w8ys5t3.js → module.command-29vqzrh8.js} +13 -16
- package/{package.command-zgy7f3fz.js → package.command-axv0abmn.js} +8 -10
- package/package.json +5 -7
- package/{page.command-yjmnkyk2.js → page.command-vs9s3zrh.js} +7 -9
- package/{primitive.command-gfqaagsg.js → primitive.command-cbxmqbtc.js} +13 -16
- package/{quality.command-ec8r1dn3.js → quality.command-gmbs7nws.js} +184 -334
- package/recipeScanner-fpagtgc1.js +11 -0
- package/{repair.command-p9ey6mkm.js → repair.command-bqsjptsj.js} +12 -14
- package/{routeSourceValidator-e4jmbfcx.js → routeSourceValidator-apyqw7wk.js} +90 -19
- package/{scalar.command-9dhmqhtm.js → scalar.command-6k1vhe9s.js} +11 -14
- package/subspace.command-35a3t6vv.js +755 -0
- package/templates/app/env/env.client.debug.ts.template +1 -5
- package/templates/app/env/env.client.develop.ts.template +1 -5
- package/templates/app/env/env.client.local.ts.template +1 -5
- package/templates/app/env/env.client.main.ts.template +1 -5
- package/templates/app/env/env.client.testing.ts.template +1 -5
- package/templates/app/env/env.client.type.ts +2 -6
- package/templates/app/env/env.server.debug.ts.template +1 -5
- package/templates/app/env/env.server.develop.ts.template +1 -5
- package/templates/app/env/env.server.local.ts.template +1 -5
- package/templates/app/env/env.server.main.ts.template +1 -5
- package/templates/app/main.ts +3 -1
- package/templates/app/page/_index.tsx +3 -3
- package/templates/app/page/_layout.tsx +31 -32
- package/templates/appSample/lib/task/task.signal.ts +11 -6
- package/templates/appSample/page/task/[taskId]/_index.tsx +22 -27
- package/templates/appSample/page/task/[taskId]/edit.tsx +25 -30
- package/templates/appSample/page/task/_index.tsx +3 -7
- package/templates/appSample/page/task/_layout.tsx +4 -15
- package/templates/appSample/page/task/new.tsx +4 -10
- package/templates/appSample/srvkit/AuthGuard.ts +2 -2
- package/templates/crudPages/[__model__Id]/edit/page.tsx +27 -29
- package/templates/crudPages/[__model__Id]/page.tsx +24 -32
- package/templates/crudPages/new/page.tsx +26 -25
- package/templates/crudPages/page.tsx +27 -26
- package/templates/crudSinglePage/page.tsx +26 -21
- package/templates/env/_env.server.type.ts +7 -5
- package/templates/lib/db.ts +1 -1
- package/templates/lib/dict.ts +1 -1
- package/templates/lib/sig.ts +5 -1
- package/templates/lib/srv.ts +6 -2
- package/templates/module/__model__.dictionary.ts +4 -1
- package/templates/module/__model__.signal.ts +2 -3
- package/templates/module/__model__.store.ts +1 -2
- package/templates/workspaceRoot/.gitignore.template +0 -1
- package/templates/workspaceRoot/.husky/pre-commit.template +16 -0
- package/templates/workspaceRoot/.vscode/settings.json.template +1 -1
- package/templates/workspaceRoot/AGENTS.md.template +4 -0
- package/templates/workspaceRoot/CLAUDE.md.template +19 -0
- package/templates/workspaceRoot/biome.json.template +1 -1
- package/templates/workspaceRoot/docs/AI-DEVELOPMENT.md.template +10 -14
- package/templates/workspaceRoot/docs/GENERATED.md.template +12 -10
- package/templates/workspaceRoot/package.json.template +2 -4
- package/typeChecker-3xgrzc2v.js +7 -0
- package/typecheck.proc.js +4 -5
- package/{workflow.command-ycwc6zr6.js → workflow.command-nwpcdc8p.js} +22 -25
- package/{workspace.command-xhyhajxa.js → workspace.command-aczjxzbf.js} +64 -66
- package/capacitorApp-mr81qdxq.js +0 -61
- package/dependencyScanner-f6grrep3.js +0 -9
- package/getDirname-m9s0cmhq.js +0 -8
- package/index-mxvakhsm.js +0 -66
- package/index-r24hmh0q.js +0 -4
- package/recipeScanner-tghkzrrt.js +0 -12
- package/typeChecker-kravn7ns.js +0 -8
- /package/{index-0wae5ebk.js → index-meh558jy.js} +0 -0
- /package/{index-ss469dec.js → index-nz8prx9g.js} +0 -0
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
} from "./index-
|
|
5
|
-
import {
|
|
6
|
-
PageScript
|
|
7
|
-
} from "./index-65aeh789.js";
|
|
3
|
+
FileSys
|
|
4
|
+
} from "./index-q0y2jq9j.js";
|
|
8
5
|
import {
|
|
9
6
|
AiSession
|
|
10
|
-
} from "./index-
|
|
7
|
+
} from "./index-kn1h7p1x.js";
|
|
11
8
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
createPassedPrimitiveReport,
|
|
15
|
-
generatedFilesForSync,
|
|
16
|
-
moduleSourcePaths,
|
|
17
|
-
sourceFile
|
|
18
|
-
} from "./index-kcsa1zff.js";
|
|
19
|
-
import {
|
|
20
|
-
Prompter
|
|
21
|
-
} from "./index-j37qq1f2.js";
|
|
9
|
+
ModuleExecutor
|
|
10
|
+
} from "./index-2tv3fdx4.js";
|
|
22
11
|
import {
|
|
23
12
|
runner,
|
|
24
13
|
script
|
|
25
|
-
} from "./index-
|
|
14
|
+
} from "./index-mak3cd28.js";
|
|
26
15
|
import {
|
|
27
|
-
|
|
28
|
-
|
|
16
|
+
sourceFile,
|
|
17
|
+
moduleSourcePaths,
|
|
18
|
+
generatedFilesForSync,
|
|
19
|
+
createPassedPrimitiveReport,
|
|
20
|
+
bilingualLabelForField,
|
|
21
|
+
bilingualDescriptionForField
|
|
22
|
+
} from "./index-gyd220p2.js";
|
|
29
23
|
import {
|
|
30
|
-
|
|
31
|
-
} from "./index-
|
|
24
|
+
PageScript
|
|
25
|
+
} from "./index-pnqbkf5p.js";
|
|
26
|
+
import {
|
|
27
|
+
Prompter
|
|
28
|
+
} from "./index-h7yw2z9n.js";
|
|
29
|
+
import {
|
|
30
|
+
pluralizeName
|
|
31
|
+
} from "./index-nz8prx9g.js";
|
|
32
32
|
|
|
33
33
|
// pkgs/@akanjs/devkit/getRelatedCnsts.ts
|
|
34
34
|
import { readFileSync, realpathSync } from "fs";
|
|
@@ -662,39 +662,39 @@ class ModuleRunner extends runner("module") {
|
|
|
662
662
|
}
|
|
663
663
|
|
|
664
664
|
// pkgs/@akanjs/cli/module/module.script.ts
|
|
665
|
-
var moduleChangedFiles = (
|
|
665
|
+
var moduleChangedFiles = (sys, moduleName, files) => Object.values(files).map((file) => sourceFile(sys, `lib/${moduleName}/${file.filename}`, "create", "Module source file was created."));
|
|
666
666
|
|
|
667
667
|
class ModuleScript extends script("module", [ModuleRunner, PageScript]) {
|
|
668
|
-
async createModuleTemplate(
|
|
669
|
-
const mod = ModuleExecutor.from(
|
|
668
|
+
async createModuleTemplate(sys, name, { page = false } = {}) {
|
|
669
|
+
const mod = ModuleExecutor.from(sys, name);
|
|
670
670
|
const files = await this.moduleRunner.createModuleTemplate(mod);
|
|
671
|
-
if (page &&
|
|
672
|
-
await this.pageScript.createCrudPage(mod, { app:
|
|
673
|
-
await
|
|
671
|
+
if (page && sys.type === "app")
|
|
672
|
+
await this.pageScript.createCrudPage(mod, { app: sys, basePath: null, single: false });
|
|
673
|
+
await sys.scan();
|
|
674
674
|
return createPassedPrimitiveReport({
|
|
675
675
|
command: "create-module",
|
|
676
|
-
changedFiles: moduleChangedFiles(
|
|
677
|
-
generatedFiles: generatedFilesForSync(
|
|
678
|
-
target:
|
|
676
|
+
changedFiles: moduleChangedFiles(sys, name, files),
|
|
677
|
+
generatedFiles: generatedFilesForSync(sys, "Generated files were refreshed after module creation."),
|
|
678
|
+
target: sys.name
|
|
679
679
|
});
|
|
680
680
|
}
|
|
681
|
-
async createModule(
|
|
681
|
+
async createModule(sys, name, {
|
|
682
682
|
page = false,
|
|
683
683
|
description,
|
|
684
684
|
schemaDescription
|
|
685
685
|
} = {}) {
|
|
686
|
-
const isContinued = await
|
|
687
|
-
const session = new AiSession("createModule", { workspace:
|
|
688
|
-
const moduleConstantExampleFiles = await
|
|
689
|
-
const executor = ModuleExecutor.from(
|
|
686
|
+
const isContinued = await sys.exists(`lib/${name}/${name}.constant.ts`);
|
|
687
|
+
const session = new AiSession("createModule", { workspace: sys.workspace, cacheKey: name, isContinued });
|
|
688
|
+
const moduleConstantExampleFiles = await sys.workspace.getConstantFiles();
|
|
689
|
+
const executor = ModuleExecutor.from(sys, name);
|
|
690
690
|
const files = await this.moduleRunner.createModuleTemplate(executor);
|
|
691
691
|
const { constant, dictionary } = files;
|
|
692
|
-
if (page &&
|
|
693
|
-
await this.pageScript.createCrudPage(executor, { app:
|
|
692
|
+
if (page && sys.type === "app")
|
|
693
|
+
await this.pageScript.createCrudPage(executor, { app: sys, basePath: null, single: false });
|
|
694
694
|
const modelDesc = description ?? await input({ message: "description of module" });
|
|
695
695
|
const modelSchemaDesign = schemaDescription ?? await input({ message: "schema description of module" });
|
|
696
|
-
const config = await
|
|
697
|
-
const moduleRequest = new ModuleRequest({ sysType:
|
|
696
|
+
const config = await sys.getConfig();
|
|
697
|
+
const moduleRequest = new ModuleRequest({ sysType: sys.type, sysName: sys.name, modelName: name, config });
|
|
698
698
|
const constantRequestPrompt = await moduleRequest.requestModelConstant({
|
|
699
699
|
modelDesc,
|
|
700
700
|
modelSchemaDesign,
|
|
@@ -702,38 +702,38 @@ class ModuleScript extends script("module", [ModuleRunner, PageScript]) {
|
|
|
702
702
|
exampleFiles: randomPicks(moduleConstantExampleFiles, Math.min(10, moduleConstantExampleFiles.length))
|
|
703
703
|
});
|
|
704
704
|
const constantGuide = await ModuleRequest.getGuideJson("modelConstant");
|
|
705
|
-
const constantWrites = await session.writeTypescripts(constantRequestPrompt,
|
|
705
|
+
const constantWrites = await session.writeTypescripts(constantRequestPrompt, sys, {
|
|
706
706
|
validate: constantGuide.update.rules
|
|
707
707
|
});
|
|
708
708
|
for (const scalarName of this.#getCreatedScalarNames(constantWrites.map(({ filePath }) => filePath))) {
|
|
709
|
-
await
|
|
709
|
+
await sys.applyTemplate({
|
|
710
710
|
basePath: "./lib/__scalar",
|
|
711
711
|
template: "__scalar",
|
|
712
|
-
dict: { model: scalarName, models: pluralizeName(scalarName), sysName:
|
|
712
|
+
dict: { model: scalarName, models: pluralizeName(scalarName), sysName: sys.name },
|
|
713
713
|
overwrite: false
|
|
714
714
|
});
|
|
715
715
|
}
|
|
716
|
-
const constantContent = await
|
|
716
|
+
const constantContent = await sys.readFile(`lib/${name}/${name}.constant.ts`);
|
|
717
717
|
const dictionaryGuide = await ModuleRequest.getGuideJson("modelDictionary");
|
|
718
718
|
await session.writeTypescripts(requestDictionary({
|
|
719
|
-
sysName:
|
|
719
|
+
sysName: sys.name,
|
|
720
720
|
modelName: name,
|
|
721
721
|
constant: constantContent,
|
|
722
722
|
modelDesc,
|
|
723
723
|
modelSchemaDesign,
|
|
724
724
|
boilerplate: dictionary.content,
|
|
725
725
|
exampleFiles: randomPicks(moduleConstantExampleFiles, Math.min(10, moduleConstantExampleFiles.length))
|
|
726
|
-
}),
|
|
727
|
-
await
|
|
728
|
-
|
|
726
|
+
}), sys, { validate: dictionaryGuide.update.rules });
|
|
727
|
+
await sys.scan();
|
|
728
|
+
sys.log(`Module ${name} created in ${sys.type}s/${sys.name}/lib/${name}`);
|
|
729
729
|
return createPassedPrimitiveReport({
|
|
730
730
|
command: "create-module",
|
|
731
731
|
changedFiles: [
|
|
732
|
-
...moduleChangedFiles(
|
|
733
|
-
...constantWrites.map((write) => sourceFile(
|
|
732
|
+
...moduleChangedFiles(sys, name, files),
|
|
733
|
+
...constantWrites.map((write) => sourceFile(sys, write.filePath, "modify", "AI-assisted module constant source was updated."))
|
|
734
734
|
],
|
|
735
|
-
generatedFiles: generatedFilesForSync(
|
|
736
|
-
target:
|
|
735
|
+
generatedFiles: generatedFilesForSync(sys, "Generated files were refreshed after module creation."),
|
|
736
|
+
target: sys.name
|
|
737
737
|
});
|
|
738
738
|
}
|
|
739
739
|
#getCreatedScalarNames(filePaths) {
|
|
@@ -744,15 +744,15 @@ class ModuleScript extends script("module", [ModuleRunner, PageScript]) {
|
|
|
744
744
|
async removeModule(mod) {
|
|
745
745
|
await this.moduleRunner.removeModule(mod);
|
|
746
746
|
}
|
|
747
|
-
async createService(
|
|
748
|
-
const service = ModuleExecutor.from(
|
|
747
|
+
async createService(sys, name) {
|
|
748
|
+
const service = ModuleExecutor.from(sys, `_${name}`);
|
|
749
749
|
const files = await this.moduleRunner.createService(service);
|
|
750
|
-
await
|
|
750
|
+
await sys.scan();
|
|
751
751
|
return createPassedPrimitiveReport({
|
|
752
752
|
command: "create-service",
|
|
753
|
-
changedFiles: moduleChangedFiles(
|
|
754
|
-
generatedFiles: generatedFilesForSync(
|
|
755
|
-
target:
|
|
753
|
+
changedFiles: moduleChangedFiles(sys, `_${name}`, files),
|
|
754
|
+
generatedFiles: generatedFilesForSync(sys, "Generated files were refreshed after service creation."),
|
|
755
|
+
target: sys.name
|
|
756
756
|
});
|
|
757
757
|
}
|
|
758
758
|
async createTest(workspace, name) {}
|
|
@@ -5,7 +5,7 @@ import * as path from "path";
|
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import * as ts from "typescript";
|
|
7
7
|
|
|
8
|
-
class
|
|
8
|
+
class TypeChecker2 {
|
|
9
9
|
configPath;
|
|
10
10
|
configFile;
|
|
11
11
|
config;
|
|
@@ -143,12 +143,12 @@ ${summary.join(", ")} found${output.join(`
|
|
|
143
143
|
try {
|
|
144
144
|
const { diagnostics } = this.check(filePath);
|
|
145
145
|
return diagnostics.length === 0;
|
|
146
|
-
} catch (
|
|
146
|
+
} catch (_error) {
|
|
147
147
|
return false;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
static checkProject(configPath) {
|
|
151
|
-
const parsedConfig =
|
|
151
|
+
const parsedConfig = TypeChecker2.parseConfig(configPath);
|
|
152
152
|
const host = ts.createIncrementalCompilerHost(parsedConfig.options);
|
|
153
153
|
const builderProgram = ts.createIncrementalProgram({
|
|
154
154
|
rootNames: parsedConfig.fileNames,
|
|
@@ -166,19 +166,19 @@ ${summary.join(", ")} found${output.join(`
|
|
|
166
166
|
diagnostics,
|
|
167
167
|
errors,
|
|
168
168
|
warnings,
|
|
169
|
-
message:
|
|
169
|
+
message: TypeChecker2.formatDiagnosticMessages(diagnostics)
|
|
170
170
|
};
|
|
171
171
|
}
|
|
172
172
|
static parseConfig(configPath) {
|
|
173
173
|
const configFile = ts.readConfigFile(configPath, (fileName) => ts.sys.readFile(fileName));
|
|
174
174
|
const configDiagnostics = configFile.error ? [configFile.error] : [];
|
|
175
175
|
if (!configFile.config) {
|
|
176
|
-
const message =
|
|
176
|
+
const message = TypeChecker2.formatDiagnosticMessages(configDiagnostics);
|
|
177
177
|
throw new Error(message || `Error reading tsconfig.json: ${configPath}`);
|
|
178
178
|
}
|
|
179
179
|
const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(configPath), undefined, configPath);
|
|
180
180
|
if (parsedConfig.errors.length > 0)
|
|
181
|
-
throw new Error(
|
|
181
|
+
throw new Error(TypeChecker2.formatDiagnosticMessages(parsedConfig.errors));
|
|
182
182
|
return parsedConfig;
|
|
183
183
|
}
|
|
184
184
|
static formatDiagnosticMessages(diagnostics) {
|
|
@@ -190,4 +190,4 @@ ${summary.join(", ")} found${output.join(`
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
export {
|
|
193
|
+
export { TypeChecker2 };
|
|
@@ -19,12 +19,14 @@ var prepareDevWatchBatch = ({
|
|
|
19
19
|
generatedFiles: indexSync.changedFiles
|
|
20
20
|
});
|
|
21
21
|
if (indexSync.errors.length > 0 && !devPlan.actions.includes("report-error")) {
|
|
22
|
-
|
|
22
|
+
const withReport = [...devPlan.actions, "report-error"];
|
|
23
|
+
devPlan.actions = withReport.sort();
|
|
23
24
|
}
|
|
24
25
|
return {
|
|
25
26
|
files,
|
|
26
27
|
kinds,
|
|
27
28
|
expandedBatch,
|
|
29
|
+
devPlan,
|
|
28
30
|
event: { type: "invalidate", kinds, files, generation, devPlan },
|
|
29
31
|
hasSyncErrors: indexSync.errors.length > 0
|
|
30
32
|
};
|