@fougere/cli 0.12.5-alpha.0 → 0.13.0-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 +108 -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 +92 -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 +19 -0
- package/dist/fronds/scaffold/entities/New.d.ts.map +1 -0
- package/dist/fronds/scaffold/entities/New.js +18 -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 +18 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.d.ts.map +1 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.js +327 -0
- package/dist/fronds/scaffold/handlers/SyncHandler.js.map +1 -0
- package/dist/fronds/scaffold/services/ProjectWriter.d.ts +54 -0
- package/dist/fronds/scaffold/services/ProjectWriter.d.ts.map +1 -0
- package/dist/fronds/scaffold/services/ProjectWriter.js +315 -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 +25 -29
- package/templates/frond/fronds/tsconfig.json +17 -0
- package/templates/workspace/fronds/tsconfig.json +2 -4
- package/templates/workspace/package.json +1 -1
- package/templates/workspace/pnpm-workspace.yaml +5 -3
- 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/templates/flat/AGENTS.md +0 -14
- package/templates/flat/CLAUDE.md +0 -87
- package/templates/flat/_gitignore +0 -6
- package/templates/flat/app/app.vue +0 -25
- package/templates/flat/app/pages/index.vue +0 -7
- package/templates/flat/fougere.config.ts +0 -7
- package/templates/flat/nuxt.config.ts +0 -4
- package/templates/flat/package.json +0 -24
- package/templates/flat/pnpm-workspace.yaml +0 -6
- package/templates/flat/tsconfig.frond.json +0 -25
- package/templates/flat/tsconfig.json +0 -3
- /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,47 @@
|
|
|
1
|
+
import { createAppRunner } from '@fougere/core';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import { machineWanted, printMachine } from '../../src/machine.js';
|
|
4
|
+
/**
|
|
5
|
+
* Catching a database up with the frozen chain.
|
|
6
|
+
*
|
|
7
|
+
* Prints by default and moves nothing: what this runs drops and renames columns, so the
|
|
8
|
+
* plan is read before it is agreed to. `--apply` is that agreement.
|
|
9
|
+
*/
|
|
10
|
+
export default class MigrateCommand {
|
|
11
|
+
app;
|
|
12
|
+
ui;
|
|
13
|
+
constructor(app, ui) {
|
|
14
|
+
this.app = app;
|
|
15
|
+
this.ui = ui;
|
|
16
|
+
}
|
|
17
|
+
async run(raw) {
|
|
18
|
+
const result = (await createAppRunner(this.app)({ entity: 'migrate', op: 'execute' }, { params: {}, query: {}, input: raw, state: {} }));
|
|
19
|
+
if (machineWanted(raw))
|
|
20
|
+
return printMachine(result);
|
|
21
|
+
if (result.chain.length === 0) {
|
|
22
|
+
this.ui.warn('No frozen step to apply. `fougere freeze <version>` records one.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (result.refusals.length > 0) {
|
|
26
|
+
this.ui.error(`This chain cannot be realised as it stands (${result.chain.join(' → ')}):`);
|
|
27
|
+
for (const one of result.refusals)
|
|
28
|
+
this.ui.step(`${pc.bold(`${one.entity}.${one.field}`)} — ${one.reason}`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (result.changes.length === 0) {
|
|
32
|
+
this.ui.success(`Up to date — ${result.chain.join(' → ')} already realised.`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
for (const change of result.changes) {
|
|
36
|
+
this.ui.step(change.kind === 'renameColumn'
|
|
37
|
+
? `${change.table}: ${pc.bold(change.from)} → ${pc.bold(change.to)}`
|
|
38
|
+
: `${change.table}: drop ${pc.bold(change.column)}`);
|
|
39
|
+
}
|
|
40
|
+
if (result.ran.length === 0) {
|
|
41
|
+
this.ui.info(`${result.changes.length} statement(s) — run again with ${pc.bold('--apply')} to make it so.`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.ui.success(`${result.ran.length} statement(s) run.`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=MigrateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateCommand.js","sourceRoot":"","sources":["../../../app/commands/MigrateCommand.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;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACb,GAAG;IAAe,EAAE;IAAxC,YAAoB,GAAQ,EAAU,EAAM;mBAAxB,GAAG;kBAAe,EAAE;IAAO,CAAC;IAEhD,KAAK,CAAC,GAAG,CAAC,GAA4B;QACpC,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAC7C,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EACpC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CACjD,CAAkB,CAAC;QAEpB,IAAI,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAEjF,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,+CAA+C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3F,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ;gBAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAE5G,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAE9E,OAAO;QACT,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,KAAK,cAAc;gBAC5B,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBACpE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACtD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,kCAAkC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAE5G,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ui as createUi } from '../../src/ui.js';
|
|
2
|
+
import type { App } from '@fougere/core';
|
|
3
|
+
type Ui = ReturnType<typeof createUi>;
|
|
4
|
+
/**
|
|
5
|
+
* The guided composer: a workspace, then its fronds (domains), then the apps
|
|
6
|
+
* that consume them — in that dependency order. ProjectWriter is a plain,
|
|
7
|
+
* dependency-free service, so the presentation command drives it directly.
|
|
8
|
+
*/
|
|
9
|
+
export default class NewCommand {
|
|
10
|
+
private app;
|
|
11
|
+
private ui;
|
|
12
|
+
constructor(app: App, ui: Ui);
|
|
13
|
+
run(raw: Record<string, unknown>): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* One phase, stated rather than prompted — `blog,api:catalog` is two pieces, the
|
|
16
|
+
* second renamed. The template name is the default name: a piece you don't rename
|
|
17
|
+
* is called what it is.
|
|
18
|
+
*/
|
|
19
|
+
private state;
|
|
20
|
+
/** One phase — loop "template → name" until the user is done. Returns the count added. */
|
|
21
|
+
private compose;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=NewCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/NewCommand.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAStC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IACjB,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,iBAyCrC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAiBb,0FAA0F;YAC5E,OAAO;CA0BtB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import ProjectWriter from '../../fronds/scaffold/services/ProjectWriter.js';
|
|
4
|
+
/**
|
|
5
|
+
* The same line either way, which is the point: `--local` links this checkout, the
|
|
6
|
+
* default resolves `@fougere/*` from npm, and neither needs a caveat since the alpha
|
|
7
|
+
* is published. It used to carry one, and a stale caveat is worse than none.
|
|
8
|
+
*/
|
|
9
|
+
const INSTALL = 'pnpm install';
|
|
10
|
+
/**
|
|
11
|
+
* The guided composer: a workspace, then its fronds (domains), then the apps
|
|
12
|
+
* that consume them — in that dependency order. ProjectWriter is a plain,
|
|
13
|
+
* dependency-free service, so the presentation command drives it directly.
|
|
14
|
+
*/
|
|
15
|
+
export default class NewCommand {
|
|
16
|
+
app;
|
|
17
|
+
ui;
|
|
18
|
+
constructor(app, ui) {
|
|
19
|
+
this.app = app;
|
|
20
|
+
this.ui = ui;
|
|
21
|
+
}
|
|
22
|
+
async run(raw) {
|
|
23
|
+
const pw = new ProjectWriter();
|
|
24
|
+
let name = raw.name;
|
|
25
|
+
if (!name)
|
|
26
|
+
name = (await this.ui.text({ message: 'Workspace', placeholder: 'shop' }));
|
|
27
|
+
const dir = join(process.cwd(), name);
|
|
28
|
+
if (existsSync(dir) && !raw.force) {
|
|
29
|
+
const ok = await this.ui.confirm({ message: `${name}/ existe déjà. Écraser ?` });
|
|
30
|
+
if (!ok) {
|
|
31
|
+
this.ui.cancel();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
pw.createWorkspace(dir, name);
|
|
36
|
+
if (raw.bare) {
|
|
37
|
+
if (raw.local)
|
|
38
|
+
pw.linkLocal(dir);
|
|
39
|
+
else
|
|
40
|
+
pw.pinVersions(dir);
|
|
41
|
+
this.ui.note([`cd ${name}`, `fougere new # compose it (guided)`].join('\n'), `${name} — empty workspace`);
|
|
42
|
+
this.ui.outro('Ready.');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
// Stated composition wins over the prompts: it is the only form a script, a CI
|
|
46
|
+
// job or an agent can drive — the guided flow needs a TTY and hangs without one.
|
|
47
|
+
const stated = raw.frond || raw.app;
|
|
48
|
+
const fronds = stated
|
|
49
|
+
? this.state(dir, pw, 'fronds', raw.frond)
|
|
50
|
+
: await this.compose(dir, pw, 'fronds', 'Fronds — your domains', pw.listTemplates('fronds'));
|
|
51
|
+
const apps = stated
|
|
52
|
+
? this.state(dir, pw, 'apps', raw.app)
|
|
53
|
+
: await this.compose(dir, pw, 'apps', 'Apps — what consumes them', pw.listTemplates('apps'));
|
|
54
|
+
// Every app depends on every frond — stated here, where both names are known.
|
|
55
|
+
pw.linkFronds(dir);
|
|
56
|
+
if (raw.local)
|
|
57
|
+
pw.linkLocal(dir);
|
|
58
|
+
else
|
|
59
|
+
pw.pinVersions(dir);
|
|
60
|
+
this.ui.note([`cd ${name}`, INSTALL, `pnpm dev`].join('\n'), `${name} — ${fronds} frond(s), ${apps} app(s)`);
|
|
61
|
+
this.ui.outro('Ready.');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* One phase, stated rather than prompted — `blog,api:catalog` is two pieces, the
|
|
65
|
+
* second renamed. The template name is the default name: a piece you don't rename
|
|
66
|
+
* is called what it is.
|
|
67
|
+
*/
|
|
68
|
+
state(dir, pw, kind, spec) {
|
|
69
|
+
const available = pw.listTemplates(kind);
|
|
70
|
+
let count = 0;
|
|
71
|
+
for (const piece of spec.split(',').map((s) => s.trim()).filter(Boolean)) {
|
|
72
|
+
const [template, itemName = template] = piece.split(':');
|
|
73
|
+
if (!available.includes(template)) {
|
|
74
|
+
throw new Error(`Unknown ${kind} template '${template}' — available: ${available.join(', ') || '(none)'}`);
|
|
75
|
+
}
|
|
76
|
+
if (kind === 'fronds')
|
|
77
|
+
pw.addFrond(dir, template, itemName);
|
|
78
|
+
else
|
|
79
|
+
pw.addApp(dir, template, itemName);
|
|
80
|
+
this.ui.info(`${kind}/${itemName}`);
|
|
81
|
+
count++;
|
|
82
|
+
}
|
|
83
|
+
return count;
|
|
84
|
+
}
|
|
85
|
+
/** One phase — loop "template → name" until the user is done. Returns the count added. */
|
|
86
|
+
async compose(dir, pw, kind, header, templates) {
|
|
87
|
+
this.ui.step(header);
|
|
88
|
+
let count = 0;
|
|
89
|
+
for (;;) {
|
|
90
|
+
const doneLabel = count === 0 ? (kind === 'fronds' ? 'passer' : 'aucune') : 'terminé';
|
|
91
|
+
const template = (await this.ui.select({
|
|
92
|
+
message: count === 0 ? 'Template' : 'Encore un ?',
|
|
93
|
+
options: [...templates.map((v) => ({ value: v, label: v })), { value: '__done__', label: doneLabel }],
|
|
94
|
+
}));
|
|
95
|
+
if (template === '__done__')
|
|
96
|
+
break;
|
|
97
|
+
const itemName = (await this.ui.text({ message: 'Nom' }));
|
|
98
|
+
if (kind === 'fronds')
|
|
99
|
+
pw.addFrond(dir, template, itemName);
|
|
100
|
+
else
|
|
101
|
+
pw.addApp(dir, template, itemName);
|
|
102
|
+
this.ui.info(`${kind}/${itemName}`);
|
|
103
|
+
count++;
|
|
104
|
+
}
|
|
105
|
+
return count;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=NewCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewCommand.js","sourceRoot":"","sources":["../../../app/commands/NewCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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 host end of the gradient: one frond, alone in this process, reachable
|
|
6
|
+
* over HTTP. `topology: false` — a served frond IS the host, it never routes
|
|
7
|
+
* back out through `remotes:`. The same fronds/** an app runs in-process;
|
|
8
|
+
* only the runtime moves.
|
|
9
|
+
*/
|
|
10
|
+
export default class ServeCommand {
|
|
11
|
+
private app;
|
|
12
|
+
private ui;
|
|
13
|
+
constructor(app: App, ui: Ui);
|
|
14
|
+
run(raw: Record<string, unknown>): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=ServeCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServeCommand.d.ts","sourceRoot":"","sources":["../../../app/commands/ServeCommand.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAQtC;;;;;GAKG;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,iBAgFrC;CACF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createLocalRunner, identityFromEnv } from '@fougere/core';
|
|
2
|
+
import { installLoader } from '../../src/loader.js';
|
|
3
|
+
import { serve } from '@fougere/transport-http';
|
|
4
|
+
import { watch } from 'node:fs';
|
|
5
|
+
/** What a reload gives the calls already running before it releases the app they hold. */
|
|
6
|
+
const DRAIN_MS = 5_000;
|
|
7
|
+
/** One save fires several events; the boot must not start once per event. */
|
|
8
|
+
const SETTLE_MS = 60;
|
|
9
|
+
/**
|
|
10
|
+
* The host end of the gradient: one frond, alone in this process, reachable
|
|
11
|
+
* over HTTP. `topology: false` — a served frond IS the host, it never routes
|
|
12
|
+
* back out through `remotes:`. The same fronds/** an app runs in-process;
|
|
13
|
+
* only the runtime moves.
|
|
14
|
+
*/
|
|
15
|
+
export default class ServeCommand {
|
|
16
|
+
app;
|
|
17
|
+
ui;
|
|
18
|
+
constructor(app, ui) {
|
|
19
|
+
this.app = app;
|
|
20
|
+
this.ui = ui;
|
|
21
|
+
}
|
|
22
|
+
async run(raw) {
|
|
23
|
+
const frond = raw.frond;
|
|
24
|
+
if (!frond) {
|
|
25
|
+
this.ui.error('Usage: fougere serve <frond>');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const root = process.cwd();
|
|
29
|
+
const watching = raw.watch === true;
|
|
30
|
+
// Cache-free from the FIRST boot when watching, so every boot in this process reads
|
|
31
|
+
// the same way rather than the first one being special.
|
|
32
|
+
await installLoader(root, watching);
|
|
33
|
+
const { bootApp } = await import('@fougere/defaults');
|
|
34
|
+
let hosted = await bootApp(root, { only: [frond], topology: false });
|
|
35
|
+
if (!hosted.fronds.some((f) => f.name === frond)) {
|
|
36
|
+
this.ui.error(`Frond '${frond}' introuvable dans ce projet.`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// A handle, not a binding: `serve` holds this closure for the process's life while
|
|
40
|
+
// `current` moves under it, so nothing on the wire learns the app was replaced.
|
|
41
|
+
let current = createLocalRunner(hosted);
|
|
42
|
+
const port = raw.port != null ? Number(raw.port) : 4100;
|
|
43
|
+
// A served frond admits what it can establish. With no root injected it takes the
|
|
44
|
+
// state it is handed, which is why the loopback default is the other half.
|
|
45
|
+
const { verify, requireIdentity } = await identityFromEnv();
|
|
46
|
+
const { port: bound } = await serve((call, inv) => current(call, inv), { port, verify, requireIdentity });
|
|
47
|
+
this.ui.step(`frond ${frond} servie — POST http://127.0.0.1:${bound}/_fougere/call`);
|
|
48
|
+
this.ui.info(requireIdentity ? 'signed calls only (FOUGERE_ROOT_KEY is set)' : 'unsigned calls accepted — no FOUGERE_ROOT_KEY');
|
|
49
|
+
if (!watching) {
|
|
50
|
+
this.ui.info('Ctrl-C pour arrêter.');
|
|
51
|
+
// The listening server keeps the event loop alive; the command returns and stays up.
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const reload = async () => {
|
|
55
|
+
const started = Date.now();
|
|
56
|
+
let next;
|
|
57
|
+
try {
|
|
58
|
+
next = await bootApp(root, { only: [frond], topology: false });
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
// The previous app keeps serving: a dev loop that dies on a typo is worse than
|
|
62
|
+
// one that holds the last state which booted.
|
|
63
|
+
this.ui.error(`reload refused — ${error.message}`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const previous = hosted;
|
|
67
|
+
hosted = next;
|
|
68
|
+
current = createLocalRunner(next);
|
|
69
|
+
this.ui.step(`reloaded in ${Date.now() - started} ms`);
|
|
70
|
+
// Drain then release, on the OLD app and in that order: a call that started before
|
|
71
|
+
// the swap finishes on the app it started on.
|
|
72
|
+
await previous.drain(DRAIN_MS).catch((e) => this.ui.info(`drain: ${e.message}`));
|
|
73
|
+
await previous.dispose();
|
|
74
|
+
};
|
|
75
|
+
let settling;
|
|
76
|
+
let watched = 0;
|
|
77
|
+
for (const path of hosted.fronds.map((f) => f.source.path)) {
|
|
78
|
+
try {
|
|
79
|
+
watch(path, { recursive: true }, () => {
|
|
80
|
+
clearTimeout(settling);
|
|
81
|
+
settling = setTimeout(() => { void reload(); }, SETTLE_MS);
|
|
82
|
+
});
|
|
83
|
+
watched++;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// An absent convention directory IS the convention — the same silence the scan keeps.
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.ui.info(`watching ${watched} path(s) — Ctrl-C pour arrêter.`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=ServeCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServeCommand.js","sourceRoot":"","sources":["../../../app/commands/ServeCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Where the root lives. `.fougere/` already holds generated local state. */
|
|
2
|
+
export declare const ROOT_KEY = ".fougere/root.key";
|
|
3
|
+
/** A PEM spans lines and an env var carrying one survives compose, systemd and CI poorly. */
|
|
4
|
+
export declare const packed: (pem: string) => string;
|
|
5
|
+
//# sourceMappingURL=grant-material.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-material.d.ts","sourceRoot":"","sources":["../../../app/commands/grant-material.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,QAAQ,sBAAsB,CAAC;AAE5C,6FAA6F;AAC7F,eAAO,MAAM,MAAM,QAAS,MAAM,WAAgD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Where the root lives. `.fougere/` already holds generated local state. */
|
|
2
2
|
export const ROOT_KEY = '.fougere/root.key';
|
|
3
|
-
|
|
4
3
|
/** A PEM spans lines and an env var carrying one survives compose, systemd and CI poorly. */
|
|
5
|
-
export const packed = (pem
|
|
4
|
+
export const packed = (pem) => Buffer.from(pem, 'utf8').toString('base64');
|
|
5
|
+
//# sourceMappingURL=grant-material.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grant-material.js","sourceRoot":"","sources":["../../../app/commands/grant-material.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAE5C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const Build_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
root: import("@fougere/schema").Field<string | null>;
|
|
3
|
+
out: import("@fougere/schema").Field<string | null>;
|
|
4
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
5
|
+
}>;
|
|
6
|
+
/** `fougere build` — write down what a scan found, so a deployment reads no disk. */
|
|
7
|
+
export default class Build extends Build_base {
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Build.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Build.ts"],"names":[],"mappings":";;;;;AAEA,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,UAIjC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { entity, bool, text, optional } from "@fougere/schema";
|
|
2
|
+
/** `fougere build` — write down what a scan found, so a deployment reads no disk. */
|
|
3
|
+
export default class Build extends entity({
|
|
4
|
+
root: optional(text({ description: "Project to read. Default: the current directory" })),
|
|
5
|
+
out: optional(text({ description: "Where to write it. Default: .fougere/scan.generated.ts" })),
|
|
6
|
+
json: bool({ default: false, description: "Print the report as JSON, with nothing else on stdout" }),
|
|
7
|
+
}) {
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Build.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE/D,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,MAAM,CAAC;IACxC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC,CAAC;IACxF,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC,CAAC;IAC9F,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACrG,CAAC;CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const Check_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
root: import("@fougere/schema").Field<string>;
|
|
3
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
4
|
+
}>;
|
|
5
|
+
export default class Check extends Check_base {
|
|
6
|
+
}
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=Check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Check.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Check.ts"],"names":[],"mappings":";;;;AAEA,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,UAGjC;CAAG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { entity, bool, text } from '@fougere/schema';
|
|
2
|
+
export default class Check extends entity({
|
|
3
|
+
root: text({ description: 'Project root directory (default: cwd)' }),
|
|
4
|
+
json: bool({ default: false, description: 'Print the report as JSON, with nothing else on stdout' }),
|
|
5
|
+
}) {
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=Check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Check.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,MAAM,CAAC;IACxC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IACpE,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACrG,CAAC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const Devtools_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
url: import("@fougere/schema").Field<string | null>;
|
|
3
|
+
root: import("@fougere/schema").Field<string | null>;
|
|
4
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
5
|
+
}>;
|
|
6
|
+
/** `fougere devtools` — what the running apps of this project are dispatching. */
|
|
7
|
+
export default class Devtools extends Devtools_base {
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Devtools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Devtools.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Devtools.ts"],"names":[],"mappings":";;;;;AAEA,kFAAkF;AAClF,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAIpC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { entity, bool, text, optional } from '@fougere/schema';
|
|
2
|
+
/** `fougere devtools` — what the running apps of this project are dispatching. */
|
|
3
|
+
export default class Devtools extends entity({
|
|
4
|
+
url: optional(text({ description: 'One app to read. Absent: every address this project declares' })),
|
|
5
|
+
root: optional(text({ description: 'Project to read the addresses from. Default: the current directory' })),
|
|
6
|
+
json: bool({ default: false, description: 'Print one page as JSON and stop, instead of following' }),
|
|
7
|
+
}) {
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Devtools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Devtools.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Devtools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE/D,kFAAkF;AAClF,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,MAAM,CAAC;IAC3C,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,8DAA8D,EAAE,CAAC,CAAC;IACpG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,oEAAoE,EAAE,CAAC,CAAC;IAC3G,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACrG,CAAC;CAAG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const Explain_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
operation: import("@fougere/schema").Field<string>;
|
|
3
|
+
root: import("@fougere/schema").Field<string | null>;
|
|
4
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
5
|
+
names: import("@fougere/schema").Field<"fronds" | "operations" | null>;
|
|
6
|
+
}>;
|
|
7
|
+
/** `fougere explain <Operation>` — print the operation contract Fougere will serve. */
|
|
8
|
+
export default class Explain extends Explain_base {
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=Explain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Explain.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Explain.ts"],"names":[],"mappings":";;;;;;AAEA,uFAAuF;AACvF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAKnC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { bool, entity, oneOf, optional, text } from '@fougere/schema';
|
|
2
|
+
/** `fougere explain <Operation>` — print the operation contract Fougere will serve. */
|
|
3
|
+
export default class Explain extends entity({
|
|
4
|
+
operation: text({ min: 1, description: 'Operation to inspect (e.g. Post.publish)' }),
|
|
5
|
+
root: optional(text({ description: 'Project to read. Default: the current directory' })),
|
|
6
|
+
json: bool({ default: false, description: 'Print stable machine-readable JSON' }),
|
|
7
|
+
names: optional(oneOf('operations', 'fronds', { description: 'Print one name per line — what shell completion reads' })),
|
|
8
|
+
}) {
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Explain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Explain.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Explain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEtE,uFAAuF;AACvF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM,CAAC;IAC1C,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;IACpF,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC,CAAC;IACxF,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;IACjF,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC,CAAC;CACzH,CAAC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const Freeze_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
version: import("@fougere/schema").Field<string>;
|
|
3
|
+
root: import("@fougere/schema").Field<string | null>;
|
|
4
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
5
|
+
}>;
|
|
6
|
+
/** `fougere freeze <version>` — record today's shapes under a name, for good. */
|
|
7
|
+
export default class Freeze extends Freeze_base {
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Freeze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Freeze.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Freeze.ts"],"names":[],"mappings":";;;;;AAEA,iFAAiF;AACjF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAIlC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { entity, bool, text, optional } from "@fougere/schema";
|
|
2
|
+
/** `fougere freeze <version>` — record today's shapes under a name, for good. */
|
|
3
|
+
export default class Freeze extends entity({
|
|
4
|
+
version: text({ min: 1, description: "Name to record these shapes under (e.g. v2)" }),
|
|
5
|
+
root: optional(text({ description: "Project to read. Default: the current directory" })),
|
|
6
|
+
json: bool({ default: false, description: "Print the report as JSON, with nothing else on stdout" }),
|
|
7
|
+
}) {
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Freeze.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Freeze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE/D,iFAAiF;AACjF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,MAAM,CAAC;IACzC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC;IACrF,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC,CAAC;IACxF,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACrG,CAAC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const Graph_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
root: import("@fougere/schema").Field<string>;
|
|
3
|
+
minEntities: import("@fougere/schema").Field<number>;
|
|
4
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
5
|
+
}>;
|
|
6
|
+
export default class Graph extends Graph_base {
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Graph.ts"],"names":[],"mappings":";;;;;AAEA,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,UAIjC;CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { entity, bool, text, number } from '@fougere/schema';
|
|
2
|
+
export default class Graph extends entity({
|
|
3
|
+
root: text({ description: 'Project root directory (default: cwd)' }),
|
|
4
|
+
minEntities: number({ default: 6, description: 'Minimum entities before suggesting split' }),
|
|
5
|
+
json: bool({ default: false, description: 'Print the report as JSON, with nothing else on stdout' }),
|
|
6
|
+
}) {
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,MAAM,CAAC;IACxC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IACpE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;IAC5F,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACrG,CAAC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const Load_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
root: import("@fougere/schema").Field<string>;
|
|
3
|
+
facade: import("@fougere/schema").Field<string>;
|
|
4
|
+
out: import("@fougere/schema").Field<string>;
|
|
5
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
6
|
+
}>;
|
|
7
|
+
export default class Load extends Load_base {
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Load.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Load.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Load.ts"],"names":[],"mappings":";;;;;;AAEA,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,SAKhC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { entity, bool, text } from '@fougere/schema';
|
|
2
|
+
export default class Load extends entity({
|
|
3
|
+
root: text({ description: 'Project root directory (default: cwd)' }),
|
|
4
|
+
facade: text({ description: 'Where the calls go (default: http://127.0.0.1:3000/_fougere/call)' }),
|
|
5
|
+
out: text({ description: 'Where to write it, or empty to print it on stdout (default: <root>/load.js)' }),
|
|
6
|
+
json: bool({ default: false, description: 'Print the scenario as JSON, with nothing else on stdout' }),
|
|
7
|
+
}) {
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Load.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,MAAM,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IACpE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,mEAAmE,EAAE,CAAC;IAClG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,6EAA6E,EAAE,CAAC;IACzG,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;CACvG,CAAC;CAAG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const Migrate_base: import("@fougere/schema").SchemaConstructor<{
|
|
2
|
+
apply: import("@fougere/schema").Field<boolean>;
|
|
3
|
+
root: import("@fougere/schema").Field<string | null>;
|
|
4
|
+
json: import("@fougere/schema").Field<boolean>;
|
|
5
|
+
}>;
|
|
6
|
+
/** `fougere migrate` — realise the frozen steps the database has not caught up with. */
|
|
7
|
+
export default class Migrate extends Migrate_base {
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrate.d.ts","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Migrate.ts"],"names":[],"mappings":";;;;;AAEA,wFAAwF;AACxF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAInC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { entity, bool, optional, text } from "@fougere/schema";
|
|
2
|
+
/** `fougere migrate` — realise the frozen steps the database has not caught up with. */
|
|
3
|
+
export default class Migrate extends entity({
|
|
4
|
+
apply: bool({ default: false, description: "Run it. Without this the plan is printed and nothing moves" }),
|
|
5
|
+
root: optional(text({ description: "Project to read. Default: the current directory" })),
|
|
6
|
+
json: bool({ default: false, description: "Print the report as JSON, with nothing else on stdout" }),
|
|
7
|
+
}) {
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../../../fronds/analysis/entities/Migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE/D,wFAAwF;AACxF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,MAAM,CAAC;IAC1C,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,4DAA4D,EAAE,CAAC;IAC1G,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC,CAAC;IACxF,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;CACrG,CAAC;CAAG"}
|