@fougere/cli 0.12.5-alpha.0 → 0.12.6-alpha.0
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/dist/.fougere/scan.generated.d.ts +3 -0
- package/dist/.fougere/scan.generated.d.ts.map +1 -0
- package/dist/.fougere/scan.generated.js +140 -0
- package/dist/.fougere/scan.generated.js.map +1 -0
- package/dist/app/commands/BuildCommand.d.ts +18 -0
- package/dist/app/commands/BuildCommand.d.ts.map +1 -0
- package/dist/app/commands/BuildCommand.js +35 -0
- package/dist/app/commands/BuildCommand.js.map +1 -0
- package/dist/app/commands/CallCommand.d.ts +16 -0
- package/dist/app/commands/CallCommand.d.ts.map +1 -0
- package/dist/app/commands/CallCommand.js +73 -0
- package/dist/app/commands/CallCommand.js.map +1 -0
- package/dist/app/commands/CheckCommand.d.ts +11 -0
- package/dist/app/commands/CheckCommand.d.ts.map +1 -0
- package/dist/app/commands/CheckCommand.js +59 -0
- package/dist/app/commands/CheckCommand.js.map +1 -0
- package/dist/app/commands/CompletionCommand.d.ts +7 -0
- package/dist/app/commands/CompletionCommand.d.ts.map +1 -0
- package/dist/app/commands/CompletionCommand.js +23 -0
- package/dist/app/commands/CompletionCommand.js.map +1 -0
- package/dist/app/commands/DevtoolsCommand.d.ts +20 -0
- package/dist/app/commands/DevtoolsCommand.d.ts.map +1 -0
- package/dist/app/commands/DevtoolsCommand.js +79 -0
- package/dist/app/commands/DevtoolsCommand.js.map +1 -0
- package/dist/app/commands/ExplainCommand.d.ts +18 -0
- package/dist/app/commands/ExplainCommand.d.ts.map +1 -0
- package/dist/app/commands/ExplainCommand.js +111 -0
- package/dist/app/commands/ExplainCommand.js.map +1 -0
- package/dist/app/commands/FreezeCommand.d.ts +21 -0
- package/dist/app/commands/FreezeCommand.d.ts.map +1 -0
- package/dist/app/commands/FreezeCommand.js +102 -0
- package/dist/app/commands/FreezeCommand.js.map +1 -0
- package/dist/app/commands/GrantCommand.d.ts +18 -0
- package/dist/app/commands/GrantCommand.d.ts.map +1 -0
- package/dist/app/commands/GrantCommand.js +39 -0
- package/dist/app/commands/GrantCommand.js.map +1 -0
- package/dist/app/commands/GraphCommand.d.ts +11 -0
- package/dist/app/commands/GraphCommand.d.ts.map +1 -0
- package/dist/app/commands/GraphCommand.js +72 -0
- package/dist/app/commands/GraphCommand.js.map +1 -0
- package/dist/app/commands/KeysCommand.d.ts +22 -0
- package/dist/app/commands/KeysCommand.d.ts.map +1 -0
- package/dist/app/commands/KeysCommand.js +50 -0
- package/dist/app/commands/KeysCommand.js.map +1 -0
- package/dist/app/commands/LoadCommand.d.ts +19 -0
- package/dist/app/commands/LoadCommand.d.ts.map +1 -0
- package/dist/app/commands/LoadCommand.js +37 -0
- package/dist/app/commands/LoadCommand.js.map +1 -0
- package/dist/app/commands/MigrateCommand.d.ts +17 -0
- package/dist/app/commands/MigrateCommand.d.ts.map +1 -0
- package/dist/app/commands/MigrateCommand.js +47 -0
- package/dist/app/commands/MigrateCommand.js.map +1 -0
- package/dist/app/commands/NewCommand.d.ts +24 -0
- package/dist/app/commands/NewCommand.d.ts.map +1 -0
- package/dist/app/commands/NewCommand.js +131 -0
- package/dist/app/commands/NewCommand.js.map +1 -0
- package/dist/app/commands/ServeCommand.d.ts +17 -0
- package/dist/app/commands/ServeCommand.d.ts.map +1 -0
- package/dist/app/commands/ServeCommand.js +93 -0
- package/dist/app/commands/ServeCommand.js.map +1 -0
- package/dist/app/commands/grant-material.d.ts +5 -0
- package/dist/app/commands/grant-material.d.ts.map +1 -0
- package/{app/commands/grant-material.ts → dist/app/commands/grant-material.js} +2 -2
- package/dist/app/commands/grant-material.js.map +1 -0
- package/dist/fronds/analysis/entities/Build.d.ts +10 -0
- package/dist/fronds/analysis/entities/Build.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Build.js +9 -0
- package/dist/fronds/analysis/entities/Build.js.map +1 -0
- package/dist/fronds/analysis/entities/Check.d.ts +8 -0
- package/dist/fronds/analysis/entities/Check.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Check.js +7 -0
- package/dist/fronds/analysis/entities/Check.js.map +1 -0
- package/dist/fronds/analysis/entities/Devtools.d.ts +10 -0
- package/dist/fronds/analysis/entities/Devtools.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Devtools.js +9 -0
- package/dist/fronds/analysis/entities/Devtools.js.map +1 -0
- package/dist/fronds/analysis/entities/Explain.d.ts +11 -0
- package/dist/fronds/analysis/entities/Explain.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Explain.js +10 -0
- package/dist/fronds/analysis/entities/Explain.js.map +1 -0
- package/dist/fronds/analysis/entities/Freeze.d.ts +10 -0
- package/dist/fronds/analysis/entities/Freeze.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Freeze.js +9 -0
- package/dist/fronds/analysis/entities/Freeze.js.map +1 -0
- package/dist/fronds/analysis/entities/Graph.d.ts +9 -0
- package/dist/fronds/analysis/entities/Graph.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Graph.js +8 -0
- package/dist/fronds/analysis/entities/Graph.js.map +1 -0
- package/dist/fronds/analysis/entities/Load.d.ts +10 -0
- package/dist/fronds/analysis/entities/Load.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Load.js +9 -0
- package/dist/fronds/analysis/entities/Load.js.map +1 -0
- package/dist/fronds/analysis/entities/Migrate.d.ts +10 -0
- package/dist/fronds/analysis/entities/Migrate.d.ts.map +1 -0
- package/dist/fronds/analysis/entities/Migrate.js +9 -0
- package/dist/fronds/analysis/entities/Migrate.js.map +1 -0
- package/dist/fronds/analysis/handlers/BuildHandler.d.ts +50 -0
- package/dist/fronds/analysis/handlers/BuildHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/BuildHandler.js +63 -0
- package/dist/fronds/analysis/handlers/BuildHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/CheckHandler.d.ts +30 -0
- package/dist/fronds/analysis/handlers/CheckHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/CheckHandler.js +196 -0
- package/dist/fronds/analysis/handlers/CheckHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/DevtoolsHandler.d.ts +45 -0
- package/dist/fronds/analysis/handlers/DevtoolsHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/DevtoolsHandler.js +61 -0
- package/dist/fronds/analysis/handlers/DevtoolsHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/ExplainHandler.d.ts +99 -0
- package/dist/fronds/analysis/handlers/ExplainHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/ExplainHandler.js +157 -0
- package/dist/fronds/analysis/handlers/ExplainHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/FreezeHandler.d.ts +55 -0
- package/dist/fronds/analysis/handlers/FreezeHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/FreezeHandler.js +145 -0
- package/dist/fronds/analysis/handlers/FreezeHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/GraphHandler.d.ts +23 -0
- package/dist/fronds/analysis/handlers/GraphHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/GraphHandler.js +23 -0
- package/dist/fronds/analysis/handlers/GraphHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/LoadHandler.d.ts +26 -0
- package/dist/fronds/analysis/handlers/LoadHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/LoadHandler.js +35 -0
- package/dist/fronds/analysis/handlers/LoadHandler.js.map +1 -0
- package/dist/fronds/analysis/handlers/MigrateHandler.d.ts +34 -0
- package/dist/fronds/analysis/handlers/MigrateHandler.d.ts.map +1 -0
- package/dist/fronds/analysis/handlers/MigrateHandler.js +92 -0
- package/dist/fronds/analysis/handlers/MigrateHandler.js.map +1 -0
- package/dist/fronds/analysis/services/ProjectScan.d.ts +22 -0
- package/dist/fronds/analysis/services/ProjectScan.d.ts.map +1 -0
- package/dist/fronds/analysis/services/ProjectScan.js +48 -0
- package/dist/fronds/analysis/services/ProjectScan.js.map +1 -0
- package/dist/fronds/analysis/versions.d.ts +21 -0
- package/dist/fronds/analysis/versions.d.ts.map +1 -0
- package/dist/fronds/analysis/versions.js +48 -0
- package/dist/fronds/analysis/versions.js.map +1 -0
- package/dist/fronds/scaffold/entities/BuildFrond.d.ts +7 -0
- package/dist/fronds/scaffold/entities/BuildFrond.d.ts.map +1 -0
- package/dist/fronds/scaffold/entities/BuildFrond.js +6 -0
- package/dist/fronds/scaffold/entities/BuildFrond.js.map +1 -0
- package/dist/fronds/scaffold/entities/Call.d.ts +8 -0
- package/dist/fronds/scaffold/entities/Call.d.ts.map +1 -0
- package/{fronds/scaffold/entities/Call.ts → dist/fronds/scaffold/entities/Call.js} +4 -3
- package/dist/fronds/scaffold/entities/Call.js.map +1 -0
- package/dist/fronds/scaffold/entities/Completion.d.ts +7 -0
- package/dist/fronds/scaffold/entities/Completion.d.ts.map +1 -0
- package/dist/fronds/scaffold/entities/Completion.js +6 -0
- package/dist/fronds/scaffold/entities/Completion.js.map +1 -0
- package/dist/fronds/scaffold/entities/Grant.d.ts +8 -0
- package/dist/fronds/scaffold/entities/Grant.d.ts.map +1 -0
- package/{fronds/scaffold/entities/Grant.ts → dist/fronds/scaffold/entities/Grant.js} +4 -3
- package/dist/fronds/scaffold/entities/Grant.js.map +1 -0
- package/dist/fronds/scaffold/entities/Keys.d.ts +6 -0
- package/dist/fronds/scaffold/entities/Keys.d.ts.map +1 -0
- package/{fronds/scaffold/entities/Keys.ts → dist/fronds/scaffold/entities/Keys.js} +3 -2
- package/dist/fronds/scaffold/entities/Keys.js.map +1 -0
- package/dist/fronds/scaffold/entities/New.d.ts +21 -0
- package/dist/fronds/scaffold/entities/New.d.ts.map +1 -0
- package/dist/fronds/scaffold/entities/New.js +20 -0
- package/dist/fronds/scaffold/entities/New.js.map +1 -0
- package/dist/fronds/scaffold/entities/Serve.d.ts +10 -0
- package/dist/fronds/scaffold/entities/Serve.d.ts.map +1 -0
- package/dist/fronds/scaffold/entities/Serve.js +9 -0
- package/dist/fronds/scaffold/entities/Serve.js.map +1 -0
- package/dist/fronds/scaffold/entities/Sync.d.ts +8 -0
- package/dist/fronds/scaffold/entities/Sync.d.ts.map +1 -0
- package/dist/fronds/scaffold/entities/Sync.js +7 -0
- package/dist/fronds/scaffold/entities/Sync.js.map +1 -0
- package/dist/fronds/scaffold/handlers/BuildFrondHandler.d.ts +11 -0
- package/dist/fronds/scaffold/handlers/BuildFrondHandler.d.ts.map +1 -0
- package/dist/fronds/scaffold/handlers/BuildFrondHandler.js +82 -0
- package/dist/fronds/scaffold/handlers/BuildFrondHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/CallHandler.d.ts +10 -0
- package/dist/fronds/scaffold/handlers/CallHandler.d.ts.map +1 -0
- package/{fronds/scaffold/handlers/CallHandler.ts → dist/fronds/scaffold/handlers/CallHandler.js} +3 -2
- package/dist/fronds/scaffold/handlers/CallHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/CompletionHandler.d.ts +9 -0
- package/dist/fronds/scaffold/handlers/CompletionHandler.d.ts.map +1 -0
- package/{fronds/scaffold/handlers/CompletionHandler.ts → dist/fronds/scaffold/handlers/CompletionHandler.js} +3 -2
- package/dist/fronds/scaffold/handlers/CompletionHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/GrantHandler.d.ts +9 -0
- package/dist/fronds/scaffold/handlers/GrantHandler.d.ts.map +1 -0
- package/{fronds/scaffold/handlers/GrantHandler.ts → dist/fronds/scaffold/handlers/GrantHandler.js} +3 -2
- package/dist/fronds/scaffold/handlers/GrantHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/KeysHandler.d.ts +9 -0
- package/dist/fronds/scaffold/handlers/KeysHandler.d.ts.map +1 -0
- package/{fronds/scaffold/handlers/KeysHandler.ts → dist/fronds/scaffold/handlers/KeysHandler.js} +3 -2
- package/dist/fronds/scaffold/handlers/KeysHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/NewHandler.d.ts +9 -0
- package/dist/fronds/scaffold/handlers/NewHandler.d.ts.map +1 -0
- package/{fronds/scaffold/handlers/NewHandler.ts → dist/fronds/scaffold/handlers/NewHandler.js} +3 -2
- package/dist/fronds/scaffold/handlers/NewHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/ServeHandler.d.ts +10 -0
- package/dist/fronds/scaffold/handlers/ServeHandler.d.ts.map +1 -0
- package/{fronds/scaffold/handlers/ServeHandler.ts → dist/fronds/scaffold/handlers/ServeHandler.js} +3 -2
- package/dist/fronds/scaffold/handlers/ServeHandler.js.map +1 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.d.ts +20 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.d.ts.map +1 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.js +349 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.js.map +1 -0
- package/dist/fronds/scaffold/services/ProjectWriter.d.ts +71 -0
- package/dist/fronds/scaffold/services/ProjectWriter.d.ts.map +1 -0
- package/dist/fronds/scaffold/services/ProjectWriter.js +341 -0
- package/dist/fronds/scaffold/services/ProjectWriter.js.map +1 -0
- package/dist/src/bin.d.ts.map +1 -0
- package/dist/src/bin.js +11 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/bridge.d.ts.map +1 -0
- package/dist/src/bridge.js.map +1 -0
- package/dist/src/completion.d.ts.map +1 -0
- package/dist/src/completion.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/loader.d.ts.map +1 -0
- package/dist/src/loader.js.map +1 -0
- package/dist/src/machine.d.ts.map +1 -0
- package/dist/src/machine.js.map +1 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +19 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/runner.d.ts.map +1 -0
- package/dist/{runner.js → src/runner.js} +22 -22
- package/dist/src/runner.js.map +1 -0
- package/dist/src/theme.d.ts.map +1 -0
- package/dist/src/theme.js.map +1 -0
- package/dist/src/typescript/EntityTypes.d.ts.map +1 -0
- package/dist/src/typescript/EntityTypes.js.map +1 -0
- package/dist/src/typescript/FacadeTypes.d.ts.map +1 -0
- package/dist/src/typescript/FacadeTypes.js.map +1 -0
- package/dist/src/typescript/syntax.d.ts.map +1 -0
- package/dist/src/typescript/syntax.js.map +1 -0
- package/dist/{ui.d.ts → src/ui.d.ts} +0 -1
- package/dist/src/ui.d.ts.map +1 -0
- package/dist/{ui.js → src/ui.js} +24 -22
- package/dist/src/ui.js.map +1 -0
- package/package.json +23 -27
- package/app/commands/BuildCommand.ts +0 -43
- package/app/commands/CallCommand.ts +0 -70
- package/app/commands/CheckCommand.ts +0 -70
- package/app/commands/CompletionCommand.ts +0 -24
- package/app/commands/DevtoolsCommand.ts +0 -92
- package/app/commands/ExplainCommand.ts +0 -136
- package/app/commands/FreezeCommand.ts +0 -119
- package/app/commands/GrantCommand.ts +0 -46
- package/app/commands/GraphCommand.ts +0 -91
- package/app/commands/KeysCommand.ts +0 -57
- package/app/commands/LoadCommand.ts +0 -46
- package/app/commands/MigrateCommand.ts +0 -61
- package/app/commands/NewCommand.ts +0 -137
- package/app/commands/ServeCommand.ts +0 -108
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js +0 -64
- package/dist/bin.js.map +0 -1
- package/dist/bridge.d.ts.map +0 -1
- package/dist/bridge.js.map +0 -1
- package/dist/completion.d.ts.map +0 -1
- package/dist/completion.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js.map +0 -1
- package/dist/machine.d.ts.map +0 -1
- package/dist/machine.js.map +0 -1
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js.map +0 -1
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/typescript/EntityTypes.d.ts.map +0 -1
- package/dist/typescript/EntityTypes.js.map +0 -1
- package/dist/typescript/FacadeTypes.d.ts.map +0 -1
- package/dist/typescript/FacadeTypes.js.map +0 -1
- package/dist/typescript/syntax.d.ts.map +0 -1
- package/dist/typescript/syntax.js.map +0 -1
- package/dist/ui.d.ts.map +0 -1
- package/dist/ui.js.map +0 -1
- package/fronds/analysis/entities/Build.ts +0 -8
- package/fronds/analysis/entities/Check.ts +0 -6
- package/fronds/analysis/entities/Devtools.ts +0 -8
- package/fronds/analysis/entities/Explain.ts +0 -9
- package/fronds/analysis/entities/Freeze.ts +0 -8
- package/fronds/analysis/entities/Graph.ts +0 -7
- package/fronds/analysis/entities/Load.ts +0 -8
- package/fronds/analysis/entities/Migrate.ts +0 -8
- package/fronds/analysis/handlers/BuildHandler.ts +0 -87
- package/fronds/analysis/handlers/CheckHandler.ts +0 -217
- package/fronds/analysis/handlers/DevtoolsHandler.ts +0 -97
- package/fronds/analysis/handlers/ExplainHandler.ts +0 -263
- package/fronds/analysis/handlers/FreezeHandler.ts +0 -183
- package/fronds/analysis/handlers/GraphHandler.ts +0 -38
- package/fronds/analysis/handlers/LoadHandler.ts +0 -44
- package/fronds/analysis/handlers/MigrateHandler.ts +0 -110
- package/fronds/analysis/services/ProjectScan.ts +0 -55
- package/fronds/analysis/versions.ts +0 -59
- package/fronds/scaffold/entities/BuildFrond.ts +0 -5
- package/fronds/scaffold/entities/Completion.ts +0 -5
- package/fronds/scaffold/entities/New.ts +0 -19
- package/fronds/scaffold/entities/Serve.ts +0 -8
- package/fronds/scaffold/entities/Sync.ts +0 -6
- package/fronds/scaffold/handlers/BuildFrondHandler.ts +0 -96
- package/fronds/scaffold/handlers/SyncHandler.ts +0 -376
- package/fronds/scaffold/services/ProjectWriter.ts +0 -339
- package/fronds/shims.d.ts +0 -9
- package/src/bin.ts +0 -77
- package/src/bridge.ts +0 -118
- package/src/completion.ts +0 -145
- package/src/index.ts +0 -1
- package/src/loader.ts +0 -28
- package/src/machine.ts +0 -17
- package/src/runner.ts +0 -152
- package/src/theme.ts +0 -19
- package/src/typescript/EntityTypes.ts +0 -92
- package/src/typescript/FacadeTypes.ts +0 -50
- package/src/typescript/syntax.ts +0 -11
- package/src/ui.ts +0 -142
- /package/dist/{bin.d.ts → src/bin.d.ts} +0 -0
- /package/dist/{bridge.d.ts → src/bridge.d.ts} +0 -0
- /package/dist/{bridge.js → src/bridge.js} +0 -0
- /package/dist/{completion.d.ts → src/completion.d.ts} +0 -0
- /package/dist/{completion.js → src/completion.js} +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{loader.d.ts → src/loader.d.ts} +0 -0
- /package/dist/{loader.js → src/loader.js} +0 -0
- /package/dist/{machine.d.ts → src/machine.d.ts} +0 -0
- /package/dist/{machine.js → src/machine.js} +0 -0
- /package/dist/{runner.d.ts → src/runner.d.ts} +0 -0
- /package/dist/{theme.d.ts → src/theme.d.ts} +0 -0
- /package/dist/{theme.js → src/theme.js} +0 -0
- /package/dist/{typescript → src/typescript}/EntityTypes.d.ts +0 -0
- /package/dist/{typescript → src/typescript}/EntityTypes.js +0 -0
- /package/dist/{typescript → src/typescript}/FacadeTypes.d.ts +0 -0
- /package/dist/{typescript → src/typescript}/FacadeTypes.js +0 -0
- /package/dist/{typescript → src/typescript}/syntax.d.ts +0 -0
- /package/dist/{typescript → src/typescript}/syntax.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.generated.d.ts","sourceRoot":"","sources":["../../.fougere/scan.generated.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAoChD,eAAO,MAAM,IAAI,EAAE,UAmGlB,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Generated by `fougere build` — the scan, written down. Do not edit.
|
|
2
|
+
//
|
|
3
|
+
// `createApp` reads this instead of a disk. Everything here was decided by the scan that
|
|
4
|
+
// produced it; nothing is resolved a second time.
|
|
5
|
+
import { Fronds } from '@fougere/core';
|
|
6
|
+
import _0 from '../fronds/analysis/entities/Build.js';
|
|
7
|
+
import _1 from '../fronds/analysis/entities/Check.js';
|
|
8
|
+
import _2 from '../fronds/analysis/entities/Devtools.js';
|
|
9
|
+
import _3 from '../fronds/analysis/entities/Explain.js';
|
|
10
|
+
import _4 from '../fronds/analysis/entities/Freeze.js';
|
|
11
|
+
import _5 from '../fronds/analysis/entities/Graph.js';
|
|
12
|
+
import _6 from '../fronds/analysis/entities/Load.js';
|
|
13
|
+
import _7 from '../fronds/analysis/entities/Migrate.js';
|
|
14
|
+
import _8 from '../fronds/analysis/services/ProjectScan.js';
|
|
15
|
+
import _9 from '../fronds/analysis/handlers/BuildHandler.js';
|
|
16
|
+
import _10 from '../fronds/analysis/handlers/CheckHandler.js';
|
|
17
|
+
import _11 from '../fronds/analysis/handlers/DevtoolsHandler.js';
|
|
18
|
+
import _12 from '../fronds/analysis/handlers/ExplainHandler.js';
|
|
19
|
+
import _13 from '../fronds/analysis/handlers/FreezeHandler.js';
|
|
20
|
+
import _14 from '../fronds/analysis/handlers/GraphHandler.js';
|
|
21
|
+
import _15 from '../fronds/analysis/handlers/LoadHandler.js';
|
|
22
|
+
import _16 from '../fronds/analysis/handlers/MigrateHandler.js';
|
|
23
|
+
import _17 from '../fronds/scaffold/entities/BuildFrond.js';
|
|
24
|
+
import _18 from '../fronds/scaffold/entities/Call.js';
|
|
25
|
+
import _19 from '../fronds/scaffold/entities/Completion.js';
|
|
26
|
+
import _20 from '../fronds/scaffold/entities/Grant.js';
|
|
27
|
+
import _21 from '../fronds/scaffold/entities/Keys.js';
|
|
28
|
+
import _22 from '../fronds/scaffold/entities/New.js';
|
|
29
|
+
import _23 from '../fronds/scaffold/entities/Serve.js';
|
|
30
|
+
import _24 from '../fronds/scaffold/entities/Sync.js';
|
|
31
|
+
import _25 from '../fronds/scaffold/services/ProjectWriter.js';
|
|
32
|
+
import _26 from '../fronds/scaffold/handlers/BuildFrondHandler.js';
|
|
33
|
+
import _27 from '../fronds/scaffold/handlers/CallHandler.js';
|
|
34
|
+
import _28 from '../fronds/scaffold/handlers/CompletionHandler.js';
|
|
35
|
+
import _29 from '../fronds/scaffold/handlers/GrantHandler.js';
|
|
36
|
+
import _30 from '../fronds/scaffold/handlers/KeysHandler.js';
|
|
37
|
+
import _31 from '../fronds/scaffold/handlers/NewHandler.js';
|
|
38
|
+
import _32 from '../fronds/scaffold/handlers/ServeHandler.js';
|
|
39
|
+
import _33 from '../fronds/scaffold/handlers/SyncHandler.js';
|
|
40
|
+
export const scan = {
|
|
41
|
+
fronds: Fronds.hosting([
|
|
42
|
+
{
|
|
43
|
+
name: "analysis",
|
|
44
|
+
source: { "path": "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis", "package": "@fronds/analysis" },
|
|
45
|
+
providers: [
|
|
46
|
+
{ name: "ProjectScan", ctor: _8, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/services/ProjectScan.ts" },
|
|
47
|
+
],
|
|
48
|
+
entities: [
|
|
49
|
+
{ name: "build", entityClass: _0, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Build.ts", exposed: true },
|
|
50
|
+
{ name: "check", entityClass: _1, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Check.ts", exposed: true },
|
|
51
|
+
{ name: "devtools", entityClass: _2, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Devtools.ts", exposed: true },
|
|
52
|
+
{ name: "explain", entityClass: _3, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Explain.ts", exposed: true },
|
|
53
|
+
{ name: "freeze", entityClass: _4, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Freeze.ts", exposed: true },
|
|
54
|
+
{ name: "graph", entityClass: _5, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Graph.ts", exposed: true },
|
|
55
|
+
{ name: "load", entityClass: _6, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Load.ts", exposed: true },
|
|
56
|
+
{ name: "migrate", entityClass: _7, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/entities/Migrate.ts", exposed: true },
|
|
57
|
+
],
|
|
58
|
+
handlers: [
|
|
59
|
+
{ name: "buildHandler", address: "build", ctor: _9, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/BuildHandler.ts", exposed: true, operations: new Map([
|
|
60
|
+
["execute", { input: _0, description: "Write down what a scan found, so a deployment reads no disk.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "Omit<Build, 'json'>", "name": "Omit", "generics": [{ "raw": "Build", "name": "Build" }, { "raw": "\"json\"", "name": "string" }] }, "optional": false }], "returnType": { "raw": "Promise<BuildReport>", "name": "BuildReport", "promise": true }, "description": "Write down what a scan found, so a deployment reads no disk." } }]
|
|
61
|
+
]) },
|
|
62
|
+
{ name: "checkHandler", address: "check", ctor: _10, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/CheckHandler.ts", exposed: true, operations: new Map([
|
|
63
|
+
["execute", { description: "Report what does not hold in a Fougere app, without booting it.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ root?: string }", "name": "{ root?: string | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<CheckResult>", "name": "CheckResult", "promise": true }, "description": "Report what does not hold in a Fougere app, without booting it." } }]
|
|
64
|
+
]) },
|
|
65
|
+
{ name: "devtoolsHandler", address: "devtools", ctor: _11, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/DevtoolsHandler.ts", exposed: true, operations: new Map([
|
|
66
|
+
["execute", { description: "Read what the running apps have dispatched since a cursor per address.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ url?: string; root?: string; since?: Record<string, number> }", "name": "{ url?: string | undefined; root?: string | undefined; since?: Record<string, number> | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<CallsView>", "name": "CallsView", "promise": true }, "description": "Read what the running apps have dispatched since a cursor per address." } }]
|
|
67
|
+
]) },
|
|
68
|
+
{ name: "explainHandler", address: "explain", ctor: _12, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/ExplainHandler.ts", exposed: true, operations: new Map([
|
|
69
|
+
["list", { description: "The names this project serves — the list `explain` used to spell in a refusal only.", cardinality: "one", signature: { "name": "list", "params": [{ "name": "input", "type": { "raw": "{ root?: string }", "name": "{ root?: string | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<ExplainListing>", "name": "ExplainListing", "promise": true }, "description": "The names this project serves — the list `explain` used to spell in a refusal only." } }],
|
|
70
|
+
["execute", { description: "Print the contract one operation will be served under.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ operation?: string; root?: string; json?: boolean }", "name": "{ operation?: string | undefined; root?: string | undefined; json?: boolean | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<ExplainResult>", "name": "ExplainResult", "promise": true }, "description": "Print the contract one operation will be served under." } }]
|
|
71
|
+
]) },
|
|
72
|
+
{ name: "freezeHandler", address: "freeze", ctor: _13, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/FreezeHandler.ts", exposed: true, operations: new Map([
|
|
73
|
+
["execute", { description: "Record this version — or report what stops it, having written nothing.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "Omit<Freeze, 'json'> & { renamed?: Record<string, Record<string, string>> }", "name": "Omit<Freeze, \"json\"> & { renamed?: Record<string, Record<string, string>> | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<FreezeInspection>", "name": "FreezeInspection", "promise": true }, "description": "Record this version — or report what stops it, having written nothing." } }]
|
|
74
|
+
]) },
|
|
75
|
+
{ name: "graphHandler", address: "graph", ctor: _14, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/GraphHandler.ts", exposed: true, operations: new Map([
|
|
76
|
+
["execute", { description: "Report how a workspace's fronds and entities reference each other.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ root?: string; minEntities?: number }", "name": "{ root?: string | undefined; minEntities?: number | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<GraphResult>", "name": "GraphResult", "promise": true }, "description": "Report how a workspace's fronds and entities reference each other." } }]
|
|
77
|
+
]) },
|
|
78
|
+
{ name: "loadHandler", address: "load", ctor: _15, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/LoadHandler.ts", exposed: true, operations: new Map([
|
|
79
|
+
["execute", { description: "Generate a k6 scenario covering every operation the default facade answers.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ root?: string; facade?: string; out?: string }", "name": "{ root?: string | undefined; facade?: string | undefined; out?: string | undefined; }" }, "optional": false }], "returnType": { "raw": "Promise<LoadScenario>", "name": "LoadScenario", "promise": true }, "description": "Generate a k6 scenario covering every operation the default facade answers." } }]
|
|
80
|
+
]) },
|
|
81
|
+
{ name: "migrateHandler", address: "migrate", ctor: _16, deps: ["ProjectScan"], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/analysis/handlers/MigrateHandler.ts", exposed: true, operations: new Map([
|
|
82
|
+
["execute", { input: _7, description: "Realise the frozen steps this database has not caught up with.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "Omit<Migrate, 'json'>", "name": "Omit", "generics": [{ "raw": "Migrate", "name": "Migrate" }, { "raw": "\"json\"", "name": "string" }] }, "optional": false }], "returnType": { "raw": "Promise<MigrationPlan>", "name": "MigrationPlan", "promise": true }, "description": "Realise the frozen steps this database has not caught up with." } }]
|
|
83
|
+
]) },
|
|
84
|
+
],
|
|
85
|
+
presenters: [],
|
|
86
|
+
collectors: [],
|
|
87
|
+
seeds: [],
|
|
88
|
+
middlewares: [],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "scaffold",
|
|
92
|
+
source: { "path": "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold", "package": "@fronds/scaffold" },
|
|
93
|
+
providers: [
|
|
94
|
+
{ name: "ProjectWriter", ctor: _25, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/services/ProjectWriter.ts" },
|
|
95
|
+
],
|
|
96
|
+
entities: [
|
|
97
|
+
{ name: "buildFrond", entityClass: _17, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/BuildFrond.ts", exposed: true },
|
|
98
|
+
{ name: "call", entityClass: _18, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/Call.ts", exposed: true },
|
|
99
|
+
{ name: "completion", entityClass: _19, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/Completion.ts", exposed: true },
|
|
100
|
+
{ name: "grant", entityClass: _20, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/Grant.ts", exposed: true },
|
|
101
|
+
{ name: "keys", entityClass: _21, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/Keys.ts", exposed: true },
|
|
102
|
+
{ name: "new", entityClass: _22, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/New.ts", exposed: true },
|
|
103
|
+
{ name: "serve", entityClass: _23, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/Serve.ts", exposed: true },
|
|
104
|
+
{ name: "sync", entityClass: _24, filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/entities/Sync.ts", exposed: true },
|
|
105
|
+
],
|
|
106
|
+
handlers: [
|
|
107
|
+
{ name: "buildFrondHandler", address: "buildFrond", ctor: _26, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/BuildFrondHandler.ts", exposed: true, operations: new Map([
|
|
108
|
+
["execute", { description: "Build a frond into a standalone deployable package.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ frond: string }", "name": "{ frond: string; }" }, "optional": false }], "returnType": { "raw": "Promise<{ path: string; entities: string[] }>", "name": "{ path: string; entities: string[]; }", "promise": true }, "description": "Build a frond into a standalone deployable package." } }]
|
|
109
|
+
]) },
|
|
110
|
+
{ name: "callHandler", address: "call", ctor: _27, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/CallHandler.ts", exposed: true, operations: new Map([
|
|
111
|
+
["execute", { description: "Invoke one operation of a frond from the terminal.", cardinality: "none", signature: { "name": "execute", "params": [], "returnType": { "raw": "Promise<void>", "name": "void", "undefined": true, "promise": true }, "description": "Invoke one operation of a frond from the terminal." } }]
|
|
112
|
+
]) },
|
|
113
|
+
{ name: "completionHandler", address: "completion", ctor: _28, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/CompletionHandler.ts", exposed: true, operations: new Map([
|
|
114
|
+
["execute", { description: "Print the shell completion script for this CLI.", cardinality: "none", signature: { "name": "execute", "params": [], "returnType": { "raw": "Promise<void>", "name": "void", "undefined": true, "promise": true }, "description": "Print the shell completion script for this CLI." } }]
|
|
115
|
+
]) },
|
|
116
|
+
{ name: "grantHandler", address: "grant", ctor: _29, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/GrantHandler.ts", exposed: true, operations: new Map([
|
|
117
|
+
["execute", { description: "Bind a frond's name to a fresh key, signed by the root.", cardinality: "none", signature: { "name": "execute", "params": [], "returnType": { "raw": "Promise<void>", "name": "void", "undefined": true, "promise": true }, "description": "Bind a frond's name to a fresh key, signed by the root." } }]
|
|
118
|
+
]) },
|
|
119
|
+
{ name: "keysHandler", address: "keys", ctor: _30, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/KeysHandler.ts", exposed: true, operations: new Map([
|
|
120
|
+
["execute", { description: "Create the root key a split deployment's grants are signed by.", cardinality: "none", signature: { "name": "execute", "params": [], "returnType": { "raw": "Promise<void>", "name": "void", "undefined": true, "promise": true }, "description": "Create the root key a split deployment's grants are signed by." } }]
|
|
121
|
+
]) },
|
|
122
|
+
{ name: "newHandler", address: "new", ctor: _31, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/NewHandler.ts", exposed: true, operations: new Map([
|
|
123
|
+
["execute", { description: "Create a Fougere project, workspace or flat.", cardinality: "none", signature: { "name": "execute", "params": [], "returnType": { "raw": "Promise<void>", "name": "void", "undefined": true, "promise": true }, "description": "Create a Fougere project, workspace or flat." } }]
|
|
124
|
+
]) },
|
|
125
|
+
{ name: "serveHandler", address: "serve", ctor: _32, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/ServeHandler.ts", exposed: true, operations: new Map([
|
|
126
|
+
["execute", { description: "Host a frond in its own process, behind JSON-RPC.", cardinality: "none", signature: { "name": "execute", "params": [], "returnType": { "raw": "Promise<void>", "name": "void", "undefined": true, "promise": true }, "description": "Host a frond in its own process, behind JSON-RPC." } }]
|
|
127
|
+
]) },
|
|
128
|
+
{ name: "syncHandler", address: "sync", ctor: _33, deps: [], filePath: "/Volumes/Personnel/fougere-public/packages/cli/fronds/scaffold/handlers/SyncHandler.ts", exposed: true, operations: new Map([
|
|
129
|
+
["execute", { description: "Mirror a remote frond's contract into local entities.", cardinality: "one", signature: { "name": "execute", "params": [{ "name": "input", "type": { "raw": "{ frond: string; from: string }", "name": "{ frond: string; from: string; }" }, "optional": false }], "returnType": { "raw": "Promise<{ path: string; entities: string[]; removed: string[] }>", "name": "{ path: string; entities: string[]; removed: string[]; }", "promise": true }, "description": "Mirror a remote frond's contract into local entities." } }]
|
|
130
|
+
]) },
|
|
131
|
+
],
|
|
132
|
+
presenters: [],
|
|
133
|
+
collectors: [],
|
|
134
|
+
seeds: [],
|
|
135
|
+
middlewares: [],
|
|
136
|
+
}
|
|
137
|
+
]),
|
|
138
|
+
diagnostics: [],
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=scan.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.generated.js","sourceRoot":"","sources":["../../.fougere/scan.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { App } from '@fougere/core';
|
|
2
|
+
import type { ui as createUi } from '../../src/ui.js';
|
|
3
|
+
type Ui = ReturnType<typeof createUi>;
|
|
4
|
+
/**
|
|
5
|
+
* `fougere build` — the scan, written down.
|
|
6
|
+
*
|
|
7
|
+
* It reports what the module HOLDS rather than that it was written: a build that found
|
|
8
|
+
* one frond where the project has three has succeeded at the wrong thing, and the path
|
|
9
|
+
* alone does not say so.
|
|
10
|
+
*/
|
|
11
|
+
export default class BuildCommand {
|
|
12
|
+
private app;
|
|
13
|
+
private ui;
|
|
14
|
+
constructor(app: App, ui: Ui);
|
|
15
|
+
run(raw: Record<string, unknown>): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=BuildCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/BuildCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKtD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IACnB,OAAO,CAAC,GAAG;IAAO,OAAO,CAAC,EAAE;IAAxC,YAAoB,GAAG,EAAE,GAAG,EAAU,EAAE,EAAE,EAAE,EAAI;IAE1C,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAsBrC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createAppRunner } from '@fougere/core';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import { machineWanted, printMachine } from '../../src/machine.js';
|
|
4
|
+
/**
|
|
5
|
+
* `fougere build` — the scan, written down.
|
|
6
|
+
*
|
|
7
|
+
* It reports what the module HOLDS rather than that it was written: a build that found
|
|
8
|
+
* one frond where the project has three has succeeded at the wrong thing, and the path
|
|
9
|
+
* alone does not say so.
|
|
10
|
+
*/
|
|
11
|
+
export default class BuildCommand {
|
|
12
|
+
app;
|
|
13
|
+
ui;
|
|
14
|
+
constructor(app, ui) {
|
|
15
|
+
this.app = app;
|
|
16
|
+
this.ui = ui;
|
|
17
|
+
}
|
|
18
|
+
async run(raw) {
|
|
19
|
+
const built = (await createAppRunner(this.app)({ entity: 'build', op: 'execute' }, { params: {}, query: {}, input: raw, state: {} }));
|
|
20
|
+
if (machineWanted(raw))
|
|
21
|
+
return printMachine(built);
|
|
22
|
+
if (built.fronds.length === 0) {
|
|
23
|
+
this.ui.warn('No fronds found. Run this from a Fougere project root.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.ui.success(`${built.path} — ${built.fronds.length} frond(s), ${built.entities} entities, ${built.handlers} handlers`);
|
|
27
|
+
this.ui.step(built.fronds.map((name) => pc.bold(name)).join(', '));
|
|
28
|
+
// A diagnostic travels INTO the module, so a boot from it says the same thing. Saying
|
|
29
|
+
// it here too is not a duplicate: this is the moment someone can still fix the source.
|
|
30
|
+
for (const diagnostic of built.diagnostics)
|
|
31
|
+
this.ui.warn(diagnostic);
|
|
32
|
+
this.ui.step(pc.dim('hand it to createApp as `scan:` — nothing reads a disk after this'));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=BuildCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuildCommand.js","sourceRoot":"","sources":["../../../app/commands/BuildCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAInE;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IACX,GAAG;IAAe,EAAE;IAAxC,YAAoB,GAAQ,EAAU,EAAM;mBAAxB,GAAG;kBAAe,EAAE;IAAO,CAAC;IAEhD,KAAK,CAAC,GAAG,CAAC,GAA4B;QACpC,MAAM,KAAK,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5C,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAClC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CACjD,CAAgB,CAAC;QAElB,IAAI,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YAEvE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,cAAc,KAAK,CAAC,QAAQ,cAAc,KAAK,CAAC,QAAQ,WAAW,CAAC,CAAC;QAC3H,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,sFAAsF;QACtF,uFAAuF;QACvF,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAErE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { App } from '@fougere/core';
|
|
2
|
+
import type { ui as createUi } from '../../src/ui.js';
|
|
3
|
+
type Ui = ReturnType<typeof createUi>;
|
|
4
|
+
/**
|
|
5
|
+
* The client end of the gradient: drive one operation on the project's app and
|
|
6
|
+
* print the result. It follows the topology — if `remotes:` sends the frond
|
|
7
|
+
* elsewhere, the call travels there. Same envelope every consumer uses.
|
|
8
|
+
*/
|
|
9
|
+
export default class CallCommand {
|
|
10
|
+
private app;
|
|
11
|
+
private ui;
|
|
12
|
+
constructor(app: App, ui: Ui);
|
|
13
|
+
run(raw: Record<string, unknown>): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=CallCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/CallCommand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAwBtC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAClB,OAAO,CAAC,GAAG;IAAO,OAAO,CAAC,EAAE;IAAxC,YAAoB,GAAG,EAAE,GAAG,EAAU,EAAE,EAAE,EAAE,EAAI;IAE1C,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBA+BrC;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createAppRunner } from '@fougere/core';
|
|
2
|
+
import { lowerFirst } from '@fougere/core/contract';
|
|
3
|
+
/**
|
|
4
|
+
* Parse `--field value` / `--field=value` / `--flag` from the raw argv.
|
|
5
|
+
* `call`'s payload is free-form (any entity's fields), so it can't be declared
|
|
6
|
+
* on the Call entity — citty would boolean-ify undeclared flags. We read the
|
|
7
|
+
* tail ourselves; positionals (the target) are ignored (not `--`-prefixed).
|
|
8
|
+
*/
|
|
9
|
+
function parseFlags(tokens) {
|
|
10
|
+
const out = {};
|
|
11
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
12
|
+
const t = tokens[i];
|
|
13
|
+
if (!t.startsWith('--'))
|
|
14
|
+
continue;
|
|
15
|
+
const eq = t.indexOf('=');
|
|
16
|
+
if (eq !== -1) {
|
|
17
|
+
out[t.slice(2, eq)] = t.slice(eq + 1);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const key = t.slice(2);
|
|
21
|
+
const next = tokens[i + 1];
|
|
22
|
+
if (next === undefined || next.startsWith('--'))
|
|
23
|
+
out[key] = true;
|
|
24
|
+
else {
|
|
25
|
+
out[key] = next;
|
|
26
|
+
i++;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The client end of the gradient: drive one operation on the project's app and
|
|
33
|
+
* print the result. It follows the topology — if `remotes:` sends the frond
|
|
34
|
+
* elsewhere, the call travels there. Same envelope every consumer uses.
|
|
35
|
+
*/
|
|
36
|
+
export default class CallCommand {
|
|
37
|
+
app;
|
|
38
|
+
ui;
|
|
39
|
+
constructor(app, ui) {
|
|
40
|
+
this.app = app;
|
|
41
|
+
this.ui = ui;
|
|
42
|
+
}
|
|
43
|
+
async run(raw) {
|
|
44
|
+
const target = raw.operation;
|
|
45
|
+
if (!target || !target.includes('.')) {
|
|
46
|
+
this.ui.error('Usage: fougere call <entity>.<op> [--field value …]');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const [entityName, op] = target.split('.');
|
|
50
|
+
// Flags → invocation, by the same rule the framework's binding uses:
|
|
51
|
+
// a primitive param (like `id`) resolves from `params`, an object from
|
|
52
|
+
// `body`. So `--id` is a route param, every other flag is the body.
|
|
53
|
+
const flags = parseFlags(process.argv.slice(2));
|
|
54
|
+
const params = {};
|
|
55
|
+
const input = {};
|
|
56
|
+
for (const [k, v] of Object.entries(flags)) {
|
|
57
|
+
if (k === 'id')
|
|
58
|
+
params.id = String(v);
|
|
59
|
+
else
|
|
60
|
+
input[k] = v;
|
|
61
|
+
}
|
|
62
|
+
const { bootApp } = await import('@fougere/defaults');
|
|
63
|
+
const app = await bootApp(process.cwd(), {});
|
|
64
|
+
try {
|
|
65
|
+
const result = await createAppRunner(app)({ entity: lowerFirst(entityName), op }, { params, query: {}, input, state: {} });
|
|
66
|
+
this.ui.note(JSON.stringify(result, null, 2), target);
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
await app.dispose();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=CallCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallCommand.js","sourceRoot":"","sources":["../../../app/commands/CallCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMpD;;;;;GAKG;AACH,SAAS,UAAU,CAAC,MAAgB;IAClC,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACnE,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aAC5D,CAAC;YAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;IAChC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IACV,GAAG;IAAe,EAAE;IAAxC,YAAoB,GAAQ,EAAU,EAAM;mBAAxB,GAAG;kBAAe,EAAE;IAAO,CAAC;IAEhD,KAAK,CAAC,GAAG,CAAC,GAA4B;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,SAA+B,CAAC;QACnD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAErE,OAAO;QACT,CAAC;QACD,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3C,qEAAqE;QACrE,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,IAAI;gBAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;gBACjC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CACvC,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CACxC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { App } from '@fougere/core';
|
|
2
|
+
import type { ui as createUi } from '../../src/ui.js';
|
|
3
|
+
type Ui = ReturnType<typeof createUi>;
|
|
4
|
+
export default class CheckCommand {
|
|
5
|
+
private app;
|
|
6
|
+
private ui;
|
|
7
|
+
constructor(app: App, ui: Ui);
|
|
8
|
+
run(raw: Record<string, unknown>): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=CheckCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/CheckCommand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKtD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,YAAY;IACnB,OAAO,CAAC,GAAG;IAAO,OAAO,CAAC,EAAE;IAAxC,YAAoB,GAAG,EAAE,GAAG,EAAU,EAAE,EAAE,EAAE,EAAI;IAE1C,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAiCrC;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createAppRunner } from '@fougere/core';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import { relative } from 'node:path';
|
|
4
|
+
import { machineWanted, printMachine } from '../../src/machine.js';
|
|
5
|
+
export default class CheckCommand {
|
|
6
|
+
app;
|
|
7
|
+
ui;
|
|
8
|
+
constructor(app, ui) {
|
|
9
|
+
this.app = app;
|
|
10
|
+
this.ui = ui;
|
|
11
|
+
}
|
|
12
|
+
async run(raw) {
|
|
13
|
+
// Ride the call contract — the same envelope every consumer uses.
|
|
14
|
+
const result = await createAppRunner(this.app)({ entity: 'check', op: 'execute' }, { params: {}, query: {}, input: raw, state: {} });
|
|
15
|
+
// A non-zero exit is what makes this usable in CI, so it is decided before the two
|
|
16
|
+
// renderings rather than inside the terminal one.
|
|
17
|
+
const blocking = result.findings.filter((f) => f.severity === 'blocking').length;
|
|
18
|
+
if (blocking > 0)
|
|
19
|
+
process.exitCode = 1;
|
|
20
|
+
if (machineWanted(raw))
|
|
21
|
+
return printMachine(result);
|
|
22
|
+
if (result.fronds === 0) {
|
|
23
|
+
this.ui.warn('No fronds found. Run this from a Fougere project root.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.ui.step(`${pc.bold(String(result.fronds))} frond(s), ${pc.bold(String(result.handlers))} handler(s)`);
|
|
27
|
+
if (result.findings.length === 0) {
|
|
28
|
+
this.ui.success('Nothing to report.');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.ui.note(result.findings.map(render).join('\n\n'), 'Findings');
|
|
32
|
+
// Warnings do not fail: an unresolvable base class with no operation is ordinary,
|
|
33
|
+
// and a check that cries wolf stops being read.
|
|
34
|
+
this.ui.info(`${blocking} blocking, ${result.findings.length - blocking} warning(s)`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function render(f) {
|
|
38
|
+
const mark = f.severity === 'blocking' ? pc.red('✗') : pc.yellow('⚠');
|
|
39
|
+
const where = relative(process.cwd(), f.filePath) || f.filePath;
|
|
40
|
+
const what = f.subject ? ` ${f.subject}` : '';
|
|
41
|
+
return ` ${mark} ${pc.bold(`[${f.code}]`)}${what}\n${wrap(f.message, 76, ' ')}\n ${pc.dim(where)}`;
|
|
42
|
+
}
|
|
43
|
+
/** A box grows to its longest line, so a one-line sentence makes an unreadable box. */
|
|
44
|
+
function wrap(text, width, indent) {
|
|
45
|
+
const lines = [];
|
|
46
|
+
let line = '';
|
|
47
|
+
for (const word of text.split(' ')) {
|
|
48
|
+
if (line && line.length + 1 + word.length > width) {
|
|
49
|
+
lines.push(line);
|
|
50
|
+
line = word;
|
|
51
|
+
}
|
|
52
|
+
else
|
|
53
|
+
line = line ? `${line} ${word}` : word;
|
|
54
|
+
}
|
|
55
|
+
if (line)
|
|
56
|
+
lines.push(line);
|
|
57
|
+
return lines.map((l) => indent + l).join('\n');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=CheckCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckCommand.js","sourceRoot":"","sources":["../../../app/commands/CheckCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompletionCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/CompletionCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACxB,OAAO,CAAC,GAAG;IAAvB,YAAoB,GAAG,EAAE,GAAG,EAAI;IAE1B,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAMrC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { generateZshCompletion, generateBashCompletion } from '../../src/completion.js';
|
|
2
|
+
export default class CompletionCommand {
|
|
3
|
+
app;
|
|
4
|
+
constructor(app) {
|
|
5
|
+
this.app = app;
|
|
6
|
+
}
|
|
7
|
+
async run(raw) {
|
|
8
|
+
const shell = raw.shell || detectShell();
|
|
9
|
+
const script = shell === 'bash'
|
|
10
|
+
? generateBashCompletion(this.app)
|
|
11
|
+
: generateZshCompletion(this.app);
|
|
12
|
+
console.log(script);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function detectShell() {
|
|
16
|
+
const shell = process.env.SHELL ?? '';
|
|
17
|
+
if (shell.includes('zsh'))
|
|
18
|
+
return 'zsh';
|
|
19
|
+
if (shell.includes('bash'))
|
|
20
|
+
return 'bash';
|
|
21
|
+
return 'zsh';
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=CompletionCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompletionCommand.js","sourceRoot":"","sources":["../../../app/commands/CompletionCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAExF,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAChB,GAAG;IAAvB,YAAoB,GAAQ;mBAAR,GAAG;IAAQ,CAAC;IAEhC,KAAK,CAAC,GAAG,CAAC,GAA4B;QACpC,MAAM,KAAK,GAAI,GAAG,CAAC,KAAgB,IAAI,WAAW,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM;YAC7B,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;CACF;AAED,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE1C,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { App } from '@fougere/core';
|
|
2
|
+
import type { ui as createUi } from '../../src/ui.js';
|
|
3
|
+
type Ui = ReturnType<typeof createUi>;
|
|
4
|
+
/**
|
|
5
|
+
* `fougere devtools` — the call log of every running app of this project, followed.
|
|
6
|
+
*
|
|
7
|
+
* A cursor per address, because each app numbers its own ring: asking for what this reader
|
|
8
|
+
* has not seen is the whole protocol, and it is per source or nothing.
|
|
9
|
+
*/
|
|
10
|
+
export default class DevtoolsCommand {
|
|
11
|
+
private app;
|
|
12
|
+
private ui;
|
|
13
|
+
constructor(app: App, ui: Ui);
|
|
14
|
+
run(raw: Record<string, unknown>): Promise<void>;
|
|
15
|
+
/** What is being watched, and what refused — stated before the first line scrolls. */
|
|
16
|
+
private announce;
|
|
17
|
+
private view;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=DevtoolsCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/DevtoolsCommand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAc,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAItD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAOtC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IACtB,OAAO,CAAC,GAAG;IAAO,OAAO,CAAC,EAAE;IAAxC,YAAoB,GAAG,EAAE,GAAG,EAAU,EAAE,EAAE,EAAE,EAAI;IAE1C,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAwBrC;IAED,sFAAsF;IACtF,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,IAAI;CAMb"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { createAppRunner } from '@fougere/core';
|
|
2
|
+
import { machineWanted, printMachine } from '../../src/machine.js';
|
|
3
|
+
import pc from 'picocolors';
|
|
4
|
+
/** How long between two reads. Fast enough to read as a stream, cheap enough to ignore. */
|
|
5
|
+
const EVERY_MS = 500;
|
|
6
|
+
const ROUTE = { local: pc.green, remote: pc.cyan, system: pc.magenta };
|
|
7
|
+
/**
|
|
8
|
+
* `fougere devtools` — the call log of every running app of this project, followed.
|
|
9
|
+
*
|
|
10
|
+
* A cursor per address, because each app numbers its own ring: asking for what this reader
|
|
11
|
+
* has not seen is the whole protocol, and it is per source or nothing.
|
|
12
|
+
*/
|
|
13
|
+
export default class DevtoolsCommand {
|
|
14
|
+
app;
|
|
15
|
+
ui;
|
|
16
|
+
constructor(app, ui) {
|
|
17
|
+
this.app = app;
|
|
18
|
+
this.ui = ui;
|
|
19
|
+
}
|
|
20
|
+
async run(raw) {
|
|
21
|
+
const since = {};
|
|
22
|
+
if (machineWanted(raw))
|
|
23
|
+
return printMachine(await this.view(raw, since));
|
|
24
|
+
const first = await this.view(raw, since);
|
|
25
|
+
this.announce(first);
|
|
26
|
+
const told = {};
|
|
27
|
+
for (let view = first;; view = await this.view(raw, since)) {
|
|
28
|
+
for (const source of view.sources) {
|
|
29
|
+
since[source.url] = source.cursor;
|
|
30
|
+
// Said once per address, and only when it grows: a ring that dropped is not a
|
|
31
|
+
// quiet period, and repeating it every half second would bury the calls.
|
|
32
|
+
if (source.dropped > (told[source.url] ?? 0)) {
|
|
33
|
+
this.ui.warn(`${source.url} dropped ${source.dropped - (told[source.url] ?? 0)} call(s) — its ring is smaller than this traffic`);
|
|
34
|
+
told[source.url] = source.dropped;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const call of view.calls)
|
|
38
|
+
process.stdout.write(render(call, view.sources.length > 1) + '\n');
|
|
39
|
+
await new Promise((wake) => setTimeout(wake, EVERY_MS));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** What is being watched, and what refused — stated before the first line scrolls. */
|
|
43
|
+
announce(view) {
|
|
44
|
+
for (const source of view.sources) {
|
|
45
|
+
const name = source.frond ? `${pc.bold(source.frond)} ${pc.dim(source.url)}` : pc.bold(source.url);
|
|
46
|
+
if (source.refusal)
|
|
47
|
+
this.ui.warn(`${name} — ${source.refusal}`);
|
|
48
|
+
else
|
|
49
|
+
this.ui.step(`following ${name}`);
|
|
50
|
+
}
|
|
51
|
+
this.ui.info(pc.dim('ctrl-c to stop'));
|
|
52
|
+
}
|
|
53
|
+
view(raw, since) {
|
|
54
|
+
return createAppRunner(this.app)({ entity: 'devtools', op: 'execute' }, { params: {}, query: {}, input: { ...raw, since }, state: {} });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function render(call, many) {
|
|
58
|
+
// Padded BEFORE colouring: an escape sequence counts in a string's length, so padding a
|
|
59
|
+
// coloured value moves the column by however many bytes the colour took.
|
|
60
|
+
const at = many ? pc.dim(pad(new URL(call.source).port || call.source, 5)) : '';
|
|
61
|
+
const frond = pc.dim(pad(call.frond ?? '—', 9));
|
|
62
|
+
const address = pc.bold(pad(`${call.entity}.${call.operation}${call.surface ? `/${call.surface}` : ''}`, 22));
|
|
63
|
+
const route = call.route
|
|
64
|
+
? (ROUTE[call.route] ?? pc.dim)(pad(call.route, 9))
|
|
65
|
+
: pc.red(pad('unrouted', 9));
|
|
66
|
+
const took = pc.dim(lead(call.ms === undefined ? '' : `${call.ms}ms`, 7));
|
|
67
|
+
const verdict = call.verdict === 'failed'
|
|
68
|
+
? pc.red(call.refusal?.code ?? 'failed')
|
|
69
|
+
: call.verdict === 'ok' ? pc.dim('ok') : pc.yellow('running');
|
|
70
|
+
return [at, frond, address, route, took, verdict, call.trace ? pc.dim(call.trace.slice(3, 11)) : '']
|
|
71
|
+
.filter(Boolean).join(' ');
|
|
72
|
+
}
|
|
73
|
+
function pad(value, width) {
|
|
74
|
+
return value.length >= width ? value : value + ' '.repeat(width - value.length);
|
|
75
|
+
}
|
|
76
|
+
function lead(value, width) {
|
|
77
|
+
return value.length >= width ? value : ' '.repeat(width - value.length) + value;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=DevtoolsCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevtoolsCommand.js","sourceRoot":"","sources":["../../../app/commands/DevtoolsCommand.ts"],"names":[],"mappings":"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"}
|