akanjs 2.0.7 → 2.1.0-rc.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/README.ko.md +4 -4
- package/README.md +4 -4
- package/client/router.ts +10 -3
- package/document/documentSchema.ts +9 -1
- package/index.ts +187 -0
- package/package.json +6 -50
- package/server/akanApp.ts +2 -24
- package/server/akanAppHeaders.ts +30 -0
- package/server/di/predefinedAdaptor.ts +1 -1
- package/types/dictionary/base.dictionary.d.ts +1 -1
- package/types/dictionary/dictionary.d.ts +8 -8
- package/types/document/documentSchema.d.ts +33 -0
- package/types/document/index.d.ts +1 -1
- package/types/document/schema.d.ts +1 -1
- package/types/document/types.d.ts +1 -1
- package/types/{devkit/akanConfig/types.d.ts → index.d.ts} +45 -54
- package/types/server/akanAppHeaders.d.ts +1 -0
- package/types/server/di/predefinedAdaptor.d.ts +1 -1
- package/types/store/baseSt.d.ts +2 -2
- package/ui/Link/SsrLink.tsx +2 -2
- package/webkit/useCodepush.tsx +1 -1
- package/cli/application/application.command.ts +0 -224
- package/cli/application/application.interface.tsx +0 -225
- package/cli/application/application.runner.ts +0 -355
- package/cli/application/application.script.ts +0 -244
- package/cli/build.ts +0 -27
- package/cli/cloud/cloud.command.ts +0 -48
- package/cli/cloud/cloud.runner.ts +0 -157
- package/cli/cloud/cloud.script.ts +0 -40
- package/cli/guideline/guideline.command.ts +0 -31
- package/cli/guideline/guideline.prompt.ts +0 -212
- package/cli/guideline/guideline.runner.ts +0 -53
- package/cli/guideline/guideline.script.ts +0 -33
- package/cli/guidelines/___library/sharedUiStructureDescription.en.md +0 -767
- package/cli/guidelines/___library/utilUiStructureDescription.en.md +0 -395
- package/cli/guidelines/___lint/lintRuleDescription.en.md +0 -64
- package/cli/guidelines/___module/moduleStructureDescription.en.md +0 -80
- package/cli/guidelines/componentRule/componentRule.generate.json +0 -131
- package/cli/guidelines/componentRule/componentRule.instruction.md +0 -637
- package/cli/guidelines/cssRule/cssRule.generate.json +0 -93
- package/cli/guidelines/cssRule/cssRule.instruction.md +0 -435
- package/cli/guidelines/databaseModule/databaseModule.generate.json +0 -51
- package/cli/guidelines/databaseModule/databaseModule.instruction.md +0 -612
- package/cli/guidelines/docPageRule/docPageRule.generate.json +0 -72
- package/cli/guidelines/docPageRule/docPageRule.instruction.md +0 -389
- package/cli/guidelines/enumConstant/enumConstant.generate.json +0 -24
- package/cli/guidelines/enumConstant/enumConstant.instruction.md +0 -232
- package/cli/guidelines/framework/framework.generate.json +0 -119
- package/cli/guidelines/framework/framework.instruction.md +0 -1110
- package/cli/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
- package/cli/guidelines/modelConstant/modelConstant.generate.json +0 -128
- package/cli/guidelines/modelConstant/modelConstant.instruction.md +0 -506
- package/cli/guidelines/modelDictionary/modelDictionary.generate.json +0 -108
- package/cli/guidelines/modelDictionary/modelDictionary.instruction.md +0 -547
- package/cli/guidelines/modelDocument/modelDocument.generate.json +0 -129
- package/cli/guidelines/modelDocument/modelDocument.instruction.md +0 -509
- package/cli/guidelines/modelService/modelService.generate.json +0 -135
- package/cli/guidelines/modelService/modelService.instruction.md +0 -708
- package/cli/guidelines/modelSignal/modelSignal.generate.json +0 -201
- package/cli/guidelines/modelSignal/modelSignal.instruction.md +0 -552
- package/cli/guidelines/modelStore/modelStore.generate.json +0 -130
- package/cli/guidelines/modelStore/modelStore.instruction.md +0 -585
- package/cli/guidelines/modelTemplate/modelTemplate.generate.json +0 -104
- package/cli/guidelines/modelTemplate/modelTemplate.instruction.md +0 -604
- package/cli/guidelines/modelUnit/modelUnit.generate.json +0 -92
- package/cli/guidelines/modelUnit/modelUnit.instruction.md +0 -541
- package/cli/guidelines/modelUtil/modelUtil.generate.json +0 -93
- package/cli/guidelines/modelUtil/modelUtil.instruction.md +0 -752
- package/cli/guidelines/modelView/modelView.generate.json +0 -80
- package/cli/guidelines/modelView/modelView.instruction.md +0 -1005
- package/cli/guidelines/modelZone/modelZone.generate.json +0 -126
- package/cli/guidelines/modelZone/modelZone.instruction.md +0 -528
- package/cli/guidelines/scalarConstant/scalarConstant.generate.json +0 -106
- package/cli/guidelines/scalarConstant/scalarConstant.instruction.md +0 -442
- package/cli/guidelines/scalarDictionary/scalarDictionary.generate.json +0 -83
- package/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md +0 -273
- package/cli/guidelines/scalarModule/scalarModule.generate.json +0 -35
- package/cli/guidelines/scalarModule/scalarModule.instruction.md +0 -81
- package/cli/guidelines/sharedUiUsage/sharedUiUsage.generate.json +0 -108
- package/cli/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +0 -310
- package/cli/guidelines/utilUiUsage/utilUiUsage.generate.json +0 -140
- package/cli/guidelines/utilUiUsage/utilUiUsage.instruction.md +0 -339
- package/cli/index.js +0 -184444
- package/cli/index.ts +0 -24
- package/cli/library/library.command.ts +0 -28
- package/cli/library/library.runner.ts +0 -66
- package/cli/library/library.script.ts +0 -39
- package/cli/module/module.command.ts +0 -35
- package/cli/module/module.prompt.ts +0 -18
- package/cli/module/module.request.ts +0 -319
- package/cli/module/module.runner.ts +0 -76
- package/cli/module/module.script.ts +0 -161
- package/cli/npmRegistry.ts +0 -13
- package/cli/openBrowser.ts +0 -15
- package/cli/package/package.command.ts +0 -32
- package/cli/package/package.runner.ts +0 -94
- package/cli/package/package.script.ts +0 -35
- package/cli/page/page.command.ts +0 -14
- package/cli/page/page.runner.ts +0 -14
- package/cli/page/page.script.ts +0 -12
- package/cli/pluralizeName.ts +0 -5
- package/cli/scalar/scalar.command.ts +0 -21
- package/cli/scalar/scalar.prompt.ts +0 -131
- package/cli/scalar/scalar.runner.ts +0 -38
- package/cli/scalar/scalar.script.ts +0 -16
- package/cli/semver.ts +0 -18
- package/cli/templates/__scalar/__model__/__model__.constant.ts +0 -15
- package/cli/templates/__scalar/__model__/__model__.dictionary.ts +0 -19
- package/cli/templates/__scalar/__model__/__model__.document.ts +0 -15
- package/cli/templates/app/akan.config.ts +0 -14
- package/cli/templates/app/env/env.client.debug.ts.template +0 -7
- package/cli/templates/app/env/env.client.develop.ts.template +0 -7
- package/cli/templates/app/env/env.client.local.ts.template +0 -7
- package/cli/templates/app/env/env.client.main.ts.template +0 -7
- package/cli/templates/app/env/env.client.testing.ts.template +0 -7
- package/cli/templates/app/env/env.client.ts +0 -21
- package/cli/templates/app/env/env.client.type.ts +0 -16
- package/cli/templates/app/env/env.server.debug.ts.template +0 -7
- package/cli/templates/app/env/env.server.develop.ts.template +0 -7
- package/cli/templates/app/env/env.server.local.ts.template +0 -7
- package/cli/templates/app/env/env.server.main.ts.template +0 -7
- package/cli/templates/app/env/env.server.testing.ts.template +0 -6
- package/cli/templates/app/env/env.server.ts +0 -20
- package/cli/templates/app/lib/___appName__/__appName__.dictionary.ts +0 -17
- package/cli/templates/app/lib/___appName__/__appName__.service.ts +0 -13
- package/cli/templates/app/lib/___appName__/__appName__.signal.ts +0 -17
- package/cli/templates/app/lib/___appName__/__appName__.store.ts +0 -15
- package/cli/templates/app/lib/option.ts +0 -17
- package/cli/templates/app/main.ts +0 -16
- package/cli/templates/app/package.json.template +0 -5
- package/cli/templates/app/page/_index.tsx +0 -296
- package/cli/templates/app/page/_layout.tsx +0 -31
- package/cli/templates/app/page/styles.css.template +0 -53
- package/cli/templates/app/public/favicon.ico +0 -0
- package/cli/templates/app/public/logo.png +0 -0
- package/cli/templates/app/tsconfig.json.template +0 -21
- package/cli/templates/client.ts +0 -46
- package/cli/templates/crudPages/[__model__Id]/edit/page.tsx +0 -47
- package/cli/templates/crudPages/[__model__Id]/page.tsx +0 -52
- package/cli/templates/crudPages/new/page.tsx +0 -42
- package/cli/templates/crudPages/page.tsx +0 -43
- package/cli/templates/crudSinglePage/page.tsx +0 -37
- package/cli/templates/env/_env.server.type.ts +0 -16
- package/cli/templates/facetIndex/index.ts +0 -32
- package/cli/templates/index.ts +0 -10
- package/cli/templates/lib/__lib/lib.constant.ts +0 -38
- package/cli/templates/lib/__lib/lib.dictionary.ts +0 -33
- package/cli/templates/lib/__lib/lib.document.ts +0 -35
- package/cli/templates/lib/__lib/lib.service.ts +0 -33
- package/cli/templates/lib/__lib/lib.signal.ts +0 -34
- package/cli/templates/lib/__lib/lib.store.ts +0 -33
- package/cli/templates/lib/cnst.ts +0 -29
- package/cli/templates/lib/db.ts +0 -32
- package/cli/templates/lib/dict.ts +0 -49
- package/cli/templates/lib/sig.ts +0 -60
- package/cli/templates/lib/srv.ts +0 -34
- package/cli/templates/lib/st.ts +0 -31
- package/cli/templates/lib/useClient.ts +0 -19
- package/cli/templates/lib/useServer.ts +0 -7
- package/cli/templates/libRoot/.gitignore.template +0 -16
- package/cli/templates/libRoot/akan.config.ts +0 -12
- package/cli/templates/libRoot/base/baseLogic.ts +0 -10
- package/cli/templates/libRoot/base/index.ts +0 -8
- package/cli/templates/libRoot/common/commonLogic.ts +0 -10
- package/cli/templates/libRoot/common/index.ts +0 -8
- package/cli/templates/libRoot/env/env.server.example.ts.template +0 -6
- package/cli/templates/libRoot/env/env.server.testing.ts.template +0 -6
- package/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.ts +0 -15
- package/cli/templates/libRoot/lib/___libName__/__libName__.service.ts +0 -11
- package/cli/templates/libRoot/lib/___libName__/__libName__.store.ts +0 -13
- package/cli/templates/libRoot/lib/option.ts +0 -17
- package/cli/templates/libRoot/package.json.template +0 -5
- package/cli/templates/libRoot/srvkit/backendLogic.ts +0 -10
- package/cli/templates/libRoot/srvkit/index.ts +0 -8
- package/cli/templates/libRoot/tsconfig.json.template +0 -11
- package/cli/templates/libRoot/ui/index.ts +0 -7
- package/cli/templates/libRoot/webkit/frontendLogic.ts +0 -10
- package/cli/templates/libRoot/webkit/index.ts +0 -8
- package/cli/templates/localDev/docker-compose.yaml.template +0 -37
- package/cli/templates/module/__Model__.Template.tsx +0 -36
- package/cli/templates/module/__Model__.Unit.tsx +0 -26
- package/cli/templates/module/__Model__.Util.tsx +0 -30
- package/cli/templates/module/__Model__.View.tsx +0 -29
- package/cli/templates/module/__Model__.Zone.tsx +0 -43
- package/cli/templates/module/__model__.constant.ts +0 -24
- package/cli/templates/module/__model__.dictionary.ts +0 -30
- package/cli/templates/module/__model__.document.ts +0 -23
- package/cli/templates/module/__model__.service.ts +0 -16
- package/cli/templates/module/__model__.signal.ts +0 -27
- package/cli/templates/module/__model__.store.ts +0 -19
- package/cli/templates/moduleRoot/index.tsx +0 -31
- package/cli/templates/pkgRoot/tsconfig.json.template +0 -10
- package/cli/templates/server.ts +0 -45
- package/cli/templates/workspaceRoot/.env.template +0 -14
- package/cli/templates/workspaceRoot/.gitignore.template +0 -120
- package/cli/templates/workspaceRoot/.vscode/settings.json.template +0 -23
- package/cli/templates/workspaceRoot/biome.json.template +0 -191
- package/cli/templates/workspaceRoot/bunfig.toml +0 -4
- package/cli/templates/workspaceRoot/package.json.template +0 -7
- package/cli/templates/workspaceRoot/tsconfig.json.template +0 -29
- package/cli/testHelpers.ts +0 -171
- package/cli/workspace/workspace.command.ts +0 -55
- package/cli/workspace/workspace.runner.ts +0 -79
- package/cli/workspace/workspace.script.ts +0 -74
- package/devkit/aiEditor.ts +0 -299
- package/devkit/akanApp/akanApp.host.ts +0 -393
- package/devkit/akanApp/index.ts +0 -1
- package/devkit/akanConfig/akanConfig.ts +0 -360
- package/devkit/akanConfig/index.ts +0 -2
- package/devkit/akanConfig/types.ts +0 -187
- package/devkit/applicationBuildReporter.ts +0 -69
- package/devkit/applicationBuildRunner.ts +0 -302
- package/devkit/applicationReleasePackager.ts +0 -205
- package/devkit/artifact/implicitRootLayout.ts +0 -155
- package/devkit/artifact/index.ts +0 -1
- package/devkit/artifact/routeSeedIndex.ts +0 -128
- package/devkit/auth.ts +0 -41
- package/devkit/builder.ts +0 -164
- package/devkit/capacitor.base.config.ts +0 -88
- package/devkit/capacitorApp.ts +0 -443
- package/devkit/commandDecorators/argMeta.ts +0 -102
- package/devkit/commandDecorators/command.ts +0 -340
- package/devkit/commandDecorators/commandBuilder.ts +0 -224
- package/devkit/commandDecorators/commandMeta.ts +0 -6
- package/devkit/commandDecorators/dependencyBuilder.ts +0 -100
- package/devkit/commandDecorators/helpFormatter.ts +0 -220
- package/devkit/commandDecorators/index.ts +0 -8
- package/devkit/commandDecorators/targetMeta.ts +0 -31
- package/devkit/commandDecorators/types.ts +0 -10
- package/devkit/constants.ts +0 -25
- package/devkit/createTunnel.ts +0 -36
- package/devkit/dependencyScanner.ts +0 -339
- package/devkit/executors.ts +0 -1362
- package/devkit/extractDeps.ts +0 -85
- package/devkit/fileEditor.ts +0 -106
- package/devkit/fileSys.ts +0 -39
- package/devkit/frontendBuild/allRoutesBuilder.ts +0 -103
- package/devkit/frontendBuild/clientBuildTypes.ts +0 -114
- package/devkit/frontendBuild/clientEntriesBundler.ts +0 -300
- package/devkit/frontendBuild/clientEntryDiscovery.ts +0 -196
- package/devkit/frontendBuild/csrArtifactBuilder.ts +0 -237
- package/devkit/frontendBuild/cssCompiler.ts +0 -285
- package/devkit/frontendBuild/cssImportResolver.ts +0 -116
- package/devkit/frontendBuild/fontOptimizer.ts +0 -427
- package/devkit/frontendBuild/hmrChangeClassifier.ts +0 -28
- package/devkit/frontendBuild/hmrWatcher.ts +0 -101
- package/devkit/frontendBuild/index.ts +0 -18
- package/devkit/frontendBuild/pagesBundleBuilder.ts +0 -137
- package/devkit/frontendBuild/pagesEntrySourceGenerator.ts +0 -37
- package/devkit/frontendBuild/precompressArtifacts.ts +0 -59
- package/devkit/frontendBuild/routeClientBuilder.ts +0 -290
- package/devkit/frontendBuild/routesManifestArtifactSerializer.ts +0 -62
- package/devkit/frontendBuild/ssrBaseArtifactBuilder.ts +0 -139
- package/devkit/frontendBuild/vendorSpecifiers.ts +0 -16
- package/devkit/frontendBuild/watchRootResolver.ts +0 -28
- package/devkit/getCredentials.ts +0 -19
- package/devkit/getDirname.ts +0 -3
- package/devkit/getModelFileData.ts +0 -59
- package/devkit/getRelatedCnsts.ts +0 -300
- package/devkit/guideline.ts +0 -19
- package/devkit/incrementalBuilder/incrementalBuilder.host.ts +0 -152
- package/devkit/incrementalBuilder/incrementalBuilder.proc.ts +0 -331
- package/devkit/incrementalBuilder/index.ts +0 -1
- package/devkit/index.ts +0 -36
- package/devkit/lint/no-deep-internal-import.grit +0 -25
- package/devkit/lint/no-import-client-functions.grit +0 -32
- package/devkit/lint/no-import-external-library.grit +0 -21
- package/devkit/lint/no-js-private-class-method.grit +0 -42
- package/devkit/lint/no-use-client-in-server.grit +0 -7
- package/devkit/lint/non-scalar-props-restricted.grit +0 -13
- package/devkit/linter.ts +0 -248
- package/devkit/mobile/index.ts +0 -1
- package/devkit/mobile/mobileTarget.ts +0 -88
- package/devkit/prompter.ts +0 -71
- package/devkit/scanInfo.ts +0 -606
- package/devkit/selectModel.ts +0 -11
- package/devkit/spinner.ts +0 -54
- package/devkit/src/capacitorApp.ts +0 -277
- package/devkit/sshTunnel.ts +0 -151
- package/devkit/streamAi.ts +0 -45
- package/devkit/transforms/barrelAnalyzer.ts +0 -249
- package/devkit/transforms/barrelImportsPlugin.ts +0 -457
- package/devkit/transforms/externalizeFrameworkPlugin.ts +0 -159
- package/devkit/transforms/index.ts +0 -5
- package/devkit/transforms/rscUseClientTransform.ts +0 -52
- package/devkit/transforms/useClientBundlePlugin.ts +0 -47
- package/devkit/typeChecker.ts +0 -260
- package/devkit/types.ts +0 -44
- package/devkit/ui/MultiScrollList.tsx +0 -228
- package/devkit/ui/ScrollList.tsx +0 -106
- package/devkit/ui/index.ts +0 -2
- package/devkit/uploadRelease.ts +0 -95
- package/devkit/useStdoutDimensions.ts +0 -20
- package/types/cli/application/application.command.d.ts +0 -7
- package/types/cli/application/application.interface.d.ts +0 -40
- package/types/cli/application/application.runner.d.ts +0 -66
- package/types/cli/application/application.script.d.ts +0 -72
- package/types/cli/build.d.ts +0 -1
- package/types/cli/cloud/cloud.command.d.ts +0 -7
- package/types/cli/cloud/cloud.runner.d.ts +0 -13
- package/types/cli/cloud/cloud.script.d.ts +0 -23
- package/types/cli/guideline/guideline.command.d.ts +0 -7
- package/types/cli/guideline/guideline.prompt.d.ts +0 -29
- package/types/cli/guideline/guideline.runner.d.ts +0 -21
- package/types/cli/guideline/guideline.script.d.ts +0 -16
- package/types/cli/index.d.ts +0 -2
- package/types/cli/library/library.command.d.ts +0 -7
- package/types/cli/library/library.runner.d.ts +0 -11
- package/types/cli/library/library.script.d.ts +0 -13
- package/types/cli/module/module.command.d.ts +0 -7
- package/types/cli/module/module.prompt.d.ts +0 -13
- package/types/cli/module/module.request.d.ts +0 -63
- package/types/cli/module/module.runner.d.ts +0 -55
- package/types/cli/module/module.script.d.ts +0 -22
- package/types/cli/npmRegistry.d.ts +0 -1
- package/types/cli/openBrowser.d.ts +0 -1
- package/types/cli/package/package.command.d.ts +0 -7
- package/types/cli/package/package.runner.d.ts +0 -13
- package/types/cli/package/package.script.d.ts +0 -18
- package/types/cli/page/page.command.d.ts +0 -7
- package/types/cli/page/page.runner.d.ts +0 -10
- package/types/cli/page/page.script.d.ts +0 -13
- package/types/cli/pluralizeName.d.ts +0 -1
- package/types/cli/scalar/scalar.command.d.ts +0 -7
- package/types/cli/scalar/scalar.prompt.d.ts +0 -23
- package/types/cli/scalar/scalar.runner.d.ts +0 -16
- package/types/cli/scalar/scalar.script.d.ts +0 -11
- package/types/cli/semver.d.ts +0 -1
- package/types/cli/templates/__scalar/__model__/__model__.constant.d.ts +0 -7
- package/types/cli/templates/__scalar/__model__/__model__.dictionary.d.ts +0 -7
- package/types/cli/templates/__scalar/__model__/__model__.document.d.ts +0 -7
- package/types/cli/templates/app/akan.config.d.ts +0 -6
- package/types/cli/templates/app/env/env.client.d.ts +0 -6
- package/types/cli/templates/app/env/env.client.type.d.ts +0 -6
- package/types/cli/templates/app/env/env.server.d.ts +0 -6
- package/types/cli/templates/app/lib/___appName__/__appName__.dictionary.d.ts +0 -7
- package/types/cli/templates/app/lib/___appName__/__appName__.service.d.ts +0 -7
- package/types/cli/templates/app/lib/___appName__/__appName__.signal.d.ts +0 -7
- package/types/cli/templates/app/lib/___appName__/__appName__.store.d.ts +0 -7
- package/types/cli/templates/app/lib/option.d.ts +0 -6
- package/types/cli/templates/app/main.d.ts +0 -6
- package/types/cli/templates/app/page/_index.d.ts +0 -9
- package/types/cli/templates/app/page/_layout.d.ts +0 -11
- package/types/cli/templates/client.d.ts +0 -4
- package/types/cli/templates/crudPages/[__model__Id]/edit/page.d.ts +0 -11
- package/types/cli/templates/crudPages/[__model__Id]/page.d.ts +0 -11
- package/types/cli/templates/crudPages/new/page.d.ts +0 -11
- package/types/cli/templates/crudPages/page.d.ts +0 -11
- package/types/cli/templates/crudSinglePage/page.d.ts +0 -11
- package/types/cli/templates/env/_env.server.type.d.ts +0 -7
- package/types/cli/templates/facetIndex/index.d.ts +0 -13
- package/types/cli/templates/facetIndex.d.ts +0 -1
- package/types/cli/templates/index.d.ts +0 -6
- package/types/cli/templates/lib/__lib/lib.constant.d.ts +0 -4
- package/types/cli/templates/lib/__lib/lib.dictionary.d.ts +0 -4
- package/types/cli/templates/lib/__lib/lib.document.d.ts +0 -4
- package/types/cli/templates/lib/__lib/lib.service.d.ts +0 -4
- package/types/cli/templates/lib/__lib/lib.signal.d.ts +0 -4
- package/types/cli/templates/lib/__lib/lib.store.d.ts +0 -4
- package/types/cli/templates/lib/cnst.d.ts +0 -4
- package/types/cli/templates/lib/db.d.ts +0 -4
- package/types/cli/templates/lib/dict.d.ts +0 -4
- package/types/cli/templates/lib/sig.d.ts +0 -4
- package/types/cli/templates/lib/srv.d.ts +0 -4
- package/types/cli/templates/lib/st.d.ts +0 -4
- package/types/cli/templates/lib/useClient.d.ts +0 -4
- package/types/cli/templates/lib/useServer.d.ts +0 -4
- package/types/cli/templates/libRoot/akan.config.d.ts +0 -5
- package/types/cli/templates/libRoot/base/baseLogic.d.ts +0 -5
- package/types/cli/templates/libRoot/base/index.d.ts +0 -5
- package/types/cli/templates/libRoot/base.d.ts +0 -1
- package/types/cli/templates/libRoot/common/commonLogic.d.ts +0 -5
- package/types/cli/templates/libRoot/common/index.d.ts +0 -5
- package/types/cli/templates/libRoot/common.d.ts +0 -1
- package/types/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.d.ts +0 -6
- package/types/cli/templates/libRoot/lib/___libName__/__libName__.service.d.ts +0 -6
- package/types/cli/templates/libRoot/lib/___libName__/__libName__.store.d.ts +0 -6
- package/types/cli/templates/libRoot/lib/option.d.ts +0 -6
- package/types/cli/templates/libRoot/srvkit/backendLogic.d.ts +0 -5
- package/types/cli/templates/libRoot/srvkit/index.d.ts +0 -5
- package/types/cli/templates/libRoot/srvkit.d.ts +0 -1
- package/types/cli/templates/libRoot/ui/index.d.ts +0 -5
- package/types/cli/templates/libRoot/ui.d.ts +0 -1
- package/types/cli/templates/libRoot/webkit/frontendLogic.d.ts +0 -5
- package/types/cli/templates/libRoot/webkit/index.d.ts +0 -5
- package/types/cli/templates/libRoot/webkit.d.ts +0 -1
- package/types/cli/templates/module/__Model__.Template.d.ts +0 -11
- package/types/cli/templates/module/__Model__.Unit.d.ts +0 -11
- package/types/cli/templates/module/__Model__.Util.d.ts +0 -11
- package/types/cli/templates/module/__Model__.View.d.ts +0 -11
- package/types/cli/templates/module/__Model__.Zone.d.ts +0 -11
- package/types/cli/templates/module/__model__.constant.d.ts +0 -8
- package/types/cli/templates/module/__model__.dictionary.d.ts +0 -8
- package/types/cli/templates/module/__model__.document.d.ts +0 -8
- package/types/cli/templates/module/__model__.service.d.ts +0 -8
- package/types/cli/templates/module/__model__.signal.d.ts +0 -9
- package/types/cli/templates/module/__model__.store.d.ts +0 -8
- package/types/cli/templates/moduleRoot/index.d.ts +0 -11
- package/types/cli/templates/moduleRoot.d.ts +0 -1
- package/types/cli/templates/server.d.ts +0 -4
- package/types/cli/templates.d.ts +0 -1
- package/types/cli/testHelpers.d.ts +0 -64
- package/types/cli/workspace/workspace.command.d.ts +0 -7
- package/types/cli/workspace/workspace.runner.d.ts +0 -14
- package/types/cli/workspace/workspace.script.d.ts +0 -29
- package/types/cli.d.ts +0 -1
- package/types/devkit/aiEditor.d.ts +0 -50
- package/types/devkit/akanApp/akanApp.host.d.ts +0 -16
- package/types/devkit/akanApp/index.d.ts +0 -1
- package/types/devkit/akanApp.d.ts +0 -1
- package/types/devkit/akanConfig/akanConfig.d.ts +0 -36
- package/types/devkit/akanConfig/index.d.ts +0 -2
- package/types/devkit/akanConfig.d.ts +0 -1
- package/types/devkit/applicationBuildReporter.d.ts +0 -25
- package/types/devkit/applicationBuildRunner.d.ts +0 -29
- package/types/devkit/applicationReleasePackager.d.ts +0 -17
- package/types/devkit/artifact/implicitRootLayout.d.ts +0 -17
- package/types/devkit/artifact/index.d.ts +0 -1
- package/types/devkit/artifact/routeSeedIndex.d.ts +0 -38
- package/types/devkit/artifact.d.ts +0 -1
- package/types/devkit/auth.d.ts +0 -9
- package/types/devkit/builder.d.ts +0 -18
- package/types/devkit/capacitor.base.config.d.ts +0 -3
- package/types/devkit/capacitorApp.d.ts +0 -58
- package/types/devkit/commandDecorators/argMeta.d.ts +0 -68
- package/types/devkit/commandDecorators/command.d.ts +0 -2
- package/types/devkit/commandDecorators/commandBuilder.d.ts +0 -60
- package/types/devkit/commandDecorators/commandMeta.d.ts +0 -2
- package/types/devkit/commandDecorators/dependencyBuilder.d.ts +0 -22
- package/types/devkit/commandDecorators/helpFormatter.d.ts +0 -3
- package/types/devkit/commandDecorators/index.d.ts +0 -8
- package/types/devkit/commandDecorators/targetMeta.d.ts +0 -21
- package/types/devkit/commandDecorators/types.d.ts +0 -8
- package/types/devkit/commandDecorators.d.ts +0 -1
- package/types/devkit/constants.d.ts +0 -25
- package/types/devkit/createTunnel.d.ts +0 -8
- package/types/devkit/dependencyScanner.d.ts +0 -33
- package/types/devkit/executors.d.ts +0 -320
- package/types/devkit/extractDeps.d.ts +0 -7
- package/types/devkit/fileEditor.d.ts +0 -16
- package/types/devkit/fileSys.d.ts +0 -12
- package/types/devkit/frontendBuild/allRoutesBuilder.d.ts +0 -18
- package/types/devkit/frontendBuild/clientBuildTypes.d.ts +0 -107
- package/types/devkit/frontendBuild/clientEntriesBundler.d.ts +0 -12
- package/types/devkit/frontendBuild/clientEntryDiscovery.d.ts +0 -19
- package/types/devkit/frontendBuild/csrArtifactBuilder.d.ts +0 -16
- package/types/devkit/frontendBuild/cssCompiler.d.ts +0 -25
- package/types/devkit/frontendBuild/cssImportResolver.d.ts +0 -9
- package/types/devkit/frontendBuild/fontOptimizer.d.ts +0 -14
- package/types/devkit/frontendBuild/hmrChangeClassifier.d.ts +0 -5
- package/types/devkit/frontendBuild/hmrWatcher.d.ts +0 -21
- package/types/devkit/frontendBuild/index.d.ts +0 -18
- package/types/devkit/frontendBuild/pagesBundleBuilder.d.ts +0 -28
- package/types/devkit/frontendBuild/pagesEntrySourceGenerator.d.ts +0 -9
- package/types/devkit/frontendBuild/precompressArtifacts.d.ts +0 -7
- package/types/devkit/frontendBuild/routeClientBuilder.d.ts +0 -50
- package/types/devkit/frontendBuild/routesManifestArtifactSerializer.d.ts +0 -12
- package/types/devkit/frontendBuild/ssrBaseArtifactBuilder.d.ts +0 -16
- package/types/devkit/frontendBuild/vendorSpecifiers.d.ts +0 -2
- package/types/devkit/frontendBuild/watchRootResolver.d.ts +0 -6
- package/types/devkit/frontendBuild.d.ts +0 -1
- package/types/devkit/getCredentials.d.ts +0 -12
- package/types/devkit/getDirname.d.ts +0 -1
- package/types/devkit/getModelFileData.d.ts +0 -16
- package/types/devkit/getRelatedCnsts.d.ts +0 -53
- package/types/devkit/guideline.d.ts +0 -19
- package/types/devkit/incrementalBuilder/incrementalBuilder.host.d.ts +0 -30
- package/types/devkit/incrementalBuilder/incrementalBuilder.proc.d.ts +0 -1
- package/types/devkit/incrementalBuilder/index.d.ts +0 -1
- package/types/devkit/incrementalBuilder.d.ts +0 -1
- package/types/devkit/index.d.ts +0 -36
- package/types/devkit/linter.d.ts +0 -108
- package/types/devkit/mobile/index.d.ts +0 -1
- package/types/devkit/mobile/mobileTarget.d.ts +0 -14
- package/types/devkit/mobile.d.ts +0 -1
- package/types/devkit/prompter.d.ts +0 -15
- package/types/devkit/scanInfo.d.ts +0 -82
- package/types/devkit/selectModel.d.ts +0 -1
- package/types/devkit/spinner.d.ts +0 -20
- package/types/devkit/src/capacitorApp.d.ts +0 -39
- package/types/devkit/sshTunnel.d.ts +0 -14
- package/types/devkit/streamAi.d.ts +0 -6
- package/types/devkit/transforms/barrelAnalyzer.d.ts +0 -27
- package/types/devkit/transforms/barrelImportsPlugin.d.ts +0 -26
- package/types/devkit/transforms/externalizeFrameworkPlugin.d.ts +0 -49
- package/types/devkit/transforms/index.d.ts +0 -5
- package/types/devkit/transforms/rscUseClientTransform.d.ts +0 -10
- package/types/devkit/transforms/useClientBundlePlugin.d.ts +0 -19
- package/types/devkit/transforms.d.ts +0 -1
- package/types/devkit/typeChecker.d.ts +0 -62
- package/types/devkit/types.d.ts +0 -43
- package/types/devkit/ui/MultiScrollList.d.ts +0 -13
- package/types/devkit/ui/ScrollList.d.ts +0 -7
- package/types/devkit/ui/index.d.ts +0 -2
- package/types/devkit/ui.d.ts +0 -1
- package/types/devkit/uploadRelease.d.ts +0 -10
- package/types/devkit/useStdoutDimensions.d.ts +0 -1
- package/types/devkit.d.ts +0 -1
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import type { BunPlugin } from "bun";
|
|
3
|
-
import type { App } from "../commandDecorators";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Keep framework/runtime singletons external while bundling authored
|
|
7
|
-
* workspace sources and ordinary npm dependencies into the pages bundle.
|
|
8
|
-
*
|
|
9
|
-
* Why a plugin instead of `Bun.build({ external })` or
|
|
10
|
-
* `Bun.build({ packages: "external" })`:
|
|
11
|
-
* - `packages: "external"` externalizes every bare specifier, including
|
|
12
|
-
* `@apps/*` / `@libs/*` — workspace packages that must stay bundled
|
|
13
|
-
* so the `"use client"` plugin can rewrite their exports — and ordinary
|
|
14
|
-
* npm dependencies like `dayjs` / `clsx`, which the production runtime
|
|
15
|
-
* package.json does not install for the SSR pages artifact.
|
|
16
|
-
* - Top-level `external: [...]` applies to macro-time module resolution
|
|
17
|
-
* too; any `with { type: "macro" }` import chain that transitively
|
|
18
|
-
* resolves `react` during build then fails with `ENOENT "react"`.
|
|
19
|
-
*
|
|
20
|
-
* An `onResolve` plugin only participates in the output-graph walk, so
|
|
21
|
-
* macros evaluate against the real modules in node_modules while the
|
|
22
|
-
* emitted bundle keeps bare specifiers only for runtime singletons that
|
|
23
|
-
* are installed in the generated production package.json.
|
|
24
|
-
*
|
|
25
|
-
* Externalization rules (applied in order):
|
|
26
|
-
* 1. Relative specifiers (`./`, `../`) are NEVER externalized — they
|
|
27
|
-
* always resolve to the current package's source tree and must be
|
|
28
|
-
* inlined so transitive `"use client"` stubs work.
|
|
29
|
-
* 2. Specifiers listed in `include` (workspace aliases like
|
|
30
|
-
* `@apps/*`, `@libs/*`) are NEVER externalized.
|
|
31
|
-
* 3. React / RSC runtime packages and framework host packages are
|
|
32
|
-
* externalized so the runtime supplies a single shared instance.
|
|
33
|
-
* 4. Other bare npm packages are bundled so the Docker runtime does not
|
|
34
|
-
* need to install every transitive page dependency separately.
|
|
35
|
-
*/
|
|
36
|
-
export interface ExternalizeFrameworkOptions {
|
|
37
|
-
app: App;
|
|
38
|
-
/**
|
|
39
|
-
* Prefixes that should be BUNDLED (kept internal). Defaults to
|
|
40
|
-
* `@apps/` and `@libs/` which are the workspace aliases used by the
|
|
41
|
-
* framework's app template.
|
|
42
|
-
*/
|
|
43
|
-
include?: string[];
|
|
44
|
-
/**
|
|
45
|
-
* Extra bare specifiers to force-externalize beyond the allowlist
|
|
46
|
-
* defaults. Not commonly needed since the default rule already
|
|
47
|
-
* externalizes every non-workspace specifier.
|
|
48
|
-
*/
|
|
49
|
-
extra?: string[];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const DEFAULT_INCLUDE = ["akanjs/", "@apps/", "@libs/"];
|
|
53
|
-
|
|
54
|
-
const DEFAULT_EXCLUDE_EXACT = new Set<string>(["akanjs/webkit", "akanjs/server", "akanjs/cli", "akanjs/devkit"]);
|
|
55
|
-
const DEFAULT_EXCLUDE_PREFIX = ["akanjs/server/", "akanjs/cli/", "akanjs/devkit/"];
|
|
56
|
-
const RUNTIME_EXTERNAL_EXACT = new Set<string>([
|
|
57
|
-
"react",
|
|
58
|
-
"react-dom",
|
|
59
|
-
"react/jsx-runtime",
|
|
60
|
-
"react/jsx-dev-runtime",
|
|
61
|
-
"react-server-dom-webpack",
|
|
62
|
-
"react-server-dom-webpack/server.node",
|
|
63
|
-
"react-server-dom-webpack/client.node",
|
|
64
|
-
"react-server-dom-webpack/client.browser",
|
|
65
|
-
]);
|
|
66
|
-
const RUNTIME_EXTERNAL_PREFIX = ["react-dom/", "react-server-dom-webpack/"];
|
|
67
|
-
|
|
68
|
-
const CANDIDATE_EXTS = [".tsx", ".ts", ".jsx", ".js", ".mjs", ".cjs"];
|
|
69
|
-
|
|
70
|
-
export async function createExternalizeFrameworkPlugin(options: ExternalizeFrameworkOptions): Promise<BunPlugin> {
|
|
71
|
-
const tsconfig = await options.app.getTsConfig();
|
|
72
|
-
const includePrefixes = options.include ?? DEFAULT_INCLUDE;
|
|
73
|
-
const extraExact = new Set(options.extra ?? []);
|
|
74
|
-
const workspaceRoot = options.app.workspace.workspaceRoot;
|
|
75
|
-
const tsconfigPaths = tsconfig.compilerOptions.paths ?? {};
|
|
76
|
-
|
|
77
|
-
const rootEntries = Object.entries(tsconfigPaths)
|
|
78
|
-
.filter(([k]) => !k.endsWith("/*"))
|
|
79
|
-
.map(([k, v]) => ({ pkg: k, entryFile: v[0] ?? null }))
|
|
80
|
-
.filter((e): e is { pkg: string; entryFile: string } => e.entryFile !== null);
|
|
81
|
-
const wildcardEntries = Object.entries(tsconfigPaths)
|
|
82
|
-
.filter(([k]) => k.endsWith("/*"))
|
|
83
|
-
.map(([k, v]) => ({ prefix: k.slice(0, -1), replacements: v }))
|
|
84
|
-
.sort((a, b) => b.prefix.length - a.prefix.length);
|
|
85
|
-
|
|
86
|
-
async function resolveWorkspaceSubpath(spec: string): Promise<string | null> {
|
|
87
|
-
if (!workspaceRoot) return null;
|
|
88
|
-
|
|
89
|
-
for (const { prefix, replacements } of wildcardEntries) {
|
|
90
|
-
if (!spec.startsWith(prefix)) continue;
|
|
91
|
-
const suffix = spec.slice(prefix.length);
|
|
92
|
-
for (const repl of replacements) {
|
|
93
|
-
const replPath = repl?.endsWith("/*") ? repl.slice(0, -1) : (repl ?? "");
|
|
94
|
-
if (!replPath) continue;
|
|
95
|
-
const candidate = path.resolve(workspaceRoot, replPath + suffix);
|
|
96
|
-
const hit = await firstExisting(candidate);
|
|
97
|
-
if (hit) return hit;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
for (const { pkg, entryFile } of rootEntries) {
|
|
102
|
-
if (spec !== pkg && !spec.startsWith(`${pkg}/`)) continue;
|
|
103
|
-
if (spec === pkg) continue;
|
|
104
|
-
const suffix = spec.slice(pkg.length + 1);
|
|
105
|
-
const pkgDir = path.dirname(path.resolve(workspaceRoot, entryFile));
|
|
106
|
-
const candidate = path.join(pkgDir, suffix);
|
|
107
|
-
const hit = await firstExisting(candidate);
|
|
108
|
-
if (hit) return hit;
|
|
109
|
-
}
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return {
|
|
114
|
-
name: "akan-externalize-framework",
|
|
115
|
-
setup(build) {
|
|
116
|
-
build.onResolve({ filter: /.*/ }, async (args) => {
|
|
117
|
-
const spec = args.path;
|
|
118
|
-
|
|
119
|
-
if (spec === "." || spec === ".." || spec.startsWith("./") || spec.startsWith("../") || spec.startsWith("/"))
|
|
120
|
-
return undefined;
|
|
121
|
-
|
|
122
|
-
if (extraExact.has(spec) || DEFAULT_EXCLUDE_EXACT.has(spec)) return { path: spec, external: true };
|
|
123
|
-
for (const prefix of DEFAULT_EXCLUDE_PREFIX) {
|
|
124
|
-
if (spec.startsWith(prefix)) return { path: spec, external: true };
|
|
125
|
-
}
|
|
126
|
-
if (RUNTIME_EXTERNAL_EXACT.has(spec)) return { path: spec, external: true };
|
|
127
|
-
for (const prefix of RUNTIME_EXTERNAL_PREFIX) {
|
|
128
|
-
if (spec.startsWith(prefix)) return { path: spec, external: true };
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
for (const prefix of includePrefixes) {
|
|
132
|
-
if (!spec.startsWith(prefix)) continue;
|
|
133
|
-
const resolved = await resolveWorkspaceSubpath(spec);
|
|
134
|
-
if (resolved) return { path: resolved };
|
|
135
|
-
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return undefined;
|
|
140
|
-
});
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
async function firstExisting(basePath: string): Promise<string | null> {
|
|
146
|
-
|
|
147
|
-
if (await Bun.file(basePath).exists()) return basePath;
|
|
148
|
-
|
|
149
|
-
for (const ext of CANDIDATE_EXTS) {
|
|
150
|
-
const candidate = `${basePath}${ext}`;
|
|
151
|
-
if (await Bun.file(candidate).exists()) return candidate;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
for (const ext of CANDIDATE_EXTS) {
|
|
155
|
-
const candidate = path.join(basePath, `index${ext}`);
|
|
156
|
-
if (await Bun.file(candidate).exists()) return candidate;
|
|
157
|
-
}
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
|
|
3
|
-
const USE_CLIENT_RE = /^\s*(?:\/\*[\s\S]*?\*\/\s*|\/\/[^\n]*\n\s*)*["']use client["']/;
|
|
4
|
-
const IMPLICIT_ROOT_LAYOUT_RE =
|
|
5
|
-
/[/\\]\.akan[/\\]generated[/\\](?:implicit-root-layout|root-layouts[/\\].*__root_layout)\.(tsx|ts|jsx|js)$/;
|
|
6
|
-
|
|
7
|
-
export interface UseClientTransformArgs {
|
|
8
|
-
path: string;
|
|
9
|
-
workspaceRoot?: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function toClientReferencePath(absPath: string, workspaceRoot: string): string {
|
|
13
|
-
return path.relative(path.resolve(workspaceRoot), path.resolve(absPath)).split(path.sep).join("/");
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Returns the stubbed module source if `source` is a client module, else null.
|
|
18
|
-
* The returned source is TypeScript-compatible (loader "ts" is safe).
|
|
19
|
-
*/
|
|
20
|
-
export function transformUseClient(source: string, args: UseClientTransformArgs): string | null {
|
|
21
|
-
if (!USE_CLIENT_RE.test(source)) return null;
|
|
22
|
-
if (IMPLICIT_ROOT_LAYOUT_RE.test(args.path)) return null;
|
|
23
|
-
const transpiler = new Bun.Transpiler({ loader: loaderFor(args.path) });
|
|
24
|
-
const { exports } = transpiler.scan(source);
|
|
25
|
-
if (exports.length === 0) return null;
|
|
26
|
-
|
|
27
|
-
const referencePath = args.workspaceRoot ? toClientReferencePath(args.path, args.workspaceRoot) : args.path;
|
|
28
|
-
const filePathLit = JSON.stringify(referencePath);
|
|
29
|
-
const lines: string[] = [`import { registerClientReference } from "react-server-dom-webpack/server.node";`];
|
|
30
|
-
|
|
31
|
-
for (const name of exports) {
|
|
32
|
-
const nameLit = JSON.stringify(name);
|
|
33
|
-
const errMsg = JSON.stringify(
|
|
34
|
-
`Attempted to call '${name}' from '${referencePath}' on the server, but it is a client-only export.`,
|
|
35
|
-
);
|
|
36
|
-
const proxy = `() => { throw new Error(${errMsg}); }`;
|
|
37
|
-
const binding =
|
|
38
|
-
name === "default"
|
|
39
|
-
? `export default registerClientReference(${proxy}, ${filePathLit}, ${nameLit});`
|
|
40
|
-
: `export const ${name} = registerClientReference(${proxy}, ${filePathLit}, ${nameLit});`;
|
|
41
|
-
lines.push(binding);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return lines.join("\n");
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function loaderFor(absPath: string): "ts" | "tsx" | "js" | "jsx" {
|
|
48
|
-
if (absPath.endsWith(".tsx")) return "tsx";
|
|
49
|
-
if (absPath.endsWith(".jsx")) return "jsx";
|
|
50
|
-
if (absPath.endsWith(".ts")) return "ts";
|
|
51
|
-
return "js";
|
|
52
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { BunPlugin } from "bun";
|
|
2
|
-
import { transformUseClient } from "./rscUseClientTransform";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* BunPlugin that stubs `"use client"` modules so the server bundle sees
|
|
6
|
-
* `registerClientReference(proxy, absPath, name)` stubs instead of the
|
|
7
|
-
* original client code.
|
|
8
|
-
*
|
|
9
|
-
* The bundle produced by `PagesBundleBuilder` is loaded in the RSC worker
|
|
10
|
-
* with `--conditions react-server`; client components are never supposed
|
|
11
|
-
* to execute there. The resulting stub references keep the client
|
|
12
|
-
* component manifest lookups working at render time while ensuring the
|
|
13
|
-
* server bundle never drags the real client source graph in.
|
|
14
|
-
*
|
|
15
|
-
* Important: the second argument to `registerClientReference` must match the
|
|
16
|
-
* key the client manifest uses. When `workspaceRoot` is provided, both sides
|
|
17
|
-
* use workspace-relative keys so production artifacts are portable.
|
|
18
|
-
*/
|
|
19
|
-
export function createUseClientBundlePlugin(options: { workspaceRoot?: string } = {}): BunPlugin {
|
|
20
|
-
return {
|
|
21
|
-
name: "akan-use-client-bundle",
|
|
22
|
-
setup(build) {
|
|
23
|
-
build.onLoad({ filter: /\.(tsx|ts|jsx|js)$/ }, async (args) => {
|
|
24
|
-
if (args.path.includes("/node_modules/")) return undefined;
|
|
25
|
-
let source: string;
|
|
26
|
-
try {
|
|
27
|
-
source = await Bun.file(args.path).text();
|
|
28
|
-
} catch {
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
const stubbed = transformUseClient(source, {
|
|
32
|
-
path: args.path,
|
|
33
|
-
workspaceRoot: options.workspaceRoot,
|
|
34
|
-
});
|
|
35
|
-
if (stubbed === null) return undefined;
|
|
36
|
-
return { contents: stubbed, loader: loaderFor(args.path) };
|
|
37
|
-
});
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function loaderFor(absPath: string): "ts" | "tsx" | "js" | "jsx" {
|
|
43
|
-
if (absPath.endsWith(".tsx")) return "tsx";
|
|
44
|
-
if (absPath.endsWith(".jsx")) return "jsx";
|
|
45
|
-
if (absPath.endsWith(".ts")) return "ts";
|
|
46
|
-
return "js";
|
|
47
|
-
}
|
package/devkit/typeChecker.ts
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
|
-
import chalk from "chalk";
|
|
4
|
-
import * as ts from "typescript";
|
|
5
|
-
|
|
6
|
-
import type { Executor } from "./executors";
|
|
7
|
-
|
|
8
|
-
export interface ProjectTypecheckResult {
|
|
9
|
-
configPath: string;
|
|
10
|
-
diagnostics: ts.Diagnostic[];
|
|
11
|
-
errors: ts.Diagnostic[];
|
|
12
|
-
warnings: ts.Diagnostic[];
|
|
13
|
-
message: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class TypeChecker {
|
|
17
|
-
readonly configPath: string;
|
|
18
|
-
readonly configFile: { config?: any; error?: ts.Diagnostic };
|
|
19
|
-
readonly config: ts.ParsedCommandLine;
|
|
20
|
-
constructor(executor: Executor) {
|
|
21
|
-
const configPath = this.#findConfigFile(executor.cwdPath);
|
|
22
|
-
if (!configPath) throw new Error("No tsconfig.json found in the project");
|
|
23
|
-
this.configPath = configPath;
|
|
24
|
-
this.configFile = ts.readConfigFile(this.configPath, (fileName) => ts.sys.readFile(fileName));
|
|
25
|
-
const parsedConfig = ts.parseJsonConfigFileContent(
|
|
26
|
-
this.configFile.config,
|
|
27
|
-
ts.sys,
|
|
28
|
-
path.dirname(this.configPath),
|
|
29
|
-
undefined,
|
|
30
|
-
this.configPath,
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
if (parsedConfig.errors.length > 0) {
|
|
34
|
-
const errorMessages = parsedConfig.errors
|
|
35
|
-
.map((error) => ts.flattenDiagnosticMessageText(error.messageText, "\n"))
|
|
36
|
-
.join("\n");
|
|
37
|
-
throw new Error(`Error parsing tsconfig.json:\n${errorMessages}`);
|
|
38
|
-
}
|
|
39
|
-
this.config = parsedConfig;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Find tsconfig.json by walking up the directory tree
|
|
43
|
-
*/
|
|
44
|
-
#findConfigFile(searchPath: string): string | undefined {
|
|
45
|
-
return ts.findConfigFile(searchPath, (fileName) => ts.sys.fileExists(fileName), "tsconfig.json");
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Type-check a single TypeScript file
|
|
50
|
-
* @param filePath - Path to the TypeScript file to check
|
|
51
|
-
* @returns Array of diagnostic messages
|
|
52
|
-
*/
|
|
53
|
-
check(filePath: string): {
|
|
54
|
-
diagnostics: ts.Diagnostic[];
|
|
55
|
-
errors: ts.Diagnostic[];
|
|
56
|
-
warnings: ts.Diagnostic[];
|
|
57
|
-
fileDiagnostics: ts.Diagnostic[];
|
|
58
|
-
fileErrors: ts.Diagnostic[];
|
|
59
|
-
fileWarnings: ts.Diagnostic[];
|
|
60
|
-
} {
|
|
61
|
-
const program = ts.createProgram([filePath], this.config.options);
|
|
62
|
-
const diagnostics = [
|
|
63
|
-
...program.getSemanticDiagnostics(),
|
|
64
|
-
...program.getSyntacticDiagnostics(),
|
|
65
|
-
|
|
66
|
-
...(this.config.options.declaration ? program.getDeclarationDiagnostics() : []),
|
|
67
|
-
];
|
|
68
|
-
const errors = diagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
69
|
-
const warnings = diagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Warning);
|
|
70
|
-
const fileDiagnostics = diagnostics.filter((diagnostic) => diagnostic.file?.fileName === filePath);
|
|
71
|
-
const fileErrors = fileDiagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
72
|
-
const fileWarnings = fileDiagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Warning);
|
|
73
|
-
return { diagnostics, errors, warnings, fileDiagnostics, fileErrors, fileWarnings };
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Format diagnostics for console output
|
|
78
|
-
* @param diagnostics - Array of TypeScript diagnostics
|
|
79
|
-
* @returns Formatted string
|
|
80
|
-
*/
|
|
81
|
-
formatDiagnostics(diagnostics: ts.Diagnostic[]): string {
|
|
82
|
-
if (diagnostics.length === 0) return chalk.bold("✅ No type errors found");
|
|
83
|
-
|
|
84
|
-
const output: string[] = [];
|
|
85
|
-
let errorCount = 0;
|
|
86
|
-
let warningCount = 0;
|
|
87
|
-
let suggestionCount = 0;
|
|
88
|
-
|
|
89
|
-
const diagnosticsByFile = new Map<string, ts.Diagnostic[]>();
|
|
90
|
-
diagnostics.forEach((diagnostic) => {
|
|
91
|
-
if (diagnostic.category === ts.DiagnosticCategory.Error) errorCount++;
|
|
92
|
-
else if (diagnostic.category === ts.DiagnosticCategory.Warning) warningCount++;
|
|
93
|
-
else if (diagnostic.category === ts.DiagnosticCategory.Suggestion) suggestionCount++;
|
|
94
|
-
|
|
95
|
-
if (diagnostic.file) {
|
|
96
|
-
const fileName = diagnostic.file.fileName;
|
|
97
|
-
if (!diagnosticsByFile.has(fileName)) diagnosticsByFile.set(fileName, []);
|
|
98
|
-
const fileDiagnostics = diagnosticsByFile.get(fileName);
|
|
99
|
-
if (fileDiagnostics) fileDiagnostics.push(diagnostic);
|
|
100
|
-
} else {
|
|
101
|
-
if (!diagnosticsByFile.has("")) diagnosticsByFile.set("", []);
|
|
102
|
-
const fileDiagnostics = diagnosticsByFile.get("");
|
|
103
|
-
if (fileDiagnostics) fileDiagnostics.push(diagnostic);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
diagnosticsByFile.forEach((fileDiagnostics, fileName) => {
|
|
108
|
-
if (fileName) output.push(`\n${chalk.cyan(fileName)}`);
|
|
109
|
-
|
|
110
|
-
fileDiagnostics.forEach((diagnostic) => {
|
|
111
|
-
const categoryText =
|
|
112
|
-
diagnostic.category === ts.DiagnosticCategory.Error
|
|
113
|
-
? "error"
|
|
114
|
-
: diagnostic.category === ts.DiagnosticCategory.Warning
|
|
115
|
-
? "warning"
|
|
116
|
-
: "suggestion";
|
|
117
|
-
const categoryColor =
|
|
118
|
-
diagnostic.category === ts.DiagnosticCategory.Error
|
|
119
|
-
? chalk.red
|
|
120
|
-
: diagnostic.category === ts.DiagnosticCategory.Warning
|
|
121
|
-
? chalk.yellow
|
|
122
|
-
: chalk.blue;
|
|
123
|
-
const icon =
|
|
124
|
-
diagnostic.category === ts.DiagnosticCategory.Error
|
|
125
|
-
? "❌"
|
|
126
|
-
: diagnostic.category === ts.DiagnosticCategory.Warning
|
|
127
|
-
? "⚠️"
|
|
128
|
-
: "💡";
|
|
129
|
-
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
130
|
-
const tsCode = chalk.dim(`(TS${diagnostic.code})`);
|
|
131
|
-
|
|
132
|
-
if (diagnostic.file && diagnostic.start !== undefined) {
|
|
133
|
-
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
134
|
-
|
|
135
|
-
output.push(`\n ${icon} ${categoryColor(categoryText)}: ${message} ${tsCode}`);
|
|
136
|
-
output.push(` ${chalk.gray("at")} ${fileName}:${chalk.bold(`${line + 1}:${character + 1}`)}`);
|
|
137
|
-
|
|
138
|
-
const sourceLines = diagnostic.file.text.split("\n");
|
|
139
|
-
if (line < sourceLines.length) {
|
|
140
|
-
const sourceLine = sourceLines[line];
|
|
141
|
-
const lineNumber = (line + 1).toString().padStart(5, " ");
|
|
142
|
-
|
|
143
|
-
output.push(`\n${chalk.dim(`${lineNumber} |`)} ${sourceLine}`);
|
|
144
|
-
|
|
145
|
-
const underlinePrefix = " ".repeat(character);
|
|
146
|
-
const length = diagnostic.length ?? 1;
|
|
147
|
-
const underline = "~".repeat(Math.max(1, length));
|
|
148
|
-
|
|
149
|
-
output.push(
|
|
150
|
-
`${chalk.dim(`${" ".repeat(lineNumber.length)} |`)} ${underlinePrefix}${categoryColor(underline)}`,
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
} else output.push(`\n ${icon} ${categoryColor(categoryText)}: ${message} ${tsCode}`);
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
const summary = [] as string[];
|
|
158
|
-
if (errorCount > 0) summary.push(chalk.red(`${errorCount} error(s)`));
|
|
159
|
-
if (warningCount > 0) summary.push(chalk.yellow(`${warningCount} warning(s)`));
|
|
160
|
-
if (suggestionCount > 0) summary.push(chalk.blue(`${suggestionCount} suggestion(s)`));
|
|
161
|
-
|
|
162
|
-
return `\n${summary.join(", ")} found${output.join("\n")}`;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Get detailed diagnostic information with code snippet
|
|
167
|
-
* @param filePath - Path to the TypeScript file to check
|
|
168
|
-
* @returns Object containing diagnostics and detailed information
|
|
169
|
-
*/
|
|
170
|
-
getDetailedDiagnostics(filePath: string): {
|
|
171
|
-
diagnostics: ts.Diagnostic[];
|
|
172
|
-
details: { line: number; column: number; message: string; code: number; codeSnippet?: string }[];
|
|
173
|
-
} {
|
|
174
|
-
const { diagnostics } = this.check(filePath);
|
|
175
|
-
const sourceFile = ts.createSourceFile(filePath, readFileSync(filePath, "utf8"), ts.ScriptTarget.Latest, true);
|
|
176
|
-
|
|
177
|
-
const details = diagnostics.map((diagnostic) => {
|
|
178
|
-
if (diagnostic.file && diagnostic.start !== undefined) {
|
|
179
|
-
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
180
|
-
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
181
|
-
|
|
182
|
-
const lines = sourceFile.text.split("\n");
|
|
183
|
-
const codeSnippet = line < lines.length ? lines[line] : undefined;
|
|
184
|
-
return { line: line + 1, column: character + 1, message, code: diagnostic.code, codeSnippet };
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return {
|
|
188
|
-
line: 0,
|
|
189
|
-
column: 0,
|
|
190
|
-
message: ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"),
|
|
191
|
-
code: diagnostic.code,
|
|
192
|
-
};
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
return { diagnostics, details };
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Check if a file has type errors
|
|
200
|
-
* @param filePath - Path to the TypeScript file to check
|
|
201
|
-
* @returns true if there are no type errors, false otherwise
|
|
202
|
-
*/
|
|
203
|
-
hasNoTypeErrors(filePath: string): boolean {
|
|
204
|
-
try {
|
|
205
|
-
const { diagnostics } = this.check(filePath);
|
|
206
|
-
return diagnostics.length === 0;
|
|
207
|
-
} catch (error) {
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
static checkProject(configPath: string): ProjectTypecheckResult {
|
|
213
|
-
const parsedConfig = TypeChecker.parseConfig(configPath);
|
|
214
|
-
const host = ts.createIncrementalCompilerHost(parsedConfig.options);
|
|
215
|
-
const builderProgram = ts.createIncrementalProgram({
|
|
216
|
-
rootNames: parsedConfig.fileNames,
|
|
217
|
-
options: parsedConfig.options,
|
|
218
|
-
projectReferences: parsedConfig.projectReferences,
|
|
219
|
-
configFileParsingDiagnostics: parsedConfig.errors,
|
|
220
|
-
host,
|
|
221
|
-
});
|
|
222
|
-
const program = builderProgram.getProgram();
|
|
223
|
-
const diagnostics = [...ts.getPreEmitDiagnostics(program), ...builderProgram.emit().diagnostics];
|
|
224
|
-
const errors = diagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
225
|
-
const warnings = diagnostics.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Warning);
|
|
226
|
-
return {
|
|
227
|
-
configPath,
|
|
228
|
-
diagnostics,
|
|
229
|
-
errors,
|
|
230
|
-
warnings,
|
|
231
|
-
message: TypeChecker.formatDiagnosticMessages(diagnostics),
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
static parseConfig(configPath: string): ts.ParsedCommandLine {
|
|
236
|
-
const configFile = ts.readConfigFile(configPath, (fileName) => ts.sys.readFile(fileName));
|
|
237
|
-
const configDiagnostics = configFile.error ? [configFile.error] : [];
|
|
238
|
-
if (!configFile.config) {
|
|
239
|
-
const message = TypeChecker.formatDiagnosticMessages(configDiagnostics);
|
|
240
|
-
throw new Error(message || `Error reading tsconfig.json: ${configPath}`);
|
|
241
|
-
}
|
|
242
|
-
const parsedConfig = ts.parseJsonConfigFileContent(
|
|
243
|
-
configFile.config,
|
|
244
|
-
ts.sys,
|
|
245
|
-
path.dirname(configPath),
|
|
246
|
-
undefined,
|
|
247
|
-
configPath,
|
|
248
|
-
);
|
|
249
|
-
if (parsedConfig.errors.length > 0) throw new Error(TypeChecker.formatDiagnosticMessages(parsedConfig.errors));
|
|
250
|
-
return parsedConfig;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
static formatDiagnosticMessages(diagnostics: ts.Diagnostic[]): string {
|
|
254
|
-
return ts.formatDiagnosticsWithColorAndContext(diagnostics, {
|
|
255
|
-
getCanonicalFileName: (fileName) => fileName,
|
|
256
|
-
getCurrentDirectory: () => process.cwd(),
|
|
257
|
-
getNewLine: () => ts.sys.newLine,
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
}
|
package/devkit/types.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export interface PackageJson {
|
|
2
|
-
name: string;
|
|
3
|
-
type?: "module" | "commonjs";
|
|
4
|
-
version: string;
|
|
5
|
-
main?: string;
|
|
6
|
-
description: string;
|
|
7
|
-
scripts?: Record<string, string>;
|
|
8
|
-
dependencies?: Record<string, string>;
|
|
9
|
-
devDependencies?: Record<string, string>;
|
|
10
|
-
peerDependencies?: Record<string, string>;
|
|
11
|
-
peerDependenciesMeta?: Record<string, { optional?: boolean }>;
|
|
12
|
-
optionalDependencies?: Record<string, string>;
|
|
13
|
-
engines?: Record<string, string>;
|
|
14
|
-
exports?: Record<string, string | Record<string, string>>;
|
|
15
|
-
bun?: {
|
|
16
|
-
platform?: "node" | "browser" | "bun";
|
|
17
|
-
};
|
|
18
|
-
[key: string]: unknown;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface TsConfigJson {
|
|
22
|
-
extends?: string;
|
|
23
|
-
compilerOptions: {
|
|
24
|
-
target: string;
|
|
25
|
-
paths?: Record<string, string[]>;
|
|
26
|
-
};
|
|
27
|
-
references?: {
|
|
28
|
-
path: string;
|
|
29
|
-
}[];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface FileContent {
|
|
33
|
-
filePath: string;
|
|
34
|
-
content: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface BaseDevEnv {
|
|
38
|
-
workspaceRoot: string | undefined;
|
|
39
|
-
repoName: string;
|
|
40
|
-
serveDomain: string;
|
|
41
|
-
env: "testing" | "debug" | "develop" | "main" | "local";
|
|
42
|
-
portOffset: number;
|
|
43
|
-
appName?: string | undefined;
|
|
44
|
-
}
|